2008年11月9日星期日

晚睡强迫症..其实真的有医学上的真正名字!叫"拖延症" (转寄)

发信人: exceedfang (户方走召), 信区: DP.THU
标 题: 晚睡强迫症..其实真的有医学上的真正名字!叫"拖延症" (转载)
发信站: 水木社区 (Sat Nov 8 09:45:50 2008), 站内

【 以下文字转载自 PhD 讨论区 】
发信人: sdg (帅呆哥), 信区: PhD
标 题: 晚睡强迫症..其实真的有医学上的真正名字!叫"拖延症" (转载)
发信站: 水木社区 (Fri Nov 7 23:19:40 2008), 站内

发信人: apacer (我宅故我在), 信区: P.No7
标 题: 晚睡强迫症..其实真的有医学上的真正名字!叫"拖延症"
发信站: 水木二站 (Fri Nov 7 15:35:28 2008), 站内

拖延症
  
  Procrastination的形成
      
      1. 一个人认为自己5天之内可以做完一件事情,所以在离deadline还有15天的时候一点不着急,直到最后只剩5天了才开始。
      
      2. 这种紧迫感和焦虑往往促发人的斗志,会让自己觉得,自己只有在压力状态下才有做事情的状态。
      
      3.最后拿到成绩的时候,成绩往往不是很差,这样子就强化了自己最适合在之前短期高压的状态下工作的心态,并且对以后的行为不断进行自我暗示。这一个部分写得非常符合大部分有拖沓习惯的中国学生的经历。因为中国学生往往非常聪明,所以哪怕最后只剩一点点时间了,也会完成得不错;从而自认为自己最适合这样子的工作状态。周而复始,反复循环。
    
    Procrastination的其他特点
      
      1. 没有自信。因为每次完成任务都达不到自己最高的能力,对自我能力的评估会越来越低。
      2. 我太忙。我一直拖着没做因为我一直很忙。
      3. 顽固。你催我也没有用。我准备好了自然会开始做。
      4. 操控别人。他们着急也没用,一切都要等我到了才能开始。
      5. 对抗压力。因为每天压力很大,所以要做的事情一直被拖下来。
      6. 受害者心态。我也知道自己怎么会这样,别人能做得自己做不到。
      
      Procrastination的浅层原因
      
      1. 太难
      2. 太耗时间
      3. 没有相关知识技能
      4. 害怕别人知道自己做不好
      
      Procrastination深层原因,以及解决方法
      
      1.完美主义。所有事情都要达到一个很高的境界,要一次做好,所以不愿意匆匆忙忙开始,要万事俱备才行。解决方法:对自己说现在的状态就已经很好,可以开始了。每有一点进展都鼓励自己。意识到一点错误都不犯是不可能的。伟大的作家,诗人,艺术家都是断断续续完成他们的杰作的,自己也可以如此。
      
      2. 抵制与敌意。这个老师对我态度太差了,所以我不高兴作他布置的作业。解决办法:要意识到,不完成作业受害的是自己。不能仅仅因为一个老师的态度而影响到自己的前途。
      
      3.容易颓废。任务太难了,或者别人都不需要做我干吗要做,不能忍受持续做这件事情,等明天再做吧。但是往往明天到了,心里还是不高兴做,又继续往后推。解决办法:寻找一切可以找到的帮助,设法降低事情的难度,取得进展;暂时推迟自己想要放弃的心态,每天能多做一点就多做一点。这一点也很符合很多中国学生的现状。因为不是人人都对自己的课题感兴趣的,所以容易产生厌倦感,所以不容易定下心来完成相关任务。解决的办法如上所说,向别人寻求帮助,听取建议,同时可以把任务分成比较容易的小块,化整为零,告诉自己其实每一个小部分都很容易就能完成。
     
      4. 自我贬低。如果常常不能很好地完成任务,自己对自己的能力的估计会越来越低,即使以后完成好了,也认为是运气。解决办法:接受别人对自己工作的赞扬;自己对自己进行勉励。
      
      治疗的步骤:
      1. 意识到自己的拖沓是完全没有必要的。
      2. 把拖沓的原因一条条写出来
      3. 一条条克服这些原因
      4. 开始做事
  本文译自 Procrastination: Ten Things To Know 。
  拖拉是阻碍个人成功的绊脚石,却时常出现在我们左右。
  作者是两位对拖拉 (Procrastination) 进行研究的心理学教授,希望大家能从中有所收获,
  译者MetalDudu@Blog
    1. 百分之二十的人认为自己是长期拖拉的人。对他们来说拖拉是一种生活方式,虽然并不适应它。这种状态充满了他们的生活。他们不能按时付帐单,他们忘了买音乐会的门票,他们直到圣诞前一天才去买礼物……
    
    2. 拖拉并非不重要,虽然通常我们不把它当作一个严重问题。它其实是一个自我调节的深奥问题。通常我们都宽容别人拖拉的借口,这也是问题的根源。
    
    3. 拖拉并不是时间管理或者计划方面的问题。拖拉并不因个人对时间的估计能力而不同,虽然这些人会更乐观一些。Ferrari 博士强调说:"要一个拖拉的人做一个有计划的人,就像让一个长期消沉的人马上振奋起来一样。"
    
    4. 拖拉不是天生的。它是从周围的人学来的,但并不直接。它可能来自强权的家教,拖拉甚至可能是一种反抗的形式。这种家庭环境下,朋友对拖拉者的宽容会助长这种习惯。
    
    5. 拖拉的饮酒者会有更高的酒精需求量。拖拉的人会喝的更多,这是自我调节有问题的表现。
    
    6. 拖拉的人对自己撒谎。比如"我更想明天做这件事",或者"有压力我才能做好",但实际上并非如此。拖拉者的另一个谎言是时间压力会让他们更有创造力,其实这只是他们的感觉而已,他们是在挥霍时间。
    
    7. 拖拉的人不断找消遣的事儿,特别是自己不需要承诺什么。查看电子邮件就是绝佳的目标,这样的事情成为他们调节情绪(比如害怕失败)的一个途径。
    
    8. 拖拉并非一模一样。拖拉的人有不同的原因,Ferrari 博士定义了三种基本的拖拉者:
    * 鼓励型,或者说找刺激型,他们盼着最后几分钟忙碌带来的快感
    
    * 逃避型,他们回避失败的恐惧,甚至害怕成功,但实际上他们非常关心别人怎么看自己,他们更希望别人觉得他不够努力而不是能力不足。
    
    * 决心型,他们没法下决心。不下决心就可以回避对应对事情的拖拉。
    
    9. 拖拉带来的损失巨大。健康是其中之一,研究表明拖拉的人更容易患病。拖拉也影响人的情绪,也会破坏团队协作和人际关系。
    
    10. 拖拉会改变人的行为,但不会耗费多少精神力量。这并不意味着一个念头就能马上改变。这个问题可以通过高度规范的认知行为治疗来解决。对行事拖拉的人进行劝诫就如同让抑郁症患者高兴起来那么困难。"法拉利教授认为,劝导对拖拉症患者来说作用微乎其微,关键还是要靠自己下定摆脱拖拉惯性的决心,这需要很大的精神动力才能完成。试着结合以下10个窍门,可能会更容易一些。记住,每达到其中一项,你就离成功进了一步。
   
  明日复明日 "拖延病"的处方
    case 1:我经常担心事做的不够完美。但尽力做了完美主义者,可做事的效率不是很高。经常接到任务以后,心里想的是尽快完成,可总是一拖再拖。为什么?
    →病名:担心引起的拖延病。
    →处方:总想把事情做的完美一些,但压力越大就越担心做不好事迟迟不敢付出行动。总是把万事的结果定为,不是成功就是失败、只要作错了一点,做的再好也都是错的。出了事就算不是自己的责任也会揽到自己身上。首先得醒悟"自找担心"是多么消极的事情。假如,在准备报告时,最初就能写出完美的报告是不可能的。一定会有一些偏差也有理论上说服力较小的地方。所以,完美是不存在的。追寻一下到现在为止你所做过是事有多少事是完美的,一定没有特别完美的事。但一定也没耽误什么事。
    
    case 2:一旦接到什么任务总会担心"我一定能做好吗?做错了教授会不会责备我?"在想这些的时候时间已悄悄溜走了。
    →病名:自我指责的拖延病
    →处方:对过去一些失败的记忆会变成一种压力。想治好自我指责的病,可以把责任都推托到别人身上。不要因为善良的自卑感而把一切问题都自己扛。这样只会让你的自信心下降。轻视自己之前先把责任都推到别人身上吧!然后,用另一种方式解释自己的失败。比如:在小组功课中有了一个好的创意。但因为没有时间,结果在报告中露掉了。在这种情况发生的时候,如果是自我指责的人就会想:"哎!因为没有发表这个创意,以后教授知道了会不会扣我的学分呢?"取代上面想法的应该是"我真了不起,能有这么好的创意。"或"下次写报告时用就可以了。那一定比这次轻松多了。"
    
    case 3:我特别的执着,一旦问题袭来的时候就感到不安和急躁。问题解决之前做不好任何事情。
    →病名:执着引起的拖延病
    →处方:"怎么会这样?""到底那时候为什么那么做?"即使在过去的事情里找原因也不会有什么改变。澄清一件事也解决不了问题。因为事情是由几种因素合成的。什么时候才能把事情一一都弄清楚呢?在公司写企划案的时候写不好的原因也有很多种。期限太短或过去写过一次结果被上司责骂了一顿,留下了创伤。还有就是还没找到资料等等。澄清问题对以后没有任何帮助。所以,要往可以解决问题的方向行动。做企划案时应该想:"这次应该跟其他公司比较着做看看了。" 如果这样想着行动的话一定有效。

  case 4:我总是没有自信,怎么努力也改不了。为了从苦海中摆脱出来看过不少有关的书籍但都徒劳无功。因为没有自信做起事也不顺利。不知道能不能改变一下这样的我。
    →病名:封闭自我印象引起的拖延病
    →处方:在苦恼的边缘走不出来的人是因为被自己错误的想法封锁住了。一定要从误区的牢笼里走出来。为了打破错误的想法扪心自问一下自己"假如,我是能做到○○事的人,应该先想些什么?先做些什么?"假如,做报告的时候,因为忙于某些事迟迟没做出来。这时,应该想"如果我是个做报告的能手,应该先做什么事呢?"考试成绩不好,但还得向父母交代的时候应该想"假如,我是个成绩不好,但能向父母主动表白的人,应该先做什么事?"想这些问题的时候,不能用太长的时间。第一个想到的就是正确答案。所以直接实第一个想发就可以了。
    
    case 5:我在所有决定中没有自信。当决定了做某件事的时候,往往因为不确定是对的还是错的而烦恼。这样一来事就一拖再拖。不是因为我懒,而是因为每次都不能付出行动。所以人们都说我办事的效率不高。
    →病名:不安感或懒惰引起的拖延病
    →处方:你在想自己的想法对不对那是因为"为了想这个办法用了那么长时间,付出了那么大的努力,但要是失败了怎么办?就不就功亏于溃了吗?"因为这些不安感一直浮现在脑海里。所以不想做任何事情。假如,要学习但桌子很乱找书都很不容易。明知道应该收拾一下,但怕麻烦迟迟不行动。这时候,父母要唠叨个不停,就有了叛逆的心理更是不收拾。这时你应该冷静下来好好想一想。是打扫一下好还是睁一只眼闭一只眼过的好。然后再决定。把最初的想法扭转过来很难,但一旦习惯了就觉得行动比拖延更轻松。


--
白羊Ari0321 Q 天秤Lib0923 蓝树 V 糖 少年股神
金牛Tau0420 hhc 天蝎Sco1024 sf 花碗
双子Gem0521 表姐 peas n 射手Sag1123 qood
巨蟹Can0622 萝卜 香 m alin 山羊Cap1222 木木 nofor 84
狮子Leo0723 丸子 no7 gevivi 水瓶Aqu0120 ttw 璜
处女Vir0823 ftp 双鱼Pis0219 旺夫


※ 来源:・水木二站 2.newsmth.net・[FROM: 202.127.23.*]

2008年9月16日星期二

服务器主节点无故当机

时间今天下午15:41,实验室一同学说连不到服务器了,我是一直在连着的,但是一检查,果然是连不上了,完全没有相应。
赶紧到了机房查看,发现主节点node1上也没有相应,到其他节点上,因为主节点问题,导致nfs出现问题,也都登不上,无奈重启。
重启之后恢复正常,出现问题的原因仍然不明。

2008年9月15日星期一

今天首次做了炒土豆丝,失败:(

在家就很喜欢炒土豆丝的味道,来到城市以及其他地方都没有那种感觉。
前段时间把妹妹叫了过来,吵了一次家里的味道,现在吃完了,想自己做着吃。
凭着记忆,切了2个土豆(实践证明,一个人一个就行了),加了两个辣椒,蒜、姜,洋葱,反正是记着以前吃的时候又的都弄了。
还是技术不行啊,光准备土豆丝,从洗到把批削掉,再切成丝,反正我是1点半从实验室出来,然后借着自行车到菜市场买了馒头辣椒,然后昨做完就2点半了,哎。
手忙脚乱的吵了一通,竟然粘锅底了,还好没有很糊,加上调料,基本上不算糊,但是最后出来的结果有点有点面的感觉,味道也没有家里的感觉,有点淡,最后只好到下面买了一瓶啤酒凑合着吃了。
一直以为炒土豆丝会容易些,实践证明。。。,以后再慢慢学吧

2008年5月24日星期六

硕、博士论文致谢词产生器

不得不说有些人太牛了
硕、博士论文致谢词产生器
http://blog.alwaysmylove.net/acknowledgement/index.php

2008年5月20日星期二

升级服务器批处理作业管理系统torque

今天老板的作业终于算的差不多了,尽管还有两个大的没算,也管不了那么多了,占了那么多天服务器了也该停停了。
春节过后升级服务器时,那边公司的维护把原来的OpenPBS升级为现在的加强版Torque-2.1.2,同时我也想充分发挥软件自身带的强大功能。但是当自己想应用某个功能时才发现是在2.1.3之后才有的,而且已经发展到2.3.0了,因此觉得有必要升级一下。
很早就把这个版本的编译好了,就等老板的作业算完make install了。当然小心谨慎是必须的,把原来的都备份过了,以防万一再恢复过来。
安装是简单的,不过为了谨慎还是现在主节点和两个控制节点上先装上,测试一下是否正常。在这三个主机上make install,很顺利,没有发现问题。但这时实际上原来的那套还在运行-linux的一个特性,不知道是优点还是缺点,即使把整个机器格式化了还会在运行!
首先是主节点,需要重建一下pbs服务器,以下操作:
qterm -t quick,快速的把原来的pbs_server给停掉;
killall pbs_sched,把原来的调度器给搞掉;
/usr/local/sbin/pbs_server -t create,重建pbs服务器,选择yes;
过一会儿之后把进程里还存在的pbs_server给搞掉,killall pbs_server;
然后运行
/usr/local/sbin/pbs_server;
/usr/local/sbin/pbs_sched;
再导入cluster的信息
qmgr < pbssrv.lab(自己写的所有节点的简单信息)
但是这个信息有点简单了,需要再初始化一下服务器,使其本身得到服务器各节点的详细信息:
qterm -t quick
/usr/local/sbin/pbs_server;
最后进入其他节点(比如测试的node2,node3)
killall pbs_mom,杀掉原来的mom
/usr/local/sbin/pbs_mom,重启升级后的;
这时整个初始的pbs服务器就完成了,接下来需要对服务器再作一些设置,比如队列设置,服务器设置等。

经过测试正常,最后就把所有的都升级了。

本来想把默认的调度器换成maui(一个免费的更为强大的调度器),但是无奈觉得还没有搞清楚,以后再说吧;
另外本来想这次把服务器调的控制性更大些,但是有陷入两难,是对用户进行约束还是对用户的作业进行约束?前者的话就直接到用户了,感觉不好做人,对后者则显示不出来用户的等级。实际上也是也不是没有办法,但就是觉得麻烦,等下次再搞吧。

追悼地震中遇难的同胞

evince 中文乱码解决

装上debian之后一直没有好好用,一个很重要的原因是那个pdf阅读器不好好工作,看中文文档,有些可以很好显示,有些就是乱码,估计是字体缺失原因导致的,一直也没有做,今天索性解决解决。
万事不绝问google,先搜下再说,果然有和我类似的错误,虽然不是debian,不过是在ubuntu上也无所谓,怎么也是一脉相通的。
当然主要还是字体的原因,sudo apt-get install xpdf-chinese-simplified,装上了可还是有乱码。然后又见到一问说装上这个软件
poppler-data就可以解决
首先从其网站上下载最新的data包,目前是0.2版本:
http://poppler.freedesktop.org/poppler-data-0.2.0.tar.gz
下载之后tar xzvf poppler-data-0.2.0.tar.gz解压缩之
最后直接sudo make install datadir=/usr/share就可以了
然后再用evince打开原来乱码的,发现也不乱码了,ok。
另外还可以再装上一个xpdf也是很不错很小巧的。

追悼地震中遇难的同胞

2008年5月19日星期一

国难日注意事项

第一:三天国丧期间,着装要正式、肃穆,不要穿戴太时尚或者颜色鲜艳的衣服、鞋帽,女同志不要用鲜艳的口红眼影化彩装,不要佩 戴时尚的首饰;
  第二:工休的时候不许开音乐、不许打牌,不许打闹嬉戏;
  第三:要注意维护公共场所的气氛,在街上行走的时候,不要三五成群的嘻闹;
  第四:下班之后不要出入舞厅、卡拉OK厅、台球社,也不要在家里放歌曲,唱卡拉OK、举办朋友聚会;
  第五:可以佩戴一些表示哀悼、追念的标志或饰品;
  第六:今天下午14:28起,停止工作三分钟。
  第七:这是第一次为百姓举行国丧,有些百姓会不习惯、不重视,也不知道该怎么做,希望大家尽量在亲朋好友中传递这些信息,并随时纠正看到的不正确行为。

--
今天,我们都是汶川人!我们都是中国人!

追悼地震中遇难的同胞

2008年5月16日星期五

妈妈不是这么当的

今天傍晚妹妹过来了,说她们要组织一个歌唱比赛,把我的音箱给拿走了,在送走她们的路上看到了一个很不忍的一幕。
在走到体育馆的旁边的路上时,前面有两个妈妈带了两个小孩,一个妈妈在前推着一个自行车,小孩在后座上坐着,另一个妈妈拉着一个小车,小孩坐在上面。这个时候两个小孩估计不知道什么原因好像在唱歌,声音比较大,不过看着好像很开心的样子,两个妈妈也在说话。
我 们当时正要超过她们走过去,这个时候后面的那个妈妈估计嫌她儿子声音太高,太吵,猛地一脚跺在小车上,大叫“不要说话了”,吓我一跳。估计吓小孩不轻,立 马不说了,看着很委屈的样子,我在旁边一直担心不知道会不会给他日后带来心里阴影。看着那个小孩很可爱的样子,想不通作为妈妈怎么那么狠心,一点不像妈 妈。

地震回忆

从汶川地震发生到现在已经是103个小时了。需要写点东西记录一下。
那是这星期一,早上有事去新区了,办完事,回到学校,在外面吃吃饭都2点 了,到了实验室刚把电脑打开,胳膊刚放在桌子上,就发现头开始左右晃,吓我一跳,我以为头发晕了。因为早上没有吃饭就跑去新区了,一上午只是忙也没有来得 及休息,想不会因为这个而晕倒吧,但是自己刚吃过饭的,不至于吧。这时候有个师弟站起来说地震了,站起来觉得应该是地震了。
不过当时自己还算是冷静,觉得中原地方不会发生大的,所以大家都下来的时候,我还在犹豫是不是有必要下来,甚至要不要把电脑带下来。最后还是下来了,没带电脑。(不过觉得这次是侥幸,以后有这种事情还是不能犹豫)
下来楼之后,外面已经许多人了,老师们也都下来了,大家都在谈论这个,我当时的反应是河南都发生地震了,肯定周边有大的了,但不知道是哪?
过了一会儿,逐渐平息,人们又都回去了,我马上联到水木社区-常上的一个bbs,也没看帖就发了一个,等发完一看才知道全国各地都有震感,冥冥中感觉地震会比较大。很快就有人贴出来了美国地址调查局检测出来的结果,原来是四川那边,距离成都50多公里。
一 看到这个,马上想到ex-gf在那里,虽然不在一起但终究是曾经在一起的人,急忙给她打电话,电话一直打不通,想一定是大家用的比较多。想家里应该没啥 事,但是觉得还是有必要打一下,也是不通。得不到信息很是焦急。这里要说下,中午刚来的时候打开电脑的时候是先看了邮件,有一封她发过来的邮件说早上上班 头晕,她想可能是加班的原因,造成身体不适,还说以后少加班,当时我还给她发了短信安慰了下,现在想来这个很有可能是地震的前兆啊。地震发生时会产生次声 波,这种声波是频率低于20Hz的一种声波,会引起人心脏心律不齐,头晕等。
电话打不通,只能给她发了个短信,还好一会儿她回复了短信才知道她那 里还算安全,但是也是震的很厉害,她们楼的天花板都有掉的,而且还余震不断,她们现在都不敢在楼上工作或休息了,都在一楼大厅睡觉,一旦发生余震可以及时 跑到楼外。但是因为要向灾区送救援物资,现在飞机和火车都是有限度开放,许多人都被困在当地,还好那里震级不大,一般不会出生命安全问题。
这几天全国都把目光关注到四川汶川了,我也是当中一员。每天到实验室的第一件事就是上新闻网站,上bbs查看当前救灾的情况,看着死亡人数一天一涨的,心里真是不舒服,尤其是看到那些照片,那些小学生被压在教学楼下,我敢保证那眼泪是不由自主的。
令 人欣慰的是这次灾难虽然是天灾,但是政府的表现没有让我们失望,尤其是以及66岁的温总理,刚在南阳考察完,来不及休息就在灾后2个小时就到了灾区,指挥 救灾。这次的新闻媒体也不错,给我们了第一手的资料,使谣言终。还有我们广大的网友,大家积极关心灾区情况,出钱出力。
现在最关键的72小时过去了,被埋的人的生还机会已经很渺茫了,但是大家还是“只要有一线希望,就付出百倍努力”,我们只能默默祝福了!

2008年5月11日星期日

开题报告的撰写方法(通用)

一、 开题报告的含义与作用
  开题报告,就是当课题方向确定之后,课题负责人在调查研究的基础上撰写的报请上级批准的选题计划。它主要说明这个课题应该进行研究,自己有条件进行研究以及准备如何开展研究等问题,也可以说是对课题的论证和设计。开题报告是提高选题质量和水平的重要环节。
  研究方案,就是课题确定之后,研究人员在正式开展研之前制订的整个课题研究的工作计划,它初步规定了课题研究各方面的具体内容和步骤。研究方案对整个 研究工作的顺利开展起着关键的作用,尤其是对于我们科研经验较少的人来讲,一个好的方案,可以使我们避免无从下手,或者进行一段时间后不知道下一步干什么 的情况,保证整个研究工作有条不紊地进行。可以说,研究方案水平的高低,是一个课题质量与水平的重要反映。
二、 写好研究方案应做的基础性工作
  写好研究方案一方面要了解它们的基本结构与写法,但“汝果欲学诗,功夫在诗外”,写好开题报告和研究方案重要还是要做好很多基础性工作。首先,我们要 了解别人在这一领域研究的基本情况,研究工作最根本的特点就是要有创造性,熟悉了别人在这方面的研究情况,我们才不会在别人已经研究很多、很成熟的情况 下,重复别人走过的路,而会站在别人研究的基础上,从事更高层次、更有价值的东西去研究;其次,我们要掌握与我们课题相关的基础理论知识,理论基础扎实, 研究工作才能有一个坚实的基础,否则,没有理论基础,你就很难研究深入进去,很难有真正的创造。因此,我们进行科学研究,一定要多方面地收集资料,要加强 理论学习,这样我们写报告和方案的时候,才能更有把握一些,制定出的报告和方案才能更科学、更完善。
三、课题研究方案的结构与写法
  课题研究方案主要包括以下几个方面:
  (一)课题名称
  课题名称就是课题的名字。这看起来是个小问题,但实际上很多人写课题名称时,往往写的不准确、不恰当,从而影响整个课题的形象与质量。这就是平常人们所说的“只会生孩子,不会起名字”。那么,如何给课题起名称呢?

  第一,名称要准确、规范。
  准确就是课题的名称要把课题研究的问题是什么,研究的对象是什么交待清楚,课题的名称一定要和研究的内容相一致,不能太大,也不能太小,要准确地把你研究的对象、问题概括出来。
  规范就是所用的词语、句型要规范、科学,似是而非的词不能用,口号式、结论式的句型不要用。因为我们是在进行科学研究,要用科学的、规范的语言去表述我们的思想和观点。课题就是我们要解决的问题,这个问题正在探讨,正开始研究,不能有结论性的口气。

  第二,名称要简洁,不能太长。
  不管是论文或者课题,名称都不能太长,能不要的字就尽量不要,一般不要超过20个字。这次各个学校课题申报表中,我看名称都比较简洁,我就不再多说了。

  (二) 课题研究的目的、意义
  研究的目的、意义也就是为什么要研究、研究它有什么价值。这一般可以先从现实需要方面去论述,指出现实当中存在这个问题,需要去研究,去解决,本课题 的研究有什么实际作用,然后,再写课题的理论和学术价值。这些都要写得具体一点,有针对性一点,不能漫无边际地空喊口号。不要都写成是坚持党教育方针、实 施素质教育、提高教育教学质量等一般性的口号。主要内容包括:⑴ 研究的有关背景(课题的提出): 即根据什么、受什么启发而搞这项研究。 ⑵ 通过分析本地(校) 的教育教学实际,指出为什么要研究该课题,研究的价值,要解决的问题。

  (三) 本课题国内外研究的历史和现状(文献综述)。
  规范些应该有,如果是小课题可以省略。一般包括:掌握其研究的广度、深度、已取得的成果;寻找有待进一步研究的问题,从而确定本课题研究的平台(起点)、研究的特色或突破点。 参考总课题报告。

  (四)课题研究的指导思想
  指导思想就是在宏观上应坚持什么方向,符合什么要求等,这个方向或要求可以是哲学、政治理论,也可以是政府的教育发展规划,也可以是有关研究问题的指 导性意见等。对于范围比较大,时间又很长的课题来讲,大家在总的方面,有了一个比较明确的指导思想,就可以避免出现理论研究中的一些方向性错误。这里,我 给大家介绍一下何老师在《佛山市教育现代化进程》研究方案里写的课题指导思想里的一段话:“这一课题研究要依据党中央和国家要求,依据广东省委省政府的决 定,依据佛山市委市政府的决定,结合国情、市情和佛山市教育改革与发展的实际,……力求揭示佛山市教育现代化进程的规律及表现形式,为佛山市教育现代化实 践服务”。另外,还有一份供大家参考一下,广东省教育科研“九五”规划重点课题《学科教学与素质教育》研究和实验方案里面,课题指导思想这样写:“坚持以 马克思主义、毛泽东思想和邓小平理论为指导,从我国经济领域实现“两个转变”和我省2010年基本实现现代化对基础教育的要求出发,针对在中小学学科教学 中实施素质教育的有关理论和实践问题,开展全方位的改革实验和理论研究,有效指导广大中小学教师在学科教学中深入教学改革,全面贯彻教育方针,全面提高教 育质量,从而推进我省基础教育事业向前发展,为把广东建成教育强省作出贡献 ”。

  (五) 课题研究的目标
  课题研究的目标也就是课题最后要达到的具体目的,要解决哪些具体问题,也就是本课题研究要达到的预定目标:即本课题研究的目标定位,确定目标时要紧扣 课题,用词要准确、精练、明了。相对于目的和指导思想而言,研究目标是比较具体的,不能笼统地讲,必须清楚地写出来。只有目标明确而具体,才能知道工作的 具体方向是什么,才知道研究的重点是什么,思路就不会被各种因素所干扰。

开题报告的格式(通用)

由于开题报告是用文字体现的论文总构想,因而篇幅不必过大,但要把计划研究的课题、如何研究、理论适用等主要问题说清楚,应包含两个部分:总述、提纲。

1 总述

开题报告的总述部分应首先提出选题,并简明扼要地说明该选题的目的、目前相关课题研究情况、理论适用、研究方法、必要的数据等等。

2 提纲

开题报告包含的论文提纲可以是粗线条的,是一个研究构想的基本框架。可采用整句式或整段式提纲形式。在开题阶段,提纲的目的是让人清楚论文的基本框架,没有必要像论文目录那样详细。

3 参考文献

开题报告中应包括相关参考文献的目录

4 要求

开题报告应有封面页,总页数应不少于4页。版面格式应符合以下规定。

开 题 报 告

学 生:

一、 选题意义

1、 理论意义

2、 现实意义

二、 论文综述

1、 理论的渊源及演进过程

2、 国外有关研究的综述

3、 国内研究的综述

4、 本人对以上综述的评价

三、 论文提纲

前言、

一、

1、

2、

3、

··· ···

二、

1、

2、

3、

··· ···

三、

1、

2、

3、

结论

四、论文写作进度安排

毕业论文开题报告提纲

一、开题报告封面:论文题目、系别、专业、年级、姓名、导师

二、目的意义和国内外研究概况

三、论文的理论依据、研究方法、研究内容

四、研究条件和可能存在的问题

五、预期的结果

六、进度安排

2008年5月6日星期二

could not open default font 'fixed'

五月二号,早上,正在家里甛睡,一通电话把我给叫醒了,一师第打电话说管理机房的老师说一空调坏了,温度达到53摄氏度了,幸亏发现的早,把服务器都关了。
三号匆匆赶回,还好服务器安然无恙,空调只是没有了制冷剂。四号空调恢复,机器重新启动。
但是重新启动的时候出现了问题,到了该启动到图形界面的时候,出现了错误:
Could not init font path element unix/:7100, removing from list!

Fatal server error:
could not open default font 'fixed'
但是之前并没有对x的配置文件/etc/X11/xorg.conf做过改变啊。

网上搜了下原来是权限导致的。

下面是找到的解决方法,试了最后一种,更保险一点,果然解决,算是有学了点东西。
一,注释掉FontPath unix/:7100可以启动,但中文字体有问题
二,在startx命令前运行xfs & 也可,但有点啰嗦

实际上,之所以不能启动是因为用户清空 /tmp 目录造成,这里面有一个隐含的文件
/tmp/.font-unix/fs7100,该文件属性为 srwxrwxrwx 长度为0,这是一个字体链接文
件。这个文件删除就导致上面所说的问题,只要产生出这个文件即可真正的“修好”不
能启动的问题。实际上,运行xfs &就是立即生成这个文件。系统中已经运行了xfs服务
却不能自动生成这个文件(没有权限)。
另外需要说明的是生成这个文件在重起一次电脑后就丢失了,原因在于生成这个文件的
程序xfs &是以当前用户身份运行的,一旦系统退出即自动清理掉生成的临时文件,因
此需要将这个文件的所有者和用户组改成系统默认的xfs即可。

总体来说,解决这个问题就这么几步:
1. 在登录后提示符下输入 xfs &
2. 运行 chown /tmp/.font-unix
3. 运行 chown /tmp/.font-unix/fs7100
4. 运行 chgrp /tmp/.font-unix
5. 运行 chgrp /tmp/.font-unix/fs7100
6. 重起一次即可(或者杀掉当前 xfs 重起系统的 xfs)

2008年3月18日星期二

为什么我的debian时间总是不对

很郁闷不知道自己装的debian时间等设置的没问题,可是总是出错,比北京时间快了8个小时,即使调整过来,下次又变回来了。网上搜了下,果然有高手解答了,原来是读取BIOS出错。

人家写的非常好,兹引用过来:

Re: 为什么我的debian时间总是不对

发信人: cathayan (失群孤雁逆风飞), 信区: LinuxApp
标 题: Re: 为什么我的debian时间总是不对
发信站: 水木社区 (Thu Jul 12 14:28:58 2007), 站内

要有耐心:

以下针对Debian sid。

先说时区的配置。以前Debian有个好胜的时区配置工具,叫tzconfig,现在也没有
了。但配置时区倒也简单,主要是两个文件:

/etc/localtime
/etc/timezone

timezone这个文件是个文本,里面只需要写一行自己的时区就行,我们这里就是上
海,Asia/Shanghai(谁知道为什么不是北京呢?)。 localtime这个文件的类型
不清楚,里面就写了些timezone data,它可以从系统自带时区文件那里拷贝,位
置在:

/usr/share/zoneinfo

从这个目录下找到Shanghai拷贝到/etc下的localtime即可。有人说建个连接也可
,这样还可以保证系统数据有变化时不必再管。

设定了时区,还要确定Linux的时间方案。Linux支持UTC时间,Coordinated
Universal Time,也就是世界协调时,也就是本初子午线上的时间,它和以前的格
林威治标准时(GMT)的区别似乎是它是由多个原子钟平均出来的。在
/etc/default/rcS这个文件中,设定了系统是否使用UTC,UTC=yes就是用。

计算机自己还有自己的时间,也就是硬件时间,hard clock,也就是存在BIOS里那
个时间,关机也不会丢失。计算机启动时,就要读取这个时间。这个时间如果设定
为UTC(GMT),也就是伦敦那地方的时间,就要在rcS文件中设定UTC=yes,反之则
要设为no。

总之就是两种正确的设置:

BIOS=本地时间,UTC=no
BIOS=UTC时间,UTC=yes

一般来讲,BIOS里面都设定为当地时间,这是因为如果装双系统的话,Windows似
乎不懂utc,就会出问题。这时UTC=no。

如果一切顺利,到这时,进入Linux之后显示的时间应该是正确的了。但不少人的
机器,包括这回这台640m,仍旧不正确,而是比正确时间再往前跑了8小时。这里
的问题出在Linux读取硬件时间上了。

Linux读取这个硬件时间要用到hwclock这个命令:

hwclock --show :显示硬件时间
hwclock --systohc :将系统时间写入硬件
hwclock --hctosys :将硬件时间写入系统时间

在出问题的时候,hwclock 这一组命令的运行通常是不能成功的,错误经常是这样
的:

select() to /dev/rtc to wait for clock tick timed out

也就是不能读取/dev/rtc,也就是硬件时间。这又是因为某些机器的BIOS处理方式
和Linux的rtc内核模块之间出现了问题。

Linux又有3个这类模块,rtc/genrtc/rtc_dev,似乎是一个比一个新,而debian通
常自己用的是rtc这个老模块;但 Dell/ibm/acer等等厂商现在都可能使用新的
BIOS,这种BIOS和这个rtc就可能不对付。如果出现了上面那个timeout的问题,有
两种方法可以解决:

1, 给hwclock加参数,--directisa,也就是:

hwclock --directisa --show

如果运行成功,说明这个办法可行。则把此参数添加为hwclock的缺省参数即可。
在debian 4.0之后,可以直接在/etc/default/rcS中添加一行:

HWCLOCKPARS="--directisa“

而在4.0以前,可能只能在hwclock启动脚本中添加,/etc/init.d/hwclock.sh,把
里面的”/sbin/hwclock“ 全部替换为 ”/sbin/hwclock --directisa"。现在在
debian sid中,这个脚本的第一行其实是HWCLOCKPARS=,也可以像rcS一样添加参
数了。

2, 换用其他内核rtc模块,用如下方法测试哪个模块好用:

# modprobe rtc
# hwclock --show
# rmmod rtc
# modprobe genrtc
# hwclock --show
# rmmod genrtc
# modprobe rtc_dev
# hwclock --show
# rmmod rtc_dev

没有显示time out的就是好用的了,然后可以在blacklist中阻止不好用的,在
modules里面加上好用的那个。

用完这两个方法,hwclock应该能直接工作了,也就是可以读取硬件时间了。再配
上utc设置正确,重启之后时间就是对的了。

为了让BIOS时间更准确,除了可以找个精确的时间源,比如CDMA手机或是GPS,靠
自己的手指来精确设定BIOS时间之外,还可以用hwclock把准确的时间写入BIOS。
前一种方法细心点可以做到几秒误差,而后一种怎么也在1秒以下了。

安装ntpdate这个包,它可以从时间服务器上读取到正确的时间,精度还是很高的

aptitude install ntpdate
ntpdate pool.ntp.org

此时系统时间就已经是ntp的时间了,相当精确,把它写入硬件:

hwclock --systohc

这样BIOS时间也就很准了。以后开机没网络,没办法运行ntpdate的时候也都是准
的。

这里的关键有:bios时间,utc设定,rtc模块,hwclock读取,ntpdate对时。

【 在 bo0od (Share the world) 的大作中提到: 】
: 快说说
: 我郁闷很久了
: 我的一直是yes
: ...................

--

天末同云黯四垂,失行孤雁逆风飞
江湖寥落尔安归

九万里风安税驾,云鹏今悔不卑飞
海北天南总是归

※ 来源:·水木社区 newsmth.net·[FROM: 61.51.121.*]

2008年3月10日星期一

自己想做的事情

1,学业有成---正在进行中;
2,事业有成---1完成之后,进公司、高校均可,要求不高,够用即可;
3,爱情有成---不限时候,互相有爱,共同努力,共建家庭;
4,兴趣有成---计算机方面:希望对C精通,对一门脚本语言精通,如perl和shell编程,熟悉linux;其他方面:出去旅游一番。
... ...
有待补充

2008年3月6日星期四

cluster的安装调试[转载]

网上发现这篇文章,服务器以及安装的软件都和我们的非常类似,兹引用过来作为参考,我就不用写了,呵呵。


cluster的安装调试 (一)

cluster的安装调试
历时月余,实验室的机器总算装好了。
实验室的机器是5台双cpu的机器。tyan主板,amd 2200+MP cpu。1G内存。80g硬盘。
系统是rh9,mpich1.2.5 作业管理系统torque


第一部分 系统安装

第一步先把服务器(管理节点)装好。把ip设为192.168.1.4
装其它机器时是利用pxe安装的。参考了下面的帖子
《Kickstart+HTTP+DHCP+TFTP+PXElinux实现RedHat的网络自动安装》
具体实现的过程是这样的:
1、 配制一个HTTP服务器(当然也可以是NFS、FTP)及kickstart文件:
1)配好后,在HTTP的DocumentRoot目录下(一般为/var/www/html)建一个rh9目录,
用于放 RedHat9的安装文件。把RedHat9第一张安装盘的RedHat目录及下面的内容全部考
到这个目录下,把第二、第三张盘的RPMS目录下的rpm 包考到rh9/RedHat/RPMS目录下,
完成安装文件的考贝。service httpd restart开启HTTP服务。可以在浏览器内打入:
http://192.168.1.4/rh9看一下,是不是能看到RedHat目录。
2) 用redhat-config-kickstart命令做一个ks.cfg文件,注意在“安装方法”选项中
选HTTP,在“HTTP服务器:”中打入HTTP服务器的IP地址,在“HTTP目录:”中打入rh9,
其它的我就不多说了。做好后把这个ks.cfg 文件考到HTTP服务器的DocumentRoot/rh9目
录下。
3)在一台机器上做一下测试(注意:因为是自动安装,这台机器的上的数据可能全部
被格掉喔)。用光盘启动机器,在boot:提示符下打入:
linux ks=http://192.168.1.4/rh9/ks.cfg,
看一下是不是能实现自动安装,如果能,OK我们一半的工作已经做好了。
2、 配制DHCP、TFTP、和PXElinux。(当然这些服务可以和HTTP放在一台服器上)
1) 做一台TFTP服务器太容易了,用rpm –qa | grep tftp看一下tftp有没安装,没
有的话安装一下。用chkconfig tftp on 打开xinetd代理的tftp服务。
2)下面是我的dhcpd.conf文件:

ddns-update-style interim;
allow booting; #定义可以PXE 启动
allow bootp; #定义支持boottp
subnet 192.168.1.0 netmask 255.255.255.0 {

option routers 192.168.14; #定义默认网关
option subnet-mask 255.255.255.0;
option domain-name-servers 192.168.1.4; #定义nameServer
option time-offset -18000; # Eastern Standard Time

#range dynamic-bootp 192.168.168.12 192.168.168.254;
#default-lease-time 21600;
#max-lease-time 43200;

# You need an entry like this for every host
# unless you're using dynamic addresses #可PEX启动的主机的IP与MAC地址的邦定
host p1
{ hardware ethernet 00:00:E2:89:9B:DB;
fixed-address 192.168.1.201;
next-server 192.168.1.4; #TFTPServer的IP
filename "/pxelinux.0";#pxelinux loader文件位置 }
}

文件里节点机的mac地址很好找。把节点机的网络启动打开,启动机器。机器会显示寻找dhcp
的信息,屏幕显示的地址就是机器的mac地址。

3)配制PEXlinux。要远程启动机器,就必须要有PXElinux这个由syslinux、isolinux派生
出来的,支持PXE的 bootloader,它可以实现远程通过PEX启动一台机器。把/usr/lib/syslinux/pxelinux.0
考到/tftpboot目录下,把RedHat9第一张安装光盘上/image/pxeboot/initr.img和vmlinux也
考到/tftpboot目录下。在 /tftpboot建一个pxelinux.cfg目录,用于放syslinux的配制文件。
Sysconfig 的配制文件有现成的可用,在rh9第一张安装光盘isolinux/下有一个isolinux.cfg文件,把它考成 /tftpboot/default,把isolinux/*.msg考到 /tftpboot下(RedHat的安装光盘的Loader就是个isolinux,呵呵)。对default(也就是isolinux.cfg)作一 下修改,下面是我的default文件:
default local
prompt 1
timeout 30
display boot.msg
F1 boot.msg
F2 options.msg
F3 general.msg
F4 param.msg
F5 rescue.msg
F7 snake.msg
label local
localboot 0
label linux
kernel vmlinuz
append initrd=initrd.img devfs=nomount ramdisk_size=9216
label text
kernel vmlinuz
append initrd=initrd.img devfs=nomount ramdisk_size=9216
label expert
kernel vmlinuz
append expert initrd=initrd.img devfs=nomount ramdisk_size=9216
label ks
kernel vmlinuz
append ks initrd=initrd.img devfs=nomount ramdisk_size=9216
label lowres
kernel vmlinuz
append initrd=initrd.img lowres devfs=nomount ramdisk_size=9216
label autoinstall
kernel vmlinuz
append ks=http://192.168.1.4/rh9/ks.cfg initrd=initrd.img devfs=nomount ramdisk_size=9216 nofb


cat一下/tftpboot/boot.msg文件:
splash.lss
- To Local boot 02Red Hat07 Linux , type:
0f07.
- To install or upgrade 02Red Hat07 Linux in graphical mode,
press the 0f linux07 key.

- To install or upgrade 02Red Hat07 Linux in text mode, type:
0flinux text 07.

- To Auto Install 02Red Hat07 Linux , type:
0flinux autoinstall 07.
- Use the function keys listed below for more information.

02[F1-Main] [F2-Options] [F3-General] [F4-Kernel] [F5-Rescue]07

理论上应该可以实现自动安装,可是也许是因为主板上集成了2个网卡。总之无法实现自动
安装,但是可以实现网络启动。不过这也够了。下面说说安装
在安装节点机的时候有几个包没有选,结果在后来配置服务时出来些麻烦。集群需要的服务
主要有NIS NFS SSH RSH所以在安装系统时要注意这个几个服务的rpm一定选上了。当然
还有一些库文件。在安装节点机的时候rsh-server,xinet.d,ligbf2c没有装上,运行程序时报
错,弱了半天。

本文由 amao 于2004年12月14日 03:30 PM 发表 | 评论 (1)

cluster的安装 (二)

第二部分

下面是集群需要的几个服务的配置
1 rsh
配置rsh-server, 下面的操作必须以root 身份执行。
编辑文件/etc/hosts.equiv, 在其中加上本机主机名(单独占一行)。如果该文件不存在则
创建一个。将所主机名加到文件/etc/hosts.equiv 中。此文件在每个机子都建立一份。
physics --------> 管理节点主机名
p1 --------> 计算节点主机名
p2
p3
p4
编辑/etc/xinet.d/rlogin
找到 disable = yes
把yes改成no
– 开启rsh 服务:
/sbin/chkconfig rsh on
/etc/init.d/xinetd start

测试rshd 的配置。以普通用户(非root) 登录并运行命令:
rsh 主机名/bin/hostname
如果配置正确该命令应该显示本机主机名。如果出错可查看/var/log/messages 文件中的
错误信息。

下面介绍的方法使用NIS (Network Information Service, 也叫做SUN Yellow Pages) 管
理用户帐号,使用NFS (Network File System) 共享用户目录。
将所有机器的主机名放在/etc/hosts 文件中。可以在所有机器上使用同样的/etc/hosts 文
件,它包含如下形式的内容:
127.0.0.1 localhost.localdomain localhost
192.168.1.201 p1
192.168.1.202 p2
192.168.1.203 p3
192.168.1.204 p4
192.168.1.4 physics
(按真实情况替换其中的主机名和IP 地址)。

首先根据情况选择一台机器作为NIS 和NFS 服务器,我们将该机器称为服务结点或主结点
机,而其它机器称为从结点机。主结点机和从结点机的配置方式不同,下面将分别介绍。

2 设置NFS主结点机
=======================================
" 创建目录:
mkdir -p /home/local
将/usr/local 链接到/home/local:
/bin/rm -rf /usr/local
ln -s /home/local /usr/.
(注: 如果以前的/usr/local 中安装有有用的文件, 则在执行上述命令前应该将其拷贝或移
走)。"
=======================================
上面的内容并没有用到。NFS服务器,我共享了以下3个目录:
/home ----------->用于存放用户的文件
/usr/local ----------->用于存放共享的软件
/redhat ----------->用于存放系统的安装文件

确认在主结点机上安装了nfs-utils 包。开启NFS 服务:
/sbin/chkconfig nfs on
/sbin/chkconfig nfslock on
/etc/init.d/nfslock restart
/etc/init.d/nfs restart

在文件/etc/exports 中加入下面一行:
/home *(rw,async,no_root_squash)
/usr/local *(ro,async,no_root_squash)
/redhat *(ro,async,no_root_squash)
它将/home 目录输出给所有机器。(注: 出于安全考虑可以限制仅将目录输出给指定的结
点机, 及将no_root_squash 改成root_squash。请用命令man 5 exports 查看相关参数
的写法)。

输出指定目录(/home):
exportfs -a
(也可重新启动系统)。
exportfs -v
查看共享的目录
其他的参数man一下


在结点机
===================================================
"创建目录:
mkdir -p /home "
===================================================
运行命令
showmount -e physics
可以看到共享的目录

在文件/etc/fstab 中加入下面一行:
physics:/home /home nfs defaults 0 0
physics:/redhat /redhat nfs defaults 0 0
physics:/usr/lcoal /usr/local nfs defaults 0 0

以上改动在所有的节点机做一遍
运行命令:
/sbin/chkconfig netfs on
它使得系统启动时自动挂接主结点机上的/home 目录。
运行命令:
mount /home
(也可重新启动系统)。

===================================================
将/usr/local 链接到/home/local:
/bin/rm -rf /usr/local
ln -s /home/local /usr/.
(注: 如果以前的/usr/local 中有有用的文件, 则在执行上述命令前应该将其拷贝或移走)。
上述所有操作必须以root 身份执行。本步骤完成后,所有结点机上的/home 和/usr/local
目录的内容应该是一样的。在从结点机上可用命令df 检查挂接情况。
===================================================

3 设置NIS
以下描述中假设以‘stars’ 作为NIS 域名。
A 主结点机
确认安装了下述包:
ypserv, ypbind, yp-tools
在文件/etc/sysconfig/network 中加入下面一行:
NISDOMAIN=stars 开启NIS 服务:
/sbin/chkconfig ypserv on
/etc/init.d/ypserv start
初始化NIS 数据库:
/usr/lib/yp/ypinit -m
程序运行时按Ctrl-D, 然后按“y” 和回车。该命令将生成NIS 数据库。可以忽略
No rule to make target ...
之类的错误信息。
开启NIS 客户程序:
/sbin/chkconfig ypbind on
/etc/init.d/ypbind start
验证NIS 设置
– 命令“ypwhich” 应该显示出主结点机主机名。
– 命令“ypcat passwd” 应该显示出(主结点机上的) 用户帐号。

B 节点机
确认安装了下述包:
ypbind, yp-tools
在文件/etc/sysconfig/network 中加入下面一行:
NISDOMAIN=stars
开启NIS 客户程序:
/sbin/chkconfig ypbind on
/etc/init.d/ypbind start

C 验证NIS 设置
– 命令“ypwhich” 应该显示出主结点机主机名。
– 命令“ypcat passwd” 应该显示出主结点机上的用户帐号。
为了能够使用NIS 用户登录,还需要修改/etc/nsswitch.conf 文件,使其包含下述设置:
passwd: files nis
shadow: files nis
group: files nis
hosts: files nis dns
注意在从结点机上不要重复定义用户信息,即在从结点机上应该将所有NIS 用户(可用命令
“ypcat passwd” 显示出来) 从文件/etc/passwd 和/etc/shadow 中删除,将所有NIS
组(可用命令“ypcat group” 显示出来) 从文件/etc/group 中删除。
完成NIS 配置后,创建新的用户帐号只需在主结点机上进行(注意将用户的主目录放到
/home下), 然后运行命令“cd /var/yp; make” 即可。
如果在主结点机上修改了一个用户帐号信息,也应该运行一次上述命令以刷新NIS 数据库。
NIS 用户在从结点机上不能用“passwd” 命令修改用户口令,而必须用“yppasswd”
命令来修改。
上述所有操作必须以root 身份执行。

后来启动机器的时候,节点机在mount nfs 分区时显示“ no route to host" --这时候
netfs进程无法启动。后来在/etc/rc.d/rc3.d/S99local中加入一行 /etc/init.d/netfs start

本文由 amao 于2004年12月14日 03:52 PM 发表 | 评论 (0)

cluster的安装 (三)

第三部分 配置 mpich 和pbs

A. 安装mpich
编译时,用下面的命令
./configure --prefix=/usr/local/mpich-1.2.5 --disable-weak-symbols
然后 make
make install
编辑用户目录下的.bashrc文件
export MPICH_GNU=/usr/local/mpich1.2.5/
export MPICH=${MPICH_GNU}
export MPICH_LIB="{MPICH}/lib"
export MPICH_PATH="{MPICH}/bin"
export PATH="{MPICH_PATH}:${PATH}"
export LD_LIBRARY_PATH="/usr/local/lib/:{MPICH_LIB}:${LD_LIBRARY_PATH}"

B. 安装mpiexec

./configure --prefix=/usr/local/mpiexec/ --disable-mpich-gm
--with-pbs=/usr/local/torque/ --with-default-comm=mpich-p4 --disable-p4-shmem

make
make install

C. 安装pbs,即torque
./configure --prefix=/usr/torque --disable--gui
make
make install

在/etc/profile.d目录下编辑pbs.sh
export PATH=${PATH}:/usr/local/torque/bin:/usr/local/torque/sbin
export PBS_DEFAULT=physics
chmod 755 pbs.sh

1)设置服务端
[root@physics server_priv]# pwd
/usr/spool/PBS/server_priv

建立nodes文件
[root@physics server_priv]# cat nodes
p4 np=2
p3 np=2
p2 np=2
p1 np=2

创建pbs.conf在/etc 目录下
pbs_home=/usr/spool/PBS/
pbs_exec=/usr/local/torque/
start_server=1
start_mom=0
start_sched=1

2.)设置客户端 intall pbs_mom in node

1.
[root@node01 init.d]# pwd
/home/torque-1.1.0p0/src/tools/init.d
copy pbs ---> /etc/init.d/
copy pbs.conf --> /etc/
vi pbs.conf
pbs_home=/usr/spool/PBS/
pbs_exec=/usr/local/torque/
start_server=0
start_mom=1
start_sched=0

chmod 755 pbs.conf

2.
/home/torque-1.1.0p0/buildutils
sh pbs_mkdir mom
sh pbs_mkdir aux
sh pbs_mkdir default

3.
建立下面3个文件 config epilogue prologue
cd /usr/spool/PBS/mom_priv
vi config
$logevent 0x1ff
$clienthost physics

[root@p1 mom_priv]# pwd
/usr/spool/PBS/mom_priv
[root@p1 mom_priv]# cat epilogue
#!/bin/sh

sleep 5

PBS_HOME=/usr/spool/PBS
PBS_PREFIX=/usr/local/torque

function printline
{
for i in $(seq 1 40)
do
echo -n "-"
done
echo
}

printline
echo "Begin PBS Epilogue $(date)"
echo "Job ID: $1"
echo "Username: $2"
echo "Group: $3"
echo "Job Name: $4"
echo "Session: $5"
echo "Limits: $6"
echo "Resources: $7"
echo "Queue: $8"
echo "Account: $9"
echo -n "Nodes: "
for i in $(sort $PBS_HOME/aux/$1 | uniq)
do
echo -n "$i "
done
echo
echo

#echo "Killing leftovers..."
echo
echo "End PBS Epilogue $(date)"
printline

exit 0
[root@p1 mom_priv]#


[root@p1 mom_priv]# cat prologue
#!/bin/sh

PBS_HOME=/usr/spool/PBS
PBS_PREFIX=/usr/local/torque

function printline
{
for i in $(seq 1 40)
do
echo -n "-"
done
echo
}

printline
echo "Begin PBS Prologue $(date)"
echo "Job ID: $1"
echo "Username: $2"
echo "Group: $3"
echo -n "Nodes: "
for i in $(sort $PBS_HOME/aux/$1 | uniq)
do
echo -n "$i "
done
echo

echo "End PBS Prologue $(date)"
printline

#sleep 5

exit 0

4.
vi /home/torque-1.1.0p0/torque.setup
找到“pbs_server -t create” 注释掉这行
然后运行./torque.setup

5.
/etc/init.d/pbs start
把上面这行命令加入 /etc/rc.d/rc3.d/S99local

6.
启动pbs后,服务端和客户端
[root@node01 torque-1.1.0p0]# qmgr
Max open servers: 4
Qmgr:

Qmgr: l n node02
Node node02
state = free
np = 1
ntype = cluster
status = arch=linux,
uname=Linux node02 2.4.20-8 #1 Thu Mar 13 17:18:24 EST 2003 i686,
sessions=? 15201,nsessions=? 15201,nusers=0,idletime=1582,
totmem=1501464kb,availmem=1209188kb,physmem=449216kb,ncpus=1,
loadave=0.00,rectime=1123147821
可以查看其它节点的信息。

Qmgr: s s query_other_jobs = true 可以查看其它id的作业。

7. 提交作业
编写脚本 sub.pbs
#PBS -l nodes=4:ppn=2,walltime=168:00:00
#PBS -N cpi
#PBS -j oe
cd ~/pi
/usr/local/mpiexec/bin/mpiexec cpi

第一行 nodes 申请的节点数,ppn 每个节点运行的cpu个数 walltime 程序运行的时间
第二行 任务的名字
第三行 输出文件和错误信息都输出到同一个文件
第四行 进入要运行的文件的所在目录。
qsub sub.pbs

原文地址 http://www.nkstars.org/blog/archives/amao/cat_clusterceeec.html

2008年3月3日星期一

Kerberos的身份鉴别过程

Kerberos的身份鉴别过程

  在Kerberos协议的整个实现过程中,涉及几个身份鉴别过程,Kerberos Server对客户端身份的认证,服务器对客户端身份的鉴别,客户端对服务器身份的鉴别,下面的示意图(图5-8)能够更深入的反映Kerberos的这些身份鉴别过程:


图5-8 Kerberos密钥信息交换过程

   在AS交换阶段,Client端向KDC(上图细化为Kerberos Server)申请“许可票据”,KDC通过使用事先存储的共享客户端密钥(上图为红色密钥)来实现对Client身份的鉴别;在TGS交换阶段, Client端向KDC申请用于和服务器进行加密通信的会话密钥,KDC(上图细化为Ticket Granting Server)是通过鉴别Client端是否拥有AS交换阶段中Kerberos Server颁发的随机密钥(上图为粉红色密钥)来实现对Client身份的鉴别;在CS交换阶段,Server端通过验证Client端是否拥有TGS 服务器随机颁发的会话密钥(上图为褐色密钥)来鉴别Client端的身份,Client端通过验证Server端是否拥有服务器共享密钥(上图为青绿色密 钥)来鉴别Server端的身份。
  可见,在Kerberos工作的AS交换、TGS交换和CS交换三个阶段,所实现的身份鉴别过程均符合前面5.2.3小节中所提出的“基于对称加密的 模型”,所有鉴别机制的实现均依赖于被鉴别方是否拥有某一对称密钥来实现。

SSH使用及协议分析

SSH使用及协议分析
本文出自:http://xfocus.org 作者: yeye (2001-09-12 07:00:01)

SSH是一个用来替代TELNET、FTP以及R命令的工具包,主要是想解决口令在网上明文传输的问题。为了系统安全和用户
自身的权益,推广SSH是必要的。SSH有两个版本,我们现在介绍的是版本2。



安装SSH

具体步骤如下:


获得SSH软件包。 (ftp://ftp.pku.edu.cn:/pub/unix/ssh-2.3.0.tar.gz)


成为超级用户(root).


# gzip –cd ssh-2.3.0.tar.gz |tar xvf –


# cd ssh-2.3.0


# ./configure

注意,如果你希望用tcp_wrappers来控制SSH,那么在configure时需要加上选项“--with-libwrap=/path/to/libwrap/”,
用来告诉SSH关于libwrap.a 和tcpd.h的位置。


# make


# make install

和SSH有关的程序都放置在/usr/local/bin下,包括ssh,sftp,sshd2, ssh-keygen等。


二、配置

SSH的配置文件在/etc/ssh2下,其中包括sshd2的主机公钥和私钥:hostkey和hostkey.pub。这两个文件通常是在安装SSH时自动生成的。你可以通过下面的命令重新来生成它们:

# rm /etc/ssh2/hostkey*

# ssh-keygen2 –P /etc/ssh2/hostkey

而ssh2_config 文件一般情形下无需修改。


三、启动sshd2

每个要使用SSH的系统都必须在后台运行sshd2。用手工启动:

# /usr/local/bin/sshd2&

可以在“/etc/rc2.d/S99local”中加入该命令,这样系统每次启动时会自动启动sshd2。


四、用tcp_wrappers控制SSH

安装SSH的站点可以用tcp_wrappers来限制哪些IP地址可以通过ssh来访问自己。比如,在/etc/hosts.allow中加入

sshd,sshd2: 10.0.0.1

那么只有10.0.0.1可以通过ssh来访问该主机。


以上都是系统管理员完成的工作。下面我们说说普通用户如何使用SSH。


五、基本应用

每个用户在使用SSH之前,都要完成以下步骤:


在本地主机(比如,local.pku.edu.cn)上生成自己的ssh公钥和私钥。命令如下:

local# ssh-keygen

Generating 1024-bit dsa key pair

1 oOo.oOo.o

Key generated.

1024-bit dsa, teng@ns, Fri Oct 20 2000 17:27:05

Passphrase :************ /*在此输入你的口令,以后访问这台主机时要用。

Again :************ /*

Private key saved to /home1/teng/.ssh2/id_dsa_1024_a

Public key saved to /home1/teng/.ssh2/id_dsa_1024_a.pub


生成的私钥和公钥(id_dsa_1024_a和id_dsa_1024_a.pub)存放在你家目录的~/.ssh2目录下。和用户相关的SSH配
置文件都在~/.ssh2下。私钥由用户保存在本地主机上,而公钥需传送到远地主机的你自己的帐号的~/.ssh2下,如
果你要用ssh2访问本地主机的话。


在~/.ssh2下创建“identification”文件用来说明进行身份认证的私钥。命令如下:


local:~/.ssh2# echo "IdKey id_dsa_1024_a" > identification


3.同样地,在远地主机(比如,remote.pku.edu.cn)上完成上面步骤。

4.将本地(local.pku.edu.cn)下你自己(这里是“teng”)的公钥(id_dsa_1024_a.pub)拷贝到远地主机
(remote.pku.edu.cn)上你自己家目录下的.ssh2目录下,可命名为“local.pub”,一般用ftp上传即可。


在远地主机上,你自己家目录的.ssh2目录下,创建“authorization”文件,其中指定用来进行身份认证的公钥文件。
命令如下:

remote:~/.ssh2# echo “Key local.pub” > authorization


现在你可以从本地用ssh2登录到远地系统了。命令如下:

local# ssh remote.pku.edu.cn

Passphrase for key "/home1/teng/.ssh2/id_dsa_1024_a" with comment "1024-bit dsa,

teng@ns, Fri Oct 20 2000 17:27:05":***********


这时会要你输入你的ssh口令(Passphrase)。验证通过后,即登录到remote主机上。




第一部分:协议概览

整个通讯过程中,经过下面几个阶段协商实现认证连接。

第一阶段:

由客户端向服务器发出 TCP 连接请求。TCP 连接建立后,客户端进入等待,服务器向客户端发送第一个报文,宣告自己
的版本号,包括协议版本号和软件版本号。协议版本号由主版本号和次版本号两部分组成。它和软件版本号一起构成形如:

"SSH-<主协议版本号>.<次协议版本号>-<软件版本号>\n"

的字符串。其中软件版本号字符串的最大长度为40个字节,仅供调试使用。客户端接到报文后,回送一个报文,内容也
是版本号。客户端响应报文里的协议版本号这样来决定:当与客户端相比服务器的版本号较低时,如果客户端有特定的
代码来模拟,则它发送较低的版本号;如果它不能,则发送自己的版本号。当与客户端相比服务器的版本号较高时,客
户端发送自己的较低的版本号。按约定,如果协议改变后与以前的相兼容,主协议版本号不变;如果不相兼容,则主主
协议版本号升高。

服务器接到客户端送来的协议版本号后,把它与自己的进行比较,决定能否与客户端一起工作。如果不能,则断开TCP
连接;如果能,则按照二进制数据包协议发送第一个二进制数据包,双方以较低的协议版本来一起工作。到此为止,这
两个报文只是简单的字符串,你我等凡人直接可读。

第二阶段:

协商解决版本问题后,双方就开始采用二进制数据包进行通讯。由服务器向客户端发送第一个包,内容为自己的 RSA主
机密钥(host key)的公钥部分、RSA服务密钥(server key)的公钥部分、支持的加密方法、支持的认证方法、次协议版本
标志、以及一个 64 位的随机数(cookie)。这个包没有加密,是明文发送的。客户端接收包后,依据这两把密钥和被称
为cookie的 64 位随机数计算出会话号(session id)和用于加密的会话密钥(session key)。随后客户端回送一个包给服
务器,内容为选用的加密方法、cookie的拷贝、客户端次协议版本标志、以及用服务器的主机密钥的公钥部分和服务密钥
的公钥部分进行加密的用于服务器计算会话密钥的32 字节随机字串。除这个用于服务器计算会话密钥的 32字节随机字串
外,这个包的其他内容都没有加密。之后,双方的通讯就是加密的了,服务器向客户端发第二个包(双方通讯中的第一个
加密的包)证实客户端的包已收到。

第三阶段:

双方随后进入认证阶段。可以选用的认证的方法有:

(1) ~/.rhosts 或 /etc/hosts.equiv 认证(缺省配置时不容许使用它);
(2) 用 RSA 改进的 ~/.rhosts 或 /etc/hosts.equiv 认证;
(3) RSA 认证;
(4) 口令认证。

如果是使用 ~/.rhosts 或 /etc/hosts.equiv 进行认证,客户端使用的端口号必须小于1024。

认证的第一步是客户端向服务器发 SSH_CMSG_USER 包声明用户名,服务器检查该用户是否存在,确定是否需要进行认证。
如果用户存在,并且不需要认证,服务器回送一个SSH_SMSG_SUCCESS 包,认证完成。否则,服务器会送一个
SSH_SMSG_FAILURE 包,表示或是用户不存在,或是需要进行认证。注意,如果用户不存在,服务器仍然保持读取从客户端
发来的任何包。除了对类型为 SSH_MSG_DISCONNECT、SSH_MSG_IGNORE 以及 SSH_MSG_DEBUG 的包外,对任何类型的包都以
SSH_SMSG_FAILURE 包。用这种方式,客户端无法确定用户究竟是否存在。

如果用户存在但需要进行认证,进入认证的第二步。客户端接到服务器发来的 SSH_SMSG_FAILURE 包后,不停地向服务器
发包申请用各种不同的方法进行认证,直到时限已到服务器关闭连接为止。时限一般设定为 5 分钟。对任何一个申请,
如果服务器接受,就以 SSH_SMSG_SUCCESS 包回应;如果不接受,或者是无法识别,则以 SSH_SMSG_FAILURE 包回应。

第四阶段:

认证完成后,客户端向服务器提交会话请求。服务器则进行等待,处理客户端的请求。在这个阶段,无论什么请求只要成
功处理了,服务器都向客户端回应 SSH_SMSG_SUCCESS包;否则回应 SSH_SMSG_FAILURE 包,这表示或者是服务器处理请求
失败,或者是不能识别请求。会话请求分为这样几类:申请对数据传送进行压缩、申请伪终端、启动 X11、TCP/IP 端口
转发、启动认证代理、运行 shell、执行命令。到此为止,前面所有的报文都要求 IP 的服务类型(TOS)使用选项
IPTOS_THROUGHPUT。

第五阶段:

会话申请成功后,连接进入交互会话模式。在这个模式下,数据在两个方向上双向传送。此时,要求 IP 的服务类型(TOS)
使用 IPTOS_LOWDELAY 选项。当服务器告知客户端自己的退出状态时,交互会话模式结束。

(注意:进入交互会话模式后,加密被关闭。在客户端向服务器发送新的会话密钥后,加密重新开始。用什么方法加密由
客户端决定。)

第二部分:密钥的交换和加密的启动

在服务器端有一个主机密钥文件,它的内容构成是这样的:

1. 私钥文件格式版本字符串;
2. 加密类型(1 个字节);
3. 保留字(4 个字节);
4. 4 个字节的无符号整数;
5. mp 型整数;
6. mp 型整数;
7. 注解字符串的长度;
8. 注解字符串;
9. 校验字(4 个字节);
10. mp 型整数;
11. mp 型整数;
12. mp 型整数;
13. mp 型整数;

其中 4、5、6 三个字段构成主机密钥的公钥部分;10、11、12、13 四个字段构成主机密钥的私钥部分。9、10、11、12、13
五个字段用字段 2 的加密类型标记的加密方法进行了加密。4 个字节的校验字交叉相等,即第一个字节与第三个字节相等,
第二个字节与第四个字节相等。在服务器读取这个文件时进行这种交叉相等检查,如果不满足这个条件,则报错退出。

服务器程序运行的第一步,就是按照上面的字段划分读取主机密钥文件。随后生成一个随机数,再调用函数

void rsa_generate_key
(
RSAPrivateKey *prv,
RSAPublicKey *pub,
RandomState *state,
unsigned int bits
);

生成服务密钥,服务密钥也由公钥和私钥两部分组成。上面的这个函数第一个指针参数指向服务密钥的私钥部分,第二个指
向公钥部分。然后把主机密钥的公钥部分和服务密钥的公钥部分发送给客户端。在等到客户端回应的包后,服务器用自己的
主机密钥的私钥部分和服务密钥的私钥部分解密得到客户端发来的 32 字节随机字串。然后计算自己的会话号,并用会话号
的前 16字节 xor 客户端发来的 32 字节随机字串的前 16 字节,把它作为自己的会话密钥。注意,服务器把8个字节的
cookie、主机密钥的公钥部分、和服务密钥的公钥部分作为参数来计算自己的会话号。

再来看客户端。客户端启动后的第一步骤也是读取主机密钥。然后等待服务器主机密钥、服务密钥、和 8个字节的cookie。
注意,服务器发送来的只是主机密钥和服务密钥的公钥部分。接到包后,客户端立即把从服务器端收到cookie、主机密钥、
和服务密钥作为参数计算出会话号。从上面可以看出,服务器和客户端各自计算出的会话号实际是一样的。

随后,客户端检查用户主机列表和系统主机列表,查看从服务器收到的主机密钥是否在列表中。如果不在列表中,则把它加
入列表中。然后就生成 32 字节的随机字串,这个32 字节的随机字串就是客户端的会话密钥。客户端用 16字节的会话密钥
xor 它的前 16 字节,把结果用服务器的主机密钥和服务密钥进行双重加密后发送给服务器。产生 32字节随机字串时,随
机数种子由两部分组成,其中一部分从系统随机数种子文件中得到,这样来避免会话密钥被猜出。从上面服务器和客户端各
自计算会话密钥的过程可以看出,服务器和客户端计算出的会话密钥是一样的。

上面的这几步,总结起来就要交换确定会话密钥,因为无论是 des、idea、3des、arcfour、还是 blowfish 都是对称加密方
法,只有一把密钥,双方都知道了会话密钥才能启动加密。但会话密钥不能在网络上明文传送,否则加密就失去意义了。于
是使用 RSA 公钥体系对会话密钥进行加密。

RSA 公钥体系的办法是用公钥加密私钥解密,它依据这样的数学定理:

若 p、q 是相异的两个质数,整数 r 和 m 满足
rm == 1 (mod (p-1)(q-1))
a 是任意的整数,整数 b、c 满足 b == a^m (mod pq),
c == b^r (mod pq)。则
c == a (mod pq)。

具体实现是这样的:

(1) 找三个正整数 p、q、r,其中 p、q 是相异的质数,
r 是与(p-1)、(q-1)互质的数。这三个数 p、q、r
就是私钥(private key)。
(2) 再找一个正整数 m 满足 rm == 1 (mod(p-1)(q-1))。
计算 n = pq,m、n 就是公钥(public key)。
(3) 被加密对象 a 看成是正整数,设 a <>= n,
将 a 表示成 s (s < s =" 2^t)" b ="="" c ="="" c =" a。">q);
mpz_init(&prv->p);
mpz_init(&prv->e);
mpz_init(&prv->d);
mpz_init(&prv->u);
mpz_init(&prv->n);
mpz_init(&test);
mpz_init(&aux);

/* 计算质数 p、q 的位数 */
pbits = bits / 2;
qbits = bits - pbits;

retry0:

fprintf(stderr, "Generating p: ");

/* 生成随机质数 p */
rsa_random_prime(&prv->p, state, pbits);

retry:

fprintf(stderr, "Generating q: ");

/* 生成随机质数 q */
rsa_random_prime(&prv->q, state, qbits);

/* 判断是否 p == q,如果是返回重新生成 */
ret = mpz_cmp(&prv->p, &prv->q);
if (ret == 0)
{
fprintf(stderr,
"Generated the same prime twice!\n");
goto retry;
}
if (ret > 0)
{
mpz_set(&aux, &prv->p);
mpz_set(&prv->p, &prv->q);
mpz_set(&prv->q, &aux);
}

/* 确定 p、q 是否很接近 */
mpz_sub(&aux, &prv->q, &prv->p);
mpz_div_2exp(&test, &prv->q, 10);
if (mpz_cmp(&aux, &test) <>p, &prv->q);
if (mpz_cmp_ui(&aux, 1) != 0)
{
fprintf(stderr,
"The primes are not relatively prime!\n");
goto retry;
}

/* 从质数 p、q 导出私钥 */
fprintf(stderr, "Computing the keys...\n");
derive_rsa_keys(&prv->n, &prv->e, &prv->d,
&prv->u, &prv->p, &prv->q, 5);
prv->bits = bits;

/* 从质数 p、q 导出公钥 */
pub->bits = bits;
mpz_init_set(&pub->n, &prv->n);
mpz_init_set(&pub->e, &prv->e);

/* 测试公钥和密钥是否有效 */
fprintf(stderr, "Testing the keys...\n");
rsa_random_integer(&test, state, bits);
mpz_mod(&test, &test, &pub->n); /* must be less than n. */
rsa_private(&aux, &test, prv);
rsa_public(&aux, &aux, pub);
if (mpz_cmp(&aux, &test) != 0)
{
fprintf(stderr,
"**** private+public failed to decrypt.\n");
goto retry0;
}

rsa_public(&aux, &test, pub);
rsa_private(&aux, &aux, prv);
if (mpz_cmp(&aux, &test) != 0)
{
fprintf(stderr,
"**** public+private failed to decrypt.\n");
goto retry0;
}

mpz_clear(&aux);
mpz_clear(&test);

fprintf(stderr, "Key generation complete.\n");
}
_______________________________________________________

在上面的函数成一对密钥时,首先调用函数
_______________________________________________________

void rsa_random_prime
(
MP_INT *ret, RandomState *state,
unsigned int bits
)
{
MP_INT start, aux;
unsigned int num_primes;
int *moduli;
long difference;

mpz_init(&start);
mpz_init(&aux);

retry:

/* 挑出一个随机的足够大的整数 */
rsa_random_integer(&start, state, bits);

/* 设置最高的两位 */
mpz_set_ui(&aux, 3);
mpz_mul_2exp(&aux, &aux, bits - 2);
mpz_ior(&start, &start, &aux);
/* 设置最低的两位为奇数 */
mpz_set_ui(&aux, 1);
mpz_ior(&start, &start, &aux);

/* 启动小质数的 moduli 数 */
moduli = malloc(MAX_PRIMES_IN_TABLE * sizeof(moduli[0]));
if (moduli == NULL)
{
printf(stderr, "Cann't get memory for moduli\n");
exit(1);
}
if (bits < num_primes =" 0;" num_primes =" 0;" difference =" 0;"> 0x70000000)
{
fprintf(stderr, "rsa_random_prime: "
"failed to find a prime, retrying.\n");
if (moduli != NULL)
free(moduli);
else
exit(1);
goto retry;
}

/* 检查它是否是小质数的乘积 */
for (i = 0; i <>= small_primes[i])
moduli[i] -= small_primes[i];
if (moduli[i] + difference == 0)
break;
}
if (i < phi =" (p">= 0)
{
fprintf(stderr, "Warning: G=");
mpz_out_str(stdout, 10, &G);
fprintf(stderr,
" is large (many spare key sets); key may be bad!\n");
}

/* F = phi / G; the number of relative prime
numbers per spare key set. */
mpz_div(&F, φ, &G);

/* Find a suitable e (the public exponent). */
mpz_set_ui(e, 1);
mpz_mul_2exp(e, e, ebits);
mpz_sub_ui(e, e, 1); /*make lowest bit 1, and substract 2.*/
/* Keep adding 2 until it is relatively prime
to (p-1)(q-1). */
do
{
mpz_add_ui(e, e, 2);
mpz_gcd(&aux, e, φ);
}
while (mpz_cmp_ui(&aux, 1) != 0);

/* d is the multiplicative inverse of e, mod F.
Could also be mod (p-1)(q-1); however, we try to
choose the smallest possible d. */
mpz_mod_inverse(d, e, &F);

/* u is the multiplicative inverse of p, mod q,
if p < n =" p" bytes =" (bits" str =" xmalloc(bytes" i =" 0;" bytes =" (host_key_bits" buf =" xmalloc(bytes);" i =" len;">= 4; i -= 4)
{
unsigned long limb = mpz_get_ui(&aux);
PUT_32BIT(buf + i - 4, limb);
mpz_div_2exp(&aux, &aux, 32);
}
for (; i > 0; i--)
{
buf[i - 1] = mpz_get_ui(&aux);
mpz_div_2exp(&aux, &aux, 8);
}
mpz_clear(&aux);
}

随后客户端计算会话密钥,计算过程是首先生成32个字节即256位随机字串:

for (i = 0; i < i =" 0;"> /usr/openwin/bin/xauth list
***.***.***/unix:10 MIT-MAGIC-COOKIE-1 \
92b404e556588ced6c1acd4ebf053f68
***.***.***/unix:11 MIT-MAGIC-COOKIE-1 \
92b404e556588ced6c1acd4ebf053f68
***.***.***:10 MIT-MAGIC-COOKIE-1 \
92b404e556588ced6c1acd4ebf053f68
***.***.***/unix:10 MIT-MAGIC-COOKIE-1 \
92b404e556588ced6c1acd4ebf053f68
***.***.***:11 MIT-MAGIC-COOKIE-1 \
92b404e556588ced6c1acd4ebf053f68
***.***.***/unix:11 MIT-MAGIC-COOKIE-1 \
92b404e556588ced6c1acd4ebf053f68
[wangdb@ /home/wangdb]> echo $DISPLAY
***.***.***:10.0
[wangdb@ /home/wangdb]> /usr/openwin/bin/xauth
Using authority file /home/wangdb/.Xauthority
xauth> list ***.***.***:10.0
***.***.***:10 MIT-MAGIC-COOKIE-1 \
92b404e556588ced6c1acd4ebf053f68
xauth> quit
[wangdb@ /home/wangdb]>

.Xauthority 文件的显示记录里各个字段的含义如下,第一个字段的***.***.*** 是主机名,":"号后的"."前面的数字
是 X 服务器标号,"."后面的数字是显示屏幕(显示器)标号。这个字段称为显示名,$DISPLAY 环境变量里填入这个字段。
第二个字段是协议标号,第三个字段是十六进制的认证钥。认证钥是由系统给的,打开 X 显示时如果认证钥给的不对,
X 服务器拒绝处理显示请求。

ssh 实现 X 转发的第一步是,客户端调用 popen 函数执行 "xauth list $DISPLAY" 命令,读取 X 显示的屏幕号、协议
号、和认证钥,然后把协议号和认证钥保存在内存中。客户端并不把自己的认证钥发送给服务器,而是生成一个 8位二进
制随机数序列,以十六进制打印,把这个十六进制数字串发送给服务器作为认证钥。等到服务器发来打开 X 显示请求时,
客户端使用自己真正的认证钥打开 X 显示。采用这种方法,客户保证了自己的认证钥不会泄露给外界,安全性得到保证。

服务器接到客户端的 X 转发请求后,读取客户端发来的屏幕号、协议号、和认证钥,然后打开一个 socket 并绑定它,
设置成侦听模式,并用这个 socket 设置一个通道。随后就从服务器自己的配置文件读出 X 服务器标号,调用
gethostname函数获取本机主机名,把这两者和客户发来的屏幕号结合在一起构成显示列表记录的第一字段。

在服务器处理客户端执行命令或启动 shell 的请求时,它用前面设置的通道接受一个 TCP 连接,返回一个 socket,
再用这个 socket 设置一个新通道。然后发一个包给客户端要求它打开一个 X 显示。客户端接到这个包后打开一个
socket 与本地 X 服务器连接,即打开一个 X 显示:
_____________________________________________________
int display_number, sock;
const char *display;
struct sockaddr_un ssun;

/* Try to open a socket for the local X server. */
display = getenv("DISPLAY");
if (!display)
{
error("DISPLAY not set.");
goto fail;
}

/* Now we decode the value of the DISPLAY variable
* and make a connection to the real X server.
*/

/* Check if it is a unix domain socket. Unix domain
* displays are in one of the following formats:
* unix:d[.s], :d[.s], ::d[.s]
*/
if (strncmp(display, "unix:", 5) == 0 ||
display[0] == ':')
{
/* Connect to the unix domain socket. */
if (sscanf(strrchr(display, ':') + 1,
"%d", &display_number) != 1)
{
error("Could not parse display number "
"from DISPLAY: %.100s", display);
goto fail;
}
/* Create a socket. */
sock = socket(AF_UNIX, SOCK_STREAM, 0);
if (sock < sun_family =" AF_UNIX;">

2008年2月25日星期一

服务器资源限制的设置

实验室的服务器刚检修完毕,觉得速度比以前快了一些,最重要的是觉得这是一个新的开始,以前的管理比较乱,现在要从头做起。
现在主管理节点上经常有人在算一些大的,时间长的作业,导致主节点运行效率低,但是这些作业经常是一些老师,也不好意思直接说,于是打算用计算机自动管理。
这方面可以使用ulimit来限制:
对于ulimit有两种:一种是命令行式的

ulimit 命令

用途

设置或报告用户资源极限。
语法

ulimit [ -H ] [ -S ] [ -a ] [ -c ] [ -d ] [ -f ] [ -m ] [ -n ] [ -s ] [ -t ] [ Limit ]
描述

ulimit 命令设置或报告用户进程资源极限,如 /etc/security/limits.conf 文件所定义。文件包含以下缺省值极限:

core file size (blocks, -c) 0
data seg size (kbytes, -d) unlimited
file size (blocks, -f) unlimited
pending signals (-i) 1024
max locked memory (kbytes, -l) 32
max memory size (kbytes, -m) unlimited
open files (-n) 1024
pipe size (512 bytes, -p) 8
POSIX message queues (bytes, -q) 819200
stack size (kbytes, -s) 10240
cpu time (seconds, -t) unlimited
max user processes (-u) 16383
virtual memory (kbytes, -v) unlimited
file locks (-x) unlimited


当新用户添加到系统中时,这些值被作为缺省值使用。当向系统中添加用户时,以上值通过 mkuser 命令设置,或通过 chuser 命令更改。

极限分为软性和硬性。通过 ulimit 命令,用户可将软极限更改到硬极限的最大设置值。要更改资源硬极限,必须拥有 root 用户权限。

a 列出所有当前资源极限。
-c 以 512 字节块为单位,指定核心转储的大小。
-d 以 K 字节为单位指定数据区域的大小。
-f 使用 Limit 参数时设定文件大小极限(以块计),或者在未指定参数时报告文件大小极限。缺省值为 -f 标志。
-H 指定设置某个给定资源的硬极限。如果用户拥有 root 用户权限,可以增大硬极限。任何用户均可减少硬极限。
-m 以 K 字节为单位指定物理存储器的大小。
-n 指定一个进程可以拥有的文件描述符的数量的极限。
-s 以 K 字节为单位指定堆栈的大小。
-S 指定为给定的资源设置软极限。软极限可增大到硬极限的值。如果 -H 和 -S 标志均未指定,极限适用于以上二者。
-t 指定每个进程所使用的秒数。
退出状态

返回以下退出值:
0 成功完成。
>0 拒绝对更高的极限的请求,或发生错误。
示例

要将文件大小极限设置为 51,200 字节,输入:

ulimit -f 100

注:在 /etc/security/limits.conf 文件中设置缺省极限就是设置了系统宽度极限,而不仅仅是创建用户时用户所

修改过这个配置文件后需要重新启动生效,使用命令行,可以立刻生效。
我决定把cpu time设置为30分钟则应该为
ulimit -t 1800
这里是秒,配置文件中是分钟。

2008年2月2日星期六

明天回家

准确的说应该是今天回家。终于盼来了家里人来。
今年感觉上放假挺早的,但是作为一个学生,一个博士一年级的学生,这没有意义,以后的路还很长,很艰辛。开学3月份就要做开题报告,可是自己调研感觉还没做,老板又给了一大顿事情要做,还有其他杂七杂八的事情,简直觉得累死了,心想这种事情什么时候是个结束。
我不是一个没有远大志向的人,但是仅有这些是不行的,如果连眼前的一点点愿望,连很小的享受都不能满足的话,对于那些志向也会没有自信的。
今年本来心想是不是不下雪了,真没意思,很盼望下场大雪,但是之前的雪总是让人失望。不过真的有些吃惊,后来的雪忽忽悠悠的,下的不大,但是很久,到如今倒是积了不少,南方更是遇到50年一遇的大雪。
这几年家里到年底都要来郑州办事,通常会租辆车来,因此我也会打算搭着这趟车走。但是今年的雪让时间延迟了,本来说是30号就要来的,现在延到2号,已经是腊月26号。本来就不敢在家里待太久,想来学校把开题报告做了,现在回家又这么晚,心里还是不好受,不过不管怎么样,今天还是要回去了。
临走前要整理东西,把实验室整理了一番,谁知还是晚了,昨晚就熬了一夜,想是最后一夜,今晚回去好好睡一觉,看来是泡汤了。
明天在车上好好睡一觉吧。

2008年1月28日星期一

昨晚看了集结号

刚买了一个笔记本,这下回去也有事了。
早就听说了集结号了,大名鼎鼎。
其实我很久没有看电影了,看也只是偶尔。总是觉得看电影一个人很没有意思,现在孤单一人,很希望能和一个自己心爱的一起看,所以权作储备吧。
我是很喜欢看电影,喜欢那种融入电影中的感觉。
放假了,同学们走的差不多了,同宿舍的也走了,就把另一个同学给叫过来。现在集结号的DVDrip出来了,于是在emule上下了下来,速度还是挺快的。

因为之前也有所耳闻,所以还是静静的把它看完了。
首先就是镜头晃啊的那种,给人感觉真是越来越像好莱坞电影了。因为以前看过韩国的那个《太极旗飘扬》,之前又听说过这个电影的战斗场面是韩国的那个组做 的,不过不管怎么说和以前的战争片有了很大的区别,虽说里面有些场面确实听残酷的,不忍看,但也因此让人认识到战争的残酷。

里面谷子地的连队以47人血肉之躯抵抗那么多国民党军,在我看来简直就是不可能完成的任务,说实在的就是让他们去送死,他们的伤亡是必然的,我想那个刘团长不去找他们也是认为他们都死光了,他也是带着愧疚的心,最后谷子地原谅了他,也是可以理解的。
这个电影很感人,我想电影的核心是说的战友之情,在生与死之间的友情是超越一切的,最后只有自己一个人留下了,实际上我想谷子地是感到愧疚的,他要为他的弟兄们正名,不管一切,不惜一切代价的那种精神实际上就是建立在自己苟活在世上的目的就是这个了,其他的都是算奖励了。

许多人看过这个电影说了句玩笑话:组织不可靠;看过后确实有一段感觉太不近人情了,战争时期出生如死的人到头来还有被审查,听着,看着都可气,虽然最后为9连的人都正名了,但如果不是谷子地多年的努力几乎是不可能的。而且我想这种现象在以前绝对不是少数。战争太残酷了。
而且看了这个电影的都有感觉的,因为描述的是国内战争,这种感觉会更加深,大家都是中国人,拼死拼活的打仗都是因为大家的信仰不一样就互相残杀。
希望这种情况不再出现!

2008年1月21日星期一

踏上ipv6的大道

也不知道是怎么碰上的,今天把自己电脑也用上了ipv6。
对于ipv6,大家都不陌生,喊了很多年了,但是现在似乎仍然看不到,摸不到,仍然还在实验室内呆着。其实不尽然,主要是现在仍然主流的是ipv4,所以为保证IPv4能够平稳过渡到IPv6,研究者提出了多种技术方案。主要有双协议栈、隧道技术、NAT-PT等。
隧道技术提供了一种以现有IPv4路由体系来传递IPv6数据的方法:将IPv6的分组作为无结构意义的数据,封装在IPv4数据报中,被IPv4网络传输。
我走上这个ipv6的路就是搭的这个路-隧道技术。对于隧道技术也是有几种类型的: (1)手工配置隧道 ( Configured Tunnel)、 (2) 自动配置的隧道 ( Auto-configured Tunnel )和 (3) 隧道中介(Tunnel Broker)三种主要的,以及其他方式包括6to4,ISATAP等。具体的内容可见http://202.196.65.45/learn.html
这里我通过的方式是第三种隧道中介(Tunnel Broker)。
这里要记住这个网站http://ipv6.ha.edu.cn/,这是郑州大学的ipv6试验网。河南省网络中心(位于郑州大学)在2007年12月7日启用了ipv6的隧道代理,暂为大家免费提供访问IPv6网服务。这需要我们先到http://202.196.65.45/上免费注册,然后就可以获得自己的IPv6地址了。
登上这个网站后,里面有详细的步骤,我来简化之:
1,点击用户注册,填上诸如用户名,单位、用途之类的简单信息即可注册成功;
2,成功后即可马上登录,然后就会显示让激活,点击激活,最上面会有红色的文字告诉你已经为你分配通道及ipv6的地址;接下来还需要做一些工作
3,对于我现在使用的windows xp来说(其他诸如linux之类,以后用的时候再研究)首先要安装ipv6协议栈:
Microsoft Windows XP [Version 5.1.2600]
(C) Copyright 1985-2001 Microsoft Corp.

E:\Program Files\PowerCmd\PowerCmd>ipv6 install
Installing...
Succeeded.

然后执行下列命令:
E:\Program Files\PowerCmd\PowerCmd>netsh
netsh>int ipv6
netsh interface ipv6>add v6v4 "chenweiguangtunnel" 202.196.74.100 202.196.65.45
Ok.
其中:"chenweiguangtunnel" 为自己申请隧道名称,通常为"用户名+tunnel",202.196.74.100为自己电脑的ipv4地址,202.196.65.45为提供隧道中介的ipv4地址;

接下来查询本机接口状态:
netsh interface ipv6>sh int
Querying active state...

Idx Met MTU State Name
--- ---- ----- ------------ -----
6 1 1280 Connected chenweiguangtunnel
5 0 1500 Connected Local Area Connection
4 2 1280 Disconnected Teredo Tunneling Pseudo-Interface
3 1 1280 Connected 6to4 Tunneling Pseudo-Interface
2 1 1280 Connected Automatic Tunneling Pseudo-Interface
1 0 1500 Connected Loopback Pseudo-Interface
左边为接口index,可以看到"chenweiguangtunnel"所对应的为6(这个下面会有说明),并且已经连接上,其他的不知亦可;

接下来需要为本机配置ipv6地址:
netsh interface ipv6>add address "chenweiguangtunnel" 2001:da8:a5:fe:1c::2
Ok.
其中最后一个2001:da8:a5:fe:1c::2为所分配给自己的ipv6地址;

然后添加路由:
netsh interface ipv6>add route 2001:da8::/32 "chenweiguangtunnel" 2001:da8:a5:fe:1c::1
Ok.

netsh interface ipv6>add route 2001:250::/32 "chenweiguangtunnel" 2001:da8:a5:fe:1c::1
Ok.
其中2001:da8:a5:fe:1c::1为您的ipv6网关是: 2001:da8:a5:fe:1c::1/64,2001:da8::/32和2001:250::/32的含义还不甚明了,似乎都是一样的,照抄下来就可以了,从命令帮助来看是路由前缀,姑且这么理解;

加完之后我们可以看一下:
netsh interface ipv6>show route
Querying active state...

Publish Type Met Prefix Idx Gateway/Interface Name
------- -------- ---- ------------------------ --- ---------------------
no Manual 1 2001:250::/32 6 2001:da8:a5:fe:1c::1
no Manual 1 2001:da8::/32 6 2001:da8:a5:fe:1c::1
这说明我们已经加上了;

这个时候我们退出:
netsh interface ipv6>exit

然后使用ipv6协议ping6下网关:
E:\Program Files\PowerCmd\PowerCmd>ping6 2001:da8:a5:fe:1::1

Pinging 2001:da8:a5:fe:1::1
from 2001:da8:a5:fe:1c::2 with 32 bytes of data:

Reply from 2001:da8:a5:fe:1::1: bytes=32 time<1ms bytes="32" bytes="32" bytes="32" sent =" 4," received =" 4," lost =" 0" minimum =" 0ms," maximum =" 0ms," average =" 0ms">ping6 www.6bone.net

Pinging 6bone.net [2001:5c0:0:2::24]
from fe80::211:9ff:fe0f:decd%5 with 32 bytes of data:

Reply from fe80::211:9ff:fe0f:decd%5: Destination address unreachable.
Reply from fe80::211:9ff:fe0f:decd%5: Destination address unreachable.
Reply from fe80::211:9ff:fe0f:decd%5: Destination address unreachable.
Reply from fe80::211:9ff:fe0f:decd%5: Destination address unreachable.

Ping statistics for 2001:5c0:0:2::24:
Packets: Sent = 4, Received = 0, Lost = 4 (100% loss),
发现不通,我们需要再做一下事情:
E:\Program Files\PowerCmd\PowerCmd>ipv6 ifcr v6v4 202.196.74.100 202.196.65.45
首先要说明一下:这个命令应该在最早执行
这个时候会返回来一个值,就是上面提到的6,这说明新添加了一个interface

然后执行:
E:\Program Files\PowerCmd\PowerCmd>ipv6 adu 6/2001:da8:a5:fe:1c::2
给指定接口配置 IPv6 地址,注意这里的6,斜杠后面为自己本机所分配到的ipv6地址;

接下来执行:
E:\Program Files\PowerCmd\PowerCmd>ipv6 rtu 2001:da8:a5:fe:1c::1 6
添加路由表,注意最后的6,中间的地址为ipv6网关;

最后执行命令:
E:\Program Files\PowerCmd\PowerCmd>ipv6 rtu 2000::/3 6
也是加路由表;

E:\Program Files\PowerCmd\PowerCmd>ipv6 ifc 6 forwards
做端口转发

到此为止大功告成,试试:
E:\Program Files\PowerCmd\PowerCmd>ping6 www.6bone.net

Pinging 6bone.net [2001:5c0:0:2::24]
from 2001:da8:a5:fe:1c::2 with 32 bytes of data:

Reply from 2001:5c0:0:2::24: bytes=32 time=373ms
Reply from 2001:5c0:0:2::24: bytes=32 time=376ms
Reply from 2001:5c0:0:2::24: bytes=32 time=380ms
Reply from 2001:5c0:0:2::24: bytes=32 time=379ms

Ping statistics for 2001:5c0:0:2::24:
Packets: Sent = 4, Received = 4, Lost = 0 (0% loss),
Approximate round trip times in milli-seconds:
Minimum = 373ms, Maximum = 380ms, Average = 377ms
成功!
可以体验一下ipv6了,上面有一些不错的资源:
比如:http://video6.sjtu.edu.cn/,呵呵

2008年1月20日星期日

处理PWSCF计算出来的本征值(画能带图)[zz]

pwscf 附带了band.x和plotband.x的工具,前者是将计算出来k点坐标以及相应的本征值从out文件中收集起来(或取出)专门存储到一个文件中,以 便后一个工具plotband.x进行处理。在计算能带时,先设置k点网格进行一次自洽计算,然后自己输入要计算的特殊k点并进行一次非自洽计算,得到这 些特殊k点的本征值。再用band.x和ploband.x进行处理。

1). band.x的输入文件格式
&inputpp
prefix = 'si'
outdir = './tmp'
filband = 'sibands.dat'
spin_component=1
/
其中 prefix设置所计算体系的标题,以及输入文件的文件名(不包括扩展名,也就是. 'dot'后面的));
outdir用来设置上一步非自洽计算中的输出文件的目录;
filband用来设置这一步band.x处理出来的k点和本征值的输出文件(也就是将这些k点-本征值放到哪个文件中);
spin_component为1表示处理的是非自旋极化计算的本征值,如果是2表示处理的是自旋极化计算的本征值。

band.x的输出文件(fiband所设置的)的格式为:
&plot nbnd= 8, nks= 36 /
0.500000 0.500000 0.500000
-3.418 -0.822 5.029 5.029 7.814 9.597 9.597 13.838
0.400000 0.400000 0.400000
-3.891 -0.102 5.102 5.102 7.900 9.679 9.679 13.959
0.300000 0.300000 0.300000
-4.659 1.404 5.319 5.319 8.138 9.803 9.803 13.845
。。。。。。。。。
与在声子计算中matdyn.x得到的q点与本征值的文件的格式是一样的。
第一行中nbnd告诉了每个有多少个本征值,本征值单位是eV。nks告诉了总共有多少k点。第2行是k点的坐标,第3行是该k点对应的本征值。下面的与2、3两行类似。

2)、plotband.x的输入文件格式
sibands.dat
-6.0 10
sibands.xmgr
sibands.ps
6.255
1.0 6.255

第一行是band.x处理得到的k点本征值文件 此例子中是sibands.dat;
第二行是在这一步中输出的ps文件中纵坐标(本征值能量)刻度的最小值与最大值;
第三行是用来设置所出输出xmgr格式的文件的文件名;
第四行是用来设置所输出文件ps格式的文件名;
第五行是费米能级的值,这个在自洽计算的out文件中可以找到;
第六行中第一个数是用来设置输出 ps格式文件纵坐标(能量)刻度的大小,第二个数是用来设置标出费米能级的位置,它与第五行中的数相同。

同样ploband.x也可以用来处理声子本征值文件。

PWSCF计算实例分析(1)[zz]

PWSCF 程序包(早期的叫法),或称为ESPRESSO程序(改名后的叫法),它包括了多几个计算模块,主要的是电子自洽计算模块pw.x,晶格动力学计算模块 (ph.x, phcg.x, dynmat.x,d3.x等),后续数据处理模块pp.x,电子输运性质计算模块pwcond.x,分子动力学模块cp.x等
一、自洽计算
例子:fcc Cu的自洽计算
&control
calculation='scf'
restart_mode='from_scratch',
pseudo_dir = './',
outdir='./'
prefix='cu'
tstress = .true.
tprnfor = .true.
/
&system
ibrav = 2, celldm(1) =6.73, nat= 1, ntyp= 1,
ecutwfc = 25.0, ecutrho = 300.0
occupations='smearing', smearing='gaussian', degauss=0.02
/
&electrons
diagonalization='david'
conv_thr = 1.0e-8
mixing_beta = 0.7
/
ATOMIC_SPECIES
Cu 63.55 Cu.pz-d-rrkjus.UPF
ATOMIC_POSITIONS
Cu 0.0 0.0 0.0
K_POINTS (automatic)
8 8 8 0 0 0

解释:
在电子自洽计算中需设置以下几个方面的参数:
1)控制计算的部分,也就是要设置
&control
.....
第一个'/'之间的关键词。
关键词calculation赋值为'scf'表示此计算是进行自洽电荷密度计算;
restart_mode表示是否是接着上一次的计算而继续的计算,赋值为'from_scratch'意味着是进行一次全新的计算开始;
pseudo_dir用来设置赝势文件所在的目录,赋值为'./'表示赝势文件放在当前计算目录;
outdir用来设置计算过程中输出文件(比如波函数、电荷密度以及势)输出到哪个目录中。赋值为'./'表示这些输出文件将放到当前计算目录中;
prefix用来定义当前计算作业的标题名,它将是一些主要输出文件的文件名。赋值为'cu'用来标记当前计算作业是对Cu进行计算;
tstress 用来设置在自洽计算过程中是否计算体系的应力,设置为 .true.表示在自洽计算过程中要计算体系的应力;
tprnfor 用来设置在自洽计算过程中是否计算体系中原子所受的力,设置为 .true.表示在自洽计算过程中要计算体系中原子所受的力;

2)、 描述所计算的体系(包括它的晶格类型、晶格常数或结构参数、原胞基矢、原胞中原子的类型数目和总的原子数目)、平面波的切断动能(也就是在展开KS轨道或 晶体波函数的平面波切断动能;另外,还包括在计算电荷密度时,展开的平面波的切断动能)、确定电子占有数的方法及相关的参数。也就是由
&system
..........
第二'/'之间的关键词来设置。
ibrav用来归属体系所属的晶格类型,赋值为2表示所计算的体系是fcc结构;
celldm(1)用来设置体系的第一个晶格常数,因为所计算的体系是fcc结构,只需设置celldm(1),相当于指定晶格常数a的值;
nat用来指明体系的原胞中原子的总共数目,赋值为1表示所计算的原胞中只有一个原子;
ntyp用来指明体系中原子类型的数目,赋值为1表示所计算的体系只有一种类型的原子;
occupations用来设置确定电子占有数的方法,赋值为'smearing'表示采用smearing的方法来确定电子的占有数,随后须设置smearing和degauss关键词;
smearing用来指明确定电子占有数的一种具体的smearing方法,赋值为'gaussian'表示采用Gaussian函数来确定电子占有数;
degauss用来确定smearing方法中有关函数的展宽参数,赋值为0.02表示上面Gaussian函数中的展宽参数为0.02。

3)、设置电子自洽计算中本征矢量(波函数)和本征值的计算算法,自洽收敛的标准。也就是
&electrons
......
和第三个'/'之间的关键词来设置。
diagonalization用来设置在求KS方程的本征矢量和本征值时,采用具体的什么算法,赋值为'david'表示采用Davidson iterative diagonalization with overlap matrix方法;
conv_thr用来设置自洽收敛标准,赋值为自洽循环过程总能的变化小于1.0e-8的化,那自洽计算就停止;
mixing_beta用来设置自洽计算过程中前后两次电荷密度混合的参数。

4)、指明体系中原子的元素名,原子量以及所采用的赝势,即ATOMIC_SPECIES 后面的设置,它们的顺序要和后面原子的坐标一一对应起来。
Cu 63.55 Cu.pz-d-rrkjus.UPF
表示所计算的体系中原子是Cu,它的原子量为63.55,它的赝势文件为Cu.pz-d-rrkjus.UPF。

5)、给出体系原胞中原子的坐标位置,也就是ATOMIC_POSITIONS 后面的设置:
Cu 0.0 0.0 0.0
表示原胞中第一个原子是Cu,它位于原胞的原点。

6)、k点取样的设置,也就是K_POINTS 后面的设置:
K_POINTS (automatic) 表示由程序采用M-P方法自动确定k点,需给出k点取样网格的大小,以及是否在产生k点后对这些点进行平移。

8 8 8 0 0 0
表示采用8x8x8的网格来确定k点,而且不对k点进行平移。
[ valenhou 发表于 2006-12-2 23:37:00阅读全文 | 回复(1) | 引用通告 | 编辑]
http://blog.edu.cn/user1/11542/archives/2006/1572977.shtml

pwscf的安装编译

PWscf (Plane-Wave Self-Consistent Field)是意大利国际理论物理研究中心主持开发的一个基于平面波的第一性原理计算软件包,目前PWscf Quantum ESPRESSO(ESPRESSO:
opEn-Source Package for Research in Electronic Structure, Simulation,
and Optimization)
的一部分,主要集成了 pwscf.cpmd和fpmd这三个模块,可以进行总能相关计算和分子动力学模拟,功能还是比较强大的,具体可以查看 http://www.pwscf.org
下面简单介绍一下espress软件包的编译安装.现在的稳定版本是espresso-3.2.3,实际上出现了最新的v. 4.0cvs版本,不过还没有经过验证。
首先下载下来,解压缩之,tar xzvf espresso-3.2.3.tar.gz
然后进入目录espresso-3.2.3,执行./configure,默认情况下它会自动探测出你所在机器上的编译器和库文件的位置。然后成功的话会出现一个Makefile,
很不幸,它并没有检测出来我这个cluster的一些信息,这个时候就需要自己手动指定
./configure ARCH=amd64 F90=pgf90 MPIF90=mpif90 MPIF77=mpif77 MPICC=mpicc
最后make all即可,当然如果并不需要所有都编译,也可以单独编译:
make pw compile PW/pw.x (electronic and ionic optimization)-电子和离子优化
make cp compile CPV/cp.x (Car-Parrinello MD with ultrasoft
pseudopotentials)-使用US赝势的CPMD方法
make ph compile PH/ph.x (phonons)-计算声子谱
make pp compile postprocessing codes in the PP directory-对赝势的预处理
make gamma compile Gamma/phcg.x (Gamma-only version of ph.x)-只计算Gamma点的声子频率
make pwcond compile PWCOND/pwcond.x (ballistic conductance)
make d3 compile D3/d3.x (third-order energy derivatives)
make raman compile Raman/ram.x (Raman cross-section calculation)
make tools compile pwtools/* (miscellaneous tools for data analysis)

make ld1 compile atomic/ld1.x code for pseudopotential generation
make upf compile upftools/* (utilities for pseudopotential conversion)

make pwall same as "make pw ph pp d3 raman pwcond gamma tools"
make all same as "make pwall ld1 cp upf"

make clean remove object files and executables
make veryclean remove configuration files too
make tar build a tarball of the current source tree
然后就会在./bin目录里看到生成的程序链接。

对于其他的数学库还没有考虑,以后有时间要试试其他的编译器和数学库。

2008年1月3日星期四

我发现自己是一个完美主义者

但是同时又知道,没有十全十美的,只能达到目前状况的最好,因为自己能意识到这一点,这使得自己很沮丧。
有时候世事繁琐,甚至要打破自己的原则,使用一些可以更好,但是只能取其次的东西,为违背自己的原则而的叹气。
完美主义者注定都是悲剧