没想好写些什么,流水一下。

(官方统计)共1000人左右到场。都是留学生,包括渥太华的学生和蒙特利尔的学生。我在蒙特利尔的几位朋友都来了,其中包括好久没见的几位。

本来我是准备好去拍摄资料的,结果到了之后,心理一激动,就跑去拉条幅了。结果很简单,回家之后发现可用的素材只有20分钟。没办法,只能剪辑 MV 了。

这次活动举办得比较成功。中英文的“声明”都有了,秩序也不错,没有乱七八糟的闹事分子。而且这次把北京奥运跟温哥华奥运联系起来,比较容易被加拿大人接受。条幅、T恤、国旗都比较到位。只有一点,我发现到场的学生们貌似没什么热情。唱《手牵手》和《红旗飘飘》的时候,大家比较放不开,手里的国旗也没有挥动起来。主持人也没有提醒一下。

最后,在两个多小时的“赛前热身”之后,不到1公里的长跑终于开始。本来我还打算可能要跑3、4公里,结果还没尽兴,就宣布长跑结束,搞得大家比较一头雾水。

回家之后,编辑视频,照例,以蓝色蒲公英的名义发布,地址:http://www.blue-dv.net/thread-370-1-1.html

阅读全文 »

4月份经历了太多事情。西藏的事情还没平息,马上又发生火炬被攻击。中国留学生竭力保护火炬,却又被说成是不爱国。法国佬欺负中国人,抵制家乐福又被宣传成“暴力行为”。而这一切不和谐的声音,都是从“精英”派那里传出来的。

“精英”派到底想干什么?西藏动乱的时候、火炬遭攻击的时候,“精英”们连屁都不敢放一个。换成中国人当主角了之后,“精英”们马上就跳出来,指责这里不对、那样不行。

留学生出国留学怎么就不对了?之前谁说的“我们要跟国际接轨”?答案是“精英”派说的。之前谁说的“我们要学习国外的先进文化技术”?还是“精英”派说的。结果,我们这帮留学的首先就成了炮灰,被说成是“不爱国”和“背叛国家”。

还有一种狗屁说法叫作“理性”。抵制家乐福的时候,“精英”派们放话让大家“理性”,还举了个“杀敌一千,自伤五百”的例子。我有个问题,一千敌人已经在城下了,我们不牺牲五百士兵,怎样保家卫国?这个道理很简单就用在家乐福事件上。法国佬现在就是在高傲地说:“我打了你们中国人的屁股,你们还得当我的奴才。”然而这些“精英”为了“国际关系”着想,号召大家“理性”地继续当奴才。

回头再来说说“精英”们的“理性”。

像当年中国电信效益不错,寻呼、手机等等增值业务收入不少。然后“精英”们就拿出所谓的美国反托拉斯法把中国电信大卸三块,后来又把仅剩固话业务的中国电信又拆成南北两家,使得中国电信盈利急剧降低。后来又扶植了联通和铁通,美其名曰“竞争”,实际上做了很多重复投资。不过倒还好,这些电信公司都没有亏损。

后来的TD-SCDMA更可气,本来中国在智能天线、波分复用有巨大的优势,结果TD-SCDMA还是被“专家”评为“技术不过关”。更有甚者,公开发表言论说“TD-SCDMA无用”,理由就是“我们可以买来WCDMA”。最近凯明倒掉,“精英”们更是开心。看了好几篇报道,都是火上浇油的。巴不得明天凯明就破产,你们TD-SCDMA没了芯片供应商就算不死也会退出市场。

说到这里我想起了华为。因为触动了“精英”派的神经,华为在一夜间冒出了“第37人跳楼”。后来仔细算算,包括工伤在内(飞机事故),华为一共才有7个人在工作岗位上去世。为啥要这么搞华为?还不是因为华为侵占了北电、朗讯、AT&T和诺基亚的市场。

龙芯的日子也不好过。本来中国有了自己的通用CPU,应该值得庆贺。但龙芯却被“精英”派们说成是“主频不如Intel,所以我们不买”。随后在意法半导体买断了生产销售权之后,“精英”们仍然质疑MIPS指令集的专利。反正就是一点,我就让你们卖不出去。龙梦要出测试版龙芯盒子,在同一天就有一批专家出来说龙芯盒子性价比太低云云,无非是先要把市场打压下来。其实业内的人都知道,仅仅是测试版龙芯盒子里面北桥芯片所用的FPGA就要几千元人民币。再者龙梦要推出的只是个测试版,这帮“精英”们就如此叫嚣,如果真要推出成品,那还不得集体签名杯葛。

这几年一直在提的大飞机工程,也被“精英”们驳得一无是处。“精英”们一直在说,反正我们能买空客、能买波音,我们干什么自己做?这可真是一句白用不厌的“名言”。

再来看看“精英”派都是哪些力量。以下是本人粗略统计。
1. 肢解中国电信的
2. 诬蔑TD-SCDMA的
3. 造谣龙芯的
4. 坚持不做大飞机的
5. 不允许抵制家乐福的
6. 增发平安股票的
7. 说留学生不爱国的
8. 中国受难时屁都不敢放一个的
9. 没事闲的总把“和国际接轨”挂在嘴边的,并以此理由阻止中国工业发展的
10. 《南方都市报》的

总说我们留学生不回国。不是我们不想回,而是“精英”派所创造的环境不容我们回国。比方说,我是搞电脑工程的,回国也就是搞搞龙芯、TD-SCDMA之类的玩意儿。按“精英”派的思路,中国不需要这些东西,那要我们有什么用?总不至于回去摆地摊被城管打吧?更让人寒心的是,“精英”派已经掌控了国内的舆论,如果我们回去真正做点什么实事的话,估计他们会发动群众群起而攻之。在这样一种环境下,我们怎么发展?

我爱中国,因为她是我的祖国。我拥护中国ZF,因为他们让我能吃饱穿暖,甚至小康。我不能容忍的,就是任何人干涉、阻碍中国的发展。所以,我期盼中国ZF扫荡“精英”派,通过舆论控制把中国稳定下来。到那时候,不仅留学生会回国发展,外籍华人也会归国为国家作贡献,甚至外国人也会向往到中国定居。最后,要阐述一个被“精英”派们歪曲利用的事实——中华民族的包容性必将使中国变得更强大!

3.14,四方闹得不亦乐乎。4.13,我们奋起反击。火炬在法国被攻击。全世界华人团结一心。

报复,我们一定要报复!这口恶气在心中已经积攒很久了。于是,大家一起游行,一起谴责,甚至一起抵制家乐福。

前几天一群人在 MSN 上给我留言,让我改成红心 China。其实我改不改没什么必要,我的好友列表里面也没有老外,改了也是给中国人看。但是我改了,“红心 CHINA”。于是,又有一群人不干了,指责我全大写的 CHINA 指的是台毒。我靠,我还是头一次听说 China 和 CHINA 有这么大的区别,就算我 TOEFL 没及格,你们也不用这么寒蝉我吧?

然后,金晶又变成汉奸了。之后就是王1000¥的叛变和狡辩。这世道还真不同寻常,正常人被扣上“汉奸”的帽子,而真正的汉奸却把自己说的比上帝还神圣。其实王小姐有一点说得没错,它只不过是说了一些跟别人不一样的。但是错误的是,它违背了所有中国人的原则。祖国神圣不可分割的原则!1000¥的事就淡忘了吧。这样一个卖国求荣的家伙甚至不值得让我们去鄙视。直接无视!

然后家乐福就出事了。话说着法国佬比中国人还喜欢自 high。他们认为,中国人都热爱法国和法国商品。不可否认的是,中国的“小资”们的确非常向往法国的“浪漫”、法国的大餐和法国的“奢侈品”(其实有一些是当地的不知名品牌)。于是乎,法国佬肆无忌惮,疯狂攻击中国,攻击奥运会。中国人当然不干了,老子就是要面子,你把我面子砸了,我就让你不好过。你不让我办奥运,我就抵制法国货。话说从我记事以来,这还是第一次看见中国人这么有骨气!但是,法国人不管这些,继续自 high,家乐福又要低价倾销,返券促销。

坚固的堡垒总是从内部瓦解。又有一批人出来忽悠说,抵制家乐福是暴力行为,我们还不如等家乐福促销的时候狂买一通,让它倒闭。然后两方中国人又争得不亦乐乎。

我参加爱国游行,但从来不参加这种窝里斗。在我看来,温饱问题比窝里斗要严重得多。但是我又不能表现出来,不然我也会被扣上“汉奸”的帽子。

金晶保护火炬,让全世界看到了中国人的骨气;全世界华人游行,让西方看到了中国人团结;王1000¥叛变,让我们意识到我们的身边就存在着“汉奸”;抵制家乐福,杀鸡儆猴,让外国人知道中国人不可欺。但是,窝里斗究竟算什么呢?对于王小姐,我们要划清界线;但是,窝里斗却要让人选边站。要我说,那些支持抵制的人没有错,我们要联合抵制,让法国人乃至全部对中国不可一世的外国人都知道,中国人团结起来的力量是无穷的。而对于那些反对支持的,那是你们自己的选择,其实用这种方法让家乐福巨额亏损也不是不可以。倒是说,那些中国连锁超市,如世纪联华之类,你们一定要在家乐福低价倾销之后将它送上法庭,告它不正当竞争,顺便还能赚个几万几十万的。

最后,看到了一篇报道,做好本职工作就是最好的爱国。其实,怎样去爱国并无所谓。但是,爱国一定要有原则。这个原则就是,尽自己的最大努力维护国家的利益。如果中国人团结起来,大家都爱国,那么中国赶英超美指日可待,中国也不会处处受气。

P.S.不要说留学就是不爱国。相反,我觉得留学生比国内的人更爱国。因为我们知道,只有祖国强大,我们才值得骄傲,否则,到哪里都是受人欺负。我个人很想为祖国发展作贡献,而且我敢说,绝大多数留学生都是这样想的。

今天在等 regression 的时候,周围的几个人闲来无事,然后就聊起了大学时代的课堂上最经典的问题。

Steve 讲的故事:某一年级环境科学课堂上,一女生提问:“火箭上天的时候会不会把臭氧层弄个洞?”

Victor 讲的故事:某一年级物理课堂上,教授正在用电流原理讲串联电阻所负担的电压跟电阻的大小成正比,一女生提问:“既然电流是从正极流向负极,那么在电流通过一个电阻之后,它怎么知道后面还有一个电阻?”

Mark 讲的故事:当时 Mark 兄正在做电动小车项目,他们的车底下有三个轮子,两个前轮,一个后轮。驱动小车的电机是放在后轮上的。结果项目展出的时候很多人不约而同地问同一个问题:“如果两个前轮上都放上发电机,那么以两个发电机驱动一个电动机,小车不就可以一直跑下去了么?” 后来 Mark 兄实在解释不明白,只好说:“你们的主意不错,以后可以借鉴一下……”

然后我也讲了一个我遇到过的最经典的问题:某微积分课上,老师正在讲积分可以看成是很多矩形面积的加和,每一个矩形的面积可以用长乘以高来计算。某同学提问:“矩形的面积为什么要用长乘以高来计算?”

后来,老婆也给我讲了个经典的:某物理课上,老师讲到如果把铁加热到一定程度,铁也会熔化成液体。某女生提问:“加热的时候要不要放在水里?”

……

P.S. 如果这些能写道 co-op report 里面就好了……

前一阵子看了黄健翔的《像男人一样去战斗》。3·14之后又看到了全球媒体对西藏的不实报道。在这之后,全球的华人都像男人一样,手拉手并肩战斗。今天,4月13日,加拿大最大的华人集会在首都渥太华国会山举办。从主办方获得的统计,今天共有10000(1万)人到场,一起反对媒体(CBC、CTV)对西藏事件的失实报道,同时支持并祝愿北京奥运顺利举行。

本来还想采访一下无耻的加拿大电视台记者。但无奈的是,今天在集会现场转了好几圈都没看到记者。最后朋友告诉我,那些记者根本就没有进现场,而是在另外一个地方采访藏独支持者。于是,我就冲到藏独的现场,打算会会这些记者。但是,最终我还是被加拿大警方给“拿下”,赶了出去。具体视频稍后放出。

今天还是有所收获,至少拍了80分钟的集会实况,回头简单编辑一下放回网上。这次一定要Youtube和土豆双发,否则被Youtube和谐掉的可能性很大。

今天的集会可以说是很成功的,至少比多伦多和温哥华的还要成功。但这次活动还是有些不足,中文太多了,英文翻译也不尽人意,总感觉是一群中国人在自high。互动性也不够,明显感觉老外不是很关心这个活动。

不管怎么说,这次集会让加拿大的中国人都团结在一起。我的邻居、朋友、同学,凡是还在渥太华的,基本上都到场了。大家手拉手,一起唱国歌。第一次感觉到,中国人团结在一起的力量真伟大!

阅读全文 »

早就想写一篇关于80后的文章了,但一直没想好写什么。最近在写剧本的时候,发现自己的写作越来越吃力,这才感觉到,原来80后最致命的,就是文化的缺失。

回头想想,的确自己的文学功底很差,可以说基本上就是没有。经典小说没读过,历史书籍没动过,唯一摸过的,除了课本以外大概也就只有教学参考书了。虽然还没到提笔忘字的地步,但不知道什么叫做华丽的词藻。而且每一次看问题的时候都很难抓到重点,唯一能想到的就是无产阶级的革命精神。

我们需要革命精神么?我不知道。但我知道这种文化的缺失真的很糟糕。

破四旧的时候,我们扔掉了对传统的传承;文革的时候,我们放弃了对长辈的尊重;改革开放之后,我们又在金钱前面丧失了对道德的矜持;在“学习外国先进文化技术”的口号下,我们几乎完全摒弃了中华的文明。

我说错了么?或许吧。

记得小学的时候,老师教育我们不能看小说,管那东西叫“精神鸦片”。如果要只有这样也就算了。语文课上,所有的“段意”和“中心思想”必须跟教学参考书一字不差,而且早自习晚自习的时候要点名让某某某站起来背诵。如果要只有这样也就那么回事了。每次写作文的时候,自己写的作文仅仅能拿90分,而照作文选抄出来的却能拿100分。这样的话……

小学的时候,上课要背手,举手姿势要端正。被老师训了还要说“谢谢老师”。每一次领导来检查之前都要大扫除。动不动就找家长,要不然就写上千字的“说明书”(说明自己犯的错误)。每次活动的时候家长也不能闲着,作了贡献还不能收钱……

从小学开始,我就学到形式主义、八股文和自卑。而且还有一点,最重要的一点,不能承担任何责任,否则的话让你吃不了兜着走(别人的责任都让一个人承担)。于是,在我自己身上表现出来就是,懒惰、自私、不负责任、好面子、自卑(崇洋媚外)、看不起长辈。

出国之后,这些从小学就习以为常的性格让我吃了很多苦头,也因此丢失了很多朋友。下定决心,改掉了很多坏习惯,但是文化的素养还是不尽人意。毕竟缺失了20年的文化,想补回来不是那么容易的。

这一阵子在网上所谓的“粪青”也越来越多,而且大多数都张口就问候别人全家,一点自己的主见都没有,而且这帮人都不署名。不是他们不署名,而是不敢署名。互联网的匿名性把长期以来畸形的文化全部都暴露出来了。套用互联网最经典的那句话:“在网上,没人知道你是条狗。”

文化的复兴,80后是无能为力了。对于我自身来讲,还是先完整的看一遍《三国演义》再说吧。

闲来无事,打算上几个 Live Space 和 Qzone 打发一下时间。打开 QQ,看到 315 个好友。Oh, my god! MSN 上也有 179 个好友。我开始问我自己一个问题,你究竟上哪搞了这么多的人?

这已经是历史问题了……

我的 MSN 前一阵运行不正常的时候,我已经清理过一次好友。现在剩下的 179 人中,有 56 个是连我自己都不知道身份的“网友”。而 QQ 中这个数字更多,达到 118 个。除去那些不认识的, MSN 中的好友很多都是出国之后的同学,分组也都注明了 CIC、UO、Carleton;QQ 中的好友很多都是从附中论坛认识的。那些不认识的,貌似是当年游荡在各动漫论坛的后遗症。

那些所谓的“网友”最让人头疼。删掉的话,没准是以前关系不错的朋友或同学,只不过改了个名字我不认识就放到“网友”里面了。不删的话,实在是浪费带宽、浪费内存、浪费资源。

实在没有办法,把“网友”组折叠起来,闭上眼睛当作没看见……

在国内可以浏览国外关于西藏的网站,但是从美国/加拿大无法查看中国关于西藏的网站。

为什么?看 CNN 就知道了。某些没头脑的人再一次华丽的被骗!

做人不能太 CNN!

(声明:本文仅用来阐述事实)


Update(2008-03-27 01:00 EST):目前中国的网站基本上都属于不可访问状态。

Update(2008-03-27 12:45 EST):I can't read any Tibet article on Chinese websites through company network, i.e. Canada banned those links!

Update(2008-03-28 01:00 EST):一部分中国网站恢复正常,另一部分无法访问。网易新闻、新浪新闻、搜狐新闻、QQ 新闻均只能打开首页而无法查看内容。新浪博客基本无法访问。cnBeta 间歇性无法访问。百度 MP3 间歇性无法访问。以上网站用美国网页代理访问正常。(也就是说,基本排除中美的问题)太平洋动漫竟然访问速度很快……无语中……什么世道!上个中国网站还要用美国代理!

Update(2008-03-28 20:00 EST):今天终于可以在公司正常浏览网易新闻和 QQ 新闻了,家里的网络也恢复了。但是只能看文字和图片,视频全部被水产。

Update(2008-03-28 22:00 EST):I like this guy, http://kadfly.blogspot.com/.

终于下定决心写点什么了。这几天奋笔疾书(“奋键疾输”才对)写完了前三章内容,看着1/5的完成度自己很有成就感。

长这么大第一次写一口气写这么多方块字啊。(中国人的悲哀 = =)

联系了几个 SMC 的工作人员,都比较有兴趣回来继续做新片。呵呵,这意思就是说,编剧老人家,你就赶快把剧本写出来吧,大家都等着呢。

拜托大家,我知道大家等着着急,急也要慢慢来啊,俗话说慢工出细活。去年的错误今年不会再犯,但是这个预告还是个没有准头的预告。

HDAV 计划搁置,IS 准备中。5月底第一稿,8月份开机。明年8月份全片完成。人员安排:本人编剧,Rick 导演。照例,蓝色蒲公英出品。预告完毕。

天神星士兵甲:这是什么?士兵乙:是黑魔王的说明书!

看完这段我已经笑得喘不过气了!


牛奶@咖啡又出新歌了。下来听了听,比较喜欢《快乐星猫》。闲来上网搜搜,原来国内又出了个动画片,叫做《快乐星猫》。而《快乐星猫》就是《快乐星猫》的片头曲(@ @)。反正无聊,从官网下了几集看看。

貌似官方的定位是 5~12 岁之间观看,12+有爱为可接受候补。估计我已经过了有爱的年龄,怎么看怎么觉得搞笑。

杂乱的音效,十分不标准的台普配音(据说某位主角是刘纯燕配的),唯独能一好遮百丑的也就只有 3D 效果了。这次的 3D 的确做得不错,剧情也控制在 5~12 可接受范围之内,但是这个音效咋就这么差呢?貌似我还听见了星际争霸神族选定农民时的声音(估计是我幻听了)。一开始的配音还以为是《鲨鱼黑帮》,大力猫的出现我给当成了《猫的报恩》(没办法,学得太像了)。还有那个“欧应万”,我怎么听都像是“All-in-one”。(难道这就是传说中的九十八和1?抑或是“Owing-won”?)

星猫为什么叫星猫,估计因为制作单位叫 Star Q 吧。创意没问题,策划没问题,就是制作的时候怎么说也要注意一些吧。比如说片头,一开始的剪辑根本对不上片头曲,后半部分还行。人物表情和动作都做得不错,但是配音总要标准普通话吧,拿个四川的台普出来,这不是误导少年儿童么。情节这样就可以了,正义战胜邪恶,天经地义,千万不要搞什么革命出来啊。话说这次周边很成功,据说毛绒玩具已经热卖了。音像制品啥的就不要搞了吧,如果想搞的话多弄点广播剧出来还差不多。

呵呵,说了这么多乱七八糟的,该总结一下了。总而言之,这次的制作综合起来还不错,但绝对不能成为“巨作”。国产动画还有很大的成长空间。想要把动画产业做成熟,慢慢努力吧。(表说我站着说话不腰疼,这几天某人正在连续熬夜写剧本中)

最后,要说回牛奶@咖啡了。个人觉得《快乐星猫》这首歌十分适合 Kiki 的路线,整张专辑里只有这首歌把 Kiki 的声线完全表达出来了。(旁边那位表丢砖~)当然,从《燃烧吧!小宇宙》开始,本人就觉得 Kiki 适合走可爱的小女生路线。千万不要学范晓萱和金莎,非要“变成熟”。

力挺牛奶@咖啡。快乐星猫,燃烧吧!小宇宙!

今天闲来无聊,上 Google 搜了一下自己的名字,竟然有 5030 条。翻了 10 页,只找到一个关于 snailium 的,而且还是别人的转载。

这么多跟我重名的,竟然一半以上都是女的,89年的。还有一个很有名的貌似是沈阳新东方的老师。

郁闷。看来我只是大海中的一粒沙(不要提醒我,我知道我说错了)。

不过有一点值得欣慰的是,前十页里面没有一条是通缉令(什么思想 = =)。

我还是改搜 snailium 吧……

P.S.倒是搜我弟弟名字的时候,在第 10 页看到他本人了。果然我已经算火星了。

100 系列(信息)
100 Continue(客户端可以继续发送未发完的请求)
101 Switch Protocals(服务端/客户端所使用的协议不一致)
200 系列(成功)
200 OK(成功)
201 Created(已按请求创建新资源)
202 Accepted(请求已被接受)
203 Non-Authoritative Information(从第三方获取的信息)
204 No Content(服务端没有可返回的数据)
205 Reset Content(客户端需重置请求内容)
206 Partial Content(服务端返回部分数据)
300 系列(重定向)
300 Multiple Choices(多个资源可用)
301 Moved Permanently(资源已被移动)
302 Found(临时在其他地址找到相应资源)
303 See Other(在其他地址找到相应资源)
304 Not Modified
305 Use Proxy
306 (Unused)
307 Temporary Redirect
400 系列(错误)
400 Bad Request
401 Unauthorized
402 Payment Required
403 Forbidden
404 Not Found
405 Method Not Allowed
406 Not Acceptable
407 Proxy Authentication Required
408 Request Timeout
409 Conflict
410 Gone
411 Length Required
412 Precondition Failed
413 Request Entity Too Large
414 Request-URI Too Long
415 Unsupported Media Type
416 Requested Range Not Satisfiable
417 Expectation Failed
500 系列(服务器错误)
500 Server Internal Error
501 Not Implemented
502 Bad Gateway
503 Service Unavailable
504 Gateway Timeout
505 HTTP Version Not Supported


参考资料:http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html

开始还满怀信心的打算拿 Perl 写一个文件上传管理程序,可是在写完了登陆部分之后就泄气了。原因很简单,服务器不支持 CGI::Session,而我又不想花时间去研究 Perl Cookie。

[code lang="perl" title="login.cgi"]
#!/usr/bin/perl -w
# ***********************************************
# * Handle User Login *
# ***********************************************
use strict;

use DBI;
#use CGI::Session;
use CGI;
use Digest::MD5 qw(md5_hex);

# Get the CGI form data
my $cgi = new CGI;
# Fetch login username and password
my $user_name = $cgi->param('username');
my $user_pass = $cgi->param('password');
$user_name =~ s/(?:\012\015|\012|\015)//g;
$user_pass =~ s/(?:\012\015|\012|\015)//g;
$user_pass = md5_hex($user_pass);
my $user_login = 0

require "config.pm"

# Import Database configuration
our $db_host;
our $db_use;
our $db_user;
our $db_pass;
our $db_table;

# Connect to database
my $db_conn = DBI->connect("DBI:mysql:database=$db_use;host=$db_host","$db_user","$db_pass", {'RaiseError' => 1});
print "Location: /error-503\n\n" unless $db_conn;

# Check if we have such password in database
my $sql = $db_conn->prepare("SELECT username FROM `$db_table` WHERE user_password='$user_pass'");
$sql->execute() or print "Location: /error-503\n\n";

# Process query result
while(my @result = $sql->fetchrow_array()) {
if($user_name eq $result[0]) {
# Here we go. A user is found with the same username and password.
$user_login = 1
last;
}
}

# Disconnect from database
$db_conn->disconnect();

# Not pass user check? Kick it out!
print "Location: /error-401\n\n" unless $user_login;

# User check successful! Log it in!
print "Content-type: text/plain\n\nYes !";

exit(0);
[/code]

其中登陆部分采用了《突发奇想,小改动解决安全问题》其中的方法。

看来要重操 PHP 旧业了……

这几天一直在琢磨用 Perl CGI 架设网站,正好在网上看到了一篇关于 CGI 安全的文章,里面提到了数据库注入和远程执行等等安全问题。也就是说,比较安全的方法是屏蔽一系列特殊字符(比如说,管道“|”、引号“" '”、斜线“/”等等)。今天偶然间突发奇想,如果换一种思路,不需要过滤特殊字符也能做到脚本安全。

具体方法如下。(假设:用户名与密码存在 user 表中,密码用 md5 加密)

[code lang="php" title="Pseudo-code"]
$username = http_get("username"); // Get username from browser
$password = http_get("password"); // Get password from browser

$password = md5($password); // Make md5 hash for password

$mysql->connect(); // Connect to database
// Get all users that have this password

$rows = $mysql->query("SELECT username FROM `user` WHERE password='$password'");

// If no one match, must be username/password problem
while($r = $rows->next()) {
if($r->username == $username) login_success();
}
die("Username/password incorrect!");
[/code]

由于 md5 hash 不包括任何特殊字符,所以这段脚本对数据库无害。

优点总结:由于传递给数据库的字符串当中不包括任何特殊字符,因此没有任何注入危险。

缺点总结:一般来说,用户数据表都是拿用户名做索引,所以按密码查询效率相对低一些。但是考虑到用户登录的频繁程度,这个缺点就无所谓了。

152_school_days_preview.jpg

终于看完了第12集。整个片子的压抑气氛跟《Elfan Lied》相比有过之而无不及。从11集开始的气氛骤降压得人喘不过气,12集的结局更是雪上加霜。如果我的内心像世界一样,12集过后我也会拿起刀。

回头重观整部动画,世界在我心中的印象大大改变。如果说在片子开头我喜欢的是柔弱的言叶(事实上在出国前的确是这样),那么到最后,占据着内心的却是世界(就像现在这样)。

回想2004年热火朝天的《君が望む永遠》,当时我还是遥的坚定拥护者,水月结局曾让我失落过一个时间。现在看看,比起这会儿把三个 Bad Ending 捏在一起,至少那会儿还是个 Good Ending。呵呵,如果真的要个 Good Ending 的话,恐怕就是刹那或者光的天下了。

总之,在这穷乡僻壤,很久没见到这么震撼人心的片子了(虽然是动画)。就让我跟世界同在吧,我才不要人渣诚的终结……

153_school-days-ending-theme.jpg

Linux BusyBox 果真是个强大的东西。只要想做,什么都能做出来。正好最近正愁 My Book 的服务总是莫名其妙的挂掉,搞的在单位都无法访问文件。操起简单的 vi,开始制作 Bash Watchdog。(之所以没用 Perl,是考虑到 Perl 在预编译的时候比较耗费系统资源)

经过三个小时的现学现卖,雏形版的 Bash Watchdog - swatchdog 出炉。

[code lang="bash" title="/usr/sbin/swatchdog"]
#! /bin/bash
#
# Watchdog for system service
#

while [ 0 ]
do
for PROC
do
PID=`ps -aef | grep -v grep | grep -v swatchdog | grep "$PROC"`
if [ -z "$PID" ] ; then
TIME=`date "+%Y-%m-%d %H:%M:%S %Z"`
echo "[$TIME] $PROC is not found, rebooting..." >> /etc/swatchdog/reboot.log
reboot
exit 1;
fi
done
sleep 600
done

exit 0;
[/code]

原理很简单,无限循环,检查命令行传入的进程是否存在。如果不存在则重启。

使用也很简单。

[code lang="bash"]
swatchdog cvm transmission amuled
[/code]

自动侦测 cvm(mionet)、transmission 和 amuled。

意外的惊喜!感谢实习单位里的一位姐姐,每个人都拿到了一套 Tundra 的芯片。当然,这些芯片基本上都是 RMA 回来的,已经不能工作了。但至少可以作为个人收藏(毕竟是我的第一份工作)。

废话少说,上照片!

151_dsc00047.jpg

从上到下依次是:
Tsi106, Tsi340, Tsi350, Tsi574, Tsi578
Tsi107, Tsi400, QSpan, Tsi576, Tsi564
Tsi108, Tsi109, 未知芯片(应该是Tsi107), Tsi107芯片基板

OK, for some reasons, I write this article in English. I bet you Chinese can understand it.

The problem was simple. Globat's servers got down on Feb. 21, because of switch problem. Well, that was not the critical impact.

On Feb 23 afternoon, I found my database got problem, probably database crashed. I talked to their technical support. They told me they were working on it, and needed sometime. I thought it was acceptable. But then, things got much worse.

On Feb 23 evening, the database was still down. Technical support suggested me to issue a ticket. I did. Then, I still hoped it would be better.

On Feb 23 night, I got the first (and the only) response to that ticket. It was said they were taking care my issue.

On Feb 24, they told me they had fixed the problem. But again, my database was still reporting errors. Then, they changed to another word, saying they were trying to fix the problem.

On Feb 25, the problem was still hanging my websites. They were still saying to fix it.

On Feb 26, they told me, hopefully, they would fix the problem by both recovering from previous backup and fixing existing database. I got confused and totally lost my patience.

On Feb 27, I tried use phpMyAdmin to repair tables, and got all tables recovered except one of them. Finally, I got a happy ending by myself. Definitely, they were still "fixing the problem".

As of that time, all my websites have been down for almost a week. Those websites include, snailium.net, blue-dv.net and sdfzlt.cn.

I tried to search "Globat problems" in Google. It seems Globat has problem to deal with customers frequently. I have no more passion on a troublesome web server. Therefore, I temporarily moved to Lunarpages, under xiaoqiangnet.com.

150_snailium_net_down.jpg

Further, I will shut down all my websites on Globat and move them all to a new server, although they are still fixing the problem.

Here is HOWTO add nethostfs on Western Digital My Book World Edition. For Chinese version, visit here(中文版).

Prerequisite: Enable SSH on My Book.

Step 1. Download nethostfs v1.5 source code, unpack and compile.

[code lang="bash"]
wget http://www.snailium.net/mbwe/nethostfs15src.tar.gz
tar -xzvf nethostfs15src.tar.gz
cd nethostfs15src
make
cp nethostfs /usr/sbin
chmod 755 /usr/sbin/nethostfs
chown root:root /usr/sbin/nethostfs
[/code]

Step 2. Create shared folder /PSP/ through My Book Storage Manager.

Step 3. Create service script nethostfs under /etc/init.d/.

[code lang="bash" title="/etc/init.d/nethostfs"]
#!/bin/sh
#
# Starts or stops the nethostfs for remote PSP access.

PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
NAME="nethostfs"
DESC="Remote PSP access"

case "$1" in
start)
echo -n "Starting $DESC: $NAME"
nice -n 10 nethostfs /shares/internal/PSP &
echo "..."
;;
stop)
echo -n "Stopping $DESC: $NAME"
killall nethostfs
echo "."
;;
*)
N=/etc/init.d/$NAME
echo "Usage: $N {start|stop}" >&2
exit 2
esac

exit 0
[/code]

Step 4. Make start/stop link under /etc/init.d/.

[code lang="bash"]
cd /etc/init.d/
ln -s /etc/init.d/nethostfs S91nethostfs
ln -s /etc/init.d/nethostfs K09nethostfs
[/code]

Step 5. Reboot My Book World Edition


Note 1 - nice -n 10 is used in service script to adjust process priorities, in order to avoid nethostfs consumes too much CPU resource.
Note 2 - This works perfect for iRshell, as well as PPA (which uses iRshell's WiFi code)

Western Digital My Book 所使用的 BusyBox 可塑性还是很高的。

想到正好在用 PPA 在 PSP 上通过 WiFi 看电影,干脆把 nethostfs 服务也集成到 My Book 里面好了。(English Version

前期准备:在 My Book 上加装 SSH 服务

第一步:按照下面的方法下载 nethostfs v1.5 源代码,解包,编译。

[code lang="bash"]
wget http://www.snailium.net/mbwe/nethostfs15src.tar.gz
tar -xzvf nethostfs15src.tar.gz
cd nethostfs15src
make
cp nethostfs /usr/sbin
chmod 755 /usr/sbin/nethostfs
chown root:root /usr/sbin/nethostfs
[/code]

第二步:通过 My Book 共享储存管理器建立 PSP 共享文件夹。

第三步:在 /etc/init.d/ 下建立 nethostfs 服务脚本。

[code lang="bash" title="/etc/init.d/nethostfs"]
#!/bin/sh
#
# Starts or stops the nethostfs for remote PSP access.

PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
NAME="nethostfs"
DESC="Remote PSP access"

case "$1" in
start)
echo -n "Starting $DESC: $NAME"
nice -n 10 nethostfs /shares/internal/PSP &
echo "..."
;;
stop)
echo -n "Stopping $DESC: $NAME"
killall nethostfs
echo "."
;;
*)
N=/etc/init.d/$NAME
echo "Usage: $N {start|stop}" >&2
exit 2
esac

exit 0
[/code]

第四步:在 /etc/init.d/ 下建立相关启动/关闭服务链接。

[code lang="bash"]
cd /etc/init.d/
ln -s /etc/init.d/nethostfs S91nethostfs
ln -s /etc/init.d/nethostfs K09nethostfs
[/code]

第五步:重启 My Book。


注意 1:在服务脚本中,使用了 nice -n 10 调整进程的优先级,防止 nethostfs 占用过多资源。
注意 2:此方法也适用于 iRshell。(PPA 的 WiFi 部分使用的是 iRshell 的源代码)