Yu's profile无题PhotosBlogLists Tools Help

无题

As Title
May 18

恭喜memcpy升天

据说在伟大的天朝,总有一帮宅心仁厚的公仆们害怕平常百姓不明是非,于是限定出这个那个令,发明出这个那个墙,以便帮助百姓们能生活的更和谐。与此同时,在同样伟大的MicroSoft王朝,同样有一帮宅心仁厚的专家们害怕平常程序员不看MSDN,于是给出这个警告,放出那个错误,以便帮助程序员能写出更和谐的程序……
 
这,就是著名的SDL名单(Security Development Lifecycle)。有幸被列于该名单之上的函数,在MS看来都属于危险分子,应该被积极地予以除掉,改用更为“安全”的函数。里面的详细成员请参看MSDN
 
回想一下,C语言中著名的不安全分子中strcpy应该有一席之地吧。这个strcpy(char *dst, const char *src),由于没有对src进行检查的缺点,很快就臭名昭著了。然后就是替代者strncpy(char *dst, const char *src, size_t count),至少可以保证不管src指针指向的空间数据如何,copy动作总是可以停下来的。然而在负责任的MS看来,单单对src判断还不够,所以又推出strcpy_s(char *dst, size_t size, const char *src)strncpy_s(char *dst, size_t size, const char *src, size_t count)。这样一来,有了两个size来表示两块内存的区域的大小,应该不会再出现overflow了,可谓万无一失。
 
有关strcpy的问题,其实在同谭老师的《C程序设计》并称中国C/C++程序员启蒙读物双杰的林博士的《C/C++高质量编程指南》中曾经深刻的提到,说写一个非常严格的strcpy是非常不容易的事情。关于这点,我是从惊叹慢慢到困惑。最先的惊叹在于里面很多细节,特别关于内存安全性的东西我是之前没有考虑过的。而后来的困惑在于,慢慢的我开始明白了任何的设计都是来源于需求,如果一定要在C里用安全的strcpy,那么为啥不用C++的operator=?尽管strcpy很不安全,但是如果程序员已经在调用前,确认了dst的长度,确认了src的内容,那么为什么不信任程序员,让简洁高效率的strcpy去完成这个复制任务呢~
 
然而,最新的消息,memcpy函数终于也迈出了重要的一步,成为SDL的一员了。显然,在MS看来,C语言那种信任程序员的传统,是十分不利于整个大项目的,是非常容易引起Bug的。具体Bug列表在那篇文章中有一堆,都是有关memcpy使用的时候dest内存的空间不够从而导致overflow破坏了内存。当然,类似memcpy(dst, src, min(sizeof(dst),len))这样的做法应该也可以解决掉大部分问题,但是总不如明确出一个size来的扎眼。繁琐的语法从客观上防止了程序员随心所欲引起的bug,应该还是算进步吧……只是,我想对于很多嵌入式程序员来说,被逼着用这些繁琐的函数,执行的效率有折扣不说,单单从心里就会发出感叹,原来自己是那么不被信任啊-_-||
 
不过,负责任的说,在目前我们自己的一亩三分地中,memcpy依然安全,情绪稳定大笑
May 04

迷茫的90周年

前几天《百家讲坛》请了王立群教授和草根学者程步一起聊秦始皇,内容还是挺好玩的。不过和他们讨论秦始皇的文治武功相比,给我印象最深的是王老师在告诉大家如何读历史。王老师的大致思想就是,所有的历史,都历经四个阶段:历史事件→历史的记录→记录的历史→历史的解读。最早的历史是真实发生的历史事件,其后是经由各种途径保留下来的第一手史料,再后是经过岁月的洗礼留下的史书,而最终在所有的读者心中留下的是看这些史书后产生的感悟。也因此,在读历史的时候也就必须带着思考,看到的历史,它的记录者的立场是什么?史料有没有其它的佐证?是否存在推测臆断?等等。挺久以前,我也在另外的一本书上看到,关于历史的教学绝对不应该是死记硬背具体的年代事件等等,而是要教会学生如何分析史料,得出自己的结论。所谓的兼听偏听之辩,千年前中国的古人就已经深刻认识到了,不过这点上一直是知易行难了。
再往前几个礼拜,是看到李辉老师的从多方面接近历史真相一文,基本上就是王教授的意思展开讨论了一下,并且举出了一些实例。说起来,耳边又响起来刘纪同播讲的《明朝那些事儿》了。大意是说,成为最牛的人其实也不难,只要等到其他更牛的人都死光了就行了……比如说朱棣,军事才能也就是准一流水准吧,可是谁让超一流的徐达常遇春,一流的傅友德蓝玉他们都死光了呢。所以说,如果生于上个世纪初,哪怕只是听过胡适先生的讲座,和鲁迅先生打个招呼,如果熬到现在还活着那也能混上国学大师了……具体影射谁大家都清楚微笑
因此,五四运动走到90周年的时候,又开始冒出来很多的解读和思考,各种声音都有。当然,每个人都有权利去选择一些史料来解读,然后得到自己的结论。根据目前应该可信的史料,五四运动前后,特别是二十世纪二三十年代,是一个很有意思的时期。一方面,经济飞速发展,民营资本大兴其道,各种新思潮层出不穷;另一方面,政府的腐败无能,重工业的缺失,包身工的血泪……如果读史的话,会发现这和晚明时期是很类似的。对于现代人来说,怀念1930s的夜上海和推崇晚明那些奢华精美的手工艺品古董是一个道理,这都是政府控制力不足下社会自然演化出现的一种景象。如果放到今天来看,大概会有些人对其心向往之,认为那是一个平等自由的社会,是冒险家的乐园。如果在以前,还会说那里有中国版的“美国梦”,当然,现在同样的情形下大多会斥责政府监管不利了。
不管如何,不可否认的是今天对于90年前的那段时期的思考已经越来越开放,所谓的文化生态恢复。只要心中还有一些青年热情的,总归是要多少参与一些这样的思考吧。历史的推动最终还是要靠普通的国民,尤其是国民中最有热情的青年~
 
April 26

《南京!南京!》是历史还是宣传

开门见山,个人观点:《南京!南京!》的宣传大于历史。

发生在六七十年前的那段历史,身为中国人,真正了解多少呢?其实历史本来就是一团迷雾,后人只能尽力的去揣测,而永远不可能真实的重现……抗日战争的历史尤然。借用《一寸河山一寸血》里面的叙述(大意):共军拔高自己矮化国军嘲笑日军,国军标榜自己吹捧日军蔑视共军,日军美化自己诋毁国军无视共军,凡此种种,造成最终的史料总是有出入。尽管《一寸河山一寸血》总的来说是站在国军立场并且也有偏颇之处,但是至少这个关于抗日战争史料的描述相信大多数人都是同意的吧。

回到南京。重现那场人类耻辱的一幕,资料何在?人证包括南京大屠杀的平民幸存者,国军士兵,日军士兵和他们的回忆录日记等等;物证包括南京发现的万人坑,还有当时的照片和新闻报道等等。在南京的南京大屠杀死难同胞纪念馆里有很多当时留下的资料,这些也大都是载入中国大陆教科书的内容。但是,死亡的数字,幸存者的控诉,难道这些就是全部?随着进入二十一世纪后国共两党的关系好转,重现国军在整个抗日战争的贡献在中国大陆得到越来越多的官方露面机会。如果参照整个抗日战争的历史,那么南京沦陷之后的那段时间,一定发生过一些尚不为公众所知的事。而这就是陆川的想法,他想表达的无外乎两点,一是日本人是可敬可怕的对手;二是中国人一直在抵抗。

先说一。从整个电影来看,很多人批评影片有美化日军的倾向,我同意。里面多次长篇累牍的描写日军在占领南京城后的喜悦,毁孙中山像,休息唱歌,到最后的祭祀。这些镜头让人感到无尽的压抑,是一种近似绝望的恐怖。相比起来,大规模的屠杀战俘和平民的镜头则显得突厄。江边扫射,活埋,仓库焚烧,一个个场景都是死静的。作为主角的角川,一个还留有一点人性的日本兵,在历史中是否存在?有可能。但这样的人物原型是不可能通过中国平民和士兵的回忆录塑造出来的,只能是由日军士兵的日记回忆录中找出。那么,是否可信?我的结论是,作为一个象征符号可以。也就是,角川的每一个方面或许都存在,比如存在有放过中国人的日本兵,也存在有受不了压力自杀的日本兵,但是综合起来的角川这个人,不可能存在。陆川只是通过这么一个符号,释放出一种想法,号召中国人重新思考南京大屠杀,也重新思考日本人。

其实我认为影片美化日军的另外一个原因是,陆川在一个重要的事件“百人斩”上选择性失明了。这篇关于两个日本军官比赛杀中国人的报道最早出自12月13日的日本的新闻,但是从1967年开始日本就有人在为此翻案,至2000年,认为这件事情是虚构的势力占了上风。实际上,这种事情正是所谓的死无对证,中国人不可能记录下来,因为都被杀了。战争时期,通过一种夸大或虚假的宣传提升士气,这个或许有;但是在这件事情上,正所谓无风不起浪,即便野田向井的这件是假的,也少不了另外的杀人事件作为原型。如果要说可能性,那么比赛杀人的可能性远高于角川这个人出现的可能性。陆川要表现一个可怕的,军纪严明的侵略者,其实不用隐讳其中的败类分子的兽行。况且,根据很多老兵的回忆录,战争特别是持续的战争后,出现疯狂的人是数不胜数的。

然后是二。要说的是,这是我赞同《南京!南京!》是一部好电影的主要原因。我想,陆川通过小豆子,还有唐先生的遗腹子传递了一个信息:“活下去,活的比敌人更久,也是一种抵抗。”而通过江“小姐”则传递了另一个信息:“让我的同伴活下去,也是一种抵抗。”唐和江都是有着一种市井心态的人,他们并没有什么伟大的道德情操,但是在最后的选择上,他们在按自己的良心行事。其实,这样的人很真实,我相信当时是有这种人,而中国也是靠千千万万这样普通的市侩的小人物的韧性,才能延续下来,几千年从未间断。特别是唐先生,看到途中时,我非常痛恨这个汉奸,总希望他恶人有恶报,但是最后他把生的希望让给一名军医,自己笑嘻嘻的上刑场的时候,反而生出了一顿迷茫。所谓的人都是复杂的,大抵如此吧。

还有陆剑雄,“带着尊严赴死,也是一种抵抗。”这个想法和以前是比较类似的,但是影片给了陆剑雄们的怒吼一个沉默的长背景:之前的屠杀。如果说之前的大屠杀中看到的只有呆板的羔羊的话,从陆剑雄死前起,尊严两个字开始了。影片扫过他们的时候,有冷静,冷酷,甚至麻木,但是没有恐惧。据幸存者回忆,当时很多人一直到死都在高喊着口号,保持着在那种情况下的最后一点尊严。在战争中,乞求敌人的怜悯无疑是太过天真的事情,唯有保持着尊严的抗争,才能最后胜利。陆带着尊严而死,唐和江也是,小豆子则带着尊严活下去,等等。

 

废话说了好多,总结开始了。历史上的南京保卫战是一笔糊涂账,简单一句话说就是国军指挥无能。南京失陷后大批国军士兵藏身民间躲避,是日军屠杀的一个借口。然而这并不是说国军士兵应该激战到最后,不该藏身民间拖累平民。因为侵略者要找借口总能找到的,指责顺子这样的国军士兵并无意义。南京大屠杀是很多原因造成的,最主要的是攻克当时中国首都带给日本的疯狂,这种疯狂的继续就是在南京城的奸淫掳掠。如果从这个角度思考,顺子呼喊姜老师救命的行为,唐先生告密难民营藏伤兵的行为,都显得不那么重要了。《南京!南京!》一半是历史,因为它呈现出了很多真实残酷的事实;但是《南京!南京!》整个是宣传,因为它更多的是想告诉目前的国人,当初的战争是什么样子,特别是一些原来教科书忽视的部分是什么样子,为此甚至不惜在有些地方避重就轻,矫枉过正。我不喜欢这种矫枉过正,但是或许有时候,这是一种必要的吧……毕竟,中国的民间思潮里,仇日和蔑日的情绪是主流。而如果不能客观的正视历史,那和日本那些跳梁的右翼份子又有何区别?

 

%% 补记一下《南京!南京!》引起的一些讨论。网上的发言很多,有些人喜欢用五十年代末的饥荒,以及十年动乱来此类比。凡是反驳者,大抵都说这是内政,和外族入侵不一样。但是如果思考一下,就会发现逻辑有问题,难道日本人杀中国人可恨,一部分中国人杀另一部分中国人就可以理解?从人性的角度上,这些都是惨剧。有些人类比说这好比自家孩子自己打得外人打不得,这就更没道理了,因为这种说法活生生的把大部分中国老百姓变成了一部分中国人的私有财产。所以,还是就事论事,一部分中国人曾经做了错事,伤害了中国老百姓,他们也应该受到谴责;但是这并不影响我们谴责日本人曾经做了错事。只是,这种谴责不要升华到全面反日,因为按照逻辑,这将会导致全面反中。很多事情,过过嘴瘾也就是了,心中有数就行。

April 20

某old笑话……

IBM:9.4美元~
SUN:俺不是那种人……
Oracle:9.5美元~
SUN:俺是你的人……
April 07

体检的故事

公司入职要体检,必须是二级以上公立医院,虽然听上去就跟过去买东西一定要去国营商店一样,不过规定只能遵守了。查了查,发现距离住的地方比较近的就是曙〇医院和仁〇医院……考虑到当年上学时遇到的校医院兽医,这次还是选择了〇大附属仁〇医院吧!

于是,今天早上8点多点赶到医院,踏入门诊大门的一刻,就看到里面拥着乌泱乌泱的人,气魄那个宏大,第一个感觉是清明节三天假期积攒的刚需病人都释放出来了。不过既然来了就好好检吧,问了问咨询的,说直接上三楼304的门诊办公室。于是我穿过大厅找到安全出口踏楼梯而上,到了三楼一看A302,高兴之。刚想在附近找304,发现边上一个牌子贴了个304朝里走。接下来就是穿过2道门,再右拐了个弯,一直通过一条走廊,再左拐走到底……就是了。

纯洁的我:“304难道不在302的边上么?”
理智的我:“谁告诉你304就在302的边上?这里是C座304!”

找到门诊办公室后,就是简单的填表,然后拿着一堆单子去一楼付账,就准备开查了。可是啊,每个地方都有无数人,这要是排队,不知道到啥时候才能轮到我,再说我也不要求啥专家门诊啊。不过这个时候也只能硬着头皮一项项来了。看看项目,打算先从外科开始,于是找到了在安排病人的医生,刚说:“我是来体检的……”,想问应该在哪个诊疗室外排队。结果话还没完,她就直接招呼我去里面一个诊疗室,让我跟着最后一个。几分钟后轮到我,医生连问三个问题:“是入职体检?”“身高?”“体重?”,然后大笔一挥,敲章,一分钟搞定。

哇,我原来以为只有外高桥保健中心玩这套,原来三甲医院也有类似的流程。于是接下来的事情就轻车熟路了。“我做体检……”“左眼视力?右眼视力?”五官科搞定。“我做体检……”“内脏没问题吧?”内科搞定。进展神速啊。

不过也有进展缓慢的,比如心电图,X光,这些都没法插队啦,只能跟着别人后面慢慢排。说起来也真是郁闷,还是那句话,不知道为什么医院里面到处都是人,每个科室前面都是一堆人,所有的等待座位都坐满了人,在我上下几层楼的穿梭中,还多次从急诊病房边上的狭窄小道经过,因为道边是躺在病床上的人。如此多的人,再挤在不大的医院里,空气也不算特别流通,估计没病也能整出病来了……

其实我对自己的身体素质还是挺有自信的,最多也就是超重而已。不过这次查内科时量血压,可能之前上下几层的跑,竟然量出来我舒张压偏高,附带心跳每分钟88下。于是我在做心电图前耐心等待,好生调息了一下,结果测出来心动过缓,每分钟57下……不知道这样的结果这算啥玩艺啊。

利用等待X光的时间下去抽完了血,然后回来做了胸透,终于到最后一项尿常规了。此时我惊喜地发现了医院的天才设计,送检窗口和厕所之间共计有一个满座长厅,一个出入大门,一个人来人往的楼梯口,一个卖发糕包子的早餐车……呃,于是我只能小心翼翼的行进,在汹涌的人潮中完好的把样品护送到了目的地。

最终,历时两个多小时,所有的检查一一完成。回著名的304把表交给医生,就等着几天后取结果了~

 

Yu Zhang

Photo 1 of 21
More albums (71)

Windows Media Player