小编Ina*_*thi的帖子

获取每个列表的最后元素

我们说我有一个清单 ((3 4 5) (d e f) (h i j) (5 5 5 5))

如何以这样的方式获取每个列表的最后一个元素(5 fj 5)?

lisp element

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

在Racket中POST/GET绑定

是否有内置的方法来获取Racket中的POST/GET参数?extract-binding和朋友们做我想做的事情,但是关于与文件上传有关的潜在安全风险的结论是可怕的

因此,我们建议不要使用它们,但它们是为了与旧代码兼容而提供的.

我能想到的最好的是(提前原谅我)

(bytes->string/utf-8 (binding:form-value (bindings-assq (string->bytes/utf-8 "[field_name_here]") (request-bindings/raw req))))
Run Code Online (Sandbox Code Playgroud)

但这似乎不必要地复杂化(似乎它会受到Bindings部分中记录的一些相同错误的影响).

在给定字段名称和请求的情况下,是否有一个或多或少的标准,无错误的方法来获取POST/GET变量的值?或者更好的是,将POST/GET值的集合作为列表/散列/列表返回的方法是什么?除了其中任何一个,是否有一个函数可以做同样的事情,但只有POST变量,忽略GET?

post-parameter racket http-request

5
推荐指数
1
解决办法
1111
查看次数

Hunchentoot/cl-页面组成

Hunchentoot/cl-who Page Composition

我正试图在hunchentoot中拼几页作为实验,我遇到了意想不到的墙.作为一个例子,我有以下模板宏.

(defmacro page-template ((&key title) &body body)
  `(with-html-output-to-string 
    (*standard-output* nil :prologue t :indent t)
    (:html :xmlns "http://www.w3.org/1999/xhtml" :xml\:lang "en" :lang "en"
           (:head (:meta :http-equiv "Content-Type" :content "text/html;charset=utf-8")
                  (:title ,(format nil "~@[~A - ~]Test Site" title)))
           (:body ,@body))))

现在,当我有一个纯文本页面,或一个填充html文字像

(define-easy-handler (test-page :uri "/") ()
  (page-template (:title "Splash Page") (:p "Testing testing")))

一切都很好.页面输出正确,我可以立即看到我的代码的努力.但是,当我有一个由冗余元素组成的页面时,它并不那么简单.例如,假设我有一个页面,无论出于什么原因我想要显示三个RSS新闻源.这是一个足够复杂的组件,我想将它抽象出来,所以对我来说,我应该能够做类似的事情

(define-easy-handler (test-feed :uri "/feeds") ()
  (page-template (:title "Splash Page") 
                 (publish-newsfeed "http://nf-one.html")
                 (publish-newsfeed "http://nf-two.html")
                 (publish-newsfeed "http://nf-three.html")))


(defmacro publish-newsfeed (url &optional (item-limit 5))
  (flet ((get-text (s-tree node-path) (car …

common-lisp hunchentoot

5
推荐指数
1
解决办法
1321
查看次数

Haskell卷曲帮助

好吧,我正试图在Haskell中围绕IO,我想我会写一个处理网页的小应用程序来做它.我越来越绊倒在是片段(与道歉bobince,虽然是公平的,我不试图解析此HTML,只提取一个或两个值):

titleFromUrl url = do
    (_, page) <- curlGetString url [CurlTimeout 60]   
    matchRegex (mkRegexWithOpts "<title>(.*?)</title>" False True) page
Run Code Online (Sandbox Code Playgroud)

上面应该采用字符串形式的URL,扫描它指向的页面matchRegex,然后返回Nothing或者Just [a],a匹配(可能是多行)字符串.令人沮丧的是,当我尝试做的时候

Prelude> (_, page) <- curlGetString url [CurlTimeout 60]
Prelude> matchRegex (mkRegexWithOpts "<title>(.*?)</title>" False True) page
Run Code Online (Sandbox Code Playgroud)

在翻译中,它正是我想要的.当我尝试加载相同的表达式,并imports从文件关联时,它给我一个类型推断错误,说明它couldn't match expected type 'IO b' against inferred type 'Maybe [String]'.这告诉我,我错过了一些小而基本的东西,但我无法弄清楚是什么.我已经尝试过显式地转换page为字符串,但这只是迷信编程(并且它在任何情况下都不起作用).

任何提示?

curl haskell types type-conversion

5
推荐指数
1
解决办法
869
查看次数

Emacs Python 自动完成

编辑:

我刚刚意识到我正在使用 auto-complete.el 0.2 版本。我想我需要使用 auto-complete.el 版本 0.1。我可以从哪里下载它?我只能在 Google 上找到较新的版本。


我正在尝试在 Emacs 中为 Python 设置自动完成功能。

我使用的是 Ubuntu LTS 版本,我安装了 Python 和 Emacs。

这是我的 .emacs 文件:

(setq-default indent-tabs-mode nil) ; always replace tabs with spaces
(setq-default tab-width 4) ; set tab width to 4 for all buffers

(add-to-list 'load-path "~/.emacs.d/vendor")
(progn (cd "~/.emacs.d/vendor")
       (normal-top-level-add-subdirs-to-load-path))

(require 'python)
(require 'auto-complete)
(require 'yasnippet)

(autoload 'python-mode "python-mode" "Python Mode." t)
(add-to-list 'auto-mode-alist '("\\.py\\'" . python-mode))
(add-to-list 'interpreter-mode-alist '("python" . python-mode))

;; Initialize Pymacs                                                                                           
(autoload 'pymacs-apply …
Run Code Online (Sandbox Code Playgroud)

python django emacs ubuntu

5
推荐指数
1
解决办法
8287
查看次数

Python 中的 MongoDB 连接管理

这样做更好吗

from pymongo import Connection

conn = Connection()
db = conn.db_name

def contrivedExample(firstName)
    global db
    return db.people.find_one({'first-name': firstName})
Run Code Online (Sandbox Code Playgroud)

或者

from pymongo import Connection

def contrivedExample(firstName):
    with Connection() as conn:
        return conn.db_name.people.find_one({'first-name': firstName})
Run Code Online (Sandbox Code Playgroud)

各种基本的 MongoDB 教程(无论是否面向 Python)都暗示应用程序应该在启动时连接一次;真的是这样吗?对于非平凡的、长时间运行的应用程序,答案是否会改变?答案是否特别针对 Web 应用程序而改变?单连接与每个请求连接的优缺点是什么?

假设“一旦启动”是正确的答案,在 中启动该连接是否合适__init__.py

python database-connection mongodb

5
推荐指数
1
解决办法
2525
查看次数

Happstack显示读取文件

这是一个Haskell新问题,可能与IO()monad有关.

我在一个Happstack.Server为文件上传生成响应的程序中有一个函数.

postFile = do methodM POST
              decodeBody filePolicy
              (tmp, name, meta) <- lookFile "upload"
              ok $ concat ["A file! ", tmp, " || ", name, " || ", show meta]
Run Code Online (Sandbox Code Playgroud)

这很好.现在,我希望它显示上传文件的内容以及本地临时名称,原始名称和内容类型元数据.我假设因为这一切都发生在一个do街区,我可以

postFile = do methodM POST
              decodeBody filePolicy
              (tmp, name, meta) <- lookFile "upload"
              contents <- readFile tmp
              ok $ concat ["A file! ", tmp, " || ", name, " || ", show meta, "\n\n", contents]
Run Code Online (Sandbox Code Playgroud)

但这给我带来了一连串的错误,这似乎告诉我一些事情随着decodeBody电话而来.

...
/home/inaimathi/projects/happstack-tutorial/parameters.hs:23:15:
    No instance …
Run Code Online (Sandbox Code Playgroud)

file-io haskell happstack

5
推荐指数
1
解决办法
507
查看次数

ARM上的Tornado socket.error

我正在尝试使用Tornado服务器在RasPi上运行一个小的python webapp,但每当我尝试启动它时,我都会收到错误

Traceback (most recent call last):
  File "main.py", line 78, in <module>
    application.listen(8080)
  File "/usr/local/lib/python2.7/dist-packages/tornado-3.0.1-py2.7.egg/tornado/web.py", line 1343, in listen
    server.listen(port, address)
  File "/usr/local/lib/python2.7/dist-packages/tornado-3.0.1-py2.7.egg/tornado/tcpserver.py", line 113, in listen
    sockets = bind_sockets(port, address=address)
  File "/usr/local/lib/python2.7/dist-packages/tornado-3.0.1-py2.7.egg/tornado/netutil.py", line 69, in bind_sockets
    sock = socket.socket(af, socktype, proto)
  File "/usr/lib/python2.7/socket.py", line 187, in __init__
    _sock = _realsocket(family, type, proto)
socket.error: [Errno 97] Address family not supported by protocol
Run Code Online (Sandbox Code Playgroud)

我有理由相信我做的一切都很合适

  • 我试图收听的端口没有使用
  • 我没有指定地址,但似乎我不需要,因为Tornado"hello world"也没有(该演示应用程序本身也不运行;它使用不同的行号给出完全相同的错误)
  • 相同的应用程序似乎在x86和x86_64机器上运行良好

是否需要在ARM上进行不同的调用,或者这是龙卷风/ socket.py中的某个错误?有可用的解决方法吗?

由于它似乎是相关的,Pi正在从这个页面运行最新的Raspbian图像(几天前从第二个镜像下载,所以不再最新版本了).我目前正在尝试使用旧版本,如果不起作用,我会尝试最新版本.

python tornado raspberry-pi

4
推荐指数
1
解决办法
2668
查看次数

Windows 7上的SLIME

我正试图在Windows 7机器上安装SLIME,但是运行M-x slime会给我错误

Spawning child process: invalid argument
Run Code Online (Sandbox Code Playgroud)

inferior-lisp-program设置为"C:\\Program Files\\ccl\\wx86cl.exe"(事实上​​是正确的,并且运行(comint-run inferior-lisp-program)给了我一个工作的CCL提示),并且slime目录已添加到我的'load-path.

我究竟做错了什么?

编辑:尝试通过Windows版本的lispbox加载相同的环境,它运行SLIME罚款.我宁愿不使用那个,因为它包装了比我想要的旧Emacs,CCL和SLIME.

emacs common-lisp slime windows-7

4
推荐指数
1
解决办法
1984
查看次数

左对齐零填充

format有零填充数字的指令.

cl-user> (format nil "~12,'0d" 27)
"000000000027"
Run Code Online (Sandbox Code Playgroud)

并且有一个类似的指令,用于在填充字符串时对齐字符串

cl-user> (format nil "~12@<~d~>" 27)
"27          "
Run Code Online (Sandbox Code Playgroud)

有办法做到这两点吗?那是:

cl-user> (format nil "~12,something,d" 27)
"270000000000"
Run Code Online (Sandbox Code Playgroud)

天真"~12,'0@<~d~>"似乎没有做我想要的.

cl-user> (format nil "~12,'0@<~d~>" 27)
"27          "
Run Code Online (Sandbox Code Playgroud)

common-lisp string-formatting

4
推荐指数
2
解决办法
958
查看次数