Articles of clojure

使用Aleph / Laminaasynchronous访问MongoDB

我一直在阅读Clojure一段时间,我正在考虑它作为Node.js(我已经用于另一个项目)的替代品。 最有希望的图书馆似乎是Aleph / Lamina,遗憾的是没有像Node那么多的例子。 我的问题是: 我如何处理asynchronous操作链的请求,如从MongoDB读取文档,做一些计算,保存新文档并将其发送到响应中? 我无法从Lamina wiki页面中的示例中编写它。 这听起来像一个相当常见的用例,我很惊讶没有发现任何代码显示它。 如果你能给我看一些示例代码,那将是非常好的。 这种设置是否适合于重负载的服务器(比如每秒几万个请求)? 我无法为每个新请求创build一个线程,所以我需要类似于Node方法的东西。 有没有使用这种方法的中型或大型公司的例子? 有没有更好的Clojure替代节点(除了Aleph / Lamina)? 也许Clojurescript目标节点? 我的客户端不是用Javascript编写的,所以在客户端和服务器端使用相同的语言在我的情况下不是一个优势。 谢谢!

Heroku将Clojure应用程序检测为Node.js

Heroku通过存在像package.json或project.clj这样的文件来检测应用types。 我正在尝试构buildClojure应用程序,所以我在我的根目录下有project.clj 。 但是我也使用了一些node.js工具,所以我也有package.json 。 有没有办法告诉Heroku我build立了什么样的应用程序,但保持package.json ?

Clojurescript + Node.js 0.12.7问题(错误“process.binding('evals')没有这样的模块:evals”)

我试图使用Node.js + ClojureScript,我find了一个文章。 http://www.mase.io/code/clojure/node/2015/01/24/getting-started-with-clojurecript-and-node/ 按照说明find这个错误: process.binding('evals').NodeScript.runInThisContext.call( ^ Error: No such module: evals at Error (native) 这个问题似乎是我需要使用旧版本的节点: https : //groups.google.com/forum/#!topic / clojurescript / VneLWVpwe6o和https://github.com/kanso/kanso/issues/422 矿是0.12.7 pow> node –version v0.12.7 在这种情况下,我可能需要使用旧版本的节点,但更好的方法是绕过这个问题吗? 如果不存在,如何在Mac OS X中使用旧版本的node.js? 编辑 在https://github.com/creationix/nvm之后,我可以安装0.10.32版本的node.js。 pow> nvm install 0.10.32 pow> node –version v0.10.32 但是,它给了我另一个错误信息: pow> node entrypoint.js Hello world! /Users/smcho/Desktop/clojurescript/pow/out/server/cljs/core.js:12133 var fixed_arity = f.cljs$lang$maxFixedArity; ^ TypeError: […]

我的ClojureScript翻译这个JS函数是否习惯?

我正在试图评估我的CLJS函数声明是否惯用。 这里是我尝试将JS函数转换为相应的CLJS函数。 (您可以忽略该function的实际内容)。 JavaScriptfunction: var dir = require('node-dir'); function jsFunc(path) { dir.files(path, function(err, files) { if (err) throw err; files = files.filter(function (file) { return file.endsWith('.dec'); }); console.log(files); }); } 我的翻译成ClojureScript: (defn cljs-func [input-path] (let [dir (node/require "node-dir")] (.files dir input-path (fn [err files] (println (.filter files (fn [file] (.endsWith file ".dec")))))))

(node / enable-util-print!)做什么?

在一个针对nodejs的ClojureScript项目中,下面的通用语句幕后到底是怎么回事? (node/enable-util-print!)

使用Express.JS运行FIgwheel

根据我的理解,在我的系统上运行lein figwheel ,在lein figwheel启动一个简单的静态托pipe服务器(通过环)。 问题是我通过node.js在端口3000托pipe我自己的文件。 当我运行figwheel,然后启动我的express.js服务器,更改我的前端文件奇怪地影响两个端口相同(即更新文件导致两个页面立即重新渲染)。 问题:如果figwheel对express.js port 3000服务器没有任何了解,那怎么可能呢? 而且,在任何情况下,这是使用我自己的express服务器的最佳方式(即,有两个实例运行,一个默认为3449,而我自己的端口为3000)?

我如何从Clojure中导出Java类(.jar)?

我是Clojure和Java的新手。 我有一个现有的Clojure项目,别人写道,我试图使用node-javaembedded到NodeJS中。 Clojure的 该项目定义了一个提供某些公共职能的名称空间,如下所示: (ns my.namespace (:require …etc…)) (defn dosomething …) (defn dosomethingelse …) 我用leiningen( lein jar和lein uberjar )build立了这个项目。 问题 node-java上的#import()文档说我需要像这样导入一个java类: const java = require('java'); var Test = java.import('Test'); 我怎样才能访问这些function(大概是Java类的静态方法?) 我接近这一切都错了吗? =) 更新 感谢Magos(下面的答案),我做了更多的进展。 原来我可以在(ns …)范围内使用(:gen-class :name my.name)来告诉它生成一个类。 如果我像这样添加一个configuration文件到project.clj: … :profiles { … :uberjar {:aot :all} } … 它会编译,我现在可以在Node中看到类。 不过,我仍然没有想出如何导出这些方法。 现在就在这个部分工作。

在Heroku上的Clojurescript

我喜欢编写Clojure webapps,但是在Heroku这样的平台上使用时,却有着无法接受的启动时间。 有没有人尝试在服务器端使用Clojurescript与节点例如? 这是否改善启动时间?

Javascript:将stringpath转换为格式化数组

所以我试图使用github API并将其转换为dynatree使用。 我正在寻找使用JavaScript。 但是,如果在Ruby,ClojureScript等中更容易完成,那也可以。 所以Github api返回的东西看起来像: { "sha": "a1f28431d5ee1a00361ff7e1e2dc91172d5bbabd", "url": "https://api.github.com/repos/Jonovono/c/git/trees/a1f28431d5ee1a00361ff7e1e2dc91172d5bbabd", "tree": [ { "mode": "100644", "type": "blob", "sha": "b81f704ee24f08f5f3e00675a9912da79274c3bc", "path": ".gitignore", "size": 114, "url": "https://api.github.com/repos/Jonovono/c/git/blobs/b81f704ee24f08f5f3e00675a9912da79274c3bc" }, { "mode": "100644", "type": "blob", "sha": "c6231c2f161f50bededaaac624a7a96db6179e9a", "path": "Makefile.am", "size": 40, "url": "https://api.github.com/repos/Jonovono/c/git/blobs/c6231c2f161f50bededaaac624a7a96db6179e9a" }, { "mode": "100644", "type": "blob", "sha": "ca41e5b8fb710b4ae7a2cdb35cdbafb143382dc2", "path": "README.md", "size": 2194, "url": "https://api.github.com/repos/Jonovono/c/git/blobs/ca41e5b8fb710b4ae7a2cdb35cdbafb143382dc2" }, […]

如何不完整的ClojureScript? (范围)(迭代)等

我正在尝试最近使用ClojureScript而不是Clojure。 当我编译和运行node.js (.log js/console (range 10)) 我有 $ node app { meta: null, start: 0, end: 10, step: 1, __hash: null, 'cljs$lang$protocol_mask$partition1$': 0, 'cljs$lang$protocol_mask$partition0$': 32375006 } 我有点惊讶地看到这个简单的代码不起作用。 这是由于我的具体环境? 我希望如此,如果这是我的问题,请告知。 这里是编译的js: cljs.nodejs = {}; cljs.nodejs.require = require; cljs.nodejs.process = process; cljs.core.string_print = cljs.nodejs.require.call(null, "util").print; var rxcljs = {core:{}}; console.log(cljs.core.range.call(null, 10));