12 albert_lee

尚未进行身份认证

暂无相关描述

等级
TA的排名 2w+

Common Lisp中使用 Postgres 数据库诡异问题

<br/>之前那个分布编译发布的程序,用的是SBCL+CLSQL+Mysql,使用基本正常。这次的统计后端,数据库换用了Postgres,继续使用clsql连接,结果遇到一个非常抓狂的问题:<br/> <br/>在clsql连接上postgres后,可以正常查询,但是几分钟后,大概是数据库连接断开或者超时了,这时如果再创建一个连接,就会出现一个诡异的现象:sbcl内存占用在不断的增长,知道吃掉所有的系统内存,整个机器卡死。<br/> <br/>我尝试了clsql的各种连接

2011-04-18 08:33:00

Common Lisp中使用字符串动态调用函数

<br/>应用场景:一个统计查询的后端程序,根据查询名称字符串分别调用相应的处理函数。<br/> <br/>一般的处理方法,可以用一个全局的注册表,将名称字符串与函数名对应起来。但是,lisp程序员是很懒惰的,既然lisp环境本身已经提供了名称注册的机制,为什么还要自己写一套呢?事实上,Lisp环境本身的核心就在于namespace。<br/> <br/>简单的说解决办法如下:<br/> <br/> <br/>(defunq-hello()(formatt"q-hel

2011-04-14 11:52:00

Clozure CL中使用 hunchentoot 及中文编码的小技巧

<br/>由于ClozureCL的文档太糟糕,而且与slime及cl-fad之间有些不兼容,在加载hunchentoot及使用中文时会有些问题。这里提供一个绕过的办法:<br/> <br/>1.ccl::delete-directory与fad的同名函数冲突,因此先执行:<br/> <br/>(setf*default-file-character-encoding*:utf-8)<br/> <br/>2.中文编码,先执行下面的语句,设置lisp源文件的编码<br/

2011-02-26 15:39:00

在Common Lisp中使用 List Comprehension

*(ql:quickload"incf-cl")Toload"incf-cl":Load1ASDFsystem:cl-ppcreInstall1Quicklisprelease:incf-cl;Fetching#;14.63KB==================================================14,981bytesin0.01seconds(1044.99KB/sec);L

2011-02-18 14:23:00

Lisp的特性 (评论发不出,只好写一篇新的)

本来是给Lisp的给力特性这篇文章的评论,奈何csdn的blog上无法提交,只好新发一篇:目前我不知道到底与C++的宏(其实也是一样的编译期展开),还有比普通函数的优势在哪。(原谅我才学Lisp没有几天)====Lisp的Macro与 C++中Macro的区别: (原谅我N多年没用过C++) Lisp的语言本身就是S表达式,Lisp的Macro直接操作列表,可以应用全部的Lisp语法工具来将输入列表转换成目标的程序列表。相比较来说C++的Macro更多只是替换。表达

2011-02-18 12:01:00

一个实际的Lisp项目开发心得

在万家灯火,元宵节的烟花绚烂绽放的时刻,checkin了代码,随手统计了下代码行,恰好1000行整(包括空行)。冥冥中自有天意?这个项目是一个分布编译打包发布程序,需要控制多台远端的服务器进行编译,编译过程有很多步骤,还要根据需要增删build的步骤即参数。最早的程序是用Python写的,只在一台机器上作,后来随着项目越来越复杂,打包编译花的时间越来越多。于是决定重写,那谁说重写代码是创业公司自杀行为来着?简直扯淡。我决定使用CommonLisp来重写它。经过一周多时间,基本完成。这一千行代码作的事

2011-02-17 20:56:00

Lisp应用的一点心得

<br/>注:最重要的是去用它,Lisp不是学出来的,是用出来的。<br/>这里总结一些我对Lisp实用的心得,与我最初的观点不同,相信也不是最终的正确观点,只是阶段性的总结。<br/><br/>0。Lisp一点都不怪异,也不需要了解函数式编程之类的,也不需要递归,也不需要研究人工智能。<br/>1.把Lisp当成Python那样,去用。<br/>2.Emacs+Slime不只是工具,更是一种开发流程,编码-运行-测试-改进迭代最快速。<br/>

2011-01-30 01:21:00

关于Lisp的另一则小故事:Lisp在Google的命运

<br/>     之前曾经提到过的一个远程调试“深空任务“中的飞行器上Lisp代码的故事,我找到出处了,http://www.flownet.com/gat/jpl-lisp.html  JPL就是推进动力实验室,如果没记错的话,好像是钱学森参与创建的。<br/> <br/>    作者在文中提到了他离开JPL,去Google工作的一段经历,他想去推广Lisp的应用,找到主管技术的VP,对话如下:<br/> Me:I'dliketotalktoyouaboutsomet

2011-01-17 12:47:00

kindle3 -- 第二天: 《浅薄》《经济史的趣味》

<br/>《浅薄》一书所讲的内容,恰好与我遇到的实际问题完全相符:我发现在网络越来越方便,信息越来越多的时候,我已经难以专注的阅读了。信息变得零碎,在各个关联的链接中跳来跳去,超过3分钟不检查微博或邮件就开始心痒痒。这是坏事么?或者说这会摧毁“深入”思考的能力么?现在说好说坏还很难讲,但这就是正在发生的,人类的未来难道就是变成一个超级网络中的“思考电池”么?想起《Matrix》里的人体电池了。<br/> <br/>《经济史的趣味》由一堆短篇的文章组成,刚刚读完序。

2011-01-12 00:54:00

入手Kindle3 , 开始阅读

说得好像自己不读书似的。不过说实话,有了笔记本、ipad、能随时上网的手机,反而读书的时间越来越少了。大量的时间都消磨在无意义的网络冲浪和不停的刷新中了。下狠心,入手了kindle,准备将ipad扔进垃圾筒。今天入手第一天,阅读记录一下:k3_1 Jan-10:《BeatingtheAverages》, ,在英语那篇知道了罗赛塔石碑软件,是一个“获取语言能力”的好软件,果断入手。儿童要挖掘创造力而不是去背啥唐诗,小孩的记忆力不如成年人,谁还能记得3岁前的事?!啥双语幼儿园都是摧残儿童创造力的

2011-01-11 01:55:00

用Lisp写网站程序的备忘

Commonlisp开发web网页的最小程序,显示中文的设置。

2010-11-07 20:23:00

Discuz 论坛源代码Z-turn实录

预先说明:本人是非程序员。本文依据自己的摸索,都是些Dirty的做法,与Discuz标准的开发方式不一致(因为我也不知道标准做法是什么)。请不要被我误导。     最近要给公司一个小论坛进行改版,论坛之前是我用Discuz搭的,很简单,只有一个版块。这次改版,主要目的是增加几个版块,同时在帖子列表页,要能显示每个帖子的摘要内容。需求看上去很简单,但当我开始操刀折腾Discuz的代码时,顿时让我这个PHP菜鸟有如坠入蜘蛛网的感觉。    虽然Discuz有模板与控制器的划分,但我不得不说,它的代码中积累的

2010-10-25 16:08:00

梦寐以求的Quicklisp来了!

<br/>Quicklisp这就是我梦想中的工具:极其方便的Lisp库管理工具。<br/>在一周前quicklisp发布了公开的beta版本,今天试用下,非常爽。<br/> <br/>简单说,quicklisp就是一个类似Linux上面apt-get的库安装工具,只需要一条命令就能安装好一个库,同时会自己搞定依赖库。更重要的一点是它维护了一个300多个软件包的库。<br/> <br/>安装很简单,下载:<br/>wgethttp://beta.quicklisp.org/quic

2010-10-20 10:13:00

发现一个非常好用的双向备份同步工具unison

<br/>Unison<br/> <br/>居然是用Ocaml开发的,不错。<br/>用它同步我的wiki和代码到服务器上,很方便。

2010-08-23 17:41:00

系统运行中进行调试修改的重要性--一个小故事

<br/>当一个系统已经在运行的时候,如果发现了一个bug怎么办? <br/>好办,改了代码,扔上服务器重启服务呗。<br/>可是,如果这个服务不能停呢?这里有一个实际的例子:<br/> <br/>1998年时,NASA在执行深空1号任务时,发现飞行器上一段控制实验用的lisp代码有一个竞争条件(racecondition)的bug,在地面测试的时候没有捕获。此时已经距离发射一年半了,飞行器在1亿英里之外的太空中。而这个程序可以在运行的时候,允许调试,并有一个REPL环境(Read-E

2010-08-12 18:23:00

拿到第8期程序员杂志了,上面有我的Haskell文章

<br/>     因为之前和编辑已经多次校对过了,所以看到自己的文章出现在杂志上并没有什么激动的感觉。而且,最近自己的工作内容也发生了变化,并不是一个纯粹的程序员了。比以前忙多了,很少时间再关注开发。不过也好,我可以把程序当作一种爱好,当作日常工作的工具。我可以更纯粹的用我喜欢顺手的东西了。<br/>现在,我经常写上一两行shell或者python脚本,把电脑当成自己的机器人,替我干一些重复性的工作。比如抓取整个论坛,统计些用户发言之类的。<br/> <br/>     在这期杂志上还看到了网

2010-08-10 16:38:00

小工具 cl-launch , 创建 lisp 执行脚本

<br/>Linux下的一个小工具,可以把lisp代码直接变成shell脚本。其实就是封装了一下代码,调用解释器。不过确实方便多了。<br/> <br/>使用方式:<br/> <br/>直接执行一个表达式:<br/> <br/>$cl-launch'(+35)'<br/>8<br/> <br/>$cl-launch--filehello.lisp<br/><br/>120<br/> <br/>执行一个文件<br/> <br/>把一个lisp源文件

2010-07-28 21:37:00

今天是我作为专职程序员的最后一天

<br/>从此,做一个幸福的人,<br/>砍柴牧马<br/>我有一所房子,<br/>面朝大海,春暖花开!<br/><br/>

2010-07-19 15:31:00

iPad 应用感受

<br/>今天终于入手了iPad,我买的是32Gwifi版本。总体感觉:超值,震撼。<br/> <br/>老乔推出iPad,曾经被讥笑为吃了蘑菇的itouch(加大版),但恰恰是这个“加大”使一切都翻天覆地了:<br/> <br/>1。网页浏览体验,Safari。正常尺寸浏览网页,与itouch上完全不一样。<br/>2。iBooks,iPad的ibooks一出,传统的电子书阅读器会受到极大的冲击,如果不能从价格上狠下功夫,后期很难了。<br/>3。强大的第三方应用

2010-07-03 21:47:00

关于“消重”问题的解决,从管道到并行

消重,简单说就是把一个序列中重复的元素消除掉,输出的结果中每个元素都是唯一的。比如: [1,2,1,3,2] 经过消重后,结果是:[1,2,3] 看上去这个问题好像非常简单无聊,但是实际工作中却经常能遇到,比如对web访问日志的来源ip,或者访问页面进行消重统计,等等。 今天在一个Python讨论群里面,有个人提了一个问题:有上亿甚至几十亿个的数字,如何得到消重后的

2010-05-25 16:02:00

查看更多

勋章 我的勋章
    暂无奖章