博客

解码 HTML 中的 unicode entity

中午 zzh 发来一个问题,如何对抓下来的网页中的 unicode 字符串,诸如北京市一二八中学
进行解码?

首先想到的是最熟的 libxml2/HTMLParser。简单试了试 xmllint,无解;又大致看了看源代码,貌似没有专门处理的部分。

再转到 Python 的 BeautifulSoup。看了看文档,也貌似无解。

最后只好 google 之,发现 php 的 html_entity_decode 是一个现成的函数。赶快推荐给 zzh,发现他已经自己动手写了一个解析函数了,汗....

最后要说的是,在 google 过程中,发现 Perl 似乎也有现成模块来做这个工作,不过偶不会 Perl,没有尝试。另外就是发现一个叫李卫公的 blogger 在 Python 上也写了一个简单的程序来解码,看起来是一个正则表达式牛人,推荐一下。

Topic: 技术

S60 导入地址本

已经入手 E61i !!!

地址本数据来自古老的 3650,格式见用 Python 备份 S60 的地址本

开发过程中碰到这么几个问题:

1. 第一次安装 1.3.x 高版本的 PyS60,一共需要两个 sis 包,分别是 PythonForS60_1_3_21_3rdEd_selfsigned.SIS 和 PythonScriptShell_1_3_21_3rdEd_selfsigned.SIS。一开始不知道还需要 PythonScriptShell,找了半天 python 图标,还以为自己弄错了。另外我一开始安装在卡上,程序无法执行,删除后安装到内存上就好了。

2. PyS60 的从 UTF-8 字符串 decode 成 unicode 有问题。单独的“张”这个字是无法 decode 的,但完整的名字或哪怕是“张\n”都可以正确 decode。还没有测试是不是单独的汉字都有这个 bug;反正是为了这个问题调试了半天。

3. 从文档所说,contacts.open(mode = 'n') 应该是创建一个全新的、空白的联系人数据库。实际上不是这样,效果和 mode = 'c' 是一致的。可能对于系统的联系人数据库的确是有这个限制。

  1. import contacts
  2. f = open("E:\contacts.txt")
  3. db = contacts.open(mode = 'c')
  4. n = 1
  5. count = 0
  6. for line in f:
  7.     count = count + 1
  8.     if n == 1:
  9.         n = 0
  10.         contact = db.add_contact()
  11.         title = line.split(", ")
  12.         #print title[0], title[1].decode('UTF-8')
  13.     else:
  14.         if line.strip() == "":
  15.             contact.commit()
  16.             n = 1
  17.         else:
  18.             info = line.split(", ", 1)
  19.             try:
  20.                 v = info[1].decode('UTF-8').strip()
  21.                 #print info[0], v
  22.                 contact.add_field(info[0], v)
  23.             except:
  24.                 print 'add_field', title[0]
  25.                 break
  26.  
  27. f.close()
Topic: 技术

烧水

如果我的烟机、灶台、燃气管道在正常保修期内出现了问题,我保证不怪厂家,因为那一定是昨晚发生的事引起的。

昨晚大概8点半到9点之间,我用奶锅接了大半锅自来水放在灶台上点最大火烧水,然后开着电视,跑到书房上网。

也许是上得太过投入,也许是上得太过专注,我完全把烧水这件事忘了。电视开着的声音也把我听见水沸腾的可能性给灭掉了。到了11点多,我离开屏幕,出来透口气,奇怪地发现厨房灯还开着。等我走近一瞧,惊恐地看到火还在熊熊地烧着。奶锅里的水早已不见,恐怕在火上干烤着已经2个小时了。我赶紧关上火。锅里面的底像铺了一层黄色的颗粒,锅外面的底呈现着可怕的青色。灶台的开火旋钮所在的黑色面板上的塑料薄膜波浪型的皱起,像是想赶紧离开灶台。烟机上显示时间大风小风的液晶屏黑得发紫。我试着按了一下“小风”键,无任何反应。哭……

从灶台下面的橱柜到包着烟机的吊柜都是热热的,燃气管道也是热的,旁边烟道的墙也是热的,更别提烫手的灶台和烟机了。我只能等它们慢慢冷却了。我在客厅呆看着电视,听见厨房里面嘎嘎地响,像什么铁架子断了一样,据推测应该是因为过热而变形的烟机内部某些金属板们又在慢慢因冷变形。

今天早上,我起来后,先打了打火,正常;又试着按了“大风”“小风”键,正常。看着已经肯定不能回复原状的奶锅的锅底,决定以后用可以叫的水壶烧水了,奶锅就丢了吧,嗯,锅盖还可以留下 :)

Topic: 生活

Neutrogena

达达她妈妈睡前敷面膜,达达在旁边看了一会,发问:

你用的是露得清面膜吗?

让人十分 faint.. 她从哪个渠道知道面膜是什么牌子的呢?现在她对电视上美女代言的广告特别感兴趣,特别臭美

Topic: dada

再说饭否

为什么要取“饭否”这个名字?

我瞎猜,
一、这个服务的初衷就是记录随时想说的话,“吃饭了么”算是这么一句。中国人大概都能明白“饭否”就是“吃饭了么”
二、饭否是双声词,它模仿的 twitter,也算双声词吧 ;)

如果现在让我给它提建议,那就是给每个用户定制一个代码片段,可以插入个人网站的页面中,让个人的消息也能显示在自己的网页上。

另外,刚才绑定手机了。因为今晚公司组织活动去昌平,明天上午爬蟒山,到时候可以用手机发布个人最新动态,哈哈

Topic: 网络

少即是多

在搜狐招人和以前比起来,感触最深的就是其严格的HC限制,有时候愤愤不平的想,就这么点人,要做那么多事情,真是&((##WQ!@#d

但昨天或者是今天早上,在思考如下问题的时候对HC又有了新的认识:搜狐这么大一个公司,这么多业务和产品,怎样才能集中资源做好自己该做的事情呢?

答案很简单,在不重要的业务上减少资源,在核心的业务上增加资源..(好像是废话)

那对于搜狐来说资源是什么?立刻想到,最核心的资源是——人

HC 的意义就在于此。对于任何一个产品线来说,有搜狐这么好的平台支撑,很容易想,我可以做这个做那个做....反正肯定都会成功;如果所有的产品线都这么想并自由发挥,那搜狐就乱套了,必然是什么也做不好。有了 HC 这个死限制,想法再多也得忍痛割爱,仔细挑选最有优势,最可能脱颖而出的路径前行。

HC 确实有负面的地方,但却是控制公司方向的很好的举措。作为部门经理要正面的看待它,它迫使你更精细的配置资源和精力

而且 HC 还有另外一个好处——这样使得招聘更加谨慎,宁可职位空缺也不滥竽充数。

现在看来,对于 startup 来说,找钱、找人其实都是次要的,首先是要找对方向;如果对前途暂时看不清楚,宁可行动慢一点扩张慢一点,要知道,慢即是快

陈一舟总结的真好,我也是今天对其有了一个新的理解。。。每天进步多一点

Topic: 商业

饭否

Twitter 已经火了好一阵了,我非常想用它,可是我不怎么用 Gtalk,而 Twitter 迟迟不支持 msn。

twitter是什么呢?听了很多人会这么说“这个我也会做”。对,它很简单,“what are you 
dong?”你再做什么?通过IM(GtALK)、sms以及WEB方式,你可以把你现在的状况随时的记录
到你在TWITTER的账号。一来作为自己的纪录,而来,朋友之间也能够方便的了解对方在作什么。

上面这段是抄刻录事的,原文链接我这里似乎打不开。

刚才看见 WebLeOn 推荐了饭否,立刻尝试了,支持 msn(我用的msn7.5版也支持,不仅仅是 WebLeOn 说的 Live Messenger),还支持手机短信(这个我没有尝试)。

好玩呀。

我的饭否空间:http://www.fanfou.com/qiuyingtao

更新:嘿嘿,世界真小,刚才有个叫王兴的人主动加我为好友,既然他是我的第一个,那我就加他吧,然后居然在他的好友列表里发现了Realazy,加之

Topic: 网络

跳闸

5月7日下午3点半左右,我坐在书桌边,虽然眼睛看着开着的电脑,但心思全集中在嘴里含着的口琴上。自娱自乐正感觉不错的时候,“啪”的一声,屏幕黑了,它们俩不分先后同时发生配合得真是毫到巅妙。当然我心中暗骂f*ck,并从椅子上跳起的组合反应比之亦未遑多让。

为什么?我啥也没动啊?我打开门边上的强电箱,看到管墙上插座电的闸跳了。扳上去,手一离开,立刻又掉下来。shit!别的灯的电,厨卫的电都没有问题。没辙,一点辙都没有,只能打电话找物业。

维修人员过来的速度令我满意。他们听了我对跳闸瞬间的屋内状态的描述,接着把强电箱那块挡电线的板子拆下来,用电表试了试,转过头痛苦地告诉我,要拆插座一个一个试。我心头一惊,想起我自己曾经把卧室里两块相邻的白盖板和插座互换了位置,不会是当时我没处理好导致的吧。关键是那个地方在床头里面,如果真是那的问题,就要挪床。可床又重又没有轮子,以前挪的时候几乎就是在地上拖。我的实木地板啊,5555~~~我已经看到地板上出现了一道道不可修补的划痕,黄色的地板变成了红色的心。地板没了,划痕犹在,红色的液体从划的道道里沁出,一滴一滴往下……

“这个地方可以查吗”维修人员的问话把我从幻想中拉出,他指着电视柜后面的插座。我跟他一起把电视柜搬起,当然电视柜上面有电视,不是液晶的,真 tm 沉,头一回一起搬这两个家伙。师傅很麻利地卸下插座面板,拆开包好的绝缘胶布,把扭在一起的线一根一根分开,电表依次测过,说这根有问题。我正欣喜以为这么简单,马上就能搞定呢,他说问题是发现了,但是还要拆别的插座。我心中暗暗祈祷,不要是床那边的插座有问题。接着拆了门边的,餐桌边的,书桌边的插座,没有问题。直到拆了沙发后面的插座(幸好沙发比较好挪),才把电闸合上了。

现在判断出这根出问题的线的两头在哪了,师傅说“没办法,只有抽线了”。什么?竟然要通过这个传说中的可怕的“抽线”才能解决!我一直不能理解这个动作:黑洞洞的细小的管道不见天日,里面你绕着我我绕着你缠着许多根电线,而且管道本身也是弯折的,用蛮力抽动其中一根线,万一抽到哪卡住不动怎么办,断了怎么办,就算抽出来,那怎么另一根怎么穿进去,它在弯弯曲曲的黑暗的拥挤的管道里会听你的话?

当师傅没有急着抽出里面那根有问题的线而是拿着新的电线的一头往线盒里凑的时候,我突然明白了:把新线旧线的头绑在一起,把旧线抽出来,新线就进去了。这么简单的解决办法为什么以前想不到?是不是被看似复杂的恶劣的表象吓住了,感觉似乎很难解决,就不想往下想一点深究一点?世上有许多困难都是这样吧。

维修师傅把两个电线头仔仔细细用钳子牢牢扭在一起,拿绝缘胶带紧紧缠好,再用力拽拽试试牢固程度,然后一个师傅在电视柜那边的插座往外拔电线,另一个师傅在沙发这边的插座往里送电线。我们三人都比较紧张,万一出现抽不动的情况,还可以再从这头抽回来,万一抽着抽着,线在里面断了,那就真的哭都没用了。抽到一半,电视柜那边的师傅说了一声“怪不得,线皮破了”,继续,终于顺利地把新线送了进去,看样子平时积累的人品在关键时刻没有掉链子啊。原来那根旧线中间有一段铜芯都漏出来了,而且线的表皮上还有些水,肯定是这根线通过水接地了。

至此问题已经解决,把插座面板重新安回去,电闸扳上,打扫一下墙灰,推回沙发,搬回电视柜。这个世界复原了!我的地板保住了!!我眼含激动的泪水拉着维修人员的手久久不肯放开,恩人啊……(@¥%……&@#^*%,各位大侠,砖轻点丢,@^&¥%#¥……)

事后回想起来,我不禁为自己的人品感到深深地骄傲——幸好是放假期间出的问题,要是工作日,那就更麻烦了。

老天保佑我别的线不要出类似的问题,我脆弱的心禁不起这折腾。

Topic: 生活

ChinaRen 的退出页面

我一直是从 http://alumni.chinaren.com 登录校友录的。以前退出后,它会自动转到 http://www.chinaren.com,为的是给 ChinaRen 门户首页带去一点流量,我也经常掉入这个“陷阱”,点点里面的链接。

上个星期某天退出校友录后,没有转到 http://www.chinaren.com,而是回到了它本来该回的 http://alumni.chinaren.com。不习惯,非常不习惯,感觉每个工作日例行的登录校友录的这个动作没有完整地做完,我觉得人生像少了点什么。于是第一次主动打开了 http://www.chinaren.com,然后觉得自己——很贱。

万恶的旧社会把人变成了鬼,流氓的中国互联网把人变成了贱人。

另外我再加一句请求,还是像原来那样把退出的页面转向到 ChinaRen 的门户首页吧!

Topic: 商业 社会
订阅 RSS - 博客 | BT的花