Tuesday, September 21, 2010

GNU Emacs: Transient mark mode (active selection)

Posted by Dimitar Panayotov

Many developers use GNU Emacs, but they are often annoyed when they press C-SPC (Ctrl + Space) to start selecting a region and then when they go somewhere else in the file, they execute some command on the thing which should be the currently selected region. And also often it turns out the result is not as expected. To have some knowledge what you do wrong (or to keep yourself informed in a visual manner) you could enable “Transient Mark Mode” in GNU Emacs by clicking “Options” and then “Transient mark mode”; now, when you press C-SPC (Ctrl + Space) and you move the cursor, you will see a selection growing or shrinking as you move the cursor. Basically, if you press C-g (“Quit”) no region marking will be done until you press C-SPC again. Also, any change in the current file will discard the selection. If you want to be advanced on this, see here:

http://www.delorie.com/gnu/docs/emacs/emacs_54.html

As far as I know, this is pretty well supported option in many versions/variants of GNU Emacs.

You could also do it in the non-clickable way, if you like this (like me). Just put in your “.emacs” file (wherever it is, you should know) this:


(custom-set-variables
'(transient-mark-mode t))

And done.

Wednesday, January 06, 2010

Chrome shortcuts

Tab and window shortcuts

Ctrl+NOpens a new window.
Ctrl+TOpens a new tab.
Ctrl+Shift+NOpens a new window in incognito mode.
Ctrl+BToggles the bookmarks bar on and off.
Press Ctrl+O, then select file.Opens a file from your computer in Google Chrome.
Press Ctrl and click a link. Or click a link with your middle mouse button (or mousewheel).Opens the link in a new tab in the background .
Press Ctrl+Shift and click a link. Or press Shift and click a link with your middle mouse button (or mousewheel).Opens the link in a new tab and switches to the newly opened tab.
Press Shift and click a link.Opens the link in a new window.
Ctrl+Shift+TReopens the last tab you've closed. Google Chrome remembers the last 10 tabs you've closed.
Drag a link to a tab.Opens the link in the tab.
Drag a link to a blank area on the tab strip.Opens the link in a new tab.
Drag a tab out of the tab strip.Opens the tab in a new window.
Drag a tab out of the tab strip and into an existing window.Opens the tab in the existing window.
Press Esc while dragging a tab.Returns the tab to its orginal position.
Ctrl+1 through Ctrl+8Switches to the tab at the specified position number on the tab strip.
Ctrl+9Switches to the last tab.
Ctrl+Tab or Ctrl+PgDownSwitches to the next tab.
Ctrl+Shift+Tab or Ctrl+PgUpSwitches to the previous tab.
Ctrl+Shift+QCloses the current window.
Ctrl+W or Ctrl+F4Closes the current tab or pop-up.
Click a tab with your middle mouse button (or mousewheel).Closes the tab you clicked.
Right-click, or click and hold either the Back or Forward arrow in the browser toolbar.Displays your browsing history in the tab.
Press BackspaceGoes to the previous page in your browsing history for the tab.
Press Shift+BackspaceGoes to the next page in your browsing history for the tab.
Click either the Back arrow, Forward arrow, or Go button in the toolbar with your middle mouse button (or mousewheel).Opens the button destination in a new tab in the background.
Double-click the blank area on the tab strip.Maximizes the window.

Address bar shortcuts

Use the following shortcuts in the address bar:

Type a search term, then pressEnter.Performs a search using your default search engine.
Type a search engine keyword, press Space, type a search term, and press Enter.Performs a search using the search engine associated with the keyword.
Begin typing a search engine URL, press Tab when prompted, type a search term, and press Enter.Performs a search using the search engine associated with the URL.
Ctrl+LHighlights the URL.
Ctrl+EPlaces a '?' in the address bar. Type a search term after the question mark to perform a search using your default search engine.
Press Ctrl+Shift and the left arrow together.Moves your cursor to the preceding key term in the address bar
Press Ctrl+Shift and the right arrow together.Moves your cursor to the next key term in the address bar
Ctrl+BackspaceDeletes the key term that precedes your cursor in the address bar
Select an entry in the address bar drop-down menu with your keyboard arrows, then press Shift+Delete.Deletes the entry from your browsing history, if possible.
Click an entry in the address bar drop-down menu with your middle mouse button (or mousewheel).Opens the entry in a new tab in the background.
Press Page Up or Page Downwhen the address bar drop-down menu is visible.Selects the first or last entry in the drop-down menu.

Webpage shortcuts

Ctrl+PPrints your current page.
Ctrl+SSaves your current page.
Ctrl+RReloads your current page.
EscStops the loading of your current page.
Ctrl+FOpens the find bar.
Ctrl+G or EnterFinds the next match for your input in the find bar.
Ctrl+Shift+G or Shift+EnterFinds the previous match for your input in the find bar.
Press Alt and click a link.Downloads the target of the link.
Drag a link to bookmarks barBookmarks the link.
Ctrl+DBookmarks your current webpage.
Space barScrolls down the web page.
HomeGoes to the top of the page.
EndGoes to the bottom of the page.

Text shortcuts

Ctrl+CCopies highlighted content to the clipboard.
Ctrl+V or Shift+InsertPastes content from the clipboard.
Ctrl+Shift+VPaste content from the clipboard without formatting.
Ctrl+X or Shift+DeleteDeletes the highlighted content and copies it to the clipboard.


Tuesday, January 05, 2010

debug using gdb in open mpi

6. Can I use serial debuggers (such as gdb) to debug MPI applications?

Yes; the Open MPI developers do this all the time.

There are two common ways to use serial debuggers:

Attach to individual MPI processes after they are running.

For example, launch your MPI application as normal with mpirun. Then login to the node(s) where your application is running and use the --pid option to gdb to attach to your application.

An inelegant-but-functional technique commonly used with this method is to insert the following code in your application where you want to attach:

{
int i = 0;
char hostname[256];
gethostname(hostname, sizeof(hostname));
printf("PID %d on %s ready for attach\n", getpid(), hostname);
fflush(stdout);
while (0 == i)
sleep(5);
}

This code will output a line to stdout outputting the name of the host where the process is running and the PID to attach to. It will then spin on the sleep() function forever waiting for you to attach with a debugger. Using sleep() as the inside of the loop means that the processor won't be pegged at 100% while waiting for you to attach.

Once you attach with a debugger, go up the function stack until you are in this block of code (you'll likely attach during the sleep()) then set the variable i to a nonzero value. With GDB, the syntax is:

(gdb) set var i = 7

Then set a breakpoint after your block of code and continue execution until the breakpoint is hit. Now you have control of your live MPI application and use the full functionality of the debugger.

You can even add conditionals to only allow this "pause" in the application for specific MPI processes (e.g., MPI_COMM_WORLD rank 0, or whatever process is misbehaving).

Thursday, October 29, 2009

format not a string literal and no format arguments

Taken from: http://bobthegnome.blogspot.com/2009/07/format-not-string-literal-and-no-format.html

Some time ago GCC started producing warnings like this:

warning: format not a string literal and no format arguments

What does this mean? GCC is saying that a function in printf style has a format string that it cannot check matches the format arguments. Here is some common code GLib code that causes this error:

GError *error = ...;
g_error(error->message);


Why is this a problem? As error->message cannot be checked it may contain a printf flag sequence, e.g. "Invalid data: 'g^y#%s'" (i.e. %s) that would cause run-time to try and access a non-existent argument. It could be worse and the format string could be user-input that is attempting to exploit your program.

So the solution is to always use a string literal for formatting like this:

g_error("%s", error->message);

Thursday, March 26, 2009

turbulence

According to an apocryphal story Werner Heisenberg was asked what he would ask God, given the opportunity. His reply was: "When I meet God, I am going to ask him two questions: Why relativity
Theory of relativity? And why turbulence? I really believe he will have an answer for the first." A similar witticism has been attributed to Horace Lamb (who had published a noted text book on Hydrodynamics
Hydrodynamics)—his choice being quantum mechanics (instead of relativity) and turbulence. Lamb was quoted as saying in a speech to the British Association for the Advancement of Science, "I am an old man now, and when I die and go to heaven there are two matters on which I hope for enlightenment. One is quantum electrodynamics, and the other is the turbulent motion of fluids. And about the former I am rather optimistic."

Wednesday, February 11, 2009

达尔文人生的转折点 ZZ

zz from ◇◇新语丝(www.xys.org)(xys3.dxiong.com)(www.xysforum.org)(xys2.dropin.org)◇◇

达尔文人生的转折点

·方舟子·

有时一个偶然的事件就会影响一个人一生的选择。在我读高一时(1982年),
正在“向科学进军”的中国大张旗鼓地纪念达尔文逝世100周年,出版了许多达尔
文著作和进化论科普,激发了我对生物学的兴趣,并一直持续下来。今年是达尔
文诞辰200周年(达尔文生于1809年2月12日)和《物种起源》出版150周年(出版
于1859年11月22日),世界各国科学界正在轰轰烈烈地庆祝,国内还未见到有什
么举动,不知是否也会使一些中学生对生物学产生兴趣,而不是像近年来那些高
考状元一律功利地选择金融、经济做为专业?

当达尔文还是一名似乎很平庸的中学生的时候,他更像一个游手好闲的纨绔
子弟,而不是肩负历史使命的天才。他的父亲有一次指责他说:“你除了打猎、
玩狗、抓老鼠,别的什么都不管,你将会是你自己和整个家庭的耻辱。”为了让
达尔文尽快走上正轨,在16岁那年,他的父亲让他提前两年从寄宿学校退学,和
哥哥一起往爱丁堡大学学医。

爱丁堡大学有当时英国最好的医学院,达尔文的祖父、父亲都曾在那里学
习,后来也都成了名医。达尔文父亲指望达尔文能延续家族传统。可惜,达尔文
对医学毫无兴趣,更要命的是,由于当时麻醉术还未发明,手术极为残酷,而他
天性脆弱,不敢面对手术台上的淋漓鲜血。在观摩对一个男孩的手术时,达尔文
再也无法忍受下去,逃离了现场,并决心不再进手术室。他更热衷于帮助大学博
物馆采集植物标本,跟随动物学教授研究海洋无脊椎动物。

两年之后,老达尔文终于明白无法让儿子继承衣钵,必须重新设计达尔文的
人生。达尔文家族除了出医生,还出律师和军人,但是小达尔文显然缺乏从事后
两种职业所必需的自律。老达尔文觉得当教区牧师是游手好闲的人的最佳选择,
有稳定的收入,有体面的社会地位,而且有充裕的业余时间让达尔文做博物学研
究。达尔文想想也是,当时许多博物学家的职业都是牧师。于是达尔文听从父命,
进了剑桥大学学神学。他花在打猎、收集甲虫标本的时间比花在学业上的要多得
多,却也能应付考试,在1831年以在178名非优等生中排名第10的成绩毕业,准
备当个牧师了此残生。

达尔文在晚年回顾他的一生时,认为他的所有这些所谓高等教育完全是一种
浪费。但是他在课余结识了一批优秀的博物学家,从他们那里接受了学术训练。
他在博物学上的天赋也得到了这些博物学家的赏识。达尔文完成学业后,随地质
学家塞奇威克到威尔士考察,并梦想能有机会到热带地区做博物学研究。

没想到这个机会很快来了。这一年的8月,他从威尔士考察回来,收到剑桥
大学植物学教授亨斯楼给他的一封信,让他赶快申请当贝格尔号的博物学家。当
时英国海军计划派贝格尔号到南美海域考察,制作海图。船长费兹洛伊担心旅途
的寂寞会让他精神崩溃——其前任在南美海岸自杀,况且他的家族有自杀史,其
叔叔用刀片割破喉咙。因此他希望旅途中能有一名绅士做伴,最好是一名博物学
家。亨斯楼自己想去,但让妻子很伤心。另一位候选人——也是名牧师兼博物学
家——则由于神职工作无法脱身。他们联合推荐了未婚也未授神职的达尔文。

老达尔文反对儿子参加航行,认为这会推迟儿子在神学职业上的发展。达尔
文沮丧地给亨斯楼回信谢绝推荐,然后到他舅舅韦兹伍德家打猎散心,意外地发
现舅舅非常支持他参加航行。两人一起给老达尔文写了一封长信。针对老达尔文
的顾虑,韦兹伍德指出这次远航实际上对达尔文的职业发展很有好处,毕竟,研
究博物学对神职人员很合适。老达尔文同意了。

达尔文连夜赶去见亨斯楼。不幸的是,他们发现这是一场误会:费兹洛伊早
已答应把位置留给一名朋友。几天后,达尔文在海军部遇到费兹洛伊。费兹洛伊
告诉他,其朋友几分钟前决定不去了,他还想去吗?达尔文兴奋得几乎昏倒,勉
强点了点头。费兹洛伊却心存疑虑,因为他迷信面相,认为达尔文的鼻子形状表
明他不会吃苦耐劳。在经过几天相处增进了解后,费兹洛伊和达尔文定了协议。
达尔文算是船长客人,不支付薪水,坚持不下去时可以随时离队。

贝格尔号于1831年12月27日扬帆起航,绕地球一圈,于1836年10月2日回到
英国。达尔文沿途考察地质、植物和动物,采集了无数标本运回英国,还未回国
就已在科学界出了名。这5年的见识,让达尔文从一名正统的基督徒变成了无神
论者,不可能再去当牧师了,成了职业博物学家。更重要的是,他开始思考生物
的起源问题,最终创建了进化论,极大地改变了世界。种种巧合促成的贝格尔之
航是达尔文人生的转折点,也是人类历史的转折点。

提供了这一机会的费兹洛伊为此感到自己罪孽深重。《物种起源》发表后,
这名虔诚的基督徒愤怒地宣称它带给他“最剧烈的痛苦”。6年后(1865年)一
天的早晨,费兹洛伊起床走进卫生间,和他叔叔一样,用剃须刀结束了这一痛苦。

2009.2.10.

(《中国青年报》2009.2.11)

(XYS20090211)

◇◇新语丝(www.xys.org)(xys3.dxiong.com)(www.xysforum.org)(xys2.dropin.org)◇◇

Monday, January 19, 2009

科学史上著名公案——艾弗里为何没得诺贝尔奖 ZZ

◇◇新语丝(www.xys.org)(xys3.dxiong.com)(www.xysforum.org)(xys2.dropin.org)◇◇

科学史上著名公案——艾弗里为何没得诺贝尔奖

·方舟子·

诺贝尔文学奖和和平奖的权威性历来有争议,而物理、化学、生理学或医学
这三个科学类的奖项的崇高地位却是公认的。即便如此,科学类诺贝尔奖授予了
不配获奖的人,错过了应该获奖的人,也是屡见不鲜的。生物的遗传物质被证明
是脱氧核糖核酸(DNA),这称得上是20世纪最重大的科学发现之一,但是其发现
者美国生物化学家奥斯瓦尔德·艾弗里却没有因此获得诺贝尔生理学或医学奖。
从艾弗里在1944年宣布其重大发现,到1955年以78岁高龄逝世,诺贝尔颁奖委员
会有十年的时间可以考虑,为什么没有选择艾弗里?诺贝尔颁奖委员会当年的提
名和评审情况现在已解密,我们也得以知道这个诺贝尔奖历史上最大的遗憾之一
是如何造成的。

艾弗里的实验材料是肺炎双球菌,这是一种引起肺炎的细菌,在抗生素发明
之前,一直是人类的主要杀手。它对小鼠的危害更严重,往小鼠体内注入一个肺
炎球菌,就能导致小鼠死亡。但是并不是所有的肺炎球菌都能引起感染。有的肺
炎球菌缺乏一层外膜,不能引起感染,它们看上去比较粗糙,被叫做粗糙(R)
品系。那些看上去比较光滑的光滑(S)品系细菌包着一层多糖外膜,能抑制体
内白细胞的吞噬作用,因此能够引起感染。当然,如果加热杀死S品系的病菌,
它们也失去了感染能力。但是1928年,在英国卫生部任职的医生弗雷德里克·格
里菲斯发现了一个奇怪的现象,将被杀死的S品系细菌和活的R品系细菌混合在一
起后,注入小鼠体内,却导致了小鼠死亡。从小鼠的尸体中,找到了活的S品系的
细菌。看来,S品系细菌虽然已被杀死,却含有一种物质,能指导R品系细菌合成
多糖外膜,将之转化成有感染能力的R品系。这种“转化因子”就是遗传物质,它
究竟是什么呢?

1935年,美国洛克菲勒学院的艾弗里、柯林·麦克劳德和麦克林·麦卡提
开始试图纯化这种能把R品系转化成S品系的转化因子并鉴定其化学成分。他们用
了近10年的时间从事这项研究,在1944年发表报告说,他们已经将转化因子从S
品系细菌的抽取物分离、纯化出来,它的活性极强,600万分之一就能导致转化。
化学分析表明转化因子是一种分子量至少高达50万的大分子,由DNA组成,蛋白质
杂质的含量少于百分之一(后来又进一步减少到少于万分之二。这些杂质实际上
是核苷酸的降解产物,而不是蛋白质杂质)。用蛋白水解酶(能将蛋白质降解)
或核糖核酸酶(能将核糖核酸即RNA降解)处理转化因子,都不影响其转化能力,
但是如果用脱氧核糖核酸酶(能将DNA降解)处理,其转化能力就消失了。这就
证明了转化因子是DNA。

这个结果完全是意想不到的,在此之前人们甚至不知道细菌也有DNA,而以为
那是真核生物的特征。当时人们普遍相信只有结构非常复杂的蛋白质才可能是遗
传物质。人们猜想,既然基因能够控制那么多、那么复杂的生物性状,那么构成
基因的遗传物质也一定是一种非常复杂、非常多样的化学物质,才能承担做为基
因的艰巨任务。蛋白质恰好是结构最复杂、最多样的分子,相比之下,DNA则太简
单了。因此很多人都不愿承认艾弗里的实验结果。艾弗里又是个非常谦逊、低调、
内向的人,不热衷于介绍自己的工作,即使受学术会议邀请去做演讲,也往往让
年轻的同事代劳。1945年英国王家学会授予他在科学界有着很高荣誉的科普利奖
章,他却懒得前往英国接受,而由学会会长把奖章送到他在纽约的实验室。难以
想像这样的人会去斯德哥尔摩做演讲介绍自己的研究结果。

诺贝尔生理学或医学奖获奖者是由斯德哥尔摩的卡罗林斯卡医学院全体教授
投票决定的。当时卡罗林斯卡医学院只有二十几位教授,由其中的三位组成诺贝
尔奖委员会,由他们对被提名者进行讨论、确定最后候选人的名单提交表决。
每年世界各地的科学家都会向诺贝尔奖委员会提名许多人竞争当年的诺贝尔奖,
委员会从中挑出一部分被提名者,分别由一名委员或医学院的其他教授做出书面
评价,据此委员会把被提名者分成三类:一、不值得获奖;二、目前不值得获奖;
三、值得获奖。只有最后一类的人选(只剩几个)才提交给全体教授讨论、表决。
当时卡罗林斯卡医学院的教授大部分都不做基础研究,对生物医学的进展实际上
很不熟悉,少数从事基础研究的教授的意见就很受重视。

因此,要获得诺贝尔奖,首先必须有人提名。自1930年代初期起,几乎每年
都有人提名艾弗里,不过,在1946年以前,艾弗里是由于其他工作被提名的:
他发现肺炎双球菌的抗原特性取决于其外膜多糖。但是和对遗传物质的看法相似的
是,当时人们普遍认为抗原特性取决于细胞表面的蛋白质,不相信艾弗里的结果,
怀疑其结果是因为多糖掺杂了蛋白质杂质导致的。在1946年以前,艾弗里有四次进
入了第二轮名单,即诺贝尔奖委员会对其工作做了书面评价,但是评价的结果都
认为他的发现不值得获奖。

1946年起,开始有人在提名艾弗里时提到他对遗传物质的研究。当时全世界
研究核酸的生物化学家很少,其中的两个恰好都是卡罗林斯卡医学院的教授:化
学教授艾纳·哈马斯登和他的前学生、细胞研究与遗传学教授托布真·卡佩森。
这两个人对艾弗里成果的评价无疑会对医学院的其他教授有决定性的影响。不幸
的是,这两个人都相信只有蛋白质才有可能是遗传物质,而且他们根据自己的研
究经验,知道很难除去DNA中的蛋白质杂质,从而不相信艾弗里的实验结果。
1946年,由哈马斯登对艾弗里的实验做了简短的书面评价,他对艾弗里的结果持
批评态度,认为艾弗里的DNA被蛋白质杂质污染了,蛋白质才是转化因子。

接下来的几年,有一些实验室用其他实验证实了艾弗里的结论,艾弗里的发
现已获得了独立验证。1952年,艾弗里再次进入了诺贝尔奖第二轮提名名单,由
细菌学教授伯恩特·马尔姆格伦对之做了书面评价。马尔姆格伦综述了这几年来
的有关研究,认为蛋白质不太可能是转化因子。但是他的结论却是,要把DNA做
为转化因子仍然缺乏最后的证据,因此认为艾弗里的发现目前不值得获奖。

“最后的证据”是在1952年出现的。激烈批评艾弗里实验的人中,有多位是
所谓“噬菌体小组”的成员。这个非正式组织包括从1940到1960年间那些研究噬
菌体遗传学的科学家,他们都以噬菌体为材料研究遗传的物质基础,但是他们也
都是把基因当成蛋白质来研究的,不相信DNA具有做为遗传物质所必备的复
杂性。但是,在1952年,这个小组的两名成员艾尔弗雷德·赫尔希和马莎·切斯
在做噬菌体实验时,出乎意料地发现DNA是遗传物质,他们才改变了立场。与艾
弗里实验的遭遇不同,赫尔希-切斯的实验结果未遭到什么批评就很快被人们普
遍接受,甚至被当成了DNA是遗传物质的最后证明。事实上,这个实验只是用不
同的实验方法,在另一种生物体上得出了支持艾弗里实验的结果,其精确程度还
远远不如艾弗里实验。

赫尔希-切斯的实验结果是在1953年冷泉港的大会上,与詹姆斯·沃森和弗
朗西斯·克里克提出的DNA双螺旋模型一起介绍给与会者的。DNA双螺旋模型解释
了为什么结构似乎很简单的DNA分子能够担当做为遗传物质的重任,消除了人们
接受DNA为遗传物质的最后一个障碍。沃森也曾经是噬菌体小组的成员。由于噬
菌体小组在分子生物学领域的巨大影响力,越来越多的人相信DNA是遗传物质。

1954年,艾弗里最后一次进入了诺贝尔奖第二轮提名名单,由哈马斯登做书
面评价。哈马斯登在评价中没有提及赫尔希-切斯的实验结果和沃森-克里克的
DNA双螺旋模型,不过他承认DNA就是转化因子,艾弗里的发现很重要。但是,
他又指出,转化的机制还不清楚,因此在目前这个发现不值得获奖。艾弗里又没
能进入最后一轮候选名单供表决。即使艾弗里的发现被提交表决,也很可能不会
获胜,这是因为1953年的诺贝尔生理学或医学奖已颁发给了生物化学领域的重大
发现(三羟酸循环和辅酶的发现),1954年不太可能继续颁发给生物化学——
最后表决颁发给脊髓灰质炎(小儿麻痹症)病毒的研究者。

1955年,艾弗里逝世,永远失去了获得诺贝尔奖的机会。假如艾弗里多活几
年,分子生物学成为了显学,自1958年起诺贝尔奖开始频繁地发给对分子生物学
做出重大贡献、甚至贡献不怎么重大的人,艾弗里是否有可能分享殊荣?很可能
不会。同时期另一位对DNA的研究做出重大贡献的美国生物化学家欧文·查加夫活
到了2002年(活了97岁!),就一直没有获得诺贝尔奖,并为此忿忿不平。此时
分子生物学虽然风光一时,但是出现在聚光灯下的是那些曾经非常蔑视艾弗里的
工作、以“贬低生物化学”著称的噬菌体小组的成员。事实上,艾弗里差点被人
遗忘。噬菌体小组在历史上声名显赫,但是成果却很少,与其名声并不相配。在
噬菌体小组做出的成果中,最著名的便是赫尔希-切斯实验,比它早了8年的艾
弗里实验就受到了排斥。在介绍分子生物学历史的早期著作中,赫尔希-切斯实
验被当成了证明DNA是遗传物质的唯一实验。在艾弗里同事们的抗议下,艾弗里
实验才被补充进去。直到今天,在教科书中,艾弗里实验与赫尔希-切斯实验仍
被一起介绍,其实二者的重要性并不能相提并论。

以艾弗里的性格,他应该不会渴望获得诺贝尔奖。他也不需要靠诺贝尔奖为
自己增辉。分子遗传学的历史要从艾弗里艰苦卓绝的伟大实验讲起,今天没有哪
个生物系的学生会不知道艾弗里的实验,而大多数诺贝尔奖获得者的工作又有多
少人知道?有的人获得诺贝尔奖,是为自己增辉,有的人获奖却是为诺贝尔奖增
辉。艾弗里没有获得诺贝尔奖,是诺贝尔奖的遗憾,不是艾弗里的遗憾。

2008.1.7

(《经济观察报》2009.01.19)

(XYS20090119)

◇◇新语丝(www.xys.org)(xys3.dxiong.com)(www.xysforum.org)(xys2.dropin.org)◇◇

Wednesday, January 14, 2009

我们为什么会流鼻涕? ZZ

◇◇新语丝(www.xys.org)(xys3.dxiong.com)(www.xysforum.org)(xys2.dropin.org)◇◇

我们为什么会流鼻涕?

·方舟子·

我们通常在感冒、鼻腔发炎的时候才会注意到鼻涕的存在,那样子可
不太雅观。其实鼻腔里无时无刻都有鼻涕,也离不开鼻涕,它是保护身体
的一道屏障:鼻涕防止鼻腔粘膜干燥,湿润吸进的空气,粘住由空气中
吸入的灰尘、花粉、微生物,以免它们刺激呼吸道或引起感染。

一个健康人的鼻子每天要处理几百毫升的鼻涕。但是我们并没有天天
都在流鼻涕,这么多的鼻涕跑哪去了?一小部分蒸发掉了,一小部分干结
成了鼻屎,但是大部分——听了别恶心——被我们吞到肚子里去了。鼻腔
粘膜上长着纤毛,这些纤毛会从前向后摆动,鼻涕也就被往后送到咽部。
因为鼻腔和食道是相通的,所以大部分的鼻涕都被我们不知不觉地吞咽下
去了。

这听上去虽然恶心,但对人体并无害。鼻涕的成分除了水,还有蛋白
质、碳水化合物、盐以及一些脱落的细胞。鼻涕中的蛋白质主要是粘蛋白,
它是一种糖蛋白,被由碳水化合物组成的“糖衣”包着,这使得它能大量
地吸收水分。鼻涕中的其他蛋白质还包括抗体和溶菌酶,能够杀灭细菌、
病毒。这些成分会做为营养素被胃肠消化、吸收。当然,鼻涕中还含有
粘住的灰尘、花粉、微生物,不过这些杂质胃酸对付得了,不会给身体造
成麻烦。

有一部分鼻涕其实是眼泪。眼睛中的泪腺也无时无刻在制造泪水湿润眼
睛,我们之所以不会整天泪眼汪汪,是因为这些泪水都从连接眼睛和鼻腔
的泪管流到鼻子里,成为鼻涕的一部分。如果你大哭起来,一部分眼泪从
眼角流出,大部分还是涌进鼻腔,让你的鼻子“抽泣”,就有了“一把鼻涕
一把泪”。

不过大部分的鼻涕是鼻粘膜自己分泌的。鼻粘膜含有一种形状像高脚
杯的细胞——所以叫杯状细胞。杯状细胞制造出很多粘蛋白,粘蛋白被释
放到细胞外头后,大量地吸收水分,体积能膨胀600倍。杯状细胞一天只
需要制造1毫升的粘蛋白,就足以满足鼻腔的正常需要了。

如果鼻腔受到了刺激或被感染,鼻涕的分泌量就会激增,这很自然,
因为鼻涕的一个主要功能就是要清除吸入的杂质嘛。例如,感冒病毒入侵
了鼻细胞,或者过敏体质的人吸入了花粉、粉尘,免疫系统就会制造相应
的抗体试图消灭这些抗原。抗体分布在鼻腔中的肥大细胞的表面上,肥大
细胞的内部含有大量的一种叫组胺的活性物质,抗原和抗体结合后,就会
刺激肥大细胞把组胺释放出去。组胺进而刺激杯状细胞制造更多的粘蛋白,
也就产生了更多的鼻涕。同时,组胺也能引起血管扩张、通透性增加,血
液中的水分渗出来,白细胞也跟着跑出来要消灭病原体。这不仅进一步增
加了鼻涕的量,而且导致了鼻腔堵塞。过量的鼻涕一部分流了出来,还有
一部分被堵在了后头。

所以鼻塞、流鼻涕其实是免疫系统给我们制造的不适,是一种过敏反
应。组胺需要和细胞表面的组胺受体相结合才会有这些作用,那么如果能
不让组胺与其受体结合,就可以减轻鼻塞、流鼻涕的症状。抗过敏药、感
冒药经常用的就是这类组胺拮抗剂,例如马来酸氯苯那敏(又叫扑尔敏),
它们和组胺竞争,抢着与组胺的受体结合,让组胺结合不上去,就抑制住
了过敏反应。组胺拮抗剂经常与伪麻黄碱之类的减充血剂一起使用,后者
可以让鼻腔的血管收缩,从而减轻鼻腔堵塞。把组胺拮抗剂、减充血剂以
及解热镇痛药(例如对乙酰氨基酚,又叫扑热息痛)、镇咳药(例如右美
沙芬)掺在一起,就成了很有效的复方感冒药。市场上著名的感冒药(例
如“泰诺”、“白加黑”)的组成都基本相同,超不出这四种成分。

正常的鼻涕是无色透明的,也就是所谓清鼻涕。感冒时一开始流出的
也是清鼻涕,之后鼻涕会变得浓一些,成了白色。再往后流出的就可
能是绿色的浓鼻涕了,看上去就像脓一样,特别是如果继发了细菌感染,
更是如此。为什么鼻涕成了绿色的了?和脓一样,因为它含有大量的嗜中
性粒细胞。嗜中性粒细胞虽然属于白细胞,却是绿色的。

免疫系统发现有病原体入侵人体时,开始调兵遣将,嗜中性粒细胞就
是最早赶到战场的。嗜中性粒细胞是被血液送来的,但是它却跑到血管之外
作战。它是一种吞噬细胞,它的作战方式是把细菌“吃”进去,在细胞里
用各种武器将病原体杀死。武器之一是向细菌释放消毒剂——次氯酸(家用
漂白剂的主要成分)。次氯酸是由嗜中性粒细胞内的髓过氧物酶制造的,髓
过氧物酶的结构和叶绿素有个共同点,都含有二氢卟酚环,这个特殊结构
决定了它们的颜色:绿色。因此,浓鼻涕会是绿色的,是因为它含有很多嗜
中性粒细胞,而嗜中性粒细胞又含有很多绿色的髓过氧物酶。

用来制作寿司芥末酱的山嵛菜的根茎也含有大量的类似的过氧物酶,所
以做出的酱也是绿色的。幸好,山嵛菜刺鼻的辣味来自异硫氰酸,而不是过
氧物酶——否则,流着辣辣的鼻涕该有多难受!

2009.1.11.

(《中国青年报》2009.1.14)

(XYS20090114)

◇◇新语丝(www.xys.org)(xys3.dxiong.com)(www.xysforum.org)(xys2.dropin.org)◇◇

Thursday, January 08, 2009

恩格尔系数

恩格尔系数

  恩格尔系数(Engel's Coefficient)是食品支出总额占个人消费支出总额的比重。
  19世纪德国统计学家恩格尔根据统计资料,对消费结构的变化得出一个规律: 一个家庭收入越少,家庭收入中(或总支出中)用来购买食物的支出所占的比例就越大,随着家庭收入的增加,家庭收入中(或总支出中)用来购买食物的支出比例 则会下降。推而广之,一个国家越穷,每个国民的平均收入中(或平均支出中)用于购买食物的支出所占比例就越大,随着国家的富裕,这个比例呈下降趋势。
  简单地说,一个家庭的恩格尔系数越小,就说明这个家庭经济越富裕。反之,如果这个家庭的恩格尔系数越大,就说明这个家庭的经济越困难。当然数据越精确,家里的经济情况反应也就越精确。