再见,阿瑟

这几年,我写的文字,与同学、朋友的交谈,总少不了一个词语:“阿瑟”,它出现的频率如此的高,可见是一位大师,master Hu。

猛然发现他真的离开深圳了,心里顿时涌起莫名的忧伤,9月份刚送走柏成,两个湖南才子最终都回去建设家乡了。伤感之余,促使我记录一些文字,以免在深圳这个是非地麻木挣扎,会忘记一些记忆。

阿色,源自于麦克阿瑟,阿瑟,阿涩,阿sir,sese,都行,都表达同一个意思。我跟阿色在大学呆四年,本科毕业后南下,在深圳又呆三年多,这七年,目睹了他种种际遇,悲欢离合。厦大人优秀的基因在他身上全有:多情,有才,耐折腾。

阿色是大家公认的大思想家,大文学家,大哲学家,在大学就有三个家了,如今回归故里从政,又多了一个家,政治家。大学期间,阿色以荻根(digen)为笔名,在厦门日报,厦门大学报发表过很多文章,挣得N多稿费,夜宵常常有事没事请我们吃MLT。金工实习阶段,院里领导到实习基地视察,四处打听自动化系的荻根到底是谁?知道是他后,领导欣喜万分,鼓励他多写写文章,为自动化系争光。阿色不愧是自动化系中的中文系,东方一颗明星正在冉冉升起。他在一篇文章中如是说:“自己渐渐喜欢上读书,尤其是充满感情的文学作品,甚至发出感叹,要将一生的精力灌注于此”。 没记错的话,好像他还有一个笔名是萝卜,曾经深情的对yolanda说:“以后,我也许不再叫萝卜了,你不是嫌它空心吗?可我的心里满满的都是你啊,都是你。”。这方面,他是遥遥领先的,我们几个望尘莫及,自叹不如,学也学不来,差好几条街去。

很多高中同学收到我给他们的信,信中所寄的相片,就是阿瑟在国庆节帮拍的,那是我俩军训结束后去本部玩,在厦大一条街租了个相机,拍个够。还记得2003年录取通知书上的那首很感性的小诗:

揭开这心动的一页,
你开始自己新的征程,
南国最美丽著名的学府,
用大海的胸襟和白鹭的情愫迎接你的到来,
这里是无数风流人物的摇篮,
光荣与希望,
托起你智慧的风帆,
在四年岁月里绽放青春生命的火花。

漳州校区,厦大,厦门,自家人,给我留下了很多美好的回忆。

在天涯论坛上,我看到一句话是这么说的“内心纯洁的人前途无量”,开始读觉得是骂人的话,再反复读,我沉默了,沉默的是自己的无知。小时候我看到乞丐,他们穿破破烂烂的在乞讨,我心里很难过,都会流泪,初中读到朱自清写的《背影》,也会难过很久。现在不一样了,在现实的洗刷中,我也变得麻木冷漠。而阿瑟,令我佩服的,对形形色色艰难谋生的人的同理心,一直能保持到现在。有时候碰到装可怜的骗钱的,我都劝他走开,他显然也知道是骗的,但还是还是一如既往的施舍。他说:“世道艰难,大家都是出来混口饭吃。”

不知道是另外哪位大师说过:“多情者,才思奔放,一眼以突窥人心,惟不语已”,这话验证在阿瑟身上,那叫一个准,自古才子多情。但以我专业的眼光观察,他却是一个非常专情用情的人,举个小例子吧,yolanda叫玲玲,大学的时候我发现阿色的一些帐号或密码都有5200,写的文章比如有:《从玲开始》、《风铃》,《风中的铃&玲的季风》,心细如水,柔情四溢。多情只是他的表面,内心世界深不可测,里面有诗意的世界,有辽阔无边的草地平原,能够听见梦想在唱歌,能够释放最绚烂美丽的大海之光。都说,成熟的男人像一个深沉的树,阿瑟就是这样的一颗大树,总有能力有办法有信心,让心爱的女人在树下安心的乘凉,让爱情鸟在他稠密的树枝间做巢,鸣叫。

07年11月份下旬,我离开了厦门,I want to follow my heart,到深圳寻找新的人生旅途。第一站就是到阿瑟那蹭住,那天晚上他请我吃烧烤,来几瓶酒,对我说:“阿瑟啊,喝了金威啤酒,你就成深圳人了啦”。现在周末找人喝酒都难了,感慨万分啊。在深圳住过的地方,玩过的地方闭眼睛回想一遍,点点滴滴记在心头:石岩水田村,石岩罗租村,新屋村,华翰科技,南山科技园,车公庙,大南山,梧桐山,盐田湾,羊台山,塘朗山,红树林,华强北,益田假日广场…… 依稀记得2008年五一假期,阿涩与yolanda在红树林草地上互相追逐的情景,羡煞旁人,“如果流浪是你的天赋、那么你一定是我最美的追逐“,sese,梁静茹是为你而歌!

再见,阿瑟,新屋村少了一位哲学家;再见,Master Hu,从此周末我们的门铃再没人来按。请原谅我黄朗才尽,拙文一篇,纪念我们共同奋斗的岁月,顺祝商祺。

python makes me happy :)

这几天用 Python写了个Android Market web client,新手上路,却出奇的顺利!apache2 + mod_python, mod_python 里的req很好用。本想用ruby写的,可是ruby对protobuf支持不是很好,php更没份了,在jsp与psp犹豫了一下,还是选择了后者。我问wayhome,有没有python psp的资料,他愣住了,说没有,psp是什么?我再补充,不是psp游戏机哦,是Python Server Pages,你搞python这么久不会没听说过?后来他说写cgi都用PEP333。搞什么,弄了大半天,原来psp是早已过时不用的技术了。

听说python的框架Django牛气轰轰,堪比Ruby之Rails,我翻了一下,弄懂这玩意,也需要花不少时间。弄几个页面,还是写cgi快,维护BBS都用C写过cgi,还怕不会用脚本写cgi? python的语法跟ruby差不多,以前在曾厝庵学生公寓图书馆看过一个下午,长时间不用也忘记光了,工作中很少用到,好像是安装项目管理软件Trac调试过,不过看apache error log,一般问题都可以诊断出错误位置。

人生真是阴差阳错。一直关注C/C++, PHP,Ruby,我想不会再学Java,Python之类的了。没想到今年工作主要是写Java程序 :( 用什么,就学什么,现学现用。哲学家告诉我们:变化是永恒的,没有一劳永逸。

参考资料:
http://modpython.org/live/current/doc-html/pyapi-psp.html
http://www.python.org/dev/peps/pep-0333/
http://www.djangobook.com/en/2.0/chapter01/

反编译Android market Vending.apk包

主要是工作的缘故,Market时不时登录不了,东试这个rom,西试那个rom也不是解决办法,横下心来,决定fuck 她一下。

从今年5月份开始到现在,断断续续的干这事,用反编译工具apktool,ddx左右开工,下班回宿舍常常搞到两三点,弄得身心疲惫,已经完成了90%,2.5w行的代码,最后的10%将是最难的,集中分布在 try catch throw, 多层的if for 结合,不好处理。都是用最原始的方法: edit-compile-decompile-diff-edit,一直循环。手工反编译出来的代码已经可以阅读,需要再搞清楚它的protobuf协议,api,慢慢消化。有时间,用Rails写个网页,提供web浏览。反编译的Vending.apk是1.5版本的,跟最新的2.2差别太大了,也许最初的决定,是一种错误。这过程,除了锻炼我的牛力,学习熟悉Java之外,剩下的是无尽的空虚,浮云,都是浮云!

这事就这样暂停吧,接下来花时间去阅读Android的代码,过段时间有力气了再回头继续fuck。

转眼到了10月中旬,快过年了,三年的工作合同将满,下一步不知道去哪好,也向往搞一个像 37signals那样的公司,两三个人,崇尚简单即是美,上帝赐予我力量吧。

Android设置显示本机号码

本机号码,我觉得是没有多大的用处,几乎谁都会知道自己的手机号码,但也有用户真的需要这个功能。有个对讲机软件tikl – touch to talk,可以通过网络进行多方通话,需要用到本机号码。 测试短信的脚本,自己给自己发短信,也需要本机号码。

Android手机在 设置-关于手机-状态消息,可以查看到本机号码,很多情况是显示未知。 很多模组用AT+CNUM 这组AT命令可以设置与查询本机号码。一般的手机在查看本机号码的界面都可以添加本机号码的,比如MTK/展信手机都提供这个功能。 Android对卡的操作,都是直接读写卡上的信息,用比较底层的AT+CRSM,而不是常用的AT,比如 AT+CMBR, AT+CMBW,AT+CNUM等。

Android手机设置本机号码,目前我还没发现有工具可以设置,很多人是把SIM卡拿到可以设置的手机上设置,然后把卡重新插上。 不过,Froyo提供了内部接口方法Phone.setLine1Number(),CM6的通话设置里就加入了本机号码设置功能:

具体的代码,在这里看清清楚楚:

http://github.com/CyanogenMod/android_packages_apps_Phone/commit/5351ce8247eb9fc9a3bf2ec751d14dcd373ab92e

可能需要到github注册个帐号,才可以浏览代码,主要是在phone里面添加处理,独立写个小程序的话,比较麻烦,因为要访问PhoneApp。

更新: (2010-11-15) 今天试了一下,参考Settings, 共享一个sharedUserId,也可以写个独立的程序,在g1 2.2,HTC desire上测试通过。注意:Android 2.2以下的无法使用。

代码献上: https://github.com/lytsing/MyPhoneNumber

安装日志分析工具awstats

之前用Google Analytics分析网站,觉得多一次请求,对用户不太好,于是自己分析统计apache log。大约花了一个小时安装测试awstats,比预期的要顺利。

服务器是fedora,用yum安装很快。
[root@athena~]# yum install awstats

用默认的安装方法,/etc/httpd/conf.d/ 目录下面已经有了awstats.conf,如果没有,复制一个过去
# cp /usr/share/awstats/tools/httpd_conf /etc/httpd/conf.d/awstats.conf

编辑 /etc/httpd/conf.d/awstats.conf文件,默认的是:

<Directory "/usr/share/awstats/wwwroot">
    Options None
    AllowOverride None
    Order allow,deny
    Allow from 127.0.0.1
</Directory>

如果是外面的服务器,将 127.0.0.1改为 all

[root@athena~]# cp /etc/awstats/awstats.module.conf /etc/awstats/awstats.broncho.cn.conf
编辑/etc/awstats/awstats.broncho.cn.conf, 修改下面三项即可:
SiteDomain="broncho.cn"
LogFile="/var/log/httpd/broncho.cn_access_log.%YYYY-0%MM-0%DD-0"
Lang="cn"

[root@athena~]# cd /usr/share/awstats/wwwroot/cgi-bin
[root@athena cgi-bin]# ./awstats.pl -update -config=broncho.cn

发现:

Create/Update database for config “/etc/awstats/awstats.broncho.cn.conf” by AWStats version 6.8 (build 1.910)
From data in log file “/var/log/httpd/broncho.cn_access_log.20100927″…
Phase 1 : First bypass old records, searching new record…
Searching new records from beginning of log file…
AWStats did not find any valid log lines that match your LogFormat parameter, in the 50th first non commented lines read of your log.
Your log file /var/log/httpd/broncho.cn_access_log.20100927 must have a bad format or LogFormat parameter setup does not match this format.
Your AWStats LogFormat parameter is:1
This means each line in your web server log file need to have “combined log format” like this:
111.22.33.44 – – [10/Jan/2001:02:14:14 +0200] “GET / HTTP/1.1” 200 1234 “http://www.fromserver.com/from.htm” “Mozilla/4.0 (compatible; MSIE 5.01; Windows NT 5.0)”
And this is an example of records AWStats found in your log file (the record number 50 in your log):
113.227.9.179 – – [27/Sep/2010:10:34:49 +0800] “GET /forum/styles/prosilver_se/theme/images/border_right.gif HTTP/1.1” 200 124
Setup (‘/etc/awstats/awstats.broncho.cn.conf’ file, web server or permissions) may be wrong.
Check config file, permissions and AWStats documentation (in ‘docs’ directory).

原来的日志按天分割的:

CustomLog “|/usr/local/sbin/cronolog /var/log/httpd/broncho.cn_access_log.%Y%m%d” common

按错误提示,修改为:

CustomLog "|/usr/local/sbin/cronolog /var/log/httpd/broncho.cn_access_log.%Y%m%d" combined

浏览 http://192.168.1.222/awstats/awstats.pl?config=broncho.cn 就可以看到效果。

定时分析日志,在服务器负载比较低的时候,一般是凌晨3,4点。

[root@athena~]# vim /usr/share/awstats/wwwroot/cgi-bin/awstats.sh

#!/bin/bash

cd /usr/share/awstats/wwwroot/cgi-bin
perl awstats.pl -update -config=broncho.cn

[root@athena~]# chmod 755 /usr/share/awstats/wwwroot/cgi-bin/awstats.sh

[root@athena~]# crontab -e
0 3 * * * /usr/share/awstats/wwwroot/cgi-bin/awstats.sh

Pages: Prev 1 2 3 ... 11 12 13 14 15 16 17 18 19 20 21 Next