2007年5月22日星期二

一点关于宗教和信仰的讨论

昨天朋友过来,就和他讨论了一下最近在重新看的《卡拉马佐夫兄弟》。仍然还是从宗教大法官开始。为什么阿廖沙要叫道“你的长诗是对耶稣的赞颂,而不是诋毁……”呢?大法官难道不是在告诉耶稣,也告诉所有的读者,耶稣所做的其实并没有起到他希望的效果,他是高估了普通人类吗?难道他没有指出,与其跟随耶稣,整日在旷野里嚼草根、禁欲,魔鬼的食物、奇迹更能吸引他们吗?而宗教大法官剥夺了人民的自由,却给了他们食物,他充当的是魔鬼的,而非基督的代言人,虽然他告诉人民他是暂时代替基督来统治他们的。问题就在这儿:基督教之所以可以成为最大的宗教教派之一,离不开它对政治统治提供的无可取代的帮助。不可否认,如果基督教仅仅是一门宗教,它不可能得到如此庞大,如此久远的发展的。统治者们利用基督教实施他们的统治,即使他们自己本来毫无宗教信仰,他们而得在民众面前装得很虔诚。相反,基督教在民众心中是很纯洁的。从它被创造之初到现在,宗教本身没有,也不可能有很大的改变。在基督教传播的过程中,变化的只是谁利用它,怎样利用它,它的本质则始终如一。

当然,时代变化了,民众也会变化。从中世纪的神权统治,到重视精神思想的文艺复兴,再到现在的重视物质的社会,民众对宗教的态度也会有很大的变化。基督教在现在之所以还会有这么大范围的影响,应该要归功于它在这么多世纪以来的积累。设想一下现在有一门全新的宗教被创造出来(注意,是宗教,而不是法轮功那种迷信),有可能产生像基督教那样的影响吗?基督教强调灵魂不死,强调忏悔和救赎,这在一千年前完全可以成为人们寄托希望的容器,但在现在,金钱往往是人们最首要考虑的因素。

期待下一个精神时代的到来。

毕业设计——BitTorrent客户端(二)

最近把程序的极原始的雏形写出来了。现在的进度是:
1) 连接Tracker。获得正确回应后记录返回的IP列表,等待回应中指定的时长后重新连接。返回错误回应则记录错误信息。连接错误和回应错误则等待预先设置的时长再重新连接。使用一个线程作为定时器,检查每个Socket是否到了应该重连的时间。

2) 连接Peer。主动连接或者被动接受连接。Tracker获得IP列表后,会把列表存放到一个IP池里。由另一线程去定时尝试连接那些IP。任务一开始会开一个Socket来监听某个指定端口,当有人尝试连接本客户端,则接受连接。

3) 消息流程还是按照BT规范里约定的。主动发起者先发送握手消息,被动接受者收到握手消息后,检查无误,发送回应握手消息,连接建立。然后双方发送Bitfield消息,然后Unchoke消息等等。不同客户端对Bitfield消息的产生方式不一样。像BitComet就是严格按照规范里描述的,把所有Piece的消息写到一个Bitfield里去,而uTorrent对大任务是把Bitfield消息置空,而用Have消息通知Peer它有哪些Piece。

我在自己计算机上测试的,下载可以达到2MB/s的速度。瓶颈是在消息处理流程过长,以及主动请求频率的问题。

4) 保存和恢复任务进度。我是参考uTorrent的方法,将任务信息用bencodin写到文件里去。

5) 文件读写缓冲。所有写文件的操作先是写到内存里去。当缓冲区达到指定大小时,将缓冲区数据写入文件。读操作时,先到缓冲区里去找,若没有则读实际文件。当然要解决的问题是,如果程序意外终止,缓冲区里的数据来不及写到文件里去,那下载的数据就白费了。还是要研究一下Windows关于文件缓冲的技术。

6) 为了简化代码,目前暂时是把支持多任务给去掉了的,不过以后是肯定要加入的。因为每个回收站文件也是一个另一种类型的任务,纯上传任务。

以前使用的是同步Socket,但是问题很多:每个Peer连接都要开启一个线程,要有地方来管理这些线程。另外要控制某个Peer连接去主动请求Piece也很难,因为是要由一个线程去控制另一个线程。线程与线程的同步也是要解决的问题。总之,同步Socket是不能采用的方案。

现在所有连接使用CAsyncSocket,MFC框架。异步Socket + 消息驱动可以保证很少的线程,很低的CPU占用,很高的速度。当然,异步Socket也要解决一些“异步”相关的问题,比如消息发送的先后问题。

关于回收站模式,我会在下一篇文章中介绍。

2007年5月15日星期二

找到 Skype 的官方代理

前段时间用 Skype 3.1 版的时候发现在 Connection 选项卡里面多出来一个“CERNET Beta”,应该是TOM通过某种技术或者手段让教育网用户也能连上美国的服务器。这两天换了3.2版,发现CERNET Beta没有了,但代理设置里面是有值的,用密码显示器得到用户名和密码后一试,竟然可以直接在浏览器里面使用,看来是得到了一个极品的适合教育网使用的代理了。当然也不知道能坚持多久。需要的朋友可以试试:

IP:59.64.114.29
端口:2000
用户名:skype
密码:tomskype

2007年5月5日星期六

大学生在小学

一天做梦,梦见我和中学的几位同学不知道什么原因被要求去小学重读一年的书。可以选择任何一所小学,任何一个年级,任何一个班。当然,在现实中这样的事就太匪夷所思了,要求一个拥有大学生知识和经历的人像一个小学生那样生活一年。不过假如用小说来写出一部这个题材的作品,估计会是挺有趣的吧:

想想,首先,选哪一个年级?六年级会比较接近一点,不会像一年级那样无聊吧。平时上课干什么呢?总不能老打瞌睡吧,那不就白白浪费了一年的时间了。做自己的事,看自己的书?那要假设老师和学校强制要求认真听课。怎么和那些小学生交流呢?总不能一年时间都一个人太孤僻吧。既然那些老师都能和这些小孩打成一片,那我们也能做得到的。作业和考试?当然是轻松完成了。作息安排上,当然是不能迟到、早退的。星期一升国旗的时候肯定会比较醒目吧,这么一个个儿……

当然还有很多情况了,不过小说的结尾是什么呢?一句疑问:“不过,我干嘛要到这儿来上一年小学?”可能最大的好处就是能够有一年时间拥有良好的作息规律,对身体好吧:)

重读《穷人》

五一这几天又在重读陀氏的《穷人》,虽然是他的第一部小说,当也写得确实很真切。除了好奇为什么那个时代的俄罗斯,富人和穷人的差异有如此之大外,我想起了我妈妈。

和马卡尔·杰武什金一样,我妈妈也是一个在岗位上辛辛苦苦、勤勤恳恳了一辈子的人,虽然在机关里是出了名的好人,好心肠,品德高尚,但也从来没有过工作上的升迁。同马卡尔一样,每个月都还是按时拿到虽然不算微薄,但还能过得去的薪水。虽然不多,但她也从来不抱怨什么,总还是认为单位对她已经很不错了。当然,她的这种满足对她来说是好事,事实上,在这个竞争激烈的时代,她在工作方面拥有的能力也确实只配拿到那么多薪水。从我的角度来说,我一直纳闷,干嘛就不发发奋,好好学点技术含量高的知识,争取到金字塔的更高层去呢?依她的人缘,这并不是很难办得到的啊?

现在我逐渐想到,当一个人还年轻的时候,他总是可以对未来充满希望,认为即使现在的状况再差,他也有时间、有力量去改变。而当一个人在一个环境里面呆上了10年、20年以后,他就很难再有改变现状的希望和勇气了。应该改变的东西早就应该已经改变了,没有变化过的东西也基本上不可能在现在再来改变了。即使现状再怎么差,看来都是命运决定了的,自己的力量已不足以撼动它了。不管这种思想如何如何,在那种境况下的人应该是很容易产生这种想法的。君不见这位马卡尔·杰武什金,在他“年纪轻轻”的时候也是那么富有热情,发疯似的去追求女演员,现在老了,每天都用同样的衣装,走同样的路线,到同样的地方,做同样的工作,和同样的人打交道,得到同样的回应。我不清楚我妈妈年轻时具体是怎么想的,不过现在,她是肯定不会再去想怎么让自己升迁,获得更多的报酬。

当然,支撑杰武什金活下去的,是瓦尔瓦拉,支撑我妈妈活下去的,是我。正如瓦尔瓦拉写到的,“您倒想想看,您吃尽了苦头,直到现在,您还只是为我而活着,为我的欢乐而欢乐,悲伤而悲伤,为我的情意而活着。”因为瓦尔瓦拉还年轻,还有希望,所以瓦尔瓦拉很有可能改变她的现状,变得好起来,比他能够设想到的更好。既然他以她的欢乐而欢乐,那么瓦尔瓦拉的改变也就意味着他自己的改变,这是他活下去、极端无私地帮助瓦尔瓦拉的根本原因。同样,我妈妈也只能把希望寄托在我身上(这是她的一句口头禅),希望我的未来会比他的好,这样她也就能心满意足了。

当然,我们的处境比杰武什金他们好,我也比瓦尔瓦拉更有力量去改变自己的命运。