忠忠的新百宝袋

做人要厚道

最节省时间的方法——学习(转帖)

Posted by Kai on November 9th, 2008

Posted in society | No Comments »

我要省钱

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
接下来,需要使用Cygwin,启动一个bash shell,调用那个bash脚本就可以了。

实验了一下,效果非常的好,就仿佛在运行中把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 »

 
FireStats icon Powered by FireStats