2008年11月21日 16:25
家里的Linux中文输入法输入“【】”很麻烦,昨天就因为这个所以放弃了一篇火星笑话的共享。
想想老是去找“【】”两个字符来复制粘贴也不是个事。我这个人很懒的。于是就写了一个GreaseMonkey的脚本,首先当然是供自己用的,谁要是有兴趣就一起用吧。
前提条件是使用Firefox,并安装GreaseMonkey扩展。
然后点这里安装脚本。安装完之后在豆瓣火星笑话小组发言时,标题前面可以选择“火星/前冥王星/织女星系”。提交时会自动加到标题里。
就这么简单。代码也写得很烂,不拿出来炫耀了,有兴趣的自己看吧。
2008年11月18日 12:48
杨佳袭警一案,已经过去很久了,连一审都过去了不少时间。在我看来,杨佳案也无甚特别之处,杀人者遭审判,天经地义。本不该受到太大的关注。
但不知道什么理由,Blog界里以此为题,讨论声不绝于耳,至今未绝。先是看到不少人说杨佳是挑战统治强权,心里颇不以为然。又看到有人对审判程序提出质疑,对杨佳母亲的去向表示关心,心里觉得赞同,但自己既然对这件事了解不多关心不够,也就不多说什么。
但是今天看到这样一篇blog,我忍不住想多说两句了。
文章中一段如此说:
其实说起来杨佳,我对他最佩服的地方就是凡事要一个说法。对他最不喜欢的地方是他用自己宝贵的生命就这么交换了几条贱命。这些为体质庸庸碌碌到死的家伙的命哪比的上凡事要一个说法的杨佳生命宝贵?老有人在这件事上说,难道被他杀的那些人生命就不宝贵嘛?要我说,当然不宝贵,一群行尸走肉,怎么比的上一个说真话的小伙子?
可惜,杨佳离开的太早了。只要他坚持凡事要一个说法,继续坚持下去,虽然他未必凡事都能得到有个说法的结果,但是至少会给相关责任人带来一些麻烦和损失。这就是有用的。最终一定会有一些事,一些人,因为他要说法的行为而改变。非暴力永远比暴力来的深远和有效,虽然见效比较慢。在这种行为模式下,他干掉的恐怕绝不仅仅几个精神上早已死掉的东西。而是给这个民族带来觉醒和向上的机会。
我实在不能理解,杨佳到底做了什么,能让人对他如此崇敬有加?就算他真的是为了“伟大的目的”去杀了几个警察,那也不能改变杀人犯这个事实。更何况他的杀人动机实在很难跟什么伟大的目的有所关联。
再看行文:“一群行尸走肉,怎么比的上一个说真话的小伙子”。好精英,好法西斯啊。是啊,只有坚持理想的伟大的人才能生存,我等行尸走肉,本无活着的权利。杀之如草芥,痛快啊痛快。但是你们不想想,这跟统治者正在做的事情有什么区别?就算你们来领导这个国家,也不过是换了一个皇帝而已。
“这些为体质(体制)庸庸碌碌而死的家伙”。你们啊,因为一个糟糕的体制而否定这个体制内的所有人,这跟你们所反对的体制有什么本质的区别?
我想说,杨佳不过就是一个个案,而且是一个糟糕的个案。这个案子里的主角,也许是真的有什么内幕或者受到了不公正的待遇,但他受到不公正的待遇并不意味着他做的事情就是正确的。
我想,你们希望这个社会变得更好,这个想法是对的。但首先你们应该学会独立的思想,以及接受各种各样的看法,无论是你们所认同的,还是你们所反对的。如果用“敌人的敌人就是朋友”这样简单的思路去解决问题,那么你们并不比你们所讽刺嘲笑的对象更高明。
2008年11月07日 16:42
TR发了这么一个帖子,感觉挺有趣的。于是就乘着中午休息的时间做了一个动态生成的版本玩玩。
首先当然是下载原图,然后把横幅上的字擦掉。形成一幅底图。测量一下横幅的位置,并记录下来。
然后用Python的PIL库加载这幅底图,然后用PIL的ImageDraw功能在上面画字。这里为了让所有的字都能显示在横幅里,我写了一个简单的自动选择文字大小的函数。
import Image, ImageDraw, ImageFont
def getFontInfo(str, size):
"Choose an appropriate font size for output"
fontname = 'wqy-zenhei.ttf' #这个字体文件必须存在
for s in range(8, 121):
font = ImageFont.truetype(fontname, s)
width, height = font.getsize(str)
#当文字最终占的尺寸超过指定尺寸时,退出循环
if width > size[0] or height > size[1]:
break
#然后用比刚刚那个小一号的文字大小
fontsize = s - 1
font = ImageFont.truetype(fontname, fontsize)
strsize = font.getsize(str)
return font, fontsize, strsize
然后再实现一个叠加文字到图像的函数:
def genPic(str):
start = (117, 127)
size = (720, 30)
font,dummysize,strsize = getFontInfo(str, size)
image = Image.open('background.jpg')
draw = ImageDraw.Draw(image)
draw.text((start[0]+(size[0]-strsize[0])/2,start[1]+(size[1]-strsize[1])/2), str, font=font)
del draw
return image
这样生成图像的部分就写完了。最后再写一个cgi的前端:
#!/usr/bin/env python
#coding:utf-8
import gen
import cgi
import sys
import cgitb; cgitb.enable()
sys.stderr = sys.stdout
form = cgi.FieldStorage()
s = form.getvalue('s')
#这里用猜编码的方式尝试将文字转换为unicode。
try:
s = unicode(s, 'utf-8')
except:
try:
s = unicode(s, "gbk")
except:
pass
image = gen.genPic(s)
#生成图像
print 'Content-Type: image/jpeg\n'
#输出结果到标准输出
image.save(sys.stdout, 'JPEG')
这样,一个动态生成图像的python脚本就写完了。将它放到带ExecCGI权限的目录中,并指定.py后缀为CGI脚本。就可以运行并得到输出了。
demo效果可以见我的实验室。
2008年11月01日 23:33
经过大半天的奋斗,我的服务器成功的升级到了Ubuntu 8.04。
一些用户尚未恢复——包括系统用户和svn用户。不过有些用户也许本来就是多余的。
一些组件换了。
原来因为服务器资源的问题,将HTTP Server由Apache 2换成了lighttpd,虽然资源的确节省了,但是带来了很多的问题,比如无法使用http协议的svn,等等。于是这次升级之后,仍然将HTTP Server换成了apache2。
svn也因此由原来的svnserve模式改成了http模式。
下载用的amule-daemon乘着这次升级换成了mldonkey——以后可以尝试在服务器上下载BT了。
其他的东西,以后逐步再恢复了。