Articles of clojure

如何将Macchiato clojurescript应用程序部署到Heroku免费帐户?

我尝试通过以下命令创buildMacchiato(ClojureScript模板)的空白应用程序: lein new macchiato abc cd abc git init heroku create git add –all git commit -m "Initial" git push heroku master heroku run lein package 但应用程序崩溃。 我应该怎么做免费的Heroku上运行Macchiato / ClojureScript空白应用程序? 来自Heroku的一些日志: 2017-09-20T14:20:18.982364+00:00 heroku[web.1]: Starting process with command `node target/release/abc.js` 2017-09-20T14:20:21.393478+00:00 app[web.1]: Setting JAVA_TOOL_OPTIONS defaults based on dyno size. Custom settings will override them. 2017-09-20T14:20:23.735706+00:00 app[web.1]: […]

不能有RabbitMQ Clojure客户端工作

我有我的RabbitMQ实例的2个客户端,但我没有设法使Clojure版本工作。 我可能错过了一些RabbitMQconfiguration,但无法弄清楚什么。 我的交换是数据,队列是警报。 任何想法在Clojure版本中缺less什么? 工作Node.js RabbitMQ客户端 var amqp = require('amqplib/callback_api'); amqp.connect('amqp://192.168.99.100', function(err, conn) { conn.createChannel(function(err, ch) { var ex = 'data'; ch.assertExchange(ex, 'direct', {durable: true}); ch.assertQueue('', {exclusive: true}, function(err, q) { console.log(' [*] Waiting for logs. To exit press CTRL+C'); ch.bindQueue(q.queue, ex, 'ALERT'); ch.consume(q.queue, function(msg) { console.log(" [x] %s: '%s'", msg.fields.routingKey, msg.content.toString()); }, {noAck: true}); […]

我的安全devise听起来如何?

我有一个特定的安全需求,这意味着我正在编写更多与安全相关的代码。 如果我正在做的事情是由某个图书馆解决的,请告诉我,我立即放弃执行。 我有一个用Java编写的服务器(实际上是Clojure)和一个用JavaScript编写的客户端(实际上是ClojureScript),它作为一个Electron应用程序来运行。 我需要各种客户端应用程序来通过服务器交换信息,以便能够访问这些信息:我需要端到端的encryption。 为了实现端到端encryption,我希望在客户端生成一个私有的公钥对,然后公钥和私钥的encryption版本将被上传到服务器。 然后,通过做一个挑战响应,在这个响应中,客户端签署一段随机数据,服务器validation它,服务器将authentication用户。 注册过程包括生成一个椭圆曲线Diffie Hellman密钥对,具体来说,根据https://security.stackexchange.com/questions/78621/which-elliptic-curve-应该-I-使用 生成后,生成一个16字节的盐,然后我pbkdf2密码872791次与盐,keylen 32和使用sha512。 使用哈希密钥,我用aes-256-ctrencryption私钥。 最后一步是连接salt长度,salt和encryption的私钥并发送给服务器。 我假定所有这一切都发生在TLS安全通道HTTPS上,通过CA以通常的方式validation服务器证书的有效性。 将来我可能会使用证书locking来增加安全性。 这是一个健全的devise? 它看起来安全吗? 是否有任何或所有这些我可以委托给维护良好的第三方开源库? 我的实际代码: (def elliptic-curve-name "secp521r1") ; https://security.stackexchange.com/questions/78621/which-elliptic-curve-should-i-use (def encryption-algorithm "aes-256-ctr") ; http://lollyrock.com/articles/nodejs-encryption/ (def hash-bytes 32) (def salt-bytes 16) (def pbkdf-digest "sha512") (def iterations 872791) (defn encrypt-text [text key] (let [salt (.randomBytes crypto salt-bytes) salt-string (.toString salt "base64") hashed-password (.pbkdf2Sync […]

尝试运行简单的hello world的.js输出时,得到“无法设置属性undefined的错误”clojurescript

我正在编译: (ns example.hello) (js/console.log "Hello from ClojureScript!") 有了这个configuration: (defproject lein-cljsbuild-example "1.2.3" :plugins [[lein-cljsbuild "0.2.9"]] :cljsbuild { :builds [{ :source-path "src-cljs" :compiler { :output-to "war/javascripts/mainz.js" ; default: main.js in current directory ;:optimizations :simple :target :nodejs ;:pretty-print true }}]}) 哪个输出的文件太大而不能放在这里,但是会给出错误: goog.debug.Error = function(opt_msg) { ^ TypeError: Cannot set property 'Error' of undefined at Object.<anonymous> (/Users/myuser/Clojure/cljstest/war/javascripts/mainz.js:503:18) at Module._compile […]

ClojureScript NodeJS程序不会接受控制台参数

考虑下面的clojurescript程序: (ns node-test.core (:require [cljs.nodejs :as node])) (defn -main [& args] (println "args: " args) (let [one (first args) two (second args)] (println "one: " one) (println "two: " two))) (set! *main-cli-fn* -main) 问题:如果我没有优化编译这个程序,按预期工作。 例: $ node program.js 1 2 => args: (1, 2) one: 1 two: 2 如果我使用高级优化编译程序,那么我的程序不会识别参数: $ node program.js 1 2 => […]

Node.js API的语言转换为ClojureScript

我正在编写一个Electron应用程序,在这个应用程序中,我需要与一些Node.js API进行交互 – 读取文件,获取目录条目,监听事件。 当然,我可以用编写ClojureScript的方式编写JavaScript,但是我想知道ClojureScripts对callback式API,stream,EventEmitter的作用,以及如何编写node.js API的包装器,在ClojureScript中看起来很陌生。 再具体一点: 如何编写一个包装callback式node.js API的API。 (比如fs.readdir ) 我如何与类似EventEmitter的API交互? (可能接近第2页)我如何使用node.jsstreamAPI?

Node.js上的ClojureScript代码

我正在尝试在node.js上运行ClojureScript app1.js目标代码:工作: var rx = require("./lib/rx/rx.node.js"); var moment = require("./lib/moment/moment.js"); var timeStream = new rx.Observable.interval(300) .subscribe(function(index) { console.log(moment().format("dddd, MMMM Do YYYY, h:mm:ss a")); }); core.cljs我的尝试到目前为止: (ns rxcljs.core (:use [cljs.nodejs :only [require]]) ) (def rx (require "./lib/rx/rx.node.js")) (def moment (require "./lib/moment/moment.js")) (-> rx (.Observable) (.interval 300) (.subscribe #(->> (->(moment) (.format "dddd, MMMM Do YYYY, h:mm:ss a" […]

ClosureScript&NodeJS:错误:No * print-fn * fn设置为评估环境

我跟着“你好世界!” 这两个指南中的NodeJS示例 https://github.com/clojure/clojurescript/wiki/Quick-Start#running-clojurescript-on-nodejs http://mmcgrana.github.io/2011/09/clojurescript-nodejs.html 并为每个我得到这个错误 Error: No *print-fn* fn set for evaluation environment 我错过了一个步骤? 这似乎是一个相当基本的问题…有谁知道print-fn在哪里设置?

没有Java的ClojureScript

是否有可能编译没有Java的ClojureScript? 我读了clojurescript nodejs快速启动,但我看到他们仍然使用java编译。 我检查了cljs-bootstrap,但他们也依赖于java。 有没有什么办法只使用npm install并开始使用clojurescript?

我应该如何从Java应用程序运行NodeJS?

我正在编写一个Java库,实际上是一个Clojure库,但是对于这个问题,重要的是它在JVM上运行。 这个库需要执行一些JavaScript。 我尝试过与Nashorn,但我遇到一些限制,可能太难以克服。 作为替代,我想尝试NodeJS。 我希望自己的库是独立的,不依赖于独立运行NodeJS的系统,因此需要特定的部署机制将Java和NodeJS工件放置在正确的位置,由两个不同的networking服务器提取。 但是这种方法带来了一些问题。 我将通过HTTP与NodeJS通话,但是我不希望NodeJS打开特定的端口。 我想find一个随机的未使用的,所以没有碰撞。 我也想控制从NodeJS的日志去,以保持与我的应用程序的其余部分。 最后,我的应用程序应该能够检测到NodeJS何时崩溃并重新运行它或报告错误的信息。 什么是最好的方法来解决这个问题? 有没有任何Java库可以帮助用这种方式pipe理subprocess? 特别是我应该从NodeJS方面做的任何事情(我对NodeJS很陌生,以前从未使用过)。