<?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>2010-03-01T01:33:37Z</updated>
    <subtitle>About My learn or Study etc.</subtitle>
    <generator uri="http://www.sixapart.com/movabletype/">Movable Type Open Source 4.31-zh-cn</generator>

<entry>
    <title>linux下screen的内存问题</title>
    <link rel="alternate" type="text/html" href="http://my.huhoo.net/archives/2010/03/linuxscreen.html" />
    <id>tag:my.huhoo.net,2010:/study//1.908</id>

    <published>2010-03-01T01:30:23Z</published>
    <updated>2010-03-01T01:33:37Z</updated>

    <summary>使用screen，方便快捷，很容易保存当前的现场，可是有时候发现screen -...</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="linux" label="linux" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="memory" label="memory" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="screen" label="screen" scheme="http://www.sixapart.com/ns/types#tag" />
    
    <content type="html" xml:lang="zh-cn" xml:base="http://my.huhoo.net/study/">
        <![CDATA[使用screen，方便快捷，很容易保存当前的现场，可是有时候发现screen -r的时候恢复很慢，最后就打不开了，于是跟踪了一下，发现screen占用的内存达12.2G(开发机器是16G的内存)，难怪崩溃。<br /><br />于是google一下关于linux下screen的memory问题，发现没有相关资料，不知道有人遇到与我同样的问题么？<br />]]>
        
    </content>
</entry>

<entry>
    <title>iPhone ssh problem</title>
    <link rel="alternate" type="text/html" href="http://my.huhoo.net/archives/2010/02/iphone_ssh_problem.html" />
    <id>tag:my.huhoo.net,2010:/study//1.907</id>

    <published>2010-02-24T01:25:24Z</published>
    <updated>2010-02-24T01:28:03Z</updated>

    <summary>After installing the BSD Subsystem and O...</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="iphone" label="iphone" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="ssh" label="ssh" scheme="http://www.sixapart.com/ns/types#tag" />
    
    <content type="html" xml:lang="zh-cn" xml:base="http://my.huhoo.net/study/">
        <![CDATA[After installing the BSD Subsystem and
OpenSSH packages from the Installer.app, I tried to remotely login
to my iPhone using ssh, but all I got was this error:<br />
<br />
me@mbp $&gt; ssh iphone<br />
ssh_exchange_identification: Connection closed by remote host<br />
<br />
After some googling I still couldn't find any useable solution to
my problem, so I started to investigate the problem my self.<br />
<br />
Running the Term-vt100.app on the iPhone and typing /usr/sbin/sshd
-t reviled that the host keys was not generated, so the fix was to
generate them by hand:<br />
<br />
me@iphone $&gt; ssh-keygen -t rsa1 -b 1024 -f /etc/ssh_host_key -N
''<br />
me@iphone $&gt; /usr/bin/ssh-keygen -d -f /etc/ssh_host_dsa_key -N
''<br />
me@iphone $&gt; /usr/bin/ssh-keygen -t rsa -f /etc/ssh_host_rsa_key
-N ''<br />
<br />
After that it all work like a charm.<br /><br />from:<a href="http://www.my-place.biz/page0/files/1dc330112cc73308affb6d1d52b4b0a1-7.html">http://www.my-place.biz/page0/files/1dc330112cc73308affb6d1d52b4b0a1-7.html</a><br /><br /> ]]>
        
    </content>
</entry>

<entry>
    <title>这段日子真的很忙</title>
    <link rel="alternate" type="text/html" href="http://my.huhoo.net/archives/2010/02/post_49.html" />
    <id>tag:my.huhoo.net,2010:/study//1.906</id>

    <published>2010-02-20T13:14:37Z</published>
    <updated>2010-02-20T13:37:02Z</updated>

    <summary><![CDATA[工作项目很紧，学习作业很多，还有英语口语考试，整个人快崩溃掉。 &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" />
    
        <category term="杂苑笔记" scheme="http://www.sixapart.com/ns/types#category" />
    
    
    <content type="html" xml:lang="zh-cn" xml:base="http://my.huhoo.net/study/">
        <![CDATA[<p>工作项目很紧，学习作业很多，还有英语口语考试，整个人快崩溃掉。</p>
<p>&nbsp;</p>]]>
        
    </content>
</entry>

<entry>
    <title>两个与生俱来的习惯性动作暴露你的性格与恋爱</title>
    <link rel="alternate" type="text/html" href="http://my.huhoo.net/archives/2010/01/post_48.html" />
    <id>tag:my.huhoo.net,2010:/study//1.905</id>

    <published>2010-01-28T08:52:05Z</published>
    <updated>2010-01-31T11:49:14Z</updated>

    <summary>这是日本的〔USAUSA~UNO SANO URANA)性格诊断，利用人类左右脑...</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="杂苑笔记" scheme="http://www.sixapart.com/ns/types#category" />
    
    
    <content type="html" xml:lang="zh-cn" xml:base="http://my.huhoo.net/study/">
        <![CDATA[<p>这是日本的〔USAUSA~UNO SANO URANA)性格诊断，利用人类左右脑各司其职的特性，设计了简单的两个惯性动作，分辨出这个人习惯以左脑（主理性，语言，计算，分析）还是右脑（主感性，直觉，想象，创造），来做为解读讯息用的&#8221;接收脑&#8221;，还是决定怎么说，怎么行动的&#8220;传达脑&#8221;？进而了解一个人的潜在性格与行为模式。开始吧。。。<br /></p>]]>
        <![CDATA[<p><b>动作1：</b><br /><br />两手直觉十指交握 <br /><br />握好没，别偷看答案...<br /><br />A.左手拇指在上--&gt;&#8220;U&#8221; <br /><br />B.右手拇指在上--&gt;&#8220;SA&#8221;<br /><br /><br /><br /><b>动作2：</b><br /><br />双手直觉交错抱胸 <br /><br />抱好没，别偷看答案.... <br /><br />A.右手掌在上--&gt;&#8220;U&#8221; <br /><br />B.左手掌在上--&gt;&#8220;SA&#8221; <br /><br /><br /><br />将动作1和2的结果（字母，如&#8220;SASA&#8221;）按顺序组合起来，你的结果是？<br /><br /><b>答案揭晓：</b><br />SASA女 　　<br />性格：无坚不摧的铁娘子：为人一本正经，给人精明干练的距离感，若跟SASA女成为好友，则是值得依赖的好帮手，但成为敌人，就会非常难缠！ 　　<br />恋爱：想太多的自我设限：交往前会想太多，对恋爱小心翼翼，不过很容易因此放弃，对主动告白的异性会难以招架，不过要小心反被聪明误！ <br /><br />USA女 　　<br />性格：人情的好听众：散发出安心，温柔，善解人意的气质，是一个人人都想跟你说心事的好听众，如困别人苦苦哀求你，总是很难拒絶别人！ 　　<br />恋爱：难以爽快脱身：虽然会理性评估对方，不过一但陷入热恋，就完全被感性主导，当热情不在时，很容易因对方对自己的依赖而无法爽快分手！ <br /><br />UU女 　　<br />性格：直觉行事的侠女：热血又充满个人魅力，会突然失控大笑或大哭，但都是出自真心，因此颇受朋友喜欢，最明显的就是购买东西完全凭感觉，就算不实用或已有相同款式还是想买！ <br />恋爱：单纯的爱情至上者：以自己心理的感觉为主，不会参考对方或客观因素来决定自己下一步举动，若对对方很有好感，一整天就像春暖花开，如果对方疑似劈腿，也会惊天动地大哭一场，但也很容易变心！ <br /><br />SAU女 　　<br />性格：阳刚味的大姊大：因为冷静观察与分析的性格，在同性之间很容易展现气慨与责任感，常常是女生之间的大姊大，但掌握全场之余又不失冷静观察！ 　　<br />恋爱：有目标的下手：操控自己的感觉，能冷静分析对方是否适合自己，一旦锁定目标，就会用尽方法维持热度，虽然严谨以对，但内心总有一把不可告人的浪漫烈火！</p>
<p><br /><br />SASA男 　　<br />性格：超级理性的数字人：完全以左脑为主的男性，以步骤跟数字为行事的准则，总是条理分明，不太能察觉感情，所以会给人固执，偏执的感觉！ 　　<br />恋爱：慢热专情的完美主义：会在心中描绘完美形象，面对真实感情却显得慢热自闭，一旦点燃热情后，就会持续专情，就算对方响应冷淡，SASA男仍念兹在兹，从一而终！<br /><br />USA男 　　<br />性格：情义相挺的汉子：虽然看似冷酷，其实很重感情，会以直觉印象为出发点，然后再以坚决的步伐行事，就是那种看你顺眼，就会收你做徒弟，挺你的那种大哥！ 　　<br />恋爱：不打没有把握的仗：恋爱成功机率很高，一旦确认对方也对自己有好感后，就会火力全开，不过爱得深，对女方的要求跟猜疑也很深！<br /><br />UU男 　　<br />性格：永远乐观的国王：因为相信自己的直觉，所以会显得自信满满，率直天真，坏处就是对不感兴趣的事，也丝毫不想掩饰，会显得兴趣缺缺甚至默不关心！ 　　<br />恋爱：自我得意的攻势：很容易自我沉溺在热恋气氛中，不过太过率直乐观的个性，可能会误解别人对你是否有好感，陷入自我得意的陷井中！<br /><br />SAU男 　　<br />性格：智囊分析者：喜欢探求理与擅长分析，常是旁人意见的给予者，给人一种冷静稳当的感觉，不喜欢与人争吵，很能妥善地处理事情，不过难免给人距离感！ 　　<br />恋爱：可能性至上：把自己喜不喜欢对方放在其次，反而以跟对方能否发展下去为第一前提，是个很适合爱情长跑或结婚的对象！</p>
<p><br /></p>]]>
    </content>
</entry>

<entry>
    <title>THERE&apos;S A HOLE IN MY SIDEWALK </title>
    <link rel="alternate" type="text/html" href="http://my.huhoo.net/archives/2010/01/theres_a_hole_in_my_sidewalk.html" />
    <id>tag:my.huhoo.net,2010:/study//1.904</id>

    <published>2010-01-28T05:24:11Z</published>
    <updated>2010-01-28T05:25:17Z</updated>

    <summary>THERE&apos;S A HOLE IN MY SIDEWALK Autobiogra...</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="杂苑笔记" scheme="http://www.sixapart.com/ns/types#category" />
    
    
    <content type="html" xml:lang="zh-cn" xml:base="http://my.huhoo.net/study/">
        <![CDATA[THERE'S A HOLE IN MY SIDEWALK <br />Autobiography in Five Short Chapters <br />By Portia Nelson <br /><br />Chapter One <br />I walk down the street. <br />There is a deep hole in the sidewalk. <br />I fall in. <br />I am lost .... I am helpless. <br />It isn't my fault. <br />It takes forever to find a way out. <br /><br />Chapter Two <br />I walk down the street. <br />There is a deep hole in the sidewalk. <br />I pretend that I don't see it. <br />I fall in again. <br />I can't believe I am in this same place. <br />But, it isn't my fault. <br />It still takes a long time to get out. <br /><br />Chapter Three <br />I walk down the same street. <br />There is a deep hole in the sidewalk. <br />I see it is there. <br />I still fall in ... it's a habit ... but, my eyes are open. <br />I know where I am. <br />It is my fault. <br />I get out immediately. <br /><br />Chapter Four <br />I walk down the same street. <br />There is a deep hole in the sidewalk. <br />I walk around it. <br /><br />Chapter Five <br />I walk down another street.<br /><br />大致意思如下：<br />]]>
        <![CDATA[第一种： <br />我走在大街上。街边有一个深不见底的洞。我掉了进去。我无助般的迷失了。这不是我的错啊！我永远也没有出路了！ <br /><br />第二种： <br />我走在大街上。街边有一个深不见底的洞。我假装没有看见。我又掉了进去。我无法相信这居然是同一个地方。但是这不是我的错啊！我花了很长时间找到了出路。 <br /><br />第三种： <br />我走在大街上。街边有一个深不见底的洞。这次我看见了。但是我还是习惯性地掉了进去。不过我看得很清楚。我知道自己在哪里。我知道这是我的错。我立刻就找到了出路。 <br /><br />第四种： <br />我走在大街上。街边有一个深不见底的洞。我从它的旁边绕过去。 <br /><br />第五种： <br />我换一条路走。 ]]>
    </content>
</entry>

<entry>
    <title>大bug，汉斯</title>
    <link rel="alternate" type="text/html" href="http://my.huhoo.net/archives/2010/01/bug.html" />
    <id>tag:my.huhoo.net,2010:/study//1.903</id>

    <published>2010-01-26T02:42:21Z</published>
    <updated>2010-01-26T02:54:01Z</updated>

    <summary>windows下的mpp文件打不开，使用openproj的时候，发现工期变成不一...</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="openproj" label="openproj" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="project" label="project" scheme="http://www.sixapart.com/ns/types#tag" />
    
    <content type="html" xml:lang="zh-cn" xml:base="http://my.huhoo.net/study/">
        <![CDATA[windows下的mpp文件打不开，使用openproj的时候，发现工期变成不一致了，在windows下看到的是4月12日，在这边看到的是4月1日，估计是project里面加入的feature可能openproj不支持。<br /><br /><br /> ]]>
        
    </content>
</entry>

<entry>
    <title>两个名词DD-Path and MM-path</title>
    <link rel="alternate" type="text/html" href="http://my.huhoo.net/archives/2010/01/--dd-path_and_mm-path.html" />
    <id>tag:my.huhoo.net,2010:/study//1.902</id>

    <published>2010-01-23T08:09:51Z</published>
    <updated>2010-01-23T08:31:28Z</updated>

    <summary>快考试了，发现几个名词还是很有意思的。DD Path：全称是Decision-t...</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="dd" label="DD" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="mm" label="MM" scheme="http://www.sixapart.com/ns/types#tag" />
    
    <content type="html" xml:lang="zh-cn" xml:base="http://my.huhoo.net/study/">
        <![CDATA[快考试了，发现几个名词还是很有意思的。<br />DD Path：全称是Decision-to-decision_path，在<a href="http://en.wikipedia.org/wiki/Decision-to-decision_path">wikipedia</a>上说得很明白，决策路径，可能有人听过决策树，决策树是一种深层次的表现形式，而决策路径表示（引用<a href="http://en.wikipedia.org/wiki/Decision-to-decision_path">wikipedia</a>上的原文如下）：<br /><blockquote><p>A decision-to-decision path, or DD-Path, is a path of execution
(usually through a graph representing a program, such as a flow-chart)
that does not include any conditional nodes. That is, it is the path of
execution between two decisions.</p><p><b>DD (decision-decision)'</b> path is a path of nodes in a directed graph. A chain is a path in which:</p><ul><li>Initial and terminal nodes are distinct</li><li>All interior nodes have in-degree = 1 and out-degree = 1</li></ul><p>A DD-path is a chain in a program graph such that:</p><ul><li>It consists of a single node with in-degree = 0 (initial node)</li><li>It consists of a single node with out-degree = 0 (terminal node)</li><li>It consists of a single node with in-deg ≥ 2 or out-deg ≥ 2</li><li>It consists of a single node with in-deg = 1 and out-deg = 1</li></ul><p>It is a maximal chain of length ≥ 1.</p></blockquote>




<p>MM-Path：在<a href="http://www.google.com/">google</a>搜索了半天，也找不到其含义，翻阅历来试卷，全称是Message-Module-Path，查阅论文资料找到一篇文章<a href="http://oldweb.cqvip.com/QKDG/pdf/10280219.pdf">《一个基于UML协作图的集成测试用例生成方法》</a>，上面提到&#8220;方法／消息路径(MM-path)&#8221;，应该表述有误。在测试里面，MM-路径是功能性测试和结构性测试的一种混合。<br /></p><p><br /></p><br /> ]]>
        
    </content>
</entry>

<entry>
    <title>Converting C headers to Perl headers </title>
    <link rel="alternate" type="text/html" href="http://my.huhoo.net/archives/2010/01/converting_c_headers_to_perl_h.html" />
    <id>tag:my.huhoo.net,2010:/study//1.899</id>

    <published>2010-01-17T17:14:33Z</published>
    <updated>2010-01-17T17:15:57Z</updated>

    <summary> curdir=`pwd`cd /usr/includevcase `uname...</summary>
    <author>
        <name>Cnangel</name>
        <uri>http://my.huhoo.net/study</uri>
    </author>
    
        <category term="我和Perl" scheme="http://www.sixapart.com/ns/types#category" />
    
    <category term="c" label="c" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="perl" label="perl" scheme="http://www.sixapart.com/ns/types#tag" />
    
    <content type="html" xml:lang="zh-cn" xml:base="http://my.huhoo.net/study/">
        <![CDATA[<blockquote dir="ltr" style="MARGIN-RIGHT: 0px">
<p><font face="Courier New">curdir=`pwd`<br />cd /usr/include<br />vcase `uname -a` in<br />Linux*)<br />&nbsp; &nbsp;h2ph -a termios.h<br />&nbsp; &nbsp;h2ph -a asm/termios.h<br />&nbsp; &nbsp;h2ph -a features.h<br />&nbsp; &nbsp;h2ph -a asm/termbits.h<br />&nbsp; &nbsp;h2ph -a asm/posix_types.h<br />&nbsp; &nbsp;h2ph -a asm/ioctls.h<br />&nbsp; &nbsp;h2ph -a asm/ioctl.h<br />&nbsp; &nbsp;h2ph -a bits/termios.h<br />&nbsp; &nbsp;h2ph -a gnu/stubs.h<br />&nbsp; &nbsp;h2ph -a linux/posix_types.h<br />&nbsp; &nbsp;h2ph -a asm/posix_types_32.h<br />&nbsp; &nbsp;h2ph -a linux/stddefs.h<br />&nbsp; &nbsp;h2ph -a linux/stddef.h<br />&nbsp; &nbsp;h2ph -a linux/compiler.h<br />;;</font><br /></p></blockquote>]]>
        
    </content>
</entry>

<entry>
    <title>繁忙的日子里</title>
    <link rel="alternate" type="text/html" href="http://my.huhoo.net/archives/2010/01/post_47.html" />
    <id>tag:my.huhoo.net,2010:/study//1.897</id>

    <published>2010-01-17T05:24:56Z</published>
    <updated>2010-01-17T06:19:03Z</updated>

    <summary>工作很忙，学习很忙，生活也很忙，2009年基本上是一个很忙的年。 ...</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="神话" label="神话" scheme="http://www.sixapart.com/ns/types#tag" />
    
    <content type="html" xml:lang="zh-cn" xml:base="http://my.huhoo.net/study/">
        <![CDATA[工作很忙，学习很忙，生活也很忙，2009年基本上是一个很忙的年。<br /><br /> ]]>
        <![CDATA[马上就要过年了，心情却一直很苦闷。<br />基本上看完了电视剧《神话》，对里面的主人公&#8212;&#8212;易小川，嗤之以鼻，一个彻底的伪君子：忠君却想着丽妃，忠义却带走了兄弟李由的老婆，忠孝却无能对吕公一家进行保护，任由赵高手下追杀，忠情却对<em></em>吕雉、吕素姐妹、小月等薄情寡义，惹下一堆感情纠纷，从现代去古代，怎么也说懂一些历史知识，考古博士的弟弟竟然是个历史白痴，一家人搞考古，搞研究，怎么一点常识也没有呢？历史不可能会被改变的。<br />如果两个现代人一起到古代，应该互相团结，互爱互助，坦诚以待，而那个小川同学只会暗地里徇私枉法，真的很搞笑，如果两个人稍微改变一下，估计高进也不会成为赵高，小川也不会成为蒙毅。<br />里面很多很搞，除了题材有点新颖（其实也不新，以前有过电影神话了），其他的一塌糊涂。<br />虽然很差，还是看完了，还是会引起一些甜蜜的回忆。<br />PS：看了一下冰河的博客，也很搞：http://tianchunbinghe.blog.163.com/<br />]]>
    </content>
</entry>

<entry>
    <title>呜呼，我的资料</title>
    <link rel="alternate" type="text/html" href="http://my.huhoo.net/archives/2010/01/post_46.html" />
    <id>tag:my.huhoo.net,2010:/study//1.896</id>

    <published>2010-01-13T04:02:31Z</published>
    <updated>2010-01-13T04:17:07Z</updated>

    <summary>今天丢了不少数据，呜呼，哀哉！事情是这样的，我的1.5T的移动硬盘划分了一个65...</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="fsck" label="fsck" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="lostfound" label="lost+found" scheme="http://www.sixapart.com/ns/types#tag" />
    
    <content type="html" xml:lang="zh-cn" xml:base="http://my.huhoo.net/study/">
        <![CDATA[今天丢了不少数据，呜呼，哀哉！<br />事情是这样的，我的1.5T的移动硬盘划分了一个650G的分区，分区的格式是ext4，在平时我都用着没有问题，已经用了350G大小的空间。<br />今天解压缩一个文件包，由于我机器的cpu并不是很强（虽然双核的），于是我把移动硬盘通过我的计算机挂在到服务器上，靠服务器的高性能cpu帮助我解压，这些都没有问题，问题在下面出现了。<br /><br />我不小心重启了我的机器，重启后发现我的解压失效了，于是我准备删除原来解压的内容，重新解压，发现删除不了原来解压的内容了，原来文件的属性都变成了&#8220;????&#8220;，显然文件节点发生错误，于是我使用了fsck工具来修复节点问题，在这儿是问题虽然是小问题，但是接着问题更大了。<br /><br />由于我的分区仍然是mount在我的计算机上的，所以fsck的警告我并没有太在意，只是觉得fsck怎么老修复不了，重复运行了几次，发现以普通用户身份运行就可以，但是我的分区格式是ext4的，而ext4修复老说不支持，于是我默认使用fsck的类型，发现修复之后，里面除了lost+found文件夹外，就没有什么东西了，可用空间变成了400G，而很多文件被移到了lost+found文件下，搜索我需要解压的文件，已经不存在了。<br /><br />只好重新从lost+found里面找到可以用的文件，然后删除不要的东东，<b>df -Th</b>看了一下医用空间150G。 -_- <br /><br />从这次经验中，总结一下经验：在使用磁盘工具时一定需要将已经挂载的分区卸载掉，特别系统使用了自动挂载功能的。<br /><br /> ]]>
        
    </content>
</entry>

<entry>
    <title>介绍一个好网站</title>
    <link rel="alternate" type="text/html" href="http://my.huhoo.net/archives/2009/12/post_45.html" />
    <id>tag:my.huhoo.net,2009:/study//1.893</id>

    <published>2009-12-25T07:18:25Z</published>
    <updated>2009-12-25T07:22:39Z</updated>

    <summary>http://en.literateprograms.org里面包含各种数据结构...</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="杂苑笔记" scheme="http://www.sixapart.com/ns/types#category" />
    
    <category term="base64" label="base64" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="bloomfilter" label="bloom filter" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="redblacktree" label="Red-black tree" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="uuencode" label="uuencode" scheme="http://www.sixapart.com/ns/types#tag" />
    
    <content type="html" xml:lang="zh-cn" xml:base="http://my.huhoo.net/study/">
        <![CDATA[http://en.literateprograms.org<br /><br />里面包含各种数据结构、算法、图形等实现，包含常见的红黑树、Bloom Filter、Base64、UUencode等等，里面东东也分别用了各种语言来去实现，很不错，有兴趣的可以收藏一下哟！<br /> ]]>
        
    </content>
</entry>

<entry>
    <title>关于stlchina.org的问题</title>
    <link rel="alternate" type="text/html" href="http://my.huhoo.net/archives/2009/12/stlchinaorg.html" />
    <id>tag:my.huhoo.net,2009:/study//1.892</id>

    <published>2009-12-24T03:20:24Z</published>
    <updated>2009-12-24T03:41:05Z</updated>

    <summary>stlchina.org早就进行了备案，但是没有反馈，一直处于备案中，为了方便大...</summary>
    <author>
        <name>Cnangel</name>
        <uri>http://my.huhoo.net/study</uri>
    </author>
    
        <category term="C/C++" scheme="http://www.sixapart.com/ns/types#category" />
    
        <category term="cnangel手记" scheme="http://www.sixapart.com/ns/types#category" />
    
    <category term="stlchina" label="stlchina" scheme="http://www.sixapart.com/ns/types#tag" />
    
    <content type="html" xml:lang="zh-cn" xml:base="http://my.huhoo.net/study/">
        <![CDATA[stlchina.org早就进行了备案，但是没有反馈，一直处于备案中，为了方便大家，开通了有备案域名的临时访问。<br /><br />http://stlchina.huhoo.net/<br /><br />欢迎大家访问。<br /><br /> ]]>
        
    </content>
</entry>

<entry>
    <title>Linux应用心得（三）</title>
    <link rel="alternate" type="text/html" href="http://my.huhoo.net/archives/2009/12/linux_3.html" />
    <id>tag:my.huhoo.net,2009:/study//1.891</id>

    <published>2009-12-08T10:52:54Z</published>
    <updated>2010-03-05T02:46:16Z</updated>

    <summary>    写这篇文章是为了方便自己，也同时为了方便他人。     目前的开源软件盛...</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="eclipse" label="eclipse" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="freemind" label="freemind" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="gnome" label="gnome" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="linux" label="Linux" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="linux应用心得" label="Linux应用心得" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="php" label="php" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="setcookie" label="setcookie" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="ulimit" label="ulimit" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="vsftpd" label="vsftpd" scheme="http://www.sixapart.com/ns/types#tag" />
    
    <content type="html" xml:lang="zh-cn" xml:base="http://my.huhoo.net/study/">
        <![CDATA[<p>    写这篇文章是为了方便自己，也同时为了方便他人。</p>

<p>    目前的开源软件盛行，很多的README文档都是以英文的形式出现，很多懒人不愿意去读此类的文章，所以遇到问题也不会知道怎么去解决。<br />
    <br />
    Linux应用心得已经在《My Study》中发布了二期，虽然以FAQ形式的出现，但是由于Linux应用的突飞猛进，很多的问答已经变得很苍白，但是我希望还是能够体现Linux中一种自由、开放的精神，让更多的人得到帮助。<br />
    如果你对太多的<b>A、Q</b> 不知所措，可以<font color="red">Ctrl+F</font>查找你所需要的问题。</p>]]>
        <![CDATA[<p><b>Q00105:</b><br />
在Linux平台上，大量出现"too many open files"的error信息，如何解决？<br />
<u>A00105:</u><br />
这个错误产生的原因是操作系统对同时能打开的文件句柄数量有限制，使用"ulimit -a"命令可以查看限制的大小，默认为1024。<br />
<blockquote>$ ulimit -a<br />
open files                      (-n) 1024</blockquote><br />
解决办法如下：<br />
（1）修改<b><u>/etc/security/limits.conf</u></b><br />
在最底下增加一行<br />
<blockquote>*                -       nofile          65535</blockquote><br />
（2）修改<b><u>/etc/pam.d/login</u></b><br />
在最底下增加一行<br />
<blockquote>session    required /lib/security/pam_limits.so</blockquote><br />
（3）使用命令logout登出后再login，使用命令ulimit -a看看open files是不是改变了。</p>

<p><br />
<b>Q00106:</b><br />
在使用PHP中Cookie的过程里，发现如论如何也不能使用setcookie这个函数，返回值一直为0，为什么setcookie函数会失效呢？<br />
<u>A00106:</u><br />
往往神秘的现象背后都是有产生神秘现象的条件，这个也不例外。<br />
经过调试可以发现，单条session的cookie可以正常运转，但是一旦集成，则失效，检查php的配置文件php.ini文件，发现这个文件根本不存在。于是从php源代码中将php.ini-recommended拷贝到配置路径下为php.ini，发现一切正常，神秘现象消失。</p>

<p><br />
<b>Q00107:</b><br />
在gnome的环境中，eclipse按钮无法响应，怎么解决？<br />
<u>A00107:</u><br />
这是由于gtk的问题，在<br />
/usr/bin/eclipse启动脚本中<br />
加入<br />
<blockquote>export GDK_NATIVE_WINDOWS=1</blockquote></p>

<p><br />
<b>Q00108:</b><br />
如何解决 Freemind 中文字体乱码？<br />
<u>A00108:</u><br />
由于 Freemind 要应用到 Java 运行时环境，显示中文字体乱码是由于 JRE 的字体造成的，所以更改 JRE 的字体即可。<br />
找一个可用于中文显示的字体。比如： wqy 字体，我这里采用正黑。<br />
确认字体已经安装于系统。我的系统增黑字体安装于：<br />
<blockquote>/usr/share/fonts/truetype/wqy/wqy-zenhei.ttc</blockquote><br />
找到 JRE 的字体目录，位于：<br />
<blockquote>/usr/lib/jvm/java-6-sun/jre/lib/fonts</blockquote><br />
如果没有，则创建该字体目录：<br />
<blockquote>$ cd /usr/lib/jvm/java-6-sun/jre/lib/fonts/<br />
$ mkdir fallback<br />
$ ln -s /usr/share/fonts/truetype/wqy/wqy-zenhei.ttc wqy-zenhei.ttc<br />
$ mkfontdir<br />
$ mkfontscale<br />
$ fc-cache<br />
</blockquote><br />
末了，重启 Freemind 即可。 </p>

<p><br />
<b>Q00109:</b><br />
在Eclipse中编写Java代码时，用到了BASE64Decoder，import sun.misc.BASE64Decoder;可是Eclipse提示：<blockquote><br />
Access restriction : The type BASE64Decoder is not accessible due to restriction on required library /usr/java/default/jre/lib/rt.jar<br />
Access restriction : The constructor BASE64Decoder() is not accessible due to restriction on required library /usr/java/default/jre/lib/rt.jar</blockquote><br />
搞不懂是为什么？<br />
<u>A00109:</u><br />
解决方案如下：<br />
只需要在project build path中先移除JRE System Library，再添加库JRE System Library，重新编译后就一切正常了。</p>

<p><br />
<b>Q00110:</b><br />
在RHEL 5.2中，使用vsftpd，如何根据防火墙设置了被动模式？使用了pam验证，发现输入了用户名称和密码怎么也通不过其验证，这个是怎么回事呢？<br />
<u>A00110:</u><br />
首先，我们需要检查vsftpd安装的正确性，一般rpm或yum安装都无特殊问题，但是如果是编译安装，则需要注意源码中 <b>(1)配置文件的路径</b>：<br />
<blockquote>defs.h:#define VSFTP_DEFAULT_CONFIG    "/etc/vsftpd/vsftpd.conf"</blockquote><br />
<b>(2)安装的位置</b>，默认为/usr/local/sbin，很容易造成使用原先的vsftpd问题。<br />
<b>(3)lib64的问题</b>，如果使用x86_64位系统，还需要注意脚本vsf_findlibs.sh找到lib的位置信息。<br />
<b>(4)libpam的问题</b>，一般密码验证有问题都会出现在这，使用：<br />
<blockquote><br />
$ ldd vsftpd<br />
	libpam.so.0 => /lib64/libpam.so.0 (0x00002aba248b0000)<br />
	libdl.so.2 => /lib64/libdl.so.2 (0x0000003794600000)<br />
	libnsl.so.1 => /lib64/libnsl.so.1 (0x0000003797600000)<br />
	libresolv.so.2 => /lib64/libresolv.so.2 (0x000000379a600000)<br />
	libcap.so.1 => /lib64/libcap.so.1 (0x0000003798200000)<br />
	libc.so.6 => /lib64/libc.so.6 (0x0000003794200000)<br />
	/lib64/ld-linux-x86-64.so.2 (0x0000003793e00000)</blockquote><br />
看libpam.so.0是否存在，如果不存在的话（一般RHEL5），需要重新安装<a href="http://www.kernel.org/pub/linux/libs/pam/">pam</a>库，才能将pam库链接编译到vsftpd中去。<br />
接着，配置vsftpd.conf，整个vsftpd.conf如下所示：<blockquote><br />
anonymous_enable=NO<br />
local_enable=YES<br />
write_enable=YES<br />
dirmessage_enable=YES<br />
xferlog_enable=YES<br />
connect_from_port_20=YES<br />
listen=YES<br />
listen_port=21<br />
guest_enable=YES<br />
guest_username=vuser<br />
pam_service_name=vsftpd<br />
userlist_enable=YES<br />
userlist_file=/etc/vsftpd/vsftpd.user_list<br />
user_config_dir=/etc/vsftpd/vsftpd_user_conf<br />
pasv_enable=YES<br />
pasv_address=xxx.yyy.zzz.nnn<br />
pasv_min_port=62007<br />
pasv_max_port=62009<br />
virtual_use_local_privs=YES<br />
tcp_wrappers=YES<br />
</blockquote><br />
根据配置文件，需要<b>(1)增加虚拟用户</b>：<br />
<blockquote>$ useradd vuser -s /sbin/nologin</blockquote><br />
<b>（2）设置虚拟用户中ftp用户</b>，这里使用Berkeley DB的工具来生成用户名和密码如下：<br />
<blockquote>db_load -T -t hash -f ftpusers /etc/vsftpd/vsftpd_login.db</blockquote><br />
其中ftpusers为文本，内容大概形式如下：<br />
<blockquote>$ cat ftpusers<br />
user1<br />
password1<br />
user2<br />
password2<br />
cnangel<br />
cnangel<br />
...<br />
</blockquote><br />
<b>（3）设置用户登录路径</b>：<blockquote><br />
$ cat /etc/vsftpd/vsftpd.user_list/cnangel<br />
local_root=/home/vuser/cnangel<br />
write_enable=YES<br />
local_umask=022<br />
chmod_enable=YES<br />
anon_world_readable_only=NO<br />
anon_upload_enable=YES<br />
anon_mkdir_write_enable=YES<br />
anon_other_write_enable=YES<br />
ascii_upload_enable=YES<br />
ascii_download_enable=YES<br />
</blockquote><br />
最后在/etc/pam.d增加验证配置文件vsftpd（/etc/pam.d/vsftpd），内容如下：<blockquote><br />
auth		required	/lib/security/pam_userdb.so	db=/etc/vsftpd/vsftpd_login<br />
account		required	/lib/security/pam_userdb.so	db=/etc/vsftpd/vsftpd_login</blockquote><br />
如果使用x86_64位系统，还需要注意库文件pam_userdb.so的路径问题。<br />
<b>（4）最后连接ftp进行测试</b>：<blockquote><br />
[cnangel@cadev12 ~]$lftp 10.19.86.8 -u cnangel<br />
口令: <br />
lftp cnangel@10.19.86.8:~> debug     <br />
lftp cnangel@10.19.86.8:~> set ftp:passive-mode on<br />
lftp cnangel@10.19.86.8:~> ls<br />
---- 正在连接到 10.19.86.8 (10.19.86.8) 端口 21<br />
<--- 220 Welcome to Cnangel FTP service.<br />
---> FEAT<br />
<--- 211-Features:<br />
<---  EPRT<br />
<---  EPSV<br />
<---  MDTM<br />
<---  PASV<br />
<---  REST STREAM<br />
<---  SIZE<br />
<---  TVFS<br />
<---  UTF8<br />
<--- 211 End<br />
---> OPTS UTF8 ON<br />
<--- 200 Always in UTF8 mode.<br />
---> USER cnangel<br />
<--- 331 Please specify the password.<br />
---> PASS XXXX<br />
<--- 230 Login successful.         <br />
---> PWD<br />
<--- 257 "/"<br />
---> PASV<br />
<--- 227 Entering Passive Mode (10,19,86,144,194,197).<br />
---- 正在建立数据连接到 (10.19.86.8) 端口 49861<br />
---> LIST<br />
<--- 150 Here comes the directory listing.<br />
<--- 226 Directory send OK.<br />
---- 关闭数据连接<br />
-rw-r--r--    1 cnangel      users             0 Dec 14 04:46 aa<br />
-rw-r--r--    1 cnangel      users        255251 Dec 14 04:45 king02.pdf<br />
lftp cnangel@10.19.86.8:/> exit<br />
---> QUIT<br />
---- 关闭控制连接<br />
[cnangel@cadev12 ~]$</blockquote><br />
看看是否还有问题。</p>

<p><br />
<b>Q00111:</b><br />
自己编译svn上传代码是报这样的错误：<blockquote><br />
svn: SSL is not supported</blockquote><br />
如何让让svn支持ssl？<br />
<u>A00111:</u><br />
subversion对https链接的支持集成在neon这个组件中。可以下载了一个最新版的neon，用下面的指令编译<br />
<blockquote><br />
./configure --with-ssl -with-zlib --enable-shared --enable-static --prefix=/usr<br />
</blockquote><br />
这样加入ssl的支持，可以使用neon-config程序来确认编译成功：<blockquote><br />
[cnangel@localhost ~]$neon-config --libs<br />
-lneon -lz -L/usr/kerberos/lib -L/usr/kerberos/lib64 -lssl -lcrypto -lgssapi_krb5 -lkrb5 -lcom_err -lk5crypto -lresolv -ldl -lz -lgssapi_krb5 -lkrb5 -lk5crypto -lcom_err -lresolv -lexpat</blockquote></p>

<p></p>

<p><b>Q00112:</b><br />
如何在shell中将汉字urlencode化？<br />
<u>A00112:</u><br />
这里有很多种解决办法：<br />
（1）调用perl<br />
<blockquote>echo -n "中国" | perl -MURI::Escape -e "print uri_escape(<>);"</blockquote><br />
（2）调用php<br />
<blockquote>php -r "echo rawurlencode('$(sed "s/'/\\\\'/g" <<< "中国")');"</blockquote><br />
（3）其它<br />
<blockquote>echo -n "中国"|od -An -tx1|tr ' ' %</blockquote><br />
上面三种结果都是%e4%b8%ad%e5%9b%bd。</p>

<p><br />
<b>Q00113:</b><br />
在链接libmysqlclient的时候，发现出现如下错误：<br />
<blockquote>/usr/lib64/mysql/libz.a(adler32.o)(.text+0x0): In function `adler32':<br />
/export/home/my/tmp-200903301116-5.1.34-19266/rpm/BUILD/mysql-5.1.34/zlib/adler32.c:66: multiple definition of `adler32'<br />
/usr/lib64/mysql/libmysqlclient.a(adler32.o)(.text+0x0):/export/home/my/tmp-200903301116-5.1.34-19266/rpm/BUILD/mysql-5.1.34/zlib/adler32.c:66: first defined here<br />
/usr/lib64/mysql/libz.a(adler32.o)(.text+0x340): In function `adler32_combine':<br />
/export/home/my/tmp-200903301116-5.1.34-19266/rpm/BUILD/mysql-5.1.34/zlib/adler32.c:138: multiple definition of `adler32_combine'<br />
/usr/lib64/mysql/libmysqlclient.a(adler32.o)(.text+0x340):/export/home/my/tmp-200903301116-5.1.34-19266/rpm/BUILD/mysql-5.1.34/zlib/adler32.c:138: first defined here<br />
/usr/lib64/mysql/libz.a(compress.o)(.text+0x0): In function `compress2':<br />
/export/home/my/tmp-200903301116-5.1.34-19266/rpm/BUILD/mysql-5.1.34/zlib/compress.c:28: multiple definition of `compress2'<br />
/usr/lib64/mysql/libmysqlclient.a(compress.o)(.text+0x0):/export/home/my/tmp-200903301116-5.1.34-19266/rpm/BUILD/mysql-5.1.34/zlib/compress.c:28: first defined here<br />
/usr/lib64/mysql/libz.a(compress.o)(.text+0xf0): In function `compress':<br />
/export/home/my/tmp-200903301116-5.1.34-19266/rpm/BUILD/mysql-5.1.34/zlib/compress.c:68: multiple definition of `compress'<br />
/usr/lib64/mysql/libmysqlclient.a(compress.o)(.text+0xf0):/export/home/my/tmp-200903301116-5.1.34-19266/rpm/BUILD/mysql-5.1.34/zlib/compress.c:68: first defined here<br />
...<br />
</blockquote><br />
该如何解决？<br />
<u>A00113:</u><br />
从libmysqlclient.a中删除所有有问题的.o文件即可：<br />
# cp -p /usr/lib/mysql/libmysqlclient.a /usr/lib/mysql/libmysqlclient.a.orig<br />
# ar d /usr/lib/mysql/libmysqlclient.a adler32.o compress.o crc32.o deflate.o gzio.o infback.o inffast.o inflate.o inftrees.o trees.o uncompr.o zutil.o<br />
原文见：<a href="http://www.root0.net/php/index.html#Some_problems">http://www.root0.net/php/index.html#Some_problems</a></p>

<p><br />
</p>]]>
    </content>
</entry>

<entry>
    <title>关于DES加解密揭秘</title>
    <link rel="alternate" type="text/html" href="http://my.huhoo.net/archives/2009/12/des.html" />
    <id>tag:my.huhoo.net,2009:/study//1.890</id>

    <published>2009-12-05T15:01:45Z</published>
    <updated>2009-12-05T15:05:47Z</updated>

    <summary><![CDATA[&nbsp;&nbsp;&nbsp; 最近一个项目用到DES，这里顺便介绍一下它...]]></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="我和Perl" scheme="http://www.sixapart.com/ns/types#category" />
    
        <category term="电脑技巧" scheme="http://www.sixapart.com/ns/types#category" />
    
    <category term="aes" label="AES" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="des" label="DES" scheme="http://www.sixapart.com/ns/types#tag" />
    
    <content type="html" xml:lang="zh-cn" xml:base="http://my.huhoo.net/study/">
        <![CDATA[<p>&nbsp;&nbsp;&nbsp; 最近一个项目用到DES，这里顺便介绍一下它：<br />&nbsp;&nbsp;&nbsp; 数据加密标准（DES）是一个古老的对称密钥加密算法，它不是一个很安全的算法。三重DES（Triple-DES）仍然是很安全的，但是也只是在别无他法的情况下的一个较好的选择。高级加密标准（AES）是一个更好的加密算法，NIST用AES代替Triple-DES作为他们的标准。高级加密标准（AES）是一个用来代替数据加密标准（DES）的算法。目前使用的一般为128,196和256位密钥，这三种密钥都是相当安全的。而且美国政府也是这样认为的。他们批准将128位密钥的AES算法用于一般数据加密，196位和256位密钥的AES算法用于秘密数据和绝密数据的加密。DESX是DES的一个改进版本。DESX的原理是利用一个随机的二进制数与加密前的数据以及解密后的数据异或。虽然也有人批评这种算法，但是与DES相比DESX确实更安全，不过DESX在许多情况下并不适用。有点扯远了 ：） </p>]]>
        <![CDATA[<p>这里有这样一个需求，使用perl语言使用DES加密一个文件，并用java语言进行解密，这里查了网络上很多资料，没有一个很好的例子或者帮助信息，同样是DES，但是会影响加密和解密的结果。有两个因素可能影响加密结果：<br />
一是使用的填充方式,可以指定一些标准的填充模式，比如PKCS5；二是工作模式，如：ECB、CBC、OFB、CTR<br />
perl加密一个文件：<br />
</p><blockquote><br />
#!/usr/bin/perl

<p>use strict;<br />
use warnings;<br />
use Data::Dumper;<br />
use Crypt::CBC;<br />
die "Need to specify a file" if(!(my $infile = shift));<br />
my $key = (12345678);<br />
my $iv = q(01234567);<br />
my $bufsize = 16384;<br />
my $cipher = Crypt::CBC-&gt;new({<br />
		'key' =&gt; $key,<br />
		'iv' =&gt; $iv,<br />
		'header' =&gt; 'none',<br />
		'cipher' =&gt; 'DES',<br />
		'literal_key' =&gt; '1',<br />
		});<br />
open (FORIG,"$infile")|| die "can't open file: $!";<br />
open (FCRYPT,"&gt;$infile.crypt")|| die "can't open file: $!";<br />
$cipher-&gt;start('encrypting');<br />
while(my $readsize = sysread(FORIG, my $buf, $bufsize)) {<br />
	print FCRYPT $cipher-&gt;crypt($buf);<br />
}<br />
print FCRYPT $cipher-&gt;finish();<br />
close FCRYPT;<br />
close FORIG;<br />
</p></blockquote><br />
此是将一个文件用DES方式加密，值得注意的是literal_key表示不要用md5的哈希键；对应的java解密版本如下：<br />
<blockquote><br />
import java.io.FileInputStream;<br />
import java.io.FileOutputStream;<br />
import java.io.InputStream;<br />
import java.io.OutputStream;<br />
import java.security.InvalidAlgorithmParameterException;<br />
import java.security.InvalidKeyException;<br />
import java.security.NoSuchAlgorithmException;<br />
import java.security.spec.InvalidKeySpecException;

<p>import javax.crypto.Cipher;<br />
import javax.crypto.CipherOutputStream;<br />
import javax.crypto.NoSuchPaddingException;<br />
import javax.crypto.SecretKey;<br />
import javax.crypto.SecretKeyFactory;<br />
import javax.crypto.spec.DESKeySpec;<br />
import javax.crypto.spec.IvParameterSpec;</p>

<p>public class DES {</p>

<p>	Cipher ecipher;<br />
	Cipher dcipher;<br />
	byte[] buf = new byte[1024];</p>

<p>	public DES() {<br />
		String strKey = "12345678";<br />
		byte[] keyBytes = null;<br />
		try {<br />
			keyBytes = strKey.getBytes("UTF-8");<br />
		} catch (java.io.UnsupportedEncodingException ex) {<br />
			ex.printStackTrace();<br />
		}<br />
		byte[] iv = "01234567".getBytes();<br />
		IvParameterSpec ivSpec = new IvParameterSpec(iv);<br />
		try {<br />
			ecipher = Cipher.getInstance("DES/CBC/PKCS5Padding");<br />
			dcipher = Cipher.getInstance("DES/CBC/PKCS5Padding");<br />
		} catch (NoSuchAlgorithmException e) {<br />
			e.printStackTrace();<br />
		} catch (NoSuchPaddingException e) {<br />
			e.printStackTrace();<br />
		}<br />
		try {<br />
			DESKeySpec dks = new DESKeySpec(keyBytes);<br />
			SecretKeyFactory keyFactory = SecretKeyFactory.getInstance("DES");<br />
			SecretKey securekey = keyFactory.generateSecret(dks);<br />
			<br />
			ecipher.init(Cipher.ENCRYPT_MODE, securekey, ivSpec);<br />
			dcipher.init(Cipher.DECRYPT_MODE, securekey, ivSpec);<br />
		} catch (InvalidKeyException e1) {<br />
			e1.printStackTrace();<br />
		} catch (InvalidAlgorithmParameterException e1) {<br />
			e1.printStackTrace();<br />
		} catch (NoSuchAlgorithmException e) {<br />
			e.printStackTrace();<br />
		} catch (InvalidKeySpecException e) {<br />
			e.printStackTrace();<br />
		}<br />
	}</p>

<p>	public void encrypt(InputStream in, OutputStream out) {<br />
		try {<br />
			out = new CipherOutputStream(out, ecipher);<br />
			int numRead = 0;<br />
			while ((numRead = in.read(buf)) &gt;= 0) {<br />
				out.write(buf, 0, numRead);<br />
			}<br />
			out.close();<br />
		} catch (java.io.IOException e) {<br />
			e.printStackTrace();<br />
		}<br />
	}<br />
	<br />
	public byte[] encrptyStr(byte[] bIn) {<br />
		try {<br />
			return ecipher.doFinal(bIn);<br />
		}catch (Exception e) {<br />
			e.printStackTrace();<br />
		}<br />
		return new byte[]{};<br />
	}</p>

<p>	public void decrypt(InputStream in, OutputStream out) {<br />
		try {<br />
			out = new CipherOutputStream(out, dcipher);<br />
			int numRead = 0;<br />
			while ((numRead = in.read(buf)) &gt;= 0) {<br />
				out.write(buf, 0, numRead);<br />
			}<br />
			out.close();<br />
		} catch (java.io.IOException e) {<br />
			e.printStackTrace();<br />
		}<br />
	}</p>

<p>	public byte[] decrptyStr(byte[] bIn) {<br />
		try {<br />
			return dcipher.doFinal(bIn);<br />
		}catch (Exception e) {<br />
			e.printStackTrace();<br />
		}<br />
		return new byte[]{};<br />
	}	<br />
	<br />
	public static void main(String args[]) throws Exception {<br />
		if (args.length != 1) {<br />
			System.out.println("Usage: java AESEncrypter filename");<br />
			System.exit(0);<br />
		}</p>

<p>		DES encrypter = new DES();<br />
		try {<br />
			encrypter.decrypt(new FileInputStream(args[0]),<br />
					new FileOutputStream("Java_decrypted.txt"));<br />
		} catch (java.io.FileNotFoundException ex) {<br />
			ex.printStackTrace();<br />
		}<br />
	}</p>

<p>}<br />
</p></blockquote><br />
值得注意的是perl中的key和java中的strKey变量，这里由于java的Cipher包的限制，只能使用8位的key，如果能够使用长度更长的key，则可能需要自己根据DES的算法或者等待更高的java版本。<br />
如果是加解密字符串，perl加密代码如下：<br />
<blockquote><br />
#!/usr/bin/perl

<p>use strict;<br />
use warnings;<br />
use Crypt::CBC;<br />
die "Need a string!" if (@ARGV == 0);<br />
my $key = q(12345678);<br />
my $iv = q(01234567);<br />
my $cipher = Crypt::CBC-&gt;new({<br />
		'key' =&gt; $key,<br />
		'header' =&gt; 'none',<br />
		'iv' =&gt; $iv,<br />
		'cipher' =&gt; 'DES',<br />
		'keysize' =&gt; '8', #forced - default is 32 bytes<br />
		'padding' =&gt; 'standard', #PKCS5<br />
		'blocksize' =&gt; '8',<br />
		'literal_key' =&gt; '1', #do not MD5 hash key<br />
		});<br />
print $cipher-&gt;encrypt_hex($ARGV[0]) . "\n";<br />
</p></blockquote><br />
java字串解密如下：<br />
<blockquote><br />
import java.io.InputStream;<br />
import java.io.OutputStream;<br />
import java.security.InvalidAlgorithmParameterException;<br />
import java.security.InvalidKeyException;<br />
import java.security.NoSuchAlgorithmException;<br />
import java.security.SecureRandom;<br />
import java.security.spec.InvalidKeySpecException;

<p>import javax.crypto.Cipher;<br />
import javax.crypto.CipherOutputStream;<br />
import javax.crypto.KeyGenerator;<br />
import javax.crypto.NoSuchPaddingException;<br />
import javax.crypto.SecretKey;<br />
import javax.crypto.SecretKeyFactory;<br />
import javax.crypto.spec.DESKeySpec;<br />
import javax.crypto.spec.IvParameterSpec;</p>

<p>public class DESSTR {</p>

<p>	Cipher ecipher;<br />
	Cipher dcipher;<br />
	byte[] buf = new byte[1024];</p>

<p>	public DESSTR() {<br />
		String strKey = "12345678";<br />
		byte[] keyBytes = null;<br />
		try {<br />
			keyBytes = strKey.getBytes("UTF-8");<br />
		} catch (java.io.UnsupportedEncodingException ex) {<br />
			ex.printStackTrace();<br />
		}<br />
		byte[] iv = "01234567".getBytes();<br />
		IvParameterSpec ivSpec = new IvParameterSpec(iv);<br />
		try {<br />
			ecipher = Cipher.getInstance("DES/CBC/PKCS5Padding");<br />
			dcipher = Cipher.getInstance("DES/CBC/PKCS5Padding");<br />
		} catch (NoSuchAlgorithmException e) {<br />
			e.printStackTrace();<br />
		} catch (NoSuchPaddingException e) {<br />
			e.printStackTrace();<br />
		}<br />
		try {<br />
			DESKeySpec dks = new DESKeySpec(keyBytes);<br />
			SecretKeyFactory keyFactory = SecretKeyFactory.getInstance("DES");<br />
			SecretKey securekey = keyFactory.generateSecret(dks);<br />
			ecipher.init(Cipher.ENCRYPT_MODE, securekey, ivSpec);<br />
			dcipher.init(Cipher.DECRYPT_MODE, securekey, ivSpec);<br />
		} catch (InvalidKeyException e1) {<br />
			e1.printStackTrace();<br />
		} catch (InvalidAlgorithmParameterException e1) {<br />
			e1.printStackTrace();<br />
		} catch (NoSuchAlgorithmException e) {<br />
			e.printStackTrace();<br />
		} catch (InvalidKeySpecException e) {<br />
			e.printStackTrace();<br />
		}<br />
	}</p>

<p>	public void encrypt(InputStream in, OutputStream out) {<br />
		try {<br />
			out = new CipherOutputStream(out, ecipher);<br />
			int numRead = 0;<br />
			while ((numRead = in.read(buf)) &gt;= 0) {<br />
				out.write(buf, 0, numRead);<br />
			}<br />
			out.close();<br />
		} catch (java.io.IOException e) {<br />
			e.printStackTrace();<br />
		}<br />
	}<br />
	<br />
	public byte[] encrptyStr(byte[] bIn) {<br />
		try {<br />
			return ecipher.doFinal(bIn);<br />
		}catch (Exception e) {<br />
			e.printStackTrace();<br />
		}<br />
		return new byte[]{};<br />
	}</p>

<p>	public void decrypt(InputStream in, OutputStream out) {<br />
		try {<br />
			out = new CipherOutputStream(out, dcipher);<br />
			int numRead = 0;<br />
			while ((numRead = in.read(buf)) &gt;= 0) {<br />
				out.write(buf, 0, numRead);<br />
			}<br />
			out.close();<br />
		} catch (java.io.IOException e) {<br />
			e.printStackTrace();<br />
		}<br />
	}</p>

<p>	public byte[] decrptyStr(byte[] bIn) {<br />
		try {<br />
			return dcipher.doFinal(bIn);<br />
		}catch (Exception e) {<br />
			e.printStackTrace();<br />
		}<br />
		return new byte[]{};<br />
	}<br />
	<br />
	public static String byte2hex(byte[] b) {<br />
		String hs = "";<br />
		String stmp = "";<br />
		for (int n = 0; n &lt; b.length; n++) {<br />
			stmp = (Integer.toHexString(b[n] &amp; 0XFF));<br />
			if (stmp.length() == 1)<br />
				hs = hs + "0" + stmp;<br />
			else<br />
				hs = hs + stmp;<br />
		}<br />
		return hs.toUpperCase();<br />
	}</p>

<p>	public static byte[] hex2byte(byte[] b) {<br />
		if ((b.length % 2) != 0)<br />
			throw new IllegalArgumentException("Length is not even");<br />
		byte[] b2 = new byte[b.length / 2];<br />
		for (int n = 0; n &lt; b.length; n += 2) {<br />
			String item = new String(b, n, 2);<br />
			b2[n / 2] = (byte) Integer.parseInt(item, 16);<br />
		}<br />
		return b2;<br />
	}<br />
	<br />
	public static String byte2String(byte[] b) {<br />
		String hs = "";<br />
		String stmp = "";<br />
		for (int n = 0; n &lt; b.length; n++) {<br />
			stmp = (Integer.toHexString(b[n] &amp; 0XFF));<br />
			hs += Character.valueOf((char)Integer.parseInt(stmp, 16)).toString();<br />
		}<br />
		return hs;<br />
	}<br />
	<br />
	public static void main(String args[]) throws Exception {<br />
		if (args.length == 0) {<br />
			System.err.println("Need a string!");<br />
			System.exit(1);<br />
		}<br />
		DESSTR encrypter = new DESSTR();<br />
		byte[] in = hex2byte(args[0].getBytes("UTF-8"));<br />
		byte[] out = encrypter.decrptyStr(in);<br />
		System.out.println(new String(out));	<br />
	}<br />
}<br />
</p></blockquote><br />
同样注意一下key的关系。<br />
在这里可以下载上述的代码<br /><a href="http://my.huhoo.net/archives/upload/des_aes.tar.bz2">des_aes.tar.bz2</a><br /><a href="http://my.huhoo.net/archives/upload/des_aes.tar.gz">des_aes.tar.gz</a><br />包括AES算法的用例。<div><br /></div><div><br /></div>]]>
    </content>
</entry>

<entry>
    <title>MT5.0即将发布</title>
    <link rel="alternate" type="text/html" href="http://my.huhoo.net/archives/2009/11/mt50.html" />
    <id>tag:my.huhoo.net,2009:/study//1.889</id>

    <published>2009-11-30T02:38:52Z</published>
    <updated>2009-12-13T02:38:35Z</updated>

    <summary>日文版的MT已经在11月26日发布，英文版本的MT大概在12月8号左右发布，MT...</summary>
    <author>
        <name>Cnangel</name>
        <uri>http://my.huhoo.net/study</uri>
    </author>
    
        <category term="我和Perl" scheme="http://www.sixapart.com/ns/types#category" />
    
    <category term="mt" label="MT" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="mt5" label="MT5" scheme="http://www.sixapart.com/ns/types#tag" />
    
    <content type="html" xml:lang="zh-cn" xml:base="http://my.huhoo.net/study/">
        <![CDATA[<p>日文版的MT已经在11月26日发布，英文版本的MT大概在12月8号左右发布，MT的fans应该很期待MT5的表现，究竟能给freelance带来什么震撼呢?敬请期待。<br /></p>

<p>PS：MT5.0又推迟了，目前定义在2010年1月5日发布。<br />
</p>]]>
        
    </content>
</entry>

</feed>
