Archive for the ‘技术’ Category

Gaim (Pidgin) 2.0

Sunday, May 6th, 2007

自Gaim商标纠纷后的第一个release。Pidgin可能是目前最好的open source、跨平台多IM集成工具了。它基本替代了我的MSN和GTalk原始程序。虽然Pidgin同时提供了sametime的插件,但如果与刚发布的ST 7.5.1相比,差距很大。所以,对于平时工作生活,Sametime  + Pidgin是我的完美组合。

developerWorks Spaces

Thursday, May 3rd, 2007

IBM developerWorks正式开放了空间注册,提供blog,forum和wiki的服务。在填写完spaces注册申请后需要经过dW的审核 – 我刚刚回复了一封email解释我申请的原因和打算如何使用dW服务。

PS: Introducing developerWorks spaces 

推荐:Web 2.0/machine is us/ing us.

Wednesday, April 18th, 2007

把人人皆知的东西,表达的栩栩如生、引人入胜,进而激情彭湃,这个短片真正做到了。下午TLE上在IBM QEDWiki主题报告的结尾重放了这段录像,赢得满堂彩。

social computing = collaboration – goal

Wednesday, April 18th, 2007

昨天在Anaheim举行的IBM TLE会议上,有一个非技术性报告,讨论social computing的社会性。我对里面的一个论断很感兴趣,这就是social computing = collaboration – goal。

协作的目的性无须多做解释,写email、发IM消息、打IP phone,没有一个是盲目的活动。socaial computing从个人行为来看,的确没有明确的目的性。比如写一篇博客、添加一个tag、给一个餐馆打分、上传一段录像。如果social computing真的缺乏目的性的,企业social computing,Lotus Connections的意义何在呢?

解释这个矛盾的最好理论基础自然是长尾效应,众多人的随意性产生的合力可以创造明确的价值,而价值引导目标,我更愿意这么解释social computing和它的目的性。

这个公式可以稍做修改:social computing = collaboration/goal。这会是个有争议的公式,但它很有趣,很social。

一天一行

Friday, April 13th, 2007

过去的两天,我只写了两行代码。

这两行代码分别解决了Lotus Connections Blog中的两个bug,平均一行代码耗时10小时。

其中一个Blog编辑器中的bug,是通过几十次的blog发贴,用Venkman的Firefox JavaScript Debugger抓到的,该错误源自Firefox和Dojo自身的缺陷。因为一天中发测试贴太多,现在在自己博客发贴也有点心理障碍了。

另外一个是Blog的Theme切换问题,为此还动用了Filemon这样的工具,监测javaw.exe对文件系统的修改,在追踪到数据库文件被修改后,进而跟踪DB表变化,加上Eclipse debugger,最后才确信需要把else后面那个”}”提前一行。

在involve到Lotus Connections的开发后,最大的一个变化居然是自己发贴、看social bookmark的兴趣降低了- 搞伤了,就像我现在看到早餐的炒蛋和薯角一样,刚闻到味儿,就半饱了。

Abdera – Atom格式和发布的Java实现

Friday, April 13th, 2007

Apache Abdera是实现对Atom格式解析,发布(APP, Atom Publishing Protocol)的Java类库,IBM最早参与并提供了代码。Abdera之前,ROME是另外一个重要的Atom实现(身在java.net,贴的是Apache license)。这篇文章里谈到了Abdera和ROME的渊源,我在上面、还有这里看到了一些熟悉的名字。

Lotus Connections 1.0里的Blog,同时使用了Abdera和ROME类库。

最近Apache的新闻很多,比如Harmany和JCK,杨普这篇文章是了解这次公开信事件的最佳入门教材。

输入法事件 – 能淡化时且淡化

Tuesday, April 10th, 2007

Google输入法的事情,好像让很多人兴奋,漫长的等待终于抓到了小辫子。这事儿对于中国软件业,不是件好事,出于私心,我个人希望尽可能淡化这些事件,防止别有用心的人借机过度炒作高科技研发/外包的知识产权问题。

两年前在一本国外IT杂志上,登了一张照片,在毕博上海研发中心办公室里挂着保护知识产权的标语 – 作为高科技投资中国最重要的影响因素之一,所有人的眼睛都在盯着IP。3月份在北京举行的LISA国际会议,专门请了国内的IP专家给老外们介绍国内知识产权的保护情况。吃中饭的时候,我旁边坐的是微软中国负责Microsoft Live的CTO,他说的话我觉得挺有道理,“中国人会去买盗版DVD并不意味着工作的时候会偷公司的代码,这是两回事”(当然,意识需要加强)。

今天我订阅的feeds似乎已经隐隐显现了苗头(下图),评论家们终于又有专栏可写,稿酬可拿了。我预测在未来1个月内,至少有1篇有关高科技外包IP问题的cover story会出现在报纸、杂志上。

在IBM,每个developer都要签署知识产权保护声明,并参加开放源代码及知识产权的相关课程并完成认证。

希望这块石头溅起的浪能渐渐平静。

Lotus Connections Blog – Rich editor

Thursday, April 5th, 2007

Lotus Conections 1.0中Blog使用了Dojo的rich editor,这个editor的基本功能比较完善,各方面大致与其他流行的editor如WordPress中使用的TinyMCE持平。由于大部分Dojo的Widget对于i18n和a11y (accessibility)支持较差,IBM对其进行了增强。目前Blog里使用的版本就提供了较好的a11y支持,比如在editor中按tab键会跳出编辑状态,把焦点转移到下一个控件上。现在这个功能可以同时在IE和Firefox里实现 (调试HTML的tabIndex是个很熬人的工作)。

另外,我帮目前Blog的editor添加了离开编辑模式的提示功能 – 当用户写帖子的时候如果点了其他link或者准备关掉浏览器,这个时候弹出窗口警告内容已经过编辑,是否需要离开编辑模式。

用户登录后写文章,如果中间间隔较长的话,会出现提交数据会话过期的情况,数据往往会丢失。根据测试team映的反应,我写了一个heartbeat脚本,在浏览器端定期ping远程的server。在WebSphere下,如果提交的link可以促使Application server访问session对象的话,当前session将会续约,这样可以保持长时间的可工作状态 (缺省为30分钟)。

今天在Mozilla add-on上下载Coop的时候,看到了ScribeFire,装上后就用它写了这个帖子,还挺好使。

Powered by ScribeFire.

新式Java本地化资源管理

Tuesday, March 27th, 2007

John Conner服务于Sun公司,是Java globalization专家。如果在Google groups搜索一下的话,可以发现他解答Java i18n的帖子随处可见。

John的新文章谈到了Java 6的国际化新功能,和新的Java properties相关类的增加,如动态管理等。在Eclipse 3.1后,Eclipse推荐采用另外一种改良的properties文件加载方法本地化资源文件,IBM Zurich实验室为Eclipse写了一个相应实现。

resource bundle, XML, XLIFF,satellite DLL (Win32),本地化文件的格式在多元化,文件管理方式也在多元化。

企业博客、社会书签、员工信息、在线社区、网上协作

Tuesday, March 27th, 2007

这5个东西组成了Lotus Connections:Blog, Dogear, Profile, Community和Activity。

Blog(我目前参与开发的模块)是基于Apache Roller的博客系统,IBM在Roller之上进行了修改和扩展(比如认证系统可以与LDAP,如Lotus Connections Profile连接)。Lotus Connections Blog的前身是IBM的内部系统BlogCentral,几年前在内部上线,并经过了多次修改,新版本的Blog在UI等方面做了大量更改,使用了包括Dojo在内一些Ajax组件;

Dogear的前身是由IBM Cambridge的Lotus研究部门开发的一个社会书签系统,进而演化成目前的Connections中的一个组件。通过用户添加书签、打tagging和浏览器插件,支持快捷的书签生成与共享;

Profile的前身是IBM的BluePages,它是IBM内部的企业员工名录,使用过的人都知道它的强大功能,包括公司组织结构图、个人信息、技能、参与的社区、服务过的客户、发表的论文专利、个人简历都可以搜索,甚至可以在网页上和名录的员工通过Sametime在线聊天;

Community的前身也是一个IBM内部系统, 同样经过了多年的进化。每个community由来自公司各个部门的员工参与,有专门的“版主”,负责社区活动组织、通知、协作等等。Community是在需要时找人、找资源的有效途径;

Activity是一种轻量级的、基于Web的协作系统。多个人可以参与同一个activity,共享数据、活动进度、协调跟踪事件等等,集成了Calendar和Todo软件的某些特点。

上面5个模块都是基于Java,运行在WebSphere Application Sever之上,是IBM踏入企业social computing的尝试。当然,如果愿意的话,可以给它打上Web 2.0, Enterprise 2.0, Collaboration 2.0的标签,在我们这个business 2.0的时代。

企业科研与国家科研

Monday, March 12th, 2007

企业科研曾经创造了无数的科技创新,它们改变了世界:晶体管、激光、C语言、以太网、GUI、数据库、微处理器; Bell实验室、Xerox PARC、IBM Research,无数大企业的研究部门曾经做出了巨大贡献。

然而当我们回顾过去10年的企业科研成果时,似乎与20年前相比安静了许多;在分秒必争的时代,上市企业的工作周期是三个月:大家拼命努力的让季度末的数字更漂亮。三个月,是企业思考、计划、运行的内部周期 – 这让华尔街满意,可对企业科研来说,无疑是个挑战。

Irving的这篇blog很有借鉴意义,这是IBM高级管理人员对于当今世界科研创新动力来源的分析,在企业的研究部门人员纷纷披上西装”call 客户”的时候,未来的基础创新由谁来主导?大学、企业、政府?企业科研被客户需求驱动还是可以天马行空的自由驰骋?我们还需要在企业维持一支庞大的科研力量吗?他们整天埋头搞科研被称为象牙塔,他们关注客户被称为不务正业 – 好辛苦的企业科研人员,他们是在滋润的生活还是在2.0时代挣扎?

The Economist: The rise and fall of corporate R&D -Out of the dusty labs

Irving:Beyond the Ivory Tower

推荐:ERP巨头温州困局解读

Monday, March 12th, 2007

一篇很值得回味的文章,适合软件企业领导、软件销售、市场策划人员、软件开发人员,和软件企业战略策划者 – 关注象牙塔外的世界。

IT时代周刊2007/3:ERP巨头温州困局解读

Example Note 2

Thursday, March 8th, 2007

This is an example of a normal text note

The winner goes to … IBM

Monday, February 26th, 2007

春节长假比上班还忙,回家在成都呆了一个礼拜,赶回上海后马不停蹄的去为香港经济做贡献,回到家刚刚知道今年图灵奖的结果。

在网上看到Allen的照片和获奖介绍后,回想起04年曾经在Yorktown的Watson研究中心的餐厅里看到过”IBM退休老兵报告团”回到公司为年轻人传、帮、带,主席台上里除了慈祥的老奶奶Allen外,还有DRAM的发明人Bob Dennard

根据对社会的贡献而言,Tim Berners-Lee在10年后获得图灵奖应属情理之内。

一行代码,一枝玫瑰

Wednesday, February 14th, 2007
  • 根据《程序员》杂志2007年第二期公布的调查,2006年中国软件从业人员(程序员)的平均月工资是4,100元;
  • 根据”Assessing quantitatively a programming course“一文所引用的参考文献中的调查,未采用PSP (Personal Software Process)的Java程序员每天的代码行(LOC)平均为30;
  • 根据上海地铁《时代报》本周二的报道,今年由于气温反常,使得玫瑰的价格在情人节前上涨,平均每枝7-9元左右。

基于上述假设,平均一个程序员每天的薪资为4100/22(每月22个工作日)= 186块4,平均每行代码价值186.4/30 = 6块2,考虑到上海地区软件从业人员薪资水平高于全国平均,粗略算算程序员们平均每写一行代码就能给自己的女友、太太挣上一枝情人节玫瑰花的钱。

一把玫瑰,放眼望去枝枝都刻着if, else, while, for, public, final, 还有data和data2

非对称的信息保护

Sunday, February 11th, 2007

黑客们近来很忙,他们凭着“熊猫烧香”,“共产”Vista、HD-DVD、蓝光DVD,重新风光的登上了大众的视野,貌似强大的诺顿、卡巴斯基、微软、索尼、好莱坞只能躲在角落里哭鼻子。

whboy比Symantec的工程师强吗;中/俄联合“团”黑队比微软专家牛多少;工业界数字版权保护加密算法已经沦落到被人随意凌辱的地步了?这一切都不是事实。

信息保护中的攻与守,似乎很符合自然界中的某些规律,比如减法比加法难,除法比乘法难,开根号比平方难,积分比求导难,不对称性在信息安全领域似乎同样成立。一个系统如果有200个漏洞,无论是TCP/IP bug还是缓冲溢出,黑客找到一个就可能在你的主页上激动的宣布占领这个如此不堪一击的高地,而系统管理员必须要堵住全部200个漏洞才能保住这个月的绩效奖金。 无论设计Vista激活系统还是DRM,设计者需要把几乎所有可能被攻击的因素考虑到,尽最大限度提高破解门槛,攻击者要做的就是在一个非完美的系统中找到一个下嘴处。

黑客的智慧很高,但是小智慧;设计开发者的的智慧很高,更是大智慧。如果要挑战自己的智慧,可以去尝试设计一个zero defect的系统,这会更刺激、更挑战。

实现IE/FF的URL自动换行(隐藏)

Wednesday, January 31st, 2007

晚上花了些时间调整博客页面:主内容区被横向扩到900px;解决了烦人的URL自动换行的问题 – 这在右边sidebar里面的评论部分问题尤为严重,IE用户经常出现右边sidebar跑到了页面最下方。

comments里常常会贴些较长的URL,而IE在处理URL的时候由于没有空格符所以无法换行,页面被突出的URL顶出来,很难看。

找到了一份很实用的有关IE/FF文字换行的指南,利用里面提供的方法,修改了系统的style.css。现在长URL在IE中会自动换行,在FF中超出预设部分的内容会自动隐藏。

支持IE/FF自动换行(隐藏)的CSS定义(请尝试分别用IE和Firefox访问本贴,比较一下效果):
#wraptext {
width: 170px;
word-wrap: break-word;
overflow: hidden;
}

http://www.MySuperLongExtremelyEndlessURL.com/

同步

Tuesday, January 30th, 2007

数据同步,是很多计算机软件都有的功能,用来帮助以实现两份数据的一致性。可我对同步却一直很小心谨慎,甚至尽量回避,因为要理解每个软件自己对同步的定义,以及这些定义隐藏下的实现是很劳神的事儿。

刚用Notes的时候, 知道了要做“复制”,即服务器上的新邮件会下载到本地复本上;而本地复本上自上次复制后被删除的邮件,在新的复制过程中会从服务器端同时删除。这样“复制”下来,服务器和本地的拷贝完全一样。我有一次不小心,在本地批量删除了上百个邮件,于是不敢继续“复制”,生怕一损俱损。为了把服务器上保存着的那几百封邮件重新拷贝到本地,我选择了为远程邮件创建一个新复本。在新复本复制完成后,改文件名成当前本地邮件复本,同事删除老复本(绝对的笨办法,但我整个过程,自己可以完全理解并明确知道每一步的后果)。

iPod的“同步”,是要求iTunes上的资料库与iPod播放器里一致,通俗一点就是绑定:iTunes instance和iPod设备的绑定。如果要用自己机器上的iTunes上拷贝音乐到别人的iPod上,意味着要首先删除这个iPod上的内容,然后“同步”。我不知道可不可以支持从iPod到iTunes的同步,即iPod上的歌曲覆盖iTunes的资料库(考虑到著作权问题)。如此一来,iPod的同步成了单向复制,不仅是内容只进不出,而且更换iTunes,会导致iPod上数据强制删除。

Windows Mobile的同步,我完全不用。每次通过USB接上PDA后,总是要问我要不要同步,我不知道它是让我把PDA里的新东西传递到PC上,还是PC上的东西传到PDA上,还是双方有了内容修改,彼此更换内容并达成一致。

Lotus EasySnyc我尝试用过一次,也没有太明白“同步”到底是从哪儿到哪儿:同步后如果PDA上更改,信息能否回到PC;PC上信息更改,是否能回到PDA上;双方同时更改,谁来覆盖谁?

所以在真正的同步操作发生前,用户几乎没有机会能了解到“同步”后究竟会导致哪些事情发生,哪里的数据最新、最可靠?整个过程可逆否?如果两边的数据都可以被独立修改的话,如此一来,数据同步和源代码版本控制便很类似了。代码控制提供的词汇比“同步”这两个词好,普通用户很容易理解它的含义:update(这个有点晦涩), check-in, check-out, add to control, commit,方向性都十分明确而且可以被理解。

如果还有新的软件需要“同步”功能,希望能在对话框上有类似下面这样明确的选项(不妨考虑用”下载”、”上传”这样更明确的词汇以避免混淆):

对于潜在的、需要作出取舍的选择,多透露一点实现细节,让操作结果变得可预测,有助于简化使用、树立用户对产品的信心。

熊猫不烧香

Sunday, January 28th, 2007

最近和熊猫有关的新闻真不少,除了有给18只小熊猫起名外,最火的算是熊猫烧香病毒了。

熊猫这个香烧的好,至少比我去九寨沟时在寺庙里是被人忽悠烧了90块钱的高香要有意义的多了,这个香让人感受到久违了个人电脑气息,如雨后带着腥味儿的空气一般。

仿佛弹指一挥间,病毒从杀手堕落成了流氓,以前一上来就清分区表、format c:、del *.* /y、修改PE文件、烧BIOS、靠寄生在别人身上生存的代码,猥琐的变成了.exe, .dll, .scr,变成了可以通过rundll32调用的系统服务、浏览器工具条甚至还带着一个installer。早先杀人越货的勾当成了牟利、骗钱的下三流手段;编写病毒的高级程序员也堕落成用VB都可以开发病毒式Situational Applications的普通程序员;病毒的核心也由“技术”为主转变成以“骗”为主,而说到骗和骗术,不得不感叹这块辽阔土地上蕴藏的巨大资源。

在网络流氓丛生的年代,产了一个熊猫,管它烧香不烧香,它的确是当今病毒世界里的熊猫,被大家瞻仰,连源代码都开始放到网上供大家研究,我想不少三、四十岁IT老人快要流下激动的泪水了。

熊猫烧香的积极意义在于:

1. 教育电脑用户,病毒除了能弹出广告,偷信用卡号外,还能破坏你的文件系统;

2. 不能完全依靠浏览器的安全工具(popup killer;phishing detect),你需要一个实时的防病毒软件;

3. 骗子满街走,流氓不稀奇;学好数理化,走遍天下都不怕。

每年春节回成都过年,我都会去熊猫基地看看,运气好的话能看到几个月大的小熊猫。这次是该我给它烧香了。

变了天的流媒体

Sunday, January 21st, 2007

在07年第一期程序员杂志上,蔡学镛在分析Flash Apollo的时候提到了Flash vedio,它的出现,尤其是在You的2006年,使得苦心经营流媒体的RealNetworks、Microsoft、Apple们建立的功业岌岌可危。

我更愿意把Flash video叫做“平民流媒体”、“快餐流媒体” – 普普通通的视频质量、无QoS管理的HTTP协议,却凭着丰富的平台与桌面支持,良好的可用性迅速走红。由于缺乏实时性和数据非持久性,Flash video甚至不能称作严格意义上的streaming video,充其量可以叫“offline streaming”。它的流行,只能说明一个道理,大多数互联网用户认可并接受它,正如老百姓对“地铁房”的偏爱一般。

RealPlayer,就我的观察,在国内市场的最大用处就是播放网上打包好的RMVB格式的电视连续剧,谁还在乎它支持不支持SyncML呢?Microsoft Media,能让它在多平台多客户端上正常工作(如果可能的话)需要多个拥有计算机硕士学位的工程师和来自微软的支持。

其实这不是Flash vedio的胜利,它是平台与易用性的胜利、是长期以来宽带不宽的可怜下场,这是我在新浪上痛苦的看完丁俊晖单杆147分视频后的深刻体会。

PS: IBM内部的视频共享网站The River (BlueTube),采用了Flash video格式。