| LingKai's profileRomance Dawn 冒险开始的地方PhotosBlogLists | Help |
|
25 June 无题快三年以前的事情了。那个时候组里只有我和一个老板,当时我report给他。
老板: "Lingkai, how are you doing?"
我: 啊,我做得怎么样?哎呀昨天我可干了很多活啊,可得好好说一说。。于是5分钟的satus report开始。。。。
每天早晨的status report于是持续了三个月,我心里琢磨着,这老板可真勤快,每天检查进度。直到一天有个新同事过来。
老板:"XXX, how are you doing?"
XXX: "Good, yourself?"
我:哦。。原来how are you doing是这个意思啊。。。。。。
第二天:
我:"Hey, how are you doing?"
老板:"Yesterday morning I had a partner meeting, ........ (5 minutes status report)" 25 May Talking about 婚纱照抢先看(非专业版)
Quote 婚纱照抢先看(非专业版) 13 May 挨踢也自强最近时常有这种想法,哪一天我或许会选择离开公司,去“为中华民族的崛起而编程”。
我经常问自己,我到底为了什么而工作?
我要做一个伟大的工程师,我要选择产业报国的路。我不要做一个牛人,但我要做一个可以帮助别人的人,做一个可以传播热情的人。
祖国的崛起,不能只靠说,更要靠实干。
或许每天上班说个小英语,天天开个小会,聊个小天,帮老美编个小程修个小bug做个小工具,偶尔还开开日本小破车,顺便做个小房奴的我,根本没有资格说这些
或许身在职场,做事不应该有太多的民族情结
或许立身于社会,每个人都不得不面对赤裸裸的现实
但活在世上要堂堂正正,潇潇洒洒,我们是中国人,我们不只是为了帮老美赚钱而奋斗,不只是为了爬职业阶梯而奋斗。IT也要自强不息,也要产业报国。 29 February 2月29日某种意义上说,今天是个特殊的日子。凡是今天购买windows home server的用户,都无法安装。只要过了今天,问题自动消除。
原因是安装的时候暂存了一个日期,设计时是为了避开license的问题,所以设在安装日期的两年以前。
2006年是没有2月29日的。
所以今天HP(我们OEM)的电话被打爆了。
29 January [技术帖]随便写点什么吧 1承认我是比较无聊。。。。
开个头吧
一个被人鄙视的小问题 -- C#中,如何判断字符串是空字符串呢。。。。?
string.IsNullOrEmpty?
string.Compare / string.CompareTo ?
string.Equals / string == "" ?
各有什么区别?
================================================================================
以下是CLR中的实现
public static int CompareTo(string s1, string s2)
{ return System.Globalization.CultureInfo.CurrentCulture.CompareInfo.Compare(s1, s2, System.Globalization.CompareOptions.None); } public static bool IsNullOrEmpty(string value)
{ if (value != null) { return (value.Length == 0); } return true; } [ReliabilityContract(Consistency.WillNotCorruptState, Cer.MayFail)] private static unsafe bool EqualsHelper(string strA, string strB) { int length = strA.Length; if (length != strB.Length) { return false; } fixed (char* str = strA)
{ char* chPtr = str; fixed (char* str2 = strB) { char* chPtr2 = str2; char* chPtr3 = chPtr; char* chPtr4 = chPtr2; while (length >= 10) { if ((((*(((int*)chPtr3)) != *(((int*)chPtr4))) || (*(((int*)(chPtr3 + 2))) != *(((int*)(chPtr4 + 2))))) || ((*(((int*)(chPtr3 + 4))) != *(((int*)(chPtr4 + 4)))) || (*(((int*)(chPtr3 + 6))) != *(((int*)(chPtr4 + 6)))))) || (*(((int*)(chPtr3 + 8))) != *(((int*)(chPtr4 + 8))))) { break; } chPtr3 += 10; chPtr4 += 10; length -= 10; } while (length > 0) { if (*(((int*)chPtr3)) != *(((int*)chPtr4))) { break; } chPtr3 += 2; chPtr4 += 2; length -= 2; } return (length <= 0); } } } ====================================================================
IsNullOrEmpty是最直接的
==相当于调用重载了的Equals, 对于string来说是Equals(string)。从上面reflection出来的片断可以理解成以10字节为一大步,2字节为一小步的比较。(为什么这个组合performance最好?)
最本质的区别在于,CompareTo是culture sensitive的。它会根据当前的culture info,对字符串中的字符取权值,然后计算比较。(非顺序比较) 26 December Issue Owner V.S. Code Writer曾经我的一个老师告诉我,try not to be an issue owner but a code writer。当时刚工作也没什么想法,觉得是自然而然就好了,每天开开心心的写code, 做技术的没有这种烦恼。但实际上我现在有点明白这句话的意思了。随着经验的积累,有些领域的新鲜感已经消失,更多的时间变成开始处理issue,也就不知不觉地必须面对如此的抉择。
对于自身发展来说,去drive和own issue有点小作用,但是做得太多太重复并没有好处。但是对于career, issue干掉得越多,一般来说performance就越好,往leadership发展的可能性就越大。光写code不own issue可能没有promotion, 而光own issue不写code,过了若干年可能再也无法和刚毕业的学生们一起比了。之所以说程序员是青春饭,并不是因为技术更新太快,而是有经验的人都要去处理事情了,自然catch up技术的机会就少了。。。。也就是所谓的“程序员的未来就是剥削程序员”吧。。。。
很多Issue都是存在公司粘性的,换句话说,在别的地方就失去了竞争力。五年以后,我希望自己成为怎样的人呢?执著于表面的光鲜有时会让人迷失内心的渴望,我想我更喜欢是做成伟大的产品,让自己写的东西使用在无数人的生活中。
似乎有点跑题了。我面临着很多类似标题的选择,其实本没有对和错。顺其自然就行了,珍惜已经有的,追求自己想要的,大不了回到原点重来。
P.S - 准备讨论一些技术专题。。。虽然我自己学得也很浅,但是也随手写点吧。。
27 June 起点虽然说每一步都是一个新的起点,但是每次想到那个出发的地方都非常的感慨。从那个不眠的寒假开始走过来也有段时间了,很多事情都已经不一样了。命运的车轮在不停的前进,就如同软件和互联网工业的发展一样。
Windows Live给我们带来了什么?每次想到这个问题,我自己都比较无语。前些时候有朋友问我为什么hotmail的邮箱总收到垃圾邮件,我开玩笑的说你去用gmail吧。。。其实我也有三分之一是认真的。今天闲聊的时候有和朋友说起,Live弄了一个大杂烩的融合,但是完全没有个性化,创新也严重不足,跟着人家屁股后面做,真的就catch up了吗?
每个公司都不一样。比如google,虽然严格的说它是个广告公司而不是IT公司,但是它在创意上做得的确让微软无话可说。又比如苹果的客户体验,再想想SAP。。。短短几年以后,或许整个行业的乱世就快来了。
十年以后,我们会用计算机和互联网(如果那个时候还这么叫的话)干什么呢?
十年以后,我们想到自己当初的起点,又做何感想呢? 11 June 思考:中国的程序员本来对这个话题是有很多想法的,可是真的想写下来却发现难以表述清楚。两年以前我只是单纯到不能再单纯的想要干活,现在想想,自己也没改变多少。在世界各地满街上走的都是中国的工程师,茫茫人海,我们只是其中一小部分而已。
每个人都有自己的目标。但老板们的目标大致都是一样的---他们想赢。所以大家都把技术部门研发部门往中国搬,往印度搬,人工便宜啊!在美国一个软件工程师的底薪和做associate差不多甚至还高些,于是老板们就开始变相外包开发来降低成本。于是我们做的事情大都从靠外围开始,写test,写界面,写内部工具,这是再正常不过的了。要降低成本,还要控制风险。我们作不了core的另一个原因就是技术不够,沉溺于技术漩涡几十年的工程师咱不是没有,只是在浮躁的大环境下人人都想创业想靠idea来钱,没有人去把真正有理想抱负的技术专家们撮在一起搞项目。
在公司做事要么就很无聊,要不就很辛苦(废话)。不过无论是哪一种,在8小时的个人时间里,take some time for yourself,
AS A CHINESE DEVELOPER. 26 May 思考:未来1. Web
随便写写,看得不爽的地方就请跳过,只是一片技术方面的个人观点
从技术的角度看,Web是一个大杂烩。由于处于底层的协议是增量式的,但是顶层的浏览器表层各有不同,因此和互联网有关的大多数技术其实是在揉泥巴。感觉是中间的代码比较干净,靠着浏览器这边的和非常接近server的代码就时不时用一些work around和trick了。你永远可以控制自己写的逻辑部分,但是browser那里你是站在javascript的抽象上,server这里你是站在各种Web开发平台上(如jsp, asp.net),面对的是两方面的抽象。如果不深入了解抽象本身背后所做的事情,这个泥团就越挫越大了。关于Web上的测试,实际上是很困难的工作,尤其是自动化测试。后台还好点,在browser上模拟行为还是需要好好想一想的。
可能这个说法不对,但我认为实际上Web 2.0在技术上根本不存在。所谓的2.0的技术(如AJAX),很多都是炒炒旧货。技术每分钟都在进步,但长久以来,并没有一个实质上的飞跃。放眼望去,只要世界上出现什么比较酷的网站,若干时间后必然被copy到中国来。要说传统软件,别说1,2个月了,两年都未必行。实际上,Web 2.0是什么呢?就是一类idea, 是一种商业元素而已。
有一个比喻,说原始的Web是人玩机器,Web1.0是机器玩机器,Web2.0是人玩人。不过技术上的局限并不阻碍商业上的发展。BLOG的火爆满足了人的两个欲望:暴露欲和偷窥欲。我也相信,Web所能带给我们的远远超过今天有的。但是,要自己创业的话,我觉得很重要的一点:一味模仿是没有出路的。为什么呢?因为技术门槛太低,竞争者太多。
谈到Web,最需要的是Innovation。因为Web和软件行业不同,在web上,用户是先入为主的。技术门槛低的结果是大家都去做,蛋糕人人分,先到的先吃完。简单的说,为什么大家说到搜索就想到google,除了微软员工很少有人用Live Search,就是因为用户习惯了。微软有一点一直做的很赞,就是catch up。它开始可能不是第一名,但是它有钱能烧得超过你。XBOX360什么的例子已经说滥了,就不重复了。可是微软在Web应用上,我是指出了平台以后的应用,实在是不敢恭维,并不是技术上的问题,而是没有innovation,没有非常领先眼光的idea。微软强就强在平台上,实际上这是无法替代的优势,也是无法替代的风险。任何的改动都要考虑到平台上用户的影响,对于互联网这种快吃慢的竞争往往会不适应。IT方面,烧钱是烧不出什么的,除非能烧出idea,否则结果肯定很悲惨。
软件的未来就是在线服务?或许也不完全是。。 15 May In Redmond1. 15 hours * 6
2. home sick, missing pxh
3. seattle is sooooo beautiful, but I have no time to even check it out 06 March getRandomNumberint getRandomNumber()
{
return 4; // chosen by fair dice roll, guaranteed to be random
} 29 January It's not the time to be sad曾经躺在草坪上看着星空做着美梦,转眼间一切都已经物似人非
走在校园里熟悉而又陌生,已经找不到属于自己的落脚点
校园的色彩逐渐从身上褪去的同时,属于自己的热情或许也在逐渐消退?
只是,仰望的,还是同一片天空 04 January 感谢2006主要事件
1. 开始新的实习
2. 感情起起落落但终于走向平稳
3. 毕业
4. 正式工作
5. 出去转了一圈
要感谢的人
1. 爸妈,胖小黑
2. Jackson, 小真,丁丁,白白,玉米,mimitou, 大熊,大头,sao,瞧那和,马考。。。太多了。。
3. alley学长
4. 同事们 :)
2006其实是我过得最开心也最充实的一年
28 December Partial amazing (zz)Did you know in 2.0 both C# and VB use the partial keyword to indicate a class definition will be spread across multiple declarations?
Don’t they always use different keywords?
How did this happen?
To: Team
From: Team Leader
Date: T – 3 days
Subject: Partial
Dear Team,
Yesterday, that ‘other’ language team decided to use partial as a keyword in their language. We need the same feature, but you know we try to avoid sharing keywords with that ‘other’ anguage. We have about 3 days to think something up. Email me your suggestions.
To: Team
From: Team Leader
Date: T – 2 days
Subject: Re: Partial
Dear Team,
I’ve seen no suggestions yet. You people better put on your brainstorming caps before we have the marketing team come in.
To: Team
From: Team Leader
Date: T – 1 days
Subject: Re: Partial
Dear Team,
So far we’ve come up with: “Incomplete”, “Fractional”, “Limited”, and “Unfinished”. Of these four only “Fractional” has a fighting chance. The others look insulting in code. I think you people are just using the Word thesaurus or something. Get with it!
To: Team
From: Team Leader
Date: T
Subject: Re: Partial
Dear Team,
I’m sorry to say we are going to be using partial as a keyword in our language, too. I feel we missed an opportunity to
differentiate ourselves, and I hope we never miss another opportunity like this one again.
Tim: Your idea about “HalfAss Class” was good, but it didn’t get by legal.
Thanks for the effort. 30 October Hello Seattle下飞机的时候发现阳光明媚,小惊讶了一下。。因为听说西雅图的雨季每天都下雨。
倒时差,观光,超市买吃的,拿房间钥匙。。早上睡到10点多才醒。
准备去公司干活了。。。 |
|
|