Hui’s Thinkpad Header Image

Entries in '程序' category

Albert MSN聊天机器人

Albert 是我写以前写的一个web界面的聊天机器人。现在我把他移植到了MSN上,大家只要把
albert@huichen.org
加为好友就可以和他用英文聊天了。 聊天时请使用完整的句子结构。
输入help可以查看一些除了聊天之外的小功能,比如显示一条英文的fortune cookie或者背诵一首唐诗宋词等。
程序在不断完善中。如果你在使用中遇到了什么问题,可以在这里留言告诉我。
[源代码]
放在了google code上(有介绍和安装说明):
http://code.google.com/p/ichatbot/
请抓取最新的svn repos
svn checkout http://ichatbot.googlecode.com/svn/trunk/ ichatbot-read-only
或者到这里浏览代码:
http://ichatbot.googlecode.com/svn/trunk/
阅读(1004 次)Share This

Categories: 程序

pdfwp: Python写的开源的WordPress PDF文摘生成器

前几天给《博客李淼》写了一个文摘生成器,能让读者选择喜欢的文章装订起来生成PDF文档,主要是为了提供支持数学公式的效果更好的打印功能。支持繁体和简体,并能生成 UTF-8/GBK/Big5格式的 LaTeX 源代码。(其实生成的顺序是先有LaTeX源码这只鸡,再有PDF这个蛋)。
今天中午简单整理了一下放在了google code上遵循GPLv3发布:
http://code.google.com/p/pdfwp/
系统要求和怎样安装都在里面了,就不多说了。代码只有500多行,写的比较乱,没注释,基本属于write-only,不过可以用。
原理是这样的:首先Python脚本从WP的数据库里把帖子标题和内容提取出来,除去HTML tag后做符合LaTeX语法的转换并写入到一个LaTeX源文件,然后调用iconv和zh-autoconvert进行编码和繁简转换,最后调用texlive的pdflatex将LaTeX源文件编译生成简体和繁体的PDF文件。
得感谢TeX不是一种WYSIWYG的文档格式,从帖子到LaTeX源码的转换只要集中注意力在内容的逻辑结构上即可。另外,写脚本花的时间还不如配置TeX系统的时间长,配置了N种Free的CJK字体显示都不理想(主要是宋体过细),最后无耻地从CTeX套装的texmflocal目录里把字体裸拷出来复制到~/texmf中然后updmap就搞定了简体。但繁体字还是有极少数的缺字,因为Debian上默认的繁体UTF-8文鼎字体bsmi字库不全,只能靠使用者下载LaTeX源文件自己编译了。
阅读(1168 次)Share This

Categories: 程序

FleaHttpd 超快的Web服务器

我用C和socket从零开始写了一个Web服务器,实现了静态文件服务功能和最基本的CGI服务。我给这个程序命名为FleaHttpd,因为它像跳蚤一样小,目前代码只有不到500行,放在了Google Code上:
http://code.google.com/p/fleahttpd/
下载地址在这里:
http://fleahttpd.googlecode.com/svn/trunk/
跳蚤虽小,五脏俱全 FleaHttpd能响应浏览器的GET/POST请求。用apache的ab测试表明,在concurrency为1的情况下静态文件的访问速度可以达到Apache的三倍,测试结果在这个页面:
http://code.google.com/p/fleahttpd/wiki/BenchmarkResults
对同样一个37103字节的文件访问10000次,FleaHttpd可以在1.6秒完成万次请求:
Requests per second: 6224.93 [#/sec] (mean)
Time per request: 0.161 [ms] (mean)
Time per request: 0.161 [ms] (mean, across all concurrent requests)
Transfer rate: 225817.40 [Kbytes/sec] received
Apache完成万次请求则需要5秒:
Requests per second: […]

Categories: 程序

网络摄像头

最近老爸老妈装了宽带,要和我视频聊天。对我来说视频聊天已经是n年前的事情了,我翻箱倒柜终于找出一个摄像头,还是从国内带来的远见(foresight)摄像头。可惜网上找不到Windows下驱动,视频聊天也就作罢。
于是想试试能不能在Linux下搞定,lsusb了一下:
$ lsusb
Bus 001 Device 005: ID 0ac8:301b Z-Star Microelectronics Corp. ZC0301 WebCam

在google上搜索设备号 0ac8:301b,发现有一个法国人写了这个型号的驱动:
http://mxhaard.free.fr/spca5xx.html
下载下来之后按照说明编译为内核模块,然后用他写的另一个软件spcaview测试发现一切显示正常。
另外注意到spcaview中还有一个很handy的工具spcacat可以每隔几秒钟从摄像头抓取一个.jpg图片,于是我就写了一个python脚本自动把图片张贴在网上。我做好的网址在这里
http://toys.huichen.org/webcam
这个网页每隔大约10秒自动更新一次,显示即时的摄像头画面。
原理是这样的:
抓取摄像头图片的服务器(A)和web服务器(B)是分开的,首先A机器上的spcacat每10秒从摄像头抓取一张图片,然后B机器的python脚本每隔10秒钟从A机器上远程下载图片,给图片添加时间戳然后生成动态网页。
我写的python脚本:
http://webcam-python.googlecode.com/svn/trunk/webcam.py
另外值得一提的是spcaview中还附带了spcaserv工具可以在A机器上建立视频流服务器,然后在远程机器上用spcaview登录A机器即可进行实时监视,我测试在640×480的分辨率下视频相当流畅。
阅读(2087 次)Share This

Categories: 硬件 · 程序

C vs. C++ vs. Java vs. PHP

其实,我不懂Java,这篇文章只是随便侃侃。
这个学期选了Craig Chase教授的C++课程,主要是关于template, generic programming, garbage collection, template meta programming 和一点C++内存管理的知识。学期有三个projects,第二个比较有趣,是实现一个生命游戏的模拟器,模拟一个pool中的各种生命类型的class,有些类似联网游戏中的server/client。
Chase教授提到了好程序的判断标准,有几个选择
1. The program is correct (程序是正确的)
2. The program is efficient (程序是有效率的)
3. The program is easy to read (程序易于修改)
4. The program is easy to understand (程序易于阅读)
阅读(1699 次)Share This

Categories: 程序

Close
E-mail It