links for 2007-10-30

两家饭店的服务态度对比

  我最近被外派到四惠附近办公。由于没有免费的早餐了,所以每天需要多考虑一顿饭的事情。今天早上,我去住邦2000旁边的老家肉饼吃早饭,离预定的开会时间还有15分钟,我觉得时间还够,就点了肉饼和一碗馄饨。虽然被告知需要现做,但我对那家店的上菜速度比较自信,就没在意。过一会儿发现还剩六七分钟了,饭还没有上,就只好去收款台把点的餐退掉,本来以为会费一番口舌,也做好了应付的准备,没想到服务员很痛快的退了,而且还问我:“非常抱歉,是不是时间来不及了?”搞的我很不好意思。于是打算这两天再去吃一顿,算是一点回报。
  而今天的晚饭就没那么幸运了,虽然也是很小的事情。我和另外一名同事去远洋国际中心楼下的美食广场吃饭,找到一家店,每人各点了一份12元的套餐,拿出储值卡和一张15元的代金券结账,结果发生了很啼笑皆非的场面:店员坚持认为我们应该分开付钱,也就是说,15元的代金券只能买其中一份套餐,另外一份必须付12元。我本来还想理论一下,不过觉得跟他交流算术题实在没什么意义,就换了一家吃。后来想想,这个美食广场如果只印一元面值的代金券,就可以解决这种纷争了。

把delicious的书签导入google bookmarks

http://persistent.info/delicious2google/
  试了一下,比较方便。
  接下来在Firefox里面装一个叫做Firefox Google Bookmarks的插件,就可以在浏览器里方便的添加和管理书签了。
  挥泪告别del.icio.us。虽然它的“tag”的创意震撼了整个世界,我在过去的两年时间内,也一直试图用标签来梳理书签,但一直很别扭。事实上,我需要的只是分类、搜索,以及根据已有的书签数据推荐相关书签,这些事情还是让传统的搜索引擎来做最合适了。

谈ajax返回字符串的两种形式

  当javascript语句向服务器端发起ajax请求后,如果一切顺利,会从服务器端收到响应数据,浏览器会把这个响应字符串转交给回调函数处理。按我的经验,响应字符串有两种比较好的形式,一种是json,一种是html。下面以php5+smarty服务端开发模式为例作简要介绍:

  1. json方式:
    服务端对请求数据作如下处理:

    $param1 = $_POST["param1"];
    $result_array = foo($param1);
    $json_array = json_encode($result_array);
    echo($json_array);
    

    那么函数foo的返回值就以json数组的形式返回给客户端,这时直接用eval的方法将返回值赋给某个javascript变量就可以使用了。

  2. html方式:
    服务端对请求数据作如下处理:

    $param1 = $_POST["param1"];
    $result_array = foo($param1);
    $tpl = new Smarty();
    $tpl->assign("result", $result_array);
    $html = $tpl->fetch("foo1.html");
    echo($html);
    

    那么函数foo的返回值会被assign到一个smarty模板里,通过smarty的fetch方法,获得一段html代码,这时直接把html代码赋给某个div的innerHTML属性就可以了。

  第一种方式遵循了清晰的MVC结构。由于javascript还需处理返回的数组,所以适合响应数组比较简单的情况,不适合大段html代码的渲染。第二种方式将模板和JS、PHP进行了良好的分离,便于维护。由于html变化后,页面的dom结构也发生变化,所以适合大段html代码的渲染,不适合交互复杂的类C/S页面。

对extjs进行了裁剪和压缩

  最近打算在产品中使用extjs。考虑到这是一个线上环境,对javascript的要求比较高,因而计划对它进行裁剪和压缩,分以下几步进行:

  1. 使用extjs提供的在线裁剪工具(Build your own Ext)对庞大的extjs库进行定制。我定制了三种不同量级的版本,基本可以满足日常各种需要了。
  2. 使用JSA对裁剪后的代码进行语法压缩和文本压缩,其语法压缩具有极高的可靠性,文本压缩的比率也较高。
  3. 激活apache 2的mod_deflate模块,并启用对javascript的压缩。

  经过以上三步优化后,extjs的尺寸被缩减到了一个可以接受的数值了。具体效果参见下表:

支持的模块 原始版本尺寸 被JSA处理后版本尺寸 原始版本经deflate压缩后尺寸 JSA版本经deflate压缩后尺寸
jQuery
Ext Core
Core-Utilities
Data
Views
140369 77957 (55.5%) 41233 (29.4%) 36225 (25.8%)
在前一个基础上增加:
Core-Layers
Dialog
Form
QuickTips-Tooltip Widget
Loading Mask Widget
303172 164433 (54.2%) 85097 (28.1%) 73920 (24.4%)
在前一个基础上增加:
Core-Drag and Drop
DateMenu
ColorMenu
Resizable
Button Widget
Tabs Widget
SplitBar Widget
Menu Widget
Border Layout Widget
Toolbar Widget
Grid
Tree
Form-HtmlEditor
499490 261616 (52.4%) 133973 (26.8%) 114157 (22.9%)

可以看出:JSA的压缩比率接近一半;不过,无论代码是否被JSA压缩过,经mod_deflate模块处理后的大小都是比较接近的,也就是说,在服务器端开启gzip/deflate特性是非常必要的。

近日文摘

  1. Windows Live Hotmail将提供POP3收信功能
    一个pop3功能竟然可以等上那么多年。可能不开放pop3,确实让微软的在线产品的流量和广告收益提高不少,但它的确限制了hotmail/msn/live(以下简称live)邮箱用户的使用。例如手机上无法收取live邮件,例如无法在其它邮箱系统里自动收取live邮件,另外,如果用户工作在一个不能经常上网的环境里,不能自动收取邮件(尤其是附件),将是非常不可接受的事情。加之早期hotmail在邮箱容量等方面的限制,种种原因流失了许多用户,比如我,注册hotmail帐号只是为了登录msn而已,这其实是很浪费资源的。所以后来,微软允许非hotmail/msn用户注册passport,并将passport与mail产品分开运营,这代表了在线产品的一个典型的发展方向。
  2. The Incredible Machine
    这个页面向我们展示了许多科学爱好者在进行的一种接近“多米诺骨牌”的把戏。称之为把戏是因为他们确实没太多科研价值,因此在中国很难有这样的空间供他们玩耍,但他们却玩的很严谨、精湛,不亚于一场有挑战性的实验。所以有时候我想,做事的心态比事情本身更重要。另外,我对视频中的一些细节比较感兴趣,例如:里面那么多木头是从哪里来的,看做工还很精细,像宜家的感觉,我在北京找块木头真的很难了;还有更多奇形怪状的物品,很难在正规渠道买到,比如那个螺旋的铁架子;他们用到了很多厚厚的书本,看样子是在学校的活动室一类的场所;设计流程的人很牛,一定是具有极强空间想像力的,我认为绝非画一个大富翁地图那么简单;不知道摆一次场景需要花多长时间,真的是智慧与耐力的考验。

8年前的netaid音乐会

  1999年10月9日,在纽约、伦敦和日内瓦三地同时举办了名为“netaid”(网络援助)的音乐会,旨在募集善款,号召人们积极行动起来,消灭极端贫困。三场音乐会借助时差拼接成了一场十二个小时的全球性音乐会。参加演出的艺人可谓群星闪耀,基本上代表了九十年代后半段流行乐坛的最高水平。该音乐会还刚刚被美国广播公司(ABC)评为影响世界的十大音乐事件之一
  既然是网络援助音乐会,那么网络也势必是一个宣传的主战场。CISCO公司参与netaid.org的搭建工作,他们投入了1500台服务器,能够处理每小时高达6000万次的点击量。网络直播时,访问成功率高达99.33%。
  我有幸通过北京音乐台聆听了现场直播--从夜里12点到第二天中午12点。(在备战高考的关键时刻,这样“挥霍”休息时间,还是很有风险的。)不过现在想想真是物有所值,因为从那个时代之后,就没有如此大批的实力派唱将出现了。拿男女偶像组合来讲,90年代后半段有很多正在走红,男子的有backstreet boys、N sync、boyzone、westlife、98 degrees、five等等,女子的也有spice girls、all saints、TLC等等,现在就少的可怜了。目前流行乐坛的hiphop元素太多,听着头大。