在Eclipse + Counterclockwise中,当我想连接到REPL时,对话框告诉我可以通过HTTP使用nREPL:
如何设置?这是否与吊桥有关?虽然lein repl :connect http://my.url/repl
为我工作,但我无法将这些工作整合在一起.
为清楚起见,与传统REPL相比,为什么这是有用的:经典REPL仅适用于localhost.您可以通过SSH端口隧道来桥接它,但是这个 - 通过HTTP的REPL - 是远程"实时"服务器的可行替代方案.
为了完整性,服务器端:
我正在使用逆时针,但不幸的是他们尚未实现此功能.您有什么想法如何以"lispy"方式自动格式化我的Clojure代码?
是否可以浏览您在Eclipse中输入逆时针REPL的历史?就像按下向上箭头或ctrl-p或其他在其他repl中工作的其他东西一样?谢谢!-Philip
我正在尝试用compojure编写我的第一个Web应用程序.我正在使用ccw,而且我File-New-Project, Clojure Project
使用"compojure"leiningen模板.最终看起来像project.clj
(defproject asdf "0.1.0-SNAPSHOT"
:description "FIXME: write description"
:url "http://example.com/FIXME"
:dependencies [[org.clojure/clojure "1.4.0"]
[compojure "1.1.5"]]
:plugins [[lein-ring "0.8.2"]]
:ring {:handler asdf.handler/app}
:profiles
{:dev {:dependencies [[ring-mock "0.1.3"]]}})
Run Code Online (Sandbox Code Playgroud)
src/asdf/handler.clj看起来像
(ns asdf.handler
(:use compojure.core)
(:require [compojure.handler :as handler]
[compojure.route :as route]))
(defroutes app-routes
(GET "/" [] "Hello World")
(route/not-found "Not Found"))
(def app
(handler/site app-routes))
Run Code Online (Sandbox Code Playgroud)
我发现我可以从命令行运行它lein ring server
,但我不知道如何从eclipse运行它.我当然希望不仅能够运行它,还能调试它并设置断点等.在eclipse中有没有办法做到这一点?或者,如果没有,IntelliJ/La-Clojure怎么样?(我现在有点害怕emacs,但也许如果它超级简单我会尝试一下).
或者,这不是一个compojure应用程序的典型开发过程吗?(如果不是,那是什么?只是跑步lein ring server
并祈祷?)
如果它有所作为,这是在Win7上.
我确定这个问题的答案是显而易见的,但我已经阅读了逆时针文档并在互联网上搜索并且无法找到它.我经常在逆时针编辑Clojure文件时不小心添加额外的括号,parens等,并且在不退出严格的paredit模式的情况下无法弄清楚如何删除它们.例如,假设我有以下功能:
(defn (add-x-y-z)
[x y z]
(+ x y z))
Run Code Online (Sandbox Code Playgroud)
我不小心在功能名称周围放了一些parens,据我所知,除了删除功能名称,删除额外的parens,再次输入功能名称或暂时退出之外,没有办法删除它们.严格的paredit模式.还有其他选择吗?无论出于何种原因,我经常遇到这个问题.
我尝试了本指南中的代码:
(defn my-fn [ms]
(println "entered my-fn")
(Thread/sleep ms)
(println "leaving my-fn"))
(let [thread (Thread. #(my-fn 1))]
(.start thread)
(println "started thread")
(while (.isAlive thread)
(print ".")
(flush))
(println "thread stopped"))
Run Code Online (Sandbox Code Playgroud)
当我执行它时,部分输出显示在REPL中,而另一部分显示在控制台中(由于我通常将其隐藏起来因为我不使用它而弹出).
我想将所有输出发送到REPL窗口,我该如何实现?
我发现CCW没有启动命名空间中(source)
的(doc)
函数或奇怪的功能,我觉得很奇怪.它也没有(e)
.我想不到处于我不想要这些的情况.有没有办法在每次启动CCW repl时都可以使用这些,而无需(use)
手动输入?
当我尝试在使用Compojure模板创建的Clojure Webapp项目中使用POST方法时,得到了“ 无效的防伪令牌 ”。
我进行了研究,Ring中间件为来自其他站点的经过身份验证的请求创建了CSRF(跨站点请求表单)令牌(以使用已经登录并访问不允许访问的页面的其他人的凭据)。
这些令牌是默认的,我们需要在WebApp周围使用ring.middleware的wrap-params。无法到达任何地方。请帮忙 !!如何摆脱无效的防伪令牌。
我的handler.clj文件是:
(ns jsonparser-webapp.handler
(:require [compojure.core :refer :all]
[compojure.route :as route]
[jsonparser-webapp.views :as views])
(:use [ring.middleware.params :only [wrap-params]])
(defroutes app-routes
(GET "/"
[]
(views/home-page))
(GET "/goto"
[]
(views/goto))
(POST "/posted"
{params :params}
(views/posted params))
(route/not-found "Not Found"))
(def app
(wrap-params app-routes site-defaults))
Run Code Online (Sandbox Code Playgroud)
我的views.clj文件是
(ns jsonparser-webapp.views
(:require [hiccup.page :as hic-p]
[hiccup.form :as hf]))
(defn gen-page-head
[title]
[:head
[:title title]])
(defn home-page
[]
(hic-p/html5
(gen-page-head "Json Parser Home.")
[:h1 "Welcome."]
[:p "Json Web App."] …
Run Code Online (Sandbox Code Playgroud) 我想知道与Emacs相比,Eclipse的Counterclockwise插件有什么限制.Eclipse中不提供什么Lisp(和Clojure)魔法?
- 更新 - 我知道Emacs将有更多的功能,shourtcuts,各种复杂的键绑定,但我对特定的Lisp/Clojure的东西感兴趣.例如,如果我不能在文件中使用正则表达式搜索,那很好,但是如果我不能在Eclipse中使用REPL,那么对我来说这将是一个破坏 - 它的核心功能.那么为了扩展我的问题,与Emacs相比,REPL在逆时针方面是否完全正常运行?我不介意,如果缺少一些非常高级的功能,那只是为了方便,但如果我不能做某事,我将跳转到Emacs.
我在Clojure中使用deftype时遇到了问题.如果我运行以下代码:
(defprotocol TestProt
(geta [this])
(getb [this]))
(deftype TestType [a b]
TestProt
(geta [this] a)
(getb [this] b))
(defn test-function [^TestType a-testtype]
(print (.geta a-testtype)))
(def test-tt (TestType. 1 1))
(test-function test-tt)
Run Code Online (Sandbox Code Playgroud)
然后编译器抛出:ClassCastException MyProject.core.TestType无法强制转换为MyProject.core.TestType.我做错了什么,或者这是一个错误?请注意,如果我从test-function中删除类型注释,那么它只是:
(defn test-function [a-testtype]
(print (.geta a-testtype)))
Run Code Online (Sandbox Code Playgroud)
然后代码工作正常,但我得到一个关于反射的警告(启用了反射警告),并且它运行得更慢,这违背了在我当前用例中使用deftype的目的.
编辑:好的,代码在repl中工作,但是当我使用ctrl-alt-s加载它时(我在Eclipse中通过逆时针运行它).所以问题似乎是Eclipse或逆时针.
我有一组位于凹多边形边界上的点.我想找到一个非交叉多边形,将这些点作为顶点.换句话说,我想以凹面多边形的ccw(或cw)方式排序.
我看一下评估多边形是以ccw还是cw方式排序的方法(计算和求和交叉乘积).这不是我的问题:我有随机序列的顶点,我想订购它们,以便在多边形的外壳上有cw或ccw.
我想到了最初的顶点序列,并连续识别交叉点.如果初始点序列是[x1,y1; x2,y2; x3,y3; ...]和第2和第3点正在交叉,我们继续序列[x1,y1; x2,y3; x3,y2; ...]
你能想到什么算法?什么是背后的概念?你有提示吗?
Regds
我有Eclipse的CounterClockwise,并且相信应该安装clojure.contrib.但是,我似乎无法使用它或任何子文件,如clojure.contrib.string.如果我键入,我会收到以下错误
如果我输入(require'clojure-contrib.string),我得到:
FileNotFoundException无法在类路径上找到clojure_contrib/string__init.class或clojure_contrib/string.clj:clojure.lang.RT.load(RT.java:443)