田园将芜,胡不归?

November 18, 2011 Leave a comment

草根的出身似乎是决定豆瓣终将流于庸俗的基因。看看评论中有多少以搞基为主线、而又有多少是以分析萌点为卖点,就可知此言不虚。最近的一个证据是,周杰伦的《惊叹号》在豆瓣上的最低分是4.3分,而这竟是在专辑发行之前被计算出的。很难想象,出道以来发行的四张专辑(分别为《周杰伦》、《范特西》、《叶惠美》和《跨时代》)都曾拿下金曲奖最佳国语专辑奖的艺人,今年创作的作品竟然不及格,尤其是他的最新获奖的专辑是去年发行的。更容易被接受的解释是豆瓣社区出问题了。所以我不在乎豆瓣能评多少分;相反,我觉得豆瓣本应该希望它会更客观一些。如果豆瓣的分数跟唱片在华语乐坛所受的评价相差很大,则说明豆瓣的评分是没有价值的,它原来所拥有的权威性就不复存在了。

事实上,由于用户群数量的迅速崛起,豆风日下千里。早期豆瓣的专业程度犹如互联网泡沫破灭之时雅虎的股价一般暴跌。这种趋势从豆瓣明显地走SNS路线起就越来越明显。在对经济危机所作的分析中,很多经济学家认为需求的减少是经济危机的根源,类似地,对专业水准要求的降低也是导致豆瓣走向庸俗的主要原因。

接下来不用走太远,就可以想到,导致用户对专业水准要求降低的一个重要原因就是豆瓣自身定位的变化。很显然,一个想要吸引大量用户的网站很难以高人一等的姿态等待用户自投罗网。但真正品位高的人又是凤毛麟角,为了这部分小众用户而塑造出自命清高的形象无法给豆瓣带来商业利润。豆瓣从根本上也是一个商业网站,所以豆瓣也改头换面,以亲民的姿态出现在普罗大众面前,以期获得芸芸众生的青睐。能想象出一个普通的基督徒走进教堂和他步入红灯区时表情的差异吗?如果用户是基督徒,那么在他眼中,变形前的豆瓣是教堂,变形后的豆瓣就是红灯区,即使改变前后豆瓣的骨架未曾有任何变动。在教堂中他需要一部圣经,而在红灯区他大概更喜欢慢慢一大杯伏特加, 一首迷魂曲,然后在等待着什么……

这应该就是豆瓣用户对专业性需求骤减的根本所在吧。随之而来的是,早期用户一些癖好被放大,因为这些东西更容易被模仿,便于伪装成小清新的面孔。再后来,一个有独特癖好的人往往比一个专业精神更强的人获得更高的关注, 而与这癖好对于其他用户是否有实际价值无关。在社会活动中,获得他人关注是个体比较原始的欲望之一,既然专业性无法被欣赏,无法吸引更多的眼球,它就没有必须存在的理由了。而那些没有实际价值的内容存在的合理之处也正在于此。

随着豆瓣的壮大,对内容的质量控制并没有相应地被强化。目前豆瓣上相对有价值的内容也并非寥寥无几,只是噪音太大,几乎被埋没在海底,与庞大的用户群相比,问津者屈指可数。豆瓣需要做的就是让这些真金白银在喧嚣的尘世中熠熠发光。

事实上,社区的形象并不仅仅由网站是否小众决定。

一方面,社区可以通过引入专业化的元素,比如由出版社、电影制作商、唱片公司提供或审核信息,而不仅仅是用户自行添加。专业化的元素可以驱使用户潜意识中产生对专业化的追求。类似的合作可以帮助豆瓣更好地投放广告。虽然难度必然会很大,但是对于一个极为推崇乔布斯的人来说,实现起来也并非绝无可能,成功的可能性甚至还是比较大的。“以做媒体吸引用户而论,大概永远是多金者胜出”,这也许有其合理的一面,但是我相信,纯正的基因是更重要的因素,相比之下,豆瓣的基因优势非常明显。在苹果数字音乐大行其道的今天,我觉得阿北太缺乏想象力。

另一方面,豆瓣必须加大力度向用户推销自己的强项。豆瓣与其他社交网站最大的优势就在于那些小众高端用户所创造出来的有实际价值的内容。口水、卖萌、搞基等等这些,其他网站不用费心就可以完全复制,而豆瓣的小众高端用户却非一朝一夕就可以聚集起来的。在信息爆炸时代,获取有价值信息的难度可想而知,如果豆瓣能在这方面给用户带来良好的体验,其不可替代性将会显著增强。为此,豆瓣需要一个能够实现良性循环的评分/评论体系,也就是能够凸显有价值信息、降低噪音的评论体系。

我认为,在对书影音的评价中,由于用户的鉴赏水平、知识背景等差异很大,不同用户的选票权重应该是不一样的。决定用户选票权重的一个重要因素是这个用户以往的该类评论(书/影/音)被点击有用的次数。

比如我的父亲学历是高中毕业,他完全无法理解萧邦、贝多芬、巴赫他们的作品。在对这些作品进行评价时,他很可能打1星,而无法写出非常有说服力的评论,所以他的评论也很难被认为是有用的,在新的评分规则中,这样他的选票权重就会比较小,评分总体结果就更趋于公正。我的这个ID由于没有任何评论,对所有书籍的评论权重应该近似为零。个人评分意义在于,其他人能通过它了解该用户的品味。

这里的假设是,

1. 实际有用的评论总能够被大众用户识别到,而诱导他们点击“有用“。如果使用这个新的评分规则,预先告知用户这一变化,对提高评论质量将会是有效的。这反过来又会对促使评分趋于公正。 有价值的评论会因此更具影响力,而促进整个社区的良性发展,社区用户的素养也会得到提升。

2. 在某一领域(书/影/音)的某一子类中写过有价值评论的用户在其他子类中的评分会更有价值。当然,如果一篇评论被认为是有用的,那么作者很可能在评分方面非常用心,而在对所有内容进行评分时会较其它人更为用心,他的观点普遍也都更有价值。不过,这里导致误差的是,一个在计算机科学方面很有见地的人不一定在文学方面有很深的造诣。所以对子类进行适度的区分将会使评分结果更为公正。 区分粒度过细会使数据具有偶然性,也会在很大程度上增加计算难度。

另外,豆瓣说对豆瓣产品的整合并不是很好。推荐语超过140字的部分在整合时都被喀嚓掉了。个人认为,豆瓣说的改进可以参考Google plus,而不必强行加入微博的元素。并且豆瓣说和豆瓣社区相隔太远,可能对用户的社交活动反而起到了负面作用。

Categories: some thoughts

毕业前后

July 3, 2011 Leave a comment

(计划是把这篇写成意识流风格的,所以就需要借鉴一些前辈的作品,不幸要么太长,要么学院图书馆没有,题材也没有特别喜欢的,只好暂且搁浅。题目原本是‘毕业’二字,但是写到后来发现跨度还是有点大,于是添加了‘前后’二字,连起来才让我想到《决战前后》。这真的不是一次有预谋的山寨。)

6月21号那天发毕业证,然后就毕业了,一切都很平静地过去了。之前的毕业典礼、十周年院庆、学士服照相、散伙饭……全都被我Pass掉了。这次回去的意图很明确,就是拿到毕业证和学位证,只要不是必须的,一概缺席。当然并不是觉得大学生活很失败、令我很失望才这么做的:1、我不喜欢;2、我不需要以这样的回忆来充实未来某一时刻的空虚。人生每时每刻都应保持华丽,而这样的人生是不需要回忆的,也更真实一些。所以大部分时间除了毕业设计,就是待在图书馆。

毕业设计最终还是糊弄过去了,代码没完成,论文也是七拼八凑。我所做的只有一个创意,也就是定下了毕业设计的题目,规划了一下该怎么做,然后逐步了解了需要用到的技术,同时根据老师的指示,毕业设计要主题宏大、口号响亮才行,算法要比已有的好,对一个本科毕业生来说,这根本不可能,也与我的本意不符。最终得出了这样的结论:以目前我的水平,在规定的时间内是不可能把符合这种要求的代码完全写出来的。而我原以为,这将是大学中为数不多的不会忽悠过去的作业。其实我一直不愿意以一个大忽悠的身份出现在世人面前的。

在图书馆的计划是把《策略博弈》读完,《现代世界史》1870年前的那部分读完,后来也没有完成。《策略博弈》读完了相对重要的部分,《现代世界史》则是读到18世纪,后面基本都比较熟悉了,最后读完《教父》完全是意外:实在无聊透顶,就打开了那个20世纪70年代的电影,感觉太古老,情节也没弄太明白,看到一半就放弃了,索性到图书馆找原著。分三次读完的:第一次读到66页,第二次读到271页,第三次读到427页。

回去还有两件悲催的事情:丢U盘,扎伤脚。2008年1月份买的U盘,从没丢过,一直错以为殆有神护也。6月3号早上本想去打印论文的最终稿,但是人很多,转而去超市,钥匙和U盘都挂在手指上。从超市出来回到宿舍发现U盘不见的时候,我都不敢相信U盘丢了。寻找未果,由于里面存有所有帐号和密码,经过权衡,决定把所有的密码全部修改一次,折腾了一个上午。6月20号,又是早上,穿着拖鞋到1舍退网,人很多,于是回去,经过楼下时,被碎玻璃穿透拖鞋,扎伤右脚,鲜血直流,这下左右脚平衡了。

6月23号,大连火车站。穿纪念衫的人很多,落泪的很多,分不清谁要上车,谁来送别,我只知道,太多人挡在我前面,差点没能爬上火车。回到家,崴的那只右脚被妈妈贴上了膏药。28日回到深圳,29日办实习离职,等待入职。前天香港回归纪念日,好像有标语叫“我们要思考,不要被洗脑”……

悄然无息地毕业了。以前听人谈到毕业、就业的前辈们,觉得遥不可及,不知道自己能不能迈过从学生到员工的坎儿,现在却没有任何异样的感觉,甚至连一丝触动都没有。只要书桌上还有那一堆书,数学的,CS的,经济的,外语的,甚至还夹杂着一本讲乐理的,无论是哪里,不管做什么,对我来说都是一样的。经过毕业设计,我很庆幸当初没有选择读研。

在学校往往什么也写不出来,感觉好像也没时间写。总之,终于不是每月更新一次了,这次更新是为了表示“没有怀孕”:)

Categories: Life

步履蹒跚的日子

April 30, 2011 Leave a comment

距上次那悲惨的一跳已经近两个月了,脚还是有些痛,不幸的是,上周的上周又一脚踢在墙上,上周穿了几天正装,现在前脚掌更痛一些。

(一)

这一段时间发生了很多事。

先是3月11日日本地震,由此引发了海啸和核泄漏,核危机再次成为焦点,砖家们也纷纷撰写科普软文(评论是亮点,4月份以来的评论更有趣,尤其是这句:“你还不担心么? 现在都七级了”);同时也有极端仇日型砖家通过丰富的想象力,指出这是核试验爆炸的结果,爱国青年们顿时热血沸腾,真相什么的全是浮云。去年,南京某爱国青年在得知挪威将和平奖颁给刘晓波后,非常气愤,上街发起「抵制挪货,从我做起」行动。但他满街找不到挪威货,最后一位市民从家里拿出一本小说《挪威的森林》,当场焚烧泄愤。这下子还真“歪打正着”了,只不过他仍需要继续寻找挪货。

然后是作家们群起声讨百度,并激起了连锁反应,音乐界紧随其后,连当当网都决定不在百度投放广告了。可见谷歌走了之后,百度的日子并没有好过一些。树大招风,如果这棵树本来就不够正直,它会更快地倒下去。那些作家也真是奇怪,当初Google给钱都不要,还说三道四,显得他们品格有多么高尚。如今百度不给钱,他们还是吵吵嚷嚷的,怨妇般的发牢骚说,写书挣钱有多么多么不容易。原来是一群不懂版权法的道貌岸然之徒,佛教徒般的外表难以掩饰那颗躁热的心。

然后没过几天,安理会决定在利比亚设禁飞区,风起云涌,好不热闹。关于利比亚,我只借用一条推来说明一些问题:“昨天看电影之际,邻居小弟跟我说,过去你说CCTV作假我总觉得是你的激进言论导致偏见。昨晚的新闻看了没有,中央电视台说利比亚人民拥护卡扎菲,可是新闻镜头却是百姓拉着'法兰西万岁'欢迎法国军队的条幅。

(二)

爱因斯坦生日那天把豆瓣注销了,但豆瓣是一个收藏图书的好工具,豆瓣FM也不错,于是(此处省略N个字)。很早以前就注意到,豆瓣对帖子的审核比校内网严格很多,反倒说明豆瓣的影响力日益强大,校内网终究只是Facebook的一个很肤浅的山寨产品,一个链接泛滥的娱乐工具。“每次去校内都能刷新我对人类智商下限的认知。

当然,我不认为仅凭校内网就能看出一个人的智商,但物以类聚、人以群分,如果一个人经常活跃在校内上,很显然是无所事事,否则就应该活跃在一些更为专业的论坛上,哪怕是专业灌水也要去猫扑、天涯的有木有!一个人的时间、精力都是有限的。

09年上半年的时候结束了经常逛校内、QQ空间的生涯,加入了一个QQ技术群,在闲聊的过程中知道了刘未鹏,他的Blog使我受益匪浅;然后加入了他创建的Google Group:TopLanguage,在其中潜水的日子里又知道了很多牛人,比如Tinyfool,很多见解都非常深刻独到。在Group里面偶然的一次机会听说了弯曲评论,其中不少专业文章,经典评论,让人大开眼界。

不敢说由此我的技术水平提高了很多。我是一个懒散的人,兴趣广泛,缺乏毅力,很难做到善始善终。但现在的信息源确实让我改变了很多:专业精神,比如养成查阅维基百科的习惯;从中学习了很多信息检索的技巧,更擅长使用Google,学会适应英文;此外还有一些关于Critical Thinking的东西;至于专业知识,更是获益良多。

如果我还是活跃在校内,或许今天还是一样单纯无知。大学并没有给我太多,平心而论,学院大跃进式的培养计划对我的伤害很深,在政治阴影笼罩之下,这是一个浮躁而又压抑、缺乏自由的学术圈

(三)

因为决心要买苹果的缘故,最近关注了下3G,然后纠结起来。目前iPhone只支持WCDMA,而中国电信运营商中,只有中国联通运营WCDMA,让我情何以堪啊?现在又开始犹豫着要不要买iPhone,联通您老人家又情何以堪啊?中移动的TD-SCDMA太过小众,并且目前技术还不够成熟,苹果好像对此不感兴趣,另一方面,iPhone CDMA版本的引入依然遥遥无期。

难道最终我会选择一个搭载Android 3.1的手机吗?毕竟,我是无法忍受当下混乱的Android世界的,而据说Android 3将会是Google的一个里程碑。也有可能最终我会在等待的过程中失去激情,转而买一架电钢琴或者单反什么的。老实说,现在就没太大兴趣了,如果以后工作上对此也没什么需求的话,很可能最近几年都不会换手机了。唔……我们全家都用诺基亚。

最后,在四月底post了我的第三篇日志,然后想起兰子同学的一条推:“不论是什么…每月都来了一次的东西都很讨厌啊”

update(03/22/2012)

后来买了Google的三儿子, 搭载Android 4.0系统,江湖人称Galaxy Nexus,虽然我和施大爷一样坚持称之为Nexus Prime。Android 3.*的系统只用于平板电脑。

Categories: Life

旧文

February 20, 2011 Leave a comment

Miserable Java Course (9/23/2009)

Confusion over Detail

关于C++ Primer,有这样一种说法:初学C++者认为这本书很差,因为无穷无尽的细节问题让人发狂;而有一定C++编程经验的认为这是一本不错的书,平时碰到的问题都能在其中找到合理的解释;浸淫C++数年的认为这是一本绝好的书,其中的每一点解释都是针对平时经常碰到的问题。

对于我们这些Java初学者,我觉得更重要的是如何使用Java描述我们的想法和实现算法,而不是用一段使用了几乎没人在非工业编程中想得到的方法的toy代码,来说明某个繁琐的语言细节。如果这个细节在短时间内还没有出现在代码中的必要,那么这么做意义显然不大。我们也没有必要在使用一个语言之前先把所有可能出现的细节问题都找出来,一一强记于心,这无异于一个年迈的老太太,为了安全起见,用黄金铸造一根合抱之木般的拐杖。

在考试中,我觉得也应该以考基本概念为主,琐碎的细节问题只适合在平时加深对概念的理解时谈到。还有一类细节问题,比如Boolean所占的空间大小,是完全没必要了解的。原因:1、除了文档的规定外,我们根本无法验证(Java中没有提供sizeof这样的运算符);2、Boolean只有两个值true和false,取值范围已经明确到我们无需知道它所占空间的大小了,不存在溢出问题。

About Java API document

我觉得一个优秀的程序员不是把API文档倒背如流的人,而是查阅API文档得心应手的人。对于我们初学者来说,更没必要连每一个API函数的每一个参数的含义都了如指掌。

对于一些非常常用的API,通过多次查阅文档自然可以记住,比较常用的API,知道怎么查比较快就可以了,而很少用到的,知道它的存在就足够了,写程序不是闭卷考试,恐怕有多年开发经验的Windows程序员也无法独立地用直接调用API函数的方式弄出一个窗口,而不查阅任何文档资料(‘Nobody really memorizes all the syntax to write this overhead; generally,Windows programmers begin a new program by copying an existing program and making appropriate changes to it.’–Programming Windows, by Charles Petzold )。

如果非要在考试中考,我希望能够详细给出所考的API范围。像String类中有很多函数是我们平时编程根本不会用到的,尽管在工业界可能视为被宠儿,但是对初学者来说没必要花费大量时间都背下来,以备考查。

至于在课堂上针对一个API函数向数十个同学发问,让他们猜测其含义的教学方式,我觉得完全没有必要,不管这个API函数是多么地重要,因为如果没有看过文档而靠猜测的话,给出的答案纯属胡扯。如果想了解多少人看文档了,可以以举手的方式统计,大致看一下比例就可以了。解释这个函数加上统计所用的时间,将远远小于向数十个同学发问的时间,而效率也会更高。猜测的含义属于第一印象,一旦形成第一印象,就很难改变它,即使它是错的。

A batch to rename all the files in a directory(10/05/2010)

七集John Adams存放在目录D:\John-Adams\下,文件原名是有序的,但是格式不太好,下面的批处理按照“2008[John Adams][history]US_x.rmvb”(x为第x集)这样的格式,对所有文件进行重命名。

     D:\John-Adams\rename.bat 
:: 定义变量,存放文件名中相同的部分(注意:等号前后不能有空格)
set var="2008[John Adams][history]US_"
:: 该行语句对当前目录下每一个.rmvb格式的文件%%a,调用:renstart部分代码处理.
:: 右面的%%a为传给:renstart的参数,在renstart中用%1表示。
for %%a in (*.rmvb) do call:renstart %%a %1
:: 标号:renstart,用于标识直至下一个标号前的代码都属于:renstart部分
:renstart
:: 对%%b的值从1增至9(公差为1),
:: 都将重命名文件%1(亦即%%a)为2008[John Adams][history]US_%%b.rmvb.
:: 重命名成功后,系统将找不到名为%1的文件,所以只能对原始文件%1重命名一次。
:: 由于对文件的处理是有序的,而且Windows中同一个目录下不允许有重名的文件,
:: 所以在第一集重名为2008[John Adams][history]US_1.rmvb后,
:: 接下来第二集首先被命名为2008[John Adams][history]US_1.rmvb,
:: 但是文件2008[John Adams][history]US_1.rmvb已经存在,重命名失败,保持原名
:: %%b增至2时,被重命名为2008[John Adams][history]US_2.rmvb成功。
:: ...以此类推。
for /L %%b in (1,1,9) do rename %1 %var%%%b.rmvb

DNS-Switch

@if "%wireless%" NEQ "" goto :MODIFYDNS
:CREATEENV
@echo ****Create environment variable based on your current configuration****
@echo Is your DNS server address automatically obtained?(y or n, low case)
@set /p isdhcp=
@if "%isdhcp%"=="y"  goto :CREATEINDHCP
@if "%isdhcp%"=="n" goto :CREATEINOTHER
@else echo WRONG Answer
@goto :CREATEENV
:CREATEINDHCP
@echo ***Env variable wireless=DHCP***
@wmic ENVIRONMENT create name="wireless",username="<system>",VariableValue="DHCP"
@goto :MODIFYDNS
:CREATEINOTHER
@echo ***Env variable wireless=OTHER***
@wmic ENVIRONMENT create name="wireless",username="<system>",VariableValue="OTHER"
@goto :MODIFYDNS
:MODIFYDNS
@if "%wireless%"=="DHCP" goto :SETOTHER
@if "%wireless%"=="OTHER" goto :SETDHCP
:SETOTHER
@echo DHCP to OTHER
@netsh interface ip set dns name="Wireless" source=static addr=8.8.8.8 register=PRIMARY
@netsh interface ip set dns name="Wireless" source=static addr=8.8.4.4
@REG ADD "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Environment" /v wireless /t REG_SZ /d OTHER /f 
@goto :EXIT
:SETDHCP
@echo OTHER to DHCP
@netsh interface ip set dns name="Wireless" source=dhcp
@REG ADD "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Environment" /v wireless /t REG_SZ /d DHCP /f
@goto :EXIT
:EXIT
Categories: Default
Follow

Get every new post delivered to your Inbox.