<?xml version="1.0" encoding="UTF-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
    <title>My Study</title>
    <link rel="alternate" type="text/html" href="http://my.huhoo.net/study/" />
    <link rel="self" type="application/atom+xml" href="http://my.huhoo.net/study/atom.xml" />
    <id>tag:my.huhoo.net,2008-12-02:/study//1</id>
    <updated>2011-11-21T06:29:19Z</updated>
    <subtitle>About My Learn or Study etc.</subtitle>
    <generator uri="http://www.sixapart.com/movabletype/">Movable Type 5.12</generator>

<entry>
    <title>关于vncserver的一些问题</title>
    <link rel="alternate" type="text/html" href="http://my.huhoo.net/archives/2011/11/vncserver_1.html" />
    <id>tag:my.huhoo.net,2011:/study//1.972</id>

    <published>2011-11-21T06:11:50Z</published>
    <updated>2011-11-21T06:29:19Z</updated>

    <summary> 在fedora16上，用vncviewer连接vncserver的时候，发现老是出现： unable connect to socket: No route to host (113) 和fedora14不一样，vnc的默认端口5901并没有加入到信任端口里面，在其它端口里面添加用户自定义端口5901，tcp类型即可，或使用下列命令：（$id是最后reject的ID号） iptables -L -n --line-numbers echo &quot;Input iptables line numbers: &quot; read id iptables -D INPUT $id iptables -A INPUT -p tcp -m state --state NEW -m tcp --dport...</summary>
    <author>
        <name>Cnangel</name>
        <uri>http://my.huhoo.net/study</uri>
    </author>
    
        <category term="Linux世界" scheme="http://www.sixapart.com/ns/types#category" />
    
    <category term="fedora" label="fedora" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="syscmd" label="syscmd" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="systemctl" label="systemctl" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="vncserver" label="vncserver" scheme="http://www.sixapart.com/ns/types#tag" />
    
    <content type="html" xml:lang="en" xml:base="http://my.huhoo.net/study/">
        <![CDATA[<p>    在fedora16上，用vncviewer连接vncserver的时候，发现老是出现：<br />
<blockquote>unable connect to socket: No route to host (113)</blockquote><br />
    和fedora14不一样，vnc的默认端口5901并没有加入到信任端口里面，在其它端口里面添加用户自定义端口5901，tcp类型即可，或使用下列命令：（$id是最后reject的ID号）<br />
<blockquote>iptables -L -n --line-numbers<br />
echo "Input iptables line numbers: "<br />
read id<br />
iptables -D INPUT $id<br />
iptables -A INPUT -p tcp -m state --state NEW -m tcp --dport 5901 -j ACCEPT<br />
iptables -A INPUT -j REJECT --reject-with icmp-host-prohibited<br />
iptables-save</blockquote><br />
    在fedora16中，vncserver抛弃了配置文件/etc/sysconfig/vncservers的管理方式，而使用syscmd来直接管理，不过这里感觉复杂一些，首先，安装好tigervnc-server后，需要将配置文件拷贝一份：<br />
<blockquote>cp /lib/systemd/system/vncserver@.service /etc/systemd/system/vncserver@:1.service</blockquote><br />
并修改其(/etc/systemd/system/vncserver@:1.service)内容：<br />
<blockquote>User=cnangel<br />
ExecStart=/usr/bin/vncserver :1 -geometry 1280x1024</blockquote><br />
   然后，加载配置并放入启动选项，<br />
<blockquote>sudo systemctl --system daemon-reload</blockquote><br />
   最后，启动vncserver<br />
<blockquote>systemctl enable vncserver@:1.service<br />
systemctl start vncserver@:1.service</blockquote><br />
   如果启动不了，可以尝试直接启动vncserver，然后再使用syscmd来启动。</p>]]>
        
    </content>
</entry>

<entry>
    <title>fedora16中解决gnome-shell占用100%的问题</title>
    <link rel="alternate" type="text/html" href="http://my.huhoo.net/archives/2011/11/fedora16gnome-shell100.html" />
    <id>tag:my.huhoo.net,2011:/study//1.971</id>

    <published>2011-11-18T07:52:27Z</published>
    <updated>2011-11-18T08:22:32Z</updated>

    <summary><![CDATA[&nbsp;&nbsp; fedora16安装以来，一直gnome-shell占用CPU比较高，以前以为是evolution数据量过大导致的问题，后来删除了evolution，重新导入小数据量的evolution，发现CPU仍然偶尔飙高，搜索google无果，于是自行研究了一下发现，把$HOME目录下的.gconf目录删除之后，gnome-shell占用的CPU最多飙到40%，不过要重新设置一下evolution的帐号，希望给fedora的爱好者一些帮助。&nbsp;&nbsp; 通过现象分析，很可能是导入evolution导入了以前fedora15不兼容的配置信息，导致gnome-shell发挥特效的时候过多的cpu的消耗。...]]></summary>
    <author>
        <name>Cnangel</name>
        <uri>http://my.huhoo.net/study</uri>
    </author>
    
        <category term="Linux世界" scheme="http://www.sixapart.com/ns/types#category" />
    
        <category term="电脑技巧" scheme="http://www.sixapart.com/ns/types#category" />
    
    <category term="fedora" label="fedora" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="gnomeshell" label="gnome-shell" scheme="http://www.sixapart.com/ns/types#tag" />
    
    <content type="html" xml:lang="en" xml:base="http://my.huhoo.net/study/">
        <![CDATA[&nbsp;&nbsp; fedora16安装以来，一直gnome-shell占用CPU比较高，以前以为是evolution数据量过大导致的问题，后来删除了evolution，重新导入小数据量的evolution，发现CPU仍然偶尔飙高，搜索google无果，于是自行研究了一下发现，把$HOME目录下的.gconf目录删除之后，gnome-shell占用的CPU最多飙到40%，不过要重新设置一下evolution的帐号，希望给fedora的爱好者一些帮助。<br />&nbsp;&nbsp; 通过现象分析，很可能是导入evolution导入了以前fedora15不兼容的配置信息，导致gnome-shell发挥特效的时候过多的cpu的消耗。<br /> ]]>
        
    </content>
</entry>

<entry>
    <title>fedora各种版本的比较</title>
    <link rel="alternate" type="text/html" href="http://my.huhoo.net/archives/2011/11/fedora_13.html" />
    <id>tag:my.huhoo.net,2011:/study//1.970</id>

    <published>2011-11-15T04:40:38Z</published>
    <updated>2011-11-15T05:06:25Z</updated>

    <summary><![CDATA[&nbsp;&nbsp;&nbsp; Fedora15和fedora16虽然同为gnome3的两个版本，但是稳定性方便，fedora16比不上fedora15，fedora16不能支持大数据量的evolution邮件（数据量过大会导致gnome-shell占用CPU达到100%），并且teminal中的通配符容易崩溃，且不容易自动补全，而且gnome3的徽标键会失灵，造成锁屏。&nbsp;&nbsp;&nbsp; 从FC3以来，每个版本笔者都适用过，其家里P4的台式机上还是Fedora Core5，而工作的机器上面已经安装上了Fedora16（有点后悔，没有fedora15好用），按照稳定性来说，比较不错的fedora版本有：Fedora15：第一个使用gnome3的版本，且firefox的版本能够到7.0；非常稳定Fedora14：使用gnome2，最终升级版本非常稳定；Fedora13：第一个支持apple以及iphone系统的版本，非常稳定；Fedora12：一个稳定版本，对第一个对支持ati显卡非常好的版本；Fedora10：不错的一个版本，开始不太稳定，后期升级的版本比较稳定；Fedora9：一个比fedora10更加稳定的版本；Fedora8：不错的一个版本，比较稳定；FC6：以往1-5系列中最稳定的一个版本；FC5：基本稳定，建议使用FC6；...]]></summary>
    <author>
        <name>Cnangel</name>
        <uri>http://my.huhoo.net/study</uri>
    </author>
    
        <category term="Linux世界" scheme="http://www.sixapart.com/ns/types#category" />
    
    <category term="evolution" label="evolution" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="fedora" label="fedora" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="gnomeshell" label="gnome-shell" scheme="http://www.sixapart.com/ns/types#tag" />
    
    <content type="html" xml:lang="en" xml:base="http://my.huhoo.net/study/">
        <![CDATA[&nbsp;&nbsp;&nbsp; Fedora15和fedora16虽然同为gnome3的两个版本，但是稳定性方便，fedora16比不上fedora15，fedora16不能支持大数据量的evolution邮件（数据量过大会导致gnome-shell占用CPU达到100%），并且teminal中的通配符容易崩溃，且不容易自动补全，而且gnome3的徽标键会失灵，造成锁屏。<br />&nbsp;&nbsp;&nbsp; 从FC3以来，每个版本笔者都适用过，其家里P4的台式机上还是Fedora Core5，而工作的机器上面已经安装上了Fedora16（有点后悔，没有fedora15好用），按照稳定性来说，比较不错的fedora版本有：<br /><blockquote>Fedora15：第一个使用gnome3的版本，且firefox的版本能够到7.0；非常稳定<br />Fedora14：使用gnome2，最终升级版本非常稳定；<br />Fedora13：第一个支持apple以及iphone系统的版本，非常稳定；<br />Fedora12：一个稳定版本，对第一个对支持ati显卡非常好的版本；<br />Fedora10：不错的一个版本，开始不太稳定，后期升级的版本比较稳定；<br />Fedora9：一个比fedora10更加稳定的版本；<br />Fedora8：不错的一个版本，比较稳定；<br />FC6：以往1-5系列中最稳定的一个版本；<br />FC5：基本稳定，建议使用FC6；<br /></blockquote>]]>
        
    </content>
</entry>

<entry>
    <title>fedora16中如何将gnote图标自动添加信息栏</title>
    <link rel="alternate" type="text/html" href="http://my.huhoo.net/archives/2011/11/gnote.html" />
    <id>tag:my.huhoo.net,2011:/study//1.969</id>

    <published>2011-11-11T09:34:26Z</published>
    <updated>2011-11-14T01:30:26Z</updated>

    <summary><![CDATA[自从fedora15以来，gnote都不是自动加载的，且关闭gnote，就直接关闭了，如何将gnote保持在信息栏呢？gnome3提供了一个命令供参考：1，找到gnote组件gsettings list-schemas |grep gnote2，找出gnote的所有键值对，类似windows的注册表gsettings list-keys org.gnome.gnote&nbsp; 3，修改gnote的默认图标状态gsettings set org.gnome.gnote&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; use-status-icon true这样即可完成关闭gnote而不会直接关闭gnote进程，而是最小化到信息栏中。...]]></summary>
    <author>
        <name>Cnangel</name>
        <uri>http://my.huhoo.net/study</uri>
    </author>
    
        <category term="Linux世界" scheme="http://www.sixapart.com/ns/types#category" />
    
    <category term="fedora" label="fedora" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="gnome3" label="gnome3" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="gnote" label="gnote" scheme="http://www.sixapart.com/ns/types#tag" />
    
    <content type="html" xml:lang="en" xml:base="http://my.huhoo.net/study/">
        <![CDATA[自从fedora15以来，gnote都不是自动加载的，且关闭gnote，就直接关闭了，如何将gnote保持在信息栏呢？<br />gnome3提供了一个命令供参考：<br />1，找到gnote组件<br /><blockquote>gsettings list-schemas |grep gnote<br /></blockquote>2，找出gnote的所有键值对，类似windows的注册表<br /><blockquote>gsettings list-keys org.gnome.gnote&nbsp; <br /></blockquote>3，修改gnote的默认图标状态<br /><blockquote>gsettings set org.gnome.gnote&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; use-status-icon true<br /><br /></blockquote>这样即可完成关闭gnote而不会直接关闭gnote进程，而是最小化到信息栏中。<br /><br /><br />]]>
        
    </content>
</entry>

<entry>
    <title>[ZT]人类无法抗拒的十大心理心理学效应 </title>
    <link rel="alternate" type="text/html" href="http://my.huhoo.net/archives/2011/11/zt_4.html" />
    <id>tag:my.huhoo.net,2011:/study//1.968</id>

    <published>2011-11-05T04:50:23Z</published>
    <updated>2011-11-14T01:25:22Z</updated>

    <summary><![CDATA[1、鸟笼逻辑挂一个漂亮的鸟笼在房间里最显眼的地方，过不了几天，主人一定会做出下面两个选择之一：把鸟笼扔掉，或者买一只鸟回来放在鸟笼里，这就是鸟笼逻辑。过程很简单，设想你是这房间的主人，只要有人走进房间，看到鸟笼，就会忍不住问你：&#8220;鸟呢？是不是死了？&#8221;当你回答：&#8220;我从来都没有养过鸟。&#8221;人们会问：&#8220;那么，你要一个鸟笼干什么？&#8221;最后你不得不在两个选择中二选一，因为这比无休止的解释要容易得多。鸟笼逻辑的原因很简单：人们绝大部分的时候是采取惯性思维，可见在生活和工作中培养逻辑思维是多么重要。2、破窗效应心理学的研究上有个现象叫做&#8220;破窗效应&#8221;，就是说，一个房子如果窗户破了，没有人去修补，隔不久，其它的窗户也会莫名其妙的被人打破；一面墙，如果出现一些涂鸦没有清洗掉，很快的，墙上就布满了乱七八糟，不堪入目的东西；一个很干净的地方，人会不好意思丢垃圾，但是一旦地上有垃圾出现之后，人就会毫不犹疑的拋，丝毫不觉羞愧。这真是很奇怪的现象，心理学家研究的就是这个&#8220;引爆点&#8221;，地上究竟要有多脏，人们才会觉得反正这么脏，再脏一点无所谓，情况究竟要坏到什么程度，人们才会自暴自弃，让它烂到底。任何坏事，如果在开始时没有阻拦掉，形成风气，改也改不掉，就好象河堤，一个小缺口没有及时修补，可以崩坝，造成千百万倍的损失。3、责任分散效应1964年3月13日夜3时20 分，在美国纽约郊外某公寓前，一位叫朱诺比白的年轻女子在结束酒巴间工作回家的路上遇刺。当她绝望地喊叫：&#8220;有人要杀人啦!救命!救命!&#8221;听到喊叫声，附近住户亮起了灯，打开了窗户，凶手吓跑了。当一切恢复平静后，凶手又返回作案。当她又叫喊时，附近的住户又打开了电灯，凶手又逃跑了。当她认为已经无事，回到自己家上楼时，凶手又一次出现在她面前，将她杀死在楼梯上。在这个过程中，尽管她大声呼救，她的邻居中至少有 38位到窗前观看，但无一人来救她，甚至无一人打电话报警。这件事引起纽约社会的轰动，也引起了社会心理学工作者的重视和思考。人们把这种众多的旁观者见死不救的现象称为责任分散效应。对于责任分散效应形成的原因，心理学家进行了大量的实验和调查，结果发现：这种现象不能仅仅说是众人的冷酷无情，或道德日益沦丧的表现。因为在不同的场合，人们的援助行为确实是不同的。当一个人遇到紧急情境时，如果只有他一个人能提供帮助，他会清醒地意识到自己的责任，对受难者给予帮助。如果他见死不救会产生罪恶感、内疚感，这需要付出很高的心理代价。而如果有许多人在场的话，帮助求助者的责任就由大家来分担，造成责任分散，每个人分担的责任很少，旁观者甚至可能连他自己的那一份责任也意识不到，从而产生一种&#8220;我不去救，由别人去救&#8221;的心理，造成&#8220;集体冷漠&#8221;的局面。如何打破这种局面，这是心理学家正在研究的一个重要课题。4、帕金森定律英国著名历史学家诺斯古德·帕金森通过长期调查研究，写出一本名叫《帕金森定律》的书。他在书中阐述了机构人员膨胀的原因及后果：一个不称职的官员，可能有三条出路，第一是申请退职，把位子让给能干的人；第二是让一位能干的人来协助自己工作；第三是任用两个水平比自己更低的人当助手。第一条路是万万走不得的，因为那样会丧失许多权利；第二条路也不能走，因为那个能干的人会成为自己的对手；看来只有第三条路最适宜。于是，两个平庸的助手分担了他的工作，他自己则高高在上发号施令，他们不会对自己的权利构成威胁。两个助手既然无能，他们就上行下效，再为自己找两个更加无能的助手。如此类推，就形成了一个机构臃肿，人浮于事，相互扯皮，效率低下的领导体系。5、晕轮效应俄国著名的大文豪普希金曾因晕轮效应的作用吃了大苦头。他狂热地爱上了被称为&#8220;莫斯科第一美人&#8221;的娜坦丽，并且和她结了婚。娜坦丽容貌惊人，但与普希金志不同道不合。当普希金每次把写好的诗读给她听时，她总是捂着耳朵说：&#8220;不要听！不要听！&#8221;相反，她总是要普希金陪她游乐，出席一些豪华的晚会、舞会，普希金为此丢下创作，弄得债台高筑，最后还为她决斗而死，使一颗文学巨星过早地陨落。在普希金看来，一个漂亮的女人也必然有非凡的智慧和高贵的品格，然而事实并非如此，这种现象被称为晕轮效应。所谓晕轮效应，就是在人际交往中，人身上表现出的某一方面的特征，掩盖了其他特征，从而造成人际认知的障碍。在日常生活中，&#8220;晕轮效应&#8221;往往在悄悄地影响着我们对别人的认知和评价。比如有的老年人对青年人的个别缺点，或衣着打扮、生活习惯看不顺眼，就认为他们一定没出息；有的青年人由于倾慕朋友的某一可爱之处，就会把他看得处处可爱，真所谓&#8220;一俊遮百丑&#8221;。晕轮效应是一种以偏概全的主观心理臆测，其错误在于：第一，它容易抓住事物的个别特征，习惯以个别推及一般，就像盲人摸象一样，以点代面；第二，它把并无内在联系的一些个性或外貌特征联系在一起，断言有这种特征必然会有另一种特征；第三，它说好就全都肯定，说坏就全部否定，这是一种受主观偏见支配的绝对化倾向。总之，晕轮效应是人际交往中对人的心理影响很大的认知障碍，我们在交往中要尽量地避免和克服晕轮效应的副作用。6、霍桑效应心理学上的一种实验者效应。20世纪20-30年代，美国研究人员在芝加哥西方电力公司霍桑工厂进行的工作条件、社会因素和生产效益关系实验中发现了实验者效应，称霍桑效应。实验的第一阶段是从1924年11月开始的工作条件和生产效益的关系，设为实验组和控制组。结果不管增加或控制照明度，实验组产量都上升，而且照明度不变的控制组产量也增加。另外，又试验了工资报酬、工间休息时间、每日工作长度和每周工作天数等因素，也看不出这些工作条件对生产效益有何直接影响。第二阶段的试验是由美国哈佛大学教授梅奥领导的，着重研究社会因素与生产效率的关系，结果发现生产效率的提高主要是由于被实验者在精神方面发生了巨大的变化。参加试验的工人被置于专门的实验室并由研究人员领导，其社会状况发生了变化，受到各方面的关注，从而形成了参与试验的感觉，觉得自己是公司中重要的一部分，从而使工人从社会角度方面被激励，促进产量上升。这个效应告诉我们，当同学或自己受到公众的关注或注视时，学习和交往的效率就会大大增加。因此，我们在日常生活中要学会与他人友好相处，明白什么样的行为才是同学和老师所接受和赞赏的，我们只有在生活和学习中不断地增加自己的良好行为，才可能受到更多人的关注和赞赏，也才可能让我们的学习不断进步，充满自信！7、习得性无助实验习得性无助效应最早有奥弗米尔和西里格曼发现，后来在动物和人类研究中被广泛探讨。简单地说，很多实验表明，经过训练，狗可以越过屏障或从事其他的行为来逃避实验者加于它的电击。但是，如果狗以前受到不可预期（不知道什么时候到来）且不可控制的电击（如电击的中断与否不依赖于狗的行为），当狗后来有机会逃离电击时，他们也变得无力逃离。而且，狗还表现出其他方面的缺陷，如感到沮丧和压抑，主动性降低等等。狗之所以表现出这种状况，是由于在实验的早期学到了一种无助感。也就是说，它们认识到自己无论做什么都不能控制电击的终止。在每次实验中，电击终止都是在实验者掌控之下的，而狗会认识到自己没有能力改变这种外界的控制，从而学到了一种无助感。人如果产生了习得性无助，就成为了一种深深的绝望和悲哀。因此，我们在学习和生活中应把自己的眼光在开阔一点，看到事件背后的真正的决定因素，不要使我们自己陷入绝望。8、证人的记忆证人，在我们的认识里，通常都是提供一些客观的证据的人，就是把自己亲眼看到、亲耳听到的东西如实地讲出来的人。然而，心理学研究证明，很多证人提供的证词都不太准确，或者说是具有个人倾向性，带着个人的观点和意识。证人对他们的证词的信心并不能决定他们证词的准确性，这一研究结果令人感到惊讶。心理学家珀费可特和豪林斯决定对这一结论进行更深入的研究。为了考察证人的证词是否有特别的东西，他们将证人的记忆与对一般知识的记忆进行了比较。他们让被试者看一个简短的录象，是关于一个女孩被绑架的案件。第二天，让被试者回答一些有关录象里内容的问题，并要求他们说出对自己回答的信心程度，然后做再认记忆测验。接下来，使用同样的方法，内容是从百科全书和通俗读物中选出的一般知识问题。和以前发生的一样，珀费可特和豪林斯也发现，在证人回忆的精确性上，那些对自己的回答信心十足的人实际上并不比那些没信心的人更高明，但对于一般知识来说，情况就不是这样，信心高的人回忆成绩比信心不足的人好得多。人们对于自己在一般知识上的优势与弱势有自知之明，因此，倾向于修改他们对于信心量表的测验结果。一般知识是一个数据库，在个体之间是共享的，它有公认的正确答案，被试可以自己去衡量。例如，人们会知道自己在体育问题上是否比别人更好或更差一点。但是，目击的事件不受这种自知之明的影响。例如，从总体上讲，他们不大可能知道自己比别人在记忆事件中的参与者头发颜色方面更好或更差。9、罗森塔尔效应美国心理学家罗森塔尔等人于1968年做过一个著名实验，他们到一所小学，在一至六年级各选三个班的儿童进行煞有介事的&#8220;预测未来发展的测验&#8221;，然后实验者将认为有&#8220;优异发展可能&#8221;的学生名单通知教师。其实，这个名单并不是根据测验结果确定的，而是随机抽取的。它是以&#8220;权威性的谎言&#8221;暗示教师，从而调动了教师对名单上的学生的某种期待心理。8个月后，再次智能测验的结果发现，名单上的学生的成绩普遍提高，教师也给了他们良好的品行评语。这个实验取得了奇迹般的效果，人们把这种通过教师对学生心理的潜移默化的影响，从而使学生取得教师所期望的进步的现象，称为&#8220;罗森塔尔效应&#8221;，习惯上也称为皮格马利翁效应（皮格马利翁是古希腊神话中塞浦路斯国王，他对一尊少女塑像产生爱慕之情，他的热望最终使这尊雕像变为一个真人，两人相爱结合）。教育实践也表明：如果教师喜爱某些学生，对他们会抱有较高期望，经过一段时间，学生感受到教师的关怀、爱护和鼓励，常常以积极态度对待老师、对待学习以及对待自己的行为，学生更加自尊、自信、自爱、自强，诱发出一种积极向上的激情，这些学生常常会取得老师所期望的进步。相反，那些受到老师忽视、歧视的学生，久而久之会从教师的言谈、举止、表情中感受到教师的&#8220;偏心&#8221;，也会以消极的态度对待老师、对待自己的学习，不理会或拒绝听从老师的要求，这些学生常常会一天天变坏，最后沦为社会的不良分子。尽管有些例外，但大趋势却是如此，同时这也给教师敲响了警钟。10、虚假同感偏差我们通常都会相信，我们的爱好与大多数人是一样的。如果你喜欢玩电脑游戏，那么就有可能高估喜欢电脑游戏的人数。你也通常会高估给自己喜欢的同学投票的人数，高估自己在群体中的威信与领导能力等等。你的这种高估与你的行为及态度有相同特点的人数的倾向性就叫做&#8220;虚假同感偏差&#8221;。有些因素会影响你的这种虚假同感偏差强度：&nbsp;（1）当外部的归因强于内部归因时；&nbsp;（2）当前的行为或事件对某人非常重要时；&nbsp;（3）当你对自己的观点非常确定或坚信时；&nbsp;（4）当你的地位或正常生活和学习受到某种威胁时；&nbsp;（5）当涉及到某种积极的品质或个性时；&nbsp;（6）当你将其他人看成与自己是相似时。...]]></summary>
    <author>
        <name>Cnangel</name>
        <uri>http://my.huhoo.net/study</uri>
    </author>
    
        <category term="杂苑笔记" scheme="http://www.sixapart.com/ns/types#category" />
    
    <category term="心理" label="心理" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="心理学" label="心理学" scheme="http://www.sixapart.com/ns/types#tag" />
    
    <content type="html" xml:lang="en" xml:base="http://my.huhoo.net/study/">
        <![CDATA[<p><span class="Apple-style-span" style="color: rgb(78, 78, 78); font-size: 12px; line-height: 18px; "></span></p><div><b><font class="Apple-style-span" style="font-size: 1.25em; ">1、鸟笼逻辑</font></b></div><div style="font-family: Tahoma, Verdana, Arial, Helvetica, sans-serif; "><br /></div><div style="font-family: Tahoma, Verdana, Arial, Helvetica, sans-serif; ">挂一个漂亮的鸟笼在房间里最显眼的地方，过不了几天，主人一定会做出下面两个选择之一：把鸟笼扔掉，或者买一只鸟回来放在鸟笼里，这就是鸟笼逻辑。</div><div style="font-family: Tahoma, Verdana, Arial, Helvetica, sans-serif; ">过程很简单，设想你是这房间的主人，只要有人走进房间，看到鸟笼，就会忍不住问你：&#8220;鸟呢？是不是死了？&#8221;当你回答：&#8220;我从来都没有养过鸟。&#8221;人们会问：&#8220;那么，你要一个鸟笼干什么？&#8221;最后你不得不在两个选择中二选一，因为这比无休止的解释要容易得多。</div><div style="font-family: Tahoma, Verdana, Arial, Helvetica, sans-serif; ">鸟笼逻辑的原因很简单：人们绝大部分的时候是采取惯性思维，可见在生活和工作中培养逻辑思维是多么重要。</div><div style="font-family: Tahoma, Verdana, Arial, Helvetica, sans-serif; "><br /></div><div><font class="Apple-style-span" style="font-size: 1.25em; "><b>2、破窗效应</b></font></div><div style="font-family: Tahoma, Verdana, Arial, Helvetica, sans-serif; "><br /></div><div style="font-family: Tahoma, Verdana, Arial, Helvetica, sans-serif; ">心理学的研究上有个现象叫做&#8220;破窗效应&#8221;，就是说，一个房子如果窗户破了，没有人去修补，隔不久，其它的窗户也会莫名其妙的被人打破；一面墙，如果出现一些涂鸦没有清洗掉，很快的，墙上就布满了乱七八糟，不堪入目的东西；一个很干净的地方，人会不好意思丢垃圾，但是一旦地上有垃圾出现之后，人就会毫不犹疑的拋，丝毫不觉羞愧。</div><div style="font-family: Tahoma, Verdana, Arial, Helvetica, sans-serif; ">这真是很奇怪的现象，心理学家研究的就是这个&#8220;引爆点&#8221;，地上究竟要有多脏，人们才会觉得反正这么脏，再脏一点无所谓，情况究竟要坏到什么程度，人们才会自暴自弃，让它烂到底。任何坏事，如果在开始时没有阻拦掉，形成风气，改也改不掉，就好象河堤，一个小缺口没有及时修补，可以崩坝，造成千百万倍的损失。</div><div style="font-family: Tahoma, Verdana, Arial, Helvetica, sans-serif; "><br /></div><div><font class="Apple-style-span" style="font-size: 1.25em; "><b>3、责任分散效应</b></font></div><div style="font-family: Tahoma, Verdana, Arial, Helvetica, sans-serif; "><br /></div><div style="font-family: Tahoma, Verdana, Arial, Helvetica, sans-serif; ">1964年3月13日夜3时20 分，在美国纽约郊外某公寓前，一位叫朱诺比白的年轻女子在结束酒巴间工作回家的路上遇刺。当她绝望地喊叫：&#8220;有人要杀人啦!救命!救命!&#8221;听到喊叫声，附近住户亮起了灯，打开了窗户，凶手吓跑了。当一切恢复平静后，凶手又返回作案。当她又叫喊时，附近的住户又打开了电灯，凶手又逃跑了。当她认为已经无事，回到自己家上楼时，凶手又一次出现在她面前，将她杀死在楼梯上。在这个过程中，尽管她大声呼救，她的邻居中至少有 38位到窗前观看，但无一人来救她，甚至无一人打电话报警。这件事引起纽约社会的轰动，也引起了社会心理学工作者的重视和思考。人们把这种众多的旁观者见死不救的现象称为责任分散效应。</div><div style="font-family: Tahoma, Verdana, Arial, Helvetica, sans-serif; ">对于责任分散效应形成的原因，心理学家进行了大量的实验和调查，结果发现：这种现象不能仅仅说是众人的冷酷无情，或道德日益沦丧的表现。因为在不同的场合，人们的援助行为确实是不同的。当一个人遇到紧急情境时，如果只有他一个人能提供帮助，他会清醒地意识到自己的责任，对受难者给予帮助。如果他见死不救会产生罪恶感、内疚感，这需要付出很高的心理代价。而如果有许多人在场的话，帮助求助者的责任就由大家来分担，造成责任分散，每个人分担的责任很少，旁观者甚至可能连他自己的那一份责任也意识不到，从而产生一种&#8220;我不去救，由别人去救&#8221;的心理，造成&#8220;集体冷漠&#8221;的局面。如何打破这种局面，这是心理学家正在研究的一个重要课题。</div><div style="font-family: Tahoma, Verdana, Arial, Helvetica, sans-serif; "><br /></div><div><font class="Apple-style-span" style="font-size: 1.25em; "><b>4、帕金森定律</b></font></div><div style="font-family: Tahoma, Verdana, Arial, Helvetica, sans-serif; "><br /></div><div style="font-family: Tahoma, Verdana, Arial, Helvetica, sans-serif; ">英国著名历史学家诺斯古德·帕金森通过长期调查研究，写出一本名叫《帕金森定律》的书。他在书中阐述了机构人员膨胀的原因及后果：一个不称职的官员，可能有三条出路，第一是申请退职，把位子让给能干的人；第二是让一位能干的人来协助自己工作；第三是任用两个水平比自己更低的人当助手。</div><div style="font-family: Tahoma, Verdana, Arial, Helvetica, sans-serif; ">第一条路是万万走不得的，因为那样会丧失许多权利；第二条路也不能走，因为那个能干的人会成为自己的对手；看来只有第三条路最适宜。于是，两个平庸的助手分担了他的工作，他自己则高高在上发号施令，他们不会对自己的权利构成威胁。两个助手既然无能，他们就上行下效，再为自己找两个更加无能的助手。如此类推，就形成了一个机构臃肿，人浮于事，相互扯皮，效率低下的领导体系。</div><div style="font-family: Tahoma, Verdana, Arial, Helvetica, sans-serif; "><br /></div><div><font class="Apple-style-span" style="font-size: 1.25em; "><b>5、晕轮效应</b></font></div><div style="font-family: Tahoma, Verdana, Arial, Helvetica, sans-serif; "><br /></div><div style="font-family: Tahoma, Verdana, Arial, Helvetica, sans-serif; ">俄国著名的大文豪普希金曾因晕轮效应的作用吃了大苦头。他狂热地爱上了被称为&#8220;莫斯科第一美人&#8221;的娜坦丽，并且和她结了婚。娜坦丽容貌惊人，但与普希金志不同道不合。当普希金每次把写好的诗读给她听时，她总是捂着耳朵说：&#8220;不要听！不要听！&#8221;相反，她总是要普希金陪她游乐，出席一些豪华的晚会、舞会，普希金为此丢下创作，弄得债台高筑，最后还为她决斗而死，使一颗文学巨星过早地陨落。在普希金看来，一个漂亮的女人也必然有非凡的智慧和高贵的品格，然而事实并非如此，这种现象被称为晕轮效应。</div><div style="font-family: Tahoma, Verdana, Arial, Helvetica, sans-serif; ">所谓晕轮效应，就是在人际交往中，人身上表现出的某一方面的特征，掩盖了其他特征，从而造成人际认知的障碍。在日常生活中，&#8220;晕轮效应&#8221;往往在悄悄地影响着我们对别人的认知和评价。比如有的老年人对青年人的个别缺点，或衣着打扮、生活习惯看不顺眼，就认为他们一定没出息；有的青年人由于倾慕朋友的某一可爱之处，就会把他看得处处可爱，真所谓&#8220;一俊遮百丑&#8221;。</div><div style="font-family: Tahoma, Verdana, Arial, Helvetica, sans-serif; ">晕轮效应是一种以偏概全的主观心理臆测，其错误在于：第一，它容易抓住事物的个别特征，习惯以个别推及一般，就像盲人摸象一样，以点代面；第二，它把并无内在联系的一些个性或外貌特征联系在一起，断言有这种特征必然会有另一种特征；第三，它说好就全都肯定，说坏就全部否定，这是一种受主观偏见支配的绝对化倾向。总之，晕轮效应是人际交往中对人的心理影响很大的认知障碍，我们在交往中要尽量地避免和克服晕轮效应的副作用。</div><div style="font-family: Tahoma, Verdana, Arial, Helvetica, sans-serif; "><br /></div><div><font class="Apple-style-span" style="font-size: 1.25em; "><b>6、霍桑效应</b></font></div><div style="font-family: Tahoma, Verdana, Arial, Helvetica, sans-serif; "><br /></div><div style="font-family: Tahoma, Verdana, Arial, Helvetica, sans-serif; ">心理学上的一种实验者效应。20世纪20-30年代，美国研究人员在芝加哥西方电力公司霍桑工厂进行的工作条件、社会因素和生产效益关系实验中发现了实验者效应，称霍桑效应。</div><div style="font-family: Tahoma, Verdana, Arial, Helvetica, sans-serif; ">实验的第一阶段是从1924年11月开始的工作条件和生产效益的关系，设为实验组和控制组。结果不管增加或控制照明度，实验组产量都上升，而且照明度不变的控制组产量也增加。另外，又试验了工资报酬、工间休息时间、每日工作长度和每周工作天数等因素，也看不出这些工作条件对生产效益有何直接影响。</div><div style="font-family: Tahoma, Verdana, Arial, Helvetica, sans-serif; ">第二阶段的试验是由美国哈佛大学教授梅奥领导的，着重研究社会因素与生产效率的关系，结果发现生产效率的提高主要是由于被实验者在精神方面发生了巨大的变化。参加试验的工人被置于专门的实验室并由研究人员领导，其社会状况发生了变化，受到各方面的关注，从而形成了参与试验的感觉，觉得自己是公司中重要的一部分，从而使工人从社会角度方面被激励，促进产量上升。</div><div style="font-family: Tahoma, Verdana, Arial, Helvetica, sans-serif; ">这个效应告诉我们，当同学或自己受到公众的关注或注视时，学习和交往的效率就会大大增加。因此，我们在日常生活中要学会与他人友好相处，明白什么样的行为才是同学和老师所接受和赞赏的，我们只有在生活和学习中不断地增加自己的良好行为，才可能受到更多人的关注和赞赏，也才可能让我们的学习不断进步，充满自信！</div><div style="font-family: Tahoma, Verdana, Arial, Helvetica, sans-serif; "><br /></div><div><font class="Apple-style-span" style="font-size: 1.25em; "><b>7、习得性无助实验</b></font></div><div style="font-family: Tahoma, Verdana, Arial, Helvetica, sans-serif; "><br /></div><div style="font-family: Tahoma, Verdana, Arial, Helvetica, sans-serif; ">习得性无助效应最早有奥弗米尔和西里格曼发现，后来在动物和人类研究中被广泛探讨。简单地说，很多实验表明，经过训练，狗可以越过屏障或从事其他的行为来逃避实验者加于它的电击。但是，如果狗以前受到不可预期（不知道什么时候到来）且不可控制的电击（如电击的中断与否不依赖于狗的行为），当狗后来有机会逃离电击时，他们也变得无力逃离。而且，狗还表现出其他方面的缺陷，如感到沮丧和压抑，主动性降低等等。</div><div style="font-family: Tahoma, Verdana, Arial, Helvetica, sans-serif; ">狗之所以表现出这种状况，是由于在实验的早期学到了一种无助感。也就是说，它们认识到自己无论做什么都不能控制电击的终止。在每次实验中，电击终止都是在实验者掌控之下的，而狗会认识到自己没有能力改变这种外界的控制，从而学到了一种无助感。</div><div style="font-family: Tahoma, Verdana, Arial, Helvetica, sans-serif; ">人如果产生了习得性无助，就成为了一种深深的绝望和悲哀。因此，我们在学习和生活中应把自己的眼光在开阔一点，看到事件背后的真正的决定因素，不要使我们自己陷入绝望。</div><div style="font-family: Tahoma, Verdana, Arial, Helvetica, sans-serif; "><br /></div><div><b><font class="Apple-style-span" style="font-size: 1.25em; ">8、证人的记忆</font></b></div><div style="font-family: Tahoma, Verdana, Arial, Helvetica, sans-serif; "><br /></div><div style="font-family: Tahoma, Verdana, Arial, Helvetica, sans-serif; ">证人，在我们的认识里，通常都是提供一些客观的证据的人，就是把自己亲眼看到、亲耳听到的东西如实地讲出来的人。然而，心理学研究证明，很多证人提供的证词都不太准确，或者说是具有个人倾向性，带着个人的观点和意识。</div><div style="font-family: Tahoma, Verdana, Arial, Helvetica, sans-serif; ">证人对他们的证词的信心并不能决定他们证词的准确性，这一研究结果令人感到惊讶。心理学家珀费可特和豪林斯决定对这一结论进行更深入的研究。为了考察证人的证词是否有特别的东西，他们将证人的记忆与对一般知识的记忆进行了比较。</div><div style="font-family: Tahoma, Verdana, Arial, Helvetica, sans-serif; ">他们让被试者看一个简短的录象，是关于一个女孩被绑架的案件。第二天，让被试者回答一些有关录象里内容的问题，并要求他们说出对自己回答的信心程度，然后做再认记忆测验。接下来，使用同样的方法，内容是从百科全书和通俗读物中选出的一般知识问题。</div><div style="font-family: Tahoma, Verdana, Arial, Helvetica, sans-serif; ">和以前发生的一样，珀费可特和豪林斯也发现，在证人回忆的精确性上，那些对自己的回答信心十足的人实际上并不比那些没信心的人更高明，但对于一般知识来说，情况就不是这样，信心高的人回忆成绩比信心不足的人好得多。</div><div style="font-family: Tahoma, Verdana, Arial, Helvetica, sans-serif; ">人们对于自己在一般知识上的优势与弱势有自知之明，因此，倾向于修改他们对于信心量表的测验结果。一般知识是一个数据库，在个体之间是共享的，它有公认的正确答案，被试可以自己去衡量。例如，人们会知道自己在体育问题上是否比别人更好或更差一点。但是，目击的事件不受这种自知之明的影响。例如，从总体上讲，他们不大可能知道自己比别人在记忆事件中的参与者头发颜色方面更好或更差。</div><div style="font-family: Tahoma, Verdana, Arial, Helvetica, sans-serif; "><br /></div><div><font class="Apple-style-span" style="font-size: 1.25em; "><b>9、罗森塔尔效应</b></font></div><div style="font-family: Tahoma, Verdana, Arial, Helvetica, sans-serif; "><br /></div><div style="font-family: Tahoma, Verdana, Arial, Helvetica, sans-serif; ">美国心理学家罗森塔尔等人于1968年做过一个著名实验，他们到一所小学，在一至六年级各选三个班的儿童进行煞有介事的&#8220;预测未来发展的测验&#8221;，然后实验者将认为有&#8220;优异发展可能&#8221;的学生名单通知教师。其实，这个名单并不是根据测验结果确定的，而是随机抽取的。它是以&#8220;权威性的谎言&#8221;暗示教师，从而调动了教师对名单上的学生的某种期待心理。8个月后，再次智能测验的结果发现，名单上的学生的成绩普遍提高，教师也给了他们良好的品行评语。</div><div style="font-family: Tahoma, Verdana, Arial, Helvetica, sans-serif; ">这个实验取得了奇迹般的效果，人们把这种通过教师对学生心理的潜移默化的影响，从而使学生取得教师所期望的进步的现象，称为&#8220;罗森塔尔效应&#8221;，习惯上也称为皮格马利翁效应（皮格马利翁是古希腊神话中塞浦路斯国王，他对一尊少女塑像产生爱慕之情，他的热望最终使这尊雕像变为一个真人，两人相爱结合）。</div><div style="font-family: Tahoma, Verdana, Arial, Helvetica, sans-serif; ">教育实践也表明：如果教师喜爱某些学生，对他们会抱有较高期望，经过一段时间，学生感受到教师的关怀、爱护和鼓励，常常以积极态度对待老师、对待学习以及对待自己的行为，学生更加自尊、自信、自爱、自强，诱发出一种积极向上的激情，这些学生常常会取得老师所期望的进步。相反，那些受到老师忽视、歧视的学生，久而久之会从教师的言谈、举止、表情中感受到教师的&#8220;偏心&#8221;，也会以消极的态度对待老师、对待自己的学习，不理会或拒绝听从老师的要求，这些学生常常会一天天变坏，最后沦为社会的不良分子。尽管有些例外，但大趋势却是如此，同时这也给教师敲响了警钟。</div><div style="font-family: Tahoma, Verdana, Arial, Helvetica, sans-serif; "><br /></div><div><b><font class="Apple-style-span" style="font-size: 1.25em; ">10、虚假同感偏差</font></b></div><div style="font-family: Tahoma, Verdana, Arial, Helvetica, sans-serif; "><br /></div><div style="font-family: Tahoma, Verdana, Arial, Helvetica, sans-serif; ">我们通常都会相信，我们的爱好与大多数人是一样的。如果你喜欢玩电脑游戏，那么就有可能高估喜欢电脑游戏的人数。你也通常会高估给自己喜欢的同学投票的人数，高估自己在群体中的威信与领导能力等等。你的这种高估与你的行为及态度有相同特点的人数的倾向性就叫做&#8220;虚假同感偏差&#8221;。有些因素会影响你的这种虚假同感偏差强度：&nbsp;</div><div style="font-family: Tahoma, Verdana, Arial, Helvetica, sans-serif; ">（1）当外部的归因强于内部归因时；&nbsp;</div><div style="font-family: Tahoma, Verdana, Arial, Helvetica, sans-serif; ">（2）当前的行为或事件对某人非常重要时；&nbsp;</div><div style="font-family: Tahoma, Verdana, Arial, Helvetica, sans-serif; ">（3）当你对自己的观点非常确定或坚信时；&nbsp;</div><div style="font-family: Tahoma, Verdana, Arial, Helvetica, sans-serif; ">（4）当你的地位或正常生活和学习受到某种威胁时；&nbsp;</div><div style="font-family: Tahoma, Verdana, Arial, Helvetica, sans-serif; ">（5）当涉及到某种积极的品质或个性时；&nbsp;</div><div style="font-family: Tahoma, Verdana, Arial, Helvetica, sans-serif; ">（6）当你将其他人看成与自己是相似时。</div><p></p>]]>
        <![CDATA[<p><span class="Apple-style-span" style="color: rgb(78, 78, 78); font-size: 12px; line-height: 18px; "></span></p><div><font class="Apple-style-span" size="3"><b><br /></b></font></div><p></p>]]>
    </content>
</entry>

<entry>
    <title>[ZT]服务价值</title>
    <link rel="alternate" type="text/html" href="http://my.huhoo.net/archives/2011/10/zt_3.html" />
    <id>tag:my.huhoo.net,2011:/study//1.967</id>

    <published>2011-10-27T05:28:06Z</published>
    <updated>2011-10-27T05:32:28Z</updated>

    <summary><![CDATA[&nbsp;&nbsp;&nbsp; 服务可以让顾客愉快，服务可以让顾客花钱不后悔，服务可以让顾客获得幸福感。&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 服务可以留住老顾客，服务可以产生好的口碑传播效应，服务可以吸引新顾客。&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 服务可以让员工精神升华，服务可以提升员工满意度，降低员工流失率。...]]></summary>
    <author>
        <name>Cnangel</name>
        <uri>http://my.huhoo.net/study</uri>
    </author>
    
        <category term="杂苑笔记" scheme="http://www.sixapart.com/ns/types#category" />
    
    <category term="服务意识" label="服务意识" scheme="http://www.sixapart.com/ns/types#tag" />
    
    <content type="html" xml:lang="en" xml:base="http://my.huhoo.net/study/">
        <![CDATA[&nbsp;&nbsp;&nbsp; 服务可以让顾客愉快，服务可以让顾客花钱不后悔，服务可以让顾客获得幸福感。<span class="Apple-converted-space">&nbsp;</span><br />&nbsp;&nbsp;&nbsp;&nbsp;
	服务可以留住老顾客，服务可以产生好的口碑传播效应，服务可以吸引新顾客。<span class="Apple-converted-space">&nbsp;</span><br />&nbsp;&nbsp;&nbsp;&nbsp;
	服务可以让员工精神升华，服务可以提升员工满意度，降低员工流失率。 ]]>
        <![CDATA[<ul><li>
	<b><font style="font-size: 1.5625em;">服务为何要完美？<span class="Apple-converted-space">&nbsp;</span></font></b></li></ul><p>
	　　服务如果有缺陷，顾客就会因此而流失。<span class="Apple-converted-space">&nbsp;</span><br />
	　　流失一个顾客，其损失绝非单人单次购买所带来的成交收益。<span class="Apple-converted-space">&nbsp;</span><br />
	　　每流失一个顾客，都可能给企业带来不可估量的副作用。<span class="Apple-converted-space">&nbsp;</span><br />
	　　如何才叫做完美？<span class="Apple-converted-space">&nbsp;</span><br />
	　　首先，完美意味着顾客满意度和顾客满意率都能达到或接近100%。<span class="Apple-converted-space">&nbsp;</span><br />
	　　其次，完美意味着服务流程是完善的，且每个流程环节的效果是优良的。<span class="Apple-converted-space">&nbsp;</span><br />
	　　如何才能实现完美服务？<span class="Apple-converted-space">&nbsp;</span><br />
	　　首先，必须建立起完善的服务文化，为接下来培养合格的服务人才奠定基础。<span class="Apple-converted-space">&nbsp;</span><br />
	　　其次，要在服务文化的土壤上，科学地管理好员工，促进他们健康成长。<span class="Apple-converted-space">&nbsp;</span><br />
	　　只有每个员工都整齐划一地能确保每一个顾客都满意，才能实现完美服务的目标。<span class="Apple-converted-space">&nbsp;</span><br />
	　　如何培训员工？<span class="Apple-converted-space">&nbsp;</span><br />
	　　服务理念的建立十分容易，道理一讲便能明白。难点就在于如何教会他们做得好。<span class="Apple-converted-space">&nbsp;</span><br />
	　　这其实也很简单，跟其他任何技能一样，先要学习套路，然后就是练出功夫。有了正确的套路（流程）和过硬的功夫，他们自然就会显得很专业。<span class="Apple-converted-space">&nbsp;</span><br /></p><ul><li>
	<b><font style="font-size: 1.5625em;">谁应该学习？<span class="Apple-converted-space">&nbsp;</span></font></b></li></ul><p>
	　　首先是高层管理人员，因为高层不带头学习，服务文化就无法建立。<span class="Apple-converted-space">&nbsp;</span></p>
<p>
	下面共有10道测试题，每道题满分是10分，你可以酌情为自己打0～10分。总分100分。请你如实为自己打分。<span class="Apple-converted-space">&nbsp;</span><br />
	　　<b>（1）在你的家里，你作为年轻的家庭成员，总能做到尊重、关心、顺从老人，关心老人的心情和健康，让老人高兴，在你的影响下，家庭关系很和睦。<span class="Apple-converted-space">&nbsp;</span><br />
	　　（2）只要家里来了客人，你总能主动为客人沏茶倒水，与客人亲切交谈，让客人舒心、随便、高兴。<span class="Apple-converted-space">&nbsp;</span><br />
	　　（3）和朋友们在一起时，你总是主动关心每一个人的冷暖和心情。<span class="Apple-converted-space">&nbsp;</span><br />
	　　（4）在你工作的单位里，你总是乐于关心和帮助同事，谁遇到困难你都能尽力帮忙。<span class="Apple-converted-space">&nbsp;</span><br />
	　　（5）你经常称赞和夸奖别人。<span class="Apple-converted-space">&nbsp;</span><br />
	　　（6）得到别人的谅解、赞美和帮助时，你总是心存感激之情。<span class="Apple-converted-space">&nbsp;</span><br />
	　　（7）走在大街上，有陌生人向你问路，你总是不厌其烦地给他讲清楚。<span class="Apple-converted-space">&nbsp;</span><br />
	　　（8）如果有人请你帮忙，而你却实在无能为力，你内心会感到愧疚。<span class="Apple-converted-space">&nbsp;</span><br />
	　　（9）在你从业的零售店铺里，你感到有义务和责任去帮助每一位客人，让他们高兴和满意。<span class="Apple-converted-space">&nbsp;</span><br />
	　　（10）你总是能看到别人的优点并欣赏别人。<span class="Apple-converted-space">&nbsp;</span></b><br />
	<i>　　如果你的总分在<u>80</u>分以上，说明你已经很有服务意识了，相信你一定能够成为一位了不起的服务明星。<span class="Apple-converted-space">&nbsp;</span><br />
	　　如果你的总分在<u>60～80</u>分之间，说明你只要稍加努力，便会成为服务高手。<span class="Apple-converted-space">&nbsp;</span><br />
	　　如果你的总分在<u>40～60</u>分之间，说明你还需要把自己的爱心扩展到更大的范围。<span class="Apple-converted-space">&nbsp;</span><br />
	　　如果你的总分在<u>40</u>分以下，说明你需要经过三个月的适应性训练，来培养和提高自己的服务意识。<span class="Apple-converted-space">&nbsp;</span></i><br />
	　　　服务意识训练方法<span class="Apple-converted-space">&nbsp;</span><br />
	　　以下训练方法适用于经测试服务意识分数在60分以下的员工。<span class="Apple-converted-space">&nbsp;</span><br />
	<b>　　训练周期：1～3个月<span class="Apple-converted-space">&nbsp;</span><br />
	　　训练要求：每天坚持<span class="Apple-converted-space">&nbsp;</span><br />
	　　训练科目：<span class="Apple-converted-space">&nbsp;</span><br />
	　　（1）每天早起，先调整自己脸部的肌肉，达到微笑状态。<span class="Apple-converted-space">&nbsp;</span><br />
	　　（2）每天早起，单独或协助家人准备早点。<span class="Apple-converted-space">&nbsp;</span><br />
	　　（3）准时上班。<span class="Apple-converted-space">&nbsp;</span><br />
	　　（4）在公交车上，只要有机会，就主动为年老体弱者让座。<span class="Apple-converted-space">&nbsp;</span><br />
	　　（5）上班后见到每个人都主动微笑并问好。<span class="Apple-converted-space">&nbsp;</span><br />
	　　（6）每天上班时用微笑对待每一个人，尽力帮助身边的每一位同事和顾客。<span class="Apple-converted-space">&nbsp;</span><br />
	　　（7）每天下班后，都跟家人或朋友谈些令人愉快的话题。<span class="Apple-converted-space">&nbsp;</span><br />
	　　（8）每周看望一次自己的父母，让他们高兴。<span class="Apple-converted-space">&nbsp;</span><br />
	　　（9）当别人和自己意见不一致时，主动采取妥协让步的做法。<span class="Apple-converted-space">&nbsp;</span><br />
	　　（10）多挖掘和欣赏周围人的优点和长处，并不吝赞美之词。<span class="Apple-converted-space">&nbsp;</span></b><br />
	　　只有坚持训练一段时间，你的心态和行为才会演变为习惯。<span class="Apple-converted-space">&nbsp;</span><br />
	　　如此做，坚持下去，你会收获很多。<span class="Apple-converted-space">&nbsp;</span><br />
	　　阅读资料?突破服务心障<span class="Apple-converted-space">&nbsp;</span><br />
	　　一般而言，你认为谁对你最重要，你就会更乐于为谁服务，且服务得更好。<span class="Apple-converted-space">&nbsp;</span><br />
	　　通常，我们都已经习惯于为自己的孩子服务，为自己的家人服务，为自己的朋友服务，为自己的上司服务，做到这些，在大家看来，都不是一件太难的事情。因为他们对自己很重要，所以，你会发自内心地愿意为他们服务。<span class="Apple-converted-space">&nbsp;</span><br />
	<br /></p><ul><li>
	<b><font style="font-size: 1.5625em;">服务意识</font></b></li></ul><p>
	然而，我们却很少接受为陌生人提供良好服务的教育和训练。<span class="Apple-converted-space">&nbsp;</span><br />
	　　殊不知，除了孩子、家人、上司、朋友之外，顾客也是很重要的。当你一旦认识到老板给你发的工资是从顾客那里来的，你就应该把顾客当成重要的服务对象了。<span class="Apple-converted-space">&nbsp;</span><br />
	　　现实工作中，你也许能够认同顾客重要的道理，但却不像在家里待客那样善于为顾客提供服务的话，通常是因为你还是把他们当成陌生人对待造成的。相信你在工作场所遇到自己的家人或朋友前来购物时，你一定不会令他们失望。<span class="Apple-converted-space">&nbsp;</span><br />
	　　有时候，你感觉应该为陌生的顾客主动服务，却总是犹犹豫豫，甚至贻误战机；有时候，你虽然在为陌生顾客服务，但却不像对待熟悉的顾客那样自然大方。这其实是由于一些心理障碍所造成的。<span class="Apple-converted-space">&nbsp;</span><br />
	　　那么常见的心理障碍都有哪些呢？大致有以下五个：<span class="Apple-converted-space">&nbsp;</span><br />
	　　<b>1．担心遭到拒绝<span class="Apple-converted-space">&nbsp;</span></b><br />
	　　这是由以往曾经遭遇过顾客的拒绝所造成的心理障碍。<span class="Apple-converted-space">&nbsp;</span><br />
	
　　的确，有些顾客自主意识特别强，或者是有自闭症状，不喜欢被别人服务。但这种人所占比例不大，其他大多数顾客还是愿意接受你的主动服务。假使你因此而
不再为顾客提供主动服务，是不是会影响到其他顾客需要的满足呢？退一步想，即使遭到拒绝又能怎么样？由于你是善意的，顾客通常也不会怪你的。<span class="Apple-converted-space">&nbsp;</span><br />
	　　<b>2．担心服务不好<span class="Apple-converted-space">&nbsp;</span></b><br />
	　　这是由于你对自己要求过高，或对自己的服务素质缺乏自信所造成的。其实，顾客对你的要求未必像你对自己的要求那样高，多数顾客更在意的是你的服务态度，而不是服务知识和服务技能。<span class="Apple-converted-space">&nbsp;</span><br />
	　　另外，没有几个顾客在服务知识和服务技能方面比你更内行，只要你大胆服务，顾客是看不出你的缺陷的。即使你在服务知识和服务技能方面的缺陷被顾客发现了，又能怎么样，你可以自谦地说&#8220;我正在努力学习，以后不会这样的。&#8221;只要态度积极，顾客不会拿你怎么样的。<span class="Apple-converted-space">&nbsp;</span><br />
	　　假使你真的没有能力解决顾客的问题，也可以马上找人帮忙。<span class="Apple-converted-space">&nbsp;</span><br />
	
　　记住：只要服务态度好，即使服务知识和服务能力暂时差些，也没有关系。因为只有在服务顾客的实践中，你才能够发现自己的不足，也才能有意识地学习和改
进。一个人的知识和能力总归是有限的，要善于借助团队的力量帮助顾客解决问题。你既可以找同事帮忙，也可以找上司帮忙，甚至可以请其他的顾客帮忙，只要你
愿意，总能把服务顾客的事情做好的。<span class="Apple-converted-space">&nbsp;</span><br />
	　　<b>3．担心别人嘲讽<span class="Apple-converted-space">&nbsp;</span></b><br />
	　　如果你总是担心别人嫉妒而不敢进步，那你只好做一个平庸之辈了。<span class="Apple-converted-space">&nbsp;</span><br />
	　　其实，别人嫉妒你是好事，说明你比他强。只要你对同事也像对顾客一样尊重和关心的话，不仅不会遭到他们的嘲讽，还会影响和带动他们向你学习。<span class="Apple-converted-space">&nbsp;</span><br />
	
　　话又说回来，你所担心的这种情况，在如今的中国已经不成问题了，没有几个人有那闲工夫去嘲讽别人的优秀了，你尽可以大胆表现自己，让他们学去吧。即使
有人嘲讽你，又能怎么样呢？至少领导不会嘲讽你。再说了，嘲讽你的人，过不了多久，也许就会成为你的追随者，只要你坚信自己是对的，就不要被别人的看法所
干扰。<span class="Apple-converted-space">&nbsp;</span><br />
	　　<b>4．感觉心里委屈<span class="Apple-converted-space">&nbsp;</span></b><br />
	
　　这其实是因为心里不平衡所造成的。本来人人平等，为何我要服务别人，而别人被我服务呢？为了挣这点钱，值得我付出这么多吗？这是很多人在服务意识尚未
真正建立之前的一种正常心理活动。的确，被服务的感觉要比服务别人的感觉好得多，因为你不必费心费力费时。尤其是当我们为顾客服务却得不到平等回报的时
候，我们更会感觉到自己委屈了，似乎很不值得。<span class="Apple-converted-space">&nbsp;</span><br />
	　　为了克服这一心理障碍，首先你要明白这样一个道理：帮人更是帮自己。<span class="Apple-converted-space">&nbsp;</span><br />
	　　试想一下，如果你周围有一个人，总是获得你和他人的帮助，却从来不去考虑帮助你和他人的话，时间一长，你和他人还会愿意再继续帮助他吗？相信大多数人都是有情感、有头脑的，既然人人都知道这个道理，那么你的付出也就不会白费了。这就是人际关系中的牛顿第三定律。<span class="Apple-converted-space">&nbsp;</span><br />
	
　　物理学里的牛顿第三定律讲的是：一个物体给另一个物体施加一个作用力的同时，也会受到来自另一个物体的反作用力，这两个力大小相等、方向相反。比如，
你用拳头用力去砸石头的同时，感到自己的手很疼，这就证明你同时受到来自那块石头的反作用力；而且你越是用力，你就会感觉越疼，因为这两个力大小相等、方
向相反。<span class="Apple-converted-space">&nbsp;</span><br />
	　　在人际关系中，这一定律也有一定的适应性。那就是说，你帮助别人，别人也会帮助你；你付出的越多，你得到的也越多；你爱别人，别人也会爱你；你冷落别人，别人也会冷落你；你恨别人，别人也会恨你。总之，你付出什么，便会得到什么。<span class="Apple-converted-space">&nbsp;</span><br />
	　　虽然人际关系上的牛顿第三定律似乎不像自然科学上的牛顿第三定律那样同步和精准，但也能大致反映人际交往上的一些特点和规律。<span class="Apple-converted-space">&nbsp;</span><br />
	　　有时候我们帮助别人，当时只是得到了一声&#8220;谢谢&#8221;作为回报，似乎没有得到更多更实惠的报偿。但仔细想一想，即使你只是用自己的知识帮助一位陌生人，同时也会起到帮助自己复习和检验知识的作用，&#8220;教学相长&#8221;不就是这样的道理吗？<span class="Apple-converted-space">&nbsp;</span><br />
	　　生活中的帮人，并不见得立即就能产生完全相等的回报，但是却能起到润滑人际关系的作用，使得你有个好人缘、好友圈，这也是你的一笔宝贵财富。<span class="Apple-converted-space">&nbsp;</span><br />
	　　有人说，一个人的事业发展大小与他的&#8220;圈子&#8221;大小成正比，其实是很有道理的。乐善好施的人，才能得道多助、人熟路通。<span class="Apple-converted-space">&nbsp;</span><br />
	　　在职场上，你多帮助同事，也会有一个好的工作圈，当你遇到困难和挑战时，别人也会主动帮助你的。<span class="Apple-converted-space">&nbsp;</span><br />
	　　对待顾客也是这个道理，如果你总是愿意帮助顾客并满足他们的需要，顾客就会对你产生信任感和依赖感，陌生顾客会变成你的熟客；当你遇到困难时，熟客也会来帮你，好让你渡过难关，继续为他服务。<span class="Apple-converted-space">&nbsp;</span><br />
	　　明白了帮人也是帮己的道理，我们就应该多多帮人，多为别人服务，因为这也是在帮助你自己。<span class="Apple-converted-space">&nbsp;</span><br />
	　　<b>5．厌恶服务对象<span class="Apple-converted-space">&nbsp;</span></b><br />
	　　喜欢谁才接近谁，讨厌谁就远离谁，这在日常生活中很普遍。<span class="Apple-converted-space">&nbsp;</span><br />
	　　这人真麻烦&#8230;&#8230;<span class="Apple-converted-space">&nbsp;</span><br />
	　　这人长得好特别哟&#8230;&#8230;<span class="Apple-converted-space">&nbsp;</span><br />
	　　这人真小气&#8230;&#8230;<span class="Apple-converted-space">&nbsp;</span><br />
	　　不理他了。<span class="Apple-converted-space">&nbsp;</span><br />
	　　但是，在工作岗位上，如此看客下菜的做法，却严重违背了一视同仁的普遍服务原则。<span class="Apple-converted-space">&nbsp;</span><br />
	　　要想克服这种心理障碍，必须调整自己的心胸，让自己的心胸宽广起来，才能容纳各类人。<span class="Apple-converted-space">&nbsp;</span><br />
	　　对你而言，顾客自然是越多越好，不是吗？顾客越多，你的销售业绩才能越高，你挣得不是也越多吗？<span class="Apple-converted-space">&nbsp;</span><br />
	　　不管是什么样的顾客，付给你的都是一样的钞票，又何必计较喜不喜欢他们呢？<span class="Apple-converted-space">&nbsp;</span><br />
	　　在销售岗位上，不管顾客什么样，你都要一视同仁，不能厚此薄彼，这是你的职责。<span class="Apple-converted-space">&nbsp;</span><br />
	　　世上没有完美的人，就连你自己也是既有优点也有缺点的，如果你老是看到别人的缺点，别人也总看你的和谐的人际关系何以存在</p><ul><li><b><font style="font-size: 1.5625em;">何为正确的服务态度</font></b><span class="Apple-converted-space"><b><font style="font-size: 1.5625em;"> </font></b><br /></span></li></ul>
<p>
	　　为什么有很多人常说&#8220;态度决定一切&#8221;呢？这句话有道理吗？<span class="Apple-converted-space"> </span><br />
	　　为了表示对顾客的重视，有的老板把顾客视为上帝，有的把顾客视为皇帝，有的把顾客视为衣食父母，有的把顾客视为老板，有的把顾客视为朋友，其目的都是为了端正自己的地位和态度。但这都只是揭示了对象的性质和地位，没有把你与对象的关系说清楚。<span class="Apple-converted-space">&nbsp;</span><br />
	　　对你而言，把顾客当成需要你帮助和服务的对象，把自己当成顾客利益的保护者，是你应该确立的服务态度。<span class="Apple-converted-space">&nbsp;</span><br />
	　　只有确立了这样的服务态度，顾客才会信任你、选择你。<span class="Apple-converted-space">&nbsp;</span><br />
	　　从顾客所拥有的选择权来看，正是他们能够决定你的商品是否能够卖得出去，正是他们能够决定你的收入多少和家庭幸福与否，正是他们能够决定你所在的商店是生意兴隆还是门可罗雀。<span class="Apple-converted-space">&nbsp;</span><br />
	　　而你，则必须把自己当成顾客利益的保护者，不管遇到什么情况，都能坚定地站在顾客的立场上，方能体现出你应有的服务态度。<span class="Apple-converted-space">&nbsp;</span><br />
	　　随着形势的发展，那些把顾客当成可以被忽悠和玩弄的傻子的商家，将全部被竞争所淘汰。<span class="Apple-converted-space"> <br /></span></p>]]>
    </content>
</entry>

<entry>
    <title>关于财付通接口在Discuz7.2版本无法使用的问题</title>
    <link rel="alternate" type="text/html" href="http://my.huhoo.net/archives/2011/10/discuz72.html" />
    <id>tag:my.huhoo.net,2011:/study//1.966</id>

    <published>2011-10-12T04:34:58Z</published>
    <updated>2011-10-12T11:58:54Z</updated>

    <summary><![CDATA[ 使用Discuz7.2之后，发现财付通支付并不好使，并提示： 支付失败，您的资金未被扣除，原因可能是：您所下单网站链接有更新或者存在风险，请您稍后尝试或者与该网站客服联系。 于是去财付通的接口技术文档上看了一下，说为了安全，防止欺诈，财付通的接口新增加了一个参数spbill_create_ip，不能为空，于是 修改了api/trade/tenpay.api.php文件，注意，Discuz7.2的api/trade/tenpay.api.php文件是使用Zend加密的，可以使用黑刀（DeZend）解密一下， 找到 $reqHandler->setparameter( "ver", "3" ); 后面加上一句： $reqHandler->setparameter( "spbill_create_ip", $_SERVER['REMOTE_ADDR'] ); 及时加上了，当时在linux系统上，由于是firefox，测试的时候，发现很正常，但在ie下死活不正常，看接口文档，估计是REFER信息不对导致，于是修改 $reqHandler->setgateurl( "https://www.tenpay.com/cgi-bin/v1.0/pay_gate.cgi" ); 为 $reqHandler->setgateurl( "http://www.xxx.com/tmp.php" ); tmp.php是笔者写的一个测试程序，主要显示环境变量，其内容如下： &lt;?php phpinfo(); ?&gt; 发现在firefox浏览器下有HTTP_REFERER这个变量，但是ie浏览器下没有HTTP_REFERER这个变量，找到原因了，那么看一下程序，为什么会出现这个现象呢？找到memcp.php文件，找到如下地方： 502 $requesturl = credit_payurl($price, $orderid); 503 504 $query = $db->query("SELECT orderid FROM...]]></summary>
    <author>
        <name>Cnangel</name>
        <uri>http://my.huhoo.net/study</uri>
    </author>
    
        <category term="cnangel手记" scheme="http://www.sixapart.com/ns/types#category" />
    
        <category term="电脑技巧" scheme="http://www.sixapart.com/ns/types#category" />
    
    <category term="discuz" label="discuz" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="财付通" label="财付通" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="firefox" label="firefox" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="http_referer" label="HTTP_REFERER" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="ie" label="ie" scheme="http://www.sixapart.com/ns/types#tag" />
    
    <content type="html" xml:lang="en" xml:base="http://my.huhoo.net/study/">
        <![CDATA[<p><br />
使用Discuz7.2之后，发现财付通支付并不好使，并提示：<br />
<blockquote><br />
支付失败，您的资金未被扣除，原因可能是：您所下单网站链接有更新或者存在风险，请您稍后尝试或者与该网站客服联系。<br />
</blockquote><br />
于是去财付通的接口技术文档上看了一下，说为了安全，防止欺诈，财付通的接口新增加了一个参数spbill_create_ip，不能为空，于是<br />
修改了api/trade/tenpay.api.php文件，注意，Discuz7.2的api/trade/tenpay.api.php文件是使用Zend加密的，可以使用黑刀（DeZend）解密一下，<br />
找到<br />
<blockquote>$reqHandler->setparameter( "ver", "3" );</blockquote><br />
后面加上一句：<br />
<blockquote>$reqHandler->setparameter( "spbill_create_ip", $_SERVER['REMOTE_ADDR'] );</blockquote><br />
及时加上了，当时在linux系统上，由于是firefox，测试的时候，发现很正常，但在ie下死活不正常，看接口文档，估计是REFER信息不对导致，于是修改<br />
<blockquote>$reqHandler->setgateurl( "https://www.tenpay.com/cgi-bin/v1.0/pay_gate.cgi" );</blockquote><br />
为<br />
<blockquote>$reqHandler->setgateurl( "http://www.xxx.com/tmp.php" );</blockquote><br />
tmp.php是笔者写的一个测试程序，主要显示环境变量，其内容如下：<br />
<blockquote><br />
&lt;?php<br />
phpinfo();<br />
?&gt;<br />
</blockquote><br />
发现在firefox浏览器下有HTTP_REFERER这个变量，但是ie浏览器下没有HTTP_REFERER这个变量，找到原因了，那么看一下程序，为什么会出现这个现象呢？找到memcp.php文件，找到如下地方：<br />
<blockquote><br />
502                 $requesturl = credit_payurl($price, $orderid);<br />
503 <br />
504                 $query = $db->query("SELECT orderid FROM {$tablepre}orders WHERE orderid='$orderid'");<br />
505                 if($db->num_rows($query)) {<br />
506                     showmessage('credits_addfunds_order_invalid');<br />
507                 }<br />
508 <br />
509                 $db->query("INSERT INTO {$tablepre}orders (orderid, status, uid, amount, price, submitdate)<br />
510                     VALUES ('$orderid', '1', '$discuz_uid', '$amount', '$price', '$timestamp')");<br />
511 <br />
512                 showmessage('credits_addfunds_succeed', $requesturl);<br />
</blockquote><br />
在跳转时，程序使用了showmessage函数，而查看include/global.func.php文件里面showmessage函数定义，找到：<br />
<blockquote><br />
1099         if($url_forward) {<br />
1100             $show_message = "&lt;script type=\"text/javascript\" reload=\"1\"&gt;\nif($('return_$handlekey')) $('return_$handlekey').className = 'onright';\nif(typeof submithandle_$handlekey =='function') {submithandle_$handlekey('$url_forward', '$show_message');} else {location.href='$url_forward'}\n&lt;/script&gt;";<br />
1101         } else {<br />
1102             $show_message .= "&lt;script type=\"text/javascript\" reload=\"1\"&gt;\nif(typeof messagehandle_$handlekey =='function') {messagehandle_$handlekey('$messagehandle', '$show_message');}\n&lt;/script&gt;";<br />
1103         }<br />
</blockquote><br />
发现跳转使用的是location.href，而一般写前端界面的人都知道location.href在ie下是取不到refer信息的，那么现在问题就变成用什么方法代替location.href的跳转呢？问题也很简单，拷贝一份showmessage函数的内容，命名函数showmessage为函数trade_showmessage，然后找到上述的地方，修改成：<br />
<blockquote><br />
1105         if($url_forward) {<br />
1106             $show_message = "&lt;script type=\"text/javascript\" reload=\"1\"&gt;\nif($('return_$handlekey')) $('return_$handlekey').className = 'onright';\nif(typeof submithandle_$handlekey =='function') {submithandle_$handlekey('$url_forward', '$show_message');} else { if (document.all){ var gotoLink = document.createElement('a');gotoLink.href='$url_forward';document.body.appendChild(gotoLink);gotoLink.click();}\nelse window.location.href='$url_forward';}\n&lt;/script&gt;";<br />
1107         } else {<br />
1108             $show_message .= "&lt;script type=\"text/javascript\" reload=\"1\"&gt;\nif(typeof messagehandle_$handlekey =='function') {messagehandle_$handlekey('$messagehandle', '$show_message');}\n&lt;/script&gt;";<br />
1109         }<br />
</blockquote><br />
即创建一个DOM节点，并添加click事件，从而memcp.php文件调用trade_showmessage函数解决问题。</p>]]>
        <![CDATA[<p> </p>]]>
    </content>
</entry>

<entry>
    <title>关于高版本的libtool v2.4的问题</title>
    <link rel="alternate" type="text/html" href="http://my.huhoo.net/archives/2011/09/libtool_v24.html" />
    <id>tag:my.huhoo.net,2011:/study//1.965</id>

    <published>2011-09-22T15:30:16Z</published>
    <updated>2011-09-22T15:42:38Z</updated>

    <summary><![CDATA[因为生成so的问题，发现libtool v2.4生成代码时：libtool --debug --tag=CXX --mode=link g++ -fPIC -g -O2 -g -Wall -D_DEBUG -shared -fpic -o libsotest.so libsotest_so-testso.o -lpthread -ldl -lcppunit结果为：g++ -fPIC -g -O2 -g -Wall -D_DEBUG -fpic -o libsotest.so libsotest_so-testso.o&nbsp; -lpthread -ldl -lcppunit而期望的结果应该是：g++ -fPIC -g -O2 -g -Wall -D_DEBUG -shared...]]></summary>
    <author>
        <name>Cnangel</name>
        <uri>http://my.huhoo.net/study</uri>
    </author>
    
        <category term="Linux世界" scheme="http://www.sixapart.com/ns/types#category" />
    
        <category term="电脑技巧" scheme="http://www.sixapart.com/ns/types#category" />
    
    <category term="libtool" label="libtool" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="shared" label="shared" scheme="http://www.sixapart.com/ns/types#tag" />
    
    <content type="html" xml:lang="en" xml:base="http://my.huhoo.net/study/">
        <![CDATA[因为生成so的问题，发现libtool v2.4生成代码时：<br /><blockquote>libtool --debug --tag=CXX --mode=link g++ -fPIC -g -O2 -g -Wall -D_DEBUG -shared -fpic -o libsotest.so libsotest_so-testso.o -lpthread -ldl -lcppunit<br /></blockquote>结果为：<br /><blockquote>g++ -fPIC -g -O2 -g -Wall -D_DEBUG -fpic -o libsotest.so libsotest_so-testso.o&nbsp; -lpthread -ldl -lcppunit<br /></blockquote>而期望的结果应该是：<br /><blockquote>g++ -fPIC -g -O2 -g -Wall -D_DEBUG -shared -fpic -o libsotest.so libsotest_so-testso.o&nbsp; -lpthread -ldl -lcppunit<br /></blockquote>低版本的libtool v1.5.22则没有这个问题，于是查找原因，经过分析，发现新版本的libtool对-shared选项有二处地方的变动，一处为func_mode_compile函数，主要是针对-shared的优化，<br /><blockquote>&nbsp;2429&nbsp;&nbsp;&nbsp;&nbsp; -shared | -static | -prefer-pic | -prefer-non-pic)<br />&nbsp;2430&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; later+=" $arg"<br />&nbsp;2431&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; continue<br />&nbsp;2432&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ;;<br /></blockquote>另外，在函数func_mode_link中<br /><blockquote>&nbsp;6171&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; -shared)<br />&nbsp;6172&nbsp;&nbsp;&nbsp;&nbsp; # The effects of -shared are defined in a previous loop.<br />&nbsp;6173&nbsp;&nbsp;&nbsp;&nbsp; continue<br />&nbsp;6174&nbsp;&nbsp;&nbsp;&nbsp; ;;<br /></blockquote>如果得到上面的期望结果，则注释这条语句即可。<br /><br />详细的问题描述见：http://my.huhoo.net/archives/2011/08/libtool.html<br /><br /> ]]>
        
    </content>
</entry>

<entry>
    <title>新一代 Linux 文件系统 btrfs 简介</title>
    <link rel="alternate" type="text/html" href="http://my.huhoo.net/archives/2011/09/_linux_btrfs.html" />
    <id>tag:my.huhoo.net,2011:/study//1.964</id>

    <published>2011-09-08T06:46:25Z</published>
    <updated>2011-09-08T07:56:52Z</updated>

    <summary><![CDATA[&nbsp;&nbsp;&nbsp; Fedora16工程团队决定不使用btrfs系统作为默认的文件系统了，因为时间不充足，无法达到改变默认文件系统所要满足的基本要求。&nbsp;&nbsp;&nbsp; 记得在Fedora15发布的时候，宣布fedora16将采用btrfs作为默认的文件系统，当时很好奇的试了一下，拿自己的移动硬盘格式化分区为btrfs分区，但是效果很不理想，存在很多不完善的地方，后来还是换上了reiserfs和ext4。&nbsp;&nbsp;&nbsp; brefs的主要特性是copy-on-write，如果想要知道什么是copy-on-write，可以参考COW，目标是取代Linux目前的ext3/4文件系统，改善ext3的限制，特别是单一文件的大小，总文件系统大小及加入文件校验和。加入目前ext3/4未支援的功能，例如可写的磁盘快照（snapshots）、支持递归的快照（snapshots of snapshots）、内建磁盘阵列（RAID）支援、支持子卷（Subvolumes）的概念、支持在线调整文件系统大小等。...]]></summary>
    <author>
        <name>Cnangel</name>
        <uri>http://my.huhoo.net/study</uri>
    </author>
    
        <category term="Linux世界" scheme="http://www.sixapart.com/ns/types#category" />
    
    <category term="btrfs" label="btrfs" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="copyonwrite" label="copy-on-write" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="ext4" label="ext4" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="fedora" label="fedora" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="reiserfs" label="reiserfs" scheme="http://www.sixapart.com/ns/types#tag" />
    
    <content type="html" xml:lang="en" xml:base="http://my.huhoo.net/study/">
        <![CDATA[&nbsp;&nbsp;&nbsp; Fedora16工程团队决定不使用btrfs系统作为默认的文件系统了，因为时间不充足，无法达到改变默认文件系统所要满足的基本要求。<br />&nbsp;&nbsp;&nbsp; 记得在Fedora15发布的时候，宣布fedora16将采用btrfs作为默认的文件系统，当时很好奇的试了一下，拿自己的移动硬盘格式化分区为btrfs分区，但是效果很不理想，存在很多不完善的地方，后来还是换上了reiserfs和ext4。<br />&nbsp;&nbsp;&nbsp; brefs的主要特性是copy-on-write，如果想要知道什么是copy-on-write，可以参考<a href="http://en.wikipedia.org/wiki/Copy-on-write">COW</a>，目标是取代Linux目前的ext3/4文件系统，改善ext3的限制，特别是单一文件的大小，总文件系统大小及加入文件校验和。加入目前ext3/4未支援的功能，例如可写的磁盘快照（snapshots）、支持递归的快照（snapshots of snapshots）、内建磁盘阵列（RAID）支援、支持子卷（Subvolumes）的概念、支持在线调整文件系统大小等。 <br />]]>
        <![CDATA[&nbsp;&nbsp; 下面转自http://www.ibm.com/developerworks/cn/linux/l-cn-btrfs/<br /><br /><p><a name="1.Btrfs简介|outline"><span class="atitle">Btrfs 简介</span></a></p>
			<p>文件系统似乎是内核中比较稳定的部分，多年来，人们一直使用 ext2/3，ext 文件系统以其卓越的稳定性成为了事实上的 Linux 
标准文件系统。近年来 ext2/3 暴露出了一些扩展性问题，于是便催生了 ext4 。在 2008 年发布的 Linux2.6.19 
内核中集成了 ext4 的 dev 版本。 2.6.28 内核发布时，ext4 结束了开发版，开始接受用户的使用。似乎 ext 就将成为 
Linux 文件系统的代名词。然而当您阅读很多有关 ext4 的文章时，会发现都不约而同地提到了 btrfs，并认为 ext4 
将是一个过渡的文件系统。 ext4 的作者 Theodore Tso 也盛赞 btrfs 并认为 btrfs 将成为下一代 Linux 
标准文件系统。 Oracle，IBM， Intel 等厂商也对 btrfs 表现出了极大的关注，投入了资金和人力。为什么 btrfs 
如此受人瞩目呢。这便是本文首先想探讨的问题。</p>
			<p>Kevin Bowling[1] 有一篇介绍各种文件系统的文章，在他看来，ext2/3 
等文件系统属于&#8220;古典时期&#8221;。文件系统的新时代是 2005 年由 Sun 公司的 ZFS 开创的。 ZFS 代表&#8221; last word in 
file system &#8221;，意思是此后再也不需要开发其他的文件系统了。 ZFS 的确带来了很多崭新的观念，对文件系统来讲是一个划时代的作品。</p>
			<p>如果您比较 btrfs 的特性，将会发现 btrfs 和 ZFS 非常类似。也许我们可以认为 btrfs 就是 Linux 社区对 ZFS 所作出的回应。从此往后在 Linux 中也终于有了一个可以和 ZFS 相媲美的文件系统。</p>
			<p><a name="2.btrfs的特性|outline"><span class="atitle">btrfs 的特性</span></a></p>
			<p>您可以在 btrfs 的主页上 [2] 看到 btrfs 的特性列表。我自作主张，将那张列表分成了四大部分。</p>
			<p>首先是扩展性 (scalability) 相关的特性，btrfs 最重要的设计目标是应对大型机器对文件系统的扩展性要求。 
Extent，B-Tree 和动态 inode 创建等特性保证了 btrfs 
在大型机器上仍有卓越的表现，其整体性能而不会随着系统容量的增加而降低。</p>
			<p>其次是数据一致性 (data integrity) 相关的特性。系统面临不可预料的硬件故障，Btrfs 采用 COW 
事务技术来保证文件系统的一致性。 btrfs 还支持 checksum，避免了 silent corrupt 
的出现。而传统文件系统则无法做到这一点。</p>
			<p>第三是和多设备管理相关的特性。 Btrfs 支持创建快照 (snapshot)，和克隆 (clone) 。 btrfs 还能够方便的管理多个物理设备，使得传统的卷管理软件变得多余。</p>
			<p>最后是其他难以归类的特性。这些特性都是比较先进的技术，能够显著提高文件系统的时间 / 空间性能，包括延迟分配，小文件的存储优化，目录索引等。</p>
			<p><a name="N10084"><span class="smalltitle">扩展性相关的特性</span></a></p>
			<p>B-Tree</p>
			<p>btrfs 文件系统中所有的 metadata 都由 BTree 管理。使用 BTree 的主要好处在于查找，插入和删除操作都很高效。可以说 BTree 是 btrfs 的核心。</p>
			<p>一味地夸耀 BTree 很好很高效也许并不能让人信服，但假如稍微花费一点儿时间看看 ext2/3 中元数据管理的实现方式，便可以反衬出 BTree 的优点。</p>
			<p>妨碍 ext2/3 扩展性的一个问题来自其目录的组织方式。目录是一种特殊的文件，在 ext2/3 中其内容是一张线性表格。如图 1-1 所示 [6]：</p>
				<br /><a name="N10097"><b>图 1. ext2 directory [6]</b></a><br />
				<img alt="ext2 directory" src="http://my.huhoo.net/archives/upload/image001.jpg" width="514" height="277" class="mt-image-none" />
			<br />
			<p>图 1 展示了一个 ext2 目录文件的内容，该目录中包含四个文件。分别是 "home1"，"usr"，"oldfile" 和 "sbin" 。如果需要在该目录中查找目录 sbin，ext2 将遍历前三项，直至找到 sbin 这个字符串为止。</p>
			<p>这种结构在文件个数有限的情况下是比较直观的设计，但随着目录下文件数的增加，查找文件的时间将线性增长。 2003 年，ext3 
设计者开发了目录索引技术，解决了这个问题。目录索引使用的数据结构就是 BTree 。如果同一目录下的文件数超过 2K，inode 中的 
i_data 域指向一个特殊的 block 。在该 block 中存储着目录索引 BTree 。 BTree 的查找效率高于线性表，</p>
			<p>但为同一个元数据设计两种数据结构总是不太优雅。在文件系统中还有很多其他的元数据，用统一的 BTree 管理是非常简单而优美的设计。</p>
			<p>Btrfs 内部所有的元数据都采用 BTree 管理，拥有良好的可扩展性。 btrfs 内部不同的元数据由不同的 Tree 管理。在 superblock 中，有指针指向这些 BTree 的根。如图 2 所示：</p>
				<br /><a name="N100B2"><b>图 2. btrfs btree</b></a><br />
				<img alt="btrfs btree" src="http://my.huhoo.net/archives/upload/image002.jpg" width="566" height="279" class="mt-image-none" />
			<br />
			<p>FS Tree 管理文件相关的元数据，如 inode，dir 等； Chunk tree 管理设备，每一个磁盘设备都在 Chunk 
Tree 中有一个 item ； Extent Tree 管理磁盘空间分配，btrfs 每分配一段磁盘空间，便将该磁盘空间的信息插入到 
Extent tree 。查询 Extent Tree 将得到空闲的磁盘空间信息； Tree of tree root 保存很多 BTree 
的根节点。比如用户每建立一个快照，btrfs 便会创建一个 FS Tree 。为了管理所有的树，btrfs 采用 Tree of tree 
root 来保存所有树的根节点； checksum Tree 保存数据块的校验和。</p>
			<p><strong>基于 Extent 的文件存储</strong></p>
			<p>现代很多文件系统都采用了 extent 替代 block 来管理磁盘。 Extent 就是一些连续的 block，一个 extent 由起始的 block 加上长度进行定义。</p>
			<p>Extent 能有效地减少元数据开销。为了进一步理解这个问题，我们还是看看 ext2 中的反面例子。</p>
			<p>ext2/3 以 block 为基本单位，将磁盘划分为多个 block 。为了管理磁盘空间，文件系统需要知道哪些 block 
是空闲的。 Ext 使用 bitmap 来达到这个目的。 Bitmap 中的每一个 bit 对应磁盘上的一个 block，当相应 block 
被分配后，bitmap 中的相应 bit 被设置为 1 。这是很经典也很清晰的一个设计，但不幸的是当磁盘容量变大时，bitmap 
自身所占用的空间也将变大。这就导致了扩展性问题，随着存储设备容量的增加，bitmap 
这个元数据所占用的空间也随之增加。而人们希望无论磁盘容量如何增加，元数据不应该随之线形增加，这样的设计才具有可扩展性。</p>
			<p>下图比较了 block 和 extent 的区别：</p>
				<br /><a name="N100D4"><b>图 3. 采用 extent 的 btrfs 和采用 bitmap 的 ext2/3</b></a><br />
				<img alt="采用extent的btrfs和采用bitmap的ext2/3" src="http://my.huhoo.net/archives/upload/image003.jpg" width="563" height="179" class="mt-image-none" />
			<br />
			<p>在 ext2/3 中，10 个 block 需要 10 个 bit 来表示；在 btrfs 中则只需要一个元数据。对于大文件，extent 表现出了更加优异的管理性能。</p>
			<p>Extent 是 btrfs 管理磁盘空间的最小单位，由 extent tree 管理。 Btrfs 分配 data 或 metadata 都需要查询 extent tree 以便获得空闲空间的信息。</p>
			<p><strong>动态 inode 分配</strong></p>
			<p>为了理解动态 inode 分配，还是需要借助 ext2/3 。下表列举了 ext2 文件系统的限制：</p><br /><a name="表格1|table"><b>表 1. ext2 限制</b></a><br />
			<table border="1" cellpadding="0" cellspacing="0" width="100%"><tbody><tr><td style="vertical-align:top">&nbsp;
					<br /></td><td style="text-align:left; vertical-align:top">
						<strong>限制</strong>
					</td></tr><tr><td style="text-align:left; vertical-align:middle">
						<strong>最大文件数量</strong>
					</td><td style="text-align:left; vertical-align:top">文件系统空间大小 V / 8192<br />比如 100G 大小的文件系统中，能创建的文件个数最大为 131072</td></tr></tbody></table><br />
			<p>图 4 显示了 ext2 的磁盘布局：</p>
				<br /><a name="N1011D"><b>图 4. ext2 layout</b></a><br />
				<img alt="ext2 layout" src="http://my.huhoo.net/archives/upload/image004.jpg" width="376" height="200" class="mt-image-none" />
			<br />
			<p>在 ext2 中 inode 区是被预先固定分配的，且大小固定，比如一个 100G 的分区中，inode table 区中只能存放 
131072 个 inode，这就意味着不可能创建超过 131072 个文件，因为每一个文件都必须有一个唯一的 inode 。</p>
			<p>为了解决这个问题，必须动态分配 inode 。每一个 inode 只是 BTree 中的一个节点，用户可以无限制地任意插入新的 inode，其物理存储位置是动态分配的。所以 btrfs 没有对文件个数的限制。</p>
			<p><strong>针对 SSD 的优化支持</strong></p>
			<p>SSD 是固态存储 Solid State Disk 的简称。在过去的几十年中，CPU/RAM 等器件的发展始终遵循着摩尔定律，但硬盘 HDD 的读写速率却始终没有飞跃式的发展。磁盘 IO 始终是系统性能的瓶颈。</p>
			<p>SSD 采用 flash memory 技术，内部没有磁盘磁头等机械装置，读写速率大幅度提升。 flash memory 
有一些不同于 HDD 的特性。 flash 在写数据之前必须先执行擦除操作；其次，flash 
对擦除操作的次数有一定的限制，在目前的技术水平下，对同一个数据单元最多能进行约 100 万次擦除操作，因此，为了延长 flash 
的寿命，应该将写操作平均到整个 flash 上。</p>
			<p>SSD 在硬件内部的微代码中实现了 wear leveling 等分布写操作的技术，因此系统无须再使用特殊的 MTD 驱动和 FTL
 层。虽然 SSD 在硬件层面做了很多努力，但毕竟还是有限。文件系统针对 SSD 的特性做优化不仅能提高 SSD 
的使用寿命，而且能提高读写性能。 Btrfs 是少数专门对 SSD 进行优化的文件系统。 btrfs 用户可以使用 mount 参数打开对 
SSD 的特殊优化处理。</p>
			<p>Btrfs 的 COW 技术从根本上避免了对同一个物理单元的反复写操作。如果用户打开了 SSD 优化选项，btrfs 
将在底层的块空间分配策略上进行优化：将多次磁盘空间分配请求聚合成一个大小为 2M 的连续的块。大块连续地址的 IO 能够让固化在 SSD 
内部的微代码更好的进行读写优化，从而提高 IO 性能。</p>
			<p><a name="N10141"><span class="smalltitle">数据一致性相关的特性</span></a></p>
			<p><strong>COW 事务</strong></p>
			<p>理解 COW 事务，必须首先理解 COW 和事务这两个术语。</p>
			<p>什么是 COW?</p>
			<p>所谓 COW，即每次写磁盘数据时，先将更新数据写入一个新的 block，当新数据写入成功之后，再更新相关的数据结构指向新 block 。</p>
			<p>什么是事务？</p>
			<p>COW 只能保证单一数据更新的原子性。但文件系统中很多操作需要更新多个不同的元数据，比如创建文件需要修改以下这些元数据：</p><ol type="1"><li>修改 extent tree，分配一段磁盘空间</li><li>创建一个新的 inode，并插入 FS Tree 中</li><li>增加一个目录项，插入到 FS Tree 中</li></ol>
			<p>任何一个步骤出错，文件便不能创建成功，因此可以定义为一个事务。</p>
			<p>下面将演示一个 COW 事务。</p>
			<p>A 是 FS Tree 的根节点，新的 inode 的信息将被插入节点 C 。首先，btrfs 将 inode 插入一个新分配的 
block C &#8217;中，并修改上层节点 B，使其指向新的 block C &#8217;；修改 B 也将引发 COW，以此类推，引发一个连锁反应，直到最顶层的
 Root A 。当整个过程结束后，新节点 A &#8217;变成了 FS Tree 的根。但此时事务并未结束，superblock 依然指向 A 。</p>
				<br /><a name="N10170"><b>图 5. COW transaction 1</b></a><br />
				<img alt="COW transaction 1" src="http://my.huhoo.net/archives/upload/image005.jpg" width="529" height="262" class="mt-image-none" />
			<br />
			<p>接下来，修改目录项（E 节点），同样引发这一过程，从而生成新的根节点 A &#8217;&#8217;。</p>
				<br /><a name="N10182"><b>图 6. COW transaction 2</b></a><br />
				<img alt="COW transaction 2" src="http://my.huhoo.net/archives/upload/image006.jpg" width="336" height="234" class="mt-image-none" />
			<br />
			<p>此时，inode 和目录项都已经写入磁盘，可以认为事务已经结束。 btrfs 修改 superblock，使其指向 A &#8217;&#8217;，如下图所示：</p>
				<br /><a name="N10195"><b>图 7. COW transaction 3</b></a><br />
				<img alt="COW transaction 3" src="http://my.huhoo.net/archives/upload/image007.jpg" width="376" height="248" class="mt-image-none" />
			<br />
			<p>COW 事务能够保证文件系统的一致性，并且系统 Reboot 之后不需要执行 fsck 。因为 superblock 要么指向新的 A &#8217;&#8217;，要么指向 A，无论哪个都是一致的数据。</p>
			<p><strong>Checksum</strong></p>
			<p>Checksum 技术保证了数据的可靠性，避免 silent corruption 
现象。由于硬件原因，从磁盘上读出的数据会出错。比如 block A 中存放的数据为 0x55，但读取出来的数据变是 
0x54，因为读取操作并未报错，所以这种错误不能被上层软件所察觉。</p>
			<p>解决这个问题的方法是保存数据的校验和，在读取数据后检查校验和。如果不符合，便知道数据出现了错误。</p>
			<p>ext2/3 没有校验和，对磁盘完全信任。而不幸的是，磁盘的错误始终存在，不仅发生在廉价的 IDE 硬盘上，昂贵的 RAID 也存在
 silent corruption 问题。而且随着存储网络的发展，即使数据从磁盘读出正确，也很难确保能够安全地穿越网络设备。</p>
			<p>btrfs 在读取数据的同时会读取其相应的 checksum 。如果最终从磁盘读取出来的数据和 checksum 不相同，btrfs
 会首先尝试读取数据的镜像备份，如果数据没有镜像备份，btrfs 将返回错误。写入磁盘数据之前，btrfs 计算数据的 checksum 
。然后将 checksum 和数据同时写入磁盘。</p>
			<p>Btrfs 采用单独的 checksum Tree 来管理数据块的校验和，把 checksum 和 checksum 
所保护的数据块分离开，从而提供了更严格的保护。假如在每个数据 block 的 header 中加入一个域保存 checksum，那么这个数据 
block 就成为一个自己保护自己的结构。这种结构下有一种错误无法检测出来，比如本来文件系统打算从磁盘上读 block A，但返回了 block
 B，由于 checksum 在 block 内部，因此 checksum 依旧是正确的。 btrfs 采用 checksum tree 
来保存数据块的 checksum，避免了上述问题。</p>
			<p>Btrfs 采用 crc32 算法计算 checksum，在将来的开发中会支持其他类型的校验算法。为了提高效率，btrfs 将写数据和 checksum 的工作分别用不同的内核线程并行执行。</p>
			<p><a name="N101BC"><span class="smalltitle">多设备管理相关的特性</span></a></p>
			<p>每个 Unix 管理员都曾面临为用户和各种应用分配磁盘空间的任务。多数情况下，人们无法事先准确地估计一个用户或者应用在未来究竟需要多少磁盘空间。磁盘空间被用尽的情况经常发生，此时人们不得不试图增加文件系统空间。传统的 ext2/3 无法应付这种需求。</p>
			<p>很多卷管理软件被设计出来满足用户对多设备管理的需求，比如 LVM 。 Btrfs 集成了卷管理软件的功能，一方面简化了用户命令；另一方面提高了效率。</p>
			<p><strong>多设备管理</strong></p>
			<p>Btrfs 支持动态添加设备。用户在系统中增加新的磁盘之后，可以使用 btrfs 的命令将该设备添加到文件系统中。</p>
			<p>为了灵活利用设备空间，Btrfs 将磁盘空间划分为多个 chunk 。每个 chunk 可以使用不同的磁盘空间分配策略。比如某些 
chunk 只存放 metadata，某些 chunk 只存放数据。一些 chunk 可以配置为 mirror，而另一些 chunk 
则可以配置为 stripe 。这为用户提供了非常灵活的配置可能性。</p>
			<p><strong>Subvolume</strong></p>
			<p>Subvolume 是很优雅的一个概念。即把文件系统的一部分配置为一个完整的子文件系统，称之为 subvolume 。</p>
			<p>采用 
subvolume，一个大的文件系统可以被划分为多个子文件系统，这些子文件系统共享底层的设备空间，在需要磁盘空间时便从底层设备中分配，类似应用程
序调用 malloc() 分配内存一样。可以称之为存储池。这种模型有很多优点，比如可以充分利用 disk 的带宽，可以简化磁盘空间的管理等。</p>
			<p>所谓充分利用 disk 的带宽，指文件系统可以并行读写底层的多个 disk，这是因为每个文件系统都可以访问所有的 disk 。传统的文件系统不能共享底层的 disk 设备，无论是物理的还是逻辑的，因此无法做到并行读写。</p>
			<p>所谓简化管理，是相对于 LVM 等卷管理软件而言。采用存储池模型，每个文件系统的大小都可以自动调节。而使用 LVM，如果一个文件系统的空间不够了，该文件系统并不能自动使用其他磁盘设备上的空闲空间，而必须使用 LVM 的管理命令手动调节。</p>
			<p>Subvolume 可以作为根目录挂载到任意 mount 点。 subvolume 是非常有趣的一个特性，有很多应用。</p>
			<p>假如管理员只希望某些用户访问文件系统的一部分，比如希望用户只能访问 /var/test/ 下面的所有内容，而不能访问 /var/ 
下面其他的内容。那么便可以将 /var/test 做成一个 subvolume 。 /var/test 这个 subvolume 
便是一个完整的文件系统，可以用 mount 命令挂载。比如挂载到 /test 目录下，给用户访问 /test 的权限，那么用户便只能访问 
/var/test 下面的内容了。</p>
			<p>快照和克隆</p>
			<p>快照是对文件系统某一时刻的完全备份。建立快照之后，对文件系统的修改不会影响快照中的内容。这是非常有用的一种技术。</p>
			<p>比如数据库备份。假如在时间点 
T1，管理员决定对数据库进行备份，那么他必须先停止数据库。备份文件是非常耗时的操作，假如在备份过程中某个应用程序修改了数据库的内容，那么将无法得
到一个一致性的备份。因此在备份过程中数据库服务必须停止，对于某些关键应用这是不能允许的。</p>
			<p>利用快照，管理员可以在时间点 T1 
将数据库停止，对系统建立一个快照。这个过程一般只需要几秒钟，然后就可以立即重新恢复数据库服务。此后在任何时候，管理员都可以对快照的内容进行备份操
作，而此时用户对数据库的修改不会影响快照中的内容。当备份完成，管理员便可以删除快照，释放磁盘空间。</p>
			<p>快照一般是只读的，当系统支持可写快照，那么这种可写快照便被称为克隆。克隆技术也有很多应用。比如在一个系统中安装好基本的软件，然后为不同的用户做不同的克隆，每个用户使用自己的克隆而不会影响其他用户的磁盘空间。非常类似于虚拟机。</p>
			<p>Btrfs 支持 snapshot 和 clone 。这个特性极大地增加了 btrfs 的使用范围，用户不需要购买和安装昂贵并且使用复杂的卷管理软件。下面简要介绍一下 btrfs 实现快照的基本原理。</p>
			<p>如前所述 Btrfs 采用 COW 事务技术，从图 1-10 可以看到，COW 事务结束后，如果不删除原来的节点 A,C,E，那么 A,C,E,D,F 依然完整的表示着事务开始之前的文件系统。这就是 snapshot 实现的基本原理。</p>
			<p>Btrfs 采用引用计数决定是否在事务 commit 之后删除原有节点。对每一个节点，btrfs 
维护一个引用计数。当该节点被别的节点引用时，该计数加一，当该节点不再被别的节点引用时，该计数减一。当引用计数归零时，该节点被删除。对于普通的 
Tree Root, 引用计数在创建时被加一，因为 Superblock 会引用这个 Root block 
。很明显，初始情况下这棵树中的所有其他节点的引用计数都为一。当 COW 事务 commit 时，superblock 被修改指向新的 Root A
 &#8217;&#8217;，原来 Root block A 的引用计数被减一，变为零，因此 A 节点被删除。 A 节点的删除会引发其子孙节点的引用计数也减一，图 
1-10 中的 B，C 节点的引用计数因此也变成了 0，从而被删除。 D,E 节点在 COW 时，因为被 A 
&#8217;&#8217;所引用，计数器加一，因此计数器这时并未归零，从而没有被删除。</p>
			<p>创建 Snapshot 时，btrfs 将的 Root A 节点复制到 sA，并将 sA 的引用计数设置为 2 。在事务 
commit 的时候，sA 节点的引用计数不会归零，从而不会被删除，因此用户可以继续通过 Root sA 访问 snapshot 中的文件。</p>
				<br /><a name="N10204"><b>图 8. Snapshot</b></a><br />
				<img alt="Snapshot" src="http://my.huhoo.net/archives/upload/image008.jpg" width="489" height="263" class="mt-image-none" />
			<br />
			<p><strong>软件 RAID</strong></p>
			<p>RAID 技术有很多非常吸引人的特性，比如用户可以将多个廉价的 IDE 磁盘组合为 RAID0 阵列，从而变成了一个大容量的磁盘； RAID1 和更高级的 RAID 配置还提供了数据冗余保护，从而使得存储在磁盘中的数据更加安全。</p>
			<p>Btrfs 很好的支持了软件 RAID，RAID 种类包括 RAID0,RAID1 和 RAID10.</p>
			<p>Btrfs 缺省情况下对 metadata 进行 RAID1 保护。前面已经提及 btrfs 将设备空间划分为 chunk，一些 
chunk 被配置为 metadata，即只存储 metadata 。对于这类 chunk，btrfs 将 chunk 分成两个条带，写 
metadata 的时候，会同时写入两个条带内，从而实现对 metadata 的保护。</p>
			<p><a name="N1021F"><span class="smalltitle">其他特性</span></a></p>
			<p>Btrfs 主页上罗列的其他特性不容易分类，这些特性都是现代文件系统中比较先进的技术，能够提高文件系统的时间或空间效率。</p>
			<p><strong>Delay allocation</strong></p>
			<p>延迟分配技术能够减少磁盘碎片。在 Linux 内核中，为了提高效率，很多操作都会延迟。</p>
			<p>在文件系统中，小块空间频繁的分配和释放会造成碎片。延迟分配是这样一种技术，当用户需要磁盘空间时，先将数据保存在内存中。并将磁盘分配需求发送给磁盘空间分配器，磁盘空间分配器并不立即分配真正的磁盘空间。只是记录下这个请求便返回。</p>
			<p>磁盘空间分配请求可能很频繁，所以在延迟分配的一段时间内，磁盘分配器可以收到很多的分配请求，一些请求也许可以合并，一些请求在这段延迟期
间甚至可能被取消。通过这样的&#8220;等待&#8221;，往往能够减少不必要的分配，也有可能将多个小的分配请求合并为一个大的请求，从而提高 IO 效率。</p>
			<p><strong>Inline file</strong></p>
			<p>系统中往往存在大量的小文件，比如几百个字节或者更小。如果为其分配单独的数据 block，便会引起内部碎片，浪费磁盘空间。 btrfs 将小文件的内容保存在元数据中，不再额外分配存放文件数据的磁盘块。改善了内部碎片问题，也增加了文件的访问效率。</p>
				<br /><a name="N1023D"><b>图 9. inline file</b></a><br />
				<img alt="inline file" src="http://my.huhoo.net/archives/upload/image009.jpg" width="538" height="239" class="mt-image-none" />
			<br />
			<p>上图显示了一个 BTree 的叶子节点。叶子中有两个 extent data item 元数据，分别用来表示文件 file1 和 file2 所使用的磁盘空间。</p>
			<p>假设 file1 的大小仅为 15 个字节； file2 的大小为 1M 。如图所示，file2 采用普通的 extent 表示方法：extent2 元数据指向一段 extent，大小为 1M，其内容便是 file2 文件的内容。</p>
			<p>而对于 file1， btrfs 会把其文件内容内嵌到元数据 extent1 中。如果不采用 inline file 
技术。如虚线所示，extent1 指向一个最小的 extent，即一个 block，但 file1 有 15 
个字节，其余的空间便成为了碎片空间。</p>
			<p>采用 inline 技术，读取 file1 时只需要读取元数据 block，而无需先读取 extent1 这个元数据，再读取真正存放文件内容的 block，从而减少了磁盘 IO 。</p>
			<p>得益于 inline file 技术，btrfs 处理小文件的效率非常高，也避免了磁盘碎片问题。</p>
			<p><strong>目录索引 Directory index</strong></p>
			<p>当一个目录下的文件数目巨大时，目录索引可以显著提高文件搜索时间。 Btrfs 本身采用 BTree 存储目录项，所以在给定目录下搜索文件的效率是非常高的。</p>
			<p>然而，btrfs 使用 BTree 管理目录项的方式无法同时满足 readdir 的需求。 readdir 是 POSIX 标准 
API，它要求返回指定目录下的所有文件，并且特别的，这些文件要按照 inode number 排序。而 btrfs 目录项插入 BTree 时的
 Key 并不是 Inode number，而是根据文件名计算的一个 hash 值。这种方式在查找一个特定文件时非常高效，但却不适于 
readdir 。为此，btrfs 在每次创建新的文件时，除了插入以 hash 值为 Key 
的目录项外，还同时插入另外一种目录项索引，该目录项索引的 KEY 以 sequence number 作为 BTree 的键值。这个 
sequence number 在每次创建新文件时线性增加。因为 Inode number 也是每次创建新文件时增加的，所以 sequence 
number 和 inode number 的顺序相同。以这种 sequence number 作为 KEY 在 BTree 
中查找便可以方便的得到一个以 inode number 排序的文件列表。</p>
			<p>另外以 sequence number 排序的文件往往在磁盘上的位置也是相邻的，所以以 sequence number 为序访问大量文件会获得更好的 IO 效率。</p>
			<p>压缩</p>
			<p>大家都曾使用过 zip，winrar 等压缩软件，将一个大文件进行压缩可以有效节约磁盘空间。 Btrfs 内置了压缩功能。</p>
			<p>通常人们认为将数据写入磁盘之前进行压缩会占用很多的 CPU 计算时间，必然降低文件系统的读写效率。但随着硬件技术的发展，CPU 
处理时间和磁盘 IO 时间的差距不断加大。在某些情况下，花费一定的 CPU 时间和一些内存，但却能大大节约磁盘 IO 
的数量，这反而能够增加整体的效率。</p>
			<p>比如一个文件不经过压缩的情况下需要 100 次磁盘 IO 。但花费少量 CPU 时间进行压缩后，只需要 10 次磁盘 IO 
就可以将压缩后的文件写入磁盘。在这种情况下，IO 效率反而提高了。当然，这取决于压缩率。目前 btrfs 采用 zlib 提供的 
DEFALTE/INFLATE 算法进行压缩和解压。在将来，btrfs 应该可以支持更多的压缩算法，满足不同用户的不同需求。</p>
			<p>目前 btrfs 的压缩特性还存在一些不足，当压缩使能后，整个文件系统下的所有文件都将被压缩，但用户可能需要更细粒度的控制，比如针对不同的目录采用不同的压缩算法，或者禁止压缩。我相信，btrfs 开发团队将在今后的版本中解决这个问题。</p>
			<p>对于某些类型的文件，比如 jpeg 文件，已经无法再进行压缩。尝试对其压缩将纯粹浪费 CPU 。为此，当对某文件的若干个 block 压缩后发现压缩率不佳，btrfs 将不会再对文件的其余部分进行压缩操作。这个特性在某种程度上提高了文件系统的 IO 效率。</p>
			<p>预分配</p>
			<p>很多应用程序有预先分配磁盘空间的需要。他们可以通过 posix_fallocate 
接口告诉文件系统在磁盘上预留一部分空间，但暂时并不写入数据。如果底层文件系统不支持 fallocate，那么应用程序只有使用 write 
预先写一些无用信息以便为自己预留足够的磁盘空间。</p>
			<p>由文件系统来支持预留空间更加有效，而且能够减少磁盘碎片，因为所有的空间都是一次分配，因而更有可能使用连续的空间。 Btrfs 支持 posix_fallocate 。</p>
			<p><a name="N10282"><span class="smalltitle">总结</span></a></p>
			<p>至此，我们对 btrfs 的很多特性进行了较为详细的探讨，但 btrfs 能提供的特性却并不止这些。 btrfs 正处于试验开发阶段，还将有更多的特性。</p>
			<p>Btrfs 也有一个重要的缺点，当 BTree 中某个节点出现错误时，文件系统将失去该节点之下的所有的文件信息。而 ext2/3 却避免了这种被称为&#8221;错误扩散&#8221;的问题。</p>
			<p>但无论怎样，希望您和我一样，开始认同 btrfs 将是 Linux 未来最有希望的文件系统。</p>
			<p><a name="3.BTRFS使用简介|outline"><span class="atitle">BTRFS 使用简介</span></a></p>
			<p>了解了 btrfs 的特性，想必您一定想亲身体验一下 btrfs 的使用。本章将简要介绍如何使用 btrfs 。</p>
			<p><a name="N1029A"><span class="smalltitle">创建文件系统</span></a></p>
			<p>mkfs.btrfs 命令建立一个 btrfs 格式的文件系统。可以用如下命令在设备 sda5 上建立一个 btrfs 文件系统，并将其挂载到 /btrfsdisk 目录下：</p>
			<table width="100%" border="0" cellpadding="0" cellspacing="0"><tbody><tr><td class="code-outline"><pre class="displaycode">#mkfs.btrfs /dev/sda5 
 #mkdir /btrfsdisk 
 #mount - t btrfs /dev/sda5 /btrfsdisk</pre></td></tr></tbody></table><br />
			<p>这样一个 Btrfs 就在设备 sda5 上建立好了。值得一提的是在这种缺省情况下，即使只有一个设备，Btrfs 也会对 metadata 进行冗余保护。如果有多个设备，那么您可以在创建文件系统的时候进行 RAID 设置。详细信息请参见后续的介绍。</p>
			<p>这里介绍其他几个 mkfs.btrfs 的参数。</p>
			<p>Nodesize 和 leafsize 用来设定 btrfs 内部 BTree 节点的大小，缺省为一个 page 大小。但用户也可以使用更大的节点，以便增加 fanout，减小树的高度，当然这只适合非常大的文件系统。</p>
			<p>Alloc-start 参数用来指定文件系统在磁盘设备上的起始地址。这使得用户可以方便的预留磁盘前面的一些特殊空间。</p>
			<p>Byte-count 参数设定文件系统的大小，用户可以只使用设备的一部分空间，当空间不足时再增加文件系统大小。</p>
			<p><a name="N102B6"><span class="smalltitle">修改文件系统的大小</span></a></p>
			<p>当文件系统建立好之后，您可以修改文件系统的大小。 /dev/sda5 挂载到了 /btrfsdisk 下，大小为 800M 。假如您希望只使用其中的 500M，则需要减小当前文件系统的大小，这可以通过如下命令实现：</p>
			<table width="100%" border="0" cellpadding="0" cellspacing="0"><tbody><tr><td class="code-outline"><pre class="displaycode">#df 
 Filesystem   1K-blocks     Used      Available   Use%   Mounted on 
 /dev/sda1    101086        19000       76867         20%     /boot 
 /dev/sda5    811248         32       811216         1%     /btrfsdisk 
 #btrfsctl - r -300M /btrfsdisk 
 #df 
 Filesystem  1K-blocks      Used      Available   Use%   Mounted on 
 /dev/sda1    101086        19000       76867         20%     /boot 
 /dev/sda5    504148         32       504106         1%     /btrfsdisk</pre></td></tr></tbody></table><br />
			<p>同样的，您可以使用 btrfsctl 命令增加文件系统的大小。</p>
			<p><a name="N102C6"><span class="smalltitle">创建 Snapshot</span></a></p>
			<p>下面的例子中，创建快照 snap1 时系统存在 2 个文件。创建快照之后，对 test1 的内容进行修改。再回到 snap1，打开 test1 文件，可以看到 test1 的内容依旧是之前的内容。</p>
			<table width="100%" border="0" cellpadding="0" cellspacing="0"><tbody><tr><td class="code-outline"><pre class="displaycode">#ls /btrfsdisk 
 test1 test2 
 #vi test1 
 This is a test 
 #btrfsctl - s snap1 /btrfsdisk 
 #vi test1 
 Test1 is modified 
 #cd /btrfsdisk/snap1 
 #cat test1 
 This is a test</pre></td></tr></tbody></table><br />
			<p>可以从上面的例子看到，快照 snap1 保存的内容不会被后续的写操作所改变。</p>
			<p><a name="N102D6"><span class="smalltitle">创建 subvolume</span></a></p>
			<p>使用 btrfs 命令，用户可以方便的建立 subvolume 。假设 /btrfsdisk 已经挂载到了 btrfs 
文件系统，则用户可以在这个文件系统内创建新的 subvolume 。比如建立一个 /sub1 的 subvolume，并将 sub1 挂载到 
/mnt/test 下：</p>
			<table width="100%" border="0" cellpadding="0" cellspacing="0"><tbody><tr><td class="code-outline"><pre class="displaycode">#mkdir /mnt/test 
 #btrfsctl - S sub1 /btrfsdisk 
 #mount - t btrfs - o subvol=sub1 /dev/sda5 /mnt/test</pre></td></tr></tbody></table><br />
			<p><code>
				</code>Subvolme 
可以方便管理员在文件系统上创建不同用途的子文件系统，并对其进行一些特殊的配置，比如有些目录下的文件关注节约磁盘空间，因此需要打开压缩，或者配置不
同的 RAID 策略等。目前 btrfs 尚处于开发阶段，创建的 subvolme 和 snapshot 还无法删除。此外针对 
subvolume 的磁盘 quota 功能也未能实现。但随着 btrfs 的不断成熟，这些功能必然将会进一步完善<code>。</code></p>
			<p><a name="N102EC"><span class="smalltitle">创建 RAID</span></a></p>
			<p>mkfs 的时候，可以指定多个设备，并配置 RAID 。下面的命令演示了如何使用 mkfs.btrfs 配置 RAID1 。 
Sda6 和 sda7 可以配置为 RAID1，即 mirror 。用户可以选择将数据配置为 RAID1，也可以选择将元数据配置为 RAID1 。</p>
			<p>将数据配置为 RAID1，可以使用 mkfs.btrfs 的 -d 参数。如下所示：</p>
			<table width="100%" border="0" cellpadding="0" cellspacing="0"><tbody><tr><td class="code-outline"><pre class="displaycode">#mkfs.btrfs - d raid1 /dev/sda6 /dev/sda7 
 #mount - t btrfs /dev/sda6 /btrfsdisk</pre></td></tr></tbody></table><br />
			<p><a name="N102FC"><span class="smalltitle">添加新设备</span></a></p>
			<p>当设备的空间快被使用完的时候，用户可以使用 btrfs-vol 命令为文件系统添加新的磁盘设备，从而增加存储空间。下面的命令向 /btrfsdisk 文件系统增加一个设备 /sda8</p>
			<table width="100%" border="0" cellpadding="0" cellspacing="0"><tbody><tr><td class="code-outline"><pre class="displaycode">#btrfs-vol - a /dev/sda8 /btrfsdisk</pre></td></tr></tbody></table><br />
			<p><a name="N10309"><span class="smalltitle">SSD 支持</span></a></p>
			<p>用户可以使用 mount 参数打开 btrfs 针对 SSD 的优化。命令如下：</p>
			<table width="100%" border="0" cellpadding="0" cellspacing="0"><tbody><tr><td class="code-outline"><pre class="displaycode">#mount - t btrfs - o SSD /dev/sda5 /btrfsdisk</pre></td></tr></tbody></table><br />
			<p><strong><em>开启压缩功能</em></strong></p>
			<p><code>
				</code>用户可以使用 mount 参数打开压缩功能。命令如下<code>：</code></p>
			<table width="100%" border="0" cellpadding="0" cellspacing="0"><tbody><tr><td class="code-outline"><pre class="displaycode">#mount - t btrfs - o compress /dev/sda5 /btrfsdisk</pre></td></tr></tbody></table><br />
			<p><strong><em>同步文件系统</em></strong></p>
			<p><code>
				</code>为了提高效率，btrfs 的 IO 操作由一些内核线程异步处理。这使得用户对文件的操作并不会立即反应到磁盘上。您可以做一个实验，在 btrfs 上创建一个文件后，稍等 5 到 10 秒将系统电源切断，再次重启后，新建的文件并没有出现。</p>
			<p>对于多数应用这并不是问题，但有些时候用户希望 IO 操作立即执行，此时就需要对文件系统进行同步。下面的 btrfs 命令用来同步文件系统：</p>
			<table width="100%" border="0" cellpadding="0" cellspacing="0"><tbody><tr><td class="code-outline"><pre class="displaycode">#btrfsctl - c /btrfsdisk</pre></td></tr></tbody></table><br />
			<p><a name="N1033A"><span class="smalltitle">Debug 功能</span></a></p>
			<p>Btrfs 提供了一定的 debug 功能，对于想了解 Btrfs 内部实现原理的读者，debug 将是您最喜欢的工具。这里简单介绍一下 debug 功能的命令使用。</p>
			<p>下面的命令将设备 sda5 上的 btrfs 文件系统中的元数据打印到屏幕上。</p>
			<table width="100%" border="0" cellpadding="0" cellspacing="0"><tbody><tr><td class="code-outline"><pre class="displaycode">#btrfs-debug-tree /dev/sda5</pre></td></tr></tbody></table><br />
			<p><code>
				</code>通过对打印信息的分析，您将能了解 btrfs 内部各个 BTree 的变化情况，从而进一步理解每一个文件系统功能的内部实现细节。</p>
			<p>比如您可以在创建一个文件之前将 BTree 的内容打印出来，创建文件后再次打印。通过比较两次的不同来了解 btrfs 创建一个文件需要修改哪些元数据。进而理解 btrfs 内部的工作原理。</p><br />]]>
    </content>
</entry>

<entry>
    <title>libtool的一个问题</title>
    <link rel="alternate" type="text/html" href="http://my.huhoo.net/archives/2011/08/libtool.html" />
    <id>tag:my.huhoo.net,2011:/study//1.963</id>

    <published>2011-08-09T12:42:56Z</published>
    <updated>2011-08-09T13:00:10Z</updated>

    <summary><![CDATA[&nbsp;&nbsp;&nbsp; libtools生成so的时候，发现在rhel5.3和fedora15下，结果竟然不一样，Makefile.am这样写道：dydir&nbsp;&nbsp;&nbsp; = $(bindir)/pwddy_PROGRAMS&nbsp;&nbsp;&nbsp; = libdy.solibdy_so_SOURCES = dy.cpp dy.hlibdy_so_CXXFLAGS = -fPIClibdy_so_LDFLAGS = -shared -fpic在fedora15下，这里面dy.cpp里面必须包括main函数，否则编译不过，而rhel5.3则没有这个问题，查了过程发现fedora15和rhel5.3的编译过程分别如下所示：fedora15：/bin/sh ../../../libtool --tag=CXX&nbsp;&nbsp; --mode=link g++ -fPIC -g -O2 -shared -fpic&nbsp; -o libdy.so libdy_so-dy.o&nbsp; libtool: link: g++ -fPIC -g -O2 -fpic -o libdy.so libdy_so-dy.o /usr/lib/gcc/i686-redhat-linux/4.6.0/../../../crt1.o: In function `_start':(.text+0x18):...]]></summary>
    <author>
        <name>Cnangel</name>
        <uri>http://my.huhoo.net/study</uri>
    </author>
    
        <category term="Linux世界" scheme="http://www.sixapart.com/ns/types#category" />
    
        <category term="电脑技巧" scheme="http://www.sixapart.com/ns/types#category" />
    
    <category term="libtool" label="libtool" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="shared" label="shared" scheme="http://www.sixapart.com/ns/types#tag" />
    
    <content type="html" xml:lang="en" xml:base="http://my.huhoo.net/study/">
        <![CDATA[&nbsp;&nbsp;&nbsp; libtools生成so的时候，发现在rhel5.3和fedora15下，结果竟然不一样，Makefile.am这样写道：<br /><blockquote><b>dydir&nbsp;&nbsp;&nbsp; = $(bindir)/pwd<br />dy_PROGRAMS&nbsp;&nbsp;&nbsp; = libdy.so<br />libdy_so_SOURCES = dy.cpp dy.h<br />libdy_so_CXXFLAGS = -fPIC<br />libdy_so_LDFLAGS = -shared -fpic</b><br /></blockquote>在fedora15下，这里面dy.cpp里面必须包括main函数，否则编译不过，而rhel5.3则没有这个问题，查了过程发现fedora15和rhel5.3的编译过程分别如下所示：<br /><blockquote><b>fedora15：</b><br /><b>/bin/sh ../../../libtool --tag=CXX&nbsp;&nbsp; --mode=link g++ -fPIC -g -O2 -shared -fpic&nbsp; -o libdy.so libdy_so-dy.o&nbsp; </b><br /><b>libtool: link: g++ -fPIC -g -O2 -fpic -o libdy.so libdy_so-dy.o </b><br /><b>/usr/lib/gcc/i686-redhat-linux/4.6.0/../../../crt1.o: In function `_start':</b><br /><b>(.text+0x18): undefined reference to `main'</b><br /><b>collect2: ld returned 1 exit status</b><br /></blockquote>和<br /><blockquote><b>rhel5.3<br />/bin/sh ../../../libtool --tag=CXX --mode=link g++&nbsp; -g -O2&nbsp;&nbsp; -o libdy.so -shared -fpic libdy_so-dy.o&nbsp; </b><br /><b>g++ -g -O2 -o libdy.so -shared -fpic libdy_so-dy.o </b><br /></blockquote>应该是libtool在fedora15上丢失了-shared参数所致，fedora15的libtool版本为2.4，而rhel5.3的libtool版本为1.5.22。<br />]]>
        
    </content>
</entry>

<entry>
    <title>郁闷的SSH</title>
    <link rel="alternate" type="text/html" href="http://my.huhoo.net/archives/2011/08/ssh.html" />
    <id>tag:my.huhoo.net,2011:/study//1.962</id>

    <published>2011-08-02T10:10:29Z</published>
    <updated>2011-08-02T10:27:46Z</updated>

    <summary><![CDATA[&nbsp;&nbsp;&nbsp; 一般使用ssh -X连接到服务器，启动xclock，发现并没有窗口弹出，并提示错误信息：Error: Can't open display:&nbsp;&nbsp;&nbsp; 以为是Xserver的问题，比较环境变量DISPLAY以及Xorg的一些配置，也没有找到原因。&nbsp;&nbsp;&nbsp; 后来想到以前俺博客当中应该有相关的资料，但忽略了ssh的服务器配置，其实解决的问题很简单，当想通过XServer显示服务器上的UI程序时，需要在ssh的时候加上-X参数外，还需要服务器的sshd支持远程的XServer，其/etc/ssh/ssh_config配置如下：#&nbsp;&nbsp;&nbsp; $OpenBSD: ssh_config,v 1.23 2007/06/08 04:40:40 pvalchev Exp $# This is the ssh client system-wide configuration file.&nbsp; See# ssh_config(5) for more information.&nbsp; This file provides defaults for# users, and the values can be...]]></summary>
    <author>
        <name>Cnangel</name>
        <uri>http://my.huhoo.net/study</uri>
    </author>
    
        <category term="Linux世界" scheme="http://www.sixapart.com/ns/types#category" />
    
        <category term="电脑技巧" scheme="http://www.sixapart.com/ns/types#category" />
    
    <category term="ssh" label="ssh" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="sshd" label="sshd" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="x11" label="X11" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="x11forwarding" label="X11Forwarding" scheme="http://www.sixapart.com/ns/types#tag" />
    
    <content type="html" xml:lang="en" xml:base="http://my.huhoo.net/study/">
        <![CDATA[&nbsp;&nbsp;&nbsp; 一般使用ssh -X连接到服务器，启动xclock，发现并没有窗口弹出，并提示错误信息：<br /><blockquote>Error: Can't open display:<br /></blockquote>&nbsp;&nbsp;&nbsp; 以为是Xserver的问题，比较环境变量DISPLAY以及Xorg的一些配置，也没有找到原因。<br />&nbsp;&nbsp;&nbsp; 后来想到以前俺博客当中应该有相关的资料，但忽略了ssh的服务器配置，其实解决的问题很简单，当想通过XServer显示服务器上的UI程序时，需要在ssh的时候加上-X参数外，还需要服务器的sshd支持远程的XServer，其/etc/ssh/ssh_config配置如下：<br /><blockquote>#&nbsp;&nbsp;&nbsp; $OpenBSD: ssh_config,v 1.23 2007/06/08 04:40:40 pvalchev Exp $<br /><br /># This is the ssh client system-wide configuration file.&nbsp; See<br /># ssh_config(5) for more information.&nbsp; This file provides defaults for<br /># users, and the values can be changed in per-user configuration files<br /># or on the command line.<br /><br /># Configuration data is parsed as follows:<br />#&nbsp; 1. command line options<br />#&nbsp; 2. user-specific file<br />#&nbsp; 3. system-wide file<br /># Any configuration value is only changed the first time it is set.<br /># Thus, host-specific definitions should be at the beginning of the<br /># configuration file, and defaults at the end.<br /><br /># Site-wide defaults for some commonly used options.&nbsp; For a comprehensive<br /># list of available options, their meanings and defaults, please see the<br /># ssh_config(5) man page.<br /><br /># Host *<br />#&nbsp;&nbsp; ForwardAgent no<br /><b>ForwardX11 yes</b><br />#&nbsp;&nbsp; RhostsRSAAuthentication no<br />#&nbsp;&nbsp; RSAAuthentication yes<br />#&nbsp;&nbsp; PasswordAuthentication yes<br />#&nbsp;&nbsp; HostbasedAuthentication no<br />#&nbsp;&nbsp; GSSAPIAuthentication no<br />#&nbsp;&nbsp; GSSAPIDelegateCredentials no<br />#&nbsp;&nbsp; BatchMode no<br />#&nbsp;&nbsp; CheckHostIP yes<br />#&nbsp;&nbsp; AddressFamily any<br />#&nbsp;&nbsp; ConnectTimeout 0<br />#&nbsp;&nbsp; StrictHostKeyChecking ask<br />#&nbsp;&nbsp; IdentityFile ~/.ssh/identity<br />#&nbsp;&nbsp; IdentityFile ~/.ssh/id_rsa<br />#&nbsp;&nbsp; IdentityFile ~/.ssh/id_dsa<br />#&nbsp;&nbsp; Port 22<br />#&nbsp;&nbsp; Protocol 2,1<br />#&nbsp;&nbsp; Cipher 3des<br />#&nbsp;&nbsp; Ciphers aes128-cbc,3des-cbc,blowfish-cbc,cast128-cbc,arcfour,aes192-cbc,aes256-cbc<br />#&nbsp;&nbsp; MACs hmac-md5,hmac-sha1,umac-64@openssh.com,hmac-ripemd160<br />#&nbsp;&nbsp; EscapeChar ~<br />#&nbsp;&nbsp; Tunnel no<br />#&nbsp;&nbsp; TunnelDevice any:any<br />#&nbsp;&nbsp; PermitLocalCommand no<br />StrictHostKeyChecking no<br />UserKnownHostsFile /dev/null<br />LogLevel error<br /></blockquote><br />]]>
        <![CDATA[另外，还需要配置/etc/ssh/sshd_config，主要修改参数：X11Forwarding 为 Yes 即可，其全部配置如下所示：<br /><br /><blockquote>#&nbsp;&nbsp;&nbsp; $OpenBSD: sshd_config,v 1.75 2007/03/19 01:01:29 djm Exp $<br /><br /># This is the sshd server system-wide configuration file.&nbsp; See<br /># sshd_config(5) for more information.<br /><br /># This sshd was compiled with PATH=/usr/local/bin:/bin:/usr/bin<br /><br /># The strategy used for options in the default sshd_config shipped with<br /># OpenSSH is to specify options with their default value where<br /># possible, but leave them commented.&nbsp; Uncommented options change a<br /># default value.<br /><br />#Port 22<br />#AddressFamily any<br />#ListenAddress 0.0.0.0<br />#ListenAddress ::<br /><br /># Disable legacy (protocol version 1) support in the server for new<br /># installations. In future the default will change to require explicit<br /># activation of protocol 1<br />Protocol 2<br /><br /># HostKey for protocol version 1<br />#HostKey /etc/ssh/ssh_host_key<br /># HostKeys for protocol version 2<br />#HostKey /etc/ssh/ssh_host_rsa_key<br />#HostKey /etc/ssh/ssh_host_dsa_key<br /><br /># Lifetime and size of ephemeral version 1 server key<br />#KeyRegenerationInterval 1h<br />#ServerKeyBits 768<br /><br /># Logging<br /># obsoletes QuietMode and FascistLogging<br />#SyslogFacility AUTH<br />#LogLevel INFO<br /><br /># Authentication:<br /><br />#LoginGraceTime 2m<br />#PermitRootLogin yes<br />#StrictModes yes<br />#MaxAuthTries 6<br /><br />#RSAAuthentication yes<br />#PubkeyAuthentication yes<br />#AuthorizedKeysFile&nbsp;&nbsp;&nbsp; .ssh/authorized_keys<br /><br /># For this to work you will also need host keys in /etc/ssh/ssh_known_hosts<br />#RhostsRSAAuthentication no<br /># similar for protocol version 2<br />#HostbasedAuthentication no<br /># Change to yes if you don't trust ~/.ssh/known_hosts for<br /># RhostsRSAAuthentication and HostbasedAuthentication<br />#IgnoreUserKnownHosts no<br /># Don't read the user's ~/.rhosts and ~/.shosts files<br />#IgnoreRhosts yes<br /><br /># To disable tunneled clear text passwords, change to no here!<br />#PasswordAuthentication yes<br />#PermitEmptyPasswords no<br /><br /># Change to no to disable s/key passwords<br />#ChallengeResponseAuthentication yes<br /><br /># Kerberos options<br />#KerberosAuthentication no<br />#KerberosOrLocalPasswd yes<br />#KerberosTicketCleanup yes<br />#KerberosGetAFSToken no<br /><br /># GSSAPI options<br />#GSSAPIAuthentication no<br />#GSSAPICleanupCredentials yes<br /><br /># Set this to 'yes' to enable PAM authentication, account processing, <br /># and session processing. If this is enabled, PAM authentication will <br /># be allowed through the ChallengeResponseAuthentication and<br /># PasswordAuthentication.&nbsp; Depending on your PAM configuration,<br /># PAM authentication via ChallengeResponseAuthentication may bypass<br /># the setting of "PermitRootLogin without-password".<br /># If you just want the PAM account and session checks to run without<br /># PAM authentication, then enable this but set PasswordAuthentication<br /># and ChallengeResponseAuthentication to 'no'.<br />#UsePAM no<br /><br />#AllowTcpForwarding yes<br />#GatewayPorts no<br /><b>X11Forwarding yes</b><br />#X11DisplayOffset 10<br />#X11UseLocalhost yes<br />#PrintMotd yes<br />#PrintLastLog yes<br /><b>TCPKeepAlive yes</b><br />#UseLogin no<br />#UsePrivilegeSeparation yes<br />#PermitUserEnvironment no<br />#Compression delayed<br /><b>ClientAliveInterval 0</b><br />#ClientAliveCountMax 3<br />#UseDNS yes<br />#PidFile /var/run/sshd.pid<br />#MaxStartups 10<br />#PermitTunnel no<br /><br /># no default banner path<br />#Banner /some/path<br /><br /># override default of no subsystems<br />Subsystem&nbsp;&nbsp;&nbsp; sftp&nbsp;&nbsp;&nbsp; /usr/libexec/openssh/sftp-server<br /><br /># Example of overriding settings on a per-user basis<br />#Match User anoncvs<br />#&nbsp;&nbsp;&nbsp; X11Forwarding no<br />#&nbsp;&nbsp;&nbsp; AllowTcpForwarding no<br />#&nbsp;&nbsp;&nbsp; ForceCommand cvs server<br /><br /><br /></blockquote><br />]]>
    </content>
</entry>

<entry>
    <title>关于在firefox下SSL error renegotiation not allowed的问题</title>
    <link rel="alternate" type="text/html" href="http://my.huhoo.net/archives/2011/07/firefoxssl_error_renegotiation.html" />
    <id>tag:my.huhoo.net,2011:/study//1.961</id>

    <published>2011-07-12T05:04:12Z</published>
    <updated>2011-07-12T05:27:17Z</updated>

    <summary>当我们使用firefox打开一个带有https或者证书验证的网页时，发现出现如下错误：Renegotiation is not allowed on this SSL socket.(Error code: ssl_error_renegotiation_not_allowed)为了打开SSL renegotiation这个选项，需要你在firefox浏览器下输入：about:config并搜索&#8220;security.ssl.allow_unrestricted_renego_everywhere__temporarily_available_pref&#8221;字样，将其值修改为true即可。当然最好你需要了解这个选项的打开对于你的浏览器安全来说，是有问题的。更多详情见：http://dotomaz.tumblr.com/post/786443743/firefox-4-0b1-and-ssl-renegotiation...</summary>
    <author>
        <name>Cnangel</name>
        <uri>http://my.huhoo.net/study</uri>
    </author>
    
        <category term="Linux世界" scheme="http://www.sixapart.com/ns/types#category" />
    
        <category term="cnangel手记" scheme="http://www.sixapart.com/ns/types#category" />
    
    <category term="firefox" label="firefox" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="ssl" label="ssl" scheme="http://www.sixapart.com/ns/types#tag" />
    
    <content type="html" xml:lang="en" xml:base="http://my.huhoo.net/study/">
        <![CDATA[当我们使用firefox打开一个带有https或者证书验证的网页时，发现出现如下错误：<br /><blockquote>Renegotiation is not allowed on this SSL socket.<br />(Error code: ssl_error_renegotiation_not_allowed)<br /></blockquote>为了打开SSL renegotiation这个选项，需要你在firefox浏览器下输入：<br /><blockquote>about:config<br /></blockquote>并搜索&#8220;security.ssl.allow_unrestricted_renego_everywhere__temporarily_available_pref&#8221;字样，将其值修改为true即可。<br />当然最好你需要了解这个选项的打开对于你的浏览器安全来说，是有问题的。<br /><br />更多详情见：<br />http://dotomaz.tumblr.com/post/786443743/firefox-4-0b1-and-ssl-renegotiation<br /> ]]>
        
    </content>
</entry>

<entry>
    <title>pidgin上使用libqq</title>
    <link rel="alternate" type="text/html" href="http://my.huhoo.net/archives/2011/06/pidginlibqq.html" />
    <id>tag:my.huhoo.net,2011:/study//1.960</id>

    <published>2011-06-27T08:01:27Z</published>
    <updated>2011-06-27T08:39:48Z</updated>

    <summary>腾讯官方站点的LinuxQQ一直没有更新，且经常崩溃；而pidgin上自带的QQ也不支持最新的QQ2010协议了。如果在pidgin上使用QQ呢？打开http://code.google.com/p/libqq-pidgin/，然后下载最新的源代码，编译安装之后，QQ就可以使用了。其实pidgin也挺累的，要整理很多IM的接口，还要遭到闭源软件的干扰，并且很多的linux发行版都默认使用Empathy作为默认的IM。其实pidgin方便了用户，却如此结果，感叹一下。...</summary>
    <author>
        <name>Cnangel</name>
        <uri>http://my.huhoo.net/study</uri>
    </author>
    
        <category term="Linux世界" scheme="http://www.sixapart.com/ns/types#category" />
    
        <category term="电脑技巧" scheme="http://www.sixapart.com/ns/types#category" />
    
    
    <content type="html" xml:lang="en" xml:base="http://my.huhoo.net/study/">
        <![CDATA[腾讯官方站点的LinuxQQ一直没有更新，且经常崩溃；而pidgin上自带的QQ也不支持最新的QQ2010协议了。<br /><br />如果在pidgin上使用QQ呢？打开<a href="http://code.google.com/p/libqq-pidgin/">http://code.google.com/p/libqq-pidgin/</a>，然后下载最新的源代码，编译安装之后，QQ就可以使用了。<br /><br />其实pidgin也挺累的，要整理很多IM的接口，还要遭到闭源软件的干扰，并且很多的linux发行版都默认使用Empathy作为默认的IM。其实pidgin方便了用户，却如此结果，感叹一下。<br /> ]]>
        
    </content>
</entry>

<entry>
    <title>竟然有小偷光顾了</title>
    <link rel="alternate" type="text/html" href="http://my.huhoo.net/archives/2011/06/post_64.html" />
    <id>tag:my.huhoo.net,2011:/study//1.959</id>

    <published>2011-06-20T01:17:11Z</published>
    <updated>2011-06-20T01:46:09Z</updated>

    <summary><![CDATA[&nbsp;&nbsp;&nbsp; 周日凌晨，下很大的雨，竟然有小偷来我租住的地方偷东西来了，幸好人没有事，只把相机和钱包里面的100多元的钱偷走了，顺便拿了一把伞遮雨。&nbsp;&nbsp;&nbsp; 在年前，很多同事家就有别人偷过，但是没有想到我也亲身经历了 :) 杭州的治安明显比不上北京啊。...]]></summary>
    <author>
        <name>Cnangel</name>
        <uri>http://my.huhoo.net/study</uri>
    </author>
    
        <category term="cnangel手记" scheme="http://www.sixapart.com/ns/types#category" />
    
    
    <content type="html" xml:lang="en" xml:base="http://my.huhoo.net/study/">
        <![CDATA[&nbsp;&nbsp;&nbsp; 周日凌晨，下很大的雨，竟然有小偷来我租住的地方偷东西来了，幸好人没有事，只把相机和钱包里面的100多元的钱偷走了，顺便拿了一把伞遮雨。<br />&nbsp;&nbsp;&nbsp; 在年前，很多同事家就有别人偷过，但是没有想到我也亲身经历了 :) 杭州的治安明显比不上北京啊。<br />]]>
        
    </content>
</entry>

<entry>
    <title>回忆</title>
    <link rel="alternate" type="text/html" href="http://my.huhoo.net/archives/2011/06/post_63.html" />
    <id>tag:my.huhoo.net,2011:/study//1.958</id>

    <published>2011-06-16T12:26:50Z</published>
    <updated>2011-06-16T12:30:32Z</updated>

    <summary><![CDATA[&nbsp; &nbsp;在公司加了一会儿班，看了看原来以前逛的一些网站：bbs.leobss.comqqnl.net&nbsp; &nbsp;感觉越来越远了。...]]></summary>
    <author>
        <name>Cnangel</name>
        <uri>http://my.huhoo.net/study</uri>
    </author>
    
        <category term="cnangel手记" scheme="http://www.sixapart.com/ns/types#category" />
    
    
    <content type="html" xml:lang="en" xml:base="http://my.huhoo.net/study/">
        <![CDATA[&nbsp; &nbsp;在公司加了一会儿班，看了看原来以前逛的一些网站：<blockquote class="webkit-indent-blockquote" style="margin: 0 0 0 40px; border: none; padding: 0px;"><div><a href="http://bbs.leobbs.com/cgi-bin/leobbs.htm">bbs.leobss.com</a></div><div><a href="http://www.qqnl.net">qqnl.net</a></div></blockquote>&nbsp; &nbsp;感觉越来越远了。]]>
        
    </content>
</entry>

</feed>

