年前年后这几天

过年对于我们大人来说似乎越来越没意思,除了能多些时间陪陪家人之外,用萌萌的话说简直就是索然无味。

腊月二十四从娘家回来后因为身心疲惫,足足在床上躺了两天,跟本没有精神去办什么年货,两个人甚至连双新袜子都没买。幸亏宝宝有爷爷奶奶照看,俺们也是

照例回沟里过年。如果说没有年货好像还有点儿冤枉了,福字倒是买了几个,呵呵。

虽没办什么年货,卫生还是打扫了一下的。先是大洗一通,把衣物床单被罩之类都清洗干净;然后把所有房间的灯具都擦拭干净

,还把坏掉的灯泡给换了;第三是把浴室彻底刷洗一遍,算是做到亮亮堂堂过大年吧。前两个活帅哥都起了很大作用,洗衣机由他搬进去,拆卸灯具也全是他的功劳,之前我总说人家不做家务,其实是大大地冤枉了,人家一年到头地负责刷碗,我咋给忘了呢,人家经常往家里办置生活用品我咋给忽略了,人家偶尔还会主动洗衣服扫地……

初一帅哥大舅全家到沟里串门儿,我们着实热闹也辛苦了一番,初二本来帅哥奶奶家亲戚搞家庭聚会,我因为娘家的特殊情况没有参加,急匆匆赶回去帮妈妈招待初三的大批客人,大厨的名声也因此传将出去。可惜因为妈妈的不信任和唠叨俺一走神儿割破了手指,幸亏伤口不是很深,今天已经没有那么红肿了。初四到长辈们家里拜年一上午(正规行礼那种)下午简单招待小姨后跟妹妹送其回家,跟一老同学仓促见面后,大晚上地搭朋友的顺风车赶回大连,因为没有吃好睡好加上紧张劳累,在车上有些恶心想吐呢。

实在折腾瘦了,今早称一下只剩94斤,一冬天不但没长肉反倒掉了五六斤,唉!初五幺幺睡了一天,才觉得缓过来一些。今儿阳光明媚,俩人儿高高兴兴去沟里陪老人孩子直到晚上才回来,想想很久没记账了,在帅哥的撺掇下,草草写几句,明儿还要回沟里包饺子,因为是小孩儿的日子,呵呵,年说过去就过去了,除了折腾就是折腾,难怪妈妈总说过年最没意思,唉。

之前听同事说好像初八上班,到现在没消息简直太好了,希望能按照原计划二月中旬开工吧,!!!

互联网上一切皆有可能

十年前,ICQ是国际上最流行最火爆的IM(即时消息)客户端,没人能想到不到10年它就衰败了。

十年前,最火爆的电脑软件公司是微软,微软一出谁与争锋。而现在,apple和google的一言一行都会引人注意,他们的CEO要么年轻(佩奇)要么有着明星般的气质(乔布斯),他们的粉丝给apple公司和google建立专题博客,甚至一点点小变化都可以成为焦点。而微软,虽然盖茨大叔也经常被人拿来嘲笑,可是到了巴尔默,好像只剩下傻乎乎的推销员热情,微软完全成了小丑,微软的新闻基本上跟官司或者负面联系到一起。

十年前,没人想到网络游戏把单机游戏打得如此之惨,所有的游戏公司都在往网络发展,已经很久没有听说过单机游戏大作了。暗黑破坏神3,等它出来估计网络功能要远远超过单机玩了。

五年前,没人想到一个输入法会重新因为网络而又火爆起来,搜狐、谷歌、腾讯,谁都在开发自己的输入法,功能都很雷同,目的都是重新抢占用户的桌面,由桌面从而勾引到网络。

十年前,腾讯刚刚起步,还叫oicq,百度还未产生,现在他们已经是中国互联网的大哥大,而当时牛逼的国外公司,现在已经有不少已经倒掉,Yahoo甚至求着别人收购自己。

五年前,互联网上免费邮箱越来越小,收费电子信箱好像成了主流,收费成了大众的呼声,而google的gmail一出,大家都歇菜了,263以及大批数字域名邮箱都在五年后销声匿迹,免费的gmail甚至打败了不可一世的hotmail,微软在互联网上又败了一阵。

五年前,ebay中国(又叫易趣)跟阿里巴巴的淘宝战在一起,没人能预料到阿里巴巴胜利了,而且竟然还吃掉了yahoo中国。地头蛇又一次战胜了过江猛龙。(百度算第一次,腾讯战胜msn、icq算一次)

五年前,没人知道ipod会带领apple建立一个庞大的媒体帝国,成为事实上的标准,而现在,有谁知道微软也推出了zune来对抗苹果?甚至在微软经营多年的智能手机领域,苹果和google的纷纷出手,把微软这个老师傅打得是两眼乌青,最炫的是iphone或者gphone,而windows mobile,那是山寨机的最爱,档次高下立辨。微软又输一阵。

五年前,微软雄心勃勃要用Vista来占领用户的桌面,继承windows Xp的优良传统,而现如今,windows xp的退休年龄不断延迟,而新一代的windows7也开始出头,vista注定要跟windows me一样昙花一现。甚至windows7,也未必能挽回微软的颓势。

为什么呢?互联网上一切皆有可能,apple和google都在推出自己的浏览器,加上google的app还有苹果的me.com,谁还需要windows呢?

对于一个传统行业,互联网应用是否就不那么重要呢?未必。除了一些特殊要求实时性和安全的行业,B/S系统(浏览器服务器体系)或者RIA系统(丰富界面互联网应用)有着一些优良的特性,一个是不需要客户端配置或者应用下载,只要服务器更新就可以。另外现在互联网开发的应用方法已经非常成熟,可以根据不同需求选择多种开发方法。设想一下,新的开发体系可能是服务器+简单桌面程序+浏览器+手机终端或pc终端。配置一个硬件只需要使用浏览器即可。当然一些复杂应用还是可以使用桌面开发,但是已经不需要使用原来笨重的设计方法了。

一切皆有可能,网络上,新的传奇一直在发生。

如何得到Windows系统的高精度计时

可以看这篇http://en.wikipedia.org/wiki/Time_Stamp_Counter

文章里有个简单的代码,如下:

1)calling  ticks getticks(void);

2)calling double elapsed(ticks t1, ticks t0);

#if _MSC_VER >= 1200 && _M_IX86 >= 500 && !defined(HAVE_TICK_COUNTER)
#include <windows.h>
typedef LARGE_INTEGER ticks;
#define RDTSC __asm __emit 0fh __asm __emit 031h /* hack for VC++ 5.0 */
static __inline ticks getticks(void)
{
ticks retval;
__asm {
RDTSC
mov retval.HighPart, edx
mov retval.LowPart, eax
}
return retval;
}

static __inline double elapsed(ticks t1, ticks t0)
{
return (double)t1.QuadPart – (double)t0.QuadPart;
}

如果是64位

#if defined(_MSC_VER) && defined(_M_IA64) && !defined(HAVE_TICK_COUNTER)
typedef unsigned __int64 ticks;

#  ifdef __cplusplus
extern “C”
#  endif
ticks __getReg(int whichReg);
#pragma intrinsic(__getReg)
static __inline ticks getticks(void)
{
volatile ticks temp;
temp = __getReg(3116);
return temp;
}

在64位机器上的代码有些难懂,简单查了一下,可以看出来如下,intrinsic在这里有介绍

http://msdn.microsoft.com/en-us/library/tzkfha43(VS.80).aspx

http://msdn.microsoft.com/en-us/library/sctyh01s(VS.80).aspx

http://msdn.microsoft.com/en-us/library/26td21ds(VS.80).aspx

好像是说要把函数调用改成内联,来提高速度。对于可以内联的函数,msdn上有列表,基本上都是CRT函数,不是每个函数都可以调用这个预定义的。

__getReg将会得到寄存器的值。这个命令必须先使用intrinsic(msdn里提到的)。

http://msdn.microsoft.com/en-us/library/kcb3wece(VS.80).aspx

3116,是INL_REGID_APITC寄存器。这段代码应该是由intel自己的developer发出来的,在这里有个文档。

http://www.securitytechnet.com/resource/rsc-center/presentation/intel/spring2002/DESL187.pdf

这篇文章http://msdn.microsoft.com/en-us/library/bb173458.aspx介绍了windows下编程高精度时间需要考虑的一些问题,值得一读。

计算机编程新人入行指导番外篇

前面介绍了一个计算机开发人员如何很好的参与到一个新的项目组里,这一篇想讲讲其它的一些方面,相对来说零散一些,故作为番外篇出现。

进入公司,一般会分给你一个公司邮箱作为业务交流使用,这里推荐大家再申请一个google的账号http://mail.google.com/mail/signup,这个账号可以使用google所有的服务,包括google的信箱系统gmail,日历系统Google Calendar,新闻组google groups,在线文档google docs,博客系统google blogger。

gmail可以作为个人使用的一个信箱,足够大而且功能很全面。calendar日历系统可以管理自己的日程安排,还有短信支持;通过新闻组可以参加一些技术方面的讨论,比如我喜欢的toplanguage,相对论坛来说,噪音更少一些,另外python-cn的group也是经常去看的。大家还可以使用docs保存一些技术文档或者写写心得体会,甚至可以用来记账。google blogger是一个最为开放的免费blogger hosting系统,大家可以在上面写写自己的技术感想或者是生活日记,也可以借此来展现自己的技术水平和文学才华:)。

另外,可以注册一个delicious.com的账号(好像现在是跟yahoo账号合并了吧),这是我常用的一个收集网站的工具,相比浏览器的书签,它可以保存的更长久,不会因为重装系统就丢失了自己喜欢的网站。一般常用的做法是firefox浏览器加上delicious.com的浏览器插件,看到有意思的网站,点一下toolbar按钮就收藏起来了,方便得很。

谈到软件,需要着重介绍一下,大家可以先安装google的软件包,这里面包含了谷歌拼音、谷歌金山词霸、瑞星杀毒软件谷歌合作版(完全免费、全功能),用于 IE 的 Google 工具栏,还有谷歌桌面搜索,这些都推荐大家安装,实用价值很高而且都是免费的。

作为程序员,必须有一款常用的文本编辑器,对于windows程序员我推荐开源免费的notepad++,功能很强大。另外必须安装的是免费的winmerge,每次进行代码check in、check out,都需要比较代码变化,或者是进行code review的时候,一个好的merge工具能节省很多力气。其它的比如office或者visual studio什么的都是必要软件就不多说了。

安装好这些软件,参加完公司的入职仪式,就是一个正儿八经的软件开发工程师了,这里再简单说一下平时要注意的一些事情。

作为开发人员,经常会跟外面的客户打交道,或者是有些外企可能要跟国外同事进行邮件交流,那么如何更好的使用邮件呢?

假设这样一个情景,在defect系统中,你被分配到一个bug,里面介绍了不少的步骤,你照着做完以后,却没有得到同样的错误结果,软件跑的很正常,该怎么办?不知道有没有人会直接发个邮件给客户,“我试了,软件是好用的,你这个问题没法重现”,估计客户不投诉你都是不正常的。首先确定自己的环境设定是正确的,软件版本跟问题描述的是一样的,因为不同的版本可能导致不同的结果,也可以让测试人员帮忙重现这个问题,或者自己在一个干净的虚拟机里面进行重现,因为开发人员的桌面机里面通常是不同版本混在一起,系统不是很干净,有空的时候,安装一个windows系统的虚拟机,然后压缩备用,将来使用的时候解压就好了。假如这些步骤都做了,还是没法重现,那就真是应该跟客户沟通了,注意在邮件里把自己重现的步骤、一些实验结果、相关一些软件规范粘贴进去,这样客户或者同事可以知道哪个步骤可能跟他做的不一样,另外一些不同的注册表配置、杀毒软件防火墙设置、软件参数配置都可能导致重现结果的不一样,这都是要注意的。反复几次基本上都可以找到问题的真正原因了。

总而言之,就跟我在“入行指导”一文里提到的,跟客户或者同事交流的前提是要有诚意,也就是你真的做了一定的努力和研究,这就是所谓的“态度决定一切”,不要一遇到问题,立刻就发问或者写邮件。

个人感觉(也许不对),不要在跟同事交流的时候总是张口就来“我想xx、我还以为xx、我寻思xx”这样很主观的论断,哪怕是书上写的结论,也应该验证一下或者思考一下,任何一个结论,没有事实支持都是沙滩上的城堡罢了。另外作为一个新人,这些动手过程也可以帮助自己更好的学习新知识和理解问题。如果总是这么不假思索张口就说,可能给人比较肤浅的感觉。

除了一般工作之外,平时应该尽量多看一些相关的书籍充实自己,如何选择一本好书是个大题目,以后有机会再写。这里有一个简单的办法,可在douban上搜索一下打分和评论,看看其他读者怎么说的,如果是影印版可以看看amazon.com的评分,这个就更客观了。另外不要买新书,因为新书在一开始可能会有一些书托吹捧,可以过一段时间看看。

一个新人进入公司的头几个月会感觉到非常疲劳,这其实是正常的,任何一个人到了一个新的环境,都会感觉到紧张不适应,过一段时间就会好起来。也许会有一些心理挫折感,比如因为关系不熟悉或者业务不熟悉,平时同事讨论插不上话,只能看着。这其实是正常的,经过努力都是可以转变的。一个好的公司在新人入职以后,都会指定一个老同事作为指导,平时应该多跟老同事交流,哪怕说的不太靠谱,也不要担心大家笑话,因为每个人都是从这个阶段过来的。只要努力,一定会逐渐融入团队当中。

总结一下,进入软件开发这个行业,一定要多跟团队其他同事交流、多学习、多思考、少说多做,有了这些努力,新人应该很快就可以在开发团队里如鱼得水融洽工作了。