All Stories
今天经过半个小时的交通堵塞,终于比平常晚了半个小时到了家里。发明迅雷的人真不是人,这么抢带宽的东西也做得出来。 写了一会儿Ebookshelf,这个东西本来是自己用的,因为有了不知道多少本的电子书,却没有好的管理工具,只好先自己写一个。还为了用什么工具开发犹豫了好久,主要的当然是BCB和VC之间的抉择,不同的编译环境会涉及到不同的各种问题,比如打算用SQLite或Access来做数据存储,哪种接口在哪种环境中更容易使用,然后是WTL和VCL哪个更方便。最后的决定是在打开电脑后几分钟才下的,用BDS2006+Access,因为SQLite只提供了DLL和DEF文件,我又不知道怎么为VC的编译器从DLL和DEF文件生成导入文件(即lib文件),而Access的连接用VCL中的ADO控件是异常方便。另外一个原因是,本来BCB用的lib文件是可以生成了,但是直接include了sqlite.h编译都不过,也不想再研究了,就只好用这种组合了。不过比较郁闷的是,原来虽然也用过几次用ADO连接SQLServer或Access,但今天用起来时,发现很多东西都忘了,都不知道怎么从获取到的记录集中提取出指定字段的值了!原来的那个程序也找不到了,好像就是最近那种整理邮件的时候都删掉了。另外还有个问题是,总觉得我用VCL画出来的程序界面很不专业、很业余。主要大概是各种颜色搭配,以及控件的一些细节属性没设置好,这个角度讲,其实用VC的MFC或WTL就好多了,能一下就生成标准的Windows应用程序界面。先把涉及到数据库操作的部分放一放,接口都留出来,等哪天复习一下再补上吧! 部门又发了一本《读者》合订本,还是2003年下半年的,去年的还是2004年上半年的呢,真是抠呀!而且邮件一发,雨烟就说要罚那个知情不报的人,教授也真是可爱,居然还敢承认,呵呵。 下午又跟疯丫头一起看了一点数据特性的代码,那个新员工写的代码还真是有趣呢,虽然一个文件里面的函数只实现了1/3左右,还是被我们找出了几十个各种类型的问题,有些是压根就编译不过的。其实我觉得这种阶段就拿来让测试部做代码检视是不太合适的,至少也得能编译通过吧。尤其是在看了各种模板应用后,发现编译器在编译期间就能帮助找出不少错误的,所以没经过编译器的代码最多也他们开发内部互相检视一下算了,拿到测试部来有点形式主义或者说是小题大作。不过这样也好,至少疯丫头的PI值是提上去了,哈哈!
早上很早就醒了,然后在床上赖到9:40起床玩电脑,10点半的时候开始收拾,准备出门。跟阿菲一起坐302到万象城,逛了一小会儿,两个这样的组合的人似乎是没有逛这种地方的闲情逸致的,只是买了点曲奇,然后就直接去吃饭的地方了。这是家泰国菜馆,里面的咖喱是阿菲叫我去的主题。等了一会儿,去把xcc接来,这次聚餐的全部主角都到齐了。这两个人,一个接完电话另一个接,都是处于热恋中的,手机必须保持随时能接听的状态,这样他们的另一半才能随时定位到他们的行踪,呵呵。随便点了几个菜,也不是很贵,三个人也就吃了103块钱,每人平均还不到40块。每次我们三个在一起的时候,聊得最多的就是各自工作的问题,以及对以后的展望,呵呵,展望说不上的话,至少可以说是想法吧。阿菲总是说叫我年轻人去做国际售后技术支持。其实我是个懒人,我又怕吃苦。于是跟阿菲说,我想做SOHO,或者等SOHO到一定的收入后,可以找个轻松点的工作。但这样说是说,什么立足点都没有,何况我现在在公司就很轻松,就是嫌钱少了。聊了一会儿后,xcc说要去接一个高中的同学,于是先走了。阿菲要我陪她去买移动硬盘,于是坐地铁到华强北。 到赛格,又到那家买了几块硬盘的地方去了,一个日立80GB的笔记本硬盘,加上一个仿冒的三星硬盘盒,好说歹说讲到470块。刚买完硬盘要下楼,阿菲突然说眼睛很黑,人很不舒服,头晕。我还以为是暂时性的头部供血不足之类的,结果阿菲拉着我的衣服说要打车回家,拉着我的手,走路很慢,说话也很轻声轻气了,我才想到,这下有点严重了。打了个车,在车上,阿菲已经几乎没有力气了,车子转弯时的倾斜,都把她甩倒了,我只好抱着她。阿菲靠在我胸口,我看着她虚弱的样子,想着人无助的时候是多么需要有个人能在身旁,靠一靠也好啊,又联想起某某人来。到了她家,给她倒了杯水,我就出来了。一边走一边想,我真是不会照顾人,就这样走掉了,因为我完全不知道我留下来能干什么。虽然看了很多动画片,还想自己也做一个很温柔的男人,这个时候我才意识到,我骨子里是做不成那样的男人的。大概曾经在我怀里依偎过的女人,没有哪个会有过安全感吧!我不懂温柔,我不够成熟。 再回到华强北,几经抉择,买了套微软的无线桌面套装,380大洋,买了10张DVD刻录盘,买了个小挂饰,去编了个手绳。加上这两天吃饭的,一共1500多就这样花出去了。花钱的速度远远快于赚钱的速度啊。
真又大了一岁了,中午去梅林小肥羊吃了一顿,包厢里是有300块的最低消费,大概是因为不喝酒的缘故吧,吃了250的时候,我们就差不多有点饱了,最后50块的是又随便点了点东西。从小肥羊出来,就不知道去干什么了,8个人意见不统一,其实我心里是比较倾向于去天籁村K歌的,因为便宜而且能消磨掉一下午时间,不过居然连猫猫都不想去,真让人觉得奇怪。几个人走来走去,在梅华路上来回了几趟,还说去打乒乓球,不过想打的人好像不多。最后还是决定去打牌,就是梅兴苑后面的一个茶艺馆,以前xcc跟我说过,在里面打过一个通宵的牌。这次我们也包了个中包,18点以前20块每小时,18点以后就25了,lyy回家去了,剩下几个人就打麻将去了,而我跟疯丫头则在那里看了一会儿《我猜》,然后开始下棋。开始疯丫头说要下围棋,把我吓到了,心想这回要丢人了,因为以为她这样主动说的应该有点厉害吧。结果这个家伙让我活了一小块她原本以为能吃死我的棋后,就说要重下,嘿嘿。然后开始下五子棋,她说她以前都没下过,所以我就很随意地跟她下了,慢慢地发现好像她变厉害了,呵呵。教授和悍超两个人来看我们下,看了一会儿都看不下去了,说我在那里放水,结果让疯丫头感觉是被人泼了冷水,呵呵。一直弄到7点半才出来,天下雨了,就近找了个东北饺子馆吃,吃了60块钱,其实我挺饱的。 小丫头还发短信来,说了好一通话,呼呼。又长了一岁了,祝自己生日快乐的同时,希望能在之后的半年内有好的发展吧!
在公司里,新版本的文档管理都切换到CVS系统了。今天,几个同事说要配置一下怎么使用,他们不知道CVS原本是一个命令行工具,都照着宣传胶片上的开始装上WinCvs和CvsNT,然后一步一步地设置各个选项,而最终目的只是为了从服务器上checkout出文档来。用命令行的话,登录一条命令,checkout一条命令,最多再加上登出一条命令,多方便!由衷地感叹,来自UNIX体系的命令行文化的简洁和强大!不禁想起那个Rational ClearCase,曾经安装卸载了n次,还是不能使用,真是郁闷。 再说回来CVS,现在看sf.net上,好像是CVS和SVN并存的,但感觉CVS的存在只是为了兼容原来的老存档,SVN取代CVS是迟早的事情,公司到现在这种时候还只是把VSS改换成CVS而不是SVN,就有点让人觉得土气了。不过公司向来对开源世界的东西比较反感,以及人员的技能素质整体也呈下降趋势,靠着一流的市场、二流的用服来销售和维护三流的研发做出来的东东,这样的情况是持续不了多久吧。
可以编译出很小的可执行文件来,跟SDK写的有得一拼,而开发效率比SDK当然要高出一大截,估计和MFC差不多吧。是个值得一学的东西,只是最近很懒,呵呵。
找了个机会让小妞敲诈了一顿,呵呵,好久没和小妞一起吃饭了,下班后去F1大堂门口的她,然后两个人就说去吃火锅吧。走到肥牛府一看,没有好的位子了,于是走到隔壁的童子羊,点了9个菜,狂吃一顿,一直吃到快9点。撑啊,我们两个的战斗力还是不错的,呵呵。之后小妞说要我教她怎么刻录,于是去了她屋里,欣赏了一下她在阿尔及利亚的照片,呼呼,这丫头,连撒哈拉都去过了,还看了地中海,真让人羡慕。七整八整就弄到了10点半才出来,呵呵。
昨天说到,用Borland最新的C++编译器在编译模板的时候,对于成员函数模板的情况,如果只是函数返回值是模板参数时,是不会自动选择对应的特化版本的,而一直使用泛化版本,而VC至少8.0版是能自动选择的,记得当时用7.1写TclSuck时也用到了这样的特性,所以应该也是直接支持的。 不过,现在发现了让Borland编译器也能自动选择的作法,其实很简单,只要在成员模板声明和定义的地方加些东西就可以了,仔细看下面的代码,比较和昨天的代码的不同点,呵呵: class kk{public: template<typename T> static T test() { T t; cout << "general edition" <<endl; } template<> static int test<int>() { int i; cout << "int edition" <<endl; }...
现在的新问题是,编译器不能编译显式特化泛化类的成员函数模板!从BDS的联机帮助上看到,这是编译器显式禁止的。郁闷!也就是说,LuaTinker中的代码,是不能直接用上来的!唉,真想不用BDS了,用VC不就行了。可是用VC的话,我只会用SDK,画界面真的太费时间了!其实还有个办法,就是好好学一下C++的模板元编程(template meta programming),再自己写一个好用的C++ Wrapper for Lua,呵呵。看几本书:《Modern C++ Design》、《C++ Templates》、《C++ Template metaprogramming》;研究几个源代码:Boost、Lua、LuaTinker、LuaBind。 有点多哟!
用的是BDS2006,看版本号是5.82版的编译器了,相比以前即BCB6里带的编译器,虽然没有评估过有多少改进,明显的只是编译速度较之以前大大提高了。今天为了LuaSuck,一边改LuaTinker一边编译,发现它居然对成员函数模板的特化视而不见! 用的BDS2006里的编译器,这样试一下: class kk{public: template<typename T> static T test() { T t; cout << "general edition" <<endl; } template<> static int test() { int i; cout << "int edition" <<endl; }...