zoukankan      html  css  js  c++  java
  • 试用 Portable Allegro Serve

    安装好 Common Lisp 的开发环境后,想试试看 web 开发。

    虽然 Allegro Serve 运行起来更简单,但是要在 Allegro CL 中运行,而后者是个商业软件,暂时我没有购买的打算。退而求其次,只好用 Portable Allegro Serve.

    这个开源代码貌似很久没更新了。下载后,运行出了很多小问题。简要记录如下:

    1. 用 CLisp 来运行的时候,可能下载的 aserve 代码里包含的那些中间文件是由其他 lisp 实现生成的,也可能是 clisp 的早期版本,会报错误提示这些中间文件 out-dated 了。解决的办法很简单,只要将 aserve 代码的子孙目录中所有 .fas 和 .lib 文件全部删掉即可,可以写个简单的脚本来做这个 clean 的工作。删掉后,重新加载时会自动重新生成这些中间文件。这个非常类似于 Python 的 .pyc 文件。
    2. 加载 install.lisp 的时候会报一个函数调用 ipaddr-to-dotted 找不到。这是因为代码里有个地方的调用少写了该函数所在包的前缀。解决办法是,打开 aserve\log.cl, 找到这个函数调用的地方,将函数写法替换为 acl-compat.socket:ipaddr-to-dotted 即可。
    3. 执行 (start :port 8080) 启动服务器的时候,会报错如下:
    4. Evaluation aborted on #<SIMPLE-TYPE-ERROR #x1A2AAEF9>.
      Lisp connection closed unexpectedly: connection broken by remote peer

      首先需要通过 Emacs 里打开 *inferior-lisp* buffer,然后重新加载这些代码来测试。得到一个更为详细的错误:

      *** - FUNCALL: undefined function ACL-COMPAT.MP:MAKE-PROCESS

      可以判断是因为 clisp 不支持多线程造成的问题。

      解决办法:启动 aserve 多提供一个参数如下:

      (start :port 8080 :listeners 0)

  • 相关阅读:
    如何提高PHP执行效率
    PHP MySQL 预处理语句
    CDN拾遗
    Rendering React components to the document body
    模拟select,隐藏下拉列表的几种实现
    前端数据范式化
    其实我们可以少写点if else和switch
    [译]the cost of javascript in 2018(1)
    provisional headers are shown 知多少
    f5到底刷新了点什么,你知道吗
  • 原文地址:https://www.cnblogs.com/RChen/p/2289330.html
Copyright © 2011-2022 走看看