问题标签 [counterclockwise]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
clojure - 我可以使用哪些技术来调试我的 Clojure 代码?
我正在使用 CounterClockWise 在 Windows 7 操作系统上开发我的第一个 Clojure 项目。除了 javascript(我不太熟悉),这是我的第一个动态类型语言。
构建我的项目最困难的部分是调试我遇到的问题。我一直在使用的技术是println
在一些地方撒上 s 来确认我的输入和输出是我想要的。
与 Java 相比,似乎很多 Clojure 函数都接受了我认为是垃圾输入的内容并愉快地返回 nil。因此,您看到的运行时异常可能来自许多远离问题原因的函数。我的意思是,甚至很难知道把println
s 放在哪里。
而且,这些运行时异常会输出已编译的代码行号,因此它们的信息量不是很大。我的大部分功能都很短且无副作用,但问题是我的输入是网页。有时函数的输入是原始 html,有时是解析后的 html(通过 enlive),有时是链接列表(通过在解析后的 html 上使用类似 css 的选择器)。这些输入可能是深度嵌套的复杂结构(即:地图列表的地图列表),因此手工构建它们并不容易。当你有一个没有指向问题的堆栈跟踪时,我几乎必须调试我的一半程序并弄清楚如何为每个部分生成输入。这非常耗时。
在 IRC 频道上,有人告诉我堆栈跟踪库,它使调试变得更加容易。它仍然指出许多功能远离错误输入的来源,但它仍然很有帮助。我正在寻找更多这样的技术。我可以使用哪些技术来更好地调试我的代码?
clojure - 无法逆时针调试
我正在运行 Clojure/Eclipse/逆时针。当我在 core.clj 中插入断点时,只有一行点获得了一条小尾巴。那是第 29 行。这与第 29 行上的代码无关。当这个带尾的点出现并且我尝试运行/调试/调试配置/调试时,对话框超时并显示消息“等待新的 REPL 进程确认时间到”。此外,焦点移至文件 clojure.core 的选项卡。该文件的第 29 行是下面以“cons”开头的行。它是 cons 定义的最后一行。它也是 clojure.core 中出现“.clojure.lang.RT”的第一行(下面还有其他类似的行)。在调试窗口中,我看到“Thread [main] (Suspended) 并紧接在“core.clj line: 29”下方。看起来问题出在 .clojure.lang.RT 上。
(如果我在任何其他行中插入断点,我只会得到一个点,然后 REPL 开始,但断点被忽略。)
clojure - 我可以配置 CounterClockWise 的 REPL 以便它以源和文档启动吗?
我觉得奇怪的是 CCW 不以命名空间中的(source)
or(doc)
函数启动。它也没有(e)
。我想不出我不想在我的repl中出现这些情况。有没有办法让我每次启动 CCW repl 时都可以使用这些,而无需(use)
手动输入?
eclipse - 使用 Leiningen,我如何安装文档?
我在 github (seesaw)上创建了一个库并运行了“lein install”,这使它在我的本地 maven 存储库中作为依赖项可用。但是当我将它作为依赖项包含在我的另一个项目中时,我的 IDE(eclipse 的逆时针方向)找不到文档。我认为这与我安装依赖项的方式有关,而不是我在自己的项目中导入它的方式,因为通常当我依赖依赖项时,我可以看到文档。
我认为等效的 Maven 命令是“站点”。但是当我输入“lein help”时,我看不到任何与文档相关的内容。
eclipse - 逆时针 HTTP REPL
在 Eclipse+逆时针中,当我想连接到 REPL 时,对话框告诉我可以通过 HTTP 使用 nREPL:
如何设置?这是否以某种方式连接到吊桥?lein repl :connect http://my.url/repl
尽管为我工作,但我无法使这些工作一起工作。
为清楚起见,为什么这与经典 REPL 相比有用:经典 REPL 仅适用于 localhost。您可以通过 SSH 端口隧道桥接它,但这 - REPL over HTTP - 是远程“实时”服务器的可行替代方案。
为了完整起见,服务器端:
- drawbridge - HTTP 传输 - https://github.com/cemerick/drawbridge
- 如何使用它 - https://devcenter.heroku.com/articles/debugging-clojure
- 示例应用程序 - https://github.com/technomancy/chortles
eclipse - clojure:如何在 if 语句中使用 recur
免责声明:我正在学习clojure。
这是我试图运行的简单示例:
现在我收到了这个错误,我想这是有道理的,因为我不熟悉语法:
我该如何解决?
附带问题:
- 当我在 Eclipse 中单击“运行”时(就像使用 Java 一样),我不仅打开了控制台,还打开了这个“REPL”窗口。为什么它是必要的,它有什么作用?
- 当我单击“运行”时,启动应用程序需要几秒钟。有没有办法让它更快?
- 当我需要编辑代码并重新启动应用程序时,我收到以下消息:“无法启动选择,并且最近没有启动”。那是什么,为什么它不让我重新启动我的代码?如果我等待一段时间,我可以再次启动它。
eclipse - 在eclipse中运行clojure(逆时针)
我正在 Eclipse 上学习 clojure(逆时针插件)。
- 当我在 Eclipse 中单击“运行”时(就像使用 Java 一样),我不仅打开了控制台,还打开了这个“REPL”窗口。为什么它是必要的,它有什么作用?
- 当我单击“运行”时,启动应用程序需要几秒钟。有没有办法让它更快?
- 当我需要编辑代码并重新启动(运行)应用程序时,我收到以下消息:“无法启动选择,并且最近没有启动”。那是什么,为什么它不让我重新启动我的代码?如果我等待一段时间,我可以再次启动它。
这是我正在尝试运行的简单代码:
更新:我设法进一步搞砸了。现在,当我单击“运行”时,控制台会忽略任何输入,就好像应用程序甚至没有运行一样......
UPDATE2我已经重启了eclipse,之前的问题就解决了。现在我可以再次在控制台中运行该应用程序。我不知道发生了什么。我能看到的唯一区别是,当我把它搞砸时——REPL 窗口标题看起来像这样:
重新启动 eclipse 后,它又回到了这个:
我不知道这是什么意思。
eclipse - clojure:如何将控制台输入绑定到变量?
我正在尝试学习clojure,但是来自OO背景的简单事情看起来像是不可能完成的任务。例如,如何编写接受控制台输入并将其输出到控制台的函数?
我正在尝试这样的事情,但它不起作用。
PS我使用日食 - 逆时针
eclipse - Eclipse 在尝试调试 clojure 项目时挂起
类似于我之前的问题。
Eclipse 在尝试调试 Clojure 项目时挂起。之前我在 Windows 8 上使用 Eclipse Kepler,现在在 Windows XP 上使用 Eclipse Juno 也会发生同样的事情。Eclipse 错误日志包含以下相关条目(最早在顶部):
我注意到的一件奇怪的事情是,在第一次崩溃后,项目右键菜单中的“Leiningen”和“Clojure”条目消失了,所以我认为 CCW“崩溃”或消失了,或者 ??? 退出 Eclipse 并再次启动它会恢复这些菜单条目。
我意识到这里没有太多信息,但是有人有什么想法吗?请注意,调试器运行了几天 - 然后今天早上问题开始了。另请注意,我可以通过使用 Ctrl-Alt-S 将其“发送”到 REPL 来成功运行此文件。
FWIW,我要调试的文件是:
eclipse - 在 REPL 中加载文件不可用
我正在关注这里的基本介绍。一切都很好,直到我去使用Command-Option-S它什么都不做——并且 Clojure 菜单中的“在 REPL 中加载文件”显示为灰色且不可选择。
解决方法是什么?
在同一个菜单中,使用 REPL 的其他两个选项也不可用。