-
Practical API Design quote II
2009-09-06
Coexistence of different API versions is a necessary prerequisite for a correctly evolving API.
-
c++ exceptions
2009-09-06
http://google-styleguide.googlecode.com/svn/trunk/cppguide.xml#Exceptions
We do not use C++ exceptions.
-
c++ namespaces
2009-09-06
-
online api design docs
2009-09-06
API Design Guidelines
http://blog.isnotworking.com/2007/05/api-design-guidelines.html
How to Design a Good API and Why it Matters
http://www.scribd.com/doc/33655/How-to-Design-a-Good-API-and-Why-it-Matters
//Joshua Bloch的。很早以前看过Effective Java。非常好的一本书。也许应该再看一遍。感觉C++里面很多东西不如Java里面,特别是api设计方面。
more: http://neuroning.com/2006/11/19/on-api-design-guidelines
-
s
2009-09-04
-
又被这个问题折腾了一上午,nnd
放到我的办公室机器上可以run
放到Jenson同学的laptop上可以run
这两个机器上都没有vc2005
放到我的laptop虚拟机上就报错
一般来说这个问题是dll找不到
可是前看看,后看看,都有啊
不然其他机器怎么能run呢?
装了visual c++2005 redistributable package也不行
又回到这个帖子
http://channel9.msdn.com/forums/TechOff/22266-Side-by-side-screwup/
上次看到过
按照前面几个帖子的解决方案,都试过,不行
后来看到倒数第二个帖子有这么一段话
install the new vcredist_x86.exe (from VS 2005 SP1) on the target platform (XP).
恩,是sp1的版本
下载,安装,还挺花时间
点击程序,报runtime c library错
不过总算是有点儿不一样了
用depends再查看QtCore4.dll也不报错了
应该是行了
点另外一个program
终于出来了
runtime是啥问题呢?
又回到程序的链接选项
逐项看看不一样的地方
把Generate Manifest改成Yes
再试,成功了,wk~
其实也不用在部署的时候加上这个manifest file
-
Practical API Design quote I
2009-09-03
There are other important aspects of good API design besides the ability to evolve. An API has to be documented. It also has to be understandable and easy to use. However, of all these, the ability to evolve is paramount. If you can evolve an API, you can always fix the problems that the API had in its initial version.
This is much like human rights. Of all the human rights, the most important is the right to free speech. If you have the right to speak, you can talk about the other missing rights and ask to be given them. If something else is missing, you can fight for it and potentially get it.
If an API is ready for evolution—even if it is ugly, undocumented, and hard to use—you can release a new version and update the API to fix these problems. That’s why I see evolution as one of the most important aspects to consider when architecting a library and its interfaces.
the most commonly used communication channel is the API itself and its documentation. It is the document that users of the API find and study most of the time. If the development of a modular application is to be successful and effective, a clear and easily understood, well-documented, and as far as possible, self-documented API is needed.
-
svn:externals
2009-09-02
这个问题困扰了好久
如果用第三方类库,这个问题还好办
如果小的话,就整一个copy放到项目里面
如果大的话,那就整一个vsprops,设定对应的根目录
但是如果是自己的类库,问题就麻烦一些
一种方案是所有项目都放到同一个目录底下,以前这么干过
checkin, checkout都一起
这种方案的问题是最终目录会越来越大,而且切割也不方便
前些天又想了一个方案,项目单独设定目录,checkout就可以编译。把类库和第三方类库同等看待。每次checkout一个release版本。昨天发现行不通。因为类库经常和项目同时演化。每修改一下就release一次不好。
想来想去没有什么好的解决方案。
于是下载了pragmatic version control with subversion来看看有没有什么答案
很快找到。在135页。用svn:externals
这个properties用来同步一个local目录和一个svn上面的目录
是单向的。也就是local修改时不能commit到svn上去的。
要改的话,先去类库的working copy改,改完commit。这边再update。
这样也make sense。因为类库可能被很多其他项目引用到。只读是合理的。
http://svnbook.red-bean.com/en/1.0/ch07s03.html
-
乱七八糟
2009-09-01
天气突然变冷,感觉跟在亚利桑那的冬天一样了
老爸昨天钓鱼把鱼竿折断了,伤心了好久好久,吃饭都没味道。说话很带气。晚上陪他去买了万能胶,昨晚自己修了一下,今天一大早又出去了。
老婆的保险exemption批下来了。这样就不用另外交学校五百多的保险费了。
昨天老婆,老爸在家蒸了一堆馒头包子,比买的好吃多了。面比米要便宜一倍。
前天老爸还作了葱油饼,也很不错。嘉嘉也爱吃。吃得不亦乐乎。
上周末去了ikea,买了餐桌,4个餐椅,木质,总共130$。买了两把电脑椅子,总共30。
-
乱七八糟
2009-08-31
//非常非常想把整个系统从头再写
//在别人的系统上修改,添加功能都是一件痛苦的事情
//关键还不能重构,Jenson总是说没时间,暂时不要搞这个。
//为啥?就是怕出大篓子。
//为啥怕出大漏子,因为系统很脆弱。
现在的问题是这样的
之前别人写完的程序,只能pause,不能stop。每次一stop,再start,就出问题
为啥呢。因为状态出了问题。有的模块假定永远是这样。一stop之后假定就不成立了。
跟jenson商量后,决定解决这个问题的同时添加一些新的feature,再输入输出端做一些修改
而修改呢,必须得加上,或者改一些接口
Jenson本来是一个接口也不想加
因为这样会可能打破他之前的架构,就是上面的模块不要了解任何底下模块的细节
可问题是不加那么有些事情就做不了
磨了半天终于加上
而另外一个地方,又采取不加的策略。
为什么可以这样呢。因为之前有一个万能接口,叫EngineProcess
输入命令是一个整数。<0的是start , stop ,pause之类的命令。而大于0呢?你随便怎么处理。好吧,我们就用大于0的这个东西来传入一个参数。
其实之前的输入模块就是这么干的。而这个模块我读了半天才发现这个trick
好吧。花了一天写完程序。然后调试。
然后噩梦来了。
总是冒错。最开始是一个parse字符串的bug。搞了半天。绕了个弯过去了。
后来是内存非法读取。又搞了半天。发觉就是万能接口的问题。什么问题呢?>0的那个参数其实已经被用过了!
不得不又搞个trick绕过去。
绕过去还没完。
因为底层模块还有问题。
什么问题呢?就是类的变量太多。而且到处引用。跟c的全局变量一样。改一个东西还不够,还得改另外一些东西。
//读代码发觉重复代码太多。还有重复文件。
-
老爸
2009-08-25
一大清早又跑出去
去上次说水浅的那个湖
今天发现了湖里面的一个坑
就把鱼钩甩到坑里
结果第一条上来就是大鱼
回来的时候带了5条鱼
说还扔了很多鱼
这下算是找到好地方了
昨天还去了另外一个湖
要穿过大马路,很危险
嘱咐老爸不要再过去
今天又要吃鱼了
基本上以后要天天吃鱼了
-
/ENTRY:mainCRTStartup
2009-08-25
从Console (/SUBSYSTEM:CONSOLE)改到Windows (/SUBSYSTEM:WINDOWS)
部署到另外一个机器总发生错误
加了这么一个选项就没错了/ENTRY:mainCRTStartup
http://csf11.acs.uwosh.edu/cs371/visualstudio/
开始生成的manifest总多了一节,如果是Windows的话。要dependent on两个CRT的版本,wk~。
加了这么一个选项就没有那多的一节了。
-
新的框架
2009-08-18
Jenson的框架可以这么解释
一个应用 = 一些COM模块 + 一个配置文件
模块有三类,一类是函数,一类是全局数据,一类是模块执行引擎(根据配置文件)
也就是说,配置文件其实是一个脚本
以前的应用都很简单,几个模块顺序执行就行了
现在的问题变得复杂
模块的参数可能中途变化,或者需要另外一个模块的计算
另外,该配置几个模块也变得不确定,取决于机器有几台CPU,设置几条线程
Jenson的解决方案是这样的,在配置文件里面设置一些特定的symbol,相当于变量
这些变量的值,在运行时决定
根据变量值,动态生成一个配置文件
变量值怎么设置呢?Jenson的解决方案是使用另外一组配置文件,里面可能有一个a = b * c + d之类的东西
一两个星期前,我的工作就是写这么一个解释器,从一个配置文件模板,几个参数配置文件,生成一个最终的配置文件。
现在的模板文件,相当于生成脚本的脚本
也就是说,Jenson又设计了一套新的语言。并试图通过这个语言来创建应用。可是,。。。,这个语言会有传统的C++强大么?这里面没有if,没有for,没有函数。。。
-
乱七八糟
2009-08-18
今天基本上终于大致明白了jenson同学的框架
感觉每个写软件的人都有一种框架癖
希望一旦框架搭好了,以后任何应用都像填一份表格
设置一些参数,写一些函数,或者类
Jenson的框架大致是这样的
每个模块是一个COM组件
每个模块有一个输入,几个输出
所有模块的输入,输出,都使用一个同一个数据模块,也是一个单独的COM
有了数据区,有了模块
构造一个应用的话,就只需要一个配置文件,里面写好模块执行顺序,以及每个模块输入输出的名字
当然,解读配置文件也是一个单独的模块
看上去很美,很简单
有一个问题,如果模块需要配置参数怎么办?
目前的框架是这么解决的
每个算法模块都单独配置一个引擎模块
所有的引擎模块都是一样的接口,包括load配置字符串,save配置,引擎开始,引擎暂停,以及引擎结束
这样最顶层的应用模块就不管具体的参数配置,只负责开始或者结束哪个引擎,以及提供引擎对应的配置字符串。
举个例子,如果我们有一个应用,需要三个函数,a, b, c。那么,我们需要三个算法模块,三个算法引擎模块,一个文件配置模块,一个应用引擎执行模块。
什么问题呢?90%的代码都是处理字符串,配置输入输出,COM包装了。调试还麻烦。
另外更严重的一个问题,就是两个的应用不能装在同一个机器上。因为模块是重复的。为什么呢。如果为每一个函数单独构建一个项目,构建一个DLL。代价太大。目前的框架呢,就是一个DLL里面装一组类似的模块。于是呢,不同的应用,DLL是重复的。但是一旦不同的应用DLL接口冲突,或者功能不一样,问题就出来了。
哦。想起来,Input也是单独的一个模块,而且,所有的应用,Input模式都是一样,那就是从Input/目录里面读数据。而不是让用户打开一个文件。
Jenson现在又设计了新的框架。因为现在要使用多线程,多核。以前的框架就不行了。新框架已经做了三四个月了。有很多问题。而我现在的任务,是和Jenson一起把所有这些问题解决,另外把框架搭完。
-
数据
2009-08-13
逻辑不变,程序会变
数据不变,逻辑会变
只有数据是最终面向用户的
用户只关心数据。输入数据,输出数据。
所以呢。程序没有数据重要。
所以呢,得专门建立一个数据的目录。里面存放输入数据,以及正确的输出数据。还有数据的描述。
-
code
2009-08-11
建公司的代码库
C++这块只有我和jenson负责
jenson是part-time,算是老员工了
以前的系统主要是他负责开发的
这几天在做一个项目的集成调试
问题一堆,还不好调
很多代码是找的大学学生写的,非常乱
调试人家代码真是相当郁闷
改代码,加新功能更是郁闷
有些受不了,还不如自己写
感觉jenson设计的框架太复杂
原来的代码重复特别多
不仅是文件重复,函数重复,类库也重复
一个项目里面,矩阵库就有三个版本
另外,之前的项目里面,COM代码跟算法混到一起
接口不清晰
超长函数,超长参数
现在计划设计一个统一的代码库,纯C++
每个模块单独写应用程序,这样便于测试,也便于demo
即使是混到COM里面也会相对容易,清晰
错误捕捉也方便
-
团聚
2009-08-05
感谢主,一路平安
老婆,孩子,老爸都回来了
小家伙还认得我
让我抱,跟我玩
稍微逗逗,就一个劲儿的笑。老婆说,在老家不怎么爱笑。
-
基础设施
2009-07-31
房子,月费1490
车,总共22K左右,每月584
网络,月费20,1Mbps,最便宜的那种。好一点儿的要50每月
电话,月费60左右
电,煤气。还不知道每月要多少。估计一两百
房子保险,一年90
车保险,半年340
总共差不多每个月2420
还不包括汽油,吃饭,医保,尿布,奶粉等等。
老婆下个学期没有奖学金,还要交1000多的学费。
每个月剩不了多少钱。结余可能跟在学校差不多。
-
换驾照
2009-07-31
arizona的驾照明天过期
今天又去mva
昨天去过一次,说lease contract不能是copy,要original的,还有一些其他的
今天找出original的contract,中午拿给manager签字,然后去mva
还带了original的ssn card, ead card
结果还是不行,说车的registration是temporary的,不能用,wk~
那我还能找到什么居住证明呢?找不到的话,就更新不了。过期了是不是就会有惩罚?
一项一项的看。发现有bank statement一项。问可不可以从internet上面打印出来。说可以。
于是又回去,上well fargo,找到statement pdf。打开最近的,上面的地址是现在的地址,长舒一口气~
本来还想打印tmobile的账单,但是上面是老婆的名字,也找不到我的名字
再去mva,心想,事不过三
队伍更长了
再check
通过,感谢主
于是拿到票,排队
票号是G133
坐下来,听到下一个号,是G83,wk~
于是等啊等
等啊等
中间还睡了个觉
等了两个小时,终于等到
那个人又把我的文件仔细看了一下,还都复印
开始还说我的bank statement不对。我说背面还有。她说哦。吓了我一大跳。要是现在又不行,几个小时就白搭了。
照相,交钱9$
最后拿到卡。很快。
上面的号码完全变了。
我以前听室友说第一次搞到驾照后,就相当于身份证,号码再也不会变。
看来只是在同一个州如此。
回来看kwan的驾照,号码格式和我的一样
我以前renew基本证件都不用
kwan说,可能这边接近首府,申请过程要严格很多
新的证件明年6/30过期
后来想想
这个bank statement大概前几天才出来
要是没有的话,还renew不了
所以呢,以后应该在搬家前看看驾照是否很快要过期,否则就会有麻烦
-
买了车
2009-07-29
subaru forester,2009,深灰色,加上税和杂项总共$21,109, 2.9% apr, 36 months,$1000 downpayment。
salsman是个中国人,叫zhou kan,本家。买车的过程里面帮了很多忙。有些我有疑问的地方都会问他,然后他都会仔细的告诉我,用中文。最后有几项finance的哥们想蒙我,还好我看得仔细。然后zhou kan也帮我说话。最后的价格跟之前给的价格一模一样。也许也是神的安排吧,最开始见到他的时候,他站在一辆深灰色的forester旁边,跟一个洗车的人说话。我在那辆车旁边转了一下。他说:”你好“。我开始以为他是日本人。他问我是不是要买车。我说我想看看。其实之前已经来过一次了。而且网上也还讨论过价格。不过那天还是顺便来逛逛。虽然最后其实也没有砍任何价钱。不过,买车的全程包括最后他都细心的帮我,以及解释。后来跟他聊天。他说他是这儿的top 1。真是不容易。况且还是个外国人。他说我长得非常像他表弟。
之前问过355 toyota。给的价格是$20,500,加2.9%apr。也去了ford,问能不能搞到$20,000+0%apr。直接被嘲笑了。
买车最后的finance非常紧张。我知道我要签字。签字了就是表示合同上的东西都生效。一旦发生错误,就无法挽回。dealer肯定都会在这个环节做手脚,趁人疲惫注意力不集中的时候。所以我非常非常小心。以至于签完字还有些紧张。晚上做梦梦到他们给我多加了几十块钱。醒来后发觉是梦,感觉好了很多。毕竟一辆车价值太大。以后除了买房子,不会再出现这么大的购物花销。买完车,well fargo银行的账户基本就没钱了。这两天还要交房租。也是一大笔钱。
接下来有太多的事情。
家徒四壁。需要买一些家具。买洗发水,浴帘,毛巾,两个小台灯,一个大立灯。买碗,碟子,筷子。
需要把箱子从peijun家运回来。
买gps。
更新驾照。
去机场转一辆圈。老婆,孩子,老爸8/5号到。
交房租。
感谢主。感谢主赐给我家一辆车。感谢主的保守和带领。
-
昨天的presentation
2009-07-28
见到了学校的老板
然后学校的老板见到了他以前学校的老板
学校的老板以前学校的老板现在是我们的竞争对手
我们有两个竞争对手,另外一个感觉没做什么东西
但是学校的老板以前学校的老板所在的公司做的有些特色
结果会如何?It's hard to say,kwan说。我也这么想。
我们的demo最多,也最有趣。
但是有一些重要的东西暂时没有,因为我们也没有积累。比如stabilization, mosaic之类的东西。
kwan说,我们已经做到能做到的最好的了。
明天kwan和学校老板要参加另外一个meeting
我不能去,因为还没有绿卡
kwan说明天会有几个大公司做presentation。那些大公司如果对我们的东西感兴趣,他们会帮助我们搞到下个funding。
kwan做presentation非常棒,时间把握的很好。说话不快也不慢。突出重点。这点还得好好学习。
一切交托给主了。
感觉轻松了一大截。就跟高考完似的。
但另一个项目接踵而至了
其实那个项目已经等了我很久了。等会儿就要跟jason meeting。
基本上jason主要负责这个项目。也不知道做了多久。还找了两个RA。说现在bug多多。
其实我觉得每个小模块都用com实在没必要。又不是要卖组件。
不过这个项目都已经进行了一大半。我估计也很难中途让他们更改。代码都已经被COM污染透了。
我想自己从头弄一个架构。试试能不能先搞一个demo出来。
-
车
2009-07-27
看了好久
也讲不了什么价钱
目前定了三款,各有优势
Ford Fusion 2010 SE,网上评价很好,比camry还好,最fancy,价格也最便宜,有0利率的分期付款,价格20913,应该还能便宜200或者更多,这样的话,就是20700
Toyota Camry 2010 LE,引擎质量最好,开20万mile一般都不会有什么问题。价格20.427,2.9%的apr,如果是4年贷款的话,利息差不多是1200,三年是900。如果要选择红色或白色以外的颜色,还要再加200
Subaru Forester 2009,SUV,金黄色或者黑色,安全性能最好,大,重,比较耗油,价格$21,109。36个月2.9% apr,利息是952,48个月3.9%,利息是1700左右。
camry和forester的价格和库存都可以在http://www.fitzmall.com/可以查到。他们不讲价。说跟商店卖东西一样。如果我能搞到更便宜的,他们愿意便宜150%卖给我。他们是全美排行top12的dealer。
昨晚参加聚会,听到有人说17,000把camry LE拿下来,wk~,听得我目瞪口呆。基本上,camry会比fusion贵500~1000,forester比camry贵500~1000。fusion的s model会再便宜600左右。
昨天查了一下,我的信用分数大概是800左右。好像说是比较好的。应该都会qualify low apr。
跟老婆商量了一下,如果能以比较低的价格搞到camry,就拿camry。否则的话,就拿forester。
forester的几张图片
http://gtcarlot.com/car/1597370
http://gtcarlot.com/car/1597374
-
信息应用
2009-07-23
突然意识到互联网上的几乎所有的网站都是特定的信息应用,或者说,信息程序
虽然很早就看到过新闻,Google Chrome可以把特定的网站定制为一个单独的桌面应用
不过,昨天晚上的感受更进了一个层次
Gmail这种东西可能更加偏向应用
应用跟信息的区别是什么呢?
一般来说,一个应用需要大量的互动,需要用户的输入,然后应用处理输入,给用户一些输出,或者,完成一些操作,用户想要的
游戏可能是互动性最强的应用
而信息呢?更多的是静态的。用户更多的是浏览,查询。比如新闻网站。
那么什么是信息应用呢?
典型的例子是论坛,blog,wiki,sns,也包括gmail, sms, search engine,分类信息,digg等等
这些应用的特点是信息是核心,而应用则是促进信息的分享,交流,沟通等等
这些应用都需要用户的交互,而不仅仅是简单的信息
再比如特定的垂直网站,edmunds,关于汽车信息的。里面综合了各种各样购车的信息。不仅有类似新闻,或者只是的分享,也有卖家的产品的详细信息,买家可以查询任何一款车的大致价格,可以根据自己的地理位置轻易找到当地的卖家,查看卖家的库存,联系卖家
总之,在我看来,这是一个非常全面的,面向特定领域的信息应用。不仅有各种各样的静态信息,也有非常成熟的交互式应用。
one size does not fit all。任何领域其实都有对应的信息模型。充分挖掘领域的模型,可以给用户带来更好的体验
从某种意义上来说,所有的网站都是特定的信息应用。
那么接下来。如何构建信息应用?
最开始的时候是个人网站,有很多网站可以让用户建立自己的主页
但是如果要整一个更复杂的应用,早些时候还都得自己搞服务器,即便现在很多网站都已经预装了一些系统。但是写应用一般还是得自己从头写起,用特定的语言,特定的框架。
这里面有一个问题,几乎所有人都可以轻而易举建一个自己的主页,但是只有很少人能自己写一个应用。没有多少普通用户会自己去学什么java, ruby, asp之类。
而另一方面,普通用户是否需要构建自己的应用?当然需要。只不过,这一要求一般被已有的软件,或者应用掩盖了。还是那句话,one size does not fit all。
传统的解决方法呢,是软件,或者应用,可以让用户自己定制一些特性,一些功能,这个角customize,或者personalize
但是呢,很显然,这些仍然局限于已有的应用之类
用户是否需要自己构建特定的应用?包括数据库功能的?比如收集信息。
老婆是学文科的。得做很多问卷调查。后来我帮她用zoho建了一个应用。非常方便,非常简单,非常有用。
以前还接触过evite之类的,分发邀请信息的。
昨天上apartment的网站,发现很多功能也都是使用特定的一些网络应用平台
很多年前有一个词叫web service,我一直没有好好学。现在觉得,其实这并不是那么重要。为啥呢,因为他还是面向底层的,面向编程人员的。也就是说,门槛太高,对于普通用户。
现在出现了新词,叫cloud
不管有多少种不一样的cloud,这些,与普通用户关系都不大。因为它是底层的架构,是基础设施。
而真正对用户有价值的,是特定领域的应用平台。用户可以在上面轻易构建自己的应用,为自己服务。
各种各样的widgets,算是一种基本的平台吧。但是还相当不够。很多情况,用户需要有自己的数据库。自己的数据库应用。
发觉想的有点儿偏了。
再回到信息应用本身吧。。。回头再说。
-
恩慈相待,存怜悯的心,彼此饶恕
2009-07-18
http://www.bbintl.org/bible/gb/gbEph4.html
昨天查经,无意间翻到《以弗所书》的新生活守则:
25 所以你们要弃绝谎言,各人与邻舍说实话。因为我们是互相为肢体。
26 生气却不要犯罪。不可含怒到日落。
27 也不可给魔鬼留地步。
28 从前偷窃的,不要再偷。总要劳力,亲手作正经事,就可有余分给那缺少的人。
29 污秽的言语,一句不可出口,只要随事说造就人的好话,叫听见的人得益处。
30 不要叫神的圣灵担忧。你们原是受了他的印记,等候得赎的日子来到。
31 一切苦毒,恼恨,忿怒,嚷闹,毁谤,并一切的恶毒,(或作阴毒)都当从你们中间除掉。
32 并要以恩慈相待,存怜悯的心,彼此饶恕,正如神在基督里饶恕了你们一样。
//我以前好不容易悟出“怜悯的心”是饶恕的先决条件,没想到圣经里面早就有了。//苦毒是每个人心里最难除去的东西,也许只有怜悯可以帮助我们//人在怜悯他人的时候,也就忘掉自己,也就可以洗掉自己的伤痛 -
apr calculator
2009-07-18
http://www.efunda.com/formulae/finance/apr_solver.cfm
分期付款,最后总共要付多少利息?用这个来算。
-
屏幕录像黑屏问题
2009-07-18
http://www.any-capture.com/faqs.html#blankimage
得去掉硬件加速
关键词:screen, capture, recording, black, video, image, 黑屏,屏幕,录像,硬件加速
-
语言的天性
2009-07-13
每个语言都有自身的天性。顺其天性,做事才会舒服。这些天性取决于当初语言设计的目标,语言本身的语法,语言的复用方式等等。
比如C的天性是结构化编程,如果强行套上OO,肯定不会舒服。
比如Java的天性是OO,使用结构化编程也不好。
C当初是面向机器,面向硬件。所以操作系统,或者设备驱动,或者嵌入式,C都是最match的。但是到了应用层,快速的开发,复用成为最重要的。C在面对其他的语言也就显出不足。
C++的天性是什么?似乎没有多少人能够百分百肯定。他基本上是C的超集,他有OO,有GP。在应用开发上来说,他比C要方便快捷。但是因为语言本身的复杂性和编译器的不兼容性,在二进制复用上远远不如C。在面向机器的开发也不如C。那么天性是什么?感觉复用上来说源代码级别的复用才是天性。另外,错误处理的天性是什么呢?C++提供了几种不同的方式。在尝试了几次exception后,决定放弃了,或者api层面不使用了。C++本身的exception语法似乎压根就不鼓励使用exception。也许这与他要顾及高效有关。而不同编译器对exception的处理也不一样。从应用上来说,C++基本上适合于桌面应用或者系统或者后台应用的的开发。
-
看完《伟大的博弈》
2009-07-13
//家里没有网络,无聊,于是把很早前买了但是一直没怎么看的书拿出来看。一个礼拜就看完了。
感觉历史不断的重复,只不过投机的方式不断的在变化,而政府的应对则不断的完善。除了可以看作是投机家之间的博弈,也可以看作政府和经济危机或者投机家之间的不断博弈。而这次的金融危机,其实很大程度是以往很多次危机的翻版。只不过这次投机变成了炒房的形式。和以往的很多次股市崩盘的因素一样,一是投机家的贪婪,炒作,二是政府监管的缺位。从应对方式来说,政府花大资本救市是必然的。否则会引起更大的衰退和恐慌。从失业率上来说,这两天看报纸,美国已经接近了10%,如果计算其他强制性半职,则多于16%了。和之前的几次危机差不多。从时间上来说,一般衰退会持续两三年才能恢复,除非有战争刺激经济。教会牧师的祷告里提到了找工作的人。说明教会还有不少弟兄姐妹失业,还在艰难的寻找工作。经济什么时候开始恢复增长?谁也不知道。但是肯定的是,应该不会很久。
-
看了两个附近的apartment
2009-07-03
post fallsgrove,1542。size 1101。
summit fallsgrove,1608。主要是加了电视。size 991
问了一下avalon。1490 ~ 1725
比较倾向于post fallsgrove。
-
模块化问题
2009-07-02
准备重新更新一下自己的类库
以前开发的大部分东西现在都用不着,比如3d方面
目前还有其他的问题
公司的机器上没有visual studio,正版太贵
我下了个express版本
也就是说我的笔记本和公司机器用的是不同的编译器
复用c++的类库就会出现问题
c++类库都必须重新编译一遍,对特定的编译器//有啥好的办法没?
因为这个限制,之前的小模块模式也不得不改变,准备回到单个大模块的模式。复用时设置起来方便一些。
之前用scons来自动组合成大模块
但是既然要重新编译代码,对不同的编译器,那么,scons同样的每次都得运行一下。如果同事对这个不熟悉,也不是很方便。
而且,有时机器上可能有不同的visual c++版本。选择不同的编译器也是问题。
cmake对这个问题的解决方案好一些。不过不喜欢每个目录都写一些配置文件。
也许再重新研究一下cmake?
c++的复用问题还是蛮恶心。比java差得太远。也不如c。
