Categories
Technology

珊瑚虫QQ

腾讯赢了官司,输了人心。

Categories
Technology

短信mashup

最近注册了饭否,刚才在浏览抓虾的时候顺便绑定了饭否的帐号,如此一来便可以直接在抓虾分享link到饭否了。饭否的短信发帖的功能看上去很方便,似乎还有每天50条上限的短信推送。

我最近在寻找可以定制内容聚合(包括各类feeds,包括我的私人email,新浪新闻的首页,博客的新评论,论坛的新帖子等),并把这些东西mashup后给我发一组短信的在线服务。另外我还可以定义短信发送的有效期,比如说仅在出门在外的时候才发送。在被聚合的内容提供商API开放的前提下,甚至还可以短信回邮件,回帖,回博。

如果GPRS足够便宜的话,我该做的是换掉6030,弄个大屏幕的手机:不是要运行手机上安装的RSS reader或者Web浏览器,而是一个mobile VNC client,用它连上在家里或者办公室的台式机,做平时可以在PC上做的一切事情。如果网速足够快,这个大手机不再需要高速的CPU或者大内存,它应该就是一个固化了vnc client的大屏幕手机而已。

再以后,会有人提供在线的VMWare的hosting服务,每个人可以把自己的台式机部署到远程的VMWare上,支持各类终端设备的远程访问…

Categories
Technology

Lenovo lab – SaaS (Web 2.0)

SchedulerBest4CLenovo lab推出的两个基于Internet的服务,一个是在线日程管理(JavaScript实现),一个是类似Visio的在线矢量图工具(Laszlo实现)。

为了确认两个demo的实现方式,查看了一下HTML Source,在Best4C的meta tag里除了找到OpenLaszlo外,还有两个老外的名字。网上查了一下原来是Gliff的创始人,而其中的Chris在一个博客的回帖中提到了这件事情。

说实话,这两个东西做的都比较精致,感觉不错。只是联想也需要加强一下IP管理与教育,尽量避免发生类输入法事件,减少不必要的麻烦。

而Scheduler里meta tag中的信息显示该开发者使用的是sohu的email地址,并且这两个demo的讨论区都设在搜狗说吧,很容易让人揣测搜狐在其中扮演的角色。好了,点到为止,不八卦了。

话说回来,现在还看不到联想在Web 2.0和SaaS的尝试所蕴含的big picture,但话又说回来,似乎任何IT企业在Web 2.0的投资都貌似正常不需要理由(有也不告诉你,嘿嘿)。反正这个世道等什么都想清楚才开始撸袖子干话,恐怕只能轮到点剩汤喝了。

Categories
IBM

Lotus Connections 1.0.1发布

Lotus Connections 1.0.1昨日发布,最主要功能是增加了多语言支持,另外的feature见Ted的博客

需要提到一个特别的小插曲,是有关产品名称的翻译问题。在Connections 1.0.1的翻译测试进入尾声的时候,有关Connections中五大模块的翻译问题还在讨论之中。当看到到简体和繁体中文的参考翻译后,我们觉得有必要和翻译中心的同事进行沟通,原因是”Profiles”的中文翻译在简、繁体下分别被翻译成了“概要文件”和“設定檔”。这是因为在其他IBM产品中,“profile”基本上是配置、参数管理的意思,但作为一个产品名的翻译,“概要文件”和“設定檔”没有反映出产品的真实功能。IBM翻译中心使用了translation memory进行语汇管理,以保证产品文档翻译的前后统一,但从产品推广和帮助用户理解的角度出发,这次是有必要做出修改的。

最终我们选择了”人员”和“人員資訊”作为Lotus Connections Profiles的中文翻译。另外,对”feed“的翻译也做了修改,从“馈源”改成了”订阅源“(这个翻译是本人的贡献,呵呵)。而“Dogear”最终保留了原名,其实个人觉得用“共享书签”会更好。

Categories
Technology

一个legacy对话框

自Windows 95开始,微软对系统图标做了大规模的改进,包括真彩色支持、重新设计的3D图标等,到Windows 2000和XP后,几乎所有shell32.dll中图标都被更新过多次。

今天在安装毛泽东字体的时候发现这个爷爷级对话框,用过Windows 3.1的应该会有很深的印象- 文件夹图标、硬盘、光盘图标。细心一点可以发现对话框左上角用的是缺省图标,可以推测这个对话框的代码可能连续使用了超过10年的时间而没做任何修改。不清楚Vista里面有没有更新。

Categories
IBM

蓝莲花

上周五(8月17日),IBM正式发布了Lotus Notes/Domino 8.0。至此,从今年4月份至今,IBM Lotus品牌下连续发布了Lotus Sametime 7.5.1, Lotus Connections 1.0, Lotus Quicker 8和Lotus Notes/Domino 8四个重要的产品升级(其中Connections 1.0是全新产品)。

Lotus产品线也启用了一套全新图标,下面是来自Alan Lepofsky (IBM)博客上的Lotus产品logo:

从左到右分别是:Notes, Sametime, Quickr, Connections

成立已满25年的Lotus软件,在融入IBM 12年后其产品线已经随着时代进步发生了多次重大调整。从98年并购Ubique获得Sametime的早期雏形;到实现从Lotus 1-2-3向IBM Productivity Tools的迁移;到进入企业社会软件市场。作为最近10年间产品转型的技术推动力,Web, Java/J2EE, Eclipse等技术和开放标准是促进Lotus产品升级换代的重要因素。

Categories
IBM Technology

reverse proxy配置中的路径转换问题

reverse proxy(逆向代理)一般位于Web应用程序的前端,对用户屏蔽了后台的应用服务器。除了请求转发,动态负载平衡和缓存也是reverse proxy的主要功能。在配置逆向代理的时候,一个普遍存在的问题是URL转换。

比方说有一台应用服务器,它的访问地址是http://appserver:9080/app,该地址并不直接暴露和用户,而是由reverse proxy配置成一个对外可见的URL,如http://revproxy/home/app,它是用户最终在浏览器输入的地址。当reverse proxy收到这个请求后,把它转换成应用服务器地址后,将该请求(连同HTTP request header中的参数)转发给后台的应用服务器;应用服务器返回的内容再经reverse proxy,最后回到用户浏览器。

一个常见的问题是如果应用服务器返回的HTML页面包含了在该应用服务器上有效的绝对或者相对路径时,reverse proxy该如何处理?如果是绝对路径的话,那么用户在点击页面上这个链接的时候就会跳过reverse proxy直接连到应用服务器上;如果是相对路径,如”/app” 的话,那么如果reverse proxy自己的URL前面又填加了新的目录名,如上面提到的“/home”,那么这个URL到用户那里就会成为”http://revproxy/app”,同样也是错误的。

reverse proxy的一个重要功能是地址转换,在WebSphere Edge Components(早先的 Edge Server)里可以通过配置一些地址转换规则来解决这个问题。它的工作原理大致是这样:在reverse proxy收到从应用服务器返回的HTML内容后,对其进行内容扫描,如果发现如”href”, “src” 等之类包含URL链接的标签时,根据预先设定的规则把它们替换成对外可用的地址。这样原来页面中的绝对、相对地址经转换后成为最终用户可以访问的地址。需要注意的是,reverse proxy对HTML的扫描是有一定限制的,如果这个绝对或者相对的URL是嵌入的JavaScript里,通过在浏览器端解释动态生成,或者存在于其他一些非链接性质的标签中,reverse proxy是没有办法对这些URL进行转换的。这样漏网的URL将直接暴露给用户。

解决页面中无法被翻译的绝对地址,似乎必须要修改应用程序;而对于无法被翻译的相对地址,可以在reverse proxy通过URL映射来解决。URL映射的原理是当reverse proxy接收到来自用户的HTTP 请求后,如果该URL满足预先定义的模式,则进行替换。比如在WebSphere Edge Components 中可以设定如下的地址转换规则:

Map /app/* /home/app/*。

如此一来,URL地址的转换问题基本得到解决。现在,还剩下两个问题需要考虑:

1. 当后台的应用服务器通过HTTP 301/302进行地址重定向的时候,reverse proxy必须也对该地址进行翻译。在edge中,可以使用下面的命令实现:

ReversePass http://appserver:9080/app/* http://revproxy/home/app/*

2. Cookie的作用域

当用户在应用服务器上登录后,往往会得到一个或多个cookie。在J2EE环境下,服务器端的session变量会产生一个名为”JSESSIONID“的cookie变量送给浏览器,同时指定该变量的作用域,如”path=/”或者”path=/app”。如果是前者那样的根目录,则没有问题,但如果是后者的话,如果reverse proxy原封不动的将该cookie值转发给用户浏览器的话,那么当用户再次发出如”/home/app”,这样的URL请求时,此cookie是不会放在HTTP请求头部中的,因为这个请求的作用域是“/home”,而不是”/app”。cookie作用域失效往往表现为用户的”伪登录“,即在后台服务器上已经登录但通过reverse proxy的话还是出现无法正常登录的情况。

在edge components里,可以使用下面的配置方案解决cookie作用域修改问题:

JunctionRewriteSetCookiePath /app/* /home/app/*

不过由于WebSphere Edge Components 6.1里的一个bug,该功能存在故障,需要获取指定的补丁更新方可使用。

另外,在应用服务器这端,如果可以指定cookie的path永远为根目录,会减少很多麻烦(在Lotus Connections 1.0/1.0.1里,cookie的path为根目录”path=/”以实现多个功能模块的单点登录SSO)。我在Tomcat下测试时发现,Tomcat生成JSESSIONID时,缺省的path就是当前webapp的context root,而不是根目录。如要强行指定Tomcat生成的cookie的path,需要在其”server.xml”配置文件中的”Connector“段中加入‘ emptySessionPath=”true” ’。

有关reverse proxy,如edge components中还有很多复杂的问题这里尚未涉及,如SSL连接、证书等网络安全相关配置。希望此文可以给reverse proxy,尤其是IBM WebSphere Edge Components的用户一点帮助。

PS:有关edge 6.1的配置,目前最完整的官方文档在此

Categories
Technology

JavaFX的愿景

JavaFX,最简单的理解(本人理解)就是用脚本语言开发swing应用,部署在网络上,通过JNLP加载,最后用客户计算机上的Consumer JRE运行该应用(或者是在移动设备上的JavaFX Mobile)。当然用JavaFX开发普通桌面应用也可以。

用脚本语言写UI早已不是新东西了,不过JavaFX的.fx文件到字节码的编译器似乎是给进阶人士的选配(除了可以脱离JavaFX runtime外,没有想到其他的value add)。在不使用JavaFX编译器的情况下,.fx文件在运行时被加载、解释、执行。

如果JavaFX利用网络发布的话,我希望有这样一个功能,即用户通过HTTP访问一个.fx文件,可以在服务器端生成一个可以执行的应用(applet, JNLP包裹的jar file, etc)并立即在客户端显示出来。这个功能在Openlaszlo里面有很好的实现,它可以在server端动态的编译.lzx文件并生成一个Flash文件(.swf格式),并且此flash可以离线播放。这个转变实际是以用户界面为中心的设计:窗体,而不是main class,将作为交互式应用程序的入口点。

把用户搞的很累的Java applet在浏览器兼容性、安全设置、签名、证书等问题上阻止了applet被广泛的采纳成为Web交互应用的标准。JavaFX能否打赢这个翻身仗,似乎不在JavaFX script language,而是那个consumer JRE。

Categories
Life

工作餐

自打5月份正式成为“张江男”后,工作午餐比以前在城里的时候变化了很多。在瑞安上班,每天12点出来在淮海路觅食,基本就是巴士、醉美、大旺、干锅居、黑土地、2001、真功夫。。。一顿饭连吃带走路,差不多要一个小时。

在887号,午餐问题变得很简单:一共三个园区食堂,6、8、10块三种组合,一般11点半吃饭(12点后,有两个食堂基本上以及没什么菜了),20分钟后可以回到办公室。加班的同事,也可以很方便的吃到晚餐,不过要在6点前去食堂。

另外,887号还提供早餐,8点开门,9点半前基本还能吃到,有包子、馒头、花卷、鸡蛋、烧卖、稀饭和豆浆等,价格很便宜。我现在每天都在公司吃早餐,质量比在黄陂南路地铁黛玲特买羊角包改善了很多。

隆重一点,可以去张江地铁。开车的话可以凭在地铁商圈内的消费凭证免费停车(肯德基只能1个小时内有效,其他店3个小时)。

Categories
IBM Technology

Redbooks: WebSphere Application Server V6.1: Classloader Problem Determination

这本昨天发布的红皮书在我最近的阅读列表中。Container环境下的classloading是无数诡异问题的根源。以Lotus Connections 1.0.1来说,我们用了icu4j来提供一个时区列表,icu4j本身自带了这些列表的翻译,比JRE自带的要全。但在测试的时候发现WAS 6.1.0.3下的时区列表繁体中文的显示有问题,混入了大量简体中文字符。其原因在于WAS自带了一份icu4j并且早于webapp下的lib被container加载,而这份icu4j自带的时区翻译存在问题。

对于长期从事WAS应用开发的IT工作者,这是本必读书。

Categories
Technology

标准的标准

有一段时间没“博“了,Lotus Connections 1.0.1正在冲刺阶段,所有精力都扑在上面了。不是因为看了新浪这篇文章,今天估计也不会”博”。

作为一个外企职工谈中国的标准化问题是个风险很大的事儿,这里仅谈个人观点。

稍微列举一些这两年的热门标准,数数这些高科技领域内的标准,无一不是吵得唾星四溅,火药十足:WiFi, RFID, 高清电视, XML文档, 3G, 手机充电器, 服务器, EVD…在这些新兴领域内拥有话语权无论对于企业还是国家都意义重大。然而凡是标准,就不能很多,一个领域内2-3个互相可以兼容的就差不多了(搞网页开发测试IE/Mozilla兼容性的苦孩子们请排队握手…)。企业或者国家搞自己的标准没有问题,在保证技术先进性的前提下,就是是解决保护现有投资和平衡各方利益的问题。

打个比方,比如美国乒乓球联合会提出修改国际乒联标准,增大台面、 球的直径、换胶皮等等要求,中国乒联的态度会是什么?很显然,一个对于现代乒乓球运动没有做出重大贡献的国家,试图利用另立标准改变自己的地位,对于大多数在这一领域做出过卓越贡献、投入大量人力物力的各方是不公正,也是不能接受的。其实标准的本质和专利制度一样,它们都有可能成为垄断的工具并阻碍社会进步,但大部分情况下是它们却可以刺激科研创新、激发生产力,是积极的。

要想在这些领域拥有强大的话语权,我认为最重要的还是踏踏实实的为标准的发展和进步做出自己的贡献,当一本1000页的标准草案提出来的时候,里面200页有我们的贡献,这个时候谈什么都不过分。

在一个没有人愿意埋头做事的年代,为了生存,大家都熟练掌握了抢蛋糕的本领,希望咱们在抹嘴的时候,能多想想那些腆着肚子活面、打蛋的大师傅们。

Categories
Technology

The OSSwin project: Open Source for Windows

一张整理较完整的Windows平台下的开源软件列表,推荐一下:

http://osswin.sourceforge.net/

Categories
IBM

projectzero.org

projectzero.org是IBM在Radical Simplification驱动下最重要的一个项目,旨在提供一个简化、高效的运行时和Web开发框架。在过去的一、两年中一直处于内部开发状态,近日对外开放给公众。

曾经看过北京CDL开发的mashup zero的一个demo,使用Web IDE构建mashup  widget并生成XML fragment供runtime对多个数据源进行获取和内容整合。

Categories
Technology

Lotus Connections 1.0 eGA

注:今天(7/03)才发现此帖被置为private,现在更正为public。

今天IBM第一款企业社会软件包,Lotus Connections 1.0正式发布。Lotus Connections集成了企业员工名录、社区、博客、社会书签和活动管理,是IBM迈进social computing领域的第一个正式产品。

安装Lotus Connections需要WebSphere Application Server 6.1, DB2 9.2或者Oralce数据库,LDAP服务器和Tivoli Directory Integrator。

在过去的100天,我个人在Connections开发工作中的最直接的成果是修复了博客模块里的74个bug。

Lotus Connections 1.0.1目前正在开发中,主要是加入了多语言支持,包括英文、德文、法文、意大利文、西班牙文、葡萄牙文、简体中文、繁体中文、日文、韩文。

Categories
IBM

关系

Greater IBM是IBM最新发布的(由xing.com提供服务),供现任IBM职员、已离职员工、退休员工、实习生等建立关系网的场所。关系是个好东西,尤其当我们需要的时候。

再过一天,Lotus Connections 1.0就要正式发布了,最近一周出台的Greater IBM和Web 2.0 Goes to Work为Lotus Connections的发布做足了铺垫。

Categories
Technology

Cross-compiling .NET to Java

Mainsoft,如果我没记错,就是几年前Windows源代码泄露事件的主角。它在6月份发表了叫做Mainsoft for J2EE 2.0的产品,该产品主要功能是支持用户使用.NET语言和工具进行开发,然后通过cross compiling技术把应用最终部署到IBM WebSphere平台之上。之前虽有MS已经提供了Java语言转换到C#的辅助工具,在正式的应用开发中把.NET平台进行整体的J2EE迁移,似乎还不多见。这件事的意义显然比Google Web Toolkit把用Java开发ajax的代码compile成JavaScript的意义更为重大,毕竟中间件是个利润丰厚的市场。

除报价$5000美元企业版外,Mainsoft还提供免费的developer edition供下载试用。

详细分析文章见6月份SDTimes

Categories
IBM Technology

部落格

下午在对Blogs新收到的语言包进行压缩、编码转换并用CHKPII工具检测后(PII是IBM专用词汇,即Program Integration Information的缩写,意指需要和程序一起build的语言资源,不包括帮助文件等),放到local build里跑了一圈,验证一下Group 1里面9种语言的显示界面。在切换到繁体中文的时候,看到了“部落格”。

这是台湾对“blog”的翻译,挺生动,让我联想到了“四四格”。

从上面的截图看,Blogs多语言的支持除了语言包外,还有不少细节需要处理,如上面那个“18 5月”的格式化问题。

Categories
Technology

中国十大数据库?

这里是世界上容量最大的十大数据库,注意到里面有两大电信运营商的名字,除了很想知道这些数据库都采用了那些产品和技术外,我还很想知道中国数据量最大的十大系统。我估摸着可能有这么几个:

中国工商银行、中国移动、百度、上海证交所、中科院某项科学研究所用之数据库、政府某系统(如人口、户籍等)。。。

搞过VLDB、数据挖掘的来自北大、人大、复旦的同学请补充啊。

Categories
Social

该干嘛干嘛

一个flickr访问不了了,好多人都在闹,没必要。CNN大家都看不了,没见谁闹过。再说,闹也解决不了问题。闹牌照就不拍卖了?闹房价就不涨了?更别说网络这些免费的东西了,知道,“噢”一声也就完了。Google、Wikipedia、typepad,就连未名空间telnet现在不也都是好好的,就是出了问题也总难不住人啊,尤其是闹腾声音最大的人。

所以,该装伊朗人插件的装插件;该装锅的装锅;该搬家倒数据的就搬家倒数据;该到国内互联网注册服务的就赶紧注册;该吃牛肉的吃牛肉;该上牌的上牌;该买房的买房。

前几天收到dreamhost的邮件,提醒我还有一个月我的博客租期就到了。本打算续2年,现在看看先租一年再说,以身作则,做一块和谐社会的橡皮泥。

Categories
IBM

Telelogic goes to IBM Rational

我对Telelogic的了解来自《程序员》杂志里的广告和专栏文章,虽然我从来没用过Telelogic的产品。

这次并购是ALM市场的一次小规模洗牌,Rational + Telelogic,又要让一堆人忙活了。