我正在尝试在Nginx上设置SSL.它不起作用,我在错误日志中收到以下错误,这是从编译nginx的OpenSSL库中传递出来的.我不知道那个库是什么,但它是nginx的0.8.54版本,我在Ubuntu Linux上使用apt-get安装它.
2012/02/21 07:06:33 [emerg] 4071#0:
SSL_CTX_use_PrivateKey_file("/exequias/certs/exequias.com.key") failed (SSL:
error:0906406D:PEM routines:PEM_def_callback:problems getting password error:
0906A068:PEM routines:PEM_do_header:bad password read error:140B0009:SSL routines:
SSL_CTX_use_PrivateKey_file:PEM lib)
Run Code Online (Sandbox Code Playgroud)
我确保私钥文件的文件权限不会阻止nginx读取它.它是一个生成的RSA私钥openssl rsa.
可能导致这种情况的任何想法?
我已经看到了这个问题,但它没有解释我在想什么.
当我第一次从Common Lisp来到Clojure时,我很困惑为什么它将符号和关键字视为单独的类型,但后来我想出来了,现在我觉得这是个好主意.现在我想弄清楚为什么符号和变量是单独的对象.
据我所知,Common Lisp实现通常使用一个结构代表一个"符号",该结构具有1)名称的字符串,2)在函数调用位置计算时指向符号值的指针,3)指向其值时的指针评估外部呼叫位置,以及4)财产清单等.
忽略Lisp-1/Lisp-2的区别,事实仍然是在CL中,"符号"对象直接指向其值.换句话说,CL结合了Clojure在单个对象中称为"符号"和"var"的内容.
在Clojure中,要评估符号,首先必须查找相应的var,然后必须取消引用var.为什么Clojure以这种方式工作?这样的设计可能会带来什么好处?我理解vars有一些特殊属性(它们可以是private,或const,或动态......),但这些属性不能简单地应用于符号本身吗?
在这次演讲中,Chuck Moore(Forth的创始人)提出了一些非常大胆,全面的主张,例如:
我想弄清楚摩尔先生是否是一个绝对出色的天才或者b)一个疯子.但这是一个主观问题,我不是在寻找这个问题的答案.我正在寻找的是复杂的,现实世界的问题的例子,可以使用Forth在"1000指令或更少"中解决,以及演示如何执行此操作的源代码.一个例子只显示一个真实世界系统中的一个非平凡的部分,但是没有"玩具"代码样本可以在另一个高级语言的5或10行中复制.
如果您在Forth中编写了真实系统,只使用少量源代码,但不能自由地显示源代码(因为它是专有的),我仍然希望听到它.
...也许用可变数据进行命令式编程只是在我脑中钻得太深,但我发现在Clojure中构建数据向量的代码是冗长,笨拙和复杂的.肯定有更好的办法!
在Ruby中,我可能会编写如下代码:
results = []
a_collection.each do |x|
x.nested_collection.each do |y|
next if some_condition_holds
results << y
end
end
Run Code Online (Sandbox Code Playgroud)
在Clojure中,我不知道有什么比使用递归函数更好的方法,可能就像下面的(可怕的)代码:
; NEWBIE ALERT! NEWBIE ALERT!
(loop [results []
remaining a_collection]
(if (empty? remaining)
results
(recur
(loop [results results
nested (nested_collection (first remaining))]
(if (empty? nested)
results
(if (some_condition_holds)
(recur results (rest nested))
(recur (conj results (first nested)) (rest nested)))))
(rest remaining))))
Run Code Online (Sandbox Code Playgroud)
如果没有可变数据和迭代循环,则需要使用递归来构建集合.每个这样的递归函数都需要一个(empty?)保护条款等等.整个事情是如此重复,它让我想要尖叫.
在简单的情况下,map就足够了,但我想的是存在多层嵌套的情况,并且在每个级别,可能存在需要跳过迭代的条件.
在Common Lisp中我可能会使用loop宏,或者mapcan.Clojure不是有类似的mapcan吗?
英特尔优化参考,根据第3.5.1节,建议:
"赞成单微操作指令."
"避免使用复杂指令(例如,输入,离开或循环),这些指令超过4个微操作并需要多个周期才能解码.请使用简单指令序列."
虽然英特尔自己告诉编译器编写者使用解码为少数微操作的指令,但我在他们的任何手册中都找不到任何东西,这解释了每个ASM指令解码的微操作数量!这些信息是否随处可用?(当然,我希望不同代CPU的答案会有所不同.)
Stack Overflow关于do { ... } while(0)宏的使用有很多问题,但这有点不同.我理解为什么do { ... } while(0)用于在宏扩展中包装多行代码.但是我经常看到另一种形式:({ ... }).
该({ })表单的优点是它是一个表达式并且可以具有"返回值".它(主观地)读取也好于do { } while(0).那为什么不总是使用它?do { } while(0)相反,在宏中使用有什么优势?
对不起有争议的标题在这里!
我已经使用Selenium和基于Selenium的库(如Capybara)完成了一些基于浏览器的测试(JS重型网页).让测试套件始终如一地工作一直是一个巨大的痛苦.是的,我知道不是在sleep()这里和那里插入调用,而是应该等待DOM元素变得可见,或者满足其他条件,yadda yadda.这一切都很好,而且确实有所帮助.我认为我做得不对,如果不是......
如果不是时候,在我自己编写Selenium代码之前,当我咨询的公司聘请了一家专门编写Selenium测试套件的公司.他们派了一个据说是Selenium专家的人,他为我们的网络应用程序编写了一个完整的测试套件.我需要告诉你我们实际使用测试套件时发生了什么?
我已经得出结论,像Selenium这样的工具使用的整个方法受到了很大的竞争条件.您有一个测试过程,以及一个通过套接字进行通信的独立浏览器进程.测试过程向浏览器发送查询以找出DOM的状态,并在浏览器继续运行时计算要执行的操作.然后它向浏览器发送单独的消息以模拟点击或按键等.
如果您曾经编写过多线程程序,那么就知道它不起作用.这是一场"检查然后行动"的比赛.如果测试过程可以冻结浏览器中的JS执行,查询其状态,发出模拟的点击/击键,然后解冻浏览器,那么就可以了.(比如使用锁来保护多线程程序的关键部分.)
我能想到绕过竞争条件的唯一方法是用JS编写每个测试用例.当然,这排除了跨多个页面导航的测试用例.您还需要一种在每个测试用例开始时将页面重置为"干净"状态的方法.
有没有人知道用于测试浏览器内JS"应用程序"的工具/方法,它允许像我一样的凡人编写测试套件,这些测试套件一直运行100%而不会撕掉我的所有头发?
(PS.从Selenium的经验中获得的另一个结论:许多免费的jQuery插件都有错误,这些错误在人类使用页面时不会出现,只是因为它们无法像Selenium那样快速点击!)
在我正在进行的一个Web开发项目中,我们需要创建一个页面(实际上是一个自己的迷你应用程序),它将具有交互式"Web 2.0"界面,更像是图形桌面应用程序,而不是典型的Web页面.
我希望使用更高级的语言,可以编译为JS用于客户端逻辑,而不是直接在JS中编程,而ClojureScript是我的首选.
我正在寻找一个可以在ClojureScript中使用的JS GUI库,它支持类似于"桌面"GUI库的编程风格,如Swing,QT,wxWidgets等.它应该允许我创建弹出<div>窗口"窗口",放置小部件,如按钮/标签/等.在其中,将事件处理程序附加到窗口小部件,等等.你知道哪一个会起作用吗?
我只是为传统的Rails应用程序构建测试套件.该simplecov宝石一直是伟大的发现它需要的测试覆盖率应用四角发暗(或者可能是完全没有使用的OK删除).我simplecov只是通过在顶部包含以下内容来调用test/test_helper.rb:
require 'simplecov'
SimpleCov.start('rails')
Run Code Online (Sandbox Code Playgroud)
问题是,这不会检查嵌入在模板中的所有代码.那里有各种各样的垃圾,我确信很多垃圾都可以删除,但如果代码覆盖工具可以指向未使用的位,那将是非常好的.
使用Ruby 1.9 Coverage库进行的一些实验让我相信,如果模板以某种方式预编译为Ruby代码,保存在Ruby源文件中,然后load编辑或require删除,而不是直接加载编译模板,那么它只能完成工作.与eval.或者,可能会破坏ERB在编译过程中向每个模板的每一行添加日志记录语句.
有没有人有任何其他想法如何衡量ERB模板的代码覆盖率?你知道一个可以做到这一点的已经制造的工具吗?(或者我必须成为构建和发布它的人吗?)
git add --patch是我的Git工作流程中不可或缺的一部分.唯一令我恼火的是经常不得不在每次y或之后按Enter键n.有没有办法让Git只用一个y或一个n按键接受一个问题的答案?