小编Joh*_*den的帖子

为什么我不能在clojure中绑定+?

任何人都可以解释为什么我可以重新列出列表而不是+?

(binding [list vector]
  (list 1 3))
(binding [list +]
  (list 1 3))
(binding [+ list]
  (+ 1 3))
Run Code Online (Sandbox Code Playgroud)

我想重新绑定+所以我可以做部分评估.

evaluation binding clojure partial

9
推荐指数
2
解决办法
304
查看次数

我可以在clojure中做出确定性的随机播放吗?

我想制作一些套装,每次运行程序都是一样的:

这是一种方法:

(def colours ["red" "blue" "green" "yellow" "cyan" "magenta" "black" "white"])

(defn colour-shuffle [n] 
  (let [cs (nth (clojure.math.combinatorics/permutations colours) n)]
    [(first cs) (drop 1 cs)]))

; use (rand-int 40320) to make up numbers, then hard code:
(def colour-shuffle-39038 (colour-shuffle 39038))
(def colour-shuffle-28193 (colour-shuffle 28193))
(def colour-shuffle-5667  (colour-shuffle 5667))
(def colour-shuffle-8194  (colour-shuffle 8194))
(def colour-shuffle-13895 (colour-shuffle 13895))
(def colour-shuffle-2345  (colour-shuffle 2345))

colour-shuffle-39038 ; ["white" ("magenta" "blue" "green" "cyan" "yellow" "red" "black")]
Run Code Online (Sandbox Code Playgroud)

但是评估需要一段时间,而且看起来很浪费而且相当不优雅.

有没有一种方法可以直接生成shuffle 39038,而不会生成和消耗所有序列?

(我已经意识到我可以对它们进行硬编码,或者用宏来重新编译时间.这也似乎有点垃圾.)

random shuffle deterministic clojure permutation

9
推荐指数
2
解决办法
1120
查看次数

如何禁用位置:在网页中修复?

本网站:

http://nautil.us/

有一个非常讨厌的标题,总是在屏幕上,不会滚动.

如果我右键单击它并在firefox中"检查元素",那么我发现css包含"position:fixed;",如果我解开它,标题会表现出来,并按照上帝要的标题滚动.

有没有办法让firefox自动执行此操作,即删除所有位置:渲染之前所有页面中的固定行?

编辑 - - - -

经过一番思考后,我想要的是一个可以杀掉这类东西的书签.

那么如何让SciMonster看起来很有前途:

var x = document.querySelectorAll('*'); // get all elements
for (var i = 0; i< x.length; i++) {
    if (x[i].style.position == 'fixed') {
        x[i].style.position = 'static';
    }
}
Run Code Online (Sandbox Code Playgroud)

javascript:???
Run Code Online (Sandbox Code Playgroud)

适合进入firefox书签的位置字段?

在win条件下,如果你去http://nautil.us,然后单击bookmarklet按钮,浮动标题会停止浮动并滚动,就像你position: fixed;在元素检查器中删除了一样.

html javascript css firefox bookmarklet

9
推荐指数
1
解决办法
2951
查看次数

python ubuntu virtualenv - >错误

新手在这里,善待.

前几天我都是:

sudo apt-get install python-virtualenv
Run Code Online (Sandbox Code Playgroud)

然后我(按照说明):

virtualenv env
Run Code Online (Sandbox Code Playgroud)

而Ubuntu 10.10就像:

Traceback (most recent call last):
  File "/usr/local/bin/virtualenv", line 5, in <module>
    from pkg_resources import load_entry_point
  File "/usr/lib/python2.6/dist-packages/pkg_resources.py", line 2675, in <module>
    parse_requirements(__requires__), Environment()
  File "/usr/lib/python2.6/dist-packages/pkg_resources.py", line 552, in resolve
    raise DistributionNotFound(req)
pkg_resources.DistributionNotFound: virtualenv==1.5.1
Run Code Online (Sandbox Code Playgroud)

是什么赋予了?

python ubuntu virtualenv

8
推荐指数
2
解决办法
6362
查看次数

编写脚本时,#!/ usr/bin/perl和#!/ usr/bin/env perl之间的区别是什么?

显然,这同样适用于替换perl的python,bash,sh等!

昆汀在下面的答案显然是正确的,所以我接受了它,但我想我的意思是'两种使用方式的优缺点是什么#!调用perl/python/bash作为脚本的解释器?'

shell perl shebang

8
推荐指数
3
解决办法
2264
查看次数

如何在clojure中组合两个向量元素的向量?

假设我有:

'[[c c c]
  [y y y]
  [m m m]]
Run Code Online (Sandbox Code Playgroud)

'[[r g b]
  [r g b]
  [r g b]]
Run Code Online (Sandbox Code Playgroud)

我想要:

'[[[c,r] [c,g] [c,b]]
  [[y,r] [y,g] [y,b]]
  [[m,r] [m,g] [m,b]]]
Run Code Online (Sandbox Code Playgroud)

在clojure中这样做的优雅方法是什么?

list vector clojure

8
推荐指数
1
解决办法
947
查看次数

在C中,如何计算两个48位无符号整数之间的有符号差?

我有一个来自无符号48位纳秒计数器的两个值,它可能会换行.

我需要两倍的差异,以纳秒为单位.

我想我可以假设读数是在大致相同的时间进行的,所以对于两个可能的答案,我认为我是最安全的.

他们都存储为uint64_t.因为我认为我不能拥有48位类型.

我想计算它们之间的差异,作为有符号整数(大概int64_t),考虑包装.

所以,例如,如果我开始

x=5

y=3
Run Code Online (Sandbox Code Playgroud)

然后结果x-y2,并且如果我增加两个,x并且y即使它们包裹在最大值的顶部时也会保持这样0xffffffffffff

类似地,如果x = 3,y = 5,那么xy是-2,并且每当x和y同时递增时将保持不变.

如果我可以宣布x,y作为uint48_t和差异int48_t,我想

int48_t diff = x - y; 
Run Code Online (Sandbox Code Playgroud)

会工作的.

如何使用我可用的64位算法模拟此行为?

(我认为任何可能运行的计算机都会使用2的补码算法)

PS我可能会破解这个,但我想知道是否有一个很好的标准方法来做这种事情,下一个阅读我的代码的人将能够理解.

PPS此外,这段代码最终会出现在最严格的紧密循环中,所以有效编译的东西会很好,所以如果必须有选择,速度就会超过可读性.

c math unsigned signed

8
推荐指数
1
解决办法
391
查看次数

在我无法访问的代码中阻止系统/退出

通过在repl中检查它,我正在玩别人的代码.

它一直调用System/exit,这会导致我的repl.这令人气愤.

在我可以访问的所有代码中,我嘲笑了这些调用.

但它也调用了一些我没有源代码的库代码,包括java和clojure,这偶尔会导致退出.

有没有办法全局捕获这些调用,所以尝试调用它们不会杀死repl线程?理想情况下,它只会抛出异常.

我想在java中我可以安装一个新的SecurityManager来获得这个效果,但我从来没有这样做过

这里似乎有一些东西:http: //jroller.com/ethdsy/entry/disabling_system_exit

所以我想的是:

(System/setSecurityManager (SecurityManager.))
Run Code Online (Sandbox Code Playgroud)

只有我需要附加

  public void checkPermission( Permission permission ) {
    if( "exitVM".equals( permission.getName() ) ) {
      throw new ExitTrappedException() ;
    }
  }
Run Code Online (Sandbox Code Playgroud)

我到目前为止最好的射门是:

(System/setSecurityManager
 (proxy [SecurityManager] []
   (checkPermission [p]
                    (when (= "exitVM" (.getName p))
                      (throw (Exception. "exit"))))))
Run Code Online (Sandbox Code Playgroud)

或者可能

(System/setSecurityManager 
  (proxy [SecurityManager] [] 
    (checkExit [n] false)))
Run Code Online (Sandbox Code Playgroud)

但他们都只是破坏了这个代表

或者有更好的方法吗?

clojure

7
推荐指数
1
解决办法
660
查看次数

在speedbar中显示隐藏文件

有没有办法显示文档调用高速条中的2级隐藏文件?例如.emacs

答案很长

事实证明,未示出的文件由正则表达式控制

通常"^\\(\\..*\\)\\'",我认为这意味着以点开头的所有内容

设置正则表达式:

(setq speedbar-directory-unshown-regexp "^$")
Run Code Online (Sandbox Code Playgroud)

显示一切的诀窍.

emacs

7
推荐指数
1
解决办法
1709
查看次数

有没有办法启用(int i = 0; ...在gcc中...而不必打开c99模式

我有一个非常大的程序,在没有警告的情况下编译gcc.

如果我在命令行上打开c99模式--std = c99,它会发出大量警告和错误.

但我喜欢这个成语 for(int i=0; i<20; i++){ code }

代替 {int i; for (i=0; i<20; i++){ code }}

有没有办法告诉gcc允许这个而且只有这个?

或者,有没有办法在我正在使用的特定功能中启用c99模式?就像是

#pragma c99 on 

for(int i=0; i<99; i++)
{
    code
}

#pragma c99 off
Run Code Online (Sandbox Code Playgroud)

c gcc for-loop c99 pragma

7
推荐指数
1
解决办法
4973
查看次数