在ClojureScript Reagent中使用React Native MapView
我试图从 https://github.com/airbnb/反应映射使用试剂.它运行良好,但是当onRegionChange启动onRegionChange时,我该如何获得本地状态?尝试使用当前/组件,但始终是nil. (def Expo (js/require "expo")) (def map-view (r/adapt-react-class (.-MapView Expo))) (defn my-map [] (r/create-class {:component-did-mount (fn [this] (println "component mount ")) :reagent-render (fn [] (let [this (r/current-component)] [map-view {:style {:fl
0 2024-02-16
编程技术问答社区
如何使用Graclj在Android Studio中使用Clojure?
我的最终目标是能够使用Android Studio和Curssive为Android编写Clojure应用程序.我从莱宁根(Leiningen)开始,但发现它是一个独立于鞋室使用IE Gradle的构建系统.因此,我尝试了使用Intellij的Leiningen,但除了从命令行以外,无法让Android部署工作.由于我想与Android Studio集成,因此我决定尝试Graclj:根据本指南,我可以在Android Studio中获得Graclj教程: https://github.com/graclj/graclj/learning-graclj/learlearning-graclj/lear graclj/tree/leenning/learning -0.1.0 但是: graclj期望clojure src并建立的类,罐子将在root项目中 Android Studio期望SRC和类都在应用程序子项目中 教程后,我最终完成了Graclj和Android Stu
0 2024-02-15
编程技术问答社区
在安卓系统中开发本机应用程序,哪些语言是成熟的[除了Java]?
还有其他语言,而其他Java则可以在没有脚本层/空气等的Android中开发本机应用程序. 主要是我对clojure,jruby,scala 感兴趣 解决方案 由于Scala被编译到本机JVM字节码,因此可以用来开发本机Android应用. 最大的问题是,在Android开发中使用第三方库并非易事,并且您需要使用Proguard来减少程序的大小,有时会导致问题. 但是,使用Scala开发Android应用程序仍然可行">使用Scala的小android应用程序(中文,但有屏幕截图).这不是一个复杂的应用程序,而应该证明Scala在Android应用程序开发中可以做什么. 这也是一个 sbt插件可以帮助您构建Scala/Android程序. 最后,如果您想使用Scala开发Android,我建议使用Scala2.8.x.当我使用Scala 2.9扩展集合类时,我发现程序崩溃. . 其他解决方案 如果使用Mirah,则可以获得与写Java一样快且小的代码
2 2024-02-04
编程技术问答社区
安卓系统上的JAVA替代品
我刚刚得到了一部Android手机,我渴望开始进行编码! 但是,我不是Java的忠实粉丝,尽管我可以忍受,但我想知道是否有合理的Android虚拟机选择. 我已经使用Clojure完成了一个中型项目,但是从我阅读的评论中,在Android上运行时非常慢. Scala怎么样?我读到有些人在Android中进行了实验,它是否足够快?学习曲线有多大? 欢呼, Ze Maria 解决方案 有NDK允许您在C或C ++中编写程序的 parts . 有ASE可以让您在Python和其他语言中编写脚本.尽管您可能会听到其他信息,但没有Python编译器. 我读过有关Scala的一些信息,但由于我并不真正感兴趣,所以我没有注意. 其他解决方案 在Scala中肯定有很多人在做Android开发.特别值得注意,甚至还有一个 plugin for sbt ,具有特定于Android特定目标的Scala项目的首选构建器. 至于学习曲线,我不能代表Android开发本身,因
0 2024-02-03
编程技术问答社区
安卓系统上的JAVA替代品
我刚刚得到了一部Android手机,我渴望开始进行编码! 但是,我不是Java的忠实粉丝,尽管我可以忍受,但我想知道是否有合理的Android虚拟机选择. 我已经使用Clojure完成了一个中型项目,但是从我阅读的评论中,在Android上运行时非常慢. Scala怎么样?我读到有些人在Android中进行了实验,它是否足够快?学习曲线有多大? 欢呼, Ze Maria 解决方案 有NDK允许您在C或C ++中编写程序的 parts . 有ASE可以让您在Python和其他语言中编写脚本.尽管您可能会听到其他信息,但没有Python编译器. 我读过有关Scala的一些信息,但由于我并不真正感兴趣,所以我没有注意. 其他解决方案 在Scala中肯定有很多人在做Android开发.特别值得注意,甚至还有一个 plugin for sbt ,具有特定于Android特定目标的Scala项目的首选构建器. 至于学习曲线,我不能代表Android开发本身,因
0 2024-02-03
编程技术问答社区
在DalvikVM之上的Android-Sun JVM上运行Java字节码
由于Java实现(OpenJDK)和Android的虚拟机dalvikvm都是OpenSource,因此必须在Google的Dalvikvm上实现Sun的Javavm.这将使运行基于JVM的应用程序和语言(Clojure, Jython)在Android上开箱即用. 是否有持续的努力来实现Sun JVM? 解决方案 OpenJDK使用本机代码,因此它将是一个非平凡的端口...至少有一个VM( jikesrvm )写在Java中,不幸的是,这不是Java的完全有效的实现. 由于dalvikvm运行了从.class文件转换的类,因此应该可以将类转换为.然后,"唯一"问题是语言在飞行上生成字节码时 - 因为在程序在dalvikvm上运行时,将需要将生成的字节码转换为dalvikvm格式的额外步骤. . 嗯.我想知道那会有多慢. 其他解决方案 可以将OpenJDK移植到Android平台.诸如鲨鱼,零和caciocavallo之类的努力大大减轻了端口过程(= no
2 2024-02-02
编程技术问答社区
安卓对动态语言的不利影响
我相信我在某个时刻读到,由于Android在Dalvik VM上运行,很难按下JVM的动态语言(Clojure,Jython,Jruby等)很难按下Dalvik上的良好性能(因此在Android上进行了良好的性能).如果我没记错的话,原因是为了实现动态打字,在引擎盖下,使用Java字节码进行了很多摆弄,并且字节码 - > dalvik翻译不会轻易地捡起它. 所以如果我想开发Android,我应该避免使用动态的JVM语言吗? 编辑:我想我应该提供更多上下文.我正在考虑使用Clojure为Android开发应用程序.我考虑使用Clojure的原因有几个: 我想学习FP 我真的不在乎学习java clojure似乎有一些 有趣的语言概念(STM 例如). 但是,当我尝试在Clojure中为Android编写应用程序时,我发现有一个不可接受的性能问题.但是我发现了一个博客文章,该文章说动态键入的语言(例如,Clojure)会由于获得动态键入所需的字体计算操作而遇到
2 2024-01-29
编程技术问答社区
Android上的Clojure
是否可以在Clojure中编程Android应用程序? 如果可能的话,有人可以建议一个好的教程或书吗? 解决方案 是的,这是我知道的主要项目: https://github.com/remvee/clojurehelloandroid 这是一些教程如果本教程过时,那么这本教程过时,就不会感到惊讶 编辑:请参阅Stuart Sierra和Clojure/Core Group的更新: " Clojure 1.2.0作品"开箱即用" 在Android上,但启动时间仍在 一个问题.一些成员 Clojure/Core已经实验了 使它变得更好的方法,主要是 有选择地删除不是 运行时需要. 关注 http://dev.clojure.org/display/display/design/design/design/android+sudsign/android+Suporport 新闻.最后一个更新是亚伦 贝德拉(Bedra),一个笨拙/核心成员, 2010年12月.我不会说这
0 2024-01-27
编程技术问答社区
如何在AWS SQS队列上添加权限?
使用以下代码,我可以使用我的AWS帐号添加权限,但队列未从SNS接收任何消息. AddPermissionRequest addPermissionRequest = new AddPermissionRequest(); addPermissionRequest.ActionName.Add("SendMessage"); addPermissionRequest.ActionName.Add("ReceiveMessage"); addPermissionRequest.QueueUrl = queueUrl; addPermissionRequest.Label = General.IpAddressAWSFriendly; addPermissionRequest.AWSAccountId.Add(AWS_ACCOUNT_ID); sqs.AddPermission(addPermissionRequest); 但是,当我尝试通过通配符(*)为每个人设置许可时:
2 2024-01-26
编程技术问答社区
如何将clojure网络应用程序部署到亚马逊EC2(AWS Elastic Beanstalk + Leiningen + Compojure + Ring + Tomcat)。
作为标题, 我的IDE是Intellij Idea 12.1.4, 我需要什么工具包或插件 将Clojure Web应用程序部署到Amazon EC2? 是否有任何链接,参考或逐步解决方案? 谢谢你 解决方案 如果您只是在没有其他自定义基础架构的情况下部署战争文件,那么直接使用EC2是过度的,而Elastic Beanstalk将更轻松地完成您需要的事情.如果您的生长更大,并且想要一键部署,那么托盘是一个很棒的工具. 托盘有很多东西,这是一个很棒的图书馆,可以编写出惊人的小程序来做这种事情(还有更多).花一些时间来了解" node""群体""融合"等的托盘概念,并给自己很多耐心.一旦您拿着托盘,感觉就像魔术. 起点的地方是托盘入门指南.浏览Hello World示例,该示例将确保您的AWS帐户已设置,并且键是他们需要的位置.然后,您可以使用一些Clojure代码,该代码在其上创建一个具有最新版本的实例. 您将需要: 托盘0.8+ 托盘Java板
2 2024-01-24
编程技术问答社区
在clojure[脚本]中,如何返回2个排序向量之间最近的元素
在clojure[script]中,如何编写一个接收两个排序向量 a,b的函数nearest,并为a的每个元素返回? 为例, (nearest [1 2 3 101 102 103] [0 100 1000]); [0 0 0 100 100 100] 我希望解决方案既具有惯用性又表现良好:O(n^2)是不可接受的! 解决方案 使用二进制搜索或排序设置会产生a(n*log m)时间复杂性,其中n为(count a)和m (count b). 但是,利用A和B对A和B进行排序的事实,时间复杂性可以为O(max(n,m)). (defn nearest [a b] (if-let [more-b (next b)] (let [[x y] b m (/ (+ x y) 2) [m] (split-with #(
0 2024-01-23
编程技术问答社区
恒定时间内长数的前N个数字?
在一个项目欧拉问题中,我需要处理可以拥有数百位数字的数字.我需要对前9位数字进行一些计算. 我的问题是:确定100位整数的第一个N数字的最快方法是什么?使用Modulo/剩余时间,最后一位数字很容易.对于第一个数字,我可以100次使用Modulo,以通过数字获得数字,或者我可以将数字转换为字符串和截断,但它们都是线性时间.有更好的方法吗? 解决方案 您可以使用此功能来计数数字数: (defn dec-digit-count [n] (inc (if (zero? n) 0 (long (Math/floor (Math/log10 n)))))) 现在我们知道那里有多少位数字,我们只想离开第9位. (defn first-digits [number digits] (unchecked-divide number (int (Math/pow 10 digits)))) 并将其称为:(first-digits your-number 9),我认
2 2024-01-23
编程技术问答社区
clojure中的链式调用?
我正在尝试在clojure中实现eratosthenes的筛子.我想测试的一种方法是: 获得范围(2 3 4 5 6 ... n) 对于2 i 通过我的范围通过filter,它消除了i 的倍数 对于i+1迭代,使用先前过滤的结果 我知道我可以使用loop/recur来做到这一点,但这是导致堆栈溢出错误(由于某种原因,尾巴调用优化是不应用的). 我该如何迭代?我的意思是将n调用n调用相同的例程,通过i itteration的结果i+1 解决方案 (defn sieve [beg end] (letfn [(siever [to-sieve sieved] (if (empty? to-sieve) sieved (let [[f & r] to-sieve] (if (> f (Math/sqrt end)) (into sieved to-si
0 2024-01-23
编程技术问答社区
怎样才能为跟踪列表中的 "脏 "元素提供一个漂亮的、易于使用的抽象?
为了"娱乐",要学习功能编程,我正在开发一个在clojure中开发的程序,该程序使用这种名为" westergaardian理论"的音乐理论中的思想从事算法构图.它生成音乐线(其中一条线只是一个由一系列音符组成的工作人员,每个都有音调和持续时间).它基本上是这样的: 从一个由三个音符组成的行开始(选择这些音符的细节并不重要). 在此行上随机执行几个"操作"之一.该操作从所有符合某个标准的相邻音符对随机选择(对于每对,标准仅取决于这对,并且独立于行中的其他注释).它插入所选对之间的1个或几个笔记(取决于操作).每个操作都有自己的独特标准. 继续在线上随机执行这些操作,直到线为所需的长度为止. 我遇到的问题是我的实现非常慢,我怀疑它可以更快.我是Clojure和功能性编程的新手(尽管我对OO经验丰富),因此我希望有更多经验的人可以指出,如果我不在功能范式中考虑或错过某种FP技术. 我当前的实现是每行都是包含地图的向量.每个地图都有:注意和a:dur. :Note的值是代
0 2024-01-23
编程技术问答社区
我怎样才能以一种允许在任何索引处快速插入的方式来表示一行乐符?
为了"娱乐",要学习功能编程,我正在开发一个在clojure中开发的程序,该程序使用这种名为" westergaardian理论"的音乐理论中的思想从事算法构图.它生成音乐线(其中一条线只是一个由一系列音符组成的工作人员,每个都有音调和持续时间).它基本上是这样的: 从一个由三个音符组成的行开始(选择这些音符的细节并不重要). 在此行上随机执行几个"操作"之一.该操作从所有符合某个标准的相邻音符对随机选择(对于每对,标准仅取决于这对,并且独立于行中的其他注释).它插入所选对之间的1个或几个笔记(取决于操作).每个操作都有自己独特的标准. 继续在线上随机执行这些操作,直到线为所需的长度为止. 我遇到的问题是我的实现非常慢,我怀疑它可以更快.我是Clojure和功能性编程的新手(尽管我对OO经验丰富),因此我希望有更多经验的人可以指出,如果我不在功能范式中考虑或错过某种FP技术. 我当前的实现是每行都是包含地图的向量.每个地图都有:注意和a:dur. :Note的值是代
6 2024-01-23
编程技术问答社区
Clojure-tail 递归的Eratosthenes筛子
我在clojure中具有这种eRatosthenes筛子的实现: (defn sieve [n] (loop [last-tried 2 sift (range 2 (inc n))] (if (or (nil? last-tried) (> last-tried n)) sift (let [filtered (filter #(or (= % last-tried) ( % last-tried) filtered))] (recur next-to-try filtered)))))) 对于较大的n(类似于20000),它以堆栈溢出结尾.为什么在这里不打电话消除止回器?如何修复它? 解决方案 问题:filter进行懒惰的评估,因此每个新的过滤级别都挂在
4 2024-01-22
编程技术问答社区
两张地图之间的差异
我需要非常有效地比较clojure/java中的两个地图,并返回由Java的.Equals(..)确定的差异,而NIL/NULL等于"不存在". 即.我正在寻找最有效的方法来编写一个函数: (map-difference {:a 1, :b nil, :c 2, :d 3} {:a 1, :b "Hidden", :c 3, :e 5}) => {:b nil, :c 2, :d 3, :e nil} 我更喜欢不变的clojure地图作为输出,但是如果性能改善很大,Java地图也可以. 对于它的价值,我对行为的基本测试案例/期望是,对于任何两个地图A和B: a (merge b (difference a b)) 实施此目标的最佳方法是什么? 解决方案 我不确定绝对最有效的方法是什么,但是这里有几件事可能有用: 问题文本对行为的基本期望是不可能的:如果a和b是地图,以至于b至少包含a中的至少一个密钥,(merge b )
0 2024-01-22
编程技术问答社区
懒散地生成排列组合
我正在寻找一种算法来生成集合的排列,以使我可以在Clojure中懒惰列表.即,我想迭代在列表中,在我要求之后才能计算每个排列,并且所有排列不必一次存储在内存中. 另外,我正在寻找一种给定特定集合的算法,它将以某种方式返回该集合的"下一个"排列,以使函数以其自身的输出为单位,将循环通过原始的所有排列设置,以某种顺序(顺序没关系). 有这样的算法吗?我所看到的大多数置换生成算法都倾向于一次(通常是递归)生成它们,这不会扩展到非常大的集合. Clojure(或其他功能语言)中的实现将是有帮助的,但我可以从伪代码中弄清楚. 解决方案 是的,是 a"下一个排列"算法,这也很简单. C ++标准模板库(STL)甚至具有称为next_permutation的函数. 该算法实际上找到了Next 排列 - 词典上的下一个.这个想法是:假设您有一个序列,例如" 32541".下一个置换是什么? 如果您考虑一下,您会发现它是" 34125".您的想法可能是这样的:在" 3254
4 2024-01-22
编程技术问答社区
计算文件夹大小
我正在尝试并行计算文件夹大小. 也许这是天真的方法. 我要做的是,我将每个分支节点(目录)的计算给代理. 所有叶子节点都将其文件尺寸添加到MySize中. 好吧,它行不通. :) '扫描'效果很好,连续. " PSCAN"仅从第一级打印文件. (def agents (atom [])) (def my-size (atom 0)) (def root-dir (clojure.java.io/file "/")) (defn scan [listing] (doseq [f listing] (if (.isDirectory f) (scan (.listFiles f)) (swap! my-size #(+ % (.length f)))))) (defn pscan [listing] (doseq [f listing] (if (.isDirectory f) (let [a (agent (.li
0 2024-01-19
编程技术问答社区
Clojure在Ref、Var、Agent、Atom之间的差异,并举例说明
我是Clojure的新手,你们能以现实世界的情况给我解释吗?我的意思是,在哪里使用Ref,Var,Agent,Atom.我读了书,但仍然不了解现实世界的例子. 解决方案 我强烈推荐" Clojure的喜悦"或"编程Clojure",以解决这个问题的真实答案,我可以重现每个问题的简短款项: 首先观看此视频有关身份的概念和/或在这里学习. refs适用于协调同步访问"许多身份". 原子适用于不协调的同步访问单个身份. 代理适用于不协调的异步访问单个身份. vars用于线程本地带有共享默认值的隔离身份. 协调当两个身份需要一起改变时,使用访问经典示例是将钱从一个银行帐户转移到另一个银行帐户,它需要完全或根本不移动. 当只需要更新一个身份时,使用不协调的访问将是一种非常常见的情况. 同步当呼叫等待直到所有身份定居之前,都会使用访问. . 异步访问是"火与忘记",让身份在自己的时间内达到新状态. 其他解决方案 REF是针对需要在线程之间同
0 2024-01-19
编程技术问答社区