暗黑杂谈

<%@ Language=VBScript %>

During Investigating an Interaction, I Monitor a Motion;

While I Monitor a Motion, I try to Deduct a Direction;

After I Deduct a Direction, I may Conclude a Connection;

From the Concluded Connection, I can Accumulate a series of Actions;

for English version click here

| 我的征尘是星辰大海。。。 The dirt and dust from my pilgrimage forms oceans of stars... （日记太长了，我就把它们另存在这里了）★★ 我的空间用完了，现在没钱买更多的space，只好找朋友借了一个镜像，大部分丢失的连接可以在这里找到。http://nickhuang.ihuahua.com/

黄教授讲习所
1.开始篇
2.TO BE OR NOT TO BE...
3.暗黑之独孤九剑
4.我是谁？（一) ★★
5.我是谁？（二) ★★
6.我是谁？（三） ★★
7.我是谁？（四） ★★ 8.明天就要嫁给我了 ★ 9.最后的希望（一） new! 10.最后的希望（二） new! 11.最后的希望（三） new! 12.最后的希望（四） new!

舒朗的天空
1.Let's date on someday
2.Can i have you in my arms?
3.Dream comes to be true
4.I stand alone in the rain
5.Don't say goodbye

DIABLOII电影剪辑

1. ACTI_1 疯人院

暗黑杂谈

坛主的心愿

杂谈匝坛，杂弹砸坛，别家灌水，咱这砸坛。

暗黑破坏神2是BLIZZARD(暴雪公司)一个游戏而已，不玩游戏的人很多并不屑一顾，（其中绝大多数的MM都是。。。）而且以本人的水平本就担当不起。无奈痴于酷爱，不得不硬着头皮来做一个不称职的小坛主，以便抛砖引玉让各位暗黑高手有个一显身手的地方。

杂谈匝坛，杂弹砸坛是仿照<围城>里不学武术的曹元朗所作的 狗屁不通的“新古典主义”歪诗的诗名-----“拼盘姘伴”。如有涉及知识产权的问题，希望曹氏后人尽速提出。

我的小小的BBS(中文）

网站数据

（ 日记太长了，主页只留三个月的，以前的另存在这里了）★★

黄教授和刘教授

1.女人==空调 ★★
2.台湾==寡妇
3.联合国==居委会
4.谈恋爱==做化学实验
5.苏文纨这个女人
6.唐晓芙==出水痘？
7.阿扁：我要做二奶！（1）★★
8.阿扁：我要做二奶！（2）★★
9.阿扁：我要做二奶！（3）★★
10.阿扁：我要做二奶! (4)★★ 11。以前的杂记 ★ 12。我从前天天跑步的地方--世界上最美丽的赛道

美丽的蒙城
1. 老港的风景。

2.对风景的陪衬---我的样子。

3.战斗在敌人心脏里--革命战友。

4。大教堂。

5。得了一支钢笔和一封信

来到了加拿大

杂谈杂议

1.三宝山小记

2.加拿大的怪事多

3.无理头--程序，音乐，同性恋

4.尼亚加拉大瀑布 ★★

5.多伦多随想

6.初到蒙特利尔

7.不妨就叫〈蛛儿的故事〉吧 ★

8.一个中国人眼中的加拿大（又名：少见多怪篇） ★★

9。 CEO==和尚

10。 闲话篇之不知所云

11。 惘思录-写在新年到来之前 ★

12。闲话篇之胡言乱语

13。闲话篇之闲言碎语

14。挚情篇之我爱王菲

15。唐诗试译

16。空谈辑

17。新西行漫记

18。 反对厦门PX（转贴）

快乐的学习时光

在TAV的日子里

一。Puzzle

A. PUZZLE ★★

B. Answer ★★

C. LastPirate

二。作业

A. Computer Education

B. Internet Courses

C. Exam

三。子非鱼，焉知鱼之乐？

A.天马行空(Knight's Tour) ★

B.爱因斯坦的问题（zebra puzzle)★

C.走迷宫（1） ★

D.走迷宫（2） ★

E.走迷宫（3）★

F.凑24的游戏（24game)★

G.墨尔斯电码（morse) ★

H.QuickSort(template)★★

I.DynamicList★★

J.未完成的海盗

四。下载

1。24游戏

2。天马行空

3。走迷宫的初始数据

在CONCORDIA的日子里

一。 子非鱼，焉知鱼之乐？

1。 我的字典★★

2。 feof的困惑

3。 Logic(逻辑类）★

4。 Matrix(1)★

5。 Matrix(2)★

6。 Stack★

7。 Detective★

8。 ArrayTest

9。 WordReader

10。PowerDictionary★★

11。Logic(improved)★★

12。SuperDictionary★★

13。Sentence

14。PowerLogic★★

15。CodeCompetition1★

16。CodeCompetition2★

17。CodeCompetition3★

18。CodeCompetition4★

19。汇编作业（1）

20。C++小游戏作业

21。汇编做的平方根算法★★

22。平方根求法的改进版★★

23。汇编作业（2）

24。C++作业极其简单地模拟Monopoly

25。Matrix(3)★

26。MyLib(MASM)★★

27。LogicSets(1)

28。汇编作业（3）

29。反证法★★

30。Relation(1)

32。Relation(2)

33。 Generator（1）★

34。WhoAmI★

35。RSA(1)加密系统★★

36。RSA(2)加密系统★★

37。RSA(2.5)加密系统★★

38。Generator(2)★

39。Counting★★

40。SpaceWalker★★

41。Depth-First-Search★★

42。Container

43。Partition★

44。Matrix3★

45。NumberDivider★

46。CountNumber★

47。Dijkstra★

48。Consecutive★

49。Prim★

50。Kruskal

51。Queue

52。SortMachine★

53。Cartesian

54。Fraction

55。DFS--Standardized★★

56。Zebra--DFS★★

57。Polynomial★

58。StackArray

59。DFSArray★★

60。Missionary★★

61。Message

62。NewKnights★★

63。NewWordReader★★

64。ArrayException★

65。StringSearch★★

66。 Poke

67。Sequence

68。Haskell1★

69。Reduce1★

70。Shuffle

71。Reduce2★

72。SimpleShuffle

73。Reduce3★

74。Crap

75。Haskell2

76。 DirViewer★★

77。Login★★

78。SimpleLogin

79。 Reduce4★

80。 LevelPrint

81。Dynamic-Static

82。Double-Library

83。 withoutDynamic

84。SortComp

85。Radix

86。 Schedule

87。TemplateArray★

88。makefile

89。 sortComp(revised)

90。shortest★

91。shortest(simplified)

92。 practice(1)

93。simpleScanner★★

94。 practice(2)

95。depend

96。depend(improved)

97。memoryManagement

98。 Practice(3)

99。AVLTree★★

100。MinMaxHeap(1)

101。MinMaxHeap(2)

102。Helloworld

103。MinMaxHeap(3)

104。MinMaxHeap(4)★

105。RealScanner★

106。CFGReader★

107。Table-Driven-Scanner★★

108。 ScannerImproved★★

109。 StrangeDictionary★

110。 LayoutManager

111。 WhyJava?

112。 CFGReader-CLF★

113。 CFGReader-RLR1★

114。 CFGReader-RLR2★

115。 CFGReader-First★

116。 CFGReader-Follow★

117。 CFGReader-Table★

118。 CFGReade-Parser★★

119。 CFGReade-LookAhead★★

120。 practice(4)

121。 PrefixSum

122。Philosopher

123。 SleepingBarber

124。ConsoleDisplay

125。ConsoleBoard

126。ConsoleBoard-improved

127。 Console-rummy

128。 AVLTree-Remove★★

129。 CFGReade-LR(0)★★

130。 CFGReade-LR(1)DFA★★

131。 Console-Rack

132。 Hash-Table★

133。 PrefixSum-Multi

134。 PrefixSum-final

135。 Console-Player

136。 CFGReade-LL(1)Symtab★★

137。Platform&Bridge

138。 LL(1)Symtab-debug★★

139。 WordRover(1)

140。 WordRover(2)

141。 LL(1)-3-add-code★★

142。 WordRover-ultimate★★

143。Parallel-Rank-List

144。 WordRover-perfect★★

145。 Transaction

146。 CFGReader-moon1★

147。 CFGReader-moon2★

147。 CFGReader-moon3★★

148。Multiple-Reader

149。24Revisited

150。 Vigenere

151。JapanCode

152。Polynomial-revised

153。 Dependency-Reader

154。 Dependency-Set

155。 Dependency-Key

156。 Dependency-Canonical

157。CallBack-Template

158。 DependencyApplication★★

159。 Random-Data-Generator

160。 QAR-Project ★

161。 Enigma-failure

162。 Enigma-Success★

163。 SQLServer-Connector

164。 Replace

165。 15Puzzle-Failure

166。 SequenceDFA★★

167。 15Puzzle-AnotherFailure

168。 water-allocation

169。 BloodTest★

170。 BloodTest2

171。 Labyrinth

172。 Snake

173。 MySet★★

174。 MySet-PowerSet★★

175。 Huffman

176。 NaughtyBoys

177。 Elevator1

178。 Elevator 2

179。 repeatFinding

180。 tracker

181。 file-transfer

182。 SimpleVector

183。 FTPServer

184。FileTransfer★★

185。Lempel-Ziv-1

186。 UDP★★

187。LCS

188。LCS-experiment

189。 monotone

190。 monotone-analysis

191。goback-N ★★

192。Dynamic-Programming★

193。LCS_counting

194。goback-N(largeSequence)

195。 PocketRuler

196。 Bellman-Ford

197。 Scheduler-I ★

198。 Scheduler-II★★

199。 Template-Vector(failure)

200。 extensible-hashing★

201。 bitmatrix(trivial)

202。unix (practice)

203。 searchString-Linux

204。 dynamicArray-Linux

205。 SRC-Linux

206。 TicTacToe ★

207。 File-Server1

208。 3-CNF(naive)

209。 3-CNF(slight-improved)

210。minishell ★

211。file-server2 ★

212。 quantum-collision ★

213。 quantum-scheduler ★

214。 inexactmatch

215。 bigNumber(trivial)

216。 inexactmatch-DFS

217。 inexactmatch- pureC

218。 GlutObject

219。 CNF-Converstion

220。 Transformation(trivial)

221。helicopter

222。 cnf-sat

223。 15puzzle-revisited

224。 GlutObject-face

225。 GlutObject-Success ★

226。 helicopter-camera

227。 alpha-beta-prune

228。 zebra-tester

229。 zebra-brute-force

230。shortest-path(scheme)

231。HEX-game-human-AI

232。 ID3

233。LatinSquare(trivial)

234。 FirstJava(RMI) ★

235。 gifPartition (first MPI)

236。 BankServer(CORBA) ★★

237。Quantity(template)★

238。MinimalWeight★

239。MinimalWeight(MPI-Imp)

240。 Comb-Algo-Prog

241。 BankServer(Web)★

242。 MinimalWeighty(Final)★

243。Trotter-Johnson

244。max-clique

245。 sudoku(trivial)

246。Primary-Back(huge)★★

247。Danckinglink★

248。N-Queen★

249。Comb-Algo-Final★

250。 HowEasy

251。remotewakeup(fake)

252。Reg-Sample-Sort

253。ConvexHull

254。ConvexHull-display

255。 rootReader(trivial?)

256。simplePolygon(trivial?)

257。hibernate(practice)

258。ply-reading(practice)

259。outOfCore(preprocess)

260。RenderEngine(NoWorking)

261。trianGO(game of GO)

262。LinuxDeviceDriver

263。OutOfCoreRendering

264。GPU-Programming

265。chopper2005(forgotten)

266。OutOfCoreRendering（final）

267。zebra-again

268。bmpReader(temporary)

269。jpegEditor ★

270。jpegEditor(Intel-IJL) ★

271。MAPI-readMail(joke)

272。multi-pro-con ★

273。threadTest(test)

274。renderBox(huge)★★★

275。matching

276。 basicMessage(practice)

277。prerequisites(2versions)

278。TopCoder(2001-semi)

279。TopCoder(2002-semi)

230。My-GDI-SDK(link-only)

231。MySQL(link-only)

232。HttpServer(link-only)

233。HttpServer(multi-thread)

二。So it is said.

So it is written.

1。概率论的问题★

2。离散数学里优先级的小问题

3。不知所云的证明★

4。模糊逻辑的模糊认识★

5。空即是色，色即是空★★

6。子曰诗云

7。白马非马也

8。数，数，数

9。往事如烟

10。再次挑战(scheme)

三。Concordia

1。CodeCompetition

2。CodeCompetition No.1

3。CodeCompetition No.2

4。CodeCompetition No.3

5。CodeCompetition No.4

6。有客自远方来

四。脚印（作业）

1。 Comp229

2.。 Comp335

3。 Comp352

4.。 Comp348

5。 MyView

6。 MyReview

7。Comp346

8。MyIdea

五。下载

1。MyTree

2。平方根的汇编求法

3。改进的平方根求法

4。汇编作业体验版

5。逻辑矩阵的输入

6。逻辑矩阵的输出

7。国际象棋的棋盘

8。国际象棋的棋盘代码（你可以不看的呀！）

9。逻辑类的头文件

10。逻辑类的cpp文件

11。逻辑类的lib文件

12。汇编作业加强版 （win98 OK,XP 有鼠标看不见的问题）

13。最短路径的输入矩阵。

14。洗牌的结果。

15。要最小化的DFA

16。SSH的客户端

17。图的矩阵

18。SpySweeper

19。Scanner的输入文件

20。CFGReader的输入文件

21。奇怪字典的输入文件

22。奇怪字典的测试文件

23。WordRover体验版

24。comp346的答案

25。MOON-MACHINE

26。我的compiler project

27。Dependency

六。朝花夕拾

从前的日子。。。

1。 2002

2。 2003

3。 2004

4。 2005

5。 2006

七。我的财富

1。DVD's (正版）

2。DVD's(盗版）

3。我最喜欢的电视节目

八。诲人不倦

1。comp6231（2006夏天）

2。comp5461（2006秋天）

3。soen423（2006秋天）

Legend:

1。 ★ 平均水平

2。 ★★ 较好

二月三日 今天天气很好吗？ 记不清了。

感觉精神不好，洗衣服的工程又推迟了，因为我又找到了一件替换的衣服。地图的算法远远比我想想的复杂，实际上我已开始完全没有意识到这是有关地图的算法，我以为简单的flood算法就够了，可是。。。如果我需要的仅仅是rgn是否需要silouette？我想不清楚，下午我以为convex-hull就可以了，后来吃完晚饭才发现地图比convexhull复杂的多，最后我得到了一个不准确的结果，有很多噪音，首先小的rgn丢失了，其次有很多尖角的rgn有多出来了，输入美国地图我得到了230个rgn，比美国的州多出了将近两倍，当然本来有些地图边缘不规则多出来了，大的州看上去是对的，丢了夏威夷等小岛，还有就是四色问题，着色是一个很复杂的问题，对于下一步计算rgn之间的相邻关系是在是一个很不好解决的问题，我当然可以使用getrgndata从变原来着手可使微软的rgn的定义可能和我想的不一样，边缘的点是否准确十个问题，而且计算量也不小，总之算法不很清楚。更糟糕的事我心情格外的不好，想起了很多很多，关于ll也许。。。早上看了一部<china syndrome>的老电影，这个名字和中国一点关系都没有，是一个核技术的名词，觉得这个世界实在是很不安全，假如一两个核电站的操作员突然有什么离奇的想法的话这个地球可能就成为地狱了。<election〉这部电影也很有意思，印象深刻的事美国的高中生的学生会主席的竞选的认真程度超过了中国国家主席的竞选，当然难度也超过了中国任何一级官员的选举，如果美国一个普通高中学校都是这样的话，你可以想象这两个国家的人的差别有多么大，社会发展到一定程度对于人的需求往往不在需要传统上的所谓“知识”，比如在中国的传统教育中心算能力的要求很高，这对于很多智力发展也许是对的，但是这是一个open-question，如果计算器可以做的工作是否还需要人去做？我想更多的时候要求的是怎样使用计算器而不是把人变成计算器。当然很多人不同意这一点，这也不奇怪，我也不是完全否定它们，总之这个问题不那么简单。

msdn说的不准，也许是因为我得版本太旧或者xp改掉了什么，GetSystemPaletteEntries返回值总是0，同时你想用null指针获得palette的个数也不会成功，同样适用GetDeviceCaps使用sizepalette也不行，总之我只好数了一下，是10个，记住就好了。此外想了半个晚上我猜想我找到了微软的算法，应该是一个computation-geometry最简单的办法，就是用scanline来扩展rgndata的办法，排序也只需要对set的比较方法的functor定义为从上倒下，从左到右，试验一下看看对不对，然后使用extcreatergn检验一下我得结果。

非常非常非常的复杂！看美军的训练我感觉有一点就是，不需要勇敢聪明的士兵，但是需要勇敢聪明的军官，下级军官素质决定了部队的战斗力，感觉pla现在的士官水准大概不比八旗兵强多少。

看陈文茜访问谢长厅的访谈感觉这个人其实还真的是象李敖评价的所谓“全台湾最聪明的人”，相比之下可能那个什么马英九实在是一个绣花枕头，但是所谓大巧不工，在美国人民经历过尼克松的水门事件后向卡特这样的老实木匠反而会成为人民的宠爱，这就是民主。陈文茜这个肥婆其实还是比较伶牙俐齿的。 陈水扁跑到南海去干什么？我有一个大胆的假说，这是从“中天新闻”得来的启发，就是当初美国人很关切阿扁会不会再下台前挑起两岸冲突比如扣留大陆渔船，我当时评论说大陆不会在乎个把渔民的生命财产所以不会有用，但是如果在南海挑动国际纠纷却不能说没有一点机会，所以这也许是一个投石问路，或者说阿扁在下台前没事干，邦交国都跑遍了，没地方去了，所以只好到处找地方跑，所以就去了。

二月四日 今天天气很好吗？ 非常的好！

昨天晚上写了一个非常复杂的mergeRect的函数，但是效果并不好，而且现在看来这个与微软的rgn的实作不相符，比如圆的rect分割就是一层一层的，你需要解决的事degenerated rect也就是segment如何与邻近的segment融合为一个rect的问题，而不是把邻近的rect分割合并为最大的rect，因为创造一个最大的rect连带无数朵小的rect并不见得减少了rect的总数，所以没有什么意义，而且没必要。另外一条路也并不好，我曾经想用path来创建rgn，但是path如果碰到分叉，合并问题一样很复杂，更糟糕的事我得试验证明beginpath内只能是单向，就是说你的path不能“分进合击”最后汇合，而必须要“一条路走到底”，类似于一笔画做法，这个更加的复杂。我现在唯一不太情愿的就是把相邻的segment融合为一个rect的时候产生的误差的问题，简单的取平均肯定有不少问题吧？（且慢下结论，如果我把方向问题留在最后合并时候在解决不就好了吗？比如先建立一系列的subpath，然后。。。我觉得这个比较的好！好的。）

二月五日 今天天气很好吗？ 不知道。

只有看《yes,minister》才能让我暂时忘记我得烦恼。CreatePolygonRgn有毛病，因为这些顶点在使用PtInRgn的时候居然返回false，这是怎么回事？左上角属于rgn，右下角不属于rgn，这是有原因的，好像是连续性的问题，比如黑白图，对角线的从黑到黑，与从白到白不应该交叉，但是对角线分别为黑白的话就会交叉，于是只能去掉一个对角线的从属关系，这样一个rgn内部不再有这种交叉的问题。

二月七日 今天天气很好吗？ 下雪了吧。

怎样解释int a=25;int b=a++*a++;结果b=25？原因很简单但是我却把expression-evaluation和operator的precedence混在了一起，表面上看运用operator-precedence来看a++应该同时开始计算，但是，从函数的角度讲*是一个函数要先进行参数evaluation，a++是一个expression所以，要evaluate，结果都是5，因为原本a++就是返回没有inc的值，所以，我觉得有人问这个宏有什么错？#define SQUARE(X) ((X)*(X))我是觉得没有什么错，错也只在使用者的逻辑，就算是你加上挂号这么做(a++)*(a++)了明确了优先级结果也是一样的。当然这个宏是错的：#define SQUARE(X) (X*X)，这个事我以前经常犯的错误忘记了会有操作符优先级引发的问题，（就是不能有expression作X）

#define SecondInYear 60*60*24*365UL结尾这个ul很重要，我还是第一次见到这个。

__FILE__这是与文件的文件名。 美军的伤亡为什么小？因为战场救治好，越战期间99%marine的伤员都生存了，你想半个小时内medevac的直升机就能赶到战场运走伤员这是什么样的效率?越战期间大部分是海军陆战队在作战。有一个奇怪的现象我解释不了，如果基类的constructor声明在protected里面，那么子类是不能调用的，而其他任何protected的方法或者数据成员都没有这个问题，为什么？

<The Pursuit of Happiness>是一部非常让人感动的电影，will smith的确是一个出色的演员，你很难想象一个人是怎样在那样艰难的日子里度过的，我以前觉得中国的穷人日子过得很苦，美国的穷人要富裕的多，可是很多时候日子的艰难是人的心理感受，比如你处在一个人人都需要尊严与体面的社会里失去这些的痛苦远远大于人人都不在乎的社会里来的大，痛苦往往不仅仅是来源于物质上的匮乏，肉体的痛苦又时候比精神来的容易克服，有时候。特别是一个非常smart的小伙子非常非常的有进取心，有责任感追求幸福生活的勇气与能力让人觉得特别羡慕，当然也感觉非常非常的敬佩，但是那绝对不是普通人可以做的到的，想想看一个人每天紧紧靠几块零钱生活，走投无路以至于在地铁厕所里借宿，同时在顶级的投资公司力作没有工资的实习生，唯一的希望是全班几十人里面只有一个有机会得到六个月后的工作机会，不但要养活自己还要照顾儿子，每天晚上在交汇慈善机构排长队等待避难所里的住所，被房东扫地出门，白天推销，以至于要靠卖血暂时维持生活，等等，这也许就是所谓的美国梦，因为不管怎样他始终没有失去希望。这是一部非常好的电影，中国人应该了解美国的穷人的生活，可能比加拿大的穷人更加的困难。

二月八日 今天天气很好吗？ 没有下雪。

我花了很久也没有找到重载"reference-operator"的办法，主要是语法上和"address-operator"没办法区别，应该是有办法吧？如果有谁知道这个就是专家了，专门搞奇技淫巧的专家。what is new？

二月十一日 今天天气很好吗？没有下雪。

很久没有玩坐标变换了几乎都忘光了，或者这是一个借口因为以前也不是很清楚，gllookat实际上相当于camera设在原点，向z轴负方向看去，那么你要进行一个相应的变换，比如lookat的eye是[0，0，-10]，center是[0，0，-8]所以你看到的matrix里面第一项是负的，我为此想了好久都不明白，（我都忘了我是怎么使用lookat的，还以为就是纯粹的object变换坐标呢。）所谓的viewport-transformation我一开始不是很清楚，因为openGL里面我没有看到变换的矩阵，modelview,project都有matrix为什么viewport不需要呢，后来才明白，它是不用matrix的，用一个vector表达，viewVector(winx,winy, winWidth,winHeight)所以，你就知道了，求得cananical的[-1，1]的小立方体的坐标后，进行一个乘法就可以了，不过要记住，winWidth-1,winHeight-1，同时window坐标是原点在左上角，所以最简单的应该是x=(x+1)*(winWidth/2),y=winHeight-(y+1)*(winHeight/2)

差不多将近一天我才想起了右手法则，真太糟糕了，因为我忘记了这个最基本的常识于是我发现所有的逻辑都不对，由此我也惊叹我们周围有一些宇宙最基本的法则，我以前常常在想为什么基本粒子要有一个自旋的属性，难道这是宇宙最基本的特征值吗？我想应该是的，所以，掩饰一下我的过错就说我又重新发现了最基本的物质属性：自旋方向，笛卡尔坐标不是一个随意定义的坐标系，在二维的时候我是靠记忆知道x,y的相对位置，但是在三维的时候你必须要依靠右手，当时我在学图形课的时候其实没有意识到其中的意义，opengl的坐标变换在第一次学习的人眼中实际上是基本的照猫画虎。所以总结一下，opengl里面的matrix是这样的顺序，modelviewMatrix*projectMatrix,所以后来的modelviewmatrix都是从左边乘过来，因此在vect*currentMatrix的时候相当于最左边的最先变换，（也许用stack来实现更加准确），那么viewport-transformation相当于scale winWidth, winHeight,translate winx,winy，当然也可以写成一个matrix，不过我的疑惑是为什么opengl没有开放这个matrix给glget？也许因为平台的缘故吧？这个东西交给glut之类的应用library去做，或者是因为还有困难不能统一？

看《yes,minister》有一集说的是部长大人批评公务员是非部分是moral-vacuum，但是最后他自己也不得不做同样的事情，晚上边喝whisky边向太太诉苦，太太安慰他说，他和公务员不一样，他还没有真正成为moralvacuum，只不过有conscience但是不用罢了，好像whisky priest。我听了很有同感，很羡慕whisky，不过我还是偏好red wine。

二月十三日 今天天气很好吗？没有下雪。

hp的说法是现在版本的mpi library（libmpi）即便是你使用多线程哪怕多个县城都在call-mpi只要不是同时都可以，只有在多个线程同时都调用mpi的时候才需要链接libmtmpi，而以往的lib则需要link -libmtmpi哪怕你自己保证多个线程每次只有一个调用mpi，所以这就是我那天小实验的疑惑，我用pthread作了多个线程调用mpi，我当时没发现我使用默认的lib有什么问题，其实问题不在编译，而在运行，这类问题有时候小实验是很难发现的，编译命令为mpiCC -lmtmpi source target我总是忘记不需要lib字因为这是默认的，只要你的library命名为libxxx那么编译的时候就只要-lxxx就行了。TNND这些都是纸上谈兵，我从来没有尝试过，结果一实验就不行了，首先确定如果是普通的non-thread-compliance-library调用mpicall一定会出错，但是使用-lmtmpi链接的时候有出错undefined reference to `MPI_Type_create_subarray'这个是明显的linking的错误，但是我尝试了各种-L都不行为什么？

二月十六日 今天天气很好吗？非常好。

脖子疼得要死。我猜想boundingbox对于occlusion有很大的关系，所以。。。linux下STL的实现非常的不同，set.insert如果take一个iterator指示插入位置，函数并不返回iterator，同时equal_range如果找不到的话也许返回的就不是一个区间了，因为STL的区间都是[)的半开区间，你说怎么返回吧？

二月十八日 今天天气很好吗？ 不知道。

老生常谈的问题，windows定义的rect或者说region的面积是指包括左上边，左边，不包括右边，右下边，所以计算面积right-left不需要加一，这个启示本来都是正常的想法，不知道为什么我会想到加一？也许因为我总是有画轮廓线是region本身的概念吧，至少contour-tracing是这样做的，这也是一个小的区别，一条水平线段，用window的rect表达bottom=top+1，可是在silhouette里面也许top=bottom，这比较的讨厌吧。

看美国独立战争，非常的令人感动，独立战争之初民意是怎样的呢？只要看一看<common sense>的销售量达到了圣经的销量就知道在大街小巷里人人都在心里呼唤着推翻君主制。华盛顿曾经遭遇了一连串的失败几乎是山穷水尽的地步，在圣诞节之前，国会甚至号召所有的州在同一天祈祷上帝，在出击德国雇佣军的前夜华盛顿自己选择的口令是victory or death。在当时应该有一首非常令人感动的民歌《Johnny's Gone For a Soldier》其中的歌词讲述的是一个美国民兵的恋人怎样竭尽全力支援前线，倾家荡产给自己的男朋友买一支步枪，这样的军队的士气当然是英国职业军队所缺乏的。纪录片里说在十二月的寒冬里大陆军还有很多人是赤脚或者使用布缠足。林肯好像也被俘虏过？是投降。独立战争是一场旷日持久的战争，美国的通货膨胀大概有2500%，大陆军里有18000人当了俘虏，有一半死在监狱里，独立战争的艰难远远超过了我的想象，因为我忘记了美国人的对手是当时的世界霸主，大英帝国。

天天看英国的官僚体制，回过头来看日本的总理大臣感觉还是有不少差别的，但是有一点我觉得比较难以相信，就是日本妇女的地位真的如《再见了总理》中那么高吗？但是有一点我的印象非常的深，日本的官僚平民化已经一点也不比欧美国家差了，总理出门并没有让十字路口的警察改变交通秩序，总理夫人对于当不当总理一点都不在意，甚至冷嘲热讽巴不得早点辞职走人，对比法国的第一夫人上台就离婚就可以理解在一个平民化的政府里总理绝对不是什么人人都热衷的特权阶层，东亚政府中也只有日本有这样的雏形。

咱们的人民政府来了一封信说多给了我将近三千块，我不知道这是上一次的还是什么，反正我从来都搞不懂事怎么回事，总之，只有信政府的。外面的天气很好，下着小小的冰粒子，天气一点都不冷，可是我的心里却很冷。从来没有这么感觉沮丧，生活仿佛是一个轮回，不知不觉又走回了起点，人这种动物最多只有十年的信仰。

二月十九日 今天天气很好吗？不知道。

以前的东西又忘了，(*it+=3)=100;实际上*操作符优先级最高所以变成了模板类的type的引用+=然后再赋值，所以iterator丝毫没有位置的变化。

在美国独立战争期间，魁北克是英国一个十分重要的要塞，与补给基地，据说那里储存有权北美最大的弹药库，美国人派了两只远征队去夺取他，结果付出了成千人的代价几乎全军覆没，而魁北克方面伤亡几乎微不足道，大概十几个人吧？

二月二十一日 今天天气很好吗？ 是的。

我把prerequisites改成了heap的版本，现在就简单多了，当初我不理解这个问题，总认为可以一步到位计算sorting，问题是真正recursive的数据结构是不存在的，数学家认为理所当然的东西不一定存在于现实中。

花了半天时间安装新硬盘及操作系统，这是一个很好的选择，原来的系统我基本上不去动他，在新硬盘上装新系统，万一我需要运行久系统或者有什么软件设置等等的我还可以靠改变bios启动硬盘顺序切换回旧系统，perfect。

二月二十二日 今天天气很好吗？是的。

昨天折腾了快板天明白了一个简单的道理，使用ghost实际上变成了编写脚本，因为ghost只能在dos下使用，所以，你只需要用symantic的工具制作一个启动盘，但是因为我没有软驱，结果一直不知道怎样制作启动光盘，可以使用subst drive dir虚拟一个软驱，然后把ghost-boot盘存在那个虚拟软驱然后可以长启动光盘就可以了，实际上这些都不是必需的，用nero直接制作启动光盘也是一样，如果要使用鼠标，加载一个mouse.com就行了，这些东西我记得小时候玩游戏的时候经常作，现在都忘光了。

二月二十五日 今天天气很好吗？是 ，才怪。

我决定每天至少要再topcoder上作一道练习题。生活变得空虚无聊，没有什么目标。看了一片揭示当年《为了六十一个阶级兄弟》的内幕报道感触良多，这篇文章是我当年读中学的课文，印象还是挺深的，当时年技校不会去问为什么，的确没有人去问为什么会有那么多人突然中毒，当然即便你问了给你的答案也不过是混进革命队伍的反革命分子心怀不满的投毒事件，其实原因很简单，有人这么做是因为他们感觉不幸福，受到了不公正的待遇，这在每个社会都存在，GCD的解决办法很简单，一个词就是阶级斗争，在一个词就是你死我活，这样一来什么问题都没有了，因为阶级斗争不可调和这样的情况不会消失，因为你死我活这样的结果你不会去抱怨，能活下来就不错了。今天有人提所谓“和谐社会”真是让人好笑，三十年河东，三十年河西，终于开始正视社会成员中的哀怨与不满。想想看，连春节都要在工地上修水库，每天还吃不饱，干活没有出全力就被批判，这比当年封建帝制逼迫农民服徭役强在哪里？或者我还是没有完全把这个政权当作封建集权制来看待？

一整天都在看在伊拉克的华裔美国大兵陈果的博客，很有些羡慕因为他做到了很多我们普通人做不到的，如果我能够年轻时随也许我也还有勇气去从军，可是。。。

摘录了一小段他的日记，我一直以为他说的是他的笔记本电脑，可是结果竟然是枪，哈哈，有意思。

我承认，我是个花心的男人，我喜新厌旧，走马灯式换女朋友，但是，我敢发誓！我对我每一个阶段的女朋友都奉为女神，疼爱有加，百般呵护，绝不许他人染指！！！
我的女朋友是美国人，出身显赫名门，她高贵骄傲，完美无暇，是个冷美人。她从来没有跟我要过华丽的首饰与时装，从不装B追求烛光晚餐鲜花蛋糕咖啡的小资情调，她从不在乎我是个士兵，她容忍我的一切缺点，从不指手画脚对我吆三喝四，从来不吵着回娘家。她，甚至没花过我一分钱．．．．．
她24小时与我相依为命，形影不离，无怨无悔，她默默地陪着我在沙漠的星光下散步。默默地看着我写她看不懂中文，她陪着我去装甲车，食堂，训练场，游戏机房和宿舍，即使我们同床，我的室友们也都熟视无睹，因为他们知道，我爱她，我离不开她。我们是一个生命共同体。。。。
她性情钢烈，对她不喜欢的男人毫不留情！她容不得她不喜欢的男人靠近她的身体，她一开口绝对令他丧魂失胆！肝脑涂地！粉身碎骨！！
我知道，总有一天我会抛弃她，我不再需要她了．．．．
我会永远怀念她，但是我不会伤心。也许她很快会找到下一个男人，不再记得我－－一个来自中国的美国大兵。

她就是我的恋人－－－ 枪！！！

二月二十七日 今天天气很好吗？是 ，才怪。

topcoder的1000的题目我通常要做将近一天，因为有时候感觉很累就停下来休息一天，结果题目没看清多做了很多麻烦的功能，又因为我的中国造的计算器居然出错害得我找了半天的bug，这很骇人听闻对吧？又听说过计算器计算出错的吗？反正我的这个总不对，明明可以用整数计算的返回精确值的，可结果却是浮点数的近似值。先存一个版本吧。

看马英九和谢长廷的电视辩论会感觉不论哪一个人都是一个社会的精英，美国总统大选的候选人辩论会更加得好，所谓社会政策，治国之道，领导理念这些东西其实是非常复杂的决策问题，绝对不是普通人能够一朝一夕所能判断的，但是最起码这些东西必须拿到台面上来讨论，一个社会的进步程度最根本的标志是他的决策效率，人民本身的勤劳善良聪明才智并不是社会进步的直接体现，这正如一个人的 的能力天赋各不相同一样。如今中国的制度是有极大的问题，问题就在于行政效率，什么民主自由都不是根本目的，根本的目的是效率，但是民主自由反过来是保障效率的最好的手段，这一点我觉得才是核心。

ctv的晚间新闻播音小姐好像换了，是同一个人换了造型还是换了一个人？我的认人能力有很大问题，不知道这是否因为我现在思想跟接近电脑？（自吹自擂），应该是两个人。那个小妞儿戴眼镜很清秀的。

stryker说他所在的部队美军第二装甲骑兵旅是美国四大独立率团之一，这消除了我的疑惑，我一直以为它属于美国第一个骑兵师。很好。

二月二十八日 今天天气很好吗？是，才怪。

下载了一个mysql玩一下，登陆就是mysql -h host -u user -p pword，其中默认的是root。总的来说c-api要比什么php之类的清除多了，至少我不会觉得被人玩。现在经过好几年才慢慢开始明白开源的好处，这些东西是当你有了一定基础以后才会有的体会，当年Z说得好，微软的东西是对用户友好不是对程序员友好，unix/linux相对来说要对程序要友好一些。

F**K,费了我整整三个小时才搞明白存储blob数据的时候也就是存一个图片文件之类的二进制数据再sql里面你要是用特殊的“escape”字串，再mysql里面就是调用一个mysql_real_escape_string的函数替你封装，记住传出参数代表 经过“调制”以后的字串长度，我就是在这里粗心大意费了很久很久都没有找出来指针的错误，同时记住sql里面的双引号与单引号没有区别。

二月二十九日 今天天气很好吗？ 非常的好。

我大胆的说一句，如果再windows下编程如果没有透彻了解dll那么等于还没有入门，所以我现在就是还在门槛上。1。同一个dll能否被load两次？首先文件名包含路径名，所以如果路径也一样windows是不会让你loadlibrary两次的，因为内部有一张表维护当前的loaded dll。如果你调用FreeLibrary那么等于清除了表。其次，window很搞笑的，当年栽linux下为了防止别人删除一个文件你就运行一个background程序打开这个文件，这是一个拙劣的办法但是至少还可以，windows好笑的事如果你要删除那个已经被loaded的dll,不行，可是你可以把他拖拽移走！这实在是太搞笑了！！！结果我在运行期把一个已经被使用的dll替换了另一个版本！这实在是有些匪夷所思，当然了运行的程序如果不freelibrary再loadlibrary也不会受影响，可是。。。2。我的记忆力太差了，每次再c++程序里面调用dll里的函数总是忘记name decoration的问题，如果你调用的时候想用原来代码的函数名，那么dll里面第一是用默认的__cdecl其次，如果实在c++编译器下使用extern "C"把函数的名字装饰去掉，所以就是extern "C" __declspec(dllexport) type __cdecl funcName(paramType...);__cdcl是为了保险因为不一定你正确设置了默认的调用约定吧？3。老生常谈，dllke亿看作是另一个程序，windows德kernel的对象比如文件handle之类的不透明的东西都只有在本地有意义，越界无效，linux里面有相关process文件列表继承的独特属性，windows好像不是天生的，所以把一个文件handle传递个dll当参数是无意义的，当然好像有个所谓的“共享的”办法，创建的时候起个名字，大家就可以共享了，听说过没试过。

三月一日 今天天气很好吗？ 开始下雪了。

使用platformSDK你唯一需要记住的就是，不要shi用原来的vc6的basetsd.h因为微软更新了一些基本的类型定义，大概是为了于64位兼容的问题吧？（我猜的。）不要把platformsdk的路径加进来，拷贝单个没有的.h和.lib到当前vc相应路径，这是比较干净的办法。这样只需要更新一个basetsd.h文件，尽量保持原来的vc6。

如果使用httpAPI来做一个httpserver的时候，最好定义一下UNICODE因为url都是unicode，同时要记住localhost是不能解析的，因为还没有dns服务器吧？所以使用http://127.0.0.1:80/记住最后的那个slash是必需的！把微软的例子拷贝了一下就做了一个简陋得http-server，以前可能也是照猫画虎但是始终没有理解，什么tomcat之类的都去见鬼吧，明明一个简单的玩意被告成了一个吓人的东西。当然那时我被吓得，我是吓大的。

英国媒体曝光了英国的哈里王子在阿富汗服役的消息，他只好回国了，我非常非常的敬佩这个年轻人，不仅仅是因为作为王子身先士卒，而是因为欧洲贵族阶层的子弟的培养传统让大多数东亚家庭感到生子当入哈里王子。

一开始我有一点转不过弯子来一直在想我怎样写一个http的客户端？后来才想起来不就是ie吗？我当然也可以模仿ie弄个无界面的包装一下packet发送，不过这个现在还不需要。宽字符前面加一个L，printf里面的%s改称%ws。在重复一个基本的基本的东西，以后一律用TCHAR这样只要定义UNICODE宏就可以选择ansi和unicode两种了！！！我始终没有unicode编程的概念原因在于没有一定要使用的原因，现在再http里面必须了，所以总算有原因可以用了。

终于发现IE实际上非常的强大，他已经帮你做了很多很多，为什么IE能够显示jpg图片，因为他要自己去分析文件头的部分，因为http是一个基于文件的协议，他才不管三七二十一反正都是文件。

三月二日 今天天气很好吗？ 非常的好。

NAT映射端口始终不成功，为什么？肯定还是我没搞明白，我的router-modem上的计算机映射之后并没有显示public-address这也许说明我没做对？当然现在局域网是没有问题如果防火墙关闭的话，或者设定exception程序，及其exception得端口，二者缺一不可，我当时以为制定程序自然就制定他所需要的端口，看来防火墙没有这样简单，也许是做不到，也许是为了更席位的控制，总之，还要再试验。现在这个市道太乱了，我的电脑里面充满了各种各样的病毒与木马，我重装系统之后我感觉我并不是真正的administrator而是一个假的，听上去匪夷所思，可是看看我的dos吓得homedirectory居然使administrator.montrealXXX难道这不奇怪吗？

如果想知道当前可执行程序自己的文件名，可以使用GetCommandLine,注意使用PTCHAR来兼容ansi/unicode，（这里面有些东西还是不很清楚，winmain,main的argv好像是不能使用unicode的，所以要自己去调用commandlinetoARG之类的函数？？）GetProcessWorkingSetSize给你一个清晰的系统分配的page多寡，GetProcessIoCounters可以统计程序的i/o多寡。以上不太对，获得当前可执行程序的全名应该使用GetModuleFileName，因为其他的命令行并不一定包括路径，startupinfo又是一个和window关系很大的东西，比如window的大小位置title,desktop等，environmentstring更加不沾边，GetCurrentDirectory和window模仿linux的getcwd一样并不一定是exe的路径。关于防火墙的管理的api是一个INetFwMgr的COM接口，定义在netfw.h里面，这个在MSDN里面找不到，要去platformSDK里面去找。

试验了很久端口映射总是不成功，但是把我的电脑设定城DMZ确实可以，现在等于那台电脑的private-add被完全映射到了internet，当然在局域网内部访问的时候还是要使用局域网的地址，当在internet的时候可以使用public-ip来访问。mysql输入了大约七八百张照片就出错了，也许是什么内存资源忘记释放了，明天查一下吧。

三月三日 今天天气很好吗？ 好像不是。

sql有个问题，因为它本身并不需要care unicode，所以我不应该全部都是用_TCHAR，但是如果我的insert的数据里面又unicode我又必须在insert与距离面嵌入TCHAR，这个非常的啰嗦，存储的二进制数据当然应该用char*但是如果有的field使用wchar，又必须不停地在_stprintf和sprintf之间转换，也许asp,jsp之类的脚本takecare了这些？这就是用纯粹的c接口调用mysql的麻烦处。再mysql用户界面上你可以用\T输出到文件，而不是在一开始的shell上直接调用c:>mysql mylongin.sql这样不行的，因为mysql会是用默认登陆本地的mysql而不察看mylogin.sql里面的参数。

也许是我昨天记错了，我的DMZ的mysqlserver现在不能使用private address192.168.2.x了，必须使用public address，这实在是混乱。到底是bell在捣鬼吗？mysql奇怪的语法使select的临时数据集必须要加挂号给于一个as aliasname，我记得以前oracle不需要，对吗？我的记忆力太差了。我实在是糊涂，因为mysql再windows里作为service存在的，所以是不能够直接用mysqld-nt启动的，需要使用net start mysql, net stop mysql来控制，同时昨天的错误终于找到了就是server端得max_allowed_packet太小的缘故，因为blob数据会大于1M所以default的设置不行的。

三月五日 今天天气很好吗？ 下雪了或者下雨了。

httpapi有不少的问题要去处理，我首先不知道怎样传递多幅照片，单个照片firefox也不认，ie虽然正确显示但是只有第一张说明response德packet我传的不对，并且很快就会爆出64或者1229的错误，大概是什么netname错误，现在还不清楚是怎么回事。今天偶然看到msdn上面的directio部分，抄了一个例子检查我的营盘结果大小少了一点，不知道为什么，这个结果和“manage computer”上的一样，但是和硬盘的大小就是不一样，我怀疑会不会硬盘厂商为了招揽顾客把十进制的40G将错就错，就是说40x1000x1000x1000就是平常说的40G和二进制的40x1024x1024x1024当然差了不少。那个函数叫做devicecontrol。#操作符很有用，我这两天总是位sql的statement烦恼，现在好了用这个macro。#define stringer(x) (#x)或者不加挂号？这样就省去了自己给每个但双引号加\的麻烦。 看到md5感到很好奇，我在想如果把md5看作一个映射，那么对于所有的128bit的字符做映射，结果在继续映射，最终一定会形成一个环，我的问题是这个环有多大，有多少？最理想的当然是一个，不过这个有人证明吗？

从set里面删除当前iterator指向的元素会很糟糕因为这个iterator很可能失效，至少这是我观察到的，linux/window都是如此，甚至连vector的erase方法都是不可靠的，因为微软的实现说是返回当前下一个iterator，可是好像也不对，至少再linux不太对。另外一个令人讨厌的问题就是64位长整数的问题，微软的这个__int64时我深恶痛绝的，首先__int32何int32或者int都被编译器看作不同的类型，iostream不承认__int64/__int32时已经重载过的，其次，linux用的事longlong，printf用的是%lld微软则是%I64d这实在是太麻烦了，用macro重定义都不好办。

三月六日 今天天气很好吗？ 非常的好。

我觉得我应该放下一切包袱，生活没有什么大不了的，只要我下定决心去做我认为对的事情就没有必要认为结果是怎样的，反正这是矛盾的逻辑，好像matrix-reloaded里面讨论得如果一个decision在你take-decision之前已经决定了，（比如你试运行实现编译好的程序，所有的选择支都是预设的）那么你决定与否都无关紧要，（听上去好像宿命论，实际效果是自我暗示，说得好听叫做坚忍不拔，如果失败了叫做执迷不悟，如果干出了伤天害理的事情叫做。。。）总之我做什么与不做什么都是有理由的，任何结果都可以有一大队的事后诸葛亮来评述，重要的不是决定对不对，重要的是我今天作了什么，如果我晚上睡觉前能把我今天作的事情回忆一遍没有无所事事，那么今天就可以好好的睡觉了。（当然就算我今天无所事事了一天，我还是会睡觉的，因为在你回忆完一天之前早就睡着了。这就是生活的矛盾。）

以上都是垃圾，包括刚才那一句说明。

utf-8,utf-16不是unicode?看来没有亲自玩过的东西我永远不理解。以后要使用_itot来转换数字，使用unicode/ansi兼容的代码要从现在开始养成习惯。花了一个小时开始学习html的格式，这是我一直很鄙视的东西，不过现在看起来还是很好的东西，<input type="reset">或者"submit"是针对整个form的，所以要定义form，这大概就是为什么我不能显示多个照片的原因？

三月七日 今天天气很好吗？ 凌晨怎么能知道？

折腾到凌晨我才开始怀疑是否那是一个bug，问题就是如果用户不断刷新他的浏览器，那么浏览器和服务器之间的连接就不断被更新，这个解释对不对？也就是说一个浏览器窗口在同一时间只能允许一个和服务器的唯一连接，一旦刷新那么连接就失效了。如果这个结论是对的，那么程序没有错。我也就可以睡觉了。可以吗？不可以吗？

三月八日 今天天气很好吗？ 好像是阴天。

我在想一个简单的问题，这个问题我从来没去想过，因为理所当然，html的格式是纯文本，那么他怎么能够显示图片一类的binarydata呢？99%学过计算机的人对这个问题不屑一顾，因为可以用一个名字来表示嘛，<img src="image.jpg">，那么我的问题是我自己传送http的packet，就是那个httpresponse结构我要把图片数据放在哪里？50%的人也许会说有一个fromfilehandle，你可以把文件的handle放在datachunk，可是如果我的图片不是来自于文件是从数据库读出来的内存地址呢?也许40%的人会说放在cache里面，这样对不对试验一下再说吧。

（结论是以上不对，所谓服务器端的cache与客户端得cache根本就是风马牛不相及的，怎样存放binary的数据呢，同样道理，必须用content-type来定义。）

三月十日 今天天气很好吗？ 风雪交加。

本来一直要坚持每天...

三月十二日 今天天气很好吗？风雪交加。

好像忘记交房租了。折腾到两点，问题时mp3文件太大了，我的mysql根本就不行，mysql_store_result就死在那里了。另外thread pool有一个理解的问题，所有的http的handle支能有一个，因为addurl只能加一次。所以还真的有一点点observer的意思。播放音乐是<bgsound loop=true src="filename">美女给我的任务还是有一点困难的。

三月十三日 今天天气很好吗？风雪交加。

今天发现window-live新开辟了一个sky-drive，我正好把我几个想保存得project存起来。

My-GDI-SDK(link-only) MySQL(link-only) HttpServer(link-only)

顺便说一下，我计划建一个网站来挣钱，当然要先免费十年才行，哈哈。http://76.68.250.205:80/

三月十五日 今天天气很好吗？风雪交加。

今天星期六，前几天吧，加拿大议会投票表决是否延长驻札阿富汗部队的时间，渥太华议会大厦前一定又是一片的抗议人潮，我没有看到具体的画面，但是总理harper大概是调侃的话我倒是从新闻里听到了，大意是加拿大是最讲人权的国家，全世界的警卫只有加拿大的经委会给抗议者送毛毯，这句话听上去也没什么错，其实加拿大人根本和美国人的反战不一样，当初出兵阿富汗也是一个加拿大的政治传统，本身恐怖主义从来就不会对加拿大有仇，因为我们周围有一个巨大的恐怖主义目标的吸铁石，美国。出兵阿富汗只不过是看在以前女皇的面子上跟着英国去的，当然美国邻居的面子也有一点谁让加拿大80%的贸易都来自美国呢？拿人钱手短。不过呢，前几天大概中国政府在西藏又杀了几个抗议者，我并不是完全不赞成开枪对付示威者，但是最起码21世纪动真枪之前能否使用橡皮子弹？在全世界最危险的伊拉克巴格达被全世界所为最人道最和平主义人士斥为屠杀者的美国士兵全副武装外还会携带橡皮子弹，不是美军不明白恐怖分子的残人与不惜代价，而是因为美国人知道杀戮并不能消除仇恨，中国现代政府的管理意识在很多问题上还停留在两三个世纪前的封建时代，马恩列斯毛邓都明白政治体制要去适应经济基础，经济基础的代言人是社会各阶层的政治诉求，如果下言不达上听连几百年上千年前的封建君主都会担心水亦覆舟，而如今的胡温却俨然不知所措，foreseen, but do nothing！藏人是否该杀这个问题我想老毛在世会比较慎重处理，中国人口这么多不在乎杀几个人，问题是在什么时间什么地点以什么方式来杀。

这一点加拿大做得就比较好，我们去超市买牛羊肉里面煮的时候总是有血，因为文明国家屠戮的时候希望观看屠戮者的心理感受能好一点，于是用电击不放血，请特别注意我这里强调的不是被屠戮者而是观看屠戮者的感受，被屠戮者反正是一死，差别不大痛苦少一点总是有限，观看者可能还要活几十年，有了文献可能就要被人看到几百几万年，所以人道主义就是你怎样考虑哪些观看者的心理感受，如果一个政府不考虑这一点那就是不人道。美国政府考虑到了观看者的感受因此他在伊拉克杀再多的人，我以为都是人道的。这是一个野蛮政府与文明政府的最好的对比，不是针对你做什么，而是针对你怎么做。

三月十七日 今天天气很好吗？ 阳光灿烂。

线程池其实还是有些复杂的，复杂就复杂在能否保证你得server始终很强壮，内存泄漏是基本的防止的内容，关于死锁我想除非我统统使用带timeout的wait函数，否则很不容易做到。基本上我认为这是一个producer与多个consumer的模式，mysql支持多线程模式，只不过init函数不是线程安全的，因此我只要再主线程力作资源分配，再threadproc里面仅仅做很简单的任务循环。早晨仅仅完成了coding，晚上或者明天早上debug吧。第一步先实现多线程，第二阶段在实现异步通讯，其中在分两小步，mysql部分的异步，与http-server部分的异步。

关于DC，我认为他是我所认识的仅有的几个真正的programmer，（当然我不认识多少人，号称学过计算机的人倒是遇到不少。）他喜欢谈他的一些强烈的看法，比如他以为printf之类根本就不应该使用，要使用带n的版本_snprintf，当然考虑unicode就是_sntprintf，woshen以为然，因为buffer-overflow是最常见的潜在的隐患，关于变量初始化他也反复强调，对于我管与效率的argument他的说法我认为更加的实际，因为需要optimised的地方其实很少，大部分的函数调用不了多少次，我以前常常犯一些纸上谈兵的毛病，在基本的编程里面常常在想代码在汇编下是如何执行的，这个看上去很注意效率其实是一个自以为是，第一，编译器的优化远超过普通程序员的想象，第二，在还没有完成基本框架的编程初级阶段谈优化是本末倒置，很多时候所谓的被优化的代码直接就在编程的阶段被清除出去了，优化完全太早了。DC对于代码的clean&clear的强调到了让人窒息的程度，我已经打算放弃自己的命名习惯迁就他了。他还是非常强调他的重用性，比如模仿windows的dialog再mac机下模拟消息循环这样他的代码的接口部分达到平台无关，又比如他说他的device-driver时twain和usb通用的，这一点我一无所知，以后我会好好学习这方面的东西。有一点我表示同意，DC对于design这个词的滥用非常的情绪化，他认为他接触的很多design的人根本就不了解实际纯粹纸上谈兵，对此我深以为然，我的comment时designer首先应该是一个很好地programmer。今天我浏览了一下他的设计文档，发现这个project很讨厌的就是要去兼容很多的古老的硬件与模式，比如mono，比如16色，比如各种压缩模式等等。他设计了自己的packet结构，关于他的类似于window-gdi的rect来定义更新区域，这一点我很感兴趣。

DC决不是什么超级牛人，我以为他的大部分知识都来自于几十年的实践经验，这恰恰是很多人所缺乏的。如果他的理论背景足够高的话那就是非常的强了，但是往往很多人沉溺于理论就不愿意亲自动手了，明显的理由当然是他有更重要的理论工作去做，不过我以为世界上除了少数顶级的科学家有资格这么说以外，其他人大多是一种借口，不需要事必躬亲，但是你最起码需要知道事情是否可以做，是否容易做。

eeepc受到了，使linux版本的。

三月十九日 今天天气很好吗？ 阳光灿烂。

DC今天讲的一个东西我很有感触，就是创建线程的返回的handle应该什么时候关闭，我以前从来没有想过这个问题，我一直有一个错误的概念是这个东西会随着线程的结束而自然结束，DC说不会，所以，他只给我看process-manager里面的svhost有8000多个handle，说这是handle泄漏，我有些将信将疑，我嘴上争辩说那个svhost是个空壳子，但是我心里知道他应该是对的，一个进程使用超过八千多个的handle不是泄漏是什么？同样IE的GDI对象的泄漏应该也是有的吧？DC给我展示他的仿照GDI的东西，有一些实在mac上模仿，有些是在任意device上的模仿，据他说是把window的菜单font等资源掉出来然后再pda等等硬件上直接使用，我还一时转不过弯了，但是他的那些类似于photoshop的功能的一些实现速度相当的快，我有些简单的东西自己做过，比如我曾经用bitblt做过一个放大镜的效果速度比windows得慢了不知道多少倍，他的东西速度这么快据他说是因为他只用加减法，乘除一律使用某些表来实现，我对此有些慌恐，他的钢笔型的扫描仪驱动所作的图像修正非常的惊人，我说为什么没有申请专利，他说当然有不过不是他的名字，我不知道这个答案是否可信，不管怎么说这些东西在十年前的确是很了不起的。无论如何DC都是一个令人敬畏的老头。

半夜三更爬起来拆卸eeepc才发现我的型号和youtube上的不一样，tnnd的内存无法扩充因为我打不开后盖，整个连在一起的。上当了。我觉得这实在是一个最好的理由学习linux，因为我实在不太愿意使用一个512m的机器上的xp。

三月二十日 今天天气很好吗？ 下雨了。

试验了一天才有些确信可能有些什么变化发生了，httpapi好像不能正常使用了，我可以接受但是不能发送，我已开始一直以为我的code的有问题，但是我把微软的例子又试验了一遍，结果也不行了，说明也许sympatico把什么服务封掉了吧？比如http的包的发送？我实在不能解释1450系统资源不足的错误！明天我去实验室试一下看看吧。DC对于工具的使用的执著到了疯狂的地步，vc6的大部分工具我几乎都没有怎么用过，这一点让我很惭愧，同时DC的反应也比我来得快，让我觉得很惭愧，我不但比二三十岁的小孩子来得慢，也比五十多岁的老头子来得慢，唉。但是我绝对不会放弃！只要不断努力那帮小孩子我是绝对不放在眼里的。

明天是复活节。

三月二十一日 今天天气很好吗？ 阴天。

我问DC我平常可以做些什么来准备，他说让我去看他的代码，我本来也就是一个装装样子，没想到给自己拦回来这么些东西，当然我也比较高兴他不忌讳我拷贝代码，我原本是把他给我的安装盘进行拷贝的，连带把所有的备份也可了过来，讲句老实话我压根没打算看，因为也未必有什么意义，唯一可以参考的是他的图形编辑方面。于是只好取下在一个虚拟机来装windows-server，回想起来HM在我和他做project的时候就提过他是在VM上debug，那个时候有些神往，不过我想一是我比较的懒，二是我对于所有的新技术新应用都保持一个怀疑的态度，按照DC的话来说就是：工程师并不打算去解决不存在的问题。如果现有的技术资源够用，为什么要增添新的烦恼？新的软件意味着新的bug，我们目前的问题都解决不完为什么要增加新的？

很多时候我觉得topcoder很不公平，很多老手都是用了不少的类库之类的，否则让我现场编码我怎么可能用最短的时间敲键盘呢？我觉得有时候我两三百分的题目几乎可以避免编译的错误，包括typo但是至少还会有一两个逻辑或者边缘条件错误，但是看了一下那帮人的代码还是很让人泄气，比如我们都知道gcd的算法，但是这么写代码我还是很困难的。int gcd(int a, int b)return b?gcd(b, a%b):a;

寻找数N以内的所有相对N的质数，我是凭直觉把N的所有factor求出来存起来，然后再去用[1，N)检验这些factor，看到别人直接用gcd来求[1,N)，其实要快不知道多少倍？我对于基本的概念还是mei有真正理解。真正的高手一举手一投足就看出来了。

alex这小子非常的强，可以说是我见到的linux的geek级人物，当然我指的是主要的是系统管理这一层，并不是说他编程不突出，而是我反倒忽略了。我一直以为实验室不能使用hp-rgs的原因是网络的问题，今天他成功地用linux版本连接到服务器了，其实远离都是一样，既然是应用程序使用网络协议就没有window/linux的区别，我一直想不到这一层。同时我也曾他那里得知可以用synaptic来下载新的程序来安装我的eeepc。今天连续安装了fedora和win2k的虚拟机，以后确实方便多了。记住用nero来刻光盘的iso时使用save-track命令，这实在是让人想不到我找了非常得久。eeepc使用的事debian的变种xandro（记不住。）

httpapi在学校的机器上工作，不知道为什么在我的两台电脑都有问题。晚上到垃圾的路上又给了街头的乞讨者两块钱，在这个复活节的寒冷的夜晚，在寒风中乞讨你能想象这是一种多么艰难的选择？我大概不仅在同情他们而且在同情自己，也许在我灵魂的深处藏着见不得阳光的邪恶，如果能够依靠施舍减轻那当然是最好了。基督教教人向上现在并不用什么下地狱之类的恐怖手段了，更多的仿佛是心理医生让人去消费自己的精神能量。如果可能的话年底也许我可以捐献一些菲薄的奉献。做了三十个俯卧撑累得气喘吁吁。

三月二十二日 今天天气很好吗？ 阳光灿烂但是很冷，风很大。

看台湾的政治感到很搞笑，政治人物常常动不动就赌咒发誓甚至说出来性命不要的话，在加拿大我想这种话是很难听到的，有什么大不了的事情要性命相搏，难道你的话就那么没有人相信，或者那么的有必要让别人相信？感觉用这种口气说话就仿佛殖民者刚来非洲美洲骗当地土著的情形一样，我的有限的和本地同学交往的经历只有一次我听到一个同学说I swear I am not lying。为了什么事情我忘了，反正不是什么大事，大概就是老师的作业是怎样布置得之类的鸡毛蒜皮的事情，不过我当时还是吓了一跳，事后回想起来，在基督教的传统里swear是很神圣的事情，轻易不敢用，用了当然没有人不敢不信。中华文化传统对于这些胶条根本没人信，说是都信佛实际上没有认真地相信有地狱报应之说，因为脑子活分可以把宗教信仰当工具用，实际上一个人信什么本来并不重要，完全是一个精神需要，重要的是你觉得你有信仰了，晚上睡觉踏实了，因为信仰本来仅仅是一个行为的“一致型”准绳，如果你的行为有了一致性，你自然不再为决策苦恼，因为可以参考从前的行为，或者你的信仰的条律，所以，不是为了什么而信仰，而是因为要有一个行为指南而信仰。

三月二十三日 今天天气很好吗？ 阳光灿烂但是很冷，风很大。

教训啊教训！我费了一两天时间在寻找一个不存在的bug，这就是很少做复杂工程的经验的缺失，同样的代码在不同的目录下运行结果不同意味着什么呢？当然是编译环境的不同呀！这是一个常识，那么究竟是什么不同呢？1。makefile之类，可以在工程文件里选项寻找。2。路径设置。结果时发现我犯了一个低级错误，我明明知道再platformSDK下很多头文件与vc6不同，结果想当然的不去做深入检查，（不过当时存了另外一个想法，因为我以前的程序都是在vc6甚至是sp6之前的，我侥幸的想要尽可能保持vc6的头文件系统，于是遇到编译不同的我尽量在vc6的基础上增添sdk的东西。）这种做法是危险的，比如sdk的winsock2.h有了很大的改变，我当时见招拆招以为sdk仅仅是添加了一些别名而已，现在看来为了兼容64位程序改动得非常之多，有一个基本的就是对齐（alignment）的问题，64位程序据说是不可能和16/32位程序混合运行的，所以那些pack 4之类的都有改变，对于win32的宏定义都不同，我真是想当然结果吃了大苦头。结论就是sdk的东西还是在sdk环境下编译吧。（不过我是否做得到呢？我实在是懒虫一个。）

最主要的问题解决以后其他都比较容易了，当然我还有别的错误，比如http里面的很多结构都是不定长的结构，是不能用queue之类的来存取结构的，如果一定要用也只能用指针，就是类似于bitmap的结构里面的那些不定长得palette，所以，我在使用httpreceiverequest的时候绝对不能只用sizeof(HTTP_REQUEST）的来作为buffer的size。本来这是一个很小的玩意，写一个数据结构来管理就可以了，不过我太懒了，回过头来看台湾tvbs的政治论坛辩论会，非常的有意思，可以议论的很多，但是一个明显的感觉就是作为政治人物在台湾要比在中国大陆累得多，这样的唇枪舌剑对人的头脑逻辑辩才的要求非常的高，绝对不是天天找秘书写讲稿开会打瞌睡，晚上大通宵麻将能应付的过来的，这才是人民对于政府官员的要求。同时亭节目里的观众call-in也非常有意思，感觉人民的眼光是雪亮的，很多时候人民的思想其实非常的成熟，我想这是民主制度训练出来的，因为认识一个学习的动物，没有实践学习的过程是不可能成熟的，这就是所谓西方民主社会的来源之所在，人民需要一个学习的过程，如果片面强调时机不成熟而剥夺人民学习民主的机会，那么人民可能永远都不可能学会民主自由的思想与价值，gcd的所谓时机不成熟的谎言让我想起了伊索寓言里那只望着葡萄的狐狸的语言，不要再说什么够不着的葡萄是酸的，你不应该总是欺骗自己葡萄是酸的所以我不去，你应该告诉自己葡萄是我应得，现在就挑起来摘自己的葡萄吧。

台湾的这些所谓的名嘴都非常得厉害，尤其很多的女人非常的灵牙利嘴，好厉害！台湾的女人好厉害！ 马英九的台语讲的有些结结巴巴。三个女人一台戏好热闹，外号就是“火线娇娃”！国民党三大美女名嘴：郑丽文，兰萱，尹乃箐。

三月二十四日 今天天气很好吗？阳光灿烂但是很冷，风很大。

晚上在绿房子吃了一顿6块钱的糟肉饭，因为这个是最快的，冰箱里有一块牛排，本来想再烤了吃，可是怕等不及肚子饿。生活变得朝九晚五，慢慢就会成为一个钟摆，人生的路也仿佛在不知不觉中回到了起点，曾经有一个上天赐给我的机会摆在我的面前，我在最后一刻犹豫了，尽管在数字上是吻合的，我还是犹豫了，我对于我前方的道路看不清楚，同时更不想背负一丝一毫的负担，如同刚刚来加拿大在多伦多乘飞机莱蒙特里尔的路上的心情一样，匆匆地瞟了一眼路边随风起舞的小草，前进的脚步不能有一丝一毫的停顿。理查德克莱德曼的浪漫钢琴曲悠扬地想起来，充溢在都是之间，徘徊在我的心底耳边。DC对于工具的使用是最让我佩服，我惊天又看到了一个我不知道的功能，ctrl+}寻找挂号的匹配，这些细节在很多人眼里不值一提甚至被讥笑成奇技淫巧，的确，无他，但手熟尔。古龙小说里的超级剑客在比试武功的时候对于每一个不知多么小的细节都精益求精，因为高手之争争之毫厘，再coding里细微的差别积累成巨大的差距，在某些方面我还是差不少的。决不是说DC在所有方面都强，这决不对，他对于指针的运用还是差一些，大概是写汇编太多的原故，很多coding也有些多余，对于软件工程算法效率的某些方面大都是朴素的实际体会，实用但未必最好。我想我用两年时间大概可以在大部分方面与他看齐吧？这也许说得太早了些，毕竟了解还太少，不过想当初我对于计算机一窍不通的时候就能有决心在五年内赶上黄连声，这样的决心应该是要有的。

三月二十五日 今天天气很好吗？阳光灿烂 。

费了很大得劲最后还是回到老路上来了，http-server应该是一个stateless的server，这是基本的定义，并且是最容易实现的，我当初执著的一定要形成一个能完成事务的，用一个线程dedicate一个connection的想法非常的麻烦，改写了好几个不同的request的模式，发现还是用最简单的，因为我现在都是用一些零星的时间在改这个东西，经常忘记以前要干什么为什么要这么做，早上终于又回到了起点，完成了多线程并行访问的httpserver+mysql。当然原本mysql就是支持多线程访问的，仅仅在httpapi部分监听者是一个线程，其它都是执行任务访问数据库生成网页的“工作”线程。就这样吧。

拖拖拉拉一个多星期才总算改完了多线程版本，编码很简单主要是当初那个“vc6”和“platformsdk”的冲突问题折磨了我快一个星期。存一个版本在这里吧。服务器地址如下，内容不适合未成年人请自我约束：http://74.12.223.226:80/ 请大家帮助测试一下性能吧。（其实我知道我在这里吧ip地址登出来立刻就会有一大队的搜索引擎跑过来了。）

三月二十六日 今天天气很好吗？ 阴天。

昨晚上作了一个很奇怪的梦，醒来也忘得差不多了，看我那台老掉牙的备用电脑被很多人疯狂的浏览，哈哈，我真应该写一个log记录下访问者的ip，看看那里的人比较喜欢陈观希的自拍，不过呢，很高兴程序还算稳定，意思就是说应该还没有内存泄漏资源泄漏等等的问题，不然早当机了。接下去就是实现DB和http-response的分别的异步通讯，否则大文件如mp3那样的还是会有问题。浏览的人或者机器还是很疯狂的。哈哈。

历史上最超级搞笑，无聊，恶心，恐怖，白痴，无理头的电影是什么呢？《grindhouse》

三月二十七日 今天天气很好吗？ 阳光灿烂，大雪纷飞，我不开玩笑的。

这年头就是逼良为娼的时代，我以前对于这些流行的web应用总是不屑一顾，现在为了争银子起见不得已用业余时间在家里架设一个色情网站，欢迎大家踊跃访问，不过看了一下log一天下来没有几个人，10个线程只有一个有工作，看来陈冠希的那点东西大家都不屑于看了，一定要找一些猛料，也许把成人频道十二点后的限制级电影放上去？不过我怕银子没有挣到我的sympatico高速网超标罚款到不少。昨晚原本要写一个简单的垃圾邮件转发的东西，遇到一个小问题，今天再说吧。要么还是先做一个简单的图片收集的“爬虫”？看了一下IE的wininet-api应该很容易。先吃饭吧？

晚上步行8000多号去W家送我的保税表，从来就搞不懂这些东西，既不清楚政府给了我多少钱，也不知道我花了多少钱，反正银行户头上有多少钱我是知道的，其它一概不清楚。步行速度大概是1000号/10分钟，这个多少号是蒙特利尔的长度单位，就好像1.5，2.5，3.5时面积单位一样，卖卖官子吧。学习html发现这个东西很简单，难怪那些小孩子都明白，当然标准的html之外微软的ie作了超强的extesion，知道了上传文件的按钮是input type=file,从纯粹programming的角度看这是浏览器自己去调用系统对话框，就如同一大队的控件与一些gdi的命令一样，这样可以帮助我理解。

晚上回来要做这样一件事情，用atexit注册清理程序，因为http的handle不释放问题很多。

晚上和同学在小肥羊吃饭又不由自主地讲了那个著名的笑话，一个美国人自豪地向朋友介绍说他叔叔当年凭着唯一的一句法语周游整个欧洲没有遇到任何问题，大家对于法国文化深入欧洲的各个角落心驰神往就问他那句奇妙的法语是什么，他说：gracias。这个笑话来自于<mr.Bean's holiday〉的导演。

DC下午给我演绎了gdi对象泄漏的严重后果，当给老板演示的时候一窗口突然消失了很是尴尬。随后他和我一起debug，一个好方法就是再process-manager里面观察gdi-object的增加数量，这个是我现在唯一能想到的办法，也许vc6里面有类似的工具吧？好像没有吧。内存泄漏时有工具来检测，对象呢？我的那个家里的小server也有类似的问题，不出一天就放生数据库访问的错误，是因为某种内存的泄漏吗？应该是吧。

三月二十八日 今天天气很好吗？阳光灿烂 ，但是有些冷。

我检查了log，错误显示是数据库访问错误，我没有进一步的资料只能猜测。

1。 我当初创建多个线程的时候给每一个线程分配了独立的mysql的对象句炳，实际上乱来，因为既然mysql支持多线程就可以多个线程共享一个句炳，这也许有一定的资源浪费，但还不能解释为什么服务器过了近一天才down。
2。 我为了提高反应速度，在server 上作了一个很简单的缓存，就是把访问的“数据库的数据集”（mysql里的query result）存在一个表里面，如果客户下一次访问同样的数据被我用表的index hash到了，就不用从数据库再取了而直接从表里面返回。当然如果hash到的数据集不是客户要的就只好释放数据集，我的理解是这个数据集在访问数据库时候已经在数据库客户端了不再是数据库服务器端的资源了，（相当于客户端本地的buffer，服务器端应该自然就释放了。所以，我在这个表里面存多少个数据集都不占用数据库的资源，如果要出错也是在我的数据库客户端访问出错。）所以。。。这也许就是我没有看到mysql的错误信息的缘故吧。是本地内存分配错误但表现为query-error.

实际上发邮件是一个很简单的东西，我说简单是因为你不管新邮件系统的安全性等等的设置，原来一直困扰我的那个对话框其实和mapi完全无关使oe弹出来的，你只要再oe的security里面去掉什么“警告当别的程序以我的名义发送”的一个选项。

三月三十一日 今天天气很好吗？阳光灿烂，但是有些冷。

如果你看了<hostel〉这部电影你绝对不敢再去东欧那些国家旅行了，这是我看过得最血腥最残暴的恐怖片，这里我要修正一下恐怖的定义，加拿大的电影号称是恐怖与行，其实大都是带着一点点玩闹性质的，好莱坞的恐怖是让你干脆就边看边吐。

数据库访问错误应该只有两个可能吧？一个是长时间idle以至于lost-connection,可是mysql明确说这个bug在之前的版本已经改正了，（就是不在位default选择）另一个可能是本地数据集太多了，就是我的本地缓存占的内存太多了。针对第一个可能，我写了一个简单的连结重置，针对第二个可能我明天打算把针对美个线程连结的缓存改为全局针对所有线程连结得来节省内存。问题是我现在还不能判断到底是连接的次数还是连结的时间长短导致数据库错误？各位能不能多去点一点这个图片库呢？http://74.12.223.226 当然里面有不少儿童不宜的，最不济那些搜索引擎看到这个ip应该也会像秃鹫看到尸首一样蜂拥而上。我一直想采用W的建议写一个自动测试，结果昨天天气非常好出去爬山了，晚上把两个月的衣服都洗了。。。有人吐了吗？

四月一日 今天天气很好吗？阳光灿烂，但是 后来下雨又刮风。

据说是愚人节，但是对于我来说应该没有什么区别，晚上回家的路上心情格外的郁闷，是一种莫名的郁闷。ctrl+shift+U可以用来变小写为大写。为什么郁闷呢？不是很清楚，大概是觉得自己蹉跎一生郁郁不得吧，更直接的是觉得肚子太饿了，这个理由可能更佳的真实。早上试验了半天也不明白到底内存有没有泄漏，很像，可是。。。昨天，M&G把我找去，重新拾起那个块被我忘记的课题，M问我是否要换一个课题，G拼命说不要，我心里在想换什么呢？昨天在telnet命令行用smtp试图发邮件，的确主要的网站都不太怎么能够轻易的发邮件，我在心里还向是否我应该自己去写一个smtp，现在看来。。。计划太多了，晚上是否应该看那个triangle-plane-intersection的算法呢？究竟应该怎么办？前方的路太模糊了，我需要一盏guiding star。这两年我觉得我的vision越来越模糊了，心中的目标都不知道便宜到哪里去了，究竟我有没有destiny？

四月二日 今天天气很好吗？阳光灿烂，但是 后来下雨又刮风。

W发给我非常有教育意义的一个链接，他回答了我的关于mysql巨大数量的handle的疑问，非常的有教育意义，摘抄在这里。

想知道蒙特利尔的天气吗？看这里。

我热切的期望有更多的朋友参加讨论，如果你们有什么建议和想法，不妨留话给我。

给坛主写信 我现在用的是宽带，感觉不出速度慢，如果各位浏览时候觉得慢的话，给我说一声，我就把图片改小。