小编Jan*_*bel的帖子

Lisp的read-eval-print循环与Python的不同之处是什么?

我遇到Richard Stallman的以下声明:

'当你启动一个Lisp系统时,它会进入一个read-eval-print循环.大多数其他语言没有什么可比阅读,没有什么可比得上eval,没有什么比得上印刷.有什么差距不足!"

现在,我在Lisp中做了很少的编程,但我在Python中编写了大量代码,最近在Erlang中编写了一些代码.我的印象是这些语言也提供了read-eval-print循环,但Stallman不同意(至少关于Python):

"在人们告诉我它与Lisp基本相似之后,我浏览了Python的文档.我的结论是,情况并非如此.当你启动Lisp时,它会"读取","eval"和"print",所有这些都在Python中缺失.

Lisp和Python的read-eval-print循环之间真的存在根本的技术差异吗?你能举例说明Lisp REPL易于使用并且在Python中很难做到的事情吗?

lisp python functional-programming read-eval-print-loop

61
推荐指数
4
解决办法
7376
查看次数

有没有办法在TestCase之外使用Python单元测试断言?

我需要创建一个伪辅助类,用于单元测试(注入测试类).有没有办法在这样的类中使用TestCase断言?

我想将断言用于Fake类执行的一些常见检查.就像是:

class FakeFoo(object):

  def do_foo(self, a, b):
    assertNotNull(a)
    ...
Run Code Online (Sandbox Code Playgroud)

python unit-testing

42
推荐指数
1
解决办法
6317
查看次数

用/*开始初始评论的目的!在javascript和css文件中

我注意到javascript或css文件中的初始注释有时以/*开头!解释标记的目的是什么?

例如,jquery.js:

/*! jQuery v1.7.1 jquery.com | jquery.org/license */
Run Code Online (Sandbox Code Playgroud)

bootstrap.css:

/*!
 * Bootstrap v2.0.1
 *
 * Copyright 2012 Twitter, Inc
Run Code Online (Sandbox Code Playgroud)

javascript css

41
推荐指数
1
解决办法
4025
查看次数

Lisp中的空列表是否由cons单元构建?

我试图在JavaScript中模拟类似Lisp的列表(只是一个没有实际原因的练习),但我正在努力弄清楚如何最好地表示一个空列表.

一个空列表只是一个nil值还是存在于cons单元格中?

我可以:

(car '())
NIL
(cdr '())
NIL
Run Code Online (Sandbox Code Playgroud)

但是肯定不能列出空列表(cons nil nil),因为它与存储单个列表的列表无法区分nil.它需要存储一些其他特殊价值.

另一方面,如果没有从缺陷单元构建空列表,则似乎不可能具有一致的高级接口以将单个值附加到现有列表.功能如下:

(defun append-value (list value) ...
Run Code Online (Sandbox Code Playgroud)

会修改它的参数,但只有它不是一个空列表,这看起来很难看.

lisp null cons

11
推荐指数
2
解决办法
6422
查看次数

Udacity Web Python解释器如何工作?

Udacity为学生提供了一个Web编辑器来输入Python程序.编辑器识别Python关键字和内置函数,并允许运行程序.你知道这项技术是如何运作的吗?程序是提交给后端并由标准Python解释器执行还是基于JavaScript的Python解释器?编辑器是否只是持有Python关键字和内置函数的静态列表,还是与标准或基于JavaScript的Python交互以获取这些?

javascript python

10
推荐指数
2
解决办法
1834
查看次数

管理本地配置文件的git存储库的有效方法

我保存我的配置文件(~/.bashrc,~/.emacs,~/emacs在git的,等等).我配置它的方式只是在home目录中添加一个git存储库.

我发现这种方法存在一些问题:

  • git gui 需要永远,因为它递归扫描整个家庭目录.
  • 我有时不小心将文件添加到应该转到新repo的配置仓库中(我创建了一个新项目,比如说~/projects/foo,忘记它还没有初始化git repo,并git add bar.xyzfoo目录中执行.这导致文件正在添加到配置repo).

我不确定将git存储库嵌套在已经有git存储库的目录下是明智的,尽管我还没有遇到任何基本问题.

有没有更好的方法,或者这是人们在git中存储本地配置文件的标准方法?

git config

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

Apache 是否允许根据子请求的结果授权 HTTP 请求?

我正在寻找相当于nginx http auth 请求模块但用于 Apache。

对于每个传入的 HTTP 请求,该模块向身份验证/授权后端发送一个子请求。auth 请求携带原始请求的路径和所有标头。根据身份验证请求的结果,允许原始请求(HTTP 代码 200)、拒绝(HTTP 代码 403)或请求登录(HTTP 代码 401)。这种通用机制允许构建真正灵活的身份验证和授权方案。

在 Apache 中可能有这样的事情(可能在某些第三方模块的帮助下)?

apache authentication authorization

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

类似于curl的工具,用于wsgi over unix域套接字

是否有命令行工具将请求直接发送到监听unix套接字的wsgi应用程序(django)?

相当于:

curl -X GET http://example.org/index.html

但这会绕过HTTP服务器,并通过wsgi直接与底层应用程序交谈?

django curl wsgi web-applications

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

实现Linux并发原语是否可行,这些原语提供比线程更好的隔离但性能相当?

考虑以下应用程序:一个Web搜索服务器,它在启动时根据从磁盘读取的数据创建一个大的内存中网页索引.初始化后,无法修改内存中索引,并启动多个线程来提供用户查询.假设服务器被编译为本机代码并使用OS线程.

现在,线程模型在线程之间没有隔离.一个错误的线程或任何非线程安全的代码,可以破坏索引或损坏由其分配并在逻辑上属于某个其他线程的内存.这些问题很难检测和调试.

从理论上讲,Linux允许实施更好的隔离.初始化索引后,它占用的内存可以标记为只读.线程可以用共享索引(共享内存)的进程替换,但除了具有单独的堆并且不能相互损坏的进程之外.硬件和操作系统会自动检测到非法操作.不需要互斥锁或其他同步原语.完全消除了与内存相关的数据竞争.

这种模式在实践中是否可行?您是否了解任何可以执行此类操作的真实应用程序?或者也许存在一些使这种模式不切实际的根本困难?您是否认为与传统线程相比,此类方法会带来性能开销?从理论上讲,使用的内存是相同的,但是是否存在一些与实现相关的问题会使事情变慢?

linux concurrency multithreading ipc

6
推荐指数
1
解决办法
274
查看次数

在Gunicorn超时转储Django堆栈跟踪

我正在尝试调试Django应用程序的罕见挂起.到目前为止,我没有找到问题所在,它每天都会在生产中发生一次,而Gunicorn会重新启动该过程,并显示一条消息:

[CRITICAL] WORKER TIMEOUT
Run Code Online (Sandbox Code Playgroud)

有没有办法配置Django或Gunicorn来转储重新启动的进程的堆栈跟踪?

django gunicorn

5
推荐指数
2
解决办法
1516
查看次数