2009年3月26日星期四

openfiler的internal LDAP server配置

openfiler用户帐户通过LDAP或者Windows活动目录等来配置。

这里说明一下使用内置的LDAP Server的设置。

首先,在Accounts标签页中配置LDAP

勾选LDAP和use local LDAP server,BASE DN一栏填写(假设你机器的域名是nas.yourdomain.com.cn)dc=nas,dc=domain,dc=com,dc=cn;Root Bind DN一栏填写dc=openfiler,dc=nas,dc=domain,dc=com,dc=cn;提交修改。

切换到services标签,enable ldap server。

回到Accounts标签页,即可在右侧的Administration中添加group和user。

openfiler默认在Root Bind DN一栏中的内容是openfiler,如果按照默认的提交,将会造成OpenLDAP配置文件slapd.conf错误。LDAP服务器无法启动。

openfiler的安装

想知道openfiler是什么,请Google。

之前在一台DELL PowerEdge 2950上安装了openfiler做实验,只尝试了基本的安装,没有深入研究配置。这台机器的磁盘配置是2个500G的SAS,可配置成RAID0或者RAID1。

近日,在一台新的2950上安装openfiler,想作为实际应用。用openfiler 2.3启动机器,在复制文件之前都没有问题,安装系统正确地识别出了硬盘。但是在复制文件时出错,居然是“out of disk space”。天哪,那个服务器可是6个750G的SAS硬盘。

在安装过程中发现,系统发现的虚拟驱动器不是通常我认为的1个(因为是做RAID5,我以为是把6个硬盘都弄到一个虚拟驱动器了),进入PERC 6/i的配置程序删除两个虚拟驱动器,并新建一个虚拟驱动器,将所有的磁盘加入。

开始安装系统,使用自动分区,/boot和swap使用默认大小,/在自动分区后改成4096MB足够了。(一定要改,剩下的空间不要分配,在安装完openfiler之后用于添加volume) 系统安装正常,重启后,从浏览器进入 https://IP:446,默认用户名openfiler,密码password。接下来在Volumes标签页中选择Block Devices,将剩余未分配的空间生成Physical Volume。发现无论如何,剩下的3.4TB的空间都无法分配,最多只能创建1.4TB的Volume。

在openfiler社区中找到这篇文章(https://forums.openfiler.com/viewtopic.php?id=3169):

The short of it:
MSDOS - Bootable, must be less than 2TB
GPT - Not bootable, support for > 2TB
The longer explanation and what to do about it:
What this means is that if you've got a single volume on your system that is > 2TB, or you plan to later expand your array past 2TB, then you cannot boot from it.  The solution is to open up your RAID controller BIOS and do one of the following:
1. If your controller does not have an "OS Volume" option and does not support multiple arrays across a given disk: a. boot from something else and use all your drives for data storage, or b. pick two drives and stick them in RAID 1 for your OS and then take the rest of your drives and put them in a RAID level of your choice for your data.
2. If your controller supports an "OS Volume" (I know 3Ware has this, others probably do as well): Create a single array of all your disks and then specify an "OS Volume" of 4-8GB.
3. If your controller does not support an "OS Volume" but can create multiple arrays on a set of disks: Create a small RAID 1 array of 4-8GB across ALL your disks for the OS and then use the remainder of the space in a RAID level of your choice for your data volumes.
The end result should be that you've got a small volume (probably /dev/sda) for your OS and then a large volume (probably /dev/sdb) for your data.
When installing, allow the installer to initialize the OS volume (/dev/sda) but NOT the data volume (/dev/sdb).  If you allow the initialization of the data volume then it will receive an MSDOS table and will act oddly when trying to create a > 2TB PV on it later (this can be fixed if you've already passed this point, though it will require the wipe of your data volume).

于是,再次进入PERC 6/i的配置程序重新创建虚拟驱动器,其中一个虚拟驱动器使用所有磁盘,RAID5,大小设置为6GB;另一个虚拟驱动器也使用所有磁盘,RAID5,使用所有剩余空间。重新安装系统,将系统安装在/dev/sda上。重新启动系统。

参照文章(https://forums.openfiler.com/viewtopic.php?id=3174),SSH登录到openfiler机器:

fdisk does not work with gpt partition tables (use parted) and I've got no idea why you're trying to create a file system directly on the disk (OpenFiler uses LVM).
1. Type "parted /dev/sdb" (assuming your raid volume is sdb)
2. Type "print"
3. If the output says "Disk label type: msdos" then type "mklabel gpt"
4. Type "quit"
From there you should be able to create a PV in the web interface to use the entire volume.

参照上面的4步完成GPT。

使用浏览器登录进入openfiler管理界面,这时可以在Volumes标签页中将所有的剩余空间创建为一个Physical Volume。 之后,再添加Volume Group。然后在Physical Volume中为特定的用途添加不同类型的Volume。

2009年3月23日星期一

马云的懒人论

马云曰:

世界上很多非常聪明并且受过高等教育的人,无法成功。就是因为他们从小就受到了错误的教育,他们养成了勤劳的恶习。很多人都记得爱迪生说的那句话吧:天才就是99%的汗水加上1%的灵感。并且被这句话误导了一生。勤勤恳恳的奋斗,最终却碌碌无为。其实爱迪生是因为懒的想他成功的真正原因,所以就编了这句话来误导我们。

很多人可能认为我是在胡说八道,好,让我用100个例子来证实你们的错误吧!事实胜于雄辩。

世界上最富有的人,比尔盖茨,他是个程序员,懒的读书,他就退学了。他又懒的记那些复杂的dos命令,于是,他就编了个图形的界面程序,叫什么来着?我忘了,懒的记这些东西。于是,全世界的电脑都长着相同的脸,而他也成了世界首富。

世界上最值钱的品牌,可口可乐。他的老板更懒,尽管中国的茶文化历史悠久,巴西的咖啡香味浓郁,但他实在太懒了。弄点糖精加上凉水,装瓶就卖。于是全世界有人的地方,大家都在喝那种像血一样的液体。

世界上最好的足球运动员,罗纳尔朵,他在场上连动都懒的动,就在对方的门前站着。等球砸到他的时候,踢一脚。这就是全世界身价最高的运动员了。有的人说,他带球的速度惊人,那是废话,别人一场跑90分钟,他就跑15秒,当然要快些了。

世界上最厉害的餐饮企业,麦当劳。他的老板也是懒的出奇,懒的学习法国大餐的精美,懒的掌握中餐的复杂技巧。弄两片破面包夹块牛肉就卖,结果全世界都能看到那个M的标志。必胜客的老板,懒的把馅饼的馅装进去,直接撒在发面饼上边就卖,结果大家管那叫PIZZA,比10张馅饼还贵。

还有更聪明的懒人:

懒的爬楼,于是他们发明了电梯;

懒的走路,于是他们制造出汽车,火车,和飞机;

懒的一个一个的杀人,于是他们发明了原子弹;

懒的每次去计算,于是他们发明了数学公式;

懒的出去听音乐会,于是他们发明了唱片,磁带和CD;

这样的例子太多了,我都懒的再说了。

还有那句废话也要提一下,生命在于运动,你见过哪个运动员长寿了?世界上最长寿的人还不是那些连肉都懒的吃的和尚?

如果没有这些懒人,我们现在生活在什么样的环境里,我都懒的想!

人是这样,动物也如此。世界上最长寿的动物叫乌龟,他们一辈子几乎不怎么动,就趴在那里,结果能活一千年。他们懒的走,但和勤劳好动的兔子赛跑,谁赢了?牛最勤劳,结果人们给它吃草,却还要挤它的奶。熊猫傻了吧唧的,什么也不干,抱着根竹子能啃一天,人们亲昵的称它为“国宝”。

回到我们的工作中,看看你公司里每天最早来最晚走,一天像发条一样忙个不停的人,他是不是工资最低的?那个每天游手好闲,没事就发呆的家伙,是不是工资最高,据说还有不少公司的股票呢!

我以上所举的例子,只是想说明一个问题,这个世界实际上是靠懒人来支撑的。世界如此的精彩都是拜懒人所赐。现在你应该知道你不成功的主要原因了吧!

懒不是傻懒,如果你想少干,就要想出懒的方法。要懒出风格,懒出境界。像我从小就懒,连长肉都懒的长,这就是境界。

2009年3月19日星期四

锐捷S2026G交换机管理IP设置

vlan 256

int vlan 256

ip address 192.168.0.1 255.255.255.0

最重要的设置默认网关

ip default-gateway 192.168.1.254

保存设置并重启交换机(reload)即可

2009年3月15日星期日

拖延症

Procrastination的形成
  1. 一个人认为自己5天之内可以做完一件事情,所以在离deadline还有15天的时候
  一点不着急,直到最后只剩5天了才开始。
  2. 这种紧迫感和焦虑往往促发人的斗志,会让自己觉得,自己只有在压力状态下才有做事情的状态。
  3.最后拿到成绩的时候,成绩往往不是很差,这样子就强化了自己最适合在deadline之前短期高压的状态下工作的心态,并且对以后的行为不断进行自我暗示。这一个部分写得非常符合大部分有拖沓习惯的中国学生的经历。因为中国学生往往非常聪明,所以哪怕最后只剩一点点时间了,也会完成得不错;从而自认为自己最适合这样子的工作状态。周而复始,反复循环。
  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:我在所有决定中没有自信。当决定了做某件事的时候,往往因为不确定是对的还是错的而烦恼。这样一来事就一拖再拖。不是因为我懒,而是因为每次都不能付出行动。所以人们都说我办事的效率不高。
  →病名:不安感或懒惰引起的拖延病
  →处方:你在想自己的想法对不对那是因为“为了想这个办法用了那么长时间,付出了那么大的努力,但要是失败了怎么办?就不就功亏于溃了吗?”因为这些不安感一直浮现在脑海里。所以不想做任何事情。假如,要学习但桌子很乱找书都很不容易。明知道应该收拾一下,但怕麻烦迟迟不行动。这时候,父母要唠叨个不停,就有了叛逆的心理更是不收拾。这时你应该冷静下来好好想一想。是打扫一下好还是睁一只眼闭一只眼过的好。然后再决定。把最初的想法扭转过来很难,但一旦习惯了就觉得行动比拖延更轻松。

2009年2月23日星期一

使用XPATH从XML/XHTML中提取数据

import java.io.StringReader;

import javax.xml.xpath.XPath;
import javax.xml.xpath.XPathConstants;
import javax.xml.xpath.XPathExpression;
import javax.xml.xpath.XPathExpressionException;
import javax.xml.xpath.XPathFactory;

import org.w3c.dom.Node;
import org.w3c.dom.NodeList;
import org.xml.sax.InputSource;

public class Evaluation {
    public static String extractString(String xmlStr, String xpath)
            throws XPathExpressionException {
        XPathFactory factory = XPathFactory.newInstance();
        XPath xp = factory.newXPath();
        XPathExpression xpe = xp.compile(xpath);
        InputSource is = new InputSource(new StringReader(xmlStr));
        String result = xpe.evaluate(is);
        return result;
    }

    public static NodeList extractNodeList(String xmlStr, String xpath)
            throws XPathExpressionException {
        XPathFactory factory = XPathFactory.newInstance();
        XPath xp = factory.newXPath();
        XPathExpression xpe = xp.compile(xpath);
        InputSource is = new InputSource(new StringReader(xmlStr));
        NodeList result = (NodeList) xpe.evaluate(is, XPathConstants.NODESET);
        return result;
    }

    public static String extractString(Node node, String xpath)
            throws XPathExpressionException {
        XPathFactory factory = XPathFactory.newInstance();
        XPath xp = factory.newXPath();
        XPathExpression xpe = xp.compile(xpath);
        return xpe.evaluate(node);
    }
}

一个困扰了很久的XML类冲突问题的解决

有一个使用XML技术的项目,其中使用到了ASF的xerces软件包,在J2SE模式下,该程序运行正常,但是当将项目中的类导入了J2EE项目中,部署到Tomcat后无法将JSP页面转换为servlet,出现以下的错误

HTTP Status 500 -


type Exception report

message

description The server encountered an internal error () that prevented it from fulfilling this request.

exception

javax.servlet.ServletException: (class: org/apache/xerces/jaxp/DocumentBuilderImpl, method: parse signature: (Lorg/xml/sax/InputSource;)Lorg/w3c/dom/Document;) Incompatible object argument for function call
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:272)
javax.servlet.http.HttpServlet.service(HttpServlet.java:802)


root cause



java.lang.VerifyError: (class: org/apache/xerces/jaxp/DocumentBuilderImpl, method: parse signature: (Lorg/xml/sax/InputSource;)Lorg/w3c/dom/Document;) Incompatible object argument for function call
org.apache.xerces.jaxp.DocumentBuilderFactoryImpl.newDocumentBuilder(Unknown Source)
org.apache.jasper.xmlparser.ParserUtils.parseXMLDocument(ParserUtils.java:92)
org.apache.jasper.compiler.JspConfig.processWebDotXml(JspConfig.java:76)
org.apache.jasper.compiler.JspConfig.init(JspConfig.java:197)
org.apache.jasper.compiler.JspConfig.findJspProperty(JspConfig.java:249)
org.apache.jasper.compiler.Compiler.generateJava(Compiler.java:112)
org.apache.jasper.compiler.Compiler.compile(Compiler.java:295)
org.apache.jasper.compiler.Compiler.compile(Compiler.java:276)
org.apache.jasper.compiler.Compiler.compile(Compiler.java:264)
org.apache.jasper.JspCompilationContext.compile(JspCompilationContext.java:563)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:303)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:314)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:264)
javax.servlet.http.HttpServlet.service(HttpServlet.java:802)


note The full stack trace of the root cause is available in the Apache Tomcat/5.5.17 logs.




初步判断是因为类的版本有冲突引起的问题。这个问题困扰了很久也没有解决,后来下载了新的xerces软件包替换了原来的版本,居然问题就解决了。



注意:在更换xerces软件包之后要clean以下项目,否则还会出现这个错误