2008年11月22日星期六

HTML中的UI何时更新

今天对比了一下
input type="text"的value

div的innerHTML
两个不同元素的字段,在赋值的时候更新UI的耗时。

测试用例如下
输入 element(div 或 input)
    var t1 = (new Date()).getTime();
    for(var i=0; i<1000; i++)
        element.innerHTML或value  = "" + i;
    var t2 = (new Date()).getTime();
输出 t2 - t1;

结果:
在FF(3.0.3)中
div 153
input 2495
在IE中
div 562
input 31
(毫秒)

值得注意的是,FF中,你可以看到input的更新过程,就是说,每次给input的value赋值都会时时更新到UI。而其他都是等线程从函数返回才更新,因此虽然赋值了很多次,你却只能看到UI更新一次。

初等的Bug(4)

所有人都知道二分查找正确性的前提是数组已经被排序,但是编程的时候,有时候就会忘记!
使用二分查找之前,一定要记得给数组排序!

2008年11月12日星期三

FreeWheel宣讲会笔记

今晚去FIT楼听了一场FreeWheel的宣讲会,主持人是做技术的,很不会活跃现场气氛,可是场面依然很火爆,Q&A时,北大清华的学子们轮番冲上讲台去抢话筒问问题,我站在后面狂汗不止。
在我看来,FreeWheel就是一个广告代理,专做互联网视频这块。以前,网友把电视节目上传到视频网站,大家都去看视频网站,没人看电视了,电视广告卖不出去,电视网不挣钱,没钱做不出好节目,没好节目视频网站没人看,恶性循环。电视网和视频网站谈判,电视网说我把电视节目版权一次性卖给你,视频网站说不行太贵风险太大,谈不拢。FreeWheel说这样好了,我在视频网站做精准的广告投放,广告商发现通过我投放广告回报高,就愿意给我钱,我把这笔钱分给电视网和视频网站,从而使得双方共同为电视节目的质量承担风险,双方谈拢了,在互联网上就能看到有版权的视频节目了,网站有内容就有用户,由用户就有人点广告,有人点广告广告商就给钱,有了钱视频网站和电视网就能发展,电视网发展得好就能做出更好的内容,良性循环。
我以为,互联网,已经成为继有线电缆、地面无线电、卫星之后,第四种广播电视的媒介了。FreeWheel跑通了一个在这个媒体上的商业模式,得到了电视网和视频网站的认可,更主要的是赶在经济危机前完成了融资,现在想跟风模仿FreeWheel的人发现找不到风投了。FreeWheel没有理由不牛X,宣讲会上听懂了这一点的同学,自然兴奋不已争着冲上去抢话筒。

FreeWheel的情况大约是这样的,全球共70人,美国东西海岸各有一个Office主要是Sales和DataCenter;北京朝外一个Office,有40人,研发中心。坐镇朝外的是Diane Yu,CTO,1/3 Co-founder of FreeWheel,北大毕业的,曾在DoubleClick十多年。
FreeWheel今年1月上线,现在已经有CBS、WB、Joost、viddler等知名客户,产业链上下游一传十十传百,一直没敢做Marketing可Customer还是纷至沓来。
FreeWheel的技术问题主要也还是Scalability的问题,海量数据处理,毕竟用户增长太快。
团队很精英,有优酷、MSRA、IBM过来的人。团队很年轻,只有一个刚刚抱上孩子。

我在想,FreeWheel研发在中国,市场在美国,未来发展如何?FreeWheel盈利模式以后能否迁移到中国?中国的广播电视行业和美国很不一样,其差异,恐怕比两国间电信行业的差异还要大。中国的广播电视行业挂靠在新闻宣传口下,有很多斯大林时期的痕迹。我更愿意相信:在不久的将来,中国广电行业有一场自上而下的变革,而不是像美国那样通过市场的自动配置,成就互联网广播电视这个新媒体。因此,FreeWheel在中国只能是一块出色的殖民地,除非公关非常牛,否则广电不会分它一杯羹。

Netflix Data的一些统计特性

电影总数17770,用户总数480189
在所有的约10000000次评分中,1分约占4.6%,2分9.5%,3分28.8%,4分33.8%,5分23.2%
115136个用户从来不打1分,占24%――近四分之一的用户从来不打1分
仅7部电影从来没有得到1分

评价过的电影数超过1777的用户有1956个――0.4%的用户评价过的电影数超过(电影总数的)10%
评价过的电影数超过540的用户有48033个――10%的用户评过的电影数超过3%

注意到0.4%和3%差1个数量级,而电影总数与用户总数也刚好差1个数量级。应该能用某个随机配对的模型解释这个现象。

2008年11月8日星期六

初等的Bug(3)

文件中是int, char[4]的结构数组,想把int取出来
fread(&i, 4, 1, f);
fseek(f, 4, SEEK_CUR);
直到feof(f),却发现程序永久性地被挂起了!
查手册才明白:
Using fseek() clears the EOF flag associated with that stream.
终止条件永远不会满足
正确的做法是fread之后立即判断feof

2008年11月7日星期五

初等的Bug(2)

在C中打开文件句柄写入文件
FILE *fopen
这个函数的第二个参数可以为w或wb。
用w打开文件,但是写入二进制数据会有什么后果?
今天遇到一个这个问题导致的Bug,困惑了我很久,后来在十六进制编辑器的帮助下,发现再写入二进制流的过程中每隔一段会多写入一个0D,也就是换行符,才明白。
给我的启示是:一定要搞清楚C函数库参数的含义,不要再犯这么初等的错误!