小编mko*_*lum的帖子

Common Lisp:Hunchentoot和REPL - 当我启动服务器时,我在REPL中得到日志输出,不能再使用REPL了

就像这里的一些问题,我是Lisp的新手.我正在阅读Practical Common Lisp一书,但是稍微看了一下设置一个Web应用程序是多么容易,所以我一直在关注这个教程,以及这里更新版本.

当我到达启动服务器的位置时,我的REPL就会死掉,然后我无法将任何东西推到服务器上*dispatch-table*.

所以基本上,我的代码在REPL中工作得很好,将对象添加到列表中,检索它们等等,然后我启动服务器使用

(setf *web-server* (start (make-instance 'hunchentoot:acceptor :port 8080)))
Run Code Online (Sandbox Code Playgroud)

哪个很好用,我可以访问它http://localhost:8080.但是当我访问它时,日志会打印到REPL,从那时起我无法实际使用REPL.例如,在Adam Petersen的帖子之后,我不能那么做

(push (create-prefix-dispatcher "/retro-games.htm" 'retro-games) *dispatch-table*)
Run Code Online (Sandbox Code Playgroud)

因为REPL没有反应.我尝试从不同的窗口(即从终端的SBCL)启动服务器但是它不知道我所处的上下文 - 它不理解我正在处理的包或我的任何代码.

我使用的是略微非标准的设置; 我在OSX上使用Sublime Text 2和SublimeREPL和SBCL(因为我真的没有进入Emacs和ST2很棒!).我描述我是如何把它一起在这里 -但我真的只张贴的以防万一,我会感到惊讶,如果它是我的设置造成的问题,而不是我失去了一些基本的东西.

无论如何,我知道我可以继续在更像生产的环境中设置hunchentoot,并且已经看到一些详细说明并远程访问REPL的帖子,但是我希望有一些更简单的东西可以解决我的问题.我错过了.

lisp sbcl common-lisp hunchentoot sublimetext2

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

当远程但不是本地时,Socket.io 在 nginx 代理后面回退到轮询(websocket 给出 400)

我使用 nginx 1.4.6 作为 Django 应用程序和使用 socket.io 1.2.1 以及 socketio-jwt 2.3.5 的相关 NodeJS 应用程序的代理

\n\n

在本地,我使用 Vagrant 实例(ubuntu 14.04.1)进行编码,而在远程,我使用专用的 AWS EC2 实例——两者都使用相同的 Vagrantfile 和设置 shell 脚本进行配置,因此它们非常接近至相同。

\n\n

在本地运行时,我的客户端连接到 nginx 服务器,该服务器升级连接并将其传递给 Node.js 下的 socket.io 服务器实现。一切都运转良好。

\n\n

远程地,我记录第一个连接,transport=polling该连接还指示客户端升级到 websocket 传输,然后是第二个请求transport=websockets,然后是第三个请求transport=polling再次记录第三个连接。

\n\n

虽然应用程序仍然有效,但出于多种原因轮询 < websockets,我希望我能找到一种方法来对此进行排序。

\n\n

第二个请求得到答复400 Bad Request。运行我的 Node 应用程序DEBUG=* node index.js给出以下输出:

\n\n
engine intercepting request for path "/socket.io/" +24s\nengine handling "GET" http request "/socket.io/?token=eyJhbGciOiJIUzUxMiIsInR5cCI6IkpXVCJ9.eyJ1c2VybmFtZSI6Im1hcmNlbCIsIm9yaWdfaWF0IjoxNDE4MDU5ODg1LCJ1c2VyX2lkIjozLCJlbWFpbCI6IiIsImV4cCI6MTQxODE0NjI4NX0.2PE0TNRol9G4hby4OzQ-af2e0yjfgFAb-gQJF5tKWRwxWnFLv1NGp3Yo87UaqNaQceMW6KqzMIx2gLcRFnk09A&EIO=3&transport=polling&t=1418062322853-0" +0ms\nengine handshaking client "6YDFOjBfvZ9UyutVAAAB" +1ms\nengine:socket sending packet …
Run Code Online (Sandbox Code Playgroud)

sockets nginx websocket node.js socket.io

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

保持CRUD DRY与Restangular:指令,继承控制器或包装服务?

我对AngularJS比较陌生,我一直在尝试各种方法来使用Restangular保持我的AngularJS CRUD方法DRY,所以我很感激社区的任何建议.

我有很多API端点,每个我都希望显示一个项目列表,允许选择每个项目(以显示该项目的详细信息)并删除,以及向列表中添加项目.

我到目前为止尝试过的方法都是非常非干的,没有适当地挂钩到范围内,或者有点hacky ......

包裹Restangular

将Restangular包装到服务中,并使用addElementTransformer在返回的集合上设置其他方法似乎是一种不错的方法; 在selectadd方法清洁,从模板很容易实现,而当承诺解决自动更新列表.但是,因为该delete方法实际上是从元素范围(集合的子集)中调用的,所以在删除后更新列表需要在服务中注入一个非常可疑的$ scope - 我能想到的最好的方法如下:

(注意:通过仅说明单个API端点/控制器/模板,我使示例更容易阅读)

应用程序/ JS/services.js

function ListTransformer(collection) {
    collection.selected = {}
    collection.assignedTo = {}
    collection.assignedName = ""

    collection.add = function(item) {
        collection.post(item)
        .then(function(response){
            collection.push(response);
        })
    };
    collection.delete = function(item, scope) {
        item.remove()
        .then(function(response){
            console.log(item)
            console.log(collection)
            collection.assignedTo[collection.assignedName] = _.without(collection, item);
        })
    };
    collection.select = function(item) {
        this.selected = item;
    };
    collection.assignTo = function(scope, name) {
        scope[name] = collection;
        collection.assignedTo = scope
        collection.assignedName = name
    };
    return …
Run Code Online (Sandbox Code Playgroud)

javascript crud angularjs restangular

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