Categories
IBM Technology

Code vulnerabilities check – Watchfire goes to Rational

IBM宣布了对Watchfire的收购,并购之后的Watchfire将并入Rational旗下。

Source code security (vulnerabilities) analysis是这两年静态分析领域的热点,3年前Rational Application Developer 6里开始提供了Code Review,不过在security检测领域没有提供很强的支持, 倒是一些独立的软件开发商,如fortify在这个市场里玩的红红火火。微软也不干寂寞,玩起了FxCop (.NET assembly code analysis)

Watchfire的并入势必带来Rational Code Review模块的重构(从RAD 6到RAD 7已经进行过一次升级),IBM内部若干个静态分析引擎面临一次新的洗牌。

Categories
Social

卡莉回忆录

读完这本书后的最大收获是发现如果把书中的HP两个字母换成IBM,所讲述的情况基本都可以成立,其中一些细节让人发出会心的微笑。

总的说来这本书写的一般,大致可以满足读者的窥探内情的需求。知道众人所不知道的,是当权者的专利,也让人高处不胜寒 – you get what you paid for.

我一直觉着卡莉长的像Celine Dion,不是吗?

至于这张,很像《越狱》里的美国总统。

Categories
Life

猪肉帖

今天各个论坛都在说猪肉涨价的事儿。我上个周末在浦东蓝高小区的菜场买的猪肉(精肉,无肥),11块钱一斤,看来价格还不算高。几个月前精肉在9块到10块间,可能因为我经常被肉贩宰,涨价反而没感觉了。

Categories
Social

Enterprise Blogs

Intel中国博客今天正式亮相。目前部分企业博客同时提供了雇员博客和用户博客(整合产品技术社区),以进一步增强两者间的交流。

下面列举一些IT企业的博客站点:

IBM Blogs

Microsoft Blogs

Cisco Blogs

Intel Blogs

Sun Blogs

Google Blogs

SAP Blogs

Oracle Blogs

还有制造行业的例子:GM Blogs

如果可以在DNS根节点上做域名的SQL查询的话,估计会有长长的一串如http://blogs.company.com/,http://company.com/blogs/或者http://companyblogs.com/的站点。

企业信息化帮助提高企业的生产力与运作和管理的效率,是个生存问题;企业内部的社会化软件试图低成本的解决企业内部有效沟通、知识管理和传递的挑战,是个发展问题。对于一般意义上的企业信息化,可以较容易的设置考核指标:IT系统运行的成本、回报都可以量化,换句话说用户可以比较准确的预计实施的结果。

对于企业社会化软件,这个问题可没这么容易了。发表了多少帖子、存了几个书签、建立了几个兴趣小组,可以是一个指标,但实际产生的影响力和这些影响力最终所对应产生的价值如何估算。我想是不是可以用炒股的例子来解释:股民白天入市炒股,真刀真枪,刺刀见红。下午收盘后,大部分人还要读报纸、看电视、上论坛,制定下一步决策计划。少读一天报纸、少看一天电视、少跟几个加精的帖子,会不会立马出现决策失误?不太会。但如果在长期不看、不听下做出的决策还可能正确吗(郎闲平的结论可能是yes,呵呵)?应该承认,股民的晚间功课对正确投资一定是有积极影响的,虽然它不能保证100%发生(有人在网上做了1、2年功课,还是买错了房、挑错了车),但已经很有帮助了。从这个意义上说,企业社会软件在于跨越企业内部管理界限,用p2p的方式(每个人都是知识生产者和消费者)实现提高员工知识技能,高效完成协助。

鉴于这些特点,如果在企业内部花费过多精力评估、量化使用企业社会软件效果,我个人认为是不太合适的做法。对它的考核只有一点,就是坚持 – 长期坚持健身、吃维生素片、睡前喝牛奶、西瓜皮敷脸的同学请鼓掌。

功到自然成。

Categories
Technology

杀还是不杀

首先,本人是这次诺顿病毒事件的受害者。早上收到公司IT发送出来的病毒警告后,在未搞清原因的情况下主动升级了病毒库,导致中招。接下来的几个小时,IT连续发出几封紧急邮件救险,直到临下班前升级到5.17 rev 73才算告一段落。今天是星期五,将会有相当多的机器在周一上班重新开机的时候出问题。可以想像Symantec眼睁睁看着这些已经关机的机器,却什么也做不了的心情,很残忍。

从技术方面,我想到的是well informed decision。如果病毒分析本身的风险性在逐渐上升,依靠在单机上运行的算法匹配病毒在这次事件背景下可能需要重新思考一下。讲的俗一点,用Web 2.0的方式,病毒分析软件在找到可疑文件后也许不应该立刻采取行动,而是应该把你找到的模式上传给服务器。服务器根据一系列参数,如时间、时序、历史记录、当前改模式总的激活数量等实时的手段进行分析,以确定这的确是个问题或者是误报。每个装在客户机上的杀毒软件都像一片RFID,把它收到的数据分享给其他人,通过event driven系统最终得出结论,杀还是不杀?

杀毒软件也需要个虚拟论坛,杀毒前要到坛子里问问,以做出正确判断。

Categories
Technology

换输入法了

紫光变搜狗。

拼音是我唯一会用的输入法,紫光到今天用了大概7、8年了,最早的前身考拉输入法是丁峰推荐的,之前一直用的微软全拼 – 那张抖来抖去的大面板。

从紫光到搜狗的过渡非常平滑,唯一不适应的是在Firefox里输入的时候,输入法框和浏览器输入框里同时出现正在输入的拼音,很分神,不知是何道理。

紫光、搜狗和谷歌输入法所属的企业,都聚集在清华科技园周围,的确是个出活儿的好地方。

Categories
Social

最近一次洗冷水澡是在什么时候?

晚上忆苦思甜的时候想到这个问题,我最近一次应该是02年的10月左右,非典前的秋天,快整整5年了,世界杯都过了两碴了。

欢迎回帖。

Categories
Technology

Developer Toolbar

向任何人兜售浏览器的toolbar都需要很大的勇气,出于对长期与dojo之类Web client端代码打交道的程序员们的关心,我准备推荐下面几个浏览器插件,which可以大大的提高生产效率:

1. LiveHTTPHeader (Firefox);

2. Web Developer (Firefox);

3. Firebug (Firefox)

4. ieHTTPheaders (IE)

5. IE Developer Toolbar (IE)

其中IE Developer Toolbar是MS刚刚释出的新货。

Categories
IBM Technology

Lotus Connections Blog – Feed cache

Lotus Connections 1.0中的Blog实现了两层的缓存机制试图更好的解决性能问题。第一层是Application Server对某些访问频繁数据的缓存;另外一层是在HTTP reverse proxy上,对特定URL资源的本地缓存。缓存对改善性能,尤其是对实时性要求相对较低的Atom feed来说,性能改善的效果更明显。

考虑对数据实时性,Connections Blog缺省关闭了application server的缓存,这样用户在发贴或者回帖后刷新页面立刻可以看到更新,否则从数据写入到reload会有一段时间间隔,容易造成用户困惑。

这里想谈的是HTTP cache。

Blog的典型配置是用DB2数据库,WebSphere appserver,前端是network dispatcher和edge。edge实际是一个HTTP reverse proxy,实现URL转发和内容缓存的功能。 为了实现对Atom feed访问的缓存,Blog会在每个feed的http response的头上面缺省加上max-age=600,response首先到达edge,edge收到后知道需要将该feed缓存600秒。当下次用户通过浏览器、各类feed reader或者是抓虾这样的server端访问的时候,edge首先看feed的10分钟缓存期是否到期,如果还在10分钟内,edge之间把它的cache返回给用户而不再访问appserver;如果已经超过10分钟,edge会向appserver发一个HTTP conditional get的命令,看application server端是不是有新的feed内容。Application server收到feed的请求后,如果有新的feed内容,则向edge返回新feed内容,response code置成200;如果没有更新,则不返回任何内容;response code置成304。无论是否有更新,edge在重新收到appserver的返回后,将重新缓存该feed 10分钟。依次类推。

当在没有edge的情况下, 可以用浏览器来模拟。当在10分钟间隔内,如果在地址栏之间回车的话,浏览器甚至不会与服务器建连(可通过LiveHTTPHeader或者ieHTTPHeaders之类的browser插件观察)。目前Firefox和IE对max-age都可以很好的支持。

在实际情况下,大部分feed源本身并没有类似edge这样的模块,而是直接把appserver暴露给client。从实现上看,很多feed reader对last modified时间戳的管理都很弱,会导致每次都迫使appserver重新加载数据。另外,在server端有些feed server也没有实现对if modified since的管理,无论什么请求都重新进行数据访问,这样都增加了额外的负载。

这是Connections Blog的tech lead Rob在调试feed cache的时候发给我的一篇文章,写的很详细。另外来自IE team的这份A Caching Issue in IE7 Beta 2也很有帮助。

从Feed出发,此类提高性能的缓存方法可以常态的运用在如REST等基于HTTP,以URL来映射资源的应用上,来帮助克服传统Web Server/Web browser多年前已经完美解决了的、而重新在Web 2.0环境下产生的数据生产者和消费者之间产生的老矛盾。

Categories
Technology

Gaim (Pidgin) 2.0

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

Categories
IBM Technology

developerWorks Spaces

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

PS: Introducing developerWorks spaces 

Categories
Life

金刚不在

帝国大厦简称ESB,总让我联想到Enterprise Service Bus。

这是在86层往上看到的景象,没有大猩猩。还好,我花了7块钱买了一个Made in China的金刚怀抱ESB的冰箱贴。

Categories
Technology

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

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

Categories
Technology

social computing = collaboration – goal

昨天在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。

Categories
IBM Technology

一天一行

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

这两行代码分别解决了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的兴趣降低了- 搞伤了,就像我现在看到早餐的炒蛋和薯角一样,刚闻到味儿,就半饱了。

Categories
IBM Technology

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

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,杨普这篇文章是了解这次公开信事件的最佳入门教材。

Categories
Social Technology

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

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

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

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

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

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

Categories
IBM Technology

Lotus Connections Blog – Rich editor

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.

Categories
Technology

新式Java本地化资源管理

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),本地化文件的格式在多元化,文件管理方式也在多元化。

Categories
IBM Technology

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

这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的时代。