June 16th, 2008
在 My1510 上看到一篇梁文道因余秋雨的那滴“鳄鱼泪”而作的文章,就余氏文中的“大局观”做了议论,强调了“历史观”的重要性。我对于继续争论余氏那篇无聊的文章完全没兴趣了,至于余氏本人连篇累牍地在其 BLOG 上转载那些支持他的、有些甚至不符合常规逻辑的文章,只能让人持续恶心。突然想起前两天看到的一篇戏虐之文,为马兰唱了句薛蟠的打油台词:“女儿悲,嫁个男人是乌龟。”不太厚道,但算符合情境。
梁文道这篇文章中有一段关于历史的概略陈述,说得很是中肯,特地节录下来:
中国历史最令人感动的特点之一就在于历史的书写本身。历代史官以「实录」的方式,尽力客观地记录国朝上下发生的大事。虽有帝王荒淫暴虐,也不必为尊者讳;虽有天灾人祸诸端异象,亦不必笔存忌惮。然后把一切留诸后世,不只信任自己,也信任未来。直到另一家人做了皇帝,依据前朝留下来的纪录,再替它修整成史。这是后人对前人的责任,「兴灭国,继绝世,举逸民」。你可以篡夺人家的王位,消灭人家的天下,但是你不可夺走人家的记忆,以及历史。同时你也大可放心,就算将来有一天你的子孙穷途末路,你一手打下的基业倾颓败坏,你的一切也将为人纪念,一如你纪念了前人。
… …
中国不算是一个宗教主导的国家,往往以历史代替宗教,尤其知识分子,更是不愿多言死后鬼神,唯求「立言、立功、立德」三不朽。一般百姓或许会说「举头三尺有神明」,文人相信的却是「留取丹心照汗青」。
一直以来我也认为中国人其实是有宗教的,它由血缘和历史两大因素构成。
June 13th, 2008
这到底是一个怎样的世界?6月5日有余秋雨含“泪”写了一篇劝告,6月6日又有一位王兆山写了词二首,极尽无骨文人表演之能。
余氏的文章太长,我不引用了,在他的 SINA/SOHU BLOG 中都有。王某的猛词一定要引用一下,因为实在是太无耻了!
江城子 废墟下的自述
一位废墟中的地震遇难者,冥冥之中感知了地震之后地面上发生的一切,遂发出如是感慨——
天灾难避死何诉,
主席唤,总理呼,
党疼国爱,声声入废墟。
十三亿人共一哭,
纵做鬼,也幸福。
银鹰战车救雏犊,
左军叔,右警姑,
民族大爱,亲历死也足。
只盼坟前有屏幕,
看奥运,同欢呼。
钗头凤 川之吟
山青秀,水碧透,
峰塌须臾河毁骤。
城飞歌,乡飘乐,
楼崩灵折,村消屯破。
祸。祸。祸。
国殇忧,八方吼,
令发京城动九州。
红旗烁,军歌越,
救川举国,不弃一个。
魄!魄!魄!
估计苏轼和陆游看到这两首词心里会很不爽的。
我忍不住好奇,到底他们在写这样的文章的时候是何种心态?心里是怎么琢磨的?真的觉得写出来的这些 shit 就是自己个儿想说的心里话?If yes,哇,那该是价值观扭曲到何等样的人啊!他们的爸爸妈妈看到后会多么难受,儿子年纪不小了,价值观怎么跟央视新楼似的(价值观与央视新楼云云语出五岳散人)。If no,那就是昧着良心、违心作文做人,点解如此啊?定是有所图,唉,可惜的是世道艰难、竞争过于激烈,乌泱乌泱的奴才匍匐在地,主上会临幸谁真未为可知也。
余秋雨是名人,就不介绍了。俺年纪还小的时候也读了他的两本书《文化苦旅》《山居笔记》,当时觉得还不错,后又出书 N 本,什么《霜冷长河》《千年一叹》,已是多少有些才尽之感。但最可惜的不是江郎才尽,而是其人品呈高台跳水之势,这些年迅速下落。当然,可能人家本来就是这样子的人,只是当年我年纪还小,未能分辨。
王氏兆山者,山东沂南人士,官居山东省作协副主席。其尊容请见网易新闻网页。
末了,顺便回顾一下来自陕西的著名作家贾平凹的“删一字而不能”的发言:
听总书记的报告很震撼、很亲切,感觉到创作环境、创作空间很宽松。关于文学的继承和创新的问题,胡总书记的角度很新颖,意义深刻,也更加尊重艺术规律,可以说这预示着文学的高产和高峰期即将到来。另外,报告很有文采,删一字而不能。
嗟乎… 算了,还是收声吧,无语比较好。
June 12th, 2008
Google Developer Day 2008 是 Google 第二次在中国举办的面向开发者的技术大会,我很喜欢 Google APIs、也很钦佩 Google 能一直坚持它的技术文化,所以这两次的开发者日我都请假来参加。可惜的是相比去年的那次,除了规模大了很多、人多了许多之外,再无其他进步,而让人无奈的是,这“规模大了很多、人多了许多”却是此次会议的不足之一。
会议组织方明显经验不足。我不清楚此次会议是 Google 公司自己组织的,还是委托专门的会展公司来组织的。因为人太多,一开始的签到程序就处于半失控状态,不停地有工作人员拿着喇叭在喊话,其实基本没什么实质性帮助。排队签到时,工作人员根本就没有问我要邀请函,也没有从他们的电脑里查询我是否有注册和确认参会,直接让我在一张纸上签名,然后就发给我参会的胸牌和手册。既然如此,那为什么事先还要我们注册?而且 email 确认、电话确认,弄得特别郑重其事的样子。
开场的主题演讲是由 Google 著名的美女副总裁 Marissa Mayer 来做的,她的 presentation title 起的非常好:Client, Connectivity, and the Cloud,可惜没什么实质性内容,约有一半的时间她是站在讲台上,不说话,然后先后有两位 Google 比较资深的员工上台介绍 AJAX 和 Gadgets。没想到,大会的主题演讲居然变成了 APIs/tools 介绍。这些东西放在具体的分会场 sessions 来做会更恰当。
分会场共有四条主题线:云计算地理平台主题线、云计算社区平台主题线、云计算实现平台主题线、云计算移动平台主题线。其实内容和去年一样,依旧是介绍 Google APIs,包括 Maps, OpenSocial, AdWords, PicasaWeb, Gears, Gadgets, AJAX, Android 等,但不知为何都冠以“云计算”三个字来开头,难道就是为了强调 Google 在主推“云”?其实大家基本都知道 Google 是主打 open web platform 的,提供技术和工具,让用户“云里雾里”就完成了计算 ^o^,提提可以,这样反复强调却显得累赘且没有必要。
但不论如何,还是要非常谢谢 Google 为中国开发者带来这场开放性的技术会议,在中国实在太少这样大型的技术聚会了。
细柳营记者 richard 北京国际会议中心现场报道 ^o^
June 7th, 2008
版本 8 是 Notes 转向 Eclipse 架构后的第二个主发布,单从安装过程来说,确实有很大的进步。记得2006年时我曾经尝试在 Ubuntu 6.10 上安装当时发布不久的 Notes 7.0.1,问题之多以至于我专门写了一篇“攻略”发表在 developerWorks 上(本地)。
Step 1. 安装 libstdc++5
如果没有这个包,那么图形界面的安装向导无法启动,你会看到 Locking assertion failure 以及很多其他的错误消息,当然你可以用参数 -console 来启动字符界面的安装向导。不过我想说的是,Notes 的字符安装向导那是相当的差!
$ sudo apt-get install libstdc++5
Step 2. 启动安装向导
因为安装了 libstdc++5 包,所以图形界面的向导可以启动了。
安装需要用到特权用户权限,所以要 sudo 开头。
$ sudo ./setup.sh
然后就是照着屏幕提示,一步一步地来。
Step 3. 两个善后
安装完成后,需要切换至用户主目录,修改其下新建的 lotus 目录的拥有者:
$ cd /home/huangys
$ sudo chown -R huangys.huangys lotus
或者干脆把这个目录删除,因为启动 Lotus Notes 客户端时会自行创建这个目录。
另一个问题与 Eclipse 有关。当尝试启动 Lotus Notes 时,会看到如下错误:
已经有人报告了这个BUG,创建 ~/.mozilla/eclipse 目录即可解决这个问题:
$ cd /home/huangys/.mozilla
$ mkdir eclipse
OK,准备好你的 ID 文件开始配置吧。
May 19th, 2008
一直以来,阻碍我使用 Ubuntu 的一大原因就是无法拨入公司的内部办公网络,因为公司给出的拨入客户端只有 Windows 版。前些日子突然想到,既然我们用的是 AT&T VPN 服务,那何不去 AT&T 找找看有没有提供对 Linux 的支持。于是有了以下发现。
其实 AT&T 官方提供了支持 Linux 的客户端,可惜的是,只支持 RHEL 和 SuSE。但没关系,万能的 google 找到了一条变通之法
首先,从 AT&T 下载其最新 Linux 客户端,我载的是 agnclient-1.0-2.0.1.3000.i386.rpm。当然,这个 rpm 包无法直接用,也不可以直接用 alien 转化成 deb 包之后来安装,因为还有很多的依赖关系和配置需要解决。
接着,解决问题的人 André F. Macêdo 来了,从他的 BLOG 下载一个超有用的脚本 ubuntu_rpm2deb.sh。
好了,可以开始工作了!
安装 tcl
$ sudo apt-get install tcl8.5
给脚本执行权限
$ chmod +x ubuntu_rpm2deb.sh
安装依赖关系
$ ./ubuntu_rpm2deb.sh --deps
转化包格式
$ ./ubuntu_rpm2deb.sh agnclient-1.0-2.0.1.3000.i386.rpm
这将生成我们的目标文件 agnclient_1.0~2.0.1.3000-1.1_i386.deb
安装新得到的 deb 包
$ sudo dpkg -i agnclient_1.0~2.0.1.3000-1.1_i386.deb
就这么多,现在可以启动 AT&T Global Network Client 了,如下图:
点击绿色的 CONNECT 按钮,在跳出的对话框中输入 Account / User Name / Password 即可开始连接。
Enjoy!
May 12th, 2008
有没有搞错,安装 iTunes 如此简单的软件还需要指南?Hmm… 如果你一贯是缺省型,的确不需要;如果你非常讨厌有人采取“买一送N”的策略在你机器上额外装上 N 个你根本不需要的组件、插件、工具、etc,就很有必要了。尤其是在水果于3月份利用 Apple Software Update 强行推送 Safari 这一事件之后,我们更有理由要当心安装了。
下载 iTunes 安装包之后,不要直接就开始安装,因为安装向导不给你任何定制安装的机会。而是用解压缩工具(比如 7-Zip)打开这个文件,你会发现 iTunesSetup.exe 包括:
- iTunes.msi
- QuickTime.msi
- AppleSoftwareUpdate.msi
- AppleMobileDeviceSupport.msi
- Bonjour.msi
- iTunesSetupAdmin.exe
如果你跟我一样,只是要拿 iTunes 当 podcast client 和 music player,那么就只需要安装 QuickTime.msi、iTunes.msi。其他的都不需要,比如 Bojour 是水果用来实现资源共享的一种机制,用的人应该是不多;Apple Software Update 看起来蛮有用的,其实也普通了,通常小更新并不关键,而大的改进下载新版即可,尤其是水果强推 Safari 事件后,我们更应当心此“后门”。
P.S. 再加强一下,如果你不需要使用 QuickTime player,就连 QuickTime.msi 都不必安装,完全可以用轻量级的 QT Lite 来代替。
P.S.2. 安装时要保持 iTunesSetupAdmin.exe 与 iTunes.msi 在同一目录中,否则安装过程会报错退出。
May 3rd, 2008
我承认,这篇 post 有标题党嫌疑… -_-
不过如果你觉得 SpringSource 官方用户指南有点儿长、没时间但又想快速玩玩 S2AP,俺这篇“一分钟快速起步指南”就有点儿用了。
安装
解开下载的 S2AP 1.0.0 beta 包即可。
$ unzip springsource-ap-1.0.0.beta.zip
设定环境变量
$ export PLATFORM_HOME=/opt/springsource-ap-1.0.0.beta
个人觉得这个变量名不好,太 general 了,最好能改为类似 $S2AP_PLATFORM_HOME 或者 $SPRING_PLATFORM_HOME 这样的名字。
启动
常规启动:
$ bin/startup.sh
调试模式启动:
$ bin/startup.sh -debug
将会运行一个 debug agent,默认监听 8000 端口。可以在 -debug 参数后面跟一个数字参数来修改监听端口,比如:
$ bin/startup.sh -debug 8001
允许 JMX 访问模式启动:
$ bin/startup.sh -jmxremote
将允许本地 JMX 访问。如果需要远程 JMX 访问,在 -jmxremote 后跟一个端口参数即可,比如:
$ bin/startup.sh -jmxremote 9009
启动成功后,可以尝试访问其管理页面 http://localhost:8080/admin 缺省的用户名和密码是 admin/springsource
停止
$ bin/shutdown.sh
Now start exploring, have fun!
May 2nd, 2008
今年年初,SpringSource 收购了 Covalent,然后 Rod Johnson 又公开说 (from Javalobby)
we're basically seeing the decline of the traditional Java EE server.
而技术社区近来总有关于 OSGi 和 container 等方面的话题,加以关联,貌似 SpringSource 想借 Spring Framework 成功之东风进入 container 领域、而且打算利用 OSGi 来构建。
于是,在四月结束的时候,标题等式中的问号有了答案:SpringSource Application Platform,可以简写为 S2AP。从名字上看,很容易联想到 Eclipse RCP,不同的是,RCP 专注 client 端,而 S2AP 专注 server 端。接受访问时,Rod Johnson 在解释为什么使用 platform 这个词、而不是 server 这个看起来更常规的词来命名时,说:
We didn't want to call it a server because it will be able to be extended and accept different deployment modules, so it will be broader in scope than a typical server.
看来蛮有野心和决心的。
刚刚发布是的是 1.0.0 beta,基于 GPL v3。
简单地试用了一下,S2AP 有三点让我印象深刻:
1,S2AP 支持三种应用部署方式:热部署(Hot Deploy)、控制台部署(Admin Console)、编程部署(Programmatic)。其中的热部署方式很好,直接将 WAR 包丢入 pickup 目录或者从 pickup 中删除就可以完成部署或移除应用。需要说明的是,S2AP 目前还不支持混合方式,即,部署和移除的方式要一致。
2,S2AP 不仅自身是构建在 OSGi 之上,而且它还允许开发者将自己开发的 OSGi bundle 部署到其中,这一点很难得,对于推动 OSGi 在 server 端应用很有好处。目前的主流应用服务器在向 OSGi 靠拢时还只是将自身构建于 OSGi 之上,尚不允许开发者部署自己的 OSGi bundle。
3,SpringSource 提供了一个在线的 bundle repository,这似乎是一个“技术含量”不那么高的举措,但是非常有意义。我在做 TPTP 开发时就发现,不同的 projects 经常对同一个第三方 library 进行封装,这完全没有必要嘛。目前 SpringSource Bundle Repository 包含的内容还少,以 Apache 旗下组件为主,相信会慢慢丰富起来的。
April 30th, 2008
一个小贴士,对于使用最新出来的 Hardy Heron (Ubuntu 8.04) 的人可能有点儿帮助。
因为要测试最新的 TPTP 4.5.0 Candidate Build,我需要用到 Agent Controller,其指南上载明需要 libstdc++-libc6.2-2.so.3,且该文件必须位于 /usr/lib 目录下。
libstdc++-libc6.2-2.so.3 属于 libstdc++2.10-glibc2.2 包,不幸的是,Hardy 的源中没有这个包,不过幸运的是,在前几个版本中都有这个包,这里我选择了 7.04 Feisty 的源:
deb http://archive.ubuntu.com/ubuntu/ feisty universe
然后:
$ sudo apt-get install libstdc++2.10-glibc2.2
安装完毕后,记得删除这个临时的 Feisty 源。