Tag: clojure

Clojure和HBase:通过扫描迭代懒惰

假设我想在clojure中打印hbase表扫描的输出。 (defmulti scan (fn [table & args] (map class args))) (defmethod scan [java.lang.String java.lang.String] [table start-key end-key] (let [scan (Scan. (Bytes/toBytes start-key) (Bytes/toBytes end-key))] (let [scanner (.getScanner table scan)] (doseq [result scanner] (prn (Bytes/toString (.getRow result)) (get-to-map result)))))) get-to-map将结果转换为地图。 它可以像这样运行: (hbase.table/scan table “key000001” “key999999”) 但是,如果我想让用户对扫描结果做些什么呢? 我可以允许它们将函数作为回调函数传递给每个结果。 但我的问题是:如果我希望用户能够懒散地迭代每个结果,我会返回什么 (Bytes/toString (.getRow result)) (get-to-map result) 而不是保留以前的结果,就像在lazy-seq的简单化中所发生的那样。

使用one-jar构建一个jar文件

我正在尝试使用one-jar生成一个包含clojure jar文件和java类文件的jar文件 : 创建一个用于从Java / Clojure执行的jar文件 按照说明 ,我可以使用one-jar-appgen-0.97.jar生成目录。 按照指示,我替换了java源代码,并添加了ThingOne-1.0.0-SNAPSHOT-standalone.jar 运行ant ,它构建jar文件没有错误,但是当我尝试执行jar文件时,我收到了错误消息。 java -jar build/test-one-jar.jar test_one_jar main entry point, args=[] Hello from Java! Exception in thread “main” java.lang.reflect.InvocationTargetException at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) at java.lang.reflect.Method.invoke(Method.java:597) at com.simontuffs.onejar.Boot.run(Boot.java:342) at com.simontuffs.onejar.Boot.main(Boot.java:168) Caused by: java.lang.ExceptionInInitializerError at clojure.lang.Namespace.(Namespace.java:34) at clojure.lang.Namespace.findOrCreate(Namespace.java:176) at clojure.lang.Var.internPrivate(Var.java:149) at ThingOne.core.(Unknown Source) at onejar.main.TestOneJarMain.run(TestOneJarMain.java:27) at […]

SimpleDateFormat似乎给出了错误的结果

我正在使用Java 7和Clojure 1.4。 我在Clojure中编写了一些数据库测试,用于包含Date对象的表,使用OracleDB over JDBC 。 我需要将收到的Date ( Date对象)与String – 所以我可能需要将该字符串转换为Date对象。 经过一些谷歌搜索,我找到了Java的SimpleDateFormat 。 这是我使用的(有额外的东西用于调试) (defn parseDate [date] (do (debug (str “Parsing date: ” date )) (let [ dateobj (java.text.SimpleDateFormat. “dd-MMM-YY”) parsed (do (. dateobj setLenient false) (. dateobj parse date))] (debug (str “Result: ” parsed)) parsed))) 我扔了一些日期,我得到以下输出.. Parsing date: 01-jan-12 Result: Mon Jan 02 […]

从命令行(不使用lein)将clojure源编译为类(AOT)

我正在尝试将clojure源编译成类文件,并仅使用命令行运行它,没有lein,也没有(可能)回复。 我在src/hello目录中有core.clj。 . └── src └── hello └── core.clj 这是源代码。 (ns hello.core) (defn -main “This should be pretty simple.” [] (println “Hello, World!”)) 在REPL中使用(compile) 。 从这个网站的提示( http://clojure.org/compilation ),我试图从REPL获取类文件。 我在src目录中使用lein repl启动了REPL,然后尝试编译以获取错误。 user=> (compile ‘hello.core) CompilerException java.io.IOException: No such file or directory, compiling:(hello/core.clj:1:1) 命令行 从这个简单的工具,用于将Clojure .clj编译成.class / .jar以及如何在clojure中编译文件 ,似乎我可以在REPL之外编译clojure源代码。 我试过这个. 得到一个错误。 > java -cp .:/clojure-1.6.0.jar -Dclojure.compile.path=build clojure.lang.Compile […]

在Android中使用动态语言开始编程((J)Ruby,Clojure ……)

我一直在环顾四周,似乎无法找到任何明确的答案或进展似乎是“最新的”。 我见过一些有趣的项目,比如Mirah(以前的Duby),我正在研究它。 我见过JRuby用于将ruby编译成.dex的失败。 我也一直在寻找Clojure,并意识到他们可能都与同一件事有关。 有没有人有关于如何开始并取得进展的任何提示? 我不仅要问哪些框架可以提供帮助,更重要的是,我还要提出一个指导我的努力的理念/方向,以便开始。

在与Leiningen的Java之间夹着Clojure

对于一个类,我需要编写一些JVM代码,我希望使用Clojure。 我得到它与软件堆栈的底部部分一起工作,但我无法让它在位于顶部和底部的GUI层之间工作。 我的主要问题是让Java GUI识别我的Clojure文件。 我想使用Leiningen,但Java编译解决方案似乎并没有解释这种互操作。 这里的答案似乎正是我所需要的。 我不明白在哪里放置代码等(仅仅是不够详细)。 有人有任何提示吗? 我尝试制作一个插件 ,但它似乎不起作用。 我知道我的案例肯定是在问题的边缘,但一个解决方案将使Clojure在教室环境中更容易使用。 谢谢! 更多细节: 使用已编译的Clojure jar我没有太多运气。 我需要创建一个(ugh)有状态的Clojure类(即方法不能是静态的)。 我的类的代码(src / final_project / MyLinkLayer.clj)看起来像 (ns final_project.MyLinkLayer (:gen-class)) (defn -init[s] (print s)) (defn -send [dest data len] (println data)) (defn -recv [trans] (println trans)) (defn -status [] (println “I am a status!”)) (defn -command [cmd value] (println (str cmd […]

java / clojure中的单字符控制台输入

如何从控制台读取单个字符/键而无需按Enter键? Sun的bug数据库中有一个旧条目声称无法在纯java中完成。 我找到了这些方法 JNI JLine [ http://jline.sourceforge.net/] Javacurses [ http://sourceforge.net/projects/javacurses/] 我希望在我的类路径中添加一个magic-readkey.jar ,并编写几行代码,如(def just-hit (com.acme.MagicConsole/read-char)) 。

clojure / scala interop?

我试图插入这个简单的scala代码,但我遇到了一些麻烦。 package indicators class DoubleRingBuffer(val capacity:Int=1000) { var elements = new Array[Double](capacity); private var head=capacity-1 private var max=0 def size ():Int = { return max+1 } def add(obj:Double):Double = { head-=1 if (head=capacity || i=max) max=i var index = (head+i)%capacity var prev = elements(index) elements(index)=obj return prev } def get(i:Int=0):Double = { System.out.println(“size is “+size()) […]

在Clojure中实现Java通用接口

我正在尝试使用webdriver的webdriver-clj包装器在selenium2 / webdriver项目中获取clojure。 但是,由于Web界面是大量编写脚本的,我需要有一个选项来等待脚本创建某些元素,而不是页面加载。 所以我试图在clojure中创建一个wait-for函数,使用WebDriverWait类来测试元素属性,最好使用webdriver / by-functions中的clojure语法。 然而,服务员类直到方法采用通用接口(com.google.common.base.Function)作为参数,并且由于我的Java知识几乎不存在,这对于我刚刚起步的clojure技能来说certificate太多了。 任何有clojure-java互操作技能的人,以及如何在clojure中实现以下java代码以便它与webdriver / by-syntax结合的想法? Function presenceOfElementLocated(final By locator) { return new Function() { public WebElement apply(WebDriver driver) { return driver.findElement(locator); } };} // … driver.get(“http://www.google.com”); WebDriverWait wait = new WebDriverWait(driver, /*seconds=*/3); WebElement element = wait.until(presenceOfElementLocated(By.name(“q”)) 结果应该使这样的事情成为可能 (defn test [] (let [driver (webdriver/new-driver :firefox)] (webdriver/get driver “http://127.0.0.1/”) (webdriver/wait-for (webdriver/by-name […]

是否有用于生成MOBI电子书文档的Java或Ruby库?

在Caliber项目中有一个Python库,但我想找到一个可以在Clojure或Ruby中使用的库。 有任何想法吗?