| sky_handsome's profile天意PhotosBlogLists | Help |
|
January 04 2009该做些什么?2007年底记得写了一篇blog总结了2007年的表现。结果由于space的错误无法发布,导致最终忘记了发布这篇文章。2008年依然是精彩的一年,不过我不想再总结什么,上次离开Google的时候已经写了很多。总之不想回头看太多,过去再精彩都已过去。2009我该做些什么呢?我自己也没有想好,不过可以肯定的是光是干好微软的工作是肯定不够的,我还需要一次飞跃,但不知道是否是2009. December 25 Christmas eve at our saviour Lutheran Church.第一次在国外过Christmas,为了更好了解这个节日,今天和老婆一起去了Church。吃过晚饭本来打算去一个离我们7km外的一个church,结果刚刚出车库发现门口那条路上就堵上了,门口本来很宽的一条路现在只能大概通过一个车的宽度,旁边都是半米多高雪~what's worse.前面就有2个车在路上走不了了,被stuck在雪地里了,任由他们踩油门,汽车就是不动~于是我果断的跟老婆说我们还是别去了,于是找来个岔路掉头回家,其实我掉头的地方也很危险,因为有一个车就在那里不动了~~呵呵~还好我的马儿没有被困住,不然我就只有推车了:)呵呵~
回家以后我们就步行去了一个就近的Church,路上还碰到有人拿铲子出来铲自己车轮下的雪~呵呵~~雪太大了~~去church的路上,雪竟然没过了我的膝盖。。。恐怖~~其实温哥华温度并不低,雪一直在融化,晚上都下雨了。
终于顺利到达church,每人拿了一只蜡烛,然后开始听minister讲故事~~然后开始pray,然后Hymn,歌唱the glory of God, 歌唱Lord Jesus.
很和谐,很友好,很安静。给人一种非常舒适,非常庄严,非常美好的感觉。
Joy to the world! the Lord is come; December 20 中国IT业---一个神奇的地方,一个什么都可能发生的地方今天早上刚刚上班,本来该工作一下,结果一封邮件让我看到了中国IT业真正神奇的一面。那封邮件是卡小罗同学开心网的邀请。可是卡小罗在开心网已经是我的朋友了啊而且我也有开心网的帐号了啊?为什么还会收到邀请,本来想置之不理,可是我还是敏锐的发现了链接并不是去到www.kaixin001.com而是去了www.kaixin.com。一下子我的兴趣来了,难到是kaixin001觉得自己网名太sb,换成kaixin了?但是即使换了也没有必要让用户全部重新注册啊?没这么傻x吧~~ 于是我开始捣鼓这个新的开心网(为了区别,我不再使用开心网这个词,而是分别使用kaixin001,kaixin来指代这两者)。kaixin是一个全新的网站,但是界面和kaixin001几乎一样。里面的application也几乎一致。连名字也一样。 难道有人抄袭了kaixin001然后取代以更好记忆的域名kaixin.com?我真的还不敢相信我的推断,这也太流氓了吧。于是我仔细察看了一遍,发现kaixin和kaixin001有不同的京ICP证号。开来真是抄袭了。网上一搜开心网,还没有搜到关于kaixin和kaixin001的口水战,为什么没有一点新闻呢?于是又搜了一下“两个开心网”,结果出来了,原来kaixin是千橡抄袭的。http://tech.sina.com.cn/i/2008-10-15/00062509175.shtml 中国IT业真的太神奇了,这样的事情都发生了,千橡集团陈一舟能够无耻到这样的地步我无语。中国网名的智商再一次被这些人QJ了。 我很看不起陈一舟这样投机取巧的人,他顶多是一个梁山刁民。总有一天他会和robin Li一样难看的。像他们这样的人应该想办法振兴中国IT业,至少也应该起到表率作用为社会做贡献。可悲的是,像他们这样的人中国太多太多。就像是一种魔咒诅咒了中国的IT业。看看你们在做什么,成天想的就是如何抄袭别人,抄袭美国。这样的思想将使自己永远落后。 无语。。。这些中国IT的老总们,你们还是拿了钱回去养老吧,别再这里制造垃圾了。中国明天的IT业和你们无关了。 December 12 Embarrassed today!今天去银行交US的VISA fee。由于我听错一句英语,非常尴尬。当时我正在填一个表,那个柜台的人突然问我“Pay by Canadian?",他pay by说的很小声,听成了"Canadian?",我当时反应是他想问我是加拿大人还是其他国家的人,也许办签证会有不同的费用或者手续。于是我就下意识回答“No, Chinese."哈哈~~那人顿时惊愕了。幸好老婆听懂了,慌忙补充道“Yes, we pay by canadian dollars". shit!
太尴尬了。哎!!不过我也奇怪我在加拿大为什么他会问我是用USD还是CAD!shit December 01 25周岁纪念太快了。25岁了。奔3奔一半了。怎么会有点惆怅呢~唉。纪念一下今天,虽然温哥华时间还是11月30日晚,不过北京时间已经12月1日了:)呵呵~~发文纪念。
连续两年没有在国内和朋友们过生日了,去年今天出差在California,一个人平淡的过生日。今年还好还有老婆陪我去吃了一顿pizza hut。只要开心就好!明天还要搬家,从Vancouver downtown搬到Richmond,要告别Vancouver美丽的downtown了。以后我会常来逛逛的。呵呵!Richmond也不错,也挺漂亮只是离Stanley park 远了,住downtown的时候还经常和老婆晚上开车去stanley park逛逛,运气好还能看到可爱的Racoon。哈哈。在Richmond只有去丑恶的Richmond nature park,里面什么都没有,就一个打bog。
不多说了,希望大家开心,也希望我从今天起越来越开心!
November 24 Stanley Park & Cypress Provincial ParkNovember 18 NASDAQ的baidu不出所料的垮了。November 17 百度终于自作自受了!既牛跟生老头子以后,又一位中国农民自作自受了,那就是百度的李彦宏。一直认为他目光短浅,典型的中国农民暴发户形象。看看他做的好事吧,网站屏蔽,竞价排名!把中国网民当白痴了。唉~顺便说一下,百度员工的素质也不高,目光也跟他boss一样短浅,因为曾经居然把我的intern拒了,我简直无语了。当时那个面试的员工就不停问一个北大的无知女。我听那个女的回答了几个问题就知道她是实验室给导师倒茶的角色,但那个面试官还不停的问他。对我这样BUAA的学生不想理睬。唉~当然也要谢谢百度,我才没有误入歧途!这样说来我得感谢彦宏了。
百度仗着自己的Government Relationship好,不停的作孽!可是中国早就有一句古话“纸包不住火”,终于“玩火自焚”。期望近期出来一张照片,照片上老牛抱着老李痛哭。之后,李彦宏(本来想称作李先生,但是突然发现李先生还是另一家搜索引擎公司的老大所以还是称为李彦宏)说道“希望大家出手救救我们的民族IT产业,救救中国自己的搜索引擎吧!”唉,老牛说这句的话的时候我就觉得如此苍白无力如此滑稽可笑,真想老李也表演一次。
唉~想起一句话“天作孽尚可活,自作孽不可活!”送给彦宏。 November 09 Madagascar 2: Escape 2 Africa到加拿大1个多月了,第一次看电影,选择了一部容易看懂的动画片Madagascar,选择了Richmond最便宜的电影院,买了2张8.95$的票开看!电影院超大,不过座位很不爽,似乎是给小孩子设计的,靠背非常的矮。看完电影我的腰都酸掉了!于是决定下次去最好的电影院看IMAX,看圣诞大片。 特此纪念!
November 03 到Vancouver一月纪念不知不觉,到温哥华已经1个月了。那天在Richmond Automall看见天空一架飞机准备着陆,飞得很矮。当时看见非的尾部的标志感觉特别想Air China的飞机。不禁看看时间,上午11:00.那正是我们到达温哥华的时间。心中不禁感叹1个月前我们就乘坐这班航班来到了温哥华:) 工作还算顺利,不是很忙。老婆还经常给我做很多好吃的东西,前两天还做了可口的muffin!very yummy.我是幸福的。 今天去了Elisabeth Queen Park。离市中心很近的园林,看得出来这个园林是精心打造的,有很多种植物,五颜六色。竟然还有来自中国的bamboo。呵呵。 这两天当然还有一件高兴事,就是我们给自己买了俩汽车!Mazda3 GS,放张照片大家看看。新车还是非常爱惜啊~都不敢在上面吃东西,怕弄脏:) 来张背面! 满地的枫叶。 Queen Elisabeth Park: 这样的五颜六色真是随处可见。 远眺温哥华。不过天气不好~~ October 12 Days in VancouverSeptember 26 Goodbye Google, Goodbye Dear Friends!离别在即,心中百感交集。突然觉得我竟是一个如此多愁善感之人。即将离开工作了1年2个月的公司,也是世界上最最伟大的IT公司之一Google,我不知如何表达心中的这种惆怅。 思绪突然回到了2002年9月8日晚上23:00。那一天我背着满身的行李坐上了北上的K118次列车。背负着梦想和希望踏上了离乡之路,求学之路。回忆当初为何会选择北京去北航,不就是因为自己年轻应该像个勇士一样去战斗吗?于是我离开了家乡成都,离开了父母。满怀希望地来到了一个新的城市北京。 转眼间已经是2008年9月26日。整整6年过去了,回过来看看我走过的路,我不敢说我是一个绝对的成功者,但是我敢保证我绝不是一个失败者。这6年里,我学到了很多东西,我也多次做出了非常重要的将改变自己一身的决定,这些决定有对也有错,但我无怨无悔。首先,我选择了保研。后来我发现这是一个绝对错误的决定,于是再浪费了1年青春的时候,我做出了第二个重要的决定那就是放弃第一个决定。于是我坚决地退学了。于是我来到了Google。我对我的第二个决定感到非常的自豪,因为我相信不是任何人都有我这样的勇气去直面自己曾经错误的选择。事实证明,这次我太明智了。 如今,我又做出了第三个决定,我加入了Microsoft Canada Development Centre。10月1日我将举家离开北京,去一个全新的城市Vancouver。我不敢保证这是一个正确的决定,但我敢保证我会想一个勇士一样去拼搏奋斗。我还年轻,我什么都不怕! 其实这样的决定我损失了很多。我放弃了一个轻松而又very profitable的工作。我的老婆也放弃了她心爱的轻松的well paid的工作。我们共同放弃了年薪超过30万的北京,选择了加拿大。 Google绝对是一个伟大互联网公司。我相信在Google工作过的人都用同感。"Don't do evil"这句话绝对不是为了PR而是真正的指导着其中的每一个员工。我和我老婆都在Google工作。我们是快乐的,我们是幸福的。真的非常感谢Google和Googler给我的一切,因此我在exit survey的问题"Would you like to consider returning to Google in a few years?"里面答到,If I am lucky enough, why not return to Google.是的,我相信,如果我有一天再回国,我还想选择一家公司的话,我还会选择谷歌。 当然,今天的放弃是为了明天更多的拥有。我知道我的老婆心绪将比我更复杂,有更多的不舍,毕竟我过去可以直接去微软工作。我知道她为了我也放弃了许多,别的我不能说什么,我只想告诉我的老婆,我会尽我的全力让我们的明天更美好,我会尽我的全力去奋斗。 明天将是一个新的开始,我们将奔赴一个新的城市,一个全新的发展空间。我们无所畏惧,我们勇敢的向前冲!Good Luck everybody. 写在即将离开Google离开北京的日子 August 07 公交车司机被宝马车拦下追打,活该!刚看新闻,一个公交车司机由于夹逼了一辆宝马,宝马车加速拦截了公交车,并下来4个人猛打司机。我不但不同情公交车司机,我只想说,你TMD活该! 看看我们正在举办奥运会的首都北京吧。公交车横行霸道,仗着自己体积大,按着个大喇叭横冲直撞。好像别人都应该让他,这司机真还把公路当他家了吧。我真想说这些人素质怎么就这么低。 不久前,发生在我身上的事情,我骑着自行车,本来路就很窄,只有一个自行车道一个汽车道,我已经骑得够靠边了,结果那公交车竟然猛地冲上来,车头离我仅仅不到半米的地方才刹车,并且不断按着喇叭。我当时就愤怒了,转头横了司机一眼。结果他竟然故意加速超过我,然后把我逼向路边。当时路边的行人都惊呆了。我彻底愤怒了,一拳砸向车门,然后把自行车衡在他面前。大家都别走!这司机发现这么也不敢下车。看到这个症状加上又是下班时间,车里都是乘客,才软下来。后来我让他走了。不过我觉得如今的公交车司机就是素质低。北京尚犹如此,其他小地方就更不用说了。 因此,我真想说,你挨打真的活该,我都想揍你。打死你才解气。 June 30 转载一篇虎照事件中被处分的官员(关克)的博文。此文被新浪强行删除。请周正龙用年画虎还原周老虎 面对新闻发布会的结果,我原本打算保持沉默,但看完《关克接受记者专访吐露心声:我的热情超过了理智》的报道,我不得不打破沉默,因为我的意思被完全弄反了,我必须更正,立刻更正! 因为是老朋友,所以我答应在新闻发布会的前一天接受陈钢和杨一苗的独家专访,当时,我并不知道新闻发布会的任何内容。遗憾的是,这篇报道中“现在结果出来了,公安机关也找到了周正龙造假的证据,得出的合理解释我心服口服”的有关说法,却与我本人的真实想法完全相反。我的原意是:“如果公安机关找到了周正龙造假的铁证,得出充分合理的解释,我会欣然接受。” 我理解二位的好心,你们是真心想帮助我,所以在报道中处处为我的“过失”开脱。但或许是因为我语言表述上的误差,我的个别意思被完全弄反了,请原谅我对好心人这“反戈一击”,因为,我不能误导大量曾经支持我的网民,我必须负责任地向他们传递出我个人的真实想法。 周正龙独自用年画为道具造假——公安机关得出这样的结论,我直到现在仍然无法在技术上完全认同。对此,我有一篇技术分析文章,广大网友们还有大量比我水平更高内容更精彩的分析文章(附后)。 根据常规的办案原则,既然周正龙用年画造假,公安机关又拥有现成的造假道具,那么,就应该有责任和义务还原这个造假过程。 恳请有关办案人员让周正龙重返现场,用他当初的方法,拍摄出相当于周老虎水平的照片,哪怕只有一张!这样,也让众多在技术上长期坚持周老虎为真的网民们“心服口服”。 “让权力在阳光下行使”,我们幸运地赶上了一个好时代,可以在透明的阳光下充分享受表达个人言论和观点的自由,这种感觉,真好。 说实在,华南虎事件发展到今天,我曾经无数次反思过自己的言行,虽然在过程中颇有不尽如人意之处,但我却从未后悔过,将来也不会后悔! 岂能尽如人意,但求无愧于心。好像成龙先生说过这样的话吧。 在《是什么把真老虎变成了纸老虎》那篇博文里,我开宗明义地说过,我是为探寻真理而来。我从不自己当作什么“挺虎派”成员,这个意思在我早先有过明确的表述。对我来说,周老虎是真是假无所谓,我个人的荣辱得失无所谓,我最最在意的是——探寻事实真相。 如果一定要划分出什么派的话,我自己就算是“求真派”吧。 我随时都可以坦然接收周正龙“造假”的严酷现实,只要有足够的证据能够说服我。 我们绝不能放过任何造假者,但也绝对不能冤枉任何好人! 最后,我借用李舟先生博客中的一些文字作为收尾:“这次虎照事件的不断升级、扩大,难道主要不就是因为政府方面对网民和媒体的质疑、追问一再沉默或者回避吗?有人回应、有人表态,而且不打官腔,直面问题,即使因为官不大,解决不了舆论希望解决的问题,即使代表的仅仅是个人,也已经是对质疑者、对民意的极大的尊重了…… “如今,圆滑世故、明哲保身是官员的普遍特点,遇到事情互相推诿、逃避责任是官场中经常可以看到的现象,如果……以后有事需要负责的时候,谁还敢迎难而上,谁还敢公开表达个人的观点?谁还敢坚持自己认为是正确的事情? 而我的过错恰恰是“在社会关注过程中,开设个人博客,参与争论。” 在这一点上要我认错,很难! June 20 反转棋盘问题解答一个类似的问题我曾经用于面试一个intern.今天在csdn上看到这个问题于是想办法解决了一下。咋看之下问题还是比较复杂。首先假设M和N都是奇数。然后再简单的分析一下得到如下结论,
那么可以设第i列反转了ci次,第i行反转了ri次。例如:
那么,要使第1行的1的个数是偶数。则有: r1 + c1 + c2 + c3 = 1 (mod 2) 同理可得如下3个方程: r1 + c1 + c2 +c3 = 1 (mod 2) r2 + c1 + c2 + c3 = 0 (mod 2) r3 + c1 + c2 + c3 = 1 (mod 2) 根据列的1的个数是偶数。可得: c1 + r1 + r2 + r3 = 1 (mod 2) c2 + r1 + r2 + r3 = 0 (mod 2) c3 + r1 + r2 + r3 = 1 (mod 2) 另外ri, ci都是0或1.现在需要求解这个方程组的解使得r1+r2+r3+c1+c2+c3最小。这里就有很多方法了。这里不再详细写了。对于M,N不都是奇数的情况其实也是类似的,只是方程可能无解。 June 19 反转棋盘问题一个N*M大小的棋盘,每个格子都是0或者1。你每次可以选择反转一行或者一列,被反转的行或列的所有0变成1,所有1变成0。要求使用最少的反转次数,使得每行每列的1的个数是偶数。 输入格式:从键盘输入,第一行是两个正整数N和M,用空格隔开,都不超过20,都是奇数。接下来有N行,每行M个数,都为0或者1,表示棋盘上的数,数字用空格分隔。 输出格式:只有一个数字,表示最少的反转次数。如果不可能通过有限次反转使每行每列的1的个数是偶数,则输出-1。 [输入样例A] 3 3 1 1 1 0 1 1 0 0 1 [输出样例A] 2 [输入样例B] 5 3 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 [输出样例B] 3 June 13 Tricky C++ Object Model(3)#include <iostream> class B: public A{ int main() { Can you imagine the output? Conclusion: Polymorphism also works with pointer to virtual member functions. June 12 Tricky C++ Object Model (2)#include <iostream> class B: public A{ class C: public B{ int main() { Can you Imagine the output on a 32bit machine (int is 4bytes on 32bit machine)? Conclusion: don't abuse inheritance.
June 11 Tricky C++ Object Model#include <iostream>
using namespace std; class A {
public: int x; }; class B: public A{ public: virtual void f() {} int y; }; int main() { B b; A* p1 = &b; B* p2 = &b; if ((unsigned long)p1 == (unsigned long)p2) cout << "p1 equals p2\n"; else cout <<"p1 not equal p2\n"; } Can you imagine the output? |
|
|