标签: lighttable

JavaFX和Clojure:将observable绑定到不可变对象

我一直试图找出允许JavaFX TableView(或任何其他JavaFX事物)表示一些Clojure数据的方法,并允许用户通过GUI操作数据.

对于这个讨论,让我们假设我有一个列表/矢量的地图,即类似的东西 [{:col1 "happy1" :col2 "sad1"} {:col1 "happy2" :col2 "sad2"}],我希望它显示在图形表中,如下所示:

mykey1      mykey2
------------------
happy1      sad1
happy2      sad2
Run Code Online (Sandbox Code Playgroud)

非常直截了当.这在世界历史上已经完成了无数次.

问题是TableView坚持采用ObservableList等,这本身就是一个可变的东西,就像JavaFX中的所有Observable一样.这非常适合保持表格更新,并且在可变模型中,它也非常适合允许用户通过GUI直接操作数据.我不是专家,但在这种情况下,似乎JavaFX希望GUI对象实际包含真实数据.这对我来说似乎很有趣(不是哈哈).通过某些API或接口维护我自己的模型并在GUI和模型之间进行通信也意味着我将数据保存在两个地方:在我自己的模型中,在GUI中.这是正确的做事方式吗?也许这是可以的,因为GUI只显示总数据的一小部分,并且它允许我的模型数据只是普通模型数据,而不是某些Java派生类型的实例.

因此,当尝试将GUI放在无状态/不可变模型上时,这会导致以下三个一般性问题:

  1. 如果GUI必然允许您更改内容,那么下面的模型如何才能真正不变?我正在考虑某种设计工具,编辑器等,其中用户明确地改变了一些东西.例如,LightTable是一个编辑器,但故事是它基于不可变数据.怎么会这样?我对此次讨论并不感兴趣.

  2. 假设在某种程度上存在至少一个Atom或其他Clojure可变类型(ref/var/agent/etc)(无论是Atom包含整个内存设计数据库的单个,还是设计数据库是否是可变的不可变列表Atoms) ,哪种[MVP,MCP,MVVM等]模型最适合这种类型的创作?

  3. JavaFX已经使用Observable接口(http://docs.oracle.com/javafx/2/api/javafx/beans/Observable.html)的 每个可以想象的变体散布了类层次结构Observable[whatever]Value,其中包括例如ObservableMapObservableMapValue,以及然后几十个实施课程,如... IntegerPropertySimpleIntegerPropertygeez!WTF?假设我必须创建一些Clojure对象(defrecord等等)并Observable在我的大多数不可变对象上实现一些接口方法,我可以坚持Observable,或者我必须将每一个实现到叶节点,即ObservableIntegerValue等等?

什么是正确的高级方法?维护一个顶级原子,每次用户更改值时都会替换它?保持一千个低级原子?让我的值存在于JavaFX Observables中,忘记Clojure数据结构?使用一些reify/proxy/gen-class在Clojure中实现我自己的一组Observable,但是将它们实现为每次更改时都被替换的不可变项?Clojure的add-watch功能是否需要或存在?我非常希望我的数据只是Clojure中的普通数据,而不是"类型"或任何接口的实现.整数应该是整数等.

谢谢

javafx clojure lighttable

23
推荐指数
1
解决办法
945
查看次数

如何在Light Table中设置Vim模式?

如何在Light Table 0.6.0中激活vim模式.文档在编辑器模式中说只是键入"vim"并且它将自动完成,但现在它没有?我应该为用户行为添加什么?

{:+ {
 ;; The app tag is kind of like global scope. You assign behaviors that affect
 ;; all of Light Table here
 :app [(:lt.objs.style/set-skin "dark")]

 ;; The editor tag is applied to all editors
 :editor [:lt.objs.editor/no-wrap
          (:lt.objs.style/set-theme "default")]

 ;; Here we can add behaviors to just clojure editors
 :editor.clojure [(:lt.objs.langs.clj/print-length 1000)]}

 ;; You can use the subtract key to remove behavior that may get added by
 ;; another diff
 :- {:app []}}
Run Code Online (Sandbox Code Playgroud)

clojure lighttable

21
推荐指数
2
解决办法
6284
查看次数

如果你在python中单独写一个变量名怎么办?

最近我对以下伪造的python代码的第2行发生了什么感到好奇:

def my_fun(foo,bar):
    foo
    return foo + bar
Run Code Online (Sandbox Code Playgroud)

我之所以感兴趣的原因是我正在尝试使用Light Table并尝试将手表放在"foo"上.它似乎导致python解释器挂起.

我是否认为这条线完全没有效果并且不会导致任何错误?有人可以解释一下翻译在这里做了什么吗?

python lighttable

17
推荐指数
2
解决办法
748
查看次数

如何在Lighttable中创建基本的ClojureScript Hello World应用程序?

LightTable中的文档似乎很少.我想在LightTable中创建一个非常简单的ClojureScript Web应用程序作为构建的起点.我在Clojure中的Instarepl工作正常,然后我创建了一个名为dummy.cljs的新文件,其中包含以下内容:

(ns dummy)

(js/alert "Hello lighttable")
Run Code Online (Sandbox Code Playgroud)

我该怎么办呢?

更新

我现在已经想到了这一点,我将发布一个关于如何使用它的视频,因为它非常直观.

更新2

这是视频:

http://www.youtube.com/watch?v=GZ6e0tKqYas

clojurescript lighttable

15
推荐指数
1
解决办法
5494
查看次数

LightTable:如何格式化代码?

如何在LightTable IDE中格式化代码?我在谈论Eclipse中的Ctrl + Shift + F等价物.

lighttable

15
推荐指数
1
解决办法
5299
查看次数

我找不到一张轻便的桌子作弊表

有没有人有LightTable的备忘单,甚至更好的paredit插件,似乎我的google-fu不能找到一个?

clojure paredit lighttable

15
推荐指数
3
解决办法
4557
查看次数

Lighttable和Quil

我很抱歉我是Clojure的新手.我发现到目前为止我已经能够消化的Clojure世界的工具或教程并不多,所以我已经下载了Light Table(http://www.lighttable.com/)喜欢它应该让它更容易.我在Windows 7 64位上,基本的Light Table UI似乎正在运行.

为了尝试进一步尝试Light Table/Clojure,我还下载了Clojure绘图库Quil(https://github.com/quil/quil),但在指示Light Table连接到\ quil-master\project.clj之后然后打开并执行来自\ quil-master\examples(例如automata.clj或graphics.clj)的各种文件,Light Table产生我认为是旋转的蓝色"思考"图标,该图标被卡住或最终以"nil"结尾或"java.lang.Math".

只有"example2.clj"似乎可以工作(尽管并非总是如此),因为它(通常)会弹出一个带有变色钻石的窗口.我需要做些什么才能使这些其他Quil示例在Light Table中运行?

(另一方面,我也下载了Mire(Github上的另一个Clojure项目),但它也不会与Light Table一起运行.)

clojure lighttable quil

14
推荐指数
1
解决办法
2277
查看次数

Lighttable,设置字体大小

我是Lighttable IDE的新手.
任何人都知道如何设置workspace和Windows字体大小.
我可以改变编辑器字体大小.但不知道如何设置font-size其他元素.或更改所有IDE字体的font-size全局.

ide lighttable

14
推荐指数
1
解决办法
5844
查看次数

如何使用virtualenv来评估Light Table中的Python?

如何在Light Table IDE中使用virtualenv来评估Python ?

我在virtualenvs下运行我的所有项目,并且所有virtualenvs都位于子文件夹中/.virtualenvs/(非常标准的练习)

我看到LightTable支持每个工作区设置的行为,那么有没有办法设置一个将工作区绑定到特定virtualenv路径的行为?

python virtualenv lighttable

13
推荐指数
1
解决办法
1859
查看次数

你如何改变Leiningen和LightTable的Clojure版本?

当我在LightTable中输入(clojure-version)到我的repl时,我得到"1.5.1"输出.有没有办法升级到1.6.0?

我假设它正在从Leiningen(我的机器上的2.3.4)中绘制Clojure版本,其中装有1.5.1开箱即用.如何确保Leiningen和LightTable都使用最新版本的Clojure?我google了,找不到任何明确的答案.

我确实找到了这个问题,但它没有具体解决我的问题.有没有像我可以调用的"lein update"命令自动化这个过程,LightTable会识别和接收哪个,或者这是一厢情愿的想法?

upgrade version clojure leiningen lighttable

11
推荐指数
1
解决办法
6703
查看次数