-
Recent Posts
Recent Comments
- rainywh269 on 就是她们,LISP妹纸
- jackchu on 如何写一个冷博客
- Albert Lee on Common Lisp Condition System手记
- yugi on Common Lisp Condition System手记
- Albert Lee on About
Archives
Categories
Meta
Author Archives: Albert Lee
cl-gearman 开坑
坑坐标: http://albertlee.github.com/cl-gearman/ 刚起了项目架子,还没有实质内容。今天翻译gearman的协议文档,完成了4成了: https://github.com/albertlee/cl-gearman/blob/master/doc/protocol_cn.txt
Posted in Uncategorized
Leave a comment
Java与Clojure之间的互相调用
目标:在Java中调用Clojure 程序,在clojure程序中再反过来Java的方法。 Clojure嵌入Java是相当简单的: 1. 把 clojure.jar 加入到Java工程的系统调用路径中。 2. 在java中使用 clojure.lang [RT, Compiler, Var] 调用clojure
Posted in Uncategorized
Leave a comment
赶个时髦,在Github上建一个repo 来收集 clojure的代码段
地址: https://github.com/albertlee/clj-tips 主要收集自己写的一些Clojure代码段,留做备忘。
Posted in Uncategorized
Leave a comment
Clojure 代码段:简单的模板替换
一个小需求:一个SQL语句的字符串,需要替换其中几个变量,可以用模板模块来实现,不过我不想为了这点小功能劳师动众,因此自己造了个轮子,用一句reduce 搞定,代码如下:
在Clojure中使用Quartz 定时任务
废话不多说,直接上代码: (Update: 下面这段代码太丑了,后来又优化的比较优雅了,现在懒的贴了)
Posted in Uncategorized
Leave a comment
老土了,原来在Mac上SBCL是支持多线程的
一直以为SBCL在MacOSX上不支持多线程,导致自己痛苦了很久,这都是不读书惹得祸阿! 昨天在上海LispMeetup上,经黄涧石同学一语点醒梦中人,才发现原来SBCL是支持多线程的,而且还有很多其他的编译选项! 具体说来就是在SBCL源代码目录下,写一个 customize-target-features.lisp 文件,在其中将需要打开或关闭的特性写入,具体的特性列表在 base-target-features.lisp-expr 这个文件中有介绍。
Posted in Uncategorized
Leave a comment
Common Lisp Condition System手记
Condition System 是Common Lisp中很独特的东西,不单单用来做异常处理,还可以用来实现一些函数控制传递。 Condition Sys 与通常的 try-catch 结构相比,更加的通用更加灵活。 Condition sys的组织与开发过程很相关,通常在开发时,首先写出一段工作代码,然后再考虑如何处理异常情况。 首先写出工作代码,在这段工作代码中可能会遇到各种各样的异常(condition)情况,我们只要抛出它们即可。先不去考虑如何处理它们。 之后,我们可以提供多种处理方式,既 restart ,它们可以让出现状况的代码原地满血复活。 有了多种处理方式后,应该选择哪一个呢?这就是恢复策略问题,可以在更靠后(更外层)代码中进行处理。
Posted in Uncategorized
2 Comments
工具箱里又添了一样 PyClips
PyClips 简单说就是把Clips的源代码包装了一层,方便在Python中进行交互调用,这里是文档: PyClips手册 使用非常简单,Clips独立于Python进程之外,在Python中通过clips库来交互: >>> import clips >>> clips.Reset() >>> clips.Assert(“(duck)”) >>> clips.BuildRule(“duck-rule”, “(duck)”, “(assert (quack))”, “the Duck Rule”) >>> clips.PrintRules() MAIN: duck-rule >>> clips.PrintAgenda() MAIN: 0 duck-rule: f-1 For a total of 1 activation. >>> clips.PrintFacts() f-0 (initial-fact) f-1 … Continue reading
Posted in Uncategorized
1 Comment
你该有多无聊~~
通宵似乎开发效率不太高。不知不觉天亮了,无聊中。 刚刚搜erlang,结果在erlang-china上看到 Arduino 暗示的另一种可能 。想想自己手头上已经积累了四五块Arduino芯片,还有一堆的乱七八糟的元件。但一直没时间深入的去开始个项目。毕竟,最近小米手机实在是太火了⋯⋯ 这些电子元件都是小时候的梦想阿⋯⋯唉,少先队员的时代。 那么如果无聊起来,该搞些什么无聊的东西出来呢? 1. 把家里那台电子体重秤接上网,自动发微博上~还要能生成曲线图,还要能自动@给那谁 (这种减肥方式不靠谱) 2. 对于整天见不到太阳的程序员来说,在电脑旁边接个三自由度机械手云台,实时指向太阳。 3. 搞一堆导线缠到管子上,做个倒计时的定时期,几个鲜红的数字跳阿跳 4. 把小车改造改造,到楼后面的公园里去追那些野猫 5. 拿那块三轴加速芯片绑头上,用摇头和点头来输入Yes/No 6. 接温度感应,自动控制usb风扇
Posted in Uncategorized
3 Comments
市场帅哥的烦恼–暨Prolog的一个应用实例
由于我一向乐于助人并总是可以解决些稀奇古怪的问题,因此在非技术人员眼中我就是神秘的攻城师。 刚才市场帅哥又带来了一个古怪的需求:他们要生成一堆“靓号”。 要说咱中国人似乎对号码有特别的偏好,啥8888、1688之类的。我们的一个产品,每个用户都有一个号码,我们的市场帅哥想看看有哪些“靓号”,而如何定义靓号呢?市场的同志们自有一套私企古怪的规则,我用程序员的眼光真的无法理解其中的道理。 他们给出了一个数字范围,并列出了多条规则,比如:有四个连续的相同数字、四个连续的递增或递减的数字等等。 需要根据每一种规则生成出所有的“靓号”。 收到这个需求后,我心中一动,Prolog兄,终于有你的用武之地了,我等这天很久了…… 这里拿其中一条规则举个例子: 长度为7位,首位为4,含2组3位连续顺数的号,例如:4123123 直接上源代码: 生成结果部分: 4012012 4123123 4210210 4234234 4321321 。。。。 其他各条变态的规则都是直觉的翻译,虽然看上去有点长,但实际上都是复制粘贴,对于这种一次性的需求,就没那么讲究了,几乎没动啥脑子,这个需求如果用其他的方式写还真有点头大的。我的原则就是合适的工具解决合适的问题,绝对不用锤子干锯子的活。