Ling Zhang Ling Zhang's Blog

一行代码,一枝玫瑰

  • 根据《程序员》杂志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

Read more

跨行转帐 - ChinaPay & 招行

晚上登录chinapay进行转帐的时候,在“支持卡种”的列表里发现了招行的借记卡,估计Chinapay很久以前就开始支持了只是自己后来再也没有复查过,一直不知道。尝试转帐400块到我的一卡通(8位卡号前面加0021),还上个星期两桌干锅居的消费,一次成功,^_^

这样的话以后刷卡还款方便了,用chinapay从中行转帐到招行一卡通、一卡通关联招行信用卡自动还款。希望Chinapay能早日开通对工行牡丹卡的支持,彻底解决牡丹-运通卡出差消费还款的难题。

</p>

Read more

非对称的信息保护

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

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

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

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

</div>

Read more

Lost in e-mail

好多天没更新博客,因为实在太忙了。粗略统计了一下,在过去的5天(包括双休日),一共发出了约100封电子邮件。下图是下午工作的时候抽空抓的一个屏,是我的Notes上的tab,1400×1050分辨率的机器上有些tab已经要通过扩展菜单才能看到了。

上面是PS后的分段图。 这里是原始图。

Read more

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

晚上花了些时间调整博客页面:主内容区被横向扩到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/
</p>

Read more

同步

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

刚用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,方向性都十分明确而且可以被理解。

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

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

</p>

Read more

熊猫不烧香

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

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

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

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

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

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

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

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

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

Read more

Moving on

"Moving on",是Irving告别自己长达37年的IBM职业生涯后,对未来的希望和规划。在今年6月正式退休后,Irving将会去MIT任教,并会继续在公司做part time工作。这位掌管IBM技术战略与创新的教父,可以考虑著书立说,谈谈这30多年来的成败,惠及我们扁平世界里的群体和Second Life中的芸芸众生。

Irving, move on...

</p>

Read more

变了天的流媒体

在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格式。

Read more