blog mail me! feed

Archive for November, 2009

豆豆.

豆豆.

豆豆.

细节问题害死人啊.
又花了无数分钟和memory corruption做斗争,
惊讶的发现以前的程序里有这么的错.

以前的结果估计全是错的 -.-

唉, 离代码民工的水平都差得远啊.

So what are you scaring of?

你从来都不和我说任何的关于这方面的顾虑,
我不知道你是在害怕什么, 或者担心什么,
但是显然的, 你有顾虑, 你有莫名的畏惧.

我不明白, 为什么你总是害怕开始一个新阶段, 或者说一个新状态,
就好象如果你是一个DFA, 你在无谓的害怕状态的转换, 这说不通啊?

你要明白, 在到达接受态前, 做任何的抵抗, 挣扎, 或者在一个loop上麻痹自己是永远不会有结果的.
可是有的时候我真的不明白你, 你只是选择用转移注意力来麻痹自己,
你开始选择逃离生活的主题, 你很少说话, 你甚至和我说话都不愿意说实话, 是吗?

我们的时间真的越来越少了,
眼看着就要月底了, 你甚至都还没有完成最简单最初步的工作,
你一边说时间还多, 一边也知道时间正在快速的溜走, 你明明知道这种正在流逝的紧迫感,
你却只是轻描淡写的选择用各种方式来拖延, 就是不愿意切入正题.

我有点害怕看不透你,
也许只是因为,
本质上, 只有看见了你evil的一面, 我才会在这里无谓的唠叨.

今天是11月15日,
你知道15日是多么敏感的日子,
我本来不想给我们找任何纵容自己的借口,
但是也许我和你一样, 都是这样纵容自己停滞不前的执行者.

从改变生活习惯开始吧,
我们还有不多的2周.

SVM, CAPTCHA, hack

无聊得蛋痛, 想起了电子科大附属幼儿园”门户”的那个CAPTCHA.
前几周帮导师准备支持向量机的上机实验的时候, 正好看到一个用svm识别手写阿拉伯数字的数据库.
简单来说, 手写数字的图形被缩放为16×16的二值图像最后转化为256参数的多元分类问题,
考虑到上面这个阿拉伯数字数据库不错的交叉检验准确率, 我也就顺便拿来做”门户”的CAPTCHA识别了.

写了个脚本拖了100+个验证码样本回来, 仔细看了下,
虽然这个第二版山寨门户的CAPTCHA比第一版的CAPTCHA有了不少的进步(第一版的数字无比规则以至于可以直接写一个Greasemonkey脚本用canvas来识别),
但是总体上还是比较好识别的, 统一是二值图片, 字符间有清晰的间隙(除了有一张图有一点毛刺外),
只是图片加上了一些简单的几何变换.

CAPTCHA sample

上面是一个CAPTCHA的例子。
考虑到几何变换对字符产生的形变所造成的相同字符间差异,还没有手写阿拉伯数字样本间的差异大,
我就没做任何校正处理直接把字符切割了送去做训练和识别了.
通过识别各个字符的最大边界, 将四个字符分割出来, 统一复制到60×60的一块空画布上,
最后缩放到15×15, 转化为标准的二值 bitmap, 最后输出为libsvm的标准格式.

训练集我一共下载了124张CAPTCHA图片, 也就是496个字符的samples,
用libsvm对训练集做了5重的Cross-Validation, 自检验准确率: 97.1311% (Radial Basis核).
*EDIT* 又用线性核做了一次, 可以跑到98.1557%

总的来说, 支持向量机识别这个轻微几何变形的CAPTCHA还是有相当高的准确率的.
最后感谢无比handy的PIL以及Python,
这让我突然想起了用C/CPP写酵母基因预测程序时候的繁琐和折磨.

最后的最后, 我也不知道把这个CAPTCHA hack了有什么实质性的用处,
电子科大附属幼儿园门户系统如此山寨, 以至于从上一版本到现在的版本,
都可以绕过CAPTCHA直接提交信息进行认证,
回扣万岁!!

附简化原理图一张:
CAPTCHA DEMO

心酸.

林宥嘉 - 心酸
走不完的长巷 原来也就那麼长
跑不完的操场 原来小成这样 

时间的手 翻云覆雨了什麼
从我手中 夺走了什麼 

闭上眼看 十六岁的夕阳 美得像我们一样
边走边唱 天真浪漫勇敢 以为能走到远方 

我们曾相爱 想到就心酸 

人潮拍打上岸 一波波欢快的浪
校门口老地方 我是等候堤防 

牵你的手 人群里慢慢走
我们手中 藏有全宇宙 

闭上眼看 最后那颗夕阳 美得像一个遗憾
辉煌哀伤 青春兵荒马乱 我们潦草地离散
明明爱啊 却不懂怎麼办 让爱强韧不折断
为何生命 不准等人成长 就可以修正过往 

我曾拥有你 真叫我心酸
一个人听着鱼缸的泡泡,
怅然若失.
考完试后, 终于没有什么可以阻止我疯狂的想念你了.
祝幸福.

冷笑话.

自习室无聊手机上stackoverflow看帖, 看到一个关于brainfuck的讨论。看过计算理论后回头再看brainfuck这个Turing-complete的语言还是很有趣的。

更有趣的是下面的冷回复:

Yes, I once wrote an operating system and a C++ compiler in brainfuck. – shoosh Oct 29 at 18:29

That is nothing. I once ported the linux kernal to a single tape turing machine. – Brian Ensink Oct 29 at 18:37

Iran and North Korea are running their nuclear facilities solely on brainfuck. – h2g2java Oct 29 at 18:47

我突然觉得这些文字使得头痛的头和眼珠子都正常些了。
要说brainfuck,偏头痛才是他妈的brainfuck。