int and double

large scale c++ software design 说这两个一般就足够了

Advertisements

signed int vs unsigned int

large scale c++ software design prefer signed int

Bjarne Stroustrup says, “The unsigned integer types are ideal for uses

that treat storage as a bit array. Using an unsigned instead of an int

to gain one more bit to represent positive integers is almost never a

good idea. Attempts to ensure that some values are positive by declaring

variables unsigned will typically be defeated by the implicit conversion

rules.”

docs elements

今天去公园,回头又把很多年前看的pragmatic programmer拿出来乱翻了一下。注意到model, view这个概念。一个核心的原则是model只能有一个,是最权威的信息来源,其他的都是views,都最好由model自动生成。文档就是一个例子。表现形式可以多种多样。那么model是什么呢?这个问题等会儿说。model如何写呢?有很多的工具,每种工具相当于一种语言,比如一般用的office。office其实是model和view的综合体。所以其实很容易混淆model和view。后果是不熟练的人改个字体就得到处改。好一点儿的方式是用stylesheets。程序语言里面有自动文档生成器。每种生成器的语法就是一套语言,比如javadoc, doxygen等等。另外还有docbook这样基于xml的模型。还有restructured text。其实不管什么类型,文档核心的概念都是差不多的。就像程序设计语言,变量,函数,类,继承,这些概念都是一样的。那么文档的核心概念是啥呢?也不知道有没有书专门讲这个。先自己总结一下。

回顾一下自己写的博士论文。首先是章节(chapter),属于第一级。章节下面就是二级三级的内容。每一级下面都可以有最底级的文字内容,一般以段(paragraph)来分隔。这几样,就是文档的基本结构了。然后一个核心而且相当重要的概念,就是引用(reference)(可以想象成变量)。引用是internet的基本机制,是语言的基本机制。而在传统的文档中,这一点做的相当不好。比如写paper,一般在文档末尾列上一些引用别人的文献,对这些文献,文章里面肯定会提及,也就是要把引用说出来。怎么说呢?方式是写出序号,比如[1], [2-4],或者,作者名加上文献年份。总之,就是得给个id号。这个id号,要对应文章末尾文献的id号。很显然,这种方式无法扩展,比如id号只能对应于一篇文档。另外的一个严重问题是改起来极不方便。所以必须得用一些工具来搞,比如endnote。文献是一种外部引用。还有内部引用,比如图和表。还有公式。这些都会经常需要引用。最好的解决方案是用专门的工具,比如endnote,或者word里面的引用标签。这些引用工具可以自动进行编号,索引。其实章节也需要引用,用来生成table of contents。刚才说到,这两样是内容的另外两个基本元素。第一种基本元素是文字。一个实用的文档一般都要包括图和表。有一句话是一千个文字也抵不过一张图。文字,图和表,这三样基本上就足够组成一个文档了。对于程序文档来说,最好还有一些code samples,还有对应的引用,这些东西需要特殊照顾。现代的media,还包括video,audio,这种东西,慢慢都会包含到文档里面来,随着电子书的普及。

回头再说说wiki,还有internet。里面的基本元素是页(Page),段(element)和引用(link)。

还有啥?想不起来了。docbook里面应该有完整详细的定义。

现在是问题呢,就是如何用一个工具或者语言来将这些概念表达出来。这得看每套工具或者语言的使用方法。无论是什么工具或者语言,其实都应该先想好概念模型,然后再将模型表达出来。就和设计程序一样。所以,写文档,应该当作程序来写。而当程序写的要求,就是每种概念的内容,都要使用特定概念的语法,或者标识。而不是“粗体的表示一级”这种混淆表示和模型的方式。

最后说说工具。也许,每种问题都有对应适合的工具。很想知道,不同语言的文档之间可以互相转化么?是否有一个语言,这种语言写的文档可以转化成所有其他的语言的文档,比如各种各样的wiki语言?docbook可以么?

netbeans qt creator

昨天试用了一下

首先都是免费的,跨平台。

qt creator可以直接用microsoft的compiler。项目配置基于.pro,就是得自己写qmake文件。不支持重构。速度很快。搞qt的应用应该是最方便的。以前用visual studio写qt应用,每次配置moc感觉不爽。也装了qt的插件,但还没有用成功过。支持svn。界面简洁,清爽。帮助方便。实时语法检查。

netbeans似乎必须得用gcc的工具。启动也还凑活,不快。支持重构。实时语法检查。用mingw还得装msys, gdb。

回头说visual studio吧。主要问题是很贵。要是三十美金我还愿意掏钱。express版本功能太少。另外是重构和code completion,现在还是用盗版的visual assist。如果不是开发基于什么mfc,或者com,或者atl的应用,其实是不需要visual studio的。

 

chrome os II

基本上,主要是,linux + chrome, 配一些驱动

http://www.chromium.org/chromium-os/chromiumos-design-docs/software-architecture

没有exe

网页就是应用程序

Gears开始发挥主要作用

很好奇用户数据放在什么地方。答案是网络上,或者自己的移动硬盘上。

网络程序怎么访问本地数据呢?

其实Chrome从一开始就打算做成一个操作系统。一个web操作系统。

android定位是嵌入式操作系统,其实相当于传统的操作系统。

 

乱七八糟

这几天感觉很累

也许是因为工作忙的缘故

脑袋每天都全速运转,想工作上的问题

每天晚上9点左右就觉得非常累,什么也不想干,想躺着

夜里做梦,噩梦。感觉从半夜就开始做,做到早上醒来。

昨天下午开了个会,项目这个月底要做个人总结

手头还有些东西没有完成,这个礼拜得弄完

一个是这几天搞的density weighted nystrom method。一个是用saliency的方法。一个是Bulent做的东西,帮忙看看。