又是一个周期

最近工作上受到一点刺激,把心情搞的很糟糕。
还记得去年的时候顿悟一个道理,人在精疲力尽的时候往往情绪上也是最脆弱的,这个时候的刺激往往会很深,而我这次正应了这句话。
前面一个月又是手忙脚乱的一通加班,勉强赶上了schedule,还是有一堆事情放心不下,怕新接手的哥们漏了啥没接到的。但是马上就要transfer出去,要不然另外一滩事儿就耽误了,很是纠结。
这是所谓精疲力尽。
再就是部门开月会,HR客串,介绍了些人员组成上的情况,全部门160个人,本科只有17个,这个比例比我之前以为的数字低太多了,而且我也是这17个之一。
此所谓刺激之一。
然后又开始看android,我是喜欢在一个平台上长期投入的,因为每一个方向背后都需要对整个系统的了解作支撑,然后才有可能做到最好。所以我喜欢把一个平台看的很宽,到处都看看,好处是时间长了可以斩获颇多,坏处是老板要你换平台时就傻了,半天不得要领,不知从何看起。尤其是android这种资料少的可怜的平台,更何况周围做过的人几乎没有。
于是整个学习的过程很是疲惫,而且总是被打断,去调那些枯燥无味形同嚼蜡的寄存器。

还记得刚毕业的时候,每个月数着工资卡里那点钱,憧憬着要是哪天我工资多少多少就怎样;可是现在是体会到了,钱这玩意儿完全不能带给你快乐,你必须自己去找快乐,跟钱真的没关系。(当然房价是一个因素。。。)

今天算了算,来到新的公司10个月了,也该给自己一些改变了:
1.别用加班来表现自己的努力,要用效率和产出来表现;
2.远离那些枯燥,重复,可替代性强的工作,如果有可能的话;
3.改变自己的心态,尽管工作早,依然很稚嫩,多学习才是王道;

No Comments

加班

最近看了一些关于富士康跳楼的评论, 其中对加班的评论很有些感触.
原文大意是说, 大家的共识是:不加班的厂不是好厂, 不加班挣不到钱, 云云.

看完之后总觉得隐隐约约也是在说自己, 不过又不很像, 但是真的不能说不像.

加班这事儿, 从好的方面想, 确实有时候需要连续的长时间工作, 比如你在看一大坨code, 这事儿真不能中间停下来, 第二天往往就续不上了.
再比如额外花些时间学点东西, 这也很常见.
但是不好的方面, 很多时候也是为了些破事儿再加班, 或者只是攒一些没啥意义的report, 再或者就干脆是混加班费.

所以我与富士康员工的共同点在于, 都是为了额外的利益而自愿加班.

问题在于追逐利益这事儿得有个度, 要适可而止, 否则就杯具了.

No Comments

Keep on thinking….

一部手机,在不同的人手里会有完全不同的演绎。
我把桌面背景换成一张很有感觉的卡通图片,于是手机就成了随时带给我美的享受的载体。
我把outlook里面的邮件和会议邀请同步到手机里面,于是手机便承载了我工作的延伸,使一名工作狂随时都能review自己的工作。
我把手机里面装满了舞蹈视频,然后去参加排练,中间拍下老师的示范,回家再自己练。
或者装满了温馨的音乐,在女朋友生日的时候拉她到后海的小船上放给她听。
这样的例子还能举出许多,其实智能手机不仅是电脑的延伸,当互联与计算结合在一起,就会有许多全新的可能。

问题在于,作为一家IC设计公司,如何在这样的变革中找到自己的定位?
我们是卖笔墨纸砚,还是半装裱的成品?
抑或笔墨纸砚搭配临摹帖纸外加辅导?
既然硬件的差异越来越小,是否意味着那些只做AP的IC厂商也可以藉由第三方的modem而杀入这个市场?
apple/google已经买下IC公司,针对自己的OS定制芯片,传统IC巨头能不能效仿intel收购风河,去买自己的操作系统?

当你已经站到业界的前排,就无法,也无人可以follow了,无论愿意与否,恐怕都要鼓起勇气去推动变革,深深的参与到那些基础而又深刻的变化中,才有机会在未来依然生存。

3 Comments

VirtualBox can’t operate in VMX root mode

提示说需要禁止掉kvm,然后重新编译内核。。。。
google了下,只要
rmmod kvm-intel
就可以了。

1 Comment

linux如何支持大于4G的内存?

方法十分简单:

sudo sudo apt-get install linux-headers-server linux-image-server linux-server

也就是安装pae版本的kernel就可以了。

coon@ubuntu:~/桌面$ free -m
total used free shared buffers cached
Mem: 8068 443 7624 0 58 177
-/+ buffers/cache: 207 7860
Swap: 0 0 0

No Comments

热地瓜男….

晚上王老板做报告,应领导要求全程录音,我也灌了不少水,乱喷一气。
结果回来一听,发现自己说话越来越地瓜了-嘴里含着个热地瓜,而且地瓜越来越大….
从毕业之后似乎口才就越来越差,当然这绝非是说我以前口才多好,据我爸记载,我两岁多的时候说话还很地瓜……
悲剧啊,要抽空多练练

No Comments

一个比lxr更完善的代码在线浏览网站–www.sooset.com

http://www.sooset.com
看上去比lxr要好不少,而且有备案。。。。。

No Comments

Transmission提示“打开的文件太多”

环境:

Ubuntu 9.10
Transmission 1.75(9117)

问题:
Transmission如果同时下载多个文件,会提示“打开的文件太多”,从而导致同时只能下载两到三个文件。
解决方法:

修改文件
/etc/security/limits.conf
加入或者修改下面一行:
* – nofile 32768

No Comments

考试模型在IT民工日常工作中的体现

对于工程师而言,会遇到很多难题需要解决,其中有很多是比较简单的,类似选择题,判断题。
这些问题只要能解决大部分,及格一般没有问题。
但是仅仅及格,并不能使你胜出,自身竞争力依然很差。
所以要想胜出,就要研究如何做出那些开放性的,需要有很强的创造性,或者对问题本身有很深理解才能解出来的题目。
无论考试还是做工程,都是有时间限制的。
而且你一定要把解答写下来,否则必然是零分。

所以,套用考试的经验去看日常的开发工作:
1.最基本的题目一定要会;
2.最基本的题目不一定非要看书或者真的理解,死记硬背也可以应付;
3.但是死记硬背流在面对题型变化时会死的很惨;
4.死记硬背流总是占多数;
5.如果你很牛逼,非常善于解难题大题,可以申请去参加竞赛,从而不再为那些基础题目浪费时间。但这需要参加选拔,同时也意味着更多的付出。
6.考的好的人会获得更多的资源,无论是真牛逼,还是作弊,或者狗屎运在某次关键考时发飙;
7.但是笑到最后的都是那些真正牛逼,持续付出,而又不会轻易动摇的人。
8.不同的科目差别很大,给人发挥的空间完全不同,像历史和地理这样的科目就从来没听说有奥赛之类的东东。就好比做linux的人总是搞得很深,windows的就相对差一些;
9.了解自己最擅长哪些科目是很重要的。

一些胡思乱想,与君共勉。

No Comments

linux下如何获取一段虚拟内存的所有物理地址?

也就是类似Windows CE的LockPages+Query那样的作用, 给定一段虚拟地址, 如何获得这段内存都对应到哪些物理地址上面?
linux下面对应的API是get_user_pages().
从这里看到的:
http://www.newsmth.net/bbscon.php?bid=299&id=50940&ftype=3&num=2048

使用get_user_pages()这个函数:
int get_user_pages(struct task_struct *tsk, struct mm_struct *mm,
unsigned long start, int len, int write, int force,
struct page **pages, struct vm_area_struct **vmas)

这个函数的作用是根据用户空间start开始的len个页面,从页表中找到这些页面对应
的真正物理页面,保存在pages[]数组中返回。

其中主要的参数:
Start为用户空间内存的起始地址(页面对齐)
Len 为从start开始的页面的个数,注意单位为page
Write如果为1表示对这些页面具有写权限

No Comments

团队成本

最近一周整个人都很低迷,每天只想看书写code,不想说话收邮件。
晚上偶然又看到一个同事抱怨每天工作枯燥无味的日志,稍微琢磨了下,发现也是一个共性的问题:
很多工程师喜欢写全新的code,或者debug很有挑战性的bug,而不愿意和别人讨论问题,写文档/报告,why?
写code或者debug会让人感觉爽,大概有下面两点:
1. 这事儿我能做,我比别人强,于是有很强烈的优越感,进而潜意识里认为自己在以后的日子里会越来越厉害,领先周围的人越来越多,等等;
2. 写code也好,debug也罢,让人爽的一个前提是可以完整的debug,换句话说可以看到绝大部分的code,或者只要你愿意,你就可以了解到黑盒子内部的东西是如何工作的,这会让人感到很踏实,你的思维、逻辑推理与判断会与实际的结果很好的匹配。
试想一下,如果你在调试一个没有任何symbol/code的程序,或者你的调试器经常抽风,又或者这个bug完全随机性的出现,估计谁也不会觉得爽。

所以我很多时候,工程师们不愿意开会/沟通/写文档/写报告的原因,很可能是因为担心人际交流的代价太高。
1. 很多时候,你和别人讨论的东西他未必完全听懂,他说的你也听不怎么明白;
2. 每次写报告都要画很多图,要确认很多细节,还要排版,总是抵消掉要报告的这件事情带给你的快感;
3. 有时候可能因为沟通的问题被人打过枪,或者别的老板误会过,那真是最糟糕透顶了。

前几天有一位非常资深的前辈辞职,一半的原因是为了照顾家庭,另一半是觉得公司的限制太多,还是小公司更好发挥。
就我个人而言,对此类事情早已看淡,每个人都有自己的期望和底牌,两者不匹配的时候就会散伙,很正常不过。
不过这件事还是让我一直在想,所谓的限制太多,应该就是团队成本太高吧?
比如你要做一个新的东西,如果在管理宽松些的公司(说小公司不合适,主要还是跟公司文化有关),可能一两个人拼个几天就能出个demo,但是在管理比较严格的公司,在看到demo前可能已经开了N次会,写了数份report了。当然这其中的大部分人都是很投入的在做事情,很少有踢皮球或者和稀泥的事情,但是基本上也会把人的激情磨的差不多了。

所谓事情都有两面性,无论管理宽松还是严格应该都有它的优势和劣势,重点在于认清劣势,发扬优势。
严格的管理对于一个比较大的团队应该是必须的(比如两三百人做同一个项目),否则就离散伙不远了。
但是过于严格的管理肯定会带来更高的团队成本,而且会在团队内部扩散,就好比两个人在屋子里聊天,轻声细语即可。但如果是在菜市场里面聊天,即使俩人离的很近,往往也得提高音量,因为干扰很大,而这些干扰在它们各自的参与者看来都是有用的信息。
毫无疑问,在这样的环境里面,谁都会觉得很烦。

俗话说屁股决定脑袋,我是无法从上到下的去看这几百人的团队是如何run起来的,但是从下往上的看,于个体而言,应该还是有些对策的:
1. 提高沟通的效率,或者简单的理解为速度。举个可能不太沾边的例子,你的手机电池是1000mAh,EDGE上网每分钟耗电10mA,下载速度10KB/s,WCDMA每分钟耗电20mA,下载速度1MB每秒。如果你需要下载一个1MB的mp3文件,用WCDMA的话,显然更省电。
所以提高沟通的效率对于降低沟通成本是非常有效的。
比如仔细琢磨一下你写report的习惯,很多人都是一页一页的写,每一页ppt都要写到OK才到下一页,或者在一个字号/布局/图表的颜色上面纠结。事实上如果分成几个pass去写report,效率会高很多。
首先在纸上把要写的东西列出来,这比在电脑上面打字要快很多,因为我们利用计算机对于文字的处理还是偏向于线性的,只是输入很快,重新组织的时候就非常慢了。然后把基本的文字和大概的图表完成,最后再去修饰小的细节。
再比如需要找某个人沟通的时候,尽量不要邮件往来,很多时候发邮件过去基本上就是告诉对方”我不着急….”, 还是电话或者直接走过去效率更高,但是这也需要消耗更多的能量,说话总是很累的:)

No Comments

病后感言

进入10年以来一直的高强度工作,加上春节的折腾,终于让身体报警了,从上周日就开始咳嗽流鼻涕,一直咳到今天才有所好转。
于是上周心情极为糟糕,不过工作上倒是有些游刃有余的感觉,来公司半年之后终于对整体的流程有所把握了,尤其春节前后折腾的两周,颇有点“再牛逼也不过如此”的感觉。
今天加班回来的时候没打车,虎年第一次坐公交车回家,心情居然十分阳光,也说不清为什么,可能一个人就会忘记工作,另外省下了打车的钱,心情可能就好了吧,哈哈。
作为一名民工,以后应该多做些电脑之外的事情,多关注下自己除了手指之外身体其他的部分是否活动顺畅,更要多关注一下自己脑子里除了coding和debug之外的模块是否还算灵活。人老如山倒啊!
杜拉拉老说,二十八是职业生涯的第一个分水岭,如今老夫还有不到三年,时间相当紧迫了。
这几个月的忙碌中有发现自己好几处性格上的缺点,一是不善于在交谈时思考,二是不善于在压力下思考。
第一点由来已久,我仔细回想了一下自己十几年的学校生涯,绝大多数时间都是自己看书学习,上课只是复习,少有真正用听或者交谈学到新的知识。工作之后愈加严重,沟通和表达的机会更少,直到现在的公司才有质的改善。
说到这里顺便扯远一点,上周无意中看到一篇文章,讲IBM的薪酬绩效管理,大意是说,老板最看重三个要素,即目标,执行和团队。就是团队这两个字,让我有所顿悟,平时工作中总有许多杂事,刚毕业的时候很烦这些东西,现在反而越来越重视这些东西了,因为慢慢地我发现,这些事情要处理的又好又快并不难,但是一旦处理的不好,杂事就往往升级成大事了,损失的也不再是一点点时间。
而处理杂事,最重要的就是在沟通中思考,反面例子往往是你事后想到了当时怎样怎样做最好,但是事后补救的成本与当时把事情一口气做好相比往往相去甚远。
除此之外,如何在压力下思考也让人很头疼,我经常是面临压力就大脑一片空白,目前也没有找到好的方法,不过有一招倒是有些效果,就是强迫自己去承担更大的责任,面临更大的压力,玩命扛过去之后,再回头看,就会很淡定,淡定就不容易出错,不容易出错基本上就难有压力了。所谓挖掘自己的潜能吧。
最后又想起在云端的男主角做演讲时的话,大意是你的背包里装的东西太多,慢慢地就走不动了。要定时放下自己的背包,轻松的向前跑,于我而言,背包里装的多是害怕失败的恐惧,扔掉倒也不难,脸皮厚些即可,哈哈

No Comments

无题

这年头信息太多,把有用的信息都冲掉了。真正成功的人都是低调,寡言,而勤于思考的人。
所谓执行力,真正的难点在于对困难的预估和回避能力,而不是立军令状表决心,或者每天催上十遍。
要多研究自己,比如什么时候效率最高?什么情景会让你紧张或者烦躁?什么情况下最容易集中精力?
累了就休息,效率最重要。大好时光不去陪女朋友陪家人,天天宅在电脑上效率还不高的折腾几个bug,不是有病是什么?

No Comments

为什么会紧张?

因为孤立无援?
因为太想成功?
还是因为把自己封闭起来不愿意和其他人一起承担?

也可能上面这些都不是,只是因为做事前紧后松,总是把自己逼到最后期限,换谁都会紧张。

一定要有改变。

1 Comment

移动生活

这次春节长假,对手机的利用率再创新高,列举如下:
1.QQ,MSN,Fetion;
2.每到一地都用谷歌地图看看当前位置,话说以前对隔壁几个市的路线都不清楚,每回坐车就傻了吧叽的看路边的树,这次算是搞清楚了从我家去我姨家怎么走了,就算以后自己开车回来也能走个差不多;
3.尝试了一下人人客户端,感觉还凑合,大部分功能都有了,挺实用;
4.尝试了一个新的短信客户端,叫短信密使,加密功能没什么用处,界面倒是不错,主要是操作起来速度飞快,秒杀nokia自带的短信程序。唯一的问题是不能看彩信,不过这样刚好可以把彩信剥离出来,便于定期清理节省空间:)
5.航海桌面又升级了,可以很方便的设置壁纸,而且是全屏的,秒杀nokia自带主题;
6.装了一个exchenga mail,但是连不上公司的server,说没有权限,回去之后争取用起来,这个还是很方便的,避免开会买零食蹲厕所溜号陪女友以及上下班途中收不了邮件而造成邮件堆积,哈哈;
7.给本博增加了手机界面,这里不能说哇普,说哇普会被封。主要是装了一个插件,可以提供适合手机上网的浏览界面和管理界面,以后写博就更方便了;
8.给本博增加了wiki,用的是moinwiki,moinmoin的php版本,据说moinmoin对手机浏览器是非常友好的,moinwiki应该也是,不过暂时还没有验证;

总体上来说,我是越来越离不开手机了:)

1 Comment

2009总结

其实没啥好总结的东西, 胡乱写写.

1. 上半年过的比较不爽, 超出了可以忍的限度, 于是换了份工作, 下半年过的比较满意, 虽然越来越忙, 但是很爽;

2. 作为一名IT民工, 其实最喜欢的就是公司有人能帮你搞定乱七八糟的问题, 然后你可以专心做好自己的事情. 这看起来很简单, 但是往往很难做到, 于是你经常得应付一些破事儿或者一些烂人, 或者自己从头搞一些发明轮子的事情. 从这一点上来说, 现在的公司是很爽的, 技术上深度足够, 产品出货量也够大, 基本上相当有挑战性; 管理上该找谁找谁, 很少踢皮球, 虽然每天忙得都快烧起来, 但是很少让你觉得不爽, 总体上来说还是比较难得, 要珍惜;

3. 人在江湖混, EQ真的很重要, 这一年里经历了不少人和事, 深刻的体会到, 如果一个人有比较明显的性格缺陷, 基本上一定会功亏一篑的, 再努力也难以弥补. 所以要常常剖析自己, 不要由着性子去做事, 遇到事情还是要多思考, 多请教.

4. 未来的目标比较单一, 一是学好技术, 二是学好管理. 学好技术主要是生活要规律, 情绪要稳定, 稳扎稳打, 一般都没有问题; 管理上主要就是学会复制, 自己的经验如何复制给别人, 就是学会带人; 别人的经验怎么复制给自己, 也就是学会协作.

5. 2009年是本命年, 2010年即将跨入25的行列, 以后就不能把自己看做新人了, 因为公司里比自己小的已经大把的了, 1月份开始要带一个新人一起做, 技术之外的事情也会越来越多, 最重要的还是要生活规律, 情绪稳定:)

6. 未来的几年将是最关键的, 在学校的时候还很懵懂, 刚工作的时候还很稚嫩, 现在正是冲的时候了, 加油!

No Comments

未鹏大神再出强文

毫无疑问, 这篇文章, 是我看过未鹏的文章里面最棒的.

尽管自己每天都在跟os打交道, 却从未有如此的认识, 以后还要多看看心理学方面的书.

No Comments

转一篇好文–独立思考–谢国忠

这篇文章写出了我想了很久, 一直没有想清楚, 或者说不知道怎么表达出来的一些问题.
对这篇文章里的观点, 我只能说, 我无法同意你更多!!

我们最缺乏却最不可或缺的能力:独立思考(谢国忠)

平时我经常阅读与金融界的时事新闻和职业规划有关的网站和论坛,以防自己在不经意中落后于时代。在国内和国外,有许多非常深刻而又活跃的金融类交流社区,例如Doostang,
iBanking Oasis以及MIT BBS等等。我从来就不是社区的活跃成员,只是偶尔观看讨论合集,并争取从那些更有经验的人笔下学到更多东西。

后来,我逐渐发现了国内和国外社区的一个重大区别(我说的“国内社区”包括所有中文社区,例如水木社区,以及设立在美国的MIT BBS)——相比那些出生在美国、欧洲或澳大利亚的金融从业人员,我们中的大部分人都缺乏独立思考的习惯,而且习惯于把一种偏见强加于另一种偏见之上。在任何讨论中,我们都喜欢采取过于强硬、甚至是人身攻击的态度,而且每个人都希望证明自己是正确的。总而言之,作为出生在中国并在中国接受大部分教育的人,我们经常显得过于顽固地坚持一些所谓的“普遍真理”,而不是根据具体情况进行具体分析。此外,我们还缺乏心平气和地讨论问题的心态。

举一个最简单的例子。假设你对自己的职业生涯发展不确定,不知道该去一个价值型对冲基金(Value Hedge Fund)还是去一个中型投资银行(Middle Market IB)做股票研究(Equity
Research)。当你到Doostang去寻求帮助时,热心的讨论者会告诉你:     

“这完全取决于你的职业偏好,你的背景,以及你对未来的态度。对冲基金的文化和投资银行非常不同。你喜欢深入研究公司的基本面,还是喜欢每天和客户打交道?当然,薪水可能有很大的不同,我无法确定。哪位朋友在对冲基金做过研究?或许他可以帮助你。”

接着,你可以把自己的大致背景和职业生涯规划告诉他们。会有一些入门级、中级甚至高级的金融从业人员和蔼地开导你。一个人会说:“我个人比较喜欢投资银行,毕竟你和一个团队在一起工作,而且这会大大地锻炼你的交流能力。对冲基金的规模再大,毕竟比不上中等投资银行。况且,在投资银行做股票研究的经历可以帮助你未来成为基金经理或私人股权公司的工作人员。”另一个人可能会说:“我建议你最好选择对冲基金,因为它们的工作和生活更加平衡,而且你能够真正学到怎么做投资,而不是仅仅写报告让客户高兴。如果我是你,我肯定会去买方,而不是卖方。”

以上的交谈都是用英文进行的,如果你的英文阅读能力不错,那么你将在Doostang或iBanking Oasis得到一些非常中肯的评价。无论如何,你会感觉自己受益很大,对前途看的更清楚了。

可是,如果你把这个话题贴到水木社区,北大未名BBS或MIT BBS上,等待你的又是什么呢?这要看运气,有时候人们也会提出宝贵意见,但是在大部分情况下,在十几个回复之内,你的主帖下就会充斥许多互相攻击和不知所云的帖子,下面是一些样本:

用户甲说:“投资银行都是骗人的!你看过投行的研究报告吧,和娱乐记者写的东西没有区别。而且现在投行研究部的工资越来越少了,你去了就等着挨饿吧。我简直想像不出来,作为卖方分析师你能干嘛,其实你啥都锻炼不了。对冲基金至少比投行好。”

用户乙(可能是一个在中金研究部实习的小伙子)立即大怒地回帖:“你真是无知者无畏。你知道研究业务在大中华区是多么吃香吗?你觉得一个10亿美元规模的对冲基金带给你的锻炼能够比得上一家年营业额几百亿的投行吗?我看你就属于那种根本进不了投行面试的人,你只管在那里误人子弟吧。”

用户丙(据说是一个物理学博士)慢条斯理地出来说:“你们说的都没有用。无论去对冲基金还是去投行,做股票研究肯定没有前途。实话告诉你们,现在投资分析已经数理化了,数量分析师(Quant)才是唯一有前途的。你知道伦敦城的数量分析师能赚多少吗?做股票研究,是夕阳产业中的夕阳产业。趁早转行吧。”

用户丁(某个IBD的Senior Associate)说:“难道你没有考虑过IBD吗?事实证明IBD在长期内是最能够锻炼人的,而且工资也很高。现在有许多股票分析师转行到IBD,或者去做Sales。无论如何,我觉得IBD是最好的,所有部门的人都想来IBD。”

用户戊(很可能刚刚输掉一个IBD的终面)怒不可遏地回复道:“什么IBD,狗屁IBD,整天做一些华而不实的PPT来蒙骗客户,连简单的VBA程序都不会编。你们除了骗人还会干什么?只管去吹吧。还有,那个自称做Quant很赚钱的人也别太高兴,次级债危机就是你们这些Quant搞出来的,到时候你们也只有死。认命吧。”

好吧,这一路下来,你究竟学到了多少东西?除了骂人、转移话题和混淆是非的能力之外,你可能没有学到什么。人身攻击只是一个方面,关键在于,大部分讨论者都没有注意“具体情况具体分析”。他们会说:“某某部门好,某某部门坏”;可是他们不会说:“根据你的实际情况,我认为某某部门可能是更好的选择”。

如果你有幸光临MIT BBS的金融求职版,你会发现那里的人整天为“做数量分析师好还是做交易员好”或者“IBD有没有技术含量”这些万年没有答案的问题纠缠不清。另一些富有争议的话题包括:“股票研究是不是死了”,“买方分析师有意义吗”,以及“管理咨询和投资银行哪个更锻炼人”——不用说,这些问题最后没有一个不演变为集体攻击与反攻击。数学好的人会大肆鼓吹数量分析师是最好的,既有技术含量,又安全稳妥,而且工资也很好;数学不好但喜欢吹牛的人会大肆鼓吹IBD是多么伟大,真正有水平的人都来自IBD等等;喜欢读财务报表的人则会坚持说股票研究能够产生真正的天才,而其他部门在忽悠人之后都不会有好下场。大概在三五个帖子之后,他们就会开始闹的满脑子不快。

这种讨论,对于已经很熟悉职业发展的专业人员来说,或许不会产生负面影响,因为他们已经懂的够多了;但是对那些有志于从事金融业的学生,或者刚刚开始从事金融业的分析员们来说,危害可能相当巨大。我记得很久以前某一天,一个同学眼泪汪汪地告诉我说,他没有办法从事金融了,因为他不会推导Black Scholes公式,也不会C++编程。我对他说:“那些都是做衍生品和数量分析的人使用的,你做其他部门很少会用到。再说,即使你现在从头学习C++, 也不算太晚呀。”那个同学又悲伤地说,他觉得从事基金或投行事业的人都是数理天才,而且还是编程天才,自己注定没有活路。    

后来,我总算弄明白发生什么了——原来,某BBS的金融职业规划版突然来了几个做过数量分析师的金融工程学硕士,他们不停地鼓吹建模和编程已经成为金融界的一切,如果你不会从头到尾推导Black Scholes公式那就等死吧,而且你还得会Matlab, 并且熟练掌握C++,
至少编过三十万行代码……于是,数理能力不太强、没有编程经验的经济学、金融学或社会科学学生们被搞的灰头土脸,产生了严重的自卑情绪。

可是仅仅三天之后,情况发生了很大的改变。一个成功的IBD工作人员在那个版面贴了自己的职业生涯感悟,总结说做金融唯一重要的是语言文字表达能力(其实就是吹牛的能力),再加上做PPT的能力,还有就是你要特别会经营关系。他还非常武断地说,技术的作用非常小,其实是用来忽悠人的;高学历也没有作用。于是,经济学和社会科学学生们开始扬眉吐气,数学、物理和计算机高手则开始灰头土脸。如此反复再三,所有想从事金融业的年轻人都会被搞的倒了胃口,完全不知道自己该干什么了。

在世界上的诸多悲剧中,最大的悲剧就是不会独立思考,而且打击他人独立思考的情绪。这个世界上没有一条通向成功的不变的道路——过去没有,现在没有,将来也不太可能有。当美国、欧洲和澳大利亚的年轻工作者把“具体问题具体分析”和“个人的职业生涯兴趣”放在第一位时,我们的年轻人却总是喜欢武断的决定—— 某个东西肯定是最好的,某个东西肯定是没有前途的,你肯定应该从事某个职业,无论你是不是觉得它很无聊,仅仅是因为它能给你很多钱,或者它能够“旱涝保收 ”……最后,如果你不采纳他的建议,坚持认为别的东西是最好的,他就会攻击你,说你选择了大错特错的道路,将来肯定会被解雇或者干脆流浪街头讨饭。

每个行业、每个部门都会产生天才和伟人。卖保险的经纪人可以成为巴菲特,投资银行家可以成为黑石公司的创始人,交易员可以成为索罗斯,数量分析师则可以成为Jim Simons那样年薪十几亿美元的对冲基金经理——不过,这些人肯定不是听到别人说“某某行业旱涝保收”或“某某职位薪水最高”就一拥而上的那种人。我们这一代人最大的问题就在于,一方面自视颇高(动辄以超级金领或未来的巴菲特、索罗斯自居),另一方面却完全不知道自己的兴趣和道路何在,也从来没有锻炼起独立思考的能力。或许这才是我们与那些发达国家的年轻人最大的差别。

No Comments

独立开博一周年

再过两天,网站和域名就要过期了,虽然最近一两个月都没怎么写,但是还是去银行转了帐,准备继续写下去。
最近处于典型的连轴转状态,收获也是很大,在度过了适应期之后,已经没有力不从心的感觉了,逐渐地能够看清自己面前的机会和挑战,总体上来说,未来值得期待,眼下可以一搏。

No Comments

一个十分弱的关键词高亮程序

Screenshot-zhangxuecheng's editer

功能十分的弱,主要是花了点时间学gtk的hello world,然后分词也折腾了会儿。
不过没关系,很快就会有各种词法的高亮加上的,哈哈

No Comments

立体斑马线

U4126P1T1D19093073F21DT20091120163633

超赞!

No Comments

关键路径与SMART

今天去公司参加PDCA的培训, 收获很多, 但是印象最深刻的是一个tip: 时刻注意关键路径.

第一次听说这个词还是在大四的时候, 当时开了一门dsp设计的课, 为了凑学分大家都得去, 因为当时已经开始实习, 这门课我一共也就听了不到十分钟, 只记住了一个概念, 就是关键路径(Critical Path).

虽然记住了这个词, 但是理解并不深刻, 似乎就是在一个系统中从输入到输出存在很多条路径同时工作, 那么数据流的传输时间就取决于消耗时间最长的那条路径, 即关键路径. 换句话说, 关键路径优化的好, 整个系统的效率就高, 关键路径没有优化好, 其他的路径再怎么改进也没戏.

今天的课程里讲的是:我们在日常的工作和生活中, 经常会有很多条线索同时进行, 会有很多资源可以调度, 也会有很多冲突, 那么从一个相对较大的时间跨度上来说, 最终目标能否达成就取决于你对关键路径的控制.

虽然是很浅显的道理, 但对我这样乱七八糟的想法比较多, 导致经常自己搞出很多活的人来说, 还是很醍醐灌顶的.

比如每周对自己的工作进度进行控制, 与主管之间保持一致, 实际上是应该把握住彼此的关键路径, 而不是在一些分支上花费太多时间.

通常的情况是, 我会被一些并不重要但是很有趣的事情, 或者一些不紧急但是非常重要的事情拖住脚步, 比如一些很有用的小工具, 或者从头review整个模块的设计和历次较大的改动, 这都是让人情不自禁去做的事情, 但是很容易使人迷失, 导致关键路径上的事情没有进展, 而在分支上花的时间反而超过了关键路径.

其实对于这些事情, 我的经验是, 对一些确实有用的小工具, 需要你自己来承担风险, 也就是说你很难事先就从主管那里要到资源和时间去做, 因为这些东西是better而非must的. 所以往往需要自己额外找时间去做, 等做到主体功能都ok了, 完全可以work时, 才能show出来, 进而去争取更多的资源.

而对那些重要而不紧急的事情, 需要你有足够的实力来说服主管和同事, 让他们相信花时间来听你的分析是值得的, 因为类似模块设计级别的东西往往很抽象, 在这个级别的一次高强度的讨论是很消耗体力和脑力的. 所以这之前可能需要你自己多消耗很多体力和脑力….

例如有一个模块先后进行了几十次改动, 但是一直都有新的问题冒出来, 那么往往就是走错路了, 一定在早期存在某些简单而草率的改动, 使得后来产生了很多问题, 进而陷入了更困难的境地. 这个时候就需要做很多的推演, 去统计很多场景, 找出这些改动的缺陷所在.

最后还有一点比较深的感悟, 就是SMART原则, 大意就是要有具体的,可衡量的, 能达到的, 有关系的, 有时限的目标.

虽然我对口号一类的东西比较反感, 但是对一个软件模块的设计和维护来说, 有一个明确的可以衡量的目标是至关重要的.

如果我们有心去观察某个模块的改动记录和改动理由的话, 会发现很多时候它的目标都是互相冲突的, 这次是为了效率更高, 下次可能就变成了维护的方便性, 而过一段时间又会基于兼容性做一些改动, 等到项目transfer给另一个人, 又会发生更大的改动, 大概就是类似布朗运动的那么一个轨迹.

以一个display driver为例, 我们说要考虑效率, 那就应该对应于每次application请求update时得到响应的时间, 这个时间的期望和方差应该都是比较小的.

再比如说我们希望减少带宽的占用, 那应该定义出每秒钟update的数据总量, 然后给出每种设计方案下每秒钟update的数据总量的近似值.

另外还有对multi-thread情况下的效率和安全性, 硬件加速的性能, 内存的占用量, 等等等等.

这些指标应该有一个总的表格, 当我们需要在几种设计方案之间做出选择的时候, 可以讲每种方案的利弊都列出来, 然后选择那些真正优秀的方案, 而如果仅凭口头的讨论, 人们的思维往往只局限在两到三个局部因素的比较上面, 几乎无法做出从全局角度来看更优秀的选择.

No Comments

可惜我跑路了

http://audio.pconline.com.cn/mp4/news/0911/1885267.html

虽然已经离开, 但是还是很开心, 希望以后会越来越好.

No Comments

How to write a lexer?

手头已经有的code里面,除了ucc,还真没有那个编译器是手写lexer的,或许是太简单了。(对了, 好像还有lcc).

不过简单有简单的好处,lexer这种东西毕竟是通用的,不限于compiler,而且手写一个也很能锻炼一下coding能力。

ucc是这样实现的:

  1. 创建一个包含256个函数指针的数组,针对letter,digital和其他的token进行区分,比如所有的letter都是一个处理函数,ditigal是一个,其他的特殊token分别有一个,比如*, – 等;
  2. 每次读进一个byte,这个byte的范围是0~255;
  3. 根据value选择相应的处理函数, 得到具体的返回值;
  4. 最常见的情况之一是各种letter, 分几种情况处理:
    1. ‘L’打头, 那么后面很可能是这样: L’a’ 或者 L”hello world\n”, 要判断一下后一个字符是不是’或者”, 是的话按照char或者string处理(char和string的处理还挺麻烦, 后面再讲);
    2. 继续向后吃掉所有的letter或者digit;
    3. 然后就得到一个identifier了, 先去keyword表里查一下, 看是不是keyword. 这里用了hash表, 按照keyword的首字母排序;
    4. 去symbol里面查一下, 看是否已经有同名的id存在, 如果有的话, 就将已经保存下来的id地址返回; 否则就新allocate一段内存, 然后返回新的内存的指针;
  5. 最常见的情况之二是digit, 也分几种情况处理:
    1. 首先说明一下, ‘-’的处理是不包含在这里面的, 因为有二义性, 而且需要前溯好几步, 放在语法解析比较好, 比如a – 1 和a = -1 你就不好在词法解析这个级别做, 所以lexer只是把minus这个结果返回就可以了;
    2. 然后要考虑浮点数, 包括.和e这些, 还有0x和0X这样的十六进制数, 077这样的八进制数;
    3. 不过有一个疑问, 如果一开始就处理’.', 像10.444这样的数怎么处理?
  6. 后面是一些token的处理:
    1. ‘\’, 后面跟的一般是转义符, 作为char处理;
    2. ‘”‘, 后面跟的是字符串, 作为string处理;
    3. ‘+’, 分三种情况:++, +=, + ;
    4. ‘-’, 分四种情况:–, -=, ->, – ;
    5. ‘*’, 分两种情况:*=, * ;
    6. ‘/’, 分两种情况:/=, / ;
    7. ‘%’, 分两种情况:%=, % ;
    8. ‘<’, 分四种情况:<<, <<=, <=, <;
    9. ‘>’, 分四种情况:>>, >>=, >=, >;
    10. ‘!’, 分两种情况:!=, !;
    11. ‘=’, 分两种情况:==, =;
    12. ‘|’, 分三种情况:||, |=, |;
    13. ‘&’, 分三种情况:&&, &=, &;
    14. ‘^’, 分两种情况:^=, ^;
    15. ‘.’, 分三种情况:
      1. ‘.’后面跟着数字, 则作为float处理;
      2. “…”连在一起, 作为ellipse处理;
      3. 单独的’.';
  7. 其余所有的token都直接返回对应的值.

所以主要的难度在于数字的处理和identifer table的管理上.

No Comments

[读书笔记]杜拉拉求职记

1.知道这本书已经很久很久, 有一两年了吧, 却一直以为是国外的畅销书…或许是拉拉这个名字的缘故?

2.要说读书的效率, 还是txt靠谱, 因为pdf只有psp看得爽一些, 而每天捧块砖在手里实在太郁闷, 还是手机更方便. 所以那天在电驴上看见有人发布了杜拉拉升职记一和二的txt格式, 就当下来读了.

3.撇开书中的爱情故事不谈, <一>侧重于行政的专业内容和公司里为人处事的方法, 以及少量的hr专业内容, 讲的还是很不错的. 由于最近刚换工作, 正处于磨合期, 对书中的很多事例感触颇多, 尤其是与主管的沟通与合作, 写的很实用.

4.<二>中基本完全侧重HR和销售的专业工作内容, 令人大开眼界, 尤其是我这样的IT民工, 以前对这些可谓孤陋寡闻. 总体来说就是作者用很量化, 总结的形式列出了员工自己很难注意到的细节, 而且配合有大量的案例, 值的在工作中反复的体会琢磨.

5.不过这本书的局限就是基本只适用于广大外企, 也就是流程化程度比较高, 而且执行力很高的环境, 说白了就是游戏规则比较全面, 而且大家遵守的都还不错. 很多案例若放在之前的民企, 怕是玩不起来….

6.总体来说, 书很长, 而且手机阅读似乎因为屏幕小的缘故, 好像脑袋里的缓存也变小了? 全都读下来之后脑袋里还是空空如也, 只记住了一句话: 要与主管保持一致性……

7.回头有时间再读第二三遍, 然后再补充心得.

No Comments

C语言中数组和指针的区别

水文一篇, 胡乱写写.

比较清晰的讲解在<C专家编程>这本书中.

声明(Declaration):

int a[];

extern int *p;

定义(Definitation):

int a[10];

int *p

int *p = a;

引用(Reference):

a[10]=1;

*p=NULL;

几个前提:

1.声明和定义必须完全一致, 否则编译器会报错

2.不声明就直接引用是可以的, 编译器不会报错, 但是引用和定义必须一致, 否则运行时会发生错误

关于声明和定义:

定义就是告诉编译器, 要按照一定的方式来分配内存, 并且给这块内存一个唯一的名字.

而声明只是告诉编译器, 你准备以什么样的方式来定义(分配内存并给它命名), 以后编译器就会按照这个方式去引用(就是访问)这段内存.

如果没有声明, 编译器会按照它的理解去访问这段内存, 对函数或者指针这方面都没有问题, 但是对函数会有些问题, 因为编译器会假设没有声明的函数是int func(…)这样的形式, 即返回值是int型, 参数个数和类型不限, 往往会造成一些返回值为void或者其他类型的函数调用编译不过.

数组和指针在声明与定义方面的问题在于, 你不能定义为数组, 然后声明为指针, 更不能定义为指针, 然后声明为数组, 这是由数组和指针的引用方式不同引起的, 也就是访问内存中数据的方式不同.

当你引用一个数组的元素时, 编译器会从固定的地址开始, 计算出偏移量, 然后得到最终的数据

而访问指针时, 编译器会先得到指针指向的那个地址, 然后从那个地址开始, 计算出偏移量, 然后得到最终的数据

所以当指针和数组的引用发生混乱时, 编译器就可能将一个实际存放数据的地址当成指针, 从而到另外一个地址去取数据, 导致运行时的错误(数组当做指针去引用);或者将一个存放指针的地址当做实际的数据存储区, 从而拿到一个错误的数据(指针当做数组去引用)

也就是你不能在为文件A中定义一个数组, 然后在文件B中将其声明为函数, 反过来也不行.

但是有几处例外

一是数组和指针作为函数的形参时, 它们是等价的, 你可以用void func(char s[]), 也可以用void func(char *s), 因为当函数调用时, 实际传过来的参数是指向实际内存区域的指针, 即编译器无论如何都会作为一个指针去引用参数s, 所以怎么声明都可以. 而数组之所以被作为指针传递, 主要是基于效率的考虑, 如果总是把整个数组的内容在栈上传来传去, 效率损失太大了.

二是对数组引用时, 可以等价为指针, 因为引用一个数组名时, 编译器会把它解释为指向数组第一个元素的指针, 而”[]“操作符是等价于”+”的, 你可以写a[5], 也可以写5[a], 没有任何问题. 所以通常情况下, 对数组的引用是被当做指针来使用的, 前提是编译器正确的将其作为数组处理, 而不能被错误的声明所迷惑.

最后补充一点:任何类型都不能转换为数组,但是指针可以强制转换

No Comments

读书笔记–程序员的自我修养

今天花了一天的时间从头到尾翻了一遍, 跳过了那些有X86汇编的部分, 和分析C++ CRT中解构析构的部分, 其他的都读了一遍.

读完之后唯一的感觉就是: 此书非读不可, 而且要经常读.

毫无疑问作者对于链接, 装载和库这三个方面是有深刻的认识的, 于深度和广度都无可挑剔, 而且组织文字的能力也属上乘, 虽然我之前看过相当多相关的spec, 但是读一本书可以这么快, 不能不说作者文字功底确实不错.

不过我觉得, 如果能把dwarf的信息加进去就好了, 再加上一些讲调试的章节, 改为链接,装载,库与调试, 就完美了.

调试部分不是讲技巧, 这方面已经有几本好书了, 可以侧重调试信息的解析, 调试器的工作原理, 以及前面三者对调试的支撑, 互相之间协作等等.

作者在书中一直提及一个观点: 计算机科学领域的任何问题, 都可以通过添加一个中间层来解决.

在书的很多章节都反复引用并论证了这个观点, 我也觉得非常有道理, 不过事物总是两方面的, 每添加一个中间层都会带来很多额外的负担, 比如验证中间层工作是否正确工作, 规范外部的调用接口, 这都是很大的工作量, 另外还会在调试的时候带来相当多的麻烦, 比如滥用COM.

还有一个缺点就是, 引入新的中间层, 会让被隔离在外面的人失去对底层的了解, 最终会体现在调试上面, 或者对接口的误用, 所谓难以两全吧

这个方法似乎也不局限于计算机领域, 这几天在看书的时候, 我会随手做很多概要, 把认为重要的东西都作为条目写下来, 然后抽一段时间做整理. 以前总是阅读-收藏/保存, 然后凭记忆再做整理, 或者干脆不整理, 回头总是发现似懂非懂, 要去找出处的时候又遍寻而不得, 很浪费时间.

这应该也是个中间层, 把零散的资料做初步的整理, 然后再集中的消化, 效果还是不错的.

No Comments

有道购物搜索助手–很有趣的应用

前天晚上在dospy上闲逛, 发现有人推荐有道购物助手, 于是装了一个玩, 发现确实很有意思.

这个程序利用摄像头去拍摄条形码, 然后上网搜该商品的信息, 我试了家里几乎所有带条形码的东西, 像牛奶, 摄像头, sharp和dopod手机包装盒, 还有一堆书.

1.首先条形码识别是很准确的, 前提是光线充足, 手不能抖;

2.书基本上都可以搜出来, 能看到封面和价格区间, 还有目录;

3.其他的东西一概搜不出来, 或许太小众了?

玩了一个晚上, 实在没有发现什么用处, 可能买一些从来没买过, 不了解大概价格的东西会比较方便吧.

不过今天发现一个用武之地, 同事推荐我看一本书, 我掏出手机, 扫描了条形码, 然后点击收藏, 看得他目瞪口呆, 哈哈

或许收藏一些想买而暂时不买的东西是很方便的:)

No Comments

How Debuggers Work: Algorithms, Data Structures, and Architecture

晚上搜dwarf的资料,无意中搜到了这本书,已经有些年头了,不过讲debugger实现的书实在是太少了,这本算是宝物一件了。

关于breakpoint,step,还有stack backtrace unwinding这些话题都有涉及,大致浏览了一下感觉还算详细,可以与dwarf/ARM EABI/ATPCS的spec结合起来看。

下载地址在这里:

http://d.download.csdn.net/down/1125895/liubolook

No Comments

ARM编译器性能对比–[ARM compiler shoot-out]–[二]

前面转过一篇ARM编译器性能对比的文章,最近作者又做了第二次测试,加入了TI的编译器。

从测试结果来看,TI的编译器和GCC不相上下,不过作者给出了一个很有意思的结论:对于64bit的运算,GCC生成的代码效率要远小于其他编译器。

这也是第一次测试中作者对mp3解码的测试结果非常疑惑的原因。

我猜想GCC可能没有使用ARM的长乘指令(umlal和umull)来完成64bit的操作,而是使用了C库中64bit运算的相关函数,导致性能出现了如此大的差异。

如果有64bit的除法,那就只能是不同编译器的C库实现效率不同了。

要验证这一点非常容易,只要用arm版本的gcc生成一个简单的64bit乘法和除法的代码,看一下汇编就知道了。

现在手头没有linux的环境,争取周末回家验证一下。

No Comments

推荐一款e71上面非常好用的桌面软件–航海桌面

自从买了E71之后,我就一直很讨厌symbian自带的桌面,原因如下:

1、不能全屏,小毛的图片放在上面被掐头去尾,越看越生气;

2、只能放置6个快捷方式,屏幕下部还有很大一片空间浪费掉了;

3、自带的日历和任务管理很弱,基本就是个鸡肋,GTD之类的功能自然说不上了,常用的任务管理也不好用。

后来试了几款不同的桌面软件,包括UC桌面,最后发现还是航海桌面超级好用:

1、自定义桌面快捷方式,最多2×7个,一共两行,完全满足需要;

2、如果14个快捷方式不够用,还可以在开始菜单里继续无限制定义;

3、按挂机键可以切换应用程序,这个功能超级实用;

4、桌面上可以显示百度/google搜索,天气预报,农历等信息,完全利用上了屏幕的空间;

5、自行修改网标,把“中国移动”换成其他的文字,这个功能没啥用处,但是很好玩,呵呵;

6、来去电信息显示,包括时间和流量统计,非常实用,不过E71上面好像在主界面上刷屏有问题,之前用过柳丁来电,N95上的显示效果是很好的,E71就会一直闪啊闪,看着很不爽;

其他的还有不少小功能,不过我觉得上面这些是最实用的:)

航海桌面主页:

http://3gtb.com/wp_site/

No Comments

我的兴趣分布–by xmind

最近琐事极多,主要是离职一直不顺利,搞得我手忙脚乱。

这几天熬夜又明显增多,每天都是快3点入睡,但是凌晨的这个时间确实神清气爽,精力也很集中,怕是已经进入积重难返的境界了…

刚随后整理了下自己感兴趣的东西,我所谓感兴趣,就是不管工作是否需要,或者自己能否看懂,抑或时间充裕与否,都会去关注去实践,能让我乐在其中的东西。

工作中也包含了很多,因为我确实喜欢这样的工作,虽然还有很多很不爽的事情,或许以后会列一个non-interest-list出来,哈哈

my-interesting-distribution

No Comments

E71与Dopod diamond

最近一直在把玩这两款手机,E71是自己买的,diamond是老姐的,胡乱记录下。

E71:

1.全键盘,超薄,反应速度快,这是我买它的最大理由;

2.不过诺基亚最大的优点在于它没有缺点,最大的缺点就是它没有优点。全键盘没错,但是太密了些,GPS和摄像头都只能说中规中矩,屏幕分辨率只有320×240,耳机插孔还是2.5mm的。只能说综合素质不错,而且缺点没有差到不能忍的程度;

3.symbian软件的签名太讨厌了;

4.symbian上的office和pdf软件是个软肋,跟wm比差很多;

5.其他的都还好,不发烫,待机还行,大小很合适,GPS搜星也挺快,比之前用过的N95强太多,一代机皇装短裤口袋里面能把裤子拉下来…..搜星的时候还得推开盖,要不然信号不好。

Diamond:

1.640×480的屏幕,全触摸,加gps,我觉得这是他最大的优势;

2.wm的优势很多,软件丰富,正经的office,外加正经的exchenge mail,还有版本很新的adobe reader,在adobe的网站上,palm的版本是3.05,wm是2.0,symbian只有1.1;

3.diamond的缺点也很明显,太热,太慢。太热怕是无法解决了,太慢据说可以刷rom,不过我试了一个晚上也没有搞定硬启,还是改天再试试。

据说symbian已经开源了不少代码,但是全部开源还需要大约一年时间,不知道会发生什么变化。

wm确实落后太多了,未来会怎样也说不好,但是在office和exchange两块,还是处于杀手级应用地位的。

其实想来想去,我最需要的手机应该是hero,全键盘+触摸,GPS,完美集成google应用,只是屏幕不够大,而且价格太高….

No Comments

最近想看的两本关于内存的书

对内存的兴趣依然十分浓厚….

Memory Systems: Cache DRAM Disk:

http://www.newsmth.net/bbscon.php?bid=272&id=36331&ftype=3&num=1775

Dram circuit design: fundamentals and high-speed topics

http://books.google.com/books?id=TgW3LTubREQC&dq=dram+circuit+design&printsec=frontcover&source=bl&ots=l_MqpwOhpg&sig=uvMuEZStwntOFPiiV-uuCvAf6IA&hl=en&ei=Oz2ISs7RAYTU7APh5Jj6Aw&sa=X&oi=book_result&ct=result&resnum=4#v=onepage&q=&f=false

No Comments

让VIM的Esc更好用一些

用VIM的时候总是不停的按Esc,但是这个键离的太远,很难盲按,即使可以盲按Esc了,手在退回到键盘中间时也总是需要重新定位(摸F上的小点),相当费劲。

今天发现一个方法,相当赞:把jj组合映射为Esc,即快速按两次j,就相当于Esc了,如果需要输入jj,在键入第一个j之后稍停一下再输入j即可,太方便了。

具体配置方法如下:

imap jj <Esc>


2 Comments

那年的生日礼物

今年买了wii。

越来越俗了….


制作这张贺卡让我找回了久违的快乐,那种在很小的时候常常感觉到的创造的快乐,希望kitty猫和坏小子能把快乐带到妹妹身边,永远不要退色:)

正面:
点击查看原始尺寸

信封,从正面的洞里漏出来:

点击查看原始尺寸

展开之后:

点击查看原始尺寸

打开贺卡之后看到的信封:

点击查看原始尺寸

大信封里套的小信封 :

点击查看原始尺寸

还是小信封:)

点击查看原始尺寸

背面,大kitty:

点击查看原始尺寸

近看正面:

点击查看原始尺寸

No Comments

做系统和做算法

工作中接触到的软件开发主要是这两块,算法就是各种音视频的编解码算法和处理算法,系统就是包括驱动,界面,操作系统,媒体播放引擎等等应用级的东西。

算 法就像是打老虎,山上有一到两只老虎,然后派你去搞定,方法也不难,找到老虎,打死它。做算法得人大都接受过良好的训练,也有不少半路出家自学成才的,共 同特点就是在某个领域中摸爬滚打了很久,很多地方都很熟。最终老虎打残还是还是打死抑或半死,基本取决于此人是否认真的去打。

系统就像是抓老鼠,山上有无数的老鼠,然后派你去搞定。大部分情况下都是随便抓了个人就派上去了,然后领导在后面指挥。常见的情况是抓老鼠的人累的死去活来,抓了无数的老鼠,但是依然有无数的老鼠四处流窜,最后客户气跑了,老板没钱了,抓老鼠的人跑路了。

其 实做系统看似简单,但更需要一种统领全局的思想,系统设计里面没有太难的问题,但是小问题的数量很多,多到具有了老鼠群的特征。无论抓老鼠的人还是在后面 指挥的人,都不能贸然上山,一定要仔细分析,老鼠有几个洞,老鼠吃什么,老鼠一般什么时候出来活动,老鼠最怕什么,等等等等,这些问题都搞清楚了之后,就 把所有人部署好,挑最好的时机,堵死所有的退路,集中下手,一次搞定,最重要的是不能有遗漏。

总是有人每天在喊,我多么多么的累,多么多么的努力,加班熬夜,几天没合眼,查出来多少bug…..

老鼠都笑了!

No Comments

关于民工

最近一直在思考,啥叫民工?怎样才不算民工?

以前我没有考虑过这个问题,觉得自己过的还算happy,每天都在折腾新东西,时不时有些收获,充实的很。但是前一阵子看了孟岩的一片文章, 中间提到了第四类人,即还处在出卖劳动力的阶段,我突然有所触动,开始思考民工这个问题。

我暂且把民工就定位在“出卖劳动力的人”,或者借用大O表示法的话,民工的劳动时间和产出比是O(N),这里的前提就是我假定付出和所得是相等的,即你的价值和老板给你的钱是相等的,毕竟这是老板的问题。

那么在一个团队中,如果一个民工每工作一小时,能解决一个问题,那么他工作12个小时,最多只能解决12的问题,这就是民工的本质特性,他可以并且只能通过延长劳动时间来增加自己的价值。

那么非民工具有哪些特性呢?按照我肤浅的理解,非民工的劳动时间和产出比应该是非线性的,比如O(N^2),当然这个曲线的增长是有上限的。

更 具体一点讲,比如某民工,每天工作12个小时,平均每天解决掉10个以上bug,十分勤奋,但是坦率的说,该民工应该是一个维修工,因为他只是在修补,或 者为一些某些状态不能工作的元件做一些保护,这种工作换了谁都不能做到非线性,除非他研究了一个AI出来,可以自动解bug。

但是该民工可以尝试着做一些调试工具,无论是什么形式的,比如运行时的出错报警工具,检测工具,引入一些保护机制等等,最终花了一天时间解决了几十个bug,那么在暂时的这个状态下,他应该超越了民工的层次,因为他发明了工具。

再比如该民工业余时间刻苦学习,努力了解系统的深层知识,发现了现有系统设计的一些误区,然后引入新的设计,提高了效率或者增加了稳定性或者引入了feature,那么在暂时的这个状态下,他应该超越了民工的层次,因为他做了新的设计,或者说在系统层次上做了大的创新。

暂时只想到这么些,不知对错,让时间去检验吧。

不过我唯一坚信的一点就是,必须做最好的民工,才有可能超越民工。因为即使你成了老板,还是要靠民工吃饭。

No Comments

三年?

我很少抱怨, 也不愤世嫉俗.

但是之前不是这样的, 似乎是从大四的时候开始, 也就是三年前.

那时候我刚离开科协, 结束了那段鸡飞狗跳的日子, 一个想法太多而能力有限的青年, 在一个社团里做了一切自己想做的事, 然后留下大段的时间去回忆, 或者说反思.

从那之后好像我就很少抱怨了, 因为我对自己看的很清晰, 一个浮躁而喜欢幻想的年轻人, 总是在事情还没做的时候就沉浸在成功的YY中. 那个暑假我常常一个人坐着, 反复回忆着过去的三年里发生的每件事, 然后突然醒悟过来, 我应该重新开始, 肯定来得及.

从那以后我脑子里就有了一个极为坚定的念头, 如果有了想法, 就要立刻去做, 而且一定要做出结果.


早上有一个同事的签名档写着, 三年走了16个人. 我有点诧异, 有这么多吗? 后来拿起手机联系上去年走的一位同事, 上一次和他聊天也有差不多一年了, 他停留在去年的记忆和我脑海中的现实发生碰撞, 让我很清晰的感受到了时间的飞逝. 不过世界很小, 以后还会经常碰面, 又会有新的共同的记忆.

晚上亚嵌的李明老师在gtalk上找到我, 聊了几句, 说起他当年帮我推荐工作的事情, 转眼已经三年了, 一年实习加两年工作, 真是不经混啊.


到北京之后一共两个三年, 后面这个明显要好的多, 完全得益于那时的反思, 还有从不抱怨的心态.

上周三办完了所有离职手续, 开始在家休息, 每天看书写code, 好像又回到了三年前那个时候, 又开始回忆之前的很多事情, 不过这次要好一些, 似乎没有什么遗憾的事, 一切都很坦然.

一个人的职业生涯就像过山车, 都会有高潮和低谷, 只要你还算专注, 都可以混去一些所谓的大公司, 做一些冠冕堂皇的工作, 而后差不多都会变得有些鸡肋, 每天喊着要创业要改行云云, 但是发现自己除了写code其实啥也不会, 只能更加谨慎的混下去.

我觉得在一个公司混, 也需要经历过一次低谷, 做出一次不求回报的坚持之后, 才能发生质变, 让自己做上去, 总是追求短期利益是不行的, 因为靠出卖劳动力的方式生存, 最终的结果一定是被淘汰的.

不过有些事情还是更紧迫更重要, 比如工作时的心情, 还有技术上的提高, 所以还是选择跑路, 无论如何, 时间是很宝贵的.


这次静下来思考, 我觉得自己还是不够专注, 耐心也还不够.

以前的环境算是差强人意, 有的人不喜欢研究的太深, 有的人是环境所迫, 没时间去研究. 所以如果你肯花时间, 多读些书, 多做些实验, 多尝试些不同的思路, 很容易搞出别人觉得挺高深的东西. 但是实际上并不能带给我真正的积累, 因为没有甩开别人足够久, 只要肯花时间, 一定能够追上你.

而如果有机会到更好的环境中做事, 面对更多愿意深究的人, 或者愿意花时间让你去研究的环境, 如何才能继续做的好? 或者说如何避免被淘汰?

所以说以后必须注意方法和效率, 还有沟通, 这也是我想离开现在的环境去寻找的东西.

我想这几点如果做得好, 就能站稳脚跟, 以后也能有机会挑战更高的层次; 做不好的话, 就只能继续混下去, 靠体力吃饭了.

不过总体来说还是要少说话, 多做事, 没做出来的就不要说, 做出来也不要多说, 瞅准机会看看哪些地方有空白, 没人敢做的东西往往不是那么难, 而且也是最容易做出彩的.

现在书架上的书比三年前多了好几倍, 电子书也积累了几十个G了, 不过有几本我觉得太重要, 需要每周都翻一下:

CSAPP, 龙书, 数据结构与算法分析.

工作时间是公司分配的, 让做啥做啥.

业余时间应该去学那些很基础很理论, 十几年变化都不大的东西.

1 Comment

我是一只IT小小鸟

博文视点的新书, 之前看过几篇样章, 颇受震撼, 如今终于要出书了.

记得大四毕业的时候, 看过一本书, 叫<大学里应该读什么>, 名字记不太确切了, 挺厚的一本书, 当时一口气读完了, 所谓心有戚戚焉, 边看边想, 如果四年前读到这本书, 现在恐怕会是另一番样子了.

不过毕业之后, 慢慢领悟到, 一个道理, 即使它再正确, 如果自己没有经历过, 也是体会不到的, 所以书读的早晚, 或者读没读到, 其实区别不大, 问题在于你有没有去经历过这些事情.

但是人的时间毕竟是有限的, 不可能逐一去经历那些挫折和失败, 还有从低谷中奋起的过程, 所以读一读别人的人生, 尤其是那些倒下去又重新站起来, 或者和你有着相似的成长经历的人, 可以带给我们太多的启发和力量.

蒋宇东——《梦断计院》

刘未鹏——《我在南大的七年》

徐宥——《我的大学》

庄表伟——《我的野蛮成长》

No Comments