博文

目前显示的是 九月, 2006的博文

较为郁闷

今天反复出现这个错误:
text2ArticleXML.exe 中的 0x0062efa7 处最可能的异常: 0xC0000005: 读取位置 0xfeeefef2 时发生访问冲突
text2ArticleXML.exe 中的 0x0062efa7 处未处理的异常: 0xC0000005: 读取位置 0xfeeefef2 时发生访问冲突
发生问题的,是boost的这段代码template<class OStream> BOOST_ARCHIVE_OR_WARCHIVE_DECL(BOOST_PP_EMPTY()) basic_text_oprimitive<OStream>::basic_text_oprimitive( OStream & os_, bool no_codecvt ) : os(os_), flags_saver(os_), precision_saver(os_), archive_locale(NULL), locale_saver(os_) { if(! no_codecvt){ archive_locale.reset( add_facet( std::locale::classic(), new codecvt_null<BOOST_DEDUCED_TYPENAME OStream::char_type> ) ); os.imbue(* archive_locale); } os << std::noboolalpha; } 我能猜测到的,唯一的缘由是,ACE,boost,wxWidget 这三个库不能很好的合作在一起。
其次,vc8的locale实在是古怪。
我的习惯是在程序的一开始加入setlocale(LC_ALL,""); std::locale::global(std::locale("")); 但是它经常会导致一些古怪的结果。
例如,如果我这么做了。那么,
std::wcout就不能输出中文,除非我将这两…

Talk with vice president of Microsoft

I wonder if I'll have such a chance.
God bless me!

淡下来了

以前人多的时候,这里每天有超过30,甚至超过300的访问量。
而现在一周还不到100。倒是有很多从baidu搜来的,例如今天就有5个(不同的关键字)。
啥时候有人从sogou搜过来啊
哈哈
waiting

wallop.com上线(新版的wallop)

www.wallop.com
老版用户无法在新版登陆,需要等待邀请
第二个惊讶,wallop放弃了asp.net而改用php!
失望的是,终于走向商业化了

Stateless Object

A core idea of "Object-Oriented Design(OOD)",is that "every object has a state,and their member functions can change this state".However, It isn't right in some case.for example,most of functors in STL(Standard Template Library) do not have any member variables,e.g.std::minus .The structure of these class is very very simple. It has no member variable,only one member functions,and when ever you execute this function,with same arguments,you'll get the same answer. So we say these objects are stateless. The only distinguish of two object instance of a same class,is their memory locations.(That's why objects which have no member variables have a size 1,we need a way to distinguish them).And,we can modify our design,so that every class has no no member variables.Are they truly is stateless?
e.g,assume that we have a such classclass Widget{ public: Widget(){ ///register this widget to system } getHeight(); setHeight(); getLength(); setLength…

baidu

百度的股价再度回复到每股90$左右的高位。
尽管负面新闻不断,但是股价未受大的影响,说明投资者依旧对它长期看好。
至少以我的估计,它Q3的纯利润,可能要远超过sina.

more readable

很多人都说我写的东西太杂乱,看不懂我写的什么。
于是,我决定,从今天起,做好两件事情1.用全称,不用缩写
2.对于技术性文字,尽量保持明显的层次性。

转载:lyrics of "room of angel"

"room of angel" 是Silent Hill 4: The Room的theme song。
我刚下载下来,正在听。You lie silent there before me
your tears they mean nothing to me
the wind howling at the window
the love you never gave
I give to youReally don't deserve it
but now there's nothing you can do
so sleep in your only memory of me
my dearest motherHere's a lullaby to close your eyes good-bye
it was always you that I despised
I don't feel enough for you to cry oh well
here's a lullaby to close your eyes good-bye
goodbye
goodbyeSo insignificant
sleeping dormant deep inside of me
are you hiding away lost
under the sewers
maybe flying high in the clouds
perhaps you're happy without me
so many seeds have been sown in the field
and who could sprout up so blessedly
if I had died
I would have never felt sad at all
you will not hear me say I'm sorry
where is the light
wonder if it's weeping somewhereHere's a lullaby to close your eyes good-bye
it was always you that I despised
I don't feel enough for you to cry…

默认打开快速编辑模式

HKEY_CURRENT_USER\Console下,项QuickEdit(dword类型),
设置为1

天意

我这么破的机器居然能跑的动寂静岭4……显卡:GeForce4 MX 440,4X
主板:nForce2,芯片不算老,但是主要是,现在只有2个电容是好的,其它的无论
大小,要么流水,要么鼓了
CPU:名为AlthonXP 2400+,外频133M HZ,实际由于主板和电源坏了,只能跑100M
HZ,主频1.5G,否则根本进不去XP
内存:DDR 333,256*2,Kingston,
硬盘是新买的。内存和显卡金手指严重氧化,用橡皮擦已经不行了,需要盐酸洗其它设备无,全部都被拔掉了,因为电压不够,所以现在连光驱都没有。我这么破的机器居然能跑的动寂静岭4……
而且很顺畅!

Chineses at Wallop

突发奇想,在Google搜site:http: //mywallop.com rss
结果发现出现的页面大部分都是中文呵呵……
好多人陌生人啊
看来wallop不止我想象的那么小

ACE & wxWidget

ACE与wxWidget 混用的时候要在config.h中加入#define _WINSOCKAPI_因为wxWidget用的是winSocket1,而ACE是win Socket2

由持久化想到的

我们传统的方式是使用关系型的数据库,定义一个个的tables,然后定义表的结构。
然后设计我们的类。
然在我们的类和table之间建立映射关系,把数据库中的数据用select读进来,然后修改,然后再用update写回。
然后提供两个接口,insert和delete用于在数据库中插入和删除数据。而我的想法是,关系型的数据库已经过时了。
我的想法是,以对象为中心。将对象持久化为XML,然后把XML插入到数据库中例如berkely db XML.
然后用XQuery完成数据的查找、插入、删除。区别在于,我们只需要去设计对象,而不必设计表。而且实现也很容易
例如boost的serialization库可以很方便的把对象序列化为XML文件。
而且Berkely DB的速度远远高于Mysql。
不过难点在于,XQuery毕竟是新兴的技术。
berkely db XML缺乏图形化的管理软件。
而且XML查询的速度远低于传统的关系型数据库。

整理邮件

今天整理邮件,发现最早的一封居然是02年1月26的。
辗转这么久,换了次硬盘,低格无数次。
02年的几十封邮件居然还能存在我的硬盘上。
真是感动啊!

自己写了个函数追踪器

ACE中有一个很有用的宏叫做ACE_TRACE
把它放在函数的开头,那么在进入和离开这个函数的时候它就会分别打印出一条Message.
例如intmain(){ ACE_TRACE("main"); } 调试程序的时候相当有用。
However,自ACE5.5之后,默认就disable了TRACE功能,且ACE越来越庞大(编译后的体积已经远大于WxWidget等,超过 1G),于是我就利用Loki写了一个轻巧的实现。#include <loki/ScopeGuard.h>/*! 原来的Loki库的这两个macro有些问题,我就只好自己重写下咯 */#ifdef __GNUC__#define S_ON_BLOCK_EXIT Loki::ScopeGuard LOKI_ANONYMOUS_VARIABLE(scopeGuard) __attribute__ ((unused)) = Loki::MakeGuard#define S_ON_BLOCK_EXIT_OBJ Loki::ScopeGuard LOKI_ANONYMOUS_VARIABLE(scopeGuard) __attribute__ ((unused)) = Loki::MakeObjGuard#else#define S_ON_BLOCK_EXIT Loki::ScopeGuard LOKI_ANONYMOUS_VARIABLE(scopeGuard) = Loki::MakeGuard#define S_ON_BLOCK_EXIT_OBJ Loki::ScopeGuard LOKI_ANONYMOUS_VARIABLE(scopeGuard) = Loki::MakeObjGuard#endifstruct SourceInfo{ std::string file; long line; std::string func; }; voidenter_function(const SourceInfo& info){ std::cout<<"进入"<<info.func<<"函数"<<std::endl; } vo…

用面向对象的序列化代替读写配置文件

经常看有人喜欢自己写一个ConfigFile类,用于读/写 配置文件。
读/写 配置文件是一个非常常见的问题。但是我觉得我们可以从另外一个方向去考虑。
那就是,对象持久化。如Booch所说,持久化是面向对象的7个要素之一。它是让对象超出作用域后对象的信息
依然存在。说简单点,就是,把对象的信息保存在文件或其它的存储媒体上,并可以在
过后的某个时间,如下次启动应用程序的时候,从文件中读取该对象的信息并恢复该对
象。今天我在用Boost的serialization库的时候方感其伟大。相对于configure file而言,
这是一个更高层次的抽象。我们可以利用这种模式很方便的代替以往手工读写配置文件
的方式。举个简单的例子,我们可以把所有的配置信息放在一个struct中,然后写一个
serialize函数,就可以了。不必再去为配置文件分节,把数值写成key-value的形式。
所要的仅仅是利用 operator<<和operator>>对流进行串行化操作。而且,文件可以是文本格式的,也可以是XML格式的,如果我们希望,还可以存在数据
库中。另外,我在想,如果我们可以很方便的把对象序列化为json data的格式。那么就可以
用之代替soap,把浏览器作为一个轻量级的web service客户端,相比于XML,客户端的处
理将会更高效。说到底,面向对象的核心就是层次化的抽象。例如此处,无论数据最终被存在哪里以什
么样的格式,serialize函数是不会变的。而且,使用这个对象的人也不必去关心它是
如何被序列化的,只管用就好了。

vc下boost1.33编译步骤

好久没用boost了,又要重新编译。
干脆把步骤写下来,以免以后忘记了1. 打开 Visual Studio 2005 命令提示
2. 进入到BOOST_ROOT/tools/build/jam_src目录下
3. 运行./build.bat
4. 回源代码的顶层目录,运行tools\build\jam_src\bin.ntx86\bjam.exe
"-sTOOLS=vc-8_0" --prefix="D:\GNU"要让Boost.iostreams支持bzip2和gz需要加装其它的库。我懒得搞了。最郁闷的是编译的时候老说源代码有些字符是在当前字符集(cp936)下无法显示的。
boost/lexical_cast.hpp : warning C4819: The file contains a character that
cannot be represented in the current code page (936). Save the file in
Unicode format to prevent data lossHowever,就这样吧!

无奈~

最近老有人来找我说他机器坏了,老重起,让我帮他修。
可是呢,除此而外什么信息都不肯透露给我。我能说什么?相当的无奈。心情不好的时候,直接告诉他我也不知道为什么,劝他去找
别人。
心情好的时候,就劝他去查看日志,去掉系统属性里面的自动重新启动的选项。然后有更狠的。说,没用,还是蓝屏。
我说,要得就是蓝屏,你仔细读上面的信息,抄下来。
他说,有什么好读的,都是英文字母和一些看不懂的东西。
我很无奈的说, 26个字母你总认识吧,照抄下来就是了。
他哦了一声,很不情愿的去做。他觉得不应该这么麻烦,重装系统或者啥子的就好了。唉……更有可笑的,他说他机器中了流氓软件,可是用yahoo助手怎么杀都杀不掉。
他若知道3721上网助手就是yahoo助手的前身,是流氓软件的鼻祖的话,就不会有此问
了。
不是我没告诉他,是他不信。上次更有甚者,我告诉一哥们儿sogou就是sohu开的,搜索直通车就是sohu开发的。他
死活不信。最后无奈下打开sogou的主页,领他看下面的版权说明,才Ok了。

二路归并的算法复杂度(2)

终于明白了,是这么回事。
二路归并时,假设两个Sequences为A和B,长度分别是n1和n2
那么,对A的每个元素需要在B中执行一次Find操作。
而Find操作的算法复杂度是O(n)
那么整体的,关于comparison的 算法复杂度就是O(n*n)
《Algorithm Design》这本书上是这么推的但是如果从另一个角度来看。
每进行一次comparison就有一个元素被追加到结果集中。
那么,最多有n1+n2个元素,最多执行2*min(n1,n2)次comparison.
它的关于comparison的算法复杂度其实是O(n)算法复杂度为O(n)的算法,典型的一类就是:需要对input中的每个元素,依次执行某个操作,且对于每个元素该操作所花费的运算时间是常量(O(1)),例如,find, sum, etc. 但是其实此处就给了我们一个很好的例子,该操作的运算时间不是常量(大于O(1)),但是整体的算法复杂度依然是O(n)。这就让人产生的疑惑是,递归函数的算法复杂度该怎么去计算?很多时候,它不是一目了然的。

heap sort与quick sort的效率

今天看书说,sort的最低算法复杂度是O(nlogn)
而heap sort和quick sort都是如此。
那么为什么通常,我们用的都是quick sort而不是heap sort呢?
各自的优劣在哪里?

二路归并的算法复杂度

问题:A,B是两个Sorted Sequences.现在要把它们归并为一个Sorted Sequence.
例如,A是1,3,5,7,B是2,4,6,8,结果是1,2,3,4,5,6,7,8二路归并算法的细节我就不细述了,学过一点算法的人都会。
现在问,这个算法的复杂度究竟是多少?很多书上都说是O(n),但是我觉得不尽然。
它需要做O(n的平方)次comparison, O(n)次Select和Add.
如果Sequences内的元素是int这样的基本数据类型,那么comparison无所谓,所花的时
间非常少。
但是如果它的元素是长度为1024的整数数组。那么复杂度就大变了。
再者,简单点说,它的元素是字符串。怎么办?
这个算法复杂度就很难衡量的。我觉得,如果泛泛而谈,它的算法复杂度应该是O(n的平方)。
因为在算法复杂度理论中有这样一条定理,如果对每个元素的运算需要分两步,第一步
的复杂度是O(a),第二步的复杂度是O(b),那么整体的复杂度应该是O(max(a,b))。
这个定理通过数学中同阶无穷大的性质是很容易证明的。

可以把Palm当U盘用了

装了一个Card export 1.11,结果一同步就蓝屏幕(我的palm是m125)
无奈之下卸载,反复重起,换新的2.25
发现2.25真好,不用在 win下装任何软件。直接插别人机器上就可以用。

发现

Windows的pid都是偶数

电脑好了

检查结果如下:~
~
鼠标,坏了,待修。~
主板,90%以上的电容已经坏掉(一共11个),cpu周围的5个正在向外流水~
显卡:金手指严重氧化~
内存:严重氧化~
~
~
主要原因是因为老化和电源功率不够(最大功率305w) ~
~
但是就这样,擦一擦,居然还能用!~
他们建议我暂时不要修~
什么时候彻底开不了机器的时候再说。~
~
p.s.今天就花了2块钱的车费。~

机器坏了

刚来个朋友帮我查了下
主板和内存双双被烧掉了。
显卡有无问题暂时没有确定。
硬盘是今年春刚买的,没有问题。
电源可能有问题。
刻录机是今年刚拿去保修,换的新的。
显示器进水了。应该没事儿。

文盲开始读书啦~

上了3年大学,并不让我觉得学到了些什么。相反,我觉得我像个文盲。我决定多读些书。可是床边的书都太枯燥,于是去图书馆找小说来看。先是借了一本法国小说,《夜半撞车》,写这本书的人还没有死掉。看的我无比痛苦,仿佛要把我脑袋里很深的记忆要挖出来一样。看了不过30页,赶紧还了。我不喜欢看中国人写的书,太浅薄。然后发现在外国文学的架子,有本亦舒的小说。小西,还有谁,特喜欢她的小说。我也曾在网上下过她的小说来看,但是始终没有读完。于是,趁此良机,看书皮比较新,就扯走了。《喜宝》。还有一本,《没有季节的都会》。所幸我是先看的《喜宝》。我觉得这种文字浅显易懂又没有情节的小说最适合我这种没有大脑的人看。我不喜欢看带情节的小说,不喜欢看带情节的电影(A片和三级片的重要区别就是后者故事性很强,而前者则是纯粹的感官刺激)。我看书,尤其是看小说,不喜欢动大脑。我搞不懂干吗那么多人喜欢看侦探啊、奇幻啊、科幻啊什么的小说。那么复杂的情节那么多长的像火车似的的人名,累不累啊!《喜宝》很简单,女主角叫喜宝,出身贫贱,在剑桥三一学院读书,没有钱,靠男人养着。后来意外的遇见一个非常有钱有势力的男人,于是放弃学业,被之包养,然后花不完的钱呐……那是个。。。你说它没有情节吧,它还是有点的,否则那种干巴巴的意识流、嵌套在回忆中的小说,非让我看疯掉的。我喜欢这种,略为带一点情节的小说。例如《香水》。看起来不费脑子,哗啦哗啦一晚上就翻完了,然后知足的去睡。《没有季节的都会》讲的是几个中年女人结婚再离,再结再离,一边照顾自己一边拉扯孩子的故事。我对这种事情实在不感兴趣。婚姻对我而言,可能比硕士文凭之类的还要近,但是我懒得去想。我觉得那是另一个世界的事情。我不懂得。我也不想懂。其它的,最近正在看的,就是《complex analysis》和《algorithm design》。前者很薄,不过不是可以匆匆看完的。后者800多页,我捧着字典,一个词一个词的耐心的查,把所有不认识的单词都标出来,注上音标和意思。我很少这么耐心的看书了。我看英文书的时候很少带词典的。尤其是这个年代,PDA横行,谁还有兴趣捧着一本厚厚的牛津慢慢翻啊?我!因为我时间多,我闲,just so.800多页的书要看完是需要很大勇气的,对我而言。最近几年,我看书的速度已经到了,不可思议的慢。一本300页的《宽容》,居然让我看了一年多还没有看完。为此,我还…