Eclipse + Cusp + drakma 开发环境安装记录

首先按照http://www.ibm.com/developerworks/cn/opensource/os-eclipse-lispcusp/

使用 Cusp Eclipse 插件开发 Lisp 应用程序

的介绍,安装了 Eclipse 和 Cusp 插件。

Eclipse 可以下载 zip 包直接解压在 D:\tools\eclipse\, 版本为:

Eclipse SDK

Version: 3.6.0

Build id: I20100608-0911

Lisp 开发环境相关插件的版本为:

Cusp Plug-in 0.9.390 jasko.tim.lisp.feature.group

Lisp Libraries 1.1.1 jasko.tim.lisp.libs.feature.group

SBCL-Win32 1.0.20 sbcl_win32.feature.group

下面是 Eclipse 安装目录的情况截图:

clip_image001

接着安装 drakma,这是 Common Lisp 下的一个常用的 web client 的实现。网址:

http://weitz.de/drakma/

结果发现在 eclipse 的目录下已经有了:

D:\tools\eclipse\plugins\jasko.tim.lisp.libs_1.1.1\libs\drakma-0.11.5

而 drakma 要成功运行,必须依赖于其他几个库:OpenSSL, USOCKET, CL+SSL ( LispWorks 自带了这些库,可惜我买不起 LispWorks)。

网址: Win32 OpenSSL:

http://www.slproweb.com/products/Win32OpenSSL.html

选择安装了 :

Visual C++ 2008 Redistributables

1.7MB Installer

Win32 OpenSSL v1.0.0d Light

1MB Installer

OpenSSL 安装到了 d:\ OpenSSL-Win32,安装向导中DLL 文件选择的 “copy 到 system32 目录”这个选项。

再安装 USOCKET:

http://www.cliki.net/USOCKET

以及 CL+SSL:

http://common-lisp.net/project/cl-plus-ssl/

这样安装后还没有完,需要设置一些路径,才能利用 ASDF 的 包管理系统在交互式环境中找到这些库。

因为 Windows 下面比较杯具,不支持建立文件的 link. 所以步骤比较繁琐:

首先建立一个唯一的文件夹,相当于给 ASDF 查找所用的注册表。用来存放一些快捷方式,指向各个包的 asd 文件。比如我建立了E:\geek\lisp\asdf-reg.

然后在各个包的目录下找到对应的 asd 文件,建立快捷方式,并将这些快捷方式复制到上面所说的那个全局目录。注意快捷方式的文件名必须和原始文件一样。不能包含 “Shortcut to..” 字样。如图:

clip_image002

接下来,还需要在 lisp 的查找目录中建立一个文件。首先需要知道当前 lisp 的查找路径是什么,在交互环境中输入:

(user-homedir-pathname)

输出如下:

#P"C:\\Documents and Settings\\用户名\\"

Ok. 那么我们在这个目录下建立一个文件 “a.clisprc.lisp”. 文件内容为:

(load "D:\\tools\\eclipse\\plugins\\sbcl_win32_1.0.20\\sbcl\\asdf\\asdf.lisp")

(push "e:\\geek\\lisp\\asdf-reg\\" asdf:*central-registry*)

其中的目录路径都是前面我们所设置的。

再打开一个控制台,执行:

rename a.clisprc.lisp .clisprc.lisp

这样做的原因是,这个文件名本来应该是直接以”.” 开头的,但是 Windows Explorer 里面不允许我直接建立这种名字的文件,所以就先存成另一个名字然后再重命名了。

测试一下在 REPL 中加载这两个包:

(asdf:oos 'asdf:load-op 'cl+ssl)

(asdf:oos 'asdf:load-op 'usocket)

现在我们应该已经设定好了 drakma 了,回到 Lisp 的 REPL 界面,做一些测试:

;; 加载 drakma
(asdf:oos 'asdf:load-op :drakma) 

;; 创建工作包
(defpackage :drakma-user (:use :cl :drakma))

;; 切换到工作包
(in-package :drakma-user)

;; 记录 headers,以便了解详细交互情况
(setq *header-stream* *standard-output*)

;; 测试简单的 get
(http-request "http://cnblogs.com")

如果将 URL 替换为一个图片文件的地址的话,REPL 中会输出图片文件每个字节的内容,可以玩一下。

可以看到成功得到了博客园的首页源代码。

参考:

http://common-lisp.net/project/asdf/

http://weitz.de/drakma/

http://cliki.net/asdf#clispWindows

http://bc.tech.coop/blog/041113.html

http://objectmix.com/lisp/364952-clisp-asdf-windows.html

http://sean-ross.blogspot.com/2007/05/asdf-install-windows.html

http://coding.derkeiler.com/Archive/Lisp/comp.lang.lisp/2006-04/msg00722.html

http://liuyb.wordpress.com/2008/06/09/common-lisp-%E6%9D%82%E8%AE%B0-4-asdf/

http://googies.info/blog/478.html

http://hi.baidu.com/love_for_u/blog/item/010ca9fdd578d80408244d63.html

posted on 2011-07-13 17:17 NeilChen 阅读(...) 评论(...) 编辑 收藏

公告

导航