<%@ 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

for most updated version visit:

(最近更新在这里)

www.staroceans.net

www.staroceans.org

  我的征尘是星辰大海。。。
The dirt and dust from my pilgrimage forms oceans of stars...

(日记太长了,我就把它们另存在这里了)★★

wpe1.jpg (2587 bytes)

黄教授讲习所
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

wpe4.jpg (2413 bytes)
DIABLOII
电影剪辑

1. ACTI_1 疯人院

showing.gif (4628 bytes)

网站数据

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

暗黑杂谈

我的空间用完了,所以最新的在这里:

www.staroceans.org

www.staroceans.net

wpeA.jpg (5636 bytes)

坛主的心愿

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

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

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

wpe6.jpg (2916 bytes)

黄教授和刘教授

twoman.gif (14160 bytes)

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


mainact5.jpg (8608 bytes)


EYLOOK.GIF (13401 bytes)美丽的蒙城
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)

32Relation(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

52SortMachine

53Cartesian

54。Fraction

55。DFS--Standardized★★

56。Zebra--DFS★★

57。Polynomial

58。StackArray

59。DFSArray★★

60。Missionary★★

61。Message

62NewKnights★★

63。NewWordReader★★

64。ArrayException

65。StringSearch★★

66Poke

67。Sequence

68。Haskell1

69。Reduce1

70。Shuffle

71。Reduce2

72。SimpleShuffle

73。Reduce3

74。Crap

75。Haskell2

76DirViewer★★

77。Login★★

78。SimpleLogin

79。Reduce4

80。LevelPrint

81。Dynamic-Static

82。Double-Library

83withoutDynamic

84。SortComp

85。Radix

86。Schedule

87。TemplateArray

88。makefile

89sortComp(revised)

90。shortest

91。shortest(simplified)

92practice(1)

93。simpleScanner★★

94practice(2)

95。depend

96。depend(improved)

97。memoryManagement

98Practice(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

111WhyJava?

112。CFGReader-CLF

113。CFGReader-RLR1

114。CFGReader-RLR2

115。CFGReader-First

116。CFGReader-Follow

117。CFGReader-Table

118。CFGReade-Parser★★

119CFGReade-LookAhead★★

120practice(4)

121。PrefixSum

122。Philosopher

123。SleepingBarber

124。ConsoleDisplay

125。ConsoleBoard

126。ConsoleBoard-improved

127。Console-rummy

128。AVLTree-Remove★★

129CFGReade-LR(0)★★

130。CFGReade-LR(1)DFA★★

131Console-Rack

132。Hash-Table

133。PrefixSum-Multi

134。PrefixSum-final

135。Console-Player

136。CFGReade-LL(1)Symtab★★

137。PlatformAndBridge

138LL(1)Symtab-debug★★

139。WordRover(1)

140。WordRover(2)

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

142。WordRover-ultimate★★

143。Parallel-Rank-List

144WordRover-perfect★★

145。Transaction

146。CFGReader-moon1

147。CFGReader-moon2

147。CFGReader-moon3★★

148。Multiple-Reader

149。24Revisited

150。Vigenere

151JapanCode

152。Polynomial-revised

153Dependency-Reader

154Dependency-Set

155。Dependency-Key

156。Dependency-Canonical

157CallBack-Template

158。DependencyApplication★★

159Random-Data-Generator

160QAR-Project

161Enigma-failure

162Enigma-Success

163SQLServer-Connector

164Replace

16515Puzzle-Failure

166SequenceDFA★★

16715Puzzle-AnotherFailure

168water-allocation

169BloodTest

170BloodTest2

171Labyrinth

172Snake

173MySet★★

174MySet-PowerSet★★

175Huffman

176NaughtyBoys

177Elevator1

178Elevator2

179repeatFinding

180tracker

181file-transfer

182SimpleVector

183FTPServer

184FileTransfer★★

185。Lempel-Ziv-1

186UDP★★

187。LCS

188。LCS-experiment

189monotone

190monotone-analysis

191goback-N ★★

192。Dynamic-Programming

193LCS_counting

194。goback-N(largeSequence)

195。PocketRuler

196Bellman-Ford

197Scheduler-I

198Scheduler-II★★

199Template-Vector(failure)

200extensible-hashing

201bitmatrix(trivial)

202unix (practice)

203searchString-Linux

204dynamicArray-Linux

205SRC-Linux

206TicTacToe

207File-Server1

2083-CNF(naive)

2093-CNF(slight-improved)

210。minishell

211。file-server2

212quantum-collision

213quantum-scheduler

214inexactmatch

215bigNumber(trivial)

216inexactmatch-DFS

217inexactmatch-pureC

218。GlutObject

219。CNF-Converstion

220。Transformation(trivial)

221。helicopter

222。cnf-sat

223。15puzzle-revisited  

224。GlutObject-face  

225GlutObject-Success  

226helicopter-camera  

227alpha-beta-prune

228zebra-tester

229zebra-brute-force

230shortest-path(scheme)

231HEX-game-human-AI

232ID3  

233LatinSquare(trivial)

234FirstJava(RMI)

235gifPartition (first MPI)

236BankServer(CORBA) ★★

237Quantity(template)

238MinimalWeight

239MinimalWeight(MPI-Imp)

240Comb-Algo-Prog 

241BankServer(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

7Comp346

8MyIdea

五。下载

1。MyTree

2。平方根的汇编求法

3。改进的平方根求法

4。汇编作业体验版

5。逻辑矩阵的输入

6。逻辑矩阵的输出

7。国际象棋的棋盘

8。国际象棋的棋盘代码(你可以不看的呀!)

9。逻辑类的头文件

10。逻辑类的cpp文件

11。逻辑类的lib文件

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

13。最短路径的输入矩阵

14。洗牌的结果。

15。要最小化的DFA

16SSH的客户端

17。图的矩阵

18。SpySweeper

19。Scanner的输入文件

20。CFGReader的输入文件

21。奇怪字典的输入文件

22。奇怪字典的测试文件

23。WordRover体验版

24comp346的答案

25。MOON-MACHINE

26我的compiler project

27Dependency

六。朝花夕拾

从前的日子。。。

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。 ★★  较好        

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

使用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的疑问,非常的有教育意义,摘抄在这里

究竟是什么原因呢?数据库连接失效看网上的分析大概有三种可能:1。早期mysql的default设置是8小时断开,或者多少秒idle断开,但是5.xx版本以后default已经改为用不断开。2。客户端主动断开。3。max_packet_number设置不够,比如default是8m,如果数据集太大就拒绝连结,可是我也设成了32m,应该没有问题了。如果是我的自己的缓存导致的内存泄漏,那么我应该观察到程序的内存使用一直上升才对,可是我看到的是当大量图片被浏览时候我的程序的内存使用先升后降,这个事很正常的,因为我的缓存cache一开始北海没有全部占用的时候上升,后来全部占用了,遇到小的图片时候换出大的图片内存使用就下降,很合理的解释。甚至我为了debug关闭了缓存直接返回后就释放数据记者应该绝对没有内存泄漏的问题,可是当我连续快速重复点击链接的时候又爆出了invalid access specified rtlfreeheap的错误,网上的说法是这个发生在exe与dll之间分别用debug和release编译时候new和delete跨越dll边界造成的,因为debug和release版本的new与delete是不一样的,比如debug版本要检查分配的heap内存是否越界,(这个我以前就遇到过,看网上的说明时debug版本在分配的内存前后设置边界,就是多几个byte,delete的时候检查是否被改过)所以但从这一点就知道两个版本的分配的内存数量不一样,其实地址有差异,自然会有访问越界的问题。可是我的程序应该也没有这个问题,因为数据集是mysql分配的,释放也是他,我的程序也没有做什么呀。会不会十多个请求导致http-api的内部buffer溢出呢?这个想法也太夸张了。我其实想不明白因为到底问题是什么我不清楚,只是看到大量访问后mysql查询出错,并不知道为什么?

四月三日 今天天气很好吗?阳光灿烂 。

DC给我讲解了一下他的得意地pch,简单说就是头文件预编译,其中的一个好处就是省却了复杂工程里面的头文件的混乱,有依赖性德在头文件编译时候就发现了。今天终于把我的httpserver又改回了原来的类似于appartment的threading-mode,就是说所有的线程各自运行在自己的空间里,每一个线程有独立的数据库连接,对于mysql这样业余的数据库,我实在是有些不放心,还是不要节省那点资源了。这种增加了数据库连接失去之后的自动恢复部分,又立刻县城自己恢复还有就是监听线程在始终找不到可用线程时候强制恢复等等的策略。我持续按住F5健飞快的刷新请求,还不错server很健壮的。现在就看长时间空闲之后会不会又当掉,能不能自我恢复。网络上说,如果你娶到一个好妻子,你会幸福,如果你娶到一个坏妻子,你会成为哲学家。我想我的理想是当一个哲学家。哈哈。

四月四日 今天天气很好吗?阳光灿烂 ?我看不见什么阳光。

我像今天是最后一天改进这个server的小小project了,周末一定要开始图形部分了,否则下个星期meeting真不知道该说什么。本身mp3文件和图形文件没有什么区别,我的数据库和代码都已经写成一致的处理了,只不过在入口处我把music的链接拿掉了因为文件太大了,我本地下载都不知道等了几分钟,看来对服务器带宽的要求太高了。改成异步通讯仅仅是调用一个函数的问题,不过很讨厌的是改变原本的程序流程,这个事我不太喜欢做的事情,这让我想起了DC无穷多的不可理喻的地方,一个函数超过700行代码,而且它的代码是那种else缩进的风格的,可能要比我的风格多出30%的行,所以可以称之为“千行函数”,其中无穷的if-else而且使用大量的全局标志,if嵌套好几重的,你可以想象这就是非科班出身全拼亲身摸索实践出真知的结果,当然我也很佩服他读这些代码的能力,(肯定会有错误这是不用说的,因为没有人是神仙,都会犯错的。)问题是他就是不肯,也难怪50几岁的人对于自己的自信是比年轻人多得多,如果我在他面前可以成为年轻人的话。不过有一个小东西值得记录,再vc6下debug跳出来汇编浏览窗口(disassembly)是非常让我讨厌的,有时候我断点设错了找不到出来的函数,DC告诉我的他的方法是把那个disassembly窗口始终打开但是隐藏起来,然后看stack窗口看是哪一个函数调用的就可以出去了,这的确是不错,在对于工具的使用上DC是非常的精通,或者说因为我基本上不怎么用调试工具的关系。(这句话有些问题,我回想这可能说明几个问题:1。我写代码bug少?我不太相信,可能少一点因为有时候慢。2。我很少调试非常庞大的project?可能吧,当时在cluster上并行的debugger学起来非常的繁杂,而且图形的数据那么大就算有了你也看不懂那些数据代表什么。3。我不 重视工具的使用,工欲善其事必先利其器。)

今天早上的努力好像有白费了,server在晚上的时候又挂掉了,但是我几乎可以肯定我的程序没有内存泄漏的问题,因为没个线程在自己的空间运行(数据不共享)所以也没有同步的问题,(唯一共享的是http-request-handle,但是对于这个东西我认为它本质上就是windows里面做异步i/o的那个文件handle一样,这么普通的东西可能也没有问题,而且我是用一个单独的线程监听,所以也没有同步的问题,对于以前http-responese的时候用户吊线我现在统统忽略因为他根本不是错误,这么一步不排除似乎问题是处在mysql身上?再做一下测试吧,如果我的数据库恢复失败那就说明时mysql的问题了。试验一下让搜索引擎来帮忙测试吧,比如我把几个关键字写在下面很快就有大量的引擎像秃鹫扑死尸一样冲上来。

(以下纯粹为了测试搜索引擎的反应速度,普通读者请谨慎访问以下链接,其中包含裸体和成人内容,观者请谨慎从事,其中内容纯粹为学术研究,不代表本人观点和看法。)

陈冠希和张柏芝的“艳照门”照片在这里:http://74.12.223.226/image1482

陈冠希和所谓的阿娇的不雅照片在这里(这个女人是干什么的,我始终不知道,哈哈。。孤陋寡闻至此。)在这里:http://74.12.223.226/image1190

(我想看看到底我自家的破电脑能够承受多大的压力)

我觉得我的服务器现在很强壮了,下午的错误是因为我输入负数index造成的,虽然拿个线程出现了访问错误,但是其余的线程海正常的运行,所以我一点都没有察觉服务器那投出了严重错误,说明程序的robust很不错的。心情终于开朗起来。

现在这个版本非常的稳定了,问题变成服务器能够支撑多少人同时访问,效率如何。

四月七日 今天天气很好吗?阳光灿烂 。

我的服务器非常的强壮(robust),首先,每个线程个绝不互相影响,即使有几个线程当掉了,只要监听线程工作,整个系统还是能够正常工作的,其次,数据库出现的异常我虽然没有办法防治,但是我可以让线程重新连结,虽然这个改进非常非常的简单,但是效果非常的好。我现在这个版本已经正常运行好几天了,始终正常,再重新连结之后内存清理应该会更好的运行。所以这个模式我觉得比较得适合小型服务器和较低并发的状况,他的稳定性很好。

四月八日 今天天气很好吗?阳光灿烂 。

连日来不断的有报道关于藏独分子干扰奥运圣火,我觉得这是一件好事,国无外患常亡,大多数中国封建王朝的灭亡常常是因为“天下太平,万方来朝”,当然这从来就是统治者的一厢情愿,天下从来没有太平过,万方从来没有真心实意来朝过,中国目前的cctv+人民日报模式的“媒体专政”塑造出了这么一个“天下太平,万方来朝”的海市蜃楼,生活在其中的人们如同当年鲁迅《呐喊》自序里面那些昏睡在不透气的铁皮屋子里一样,有个别人稍微警醒实际上要承受比旁人更加痛苦的清醒的死亡进程,从内心来说在昏睡中死去要比在昏睡中死去痛苦更加百倍,结果都是一样为什么不能少些痛苦?所以索性天天看cctv那些“1984”似的“老大哥”无休止的洗脑新闻,因为那些经过精心删减挑选的消息“令人振奋,团结一心,催人上进”。你只要翻看一下世界上的宗教布道就可以找到类似的效果,世界上的所有的精神控制,包括无数多的所谓邪教都是如出一辙。

所谓西藏事件大多数有理智的人并不怀疑暴力的成分,问题时gcd还要用从前的方式来处理媒体,比如立刻驱逐媒体,全境封锁,这些做法在当年处理“sars”爆发简直如出一辙,西藏独立不独立大多数西方民众只是从心理上同情,但是对于传染病的消息封锁那是所有西方政府都不能坐视不管的,因为这是切身利益相关的,结果就是gcd意识到用老的一套“捂盖子”事后塑造大批“英雄事迹”的那一套行不通,老外不买你的帐。后来学乖了,但是对于西藏这样的事情下面的官员没有一个敢掉以轻心,还是老法子比较管用。

归根结底,如果没有冰川的到来猴子是不会从树上下来的,如果没有各个方面的内忧外患gcd是不会进化的,可能永远蹲在枝叶凋零的树顶上向人群展示它的红屁股。

我抽了一些我每天“宝贵”的时间看了一下youtube上的各方意见,感觉这一切都是gcd自作自受,首先,cctv指责西方媒体歪曲报道拿了很多尼泊尔之类国家的暴行的照片混淆视听,不错新闻媒体在全世界大多数国家都是一种商业产品,只有极少数政府专制下是宣传工具,那么作为商业竞争当顾客需要而供应商没有产品的时候怎么办呢?回过头来看西方媒体为什么会这么做?原因是没有渠道,事件一发生所有的西方媒体被赶出了西藏,有必要吗?除非你准备使用大规模流血镇压,否则让喇嘛打死一两个西方新闻记者不是更好吗?我觉得gcd反应过度,害怕这个东西规模扩大影响所谓的奥运,你越怕他就越来,索性豁出去,让喇嘛们砸烧抢捎带脚的干掉一两个记者更加血淋淋,(估计下面的官员不敢负责,保乌纱第一。)你封锁了新闻然后指责西方的小媒体歪曲,拜托,那些个小电视台哪有钱去雇人去西藏,连大媒体都没有消息,他们更加没办法,不得已只好从资料库里面找了。这能怪谁?其次,世界人民对于一件事有多个版本的一件本来就习以为常,不要以为大多数人都是傻瓜,那些激进分子哪个国家都有,基本上都不是主流,(否则就不算激进了),那么怎么处理这些人?人的精神能量不释放会造成更多的后果,给他们一个发泄的场所,比如西方社会资产阶级为了麻痹劳动人民的反抗精神就直接妓院妓女合法化,用这一套怀柔方法瓦解阶级矛盾,gcd也完全可以效仿,以来增加税收丰富劳动人民精神生活,做到既有州官放火也有百姓点灯的与民同乐的“和谐”社会,同时也把一大批从事三产的劳动妇女正式纳入无产阶级的行列,一夜之间增加几千万的潜在的共产党后备军也是一件大好事,各阶层都有“民意代表”的人大制度将来也可以考虑在妓女中直接发展几名具有三个“代表精神”的“人大代表”,否则这个“人民”代表大会制度就不够完善了。西方的人权社会很多还做不到真正的人民代表大会制度给超前一步连同妓女都代表了岂不是更好?说不定很多各级省市领导人还可以在“两会”期间“亲切会见”新当选的妓女代表,新朋老友欢聚一堂,共同叙谈当年夜话,其乐融融,创造出一个“超和谐”和会。

疲惫的一天。

1。如果你要创建compatiblebitmap,那么不要从memoryDC创建,因为他是mono的,要从原来的dc,同时你不要把你创建的bitmap捆绑到original的那个dc,药用comaptible的dc才能在上面画东西,msdn写得很明确,我也试验了吃了不少苦头。

2。你如果用getcurrentobject获得的bitmap的handle,你使用getobject会失败的,同样那个handle用globallock会爆出非handle的错误,我的解释是那个内存是不能访问的系统内存,因为brush用这种办法是可以的,至少msdn的例子是这样的。

3。慎用invalidaterect指定特别区域重画,或者validaterect指定特别区域不画,因为我自己后来忘记了调整了布局结果始终都画的不对这才想起了这个害人的东西,其实最好的办法适用画的先后顺序,这样可以避免使用invalidaterect,当然这是个人看法。

4。使用所谓的scrollwindow,你要把资源里面的windowstyle改称resizeable,否则你就是瞎忙,同时所谓的scroll,都是要自己重新画出来的,(当然我估计有些控件可能是帮你做了一些工作,但是基本上是你自己重画的。)

5。关于当前window里面得snapshot存到磁盘文件,原本我的方法是使用一个compatibleDC和自己创建的compatible德bitmap,然后永远有的dc进行bitblt,但是这有缺陷,首先,原有的dc有可能包含了重叠的东西,比如你当前的窗口上有另一个窗口,(我的例子就是我打开savefiledlg的window也重叠在一起了,所以这个是纯粹的snapshot,并且scrolwindow的看不见部分有可能就存不上了,所以最好的做法是不用bitblt而是使用一个专门的画全部方法在你创建的compatibledc连同compatiblebitmap上重画一遍,注意refresh-background也要不仅仅局限于clientrect部分。重复前面说过的,一定要用compatibledc,不可以用原来系统地dc。

6。所谓的resize的window实际上是windowstyle这个是在创建windowclass的设定的,如果是mfc的话,应该在资源文件的属性里,(其实我在就想到了,但实在dialog资源的属性里找了很久就是看不见,哈哈。。。)所以,wm_size,wm_sizing仅仅是一个通知事件,是不能像scroll事件那样来实现resize的。

rdp=remote-desktop-protocol这个东西要有时间去看一看,应该是一个核心的东西。

四月九日 今天天气很好吗?阳光灿烂 。

我的记忆力太差了,做过的东西没有留下记录就忘得一干二净,所谓鼠标右键菜单其实非常的简单,就是使用一个所谓的trackpopupmenu的函数去画通过createpopupmenu所创建的菜单,只有一两个东西需要注意,trackpopupmenu的坐标是相对于screen的,所以,你要用getwindowrect来获得相对坐标,所谓菜单都是一些id,自己定义一下就是了。另外创建createcopatiblebitmap失败的原因不是内存太大的问题,而是bitmap必须宽度满足align32的要求。听说yahoo要破产了,我赶紧把我所有的再yahoo-group的存档转移到微软

四月十日 今天天气很好吗?阳光灿烂 。

DC说getdibits里面的那个pal的flag从来就没有看到有人用过,我也将信将疑,联想微软很多gdi函数都有些虎头蛇尾,比如我原来试验了很久才发现用bitmap的压缩格式存储jpg,tiff是没有实现的东西。此外,我今天对于paletteentry的rgba顺序和bitmap-colortable的rgbquad的bgra顺序发了好一阵呆,是否我应该自己去调换呢?我的意思是如果我存储palette的bitmap时候,比如8pp?DC说不用,我还是将信将疑。

四月十一日 今天天气很好吗? 下雨了很冷。

回到家发现服务器当掉了,最后一个错误好像是121=ERROR_SEM_TIMEOUT=“The semaphore timeout period has expired”,我猜想会不会是网络连接的超时?比如dns服务器的超时?我在命令行敲入ipconfig /displaydns先是localhost的timetolive是一个大约4天多的秒数,会不会使这个超时呢?

DC总要显示他比我强,我不知道双击window-caption导致最大化是什么事件,他就笑,说那时属性,让我取handle-ongetminmaxInfo,我说fullscreen不是自动的吗?他又开始揶揄我的所谓automatical,我要设定maxsize,要使用systemparametersinfo来获取workarea的面积。处理mouse-wheel实在是太简单了,总的来说对着事件写回调函数我当年没有学过任何计算机的都可以做到还能很快成为小公司的程序元,可想而知,但是要进步到一个初级偏上的程序元,就是能够按照msdn熟练使用各种api,那还真要上过计算机本科才行。今天又明白了一个简单的道理,在处理bitmap的时候,系统compatible的hbitmap句炳并不能获得所谓的palette,你要明白palette是和dc相联系的,因为bitmap都是一样的,(尤其是16色以下的依靠palette的颜色),需要靠系统地palette来解析,所以才会出现所谓的不同机器的色差,这个和显示器的色差又是另一回事,比如某种256色本系统没有就只能找相近的颜色代替,那么你在存储256色等得bitmap图时候怎样获得palette呢?我一开始想当然的以为用getcurrentobject获得当前的hpalette,然后用getpaletteentries来获得palette,1。我昨天说了paletteentry的rgb顺序与bitmapinfo的colortable就是rgbquad的rgb顺序颠倒,2。使用getpaletteentries只能获得系统默认的20个palette,这是我一直没有想通的,后来看见dc跟踪才明白不需要这一步,因为你一定要用getdibits来获得bits,同时你得colortable就被填满了,3。使用getdibits的时候,是否bits的buffer要和header+palette的bitmapinfo相连呢?我记得我以前做过实验室不需要的,今天又在问了一遍,同时试验结果也证实了,但是dc说的有道理,如果相连的画可以直接送到clipboard作交换,当然是好的了,而且写bitmap文件也一气呵成有效率。我今天费了很多时间没明白的是在于读msdn粗枝大叶,16色以下的bitmapheader的colorused如果设为零表示最大可能的颜色,所以,计算文件长度时候要小心。DC好像还专门去handle一个bitmapcoreinfo的结构,我猜想这个会不会是早期windows之类的结构?SetTimer一开始被DC认为是创建新的timer,我读msdn觉得不像,他叫我看process-manager的handle是否增加,结果不是的,所以说帮定window的timer使用id的话是单独的timer,set相当于reset-timeout。

四月十二日 今天天气很好吗?下雨了很冷。

早上去健身房,感觉在这种地方呆上两三个小时是很开心的一件事,因为心思纯粹,身心如一,然后去实验室想把那个该死的东西写完,可是我的懒惰是不可限量的,当然也是很疲惫不堪,看着看着就睡着了,熬不住了就随便吃了一点东西回家睡觉了。一睡就是一下午其实也不算睡觉,实际上是躲在被窝里看eeepc里装的《射雕英雄传》,哈哈。晚上看mr.bean's holiday梦想着将来沿着他的路线去法国,最好能够骑自行车旅行,哎穷人的梦想,不过我想这是富人们所永远体会不到的快乐。也许大多数人的一生都是一个笑话,只不过大多数人讲给自己听,少数人讲给大家听结果被大多数人羡慕得要死。我想如果我要真地想知道真相就只有自己写一个简单的文件loader替代mysql这样我就知道到底是httpapi的问题还是mysql的问题了,问题是我真的有时间吗?或者说不是时间而是一个人的热情,passion是否存在?

逃避并行编程的方式就是看<yes,minister〉知道什么叫做quango吗?字典里没有,看了wiki才知道,这是哪一类的NGO的总称,尤其是那一类的号称非政府组织实际上是政府操纵的组织,比如说“政邪”,“公贿”,“哄虱子会”等等。部长往往是最后一个了解真相的人,因为按照那些官僚的说法就是部长不应当知道得太多,比如特工被抓住以后会被拷问,如果他们知道真相就会说出来,所以干脆不告诉他们真相,所谓的need-to-know。有一集叫做<compassionate society〉中文翻译过来就是所谓的“和谐社会”。

四月十三日 今天天气很好吗? 又下雪了感觉比冬天还冷。

早上去试验室又睡着了,结果很不理想,也不知道什么原因,回头再说吧。

四月十四日 今天天气很好吗?感觉比冬天还冷。

心情非常得不好,期待中的没有发生,当然实际上我还是预测到了,只不过还是非常的郁闷。DC属于中国话里那种刚愎自用类型的,处处要显得比我强,他有不少的奇技淫巧,比如说如果你的函数里面有一大队的指针,突然一下你打算把他都变成引用如果他是参数的话,我以前非常烦去一个一个地把"->"该城".",DC说他声明一个宏,这的确是一个好办法,因为从性能上说完全没有影响,不像你声明一个变量去赋值由损失,而且编译器都明白的,code-completion照样使用。对于CString我一直没有用过,前两天临时抱佛脚用了一下才明白这个东西好象以前delphi里面的智能string一样,再pass-by-value的时候效率非常的高,因为他是一个“延迟”copy的方式,一开始仅仅是copy指针,直到有改变的动作发生的时候,检查引用计数,如果不为零就说明有额外的拷贝在被使用中,这个时候再真正做拷贝以便改变,而且普通的时候应该你不需要关心同步的问题,在引用计数增加的实现种内部使用了incrementlock的机制,当然如果有多个线程修改我觉得还是应该使用lockbuffer来的安全。我第一次使用不小心翻了一个大错,声明了一个结构包含了一个cstring然后随手使用zeromemory初始化结构,就是memset之类的,结果你当然可以想象了我总是遇到cstring出错,因为我把里面的东西也给干掉了!

有些老问题我反反复复得遇到就是老犯错。1。系统地dc是不可以被你是用来做“画板”的,可实施bitblt之类的source,不可以是dest,即便是src也不能使你自己的bitmap,只能是系统的,(难道不对?)2。你如果创建了bitmap想要使用setdibits那么一定要使用createcompatiblebitmap,使用createbitmapindirect一般是不行的。所以缩放图片你需要两个dc两个bitmap,想偷懒使用系统的不行的。3。凭空创建dc可以使display的dc,比如createDC(_T("DISPLAY"), NULL, NULL, NULL);这当然是因为你没有hwnd的情况下,凑合着用吧。4。ijl里面的jpegcoreproperties的jpgcolor,dibcolor不是普通我们的colorbit,是猜出来的,据说jpeg根本不能知道colorspace,所以jpgchannel:1=IJL_G,3=IJL_YCBCR,其他=IJL_OTHER。我当初不理解。

最近闹得沸沸扬扬的西藏事件及其引发的火炬事件我只觉得很可笑,双方都很可笑,纯粹庸人自扰,不妨冷眼观瞧。首先,gcd自己混蛋为什么要搞新闻封锁落人口实?当初申办奥运的时候就应经答应要新闻采访自由,为什么不敢?造成今天这种情况纯粹是应对无方,事情搞得大了让几个官员下台未必是坏事,问题是不可能,所以不妨再高的轰轰烈烈一些。至于说那群藏民,原本就是无知无识的农奴你能拿它有什么办法?西方社会同情弱者未必是坏事,暴民暴动说明已经绝望,所以更加不用担心,但反分裂主义走向恐怖暴力就说明已经失去民意,所以更加不用担心,只要暴乱的范围限制在西藏不妨再乱一些,不妨多放一些cnn和bbc的记者进去,管杀不管埋,有什么好怕的?

 

 

 

 

 

 

 


 

 

 

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

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

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