Home | Syndication | Delicious | Douban | Twitter | FriendFeed

往来江上

May 25th, 2008

车过长江大桥的时候,我的视线暂时离开了手中的小说,拉开车窗的纱帘。窗外阳光正烈,明晃晃地,眼睛一时有点难以适应,忙不迭地眯缝了起来。这五月末,北方还拽着春的尾巴不放手,而南方已是一片夏的热烈了。桥上依然是往来不绝的车流,桥下依然是颜色浊黄的江水,江面上穿梭于南北两岸的是我最喜欢的长江轮渡,远处的港口里,几艘客轮静静地泊在码头边,再回头看看乘坐的公共汽车、手里翻开的书,还有耳边的乡音,我惊讶的发现,似乎时间在这里停了下来,一切经久地没有改变。

桥上有些塞车,车行很慢,走走停停。反正我也不赶时间,正好可以看着外面发发呆。远处港口里有轮船要出发了,缓缓地驶离码头,悠悠的汽笛声沿着江面层层荡开。我一直很喜欢轮船的汽笛声,清亮绵长,给人一种很强烈的在途的感觉。相比之下,火车的鸣笛声显得急迫了些。

大学时期,每次寒暑假往来于家乡和学校所在地之间都是坐船。船行甚慢,顺水需要大约19小时,逆水需要近30小时,若碰上枯水季,航道太浅,还得大船换小船,耗时更久。所以轮船不适合于形色匆匆、争分夺秒、时间就是金钱的人们,而学生就无所谓了,反正他们有的是大把的时间可以抛掷。话虽如此,但消磨这长时间的空白也非一件容易的事情。通常的选择就是打扑克、玩游戏和看书。我因为牌技太差,加上兴致也不高,所以往往选择游戏机和书。那时候玩的最多的是俄罗斯方块,因为它够简单,不用太费神。书不外乎就是小说和杂志两类。游戏玩腻了就翻书,翻得累了就趴在栏杆边看长江、看远处的山脉和沿江零星的建筑,看得乏了,再回头来玩游戏,如此反复。

寒假坐船比较闷,因为外面太冷,大家只好窝在船舱里。如果是暑假,晚饭后,等船员清洗过甲板了,我们就把床上的席子、毛毯、枕头拿到顶层甲板上,就着未暗的天光玩方块,等眼花了、胳膊也酸了,就躺着聊天、听江水的声音、看夜色下的长江和长江上的夜空。若天气好的话,有时就偷偷在甲板上睡一晚。

AT&T Global Network Client on Ubuntu 8.04

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 了,如下图:

AT&T Global Network Client 

点击绿色的 CONNECT 按钮,在跳出的对话框中输入 Account / User Name / Password 即可开始连接。

Enjoy! 

“正确”地安装 iTunes

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 在同一目录中,否则安装过程会报错退出。

Getting Started with S2AP in 1 Minute

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!

Spring + OSGi + Container = ?

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.

看来蛮有野心和决心的。

SpringSource Application Platform 

刚刚发布是的是 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 旗下组件为主,相信会慢慢丰富起来的。

libstdc++-libc6.2-2.so.3 on Ubuntu 8.04

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 源。 

Glance @ Dalian

April 2nd, 2008

这才叫真是匆匆而来、匆匆而去,时间安排之紧凑让我很是遗憾,没能在这里闲逛逛。趁着现在记忆还新鲜,尚记得坐车时看街景的一点感受,也算来过一趟、有点儿浮光掠影的认识。

单从建筑风格上看,大连很欧化,在中山广场一带的几栋大建筑比如大连宾馆、工商银行、交通银行、人民银行等都是,而且彼此的风格还不完全一样。特别是大连宾馆,颜色较深,远远望去就像是一座古堡。后来我查了一下wikipedia,才知道这些建筑都是建于日据时期。敢情这“欧化”原来是日本人留下来的。

中山路似乎是大连的主干道,我往来于酒店和理工大学之间都要在这条路上走好久。看来孙中山先生的人缘确实不错,全国很多城市都有以“中山”命名的马路。Hmm.. 大连的出租车师傅开车很猛很彪悍 -_-

有轨电车很有意思。轨道通常与马路并行,三节车厢的电车徐徐开过。要是有那种叮当声就更好玩了。

我个人很喜欢大连的路标。大约3米高的银色小圆立柱,顶部有两个横着的蓝色指示牌,上面用白色的字写着道路名,指示牌的一端固定在立柱上,另一端是半圆形的、用以表示方向。简洁而又有时尚感。

日韩俄三国在大连的人应该不少。跟我同一班机过来的,我就听到了不少韩语和俄语对白。到大连机场后发现,诸如行李台这样的服务设施上都是中英日韩四种文字说明。后来中午吃饭时,我问一个大连当地人,他说,日本人是蛮多的,不过韩国人主要在青岛。今天晚饭时,我冲到酒店对面的一家餐厅吃饭,正拉开门准备进去,有人把我把拦下,我定睛一看门左侧的一行小字,哦,原来是专为日本人服务的。

最后,不得不说,大连银行的LOGO太难看了~ 

“我是你同学呀”

March 26th, 2008

下班路上接到一电话,一个不认识的手机号码,犹豫了一下不想接,可响个没完,接了吧。以下为对话过程,A是对方,B是俺自己。

A: 是 xxx 吗?

B: 是我。请问是哪位?

A: 我是你大学的同班同学 yyy 啊。

B: yyy ?(我使劲地想,就是想不起来这个名字) Hmm… 对不起,我想不起来了,我不记得我们班有你啊。

A: 不记得我了?怎么会呢?你还记不记得 cxf, cfy, wlq ?

(他们三人确实和我一个系,不过 cxf, cfy 是与我一个班,但 wlq 是另一个班的。)

B: 我当然记得了。cxf 在南京、cfy 在上海、wlq 留校了。

A: 对啊,你都记得嘛,怎么就忘了我呢?

B: 对不起,我确实没印象,可能我刚刚没听清楚,要不你再说一遍你的名字?

A: yyy

B: 不好意思,还是没印象。算了,可能是我记性不好了,你找我有什么事儿吗?

A: 也没什么事,我在西安交大读研究生,现在在北京,想约你出来见见。

(这时我心里基本有数了。我们班上共28人,其中就只有4个女生,yyy 这个名字很陌生,另外,我没听说我们班有哪个同学在西安交大读研究生的。)

B: 还是算了吧,实在想不起你的名字。

A: 你就慢慢想吧…

通话完毕。

到家后,赶紧查了一下她的电话 15999728541,搜索结果显示该号码是归属广东东莞的动感地带卡,这个地理位置正好切合该女子的口音——带广东口音的普通话。

很容易我就想到是 5460 泄露了这些资料,心里寒了一下,赶紧登录 5460,将所有资料一股脑儿删了个干净!

现在 Facebook 在美国很火,于是国内很多人和团队也跟进,xiaonei, hainei, yiqi, zhanzuo … 虽然我也很喜欢玩Facebook,但我从来就认为这种模仿 Facebook 的 SNS 服务在当下的中国是做不成功的。今天我与东莞这位“老同学”的对话就是一个小小佐证。就这种社会现状,还 SNS 呢,洗洗睡吧。

Make WinXP Leopard-like

March 22nd, 2008

去年把 Windows XP 系统风格换成 Tiger,到今天为止,用了有一阵子了,感觉还不错,不过最近发现 Leopard 似乎更好看、更酷一点,所以就又换了一下。

deviantART 中可以搜到很多 Leopard 风格。国内还有一个 Nick Zone 苹果模拟专题站,也提供 Leopard 风格主题下载,不仅如此,Nick 还很 nice 地提供一个 all-in-one 安装包,包含了常用的几个模拟软件,比如 RK Launcher, Y'z Shadow, etc. 不过我还是喜欢逐一自己来配置,步骤不变,在前文中有具体描述。

下面说一下如何让 Firefox 看起来像 Leopard 下的 Safari.

第一步,安装 Foxdie (Aqua)

安装 Foxdie (Aqua) 过程很简单,但有以下两点要注意。

1,把下面这句话加到 userContent.css 中:

@import url("userChrome.css");

在 Windows XP 中,这两个 css 文件位于 C:\Documents and Settings\[username]\Application Data\Mozilla\Firefox\Profiles\xxxxxxxx.default\chrome 中,如果这两个文件不存在,就复制该目录下的 userContent-example.cssuserChrome-example.css 来新建就好了。

2,Foxdie 不支持 Tab Mix Plus, 如果你有安装该 extension, 需要换成 Tab Mix Lite CE.

第二步,选用 Leopard subskins

打开 Firefox Add-ons (附加软件)管理器,切换至“主题”标签,右击 Foxdie 条目,选中“关于 Foxdie”就可以打开 Foxdie subskins. 在 Toolbar Buttons 和 Extreme Ways 中均选中 Leopard, 在 The Others 中选中 Bigger Font, iTunes' Scrollbar. 然后重启 Firefox.

Hmm… 看起来与 Safari 很相像了,但似乎还差了点什么…

第三步,安装 Hide Menubar

没错,在 Mac 中通常是没有窗口顶部的 menubar 的,我们可以使用 Hide Menubar 来隐藏。

顺便说一句,如果想要把 Windows 资源管理器、IE 的主菜单条屏蔽掉,你需要使用一些外部工具,比如 Styler.

第四步,安装 Fission (可选)

Safari 的进度条(progress bar)和地址栏(address bar)是合在一起的,我们可以通过 Fission 来实现这个效果。

到此为止就大功告成了,下面是我的 Firefox 效果:

Firefox

顺便放一个我当前的 Windows XP 桌面整体截屏,效果还是不错滴~