2010年3月10日星期三

Forward

这个博客停止更新, 请到 www.thinksrc.com 查看最新的内容。

This blogger is stop update, please go www.thinksrc.com for updates.

2009年11月29日星期日

一个c语言小技巧,摘自minix fs

我说的小技巧就是最后的那句 err |= minix_sync_inode(inode);

真是懒的可以,Linus真是惜行如jing啊, 前面的错误检测和后面的都一并检查了,不过这里也有一个前提,就是 sync_mapping_buffers错误了,调用minix_sync_inode也不会导致更严重的问题。

学习学习。。。




int minix_sync_file(struct file * file,
struct dentry *dentry, int datasync)
{
struct inode *inode = dentry->d_inode;
int err;

err = sync_mapping_buffers(inode->i_mapping);
if (!(inode->i_state & I_DIRTY))
return err;
if (datasync && !(inode->i_state & I_DIRTY_DATASYNC))
return err;

err |= minix_sync_inode(inode);
return err ? -EIO : 0;
}

About File system logging

This is a note @MIT OCW 6.824 Lecture 7:

The main point of a log is make complex operations atomic.

I.e. operations that involve many individule writes. You want all writes or none, even if a crash in the middle.

A "transaction" is multi-write operation that should be atomic. The logging system needs to know which set of write from a transication.

Re-do with checkpoint:

Most logs work like this, e.g. FSD,
allows much faster recovery: ca use on-disk data
write-ahead rule:

delay flushing dirty block from in-memory data cache until corresponding commit recore is on disk

Check point rules:

all data writes before check point must be stable on disk checkpoint may not advance beyond first uncommitted Begin

Recovery:

for each block mentioned in the log
find the last xaction that wrote that block
if committed: re-do
if not committed: un-do

Why is logging fast:

group commit -- batched log writes.
could delay flushing log -- may lost committed transactions but at least you have a prefix.

Single seek to implement a transaction.
maybe less if no intervening disk activity, or group commit

Write-behind of data allows batched/schedules.
one data block may reflect many transactions, i.e. create many files in a directory.
don't have to be so careful since the log is the real infomation.

How can we avoid delete/create inconsistency?

This is a file system note: @MIT 6.824 2006 Lecture 6

Think this satiation,

unlink("f1");
create("f2");
Create happens to re-use the i-node freed by the unlink.
suppose only create write goes to disk, but none of the unlink's writes.

Crash.

After re-start, what does recovery see?

The file system looks correct! Nothing to fix!
But file f1 actually has file f2's contents!

Serious *undetected* inconsisency.

This is *not* a state the file system counld have been in if the crash had occured slightly earlier or later. And fsck did not notify the user there was an unfixable problem!

How can we avoid this delete/create inconsistency?

Observation: We only care about what's visible in the file system tree.

Goal: on-disk directory entry must always point to correct on-disk i-node.

Unlink Rule: remove dirent *on disk* before freeing i-node.

Create Rule: initialize new i-node *on disk* before creating directory entry.

In general, directory entry writes should be commit points.
Crash just before leves us with unused allocated i-node.
Crash just after is fine.

2009年11月15日星期日

感冒了,翻墙了

冬天气温降的很快,就连以往冬天不那么冷的广东,这次都很冷很冷了。我都感冒了, 不过不是猪流感。

还有一件事就是使用ssh tunnel翻墙了,很爽阿。

赞一个OpenSSH。

2009年10月29日星期四

real world FIND usage

from http://www.wagoneers.com/UNIX/FIND/find-usage.html


sudo find / -type f -name *.jpg -exec cp {} . \;

find . -type f -size +10000 -exec ls -al {} \;
find . -atime +1 -type f -exec mv {} TMP \; # mv files older then 1 day to dir TMP
find . -name "-F" -exec rm {} \; # a script error created a file called -F
find . -exec grep -i "vds admin" {} \;
find . \! -name "*.Z" -exec compress -f {} \;
find . -type f \! -name "*.Z" \! -name ".comment" -print | tee -a /tmp/list
find . -name *.ini
find . -exec chmod 775 {} \;
find . -user xuser1 -exec chown -R user2 {} \;
find . -name ebtcom*
find . -name mkbook
find . -exec grep PW0 {} \;
find . -exec grep -i "pw0" {} \;
find . -atime +6
find . -atime +6 -exec ll | more
find . -atime +6 -exec ll | more \;
find . -atime +6 -exec ll \;
find . -atime +6 -exec ls \;
find . -atime +30 -exec ls \;
find . -atime +30 -exec ls \; | wc -l
find . -name auth*
find . -exec grep -i plotme10 {};
find . -exec grep -i plotme10 {} \;
find . -ls -exec grep 'PLOT_FORMAT 22' {} \;
find . -print -exec grep 'PLOT_FORMAT 22' {} \;
find . -print -exec grep 'PLOT_FORMAT' {} \;
find . -print -exec grep 'PLOT_FORMAT' {} \;
find ./machbook -exec chown 184 {} \;
find . \! -name '*.Z' -exec compress {} \;
find . \! -name "*.Z" -exec compress -f {} \;
find /raid/03c/ecn -xdev -type f -print
find /raid/03c/ecn -xdev -path -type f -print
find / -name .ssh* -print | tee -a ssh-stuff
find . -name "*font*"
find . -name hpmcad*
find . -name *fnt*
find . -name hp_mcad* -print
find . -grep Pld {} \;
find . -exec grep Pld {} \;
find . -exec grep Pld {} \;
find . -exec grep PENWIDTH {} \; | more
find . -name config.pro
find . -name config.pro
find /raid -type d ".local_sd_customize" -print
find /raid -type d -name ".local_sd_customize" -print
find /raid -type d -name ".local_sd_customize" -ok cp /raid/04d/MCAD-apps/I_Custom/SD_custom/site_sd_customize/user_filer_project_dirs {} \;
find /raid -type d -name ".local_sd_customize" -exec cp /raid/04d/MCAD-apps/I_Custom/SD_custom/site_sd_customize/user_filer_project_dirs {} \;
find . -name xeroxrelease
find . -exec grep xeroxrelease {} \;
find . -name xeroxrelease
find . -name xeroxrelease* -print 2>/dev/null
find . -name "*release*" 2>/dev/null
find / -name "*xerox*" 2>/dev/null
find . -exec grep -i xeroxrelease {} \;
find . -print -exec grep -i xeroxrelease {} \;
find . -print -exec grep -i xeroxrelease {} \; > xeroxrel.lis
find . -exec grep -i xeroxrel {} \;
find . -print -exec grep -i xeroxrel {} \;
find . -print -exec grep -i xeroxrel {} \; | more
find /raid/03c/inwork -xdev -type f -print >> /raid/04d/user_scripts/prt_list.tmp
find . -exec grep '31.53' {} \;
find . -ls -exec grep "31/.53" {} \; > this.lis
find . -print -exec grep "31/.53" {} \; > this.lis
find . -print -exec grep 31.53 {} \; > this.lis
find . -exec grep -i pen {} /;
find . -exec grep -i pen {} \;
find . -print -exec grep -i pen {} \; | more
find . -exec grep -i pen {} \;
find . -atime +6 -exec ll | more \;
find . -atime +6 -exec ll \;
find . -atime +6 -exec ls \;
find . -atime +30 -exec ls \;
find . -atime +30 -exec ls \; | wc -l
find . \! -name '*.Z' -exec compress -f {} \;
find . -name 'cache*' -depth -exec rm {} \;
find . -name 'cache*' -depth -print | tee -a /tmp/cachefiles
find . -name 'cache[0-9][0-9]*' -depth -print | tee -a /tmp/cachefiles
find . -name 'hp_catfile' 'hp_catlock' -depth -print | tee -a /tmp/hp.cats
find . -name 'hp_catfile' -name 'hp_catlock' -depth -print | tee -a /tmp/hp.cats
find . -name 'hp_cat*' -depth -print | tee -a /tmp/hp.cats
find . -name 'hp_cat[fl]*' -depth -print | tee -a /tmp/hp.cats
find /raid -name 'hp_cat[fl]*' -depth -print
find . \! -name '*.Z' -exec compress -f {} \;
find . -name '*' -exec compress -f {} \;
find . -xdev -name "wshp1*" -print
find . -xdev -name "wagoneer*" -print
find . -name "xcmd" -depth -print
find /usr/contrib/src -name "xcmd" -depth -print
find /raid -type d -name ".local_sd_customize" -exec ls {} \;
find /raid -type d -name ".local_sd_customize" \
-exec cp /raid/04d/MCAD-apps/I_Custom/SD_custom/site_sd_customize/user_filer_project_dirs {} \;

2009年10月20日星期二

All about container_of

对一个这个宏的不理解导致了几个晚上的熬夜。写代码的时候一定不能迷糊阿!

这个是Linux kernel里面的宏, 作用大概如下, 现在你有一个


struct big{
struct small sname_in_big;
int some_else
};

struct small{}


然后有一个函数, 传入参数只有一个*small, 比如

void some_func(struct small *s);


在这个函数里面, 你想作这么一件事情, 想得到那个int some_else的值是多少, 而你的函数只有一个struct small* 的参数, 所以kernel里面就有这么一个函数可以帮你获得 struct big的指针。
就是container_of
在这个函数里面可以这样用:
 void some_func(struct small *s) {
struct big *b;
b = container_of (s, struct big, sname_in_big);
}

不过, 还有一个更重要的前提。 就是, 这个函数的参数的这个s,必须是struct big的一部分。 也就是说, 必须有这样一个步骤, struct big a; a.sname_in_big = some_small.
some_func(&a.sname_in_big);
才可以找到big的正确的地址。

这里的解释更详细:
http://www.kroah.com/log/linux/container_of.html

2009年10月15日星期四

一个世纪前《纽约时报》对李鸿章的采访

一个世纪前《纽约时报》对李鸿章的采访



---------- Forwarded message ----------
From:
tombkeeper的和谐Blog

via hi.baidu.com on 9/23/09
一个世纪前《纽约时报》对李鸿章的采访
2009-09-24 08:58

离开在欧洲考察访问的最后一站英国后,大清帝国前直隶总督兼北洋大臣李鸿章乘"圣-路易斯"号邮轮于当地时间
1896年8月28日抵达美国纽约,开始对美国进行访问。李鸿章在美国受到了美国总统克利夫兰的接见,并和美国一些要员及群众见面,受到了"史无前例的礼遇"(《纽约时报》)。9月2日上午9时许,李鸿章在纽约华尔道夫饭店接受了记者的采访。

●美国记者:尊敬的阁下,您已经谈了我们很多事情,您能否告诉我们,什么是您认为我们做得不好的事的呢?

●李鸿章:我不想批评美国,我对美国政府给予我的接待毫无怨言,这些都是我所期待的。只是一件事让我吃惊或失望,那就是你们国家有形形色色的政党存在,而我只对其中一部分有所了解。其他政党会不会使国家出现混乱呢?你们的报纸能不能靠国家利益将各个政党联合起来呢?

●美国记者:那么阁下,您在这个国家的所见所闻中什么最使您最感兴趣呢?

●李鸿章:我对我在 美国见到的一切都很喜欢,所有事情都让我高兴。最使我感到惊讶的是20层或更高一些的摩天大楼,我在中国和欧洲从没见过这种高楼。这些楼看起来建得很牢
固,能抗任何狂风吧?但中国不能建这么高的楼房,因台风会很快把它吹倒,而且高层建筑若没有你们这样好的电梯配套也很不方便。

●美国记者:阁下,您赞成贵国的普通百姓都接受教育吗?

●李鸿章:我们的习惯是送所有男孩上学。我们有很好的学校,但只得付得起学费的富家子弟才能上学,穷人家的孩子没有机会上学。但是,我们现在还没有你们这么多的学校和学堂,我们计划将来在国内建立更多的学校。

●美国记者:阁下,您赞成妇女接受教育吗?

●李鸿章(停顿一会 儿):在我们清国,女孩在家中请女教师提供教育,所有有经济能力的家庭都会雇请女家庭教师。我们现在还没有女子就读的公立学校,也没有更高一级的教育机
构。这是由于我们的风俗习惯与你们(包括欧洲和美国)不同,也许我们应该学习你们的教育制度,并将最适合我们国情的那种引入国内,这确是我们所需要的。

●记者:总督阁下,您期待对现存的排华法案进行任何修改吗?

●李鸿章:我知道, 你们又将进行选举了,新政府必然会在施政上有些变化。因此,我不敢在修改法案前发表任何要求废除《格利法》的言论,我只是期望美国新闻界能助清国移民一臂
之力。我知道报纸在这个国家有很大的影响力,希望整个报界都能帮助清国侨民,呼吁废除排华法案,或至少对《格利法》进行较大修改。

●美国记者:阁下,您能说明选择经加拿大而非美国西部回国路线的理由吗?是不是您的同胞在我国西部一些地区没有受到善待?

●李鸿章:我有两个原因不愿经过美国西部各州。

第一,当我在清国北方港口城市担任高官时,听到了很多加州清国侨民的抱怨。这些抱怨表明,清国人在那里未能获得
美国宪法赋予他们的权利,他们请求我帮助他们使他们的美国移民身份得到完全承认,并享受作为美国移民所应享有的权利。而你们的《格利法》不但不给予他们与
其他国家移民同等的权利,还拒绝保障他们合法的权益,因此我不希望经过以这种方式对待我同胞的地方,也不打算接受当地华人代表递交的要求保证他们在西部各
州权益的请愿信。

第二,当我还是一名优秀的水手时,就知道必须学会自己照顾自己。我比别人年纪要大好多岁,从温哥华回国的航程要比从旧金山出发更短些。我现在才知道,清国"皇后号"船体宽阔舒适,在太平洋的所有港口都难以找到如此之好的远洋客船。

排华法案是世界上最不公平的法案。所有的政治经济学家都承认,竞争促使全世界的市场迸发活力,而竞争既适用于商
品也适用于劳动力。我们知道,《格利法》是由于受到爱尔兰裔移民欲独霸加州劳工市场的影响,因为清国人是他们很强的竞争对手,所以他们想排除华人。如果我
们清国也抵制你们的产品,拒绝购买美国商品,取消你们的产品销往清国的特许权,试问你们将作何感想呢?不要把我当成清国什么高官,而要当成一名国际主义
者,不要把我当成达官贵人,而要当作清国或世界其他国家一名普通公民。请让我问问,你们把廉价的华人劳工逐出美国究竟能获得什么呢?廉价劳工意味着更便宜
的商品,顾客以低廉价格就能买到高质量的商品。

你们不是很为你们作为美国人自豪吗?你们的国家代表着世界上最高的现代文明,你们因你们的民主和自由而自豪,但
你们的排华法案对华人来说是自由的吗?这不是自由!因为你们禁止使用廉价劳工生产的产品,不让他们在农场干活。你们专利局的统计数据表明,你们是世界上最
有创造力的人,你们发明的东西比任何其他国家的总和都多。在这方面,你们走在了欧洲的前面。因为你们不限制你们在制造业方面的发展,搞农业的人不限于搞农
业,他们还将农业、商业和工业结合了起来。你们不象英国,他们只是世界的作坊。你们致力于一切进步和发展的事业。在工艺技术和产品质量方面,你们也领先于
欧洲国家。但不幸的是,你们还竞争不过欧洲,因为你们的产品比他们的贵。这都是因为你们的劳动力太贵,以致生产的产品因价格太高而不能成功地与欧洲国家竞
争。劳动力太贵,是因为你们排除华工。这是你们的失误。如果让劳动力自由竞争,你们就能够获得廉价的劳力。华人比爱尔兰人和美国其他劳动阶级都更勤俭,所
以其他族裔的劳工仇视华人。

我相信美国报界能帮助华人一臂之力,一取消排华法案。

●美国记者:美国资本在清国投资有什么出路吗?

●李鸿章:只有将货币、劳动力和土地都有机地结合起来,才会产生财富。清国政府非常高兴地欢迎任何资本到我国投资。我的好朋友格兰特将军曾对我说,你们必须要求欧美资本进入
清国以建立现代化的工业企业,帮助清国人民开发利用本国丰富的自然资源。但这些企业的管理权应掌握在清国政府手中。我们欢迎你们来华投资,资金和技工由你
们提供。但是,对于铁路、电讯等事物,要由我们自己控制。我们必须保护国家主权,不允许任何人危及我们的神圣权力。我将牢记格兰特将军的遗训,所有资本,
无论是美国的还是欧洲的,都可以自由来华投资。

●美国记者:阁下,您赞成将美国的或欧洲的报纸介绍到贵国吗?

●李鸿章:中国办有 报纸,但遗憾的是中国的编辑们不愿将真相告诉读者,他们不像你们的报纸讲真话,只讲真话。中国的编辑们在讲真话的时候十分吝啬,他们只讲部分的真实,而且
他们的报纸也没有你们报纸这么大的发行量。由于不能诚实地说明真相,我们的报纸就失去了新闻本身的高贵价值,也就未能成为广泛传播文明的方式了。
________________________________
一个世纪,对个人来说差不多就是永远;而对人类社会的巨大惯性来说,百年时间所提供的摩擦力又是多么有限。
类别:网文收集 copy and paste 浏览(171) 评论 (3)

网友评论:
1
网友:underclass.h
2009-09-24 09:42 回复
我 只是以非常中立观点发表这个评论,其实末代中兴大臣,都有缺一个领袖.胡适曾指出:中国形成一个领袖不容易,如果因张学良出现不幸,中国将倒退20年, 是"国家民族之罪人".不过这的确成就另一个领袖,只是,一将功成万骨枯,正好你所说,摩擦力是有限的,要改变的终究改变了,现在不比以往的时代差.

2009年10月14日星期三

[转]叮叮整理:《动物农庄》人物情节对照

来自,叮叮


故事梗概:农场里的一头猪在提出了“人类剥削牲畜,牲畜须革命”的理论之后死去,若干年后农场里掀起了一场由猪领导的革命,原来的剥削者——农场主被赶 走,牲畜们实现了“当家作主”的愿望,尝到了革命果实的甘美,农场更名为“动物庄园”并且制定了庄园的宪法——七戒。但不久领导革命的猪们发生了分裂,一 头猪被宣布为革命的敌人,此后,获取了领导权的猪拥有了越来越大的权力和越来越多的特别待遇,逐渐脱离了其他动物,最终蜕变成为和人类完全一样的牲畜剥削 者,动物庄园的名字也被放弃。

  长者(Old Major)——猪,提出了动物主义的思想,向动物们启蒙,要他们为动物的解放奋斗影射马克思恩格斯和列宁
  雪球(Snowball)——猪,动物庄园革命的领导者之一,后被驱逐并宣布为革命的敌人,影射托洛斯基
  拿破仑(Napoleon)——猪,动物庄园革命的领导者之一,后来成为庄园的领袖,影射斯大林
  拳击手(Boxer)——马,动物主义理念的忠实追随者,积极响应革命领袖的号召,后被拿破仑卖给宰马商,象征着相信“革命理论”的广大善良群众及工人阶级。
  本杰明(Benjamin)——驴,对拿破仑的所作所为始终抱有怀疑但明哲自保,象征有独立思想对极权主义有所怀疑但明哲保身的知识分子
  无名的很多狗(dogs)——拿破仑在动物庄园实施暴力统治的工具,象征极权主义国家的各种暴力机构。内务部、克格勃。
  琼斯先生(Mr Jones)——沙皇尼古拉二世。被动物赶出庄园,反扑过一次,影射苏联内战。
  母鸡(hens)——农民阶级。小说中拿破仑强迫鸡群每天多下几百个蛋,可以看作比喻斯大林的农业合作化。
  莫莉(Mollie)——革命前的中上层阶级。莫莉在革命刚几天就逃跑可以看作俄罗斯旧贵族和上层在革命后
  纷纷流亡的映射。
  尖嗓子(squealer)——拿破仑的发言人。指斯大林政策导向的维护者、以正统的舆论麻痹人民的走狗。
  渡鸦摩西(raven Moses)——东正教廷
  羊群(sheep)——盲目迷信斯大林的人,包括党员与普通人
  猫(cats)——投机者的形象,而没有具体的原形。
  温普尔先生(Mr. whymper)——替斯大林向西方宣传的知识分子。
  四只小猪——共产党内不服从斯大林,并在大清洗中被处决的一批人。主要代表为布哈林等。四只小猪在审判时毫不抗拒、完全认罪在《动物农场》里缺乏情节上的合理性,可以认定是按照当时莫斯科三次审判写成的。这三次审判里所有被告均当堂认罪,痛骂自己、赞扬斯大林。

   琼斯先生被赶出农场——沙皇尼古拉二世被赶出俄国
   摩西在琼斯被赶走以后失踪——东正教廷在苏联建立后被压制、毁灭。
   拿破仑赶走雪球——斯大林赶走托洛茨基
   拿破仑建议积极保卫农场 – 雪球建议在全英国策动动物暴动:——斯大林建议积极建设保卫苏联,托洛茨基建议在全世界策动共产主义革命。
   雪球建议修建风车——托洛茨基建议建设第一个五年计划
   拿破仑修改历史,让动物们相信是他提议修建风车:——斯大林修改历史,说是他第一个提出五年计划。
   拿破仑妖魔化雪球,把一切罪责推到雪球身上,在动物中间抓内奸——斯大林妖魔化托洛茨基,在苏联以反对托派为名镇压异己。
   拿破仑修改历史,一次次给雪球的罪行加码——斯大林修改历史,先说托洛茨基是“犯了错误”,然后说他1935年投靠德国,再说托洛茨基从1921就是德国间谍。
   摩西回到农场——斯大林对德作战期间利用东正教廷作为动员士气的工具。刘晓波据此写的有一篇文章,专论斯大林对宗教的实用主义政策。
   拿破仑修改七条约定——斯大林不断修改历史。被清洗掉的人和事往往从所有记录里消失。
   拿破仑与猪们住进屋子——革命胜利后苏联G_c_D不断腐化,专为领导特供的商店、汽车、住房。

2009年10月8日星期四

Google Picasa访问浏览的另类方法

[转自 http://www.hzhjun.cn/post/googlePicasa.html]

关于gg被和谐的事,相信很多人都晓得,但受祸的不止是gg,还有其用户。

前段时间突然找不到右上角的登录链接,着实郁闷了下,虽然我不常登录,但需要的时候却没了,后来才知道进入其他频道是可以登录的;再就是Picasa网络相册,前脚上传了照片,紧接着就不让看,莫名其妙的打不开链接。。。

好在网络上传出了一种方法,通过配置Hosts可以在本地查看,操作如下:

在C:\WINDOWS\system32\drivers\etc找到hosts文件,将下面内容复制粘贴:
203.208.39.104 picadaweb.google.com
203.208.39.104 lh1.ggpht.com
203.208.39.104 lh2.ggpht.com
203.208.39.104 lh3.ggpht.com
203.208.39.104 lh4.ggpht.com
203.208.39.104 lh5.ggpht.com
203.208.39.104 lh6.ggpht.com

保存后即可正常使用,不过只能在本地访问;欲知效果如何,那就赶快动手一试。。。

有一个误传甚广的故事



by Akkad on 07/09/09

有一个流传甚广的故事: 美国航天部门首次准备将宇航员送上太空,但他们很快接到报告,宇航员在失重状态下用圆珠笔、钢笔根本写不出字来。于是,他们用了10年时间,花费120亿 美圆,科学家们终于发明了一种新型圆珠笔。这种笔适用于失重状态、身体倒立、水中、任何平面物体,甚至在摄氏零下300度也能书写流利。 而俄罗斯人在太空中一直使用铅笔。”

这个故事想告诉人们,有时看上去很复杂的问题,其实有极简单的现成解决办法。这当然是很有教育意义的,可惜它是捏造出来的。总结一下这个故事的错误:
1,美国宇航员也用过铅笔。
2,铅笔并不适合太空中使用,尖头有危险,易燃,书写产生的石墨残渣容易进入宇航员的胸腔、眼睛,更容易使电子设备短路(石墨是良导体)。
3,太空笔是一家私人企业发明的,据说耗资一百多万美元。
4,这种太空笔不但能在失重的情况下使用,还能在极端温度下使用。
5,失重笔不但想出了用氮气产生压力,而且还改革了油墨和笔尖,使得这种笔不写的时候不漏油。
6,太空笔发明出来以后,无论是美国宇航局还是俄罗斯宇航局都购买了。
7,找不到零下300摄氏度这样的环境(开尔文0度达不到-300摄氏度),这个杜撰的故事本身就有科学错误。

早期的宇航员都使用铅笔,并不是因为接受了小学生的建议,而是因为钢笔、圆珠笔在失重条件下都无法使用,铅笔是惟一的选择。但是铅笔笔芯有时候会断,在失 重的环境中飘浮,会飘进鼻子、眼睛中,或飘进电器中引起短路,成了危险品。此外,铅笔的笔芯和木头在纯氧的环境中还会极易燃烧。 因发明了圆珠笔通用笔芯而发了大财的保罗·费舍尔,意识到宇航员使用安全、可靠的书写工具的迫切性,自掏腰包进行研制,花了两年时间和约两百万元费用后, 于1965年研制成了能在太空环境下使用的圆珠笔———太空笔。其原理很简单,采用密封式气压笔芯,上部充有氮气(氮气是不活跃气体,一般条件下不会助 燃),靠气体压力把油墨推向笔尖。经过严格的测试后,太空笔被美国宇航局采用。1967年12月,费舍尔以每枝2.95美元的价格把400枝太空笔卖给美 国宇航局。 1969年7月20日,太空笔跟随阿姆斯特朗和奥尔德林上了月球,并救了他们的命。阿姆斯特朗和奥尔德林在月球表面完成历史性漫步,回到登月舱准备离开 时,发现发动机的塑料手动开关被宇航服的背囊碰断,无法启动发动机向地面指挥中心求援。他们需要拨动开关中一个细小的金属条,为了减轻重量,他们已抛弃了 所有的工具。地面指挥中心的一名工程师灵机一动,建议他们用太空笔试试。奥尔德林掏出太空笔,缩回笔芯,用笔的中空尾端拨动了开关,成功地启动了登月舱的 发动机。 太空笔是全天候的圆珠笔,除了太空环境,还可在其他各种极端恶劣(如寒冷的高山上和深海底)的条件下使用,如油污、潮湿、粗糙、光滑的表面,并适用于各种 角度书写,使用寿命长达几十年,深受登山运动员、户外活动者、技工、士兵、警察的欢迎。目前在美国市场上8美元即可买到一枝最简单的费舍尔太空笔。

奇怪的是这个富有传奇色彩的太空笔却成了谣言的对象,备受嘲笑,成了愚蠢的象征。有人说美国人花巨资开发太空笔完全没有必要,不如像前苏联宇航员那样简单 地使用铅笔(实际上,前苏联宇航员后来也改用费舍尔太空笔)。还有人干脆说太空笔从来就没有研制出来过。直到最近,还有人在学术会议上把这个谣言进行添油 加醋,开发费用被他们夸大了5000倍: “‘为了研究在太空环境下圆珠笔能出水,竟使科学家花费了100亿美元,终了却毫无结果。最后得知,铅笔在太空环境下就能写出字。’11月3日,在中国农 业大学召开的‘2004年全国农林研究生教育发展论坛’上,一位专家将这则黑色幽默娓娓道来,各大学领导和专家对‘研究要切合实际,尤其是以前沿研究为主 的研究生教育更是如此’的观点表示认同。”(《中国农大研究生教育创新性“学科群落”质高多产》,《中国教育报》2004年11月7日第1版) 《光明日报》也刊登过“美国科学家花费巨资研究太空笔居然没想到用铅笔”这样的笑话。 费舍尔太空笔中国市场上也买得到,叫“飞梭太空笔”,许多城市的百货大楼、礼品店均有销售,与会专家竟然没有一个人见过、听说过?“研究要切合实际”,说 得一点也不错,首先就要从自己做起。

2009年8月21日星期五

和谐的VirtualBox

混合

ubuntu, emacs,git, win xp, IE7, firefox, 飞信, 注意到这个截图里面有win的部分, 有ubuntu的部分, 并且是几乎无缝的, 这就是~~ 来自sun的VirtualBox 虚拟机, 真是太人性化了, 效率很好, 比KVM要高的多, 可惜了sun阿。可怜的sun阿。。。

Win下的google输入法是我最留恋的。 :D

最近这几天给team里面搭了svn, 因为svn 可以控制权限, 谁知道上司就把权限想的很死, 结果那个authz文件都快到100行了, SCM又不熟悉, 经常犯了错误就把我拉出来了。 真是手里拿着锤子,看什么都像钉子阿。。。

最近的生活很单调。

2009年8月7日星期五

Feel sad

Today is a sad day.

The someone  doesn't speak any words to me, I don't know what should  do.

And, with my stupid hand, I broken my new gotted develope Ben nanobook.

It's a sad day really.

Hope tomorrow is better.

2009年8月5日星期三

Step the first step

Well, today is a happy day. I meet  with Wolfgang Spraul last evening, the first real person that play with Linux and Open Source. I asked my confuse about the format and organization of Linux world, He said:" You always saw Linux elsewhere, but you are the Linux, Linux is every individual". It's encourage me very much.

I said that I'm just the listener of the mail-list, never being an active guy like others, and he said this is the problem of most of Chinese software engineer, even they are very good at skill, but they never step out, and do something, they are waiting for some one else to ask passive. I think he is right, I have same problem, but the core of this problem is NOT who you are, but the how you do it. The rule in the Open Source world is you take a semi-finished things, show to others, and then ask them help, clear about you request, so the others can understand what help can they offer, and finish it together.
Another problem of Chinese software engineer is language, the Open Source world is a English world, and communicate with mail-list/IRC/IM, all these way is in English, for example, He is a German,but he still have to learn & speak English(I heard that English is too simple to German). The most of people use mail-list, but wirte a clear mail is a challenge.

Anyway, I decide to conquer and learn my English well. So I practice my English here.

2009年7月28日星期二

推荐,上twitter的好武器

1. 配置一下你的HOST文件,帖子在这里

2. 这个adobe AIR 软件可以, 你可能需要先安装 AIR 平台, 地址在这里

然后可以去
http://www.twhirl.org/
下载这个应用,就可以上twitter了。

赞一个 adobe AIR.

2009年7月27日星期一

画的自己。

申明: 这个是我技术不到位, 真人要帅些。

[caption id="attachment_645608" align="alignnone" width="302" caption="自己"]自己[/caption]

2009年7月25日星期六

2009年7月12日星期日

希望

投了Ubuntu的JOB,在这里希望可以通过,这样我就可以在你身边了。

(只能把yo2当twitter了,习惯了,没办法)

2009年7月10日星期五

心情不好画画很丑

到头来还是不能摆脱, 加班, 上网受限, 不被相信的这些东西。

刚两天的好心情,逐渐回到了正常的坏心情。像一个在高飞的肥皂泡,始终会有破掉的一天。

我的要求不高,一个皮椅子就好。

画不好看了,真的是那句,心情不好的时候,画出来的画很丑。

2009年6月13日星期六

Numbers should knows

from google

L1 cache reference                                                                               0.5 ns
Branch mispredict                                                                                    5 ns
L2 cache reference                                                                                   7 ns
Mutex lock/unlock                                                                             100 ns
Main memory reference                                                                  100 ns
Compress 1K bytes with Zippy                                               10,000 ns
Send 2K bytes over 1 Gbps network                                    20,000 ns
Read 1 MB sequentially from memory                            250,000 ns
Round trip within same datacenter                                  500,000 ns
Disk seek                                                                                10,000,000 ns
Read 1 MB sequentially from network                      10,000,000 ns
Read 1 MB sequentially from disk                              30,000,000 ns
Send packet CA->Netherlands->CA                       150,000,000 ns