最节省时间的方法——学习(转帖)
Posted by Kai on November 9th, 2008
我要省钱
Posted by Kai on November 2nd, 2008
上个月日常花费超出预算50%,主要预算外花费在一个PX200耳机和两双鞋子两件衣服。
这个月要控制在1200内。到现在还是负债状态,信用卡要还到明年了。

可是想买的东西总还是那么多。
先立下目标,过年的时候给老爸换个好手机,3月份之前把信用卡还完。
Posted in personal | No Comments »
买了两本书
Posted by Kai on October 24th, 2008
上周五在卓越买了两本书,一本是《小猪虾米夫妻日记》,一本是《大便书》。
小猪虾米日记,看看就很羡慕。不说了。

大 便书,挺有意思的,看到一个很有趣的观点,解释了为什么我每次在图书馆呆了没多久就会想便便的问题。因为树木为了获得更多的养分,在进化中获得了一种能 力,它们会释放一种化学物质在空气中,在树木附近的动物闻到了会促进排泄。因为书本是树木制造的,所以也具有释放这种化学物质的能力,在图书馆里这种化学 物质的浓度会比较高。
这也解释了为什么有人便便的时候或者喜欢拿着本书,或者看报纸,有人干脆在厕所的水箱上放几本书,以备不时之需。

Posted in personal | No Comments »
传说中的酒吧
Posted by Kai on October 12th, 2008
周五,晚,20:30,田子坊,公社,我进去过的第一个酒吧,还是蛮有新鲜感的。
露天的小四合院,一席人围着坐,大部分人选择啤酒,女士和小部分男士选择果汁。啤酒是小瓶装,直接用瓶子喝,味道和普通的啤酒一样,苦的。
店不大,我们人多,差点连凳子都不够用。
Posted in Uncategorized | No Comments »
低字节的高位和高字节的低位是不是连续的
Posted by Kai on October 9th, 2008
我今天才明白字节中的位的顺序,低位的地址在高位前面。这个看起来很容易的结论,我混淆了很久。
因为我们平时的微操作中,右移是变大,左移是变小,并且在用十六进制或者二进制表示一个数字的时候,都是高位在左边,低位在右边,所以我一直以为在一个字节里面,最低地址的位,是低7位,最高的是0.
比 如一个字节的大小是1,那么我以前的理解是在这个字节里面位的排列是(p)00000001(p+1)00000000,与二进制表示方法 B00000001一样。因为我平时画内存模型的时候,都是左边用小地址,右边是大地址,比如一个数组,4个元素,我会用||p|| p+1||p+2||p+3||。
今天看了一个MSDN上关于DTX5的编码格式的说明,里面提到了一个block里面的alpha数据的保存,
| Byte | Alpha |
|---|---|
| 0 | Alpha_0 |
| 1 | Alpha_1 |
| 2 | [0][2] (2 MSBs), [0][1], [0][0] |
| 3 | [1][1] (1 MSB), [1][0], [0][3], [0][2] (1 LSB) |
| 4 | [1][3], [1][2], [1][1] (2 LSBs) |
| 5 | [2][2] (2 MSBs), [2][1], [2][0] |
| 6 | [3][1] (1 MSB), [3][0], [2][3], [2][2] (1 LSB) |
| 7 | [3][3], [3][2], [3][1] (2 LSBs) |
顿时很奇怪,因为按照第[0][2]个像素的alpha数据有两个位是在第2个字节的高位,有1个位是在第3个字节的最低位。但是如果高位在左边的话,这两个存储就不是连续的。
为了确定高位到底是在哪边,于是我做了1个实验。
unsigned char B[2];
B[0] = (unsigned char)(0×80);
B[1] = (unsigned char)(0×01);
unsigned short S = *((unsigned short*)(B));
cout<<S<<endl;
低字节是B1000 0000, 高字节是B0000 0001, 合成的双字节如果是B0000 0001 1000 000那就说明低字节的高位和高字节的低位是连续的, 否则,如果合成的双字节是B0000 0001 0000 0001就表示不是连续的。
结果表明,低字节的高位和高字节的低位是连续的。
好像我自己说着说着有点乱了。。。。
Posted in Uncategorized | No Comments »
一个调试的小方法
Posted by Kai on October 9th, 2008
我有一个程序,是非控台程序,我需要看到程序运行过程中的一些变量的值,但是我不想用断点停下程序。因为程序是有窗口的不断运行的,所以我需要在程序运行过程中看到某些变量的值,根据看到的结果我可以做出一些操作,之后再看到结果。
今天碰巧想到了一个小方法,用起来还挺方便。实践了一下,也不麻烦。
首先,在代码里面,把要监视的数据用文件流输出到一个文件,比如watch.txt。
第二,写一个相应的bash脚本,不停的检测watch.txt的大小有没有改变,如果有改变,输出watch.txt的最后几行,行数看需要。
这个bash脚本很容易,寥寥几行。
PRE=”"
NOW=”"
FILE=”output.txt”
NO=0
echo “Watch $FILE”
while [[ 1 ]];
do
PRE=$NOW
NOW=`stat $FILE | grep -i size`
if [[ "$PRE" != "$NOW" ]];
then
clear
echo ——————- $NO ——————–
cat $FILE
let NO=$NO+1
echo
else
sleep 0.2#停顿一会,避免繁忙等待占用过多的cpu资源
fi
done
实验了一下,效果非常的好,就仿佛在运行中把visual studio的watch窗口拿出来一样,这样我可以同时在桌面上显示调试程序的窗口和cygwin shell窗口,用鼠标操作调试程序,同时看到某些变量的值的变化。
不一定用bash,用python,perl等等其他脚本语言也能做到,而且还可以做的更加强大。我用bash只是因为bash在linux上是比较通用的脚本语言。
Posted in tech | No Comments »
逛女仆咖啡店
Posted by Kai on September 27th, 2008
今天下午去了位于浦东的萌果酱女仆咖啡店,由于是第一次去,感觉还是不错的说。
一进门就是4个女仆鞠躬用日语说,欢迎回来,主人。
今天里面人很少,所以女仆们显然很闲。咖啡品种还挺多,除了咖啡还有奶茶啤酒之类的东西,不过好像只有饮品。我点了一杯拿铁咖啡,味道一般,可能因为隔壁有店在装修,香味不是很浓。
女仆们还是蛮可爱的,因为没有主人,都好寂寞的聊聊天。大概过了半小时,有个女仆拿来一张单子,说是店里的娱乐项目。我看到有下棋,打PSP等等,女仆陪伴的活动,收费按时间,10块5分钟。考虑到我是和舍妹一起去的,不适合在这种时候消遣,于是就没有尝试。
门厅的女仆会随着音乐互相打闹,灰常的口爱。我则时不时的盯着绝对临域看,哇卡卡卡。我发现从正面看绝对临域是件相当邪恶的事情,目光会不自然的往上飘~
离开的时候,门口的女仆会站整齐一起鞠躬用日语说,(!@#¥#¥……没听懂)。
Posted in personal | No Comments »
工作2个月的感觉
Posted by Kai on August 31st, 2008
开始工作到现在,正好是两个月。这两个月,也是我名义上的试用期。我觉得作为我职业生涯的起点,有必要总结一下。
工 作最大的感觉是需要涉及很多东西,也许是manager为了让我更加熟悉整个系统,我做了很多事情,从editor到client到server,乃至于 configuration management我都做过一点东西。涉及的编程语言一开始是python,后来是C++,接着是C#,bash,然后竟然也用到了一点php和 javascript。有部分是在windows上做的,有部分是在linux上做的(bash也只能在linux/unix上运行吧)。几乎每个星期都 要接触很多新的东西,上班第一天就是建立server平台,是一堆linux操作,我当时连什么是ssh都不知道,就照着说明一步步敲命令,其中有一步让 我ssh到本机,我就纳闷了半天,因为不知道改用哪个命令执行SSH操作,后来buddy过来说就是用ssh这个命令。
首先简要的说说我这两个月做了什么。
第一个真正意义上的需要编程的任务是用python。现实情况是我不会python。于是一边参照语法书,一般读已有的代码。好在我毕业之前大四下闲着没事看了些perl的书,对动态语言有点概念,所以上手python还不是很痛苦。第一个任务很简单,按时完成。
第 二个任务是python程序的一个bug,但是这个程序是python和C++两个语言合作完成,我先花了一天时间看SWIG,大概明白python怎么 可以掉C++的函数。然后学会用pdb在python里面跟代码。跟到那个bug发现竟然问题处在c++里面,int传给了short的构造函数导致精度 丢失。记得那是工作第二周周五的晚上,能找到那个bug我非常的开心,因为美术那里受这个bug困扰的很严重,我解决了他们的问题。
第 三个任务是我做的第一个investegate性的任务,我需要阅读已有代码,明白里面一个子系统是如何工作的。刚接到这个任务感觉没底,因为没有人看过 那段代码,我是第一个去investegate的人。那段代码是server端的代码,看得有些费劲,消耗时间比预估的多一天。做出来后很有成就感。
接下来的任务遇到与之前遇到的精度丢失类似的bug,牵扯到client和server端的很多函数,花了不少时间和同事交流,最后决定不去修改代码,人为限定不用那么大的数字。
目前遇到的最有数学含量的任务莫过于做一个B样条笔刷了,我参照大学里面图形学的教材,写了一个B样条计算类。那个任务完成的颇为满意,因为最终效果很明显。
在那之后我被分配到了另一个组,先是用C#修改一个工具的bug,给那个工具添加新的特性。然后用bash写一个批处理脚本,bash真不好用!
Manager(我 有很多manager!)说如果有个网页,而不是让用户ssh到linux上就能实现调用bash脚本做到的事情,那该多酷啊。于是我上周就做了一个网 页。对linux不熟,安装apache和php就用了一天,第二天用简单的php把功能实现,因为linux下web user的帐户权限问题困扰了半天,最后终于似懂非懂的找到一个解决方法。第三天用了一个ajax的函数实现了异步刷新,对javascript及其陌 生,其中遇到了很多问题,比如IE的cache导致刷新失效,javacript和php直接如何交互等等,最后总算勉强的实现了我需要的效果,就是让网 页像SSH界面一样能够实时显示当前bash脚本的输出结果。然而网页做的奇丑无比(真的像SSH一样,只有白底黑字),我自己都无法原谅,所以这个周末 去美罗城买了一本Head First HTML with CSS & XHTML来充电。
这两个月过程给我的最大的感觉就 是,不论任务是什么,使用的语言是什么,最重要的是做一个professional 的软件工程师。那就是对问题的了解要清晰,不仅仅满足于完成任务,如果发生错误,也要知道为什么会发生那样的错误。对于多种语言,其实很多同事都是边用边 学的,lua,python,bash,C#等等,大部分人在学校里面不会学这么多,都是工作后需要用才去学的。保持严谨的态度和求知的热情很重要。除了 真正的编程语言,批处理脚本对于软件工程师来说也是非常重要的,因为很多事情与其用说明书的形式记录下来,不如写一个脚本,这样后来人就不容易犯错。自己 用的时候也很方便。脚本的话最好不要用python,perl这种外加语言,最好使用系统内嵌的语言,比如windows batch command脚本,linux的bash file,这些都不会对使用者有系统之外的任何的依赖,比如我一开始就不会python。
前几周一直以工作忙为理由安慰自己,所以好久没有看书。从这周末期要改改习惯,周末除了看鲁鲁修之外也看看html。
Posted in Uncategorized | No Comments »
开始健身
Posted by Kai on August 6th, 2008
经过两次现场调查和价格比较,昨天在一兆韦德徐汇店办了张健身年卡。
今天第一次去,感觉还不错,器械种类不少,很多我都没见过。可能我去的比较晚,用的人也不多。
因为从公司到健身房有两公里的距离,只能跑步过去了。所以什么东西都不方便带。好久没有健身,今天做的比较保守。卧推只做了3组,第一组热身,第二组130LB5个,第三组130LB3个。不习惯LB单位,在学校都是用公斤的。健身房器械多,相对的凳子就少,不像学校里面器械不多,但是凳子很多,你可以提个哑铃想做什么做什么。有一些器械不会玩,比如划船器,踏步器(这么空虚的东西竟然会有人用!),不过有教练可以问。看来社会上的健身房也是低重量的一堆,和学校差不多,甚至还不如学校里面的平均重量大。学校里面不少人能推到50KG了,在健身房里面,好些人才推100LB不到的杠,而且做出很痛苦的表情。我果然看起来很瘦,教练看我推130LB,都没敢离开我,怕我被压着。其实130LB大概60KG左右,在学校里面还是比较有把握的。没带毛巾和洗浴用品,所以健身后没有洗澡就走了。
好久没有健身,终于活动一下,感觉特别好。IT行业很伤身,所以锻炼很重要。花钱去健身房也是督促自己的一个方法。
Posted in personal | No Comments »
上班两周的感受
Posted by Kai on July 12th, 2008
1. 能够完成别人需要的功能,是相当有成就感的。有人急需的时候,即使加班也会很乐意。当然,对程序员这种不定时工作制的人来说,几乎没有加班的概念。
2. 如果编译器警告选项没有打开到最高,那么查错会很困难。但是如果我无法在代码里进行很多修改,那么对老代码设置最高等级警告会有困难。
3. 在公司机器上用软件,什么都需要lisence,真是麻烦。经过比较,才发现EmEditor是最好用的小型文本编辑器,其他我知道的Editor支持正则表达式多行查找替换的,比较小的就是eclipse(3.4版之后才有),大一点的就是visual studio。幸运的是EmEditor有一个Free版本可以免费使用。
4. 设计优美的代码会因为其复杂的面向对象程序设计而难以跟踪,我很容易理解代码的设计,但是甚至不知道一个变量是在什么地方被设置的。另外,设计再怎么优美的代码,如果没有设计文档,还是略显美中不足。
5. Python我还是有点莫名其妙。不过我连Perl都能忍受,Python也不在话下。
6. 我还以一如既往的讨厌毫无意义的访问子函数,对我来说,它们让简单的事情看起来更复杂。
7. 程序员没事多喝水,就当做活动一下胳膊。多喝水就会多尿尿,顺便走走路。喝咖啡最好放糖,否则提神效果不明显,大概是因为糖也是能量吧
8. 公司女同事说话好温柔哦,就是数量有点少
Posted in Uncategorized | No Comments »