使用Go语言实现的代理服务器

Google去年末发布的Go编程语言有着Python的简洁,C数量级的执行效率,类似Erlang的并发模型。我很是喜欢,但不知为何Go语言的官方站点golang.org在国内某些地区不能访问。我用Go写了个简单的代理服务器go-proxy来在一个未被国内屏蔽的网络空间上给golang.org建立了镜像http://go-lang.info,,在这里有一些go-proxy的相关信息。

使用wifi ESSID更新pidgin状态信息

不知道大家是怎么使用IM工具状态信息的,万年不变的签名档抑或当前播放歌曲名?

最近的习惯是把IM状态信息用来显示当前俺在哪,例如在家时显示"@home",在公司时显示"@office"虽说pidgin更换状态信息很方便,但咱死coder的一个特征就是对这种简单重复的事不爽.周末得空研究了下pidgin的状态切换机制,写个了小脚本在上线时根据当前无线网络的ESSID自动更换状态栏内容.

使用方法很简单,用文本编辑器打开,变更一下pidgin状态信息和其匹配的ESSID. 把这脚本设置为可执行,放入桌面环境的启动自动运行列表里.登出,登入就OK了。

该脚本依赖python-dbus,最近一两年的Linux系统基本都会默认安装吧.

下载: essid_based_pidgin_status.py

使用thinkpad 键盘灯做邮件提醒

thinkpad屏幕顶部的键盘灯(ThinkLight)很可爱,虽然起不了什么照明效果,但黑暗环境下挂在视线正中的一束幽幽冷光貌似真能给思考增添灵感。这灯和小红点一道构成了THINK味的重要调料。

pidgin有一个有趣的插件blanklight,能在新IM消息到来时闪烁thinkpad键盘灯以做提醒。我很喜欢这个插件,虽然其只能用于IM消息提醒,且只能闪烁固定的3次。

对于大多数用户来说,新邮件提醒应该比IM消息提醒更为重要.受blanklight的启发,我决定用ThinkLight来进行邮件提醒。

我的桌面环境是xfce4, 她的面板自带一个非常出色邮件提醒插件xfce4 mailwatcher能同时监视多个邮件帐号,支持几乎所有邮件服务(IMAP,POP3,GMAIL,LocalMail etc...)并且能在监测到新邮件时执行指定程序.

我写了一个控制ThinkLight的小脚本lightup,以--start作为参数运行时能让键盘灯一直闪烁,如果以--stop参数运行则检查小灯是否已经在闪烁,如果是则让其闪烁停止。让xfce4 mailwatcher在收到新邮件和点击图标时执行这脚本的两种运行方式。一套完美的ThinkLight邮件提醒系统就完成了 ;-)

用linux的thinkpad用户可以玩玩这个脚本lightup,很简单的配置过程已经写在里面,请用文本编辑器查看.

UPDATE: 往LinuxToy上投递了本文后,获得了不少有趣的反馈。感谢Iven的创意和snyh分享的xset设置scrollLock灯方法 ...

Lisp中的Symbol

Lisp中的Symbol(符号)这个概念在我熟悉的Python,Java,php中并不存在. 以下稍作总结以备忘:

一个Symbol在Lisp程序任意Scope中拥有唯一的字符名,用于在特定Scope中通过该Symbol来找到某个Variable(变量)或Function(函数). 这个概念类似其他语言中的Variable name(变量名)或Function name(函数名)。在python或Java中,变量名或函数名和名称所指的变量或函数同生同死,密不可分. 而Lisp的Symbol显得更为独立.

Symbol(符号) vs Viriable(变量)

  • Lisp程序中,Viriable(变量)的值存储在指向该变量的Symbol(符号)的value cell(值单元)中. 一个Symbol在利用value cell储存变量的同时也可以利用function cell(函数单元)存储Function(函数)或Macros(宏). (就是说一个Symbol可以同时被作为变量和函数的标示使用)

Symbol带来的优势

在其他语言中当你的程序执行完 x= 7 语句后 ...

GNU info简介

前阵子开始学习lisp,找了一圈书籍文档后发现最适合的就藏在emacs神 器里(Help-More Manuals-Introduction to Emacs Lisp). ;-)

这份文档以Textinfo格式编排,info程序或emacs下的info模式是阅读Textinfo文档的标配. 与之前熟悉的man,html,pdf,chm阅读体验相比,info阅读有些门槛,得花点时间熟悉。

相对于man page;Textinfo支持目录,层次化节点关系,节点间的交叉链接,(info比html早两年被创造出来)等结构化文档概念. 这使得它更适合复杂文档或电子书.

info程序有自己的一套快捷键机制。熟悉了这套快捷键机制并在脑中有文档结构概念后,浏览文档会比在浏览器方便得多. 以下是常用的几个:

  • spc(空格):向下滚屏,至末尾后进入下一个文档节点
  • backspace(退格): 和空格相反,向上滚屏,至顶端后进入上一个文档节点
  • l : 回朔浏览历史,等同于浏览器中的回退。
  • n : 进入文档节点数中同级别的下一个节点 (*如果该节点包含子节点,n ...

markdown标记语言简介

MARKDOWN是一种轻量级标记语言,语法风格来源于纯文本邮件传统。使用轻量级标记语言配合相应的转换器能让你在纯文本环境下不需要记忆复杂的html标记就能编写出结构丰富(包含各种级别的标题,不同类型的列表,混合链接与图片)的文章. 有一种很有意思的说法:

尝试用轻量级标记写东西,能让你的写作从依赖高级编辑器的可见即所得模式升级成自由的所想即所得模式 ;-)

相对于其他轻量级标记语言Wikitext,reStructuredText,Textile,MarkDown有如下特点:

  • 语法简单.
  • 源文件可读性高,编写容易.
  • 嵌入html直观方便.

她比较适合写blog之类篇幅较短的文章,如果是结构复杂的正式文档,reStructuredTextTextinfo应该是更好的选择。

NLP & NLTK

上周cpug北京聚会时elias 同学分享的NLTK介绍是两个听得最过瘾的topic之一(另一个是harry同学的python并发调度)。

会课回来后 NLP(Natural language processing) 和NLTK一直在脑中萦绕. 是时候开始学点硬货了.

在elias的演示中,一句普通的英文句子通过nltk处理,摘要出的关键部分可以直接构造成SQL语句.  结合语音识别技术和移动应用, web3.0语义网的威力不可估计.

广博的NLP领域中我会以  词性标注  做为出发点面向英语学习应用进行学习。而且得争取让NLP,NLTK在工作中得以体现。