1秒钟的命运
在这种关键的时刻,那些平时慢慢悠悠顺序发生和并列发生的事,都压缩在这样一个决定一切的短暂时刻表现出来。这一时刻对世世代代作出不可改变的决定,它决定着一个人的生死、一个民族的存亡甚至整个人类的命运。
命运总是迎着强有力的人物和不可一世者走去。多少年来,命运总是使自己屈从于这样的个人:凯撒、亚历山大、拿破仑,因为命运喜欢这些像自己那样不可捉摸的强权人物。
在这种关键的时刻,那些平时慢慢悠悠顺序发生和并列发生的事,都压缩在这样一个决定一切的短暂时刻表现出来。这一时刻对世世代代作出不可改变的决定,它决定着一个人的生死、一个民族的存亡甚至整个人类的命运。
命运总是迎着强有力的人物和不可一世者走去。多少年来,命运总是使自己屈从于这样的个人:凯撒、亚历山大、拿破仑,因为命运喜欢这些像自己那样不可捉摸的强权人物。
中医支持者说:中医日渐萎缩的现状,是现在好中医生太少,“原则上的中 医”绝对是英明而伟大的,而且疗效比西医好,副作用比西医小。
然后他们又开始忽悠了:只要西医没有承诺100%的治愈率,就不要相信西医, 谁能保证你不是那少数呢?
“数典忘祖”,每逢提起批评中医的话题,总是有人扣这样的帽子。那就来 谈谈数典忘祖的中医们吧。
青蒿和青蒿素
中医几千年来,就是没治好过疟疾。上世纪70年代,有一个中医院的人从黄 花蒿里提取“青蒿素”,注意是提取,不是通过传统中医的洗晒炮制等工序, “青蒿素”对疟疾有奇效。通过中医的理论指导得到的药就是中药,以现代医学 理论为指导,得到的药物就是现代医药。
我们这些总有一死的人的命运多么奇特!我们每个人在这个世界上都只作一个短暂的逗留;目的何在,却无从知道,尽管有时自以为对此若有所感。但是,不必深思,只要从日常生活就可以明白:人是为别人而生存的──首先是为那样一些人,我们的幸福全部依赖于他们的喜悦和健康;其次是为许多我们所不认识的人,他们的命运通过同情的纽带同我们密切结合在一起。我每天上百次的提醒自己:我的精神生活和物质生活都是以别人(包括生者和死者)的劳动为基础的,我必须尽力以同样的分量来报偿我所领受了的和至今还在领受着的东西。我强烈地向往着俭朴的生活。并且时常发觉自己占用了同胞的过多劳动而难以忍受。我认为阶级的区分是不合理的,它最后所凭借的是以暴力为根据。我也相信,简单淳朴的生活,无论在身体上还是在精神上,对每个人都是有益的。
我完全不相信人类会有那种在哲学意义上的自由。每一个人的行为不仅受着外界的强制,而且要适应内在的必然。叔本华说:“人虽然能够做他所想做的,但不能要他所想要的。”这句格言从我青年时代起就给了我真正的启示;在我自己和别人的生活面临困难的时候,它总是使我们得到安慰,并且是宽容的持续不断的源泉。这种体会可以宽大为怀地减轻那种容易使人气馁的责任感,也可以防止我们过于严肃地对待自己和别人;它导致一种特别给幽默以应有地位的人生观。
要追究一个人自己或一切生物生存的意义或目的,从客观的观点看来,我总觉得是愚蠢可笑的。可是每个人都有一些理想,这些理想决定着他的努力和判断的方向。就在这个意义上,我从来不把安逸和享乐看作生活目的本身──我把这种伦理基础叫做猪栏的理想。照亮我的道路,是善、美和真。要是没有志同道合者之间的亲切感情,要不是全神贯注于客观世界──那个在艺术和科学工作领域里永远达不到的对象,那么在我看来,生活就会是空虚的。我总觉得,人们所努力追求的庸俗目标──财产、虚荣、奢侈的生活──都是可鄙的。
我有强烈的社会正义感和社会责任感,但我又明显地缺乏与别人和社会直接接触的要求,这两者总是形成古怪的对照。我实在是一个“孤独的旅客”,我未曾全心全意地属于我的国家、我的家庭、我的朋友,甚至我最为接近的亲人;在所有这些关系面前,我总是感觉到一定距离而且需要保持孤独──而这种感受正与年俱增。人们会清楚地发觉,同别人的相互了解和协调一致是有限度的,但这不值得惋惜。无疑,这样的人在某种程度上会失去他的天真无邪和无忧无虑的心境;但另一方面,他却能够在很大程度上不为别人的意见、习惯和判断所左右,并且能够避免那种把他的内心平衡建立在这样一些不可靠的基础之上的诱惑。
我的政治理想是民主政体。让每一个人都作为个人而受到尊重,而不让任何人成为被崇拜的偶像。我自己一直受到同代人的过分的赞扬和尊敬,这不是由于我自己的过错,也不是由于我自己的功劳,而实在是一种命运的嘲弄。其原因大概在于人们有一种愿望,想理解我以自已微薄的绵力,通过不断的斗争所获得的少数几个观念,而这种愿望有很多人却未能实现。我完全明白,一个组织要实现它的目的,就必须有一个人去思考,去指挥、并且全面担负起责任来。但是被领导的人不应当受到强迫,他们必须能够选择自己的领袖。在我看来,强迫的专制制度很快就会腐化堕落。因为暴力所招引来的总是一些品德低劣的人,而且我相信,天才的暴君总是由无赖来继承的,这是一条千古不易的规律。就是由于这个缘故,我总强烈地反对今天在意大利和俄国所见到的那种制度。像欧洲今天所存在的情况,已使得民主形式受到怀疑,这不能归咎于民主原则本身,而是由于政府的不稳定和选举制度中与个人无关的特征。我相信美国在这方面已经找到了正确的道路。他们选出了一个任期足够长的总统,他有充分的权力来真正履行他的职责。另一方面,在德国政治制度中,为我所看重的是它为救济患病或贫困的人作出了可贵的广泛的规定。在人生的丰富多彩的表演中,我觉得真正可贵的,不是政治上的国家,而是有创造性的、有感情的个人,是人格;只有个人才能创造出高尚的和卓越的东西,而群众本身在思想上总是迟钝的,在感觉上也总是迟钝的。
讲到这里,我想起了群众生活中最坏的一种表现,那就是使我厌恶的军事制度。一个人能够洋洋得意的随着军乐队在四列纵队里行进,单凭这一点就足以使我对他鄙夷不屑。他所以长了一个大脑,只是出于误会;光是骨髓就可满足他的全部需要了。文明的这种罪恶的渊薮,应当尽快加以消灭。任人支配的英雄主义、冷酷无情的暴行,以及在爱国主义名义下的一切可恶的胡闹,所有这些都使我深恶痛绝!在我看来,战争是多么卑鄙、下流!我宁愿被千刀万剐,也不愿参与这种可憎的勾当。尽管如此,我对人类的评价还是十分高的,我相信,要是人民的健康感情没有遭到那些通过学校和报纸而起作用的商业利益和政治利益的蓄意败坏,那么战争这个妖魔早就该绝迹了。
我们所能有的最美好的经验是奥秘的经验。它是坚守在真正艺术和真正科学发源地上的基本感情。谁要体验不到它,谁要是不再有好奇心,也不再有惊讶的感觉,谁就无异于行尸走肉,他的眼睛便是模糊不清的。就是这样奥秘的经验──虽然掺杂着恐惧──产生了宗教。我们认识到有某种为我们所不能洞察的东西存在,感觉到那种只能以其最原始的形式接近我们的心灵的最深奥的理性和最灿烂的美──正是这种认识和这种情感构成了真正的宗教感情;在这个意义上,而且也只是在这个意义上,我才是一个具有深挚的宗教感情的人。我无法想象存在这样一个上帝,它会对自己的创造物加以赏罚,会具有我们在自己身上所体验到的那种意志。我不能也不愿去想象一个人在肉体死亡以后还会继续活着;让那些脆弱的灵魂,由于恐惧或者由于可笑的唯我论,去拿这种思想当宝贝吧!我自己只求满足于生命永恒的奥秘,满足于觉察现存世界的神奇结构,窥见它的一鳞半爪,并且以诚挚的努力去领悟在自然界中显示出来的那个理性的一部分,倘若真能如此,即使只领悟其极小的一部分,我也就心满意足了。
当我们在做一些管理平台类的程序(比如Windows的任务管理器)时,往往需要限制程序只能打开一个实例。解决这个问题的大致思路很简单,无非是在程序打开的时候判断一下是否有与自己相同的进程开着,如果有,则关闭自身,否则正常运行。
但是,问题就出在如何判别是否有一个与自己相同的进程开着上面。我在网上搜索了一下相关的文章,发现对于这个问题的解决不外乎以下几种方式:
1、在进程初始化时使用::CreateMutex创建一个互斥对象,通过检测互斥对象是否已存在来确定该程序是否已经运行。
该方式的确可以很容易的实现判别程序实例是否已存在,只需要在InitInstance方法开头添加以下语句:
m_hUnique = ::CreateMutex(NULL, FALSE, UNIQUE_ID);
if (GetLastError() == ERROR_ALREADY_EXISTS) return FALSE;
UNIQUE_ID为具有唯一性的字符串,一般可以用VC++为主程序头文件自动生成的包含标识宏(就是.h文件顶上的那一长串宏定义),当然,也可以用工具自己手动生成,随君所好了^^。要注意的是别忘了在ExitInstance方法中用 CloseHandle(m_hUnique) 将该互斥对象关闭。但这种方式存在一个很大的问题,就是很难获取已打开程序实例的主窗口句柄。而我们绝大多数时候,都需要将那个程序实例的主窗口激活。为了获取主窗口句柄,就需要再用到后面提到的其他方法。
2、遍历所有已经打开的进程主窗口,比较窗口标题,如果找到满足条件的标题,则表示程序已经运行,并激活该窗口。
这种方式虽然可以找到程序的主窗口,但问题明显:A.如果窗口标题经常变化怎么办(比如标题中会带有打开文档的文件名)?B.如果其他程序的主窗口标题恰好与该程序的相同怎么办?
第一个问题可以通过写注册表或者写INI文件的方式来解决。即当主窗口标题改变时,将新标题写入注册表或者INI文件。不过这种解决方式也忒麻烦了吧-_-|| 第二个问题就麻烦了,至少我还没有找到好的解决方案。如果非要说一个,那我提议你“想尽办法”“不择手段”的将窗口标题设的和别的程序绝对不同。不过估计搞定了这步,你半条命也快没了。
3、用::SetProp给主窗口添加一个具有唯一性的属性值,以便在进程初始化的时候可以通过遍历所有窗口的该属性来判断。
添加属性值的代码一般可以放在InitInstance方法的最后,如下:
::SetProp(m_pMainWnd->m_hWnd, “UNIQUE_ID”, (HANDLE)UNIQUE_ID);
UNIQUE_ID是一个具有唯一性的整数值(为什么不能用字符串?因为字符串的比较需要将字符串读取出来,而这儿只能记录字符串地址,在别的程序里这个地址无意义,所以无法读出这个字符串)。这种方式仅有的问题就出在如何确定该整数值是具有唯一性的。我们后面提出的解决方法,就是在这种方法的基础上发展出来的。
在总结了上述几种方式的利弊之后,我发现,只需要为程序建立一个具有唯一性的整数值,一方面可以通过这个值是否存在来判断程序是否已经运行(::CreateMutex其实也是类似的概念),另一方面可以通过将这个值赋给主窗口,以便能够找到已打开的程序实例的主窗口句柄。于是,ATOM量便派上用场了(ATOM变量类型等同于WORD,因而是一个整数值)。
ATOM量本质上就是散列表的键标识符,其对应键值为一个字符串。每个程序都有自己的ATOM量表,同时Windows也有一个全局的ATOM表。我们要用的方法就是,为程序创建一个全局的ATOM量,通过这个量是否存在来判断程序是否已经运行,并通过将这个量作为属性值添加到主窗口来标识这个主窗口。具体过程如下:
1、给主程序App类添加一个ATOM类型的成员变量:m_aAppId,作为程序ID。
2、在InitInstance方法开头添加以下代码(UNIQUE_ID是具有唯一性的字符串宏):
m_aAppId = ::GlobalFindAtom(UNIQUE_ID); //查找程序ID是否存在
if (m_aAppId) //程序ID存在,激活已打开的程序实例的主窗口
{
HWND hWnd = ::GetWindow(::GetForegroundWindow(), GW_HWNDFIRST);
for (; hWnd; hWnd = ::GetWindow(hWnd, GW_HWNDNEXT))
{
if ((ATOM)::GetProp(hWnd, “APP_ID”) == m_aAppId)
{
if (::IsIconic(hWnd)) ::ShowWindow(hWnd, SW_RESTORE); //还原最小化的窗口
::SetForegroundWindow(hWnd); //激活窗口
m_aAppId = 0; //赋值0是为了防止ExitInstance中将找到的ATOM量删除
break;
}
}
return FALSE;
}
else //程序ID不存在,创建程序ID
{
m_aAppId = ::GlobalAddAtom(APP_ID);
}
3、在InitInstance方法最后为主窗口添加标识属性:
::SetProp(m_pMainWnd->m_hWnd, “APP_ID”, (HANDLE)m_aAppId);
4、在ExitInstance方法中添加下面代码以删除程序ID:
if (m_aAppId) ::GlobalDeleteAtom(m_aAppId);
心得:该方法所用到的ATOM量是一个应用广泛的技术,如::CreateMutex、::SetProp等API函数都间接用到了ATOM量。利用它,我们可以做很多需要用到唯一性验证的事情。
在所有的预处理指令中,#Pragma 指令可能是最复杂的了,它的作用是设定编译器的状态或者是指示编译器完成一些特定的动作。#pragma指令对每个编译器给出了一个方法,在保持与C和C ++语言完全兼容的情况下,给出主机或操作系统专有的特征。依据定义,编译指示是机器或操作系统专有的,且对于每个编译器都是不同的。
其格式一般为: #Pragma Para 其中Para 为参数,下面来看一些常用的参数。
变脸是川剧艺术中一朵瑰丽的奇葩,更在上世纪60年代被周恩来总理钦点为文化机密.
然而,这项国家二级机密如今却在互联网上廉价出售,目前变脸绝迹已经流散到日本,德国的一些低俗舞台上去,不能不令人扼腕叹息。
某些国人的机密意识远远不及商品意识,或者说,经济意识。无论是国宝还是古玩,情报还是机密,只要对方出银子,立马拱手将国家的利益和威严殷勤相送,可笑,那敦煌的道士,在被批判了近一个世纪,依然后继有人,将出卖艺术的尊严和民族的遗产发扬光大。
无论是国家机密还是商业机密,流失的原因不外乎两个,首先,是国人的“好客”,外国“友人”一旦到来,马上拉着拽着去参观自己的生产线,当“友人”们提出疑问,迅速知无不言,言无不尽,生怕对方不能掌握自己的独家绝技。所以,很多的“友人”们大摇大摆得揣着我们的机密,回到自己的国家献宝.
我不想提景泰蓝的泄露,我不只想问,某些国人,可不可以稍微提高一下自我保护意识,不要让心血和资产一起流失,文化侵略,文化盗窃,对于文化强盗,我们要学会翻脸无情!
还有一种更为可耻的行为,就是用乞丐的嘴脸来出卖一切可以出卖的情报和机密。变脸事件或许对某些人来说,是无关痛痒的,但是由小看大,当国家一定将某项文化列为机密,受到相关法律保护时,一旦有人蓄意出卖,则是无视法律的尊严,同时也破坏了法律系统的完善。
在呼吁保护机密的同时,我也在质疑我们的导向,为什么民族艺术家们的收入越来越少,为什么民族艺术的市场越来越小?为什么一个普通的流行歌手可以拿到百万的出场费,而我们的京剧艺术家,高音歌唱家,民间手工艺人门还在苦苦艰守着清规戒律,甚至为吃饭发愁?
谁主导了媒体,谁主导了潮流,谁在为文化的低俗化而痛心疾首,谁还会为了推倒的牌楼而振臂高呼,以人为本,以民族利益为最高利益,这在商品社会里致关重要。
中医典籍,浩如烟海,穷毕生之精力,亦难尽阅。故学习中医,当有所为,有所不为。若欲面面俱到,必然浅尝辄止,杂而不精!
如何学习中医?有人云:先学四大经典,然后了解《周易》,并熟读《医理传真》、《医学衷中参西录》等名家著作。个人以为,此方案更适合立志成为中医大师者学习,而对于初学自学者来说,有些不切实际,且不切实用。
现代中医是指由中医院校培养出来的中医。传统中医是指通过师带徒的形式培养出来的中医。现代中医与传统中医的区别表现在如下几个方面:
在渲染多边形网格对象到场景中的时候,离观察者越远的对象应该越模糊,同时离观察者越近的物体应该越清楚,这就是深度排序(depth sorting)。深度排序有两种常用的方法。
第一种方法称为画家算法(painter’s algorithm)。这种方法将对象划分成不同的多边形,由后往前对这些多边形进行排序,再按照排好的顺序绘制出这些多边形。采用这种方法绘制多边形,能够确保前面的多边形总是在其后多边形之前进行绘制。
深度排序的第二种方法称为z缓冲方法(z- buffer),它是图形硬件设备使用最多的方法。这种方法依赖于像素,每个像素都有一个z值(z值是像素距离观察者的距离)。当每个像素被写入时,渲染器首先检查是否已经存在一个z值更小的像素,如果不存在,这个像素就被绘制出来;如果存在,就跳过该像素。
许多 3D图形加速卡都有一个内置的z缓冲,这也是深度排序选择z缓冲方法的原因。在应用程序中使用z缓冲,最容易的方法就是在创建设备对象以及设置显示方式的时候初始化z缓冲,如下所示: