-
Notifications
You must be signed in to change notification settings - Fork 0
/
atom.xml
1089 lines (1014 loc) · 147 KB
/
atom.xml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
<title><![CDATA[SQRH]]></title>
<link href="http://www.sqrh.net/atom.xml" rel="self"/>
<link href="http://www.sqrh.net/"/>
<updated>2013-08-13T04:46:25+08:00</updated>
<id>http://www.sqrh.net/</id>
<author>
<name><![CDATA[SQRH]]></name>
</author>
<generator uri="http://octopress.org/">Octopress</generator>
<entry>
<title type="html"><![CDATA[Google glass: 整体图像扫描镜显示系统]]></title>
<link href="http://www.sqrh.net/blog/2013/02/27/google-glass-whole-image/"/>
<updated>2013-02-27T13:12:00+08:00</updated>
<id>http://www.sqrh.net/blog/2013/02/27/google-glass-whole-image</id>
<content type="html"><![CDATA[<p>(Whole image scanning mirror display system)</p>
<p>之前看到google glass的新闻一直困惑一个问题。我们都知道人眼焦距在5cm左右,正常情况下小于二倍焦距(10cm)位置的东西是看不清楚的。那么我们看google glass的图片:</p>
<p><img src="http://www.sqrh.net/images/google-glass.jpg" border="0" title="photo-media"></p>
<p>显然, 无论眼镜上哪个部分也不可能超过人眼10cm,那么这个眼镜上显示的图像是如何让人看清楚的呢?</p>
<p>于是开始搜原理…发现这个专利 <a href="http://www.google.com/patents/US20130016413">http://www.google.com/patents/US20130016413</a>.</p>
<p>专利名机翻过来该专利名字等于日志标题。</p>
<p>这篇专利介绍了如何使这个显示图像“变远”、“变大”。首先是变远:</p>
<p><img src="http://www.sqrh.net/images/google-glass-fig1a.jpg" border="0" title="photo-media"></p>
<p>105是图像来源,125是凸透镜,在焦点f处制造了一个虚像。之后通过110和115两面镜子反射到人眼120中。遗憾的是,这样的图像虽然可以看清楚了,但是太小了,其可视范围受制于110、115镜子的大小。使得人眼最多看到130这一个范围的图像(有效图像显示区域),可以使这个区域的大小正好等于人眼直视该图像中心时看到的窗口大小(eyebox)。</p>
<p>之后为了使图像的范围扩大到人眼可及的范围内,一个巧妙的方法是将110镜子变成可以活动的。见图(标号相同的意义相同):</p>
<p><img src="http://www.sqrh.net/images/google-glass-fig2a.jpg" border="0" title="photo-media"></p>
<p>这幅图中FIG. 2A,图像来源具体的使用光栅扫描显示器205表示,210是仍然是凸透镜。可以注意到原来的镜子110变成了215,可以绕r1,r2两轴,统一一个执行器(actuator)来旋转,使其可以通过更大的230反射镜,使其投影图像的可能范围扩大到240。当然,某个时刻,虽然区域位置可以变化,但是其大小还是原来的人眼窗口(eyebox)那么大。</p>
<p>那么接下来只要利用215的旋转能力,通过追踪人眼的聚焦位置,生成对应位置的“部分图像”,将“部分图像”正好投射到人眼窗口(eyebox)的位置,实现一个反馈控制,就可以保证人的眼球转动时可以看见“一整幅大图像”的不同位置的效果。</p>
<p>流程如下:</p>
<p><img src="http://www.sqrh.net/images/google-glass-fig7.jpg" border="0" title="photo-media"></p>
<p>我们仔细重新观察第一幅图,可以发现原来前面坨玻璃是…</p>
<p><img src="http://www.sqrh.net/images/google-glass-small.jpg" border="0" title="photo-media"></p>
<p>个人理解的基本原理就是这样~详情请看专利原本,水平有限有错误还请指明,谢谢!</p>
<hr />
<p>无论google的这些“不靠谱项目”最终能不能推广,个人的态度是先行者值得尊重。赞chromebook,赞driverless car,赞project glass.</p>
<p>更多关于google glass的相关专利,请猛击</p>
<p><a href="http://www.seobythesea.com/2013/01/project-glass-patents/">
http://www.seobythesea.com/2013/01/project-glass-patents/
</a></p>
<p>里面罗列了各种相关的专利和其abstract,很多很有意思,值得推荐。</p>
]]></content>
</entry>
<entry>
<title type="html"><![CDATA[[译]程序语言成功的终极秘诀?壮观的胡子]]></title>
<link href="http://www.sqrh.net/blog/2012/06/22/great-beard/"/>
<updated>2012-06-22T12:57:00+08:00</updated>
<id>http://www.sqrh.net/blog/2012/06/22/great-beard</id>
<content type="html"><![CDATA[<p>为什么有些程序语言可以统治世界,而另一些却沉溺于默默无闻?</p>
<p>两个学术团体,分别来自普林斯顿和加州伯克利,试图通过组合分析长期数据来攻克这一现代世界的难题。他们认为关键可能在于语言的文档做得如何。或者是由于一般程序员都没有时间与动力去学习太多的编程工具。又或者是因为学术界一贯喜欢制造显得华丽聪明但毫无实用价值的东西。</p>
<p>但一个叫<a href="http://www.alenz.org/mirror/khason/why-microsoft-can-blow-off-with-c.html">Tamir Kahson</a>的同学不这么认为。他显然认为这一切的谜底在于胡子。</p>
<p>根据Kahson同学的严肃(playful)分析,语言的成功与其发明者脸上胡子的长度是明显正相关的。显然,他是有理有据的。</p>
<p>C应该是迄今为止最成功的语言。六七十年度在贝尔实验室的时候,它就被用于编写UNIX操作系统,而到现今仍然是现代计算的基石之一。30年以来,它仍然维持着世界上最流行的语言的地位。很多人将此归功于Brian Kernighan的《C编程语言》一书,另一些人则归功于C的设计者,Ken Thopmson和Dennis Ritchie的天才。但是他俩除了天才意外,共同的特点是非常壮观的胡子:</p>
<p><img src="http://www.sqrh.net/images/programming-lang-and-beard0.jpg" border="0" title="photo-media">
<img src="http://www.sqrh.net/images/programming-lang-and-beard1.jpg" border="0" title="photo-media"></p>
<p>第二流行的语言应该是Java了。在其初次登台15年之后,尽管老是因为与Oracle联系过密而被人说三道四,但它仍然在Android和一些视频云服务上遍地开花。理所应当的,它的创造者James Gosling,也知道如何保养他意义重大的面部毛发。</p>
<p><img src="http://www.sqrh.net/images/programming-lang-and-beard2.jpg" border="0" title="photo-media"></p>
<p>第三流行?或许是C++吧,一种C的派生语言,也在贝尔实验室中发明。它的开发者是Bjarne Stroustrup,一个曾经有着必要大小胡须的人(下前)。C++没有C那么流行,或许正与Stroustrup决定把胡子给刮了(下后)有关。</p>
<p><img src="http://www.sqrh.net/images/programming-lang-and-beard3.jpg" border="0" title="photo-media">
<img src="http://www.sqrh.net/images/programming-lang-and-beard4.jpg" border="0" title="photo-media"></p>
<p>Lisp是一个第二古董的仍在使用的高级语言,影响着数不清的后继者们。Alan Kay,一个为当代计算做出奠基贡献的研究者曾经将Lisp视为“举世无双的最伟大编程语言。”它的设计者呢?是John McCarthy,一位在人工智能研究史上胡子最大的人。</p>
<p><img src="http://www.sqrh.net/images/programming-lang-and-beard5.jpg" border="0" title="photo-media"></p>
<p>或许Kay就应该多关心下McCarthy的胡子而不是语言的具体设计。Kay发明了SmallTalk,造成了对后来的面对对象语言的深远影响,但是该语言却从来没有在世界上大流行过。问题似乎出在Kay仅仅留了个小胡子上。</p>
<p><img src="http://www.sqrh.net/images/programming-lang-and-beard6.jpg" border="0" title="photo-media"></p>
<p>你看看,一个小胡子是可能限制语言的发展的。Joe Armstrong,Erlang语言的发明者,是一个小胡子的男人。同样的小胡子男人有Larry Wall,Perl的发明者,以及Thomas Kurtz,BASIC语言的发明者。这些都是有一定影响力的语言,并且现在仍然在某些方面有所运用。但是他们本来可以留个更大的胡子的。</p>
<p><img src="http://www.sqrh.net/images/programming-lang-and-beard7.jpg" border="0" title="photo-media"></p>
<p>话说回来,小胡子总比没胡子强。看看Kristen Nygaard,SIMULA的发明者?一点胡子都没有。Ada的发明者Jean Ichbiah?剃得很干净。Simon Peyton Jones,开发Haskell语言的主要脑力?你自己猜猜看好了。</p>
<p>是的,Pascal的创造者Niklaus Wirth是有络腮胡子的,而Pascal没有达到C或者C++的高度。但Pascal被用在了最初使世界着迷的Macintosh电脑上。再说,Turbo Pascal的开发者Anders Heijlsberg没有留胡子,或许正是原因。</p>
<p>还有其他例外么?女性计算机科学家Grace Hopper,作为Cobol语言——一种仍然在今天被广泛用于商业目的开创性语言——的母亲,是没有胡子的。但是显然的,她生理上来说不大可能长胡子,或许编程之神在她这儿放了点水。</p>
<p>明显,如果一个人要想成为一门新兴语言的缔造者,必须要对Kahson关于胡子的研究有所了解。Guido Van Rossum,Python的发明者,试图留一个像Ken Thompson一样的胡子,Python的社区也紧随其后。PHP的Rasmus Lerdorf,至少是在向这个方向发展了。</p>
<p>当Kahson的胡子理论于2004年第一次发表时,他显然刺激了Ruby的创造者,Yukihiro “Matz” Matsumoto,一个向来喜欢刮干净胡子的人,作出了改变和回应:</p>
<p><img src="http://www.sqrh.net/images/programming-lang-and-beard8.jpg" border="0" title="photo-media"></p>
<p>来源:http://www.wired.com/wiredenterprise/2012/06/beard-gallery/</p>
]]></content>
</entry>
<entry>
<title type="html"><![CDATA[书评:工具、概念]]></title>
<link href="http://www.sqrh.net/blog/2012/05/31/shu-ping-gong-ju-gai-nian/"/>
<updated>2012-05-31T02:07:00+08:00</updated>
<id>http://www.sqrh.net/blog/2012/05/31/shu-ping-gong-ju-gai-nian</id>
<content type="html"><![CDATA[<p>最近在看两本书:《松本行弘的程序世界》和《元编程Ruby》(metaprogramming ruby),收获不少。</p>
<p>Ruby是一门很优秀的语言,它的社区也十分有活力,其中的成员(如Matz)和代表公司(37 signals, github, twitter)总是充满了一种真正geek的童趣,而不是伪极客们的自认清高与冷淡。这种情绪总是能够激发人投入真正有意义的事情——比如帮助其他人。这种活力在很多其他社区是很难看到的,或许和其小众性有关,但更多的我相信和这种语言秉承的信念也是密不可分的。</p>
<p>工具这种东西从铸造出来的那一天起,就注入了工匠的灵魂。Matz(松本行弘的英文名)在创造出这个家伙的时候,就始终抱着“编程语言应该是让程序员们觉得快乐的东西”的信念。如果你在业余时间一点写代码的欲望都没有,或许未必是你不喜欢编程,可能是工具太不称手的缘故,正如鞋子不适就不想走路一样。再来,他也认为,当前的技术人员太多的看重了机器而忽略人,这种本末倒置的方式很让人头疼,奇怪的是,很多人为这种以机器为本的思想而自豪。苹果在业界较早的认识到了这点的荒谬,把用户的地位提升了,而程序员们的地位始终在搬砖上徘徊。但是Mac OSX内置了对Ruby的原生支持,或许是出于对其思想的赞赏吧。</p>
<p>谈谈工具的地位。使用工具或许不能让人变得更加高贵,但至少是一个进步的表现,原始人在第一次学会用石头工具的时候一定是内心由衷的赞同这句话的。工具的发展总体来说又不过是两个方向:更强大或者更好用。这两个方向都是进步,没有人敢说其中一个方向是没有意义的。奇怪的是,使用工具在当今社会有些时候反而会被人非议,尤其是“更好用”的工具——你又在投机取巧了?以至于人们一定要求给出工具更加强大的理由,“更好用”似乎不被当成工具被接受的理由。我感觉这个逻辑是奇怪的,站在原始人的角度,第一个将石刀装上手柄的家伙一定会嚷嚷着说太低估他的贡献了。</p>
<p>更加奇怪的是,会不会使用更多或者更好的工具,居然被很多人认为是与人的水平无关的。他们执着于所谓人本身的能力。但是问题是,人本身的能力到底是什么?没人会说懂一门外语不是人本身的能力,大部分的人也都承认语言就是交流的工具,那么显然在这个问题上人们是承认会用工具即能力的;会用搜索引擎获取信息,在我看来是很大的一门学问,必须是一种能力,但是在这个问题上,回答就不那么确定了:尤其是这种能力可能有副作用——把自己的实打实的知识变成了索引。</p>
<p>在编程语言上,这一问题更加明显:学校课堂用c/c++/java这种单线的互相直接继承的语言作为所有的基础,尚且情有可原,毕竟教学条件有限;但是无论是大多数学生还是老师,看到其他的语言都只是冷淡的态度,这就未免有些让人感觉失望。语言是对思想的表达,不同的范式中充满了智慧,居然却有人说过“学习什么语言无关紧要”,而说这句话的很多人根本就不去接触其他类型的语言,仅仅走完其c/c++/java/c#的路就认为天下大同,这未免也太不自量力了。</p>
<p>再谈谈概念,这里主要指范式(paradigm)。个人很多时候也存着一种“很多夸夸其谈的概念,本来都是些理所应当的事情”的想法,然而不管是这个学期的某个课程还是最近的看的书,都给人了不同的感受。其实一个好的概念的关键作用是在意识中定下一个钉子标记。很多时候很多概念理所应当,但是我们没有那个概念的坐标时,要么是“总感觉就是那个东西,却不好说”,要么是“总感觉有那么个东西,却说不出”。更让人困惑的是,有些东西说出来大家都觉得理所应当,若没有人给它起个名字,在明明有必要考虑这个东西时人们都想不起来有这回事。这时候,如果概念出现并且被人理解接受,之后让人每次想到问题是都不会漏掉这个东西,发明这个概念的人可就是功德无量了。</p>
<p>总是有那么些概念不仅名字难懂而且感觉毫无意义,当然也有可能是它就是渣或者时代的眼泪,但是一开始就这么藐视,那就是自己的错误了。</p>
<hr />
<p>一些浅见,就当书籍推荐好了。《松本行弘的程序世界》并不完全是ruby,其中有不少有意思的东西(编码、语言历史、设计模式),而且很浅显易懂,当故事书看也不错。</p>
]]></content>
</entry>
<entry>
<title type="html"><![CDATA[初试iOS Core Data]]></title>
<link href="http://www.sqrh.net/blog/2011/08/11/first-trial-ios-core-data/"/>
<updated>2011-08-11T00:00:00+08:00</updated>
<id>http://www.sqrh.net/blog/2011/08/11/first-trial-ios-core-data</id>
<content type="html"><![CDATA[<p>用户体验就一个字:赞!</p>
<p>编写了一个可以一键开启、停止记录加速度与陀螺仪数据的程序MotionRecorder,效果不错。以后还要加入数据集的概念和打标记的功能</p>
<p>用iphone explorer查看后发现,core data默认的sqlite数据库存放于/Apps/MotionRecorder/Documents/MotionRecorder.sqlite</p>
<p>下面。数据库结构十分清晰,所有的table和column都以Z为开头,其后为程序中定义好的数据名和字段名。</p>
<p>值得一提的是,timestamp数据(即date类型)在数据库中存储的形式是一长串浮点数,指的是相对于2001-01-01的毫秒偏移量,显然直接导出是毫无用处的。</p>
<p>而标准的unixepoch即unix时间戳是相对于1970年的,因此,经过测试,我们可以用这样的方式直接从sqlite数据库正确输出当地的精确到秒的时间数据:</p>
<p><em>select datetime(<strong>ColumnNameForTimeStamp</strong>,’unixepoch’,’+31 years’,’+1 day’,’localtime’) From <strong>TableName</strong>;</em></p>
<p>BTW. MacBook 实在太好用了,爱不释手啊。</p>
<p>推荐书籍:programming in objective-c; Beginning iPhone 4 Development (Exploring the iOS SDK).</p>
]]></content>
</entry>
<entry>
<title type="html"><![CDATA[rails开发手记]]></title>
<link href="http://www.sqrh.net/blog/2011/07/22/rails-notes/"/>
<updated>2011-07-22T00:00:00+08:00</updated>
<id>http://www.sqrh.net/blog/2011/07/22/rails-notes</id>
<content type="html"><![CDATA[<ol>
<li>如何安装多个版本的ruby&rails?<br /> 使用rvm(Ruby Version Manager),需要注意的是,最好把不同版本的rails安装在不同的ruby下,否则很有可能在反复的版本切换与gem install之后出现怎么调也调不好的错误。rvm设置默认的ruby版本的命令是rvm 1.x.x –default</li>
<li>使用git clone,发现无论时seed还是rails console调用model如User时报错无法进行?<br /> 使用cancan进行权限管理时,数据库一定要先配置好role表,否则会发现只要与之相关的model都无法使用且报错根本无法理解。</li>
<li>使用PaperClip进行图片管理,不知名错误?<br /> 请先检查是否安装了ImageMagick。</li>
<li>使用PaperClip,上传后没有反应?<br /> 注意是否在form_for处加了:html => { :multipart => true}</li>
<li>bundle install sqlite3后,仍然报错sqlite3_native LoadError?<br /> 可能是没有编译安装,切换到sqlite3的gem处,make,install一下试试。</li>
<li>我要移植安装gems的机器上没有网络怎么办?<br /> 可以使用bundle package将gems与项目捆绑打包,之后到目标机器上使用bundle install –local</li>
</ol>
<p>再说说使用rails的感受吧,rails发展的时间比django要长,各种插件与应用都相当丰富与成熟了,而且各种用法灵活多变,可定制性很强大,也确实可以被认为是当前最agile的架构。然而它的灵活性确实是有严重代价的,第一是上手难度相对要大,几个人一起学还不错;第二是错误百出,有些错误几乎没法解决;第三是最重要也最伤人的,由于它版本更新太快,各种插件跟进的速度又不一,版本控制的问题实在是让人伤透了脑筋,即使用了rvm与bundler这等神器,但错误却不会因此而消失,所以rails版本切换一定要慎之又慎。。</p>
]]></content>
</entry>
<entry>
<title type="html"><![CDATA[记信科夏令营与大一生活]]></title>
<link href="http://www.sqrh.net/blog/2011/07/20/eecs-summer-camp-and-freshman/"/>
<updated>2011-07-20T00:00:00+08:00</updated>
<id>http://www.sqrh.net/blog/2011/07/20/eecs-summer-camp-and-freshman</id>
<content type="html"><![CDATA[<p><span style="color: #333333; font-family: Tahoma, Verdana, STHeiTi, simsun, sans-serif; line-height: 21px;">
<p style="margin-top: 0px; margin-right: 0px; margin-bottom: 0.8em; margin-left: 0px; padding: 0px;">累,脚都累到麻木了,还是很想把一些事情记下来,作为一份沉淀的记忆,作为一份大一生活不算总结的总结。</p>
<p style="margin-top: 0px; margin-right: 0px; margin-bottom: 0.8em; margin-left: 0px; padding: 0px;">—————————————————————————————————————–</p>
<p style="margin-top: 0px; margin-right: 0px; margin-bottom: 0.8em; margin-left: 0px; padding: 0px;">我还依稀记得我两年前来到北大参加夏令营时的情形:刚刚经过一个比较堕落的高二,开始启动高三状态,还没等到我跟上复习的脚步,突然有这么一个参加北大夏令营的机会落在肩上,说是忐忑不安其实还不够明确,应该说是一方面对自己没有任何自信,另一方面又寄希望来一次绝地反击。当时的态度对北大非常敬畏,以至于谨小慎微,处处严格要求,最后也获得了相当好的成绩。算是高中挺重要的一个转折,一方面真正的有了来到北大的明确目标,另一方面也给了我往这个方向努力的足够自信(若考虑当时的平时成绩我可是完全不够格的)。所以说,夏令营是一个梦开始的地方。</p>
<p style="margin-top: 0px; margin-right: 0px; margin-bottom: 0.8em; margin-left: 0px; padding: 0px;">之后我来到了北大。来之前半年多的放荡冶游,心态改变了太多太多,梦似乎已成现实,现实却不会那么梦幻,却只是剥夺了人的距离感,使人少了敬畏多了平淡。迷惑失落忧郁寂寞,谁不是凡人一个。于失落中自欺欺人,于纠结中自娱自乐,大抵就是我的状态了。然而记忆这东西是不会轻易抛弃一个人的,于是我想到了夏令营。我向学院的老师申请当夏令营的志愿者。</p>
<p style="margin-top: 0px; margin-right: 0px; margin-bottom: 0.8em; margin-left: 0px; padding: 0px;">其实我早有这个想法,当年的辅导员十分负责认真,算是种下了一个种子。感恩这东西我一直觉得不是说说就可以的,虽然很多时候我们都没办法做出行动回报恩情,但只要有机会,就一定要做点事情。这是我的第一个动因。第二是希望与现在的高中生们打打交道,找回一点高中时的心态,也跟他们交流交流,否则真的三年隔一代我就神马都不懂了= =。再就是锻炼一下自己,与人打交道的能力虽然高中提高了不少,但是还远远不够,确实算是一个挑战。</p>
<p style="margin-top: 0px; margin-right: 0px; margin-bottom: 0.8em; margin-left: 0px; padding: 0px;">夏令营总共六天,大部分孩子们还是很好打交道的(请原谅我用孩子们。。。),也发生了不少有意思的事情,神马走路撞电线杆子啊、晚会玫瑰表白啊、霸气侧漏帝啊、晚上躲女寝的男生啊各种奇葩,谈起来当时或紧张或激动,最后都化为一笑而过。偶尔严厉一下相信他们也能理解吧。认识这么一帮家伙,其中还有20多个已经是12级校友的同学,实在是我的幸运。其他辅导员师兄师姐的处事方法也给了我很多启示,他们对我的照顾我是感激在心的。</p>
<p style="margin-top: 0px; margin-right: 0px; margin-bottom: 0.8em; margin-left: 0px; padding: 0px;">更重要是,我在有些孩子们的身上看到了当年我的影子。带着些许敬畏求知的坚定目光,这是开始做一个梦的人拥有的目光。我也希望,这种力量是这个夏令营给这些同学们最宝贵的纪念品。</p>
<p style="margin-top: 0px; margin-right: 0px; margin-bottom: 0.8em; margin-left: 0px; padding: 0px;">祝贺夏令营中取得了好成绩的准学弟们,一年以后在园子里还能来迎接你们,好好玩吧。</p>
<p style="margin-top: 0px; margin-right: 0px; margin-bottom: 0.8em; margin-left: 0px; padding: 0px;">大一一年,我把这件事视为真正的结束了,太多的徘徊也就成了生活在过去的人。一年来写了几个小游戏,做了几个小网站,参加了几个协会活动,真正学术的时间好像太少了点。也好,至少路基本上摸清了一点,虽然浪费了一些时间,却也还算值得,只希望接下来的几年能在园子里越来越游刃有余。Over.</p>
</span></p>
]]></content>
</entry>
<entry>
<title type="html"><![CDATA[New Domain Announcement]]></title>
<link href="http://www.sqrh.net/blog/2011/06/03/new-domain-announcement/"/>
<updated>2011-06-03T00:00:00+08:00</updated>
<id>http://www.sqrh.net/blog/2011/06/03/new-domain-announcement</id>
<content type="html"><![CDATA[<h2><span style="color: #ff9900;">启用新域名: www.sqrh.net</span></h2>
<p><span style="color: #ff9900;">过了考试周,就是更新的好时机了~</span></p>
<p><span style="color: #ff9900;">ps:顺便纪念一下屈夫子,惟草木之零落兮,恐美人之迟暮。</span></p>
]]></content>
</entry>
<entry>
<title type="html"><![CDATA[为什么要反对gfw?——写在方校长被袭击之后]]></title>
<link href="http://www.sqrh.net/blog/2011/05/20/why-hate-gfw/"/>
<updated>2011-05-20T00:00:00+08:00</updated>
<id>http://www.sqrh.net/blog/2011/05/20/why-hate-gfw</id>
<content type="html"><![CDATA[<p> </p>
<p style="margin-top: 0px; margin-right: 0px; margin-bottom: 0.8em; margin-left: 0px;">方校长只是一个替罪羊。确实,我们大家都知道方校长只是一个替罪羊,没有他,GFW也会有王校长、李校长、张校长去完成伟大的新时代长城。然而这并不能成为完全开脱责任的理由。事实上,不管他愿不愿意,既然他曾经领导开发了GFW,承担任何骂名乃至于袭击都是可以理解的。</p>
<p style="margin-top: 0px; margin-right: 0px; margin-bottom: 0.8em; margin-left: 0px;">当然,很多人或许不太理解我们这种“互联网极端自由主义者”对于网络开放所持的态度,更对于我们支持一个胆敢在大庭广众之下对一个校长丧失基本尊重,进行羞辱的行为表示愤慨。一方面我认为如果对于互联网开放的重要性认识不足,产生这种想法不足为奇且也不应该出言讽刺;另一方面我又实在觉得悲哀——有素质很好,但没有判断力却实在可怜又可恨。</p>
<p style="margin-top: 0px; margin-right: 0px; margin-bottom: 0.8em; margin-left: 0px;">所以我想说,我对互联网开放的意义的理解。</p>
<p style="margin-top: 0px; margin-right: 0px; margin-bottom: 0.8em; margin-left: 0px;">几乎所有的程序员都会对GFW产生由衷的厌恶:每次搜寻相关资料,我们总是可能获得一个404页面;每次访问便捷的服务,总要担心某天这个服务就要消失了(往往不就以后就真的这样了)。这首先带来的是在信息获取渠道上的封闭,对于每个人的学习与发展是不利的。</p>
<p style="margin-top: 0px; margin-right: 0px; margin-bottom: 0.8em; margin-left: 0px;">若仅仅如此,我们或许还可以为了国家的稳定做点牺牲算了。可怕的是随之而来的整个信息技术行业上的落后。最容易看到的是web2.0上的颓势:Twitter、Flickr、FaceBook、LinkedIN、DropBox、Tumblr、MySpace,FlipBoard,新兴的运用不断涌现(Blekko&Greplin相当值得关注);而在国内,我们看到的是一波又一波的山寨浪潮:一方面,有山寨品用用总共比没有用的好;另一方面,所谓的创新便只用局限在过滤敏感词的技术上了,当然,一般他们称之为“成功的本地化”。这必然要“感谢”GFW为保护“民族产业”作出的巨大贡献。</p>
<p style="margin-top: 0px; margin-right: 0px; margin-bottom: 0.8em; margin-left: 0px;">可怕的是,无论我们怎么紧跟步伐,封锁还是会造成一些严重后果。在我看来,ChromeBook的发布是最令人感到忧虑的一点。云计算在近几年炒得很热,但真正值得重视的实际成果有两个,一个是大量云计算服务平台的喷涌而出,另一个就是真正意义上的云计算电脑的出现。前者仍然可以看作过去虚拟主机的另一种包装(当然效率不可相提并论),后者却是时代发展的新产物。一直以来,随着无线网络的飞速发展,设备终端化的趋势越发的明显,无论是电脑还是各种电子设备,对于网络的运用越发重视。云计算的价格低廉、高扩展需求、可靠性在运用规模扩大、个人需求更加多样的未来必然成为重要的发展趋势。这种集中化的数据处理方式,正是由个人发电机变为集中发电厂,自我防卫转变为国家防卫这种现实世界中发生过无数次的历史在网络世界的重演,几乎是不可避免的(即使你极端反感)。事实上,我认为Google如果没有找到合适的方法成功,总会有人找到一个可以实现的方法。</p>
<p style="margin-top: 0px; margin-right: 0px; margin-bottom: 0.8em; margin-left: 0px;">这样,我反而不希望Google能成功了:一是还没有一个很好的能够取得人们信任的管理信息的机制(而不仅仅是商业道德与公司能力的口头保证),让一家公司完全的掌握很多人的信息未免有些可怕;再是如果国外如此快速的迈向这个时代,而我们的GFW却拒之门外,安心的维护着我国的大局域网,巨大的技术壁垒又将横亘在我们中国人的面前。那时候我们的网络组织是松散的,我们每一个人可利用的计算资源是无法与对方相比的,以及连带的新兴产业(虽不甚明了)的弱势,可能让我们又一次面临1840年的威胁,这是中华民族无论如何不能承受的。物理上的闭关锁国与网络的闭关锁国,危害性本质上是类似的。</p>
<p style="margin-top: 0px; margin-right: 0px; margin-bottom: 0.8em; margin-left: 0px;">以上讨论还仅仅是在技术层面,若上升到社会层面,可能影响更大。网络开放带来的好处有两个方面是显而易见的:一是去中心化(这与云计算并不矛盾),指的是意见发布以协作的方式进行;二是集群智慧与“众包“,这二者使得思维方式与组织形式发生极大的变化,其变革的深远难以言表。网络的阻隔,使得这两种趋势遭到明确的抑制,有可能使中国人的思维落后于整个时代,显得格格不入且无法交流(听上去很像某个邻国),这一点,才是令人恐惧至深的未来。</p>
]]></content>
</entry>
<entry>
<title type="html"><![CDATA[计算机应用设计比赛作品释出]]></title>
<link href="http://www.sqrh.net/blog/2011/05/01/earth-game/"/>
<updated>2011-05-01T00:00:00+08:00</updated>
<id>http://www.sqrh.net/blog/2011/05/01/earth-game</id>
<content type="html"><![CDATA[<h4><span style="font-size: large;">今年计算机应用设计比赛花了10天打酱油的成果,成功进入了答辩,还是比较满足的。以下是说明文件。</span></h4>
<p><span style="font-size: large;">源代码的下载地址位于:</span><a href="http://www.yinghuochong.com/disk/share_file.aspx?u=841259">http://www.yinghuochong.com/disk/share_file.aspx?u=841259</a></p>
<h4><span style="font-weight: normal;">————————————————– </span></h4>
<p class="MsoNormal" style="line-height: 20.0pt; mso-line-height-rule: exactly;"><span style="font-family: 'Adobe 宋体 Std L', serif;"> </span></p>
<h4><span style="font-size: 16.0pt; font-family: &amp;amp; mso-bidi-font-family: Tahoma;">【作品简介】<span lang="EN-US"> </span></span></h4>
<p class="MsoNormal" style="line-height: 20.0pt; mso-line-height-rule: exactly;"><span style="mso-bidi-font-size: 10.5pt; font-family: &amp;amp; mso-bidi-font-family: Tahoma;" lang="EN-US"><span style="mso-tab-count: 1;"> </span></span><span style="mso-bidi-font-size: 10.5pt; font-family: &amp;amp; mso-bidi-font-family: Tahoma;">本次设计大赛的主题要求是<span lang="EN-US">“</span>低碳环保<span lang="EN-US">”</span>,作者考虑到当今社会倡导低碳环保的主要原因在于减缓全球变暖的趋势,因此寄希望于用一个直观的展示方式使人们认识到全球变暖的危害已经采取措施的迫切性。这样,基于游戏引擎<span style="color: #943634; mso-themecolor: accent2; mso-themeshade: 191;" lang="EN-US">Haff’s Game Engine</span>(后简称<span lang="EN-US">HGE</span>)的展示性游戏《家园保卫战》的构思浮出水面。本程序直观的展示了地球在全球变暖的大趋势下的变化过程,并且允许玩家采取各种手段与全球变暖的趋势相对抗,获得了较好的用户体验。<span lang="EN-US"> </span></span></p>
<p class="MsoNormal" style="line-height: 20.0pt; mso-line-height-rule: exactly;"><span style="mso-bidi-font-size: 10.5pt; font-family: &amp;amp; mso-bidi-font-family: Tahoma;" lang="EN-US"><span style="mso-tab-count: 1;"> </span><span style="color: black;">HGE</span></span><span style="mso-bidi-font-size: 10.5pt; font-family: &amp;amp; mso-bidi-font-family: Tahoma; color: black;">是一套十分易用的硬件加速<span lang="EN-US">2D</span>游戏引擎。它基于<span lang="EN-US">DX8,</span>运行于各种<span lang="EN-US">Win32</span>平台<span lang="EN-US">,</span>同时支持<span lang="EN-US">VC</span>,<span lang="EN-US">BC</span>,<span lang="EN-US">MinGW</span>多种编译环境。它使用<span lang="EN-US">“The zlib/libpng license”</span>协议发布,可以自由地使用在包括商业性质的项目上。<span lang="EN-US"> </span></span></p>
<p class="MsoNormal" style="line-height: 20.0pt; mso-line-height-rule: exactly;"><span style="mso-bidi-font-size: 10.5pt; font-family: &amp;amp; mso-bidi-font-family: Tahoma; color: black;" lang="EN-US"><span style="mso-tab-count: 1;"> </span></span><span style="mso-bidi-font-size: 10.5pt; font-family: &amp;amp; mso-bidi-font-family: Tahoma; color: black;">关键技术有如下几点,在<span lang="EN-US">“</span></span><span style="mso-bidi-font-size: 10.5pt; font-family: &amp;amp; mso-bidi-font-family: Tahoma;">设计重点难点<span style="color: black;" lang="EN-US">”</span><span style="color: black;">中将会着重解释:<span lang="EN-US"> </span></span></span></p>
<p class="MsoListParagraph" style="margin-left: 39.0pt; text-indent: -18.0pt; mso-char-indent-count: 0; line-height: 20.0pt; mso-line-height-rule: exactly; mso-list: l2 level1 lfo2;"><!--[if !supportLists]--><span style="mso-bidi-font-size: 10.5pt; font-family: &amp;amp; mso-bidi-font-family: &amp;amp; color: black;" lang="EN-US"><span style="mso-list: Ignore;">1.<span style="font: 7.0pt &amp;amp;"> </span></span></span><!--[endif]--><span style="mso-bidi-font-size: 10.5pt; font-family: &amp;amp; mso-bidi-font-family: Tahoma; color: black;">游戏工程整体规划<span lang="EN-US">;</span></span></p>
<p class="MsoListParagraph" style="margin-left: 39.0pt; text-indent: -18.0pt; mso-char-indent-count: 0; line-height: 20.0pt; mso-line-height-rule: exactly; mso-list: l2 level1 lfo2;"><!--[if !supportLists]--><span style="mso-bidi-font-size: 10.5pt; font-family: &amp;amp; mso-bidi-font-family: &amp;amp;" lang="EN-US"><span style="mso-list: Ignore;">2.<span style="font: 7.0pt &amp;amp;"> </span></span></span><!--[endif]--><span style="mso-bidi-font-size: 10.5pt; font-family: &amp;amp; mso-bidi-font-family: Tahoma; color: black;">资源(内存、等待时间)的合理安排<span lang="EN-US">;</span></span><span style="mso-bidi-font-size: 10.5pt; font-family: &amp;amp; mso-bidi-font-family: Tahoma;" lang="EN-US"> </span></p>
<p class="MsoListParagraph" style="margin-left: 39.0pt; text-indent: -18.0pt; mso-char-indent-count: 0; line-height: 20.0pt; mso-line-height-rule: exactly; mso-list: l2 level1 lfo2;"><!--[if !supportLists]--><span style="mso-bidi-font-size: 10.5pt; font-family: &amp;amp; mso-bidi-font-family: &amp;amp;" lang="EN-US"><span style="mso-list: Ignore;">3.<span style="font: 7.0pt &amp;amp;"> </span></span></span><!--[endif]--><span style="mso-bidi-font-size: 10.5pt; font-family: &amp;amp; mso-bidi-font-family: Tahoma; color: black;">用户界面设计<span lang="EN-US">;</span></span></p>
<p class="MsoListParagraph" style="margin-left: 39.0pt; text-indent: -18.0pt; mso-char-indent-count: 0; line-height: 20.0pt; mso-line-height-rule: exactly; mso-list: l2 level1 lfo2;"><!--[if !supportLists]--><span style="mso-bidi-font-size: 10.5pt; font-family: &amp;amp; mso-bidi-font-family: &amp;amp;" lang="EN-US"><span style="mso-list: Ignore;">4.<span style="font: 7.0pt &amp;amp;"> </span></span></span><!--[endif]--><span style="mso-bidi-font-size: 10.5pt; font-family: &amp;amp; mso-bidi-font-family: Tahoma; color: black;">图像、视频、音频的剪辑处理。</span></p>
<h4><span style="font-size: 16.0pt; font-family: &amp;amp; mso-bidi-font-family: Tahoma;">【安装说明】</span></h4>
<p class="MsoNormal" style="line-height: 20.0pt; mso-line-height-rule: exactly;"><span style="mso-bidi-font-size: 10.5pt; font-family: &amp;amp; mso-bidi-font-family: Tahoma;" lang="EN-US"><span style="mso-tab-count: 1;"> </span></span><span style="mso-bidi-font-size: 10.5pt; font-family: &amp;amp; mso-bidi-font-family: Tahoma;">在压缩包中提供了已编译的程序(<span lang="EN-US">/</span>作品)与安装包(<span lang="EN-US">/</span>安装包)。</span></p>
<p class="MsoNormal" style="line-height: 20.0pt; mso-line-height-rule: exactly;"><span style="mso-bidi-font-size: 10.5pt; font-family: &amp;amp; mso-bidi-font-family: Tahoma;" lang="EN-US"><span style="mso-tab-count: 1;"> </span></span><span style="mso-bidi-font-size: 10.5pt; font-family: &amp;amp; mso-bidi-font-family: Tahoma;">可以采取以下方法运行程序:</span></p>
<p class="MsoListParagraph" style="margin-left: 60.0pt; text-indent: -18.0pt; mso-char-indent-count: 0; line-height: 20.0pt; mso-line-height-rule: exactly; mso-list: l3 level1 lfo1;"><!--[if !supportLists]--><span style="mso-bidi-font-size: 10.5pt; font-family: &amp;amp; mso-bidi-font-family: &amp;amp;" lang="EN-US"><span style="mso-list: Ignore;">1.<span style="font: 7.0pt &amp;amp;"> </span></span></span><!--[endif]--><span style="mso-bidi-font-size: 10.5pt; font-family: &amp;amp; mso-bidi-font-family: Tahoma;">直接运行<span style="color: #943634; mso-themecolor: accent2; mso-themeshade: 191;" lang="EN-US">/</span><span style="color: #943634; mso-themecolor: accent2; mso-themeshade: 191;">作品<span lang="EN-US">/main.exe</span></span><span lang="EN-US">;</span></span></p>
<p class="MsoListParagraph" style="margin-left: 60.0pt; text-indent: -18.0pt; mso-char-indent-count: 0; line-height: 20.0pt; mso-line-height-rule: exactly; mso-list: l3 level1 lfo1;"><!--[if !supportLists]--><span style="mso-bidi-font-size: 10.5pt; font-family: &amp;amp; mso-bidi-font-family: &amp;amp;" lang="EN-US"><span style="mso-list: Ignore;">2.<span style="font: 7.0pt &amp;amp;"> </span></span></span><!--[endif]--><span style="mso-bidi-font-size: 10.5pt; font-family: &amp;amp; mso-bidi-font-family: Tahoma;">使用<span style="color: #943634; mso-themecolor: accent2; mso-themeshade: 191;" lang="EN-US">/</span><span style="color: #943634; mso-themecolor: accent2; mso-themeshade: 191;">安装包<span lang="EN-US">/earthgame.msi</span></span>安装后,在桌面上即出现<span lang="EN-US">“</span>家园保卫战<span lang="EN-US">”</span>的快捷方式,使用快捷方式进入游戏。卸载可以直接运行安装包。</span></p>
<h4><span style="font-size: 16.0pt; font-family: &amp;amp; mso-bidi-font-family: Tahoma;">【设计思路】</span></h4>
<p class="MsoListParagraph" style="margin-left: 21.25pt; text-indent: -21.25pt; mso-char-indent-count: 0; line-height: 20.0pt; mso-line-height-rule: exactly; mso-list: l1 level1 lfo3;"><!--[if !supportLists]--><span style="mso-bidi-font-size: 10.5pt; font-family: &amp;amp; mso-bidi-font-family: &amp;amp;" lang="EN-US"><span style="mso-list: Ignore;">1)<span style="font: 7.0pt &amp;amp;"> </span></span></span><!--[endif]--><span style="mso-bidi-font-size: 10.5pt; font-family: &amp;amp; mso-bidi-font-family: Tahoma;">整体流程</span></p>
<p class="MsoListParagraph" style="margin-left: 42.55pt; text-indent: -21.3pt; mso-char-indent-count: 0; line-height: 20.0pt; mso-line-height-rule: exactly; mso-list: l1 level2 lfo3;"><!--[if !supportLists]--><span style="mso-bidi-font-size: 10.5pt; font-family: &amp;amp; mso-bidi-font-family: &amp;amp;" lang="EN-US"><span style="mso-list: Ignore;">1.<span style="font: 7.0pt &amp;amp;"> </span></span></span><!--[endif]--><span style="mso-bidi-font-size: 10.5pt; font-family: &amp;amp; mso-bidi-font-family: Tahoma;">欢迎界面与操作简介:进行介绍,资源载入。</span></p>
<p class="MsoListParagraph" style="margin-left: 42.55pt; text-indent: -21.3pt; mso-char-indent-count: 0; line-height: 20.0pt; mso-line-height-rule: exactly; mso-list: l1 level2 lfo3;"><!--[if !supportLists]--><span style="mso-bidi-font-size: 10.5pt; font-family: &amp;amp; mso-bidi-font-family: &amp;amp;" lang="EN-US"><span style="mso-list: Ignore;">2.<span style="font: 7.0pt &amp;amp;"> </span></span></span><!--[endif]--><span style="mso-bidi-font-size: 10.5pt; font-family: &amp;amp; mso-bidi-font-family: Tahoma;">主游戏画面:</span></p>
<p class="MsoListParagraph" style="margin-left: 63.8pt; text-indent: -21.25pt; mso-char-indent-count: 0; line-height: 20.0pt; mso-line-height-rule: exactly; mso-list: l1 level3 lfo3;"><!--[if !supportLists]--><span style="mso-bidi-font-size: 10.5pt; font-family: Wingdings; mso-fareast-font-family: Wingdings; mso-bidi-font-family: Wingdings;" lang="EN-US"><span style="mso-list: Ignore;">u<span style="font: 7.0pt &amp;amp;"> </span></span></span><!--[endif]--><span style="mso-bidi-font-size: 10.5pt; font-family: &amp;amp; mso-bidi-font-family: Tahoma;">时间增加,事件在特定时间发生,在地图上显示为蓝绿点(离发生还有一段时间、红点(接近发生)、黑点(已经发生过)。</span></p>
<p class="MsoListParagraph" style="margin-left: 63.8pt; text-indent: -21.25pt; mso-char-indent-count: 0; line-height: 20.0pt; mso-line-height-rule: exactly; mso-list: l1 level3 lfo3;"><!--[if !supportLists]--><span style="mso-bidi-font-size: 10.5pt; font-family: Wingdings; mso-fareast-font-family: Wingdings; mso-bidi-font-family: Wingdings;" lang="EN-US"><span style="mso-list: Ignore;">u<span style="font: 7.0pt &amp;amp;"> </span></span></span><!--[endif]--><span style="mso-bidi-font-size: 10.5pt; font-family: &amp;amp; mso-bidi-font-family: Tahoma;">可以通过右键调出菜单,进行操作,影响局面(时间、时间流速、及事件发生时间)。</span></p>
<p class="MsoListParagraph" style="margin-left: 63.8pt; text-indent: -21.25pt; mso-char-indent-count: 0; line-height: 20.0pt; mso-line-height-rule: exactly; mso-list: l1 level3 lfo3;"><!--[if !supportLists]--><span style="mso-bidi-font-size: 10.5pt; font-family: Wingdings; mso-fareast-font-family: Wingdings; mso-bidi-font-family: Wingdings;" lang="EN-US"><span style="mso-list: Ignore;">u<span style="font: 7.0pt &amp;amp;"> </span></span></span><!--[endif]--><span style="mso-bidi-font-size: 10.5pt; font-family: &amp;amp; mso-bidi-font-family: Tahoma;">事件发生后弹出相关事件区块,提供图片与文字解释。</span></p>
<p class="MsoListParagraph" style="margin-left: 63.8pt; text-indent: -21.25pt; mso-char-indent-count: 0; line-height: 20.0pt; mso-line-height-rule: exactly; mso-list: l1 level3 lfo3;"><!--[if !supportLists]--><span style="mso-bidi-font-size: 10.5pt; font-family: Wingdings; mso-fareast-font-family: Wingdings; mso-bidi-font-family: Wingdings;" lang="EN-US"><span style="mso-list: Ignore;">u<span style="font: 7.0pt &amp;amp;"> </span></span></span><!--[endif]--><span style="mso-bidi-font-size: 10.5pt; font-family: &amp;amp; mso-bidi-font-family: Tahoma;">系统游戏信息通过统一的方式进行消息通知。</span></p>
<p class="MsoListParagraph" style="margin-left: 42.55pt; text-indent: -21.3pt; mso-char-indent-count: 0; line-height: 20.0pt; mso-line-height-rule: exactly; mso-list: l1 level2 lfo3;"><!--[if !supportLists]--><span style="mso-bidi-font-size: 10.5pt; font-family: &amp;amp; mso-bidi-font-family: &amp;amp;" lang="EN-US"><span style="mso-list: Ignore;">3.<span style="font: 7.0pt &amp;amp;"> </span></span></span><!--[endif]--><span style="mso-bidi-font-size: 10.5pt; font-family: &amp;amp; mso-bidi-font-family: Tahoma;">游戏结束:一定时间一轮游戏结束,从主游戏画面过渡到结束画面,显示用户得分与历史最高分,结束游戏。</span></p>
<p class="MsoListParagraph" style="margin-left: 21.25pt; text-indent: -21.25pt; mso-char-indent-count: 0; line-height: 20.0pt; mso-line-height-rule: exactly; mso-list: l1 level1 lfo3;"><!--[if !supportLists]--><span style="mso-bidi-font-size: 10.5pt; font-family: &amp;amp; mso-bidi-font-family: &amp;amp;" lang="EN-US"><span style="mso-list: Ignore;">2)<span style="font: 7.0pt &amp;amp;"> </span></span></span><!--[endif]--><span style="mso-bidi-font-size: 10.5pt; font-family: &amp;amp; mso-bidi-font-family: Tahoma;">使用多张图片表现动画效果:由于开发时间有限,<span lang="EN-US">HGE</span>游戏引擎又无法渲染视频,因此作者采用了快放多张图片达到动画效果的方法,将开发难度降低。</span></p>
<p class="MsoListParagraph" style="margin-left: 21.25pt; text-indent: -21.25pt; mso-char-indent-count: 0; line-height: 20.0pt; mso-line-height-rule: exactly; mso-list: l1 level1 lfo3;"><!--[if !supportLists]--><span style="mso-bidi-font-size: 10.5pt; font-family: &amp;amp; mso-bidi-font-family: &amp;amp;" lang="EN-US"><span style="mso-list: Ignore;">3)<span style="font: 7.0pt &amp;amp;"> </span></span></span><!--[endif]--><span style="mso-bidi-font-size: 10.5pt; font-family: &amp;amp; mso-bidi-font-family: Tahoma;">以图片为信息的主要载体:由于<span lang="EN-US">HGE</span>引擎对于中文的支持并不好,对于需要中文信息的地方,作者使用图片作为载体,达到易于使用的目的。</span></p>
<p class="MsoListParagraph" style="margin-left: 21.25pt; text-indent: -21.25pt; mso-char-indent-count: 0; line-height: 20.0pt; mso-line-height-rule: exactly; mso-list: l1 level1 lfo3;"><!--[if !supportLists]--><span style="mso-bidi-font-size: 10.5pt; font-family: &amp;amp; mso-bidi-font-family: &amp;amp;" lang="EN-US"><span style="mso-list: Ignore;">4)<span style="font: 7.0pt &amp;amp;"> </span></span></span><!--[endif]--><span style="mso-bidi-font-size: 10.5pt; font-family: &amp;amp; mso-bidi-font-family: Tahoma;">采用开通手写为主的字体风格以及合适的音效音乐:将字体风格与主题、表现形式、音效与图片结合起来,营造轻松的环境氛围。</span></p>
<h4><span style="font-size: 16.0pt; font-family: &amp;amp; mso-bidi-font-family: Tahoma;">【设计重点难点】</span></h4>
<p class="MsoListParagraph" style="margin-left: 21.25pt; text-indent: -21.25pt; mso-char-indent-count: 0; line-height: 20.0pt; mso-line-height-rule: exactly; mso-list: l0 level1 lfo4;"><!--[if !supportLists]--><span style="mso-bidi-font-size: 10.5pt; font-family: &amp;amp; mso-bidi-font-family: &amp;amp;" lang="EN-US"><span style="mso-list: Ignore;">1)<span style="font: 7.0pt &amp;amp;"> </span></span></span><!--[endif]--><span style="mso-bidi-font-size: 10.5pt; font-family: &amp;amp; mso-bidi-font-family: Tahoma;">整体规划:</span></p>
<p class="MsoNormal" style="text-indent: 21.0pt; line-height: 20.0pt; mso-line-height-rule: exactly;"><span style="mso-bidi-font-size: 10.5pt; font-family: &amp;amp; mso-bidi-font-family: Tahoma;">游戏引擎主要通过反复调用画面渲染函数(<span lang="EN-US">RenderFunc</span>)与帧功能函数(<span lang="EN-US">FrameFunc</span>)来完成对游戏显示及数据处理的过程,为了完成游戏功能,对应四种游戏状态,设计了四套渲染函数与功能函数,分别用于开始场景、游戏主场景、弹出消息场景、游戏结束场景。对于不同场景以及主要的其他功能函数进行了分类,提高源码的清晰度与可维护性。</span></p>
<p class="MsoListParagraph" style="margin-left: 21.25pt; text-indent: -21.25pt; mso-char-indent-count: 0; line-height: 20.0pt; mso-line-height-rule: exactly; mso-list: l0 level1 lfo4;"><!--[if !supportLists]--><span style="mso-bidi-font-size: 10.5pt; font-family: &amp;amp; mso-bidi-font-family: &amp;amp;" lang="EN-US"><span style="mso-list: Ignore;">2)<span style="font: 7.0pt &amp;amp;"> </span></span></span><!--[endif]--><span style="mso-bidi-font-size: 10.5pt; font-family: &amp;amp; mso-bidi-font-family: Tahoma;">资源的合理使用:</span></p>
<p class="MsoListParagraph" style="margin-left: 42.55pt; text-indent: -21.3pt; mso-char-indent-count: 0; line-height: 20.0pt; mso-line-height-rule: exactly; mso-list: l0 level2 lfo4;"><!--[if !supportLists]--><span style="mso-bidi-font-size: 10.5pt; font-family: &amp;amp; mso-bidi-font-family: &amp;amp;" lang="EN-US"><span style="mso-list: Ignore;">1.<span style="font: 7.0pt &amp;amp;"> </span></span></span><!--[endif]--><span style="mso-bidi-font-size: 10.5pt; font-family: &amp;amp; mso-bidi-font-family: Tahoma;">内存使用以及用户等待时间是游戏设计能否成功的重要因素。在初始的设计中,游戏的所有资源都在一开始载入,载入时间极长,给人一种已经死机的假象,由于总共使用了数百张分辨率较高(<span lang="EN-US">1024*512</span>)的图片,导致内存资源需求极大(几百兆),在低配置的机器上完全无法运行。后改为<span lang="EN-US">“</span>边使用,边释放<span lang="EN-US">”</span>的内存管理方式,虽然有短暂的卡顿现象(<span lang="EN-US">50ms/1sec</span>),但基本于用户体验无碍。</span></p>
<p class="MsoListParagraph" style="margin-left: 42.55pt; text-indent: -21.3pt; mso-char-indent-count: 0; line-height: 20.0pt; mso-line-height-rule: exactly; mso-list: l0 level2 lfo4;"><!--[if !supportLists]--><span style="mso-bidi-font-size: 10.5pt; font-family: &amp;amp; mso-bidi-font-family: &amp;amp;" lang="EN-US"><span style="mso-list: Ignore;">2.<span style="font: 7.0pt &amp;amp;"> </span></span></span><!--[endif]--><span style="mso-bidi-font-size: 10.5pt; font-family: &amp;amp; mso-bidi-font-family: Tahoma;">为了降低整体的资源消耗,对图片、音频都进行了合理的压缩,整体减少了大约<span lang="EN-US">60%</span>的空间开销,内存峰值也降至了<span lang="EN-US">80MB</span>以内。</span></p>
<p class="MsoListParagraph" style="margin-left: 21.25pt; text-indent: -21.25pt; mso-char-indent-count: 0; line-height: 20.0pt; mso-line-height-rule: exactly; mso-list: l0 level1 lfo4;"><!--[if !supportLists]--><span style="mso-bidi-font-size: 10.5pt; font-family: &amp;amp; mso-bidi-font-family: &amp;amp;" lang="EN-US"><span style="mso-list: Ignore;">3)<span style="font: 7.0pt &amp;amp;"> </span></span></span><!--[endif]--><span style="mso-bidi-font-size: 10.5pt; font-family: &amp;amp; mso-bidi-font-family: Tahoma;">用户界面设计:</span></p>
<p class="MsoListParagraph" style="margin-left: 42.55pt; text-indent: -21.3pt; mso-char-indent-count: 0; line-height: 20.0pt; mso-line-height-rule: exactly; mso-list: l0 level2 lfo4;"><!--[if !supportLists]--><span style="mso-bidi-font-size: 10.5pt; font-family: &amp;amp; mso-bidi-font-family: &amp;amp;" lang="EN-US"><span style="mso-list: Ignore;">1.<span style="font: 7.0pt &amp;amp;"> </span></span></span><!--[endif]--><span style="mso-bidi-font-size: 10.5pt; font-family: &amp;amp; mso-bidi-font-family: Tahoma;">使用半透明灰色遮罩住主场景,突出了黑板与手写字体构成的菜单,给用户以协调的感受。</span></p>
<p class="MsoListParagraph" style="margin-left: 42.55pt; text-indent: -21.3pt; mso-char-indent-count: 0; line-height: 20.0pt; mso-line-height-rule: exactly; mso-list: l0 level2 lfo4;"><!--[if !supportLists]--><span style="mso-bidi-font-size: 10.5pt; font-family: &amp;amp; mso-bidi-font-family: &amp;amp;" lang="EN-US"><span style="mso-list: Ignore;">2.<span style="font: 7.0pt &amp;amp;"> </span></span></span><!--[endif]--><span style="mso-bidi-font-size: 10.5pt; font-family: &amp;amp; mso-bidi-font-family: Tahoma;">使用音效与动画消息提示,吸引用户注意,更好的传达信息。合理设置光标显示,防止无用操作尝试。</span></p>
<p class="MsoListParagraph" style="margin-left: 42.55pt; text-indent: -21.3pt; mso-char-indent-count: 0; line-height: 20.0pt; mso-line-height-rule: exactly; mso-list: l0 level2 lfo4;"><!--[if !supportLists]--><span style="mso-bidi-font-size: 10.5pt; font-family: &amp;amp; mso-bidi-font-family: &amp;amp;" lang="EN-US"><span style="mso-list: Ignore;">3.<span style="font: 7.0pt &amp;amp;"> </span></span></span><!--[endif]--><span style="mso-bidi-font-size: 10.5pt; font-family: &amp;amp; mso-bidi-font-family: Tahoma;">尽可能接收用户操作,提高交互程度,把游戏进度的控制权交给用户,防止用户产生不耐烦的情绪。</span></p>
<p class="MsoListParagraph" style="margin-left: 42.55pt; text-indent: -21.3pt; mso-char-indent-count: 0; line-height: 20.0pt; mso-line-height-rule: exactly; mso-list: l0 level2 lfo4;"><!--[if !supportLists]--><span style="mso-bidi-font-size: 10.5pt; font-family: &amp;amp; mso-bidi-font-family: &amp;amp;" lang="EN-US"><span style="mso-list: Ignore;">4.<span style="font: 7.0pt &amp;amp;"> </span></span></span><!--[endif]--><span style="mso-bidi-font-size: 10.5pt; font-family: &amp;amp; mso-bidi-font-family: Tahoma;">使用对比度适当的配色,由于画面比较复杂,为了清晰而又不刺眼的传达文字信息,对于配色进行了相当多的实验,最后挑选出一种较好的方案。</span></p>
<p class="MsoListParagraph" style="margin-left: 21.25pt; text-indent: -21.25pt; mso-char-indent-count: 0; line-height: 20.0pt; mso-line-height-rule: exactly; mso-list: l0 level1 lfo4;"><!--[if !supportLists]--><span style="mso-bidi-font-size: 10.5pt; font-family: &amp;amp; mso-bidi-font-family: &amp;amp;" lang="EN-US"><span style="mso-list: Ignore;">4)<span style="font: 7.0pt &amp;amp;"> </span></span></span><!--[endif]--><span style="mso-bidi-font-size: 10.5pt; font-family: &amp;amp; mso-bidi-font-family: Tahoma;">图像、视频、声音剪辑:</span></p>
<p class="MsoListParagraph" style="margin-left: 21.25pt; text-indent: 0cm; mso-char-indent-count: 0; line-height: 20.0pt; mso-line-height-rule: exactly;"><span style="mso-bidi-font-size: 10.5pt; font-family: &amp;amp; mso-bidi-font-family: Tahoma;">主要是为了达到满意的效果,本作品大量的使用<span lang="EN-US">photoshop</span>、<span lang="EN-US">cooledit</span>、<span lang="EN-US">aftereffect</span>进行了各种媒体的简单的剪辑、处理,满足对素材的需求。</span></p>
<h4><span style="font-size: 16.0pt; font-family: &amp;amp; mso-bidi-font-family: Tahoma;">【开发与运行环境】</span></h4>
<table class="MsoTableGrid" style="border-collapse: collapse; border: none; mso-border-alt: solid windowtext 1.5pt; mso-yfti-tbllook: 1536; mso-padding-alt: 0cm 5.4pt 0cm 5.4pt; mso-border-insideh: .75pt solid windowtext; mso-border-insidev: .75pt solid windowtext;" border="1" cellspacing="0" cellpadding="0">
<tbody>
<tr style="mso-yfti-irow: 0; mso-yfti-firstrow: yes;">
<td style="width: 118.8pt; border-top: 1.5pt; border-left: 1.5pt; border-bottom: 1.0pt; border-right: 1.0pt; border-color: windowtext; border-style: solid; mso-border-top-alt: 1.5pt; mso-border-left-alt: 1.5pt; mso-border-bottom-alt: .75pt; mso-border-right-alt: .75pt; mso-border-color-alt: windowtext; mso-border-style-alt: solid; padding: 0cm 5.4pt 0cm 5.4pt;" width="158" valign="top">
<p class="MsoListParagraph" style="text-indent: 0cm; mso-char-indent-count: 0; line-height: 20.0pt; mso-line-height-rule: exactly;"><span style="mso-bidi-font-size: 10.5pt; font-family: &amp;amp; mso-bidi-font-family: Tahoma;" lang="EN-US">CPU</span></p>
</td>
<td style="width: 307.3pt; border-top: solid windowtext 1.5pt; border-left: none; border-bottom: solid windowtext 1.0pt; border-right: solid windowtext 1.5pt; mso-border-left-alt: .75pt; mso-border-top-alt: 1.5pt; mso-border-bottom-alt: .75pt; mso-border-right-alt: 1.5pt; mso-border-color-alt: windowtext; mso-border-style-alt: solid; padding: 0cm 5.4pt 0cm 5.4pt;" width="410" valign="top">
<p class="MsoListParagraph" style="text-indent: 0cm; mso-char-indent-count: 0; line-height: 20.0pt; mso-line-height-rule: exactly;"><span style="mso-bidi-font-size: 10.5pt; font-family: &amp;amp; mso-bidi-font-family: Tahoma;" lang="EN-US">AMD Phenom II N830</span></p>
</td>
</tr>
<tr style="mso-yfti-irow: 1;">
<td style="width: 118.8pt; border-top: none; border-left: solid windowtext 1.5pt; border-bottom: solid windowtext 1.0pt; border-right: solid windowtext 1.0pt; mso-border-top-alt: solid windowtext .75pt; mso-border-alt: solid windowtext .75pt; mso-border-left-alt: solid windowtext 1.5pt; padding: 0cm 5.4pt 0cm 5.4pt;" width="158" valign="top">
<p class="MsoListParagraph" style="text-indent: 0cm; mso-char-indent-count: 0; line-height: 20.0pt; mso-line-height-rule: exactly;"><span style="mso-bidi-font-size: 10.5pt; font-family: &amp;amp; mso-bidi-font-family: Tahoma;">内存</span></p>
</td>
<td style="width: 307.3pt; border-top: none; border-left: none; border-bottom: solid windowtext 1.0pt; border-right: solid windowtext 1.5pt; mso-border-top-alt: solid windowtext .75pt; mso-border-left-alt: solid windowtext .75pt; mso-border-alt: solid windowtext .75pt; mso-border-right-alt: solid windowtext 1.5pt; padding: 0cm 5.4pt 0cm 5.4pt;" width="410" valign="top">
<p class="MsoListParagraph" style="text-indent: 0cm; mso-char-indent-count: 0; line-height: 20.0pt; mso-line-height-rule: exactly;"><span style="mso-bidi-font-size: 10.5pt; font-family: &amp;amp; mso-bidi-font-family: Tahoma;" lang="EN-US">4.00 GB</span></p>
</td>
</tr>
<tr style="mso-yfti-irow: 2;">
<td style="width: 118.8pt; border-top: none; border-left: solid windowtext 1.5pt; border-bottom: solid windowtext 1.0pt; border-right: solid windowtext 1.0pt; mso-border-top-alt: solid windowtext .75pt; mso-border-alt: solid windowtext .75pt; mso-border-left-alt: solid windowtext 1.5pt; padding: 0cm 5.4pt 0cm 5.4pt;" width="158" valign="top">
<p class="MsoListParagraph" style="text-indent: 0cm; mso-char-indent-count: 0; line-height: 20.0pt; mso-line-height-rule: exactly;"><span style="mso-bidi-font-size: 10.5pt; font-family: &amp;amp; mso-bidi-font-family: Tahoma;">显卡</span></p>
</td>
<td style="width: 307.3pt; border-top: none; border-left: none; border-bottom: solid windowtext 1.0pt; border-right: solid windowtext 1.5pt; mso-border-top-alt: solid windowtext .75pt; mso-border-left-alt: solid windowtext .75pt; mso-border-alt: solid windowtext .75pt; mso-border-right-alt: solid windowtext 1.5pt; padding: 0cm 5.4pt 0cm 5.4pt;" width="410" valign="top">
<p class="MsoListParagraph" style="text-indent: 0cm; mso-char-indent-count: 0; line-height: 20.0pt; mso-line-height-rule: exactly;"><span style="mso-bidi-font-size: 10.5pt; font-family: &amp;amp; mso-bidi-font-family: Tahoma;" lang="EN-US">ATI Mobility HD 5400</span></p>
</td>
</tr>
<tr style="mso-yfti-irow: 3;">
<td style="width: 118.8pt; border-top: none; border-left: solid windowtext 1.5pt; border-bottom: solid windowtext 1.0pt; border-right: solid windowtext 1.0pt; mso-border-top-alt: solid windowtext .75pt; mso-border-alt: solid windowtext .75pt; mso-border-left-alt: solid windowtext 1.5pt; padding: 0cm 5.4pt 0cm 5.4pt;" width="158" valign="top">
<p class="MsoListParagraph" style="text-indent: 0cm; mso-char-indent-count: 0; line-height: 20.0pt; mso-line-height-rule: exactly;"><span style="mso-bidi-font-size: 10.5pt; font-family: &amp;amp; mso-bidi-font-family: Tahoma;">操作系统</span></p>
</td>
<td style="width: 307.3pt; border-top: none; border-left: none; border-bottom: solid windowtext 1.0pt; border-right: solid windowtext 1.5pt; mso-border-top-alt: solid windowtext .75pt; mso-border-left-alt: solid windowtext .75pt; mso-border-alt: solid windowtext .75pt; mso-border-right-alt: solid windowtext 1.5pt; padding: 0cm 5.4pt 0cm 5.4pt;" width="410" valign="top">
<p class="MsoListParagraph" style="text-indent: 0cm; mso-char-indent-count: 0; line-height: 20.0pt; mso-line-height-rule: exactly;"><span style="mso-bidi-font-size: 10.5pt; font-family: &amp;amp; mso-bidi-font-family: Tahoma;" lang="EN-US">Microsoft Window 7</span><span style="mso-bidi-font-size: 10.5pt; font-family: &amp;amp; mso-bidi-font-family: Tahoma;">(<span lang="EN-US">Ubuntu10.10 +Wine</span>验证可用)</span></p>
</td>
</tr>
<tr style="mso-yfti-irow: 4;">
<td style="width: 118.8pt; border-top: none; border-left: solid windowtext 1.5pt; border-bottom: solid windowtext 1.0pt; border-right: solid windowtext 1.0pt; mso-border-top-alt: solid windowtext .75pt; mso-border-alt: solid windowtext .75pt; mso-border-left-alt: solid windowtext 1.5pt; padding: 0cm 5.4pt 0cm 5.4pt;" width="158" valign="top">
<p class="MsoListParagraph" style="text-indent: 0cm; mso-char-indent-count: 0; line-height: 20.0pt; mso-line-height-rule: exactly;"><span style="mso-bidi-font-size: 10.5pt; font-family: &amp;amp; mso-bidi-font-family: Tahoma;">编程环境</span></p>
</td>
<td style="width: 307.3pt; border-top: none; border-left: none; border-bottom: solid windowtext 1.0pt; border-right: solid windowtext 1.5pt; mso-border-top-alt: solid windowtext .75pt; mso-border-left-alt: solid windowtext .75pt; mso-border-alt: solid windowtext .75pt; mso-border-right-alt: solid windowtext 1.5pt; padding: 0cm 5.4pt 0cm 5.4pt;" width="410" valign="top">
<p class="MsoListParagraph" style="text-indent: 0cm; mso-char-indent-count: 0; line-height: 20.0pt; mso-line-height-rule: exactly;"><span style="mso-bidi-font-size: 10.5pt; font-family: &amp;amp; mso-bidi-font-family: Tahoma;" lang="EN-US">Visual Studio 2008(HGE1.81)</span></p>
</td>
</tr>
<tr style="mso-yfti-irow: 5;">
<td style="width: 118.8pt; border-top: none; border-left: solid windowtext 1.5pt; border-bottom: solid windowtext 1.0pt; border-right: solid windowtext 1.0pt; mso-border-top-alt: solid windowtext .75pt; mso-border-alt: solid windowtext .75pt; mso-border-left-alt: solid windowtext 1.5pt; padding: 0cm 5.4pt 0cm 5.4pt;" width="158" valign="top">
<p class="MsoListParagraph" style="text-indent: 0cm; mso-char-indent-count: 0; line-height: 20.0pt; mso-line-height-rule: exactly;"><span style="mso-bidi-font-size: 10.5pt; font-family: &amp;amp; mso-bidi-font-family: Tahoma;">图片处理</span></p>
</td>
<td style="width: 307.3pt; border-top: none; border-left: none; border-bottom: solid windowtext 1.0pt; border-right: solid windowtext 1.5pt; mso-border-top-alt: solid windowtext .75pt; mso-border-left-alt: solid windowtext .75pt; mso-border-alt: solid windowtext .75pt; mso-border-right-alt: solid windowtext 1.5pt; padding: 0cm 5.4pt 0cm 5.4pt;" width="410" valign="top">
<p class="MsoListParagraph" style="text-indent: 0cm; mso-char-indent-count: 0; line-height: 20.0pt; mso-line-height-rule: exactly;"><span style="mso-bidi-font-size: 10.5pt; font-family: &amp;amp; mso-bidi-font-family: Tahoma;" lang="EN-US">Adobe Photoshop CS4</span></p>
</td>
</tr>
<tr style="mso-yfti-irow: 6; mso-yfti-lastrow: yes;">
<td style="width: 118.8pt; border-top: none; border-left: solid windowtext 1.5pt; border-bottom: solid windowtext 1.5pt; border-right: solid windowtext 1.0pt; mso-border-top-alt: .75pt; mso-border-left-alt: 1.5pt; mso-border-bottom-alt: 1.5pt; mso-border-right-alt: .75pt; mso-border-color-alt: windowtext; mso-border-style-alt: solid; padding: 0cm 5.4pt 0cm 5.4pt;" width="158" valign="top">
<p class="MsoListParagraph" style="text-indent: 0cm; mso-char-indent-count: 0; line-height: 20.0pt; mso-line-height-rule: exactly;"><span style="mso-bidi-font-size: 10.5pt; font-family: &amp;amp; mso-bidi-font-family: Tahoma;">视频处理</span></p>
</td>
<td style="width: 307.3pt; border-top: none; border-left: none; border-bottom: solid windowtext 1.5pt; border-right: solid windowtext 1.5pt; mso-border-top-alt: solid windowtext .75pt; mso-border-left-alt: solid windowtext .75pt; padding: 0cm 5.4pt 0cm 5.4pt;" width="410" valign="top">
<p class="MsoListParagraph" style="text-indent: 0cm; mso-char-indent-count: 0; line-height: 20.0pt; mso-line-height-rule: exactly;"><span style="mso-bidi-font-size: 10.5pt; font-family: &amp;amp; mso-bidi-font-family: Tahoma;" lang="EN-US">Adobe After Effects CS4</span></p>
</td>
</tr>
</tbody>
</table>
<h4><span style="font-size: 16.0pt; font-family: &amp;amp; mso-bidi-font-family: Tahoma;">【自我评价】</span></h4>
<p class="MsoListParagraph" style="text-indent: 0cm; mso-char-indent-count: 0; line-height: 20.0pt; mso-line-height-rule: exactly;"><span style="mso-bidi-font-size: 10.5pt; font-family: &amp;amp; mso-bidi-font-family: Tahoma;">整体系统基本达到了表达最初构思的目的。然而由于准备仓促,整个系统仍然显得比较粗糙,整体美感没有达到作者预定的要求。游戏系统方面存在着一些遗憾之处,比如没有实现在游戏中直接再次开始游戏的功能,与作者在编程经验方面的欠缺有关。但总体上本系统的稳定性非常好,可扩充能力仍然很强,塑造的整体氛围也受到称赞,可以说是一个用心良多、比较成功的作品。</span></p>
]]></content>
</entry>
<entry>
<title type="html"><![CDATA[pku网站系统信息安全意识堪忧]]></title>
<link href="http://www.sqrh.net/blog/2011/04/30/pku-website-safety-is-in-danger/"/>
<updated>2011-04-30T00:00:00+08:00</updated>
<id>http://www.sqrh.net/blog/2011/04/30/pku-website-safety-is-in-danger</id>
<content type="html"><![CDATA[<h3>看到这样一篇文章:</h3>
<h3><span>中国以网络进攻掩盖漏洞百出的网络防御系统 </span></h3>
<p>在华盛顿的部分官员眼里,中国正在网际空间向美国发动一场新冷战。然而安全研究人员却发现,中国政府自身的网络安全系统<a href="http://threatpost.com/en_us/blogs/glass-dragon-chinas-cyber-offense-obscures-woeful-defense-042711">漏洞百出脆不禁风</a>,<a href="http://yro.slashdot.org/story/11/04/27/1849233/Does-Chinas-Cyber-Offense-Obscure-Woeful-Defense">它似乎是以进攻掩盖其不足</a>。<em> 曾发现<a href="http://software.solidot.org/article.pl?sid=11/03/23/0313253&tid=100">中国工业软件安全隐患</a>的 研究员Dillon Beresford,花了18个月时间,使用Google翻译工具,以及开源软件Metasploit和Netcat,探测中国政府计算机网络和PLA的 秘密网络,以及顶尖大学的网络。他发现中国的网络安全可悲至极,缺乏基本的网络防御措施,其机密和非机密的政府网络,邮件服务器和数据库非常容易被渗透。 Beresford认为,中国的一党制是造成安全脆弱的主要原因。中国和其它专制政权一样内部运作不透明,加上担心有后门而不信任西方产品或开源平台,他 们尽可能的使用国有公司开发的软件,因此无法从社区用户发现的安全隐患和及时递交的补丁中受益。中国的政府网站和私人网站很少是互联的,而互相依存的好处 是有无数人盯着同一个网络,错误将会迅速发现和反馈。在中国,政府控制着一切事情,但却缺乏清晰的网络安全政策。而在中国文化中,公开批评和承认错误也相 当困难,因为人们害怕会对自己的能力失去信心。Beresford发现,运行VxWorks的华为网络设备普遍存在安全隐患,此外路由器和防火墙等多发现 有开发者留下的后门。</em></p>
<p>———————————————————————–</p>
<p>不得不承认以上说的十分正确。学校的网站丝毫没有一个准一流大学应该具有的水平,各种漏洞(或者说根本是没锁的门——没有上锁的意识)层出不穷。至少可以发现几处可以很方便的查到学生学号的地方,甚至还有可以查到身份证号与照片的地方,更可怕的是,这些地方不但没有密码验证(有些是只在入口有身份验证的),甚至连post+来源验证的安全机制都没有,对于想获取信息的人根本没有任何阻拦。大多数地方HTML标准极其落后,处在<table>与<tr><td>的海洋之中,却毫不负责的把学生信息到处乱放,让人无法有任何的安全感。</p>
<p>以下这张图片可以证明多么触目惊心的事实,全是我弄下来的照片与身份证的对应:</p>
<div class="imgbox"><img src="http://www.sqrh.net/images/pku-ns.jpg" alt="" width="500" /></div>
<p>也不知道用什么方法才能真正唤醒有关部门的重视,在这些方面加大些投入,莫让建设一流大学成一句太容易不攻自破的笑话。</p>
]]></content>
</entry>
<entry>
<title type="html"><![CDATA[lz78:压缩文件实现源码(c++)]]></title>
<link href="http://www.sqrh.net/blog/2011/04/16/lz78/"/>
<updated>2011-04-16T00:00:00+08:00</updated>
<id>http://www.sqrh.net/blog/2011/04/16/lz78</id>
<content type="html"><![CDATA[<p>一个encoder函数负责压缩,decoder负责解压。</p>
<figure class='code'> <div class="highlight"><table><tr><td class="gutter"><pre class="line-numbers"><span class='line-number'>1</span>
<span class='line-number'>2</span>
<span class='line-number'>3</span>
<span class='line-number'>4</span>
<span class='line-number'>5</span>
<span class='line-number'>6</span>
<span class='line-number'>7</span>
<span class='line-number'>8</span>
<span class='line-number'>9</span>
<span class='line-number'>10</span>
<span class='line-number'>11</span>
<span class='line-number'>12</span>
<span class='line-number'>13</span>
<span class='line-number'>14</span>
<span class='line-number'>15</span>
<span class='line-number'>16</span>
<span class='line-number'>17</span>
<span class='line-number'>18</span>
<span class='line-number'>19</span>
<span class='line-number'>20</span>
<span class='line-number'>21</span>
<span class='line-number'>22</span>
<span class='line-number'>23</span>
<span class='line-number'>24</span>
<span class='line-number'>25</span>
<span class='line-number'>26</span>
<span class='line-number'>27</span>
<span class='line-number'>28</span>
<span class='line-number'>29</span>
<span class='line-number'>30</span>
<span class='line-number'>31</span>
<span class='line-number'>32</span>
<span class='line-number'>33</span>
<span class='line-number'>34</span>
<span class='line-number'>35</span>
<span class='line-number'>36</span>
<span class='line-number'>37</span>
<span class='line-number'>38</span>
<span class='line-number'>39</span>
<span class='line-number'>40</span>
<span class='line-number'>41</span>
<span class='line-number'>42</span>
<span class='line-number'>43</span>
<span class='line-number'>44</span>
<span class='line-number'>45</span>
<span class='line-number'>46</span>
<span class='line-number'>47</span>
<span class='line-number'>48</span>
<span class='line-number'>49</span>
<span class='line-number'>50</span>
<span class='line-number'>51</span>
<span class='line-number'>52</span>
<span class='line-number'>53</span>
<span class='line-number'>54</span>
<span class='line-number'>55</span>
<span class='line-number'>56</span>
<span class='line-number'>57</span>
<span class='line-number'>58</span>
<span class='line-number'>59</span>
<span class='line-number'>60</span>
<span class='line-number'>61</span>
<span class='line-number'>62</span>
<span class='line-number'>63</span>
<span class='line-number'>64</span>
<span class='line-number'>65</span>
<span class='line-number'>66</span>
<span class='line-number'>67</span>
<span class='line-number'>68</span>
<span class='line-number'>69</span>
<span class='line-number'>70</span>
<span class='line-number'>71</span>
<span class='line-number'>72</span>
<span class='line-number'>73</span>
<span class='line-number'>74</span>
<span class='line-number'>75</span>
<span class='line-number'>76</span>
<span class='line-number'>77</span>
<span class='line-number'>78</span>
<span class='line-number'>79</span>
<span class='line-number'>80</span>
<span class='line-number'>81</span>
<span class='line-number'>82</span>
<span class='line-number'>83</span>
<span class='line-number'>84</span>
<span class='line-number'>85</span>
<span class='line-number'>86</span>
<span class='line-number'>87</span>
<span class='line-number'>88</span>
<span class='line-number'>89</span>
<span class='line-number'>90</span>
<span class='line-number'>91</span>
<span class='line-number'>92</span>
<span class='line-number'>93</span>
<span class='line-number'>94</span>
<span class='line-number'>95</span>
<span class='line-number'>96</span>
<span class='line-number'>97</span>
<span class='line-number'>98</span>
<span class='line-number'>99</span>
<span class='line-number'>100</span>
<span class='line-number'>101</span>
<span class='line-number'>102</span>
<span class='line-number'>103</span>
<span class='line-number'>104</span>
<span class='line-number'>105</span>
<span class='line-number'>106</span>
<span class='line-number'>107</span>
<span class='line-number'>108</span>
<span class='line-number'>109</span>
<span class='line-number'>110</span>
<span class='line-number'>111</span>
<span class='line-number'>112</span>
<span class='line-number'>113</span>
<span class='line-number'>114</span>
<span class='line-number'>115</span>
<span class='line-number'>116</span>
<span class='line-number'>117</span>
<span class='line-number'>118</span>
<span class='line-number'>119</span>
<span class='line-number'>120</span>
<span class='line-number'>121</span>
<span class='line-number'>122</span>
<span class='line-number'>123</span>
<span class='line-number'>124</span>
<span class='line-number'>125</span>
<span class='line-number'>126</span>
<span class='line-number'>127</span>
<span class='line-number'>128</span>
<span class='line-number'>129</span>
<span class='line-number'>130</span>
<span class='line-number'>131</span>
<span class='line-number'>132</span>
<span class='line-number'>133</span>
<span class='line-number'>134</span>
<span class='line-number'>135</span>
<span class='line-number'>136</span>
<span class='line-number'>137</span>
<span class='line-number'>138</span>
<span class='line-number'>139</span>
<span class='line-number'>140</span>
<span class='line-number'>141</span>
<span class='line-number'>142</span>
<span class='line-number'>143</span>
<span class='line-number'>144</span>
<span class='line-number'>145</span>
<span class='line-number'>146</span>
<span class='line-number'>147</span>
<span class='line-number'>148</span>
<span class='line-number'>149</span>
<span class='line-number'>150</span>
<span class='line-number'>151</span>
<span class='line-number'>152</span>
<span class='line-number'>153</span>
<span class='line-number'>154</span>
<span class='line-number'>155</span>
<span class='line-number'>156</span>
<span class='line-number'>157</span>
<span class='line-number'>158</span>
<span class='line-number'>159</span>
<span class='line-number'>160</span>
<span class='line-number'>161</span>
<span class='line-number'>162</span>
<span class='line-number'>163</span>
<span class='line-number'>164</span>
<span class='line-number'>165</span>
<span class='line-number'>166</span>
<span class='line-number'>167</span>
<span class='line-number'>168</span>
<span class='line-number'>169</span>
<span class='line-number'>170</span>
<span class='line-number'>171</span>
<span class='line-number'>172</span>
<span class='line-number'>173</span>
<span class='line-number'>174</span>
<span class='line-number'>175</span>
<span class='line-number'>176</span>
<span class='line-number'>177</span>
<span class='line-number'>178</span>
<span class='line-number'>179</span>
<span class='line-number'>180</span>
<span class='line-number'>181</span>
<span class='line-number'>182</span>
<span class='line-number'>183</span>
<span class='line-number'>184</span>
<span class='line-number'>185</span>
<span class='line-number'>186</span>
<span class='line-number'>187</span>
<span class='line-number'>188</span>
<span class='line-number'>189</span>
<span class='line-number'>190</span>
<span class='line-number'>191</span>
<span class='line-number'>192</span>
<span class='line-number'>193</span>
<span class='line-number'>194</span>
<span class='line-number'>195</span>
<span class='line-number'>196</span>
<span class='line-number'>197</span>
<span class='line-number'>198</span>
<span class='line-number'>199</span>
<span class='line-number'>200</span>
<span class='line-number'>201</span>
<span class='line-number'>202</span>
<span class='line-number'>203</span>
<span class='line-number'>204</span>
<span class='line-number'>205</span>
<span class='line-number'>206</span>
<span class='line-number'>207</span>
<span class='line-number'>208</span>
<span class='line-number'>209</span>
<span class='line-number'>210</span>
<span class='line-number'>211</span>
<span class='line-number'>212</span>
<span class='line-number'>213</span>
<span class='line-number'>214</span>
<span class='line-number'>215</span>
<span class='line-number'>216</span>
<span class='line-number'>217</span>
</pre></td><td class='code'><pre><code class='cpp'><span class='line'><span class="cp">#include "rle.h"</span>
</span><span class='line'><span class="cp">#define NOZIPTOT 10</span>
</span><span class='line'><span class="c1">//不压缩列表</span>
</span><span class='line'><span class="k">const</span> <span class="n">_TCHAR</span> <span class="n">noziplist</span><span class="p">[</span><span class="n">NOZIPTOT</span><span class="p">][</span><span class="mi">5</span><span class="p">]</span><span class="o">=</span><span class="p">{</span><span class="s">L".zip"</span><span class="p">,</span><span class="s">L".rar"</span><span class="p">,</span><span class="s">L".jpg"</span><span class="p">,</span><span class="s">L".rzp"</span><span class="p">,</span><span class="s">L".pdf"</span><span class="p">,</span><span class="s">L".chm"</span><span class="p">,</span><span class="s">L"mp3"</span><span class="p">,</span><span class="s">L".mp4"</span><span class="p">,</span><span class="s">L".ppt"</span><span class="p">,</span><span class="s">L".mov"</span><span class="p">};</span>
</span><span class='line'>
</span><span class='line'><span class="k">struct</span> <span class="n">SWord</span>
</span><span class='line'><span class="p">{</span>
</span><span class='line'> <span class="kt">char</span> <span class="n">s</span><span class="p">[</span><span class="n">WORDLEN</span><span class="o">+</span><span class="mi">1</span><span class="p">];</span>
</span><span class='line'> <span class="kt">short</span> <span class="n">l</span><span class="p">;</span>
</span><span class='line'> <span class="kt">bool</span> <span class="k">operator</span><span class="o">==</span><span class="p">(</span><span class="n">SWord</span> <span class="o">&</span><span class="n">amp</span><span class="p">;</span> <span class="n">w2</span><span class="p">)</span>
</span><span class='line'> <span class="p">{</span>
</span><span class='line'> <span class="k">if</span> <span class="p">(</span><span class="n">l</span><span class="o">!=</span><span class="n">w2</span><span class="p">.</span><span class="n">l</span><span class="p">)</span> <span class="k">return</span> <span class="kc">false</span><span class="p">;</span>
</span><span class='line'> <span class="k">for</span> <span class="p">(</span><span class="kt">int</span> <span class="n">i</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span> <span class="n">i</span> <span class="o">&</span><span class="n">lt</span><span class="p">;</span> <span class="n">l</span><span class="p">;</span> <span class="n">i</span><span class="o">++</span><span class="p">)</span> <span class="k">if</span> <span class="p">(</span><span class="n">s</span><span class="p">[</span><span class="n">i</span><span class="p">]</span><span class="o">!=</span><span class="n">w2</span><span class="p">.</span><span class="n">s</span><span class="p">[</span><span class="n">i</span><span class="p">])</span> <span class="k">return</span> <span class="kc">false</span><span class="p">;</span>
</span><span class='line'> <span class="k">return</span> <span class="kc">true</span><span class="p">;</span>
</span><span class='line'> <span class="p">}</span>
</span><span class='line'> <span class="n">SWord</span> <span class="o">&</span><span class="n">amp</span><span class="p">;</span> <span class="k">operator</span><span class="o">=</span><span class="p">(</span><span class="n">SWord</span> <span class="o">&</span><span class="n">amp</span><span class="p">;</span> <span class="n">w</span><span class="p">)</span>
</span><span class='line'> <span class="p">{</span>
</span><span class='line'> <span class="n">l</span> <span class="o">=</span> <span class="n">w</span><span class="p">.</span><span class="n">l</span><span class="p">;</span>
</span><span class='line'> <span class="k">for</span> <span class="p">(</span><span class="kt">int</span> <span class="n">i</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span> <span class="n">i</span> <span class="o">&</span><span class="n">lt</span><span class="p">;</span> <span class="n">l</span><span class="p">;</span> <span class="n">i</span><span class="o">++</span><span class="p">)</span> <span class="n">s</span><span class="p">[</span><span class="n">i</span><span class="p">]</span> <span class="o">=</span> <span class="n">w</span><span class="p">.</span><span class="n">s</span><span class="p">[</span><span class="n">i</span><span class="p">];</span>
</span><span class='line'> <span class="k">return</span> <span class="p">(</span><span class="o">*</span><span class="k">this</span><span class="p">);</span>
</span><span class='line'> <span class="p">}</span>
</span><span class='line'> <span class="n">SWord</span> <span class="k">operator</span><span class="o">+</span><span class="p">(</span><span class="kt">char</span> <span class="o">&</span><span class="n">amp</span><span class="p">;</span> <span class="n">c</span><span class="p">)</span>
</span><span class='line'> <span class="p">{</span>
</span><span class='line'> <span class="n">SWord</span> <span class="n">tw</span> <span class="o">=</span> <span class="o">*</span><span class="k">this</span><span class="p">;</span>
</span><span class='line'> <span class="n">tw</span><span class="p">.</span><span class="n">l</span><span class="o">++</span><span class="p">;</span>
</span><span class='line'> <span class="n">tw</span><span class="p">.</span><span class="n">s</span><span class="p">[</span><span class="n">tw</span><span class="p">.</span><span class="n">l</span><span class="o">-</span><span class="mi">1</span><span class="p">]</span> <span class="o">=</span> <span class="n">c</span><span class="p">;</span>
</span><span class='line'> <span class="k">return</span> <span class="n">tw</span><span class="p">;</span>
</span><span class='line'> <span class="p">}</span>
</span><span class='line'><span class="p">};</span>
</span><span class='line'>
</span><span class='line'><span class="k">struct</span> <span class="nl">SWordCode:</span><span class="k">public</span> <span class="n">SWord</span>
</span><span class='line'><span class="p">{</span>
</span><span class='line'> <span class="n">ushort</span> <span class="n">co</span><span class="p">;</span>
</span><span class='line'> <span class="n">SWordCode</span> <span class="o">&</span><span class="n">amp</span><span class="p">;</span> <span class="k">operator</span><span class="o">=</span><span class="p">(</span><span class="n">SWord</span> <span class="o">&</span><span class="n">amp</span><span class="p">;</span> <span class="n">w</span><span class="p">)</span>
</span><span class='line'> <span class="p">{</span>
</span><span class='line'> <span class="n">l</span> <span class="o">=</span> <span class="n">w</span><span class="p">.</span><span class="n">l</span><span class="p">;</span>
</span><span class='line'> <span class="n">co</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span>
</span><span class='line'> <span class="k">for</span> <span class="p">(</span><span class="kt">int</span> <span class="n">i</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span> <span class="n">i</span> <span class="o">&</span><span class="n">lt</span><span class="p">;</span> <span class="n">l</span><span class="p">;</span> <span class="n">i</span><span class="o">++</span><span class="p">)</span> <span class="n">s</span><span class="p">[</span><span class="n">i</span><span class="p">]</span> <span class="o">=</span> <span class="n">w</span><span class="p">.</span><span class="n">s</span><span class="p">[</span><span class="n">i</span><span class="p">];</span>
</span><span class='line'> <span class="k">return</span> <span class="p">(</span><span class="o">*</span><span class="k">this</span><span class="p">);</span>
</span><span class='line'> <span class="p">}</span>
</span><span class='line'> <span class="n">SWordCode</span> <span class="o">&</span><span class="n">amp</span><span class="p">;</span> <span class="k">operator</span><span class="o">=</span><span class="p">(</span><span class="n">SWordCode</span> <span class="o">&</span><span class="n">amp</span><span class="p">;</span> <span class="n">w</span><span class="p">)</span>
</span><span class='line'> <span class="p">{</span>
</span><span class='line'> <span class="n">l</span> <span class="o">=</span> <span class="n">w</span><span class="p">.</span><span class="n">l</span><span class="p">;</span>
</span><span class='line'> <span class="n">co</span> <span class="o">=</span> <span class="n">w</span><span class="p">.</span><span class="n">co</span><span class="p">;</span>
</span><span class='line'> <span class="k">for</span> <span class="p">(</span><span class="kt">int</span> <span class="n">i</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span> <span class="n">i</span> <span class="o">&</span><span class="n">lt</span><span class="p">;</span> <span class="n">l</span><span class="p">;</span> <span class="n">i</span><span class="o">++</span><span class="p">)</span> <span class="n">s</span><span class="p">[</span><span class="n">i</span><span class="p">]</span> <span class="o">=</span> <span class="n">w</span><span class="p">.</span><span class="n">s</span><span class="p">[</span><span class="n">i</span><span class="p">];</span>
</span><span class='line'> <span class="k">return</span> <span class="p">(</span><span class="o">*</span><span class="k">this</span><span class="p">);</span>
</span><span class='line'> <span class="p">}</span>
</span><span class='line'><span class="p">};</span>
</span><span class='line'><span class="c1">//字典</span>
</span><span class='line'><span class="k">class</span> <span class="nc">CDic</span>
</span><span class='line'><span class="p">{</span>
</span><span class='line'><span class="k">public</span><span class="o">:</span>
</span><span class='line'> <span class="n">SWord</span> <span class="n">d</span><span class="p">[</span><span class="n">DICSIZE</span><span class="o">+</span><span class="mi">1</span><span class="p">];</span>
</span><span class='line'> <span class="n">ushort</span> <span class="n">h</span><span class="p">[</span><span class="n">HASHSIZE</span><span class="p">];</span>
</span><span class='line'> <span class="kt">int</span> <span class="n">t</span><span class="p">;</span>
</span><span class='line'> <span class="n">CDic</span><span class="p">()</span>
</span><span class='line'> <span class="p">{</span>
</span><span class='line'> <span class="n">memset</span><span class="p">(</span><span class="n">d</span><span class="p">,</span><span class="mi">0</span><span class="p">,</span><span class="k">sizeof</span> <span class="n">d</span><span class="p">);</span>
</span><span class='line'> <span class="n">memset</span><span class="p">(</span><span class="n">h</span><span class="p">,</span><span class="mi">0</span><span class="p">,</span><span class="k">sizeof</span> <span class="n">h</span><span class="p">);</span>
</span><span class='line'> <span class="n">t</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span>
</span><span class='line'> <span class="n">SWord</span> <span class="n">tw</span><span class="p">;</span>
</span><span class='line'> <span class="k">for</span> <span class="p">(</span><span class="kt">int</span> <span class="n">i</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span> <span class="n">i</span> <span class="o">&</span><span class="n">lt</span><span class="p">;</span> <span class="mi">256</span><span class="p">;</span> <span class="n">i</span><span class="o">++</span><span class="p">){</span>
</span><span class='line'> <span class="n">tw</span><span class="p">.</span><span class="n">l</span> <span class="o">=</span> <span class="mi">1</span><span class="p">;</span> <span class="n">tw</span><span class="p">.</span><span class="n">s</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span> <span class="o">=</span> <span class="n">t</span><span class="p">;</span>
</span><span class='line'> <span class="n">Insert</span><span class="p">(</span><span class="n">tw</span><span class="p">);</span>
</span><span class='line'> <span class="p">}</span>
</span><span class='line'> <span class="p">}</span>
</span><span class='line'> <span class="kt">void</span> <span class="n">Refresh</span><span class="p">()</span>
</span><span class='line'> <span class="p">{</span>
</span><span class='line'> <span class="n">memset</span><span class="p">(</span><span class="n">d</span><span class="p">,</span><span class="mi">0</span><span class="p">,</span><span class="k">sizeof</span> <span class="n">d</span><span class="p">);</span>
</span><span class='line'> <span class="n">memset</span><span class="p">(</span><span class="n">h</span><span class="p">,</span><span class="mi">0</span><span class="p">,</span><span class="k">sizeof</span> <span class="n">h</span><span class="p">);</span>
</span><span class='line'> <span class="n">t</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span>
</span><span class='line'> <span class="n">SWord</span> <span class="n">tw</span><span class="p">;</span>
</span><span class='line'> <span class="k">for</span> <span class="p">(</span><span class="kt">int</span> <span class="n">i</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span> <span class="n">i</span> <span class="o">&</span><span class="n">lt</span><span class="p">;</span> <span class="mi">256</span><span class="p">;</span> <span class="n">i</span><span class="o">++</span><span class="p">){</span>
</span><span class='line'> <span class="n">tw</span><span class="p">.</span><span class="n">l</span> <span class="o">=</span> <span class="mi">1</span><span class="p">;</span> <span class="n">tw</span><span class="p">.</span><span class="n">s</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span> <span class="o">=</span> <span class="n">t</span><span class="p">;</span>
</span><span class='line'> <span class="n">Insert</span><span class="p">(</span><span class="n">tw</span><span class="p">);</span>
</span><span class='line'> <span class="p">}</span>
</span><span class='line'> <span class="p">}</span>
</span><span class='line'>
</span><span class='line'> <span class="kt">int</span> <span class="n">GetHash</span><span class="p">(</span><span class="n">SWord</span> <span class="o">&</span><span class="n">amp</span><span class="p">;</span> <span class="n">w</span><span class="p">)</span>
</span><span class='line'> <span class="p">{</span>
</span><span class='line'> <span class="kt">unsigned</span> <span class="kt">int</span> <span class="n">hash</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span>
</span><span class='line'> <span class="kt">int</span> <span class="n">i</span><span class="p">,</span><span class="n">th</span><span class="p">;</span>
</span><span class='line'> <span class="k">for</span> <span class="p">(</span><span class="n">i</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span> <span class="n">i</span> <span class="o">&</span><span class="n">lt</span><span class="p">;</span> <span class="n">w</span><span class="p">.</span><span class="n">l</span><span class="p">;</span> <span class="n">i</span><span class="o">++</span><span class="p">)</span>
</span><span class='line'> <span class="k">if</span> <span class="p">((</span><span class="n">i</span> <span class="o">&</span><span class="n">amp</span><span class="p">;</span> <span class="mi">1</span><span class="p">)</span> <span class="o">==</span> <span class="mi">0</span><span class="p">)</span>
</span><span class='line'> <span class="p">{</span>
</span><span class='line'> <span class="n">hash</span> <span class="o">^=</span> <span class="p">((</span><span class="n">hash</span> <span class="o">&</span><span class="n">lt</span><span class="p">;</span><span class="o">&</span><span class="n">lt</span><span class="p">;</span> <span class="mi">7</span><span class="p">)</span> <span class="o">^</span> <span class="n">w</span><span class="p">.</span><span class="n">s</span><span class="p">[</span><span class="n">i</span><span class="p">]</span> <span class="o">^</span> <span class="p">(</span><span class="n">hash</span> <span class="o">&</span><span class="n">gt</span><span class="p">;</span><span class="o">&</span><span class="n">gt</span><span class="p">;</span> <span class="mi">3</span><span class="p">));</span>
</span><span class='line'> <span class="p">}</span> <span class="k">else</span>
</span><span class='line'> <span class="p">{</span>
</span><span class='line'> <span class="n">hash</span> <span class="o">^=</span> <span class="p">(</span><span class="o">~</span><span class="p">((</span><span class="n">hash</span> <span class="o">&</span><span class="n">lt</span><span class="p">;</span><span class="o">&</span><span class="n">lt</span><span class="p">;</span> <span class="mi">11</span><span class="p">)</span> <span class="o">^</span> <span class="n">w</span><span class="p">.</span><span class="n">s</span><span class="p">[</span><span class="n">i</span><span class="p">]</span> <span class="o">^</span> <span class="p">(</span><span class="n">hash</span> <span class="o">&</span><span class="n">gt</span><span class="p">;</span><span class="o">&</span><span class="n">gt</span><span class="p">;</span> <span class="mi">5</span><span class="p">)));</span>
</span><span class='line'> <span class="p">}</span>
</span><span class='line'> <span class="n">th</span> <span class="o">=</span> <span class="p">((</span><span class="n">hash</span> <span class="o">&</span><span class="n">amp</span><span class="p">;</span> <span class="mh">0x7FFFFFFF</span><span class="p">)</span> <span class="o">+</span> <span class="n">HASHSIZE</span><span class="p">)</span> <span class="o">%</span> <span class="n">HASHSIZE</span><span class="p">;</span>
</span><span class='line'> <span class="k">while</span> <span class="p">(</span><span class="n">h</span><span class="p">[</span><span class="n">th</span><span class="p">]</span><span class="o">&</span><span class="n">amp</span><span class="p">;</span><span class="o">&</span><span class="n">amp</span><span class="p">;</span><span class="o">!</span><span class="p">(</span><span class="n">w</span><span class="o">==</span><span class="n">d</span><span class="p">[</span><span class="n">h</span><span class="p">[</span><span class="n">th</span><span class="p">]]))</span>
</span><span class='line'> <span class="p">{</span>
</span><span class='line'> <span class="n">th</span><span class="o">++</span><span class="p">;</span>
</span><span class='line'> <span class="k">if</span> <span class="p">(</span><span class="n">th</span><span class="o">&</span><span class="n">gt</span><span class="p">;</span><span class="o">=</span><span class="n">HASHSIZE</span><span class="p">)</span> <span class="n">th</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span>
</span><span class='line'> <span class="p">}</span>
</span><span class='line'> <span class="k">return</span> <span class="n">th</span><span class="p">;</span>
</span><span class='line'> <span class="p">}</span>
</span><span class='line'> <span class="n">ushort</span> <span class="n">GetCode</span><span class="p">(</span><span class="n">SWord</span> <span class="o">&</span><span class="n">amp</span><span class="p">;</span> <span class="n">w</span><span class="p">)</span>
</span><span class='line'> <span class="p">{</span>
</span><span class='line'> <span class="k">return</span> <span class="p">(</span><span class="n">h</span><span class="p">[</span><span class="n">GetHash</span><span class="p">(</span><span class="n">w</span><span class="p">)]);</span>
</span><span class='line'> <span class="p">}</span>
</span><span class='line'> <span class="kt">void</span> <span class="n">Insert</span><span class="p">(</span><span class="n">SWord</span> <span class="o">&</span><span class="n">amp</span><span class="p">;</span><span class="n">w</span><span class="p">)</span>
</span><span class='line'> <span class="p">{</span>
</span><span class='line'> <span class="n">t</span><span class="o">++</span><span class="p">;</span>
</span><span class='line'> <span class="n">d</span><span class="p">[</span><span class="n">t</span><span class="p">]</span> <span class="o">=</span> <span class="n">w</span><span class="p">;</span>
</span><span class='line'> <span class="n">h</span><span class="p">[</span><span class="n">GetHash</span><span class="p">(</span><span class="n">w</span><span class="p">)]</span> <span class="o">=</span> <span class="n">t</span><span class="p">;</span>
</span><span class='line'> <span class="p">}</span>
</span><span class='line'><span class="p">};</span>
</span><span class='line'><span class="c1">//检查是否压缩</span>
</span><span class='line'><span class="kt">bool</span> <span class="n">nozip</span><span class="p">(</span><span class="n">_TCHAR</span><span class="o">*</span> <span class="n">fn</span><span class="p">)</span>
</span><span class='line'><span class="p">{</span>
</span><span class='line'> <span class="k">for</span> <span class="p">(</span><span class="kt">int</span> <span class="n">i</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span> <span class="n">i</span> <span class="o">&</span><span class="n">lt</span><span class="p">;</span> <span class="n">NOZIPTOT</span><span class="p">;</span> <span class="n">i</span><span class="o">++</span><span class="p">)</span>
</span><span class='line'> <span class="k">if</span> <span class="p">(</span><span class="n">wcsstr</span><span class="p">(</span><span class="n">fn</span><span class="p">,</span><span class="n">noziplist</span><span class="p">[</span><span class="n">i</span><span class="p">]))</span> <span class="k">return</span> <span class="kc">true</span><span class="p">;</span>
</span><span class='line'> <span class="k">return</span> <span class="kc">false</span><span class="p">;</span>
</span><span class='line'><span class="p">}</span>
</span><span class='line'>
</span><span class='line'><span class="kt">char</span> <span class="n">tc</span><span class="p">;</span>
</span><span class='line'><span class="n">CDic</span> <span class="n">dic</span><span class="p">;</span>
</span><span class='line'><span class="c1">//压缩器</span>
</span><span class='line'><span class="kt">int</span> <span class="n">encoder</span><span class="p">(</span><span class="n">fstream</span> <span class="o">&</span><span class="n">amp</span><span class="p">;</span> <span class="n">fzip</span><span class="p">,</span> <span class="n">_TCHAR</span><span class="o">*</span> <span class="n">fn</span><span class="p">)</span>
</span><span class='line'><span class="p">{</span>
</span><span class='line'> <span class="kt">int</span> <span class="n">i</span><span class="p">;</span>
</span><span class='line'> <span class="n">time_t</span> <span class="n">now</span> <span class="o">=</span> <span class="n">time</span><span class="p">(</span><span class="mi">0</span><span class="p">);</span>
</span><span class='line'> <span class="n">wcout</span><span class="o">&</span><span class="n">lt</span><span class="p">;</span><span class="o">&</span><span class="n">lt</span><span class="p">;</span><span class="n">fn</span><span class="o">&</span><span class="n">lt</span><span class="p">;</span><span class="o">&</span><span class="n">lt</span><span class="p">;</span><span class="s">L":"</span><span class="p">;</span>
</span><span class='line'> <span class="n">fstream</span> <span class="n">fin</span><span class="p">(</span><span class="n">fn</span><span class="p">,</span><span class="n">ios</span><span class="o">::</span><span class="n">in</span><span class="o">|</span><span class="n">ios</span><span class="o">::</span><span class="n">binary</span><span class="p">);</span>
</span><span class='line'> <span class="n">WIN32_FIND_DATA</span> <span class="n">ffd</span><span class="p">;</span>
</span><span class='line'> <span class="n">FindFirstFile</span><span class="p">(</span><span class="n">fn</span><span class="p">,</span><span class="o">&</span><span class="n">amp</span><span class="p">;</span><span class="n">ffd</span><span class="p">);</span>
</span><span class='line'> <span class="kt">long</span> <span class="kt">long</span> <span class="n">fsize</span> <span class="o">=</span> <span class="n">ffd</span><span class="p">.</span><span class="n">nFileSizeLow</span><span class="p">;</span>
</span><span class='line'> <span class="k">if</span> <span class="p">(</span><span class="n">nozip</span><span class="p">(</span><span class="n">fn</span><span class="p">))</span><span class="c1">//不压缩时直接复制</span>
</span><span class='line'> <span class="p">{</span>
</span><span class='line'> <span class="n">zwrite</span><span class="p">(</span><span class="n">fzip</span><span class="p">,</span><span class="n">fsize</span><span class="p">);</span>
</span><span class='line'> <span class="kt">char</span> <span class="n">c</span><span class="p">;</span>
</span><span class='line'> <span class="k">while</span> <span class="p">(</span><span class="n">zread</span><span class="p">(</span><span class="n">fin</span><span class="p">,</span><span class="n">c</span><span class="p">))</span> <span class="n">zwrite</span><span class="p">(</span><span class="n">fzip</span><span class="p">,</span><span class="n">c</span><span class="p">);</span>
</span><span class='line'> <span class="p">}</span>
</span><span class='line'> <span class="k">else</span><span class="c1">//否则进行LZ78算法的压缩</span>
</span><span class='line'> <span class="p">{</span>
</span><span class='line'> <span class="n">zwrite</span><span class="p">(</span><span class="n">fzip</span><span class="p">,</span><span class="n">fsize</span><span class="p">);</span>
</span><span class='line'> <span class="kt">char</span> <span class="n">c</span><span class="p">;</span>
</span><span class='line'> <span class="n">SWordCode</span> <span class="n">w</span><span class="p">,</span><span class="n">wc</span><span class="p">;</span>
</span><span class='line'> <span class="n">dic</span><span class="p">.</span><span class="n">Refresh</span><span class="p">();</span>
</span><span class='line'> <span class="n">w</span><span class="p">.</span><span class="n">l</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span> <span class="n">w</span><span class="p">.</span><span class="n">co</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span>
</span><span class='line'> <span class="k">while</span> <span class="p">(</span><span class="n">fsize</span><span class="o">--</span><span class="p">)</span>
</span><span class='line'> <span class="p">{</span>
</span><span class='line'> <span class="n">zread</span><span class="p">(</span><span class="n">fin</span><span class="p">,</span><span class="n">c</span><span class="p">);</span>
</span><span class='line'> <span class="n">wc</span> <span class="o">=</span> <span class="n">w</span> <span class="o">+</span> <span class="n">c</span><span class="p">;</span>
</span><span class='line'> <span class="n">wc</span><span class="p">.</span><span class="n">co</span> <span class="o">=</span> <span class="n">dic</span><span class="p">.</span><span class="n">GetCode</span><span class="p">(</span><span class="n">wc</span><span class="p">);</span>
</span><span class='line'> <span class="k">if</span> <span class="p">(</span><span class="n">wc</span><span class="p">.</span><span class="n">co</span><span class="o">&</span><span class="n">amp</span><span class="p">;</span><span class="o">&</span><span class="n">amp</span><span class="p">;</span><span class="n">wc</span><span class="p">.</span><span class="n">l</span><span class="o">&</span><span class="n">lt</span><span class="p">;</span><span class="o">=</span><span class="n">WORDLEN</span><span class="p">)</span>
</span><span class='line'> <span class="p">{</span>
</span><span class='line'> <span class="n">w</span> <span class="o">=</span> <span class="n">wc</span><span class="p">;</span>
</span><span class='line'> <span class="p">}</span>
</span><span class='line'> <span class="k">else</span>
</span><span class='line'> <span class="p">{</span>
</span><span class='line'> <span class="n">zwrite</span><span class="p">(</span><span class="n">fzip</span><span class="p">,</span><span class="n">w</span><span class="p">.</span><span class="n">co</span><span class="p">);</span>
</span><span class='line'> <span class="n">zwrite</span><span class="p">(</span><span class="n">fzip</span><span class="p">,</span><span class="n">c</span><span class="p">);</span>
</span><span class='line'> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">wc</span><span class="p">.</span><span class="n">co</span><span class="p">)</span> <span class="n">dic</span><span class="p">.</span><span class="n">Insert</span><span class="p">(</span><span class="n">wc</span><span class="p">);</span>
</span><span class='line'> <span class="k">if</span> <span class="p">(</span><span class="n">dic</span><span class="p">.</span><span class="n">t</span><span class="o">==</span><span class="n">DICSIZE</span><span class="p">)</span> <span class="n">dic</span><span class="p">.</span><span class="n">Refresh</span><span class="p">();</span>
</span><span class='line'> <span class="n">w</span><span class="p">.</span><span class="n">l</span> <span class="o">=</span> <span class="mi">1</span><span class="p">;</span>
</span><span class='line'> <span class="n">w</span><span class="p">.</span><span class="n">co</span> <span class="o">=</span> <span class="p">(</span><span class="n">uchar</span><span class="p">)</span><span class="n">c</span><span class="o">+</span><span class="mi">1</span><span class="p">;</span>
</span><span class='line'> <span class="n">w</span><span class="p">.</span><span class="n">s</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span> <span class="o">=</span> <span class="n">c</span><span class="p">;</span>
</span><span class='line'> <span class="p">}</span>
</span><span class='line'> <span class="p">}</span>
</span><span class='line'> <span class="k">if</span> <span class="p">(</span><span class="n">w</span><span class="p">.</span><span class="n">l</span><span class="o">&</span><span class="n">gt</span><span class="p">;</span><span class="mi">0</span><span class="p">)</span> <span class="p">{</span>
</span><span class='line'> <span class="n">zwrite</span><span class="p">(</span><span class="n">fzip</span><span class="p">,</span><span class="n">w</span><span class="p">.</span><span class="n">co</span><span class="p">);</span>
</span><span class='line'> <span class="n">zwrite</span><span class="p">(</span><span class="n">fzip</span><span class="p">,</span><span class="n">c</span><span class="p">);</span>
</span><span class='line'> <span class="p">}</span>
</span><span class='line'> <span class="p">}</span>
</span><span class='line'> <span class="n">fin</span><span class="p">.</span><span class="n">close</span><span class="p">();</span>
</span><span class='line'> <span class="n">wcout</span><span class="o">&</span><span class="n">lt</span><span class="p">;</span><span class="o">&</span><span class="n">lt</span><span class="p">;</span><span class="s">L"Done in "</span><span class="o">&</span><span class="n">lt</span><span class="p">;</span><span class="o">&</span><span class="n">lt</span><span class="p">;(</span><span class="n">time</span><span class="p">(</span><span class="mi">0</span><span class="p">)</span><span class="o">-</span><span class="n">now</span><span class="p">)</span><span class="o">&</span><span class="n">lt</span><span class="p">;</span><span class="o">&</span><span class="n">lt</span><span class="p">;</span><span class="s">L" sec(s)."</span><span class="o">&</span><span class="n">lt</span><span class="p">;</span><span class="o">&</span><span class="n">lt</span><span class="p">;</span><span class="n">endl</span><span class="p">;</span>
</span><span class='line'> <span class="k">return</span> <span class="mi">0</span><span class="p">;</span>
</span><span class='line'><span class="p">}</span><span class="c1">//解压器</span>
</span><span class='line'><span class="kt">int</span> <span class="n">decoder</span><span class="p">(</span><span class="n">fstream</span> <span class="o">&</span><span class="n">amp</span><span class="p">;</span> <span class="n">fzip</span><span class="p">,</span> <span class="n">_TCHAR</span><span class="o">*</span> <span class="n">fn</span><span class="p">)</span>
</span><span class='line'><span class="p">{</span>
</span><span class='line'> <span class="kt">int</span> <span class="n">i</span><span class="p">;</span>
</span><span class='line'> <span class="kt">long</span> <span class="kt">long</span> <span class="n">fsize</span><span class="p">;</span>
</span><span class='line'> <span class="n">time_t</span> <span class="n">now</span> <span class="o">=</span> <span class="n">time</span><span class="p">(</span><span class="mi">0</span><span class="p">);</span>
</span><span class='line'> <span class="n">wcout</span><span class="o">&</span><span class="n">lt</span><span class="p">;</span><span class="o">&</span><span class="n">lt</span><span class="p">;</span><span class="n">fn</span><span class="o">&</span><span class="n">lt</span><span class="p">;</span><span class="o">&</span><span class="n">lt</span><span class="p">;</span><span class="s">L":"</span><span class="p">;</span>
</span><span class='line'> <span class="n">fstream</span> <span class="n">fout</span><span class="p">(</span><span class="n">fn</span><span class="p">,</span><span class="n">ios</span><span class="o">::</span><span class="n">out</span><span class="o">|</span><span class="n">ios</span><span class="o">::</span><span class="n">binary</span><span class="p">);</span>
</span><span class='line'> <span class="n">zread</span><span class="p">(</span><span class="n">fzip</span><span class="p">,</span><span class="n">fsize</span><span class="p">);</span>
</span><span class='line'> <span class="k">if</span> <span class="p">(</span><span class="n">nozip</span><span class="p">(</span><span class="n">fn</span><span class="p">))</span>
</span><span class='line'> <span class="p">{</span>
</span><span class='line'> <span class="kt">char</span> <span class="n">c</span><span class="p">;</span>
</span><span class='line'> <span class="k">while</span> <span class="p">(</span><span class="n">fsize</span><span class="o">--</span><span class="p">)</span>
</span><span class='line'> <span class="p">{</span>
</span><span class='line'> <span class="n">zread</span><span class="p">(</span><span class="n">fzip</span><span class="p">,</span><span class="n">c</span><span class="p">);</span>
</span><span class='line'> <span class="n">zwrite</span><span class="p">(</span><span class="n">fout</span><span class="p">,</span><span class="n">c</span><span class="p">);</span>
</span><span class='line'> <span class="p">}</span>
</span><span class='line'> <span class="p">}</span>
</span><span class='line'> <span class="k">else</span>
</span><span class='line'> <span class="p">{</span>
</span><span class='line'> <span class="kt">char</span> <span class="n">c</span><span class="p">;</span>
</span><span class='line'> <span class="n">ushort</span> <span class="n">co</span><span class="p">;</span>
</span><span class='line'> <span class="n">SWordCode</span> <span class="n">w</span><span class="p">,</span><span class="n">wc</span><span class="p">;</span>
</span><span class='line'> <span class="n">dic</span><span class="p">.</span><span class="n">Refresh</span><span class="p">();</span>
</span><span class='line'> <span class="n">w</span><span class="p">.</span><span class="n">l</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span> <span class="n">w</span><span class="p">.</span><span class="n">co</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span>
</span><span class='line'> <span class="kt">int</span> <span class="n">ct</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span>
</span><span class='line'> <span class="k">while</span> <span class="p">(</span><span class="n">fsize</span><span class="p">)</span>
</span><span class='line'> <span class="p">{</span>
</span><span class='line'> <span class="n">zread</span><span class="p">(</span><span class="n">fzip</span><span class="p">,</span><span class="n">co</span><span class="p">);</span>
</span><span class='line'> <span class="n">zread</span><span class="p">(</span><span class="n">fzip</span><span class="p">,</span><span class="n">c</span><span class="p">);</span>
</span><span class='line'> <span class="k">if</span> <span class="p">(</span><span class="n">dic</span><span class="p">.</span><span class="n">t</span><span class="o">==</span><span class="n">DICSIZE</span><span class="p">)</span> <span class="n">dic</span><span class="p">.</span><span class="n">Refresh</span><span class="p">();</span>
</span><span class='line'> <span class="n">w</span> <span class="o">=</span> <span class="n">dic</span><span class="p">.</span><span class="n">d</span><span class="p">[</span><span class="n">co</span><span class="p">];</span>
</span><span class='line'> <span class="k">if</span> <span class="p">(</span><span class="n">w</span><span class="p">.</span><span class="n">l</span><span class="p">)</span>
</span><span class='line'> <span class="p">{</span>
</span><span class='line'> <span class="n">fsize</span> <span class="o">-=</span> <span class="n">w</span><span class="p">.</span><span class="n">l</span><span class="p">;</span> <span class="n">ct</span> <span class="o">+=</span> <span class="n">w</span><span class="p">.</span><span class="n">l</span><span class="p">;</span>
</span><span class='line'> <span class="k">for</span> <span class="p">(</span><span class="n">i</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span> <span class="n">i</span> <span class="o">&</span><span class="n">lt</span><span class="p">;</span> <span class="n">w</span><span class="p">.</span><span class="n">l</span><span class="p">;</span> <span class="n">i</span><span class="o">++</span><span class="p">)</span>
</span><span class='line'> <span class="n">zwrite</span><span class="p">(</span><span class="n">fout</span><span class="p">,</span><span class="n">w</span><span class="p">.</span><span class="n">s</span><span class="p">[</span><span class="n">i</span><span class="p">]);</span>
</span><span class='line'> <span class="n">wc</span> <span class="o">=</span> <span class="n">w</span> <span class="o">+</span> <span class="n">c</span><span class="p">;</span>
</span><span class='line'> <span class="n">wc</span><span class="p">.</span><span class="n">co</span> <span class="o">=</span> <span class="n">dic</span><span class="p">.</span><span class="n">GetCode</span><span class="p">(</span><span class="n">wc</span><span class="p">);</span>
</span><span class='line'> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">wc</span><span class="p">.</span><span class="n">co</span><span class="o">&</span><span class="n">amp</span><span class="p">;</span><span class="o">&</span><span class="n">amp</span><span class="p">;</span><span class="n">wc</span><span class="p">.</span><span class="n">l</span><span class="o">&</span><span class="n">lt</span><span class="p">;</span><span class="o">=</span><span class="n">WORDLEN</span><span class="o">+</span><span class="mi">1</span><span class="p">)</span> <span class="n">dic</span><span class="p">.</span><span class="n">Insert</span><span class="p">(</span><span class="n">wc</span><span class="p">);</span>
</span><span class='line'> <span class="p">}</span>
</span><span class='line'> <span class="p">}</span>
</span><span class='line'> <span class="p">}</span>
</span><span class='line'> <span class="n">fout</span><span class="p">.</span><span class="n">close</span><span class="p">();</span>
</span><span class='line'> <span class="n">wcout</span><span class="o">&</span><span class="n">lt</span><span class="p">;</span><span class="o">&</span><span class="n">lt</span><span class="p">;</span><span class="s">L"Done in "</span><span class="o">&</span><span class="n">lt</span><span class="p">;</span><span class="o">&</span><span class="n">lt</span><span class="p">;(</span><span class="n">time</span><span class="p">(</span><span class="mi">0</span><span class="p">)</span><span class="o">-</span><span class="n">now</span><span class="p">)</span><span class="o">&</span><span class="n">lt</span><span class="p">;</span><span class="o">&</span><span class="n">lt</span><span class="p">;</span><span class="s">L" sec(s)."</span><span class="o">&</span><span class="n">lt</span><span class="p">;</span><span class="o">&</span><span class="n">lt</span><span class="p">;</span><span class="n">endl</span><span class="p">;</span>
</span><span class='line'> <span class="k">return</span> <span class="mi">0</span><span class="p">;</span>
</span><span class='line'><span class="p">}</span>
</span></code></pre></td></tr></table></div></figure>
]]></content>
</entry>
<entry>
<title type="html"><![CDATA[你不知道的我]]></title>
<link href="http://www.sqrh.net/blog/2011/04/15/sth-you-may-not-know-about-me/"/>
<updated>2011-04-15T00:00:00+08:00</updated>
<id>http://www.sqrh.net/blog/2011/04/15/sth-you-may-not-know-about-me</id>
<content type="html"><![CDATA[<p><span style="color: #333333; font-family: Tahoma, Verdana, STHeiTi, simsun, sans-serif; line-height: 21px;"> </span></p>
<p style="margin-top: 0px; margin-right: 0px; margin-bottom: 0.8em; margin-left: 0px; padding: 0px;">在大学这个环境,人真的很难互相了解,既然不能寄希望于别人主动了解你,只好自己出来发言。如果你希望了解我,这篇显摆文大概可以帮到你。</p>
<p style="margin-top: 0px; margin-right: 0px; margin-bottom: 0.8em; margin-left: 0px; padding: 0px;">———————————————————————————————</p>
<ol style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 30px; list-style-position: outside; list-style-type: decimal; list-style-image: initial; margin: 0px;">
<li style="padding: 0px; margin: 0px;">我参与过信息学竞赛,但不完全是凭借信息学保送的。跟大多数同学一样,我是因为综合成绩而进入北大的。我甚至有点厌恶被认为是竞赛牛人,第一是因为不配,第二与一些经历有关。</li>
<li style="padding: 0px; margin: 0px;">我对Geek和Otaku文化十分感兴趣,也了解一些知识(相对于大多数人),但遇上Geek或者Otaku的严格定义,只能说我是一个伪极客和伪宅——我并没有用理论解释一切的野心,也没有对动漫的超常狂热。</li>
<li style="padding: 0px; margin: 0px;">虽然我喜欢参与讨论,但我倾听与观察他人的时间可能比一般人要多,有时候表现为东张西望,一部分情况下这让他人感到不舒服。</li>
<li style="padding: 0px; margin: 0px;">认为艺术形式没有高低之分,然而我最能欣赏以文字为载体的艺术。文字可以给人随时停顿与思考,并留下自己的感悟与感动,限定死时间线的艺术——电影、电视剧、动画,只有当它们非常优秀(或者说很适合我的思维节奏),我才能够完全的受其触动。</li>
<li style="padding: 0px; margin: 0px;">初中到高中平均成绩最好的一直是化学,最有兴趣的是计算机。</li>
<li style="padding: 0px; margin: 0px;">喜欢音乐,喜欢歌唱,学习过歌剧并参加过比赛。无论男女歌手的歌曲都唱,面广而无精,是KTV最佳伴唱对象。</li>
<li style="padding: 0px; margin: 0px;">喜静。然羽毛球、游泳可与人一较高下,乒乓球、篮球、排球、棒球、旱冰、国际象棋可以偶尔娱乐一下,网球、台球初学但挺有兴趣。</li>
<li style="padding: 0px; margin: 0px;">喜欢历史与地理。尤其喜欢世界史与大航海时代。可以标出14世纪所有著名港口的位置。喜欢希腊神话。对北欧与冰岛有特殊的兴趣。</li>
<li style="padding: 0px; margin: 0px;">喜欢大多数文学,小说尤甚。阅读小说速度很快(最快纪录一天3MB——一个上午看完一本哈利波特)。除了对古典仙侠与硬科幻情有独钟外,对其他小说也有兴趣一读,甚至包括言情小说,当然,耽美除外。虽然不算热衷,但偶尔也可与人以诗词相和来作乐。</li>
<li style="padding: 0px; margin: 0px;">对互联网与及时获取信息有偏执倾向。Always Connected. 小学三年级开始学习Dreamweaver和Flash,初中学习PHP,高中搞了一阵信息学竞赛,现在学一学Django架构。但到现在仍然一事无成。也不气馁。</li>
<li style="padding: 0px; margin: 0px;">内向。虽然中学开始一直转向但积重难返。跟女生单独接触仍然十分紧张,尤其是稍有好感的,不知道该怎么说话。生人面前是勿近型。</li>
<li style="padding: 0px; margin: 0px;">喜欢旅游。迄今为止认真游玩过的景点大约有40-50个。喜欢自然风景与寻幽探秘。</li>
<li style="padding: 0px; margin: 0px;">不喜与人争斗,但偶尔出言讽刺。认为真理无需强辞,侵略性从根本上来说是丑陋的。</li>
<li style="padding: 0px; margin: 0px;">两年来最大的愿望是坚强的活着,有爱我和我爱的人,学习尽可能广博的知识。</li>
<li style="padding: 0px; margin: 0px;">其次是保证独立思维与实证精神,对一切馈赠保持感恩之心,做一个对大多数人来说还算有趣的人。</li>
<li style="padding: 0px; margin: 0px;">反对唯理主义,但难免有保证语言逻辑严密的强迫症,比如说这篇文章的标题与其中一些冗长的句子。</li>
</ol>
<p> </p>
]]></content>
</entry>
<entry>
<title type="html"><![CDATA[mactype:windows下的字体渲染软件]]></title>
<link href="http://www.sqrh.net/blog/2011/04/08/mactype%3Afont-rendering-in-windows/"/>
<updated>2011-04-08T00:00:00+08:00</updated>
<id>http://www.sqrh.net/blog/2011/04/08/mactype:font-rendering-in-windows</id>
<content type="html"><![CDATA[<p>
用过ubuntu或者mac的童鞋们回到windows——即使是已经大有改观的win7——下面最大的感受之一,就是文字显示实在是很难看,仿佛满是锯齿。</p>
<p>
起初我认为这是由于windows本身的字体不给力造成的,这确实是原因之一,但显然不能用于解释所有问题,即使你把Adobe Kai或者文泉驿放上windows,你也总觉得它变丑了。</p>
<p>
其实这还是由于微软从来就没有把cleartype这个工具做到最精致有关的。于是为了加强效果,我们可以使用MacType这款软件。</p>
<p>
MacType的最新版可以在<a href="http://mactype.themex.net/download/MacTypeInstaller_2010_1231_0.exe">这儿下载</a>。</p>
<p>
用户可以使用MacType自己定制一种配置方案,也可以在用户向导中直接使用预定的方案,完全可以达到比Mac更好的字体效果。</p>
<p>
下面则是MacType处理后的文字的显示效果,无论是界面还是文本,都是这样的字体看上去爽多了不是么?</p>
<p>
</p>
<div class="imgbox">
<img alt="" src="http://www.sqrh.net/images/mactype.png" style="width: 415px; height: 180px; " /></div>
]]></content>
</entry>
<entry>
<title type="html"><![CDATA[breaking-news:html5+css3是图灵完备的]]></title>
<link href="http://www.sqrh.net/blog/2011/03/09/breaking-news%3Ahtm5-css3-is-turing-complete/"/>
<updated>2011-03-09T00:00:00+08:00</updated>
<id>http://www.sqrh.net/blog/2011/03/09/breaking-news:htm5-css3-is-turing-complete</id>
<content type="html"><![CDATA[ <p>
昨天还在人人上发了一条状态说为什么HTML不做成图灵完备编程语言,今天就看见了这样一条<a href="http://lemire.me/blog/archives/2011/03/08/breaking-news-htmlcss-is-turing-complete/" style="margin: 0px; padding: 0px; color: rgb(0, 94, 172); cursor: pointer; text-decoration: none;" target="_blank">新闻</a>:</p>
<p style="margin: 0px 0px 0.8em; padding: 0px;">
A programming language is <a href="http://en.wikipedia.org/wiki/Turing_complete" style="margin: 0px; padding: 0px; color: rgb(0, 94, 172); cursor: pointer; text-decoration: none;">Turing complete</a> if it equivalent to a Turing machine. In practice, it means that any algorithm can be implemented. Most programming languages are Turing complete, including SQL, ECMAScript, Java, C, and so on. For years, I have been telling my students that CSS is not Turing complete.</p>
<p style="margin: 0px 0px 0.8em; padding: 0px;">
如果一个编程语言等价于一个图灵机,我们称它是图灵完备的。事实上,这表明任何算法都可以使用这种语言实现。大部分的编程语言都是图灵完备的,包括SQL,ECMAScript,Java,C等等。多年来,我一直告诉我的学生CSS并不是图灵完备的。</p>
<p style="margin: 0px 0px 0.8em; padding: 0px;">
Maybe I need to change my story. Apparently, <a href="http://lambda-the-ultimate.org/node/4222" style="margin: 0px; padding: 0px; color: rgb(0, 94, 172); cursor: pointer; text-decoration: none;">HTML5 + CSS3</a> is now also Turing complete because it can be used to program a <a href="http://en.wikipedia.org/wiki/Rule_110" style="margin: 0px; padding: 0px; color: rgb(0, 94, 172); cursor: pointer; text-decoration: none;">Rule 110 automaton</a>. I have not yet had time to investigate further. Does it rely on specific features of CSS3 and HTML5? Were previous versions of HTML+CSS also Turing complete?</p>
<p style="margin: 0px 0px 0.8em; padding: 0px;">
但我要改变我的说法了。显然,HTML5+CSS3现在已经是图灵完备的了,因为它已经被用于编程一个Rule 110自动机。这是否依赖了CSS3与HTML5的特殊性质还不太清楚。(底下网友评论给出的猜测答案是CSS3引进的某一个新特性<a href="http://www.w3.org/TR/css3-selectors/#nth-of-type-pseudo" rel="nofollow" style="margin: 0px; padding: 0px; color: rgb(0, 94, 172); cursor: pointer; text-decoration: none;">#nth-of-type-pseudo</a>)</p>
<p style="margin: 0px 0px 0.8em; padding: 0px;">
On Wikipedia, there is a nice story about how when Matthew Cook proved that Rule 110 was Turing complete, Wolfram Research, the egotistical company behind Mathematica, censored the proof using a court order. Cook apparently had the last laugh, as his proof is now <a href="http://www.complex-systems.com/Archive/hierarchy/abstract.cgi?vol=15&iss=1&art=01" style="margin: 0px; padding: 0px; color: rgb(0, 94, 172); cursor: pointer; text-decoration: none;">available online</a>. What kind of idiotic company uses court orders to censor the publication of a purely mathematical theorem?</p>
<p style="margin: 0px 0px 0.8em; padding: 0px;">
<strong style="margin: 0px; padding: 0px;">Source</strong>: Thanks to <a href="http://jakoblog.de/about/" style="margin: 0px; padding: 0px; color: rgb(0, 94, 172); cursor: pointer; text-decoration: none;">Jakob Voß</a> for the pointer.</p>
<p style="margin: 0px 0px 0.8em; padding: 0px;">
Tianyi Cui:由于 Rule 110 (一种网格自动机)是图灵完全的,而HTML+CSS可以实现出来Rule 110,所以它也是图灵完全的。不过这并不具备任何实践上的价值,就像perl regex还是图灵完全的呢,但并没有人用它去做匹配文本以外的事情。</p>
<p style="margin: 0px 0px 0.8em; padding: 0px;">
—————————-以上是引用与翻译部分——————————–</p>
<p style="margin: 0px 0px 0.8em; padding: 0px;">
</p>
<p style="margin: 0px 0px 0.8em; padding: 0px;">
这也是很有趣的一件事——现在我的问题转化成为了,为什么人们不把HTML与CSS做成一个如C、Java之类的,大家可以用来做各种事情的编程语言呢?</p>
<p style="margin: 0px 0px 0.8em; padding: 0px;">
首先,ajax只不过是那么拖动几下东西,按几下按钮,当年让我们激动了半天的东西,从任何一个角度看其实只不过是一种GUI在网络程序上的应用罢了。</p>
<p style="margin: 0px 0px 0.8em;">
第二,很多由服务端进行的查询操作,本来就应该放在客户端(浏览器)上进行。</p>
<p style="margin: 0px 0px 0.8em;">
因此越来越使我疑惑的就是——为什么我们不直接改造HTML成为一种强大易用的解释型语言(如Python),让浏览器作为interpreter直接把一个个网页变为程序?仅仅是因为解释型语言效率低下?但是效率应该并没有低下到让人无法接受的地步吧?何况javascript的广泛运用体现浏览器作为一个解释器的能力是可以做到很不错的。</p>
<p style="margin: 0px 0px 0.8em;">
</p>
<p style="margin: 0px 0px 0.8em;">
附:Rule 110 on HTML5+CSS3</p>
<p style="margin: 0px 0px 0.8em; padding: 0px;">
<a href="http://elilies.com/rule110-full.html" style="margin: 0px; padding: 0px; color: rgb(0, 94, 172); cursor: pointer; text-decoration: none;" target="_blank">http://elilies.com/rule110-full.html</a></p>
]]></content>
</entry>
<entry>
<title type="html"><![CDATA[文章编排风格真是失败]]></title>
<link href="http://www.sqrh.net/blog/2011/03/08/blog-style-is-a-mess/"/>
<updated>2011-03-08T00:00:00+08:00</updated>
<id>http://www.sqrh.net/blog/2011/03/08/blog-style-is-a-mess</id>
<content type="html"><![CDATA[<div style="line-height: 2.5;">
<p>
<big>从博客上线到现在,也已经发布了五篇博文,对于我这种懒人算是出奇的勤奋了,希望能继续保持下去,毕竟整理记忆也到了这种年龄应该开始做的事情了。</p>
<p>
<big>我也认为<a href="http://blog.csdn.net/pongba/archive/2009/02/10/3874528.aspx">书写是为了更好的思考</a>。</big></p>
<p>
<big> 但是怎么看这些文章都不得不承认,虽然我审美能力还行(?),但是设计规划能力实在是不能入眼,若是有大框架的东西改改还可,一遇没框架的东西,就无法令人满意。</big></p>
<p>
<big>其中最重要的一点就是行文风格,<a href="http://localhost-8080.com/2011/01/how-to-keep-readers-attention/">这一篇文章</a>讲了不少博客的写作方法,然而实践起来确实是困难重重且容易顾此失彼。</big></p>
<p>
<big>不管怎么说,朝着这个方向努力是没错了。也希望有人能提出点意见,您的一点意见,或许是我终生的进步。</big></p>
</div>
]]></content>
</entry>
<entry>
<title type="html"><![CDATA[Micolog之结构分析]]></title>
<link href="http://www.sqrh.net/blog/2011/03/06/micolog-2/"/>
<updated>2011-03-06T00:00:00+08:00</updated>
<id>http://www.sqrh.net/blog/2011/03/06/micolog-2</id>
<content type="html"><![CDATA[<div style="line-height: 1.8;">
<h4>
<span style="font-weight: normal;"><span style="color: rgb(255, 153, 0);">micolog虽然挺多地方功能不够完善,但基本的结构是很清晰的。由于采取了MTV工作模式,即Model:数据模型;Template:视图模板;View:视图函数的典型工作模式,即:视图函数通过数据模型与数据库交互获取数据,再将数据传输给模板填上“空”(变量)。要进行各种修改十分简单。</span></span></h4>
<h3>
根目录</h3>
<p>
<code><span class="codef">__init__.py</span></code>:告诉python这个文件夹要被使用,于是你可以使用文件夹.文件的方式访问其他文件。</p>
<p>
<code><span style="color: rgb(51, 153, 102); font-family: Georgia,'Times New Roman',Times,serif;">base.py</span></code>:最重要有一个类BaseRequestHandler,是最基础的视图函数,其他的视图函数都要继承它;</p>
<p>
<code><span style="color: rgb(51, 153, 102); font-family: Georgia,'Times New Roman',Times,serif;">blog.py</span></code>:分类各种视图函数<span style="color: rgb(255, 153, 0);">V-Views</span>,以及url处理与转发,类似django的url.py和views.py的综合。</p>
<p>
<code><span style="color: rgb(51, 153, 102); font-family: Georgia,'Times New Roman',Times,serif;">filter.py</span></code>:处理数据过滤,增加了mf的模板标签,还负责过滤提交的有害信息;</p>
<p>
<code><span style="color: rgb(51, 153, 102); font-family: Georgia,'Times New Roman',Times,serif;">micolog_plugin.py</span></code>:封装了Plugins类,其中有tigger_***与register_***一类方法,为各个plugin的功能函数提供比较便捷的外部接口;</p>
<p>
<code><span style="color: rgb(51, 153, 102); font-family: Georgia,'Times New Roman',Times,serif;">model.py</span></code>:这就是<span style="color: rgb(255, 153, 0);">M-Model</span>,相当于django的models.py,数据库与视图函数的中间层,封装了Comment,Entry,Link等,定义了一个全局变量g_blog表示当前博客,g_blog.tigger_***()与前面的plugin的联系。</p>
<h3>
/themes </h3>
<p>
主题文件夹,即<span style="color: rgb(255, 153, 0);">T-Templates</span>,已经很多优秀的wordpress主题被移植,充分说明了django模板系统的强大易用;</p>
<p>
当前我的主题由translucency修改而来,改变了主色调;</p>
<p>
安装主题十分方便,将主题文件夹拷贝在此文件夹下(文件夹命名最好为英文+下划线+数字),再在管理界面中选择相应名字的主题即可。</p>
<p>
一般来说,一个主题下至少有两个文件夹,以默认的default主题为例。</p>
<ul>
<li>
<span style="color: rgb(128, 0, 128);">/</span> 相关js,效果截图,相关css。</li>
<li>
<span style="color: rgb(128, 0, 128);"><code>/images</code></span> 存储主题的图片素材。</li>
<li>
<span style="color: rgb(128, 0, 128);"><code>/templates</code></span> 存储.html格式,以django模板语法书写的模板文件。
<ol>
重要的有如下几个:
<li>
<span style="color: rgb(51, 153, 102); font-family: Georgia,'Times New Roman',Times,serif;">base.html</span>:整体框架,没有直接用来渲染,其他页面都以{ % extends "base.html"% }(如果你还不明白这一句,你应该学习django的模板语言了)来控制结构。</li>
<li>
<span style="color: rgb(51, 153, 102); font-family: Georgia,'Times New Roman',Times,serif;">sidebar.html</span>:因为micolog没有采用widgets的模式,所以若是需要在sidebar上添加内容就可以通过在此处添加内容。</li>
<li>
<span style="color: rgb(51, 153, 102); font-family: Georgia,'Times New Roman',Times,serif;">comments.html</span>:博客相当关键的交互系统——评论与回复,可以加以改进的地方有很多。</li>
</ol>
</li>
</ul>
<h3>
/plugins</h3>
<p>
安装插件的地方,一个插件一般是一个文件夹(如<span style="color: rgb(128, 0, 128);"><code>/highsyntax</code></span>)或者是一个.py文件(如<span style="color: rgb(51, 153, 102);"><span><code>googleAnalytics.py</code></span></span>)。</p>
<h3>
/app</h3>
<p>
一些内置的功能模块,也可以当成是插件,只不过更偏向后台处理。</p>
<p>
如<span style="color: rgb(51, 153, 102);"><code>pngcanvas.py</code></span>负责绘图,而<span style="color: rgb(51, 153, 102);"><span><code>safecode.py</code></span></span>则调用<span style="color: rgb(51, 153, 102);"><code>pngcanvas.py</code></span>来绘制验证码。<strong>这两个文件都是很有趣且可以改作别用的,强烈推荐研究一下。</strong></p>
<p>
</p>
<p>
micolog的重要文件(博主认为的),大多都列在如上粗浅的介绍了一下。</p>
<p>
下一篇日志,我将介绍几个我在blog建设过程中的遇到的问题,从简单到稍微麻烦,告诉读者如何以比较尽可能方便的解决他们。</p>
</div>
]]></content>
</entry>
<entry>
<title type="html"><![CDATA[Micolog之从头开始]]></title>
<link href="http://www.sqrh.net/blog/2011/03/04/micolog-1/"/>
<updated>2011-03-04T00:00:00+08:00</updated>
<id>http://www.sqrh.net/blog/2011/03/04/micolog-1</id>
<content type="html"><![CDATA[<div style="line-height: 1.8;">
<h4>
<span style="font-weight: normal;"><span style="color: rgb(255, 153, 0);">很多人都希望拥有自己的blog,而可以肯定micolog是当下很棒的选择,此文尽量简明的说明一下如何拥有一个Micolog。</span></span></h4>