小议「挖坑」

在上海读本科的头几年,那时一号店还没有兴起,学校的教超品种少且贵,每半个月左右我都会和隔壁的胖头桐人鸡哥(后来富帅也加入了进来)他们去离学校几公里远的欧尚购物。由于两次采购之间隔的时间比较长,没车的我们却也像传闻中的北美人民一样大包小包的往回掂,所以总要做一个购物清单,提前想好买些什么。

可是我们走进超市之后,却经常会像雌性生物一样,失去目标,即使目标就在我们的手机里存着。总有一股奇妙的力量吸引着我们,在一些奇奇怪怪的货物面前停留下脚步,东看看西摸摸。结果本来半个小时绰绰有余的购物就会被拖到一个多小时,偶尔还会多花些钱买些无用的物什。

之所以这么说是因为前几天在写代码的时候,老师要求用多线程下载。由于并不是CS出身,所以写这部分的代码的时候,不是很容易理解。尤其是上网google一下之后又发现了select、poll、epoll之类的一堆概念,更是闹得一头雾水。

其实解决这个问题的思路也挺清晰的,好好的把文档看一遍就好了。可就是总是提不起劲去认真看,觉得总会去看的,现在不着急。于是想起来了过去购物时的类似情景。

不知道这种挖了坑不填的心态是不是属于拖延症的一种。

之前也开过许多大坑,有的大坑是在逐渐逐渐填平的,比如「学日语」;有的大坑是在肉眼不可见速度填平的,比如「学写代码」;有的大坑则几乎搁置,处于放弃状态,比如已经很久没骑的自行车。

细想一下其实有的时候在坑挖了不浅的时候,心态是有问题的。比如初中的时候看军史之类的东西,其实装逼成分远大于好奇成分。其结果就是填坑的过程是一个巨痛苦的过程,每付出一点精力就像从身上剐掉一斤肉一样的感觉。

而有的大坑则是在开坑之前,对这个大坑并没有什么合理的认识,颇有些说走就走的感觉。比如很多人练吉他(感觉在影射我一群小伙伴儿啊)。很多人也就停止在了小星星之类的地步,好一点的像胖头停在了丁香花。可能一开始对这个坑有些兴趣,可真的把这个坑挖开,发现这个坑并不是很对自己的胃口,于是就那么放着在也不动。

从小到大培养了不少兴趣,也被培养了不少兴趣,算是挖过了不少坑。到现在为止,两个比较令我满意的坑都是本科之后挖的,分别是上文中提到的「学日语」和「学写代码」。

一开始学日语的目的很单纯也很俗套,就是看了秒五之后,看了山崎大叔深情演唱的视频,想尝试着学唱《one more time one more chance》。记得那段时间我成天嘴上来回挂着的一句就是「いつでも探しているよ」,还经常被胖头嘲笑。如今这个目标早就已经实现,不过日语的学习却基本没有停止,一直都在进行(现在口头挂着的变成了「世界が終わるまでは」,怎么感觉越学越退步了啊哈哈)。

学写代码的原因则显得有些被动。大一的时候由于完全没有接触过代码,加上姚屠夫的声音太过「飘渺」。写作业的时候很吃力,于是找各种书看,又过激式的选了好多和电气没关系的写代码的课...虽然现在由于精力不足看书看得越来越慢,经常好几天才翻一翻,好歹这个大坑也算坚持了下来。

之所以对这两个大坑比较满意,有很多原因。不过我觉得最大的原因,还是在于即使过了这么长时间,我仍旧能够对这两个大坑充满热情。即使可支配的精力越来越少,也绝不会轻易的放弃掉这两个大坑。即使不能那来赚钱或是怎样,填这两个大坑对我仍是享受。

前些天看《黑客》这本书的时候找到了些共鸣,倒不是自己往自己脸上贴金说自己是黑客什么的,只是看到60年代末的MIT的那批黑客即使挂科、退学也在所不惜的去研究计算机,那种完全无视外界环境的热忱引起了共鸣。

这些人是世界上最幸福的一批人,挖了一个自己挚爱的大坑,并将其作为一生的事业。说的浪漫点,简直就像娶到了心爱的姑娘并白头终老一样。

花开堪折直须折,莫待无花空折枝。希望自己也能像一个带理想主义色彩的「疯子」一样,把自己喜欢的大坑一直这么填下去。

去除Discuz!论坛生成的乱码

这几天在写「计算网络心理学」这门高大上的神课的大作业:用python写个爬虫爬老师指定的几个论坛。

写的时候发现论坛的帖子的内容中会随机的插有乱码。这倒也不是新鲜事了,原来我一直不知道是干嘛用的。google一下发现好像是为了防止复制党的。

举个例子,随便摘了一个贴子某一层楼的内容。

<font class="jammer">( `) R4 V, C&nbsp;&nbsp;{7 r0 B, R7 R</font><br />
<strong><font size="4"><font color="#0000ff">怎么就“故意篡改”了?</font></font><font size="6"><font color="#ff0000">您的智商不会有问题吧?</font></font></strong><br />
<span style="display:none">$ C$ ]( {, {% x% </span><strong><font size="6"><font color="#ff0000"><br />
<span style="display:none">& j( E- D6 e3 Y; O</span></font></font></strong><font class="jammer">: q, J; Z. y5 r2 v&nbsp;&nbsp;t* t</font><br />
<img src="static/image/smiley/new1/em58.gif" smilieid="192" border="0" alt="" /><br />
<span style="display:none">$ q- d0 @4 K4 z* P+ y4 |) h- ?</span><br />
<span style="display:none">3 p5 h; g% z; g, e7 n) E</span><font class="jammer">% Y8 }1 s/ `) a9 P# j- S! x</font><br />
<br />
<span style="display:none">- R: a$ t&nbsp;&nbsp;F- A7 o! R# L; l</span><strong><font size="3"><font color="#0000ff">你自己当时的帖子,是直接对我的帖子进行回复的,也就是说,是引用了我的内容的,是一样的吧?如果事后改了,那就不一样了。</font></font></strong><font class="jammer">; C; h# C8 Z) W5 c% d4 @</font><br />
<font class="jammer">" h8 _+ e&nbsp;&nbsp;|+ {3 X</font><br />
<font color="#ff0000"><strong>你自己,在几乎同一年月注册了几个马甲账号?还口口声声说别人?</strong></font><br />

可以看出来有很多有规则的乱码,一般都是一个字符,加若干个字符乘2+空格,然后再以一个字符结尾。不过discuz!还是挺厚道的留了个jammer的属性,所以说用正则去掉这些乱码还是挺简单的。

# delete jammers
post_text = re.sub(r'<font class="jammer"[sS]*?/font>|<span style="display:none"[sS]*?/span>', "", post_text)
# delete accessory
post_text = re.sub(r'<ignore_js_op[sS]*?/ignore_js_op>', "", post_text)
# delete updating info
post_text = re.sub(r'<i class="pstatus"[sS]*?/i>', "", post_text)
# delete quote
post_text = re.sub(r'<div[sS]*?/div>', "", post_text)
# delete emoji
post_text = re.sub(r'<img.*?>', "", post_text)
# delete font label, strong label and td label
post_text = re.sub(r'</?strong.*?>|</?font.*?>|</?td.*?>', "", post_text)
# delete n & s in text
post_text = re.sub(r's|<br/>', "", post_text)

总体来说还是挺傻瓜且直观的,从几个测试的贴子的表现来看,效果还不错。不过由于贴子内容的html label可能不止这些,可能删除不干净,另外这门课主要还是关注于用户的发言中的词语之类的,对于数据表格之类的并不是很关注。所以这么处理效果还不错。

如果需要保留表格啊,附件啊,图像啊之类的,应该还需要再具体修改。