Pages

Saturday, March 20, 2010

印度之行

前奏
春节前接到通知说要到印度出差,等了好久出国机会的我并不感觉很开心,可能是因为丢下了罐罐,也可能是因为期待太久,当机会来临时需要点过渡期。不管怎么样,按照惯例,买到了机票才是真要去了。

春节过后,第5天,是个星期三那到了签证,星期四星期五订到了周六晚上的机票,没有异常的顺利的进入出差倒计时。

航班
没有想到,订到的机票是成都到印度班加罗尔的首航直航。之前的到印度的班机不是要到香港转机,就是要到泰国转,怎么着也要多耽误个几个小时。这次算运气比较好,搭了个首航直航,五个半小时就能到班加罗尔。

首 航现场,嘉宾多多,包括了政府官员,企业代表,国航工作人员,记者等等,我呢,就站在旁边看看(以上人员貌似要去班加罗尔考察)。和经理很早就办了登机 牌,差不多了就进去候机厅了。其实在旁边看看也是有收获的,好的有出境安检人员的严格,不爽的企业代表的各种LV大包包,低级公务员对高级干部不无比殷 勤,无视上千元国际长途的猖狂之话。整个飞行途中,我和经理聊了很多,他指点了我很多东西。而其他人呢,其他的70%,聊的话题不是高尔夫就是桑拿(可能 是工作累到了)。

航班居然首航就晚点近一个小时,到印度的时候已经是当地时间12点20了,那也就是北京时间2点50了,整个人累是累,不过对于这个新鲜的国度充满的好奇,到处都是新鲜事,第一件事:印度有一种独特的气味,感觉不太好。

Tuesday, March 16, 2010

Firebug lite

Firebug lite是针对非FF浏览器的版本,利用它可以在其他浏览器上进行脚本debug,注意它是利用了通过脚本记载远程脚本到本地方式实现的跨平台debug,和搜狗云输入法,GoogleReader的分享任意网站是一个道理。firebug lite的出现为Web App开发人员在对各浏览器的支持开发方面提供了方便。赶紧添加标签吧。

添加标签:
URL: javascript:var firebug=document.createElement('script');firebug.setAttribute('src','http://getfirebug.com/releases/lite/1.2/firebug-lite-compressed.js');document.body.appendChild(firebug);(function(){if(window.firebug.version){firebug.init();}else{setTimeout(arguments.callee);}})();void(firebug);

详情可以访问:http://getfirebug.com/firebuglite

之前做个一个云划词,功能是实现了,不过后期懒得维护,现在也没有派上用场,哎,执着才是好产品的根本。

实验-Javascript Message Protocol - 模拟Stomp数据推送

前段时间用过Stomp协议,通过Orbited服务器在页面中利用JavasScript进行数据推送,真正实现JS数据的实时推送,为什么这么说?因为HTTP 是客户端-服务器通信的标准协议,它是无状态的,而且在某种意义上来说,也是一种单向的协议。之前看到过IBM官方上的一篇文章,上面详细讲解了页面中常用到的(模拟)推送技术。简要介绍下通过Ajax技术的有:
  • 短轮询短轮询也称为高频轮询,客户端会以固定(或可配置)的时间间隔与服务器联系,查找是否有新更新可用。(之前用的较多)
  • 长轮询这种方法的理念就是客户端建立连接,服务器阻塞连接(通过使请求线程在某些条件下处于等待状态),有数据可用时,服务器将通过阻塞的连接发送数据,随后关闭连接。客户端在接收到更新后,立即重新建立连接,服务器重复上述过程,以此实现近于实时的通信。
  • 流通道流通道(streaming channel)与长轮询大致相同,差别在于服务器不会关闭响应流。而是特意保持其处于打开状态,使浏览器认为还有更多数据即将到来。(没有研究过此方法)
然而,虽然上述技术都被广泛利用到了Web应用中,但是它的缺点是显而易见的,比如说,当没有数据更新时短轮询极度浪费网络资源,缺乏可伸缩性等等。

当然,庆幸的是我们还有别的选择,基于套接字的RIA技术,利用flash或者flex技术中的套接字实现数据推送。另外,如果能和Javascript脚本进行数据套接字推送的话,就更完美了。其实绕个弯就可以。此实验就是为了解决Javascript获取实时数据的问题。

我在实验中用到了Python Twisted(用于套接字服务器)+ Flash AS3(中间套接字层)+ Javascript(客户端)+ Tomcat(Web服务器),取名叫做JMP-Javascript Message Protocol。Flash中JmpClient类实现了与Python Twisted服务器的交互,同时还创建Flash应用程序管理客户端JavaScript中JmpClient类集合,利用Flash和Javascript可相互控制的方法,把整个Flash应用程序中的事件触发与Javascript绑定,实现为中间层,而客户端JmpClient类实现了如下接口:
  1. connect(server, port, header) : Void :连接远程服务器
  2. onConnect : Event :成功连接远程服务器端时调用
  3. send(str) : Void :发送消息
  4. onMessage(str) : Event :接收到消息时调用
  5. subscribe(subscribe) : Void :订阅某个频道
此实验对于浏览器来说是跨浏览器的(已经做过测试),对于以后的程序开发来说,可以针对接口实现各种语言的客户端程序,比如说Java,C#,python等等,对于消息传送,只要是JMP的客户端程序都可以进行数据传输,比如说Air程序与Web App 中的 Javascript 交互,这些都是以后需要做的目标。

看过之后,可能会找到Stomp的影子,确实不错,当我用过Stomp时,感觉当Javascript能直接和远程通信进行交互,实现数据无刷新实时推送,那么在页面实现的效果(尤其是聊天室)和用户体验会提高很多,比如说你看到的Google Wave实时获取对方输入,Google Reader实时推送文章,各类社交网站的留言推送等等。

当然实现上述功能还需要很久是的时间和投入,我想的是太简单了点 ,而且我相信Google也会有独到的技术。

今天完成了这个实验的以上接口,基本可以用做工具和别的应用程序整合使用。
明天打算开始做一个简单Chat Web应用程序去测试JMP,使其更加完善。

部分关于Ajax推送的文字来自于《在Ajax应用程序中实现实时数据推送》,相当好的一篇文章。

Sunday, March 14, 2010

GoogleReader 更新(加载)

不知道是什么时候更新的,GoogleReader首次加载的时候只是加载更新了的或者你没有阅读过的,而之前是都加载,这样速度快多了,用户体验也会更加舒适。关于UED方面,有很多东西要象Google学习下。
    

圆周率-Day

今天是圆周率日,再次回想起当初学习圆周率时的对前人的滔滔江水连绵不绝的敬仰之情。除此之外,Google的Noodle做的是相当棒,创造力和想象力超强,那份敬仰之情也是渐渐扩大到Google身上。

Saturday, March 13, 2010

《Time Files》EP-Eason Chen[陈奕迅]

陈奕迅2010年03月12日发行了最新的EP专辑《Time Files》。它的专辑封面一直都是我很期待的东西,这次也没有让我失望,Eason的风格依然存在,乱搞。
其中收录了
  1. 无人之境
  2. 大人
  3. 一丝不掛
  4. 陀飞轮
  5. 心腹 (麦当劳35週年主题曲)
  6. 味之素 
6首歌曲,到时候找来听下。

Thursday, March 11, 2010

即使翻墙也要发布

原来的博客不知怎么的,不能访问了,找运营商也不能解决,又要到今年6才到期。干脆,翻墙也要发。
第一次用blogger,发现在中文显示下特别难看,改用全英文界面,又用了简单的主题。也不管有没有人看,手里有货但是没有地方写的寂寞难耐。



First Post

Hi all,

this is my first post, welcome!