2014年7月9日星期三

统计了一下各焦段的照片数量,发现……

蛋疼统计了一下最近拍的照片各焦段的照片数量,画成了这个图(原谅我这一生不羁放纵用Excel):


明显看出来焦段两头的照片比较多,说明需要广角和长焦镜头。
此外70~100mm的照片数量相对较少,说明这个焦段的镜头可以pass。
还有35mm的照片数量明显是个小高峰,说明35mm镜头很实用。

好了,分析完毕,只缺软妹币。请愿意赞助的土豪快快与我联系。


2013年10月13日星期日

淘宝历险记

一直以来就想换手机。
2010年底由于尝试Android开发,在淘宝上入了个华为的T-Mobile定制机U8220,
刚刷机时还行,后来越用越慢,到最后简直无法忍受。经常失去响应,导致我对它的可靠性产生了极大的怀疑。
一怒之下,去年底买了个诺基亚1010,只用来打电话发短信。
一直用到不久前开始工作。

工作后由于人生地不熟,经常需要上网查地图搜东西,所以又暂时启用了U8220,并且把所有不必要的应用都删了。
删了之后发现竟然流畅了一些……但没有用的,我已经被U8220伤透了心。

开始琢磨换个手机。
我对手机的要求不高:打电话、发短信(这个好像也不是必需的)、查地图、能上网、体积不要太大、方便揣兜里,就这些。
玩游戏什么的,没需求,我有电脑,有Pad,干嘛要在手机上玩。
CPU频率、四核五核什么的都是浮云,流畅就行,用起来一——定——要——流——畅!!

预算2000以下。

本来还幻想iPhone 5c的价格能到3000以下,说不定怒买一个。
后来发现价格是4488,坑爹。
ps. 现在iPhone 5c的价格是三千多,性价比其实比5s高多了

也考虑了小米2s 32G, ¥1799.
无奈关注了好几次开放购买,根本买不到,从此从非米粉非米黑变成了米黑。

考虑了魅族MX2,据说发热量很大、待机不行,应该是为了提高游戏性能对硬件有所调整。我不愿为我用不到的功能买单。排除。

华为已经让我伤透了心,不考虑。中兴什么的,可能还不如华为呢。

似乎只有三星了。HTC太丑。

三星9260看上去还行。但是性价比似乎一般。

不知怎么就想起了淘宝!尼玛!!
不知怎么就盯上了9300!
看价格2130,比预算多点,但是比起行货2600+便宜多了。
毕竟是“水货”。我这样想。
虽然9300发布很久了,但是看页面介绍是港行、有发票神马的,就信了!
回想起来还是图样图森破!

下了订单后,心里就惴惴不安,怕买到假货或者翻新货就麻烦了。
网上搜了不少辨别翻新机的文章。
三天后收到机器,刚拿到手里就感觉太假。
对着文章逐条验证,尼玛几乎每一条都符合翻新机/假货的标准。
电池、配件无一不假。机器本身感觉太轻。
总之,不是山寨机也至少是翻新机,反正不是新机器。
当即决定退货。

然后就走上了漫长的退货流程……
一直到现在,还没结束。
东西寄回去了,卖家也签收了。
可能退货的太多了,卖家效率特别低。

不说了,这段经历简直不堪回首。就当是交学费了,人生完整了。

总结一下经验:
1. 不要去淘宝买东西。
2. 如果非在淘宝买东西不行,一定要慎之又慎。
3. 多看看评价,尤其是差评、中评、追加评论,注意鉴别水军。
4. 检查商家的退款率!这条很重要! 我当时根本不知道有这个指标,要是看到那个JS有 12.33%的退款率,近30天退款531次,鬼才会去买它的手机啊!这里我不得不骂一下淘宝,这么重要的指标竟然隐藏这么深。
5. 商家等级、店铺半年内动态评分、双皇冠什么的根本不——靠——谱!
6. JS承诺的“全新正品”啊什么的根本不靠谱!就跟放P一样! 
7. Google一下商家的名字,可以加上"骗子"之类的关键词


我想对JS淘宝说:凸( ̄皿 ̄#)


=================

退货后,对买水货丧失了兴趣。正好又买到一张联通的卡,相当于100块用一年(现在又涨回了200),每个月300M流量。于是找了个双卡双待的机器:华为G700。原来的号照用,新号专门用来上网,挺好。

拿到手机后,感觉不错,让我对华为稍微又恢复了那么一点信心。
屏幕有点太大,一只手操作不过来,不过好在比较薄,装裤兜里也不会不方便。
屏幕颜色有点偏暖,但是在接受范围以内。
系统方面,让用惯了iPad的我有点不太适应。不过4.x的Android比2.x还是好了不少。跟iOS比,还是有进步空间,比如通知中心什么的。
原生系统自带的一些应用让我不太爽,删了一部分。其它的暂时懒得折腾了。

=================

最后曝光一下JS:华粤数码

=================
Follow up 2013-10-20

退货过程虽慢,但是还算是顺利。拿到手机退货款后,开始催JS退运费,JS说要等23小时,我也没纠缠,等到第二天,23小时后,发现还没退,直接投诉,反正几十块钱的事情,哥就陪你玩玩。第二天,JS打电话过来了,是个声音挺好听的妹子,说这就退我运费,求我撤销投诉。晚上回去发现运费打到支付宝了,我就撤销了投诉。这还是16号的事情。






2013年8月28日星期三

Old Habits Die Hard

在长春为期四周的培训结束了。

这一个月来,每天住宾馆,吃免费三餐,衣食无忧,每天除了上课就是和其他人玩。

过得好不快活!

回到北京,房子也没有租,饭也没地方吃,仿佛一夜回到解放前。

在师弟宿舍睡了一晚上。

早上醒来,发现是7:40,正是起床去吃早饭的时候。早饭时间是7:30~8:20。所以需要立刻起床,洗漱要20分钟,吃早饭要20分钟,回来拿上课需要的材料,赶在8:30上课前赶到6楼的教室……哦……班委要求提前5分钟到教室,所以要赶快了……

这是我一个月来每天早上的想法。

然而今天早晨睁开眼,我意识到这些已经成为过去了。

刷牙的时候,回想起在长春时的情景,牙刷、玻璃杯、酒店配的小管高露洁牙膏、水龙头,和周围的一切。

吃饭的时候,想起和其他组员一起围成满满一桌一起吃饭的样子,小盘西瓜、酸奶在桌子中间摆了满满一圈,大家边吃边谈笑风生。

晚上,想起和其他组员一起玩杀人、三国杀、谁是卧底、真心话大冒险,和最后一晚大家争抢着互相合影……

我想哭。

据说用一个月的时间可以培养一个习惯,而这一个月的生活似乎已经grows on me。

唯一值得安慰的是,以后肯定会时不时地见到他们……他们中的大部分……

2013年3月14日星期四

纪念谷歌·瑞德君

今天惊闻瑞德君只有三个半月的寿命了,心中无比沉痛。

瑞德君曾是我的良师,也是我的益友。近几年来,特别是在二〇〇八年左右,从瑞德君那里读到了很多好文章,关注了很多技术界的牛人,开阔了眼界,增长了知识。

随着推特君、微博君的声名渐隆,我每天花费越来越多的时间在阅读别人的微博上面,渐渐疏远了瑞德君。直至今日,我竟发现上个月仅仅去瑞德君处阅读一次而已。

然而没想到,我个人的疏远,竟成了瑞德君离去的原因的万千分之一。而谷歌的黑手终于因此伸向了瑞德君。

死亡是个结束,更是个开始。我相信瑞德君的灵魂不灭,服务大众的精神永存。

瑞德君永远活在我们心中。

2013年3月6日星期三

在Amazon EC2上配置VPN服务器

前几天搞了个EC2的micro instance,免费一年,配置较低,用来翻墙正合适。不过每月流量只有15G,只能省着点用了。

最简单方便的方法当然是用ssh做代理了。这种方法的坏处是打开国内和国外网址时需要在浏览器中不停切换是否使用代理,这虽然有点麻烦,不过还可以忍受。

但让人不能忍受的是——有些软件不能设置代理,所以搞个VPN服务器还是有必要的。

------

先讲怎么在教育网ssh ec2吧。

事情是这样的:
教育网比较奇葩,国外流量需要收费,我等穷人没钱包月(¥90/月),于是只能访问国内IP。
所以开通ec2后,想直接访问是没门的。
不过教育网也有一个很大的好处,就是ipv6流量是免费的——不需要花钱包月,ipv6的地址可以随便访问,当然包括国外的ipv6地址。

=>所以,如果不想花钱包月,又想访问国外网站,同时还能翻墙,不受墙的干扰,唯一的方案是,通过ipv6连接国外的vps来翻墙。

但是没法直接通过ipv4访问ec2,该怎么办呢?
更要命的是,ec2不支持ipv6.

我不禁陷入了沉思……

看到网上有链接说通过he的6to4来搞,很深奥的样子,没耐心看下去。

后来,我发现了ELB(Elastic Load Balancing)。ELB这货本来是给高富帅用的,用来在多个instance之间做负载均衡。最重要的是ELB是支持ipv6的,而且每月15G流量,已经包含在ec2的免费套餐里面,可以将连接转发到各个instance上。

然后我就试了一下。不试不知道,一试真奇妙。通过设置TCP转发规则,可以将到ELB的请求转发到ec2的instance上,这样就很容易地解决了通过ipv6 ssh到ec2的问题。

------

然后是搭建VPN

主要有三种VPN:PPTP、L2TP、OpenVPN。

刚开始搞了个PPTP的VPN,用了这个gist,很快就弄好了。坑爹的是,当我想通过ipv6连接时,windows告诉我说PPTP不支持ipv6,尼玛!

然后试L2TP,用的是这个。 很快又发现悲剧了,因为ELB不支持UDP转发,摔!

最后只好求助于万能的OpenVPN了。因为OpenVPN配起来比较麻烦,所以刚开始才会想去搞PPTP。但事到如今只好祭出OpenVPN这个大杀器了。
主要参考了这篇文章:Howto setup OpenVPN server
当然这篇文章也漏了一些细节,
比如:配置完server之后,应该启动openvpn服务,原文没提到。
因为openvpn没启动,ifconfig的结果里面就不会有tun0这个设备。所以当时我在“Setup NAT”这里卡了壳,半天才反应过来是怎么回事。

另外对天朝用户比较重要的几个选项:
push "redirect-gateway def1 bypass-dhcp"
push "dhcp-option DNS 172.16.0.23"
push "dhcp-option DNS 8.8.8.8"
用来绕过DNS污染。
刚开始没开这几个选项,结果导致连接上后仍然上不了被墙的网站。


如果比较懒的话,想在所有设备上用同一个客户端配置文件,则需要打开这个选项:
duplicate-cn
另外有几篇文章可以参考一下:

然后是对应服务器配置修改客户端配置文件,注意cipher选项要和服务器一致。
客户端协议应该是tcp6,不是tcp,更不是udp。
有问题看日志,对应微调一下。
客户端我用的是yegle修改的支持ipv6的openvpn客户端。貌似2.3版的openvpn支持ipv6了。
服务器版本用的是Amazon库里的,2.2版本。

后来就成功连上了!
翻身农奴得解放!
感谢党,感谢国家!

回想一下,感觉很奇葩,客户端用的是tcp6,服务器是tcp,中间经过了ELB,最后竟然连上了,并且能正常工作,不可思议。所以要表扬一下OpenVPN和Amazon。

另外希望Amazon EC2能够早日支持ipv6,就省了这许多麻烦了。

- END -

2013年2月25日星期一

骚年D对《少年Pi的奇幻漂流》的奇怪书评

-*- !有剧透,慎入!-*-
-*- !有剧透,慎入!-*-
-*- !有剧透,慎入!-*-
-*- !有剧透,慎入!-*-
-*- !有剧透,慎入!-*-


这本书是在回家的动车上开始看的,断断续续看了三分之一,直到前几天寒假结束回到学校,又花了两个晚上挑灯夜读,才看完。

前面一段比较boring,我边看边想,什么时候才到老虎啊。

但是其中比较有意思的是作者对动物园的“辩护”。作者从动物的角度解释了为什么动物们“放弃自由”在动物园里安居乐业,即使有机会逃跑也不会逃跑。因为动物有很强的地盘意识。在它们看来,动物园能够提供食物、饮水、保护、休息的地方等等,因此它们就会像在野生环境中一样将那里作为自己的地盘。在它们看来:“自由”是神马东西?可以吃吗?

然后作者说:“宗教面临着同样的问题。关于自由的某些错误观念使两者都遭了殃。”

在书的第二部分,Pi的奇幻漂流终于(上帝保佑那些死去的人们)开始了。
这部分比较精彩,各种对海上生存、海洋动物的描写。特别是开始的时候几只动物互相残杀的描写,非常血腥和紧张刺激。

我边看边想,多么美好的故事啊……人类多么坚强伟大啊,大海是多么奇异瑰丽变幻莫测啊……

——直到我看到了第三部分,看了故事的另一个版本。

尼玛,毁三观啊有木有!

原来在第二个版本中,四只动物的互相残杀变成了四个人的互相残杀,动物的互食变成了人的互食。原本我们并没有太注意的情节忽然变成了最重要的部分,一个问题突然变得重要了起来——到底哪个版本是真的?

这才是作者的目的吧, 先让读者堕入温柔乡里,然后再一刀扎得我们鲜血淋漓?!

我想第二个版本是真的——我“理性”的大脑告诉我。虽然我觉得心在颤抖。
否则Pi怎么会编出来这么一个残忍的故事呢?四个人和四只动物怎么会正好对应上呢?

我想真正的故事是这样的:

四个人在一个救生艇里,互相残杀,先是法国厨师杀掉了华人水手和Pi的母亲,然后Pi杀掉了法国厨师。无疑这是个非常残忍的事情,特别是对一个十几岁的少年来说,出于一种自我保护的本能,在漫长的海上生活中,Pi 幻想了另外一个版本的事实,即故事的第一个版本。

一切都是选择。Pi选择对人们讲另一个故事,只有动物的故事。调查员们在报告中也选择去相信有老虎的故事。
有时候事实并不重要,真相永远不会大白于天下 ,关键是你选择去相信什么。

这种选择反映了人性。就像动物选择呆在动物园,或者逃出去再返回来。

这本书的序言里面说:“我有一个故事,它能让你相信上帝。”
这本书同样也是关于宗教的,书中处处有关于宗教的句子或情节。 比如上面的几处引言,比如Pi同时信三个宗教:印度教、基督教、伊斯兰教。书中详细讲述了Pi信仰这三个宗教的过程,还有成年Pi家中的摆设。甚至还让三个宗教的传教士相遇然后互相攻击。

不过我没发现这个故事能让我相信上帝。我想宗教信仰其实也是个选择问题,信则有,不信则无。目前为止,我还是个无神论者。
或许对于这本书的宗教观点还能有更深的解读,不过我目前只能领会到这个程度,所以不再胡扯了,以免贻笑大方。



2012年11月27日星期二

我想要的爪机

The world is crazy.

每天睁眼的第一件事是抓起手机刷微博;
在等公交车的时候做的事情是拿出手机刷微博;
在公交车上一手扶着钢管(-___-!!),另一只手在做的事情还是拿着手机刷微博;
吃饭的时候......
路上走路的时候......
休息的时候......
上厕所的时候......
睡前......

这大概是我若干个月之前的状态.

后来我顿悟了!

不, 不是因为手机流量超了.
不, 也不是因为走路的时候撞树上了.

突然有一天, 我厌倦了这么生活.
路上有那么多的妹子, 那么好的风景, 各种奇怪的人类...
为什么不去看她们它们他们, 而是盯着手机呢?

我决定不再这么生活.
我决定不再用手机刷微博——好吧,偶尔可以.

后来,
后来我就买了诺基亚1010!
双卡双待! 音乐手机! 支持MP3播放! 支持高达16GB micro SD存储卡! 配备了诺基亚立体声耳机! 内置调频收音机! 内置强光手电筒! 1020mAh高容量锂电池! 待机时间长达32天! 1.8英寸彩色大屏幕! 分辨率高达128 × 160像素! PPI直逼视网膜屏有木有啊有木有! 手机重量轻! 易携带! 坚固耐用! 有防身功效! 实乃居家旅行杀人越货必备之良器! 原价八千八百八十八! 现价只要一百八十八! 赶快拿起你的电话订购吧!! (repeat)

啊......喝口水......

书归正传.

现在的智能机非常普及了, 不是智能机都不好意思拿出来见人.
所以我的宇宙最强机一般都揣兜里, 偶尔偷偷摸出来瞟一瞟时间.
让我奇怪的是, 爱疯卖这么贵竟然还有这么大的市场占有率.
有一次在公交车上我看到周围有5个人拿出手机, 个个都是爱疯.
感情首都人民的生活水平都这么高了!

手机占用了我们太多的时间.
因为它的功能过于强大.

我想要的爪机, 功能不用太强大.
能打电话, 发短信(将来可能会被即时通讯取代), 收发邮件, 查地图, 定位, 上网, 就可以了!
不需要安装各种应用.
不需要游戏.
不需要微博.

我的碎片时间我宁愿"浪费"掉.

谢谢!

2012年10月17日星期三

今天太背了

早上到实验室发现电工正站在我的椅子上装插座,
我在旁边等了半天才弄好.
插座弄好后, 桌子上书上地上一片狼藉.
虽然电工好心铺了张报纸盖住电脑, 但桌子上书上抱枕上还是有一层混凝土粉末.

->只好自己打扫, 浪费了半个小时的时间

然后同样为了改造电路, 实验室断电断网.
问题是恢复供电后, 网络出问题了...
然后花了好几个小时排查,
最后发现问题出在无线路由器上.
无线路由器本来是作为AP用的, 结果工作在了路由器模式, 导致整个实验室都不能正确获取IP.

->浪费了两个小时+的时间

然后买东西用手机银行付费, 结果付费链接死活打不开. 当时要不是考虑到最近在找工作需要手机, 真想把这个破手机摔了.
后来好容易打开了, 发现限额超了.
只好重启到Windows下登录网银改限额.
中间支付宝还要我重新装插件神马的就不提了.

->浪费了一个多小时的时间


心情被这些事情搞得挺郁闷的.
想早点回去睡觉, 让这背运的一天早点过去.

明天还有面试. 希望今天是在攒RP, T______T




2012年4月25日星期三

[NOTE] 在V460上继续折腾Mac OS X Lion

一年一度的折腾又开始了。

安装过程参考:
[教程] V460 MBR分区成功安装lion 并升级到10.7.2,部分驱动(B/G/Z460可参考)
基本都用的这篇文章中的驱动和OSInstall文件。

其中AppleIntelPIIXATA.kext应该是不需要的。因为这个kext是为了支持SATA硬盘的,而我的硬盘本身就是AHCI模式。

本来用的OSInstall文件是从另外一个地方下载的,结果导致开始安装后报错:
安装器不能准备该磁盘以进行安装⋯⋯
换了上文中的OSInstall后正常了。

目前系统根目录/Extra下的文件org.chameleon.Boot.plist内容为(XML格式乱掉了,大家领会精神吧):
        DSDT
        /Extra/DSDT.aml
        Default Partition
        hd(0,4)
        EthernetBuiltIn
        Yes
        GraphicsEnabler
        Yes
        Graphics Mode
        1366x768x32
        Kernel
        mach_kernel
        Kernel Flags
        npci=0x2000
        Theme
        Default
用到的驱动:
AppleACPIPS2Nub.kext/
ApplePS2Controller.kext/
Atheros8131cEthernet.kext/
ElliottForceLegacyRTC.kext/
FakeSMC.kext/
NullCPUPowerManagement.kext/
越少越能减少KP(Kernel Panic)的概率。

目前声卡还没驱动起来,装了个VoodooHDA-2.7.3,还没重启试试。

显卡似乎驱动起来了,偏好设置->mission control 去掉第一个勾,Dashboard中才有水纹效果。

网卡似乎正常。

摄像头正常。

上次重启前,Finder和偏好设置都挂了,不知道什么原因。

上上次重启和上上上次重启是因为KP,原因未知,导致更新下载了三次才完成。

(话说下载更新的时候,满世界找安装包。后来才发现可以在官网下载,-_____-!! )


其他的只能用时间去检验了。


目前似乎是以64位模式运行,这是不是就意味着我可以把换下来的2G内存插回去,这样就有6G内存可以用了?!哇哈哈哈哈哈哈⋯⋯

不过用来干嘛呢?

之前跑得比较慢的“大型”应用也就是XCode和PS了,不知道内存增大后有改观没有。


正在下载XCode,慢得跟什么似的。


Chameleon启动参数:
-v Verbose
-f 忽略Extensions.kext,即忽略kext Cache
-x 安全模式,这种模式下不会自动挂载Windows分区和USB设备


其它参考:修复kext权限 & 重建Cache


希望明年不用再折腾了。


》》》》》》Update 04-26

终于把声卡搞定了。

用的就是VoodooHDA的驱动:VoodooHDA-2.7.3

安装后,参考这个帖子

把/Extra下面的kext都移到/S/L/E下面,然后重建cache(参考修复kext权限 & 重建Cache

(为防万一,/Extra下面的kext并没有删掉。我发现在重建cache之后,过了一小段时间,耳机里就突然有声音了。)

然后在org.chameleon.Boot.plist中添加:
UseKernelCache
Yes
然后重启吧骚年!

据说原因是VoodooHDA在系统使用cache的时候才会正常工作⋯⋯

至此,Lion基本达到了和SL同样的正常工作水平。

》》》》》》Update 04-26

莫名其妙在运行的时候又KP了,然后各种方式都启动不能。只好进Windows,把UseKernelCache参数删掉,然后用-f参数启动,总算进系统了。

》》》》》》Update 04-26

竟然突然黑屏了⋯⋯然后启动不能。不用-f, 失败;用-f,失败;再次用-f,成功。

然后根据这个帖子,把IOPCIPrimaryMatch改为IOPCIMatch,id本来就是那样,没改。
根据KP时输出的信息可一看到vendor ID和device ID。
KP的问题应该还是出在VoodooHDA上。

》》》》》》Update 04-27

真是各种崩溃啊。有时怀疑是显卡驱动的问题(官方驱动,graphicenabler=true) ,更多时候更像是VoodooHDA的问题。
手动修改了VoodooHDA/Contents/Info.plist,把其中的key为VoodooHDA-1的删掉了,然后手动kextunload, kextutil,终于把声卡驱动起来了。
开始时是把key为VoodooHDA-2的删掉了,然后手动加载驱动,完全没有效果。

目前看似正常了,有待时间的检验。

》》》》》》Update 05-05

一切正常。

把UseKernelCache=Yes加回去了,似乎可以正常使用kernel cache了,开机速度提高了。
不然的话必须使用-f参数才能正常启动。

2012年4月21日星期六

生命没有意义

标题是为了哗众取宠. 我并没有意愿自绝于人类(事实上我活得很好很开心), 也并不是在表达悲观失望.
至于为什么说"生命没有意义", 请诸君听我慢慢道来.

我发现时间过得太快了.
一转眼, 我的三年研究僧生涯已经过了一多半.
而且我发现自己越来越不愿意离开北大.
这种感觉在我在东大的时候是几乎没有过的.

在东大的绝大部分时间, 我都在痛恨着东大, 并盼望着早日离开那个鬼地方.
感觉很压抑, 很拘束.
但是有一天, 当我从本部坐校车回到九龙湖的时候,
坐在窗边, 看着路边花坛里稀疏的草, 光秃秃的树,
(我想那是春天)
突然感觉到眷恋, 不是一丝, 很多丝.

我想我的青葱岁月要死在这里了.

后来工作, 同样内心总是挣扎着想离开.
终于在一年多后, 辞职的事情尘埃落定的时候, 心里突然有一点伤感, 一丝, 不是很多丝.
我想大概是对前途未卜的恐惧.

后来, 回到校园, 大约从我踏进北大校门的那天起, 我就不想离开了.

或许"眷恋"有个阀门,
2008年的时候被一些草木打开,
从此就关不上了.

所以偶尔想起还只能在北大呆一年多, 总是会发出"逝者如斯夫"的感叹.
再联想到自己还一无所成, 老纸真的还想再活五百年.

你说这个世界上真的存在吸血鬼吗?
变吸血鬼也不错, 这样就有很多很多很多的时间用来学习和胡思乱想了.
说不定会得几个诺贝尔奖玩玩.

哎你说爱因斯坦会是吸血鬼吗?

------------------
以上是离题万里的絮絮叨叨.
下面是正题.
------------------

前段时间, 看了《上帝掷骰子吗--量子物理史话》这本书.
发现物理学发展到量子这个层次, 快要变成扯淡的科学了,
"哥本哈根解释"居然跟唯心主义勾搭上了.
严重怀疑那帮人是笛卡尔, 王阳明的信徒.

事实上上一段也是我在胡扯.
我知道物理学没有那么简单, 不是看了一本科普读物就可以指手画脚的.

当然就我浅薄的物理知识和直觉来看, 这种唯心的解释不大可能是正确的.

或许再过几百年, 那时的浅薄的科普书籍读者可以居高临下指着现在的种种假说哈哈大笑,
就像我们现在做的那样.

但是我可能不会知道那时的"真相"了.

因为我不是不死之身.

再联想到我可能看不到一百年后的"高科技"的生活状态.
总是感到OO的伤感.

然而, 这有什么关系呢?!

自从看过《上帝掷骰子吗--量子物理史话》之后,
突然对这类的科普书籍(书籍, 视频...信息)感兴趣起来.
于是从日理万机的忧国忧民的我不coding谁coding的工作中抽出一点时间, 看了BBC的几集纪录片: How.The.Universe.Works

不看则已, 一看.....尼玛!

得到一个结论: 生命是没有意义的.

地球真的很小很小很小很小......就算地球上的生命全部毁灭, 就算连地球都消失.
宇宙还是宇宙, 恒星, 行星, 黑洞, 和各种乱七八糟的存在, 还是各自存在着, 并且以人类无法企及的时间尺度分久必合合久必分.

就算你我他拼了老命地奋斗奋斗奋斗, 就算混成了全人类的大救星, 从宇宙的尺度看, 毫——无——意——义!

根据这部纪录片里的说法, (或许也是目前科学界的主流看法)
若干年后, 当所有的恒星的燃料都燃尽, 整个宇宙会陷入一片黑暗. (S01E04 Stars末尾)

如果人类那时还存在的话,或许他们会学会用其它物质来制造光。
但是根据自然选择的原理,生物最终会丧失视觉。

想象一下一片黑暗的生活吧……
而且不是因为小区停电,是整个宇宙都停电了……

每想到这一点,就倍感“绝望”,非常牛X的若干万亿年尺度的绝望。

如果想到有星星的日子也不过是整个宇宙的一瞬间, 你会不会绝望?

现在, 你告诉我, 生命有意义吗?



我告诉你, 有意义.

The Big Bang Theory(不是那个电视剧啊亲)关于宇宙的未来貌似有两种说法:
1. 整个宇宙最终会扩散开来, 永无尽头
2. 在某个时间点, 宇宙会开始坍缩, 坍缩到一点, 然后发生第N+1次Big Bang

我愿意相信第2种说法.

按照决定论的思想, 如果再次发生Big Bang, 宇宙的历史会再次精确地重演,
也就是说, 你我会再活一次, 然后若干年后, 再活一次, 再活一次, 再活一次, 再活一次......
你活腻了也不行, 因为这种重演永无止尽.

如果是非决定论, 也就是说按概率活着, 地球生命的存在是个很小很小很小很小.....很小很小的小概率事件,
也就是说是个很大很大很大很大......很大很大的奇迹,
那么, 下一次Big Bang也许不会产生你我,
但是因为Big Bang永无止尽, 所以总有一天, 还会有个银河系, 还会有个太阳系, 还会有个地球, 还会有人类, 还会有你我他.
或许我们的生活和现在这个cycle有些些许的不同, 也可能完全地相同,
总之, 我们原地满血复活了. 如果我们仍然残留这个cycle的意识的话, 会以为是信春哥的缘故.

一想到可以活很多次, 心中总是充满了力量.



结论:

对于一个宇宙, 生命没有意义. 对于很多个宇宙, 生命稍微有点意义.
想想吧, 老纸活着是为了很多个宇宙! 牛X吧!!



上面这个结论是扯淡.

真正的结论是, 生命的确是没有意义的——如果从外界来看.
但是从自己来看, 从"我"来看, 生命的意义大于一切, 大于狗屁宇宙.
或许这就是王阳明"心外无物"的含义.
有空找点心学的书来拜读拜读.


诸位看官看到标题是不是感到有些提心吊胆, 为我的生命安全担心.
看到最后是不是感到胆战心惊, 为自己生命的渺小痛哭流涕?
如果是的话, 本人调戏全人类的目的就取得了一个阶段性的成果.


好了, 以上就是最近的一些胡思乱想.
"整理"出来, 放到这里, 算是一篇博文, 顺便为博客除除草.

2012年2月3日星期五

2011总结与2012展望

最近越来越懒于写博客了.
可能很大程度上归咎于微博的兴起.
即使偶尔有表达的冲动, 由于微博发布的方便性而将这种冲动拼命压缩压缩压缩压缩到140字以内.
为什么不呢, 毕竟Echofon就在浏览器的右下角, just one click away.
为什么要写博客呢, 毕竟我还要打开博客后台, 拼命码字码字码字码到看起来像一篇文章的长度.

但是, 看着twitter上的碎碎念, 再看看博客上的荒凉零落, 两相对比, 总觉得过去一段时间过得没那么充实.

无论如何, 在这个新旧年交替的时候做个总结与展望吧.

2011总结

移动开发

2010年底(准确地说是十月), 为了参加Google的Android应用大赛, 花了半个月的时间学习Android开发, 并动手写了个用于名片分享的小应用. 为了测试程序, 还买了个廉价的Android机.
这应该算是关注移动应用的开始.

2011年初, 放寒假在家实在闲得没事干, 于是决定开始学习iOS开发, 入门教程就是那个经典的Stanford iOS开发课程视频. 如果没记错的话, 2011年除夕是在边看春晚边看教程中度过的. 看了几集之后就跃跃欲试了. 真正动手写程序是在大年初一.

当时对移动阅读很感兴趣, 于是开始着手学习这方面的东西. 其中最重要的一块就是正文抽取. 当时看了不少这方面的论文和文章. 也了解了很多现有的产品, 如readability/instapaper/readitlater/etc.

当时脑子里整天想的就是该如何做正文抽取, 纸上谈兵地分析比较各种算法. 想了一段时间后选择了一种开始动手实现. 实现的难度其实不大, 难的是参数的调优. 没有用大量测试集进行严格的测试, 调整参数只是凭"感觉"和少量的测试.

然后自己开发的第一个应用Mage Reader就逐步成型了.

后来, 后来就注册了IDP, 把Mage Reader放到了苹果应用商店里面.

放上之后, 感觉很累, 休息了一段时间.

然后对cocos2d又有了兴趣, 花了十天时间写了个小游戏: 24点.

目前为止这两个应用的收入接近于0, 至少和我付出的时间和精力相比不值一提.
但是编程的时候很开心并且很投入, 这就值了.
再说并不是所有付出的回报都是以金钱的形式体现.
很多付出的回报是----知识, 机会, 或者叫做运气, 它们是同义词.

在此期间, 很多童鞋都提供了很多的帮助, 包括花花/ftao/kai/tjj/etc, 感谢他们.

关于学习

深圳没有很多课可以选, 感兴趣的更少. 不过最后的绩点倒是很高, 这点出乎我的意料.
可能是我学习真的比以前认真了. 也有可能因为老师给分比较慷慨. 或者二者都有.

分布式系统与NoSQL

暑假回到北京后, 开始做导师的项目.
然后就开始研究Hadoop和NoSQL, 几乎整个学期都在看这方面的东西.
目前还只限于了解, 真正动手做只是刚开始.

10月底到12月底在IBM CRL实习了一段时间, 过得还比较充实.

关于生活

回到北京后, 住在学校万柳公寓, 距离学校20分钟公交车程. 每天坐公交往返于学校与宿舍之间, 挺麻烦的. 平均每天都有一个小时浪费在路上.

北大食堂很多, 饭菜还好, 至少可以找到不少可以吃的菜. 算得上是价廉物美了.

看了一些书, 《黑客与画家》、《浪潮之巅》, 最近在看《Steve Jobs》, 英文版, 看得比较慢.
不久之前入手了个Kindle 3, 这段时间也用它看了一些书, 《1Q84》、《三体》, 等等.

根据在豆瓣上的统计, 2011年我看了 203 部电影!!
这两个叹号一个是为了炫耀, 另一个用来表达惊讶, 因为这表示我花了至少400个小时在电影上面.

关于爱情

(null)


2012展望

对于自己的2011, 我基本满意, 没有浪费太多时间. 不足之处在于, 在学术方面没有多少进展, 没有选定一个方向深入进去. 所以, 希望2012年能够在某个方向上深入下去, 更学术一点. 最好能发发paper.
另外一个努力的重点是GRE, 希望英语水平能提高点.
还有余力的话, 找个实习?
选一些数据挖掘/机器学习的课程?

还要加强锻炼, 很久没有像样地运动过了.
多看些书.

减少浪费在社交网络上的时间. 特别是人人网.



2011年8月17日星期三

Mage Reader 2.0 的截图

上一版本(v1.0)的截图是没有p过的,全是真正的截图。
(当然在图片上加上帮助说明之类的文字不算。)
现在看来很丑很简陋。

后来在cocoachina论坛上看到有人说图标和截图灰常重要,
除了图标外,在截图上也要下功夫,能p的一定要p。

所以,在2.0版的截图上稍微花了点功夫。
因为翻页特效(page flip)看上去是最大的“亮点”,所以p了一下这个。(其他还是没p的)

下面展示一下我高超蹩脚的ps技巧:


最后希望Mage Reader 2.0快点审核通过吧。

2011年7月8日星期五

再见,深研院!你好,燕园!

再见,深研院A栋实验室C202C203大学城图书馆镜湖五四塔J栋国际会议中心D栋阶梯教室山景阁N栋303饮水机热水器空调20块包月10M网络坏掉的体重秤北大食堂二楼的拉面刀削面和无所不在的肉末清华食堂白菜粉丝茄子花菜土豆片土豆条鱼虾各种饼校园超市的酸奶煮意坊大学论语从没去过的subway健身房的跑步机租的24号自行车清华的长廊周末总是停满车的停车场路边红绿相间的凤凰木。

你好,燕园理科一号楼迷宫无数的实验室饭卡澡卡网卡校园卡康博思学一学五农园食堂便宜的饭菜上不了的国际网藏书丰富的图书馆简陋得让人泪流满面的检索页面三角地百年讲堂西门的天桥畅春新园畅春园阴暗的地下室无空调风扇卫生间不通风无手机信号只能摆得下四张床的堆满了杂物的宿舍五六年未见的公共盥洗室冷水淋浴间门口饭馆18块的地三鲜。

2011年6月11日星期六

【翻译】飞蛾之死 (弗吉尼娅·伍尔芙)

其实是英语课的作业,翻译了一个晚上。
====================================

飞蛾之死
弗吉尼·伍尔芙
准确地说,白天飞来飞去的蛾子并不叫做飞蛾。在窗帘的阴影中熟睡的常见的黄蛾总是会让我们大吃一惊,但是这些飞蛾并不会唤起我们对于黑暗的秋叶和绽放的常青藤的愉快的情感。它们是杂交的产物,既不像蝴蝶一样色彩缤纷,也不像它们的同类一般色彩黯然。然而在我面前的这个,有着狭长的干草色的翅子,翅子的边缘还有着颜色相同的流苏一般的纹饰,看上去活得心满意足。这是一个令人愉悦的九月中旬的早晨,温和、宜人,只是风吹得比夏季更加强烈了一些。犁已经在窗户外的田野中留下了刻痕,犁头过处,泥土被压得平平整整,散发着湿润的气息。这种活力的气息从田野和更远的地方滚滚而至,以致令人难以把心思完全放在书本上。白嘴鸦在忙着过它们每年一度的节日:它们绕着树顶飞来飞去,直到看上去仿佛有一张巨大的缀有成千上万个黑结的网撒开在空中。过了一会儿,这张网慢慢罩在树上,直到每一个树枝的枝头都有了一个结。突然这张网仿佛再次被撒到空中一样,然而是绕了一个更大的圈,伴随着很大的喧闹和叫嚷,就像被撒到空中然后慢慢落到树上这个过程是个极为令人兴奋的体验。
激发白嘴鸦、农夫、马匹、甚至光秃的小山丘的这种力量,也让飞蛾从窗玻璃的一边飞到另一边。这让人情不自禁地盯着看。这的确让人感到一种怜惜。那个早上似乎本应是快乐的,但是一只飞蛾对于短暂的生命的热情却让人不禁想到命运的残酷。它快乐地飞到格子的一个角落,在那里没有待到一秒钟,又飞向了另一个角落。接下来除了飞向第三个和第四个角落,它还有什么选择呢?尽管山丘是那么延绵起伏,天空是那么辽阔,房屋上空的炊烟飘得那么远,远处不时响起的海轮的汽笛声如此浪漫,这就是它所能做的事。它做了力所能及的事。看它,在它那脆弱而纤小的身体里就像有一条看不见的纤细而晶莹的充满整个世界的能量细线。当它频繁在玻璃上飞来飞去的时候,我仿佛看见了这条明亮的细线。它微小而无足轻重,但是充满了生命力。
然而,正是因为它的渺小和简单的能量穿过了开着的窗户,在人们的脑海中的狭小而错综复杂的走廊上横冲直撞,人们对它充满了某种惊奇且悲哀的感情。这就像有个人取了一滴生命的珠子,用绒毛和翅膀进行了尽量简单的装饰,然后让它转着圈舞蹈来向我们展示生活的真谛。人们不会忘记这种奇怪的感觉。人们倾向于忘记所有关于生活的东西,只是把它当作坎坷、无法改变、虚浮和苦难的,所以不得不小心谨慎地面对。人们又不禁会想到,如果生命将它生就为另一种模样,那又会怎么样呢?这让人们开始以一种怜悯的态度看待它这些简单的动作。
过了一段时间,它显然开始感到疲倦了,它停到了沐浴在阳光中的窗户边缘上。随着这种奇怪的景象进入尾声,我完全忘记了它。然后,当我抬头的时候,我的目光再次被它吸引过去。它正试图重新开始舞蹈,但是它只能僵硬或者说是笨拙地扇动翅膀飞到窗玻璃的底部。当它试图飞过去的时候却失败了。专注于其他事情的我看了一会儿这些无用的努力,而没有任何想法,只是单纯等着它再次飞起来,就像人们等待一台停了一会儿的机器重新启动起来却没去思考它停止的原因。差不多试了七次之后,它终于从木窗框上滑落下来,挥着翅膀向后跌到了窗台上。它无助的姿势唤醒了我,我终于意识到它遇到了困难。它再也飞不起来了,它的腿徒劳地拨动着。但是当我伸出铅笔想去帮助它翻过身来时,我意识到这种失败和笨拙意味着即将到来的死亡。想到这里,我又放下了手中的铅笔。
它的腿又开始猛烈地拨动了,在我看来就像在与敌人搏斗。我向门外看去,外面怎样了?大概已经到了中午,田地里的劳作停止了。静止与安静代替了之前的喧闹。那些白嘴鸦已经飞走去小溪边喝水了。马儿们站着一动也不动。但是那些力量仍然在那里,充满了外面的每个角落,中立、客观,不纠结于任何特别的事物。某种程度上讲这与眼前的这个有着枯草般的颜色的小飞蛾恰好相反。做任何事情都是徒劳的。人们只能旁观着那些细小的腿做出的离奇的努力来抗拒即将到来的毁灭。这种毁灭的力量可以让整个城市连同大批的人类沉入海底。没有什么能够抗拒死亡。然而在因为筋疲力尽而停了一小会儿后,它的腿又开始动了。这最后的抗拒是如此强烈和疯狂,它终于成功地翻过了身来。人们的同情当然永远会站在生命的一边。当没有人关心或者毫无所知的时候,一个无关紧要的小飞蛾为了维持别人不会珍惜和保留的生命,付出了不可思议的努力去对抗如此巨大的力量。这让人莫名地感动。不知为何,我再一次见证了生命的死亡。我再次举起了铅笔,尽管我知道这是徒劳的。但是甚至在我这样做的时候,死亡的象征再次毫无疑问地显现了出来。它的身体舒展开来,旋即变得僵硬。挣扎结束了。这个渺小的生命逝去了。看着这只死去的飞蛾,如此强大的力量战胜了如此普通的对手,这种胜利却让我感到惊讶。就像几分钟前生命曾经很诡谲一样,现在死亡也变得诡谲了。这只翻过身来的飞蛾终于优雅而毫无怨言地安详逝去了。是的,它好像在说,死亡比我强大多了。

(附原文)
The Death of the Moth (1942)
VIRGINIA WOOLF
Moths that fly by day are not properly to be called moths; they do not excite that
pleasant sense of dark autumn nights and ivy-blossom which the commonest yel-
low-underwing asleep in the shadow of the curtain never fails to rouse in us.
They are hybrid creatures, neither gay like butterflies nor somber like their own
species. Nevertheless the present specimen, with his narrow hay-colored wings,
fringed with a tassel of the same color, seemed to be content with life. It was a
pleasant morning, mid-September, mild, benignant, yet with a keener breath
than that of the summer months. The plough was already scoring the field oppo-
site the window, and where the share had been, the earth was pressed flat and
gleamed with moisture. Such vigor came rolling in from the fields and the down
beyond that it was difficult to keep the eyes strictly turned upon the book. The
rooks too were keeping one of their annual festivities; soaring round the tree tops
until it looked as if a vast net with thousands of black knots in it had been cast up
into the air; which, after a few moments sank slowly down upon the trees until
every twig seemed to have a knot at the end of it. Then, suddenly, the net would
be thrown into the air again in a wider circle this time, with the utmost clamor
and vociferation, as though to be thrown into the air and settle slowly down
upon the tree tops were a tremendously exciting experience.
The same energy which inspired the rooks, the ploughmen, the horses, and
even, it seemed, the lean bare-backed downs, sent the moth fluttering from side
to side of his square of the windowpane. One could not help watching him. One,
was, indeed, conscious of a queer feeling of pity for him. The possibilities of plea-
sure seemed that morning so enormous and so various that to have only a moth’s
part in life, and a day moth’s at that, appeared a hard fate, and his zest in enjoy-
ing his meager opportunities to the full, pathetic. He flew vigorously to one cor-
ner of his compartment, and, after waiting there a second, flew across to the
other. What remained for him but to fly to a third corner and then to a fourth?
That was all he could do, in spite of the size of the downs, the width of the sky,
the far-off smoke of houses, and the romantic voice, now and then, of a steamer
out at sea. What he could do he did. Watching him, it seemed as if a fiber, very
thin but pure, of the enormous energy of the world had been thrust into his frail
and diminutive body. As often as he crossed the pane, I could fancy that a thread
of vital light became visible. He was little or nothing but life.
Yet, because he was so small, and so simple a form of the energy that was
rolling in at the open window and driving its way through so many narrow and
intricate corridors in my own brain and in those of other human beings, there
was something marvelous as well as pathetic about him. It was as if someone had
taken a tiny bead of pure life and decking it as lightly as possible with down and
feathers, had set it dancing and zigzagging to show us the true nature of life. Thus
displayed one could not get over the strangeness of it. One is apt to forget all
about life, seeing it humped and bossed and garnished and cumbered so that it
has to move with the greatest circumspection and dignity. Again, the thought of
all that life might have been had he been born in any other shape caused one to
view his simple activities with a kind of pity.
After a time, tired by his dancing apparently, he settled on the window ledge
in the sun, and, the queer spectacle being at an end, I forgot about him. Then,
looking up, my eye was caught by him. He was trying to resume his dancing, but
seemed either so stiff or so awkward that he could only flutter to the bottom of
the windowpane; and when he tried to fly across it he failed. Being intent on
other matters I watched these futile attempts for a time without thinking, uncon-
sciously waiting for him to resume his flight, as one waits for a machine, that has
stopped momentarily, to start again without considering the reason of its failure.
After perhaps a seventh attempt he slipped from the wooden ledge and fell, flut-
tering his wings, on to his back on the windowsill. The helplessness of his attitude
roused me. It flashed upon me that he was in difficulties; he could no longer raise
himself; his legs struggled vainly. But, as I stretched out a pencil, meaning to help
him to right himself, it came over me that the failure and awkwardness were the
approach of death. I laid the pencil down again.
The legs agitated themselves once more. I looked as if for the enemy against
which he struggled. I looked out of doors. What had happened there? Presum-
ably it was midday, and work in the fields had stopped. Stillness and quiet had re-
placed the previous animation. The birds had taken themselves off to feed in the
brooks. The horses stood still. Yet the power was there all the same, massed out-
side, indifferent, impersonal, not attending to anything in particular. Somehow it
was opposed to the little hay-colored moth. It was useless to try to do anything.
One could only watch the extraordinary efforts made by those tiny legs against an
oncoming doom which could, had it chosen, have submerged an entire city, not
merely a city, but masses of human beings; nothing, I knew had any chance
against death. Nevertheless after a pause of exhaustion the legs fluttered again. It
was superb this last protest, and so frantic that he succeeded at last in righting
himself. One’s sympathies, of course, were all on the side of life. Also, when there
was nobody to care or to know, this gigantic effort on the part of an insignificant
little moth, against a power of such magnitude, to retain what no one else valued
or desired to keep, moved one strangely. Again, somehow, one saw life, a pure
bead. I lifted the pencil again, useless though I knew it to be. But even as I did so,
the unmistakable tokens of death showed themselves. The body relaxed, and in-
stantly grew stiff. The struggle was over. The insignificant little creature now
knew death. As I looked at the dead moth, this minute wayside triumph of so
great a force over so mean an antagonist filled me with wonder. Just as life had
been strange a few minutes before, so death was now as strange. The moth having
righted himself now lay most decently and uncomplainingly composed. O yes, he
seemed to say, death is stronger than I am.

参考:
陆谷孙的译文
这里的译文 

2011年2月21日星期一

[NOTE]在联想V460上安装Mac OS X 10.6.3并升级到10.6.6

无法查看这则摘要。请 点击此处查看博文。

2011年1月6日星期四

使用 Apache Mahout 和 Google Reader Share 搭建社会化阅读推荐引擎

一. Google Reader分享数据的抓取

主要参考以下文章:
Google Reader的数据收集
google提供的几种读取feed的API

值得注意的地方是在请求中可以添加以下参数:
1. 返回数量
2. 返回格式(json/xml)

用Python写了一个爬虫, 单线程抓取, 用的默认参数(n=20, xml). 目前已经爬了将近48小时, 共抓取了30000+个中文用户, 此外有20000+个不活跃用户或非中文用户.

判断中文用户的所使用的方法是: 在返回的结果中查找"的"字, 这种方法同时适用于简体中文和繁体中文. 目前看来效果良好.

抓回来的数据目前是保存为本地xml文件.

二. 数据解析

扫描所有xml文件, 产生打分数据.
打分数据格式为:
userID,itemID
表示用户(userID)喜欢/分享了文章(itemID).
第三项"分值"(preference)可以省略.
因为这里的打分的分值是bool值, 不是1就是0.

三. 搭建社会化阅读推荐引擎

1. 首先需要编译Mahout, 主要参考:

Recommender Documentation
基于 Apache Mahout 构建社会化推荐引擎
BuildingMahout
Recommender First-Timer FAQ
Apache Mahout 简介
RecommenderJob in mahout-0.4 returning 1.0 score for each recommendation

2. 然后基于grouplens的sample修改, 需要修改的主要是recommender:
public MyRecommender(DataModel dataModel) throws TasteException {

        UserSimilarity userSimilarity = new LogLikelihoodSimilarity(dataModel);
        // Optional:
        //userSimilarity.setPreferenceInferrer(new AveragingPreferenceInferrer(dataModel));
        UserNeighborhood neighborhood = new NearestNUserNeighborhood(3, userSimilarity, dataModel);

        recommender = new CachingRecommender(
                new GenericBooleanPrefUserBasedRecommender(dataModel, neighborhood, userSimilarity));
    }

值得注意的是, 因为我们的分数是bool值, 所以这里使用的是GenericBooleanPrefUserBasedRecommender.

3. DataModel比较好修改, 将
    super(convertGLFile(ratingsFile));
改为
    super(ratingsFile);
就可以了.

4. 编译生成jar包, 拷贝到taste-web的lib下, 然后生成war文件, 然后拷贝到tomcat的webapps下, OK, 部署完毕.
另外需要修改JVM的最大堆尺寸: 修改/usr/share/tomcat6/bin/catalina.sh,
在第一行添加CATALINA_OPTS="-Xmx1024M"
然后重启tomcat:
#/etc/init.d/tomcat6 restart

四. 结果

OK, 现在用浏览器打开http://localhost:8080/[my app name]/RecommenderServlet?userID=[some user id]

能够看到输出 T___T, 类似于:
0.8012257 9162463033714117388
0.8012257 -4561230713080859140
0.8012257 2660300300542533338
0.8012257 -2449470947652448865
0.8012257 4517199100982238889
0.8012257 8506464146746528189
0.8012257 -3632037840702745266
0.8012257 -8137494627916127284
0.8012257 -4976713633681791837
0.8012257 1080507498851365445


推荐效果不明, 因为都是文章的数字ID

暂时不会根据这堆数字产生人类可以理解的推荐结果网页
所以只能对着一堆数字泪流满面......

五. TODO

1. 根据推荐结果生成网页?
2. 调整recommender的类型/参数

2011年1月2日星期日

在Ubuntu10.04上安装Simplescalar

主要参考:
[1] Simplescalar installation instructions
[2] Installing Simplescalar

需要补充的一点是:
在执行$ make enquire这一步时,会遇到错误:
./xgcc -B./ -DCROSS_COMPILE -DIN_GCC   -g -I./include -I/usr/include    -DNO_MEM -DNO_LONG_DOUBLE_IO -O0 -I. -c ./enquire.c
In file included from /usr/include/sys/types.h:270,
                 from ./enquire.c:401:
/usr/include/bits/pthreadtypes.h:99: warning: unnamed struct/union that defines no instances
./xgcc -B./ -DCROSS_COMPILE -DIN_GCC   -g -I./include -I/usr/include  enquire.o -o enquire
enquire.o: In function `fCheck':
./enquire.c:2186: undefined reference to `__isoc99_sscanf'
enquire.o: In function `dCheck':
./enquire.c:2186: undefined reference to `__isoc99_sscanf'
enquire.o: In function `ldCheck':
./enquire.c:2186: undefined reference to `__isoc99_sscanf'
make: *** [enquire] Error 1
解决方法:
在enquire.c的第8行添加:
#define _GNU_SOURCE
这样就可以了。

目前遇到的问题是使用sim-cache和sim-outorder执行gzip时会遇到错误(用sim-profile执行gzip是正常的;用这三个执行mcf都是正常的):
fatal: cache: access error: bad size or alignment, addr 0x00009a71
不知道该怎么解决,快要崩溃了……

>>>> update 2011-01-06
在Red Hat 9上面安装没有这些问题. 应该和编译器版本啥的有关系.

2010年11月21日星期日

用NutchWAX搭建本地搜索引擎

目的:
使用NutchWAX对使用Heritrix抓下来的arc(Internet Archive)文件进行索引, 并搭建检索系统.

环境:
ubuntu 10.10
OpenJDK 6.x
NutchWAX 0.13
tomcat 6.x

步骤:
 * tar xzvf nutchwax-0.13.tar.gz
 * cd nutchwax-0.13
 * 创建文件manifest, 内容如下:
/absolute/path/to/your/somearchive0.arc.gz mycollection
/absolute/path/to/your/somearchive1.arc.gz mycollection
 * bin/nutchwax import manifest
 * bin/nutchwax index indexes segments/*
 * bin/nutchwax merge index indexes  
 * sudo apt-get install tomcat6
 * sudo mkdir /var/lib/tomcat6/crawl
 * sudo mv index /var/lib/tomcat6/crawl
 * sudo mv indexes /var/lib/tomcat6/crawl
 * sudo mv segments /var/lib/tomcat6/crawl
 * sudo cp nutch-1.0.war /var/lib/tomcat6/webapps/


现在打开http://localhost:8080/nutch-1.0应该可以进行搜索了.
下面稍微对nutch的界面进行一下修改:

修改/var/lib/tomcat6/webapps/nutch-1.0/search.jsp :


1. 将 int hitsPerSite = 2; 修改为:
int hitsPerSite = 0;
这样就不会在显示搜索结果时只显示两个了.

2. 默认搜索结果页面只有"下一页"按钮, 很不方便, 所以需要添加分页显示功能. 在尾部添加:

(代码就不贴了, 贴出来是乱码...具体参考Nutch的分页功能)


这样可以显示附近11页(这段代码是别人写的, 可能有点bug )的页面链接.




TODO:
1. 中文分词?
2. wayback网页快照?
3. 排序算法?





参考:
HOWTO.txt
Nutch的分页功能
搜索引擎nutch分页功能
NutchWAX-0.12.9 Japanization

2010年11月6日星期六

入手华为U8220

昨天上午下的单,今天下午到的.

T-Mobile的小内存版, 响应稍微有点慢, 不过可以忍受.
屏幕色彩数低, 有些有渐变的图标仔细看来会觉得惨不忍睹.
机器平放之后总是转到横屏...
其它--目前看来还可以, 毕竟只是1K出头的机子, 别指望有四五千的机器的表现.

装驱动遇到问题, PC套件和adb都检测不到, 后来下来一个Win7下面的驱动更新之后才能识别.
然后调程序的时候又发现logcat中无输出, Google之后找到解决方案:

http://www.eoeandroid.com/thread-30265-1-1.html
问题表现:连接手机与电脑后,保证驱动安装正确,debug模式打开,在ddms中可以看到进程信息,但是logcat中无信息输出
问题原因:一些rom默认关闭logcat
问题说明:ddms中设备名字显示为问号不影响,即adb get-serialno显示为问号不影响.
解决方法:
   1.需要root权限(部分rom不需要)
   2.打开logcat,并设置level
    adb shell
    echo 1 > /sys/kernel/logger/log_main/enable // 这里为注释,将1写入开关文件,1为开,0为关
    echo 2 >/sys/kernel/logger/log_main/priority // 里为注释,将代表level的2写入优先级文件
   3.重启adb,如果使用eclipse,先关闭eclipse,再重启adb,再启动eclipse
     adb kill-server
     adb start-server
   4.此时70%的logcat应该能正常工作了.如果此时logcat仍旧不工作,更新adb(只是一条指令,不需联网,很快执行完毕)
     android update adb
   5.重复第3步.此时80%的logcat应该能正常工作了
   6.如果logcat仍旧不工作
      找到个人主目录下的android目录,如我的是C:\Documents and Settings\lypoint\.android
      找到这个目录下的adb_usb.ini文件,其内容默认只有三行,全为注释,在后面添加一行,内容为0x12d1
   7.重复第三步,此时90%的logcat应该能正常工作了
   8.未完待续...
   9.G客工作室原创www.gker.net,转载请注明.

>>>>>>>>>>>>>>>>>>>>>

顺便记录一下Android 2.1的一个bug:

就是tablelayout中的button的文字会对不齐.

解决方法: 用linearlayout + layout_weight代替

参考: Buttons in TableLayout cropped on Android 1.6 and 2.1 (but not on 1.5 or 2.2)


>>>>>>>>>>>>>>>>>>>>>

祈祷我在Google Android 应用开发中国大学生挑战赛中拿手机吧!
哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈

话说回来, 程序还没进行完整的测试……