自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

  • 博客(52)
  • 收藏
  • 关注

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

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

2011-04-18 08:33:00 3789 1

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

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

2011-04-14 11:52:00 4455 2

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

<br />由于 Clozure CL 的文档太糟糕,而且与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 3430 1

原创 在Common Lisp中使用 List Comprehension

* (ql:quickload "incf-cl")To load "incf-cl": Load 1 ASDF system: cl-ppcre Install 1 Quicklisp release: incf-cl; Fetching #; 14.63KB==================================================14,981 bytes in 0.01 seconds (1044.99KB/sec); L

2011-02-18 14:23:00 2539 2

原创 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 3567

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

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

2011-02-17 20:56:00 11935 5

原创 Lisp应用的一点心得

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

2011-01-30 01:21:00 5227 7

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

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

2011-01-17 12:47:00 4620 1

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

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

2011-01-12 00:54:00 1982 4

原创 入手Kindle3 , 开始阅读

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

2011-01-11 01:55:00 2232 2

原创 用Lisp写网站程序的备忘

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

2010-11-07 20:23:00 4587 1

原创 Discuz 论坛源代码Z-turn实录

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

2010-10-25 16:08:00 3283

原创 梦寐以求的Quicklisp来了!

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

2010-10-20 10:13:00 6246 3

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

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

2010-08-23 17:41:00 1387 1

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

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

2010-08-12 18:23:00 1526 1

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

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

2010-08-10 16:38:00 2087 1

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

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

2010-07-28 21:37:00 1872

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

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

2010-07-19 15:31:00 2291 1

原创 iPad 应用感受

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

2010-07-03 21:47:00 1565 4

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

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

2010-05-25 16:02:00 1509 4

原创 多学几门门语言很正常

先转一个网上的留言: 各位前辈,  小弟想申请某校计算机专业,传闻该校剧难毕业。今天进到CS主页一看,果然吓一跳,人家都是2个学期编程课学习一门JAVA,该校却是一个学期一门编程课学习“JAVA,SML,PROLOG”三门语言,随后的软件工程后续课程还要学习 ADA 95,HASKELL,这些名字我都是今天才第一次听说。  请问各位前辈,花这么多精力学习这些逻辑编程,函数编程语言值

2010-05-21 14:25:00 2698 3

原创 侃侃自定义语法DSL的实现

之前一篇blog文章: 《侃侃那些美丽的编程语言(上)》里面谈到了 Smalltalk的自定义语法,感觉意犹未尽,特地展开谈一下。 上文中已经说过了,Smalltalk 的语法很简单,只有基本的三四条:一切都是对象,一切都是对象间的消息。从这一个基础出发,可以得到这样的结论:一切语法都是对象和消息。我们能自定义对象和对象的方法,因此,我们可以自己定义语法。 这一切成为可能的关键是:

2010-05-17 16:45:00 3211 7

原创 对《侃侃那些美丽的编程语言(上)》的集中回复

绝对是我的博客中里程碑般的事件阿…… 这篇是我的很少人回复的专栏里面回复最多的一篇。意义重大,而且底下的回复真是藏龙卧虎,令我不得不单开一篇专门回复下。  匿名用户 发表于2010年5月11日 下午05时33分49秒  举报回复删除回复 匿名用户:是啊,java太日了chenkeckt 发表于2010年5月11日 下午07时57分47秒  举报回复删除回复 匿名用户:功能不同而已,法拉

2010-05-15 00:35:00 1531 3

原创 地铁翻译怪叔叔

买了一个录音笔,这样就可以在上下班的地铁上翻译并且录下来了,然后晚上回来整理。今天尝试了一下,效率还蛮不错的。只是在地铁上自言自语还是被人当成怪叔叔般的打望了。

2010-05-15 00:22:00 1020 1

原创 悲惨生活又要开始了

开始翻译下一本 Real World FP 了。利用每天上下班在地铁上的两个小时,应该可以在几个月内翻完。再次为中国的FP事业做出无偿贡献啦……

2010-05-12 23:08:00 1627 5

原创 侃侃那些美丽的编程语言(上)

就侃侃我见过的那些美丽的语言们吧。IT男好像特别喜欢争论,比如 Windows vs Mac vs Unix, Java vs C# vs C++, Vi vs Emacs, 这些都老生常谈了。甚至如果你弄混了开源与自由软件,自由软件的拥护者会耐心的给你解释:开源并非自由。我不是计算机专业科班的,但是从小喜欢,一直都是自己四处看各种东西,很多时候并不是考虑实用,因此别人问我:你

2010-05-11 15:05:00 30518 100

原创 Seaside Web框架中文教程 系列之0:彼之砒霜吾之蜜糖

0 搭讪些杂七杂八的   打算写一个小系列来介绍Seaside Web 开发框架。算是自己学习使用的笔记。后面写多了没准整理个中文教程出来。 Seaside 框架我08年第一次接触,后来断断续续学习和折腾了一段时间。好事多磨。这个过程真是交杂着欣喜与痛苦。客观上说,Seaside 是否适合实际的开发呢,其实我心里也没底。虽然有一个 dabbledb.com 这样成功的例子在那摆着,但还真

2010-05-03 08:36:00 181

原创 seaside在虚拟主机 webfactional 上的部署

seaside 是一个Web开发框架,在《Beyond Java》中有一章专门介绍,目前版本到 3.0 了。seaside 是基于smalltalk的,对这个词感到匪夷所思的读者不必继续了。  这里记录下它的部署过程: 1. 准备一个seaside 的运行环境, 下载 squeak, 以及一个可以运行的 seaside image2. 在  webfactional 的 p

2010-04-23 16:43:00 1222

原创 用可视化的方式窥探Haskell 数据结构

函数世语言中数据在内存中是怎么保存的呢?本文利用 Vacuum 库,小小的探索一番: 1.   [1..10] 链表 "hello" 字符串的存储:可以看出就是 [Char] 的结构,元素用 (:) 来组合,最后一个是空列表 [] 。  cycle [1..4]   10个元素的 IntMap: Data.IntMap.fro

2010-04-14 15:34:00 2494 6

原创 恭喜下自己,终于收到 Real World Haskell 中文版的打印稿了

早晨一来公司,就看到工位上一个大大的邮报,看地址是清华出版社寄过来的,我就知道是它了。拆开后是将近10厘米后的一摞A4的打印纸。毕竟是第一次看到自己的文字(虽说是翻译吧)变成白纸黑字,并可能很快被更多人看到,心中很是欣喜。翻译这活属于费力不讨好,稿费可以忽略,板砖必然伺候。

2010-04-12 11:38:00 6819 33

原创 推荐篇 Haskell与范畴论的翻译

 国内另一个haskell学习者黄毅翻译自 wikibook:Haskell与范畴论新鲜出炉还冒着热气。

2010-04-10 13:32:00 3229

原创 Haskell 几乎无痛苦上手指南

趁着自己重装Linux 虚拟机的机会,把安装 haskell 的过程记录一下,顺便帮那些还犹豫徘徊在haskell门外的读者入门。 基本概念: Haskell : 是一门通用函数式语言,几乎可以进行任何种类的开发,包括命令行,GUI,数据库,Web.源代码可以跨平台: Linux,Mac, Windows, FreeBSD 等.  Haskell 的特点:

2010-04-10 11:30:00 41341 13

原创 初探数字签名与数字证书

 数字签名Digital signature本文参考wiki条目:http://en.wikipedia.org/wiki/Digital_signature数字签名的目的:一个有效的数字签名可以用来验证一份数字信息(文件)是由特定的发送者创建的,并且在传输过程中没有被修改。经常用于 软件分

2010-04-09 15:14:00 1413 1

原创 探讨下怎样在一个技术社区里面“火”起来,兼谈Haskell学习应用之路

我的blog专栏名字叫“很少人回复的专栏”。 事实也确实如此,看的人少,回复的人更少。无奈,我选择的总是很小众的东西,Haskell语言即使在学习研究者中间也被大多数人当成是研究学习的工具,并未考虑其实用化。甚至在 tiobe 这个排行榜上Haskell已经跌出了前50名,其历史最好成绩好像是32名。 相比较像erlang 现在是28名,入常大有希望阿。而在5年前我开始积极的参与P

2010-04-08 09:47:00 3975 11

原创 使用Haskell 统计论坛用户间的关系

 上图就是这个统计程序的产出(的很小一部分)。 问题描述:一个论坛上面众多的用户间是一个怎样的关系呢?如果能用图形的方式表示出来,就可以发现很多有意思的事情。 这个就是现在很流行的社会网络分析。 输入数据来源:某Discuz论坛的 post 数据。经过预处理,变成很简单的格式,每行包含的信息如下: tid, tAuthorId, first, authorid

2010-04-08 00:09:00 1627 3

原创 Haskell中操作线性代数库及使用矩阵及gnuplot绘图的方法

Haskell 原生的数据结构对于大规模的数学运算来说并不高效,如果使用 List 来存储向量或者矩阵,是比较低效的。好在,Haskell有丰富的第三方库,可以借助强大的专业数学库来完成这部分操作。今天将介绍的就是 hmatrix 这个库。 一 安装开发环境: MacOSX 10.51. 安装依赖库GSL (GNU Scientific Library),去

2010-04-07 01:38:00 2523 6

原创 小道消息:Real world haskell 中文版开始找审稿人

排版打印稿过两天就到了。后面审订工作还不知道要多久。总之是在进展中。

2010-04-06 12:11:00 904 3

原创 HTML5 真是个好东西

HTML5最令我激动的特性,一个是 Canvas,一个就是 websocket。这两个的组合能开发者带来很大的想象空间。 在页面显示图表,以往有这么几种方式: 1. JavaApplet  (现在基本上很少用了,但是作为15年前的老前辈,还是要敬老放第一位)2. Flash  , OpenFlashChart 3. GD 4. css + div + js5.

2010-04-05 11:29:00 995 2

原创 Haskell 中使用 BloomFilter(布隆过滤器)处理大规模数据

今天一个统计任务,需要从一个巨大的列表(几亿条)中找出属于另一个小点的列表的记录,小表有3千多条。使用bloomfilter 算法简化,bloomfilter 的介绍在谷歌中文blog上有一篇。 简单的说就是用一个位串做筛子,用一组hash函数作映射。 先用小表创建这个位串过滤器,形象的说就是在纸带上打孔。 全都打好后,用这个筛子来过滤大表,大表中的元素经过hash函数,如果能全

2010-03-30 22:05:00 950

原创 Linux + FreeTDS + unixODBC + Haskell 访问 SQL Server 数据库

把配置过程记录下来,方便以后自己查找。 环境: Ubuntu 安装: 1. apt-get install unixodbc  freetds ...2. 配置 FreeTDS /etc/freetds/freetds.conf 增加一个数据源: [yourserver]     host = [IP]     port = 1433

2010-03-30 12:02:00 1056 1

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除