<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>Xupeng&#39;s blog</title>
    <link>https://blog.xupeng.me/</link>
    <description>Recent content on Xupeng&#39;s blog</description>
    <generator>Hugo</generator>
    <language>zh</language>
    <lastBuildDate>Fri, 28 Nov 2025 00:00:00 +0800</lastBuildDate>
    <atom:link href="https://blog.xupeng.me/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>人类只是在放电</title>
      <link>https://blog.xupeng.me/2025/11/28/humans-are-just-signals/</link>
      <pubDate>Fri, 28 Nov 2025 00:00:00 +0800</pubDate>
      <guid>https://blog.xupeng.me/2025/11/28/humans-are-just-signals/</guid>
      <description>&lt;p&gt;&lt;a href=&#34;https://blog.xupeng.me/downloads/2025/11/humans-are-just-signals/humans-are-just-signals-01-original.png&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;&lt;img src=&#34;https://blog.xupeng.me/downloads/2025/11/humans-are-just-signals/humans-are-just-signals-01.webp&#34; alt=&#34;Gemini_Generated_Image_vrhqstvrhqstvrhq.png&#34;&gt;&lt;/a&gt;&lt;/p&gt;&#xA;&lt;p&gt;树是地球的树突，阳光是太阳发出的神经递质。&lt;/p&gt;&#xA;&lt;p&gt;太阳和地球都是神经元。太阳发出阳光，地球用树来接。&lt;/p&gt;&#xA;&lt;p&gt;神经元不知道自己是神经元。它只是接收信号、传递信号，它不需要「知道」这件事就能完成任务。&lt;/p&gt;</description>
    </item>
    <item>
      <title>在付费自习室元年的年末，我去体验了一下</title>
      <link>https://blog.xupeng.me/2019/12/30/paid-study-rooms/</link>
      <pubDate>Mon, 30 Dec 2019 19:46:04 +0800</pubDate>
      <guid>https://blog.xupeng.me/2019/12/30/paid-study-rooms/</guid>
      <description>&lt;p&gt;住处附近是咖啡馆荒漠，星巴克早已不是能长时间待着的&amp;quot;第三空间&amp;quot;，漫咖啡常常人满为患人声鼎沸，需要天时地利和运气来找到一个位置，独立咖啡馆要么面积很小霸占一个座位就霸占了百分之好几十的空间，要么周末干脆不营业，找一个能专注读会儿书、用电脑处理点事情或者放空一下的地方很不容易。&lt;/p&gt;&#xA;&lt;p&gt;就在前几天，2019 年进度条剩下 1% 的时候，我才知道 2019 年是&amp;quot;中国付费自习室元年&amp;quot;，才发现原来还有这种神奇的地方，在元年的最后一个周末，我去体验了一下。&lt;/p&gt;</description>
    </item>
    <item>
      <title>那些年我的房东们</title>
      <link>https://blog.xupeng.me/2018/09/07/my-landlords/</link>
      <pubDate>Fri, 07 Sep 2018 18:59:03 +0800</pubDate>
      <guid>https://blog.xupeng.me/2018/09/07/my-landlords/</guid>
      <description>&lt;p&gt;总共租过四次房子，第一次租房就被一个跟&amp;quot;诚信&amp;quot;倒着来，名字叫&amp;quot;信诚&amp;quot;的中介坑了，诚惶诚恐倍加爱惜，退房的时候还是被硬生生扣了几百块钱，理由是：厨房里有油。&lt;/p&gt;&#xA;&lt;p&gt;自那之后，我就没再跟中介租过房子了，遇到了几位有意思的房东。&lt;/p&gt;</description>
    </item>
    <item>
      <title>团结紧张，严肃活泼</title>
      <link>https://blog.xupeng.me/2016/03/06/jokes-ease-life/</link>
      <pubDate>Sun, 06 Mar 2016 21:22:00 +0800</pubDate>
      <guid>https://blog.xupeng.me/2016/03/06/jokes-ease-life/</guid>
      <description>&lt;img src=&#34;https://blog.xupeng.me/downloads/jokes-ease-life/798-1.jpg&#34;&gt;</description>
    </item>
    <item>
      <title>最容易被忽视的，是常识</title>
      <link>https://blog.xupeng.me/2016/02/27/neglected-common-sense/</link>
      <pubDate>Sat, 27 Feb 2016 13:40:00 +0800</pubDate>
      <guid>https://blog.xupeng.me/2016/02/27/neglected-common-sense/</guid>
      <description>&lt;p&gt;同事最近在拆分数据库和清理数据，这当中有一些趣事，比如在拆分一个叫 luz 的集群时，新拆出的集群被命名为了 lua，可以从至少两个角度来理解这个名字，最显而易见的它是一门语言，除此之外它还代表从 z 到 a 的新一轮轮回；再比如拆分另一个叫 eag 的集群时，新集群被命名为 eager，不过它诞生时的含义其实是「eag 的 er 砸」。&lt;/p&gt;</description>
    </item>
    <item>
      <title>MySQL &#34;replace into&#34; 的坑</title>
      <link>https://blog.xupeng.me/2013/10/11/mysql-replace-into-trap/</link>
      <pubDate>Fri, 11 Oct 2013 07:23:00 +0800</pubDate>
      <guid>https://blog.xupeng.me/2013/10/11/mysql-replace-into-trap/</guid>
      <description>&lt;p&gt;MySQL 对 SQL 有很多扩展，有些用起来很方便，但有一些被误用之后会有性能问题，还会有一些意料之外的副作用，比如 REPLACE INTO。&lt;/p&gt;</description>
    </item>
    <item>
      <title>MySQLdb 参数处理的坑</title>
      <link>https://blog.xupeng.me/2013/09/25/mysqldb-args-processing/</link>
      <pubDate>Wed, 25 Sep 2013 07:23:00 +0800</pubDate>
      <guid>https://blog.xupeng.me/2013/09/25/mysqldb-args-processing/</guid>
      <description>&lt;p&gt;前几天又有同事掉进了给 SQL 的 IN 条件传参的坑，就像 SELECT col1, col2 FROM table1 WHERE id IN (1, 2, 3) 这类 SQL，如果是一个可变的列表作为 IN 的参数，那这个参数应该怎么传呢？&lt;/p&gt;</description>
    </item>
    <item>
      <title>在 Linux 下追溯进程的发起者</title>
      <link>https://blog.xupeng.me/2013/09/24/find-process-initiator-on-linux/</link>
      <pubDate>Tue, 24 Sep 2013 16:13:00 +0800</pubDate>
      <guid>https://blog.xupeng.me/2013/09/24/find-process-initiator-on-linux/</guid>
      <description>&lt;p&gt;在 Linux 下要确认一个进程的发起者身份，比如用户 tom 登录系统，&lt;code&gt;sudo su -&lt;/code&gt; 到 root，然后执行了脚本 &lt;code&gt;hey.sh&lt;/code&gt;，要想在 &lt;code&gt;hey.sh&lt;/code&gt; 中追溯到发起进程的是 tom 这个用户，并不是很容易做到准确无误，花了点时间，找到了一个相对靠谱的方式。&lt;/p&gt;</description>
    </item>
    <item>
      <title>这几年犯的错</title>
      <link>https://blog.xupeng.me/2013/06/27/mistakes-in-production-system-these-years/</link>
      <pubDate>Thu, 27 Jun 2013 21:47:00 +0800</pubDate>
      <guid>https://blog.xupeng.me/2013/06/27/mistakes-in-production-system-these-years/</guid>
      <description>&lt;p&gt;得知&#xA;&lt;a href=&#34;http://www.xiachufang.com&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;下厨房&lt;/a&gt;的&#xA;&lt;a href=&#34;http://blog.xiachufang.com/article/5595/&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;数据被误删&lt;/a&gt;了，正在紧张恢复中。作为犯过很多次严重错误的人，我最想说的是，善待当事人吧，此刻他在承受着巨大的压力，比其他任何人都要心焦，他会很感激你的善言和善意。&lt;/p&gt;&#xA;&lt;p&gt;这几年犯过很多次严重影响线上服务的错误，像重启了错误的节点这样的事情应该算作能够对线上造成影响的最微不足道的错误，就只简单说几件现在都还让我心有余悸的事吧。&lt;/p&gt;</description>
    </item>
    <item>
      <title>使用 hosts 解析一个名字到多个 IP</title>
      <link>https://blog.xupeng.me/2013/05/15/multiple-ips-with-hosts/</link>
      <pubDate>Wed, 15 May 2013 20:49:00 +0800</pubDate>
      <guid>https://blog.xupeng.me/2013/05/15/multiple-ips-with-hosts/</guid>
      <description>&lt;p&gt;之前一直以为 &lt;code&gt;hosts&lt;/code&gt; 不支持把一个名字解析到多个 IP，因此凡是有解析到多个 IP 需求的场景，全部都使用了 DNS，偶然看 &lt;code&gt;host.conf&lt;/code&gt; 的 man page，发现并不是这样，有些场景下仍然是可以使用 &lt;code&gt;hosts&lt;/code&gt; 的。&lt;/p&gt;</description>
    </item>
    <item>
      <title>如何同步 GRANT/REVOKE 操作</title>
      <link>https://blog.xupeng.me/2012/09/29/how-to-replicate-grant-and-revoke-with-mysql/</link>
      <pubDate>Sat, 29 Sep 2012 22:19:00 +0800</pubDate>
      <guid>https://blog.xupeng.me/2012/09/29/how-to-replicate-grant-and-revoke-with-mysql/</guid>
      <description>&lt;p&gt;发现在 MySQL master 上用 GRANT 语句授予用户权限和用 REVOKE 语句收回权限的操作没有被同步到 slave 上，有两个 bug 报告的行为和我遇到的一致：&#xA;&lt;a href=&#34;http://bugs.mysql.com/bug.php?id=25482&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;#25482&lt;/a&gt; &#xA;&lt;a href=&#34;http://bugs.mysql.com/bug.php?id=50460&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;#50460&lt;/a&gt;，但从文档看，#25482 描述的是 bug，而 #50460 描述的内容则是 MySQL 的预期行为。&lt;/p&gt;</description>
    </item>
    <item>
      <title>KILL 和 SIGPIPE</title>
      <link>https://blog.xupeng.me/2012/08/11/kill-and-sigpipe/</link>
      <pubDate>Sat, 11 Aug 2012 14:49:00 +0800</pubDate>
      <guid>https://blog.xupeng.me/2012/08/11/kill-and-sigpipe/</guid>
      <description>&lt;p&gt;有朋友用 PHP 写了一个工具（&lt;code&gt;limit.php&lt;/code&gt;），用来限制另一个进程的执行时间，代码如下：&lt;/p&gt;</description>
    </item>
    <item>
      <title>这周遇到的三个问题</title>
      <link>https://blog.xupeng.me/2012/08/10/problems-happened-this-week/</link>
      <pubDate>Fri, 10 Aug 2012 23:51:00 +0800</pubDate>
      <guid>https://blog.xupeng.me/2012/08/10/problems-happened-this-week/</guid>
      <description>&lt;p&gt;这周遇到了三个值得说一说的问题，每一个问题都带来了不小的麻烦，作为教训再来回顾一下。&lt;/p&gt;</description>
    </item>
    <item>
      <title>MySQL-python: Commands out of sync</title>
      <link>https://blog.xupeng.me/2012/03/13/mysql-python-commands-out-of-sync/</link>
      <pubDate>Tue, 13 Mar 2012 18:12:00 +0800</pubDate>
      <guid>https://blog.xupeng.me/2012/03/13/mysql-python-commands-out-of-sync/</guid>
      <description>&lt;p&gt;在给 MySQL 数据库访问层增加新功能时遇到了这样的错误：&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#93a1a1;background-color:#002b36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-fallback&#34; data-lang=&#34;fallback&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;ProgrammingError: (2014, &amp;#34;Commands out of sync; you can&amp;#39;t run this command now&amp;#34;)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;之前零星地见到过几次，因为发生频度很低，就没有太在意，这次找了一下原因，MySQL 文档对 &lt;code&gt;Commands out of sync&lt;/code&gt; 错误的描述是这样的：&lt;/p&gt;</description>
    </item>
    <item>
      <title>类型转换对 MySQL 选择索引的影响</title>
      <link>https://blog.xupeng.me/2012/02/08/type-conversion-and-index-selection-of-mysql/</link>
      <pubDate>Wed, 08 Feb 2012 08:29:00 +0800</pubDate>
      <guid>https://blog.xupeng.me/2012/02/08/type-conversion-and-index-selection-of-mysql/</guid>
      <description>&lt;p&gt;遇到了几例 MySQL 没用使用预期索引的问题，读了些文档之后，发现 MySQL 的类型转换对索引选择的影响还真是一个不大不小的坑。&lt;/p&gt;&#xA;&lt;p&gt;比如有这样一张 MySQL 表：&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#93a1a1;background-color:#002b36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-mysql&#34; data-lang=&#34;mysql&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#719e07&#34;&gt;CREATE&lt;/span&gt; &lt;span style=&#34;color:#719e07&#34;&gt;TABLE&lt;/span&gt; &lt;span style=&#34;color:#719e07&#34;&gt;`&lt;/span&gt;indextest&lt;span style=&#34;color:#719e07&#34;&gt;`&lt;/span&gt; (&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#719e07&#34;&gt;`&lt;/span&gt;id&lt;span style=&#34;color:#719e07&#34;&gt;`&lt;/span&gt; &lt;span style=&#34;color:#dc322f&#34;&gt;int&lt;/span&gt;(&lt;span style=&#34;color:#2aa198&#34;&gt;10&lt;/span&gt;) &lt;span style=&#34;color:#719e07&#34;&gt;unsigned&lt;/span&gt; &lt;span style=&#34;color:#719e07&#34;&gt;NOT&lt;/span&gt; &lt;span style=&#34;color:#cb4b16&#34;&gt;NULL&lt;/span&gt; &lt;span style=&#34;color:#719e07&#34;&gt;AUTO_INCREMENT&lt;/span&gt;,&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#719e07&#34;&gt;`&lt;/span&gt;name&lt;span style=&#34;color:#719e07&#34;&gt;`&lt;/span&gt; &lt;span style=&#34;color:#dc322f&#34;&gt;varchar&lt;/span&gt;(&lt;span style=&#34;color:#2aa198&#34;&gt;10&lt;/span&gt;) &lt;span style=&#34;color:#719e07&#34;&gt;DEFAULT&lt;/span&gt; &lt;span style=&#34;color:#cb4b16&#34;&gt;NULL&lt;/span&gt;,&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#719e07&#34;&gt;`&lt;/span&gt;age&lt;span style=&#34;color:#719e07&#34;&gt;`&lt;/span&gt; &lt;span style=&#34;color:#dc322f&#34;&gt;tinyint&lt;/span&gt;(&lt;span style=&#34;color:#2aa198&#34;&gt;3&lt;/span&gt;) &lt;span style=&#34;color:#719e07&#34;&gt;unsigned&lt;/span&gt; &lt;span style=&#34;color:#719e07&#34;&gt;NOT&lt;/span&gt; &lt;span style=&#34;color:#cb4b16&#34;&gt;NULL&lt;/span&gt; &lt;span style=&#34;color:#719e07&#34;&gt;DEFAULT&lt;/span&gt; &lt;span style=&#34;color:#2aa198&#34;&gt;&amp;#39;0&amp;#39;&lt;/span&gt;,&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#719e07&#34;&gt;`&lt;/span&gt;create_time&lt;span style=&#34;color:#719e07&#34;&gt;`&lt;/span&gt; &lt;span style=&#34;color:#dc322f&#34;&gt;timestamp&lt;/span&gt; &lt;span style=&#34;color:#719e07&#34;&gt;NOT&lt;/span&gt; &lt;span style=&#34;color:#cb4b16&#34;&gt;NULL&lt;/span&gt; &lt;span style=&#34;color:#719e07&#34;&gt;DEFAULT&lt;/span&gt; &lt;span style=&#34;color:#719e07&#34;&gt;CURRENT_TIMESTAMP&lt;/span&gt;,&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#719e07&#34;&gt;PRIMARY&lt;/span&gt; &lt;span style=&#34;color:#719e07&#34;&gt;KEY&lt;/span&gt; (&lt;span style=&#34;color:#719e07&#34;&gt;`&lt;/span&gt;id&lt;span style=&#34;color:#719e07&#34;&gt;`&lt;/span&gt;),&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#719e07&#34;&gt;KEY&lt;/span&gt; &lt;span style=&#34;color:#719e07&#34;&gt;`&lt;/span&gt;idx_name&lt;span style=&#34;color:#719e07&#34;&gt;`&lt;/span&gt; (&lt;span style=&#34;color:#719e07&#34;&gt;`&lt;/span&gt;name&lt;span style=&#34;color:#719e07&#34;&gt;`&lt;/span&gt;),&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#719e07&#34;&gt;KEY&lt;/span&gt; &lt;span style=&#34;color:#719e07&#34;&gt;`&lt;/span&gt;idx_age&lt;span style=&#34;color:#719e07&#34;&gt;`&lt;/span&gt; (&lt;span style=&#34;color:#719e07&#34;&gt;`&lt;/span&gt;age&lt;span style=&#34;color:#719e07&#34;&gt;`&lt;/span&gt;),&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#719e07&#34;&gt;KEY&lt;/span&gt; &lt;span style=&#34;color:#719e07&#34;&gt;`&lt;/span&gt;idx_create&lt;span style=&#34;color:#719e07&#34;&gt;`&lt;/span&gt; (&lt;span style=&#34;color:#719e07&#34;&gt;`&lt;/span&gt;create_time&lt;span style=&#34;color:#719e07&#34;&gt;`&lt;/span&gt;)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;) &lt;span style=&#34;color:#719e07&#34;&gt;ENGINE&lt;/span&gt;&lt;span style=&#34;color:#719e07&#34;&gt;=&lt;/span&gt;InnoDB &lt;span style=&#34;color:#719e07&#34;&gt;AUTO_INCREMENT&lt;/span&gt;&lt;span style=&#34;color:#719e07&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#2aa198&#34;&gt;9&lt;/span&gt; &lt;span style=&#34;color:#719e07&#34;&gt;DEFAULT&lt;/span&gt; &lt;span style=&#34;color:#719e07&#34;&gt;CHARSET&lt;/span&gt;&lt;span style=&#34;color:#719e07&#34;&gt;=&lt;/span&gt;latin1&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;</description>
    </item>
    <item>
      <title>MySQL 的临时目录</title>
      <link>https://blog.xupeng.me/2012/02/04/how-mysql-uses-tmpdir/</link>
      <pubDate>Sat, 04 Feb 2012 07:18:00 +0800</pubDate>
      <guid>https://blog.xupeng.me/2012/02/04/how-mysql-uses-tmpdir/</guid>
      <description>&lt;p&gt;MySQL 服务器设置的 binlog 单文件最大为 1GB，偶然发现会有十几 GB 大小的 binlog 文件，从产生的时间上看像是某个 cron job 使用了超大的 transaction，为了找出“罪魁祸首”，我需要分析一下 binlog。&lt;/p&gt;</description>
    </item>
    <item>
      <title>Code Swarm</title>
      <link>https://blog.xupeng.me/2012/01/12/code-swarm/</link>
      <pubDate>Thu, 12 Jan 2012 06:49:00 +0800</pubDate>
      <guid>https://blog.xupeng.me/2012/01/12/code-swarm/</guid>
      <description>&lt;p&gt;&#xA;&lt;a href=&#34;http://www.michaelogawa.com/code_swarm/&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;Code swarm&lt;/a&gt; 是一个可视化项目，最常见的用途是把代码仓库的提交历史可视化，changesets 以时间顺序回放，每个发生变更的文件作为一个闪亮的光点从各处汇聚在对应的 committer 身上，把项目的演进历史以视频的方式形象地呈现出来，通常还会配上激动人心的背景音乐，令程序员们潸然泪下。&lt;/p&gt;</description>
    </item>
    <item>
      <title>No SOPA! 将我的域名从 Godaddy 转出</title>
      <link>https://blog.xupeng.me/2011/12/23/no-sopa-transfer-my-domains-out-of-godaddy/</link>
      <pubDate>Fri, 23 Dec 2011 23:49:00 +0800</pubDate>
      <guid>https://blog.xupeng.me/2011/12/23/no-sopa-transfer-my-domains-out-of-godaddy/</guid>
      <description>&lt;p&gt;近来美国在尚未通过的 &#xA;&lt;a href=&#34;http://en.wikipedia.org/wiki/Stop_Online_Piracy_Act&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;SOPA&lt;/a&gt; 法案上产生了巨大争议，该法案最邪恶的地方在于，它使得 ISP 和版权方有权利因为某网站上有一点侵权内容而“拔其网线” - 使其域名无法解析，此权利也很容易被滥用。&lt;/p&gt;</description>
    </item>
    <item>
      <title>迁移到 Octopress</title>
      <link>https://blog.xupeng.me/2011/12/14/migrate-to-octopress/</link>
      <pubDate>Wed, 14 Dec 2011 22:23:00 +0800</pubDate>
      <guid>https://blog.xupeng.me/2011/12/14/migrate-to-octopress/</guid>
      <description>&lt;p&gt;用了三年多 Wordpress，由于实在很懒，没有写过多少东西，但跑在 &#xA;&lt;a href=&#34;http://www.linode.com/?r=cd5198f9daf6a668424aea5534f74baf343f4759&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;Linode VPS&lt;/a&gt; 上的 Wordpress 却一直占用了很多资源，几个 &#xA;&lt;a href=&#34;http://php-fpm.org/&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;PHP-FPM&lt;/a&gt; 进程加上 MySQL 就用掉了将近 400MB 内存，却没有什么访问量，觉得很不划算，再加上 Wrodpress 越来越臃肿，就想把它换成一个静态内容发布系统。&lt;/p&gt;</description>
    </item>
    <item>
      <title>2.6.38 / 2.6.39 &#43; XFS 的性能极差</title>
      <link>https://blog.xupeng.me/2011/12/11/poor-performance-with-xfs-2-6-38-and-2-6-39/</link>
      <pubDate>Sun, 11 Dec 2011 08:00:00 +0800</pubDate>
      <guid>https://blog.xupeng.me/2011/12/11/poor-performance-with-xfs-2-6-38-and-2-6-39/</guid>
      <description>&lt;p&gt;线上的 MySQL 服务器一直都在使用 XFS 文件系统，性能和稳定性都表现良好，使用的内核版本是 2.6.29，经过时间和访问压力的验证，表现也不错。&lt;/p&gt;&#xA;&lt;p&gt;前一段时间在测试几款 SSD 产品，考虑到 XFS 在内核 2.6.38 之后才加入了对 FITRIM 的支持（&#xA;&lt;a href=&#34;http://xfs.org/index.php/FITRIM/discard&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;ref1&lt;/a&gt;  &#xA;&lt;a href=&#34;http://xfs.org/index.php/Support_discarding_of_unused_sectors&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;ref2&lt;/a&gt;），就在 2.6.38 和 2.6.39 上对 SSD 做了测试，测试结果却让人大跌眼镜，XFS 在 2.6.38 和 2.6.39 之上的性能差到完全不能接受。&lt;/p&gt;</description>
    </item>
    <item>
      <title>SCGI 与线程</title>
      <link>https://blog.xupeng.me/2011/12/08/scgi-and-threading/</link>
      <pubDate>Thu, 08 Dec 2011 08:00:00 +0800</pubDate>
      <guid>https://blog.xupeng.me/2011/12/08/scgi-and-threading/</guid>
      <description>&lt;p&gt;最近在写一个配置推送客户端，结构如下图：&lt;/p&gt;&#xA;&lt;p&gt;&lt;img src=&#34;https://blog.xupeng.me/downloads/2011/12/cfgreceiver.png&#34; alt=&#34;cfgreceiver architecture&#34; title=&#34;cfgreceiver architecture&#34;&gt;&lt;/p&gt;&#xA;&lt;p&gt;每一个应用服务进程会起一个额外的线程，与 ZooKeeper 保持连接，需要变更配置时，将新配置更新到 ZooKeeper，ZooKeeper 将配置推送到所有的客户端，客户端收到配置之后，即时更新进程内的配置信息，并将更新配置成功与否、延时、错误等信息反馈到 redis，以这样的方式做到不重启服务更新配置。&lt;/p&gt;</description>
    </item>
    <item>
      <title>Lion下精确调整音量</title>
      <link>https://blog.xupeng.me/2011/09/23/precisely-adjust-volume-in-lion/</link>
      <pubDate>Fri, 23 Sep 2011 08:00:00 +0800</pubDate>
      <guid>https://blog.xupeng.me/2011/09/23/precisely-adjust-volume-in-lion/</guid>
      <description>&lt;p&gt;升级到 Lion 后一直在忍受着很大的音量，戴着入耳一格音量也觉得很大，找了两句 applescript，写成了一个符合我使用习惯的脚本，这下可以精确地把音量调整为舒适的大小了：&lt;/p&gt;</description>
    </item>
    <item>
      <title>MySQL collation 问题</title>
      <link>https://blog.xupeng.me/2011/09/07/mysql-collation/</link>
      <pubDate>Wed, 07 Sep 2011 08:00:00 +0800</pubDate>
      <guid>https://blog.xupeng.me/2011/09/07/mysql-collation/</guid>
      <description>&lt;p&gt;在从 5.0.x 向 5.1.x 升级的过程中，使用 mysqldump 备份某张表之后，向 5.1.x 中导入时却遇到重复数据的错误：&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#93a1a1;background-color:#002b36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-fallback&#34; data-lang=&#34;fallback&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;ERROR 1062 (23000) at line 65: Duplicate entry &amp;#39;1003-&amp;#39; for key &amp;#39;uk_cat_name&amp;#39;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;</description>
    </item>
    <item>
      <title>Gentoo MySQL 5.0.92 数据表不可见的 bug</title>
      <link>https://blog.xupeng.me/2011/08/25/bug-of-invisible-tables-with-mysql-5-0-92-on-gentoo/</link>
      <pubDate>Thu, 25 Aug 2011 08:00:00 +0800</pubDate>
      <guid>https://blog.xupeng.me/2011/08/25/bug-of-invisible-tables-with-mysql-5-0-92-on-gentoo/</guid>
      <description>&lt;p&gt;Gentoo 维护的 MySQL 5.0.92 有数据表不可见的 bug，表现为：&lt;/p&gt;</description>
    </item>
    <item>
      <title>在防火墙后面部署 PPTP server</title>
      <link>https://blog.xupeng.me/2011/08/09/iptables-modules-needed-for-deploying-pptp-behind-nat/</link>
      <pubDate>Tue, 09 Aug 2011 08:00:00 +0800</pubDate>
      <guid>https://blog.xupeng.me/2011/08/09/iptables-modules-needed-for-deploying-pptp-behind-nat/</guid>
      <description>&lt;p&gt;在防火墙后面部署 PPTP server 需要额外的 iptables 支持，所需要的 iptables module 有：&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#93a1a1;background-color:#002b36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-fallback&#34; data-lang=&#34;fallback&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;nf_nat_pptp&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;nf_nat_proto_gre&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;nf_conntrack_pptp&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;nf_conntrack_proto_gre&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;</description>
    </item>
    <item>
      <title>诡异的 MySQL 内存突增问题</title>
      <link>https://blog.xupeng.me/2011/08/08/weird-mysql-hog-problem/</link>
      <pubDate>Mon, 08 Aug 2011 08:00:00 +0800</pubDate>
      <guid>https://blog.xupeng.me/2011/08/08/weird-mysql-hog-problem/</guid>
      <description>&lt;p&gt;一个稳定运行了大半年的 MySQL 5.0.84 实例，InnoDB buffer pool 为 15GB，正常情况下会使用 17GB 左右物理内存，但是它的物理内存使用量突然在五分钟内飙升至 35GB，导致 kernel 忙于 OOM 而使整个服务器处于假死状态，不得已重启了系统。&lt;/p&gt;</description>
    </item>
    <item>
      <title>Gmail mute 功能的 bug？</title>
      <link>https://blog.xupeng.me/2011/07/28/bug-of-gmail-mute/</link>
      <pubDate>Thu, 28 Jul 2011 08:00:00 +0800</pubDate>
      <guid>https://blog.xupeng.me/2011/07/28/bug-of-gmail-mute/</guid>
      <description>&lt;p&gt;自从 Gmail 有了 &#xA;&lt;a href=&#34;http://mail.google.com/support/bin/answer.py?answer=47787&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;mute 功能&lt;/a&gt; 之后我就没有停止过尝试使用它，但是遗憾的是，这个功能在我这里从来都没有真正工作过，被我 mute 了的会话被加上了 &amp;ldquo;Muted&amp;rdquo; 标签，但是这些会话仍然会不断地从我的 Inbox 里冒出来，完全不能阻止 mute 功能要对付的那些 &amp;ldquo;endless threads&amp;rdquo;，平添很多烦恼。&lt;/p&gt;</description>
    </item>
    <item>
      <title>如何打发路上的时光？</title>
      <link>https://blog.xupeng.me/2011/05/26/time-spent-on-the-road/</link>
      <pubDate>Thu, 26 May 2011 08:00:00 +0800</pubDate>
      <guid>https://blog.xupeng.me/2011/05/26/time-spent-on-the-road/</guid>
      <description>&lt;p&gt;几年前刚到北京那会儿，住在白广路，在三元桥上班，每天路上来回要花两三个小时，对于刚从三线城市到一线城市的我来说，这是极大的不适应，无尽的时间被痛苦地消磨过去，从那个时候起，我正式地有了打发每天路上几个小时的需求。&lt;/p&gt;</description>
    </item>
    <item>
      <title>远程开启 DELL 服务器的 Intel CPU VT 支持</title>
      <link>https://blog.xupeng.me/2011/03/10/enable-vt-for-dell-server-remotely/</link>
      <pubDate>Thu, 10 Mar 2011 08:00:00 +0800</pubDate>
      <guid>https://blog.xupeng.me/2011/03/10/enable-vt-for-dell-server-remotely/</guid>
      <description>&lt;p&gt;想提高服务器资源使用率，又不想在同一台物理服务器上混合部署多种服务，因为混合部署会带来更高的运维代价，使用虚拟化，物理隔离出部分计算资源，以虚拟机为单位重新分配不同时段的空闲计算资源，是综合成本更低的方案。&lt;/p&gt;</description>
    </item>
    <item>
      <title>Snow leopard 的诡异 DNS 问题</title>
      <link>https://blog.xupeng.me/2010/10/25/weird-snow-leopard-dns-issue/</link>
      <pubDate>Mon, 25 Oct 2010 08:00:00 +0800</pubDate>
      <guid>https://blog.xupeng.me/2010/10/25/weird-snow-leopard-dns-issue/</guid>
      <description>&lt;p&gt;用 Mac 一年来遇到最诡异的问题，就是 Snow leopard 的 DNS 问题了，最常遇到的状况是，dig/nslookup/host 都能够正确解析域名，但 ping 却不能解析任何域名，其他的一票软件如 ssh、浏览器等也因为解析不了域名而不能正常工作。&lt;/p&gt;</description>
    </item>
    <item>
      <title>远程配置 DELL iDRAC</title>
      <link>https://blog.xupeng.me/2010/09/07/configure-dell-idarc-remotely/</link>
      <pubDate>Tue, 07 Sep 2010 08:00:00 +0800</pubDate>
      <guid>https://blog.xupeng.me/2010/09/07/configure-dell-idarc-remotely/</guid>
      <description>&lt;p&gt;DELL iDRAC(Integrated Dell Remote Access Controller) 可以用于服务器远程管理，比如远程电源管理、启动故障诊断、硬件故障报警监测等等。&lt;/p&gt;&#xA;&lt;p&gt;新近的一批 DELL 服务器集成了 iDRAC Express，服务器已经上线运行数月，可惜当初没有进行过 iDRAC 的配置，因此也不能使用，简单查了一下，有两种方法可以配置 iDRAC：&lt;/p&gt;</description>
    </item>
    <item>
      <title>Context switch 和 TLB shootdowns</title>
      <link>https://blog.xupeng.me/2010/09/01/context-switch-and-tlb-shootdowns/</link>
      <pubDate>Wed, 01 Sep 2010 08:00:00 +0800</pubDate>
      <guid>https://blog.xupeng.me/2010/09/01/context-switch-and-tlb-shootdowns/</guid>
      <description>&lt;p&gt;memcache 缓存大对象失效，因此某个涉及4万条记录的查询每次都会把压力直接施加到 MySQL，致使 MySQL 服务器的 load 在几分钟内上升到 60+。&lt;/p&gt;</description>
    </item>
    <item>
      <title>苹果的吸入式光驱很挫</title>
      <link>https://blog.xupeng.me/2009/12/07/apple-slot-loading-optical-drive-sucks/</link>
      <pubDate>Mon, 07 Dec 2009 08:00:00 +0800</pubDate>
      <guid>https://blog.xupeng.me/2009/12/07/apple-slot-loading-optical-drive-sucks/</guid>
      <description>苹果的吸入式光驱真的很挫。&#xA;&#xA;一张状态良好的DVD RW，放到苹果的吸入式光驱里，读不出来，一直在嘎吱嘎吱地响，又弹不出来，弹出键没用，Disk Utility的弹出也无效，drutil eject也无济于事，快要绝望的时候，看到&lt;a href=&#34;http://osxdaily.com/2009/08/28/eject-a-stuck-disk-from-your-mac-dvd-super-drive/&#34; target=&#34;_blank&#34;&gt;这里&lt;/a&gt;说实在弹不出来的话可以重新启动，然后一直按住鼠标/或触摸板，直到系统启动。没招了，重启试了一下，按了N久，光盘终于突然停止嘎吱嘎吱的声音，biu~的一声弹出来了...</description>
    </item>
    <item>
      <title>换用 Mac 一周</title>
      <link>https://blog.xupeng.me/2009/12/04/use-mac-for-one-week/</link>
      <pubDate>Fri, 04 Dec 2009 08:00:00 +0800</pubDate>
      <guid>https://blog.xupeng.me/2009/12/04/use-mac-for-one-week/</guid>
      <description>&lt;p&gt;电脑不够用了，上周末去苹果家园买了台 MBP 990，这是目前已上市最新款中最低配的 MBP，标配 2G 内存，购机时给升到了 4G，内存有些贵（650元），不过用惯了 4G 内存的本本，不想再倒回到一年多以前，用了几天发现，升级到 4G 内存实在是一个非常明知的选择，并且 4G 内存用 Snow Leopard 也实在不算多。&lt;/p&gt;</description>
    </item>
    <item>
      <title>使用 Nginx 一分钟搭建全功能的Twitter/Twitter search API</title>
      <link>https://blog.xupeng.me/2009/08/31/build-full-featured-twittertwitter-search-api-with-nginx-in-1-minute/</link>
      <pubDate>Mon, 31 Aug 2009 08:00:00 +0800</pubDate>
      <guid>https://blog.xupeng.me/2009/08/31/build-full-featured-twittertwitter-search-api-with-nginx-in-1-minute/</guid>
      <description>&lt;p&gt;现在有很多的 Twitter 代理软件，比如 &#xA;&lt;a href=&#34;http://code.google.com/p/tweetr/&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;tweetr&lt;/a&gt; 和 [birdnest](&#xA;&lt;a href=&#34;http://code.google.com/p/birdnest/&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;http://code.google.com/p/birdnest/&lt;/a&gt;, 不过使用反向代理来做的话会更容易，并且得到的是一个 &lt;em&gt;全功能&lt;/em&gt; 的 Twitter 代理，这是我在我的 VPS 上使用 Nginx 配置 Twitter 和 Twitter search API 代理的示例配置文件（当然了，这里写出来的域名是假的，哈哈）：&lt;/p&gt;</description>
    </item>
    <item>
      <title>修改 OpenLDAP 的 base DN</title>
      <link>https://blog.xupeng.me/2009/08/09/change-base-dn-in-openldap/</link>
      <pubDate>Sun, 09 Aug 2009 08:00:00 +0800</pubDate>
      <guid>https://blog.xupeng.me/2009/08/09/change-base-dn-in-openldap/</guid>
      <description>&lt;p&gt;在 Debain 里安装 OpenLDAP 时，Debian 会提示给 LDAP 的 admin 用户设置一个密码，然后就自动地创建了一个默认的数据库，这个默认的数据库使用了一个默认的 base DN，默认情况下，Debian 会使用本机的域名来作为 base DN，比如如果我的域名是 xupeng.local，那么 Debian 就会使用 &lt;code&gt;dc=xupeng,dc=local&lt;/code&gt; 作为我的默认 base DN，但是很不幸，我没有给我的 Debian 测试机设置域名，于是我的 LDAP 默认数据库的 base DN 就成了 &lt;code&gt;dc=nodomain&lt;/code&gt;，要想修改 base DN 还真不是直接改了配置文件(&lt;code&gt;/etc/ldap/slapd.conf&lt;/code&gt;)就行的，不过 Google 一下很快就找到了解决方法：&lt;/p&gt;</description>
    </item>
    <item>
      <title>Linux 进程的 Uninterruptible sleep(D) 状态</title>
      <link>https://blog.xupeng.me/2009/07/09/linux-uninterruptible-sleep-state/</link>
      <pubDate>Thu, 09 Jul 2009 08:00:00 +0800</pubDate>
      <guid>https://blog.xupeng.me/2009/07/09/linux-uninterruptible-sleep-state/</guid>
      <description>&lt;p&gt;运行在 KVM 虚拟机里的一些进程突然出了问题，这些出了问题的进程无法用 &lt;code&gt;kill&lt;/code&gt; 杀掉，使用 &lt;code&gt;ps&lt;/code&gt; 可以看到这些进程处于D 状态：&lt;/p&gt;</description>
    </item>
    <item>
      <title>Settings for improving poor 3D performance of intel 945GM</title>
      <link>https://blog.xupeng.me/2009/05/04/settings-improve-poor-intel-945gm-performance/</link>
      <pubDate>Mon, 04 May 2009 08:00:00 +0800</pubDate>
      <guid>https://blog.xupeng.me/2009/05/04/settings-improve-poor-intel-945gm-performance/</guid>
      <description>&lt;p&gt;I don&amp;rsquo;t use compiz on my work computer(HP 520 laptop), but I do use compiz on my own laptop which has a NVIDIA 8400GS video card, the main reason I don&amp;rsquo;t use it on the HP 520 is that: it&amp;rsquo;s really too slow to run compiz smoothly with the default settings of Xorg and intel driver, but I hear that the 3D performance has been greatly improved in kernel 2.6.29, so I spent some time to get compiz work well with the HP 520(Intel 945GM video card).&lt;/p&gt;</description>
    </item>
    <item>
      <title>Sun 被 Oralce 收购，Virtualbox 前途未卜</title>
      <link>https://blog.xupeng.me/2009/04/21/oracle-acquires-sun-my-virtualbox/</link>
      <pubDate>Tue, 21 Apr 2009 08:00:00 +0800</pubDate>
      <guid>https://blog.xupeng.me/2009/04/21/oracle-acquires-sun-my-virtualbox/</guid>
      <description>&lt;p&gt;Sun 被 Oralce 收购了，我担心我没有新版本的 Virtualbox 用了……&lt;/p&gt;&#xA;&lt;p&gt;Virtualbox 是我最喜欢的桌面虚拟化软件，目前的最新 release 是 2.2.0。我之所以喜欢 Virtualbox，是因为 Virtualbox 实在是：&lt;/p&gt;</description>
    </item>
    <item>
      <title>VMWare ESXi 3.5.0-153875 on HP 520 laptop: &#34;PCPU 1 locked up...&#34;</title>
      <link>https://blog.xupeng.me/2009/04/16/vmware-esxi-on-hp-520-laptop/</link>
      <pubDate>Thu, 16 Apr 2009 08:00:00 +0800</pubDate>
      <guid>https://blog.xupeng.me/2009/04/16/vmware-esxi-on-hp-520-laptop/</guid>
      <description>For the sake of testing our product(&lt;a title=&#34;Krugle&#34; href=&#34;http://www.krugle.com&#34; target=&#34;_blank&#34;&gt;krugle&lt;/a&gt;) easily, I installed VMWare ESXi 3.5.0 build 153875 on a HP laptop(HP 520) before the new server is delivered to our office, but unfortunately it failed to work, for several times it just threw me a screen with purple background, which is much like M$&#39;s famous blue screen ;) it said &#34;PCPU 1 locked up. Failed to ack TLB invalidate...&#34;, here is one of the screenshots I took when the errors occurred:&#xA;&#xA;&lt;a href=&#34;https://blog.xupeng.me/downloads/2009/04/vmware-exsi.jpg&#34;&gt;&lt;img class=&#34;alignnone size-full wp-image-623&#34; title=&#34;vmware-exsi&#34; src=&#34;https://blog.xupeng.me/downloads/2009/04/vmware-exsi.jpg&#34; alt=&#34;vmware-exsi&#34; width=&#34;512&#34; height=&#34;384&#34; /&gt;&lt;/a&gt;&#xA;&#xA;But I was not surprised at all, because I knew there were problems with the HP 520, at least with this model of HP 520. This HP 520 is equipped with Intel Core 2 T5200 CPU, according to wikipedia(http://en.wikipedia.org/wiki/List_of_Intel_Core_2_microprocessors), it looks like this CPU is an OEM product. It&#39;s a Core Duo 2 CPU, but it can&#39;t run 64bit OS, and no hardware virtualization support either, really weird.&#xA;&#xA;Anyway I can&#39;t get it work with VMware ESXi, a little frustrated,  I have to use KVM VMs for testing &lt;a title=&#34;Krugle&#34; href=&#34;http://www.krugle.com&#34; target=&#34;_blank&#34;&gt;krugle&lt;/a&gt; before the new server reaches.</description>
    </item>
    <item>
      <title>Gnome-do 0.8.1.3 doesn&#39;t show application items</title>
      <link>https://blog.xupeng.me/2009/04/13/gnome-do-does-not-show-application-items/</link>
      <pubDate>Mon, 13 Apr 2009 08:00:00 +0800</pubDate>
      <guid>https://blog.xupeng.me/2009/04/13/gnome-do-does-not-show-application-items/</guid>
      <description>Gnome-do 0.8.1.3 doesn&#39;t show application items on my Gentoo/Gnome 2.26, but 0.8.0 does, the following screenshot shows 0.8.0 is listing &#34;Terminal&#34; related items when I type &#34;ter&#34; in gnome-do, and the first one is the one I want: Gnome Terminal:&#xA;&#xA;&lt;img class=&#34;alignnone size-full wp-image-608&#34; title=&#34;gnome-do&#34; src=&#34;https://blog.xupeng.me/downloads/2009/04/gnome-do.png&#34; alt=&#34;gnome-do&#34; width=&#34;413&#34; height=&#34;450&#34; /&gt;&#xA;&#xA;The problem with my gnome-do 0.8.1.3 is: it doesn&#39;t list anything of my application items(The ones sits in Gnome&#39;s Applications menu), I think this functionality is of gnome-do itself. But all the plugins of gnome-do work well, it&#39;s really weird why it breaks while 0.8.0 worked for me.</description>
    </item>
    <item>
      <title>Window doesn&#39;t redraw correctly when using compiz</title>
      <link>https://blog.xupeng.me/2009/04/07/window-doesnt-redraw-correctly-when-using-compiz/</link>
      <pubDate>Tue, 07 Apr 2009 08:00:00 +0800</pubDate>
      <guid>https://blog.xupeng.me/2009/04/07/window-doesnt-redraw-correctly-when-using-compiz/</guid>
      <description>&lt;p&gt;Window doesn&amp;rsquo;t redraw correctly sometimes when using compiz, but if I switch to another window then switch back, it redraws, this problem occurs with any type of windows, it&amp;rsquo;s annoying.&lt;/p&gt;&#xA;&lt;p&gt;I am using compiz 0.8.2 on my DELL 1420, with a Nvidia 8400M GS video card and Nvidia driver of version 180.44.  Once upon a time, I can run compiz on this computer without any problem, but that&amp;rsquo;s really a very long time ago, with a very old nvidia driver and very old compiz fusion.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Unmount the unreachable NFS volume</title>
      <link>https://blog.xupeng.me/2009/04/06/unmount-the-unreachable-nfs-volume/</link>
      <pubDate>Mon, 06 Apr 2009 08:00:00 +0800</pubDate>
      <guid>https://blog.xupeng.me/2009/04/06/unmount-the-unreachable-nfs-volume/</guid>
      <description>&lt;p&gt;I previously mounted one NFS volume from the NFS server,  but now the NFS server is down, then I have problem with &amp;ldquo;df&amp;rdquo; command to see the disk space usage information from my computer, now the only thing I want to do is to unmount the unreachable NFS volume.&lt;/p&gt;&#xA;&lt;p&gt;The NFS volume is mounted at /mnt/nfs, when I try to unmount the NFS volume, I am told that  it is busy, so I use &lt;code&gt;lsof /mnt/nfs&lt;/code&gt; to find out the process using it normally,  but lsof  gets stuck and it never return the shell prompt to me. Ok, then I use &lt;code&gt;fuser -9 -k /mnt/nfs&lt;/code&gt;, try to kill the process forcefully, but fuser gets stuck too&amp;hellip;&lt;/p&gt;</description>
    </item>
    <item>
      <title>Pulseaudio is very cool!</title>
      <link>https://blog.xupeng.me/2009/04/04/pulseaudio-is-very-cool/</link>
      <pubDate>Sat, 04 Apr 2009 08:00:00 +0800</pubDate>
      <guid>https://blog.xupeng.me/2009/04/04/pulseaudio-is-very-cool/</guid>
      <description>I finally moved to pulseaudio after having used alsa/esd for years, pulseauido has been there for many years, but I didn&#39;t really learn something about it, I should have tried it if I knew it&#39;s so cool!&#xA;&#xA;On my Debian unstable, I installed pulseaudio this way:&#xA;&lt;pre&gt;apt-get install pulseaudio libao2 paprefs libpulse-mainloop-glib0 \&#xA;    pulseaudio-module-jack pavucontrol alsaplayer-alsa pulseaudio-module-hal \&#xA;    pulseaudio-module-x11 pulseaudio-module-lirc pulseaudio-utils \&#xA;    pulseaudio-module-zeroconf libasound2-plugins padevchooser paman \&#xA;    pulseaudio-module-gconf libgconfmm-2.6-1c2 libpulse-browse0 pavumeter \&#xA;    libglademm-2.4-1c2a pulseaudio-esound-compat libpulse0 libpulse-dev&lt;/pre&gt;&#xA;The next step is to make sure the desktop user is in these groups: audio, pulse, pulse-access and pulse-rt, for me, my username is &#34;xupeng&#34;, so the following commands make user &#34;xupeng&#34; belong to these groups:&#xA;&lt;pre&gt;gpasswd -a xupeng audio&#xA;gpasswd -a xupeng pulse&#xA;gpasswd -a xupeng pulse-access&#xA;gpasswd -a xupeng pulse-rt&lt;/pre&gt;&#xA;Relogin the desktop environment(I use Gnome) is needed for the new groups permission to take effect, can use &#34;id xupeng&#34; to comfirm that the group permissions after re-logging into the desktop environment.&#xA;&lt;pre&gt;xupeng@hopes:~$ id&#xA;uid=1000(xupeng) gid=1000(xupeng)&#xA;groups=20(dialout),24(cdrom),25(floppy),29(audio),44(video),46(plugdev),&#xA;112(powerdev),115(netdev),118(vboxusers),122(pulse),123(pulse-access),&#xA;124(pulse-rt),1000(xupeng),1001(vmware)&lt;/pre&gt;&#xA;Another important thing to make applications using ALSA work is: creating $HOME/.asoundrc with the following settings:&#xA;&lt;pre&gt;pcm.pulse {&#xA;    type pulse&#xA;}&#xA;&#xA;ctl.pulse {&#xA;    type pulse&#xA;}&#xA;&#xA;pcm.!default {&#xA;    type pulse&#xA;}&#xA;&#xA;ctl.!default {&#xA;    type pulse&#xA;}&lt;/pre&gt;&#xA;This activate the pulseaudio plugin for alsalibs, and make the pulseaudio driver as default.&#xA;&#xA;For applications using esound, adding these to $HOME/.bash_profile:&#xA;&lt;pre class=&#34;wiki&#34;&gt;if [ ! -e /tmp/.esd-${UID} ]; then&#xA;        ln -s /tmp/.esd /tmp/.esd-${UID}&#xA;fi&lt;/pre&gt;&#xA;Then I went to &#34;System&#34; - &#34;Sound&#34;, set all sound devices to &#34;PulseAudio Sound Server&#34;.&#xA;&#xA;There are useful wiki pages to get pulseaudio work well, here are the ones I read as reference:&#xA;&lt;ul&gt;&#xA;&#x9;&lt;li&gt;http://www.pulseaudio.org/wiki/PerfectSetup&lt;/li&gt;&#xA;&#x9;&lt;li&gt;http://rudd-o.com/en/linux-and-free-software/how-pulseaudio-works&lt;/li&gt;&#xA;&lt;/ul&gt;</description>
    </item>
    <item>
      <title>Upgrade kernel to 2.6.29 for my debian unstable</title>
      <link>https://blog.xupeng.me/2009/04/01/upgrade-kernel-to-2-6-29-for-my-debian-unstable/</link>
      <pubDate>Wed, 01 Apr 2009 08:00:00 +0800</pubDate>
      <guid>https://blog.xupeng.me/2009/04/01/upgrade-kernel-to-2-6-29-for-my-debian-unstable/</guid>
      <description>Two reasons made me want to upgrade my kernel from 2.6.26 to 2.6.29 for my Debian unstable:&#xA;&lt;ol&gt;&#xA;&#x9;&lt;li&gt;It&#39;s weird that my mobile hard disk make annoying sound even if I &#34;eject&#34; it before I pull out the USB cable, it&#39;s the same sound as the hard disk makes when I power off the computer directly without shutting down the OS.&lt;/li&gt;&#xA;&#x9;&lt;li&gt;I want to mount my ext4 volume created by Fedora Core 10, it contains a lot of data I need.&lt;/li&gt;&#xA;&lt;/ol&gt;&#xA;So I download the latest kernel from kernel.org, unzip it to /usr/src&#xA;&lt;div class=&#34;code&#34;&gt;&#xA;&lt;pre&gt;wget http://www.kernel.org/pub/linux/kernel/v2.6/linux-2.6.29.tar.bz2&#xA;&lt;span class=&#34;nb&#34;&gt;cd&lt;/span&gt; /usr/src&#xA;tar xf linux-2.6.29.tar.bz2&#xA;ln -s linux-2.6.29 linux&lt;/pre&gt;&#xA;&lt;/div&gt;&#xA;Then configure kernel for my DELL 1420&#xA;&lt;pre class=&#34;wiki&#34;&gt;cd linux&#xA;make defconfig&lt;/pre&gt;&#xA;&#34;make defconfig&#34; is very useful for me, I don&#39;t want to compile the tons of kernel modules/drivers I&#39;ll never need for my computer, so I run &#34;make defconfig&#34; first before I configure the kernel by myself, it removed most of the modules/drivers that have no relationship with my hardware.&#xA;&#xA;After &#34;make defconfig&#34; completed, I issue &#34;make menuconfig&#34; to run the menu-based kernel configuration interface, actually I only review the configuration to make sure all the necessary drivers needed by computer are selected, and make little changes to it, for example settings about ACPI, network devices(tun, tap etc), and filesystem(Of course I select ext4;), I made most of the drivers builtin instead of plugable modules, my philosophy of compiling kernel is to let it work just as I want it to, I don&#39;t want to spend too much time on it, the current configuration is good enough for me.&#xA;&#xA;Then I run &#34;make &amp;amp;&amp;amp; make install &amp;amp;&amp;amp; make modules_install&#34; to compile the kernel, kernel modules, install the kernel itself and all the compiled kernel modules. I am using LVM, and my / sits on a LVM volume, so I have to generate initrd image for the new kernel:&#xA;&lt;pre class=&#34;wiki&#34;&gt;update-initramfs -c -k 2.6.29&lt;/pre&gt;&#xA;&#34;update-initramfs&#34; is debian&#39;s command to help users generate initramfs image easily, many Linux distributions have their own methods to generate this image, for example Gentoo use genkernel to compile kernel and generate initramfs image automatically, and redhat-based distributions have mkinitrd command to do this if I remember right.&#xA;&#xA;&#34;-c&#34; is to tell update-initramfs to create new initramfs image, and &#34;-u&#34; is to update an existing initramfs of course, &#34;-k&#34; is to specify the kernel version to generate initramfs against to, this command will generate file /boot/initrd.img-2.6.29.&#xA;&#xA;All the needed files have been compiled and generated, I update /boot/grub/menu.lst to add new grub item for the new kernel:&#xA;&lt;pre class=&#34;wiki&#34;&gt;title Debian 2.6.29&#xA;root (hd0,4)&#xA;kernel /vmlinuz-2.6.29 root=/dev/mapper/nb-debian64 ro vga=791&#xA;initrd /initrd.img-2.6.29&#xA;savedefault&lt;/pre&gt;&#xA;Reboot the system and select the new item from grub menu, the new kernel boots smoothly, and I see the &lt;a class=&#34;ext-link&#34; href=&#34;http://torvalds-family.blogspot.com/2009/03/new-logo.html&#34;&gt;&lt;span class=&#34;icon&#34;&gt; &lt;/span&gt;new logo&lt;/a&gt; for kernel 2.6.29 ;)&#xA;&#xA;I am lucky but not that lucky as I thought, my hard disk still make noise when I pull out the USB cable, I have to spend more time on this issue...&#xA;&#xA;Now is time for the second reason I upgrade my kernel, unfortunately, error occurs when I mount an existing ext4 volume created by my previous Fedora core 10:&#xA;&lt;pre class=&#34;wiki&#34;&gt;[12034.562345] EXT4-fs: dm-3: Filesystem with huge files cannot be mounted read-write without CONFIG_LBD.&lt;/pre&gt;&#xA;After read &lt;a class=&#34;ext-link&#34; href=&#34;http://kerneltrap.org/index.php?q=mailarchive/git-commits-head/2008/12/31/4548344&#34;&gt;&lt;span class=&#34;icon&#34;&gt; &lt;/span&gt;this post&lt;/a&gt;, looks like on 32bit system, if CONFIG_LBD is not enabled when compiling kernel, ext4 volume will can only be mounted in readonly mode, so I re-configue the kernel to enable CONFIG_LBD, then I can mount the ext4 volume successfully.&#xA;&#xA;PS: to enable CONFIG_LBD, go to &#34;Main menu&#34; -&amp;gt; &#34;Enable the block layer&#34; -&amp;gt; &#34;Support for large block devices and files&#34;.</description>
    </item>
    <item>
      <title>Virtualbox stop working after upgrading kernel to 2.6.29</title>
      <link>https://blog.xupeng.me/2009/04/01/virtualbox-stop-working-after-upgrading-kernel-to-2-6-29/</link>
      <pubDate>Wed, 01 Apr 2009 08:00:00 +0800</pubDate>
      <guid>https://blog.xupeng.me/2009/04/01/virtualbox-stop-working-after-upgrading-kernel-to-2-6-29/</guid>
      <description>I am using Virtualbox 2.2.0 beta, it worked well before I upgrade my kernel from 2.6.26 to 2.6.29, but it refused to start my vm just after the kernel upgrade:&#xA;&#xA;&lt;img class=&#34;size-full wp-image-520 alignnone&#34; title=&#34;virtualbox-error&#34; src=&#34;https://blog.xupeng.me/downloads/2009/04/virtualbox-error.png&#34; alt=&#34;virtualbox-error&#34; width=&#34;470&#34; height=&#34;277&#34; /&gt;&#xA;&#xA;It said &#34;&lt;strong&gt;VMMR0.r0 is importing g_SUPGlobalInfoPage which we couldn&#39;t find&lt;/strong&gt;&#34; in its log file, fortunate enough,  I got to &lt;a class=&#34;ext-link&#34; href=&#34;http://www.virtualbox.org/ticket/3403&#34;&gt;&lt;span class=&#34;icon&#34;&gt; &lt;/span&gt;this page&lt;/a&gt; after I searched the web with this error message, there are already many people who met this problem with kernel 2.6.29, the solution is very simple: just uncomment &#34;VBOX_USE_INSERT_PAGE = 1&#34; in vboxdrv&#39;s Makefile, and compile the kernel module for virtualbox again, it should work.&#xA;&#xA;For my Debian unstable, the target Makefile sits under /usr/share/virtualbox/src/vboxdrv, so I just uncomment that line, and run &#34;/etc/init.d/vboxdrv setup&#34; to re-compile the kernel module, then everything goes well, I can happlily virtualize my boxes again ;)</description>
    </item>
    <item>
      <title>Build deb packcage for nginx with wsgi support under debian lenny(5.0)</title>
      <link>https://blog.xupeng.me/2009/03/29/build-deb-packcage-for-nginx-with-wsgi-support/</link>
      <pubDate>Sun, 29 Mar 2009 08:00:00 +0800</pubDate>
      <guid>https://blog.xupeng.me/2009/03/29/build-deb-packcage-for-nginx-with-wsgi-support/</guid>
      <description>&lt;strong&gt;I am not familiar with debian&#39;s deb package build system, so I go through the process of building deb package from source at first.&lt;/strong&gt;&#xA;&lt;ol&gt;&#xA;&#x9;&lt;li&gt;Install packages needed for building nginx&#xA;&lt;div class=&#34;code&#34;&gt;&#xA;&lt;pre&gt;sudo apt-get build-dep nginx&#xA;sudo apt-get install fakeroot&lt;/pre&gt;&#xA;&lt;/div&gt;&lt;/li&gt;&#xA;&#x9;&lt;li&gt;Get source code package:&#xA;&lt;div class=&#34;code&#34;&gt;&#xA;&lt;pre&gt;mkdir &lt;span class=&#34;nv&#34;&gt;$HOME&lt;/span&gt;/build/nginx -p&#xA;&lt;span class=&#34;nb&#34;&gt;cd&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;$HOME&lt;/span&gt;/build/nginx&#xA;apt-get &lt;span class=&#34;nb&#34;&gt;source &lt;/span&gt;nginx&lt;/pre&gt;&#xA;&lt;/div&gt;&lt;/li&gt;&#xA;&#x9;&lt;li&gt;Build it to generate deb package&#xA;&lt;div class=&#34;code&#34;&gt;&#xA;&lt;pre&gt;&lt;span class=&#34;nb&#34;&gt;cd &lt;/span&gt;nginx-0.6.32&#xA;dpkg-buildpackage -rfakeroot&lt;/pre&gt;&#xA;&lt;/div&gt;&#xA;Everything goes well, a deb package is generated under $HOME/build/nginx.&lt;/li&gt;&#xA;&lt;/ol&gt;&#xA;&lt;strong&gt;Then I continue to build nginx with wsgi support&lt;/strong&gt;&#xA;&lt;ol&gt;&#xA;&#x9;&lt;li&gt;Checkout latest code of (&lt;a class=&#34;ext-link&#34; href=&#34;http://hg.mperillo.ath.cx/nginx/mod_wsgi/file/tip/README&#34;&gt;&lt;span class=&#34;icon&#34;&gt; &lt;/span&gt;mod_wsgi for nginx&lt;/a&gt;)&#xA;&lt;div class=&#34;code&#34;&gt;&#xA;&lt;pre&gt;&lt;span class=&#34;nb&#34;&gt;cd&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;$HOME&lt;/span&gt;/build/nginx&#xA;hg clone http://hg.mperillo.ath.cx/nginx/mod_wsgi/&lt;/pre&gt;&#xA;&lt;/div&gt;&lt;/li&gt;&#xA;&#x9;&lt;li&gt;Edit $HOME/build/nginx/nginx-0.6.32/debian/rules, add additional options to the configure clause:&#xA;&lt;div class=&#34;code&#34;&gt;&#xA;&lt;pre&gt;--add-module&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;k&#34;&gt;${&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;HOME&lt;/span&gt;&lt;span class=&#34;k&#34;&gt;}&lt;/span&gt;/build/nginx/mod_wsgi --with-debug&lt;/pre&gt;&#xA;&lt;/div&gt;&lt;/li&gt;&#xA;&#x9;&lt;li&gt;Edit $HOME/build/nginx/nginx-0.6.32/debian/conf/nginx.conf, add these two lines to &#34;http&#34; section:&#xA;&lt;div class=&#34;code&#34;&gt;&#xA;&lt;pre&gt;include             /etc/nginx/wsgi_vars;&#xA;wsgi_temp_path      /var/tmp/nginx_wsgi_temp;&lt;/pre&gt;&#xA;&lt;/div&gt;&lt;/li&gt;&#xA;&#x9;&lt;li&gt;Copy file wsgi_vars from wsgi&#39;s conf directory to nginx&#39;s&#xA;&lt;div class=&#34;code&#34;&gt;&#xA;&lt;pre&gt;cp &lt;span class=&#34;nv&#34;&gt;$HOME&lt;/span&gt;/build/nginx/mod_wsgi/conf/wsgi_vars \&#xA;   &lt;span class=&#34;nv&#34;&gt;$HOME&lt;/span&gt;/build/nginx/nginx-0.6.32/debian/conf/&lt;/pre&gt;&#xA;&lt;/div&gt;&lt;/li&gt;&#xA;&#x9;&lt;li&gt;Edit $HOME/build/nginx/nginx-0.6.32/auto/install, and thses lines to it&#xA;&lt;div class=&#34;code&#34;&gt;&#xA;&lt;pre&gt;&lt;span class=&#34;nb&#34;&gt;test&lt;/span&gt; -f &lt;span class=&#34;s1&#34;&gt;&#39;\$(DESTDIR)$NGX_CONF_PATH&#39;&lt;/span&gt; &lt;span class=&#34;se&#34;&gt;\&#xA;&lt;/span&gt;        &lt;span class=&#34;o&#34;&gt;||&lt;/span&gt; cp conf/wsgi_vars &lt;span class=&#34;s1&#34;&gt;&#39;\$(DESTDIR)$NGX_CONF_PREFIX&#39;&lt;/span&gt;&#xA;cp conf/wsgi_vars &lt;span class=&#34;s1&#34;&gt;&#39;\$(DESTDIR)$NGX_CONF_PREFIX/wsgi_vars.default&#39;&lt;/span&gt;&lt;/pre&gt;&#xA;&lt;/div&gt;&lt;/li&gt;&#xA;&#x9;&lt;li&gt;Everything is ready now, compile nginx and generate deb package as before&#xA;&lt;pre class=&#34;wiki&#34;&gt;cd nginx-0.6.32&#xA;dpkg-buildpackage -rfakeroot&lt;/pre&gt;&#xA;Install the generated deb package with dpkg, it works.&lt;/li&gt;&#xA;&lt;/ol&gt;&#xA;The deb package I built can be downloaded from &lt;a href=&#34;https://blog.xupeng.me/downloads/2009/03/nginx_0632-3_i386.deb&#34;&gt;here&lt;/a&gt;.</description>
    </item>
    <item>
      <title>PTY allocation request failed on channel 0</title>
      <link>https://blog.xupeng.me/2009/03/29/pty-allocation-request-failed-on-channel-0/</link>
      <pubDate>Sun, 29 Mar 2009 08:00:00 +0800</pubDate>
      <guid>https://blog.xupeng.me/2009/03/29/pty-allocation-request-failed-on-channel-0/</guid>
      <description>&lt;p&gt;After I reboot my xen-powered [Linux VPS](http://www.linode.com/?r=cd5198f9daf6a668424aea5534f74baf343f4759), I can&#39;t ssh into it any more, it keeps saying:&lt;/p&gt;&#xA;&lt;pre class=&#34;wiki&#34;&gt;PTY allocation request failed on channel 0&lt;/pre&gt;&#xA;&lt;p&gt;This problem can be fixed by adding one line to /etc/fstab:&lt;/p&gt;&#xA;&lt;pre class=&#34;wiki&#34;&gt;none /dev/pts devpts defaults 0 0&lt;/pre&gt;&#xA;&lt;p&gt;and run &#34;mount -a&#34; after it is added.&lt;/p&gt;&#xA;&lt;p&gt;What confuses me is why it breaks just after I reboot it, but it works fine before, actually I didn&#39;t change anything since last time I rebooted it, maybe it&#39;s [Linode](http://www.linode.com/?r=cd5198f9daf6a668424aea5534f74baf343f4759) who changed some settings?&lt;/p&gt;</description>
    </item>
    <item>
      <title>使用 VPS 和 Gentoo 打造安全高效的个人网络基地 – 安装 Gentoo</title>
      <link>https://blog.xupeng.me/2009/01/04/build-personal-network-base-with-vps-gentoo-2/</link>
      <pubDate>Sun, 04 Jan 2009 08:00:00 +0800</pubDate>
      <guid>https://blog.xupeng.me/2009/01/04/build-personal-network-base-with-vps-gentoo-2/</guid>
      <description>&lt;p&gt;首先需要使用 &#xA;&lt;a href=&#34;http://www.linode.com/?r=cd5198f9daf6a668424aea5534f74baf343f4759&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;Linode&lt;/a&gt; 的管理后台部署一个 64 位系统，利用它来安装 Gentoo，我选择了使用 CentOS，部署 CentOS 时我只使用了我一小部分的磁盘空间(2G)，以便留下足够的空间给 Gentoo 使用。&lt;/p&gt;</description>
    </item>
    <item>
      <title>使用 VPS 和 Gentoo 打造安全高效的个人网络基地 – 开篇</title>
      <link>https://blog.xupeng.me/2009/01/03/build-personal-network-base-with-vps-gentoo-1/</link>
      <pubDate>Sat, 03 Jan 2009 08:00:00 +0800</pubDate>
      <guid>https://blog.xupeng.me/2009/01/03/build-personal-network-base-with-vps-gentoo-1/</guid>
      <description>&lt;p&gt;是的，我承认我有点偏执有点疯狂，有点完美主义，我要使用 VPS+Gentoo 打造我的个人网络基地，所涉及到的软件和系统会有 Gentoo, Apache, Nginx, tinyproxy, daemontool, Blog, Trac 等等以及以后可能会使用的一些系统，还会涉及到 Linux 的安全配置和优化，借此记录一下完整的构建过程，留作日后参考。&lt;/p&gt;</description>
    </item>
    <item>
      <title>使用 PostgreSQL 时遇到的编码错误</title>
      <link>https://blog.xupeng.me/2009/01/01/encoding-error-of-postgresql/</link>
      <pubDate>Thu, 01 Jan 2009 08:00:00 +0800</pubDate>
      <guid>https://blog.xupeng.me/2009/01/01/encoding-error-of-postgresql/</guid>
      <description>&lt;p&gt;PostgreSQL 数据库的编码为 UTF8（在 PostgreSQL 里 UNICODE 是 UTF8 的别名，二者要表达的意义是一样的），当往数据表的 varchar 字段里插入字符串的时候，遇到编码错误：&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#93a1a1;background-color:#002b36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-fallback&#34; data-lang=&#34;fallback&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;test=# insert into bb values (E&amp;#39;\x80\x02]q\x01(U\x01aU\x06\xe5\x93\x88\xe5\x93\x88q\x02e.&amp;#39;);&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;ERROR:  invalid byte sequence for encoding &amp;#34;UTF8&amp;#34;: 0x80&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;HINT:  This error can also happen if the byte sequence does not match the encoding expected by the server, which is controlled by &amp;#34;client_encoding&amp;#34;.&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;为了理解造成这个错误的原因，我和小蔡花了差不多一个小时在这上面，从这个错误的字面意义上理解，是在以 UTF8 编码存储这个字符串的时候，遇到了编码错误，其实类似这样的编码错误在使用 Python 进行文本解析做编解码时会经常遇到，但又通常忽略之。&lt;/p&gt;</description>
    </item>
    <item>
      <title>分享一点关于虚拟主机的经验</title>
      <link>https://blog.xupeng.me/2008/11/24/my-experience-with-web-hosting/</link>
      <pubDate>Mon, 24 Nov 2008 08:00:00 +0800</pubDate>
      <guid>https://blog.xupeng.me/2008/11/24/my-experience-with-web-hosting/</guid>
      <description>&lt;p&gt;到现在为止我用过三家的虚拟主机，积累了一点点的经验教训，我想这丁点东西对刚接触虚拟主机的兄弟们可能会有一些用处。&lt;/p&gt;&#xA;&lt;p&gt;我用的第一个虚拟主机是51boo.com，这是当时国内号称唯一支持Django，有SSH的虚拟主机，兴高采烈的花了199买了一年的服务，没成想只用了两个月51boo.com就销声匿迹了，于是我的第一个虚拟主机就这样灰飞烟灭了。&lt;/p&gt;</description>
    </item>
    <item>
      <title>更新了一下两年前写的用来从百度下载歌曲的脚本 - getsong</title>
      <link>https://blog.xupeng.me/2008/11/22/update-getsong-to-download-songs-from-baidu/</link>
      <pubDate>Sat, 22 Nov 2008 08:00:00 +0800</pubDate>
      <guid>https://blog.xupeng.me/2008/11/22/update-getsong-to-download-songs-from-baidu/</guid>
      <description>前一阵子有网友告诉我我两年前写的从百度下载歌曲的脚本不工作了，原因呢是百度修改了歌曲 URL 的加密算法，嗯，我是挺久没有使用过这个脚本了，最近也比较忙，今天花了点时间看了一下，对脚本做了一下更新，功能与之前没有任何的改动，只是修改了解析歌曲 URL 的部分，让它现在可以工作了。&#xA;&#xA;之前最新的代码放在了啄木鸟社区的 SVN 仓库，google code 只有一个比较老的版本，不过这次把代码提交到了google code，以后如果再有更新的话也都会提交到 google code 去。&#xA;&#xA;项目地址是：&lt;a href=&#34;http://code.google.com/p/getsong/&#34; target=&#34;_blank&#34;&gt;http://code.google.com/p/getsong/&lt;/a&gt;，可以从 SVN 仓库中 checkout 最新的代码：&#xA;svn checkout http://getsong.googlecode.com/svn/trunk/ getsong&#xA;或者下载目前最新的可工作版本：&lt;a href=&#34;http://getsong.googlecode.com/files/getsong.tar.gz&#34;&gt;http://getsong.googlecode.com/files/getsong.tar.gz&lt;/a&gt;</description>
    </item>
    <item>
      <title>再次搬家</title>
      <link>https://blog.xupeng.me/2008/11/05/move-again/</link>
      <pubDate>Wed, 05 Nov 2008 08:00:00 +0800</pubDate>
      <guid>https://blog.xupeng.me/2008/11/05/move-again/</guid>
      <description>&lt;p&gt;很不幸，我又要给 blog 搬家了，虽然我很少写 blog。&lt;/p&gt;&#xA;&lt;p&gt;之前的 blog.archnotes.com 是放在 Hostmonster 的共享虚拟主机上，但是前不久 Hostmonster 在没有提前通知我的情况下就停止了我的账号，这让我很恼火，同时也对他们失去了信心。十一期间了买了 &#xA;&lt;a href=&#34;http://www.linode.com/?r=cd5198f9daf6a668424aea5534f74baf343f4759&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;Linode&lt;/a&gt; 的 VPS，干脆就借此机会把 blog 也迁到 &#xA;&lt;a href=&#34;http://www.linode.com/?r=cd5198f9daf6a668424aea5534f74baf343f4759&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;Linode&lt;/a&gt; 去好了，但因为之前的域名(archnotes.com)是购买 Hostmonster 的服务时免费赠送的，没有办法迁出来，现在成了一个只能在 Hostmonster 使用的“死域名&amp;quot;，sigh…&lt;/p&gt;</description>
    </item>
    <item>
      <title>诺基亚 N810 初体验</title>
      <link>https://blog.xupeng.me/2008/04/12/experience-for-nokia-n810/</link>
      <pubDate>Sat, 12 Apr 2008 08:00:00 +0800</pubDate>
      <guid>https://blog.xupeng.me/2008/04/12/experience-for-nokia-n810/</guid>
      <description>&lt;p&gt;上周拿到了公司技术长老大张的诺基亚 N810 internet tablet，说说这几天的使用体验吧。&lt;/p&gt;&#xA;&lt;p&gt;先说说硬件配置：&#xA;4.13 英寸 65535 色 TFT 触控式液晶屏，800x480 的分辨率，400Mhz TI OMAP 2420 CPU，128M 内存，256M 内置 Flash 卡预装 maemo os2008 操作系统，内置 2G 的存储卡，还有一个 miniSD 卡槽，可以使用最大 8G 的 miniSD 存储卡，这样就可以达到 10G 的存储容量，够用了。对了，还有内置的 GPS，30 万像素摄像头。&lt;/p&gt;</description>
    </item>
    <item>
      <title>新装 Debain unstable 遇到的一些问题</title>
      <link>https://blog.xupeng.me/2008/03/30/problems-met-in-debian-unstabl/</link>
      <pubDate>Sun, 30 Mar 2008 08:00:00 +0800</pubDate>
      <guid>https://blog.xupeng.me/2008/03/30/problems-met-in-debian-unstabl/</guid>
      <description>出于学习的需要，安装了 Debian etch，并升级到了 unstable，使用中遇到了几个小问题：&#xA;&lt;ol&gt;&#xA;&#x9;&lt;li&gt;/dev/rtc 有问题&#xA;&lt;pre&gt;&#xA;# hwclock --utc --systohc&#xA;select() to /dev/rtc to wait for clock tick timed out&#xA;&lt;/pre&gt;&#xA;经 Google 发现是系统使用的 rtc.ko 内核模块的问题，使用 genrtc.ko 就没有问题，于是修改 /etc/modprobe.d/pnp-hotplug 中的 alias pnp:dPNP0b00 rtc 为 alias pnp:dPNP0b00 genrtc，解决问题。&#xA;&lt;/li&gt;&#xA;&#x9;&lt;li&gt;Gnome Terminal 的标题不能随着当前目录的路径动态变化了&#xA;经检查是 Debian 没有设置 PROMPT_COMMAND 这个环境变量造成的，在 /etc/profile 中设置即可&#xA;&lt;pre&gt;&#xA;export PROMPT_COMMAND=&#39;echo -ne &#34;\033]0;${USER}@${HOSTNAME%%.*}:${PWD/$HOME/~}\007&#34;&#39;&#xA;&lt;/pre&gt;&#xA;&lt;/li&gt;&#xA;&lt;/ol&gt;</description>
    </item>
    <item>
      <title>VIM 魔术: 图文实例展示</title>
      <link>https://blog.xupeng.me/2008/03/20/vim-magic/</link>
      <pubDate>Thu, 20 Mar 2008 08:00:00 +0800</pubDate>
      <guid>https://blog.xupeng.me/2008/03/20/vim-magic/</guid>
      <description>&lt;p&gt;绩效评估，计算工作时间，顺便就拿 VIM 来说事吧，在 VIM 中变个小魔术，完成这个小任务;)&#xA;原始材料是这样的：&lt;/p&gt;&#xA;&lt;p&gt;&lt;a href=&#34;https://blog.xupeng.me/downloads/gallery/screenshots/VIM-magic-1.gif&#34; target=&#34;_blank&#34;&gt;&lt;img src=&#34;https://blog.xupeng.me/downloads/gallery/screenshots/VIM-magic-1.gif&#34; alt=&#34;original text&#34; width=500 /&gt;&lt;/a&gt;&lt;/p&gt;&#xA;&lt;p&gt;这是原始的按照时间顺序进行的统计。我想要的结果是，分别计算出每人的工作时间，那么第一步，去掉每行末尾的 &amp;ldquo;Indicator Edit Delete&amp;rdquo;。&#xA;首先录制一个宏，可以在命令模式下使用这样的按键序列：ggqd0fId$jq&#xA;把这串按键序列分开来开是这样的意思：&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;gg: 回到文件的第一行&lt;/li&gt;&#xA;&lt;li&gt;q: 开始录制一个宏&lt;/li&gt;&#xA;&lt;li&gt;d: 定义了宏的名字是 d&lt;/li&gt;&#xA;&lt;li&gt;0: 回到行首&lt;/li&gt;&#xA;&lt;li&gt;fI: 光标在行内移动到第一个 I 字符处&lt;/li&gt;&#xA;&lt;li&gt;d$: 删除从光标处到行尾的所有字符&lt;/li&gt;&#xA;&lt;li&gt;j: 移动到下一行&lt;/li&gt;&#xA;&lt;li&gt;q: 结束宏的录制&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;okay，宏录制完了，把它绑定到 F7 键上，这样子：&#xA;:map &amp;lt;F7&amp;gt; @d&amp;lt;Enter&amp;gt;&#xA;这是一个冒号命令，就是在命令模式下，依次输入上面的按键(&amp;lt;Enter&amp;gt;指代回车)，好，现在可以一直按着 F7 键不动，很快文件就变成了下面的样子：&lt;/p&gt;</description>
    </item>
    <item>
      <title>给本本升级到了 4G 内存！</title>
      <link>https://blog.xupeng.me/2008/03/13/upgrade-memory-to-4g/</link>
      <pubDate>Thu, 13 Mar 2008 08:00:00 +0800</pubDate>
      <guid>https://blog.xupeng.me/2008/03/13/upgrade-memory-to-4g/</guid>
      <description>&lt;p&gt;今天终于把本本的内存升级到了 4G，其实 2G 内存在日常工作和娱乐中已经足够使用了，甚至大部分时间都是用不完的，之所以要升级到 4G，是因为我需要跑一些虚拟机，用来做测试和学习，这样原本充足的内存就有点捉襟见肘了，还有另外一个原因是：现在内存挺便宜（285 一条 2G），哈哈&lt;/p&gt;</description>
    </item>
    <item>
      <title>给virt-manager写了几个pkgbuild</title>
      <link>https://blog.xupeng.me/2008/03/03/created-four-pkgbuilds-for-virt-manager/</link>
      <pubDate>Mon, 03 Mar 2008 08:00:00 +0800</pubDate>
      <guid>https://blog.xupeng.me/2008/03/03/created-four-pkgbuilds-for-virt-manager/</guid>
      <description>virt-manager是一个用来管理虚拟机的软件，现在可以支持xen、 qemu和kvm，使用它可以简化虚拟机的建立、监控和管理工作。&#xA;&#xA;我想在archlinux下使用virt-manager，不过archlinux官方仓库里没有virt-manager的软件包，aur里目前也没有pkgbuild，没有办法，只能自己动手了，总共有四个相关的软件包：libvirt、 virtviewer、 virtinst和virt-manager，我现在已经把这个四个软件包的pkgbuild提交到了aur，在&lt;a href=&#34;http://aur.archlinux.org/packages.php?K=recordus&amp;amp;SeB=m&#34; target=&#34;_blank&#34;&gt;这里&lt;/a&gt;可以看到，也可以使用yaourt直接安装。&#xA;&lt;pre&gt;yaourt -S virt-manager&lt;/pre&gt;&#xA;实际上，virtviewer这个软件原本的名字应该是virt-viewer，奇怪的是，在我向aur提交virt-viewer的pkgbuild时，总是告诉我不能覆盖virt-viewer这个包，但是事实上archlinux官方的软件仓库和aur里都没有叫这个名字的包，很无奈只有把它重命名为virtviewer提交了上去，至少现在可以用了;)&#xA;&#xA;嗯，如果你也需要virt-manager，并且你也使用这些pkgbuild的话，别忘了给它们投一票，进了官方仓库就不用这么麻烦自己build啦。</description>
    </item>
    <item>
      <title>python函数之max和reduce</title>
      <link>https://blog.xupeng.me/2008/02/19/python-function-max-and-reduce/</link>
      <pubDate>Tue, 19 Feb 2008 08:00:00 +0800</pubDate>
      <guid>https://blog.xupeng.me/2008/02/19/python-function-max-and-reduce/</guid>
      <description>&lt;p&gt;问题：&#xA;我有这样的一个列表：&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#93a1a1;background-color:#002b36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-fallback&#34; data-lang=&#34;fallback&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;[&amp;#39;a.b.c.d11u.e.f.g&amp;#39;, &amp;#39;e.f88.g&amp;#39;, &amp;#39;caa3.z.brr&amp;#39;, &amp;#39;z.48.ff.ee&amp;#39;]&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;需要找节点最多的一个（节点间由.分割）&lt;/p&gt;&#xA;&lt;p&gt;看似简单的工作，要用 Pythonic 的方法来做，还是要对 Python 的内置函数有一定程度的熟悉，比如这里可以用最熟悉不过的max，但是会用到它并不常用的可选参数:key&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#93a1a1;background-color:#002b36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-fallback&#34; data-lang=&#34;fallback&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;node_list = [&amp;#39;a.b.c.d11u.e.f.g&amp;#39;, &amp;#39;e.f88.g&amp;#39;, &amp;#39;caa3.z.brr&amp;#39;, &amp;#39;z.48.ff.ee&amp;#39;]&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;max_node = max(node_list, key=lambda n: n.count(&amp;#39;.&amp;#39;))&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;在这里，使用key参数改变了max比较列表元素的方法，达到了完成任务的目的。&lt;/p&gt;</description>
    </item>
    <item>
      <title>汗，postgresql从8.1就提供了查看物理存储空间的函数了……</title>
      <link>https://blog.xupeng.me/2008/02/14/functions-for-getting-physical-storage-since-81/</link>
      <pubDate>Thu, 14 Feb 2008 08:00:00 +0800</pubDate>
      <guid>https://blog.xupeng.me/2008/02/14/functions-for-getting-physical-storage-since-81/</guid>
      <description>http://www.postgresql.org/docs/8.1/interactive/functions-admin.html&#xA;&#xA;比如：&#xA;&lt;pre&gt;&#xA;=&gt; SELECT pg_database_size(&#39;myproject&#39;);&#xA; pg_database_size&#xA;------------------&#xA;          9641188&#xA;(1 row)&#xA;&#xA;=&gt; SELECT pg_relation_size(&#39;mytable&#39;);&#xA; pg_relation_size&#xA;------------------&#xA;             8192&#xA;(1 row)&#xA;&lt;/pre&gt;</description>
    </item>
    <item>
      <title>在postgresql中查看数据库/表占用的物理存储空间大小</title>
      <link>https://blog.xupeng.me/2008/02/13/physical-storage-for-dbs-tables-in-postgre/</link>
      <pubDate>Wed, 13 Feb 2008 08:00:00 +0800</pubDate>
      <guid>https://blog.xupeng.me/2008/02/13/physical-storage-for-dbs-tables-in-postgre/</guid>
      <description>&lt;p&gt;今天需要估算项目的数据需要什么数量级的存储空间，项目使用postgresql数据库，postgresql没有提供meta信息来查看数据库／表占用的物理存储空间，不过使用间接的方法也能够得到想要的数据，以我使用的postgresql 8.3为例：  查看数据库的存储空间：&lt;/p&gt;</description>
    </item>
    <item>
      <title>搬家喽，在hostmonster落户;)</title>
      <link>https://blog.xupeng.me/2008/02/13/move-blog-to-hostmonster/</link>
      <pubDate>Wed, 13 Feb 2008 08:00:00 +0800</pubDate>
      <guid>https://blog.xupeng.me/2008/02/13/move-blog-to-hostmonster/</guid>
      <description>看了一阵子的虚拟主机，比来比去还是hostmonster比较实惠，嗯，就它了，坚持写blog，该记下的东西还是得记下的，俺新的blog在：&lt;br /&gt;&lt;br /&gt;&lt;a href=&#34;http://blog.archnotes.com&#34; target=&#34;_blank&#34;&gt;http://blog.archnotes.com&lt;/a&gt;&lt;br /&gt;</description>
    </item>
    <item>
      <title>Tricks to use sub-domain name at hostmonster.com</title>
      <link>https://blog.xupeng.me/2008/01/27/tricks-to-use-sub-domain-name-at-hostmonster-com/</link>
      <pubDate>Sun, 27 Jan 2008 08:00:00 +0800</pubDate>
      <guid>https://blog.xupeng.me/2008/01/27/tricks-to-use-sub-domain-name-at-hostmonster-com/</guid>
      <description>I have a domain name(thinkingtracker.com) which is registered at godaddy.com, I think godaddy is one of the best domain name providers, because it’s price is relatively lower, and most important thing is that godaddy allow you to control your domain name in very detail mode, such as you can set your mx records, add/delete cname, add/delete a record, it’s very convince if you need flexibility as I need.&#xA;&#xA;My requirement:&#xA;&lt;ol&gt;&#xA;&#x9;&lt;li&gt;use my domain name(thinkingtracker.com) to setup google apps service.&lt;/li&gt;&#xA;&#x9;&lt;li&gt;point one of my sub-domain to my company’s server, to serve my django powered blog.&lt;/li&gt;&#xA;&#x9;&lt;li&gt;point one of my sub-domain to hostmonster.com, to test hostmonster’s service, then determine if I use it as my next virtual hosting provider.&lt;/li&gt;&#xA;&lt;/ol&gt;&#xA;My requirement is very simple, right? but unfortunately it is not that easy as I think at first. I first setup my google apps service, and then point one of my sub-domain name to our companny, these two steps work perfectly. but the last one make me very disappointed, there is no way to just point one sub-domain to hostmonster, the only way to use a new domain name is to add my domain name as an add-on domain name, which means that I should use hostmonster’s DNS server as my domain’s default DNS server, in that way, I cannot point any of my sub-domain to my company’s server.&#xA;&#xA;But I find there are tricks to satisfy my requirement:&#xA;&lt;ol&gt;&#xA;&#x9;&lt;li&gt;change my default DNS server to hostmonster.com’s ones, then add my domain name as an add-on domain name at hostmonster.com, now I can add as much sub-domain names as I want, but this sub-domain names can only be used at hostmonster.for example: I add cake.thinkingtracker.com and django.thinkingtracker.com&lt;/li&gt;&#xA;&#x9;&lt;li&gt;change the default DNS server to godaddy’s ones, and add A records which point to hostmonster’s IP, for example: I add two A records:&#xA;&lt;pre class=&#34;wiki&#34;&gt;cake -&amp;gt; 1.1.1.1(hostmonster IP)&#xA;django -&amp;gt; 1.1.1.1(hostmonster IP)&lt;/pre&gt;&#xA;&lt;/li&gt;&#xA;&#x9;&lt;li&gt;add A records point to my company’s server.&lt;/li&gt;&#xA;&lt;/ol&gt;&#xA;ah, all works perfectly now, tastes great!</description>
    </item>
    <item>
      <title>在postgresql中查看数据库/表占用的物理存储空间大小</title>
      <link>https://blog.xupeng.me/2007/06/29/log-into-vmware-server-with-root/</link>
      <pubDate>Fri, 29 Jun 2007 08:00:00 +0800</pubDate>
      <guid>https://blog.xupeng.me/2007/06/29/log-into-vmware-server-with-root/</guid>
      <description>因为需要使用物理硬盘，而普通用户是没有权的，google的搜索结果中有人有说更改sshd的配置，使之允许root登录就可以，这个方法看来不可行，因为我的ssh原本就是允许root登录的。&lt;br /&gt;&lt;br /&gt;查看vmware配置文件所在目录，发现有文件/etc/vmware/vmwaregroup，尝试在其中加入新的一行：wheel，然后重新启动vmware服务就可以了。&lt;br /&gt;&lt;br /&gt;</description>
    </item>
    <item>
      <title>回忆百度招聘</title>
      <link>https://blog.xupeng.me/2007/06/13/recall-interview-with-baidu/</link>
      <pubDate>Wed, 13 Jun 2007 08:00:00 +0800</pubDate>
      <guid>https://blog.xupeng.me/2007/06/13/recall-interview-with-baidu/</guid>
      <description>&lt;p&gt;2006年9月27日，我向百度“搜索新产品运维工程师”一职投递了简历，杳无音讯，直到5月21号，我收到一条短信告诉我我的背景符合该职位的要求，让我于22日11:00参加在线笔试，当时有一些事情我正在回家的路上，并不方便上网，不过我尽快办完了事情后在第二天11点之前赶回了学校，参加这场迟到的笔试。&lt;/p&gt;</description>
    </item>
    <item>
      <title>vmware崩溃了，浅谈几种虚拟机的使用感受</title>
      <link>https://blog.xupeng.me/2007/05/07/thoughts-about-virtulization-technoligies/</link>
      <pubDate>Mon, 07 May 2007 08:00:00 +0800</pubDate>
      <guid>https://blog.xupeng.me/2007/05/07/thoughts-about-virtulization-technoligies/</guid>
      <description>Vmware workstation又崩溃了，似乎在我这里很容易崩溃，但我不知道到底在怎样的情况下能够重现，虽然在我这里已经出现了两次了。&#xA;&#xA;跟升级有关？上一次崩溃是因为vmware workstation有了新版本，随手emerge -u给升级了，结果升级以后就不能用了：&#xA;&lt;pre class=&#34;wiki&#34;&gt;aiyi@devr bin $ vmware&#xA;process 1694: Attempt to remove filter function 0xb6b74956 user data 0×87ff3a0, but no such filter has been added&#xA;  D-Bus not built with -rdynamic so unable to print a backtrace&#xA;process 1705: Attempt to remove filter function 0xb6f81956 user data 0×88018a0, but no such filter has been added&#xA;  D-Bus not built with -rdynamic so unable to print a backtrace&lt;/pre&gt;&#xA;Vmware player也是一样，再降回老版本也不成，卸载，删除系统中所有与vmware相关的的文件包括没有卸载干净的文件、配置文件、内核模块等等，这下再安 装总该行了吧？结果还是没戏…… 但又不能没有vmware，因为我所用的河南网通当时没有linux下的pppoe客户端（现在也没有，不过也不需要了），又使用了非标准的认证（我当时 这么认为，现在被证明是错误的），只能用vmware的bridge模式在虚拟的windows拨号再共享给我的gentoo。非常无奈之下只得重新安装 了一份gentoo，代价之大令我不堪回首。&#xA;&#xA;这次又崩溃了，是前些时在公司里为了尝试新的vmware workstation 6.0，结果新的没用上旧的反倒牺牲了，跟上次一模一样的问题，依然没有解决办法，google也有没用的时候啊，hiahia。算了，尝试其他的虚拟技 术吧，现在的虚拟技术这么多，不一定非要用vmware吧，因为我现在不需要虚拟的windows来拨号上网了。&#xA;&#xA;先用kvm，以前用过qemu+kqemu，跑windows 2003非常的快，而xp或者2k就逊色多了，这次使用kvm，结果让我很失望，跑xp的速度还不及qemu+kqemu（主观感觉而已），并且只能使用 标准的分辨率，1280×800的宽屏就很无奈了，全屏太丑，窗口模式800×600太小，1024×768又会有一部分看不到，有点鸡肋的感觉，换吧。&#xA;&#xA;再试virtualbox，这个东西速度真不错，kvm还需努力啊。在guest机里装上 additions也可以适应宽屏，其实任意分辨率都没有问题，你要是高兴，可以用1000×100？呵呵。不过它也有它的缺点，用usb设备太麻烦，网 络也不容易使用，欠灵活性，还有就是guest和host的Ctrl+Space是有冲突的，全屏也不行，不得不让我使用其他的方法来启动或关闭 guest里的输入法，十分别扭。时不时的还会出现一些古怪的问题，比如guest里键盘不能输入，分辨率不能自适应，但是重启一下可能就又好了。不过总 体上来说vrtualbox是一款很不错的软件，速度很好，起码给用户的速度感受很好，内置的RDP支持也很方便。&#xA;&#xA;还是不太如意，试试vmware server？先装一个vmware server console看，ok，这个居然可以起来，那就来一个vmwae server吧，太好了，居然起来了，没有vmware workstation在我这里给我的崩溃感，就是它了，呵呵。虽说vmware server是免费版的，但是1.0.3还是需要serial number的，到 &lt;a class=&#34;ext-link&#34; href=&#34;http://register.vmware.com/content/registration.html&#34;&gt;&lt;span class=&#34;icon&#34;&gt; &lt;/span&gt;http://register.vmware.com/content/registration.html&lt;/a&gt; 注册一个就可以了。&#xA;&#xA;PS:qemu、kvm、virtualbox都是分给多少内存就全拿去，而不是如vmware一样用多少拿多少，很奇怪他们这样做我还是没有比使用vmware时更好的速度体验呢？</description>
    </item>
    <item>
      <title>用于查找包含某个关键字的命令的脚本</title>
      <link>https://blog.xupeng.me/2007/04/16/python-script-for-finding-commands/</link>
      <pubDate>Mon, 16 Apr 2007 08:00:00 +0800</pubDate>
      <guid>https://blog.xupeng.me/2007/04/16/python-script-for-finding-commands/</guid>
      <description>用于查找包含某个关键字的命令的脚本，时不时用一用可能会有意想不到的收获，找到你非常想用但是你不知道的命令哦:)&#xA;&#xA;&lt;pre&gt;&#xA;#!/usr/bin/python&#xA;&#xA;import os&#xA;import sys&#xA;import glob&#xA;&#xA;def color_keyword(str, keyword):&#xA;    has_output = True&#xA;    try:&#xA;        from output import red&#xA;    except:&#xA;        has_output = False&#xA;    colored_str = &#39;&#39;&#xA;    partials = str.split(keyword)&#xA;    for partial in partials[:-1]:&#xA;        colored_str += partial + (has_output and red(keyword) or keyword)&#xA;    colored_str += partials[-1]&#xA;&#xA;    return colored_str&#xA;&#xA;def main():&#xA;    if len(sys.argv) &lt; 2:&#xA;        print &#39;Usage: %s keyword&#39; % sys.argv[0]&#xA;        sys.exit(1)&#xA;&#xA;    keyword = sys.argv[1]&#xA;&#xA;    paths = os.environ[&#39;PATH&#39;].split(&#39;:&#39;)&#xA;    cmds = []&#xA;    for path in paths:&#xA;        if path.startswith(&#39;~&#39;):&#xA;            path = os.path.expanduser(path)&#xA;        if not path.endswith(&#39;/&#39;):&#xA;            path += &#39;/&#39;&#xA;        cmds.extend(glob.glob(path + &#39;*&#39;))&#xA;    for cmd in cmds:&#xA;        dirname, filename = cmd.rsplit(&#39;/&#39;, 1)&#xA;        if keyword in filename:&#xA;            print &#39;/&#39;.join([dirname, color_keyword(filename, keyword)])&#xA;&#xA;if __name__ == &#39;__main__&#39;:&#xA;    main()&#xA;&#xA;&lt;/pre&gt;&lt;/pre&gt;</description>
    </item>
    <item>
      <title>iWeather-爱天气</title>
      <link>https://blog.xupeng.me/2007/04/13/iweather-gnome-applet-for-weather-report/</link>
      <pubDate>Fri, 13 Apr 2007 08:00:00 +0800</pubDate>
      <guid>https://blog.xupeng.me/2007/04/13/iweather-gnome-applet-for-weather-report/</guid>
      <description>gnome自带的天气预报applet不能更新北京的天气了，于是乎自己写了一个，使用了国内的天气预报网站（问天网），在google code立了一个小项目，项目svn：&#xA;&#xA;svn checkout http://iweather.googlecode.com/svn/trunk iweather</description>
    </item>
    <item>
      <title>阳光明媚，但有些事情你永远不能明白，有些人你永远无法理解</title>
      <link>https://blog.xupeng.me/2007/04/04/something-not-understanddable/</link>
      <pubDate>Wed, 04 Apr 2007 08:00:00 +0800</pubDate>
      <guid>https://blog.xupeng.me/2007/04/04/something-not-understanddable/</guid>
      <description>如此而已</description>
    </item>
    <item>
      <title>今年冬天特别冷</title>
      <link>https://blog.xupeng.me/2007/01/06/its-very-code-this-winter/</link>
      <pubDate>Sat, 06 Jan 2007 08:00:00 +0800</pubDate>
      <guid>https://blog.xupeng.me/2007/01/06/its-very-code-this-winter/</guid>
      <description>&lt;div&gt;今天冬天特别冷，宿舍没有暖气，坐着常常被冻得小腿麻木，有点难以忍受;今年冬天特别冷，总是会有坏消息传来，真的是因为本命年么？我不相信，我对自己有信心。打算这两天回家，不在这里耗了，尽管上网会非常的不方便，但是我可以有更多的时间来看书，何尝不是一件快事？也不用再为了吃什么饭而犯愁，同时做好节后去上海的心理准备。&lt;/div&gt;&#xA;&lt;div&gt;&amp;nbsp;&lt;/div&gt;&#xA;&lt;div&gt;找工作是一件辛苦的事情，不得不面对等待的煎熬，所以朋友为了减少这种煎熬用最快的速度找了一份工作安下心来，这未尝不是一个好办法，但是我实在不愿意去做一份我不是十分喜欢的工作，而我最喜欢的技术在国内才是刚刚露出冰山一角，因而找一份自己喜欢的工作真是难上加难，和DR的面试官随便谈些技术话题，他哈哈笑着说：你关心的技术太前卫了。的确如此，或许我真的应该退而求其次，先找一份能让自己安身的工作再谈其他吧，我还是需要再调整一下心态，乱。&lt;/div&gt;</description>
    </item>
    <item>
      <title>我是怎么用vmware的</title>
      <link>https://blog.xupeng.me/2007/01/06/how-do-i-use-vmware/</link>
      <pubDate>Sat, 06 Jan 2007 08:00:00 +0800</pubDate>
      <guid>https://blog.xupeng.me/2007/01/06/how-do-i-use-vmware/</guid>
      <description>&lt;p&gt;作者：Xupeng Yun &amp;lt;recordus at gmail.com&amp;gt;&lt;/p&gt;&#xA;&lt;p&gt;Vmware是个好东西，用法有很多啦，对个人来讲平时最常用到vmware的地方大概是做系统测试，做网络试验等等，不过还有一些比较另类的用法，比如我使用vmware的一些情况：&lt;br /&gt;&lt;br /&gt;&lt;span style=&#34;COLOR: rgb(0,128,255)&#34;&gt;1.无光软安装系统到物理硬盘&lt;/span&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; 这种情况估计很多人都遇到过。使用vmware无光软安装linux到物理硬盘是个很简便的方法，当然完全可以不使用vmware完成无光软安装linux，甚至更方便更快速，但是也有一些情况还是需要使用vmware的。比如：Mac OS X x86不可以硬盘安装，像我这等穷人又没有DVD刻录机，那就只好使用vmware来安装了，一样体验Mac OS X带来的快感。&lt;br /&gt;&lt;br /&gt;&lt;span style=&#34;COLOR: rgb(0,128,255)&#34;&gt;2.在windows下访问lvm2+reiserfs&lt;/span&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; 在windows下有访问lvm2的工具，也有访问reiserfs的工具，但就是没有能够访问lvm2+reiserfs的工具，不幸的是我使用的就是这样的组合，怎么办？vmware！在windows下使用vmware最小化安装一个linux，比如用debian，加装lvm2和reiserfs相关的工具。虚拟linux安装完成以后停止虚拟机，给虚拟机添加一块儿硬盘，要选择物理硬盘，网络连接选择host-only，这样就不会把流量压力施加给物理网络。重新启动虚拟linux，挂载物理硬盘上的lv，配置samba共享给windows就可以了。&lt;br /&gt;&lt;br /&gt;&lt;span style=&#34;COLOR: rgb(0,128,255)&#34;&gt;3.在linux下写ntfs分区&lt;/span&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; 现在可以使用ntfs-3g近乎完美读写ntfs分区的数据，但ntfs读写一度是我头疼的问题，当时我的解决方法同上，也就是在linux使用vmware安装windows 2000，给虚拟机加载物理硬盘，共享ntfs分区给linux。&lt;br /&gt;&lt;br /&gt;&lt;span style=&#34;COLOR: rgb(0,128,255)&#34;&gt;4.曲线救国来上网&lt;/span&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; 这种情况大概比较罕见，很少有人会遇到吧。这跟bt的ISP有关，我所用的ISP采用了非标准的PPPOE，以至于只能只用他们提供的客户端登陆网络，但又没有for linux的客户端。万般无奈我只好出此下策，在linux下使用vmware安装windows，网络连接选择Bridged模式，在windows中使用ISP的客户端登陆网络后共享给linux。&lt;br /&gt;&lt;br /&gt;工具的存在的意义是解决问题，本文提供的只是一种解决问题的思路，很多时候很多问题都是有解决办法的，你所需要做的就是开动脑筋灵活利用手中的工具而已。&lt;br /&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>firefox莫名崩溃的问题，启用临时替代方案</title>
      <link>https://blog.xupeng.me/2007/01/05/firefox-breaks/</link>
      <pubDate>Fri, 05 Jan 2007 08:00:00 +0800</pubDate>
      <guid>https://blog.xupeng.me/2007/01/05/firefox-breaks/</guid>
      <description>应该是与flash插件的兼容性不好所导致的，只要打开含有flash的页面马上就崩溃，几乎没有例外，唯一遇到的例外是登录进gmail就崩溃，gmail里有flash么？没发现。&lt;br /&gt;&lt;br /&gt;换了portage里所有版本的flash插件依然如故，firefox也没有任何的错误提示，让人摸不着头脑。在命令行下打开firefox看看其崩溃时出了什么异常，奇怪的是firefox又运行良好，不会崩溃了。在命令行运行和通过菜单打开这两种方式有些什么差别呢？环境变量么？目前还不太清楚，临时这么用着吧。&lt;br /&gt;</description>
    </item>
    <item>
      <title>好久没有更新了，杂记</title>
      <link>https://blog.xupeng.me/2007/01/01/some-thoughts-for-long-time-no-update/</link>
      <pubDate>Mon, 01 Jan 2007 08:00:00 +0800</pubDate>
      <guid>https://blog.xupeng.me/2007/01/01/some-thoughts-for-long-time-no-update/</guid>
      <description>&lt;div&gt;真的有好久没有更新了，杂事一大堆，处在毕业前的阵痛期吧，尽量使自己安定下来，学一点新东西。&lt;/div&gt;&#xA;&lt;div&gt;&amp;nbsp;&lt;/div&gt;&#xA;&lt;div&gt;Web开发，一直以来接触都不很多，当然也就一直都不熟悉，接下来该是认真学习一下Web开发知识的时候了，昨天看了些django，由于光缆的原因打开djangobook还是出奇的慢，现在也没有了好用的代理，页面总也不能完整的打开，用wget做的镜像也是一样没有办法看。&lt;/div&gt;&#xA;&lt;div&gt;&amp;nbsp;&lt;/div&gt;&#xA;&lt;div&gt;不过功夫不负有心人，在我的努力和耐心等待下我还是得到了完整的前10章的内容，看了大半。寒哪，发给Cheng Zhang的代码里，我还是把一些本属于template的东东直接写在了view里，虽然只有那么一点点。每每看一些新东西，总觉得以前做的东西不堪回首，sigh。django的MTV很有意思，也很清晰，这个概念和java的struts中的概念还是有很大区别的，觉得django的东西更容易理解用起来也更方便。巨喜欢django的url pattern，清晰优雅的url就靠它了。django的数据访问很方便，加上admin site，真是省了不少的功夫啊，赞。希望以后能够天天有python，日日有django，慢慢体会如此的幸福吧，呵呵。&lt;/div&gt;&#xA;&lt;div&gt;&amp;nbsp;&lt;/div&gt;&#xA;&lt;div&gt;JavaScript也没有写过，看了点prototype.js和rico.js的东西，浏览了一本javascript和ajax的电子书，总算是对ajax有了些懞懂的认识。jQuery似乎很热，得看看，刚刚定了它的maillist在写这点东西的时间里已有了3封mail，看来这一定是一个很好的东东，我喜欢好东东，就像我喜欢linux和python一样，喜欢，不惜代价。&lt;/div&gt;&#xA;&lt;div&gt;&lt;/div&gt;</description>
    </item>
    <item>
      <title>getsong增加新功能</title>
      <link>https://blog.xupeng.me/2006/11/17/add-new-functionalities-for-getsong/</link>
      <pubDate>Fri, 17 Nov 2006 08:00:00 +0800</pubDate>
      <guid>https://blog.xupeng.me/2006/11/17/add-new-functionalities-for-getsong/</guid>
      <description>&lt;span style=&#34;font-weight: bold;&#34;&gt;&#xA;&#x9;&#x9;修改了getsong，增添了如下的功能：&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;1。使用-n参数可以下载新歌Top n，实际上是从Top100中选出前n个而已，如：&lt;br /&gt;&amp;nbsp;&amp;nbsp; getsong -n 10&amp;nbsp; 可以只下载Top100中的前十个&lt;br /&gt;2。使用-d参数可以导出歌曲列表到当前目录的songlist文件，如:&lt;br /&gt;&amp;nbsp;&amp;nbsp; getsong -d -5 导出Top500&lt;br /&gt;&amp;nbsp;&amp;nbsp; getsong -d -n 70 导出Top100前70&lt;br /&gt;&amp;nbsp;&amp;nbsp; 用途：导出后可以编辑该文件以删除不需要下载的个去&lt;br /&gt;3。使用-f参数可以从当前目录的songlist文件读取歌曲列表来下载，如：&lt;br /&gt;&amp;nbsp;&amp;nbsp; getsong -f&lt;br /&gt;&amp;nbsp;&amp;nbsp; 用途：主要用于从-d参数导出的列表中下载，当然是你筛选过的列表。&lt;br /&gt;&lt;br /&gt;要使用最新版的getsong可以从svn软件仓库中检出，方法参见：&lt;a href=&#34;https://blog.xupeng.me/2006/11/13/在啄木鸟社区创建了pygetsong项目/&#34; target=&#34;_blank&#34;&gt;这里&lt;/a&gt;&lt;br /&gt;</description>
    </item>
    <item>
      <title>在啄木鸟社区创建了pygetsong项目</title>
      <link>https://blog.xupeng.me/2006/11/13/create-project-pygetsong-in-woodpecker/</link>
      <pubDate>Mon, 13 Nov 2006 08:00:00 +0800</pubDate>
      <guid>https://blog.xupeng.me/2006/11/13/create-project-pygetsong-in-woodpecker/</guid>
      <description>今天在limodou的引荐下向Zoom.Quiet申请在啄木鸟社区创建了pygetsong项目。&lt;br /&gt;项目的wiki页面地址为：&lt;br /&gt;&lt;a href=&#34;http://wiki.woodpecker.org.cn/moin/PyGetsong&#34; target=&#34;_blank&#34;&gt;http://wiki.woodpecker.org.cn/moin/PyGetsong&lt;/a&gt;&lt;br /&gt;项目的svn代码仓库地址为：&lt;br /&gt;&lt;a href=&#34;http://cvs.woodpecker.org.cn/svn/woodpecker/pygetsong/&#34; target=&#34;_blank&#34;&gt;http://cvs.woodpecker.org.cn/svn/woodpecker/pygetsong/&lt;/a&gt;&lt;br /&gt;感谢Zoom.Quiet，大中午还忙着配置pygetsong的svn仓库，感谢所有关心和支持pygetsong的人们：）&lt;br /&gt;&lt;br /&gt;从今天开始最新的getsong将会出现在svn软件仓库里，使用过程中出现问题的朋友请先检查一下所使用的getsong是否为最新版本，从svn获取最新getsong代码的方法如下：&lt;br /&gt;方法一：安装subversion客户端，使用如下命令：&lt;br /&gt;&amp;nbsp; &lt;span style=&#34;color: rgb(0, 1, 2);&#34;&gt;svn co &lt;/span&gt;http://cvs.woodpecker.org.cn/svn/woodpecker/pygetsong/&lt;span style=&#34;color: rgb(0, 1, 2);&#34;&gt;trunk getsong&lt;br /&gt;方法二：使用其他的svn客户端，使用方法参考该客户端的帮助文档。&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;</description>
    </item>
    <item>
      <title>改进mp3下载脚本，内置多线程下载和速度优先选择</title>
      <link>https://blog.xupeng.me/2006/11/09/integrate-mp3-download-script-with-multithreads/</link>
      <pubDate>Thu, 09 Nov 2006 08:00:00 +0800</pubDate>
      <guid>https://blog.xupeng.me/2006/11/09/integrate-mp3-download-script-with-multithreads/</guid>
      <description>昨天晚上进行了一些改进，使其不再依赖外部的下载程序而独立运行，在我的gentoo和windows xp下都运行良好。&lt;br /&gt;主要有三个改进：&lt;br /&gt;1。脚本改名为getsong（&lt;a href=&#34;http://blogimg.chinaunix.net/blog/upfile/061110212750.gz&#34; target=&#34;_blank&#34;&gt;下载&lt;/a&gt;），简单些，呵呵。&lt;br /&gt;&#xA;&#xA;2。内置多线程下载，不再依赖axel。&lt;br /&gt;&#xA;&#xA;3。选择速度较快的站点进行下载，减少等待时间。&lt;br /&gt;&lt;br /&gt;目前还有一些小毛病：在多线程下载一块儿，如有异常情况发生导致线程重试时产生错误的下载结果，这个应该不难修正，晚些时有空了再改一下。&lt;br /&gt;&lt;br /&gt;Changes：&lt;br /&gt;在linuxsir上pupilzeng的帮助下已经修正了多线程下载的错误，现在getsong算是一个基本上好用的小程序，说基本好用是因为：靠关键字在百度搜索所得的结果并不全是正确的，因此有可能下载的歌曲不是你想要的，尤其是下载的歌曲如果和某张专辑同名，那下载结果不正确的可能性还会大大提高。&lt;br /&gt;&lt;br /&gt;TODO：&lt;br /&gt;提高搜索精确度，尽量保证匹配精度。&lt;br /&gt;</description>
    </item>
    <item>
      <title>昨晚遭遇LVM2误操作，灾难恢复折腾人</title>
      <link>https://blog.xupeng.me/2006/11/08/recover-data-from-error-operation-on-lvm2/</link>
      <pubDate>Wed, 08 Nov 2006 08:00:00 +0800</pubDate>
      <guid>https://blog.xupeng.me/2006/11/08/recover-data-from-error-operation-on-lvm2/</guid>
      <description>&lt;p&gt;把新硬盘转为 LVM2 有个把月了，lv 的缩放的确方便，尽管不是天天缩放来玩儿，但说不定哪天就有这样的需要了，比如昨天就遇到这样的情况。昨天想要安装一个 Ubuntu 以备不时之需，因为新硬盘全部使用 LVM2 管理，这就需要从现在的 vg 中划分出一些空间给 Ubuntu 使用。&lt;code&gt;/dev/vg/data&lt;/code&gt; 这个 lv 有 110G 大小，其中只有 30G 多的数据，于是进行了如下的操作：&lt;/p&gt;</description>
    </item>
    <item>
      <title>用Python实现http多线程下载</title>
      <link>https://blog.xupeng.me/2006/11/03/multithreads-downloader-with-python/</link>
      <pubDate>Fri, 03 Nov 2006 08:00:00 +0800</pubDate>
      <guid>https://blog.xupeng.me/2006/11/03/multithreads-downloader-with-python/</guid>
      <description>用Python写了一个HTTP的多线程&lt;a href=&#34;http://blogimg.chinaunix.net/blog/upfile/061103115841.gz&#34;&gt;下载&lt;/a&gt;程序，代码还很简单，连接错误处理、重试等还都没有写，晚上有时间再完善完善。</description>
    </item>
    <item>
      <title>使用指南：好用的播放器mpd</title>
      <link>https://blog.xupeng.me/2006/10/30/review-and-guide-for-mpd/</link>
      <pubDate>Mon, 30 Oct 2006 08:00:00 +0800</pubDate>
      <guid>https://blog.xupeng.me/2006/10/30/review-and-guide-for-mpd/</guid>
      <description>&lt;font style=&#34;font-weight: bold;&#34; size=&#34;4&#34;&gt;使用指南：好用的播放器mpd&lt;/font&gt;&lt;br /&gt;作者：Xupeng Yun &amp;lt;recordus@gmail.com&amp;gt;&lt;br /&gt;&lt;br /&gt;mpd是目前我最喜欢的linux环境下的播放器，它跟常见的大多数播放器都很不同，比如它是c/s架构，mpd会作为一个守护进程运行在后台，通过各种各样的client软件来控制播放动作、播放列表等，从一开始使用我便喜欢上了这种方式。下面介绍一下它的使用方法和一些常见问题的解决方法。&lt;br /&gt;&lt;br /&gt;&lt;span style=&#34;font-weight: bold;&#34;&gt;一、安装&lt;/span&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; 我推荐使用最新的0.12.1版，因为我曾使用过0.11.5版，它对某些歌曲的长度识别有问题，而在最新的0.12.1中很正常，以下文字都是基于0.12.1版的。&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; 如果你跟我一样使用gentoo linux，那么你把portage更新到最新后emerge mpd就可以了：&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; emerge --sync&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; emerge mpd&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; 使用其他的发行版的用户可以检查一下软件仓库中是否已有mpd，比如debian/ubuntu用户可以：&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; apt-get install mpd&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; arch用户可以：&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; pacman -S mpd&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; 如果你使用的发行版还没有提供0.12.1版的二进制包，你可以从mpd官方网站(http://www.musicpd.org/files.shtml)下载源代码进行编译安装。&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; 使用tar命令解开源代码包后进入源码目录：&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; tar xf mpd-0.12.1.tar.gz&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; cd mpd-0.12.1&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; 编译安装：&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; ./configure --prefix=/usr&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; make&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; make install&lt;br /&gt;&lt;br /&gt;&lt;span style=&#34;font-weight: bold;&#34;&gt;二、mpd的配置&lt;/span&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; mpd的系统级配置文件是/etc/mpd.conf，配置方法参见该文件，常用的配置选项有如下几个：&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style=&#34;color: rgb(255, 1, 2);&#34;&gt;user&lt;/span&gt; 指定用来运行mpd的用户，建议使用默认的mpd用户&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style=&#34;color: rgb(255, 1, 2);&#34;&gt;music_directory&lt;/span&gt; 指定存放mp3文件的目录，确保user指定的用户对该目录及其子目录、文件有读写权限。&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style=&#34;color: rgb(255, 1, 2);&#34;&gt;filesystem_charset&lt;/span&gt; 要和你系统使用的locale一致，比如我的：&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style=&#34;color: rgb(0, 153, 2);&#34;&gt;aiyi@devr ~ $ locale&lt;/span&gt;&lt;br style=&#34;color: rgb(0, 153, 2);&#34;/&gt;&lt;span style=&#34;color: rgb(0, 153, 2);&#34;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; LANG=en_US.utf8&lt;/span&gt;&lt;br style=&#34;color: rgb(0, 153, 2);&#34;/&gt;&lt;span style=&#34;color: rgb(0, 153, 2);&#34;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; LC_CTYPE=zh_CN.utf8&lt;/span&gt;&lt;br style=&#34;color: rgb(0, 153, 2);&#34;/&gt;&lt;span style=&#34;color: rgb(0, 153, 2);&#34;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; LC_NUMERIC=&#34;en_US.utf8&#34;&lt;/span&gt;&lt;br style=&#34;color: rgb(0, 153, 2);&#34;/&gt;&lt;span style=&#34;color: rgb(0, 153, 2);&#34;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; LC_TIME=&#34;en_US.utf8&#34;&lt;/span&gt;&lt;br style=&#34;color: rgb(0, 153, 2);&#34;/&gt;&lt;span style=&#34;color: rgb(0, 153, 2);&#34;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; LC_COLLATE=&#34;en_US.utf8&#34;&lt;/span&gt;&lt;br style=&#34;color: rgb(0, 153, 2);&#34;/&gt;&lt;span style=&#34;color: rgb(0, 153, 2);&#34;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; LC_MONETARY=&#34;en_US.utf8&#34;&lt;/span&gt;&lt;br style=&#34;color: rgb(0, 153, 2);&#34;/&gt;&lt;span style=&#34;color: rgb(0, 153, 2);&#34;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; LC_MESSAGES=&#34;en_US.utf8&#34;&lt;/span&gt;&lt;br style=&#34;color: rgb(0, 153, 2);&#34;/&gt;&lt;span style=&#34;color: rgb(0, 153, 2);&#34;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; LC_PAPER=&#34;en_US.utf8&#34;&lt;/span&gt;&lt;br style=&#34;color: rgb(0, 153, 2);&#34;/&gt;&lt;span style=&#34;color: rgb(0, 153, 2);&#34;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; LC_NAME=&#34;en_US.utf8&#34;&lt;/span&gt;&lt;br style=&#34;color: rgb(0, 153, 2);&#34;/&gt;&lt;span style=&#34;color: rgb(0, 153, 2);&#34;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; LC_ADDRESS=&#34;en_US.utf8&#34;&lt;/span&gt;&lt;br style=&#34;color: rgb(0, 153, 2);&#34;/&gt;&lt;span style=&#34;color: rgb(0, 153, 2);&#34;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; LC_TELEPHONE=&#34;en_US.utf8&#34;&lt;/span&gt;&lt;br style=&#34;color: rgb(0, 153, 2);&#34;/&gt;&lt;span style=&#34;color: rgb(0, 153, 2);&#34;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; LC_MEASUREMENT=&#34;en_US.utf8&#34;&lt;/span&gt;&lt;br style=&#34;color: rgb(0, 153, 2);&#34;/&gt;&lt;span style=&#34;color: rgb(0, 153, 2);&#34;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; LC_IDENTIFICATION=&#34;en_US.utf8&#34;&lt;/span&gt;&lt;br style=&#34;color: rgb(0, 153, 2);&#34;/&gt;&lt;span style=&#34;color: rgb(0, 153, 2);&#34;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; LC_ALL=&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; 因此我就设置该选项为&#34;UTF-8&#34;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style=&#34;color: rgb(255, 1, 2);&#34;&gt;id3v1_encoding&lt;/span&gt; 指定mp3文件id3v1的编码，通常指定为&#34;GBK&#34;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style=&#34;color: rgb(255, 1, 2);&#34;&gt;后两项的设置很重要&lt;/span&gt;，它关系到你的歌曲信息是否能够正确显示。&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; 对mpd配置完毕后要创建歌曲数据库，使用命令：&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style=&#34;color: rgb(255, 1, 2);&#34;&gt;mpd --create-db&lt;/span&gt;&lt;br /&gt;&lt;span style=&#34;font-weight: bold;&#34;&gt;三、mpd的使用&lt;/span&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; 启动mpd：&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; 一般安装mpd时会安装一个启动脚本，比如mpd在gentoo下安装的启动脚本为/etc/init.d/mpd。&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style=&#34;color: rgb(255, 1, 2);&#34;&gt;/etc/init.d/mpd start&lt;/span&gt;就启动了mpd&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; mpd没有安装该脚本也无妨，直接运行mpd就可以了。&lt;br /&gt;&lt;br /&gt;&lt;span style=&#34;font-weight: bold;&#34;&gt;四、客户端软件的使用：&lt;/span&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; 我比较常用的客户端软件是mpc和gmpc，这些软件的安装都很简单，自行解决吧：）&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; mpc的常用方式：&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; mpc listall 可以列出所有的歌曲&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; mpc search filename 可以按文件名查找&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; mpc search artist 可以按歌手查找&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; mpc search title 可以按歌曲名查找&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; mpc add 添加歌曲到播放列表&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; mpc listall|mpc add 可以把所有歌曲都添加到当前的播放列表&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; mpc playlist 查看当前播放列表&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; mpc play 播放&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; mpc play 18 播放列表中第18首&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; mpc pause 暂停&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; mpc stop 停止&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; mpc 查看当前播放歌曲的信息&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; mpc的更多选项可以看mpc的帮助。&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; gmpc是图形化的客户端，使用更加简单，就不废话了。&lt;br /&gt;&lt;br /&gt;&lt;span style=&#34;font-weight: bold;&#34;&gt;五、常见问题&lt;/span&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; 1、我的播放列表怎么有很多乱码？&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; 这个……要检查一下上面mpd的配置一节说过的两个选项：&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; filesystem_charset&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; id3v1_encoding&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; 看是否设置正确&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; 2、我确认配置没问题，还是乱码。&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; 这个可能是0.12.1新引入的问题，如果你的mp3文件有id3v2信息，那mpd会优先读取它而不管id3v1。&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; 解决方法：删除id3v2信息，再确认id3v1是否正确&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; 3、怎么删除id3v2信息？&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; 我推荐使用id3v2这个命令行软件：id3v2 -d mp3file&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; 4、能不能显示歌词？&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; 偶目前在写一个小程序，用与mpd环境下的歌词显示，基本上完成了，稍候放出。&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; 5、其他的问题&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; 我目前还没有遇到其他问题，如果你遇到了其他的问题请使用google，同时也欢迎和我联系：recordus at gmail.com&lt;br /&gt;&amp;nbsp;</description>
    </item>
    <item>
      <title>写了一个从百度下载Mp3的python脚本</title>
      <link>https://blog.xupeng.me/2006/10/30/python-script-for-downloading-mp3-from-baidu/</link>
      <pubDate>Mon, 30 Oct 2006 08:00:00 +0800</pubDate>
      <guid>https://blog.xupeng.me/2006/10/30/python-script-for-downloading-mp3-from-baidu/</guid>
      <description>google了一下，找到了一些用来从baidu下载mp3的软件，有win下的gui软件，也有linux下的shell脚本，还有python脚本，&#xA;但遗憾的是现在都已经无法用来下载mp3了，大概是因为百度mp3改版以后这些软件都没有修正吧，就顺手用python重写了一个，也算是练练手吧：）&lt;a href=&#34;http://blogimg.chinaunix.net/blog/upfile/061110212750.gz&#34; target=&#34;_blank&#34;&gt;下载&lt;/a&gt;&#xA;&#xA;功能：&#xA;用来从百度下载mp3，可以单独下载指定的歌曲，也可以批量下载百度新歌Top100，脚本所接受的参数如下：&#xA;&lt;pre&gt;&#xA;Usage: /opt/bin/DownloadSong [OPTION]&#xA;Download mp3 file which matches given artist and/or title.&#xA;&#xA;-h --help         Show this help message.&#xA;-1 --100          Download Baidu Top100 new songs.&#xA;-a --artist       songer&#xA;-t --title        song name&#xA;-v --version      show version info&#xA;&lt;/pre&gt;&#xA;使用范例：&#xA;&lt;pre&gt;&#xA;DownloadSong -1 下载百度Top100中的所有歌曲（是数字1，不是字母l)&#xA;DownloadSong -a 后弦 -t 昆明湖 下载歌手后弦的昆明湖一曲&#xA;DownloadSong -a 后弦 -t 昆明湖 -t 九公主 下载后弦的昆明湖和九公主（可以跟多个-t参数，但只能有一个-a参数）&#xA;DownloadSong -t 我想我是海 下载我想我是海&#xA;&lt;/pre&gt;&#xA;备注：&#xA;该脚本调用axel命令进行多线程下载，因此需要系统中已安装有axel（http://wilmer.gaast.net/main.php/axel.html）&#xA;目前还只能在linux环境UTF-8 locale下使用，在其他locale下使用文件名可能会乱码，我目前只在gentoo linux下测试过。</description>
    </item>
    <item>
      <title>遭遇gentoo的循环依赖(circular dependencies)问题</title>
      <link>https://blog.xupeng.me/2006/10/10/met-problem-of-circular-dependencies-with-gentoo/</link>
      <pubDate>Tue, 10 Oct 2006 08:00:00 +0800</pubDate>
      <guid>https://blog.xupeng.me/2006/10/10/met-problem-of-circular-dependencies-with-gentoo/</guid>
      <description>前几天要装gnome时就遇到了这个问题，当时手头有别的事情就给搁下了，几天要装sun-jdk时又遇到了同样的问题：&lt;br /&gt;&lt;code&gt;&lt;font color=&#34;#000000&#34;&gt;&lt;/font&gt;&lt;font color=&#34;#0000bb&#34;&gt;osr usr &lt;/font&gt;&lt;font color=&#34;#ff8000&#34;&gt;# emerge -pv sun-jdk&#xA;&lt;br /&gt;&#xA;&lt;br /&gt;&lt;/font&gt;&lt;font color=&#34;#0000bb&#34;&gt;These are the packages that would be merged&lt;/font&gt;&lt;font color=&#34;#007700&#34;&gt;, &lt;/font&gt;&lt;font color=&#34;#0000bb&#34;&gt;in order&lt;/font&gt;&lt;font color=&#34;#007700&#34;&gt;:&#xA;&lt;br /&gt;&#xA;&lt;br /&gt;&lt;/font&gt;&lt;font color=&#34;#0000bb&#34;&gt;Calculating dependencies&lt;/font&gt;&lt;font color=&#34;#007700&#34;&gt;... &lt;/font&gt;&lt;font color=&#34;#0000bb&#34;&gt;done&lt;/font&gt;&lt;font color=&#34;#007700&#34;&gt;!&#xA;&lt;br /&gt;!!! &lt;/font&gt;&lt;font color=&#34;#0000bb&#34;&gt;Error&lt;/font&gt;&lt;font color=&#34;#007700&#34;&gt;: &lt;/font&gt;&lt;font color=&#34;#0000bb&#34;&gt;circular dependencies&lt;/font&gt;&lt;font color=&#34;#007700&#34;&gt;:&#xA;&lt;br /&gt;&#xA;&lt;br /&gt;&lt;/font&gt;&lt;font color=&#34;#0000bb&#34;&gt;ebuild &lt;/font&gt;&lt;font color=&#34;#007700&#34;&gt;/ &lt;/font&gt;&lt;font color=&#34;#0000bb&#34;&gt;net&lt;/font&gt;&lt;font color=&#34;#007700&#34;&gt;-&lt;/font&gt;&lt;font color=&#34;#0000bb&#34;&gt;libs&lt;/font&gt;&lt;font color=&#34;#007700&#34;&gt;/&lt;/font&gt;&lt;font color=&#34;#0000bb&#34;&gt;gnutls&lt;/font&gt;&lt;font color=&#34;#007700&#34;&gt;-&lt;/font&gt;&lt;font color=&#34;#0000bb&#34;&gt;1.4.4&lt;/font&gt;&lt;font color=&#34;#007700&#34;&gt;-&lt;/font&gt;&lt;font color=&#34;#0000bb&#34;&gt;r1 merge depends on&#xA;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;ebuild &lt;/font&gt;&lt;font color=&#34;#007700&#34;&gt;/ &lt;/font&gt;&lt;font color=&#34;#0000bb&#34;&gt;dev&lt;/font&gt;&lt;font color=&#34;#007700&#34;&gt;-&lt;/font&gt;&lt;font color=&#34;#0000bb&#34;&gt;libs&lt;/font&gt;&lt;font color=&#34;#007700&#34;&gt;/&lt;/font&gt;&lt;font color=&#34;#0000bb&#34;&gt;lzo&lt;/font&gt;&lt;font color=&#34;#007700&#34;&gt;-&lt;/font&gt;&lt;font color=&#34;#0000bb&#34;&gt;2.02&lt;/font&gt;&lt;font color=&#34;#007700&#34;&gt;-&lt;/font&gt;&lt;font color=&#34;#0000bb&#34;&gt;r1 merge &lt;/font&gt;&lt;font color=&#34;#007700&#34;&gt;(&lt;/font&gt;&lt;font color=&#34;#0000bb&#34;&gt;hard&lt;/font&gt;&lt;font color=&#34;#007700&#34;&gt;)&#xA;&lt;br /&gt;&lt;/font&gt;&lt;font color=&#34;#0000bb&#34;&gt;ebuild &lt;/font&gt;&lt;font color=&#34;#007700&#34;&gt;/ &lt;/font&gt;&lt;font color=&#34;#0000bb&#34;&gt;media&lt;/font&gt;&lt;font color=&#34;#007700&#34;&gt;-&lt;/font&gt;&lt;font color=&#34;#0000bb&#34;&gt;libs&lt;/font&gt;&lt;font color=&#34;#007700&#34;&gt;/&lt;/font&gt;&lt;font color=&#34;#0000bb&#34;&gt;alsa&lt;/font&gt;&lt;font color=&#34;#007700&#34;&gt;-&lt;/font&gt;&lt;font color=&#34;#0000bb&#34;&gt;lib&lt;/font&gt;&lt;font color=&#34;#007700&#34;&gt;-&lt;/font&gt;&lt;font color=&#34;#0000bb&#34;&gt;1.0.13 merge depends on&#xA;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;ebuild &lt;/font&gt;&lt;font color=&#34;#007700&#34;&gt;/ &lt;/font&gt;&lt;font color=&#34;#0000bb&#34;&gt;app&lt;/font&gt;&lt;font color=&#34;#007700&#34;&gt;-&lt;/font&gt;&lt;font color=&#34;#0000bb&#34;&gt;doc&lt;/font&gt;&lt;font color=&#34;#007700&#34;&gt;/&lt;/font&gt;&lt;font color=&#34;#0000bb&#34;&gt;doxygen&lt;/font&gt;&lt;font color=&#34;#007700&#34;&gt;-&lt;/font&gt;&lt;font color=&#34;#0000bb&#34;&gt;1.4.7 merge &lt;/font&gt;&lt;font color=&#34;#007700&#34;&gt;(&lt;/font&gt;&lt;font color=&#34;#0000bb&#34;&gt;hard&lt;/font&gt;&lt;font color=&#34;#007700&#34;&gt;)&#xA;&lt;br /&gt;&lt;/font&gt;&lt;font color=&#34;#0000bb&#34;&gt;ebuild &lt;/font&gt;&lt;font color=&#34;#007700&#34;&gt;/ &lt;/font&gt;&lt;font color=&#34;#0000bb&#34;&gt;app&lt;/font&gt;&lt;font color=&#34;#007700&#34;&gt;-&lt;/font&gt;&lt;font color=&#34;#0000bb&#34;&gt;text&lt;/font&gt;&lt;font color=&#34;#007700&#34;&gt;/&lt;/font&gt;&lt;font color=&#34;#0000bb&#34;&gt;ghostscript&lt;/font&gt;&lt;font color=&#34;#007700&#34;&gt;-&lt;/font&gt;&lt;font color=&#34;#0000bb&#34;&gt;gpl&lt;/font&gt;&lt;font color=&#34;#007700&#34;&gt;-&lt;/font&gt;&lt;font color=&#34;#0000bb&#34;&gt;8.54 merge depends on&#xA;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;ebuild &lt;/font&gt;&lt;font color=&#34;#007700&#34;&gt;/ &lt;/font&gt;&lt;font color=&#34;#0000bb&#34;&gt;net&lt;/font&gt;&lt;font color=&#34;#007700&#34;&gt;-print/&lt;/font&gt;&lt;font color=&#34;#0000bb&#34;&gt;cups&lt;/font&gt;&lt;font color=&#34;#007700&#34;&gt;-&lt;/font&gt;&lt;font color=&#34;#0000bb&#34;&gt;1.2.4 merge &lt;/font&gt;&lt;font color=&#34;#007700&#34;&gt;(&lt;/font&gt;&lt;font color=&#34;#0000bb&#34;&gt;hard&lt;/font&gt;&lt;font color=&#34;#007700&#34;&gt;)&#xA;&lt;br /&gt;&lt;/font&gt;&lt;font color=&#34;#0000bb&#34;&gt;ebuild &lt;/font&gt;&lt;font color=&#34;#007700&#34;&gt;/ &lt;/font&gt;&lt;font color=&#34;#0000bb&#34;&gt;net&lt;/font&gt;&lt;font color=&#34;#007700&#34;&gt;-print/&lt;/font&gt;&lt;font color=&#34;#0000bb&#34;&gt;foomatic&lt;/font&gt;&lt;font color=&#34;#007700&#34;&gt;-&lt;/font&gt;&lt;font color=&#34;#0000bb&#34;&gt;filters&lt;/font&gt;&lt;font color=&#34;#007700&#34;&gt;-&lt;/font&gt;&lt;font color=&#34;#0000bb&#34;&gt;3.0.20060720 merge depends on&#xA;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;ebuild &lt;/font&gt;&lt;font color=&#34;#007700&#34;&gt;/ &lt;/font&gt;&lt;font color=&#34;#0000bb&#34;&gt;net&lt;/font&gt;&lt;font color=&#34;#007700&#34;&gt;-print/&lt;/font&gt;&lt;font color=&#34;#0000bb&#34;&gt;cups&lt;/font&gt;&lt;font color=&#34;#007700&#34;&gt;-&lt;/font&gt;&lt;font color=&#34;#0000bb&#34;&gt;1.2.4 merge &lt;/font&gt;&lt;font color=&#34;#007700&#34;&gt;(&lt;/font&gt;&lt;font color=&#34;#0000bb&#34;&gt;hard&lt;/font&gt;&lt;font color=&#34;#007700&#34;&gt;)&#xA;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color=&#34;#0000bb&#34;&gt;ebuild &lt;/font&gt;&lt;font color=&#34;#007700&#34;&gt;/ &lt;/font&gt;&lt;font color=&#34;#0000bb&#34;&gt;virtual&lt;/font&gt;&lt;font color=&#34;#007700&#34;&gt;/&lt;/font&gt;&lt;font color=&#34;#0000bb&#34;&gt;ghostscript&lt;/font&gt;&lt;font color=&#34;#007700&#34;&gt;-&lt;/font&gt;&lt;font color=&#34;#0000bb&#34;&gt;0 merge &lt;/font&gt;&lt;font color=&#34;#007700&#34;&gt;(&lt;/font&gt;&lt;font color=&#34;#0000bb&#34;&gt;hard&lt;/font&gt;&lt;font color=&#34;#007700&#34;&gt;)&#xA;&lt;br /&gt;&lt;/font&gt;&lt;font color=&#34;#0000bb&#34;&gt;ebuild &lt;/font&gt;&lt;font color=&#34;#007700&#34;&gt;/ &lt;/font&gt;&lt;font color=&#34;#0000bb&#34;&gt;app&lt;/font&gt;&lt;font color=&#34;#007700&#34;&gt;-&lt;/font&gt;&lt;font color=&#34;#0000bb&#34;&gt;doc&lt;/font&gt;&lt;font color=&#34;#007700&#34;&gt;/&lt;/font&gt;&lt;font color=&#34;#0000bb&#34;&gt;doxygen&lt;/font&gt;&lt;font color=&#34;#007700&#34;&gt;-&lt;/font&gt;&lt;font color=&#34;#0000bb&#34;&gt;1.4.7 merge depends on&#xA;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;ebuild &lt;/font&gt;&lt;font color=&#34;#007700&#34;&gt;/ &lt;/font&gt;&lt;font color=&#34;#0000bb&#34;&gt;virtual&lt;/font&gt;&lt;font color=&#34;#007700&#34;&gt;/&lt;/font&gt;&lt;font color=&#34;#0000bb&#34;&gt;ghostscript&lt;/font&gt;&lt;font color=&#34;#007700&#34;&gt;-&lt;/font&gt;&lt;font color=&#34;#0000bb&#34;&gt;0 merge &lt;/font&gt;&lt;font color=&#34;#007700&#34;&gt;(&lt;/font&gt;&lt;font color=&#34;#0000bb&#34;&gt;hard&lt;/font&gt;&lt;font color=&#34;#007700&#34;&gt;)&#xA;&lt;br /&gt;&lt;/font&gt;&lt;font color=&#34;#0000bb&#34;&gt;ebuild &lt;/font&gt;&lt;font color=&#34;#007700&#34;&gt;/ &lt;/font&gt;&lt;font color=&#34;#0000bb&#34;&gt;virtual&lt;/font&gt;&lt;font color=&#34;#007700&#34;&gt;/&lt;/font&gt;&lt;font color=&#34;#0000bb&#34;&gt;ghostscript&lt;/font&gt;&lt;font color=&#34;#007700&#34;&gt;-&lt;/font&gt;&lt;font color=&#34;#0000bb&#34;&gt;0 merge depends on&#xA;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;ebuild &lt;/font&gt;&lt;font color=&#34;#007700&#34;&gt;/ &lt;/font&gt;&lt;font color=&#34;#0000bb&#34;&gt;app&lt;/font&gt;&lt;font color=&#34;#007700&#34;&gt;-&lt;/font&gt;&lt;font color=&#34;#0000bb&#34;&gt;text&lt;/font&gt;&lt;font color=&#34;#007700&#34;&gt;/&lt;/font&gt;&lt;font color=&#34;#0000bb&#34;&gt;ghostscript&lt;/font&gt;&lt;font color=&#34;#007700&#34;&gt;-&lt;/font&gt;&lt;font color=&#34;#0000bb&#34;&gt;gpl&lt;/font&gt;&lt;font color=&#34;#007700&#34;&gt;-&lt;/font&gt;&lt;font color=&#34;#0000bb&#34;&gt;8.54 merge &lt;/font&gt;&lt;font color=&#34;#007700&#34;&gt;(&lt;/font&gt;&lt;font color=&#34;#0000bb&#34;&gt;medium&lt;/font&gt;&lt;font color=&#34;#007700&#34;&gt;)&#xA;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color=&#34;#0000bb&#34;&gt;ebuild &lt;/font&gt;&lt;font color=&#34;#007700&#34;&gt;/ &lt;/font&gt;&lt;font color=&#34;#0000bb&#34;&gt;net&lt;/font&gt;&lt;font color=&#34;#007700&#34;&gt;-print/&lt;/font&gt;&lt;font color=&#34;#0000bb&#34;&gt;cups&lt;/font&gt;&lt;font color=&#34;#007700&#34;&gt;-&lt;/font&gt;&lt;font color=&#34;#0000bb&#34;&gt;1.2.4 merge &lt;/font&gt;&lt;font color=&#34;#007700&#34;&gt;(&lt;/font&gt;&lt;font color=&#34;#0000bb&#34;&gt;soft&lt;/font&gt;&lt;font color=&#34;#007700&#34;&gt;)&#xA;&lt;br /&gt;&lt;/font&gt;&lt;font color=&#34;#0000bb&#34;&gt;ebuild &lt;/font&gt;&lt;font color=&#34;#007700&#34;&gt;/ &lt;/font&gt;&lt;font color=&#34;#0000bb&#34;&gt;sys&lt;/font&gt;&lt;font color=&#34;#007700&#34;&gt;-&lt;/font&gt;&lt;font color=&#34;#0000bb&#34;&gt;apps&lt;/font&gt;&lt;font color=&#34;#007700&#34;&gt;/&lt;/font&gt;&lt;font color=&#34;#0000bb&#34;&gt;dbus&lt;/font&gt;&lt;font color=&#34;#007700&#34;&gt;-&lt;/font&gt;&lt;font color=&#34;#0000bb&#34;&gt;0.62&lt;/font&gt;&lt;font color=&#34;#007700&#34;&gt;-&lt;/font&gt;&lt;font color=&#34;#0000bb&#34;&gt;r1 merge depends on&#xA;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;ebuild &lt;/font&gt;&lt;font color=&#34;#007700&#34;&gt;/ &lt;/font&gt;&lt;font color=&#34;#0000bb&#34;&gt;app&lt;/font&gt;&lt;font color=&#34;#007700&#34;&gt;-&lt;/font&gt;&lt;font color=&#34;#0000bb&#34;&gt;doc&lt;/font&gt;&lt;font color=&#34;#007700&#34;&gt;/&lt;/font&gt;&lt;font color=&#34;#0000bb&#34;&gt;doxygen&lt;/font&gt;&lt;font color=&#34;#007700&#34;&gt;-&lt;/font&gt;&lt;font color=&#34;#0000bb&#34;&gt;1.4.7 merge &lt;/font&gt;&lt;font color=&#34;#007700&#34;&gt;(&lt;/font&gt;&lt;font color=&#34;#0000bb&#34;&gt;hard&lt;/font&gt;&lt;font color=&#34;#007700&#34;&gt;)&#xA;&lt;br /&gt;&lt;/font&gt;&lt;font color=&#34;#0000bb&#34;&gt;ebuild &lt;/font&gt;&lt;font color=&#34;#007700&#34;&gt;/ &lt;/font&gt;&lt;font color=&#34;#0000bb&#34;&gt;dev&lt;/font&gt;&lt;font color=&#34;#007700&#34;&gt;-&lt;/font&gt;&lt;font color=&#34;#0000bb&#34;&gt;lang&lt;/font&gt;&lt;font color=&#34;#007700&#34;&gt;/&lt;/font&gt;&lt;font color=&#34;#0000bb&#34;&gt;nasm&lt;/font&gt;&lt;font color=&#34;#007700&#34;&gt;-&lt;/font&gt;&lt;font color=&#34;#0000bb&#34;&gt;0.98.39&lt;/font&gt;&lt;font color=&#34;#007700&#34;&gt;-&lt;/font&gt;&lt;font color=&#34;#0000bb&#34;&gt;r3 merge depends on&#xA;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;ebuild &lt;/font&gt;&lt;font color=&#34;#007700&#34;&gt;/ &lt;/font&gt;&lt;font color=&#34;#0000bb&#34;&gt;virtual&lt;/font&gt;&lt;font color=&#34;#007700&#34;&gt;/&lt;/font&gt;&lt;font color=&#34;#0000bb&#34;&gt;ghostscript&lt;/font&gt;&lt;font color=&#34;#007700&#34;&gt;-&lt;/font&gt;&lt;font color=&#34;#0000bb&#34;&gt;0 merge &lt;/font&gt;&lt;font color=&#34;#007700&#34;&gt;(&lt;/font&gt;&lt;font color=&#34;#0000bb&#34;&gt;hard&lt;/font&gt;&lt;font color=&#34;#007700&#34;&gt;)&#xA;&lt;br /&gt;&lt;/font&gt;&lt;font color=&#34;#0000bb&#34;&gt;ebuild &lt;/font&gt;&lt;font color=&#34;#007700&#34;&gt;/ &lt;/font&gt;&lt;font color=&#34;#0000bb&#34;&gt;dev&lt;/font&gt;&lt;font color=&#34;#007700&#34;&gt;-&lt;/font&gt;&lt;font color=&#34;#0000bb&#34;&gt;libs&lt;/font&gt;&lt;font color=&#34;#007700&#34;&gt;/&lt;/font&gt;&lt;font color=&#34;#0000bb&#34;&gt;lzo&lt;/font&gt;&lt;font color=&#34;#007700&#34;&gt;-&lt;/font&gt;&lt;font color=&#34;#0000bb&#34;&gt;2.02&lt;/font&gt;&lt;font color=&#34;#007700&#34;&gt;-&lt;/font&gt;&lt;font color=&#34;#0000bb&#34;&gt;r1 merge depends on&#xA;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;ebuild &lt;/font&gt;&lt;font color=&#34;#007700&#34;&gt;/ &lt;/font&gt;&lt;font color=&#34;#0000bb&#34;&gt;dev&lt;/font&gt;&lt;font color=&#34;#007700&#34;&gt;-&lt;/font&gt;&lt;font color=&#34;#0000bb&#34;&gt;lang&lt;/font&gt;&lt;font color=&#34;#007700&#34;&gt;/&lt;/font&gt;&lt;font color=&#34;#0000bb&#34;&gt;nasm&lt;/font&gt;&lt;font color=&#34;#007700&#34;&gt;-&lt;/font&gt;&lt;font color=&#34;#0000bb&#34;&gt;0.98.39&lt;/font&gt;&lt;font color=&#34;#007700&#34;&gt;-&lt;/font&gt;&lt;font color=&#34;#0000bb&#34;&gt;r3 merge &lt;/font&gt;&lt;font color=&#34;#007700&#34;&gt;(&lt;/font&gt;&lt;font color=&#34;#0000bb&#34;&gt;hard&lt;/font&gt;&lt;font color=&#34;#007700&#34;&gt;)&#xA;&lt;br /&gt;&lt;/font&gt;&lt;font color=&#34;#0000bb&#34;&gt;ebuild &lt;/font&gt;&lt;font color=&#34;#007700&#34;&gt;/ &lt;/font&gt;&lt;font color=&#34;#0000bb&#34;&gt;dev&lt;/font&gt;&lt;font color=&#34;#007700&#34;&gt;-&lt;/font&gt;&lt;font color=&#34;#0000bb&#34;&gt;java&lt;/font&gt;&lt;font color=&#34;#007700&#34;&gt;/&lt;/font&gt;&lt;font color=&#34;#0000bb&#34;&gt;sun&lt;/font&gt;&lt;font color=&#34;#007700&#34;&gt;-&lt;/font&gt;&lt;font color=&#34;#0000bb&#34;&gt;jdk&lt;/font&gt;&lt;font color=&#34;#007700&#34;&gt;-&lt;/font&gt;&lt;font color=&#34;#0000bb&#34;&gt;1.5.0.08 merge depends on&#xA;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;ebuild &lt;/font&gt;&lt;font color=&#34;#007700&#34;&gt;/ &lt;/font&gt;&lt;font color=&#34;#0000bb&#34;&gt;media&lt;/font&gt;&lt;font color=&#34;#007700&#34;&gt;-&lt;/font&gt;&lt;font color=&#34;#0000bb&#34;&gt;libs&lt;/font&gt;&lt;font color=&#34;#007700&#34;&gt;/&lt;/font&gt;&lt;font color=&#34;#0000bb&#34;&gt;alsa&lt;/font&gt;&lt;font color=&#34;#007700&#34;&gt;-&lt;/font&gt;&lt;font color=&#34;#0000bb&#34;&gt;lib&lt;/font&gt;&lt;font color=&#34;#007700&#34;&gt;-&lt;/font&gt;&lt;font color=&#34;#0000bb&#34;&gt;1.0.13 merge &lt;/font&gt;&lt;font color=&#34;#007700&#34;&gt;(&lt;/font&gt;&lt;font color=&#34;#0000bb&#34;&gt;medium&lt;/font&gt;&lt;font color=&#34;#007700&#34;&gt;)&#xA;&lt;br /&gt;&lt;/font&gt;&lt;font color=&#34;#0000bb&#34;&gt;ebuild &lt;/font&gt;&lt;font color=&#34;#007700&#34;&gt;/ &lt;/font&gt;&lt;font color=&#34;#0000bb&#34;&gt;net&lt;/font&gt;&lt;font color=&#34;#007700&#34;&gt;-print/&lt;/font&gt;&lt;font color=&#34;#0000bb&#34;&gt;foomatic&lt;/font&gt;&lt;font color=&#34;#007700&#34;&gt;-&lt;/font&gt;&lt;font color=&#34;#0000bb&#34;&gt;filters&lt;/font&gt;&lt;font color=&#34;#007700&#34;&gt;-&lt;/font&gt;&lt;font color=&#34;#0000bb&#34;&gt;ppds&lt;/font&gt;&lt;font color=&#34;#007700&#34;&gt;-&lt;/font&gt;&lt;font color=&#34;#0000bb&#34;&gt;20060720 merge depends on&#xA;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;ebuild &lt;/font&gt;&lt;font color=&#34;#007700&#34;&gt;/ &lt;/font&gt;&lt;font color=&#34;#0000bb&#34;&gt;net&lt;/font&gt;&lt;font color=&#34;#007700&#34;&gt;-print/&lt;/font&gt;&lt;font color=&#34;#0000bb&#34;&gt;foomatic&lt;/font&gt;&lt;font color=&#34;#007700&#34;&gt;-&lt;/font&gt;&lt;font color=&#34;#0000bb&#34;&gt;filters&lt;/font&gt;&lt;font color=&#34;#007700&#34;&gt;-&lt;/font&gt;&lt;font color=&#34;#0000bb&#34;&gt;3.0.20060720 merge &lt;/font&gt;&lt;font color=&#34;#007700&#34;&gt;(&lt;/font&gt;&lt;font color=&#34;#0000bb&#34;&gt;medium&lt;/font&gt;&lt;font color=&#34;#007700&#34;&gt;)&#xA;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color=&#34;#0000bb&#34;&gt;ebuild &lt;/font&gt;&lt;font color=&#34;#007700&#34;&gt;/ &lt;/font&gt;&lt;font color=&#34;#0000bb&#34;&gt;net&lt;/font&gt;&lt;font color=&#34;#007700&#34;&gt;-print/&lt;/font&gt;&lt;font color=&#34;#0000bb&#34;&gt;cups&lt;/font&gt;&lt;font color=&#34;#007700&#34;&gt;-&lt;/font&gt;&lt;font color=&#34;#0000bb&#34;&gt;1.2.4 merge &lt;/font&gt;&lt;font color=&#34;#007700&#34;&gt;(&lt;/font&gt;&lt;font color=&#34;#0000bb&#34;&gt;soft&lt;/font&gt;&lt;font color=&#34;#007700&#34;&gt;)&#xA;&lt;br /&gt;&lt;/font&gt;&lt;font color=&#34;#0000bb&#34;&gt;ebuild &lt;/font&gt;&lt;font color=&#34;#007700&#34;&gt;/ &lt;/font&gt;&lt;font color=&#34;#0000bb&#34;&gt;net&lt;/font&gt;&lt;font color=&#34;#007700&#34;&gt;-print/&lt;/font&gt;&lt;font color=&#34;#0000bb&#34;&gt;cups&lt;/font&gt;&lt;font color=&#34;#007700&#34;&gt;-&lt;/font&gt;&lt;font color=&#34;#0000bb&#34;&gt;1.2.4 merge depends on&#xA;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;ebuild &lt;/font&gt;&lt;font color=&#34;#007700&#34;&gt;/ &lt;/font&gt;&lt;font color=&#34;#0000bb&#34;&gt;sys&lt;/font&gt;&lt;font color=&#34;#007700&#34;&gt;-&lt;/font&gt;&lt;font color=&#34;#0000bb&#34;&gt;apps&lt;/font&gt;&lt;font color=&#34;#007700&#34;&gt;/&lt;/font&gt;&lt;font color=&#34;#0000bb&#34;&gt;dbus&lt;/font&gt;&lt;font color=&#34;#007700&#34;&gt;-&lt;/font&gt;&lt;font color=&#34;#0000bb&#34;&gt;0.62&lt;/font&gt;&lt;font color=&#34;#007700&#34;&gt;-&lt;/font&gt;&lt;font color=&#34;#0000bb&#34;&gt;r1 merge &lt;/font&gt;&lt;font color=&#34;#007700&#34;&gt;(&lt;/font&gt;&lt;font color=&#34;#0000bb&#34;&gt;hard&lt;/font&gt;&lt;font color=&#34;#007700&#34;&gt;)&#xA;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color=&#34;#0000bb&#34;&gt;ebuild &lt;/font&gt;&lt;font color=&#34;#007700&#34;&gt;/ &lt;/font&gt;&lt;font color=&#34;#0000bb&#34;&gt;net&lt;/font&gt;&lt;font color=&#34;#007700&#34;&gt;-&lt;/font&gt;&lt;font color=&#34;#0000bb&#34;&gt;libs&lt;/font&gt;&lt;font color=&#34;#007700&#34;&gt;/&lt;/font&gt;&lt;font color=&#34;#0000bb&#34;&gt;gnutls&lt;/font&gt;&lt;font color=&#34;#007700&#34;&gt;-&lt;/font&gt;&lt;font color=&#34;#0000bb&#34;&gt;1.4.4&lt;/font&gt;&lt;font color=&#34;#007700&#34;&gt;-&lt;/font&gt;&lt;font color=&#34;#0000bb&#34;&gt;r1 merge &lt;/font&gt;&lt;font color=&#34;#007700&#34;&gt;(&lt;/font&gt;&lt;font color=&#34;#0000bb&#34;&gt;hard&lt;/font&gt;&lt;font color=&#34;#007700&#34;&gt;)&#xA;&lt;br /&gt;&lt;/font&gt;&lt;font color=&#34;#0000bb&#34;&gt;osr usr &lt;/font&gt;&lt;font color=&#34;#ff8000&#34;&gt;#&#xA;&lt;br /&gt;&lt;br /&gt;&lt;span style=&#34;color: rgb(0, 1, 2);&#34;&gt;起初怀疑罪魁祸首是gnutls，安装sun-jdk需要安装它，它又依赖别的包，最终别的包又依赖gnutls早成了死循环以至无法安装，在linuxsir上发了帖子描述这个问题，一边又自己折腾起来。&lt;br /&gt;&lt;br /&gt;上面的输出可以看出是cups依赖gnutls造成了循环，于是我编辑cups的ebuild去掉了它对gnutls的依赖，再次emerge -pv sun-jdk，依然是循环依赖，不过跟上次已经大不一样了，这次造成循环的是doxygen，doxygen是一个文档系统，我想起来我的make.conf中有doc这个USE，不会是它的问题吧，试试看，去掉make.conf中的doc USE，再试试，晕，一切正常，没有可恶的循环依赖了。&lt;br /&gt;&lt;br /&gt;看来真正的罪魁祸首是doc这个USE，使用全局的USE还是要小心啊，同样遇到循环依赖问题的gentoo lovers可要引以为戒了，遇到这样的问题多看看自己的USE吧，没准就是这样的一粒沙子坏了走远路的脚了，呵呵。&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/font&gt;&lt;/code&gt;</description>
    </item>
    <item>
      <title>在LFS下安装qemu和kqemu</title>
      <link>https://blog.xupeng.me/2006/10/09/install-qemu-and-kqemu-under-lfs/</link>
      <pubDate>Mon, 09 Oct 2006 08:00:00 +0800</pubDate>
      <guid>https://blog.xupeng.me/2006/10/09/install-qemu-and-kqemu-under-lfs/</guid>
      <description>qemu是一个很好的模拟器，就不多说了，LFS也很不错，所以我希望在LFS下使用qemu，呵呵。&lt;br /&gt;&lt;br /&gt;首先到http://fabrice.bellard.free.fr/qemu/download.html下载qemu和kqemu的源代码，我使用的版本是qemu-0.8.2.tar.gz和kqemu-1.3.0pre9.tar.gz，不同的版本差别应该不大。&lt;br /&gt;&lt;br /&gt;首先安装qemu：&lt;br /&gt;root@LFS qemu # &lt;span style=&#34;color: rgb(0, 153, 2);&#34;&gt;tar xf qemu-0.8.2.tar.gz&lt;/span&gt;&lt;br /&gt;root@LFS qemu # &lt;span style=&#34;color: rgb(0, 153, 2);&#34;&gt;cd qemu-0.8.2&lt;/span&gt;&lt;br /&gt;由于使用gcc4编译qemu可能会有问题，这个在直接使用./configure时也会有提示，所以使用gcc3来编译：&lt;br /&gt;root@LFS qemu-0.8.2 # &lt;span style=&#34;color: rgb(0, 153, 2);&#34;&gt;./configure --cc=/opt/gcc-3.3.6/bin/gcc --host-cc=/opt/gcc-3.3.6/bin/gcc --enable-alsa --enable-system --enable-user --prefix=/usr&lt;/span&gt;&lt;br /&gt;&lt;span style=&#34;color: rgb(0, 128, 255);&#34;&gt;Install prefix&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /usr&lt;/span&gt;&lt;br style=&#34;color: rgb(0, 128, 255);&#34;/&gt;&lt;span style=&#34;color: rgb(0, 128, 255);&#34;&gt;BIOS directory&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /usr/share/qemu&lt;/span&gt;&lt;br style=&#34;color: rgb(0, 128, 255);&#34;/&gt;&lt;span style=&#34;color: rgb(0, 128, 255);&#34;&gt;binary directory&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /usr/bin&lt;/span&gt;&lt;br style=&#34;color: rgb(0, 128, 255);&#34;/&gt;&lt;span style=&#34;color: rgb(0, 128, 255);&#34;&gt;Manual directory &amp;nbsp; /usr/share/man&lt;/span&gt;&lt;br style=&#34;color: rgb(0, 128, 255);&#34;/&gt;&lt;span style=&#34;color: rgb(0, 128, 255);&#34;&gt;ELF interp prefix&amp;nbsp;&amp;nbsp;&amp;nbsp; /usr/gnemul/qemu-%M&lt;/span&gt;&lt;br style=&#34;color: rgb(0, 128, 255);&#34;/&gt;&lt;span style=&#34;color: rgb(0, 128, 255);&#34;&gt;Source path&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /root/qemu/qemu-0.8.2&lt;/span&gt;&lt;br style=&#34;color: rgb(0, 128, 255);&#34;/&gt;&lt;span style=&#34;color: rgb(0, 128, 255);&#34;&gt;C compiler&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /opt/gcc-3.3.6/bin/gcc&lt;/span&gt;&lt;br style=&#34;color: rgb(0, 128, 255);&#34;/&gt;&lt;span style=&#34;color: rgb(0, 128, 255);&#34;&gt;Host C compiler&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /opt/gcc-3.3.6/bin/gcc&lt;/span&gt;&lt;br style=&#34;color: rgb(0, 128, 255);&#34;/&gt;&lt;span style=&#34;color: rgb(0, 128, 255);&#34;&gt;make&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp; make&lt;/span&gt;&lt;br style=&#34;color: rgb(0, 128, 255);&#34;/&gt;&lt;span style=&#34;color: rgb(0, 128, 255);&#34;&gt;install&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; install&lt;/span&gt;&lt;br style=&#34;color: rgb(0, 128, 255);&#34;/&gt;&lt;span style=&#34;color: rgb(0, 128, 255);&#34;&gt;host CPU&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; i386&lt;/span&gt;&lt;br style=&#34;color: rgb(0, 128, 255);&#34;/&gt;&lt;span style=&#34;color: rgb(0, 128, 255);&#34;&gt;host big endian&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; no&lt;/span&gt;&lt;br style=&#34;color: rgb(0, 128, 255);&#34;/&gt;&lt;span style=&#34;color: rgb(0, 128, 255);&#34;&gt;target list&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; i386-user arm-user armeb-user sparc-user ppc-user mips-user mipsel-user i386-softmmu ppc-softmmu sparc-softmmu x86_64-softmmu mips-softmmu mipsel-softmmu arm-softmmu&lt;/span&gt;&lt;br style=&#34;color: rgb(0, 128, 255);&#34;/&gt;&lt;span style=&#34;color: rgb(0, 128, 255);&#34;&gt;gprof enabled&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; no&lt;/span&gt;&lt;br style=&#34;color: rgb(0, 128, 255);&#34;/&gt;&lt;span style=&#34;color: rgb(0, 128, 255);&#34;&gt;profiler&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; no&lt;/span&gt;&lt;br style=&#34;color: rgb(0, 128, 255);&#34;/&gt;&lt;span style=&#34;color: rgb(0, 128, 255);&#34;&gt;static build&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; no&lt;/span&gt;&lt;br style=&#34;color: rgb(0, 128, 255);&#34;/&gt;&lt;span style=&#34;color: rgb(0, 128, 255);&#34;&gt;SDL support&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; yes&lt;/span&gt;&lt;br style=&#34;color: rgb(0, 128, 255);&#34;/&gt;&lt;span style=&#34;color: rgb(0, 128, 255);&#34;&gt;SDL static link&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; yes&lt;/span&gt;&lt;br style=&#34;color: rgb(0, 128, 255);&#34;/&gt;&lt;span style=&#34;color: rgb(0, 128, 255);&#34;&gt;mingw32 support&amp;nbsp; no&lt;/span&gt;&lt;br style=&#34;color: rgb(0, 128, 255);&#34;/&gt;&lt;span style=&#34;color: rgb(0, 128, 255);&#34;&gt;Adlib support&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; no&lt;/span&gt;&lt;br style=&#34;color: rgb(0, 128, 255);&#34;/&gt;&lt;span style=&#34;color: rgb(0, 128, 255);&#34;&gt;CoreAudio support no&lt;/span&gt;&lt;br style=&#34;color: rgb(0, 128, 255);&#34;/&gt;&lt;span style=&#34;color: rgb(0, 128, 255);&#34;&gt;ALSA support&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; yes&lt;/span&gt;&lt;br style=&#34;color: rgb(0, 128, 255);&#34;/&gt;&lt;span style=&#34;color: rgb(0, 128, 255);&#34;&gt;DSound support&amp;nbsp;&amp;nbsp;&amp;nbsp; no&lt;/span&gt;&lt;br style=&#34;color: rgb(0, 128, 255);&#34;/&gt;&lt;span style=&#34;color: rgb(0, 128, 255);&#34;&gt;FMOD support&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; no&lt;/span&gt;&lt;br style=&#34;color: rgb(0, 128, 255);&#34;/&gt;&lt;span style=&#34;color: rgb(0, 128, 255);&#34;&gt;kqemu support&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; yes&lt;/span&gt;&lt;br style=&#34;color: rgb(0, 128, 255);&#34;/&gt;&lt;span style=&#34;color: rgb(0, 128, 255);&#34;&gt;Documentation&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; yes&lt;/span&gt;&lt;br style=&#34;color: rgb(0, 128, 255);&#34;/&gt;root@LFS qemu-0.8.2 # &lt;span style=&#34;color: rgb(0, 153, 2);&#34;&gt;make&lt;/span&gt;&lt;br /&gt;root@LFS qemu-0.8.2 # &lt;span style=&#34;color: rgb(0, 153, 2);&#34;&gt;make install&lt;br /&gt;&lt;br /&gt;&lt;span style=&#34;color: rgb(0, 1, 2);&#34;&gt;ok，keqmu安装完成了，测试一下：&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;color: rgb(0, 153, 2);&#34;&gt;&lt;span style=&#34;color: rgb(0, 1, 2);&#34;&gt;下载一个&lt;/span&gt;&lt;/span&gt;&lt;a href=&#34;http://fabrice.bellard.free.fr/qemu/freedos.img.bz2&#34; target=&#34;_blank&#34;&gt;freedos&lt;/a&gt;&lt;span style=&#34;color: rgb(0, 153, 2);&#34;&gt;&lt;span style=&#34;color: rgb(0, 1, 2);&#34;&gt;的qemu镜像，&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;color: rgb(0, 153, 2);&#34;&gt;把下载的镜像解压缩：&lt;/span&gt;&lt;span style=&#34;color: rgb(0, 153, 2);&#34;&gt;&lt;span style=&#34;color: rgb(0, 1, 2);&#34;&gt;：&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;root@LFS qemu # &lt;span style=&#34;color: rgb(0, 153, 2);&#34;&gt;bunzip&lt;span style=&#34;color: rgb(0, 153, 2);&#34;&gt;2 &lt;/span&gt;freedos.img.bz2&lt;br /&gt;&lt;span style=&#34;color: rgb(0, 1, 2);&#34;&gt;使用qemu运行：&lt;/span&gt;&lt;br /&gt;&lt;/span&gt;root@LFS qmeu # &lt;span style=&#34;color: rgb(0, 153, 2);&#34;&gt;qemu -hda freedos.img&lt;/span&gt;&lt;br /&gt;呵呵，看到了freedos的运行吧，说明qemu已经成功安装并能正确运行了。&lt;br /&gt;&lt;br /&gt;不过现在还没有kqemu加速，接下来安装kqemu，kqemu的安装比较简单：&lt;br /&gt;&lt;span style=&#34;color: rgb(0, 153, 2);&#34;&gt;&lt;/span&gt;root@LFS qemu # &lt;span style=&#34;color: rgb(0, 153, 2);&#34;&gt;tar xf kqemu-1.3.0pre9.tar.gz&lt;/span&gt;&lt;br /&gt;root@LFS qemu # &lt;span style=&#34;color: rgb(0, 153, 2);&#34;&gt;cd kqemu-1.3.0pre9&lt;/span&gt;&lt;br /&gt;root@LFS kqemu-1.3.0pre9 # &lt;span style=&#34;color: rgb(0, 153, 2);&#34;&gt;./configure&lt;/span&gt;&lt;br /&gt;&lt;span style=&#34;color: rgb(0, 128, 255);&#34;&gt;Source path&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /root/qemu/kqemu-1.3.0pre9&lt;/span&gt;&lt;br style=&#34;color: rgb(0, 128, 255);&#34;/&gt;&lt;span style=&#34;color: rgb(0, 128, 255);&#34;&gt;C compiler&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; gcc&lt;/span&gt;&lt;br style=&#34;color: rgb(0, 128, 255);&#34;/&gt;&lt;span style=&#34;color: rgb(0, 128, 255);&#34;&gt;Host C compiler&amp;nbsp;&amp;nbsp; gcc&lt;/span&gt;&lt;br style=&#34;color: rgb(0, 128, 255);&#34;/&gt;&lt;span style=&#34;color: rgb(0, 128, 255);&#34;&gt;make&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; make&lt;/span&gt;&lt;br style=&#34;color: rgb(0, 128, 255);&#34;/&gt;&lt;span style=&#34;color: rgb(0, 128, 255);&#34;&gt;host CPU&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; i386&lt;/span&gt;&lt;br style=&#34;color: rgb(0, 128, 255);&#34;/&gt;&lt;br style=&#34;color: rgb(0, 128, 255);&#34;/&gt;&lt;span style=&#34;color: rgb(0, 128, 255);&#34;&gt;kernel sources&amp;nbsp;&amp;nbsp;&amp;nbsp; /lib/modules/2.6.16.27/build&lt;/span&gt;&lt;br style=&#34;color: rgb(128, 255, 255);&#34;/&gt;&lt;span style=&#34;color: rgb(0, 128, 255);&#34;&gt;kbuild type&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 2.6&lt;/span&gt;&lt;br style=&#34;color: rgb(128, 255, 255);&#34;/&gt;&lt;span style=&#34;color: rgb(0, 1, 2);&#34;&gt;root@LFS kqemu-1.3.0pre9 # &lt;span style=&#34;color: rgb(0, 153, 2);&#34;&gt;make&lt;/span&gt;&lt;/span&gt;&lt;br style=&#34;color: rgb(0, 1, 2);&#34;/&gt;&lt;span style=&#34;color: rgb(0, 1, 2);&#34;&gt;root@LFS kqemu-1.3.0pre9 # &lt;span style=&#34;color: rgb(0, 153, 2);&#34;&gt;make install&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;好了，kqemu已经安装&lt;br /&gt;root@LFS qemu # &lt;span style=&#34;color: rgb(0, 153, 2);&#34;&gt;modprobe kqemu major=0&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;至此，qemu和kqemu已经安装完毕，为了每次系统启动后能够使用kqemu，可以把modprobe kqemu major加到/etc/rc.d/rc.local中。&lt;br /&gt;</description>
    </item>
    <item>
      <title>LFS时Fontconfig 2.3.2的编译错误和解决方法</title>
      <link>https://blog.xupeng.me/2006/10/07/compile-error-with-fontconfig-232-under-lfs/</link>
      <pubDate>Sat, 07 Oct 2006 08:00:00 +0800</pubDate>
      <guid>https://blog.xupeng.me/2006/10/07/compile-error-with-fontconfig-232-under-lfs/</guid>
      <description>LFS还算很顺利，现在已经进入到BLFS之Xorg7.0阶段，呵呵&lt;br /&gt;&lt;br /&gt;编译Fontconfig2.3.2时出错了，提示找不到jw解析器：&lt;br /&gt;&lt;pre style=&#34;color: rgb(255, 1, 2);&#34;&gt;&lt;i&gt;/bin/sh ../libtool --mode=link gcc  -g -O2   -o fc-cache&lt;br /&gt;&lt;/i&gt;&lt;i&gt;fc-cache.o ../src/libfontconfig.la&lt;br /&gt;&lt;/i&gt;&lt;i&gt;mkdir .libs&lt;br /&gt;&lt;/i&gt;&lt;i&gt;gcc -g -O2 -o .libs/fc-cache fc-cache.o  ../src/.libs/libfontconfig.so&lt;br /&gt;&lt;/i&gt;&lt;i&gt;creating fc-cache&lt;br /&gt;&lt;/i&gt;&lt;i&gt;rm -f fc-cache.1&lt;br /&gt;&lt;/i&gt;&lt;i&gt;docbook2man ../fc-cache/fc-cache.sgml&lt;br /&gt;&lt;/i&gt;&lt;i&gt;jw: No parser available&lt;br /&gt;&lt;/i&gt;&lt;i&gt;make[2]: *** [fc-cache.1] Error 6&lt;/i&gt;&lt;/pre&gt;无可奈何，不过在LFS的邮件列表中已经有人解决了这个问题：&lt;br /&gt;&lt;pre style=&#34;color: rgb(0, 128, 255);&#34;&gt;&lt;i&gt;before you begin, rename the docbook2html to docbook2html.---&lt;/i&gt;&lt;i&gt;&lt;br /&gt;&lt;/i&gt;&lt;i&gt;   mv /usr/bin/docbook2html /usr/bin/docbook2html.--&lt;/i&gt;&lt;i&gt;&lt;br /&gt;&lt;/i&gt;&lt;i&gt;once all done, rename it back again !&lt;/i&gt;&lt;i&gt;&lt;br /&gt;&lt;/i&gt;&lt;i&gt;   mv /usr/bin/docbook2html.--- /usr/bin/docbook2html&lt;/i&gt;&lt;/pre&gt;没什么技术含量，做下记录吧。&lt;br /&gt;</description>
    </item>
    <item>
      <title>wxGTK引发的些案</title>
      <link>https://blog.xupeng.me/2006/10/05/some-problems-wxgtk-brought-to-be/</link>
      <pubDate>Thu, 05 Oct 2006 08:00:00 +0800</pubDate>
      <guid>https://blog.xupeng.me/2006/10/05/some-problems-wxgtk-brought-to-be/</guid>
      <description>&lt;span class=&#34;postbody&#34;&gt;我的gentoo最近有些不听话，有好些个应用程序都不能用了：amule、xchm等。revdep-rebuild的时候发现少了很多的库，大概是因为最近几次更新系统都没有revdep-rebuild吧，系统有些凌乱了。&lt;br /&gt;&lt;br /&gt;revdep-build并不能解决问题，因为这根本就没有办法运行下去，第一个软件包amule的重新编译就遇到了问题：&lt;br /&gt;&lt;span style=&#34;color: rgb(255, 1, 2);&#34;&gt;!!! set-wxconfig: Error:  Can&#39;t find normal or debug version:&#xA;&lt;/span&gt;&lt;br style=&#34;color: rgb(255, 1, 2);&#34;/&gt;&lt;span style=&#34;color: rgb(255, 1, 2);&#34;&gt;&#xA;!!! set-wxconfig:         /usr/lib/wx/config/gtk2-unicode-release-2.6 not found&#xA;&lt;/span&gt;&lt;br style=&#34;color: rgb(255, 1, 2);&#34;/&gt;&lt;span style=&#34;color: rgb(255, 1, 2);&#34;&gt;&#xA;!!! set-wxconfig:         /usr/lib/wx/config/gtk2-unicode-debug-2.6 not found&#xA;&lt;/span&gt;&lt;br style=&#34;color: rgb(255, 1, 2);&#34;/&gt;&lt;span style=&#34;color: rgb(255, 1, 2);&#34;&gt;&#xA;!!! You need to emerge wxGTK with unicode in your USE&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;按照错误提示，似乎是因为我编译wxGTK时没有使用unicode这个USE？不对啊，从equery u wxGTK的输出来看，我使用了这个USE，那为什么它还告诉我说要使用unicode呢？哦，这个只是它的建议而已，再看上面的错误信息：&lt;br /&gt;找不到gtk2-unicode-release-2.6，看一下，/usr/lib/wx/config下的确没有这样的文件，这个应该是编译wxGTK的时候缺少了什么USE导致的，但不是unicode，因为我的确使用了unicode。&lt;br /&gt;&lt;br /&gt;google的结果并没有为我提供可用的信息，还是自己动手吧，丰衣足食：）&lt;br /&gt;&lt;br /&gt;vi /usr/portage/x11-libs/wxGTK/wxGTK-2.6.3.3.ebuild，仔细看了看这个ebuild，我找到了这样的一段代码：&lt;br /&gt;&lt;span style=&#34;color: rgb(0, 128, 255);&#34;&gt;pkg_setup() {&lt;/span&gt;&lt;br style=&#34;color: rgb(0, 128, 255);&#34;/&gt;&lt;span style=&#34;color: rgb(0, 128, 255);&#34;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; if use X; then&lt;/span&gt;&lt;br style=&#34;color: rgb(0, 128, 255);&#34;/&gt;&lt;span style=&#34;color: rgb(0, 128, 255);&#34;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; einfo &#34;To install only wxbase (non-gui libs) use USE=-X&#34;&lt;/span&gt;&lt;br style=&#34;color: rgb(0, 128, 255);&#34;/&gt;&lt;span style=&#34;color: rgb(0, 128, 255);&#34;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; else&lt;/span&gt;&lt;br style=&#34;color: rgb(0, 128, 255);&#34;/&gt;&lt;span style=&#34;color: rgb(0, 128, 255);&#34;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; einfo &#34;To install GUI libraries, in addition to wxbase, use USE=X&#34;&lt;/span&gt;&lt;br style=&#34;color: rgb(0, 128, 255);&#34;/&gt;&lt;span style=&#34;color: rgb(0, 128, 255);&#34;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; fi&lt;/span&gt;&lt;br style=&#34;color: rgb(0, 128, 255);&#34;/&gt;&lt;span style=&#34;color: rgb(0, 128, 255);&#34;&gt;}&lt;/span&gt;&lt;br style=&#34;color: rgb(0, 128, 255);&#34;/&gt;再仔细看看equery u wxGTK的输出，哦，居然没有X这个USE，问题大概就是在这里了，USE=&#34;X&#34; emerge wxGTK，漫长的等待之后，ok，amule等问题程序编译通过了，问题得到圆满的解决。&lt;br /&gt;</description>
    </item>
    <item>
      <title>google又被封，实在太不可爱了</title>
      <link>https://blog.xupeng.me/2006/10/04/google-was-blocked-again/</link>
      <pubDate>Wed, 04 Oct 2006 08:00:00 +0800</pubDate>
      <guid>https://blog.xupeng.me/2006/10/04/google-was-blocked-again/</guid>
      <description>&lt;div&gt;动不动就这样，连mail都看不了了，代理代理，这样实在是太不可爱了，sigh。&lt;/div&gt;&#xA;&lt;div&gt;&lt;/div&gt;</description>
    </item>
    <item>
      <title>列出子类的新方法</title>
      <link>https://blog.xupeng.me/2006/09/27/list-subclass-new-methods-in-python/</link>
      <pubDate>Wed, 27 Sep 2006 08:00:00 +0800</pubDate>
      <guid>https://blog.xupeng.me/2006/09/27/list-subclass-new-methods-in-python/</guid>
      <description>刚才在python邮件列表中看到有人提出这样的一个问题：&#xA;&lt;pre class=&#34;wiki&#34;&gt;I am writing a library in which I need to find the names of methods&#xA;which are implemented in a class, rather than inherited from another&#xA;class. To explain more, and to find if there is another way of doing&#xA;it, here is what I want to do: I am defining two classes, say A and B,&#xA;as:&#xA;&#xA;class A(object):&#xA;   def list_cmds(self):&#xA;       ’implementation needed’&#xA;       ?&#xA;   def __init__(self):&#xA;   … (rest of class)&#xA;&#xA;class B(A):&#xA;   def cmd1(self, args):&#xA;       pass&#xA;   def cmd2(self, args):&#xA;       pass&#xA;&#xA;I need an implementation of list_cmds in A above so that I can get a&#xA;result:&#xA;&#xA;&amp;gt;&amp;gt;&amp;gt; b=B()&#xA;&amp;gt;&amp;gt;&amp;gt; b.list_cmds()&#xA;[&#39;cmd1&#39;,&#39;cmd2&#39;]                    #order not important&#xA;&#xA;I will be happy if anybody can point to me any way of doing it, using&#xA;class attributes, metaclasses or otherwise. What I don’t want to do is&#xA;modifying class B, which contains just the cmds, if possible.&lt;/pre&gt;&#xA;想了一下我使用下面的代码完成了他所需要的功能：&#xA;&lt;div class=&#34;code&#34;&gt;&#xA;&lt;pre&gt;&lt;span class=&#34;c&#34;&gt;#!/usr/bin/python&lt;/span&gt;&#xA;&lt;span class=&#34;c&#34;&gt;#filename: p.y&lt;/span&gt;&#xA;&#xA;&lt;span class=&#34;k&#34;&gt;class&lt;/span&gt; &lt;span class=&#34;nc&#34;&gt;A&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nb&#34;&gt;object&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;):&lt;/span&gt;&#xA;    &lt;span class=&#34;k&#34;&gt;def&lt;/span&gt; &lt;span class=&#34;nf&#34;&gt;listcmds&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;bp&#34;&gt;self&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;):&lt;/span&gt;&#xA;        allInChild &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;dir&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;bp&#34;&gt;self&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;&#xA;        allInParent &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;dir&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;A&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;&#xA;&#xA;        allOnlyInChild &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;[]&lt;/span&gt;&#xA;        &lt;span class=&#34;k&#34;&gt;for&lt;/span&gt; att &lt;span class=&#34;ow&#34;&gt;in&lt;/span&gt; allInChild&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&#xA;            &lt;span class=&#34;k&#34;&gt;if&lt;/span&gt; att &lt;span class=&#34;ow&#34;&gt;not&lt;/span&gt; &lt;span class=&#34;ow&#34;&gt;in&lt;/span&gt; allInParent&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&#xA;                allOnlyInChild&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;append&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;att&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;&#xA;&#xA;        &lt;span class=&#34;k&#34;&gt;return&lt;/span&gt; allOnlyInChild&#xA;&#xA;    &lt;span class=&#34;k&#34;&gt;def&lt;/span&gt; &lt;span class=&#34;nf&#34;&gt;__init__&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;bp&#34;&gt;self&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;):&lt;/span&gt;&#xA;        &lt;span class=&#34;k&#34;&gt;pass&lt;/span&gt;&#xA;&#xA;&lt;span class=&#34;k&#34;&gt;class&lt;/span&gt; &lt;span class=&#34;nc&#34;&gt;B&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;A&lt;span class=&#34;p&#34;&gt;):&lt;/span&gt;&#xA;    &lt;span class=&#34;k&#34;&gt;def&lt;/span&gt; &lt;span class=&#34;nf&#34;&gt;m1&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;bp&#34;&gt;self&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;):&lt;/span&gt;&#xA;        &lt;span class=&#34;k&#34;&gt;pass&lt;/span&gt;&#xA;&#xA;    &lt;span class=&#34;k&#34;&gt;def&lt;/span&gt; &lt;span class=&#34;nf&#34;&gt;m2&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;bp&#34;&gt;self&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;):&lt;/span&gt;&#xA;        &lt;span class=&#34;k&#34;&gt;pass&lt;/span&gt;&#xA;b &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; B&lt;span class=&#34;p&#34;&gt;()&lt;/span&gt;&#xA;&lt;span class=&#34;k&#34;&gt;print&lt;/span&gt; b&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;listcmds&lt;span class=&#34;p&#34;&gt;()&lt;/span&gt;&lt;/pre&gt;&#xA;&lt;/div&gt;&#xA;功能是实现了，就是不知道方法是不是笨了点。等我把邮件发出去发现在几分钟前也有人回复了这个邮件，其中一个解决方案和我的几乎是一个样的，也没有出现更高明的方法，看来我的想法还是有可取之处的，不早了，早上起来再看看有没有人给出更好的方案。</description>
    </item>
    <item>
      <title>把gnome升级到2.16的一个参考方案</title>
      <link>https://blog.xupeng.me/2006/09/12/upgrade-gnome-to-216-under-gentoo/</link>
      <pubDate>Tue, 12 Sep 2006 08:00:00 +0800</pubDate>
      <guid>https://blog.xupeng.me/2006/09/12/upgrade-gnome-to-216-under-gentoo/</guid>
      <description>昨天参考了网上一份升级gnome到2.14的文档，把gnome从2.14升级到了2.16，方法也很简单，我写的比较简略，需要更详细的介绍和解释，可以参考原文档（&lt;a href=&#34;http://gentoo-wiki.com/HOWTO_Update_to_GNOME_unstable&#34; target=&#34;_blank&#34;&gt;http://gentoo-wiki.com/HOWTO_Update_to_GNOME_unstable&lt;/a&gt;）：&lt;br /&gt;&#xA;&lt;br /&gt;&#xA;gnome2.16 9月6号才进入portgae吧，首先要更新一下portage：&lt;br /&gt;&#xA;&lt;div style=&#34;margin: 5px 20px 20px 0px;&#34;&gt;&#xA;&#x9;&lt;div class=&#34;smallfont&#34; style=&#34;margin-bottom: 2px;&#34;&gt;代码:&lt;/div&gt;&#xA;&#x9;&lt;pre class=&#34;alt2&#34; style=&#34;border: 1px solid rgb(198, 198, 198); margin: 0px; padding: 4px; overflow: auto; width: 640px; height: 34px;&#34;&gt;&lt;div dir=&#34;ltr&#34; style=&#34;text-align: left;&#34;&gt;emerge --sync&lt;/div&gt;&lt;/pre&gt;&#xA;&lt;/div&gt;&#xA;先把gnome2.16相关的包给unmask了：&lt;br /&gt;&#xA;&lt;div style=&#34;margin: 5px 20px 20px 0px;&#34;&gt;&#xA;&#x9;&lt;div class=&#34;smallfont&#34; style=&#34;margin-bottom: 2px;&#34;&gt;代码:&lt;/div&gt;&#xA;&#x9;&lt;pre class=&#34;alt2&#34; style=&#34;border: 1px solid rgb(198, 198, 198); margin: 0px; padding: 4px; overflow: auto; width: 640px; height: 34px;&#34;&gt;&lt;div dir=&#34;ltr&#34; style=&#34;text-align: left;&#34;&gt;sed -n &#39;/# New GNOME 2.16 gtk# components/,/# End GNOME 2.16 mask/p&#39; /usr/portage/profiles/package.mask &amp;gt;&amp;gt; /etc/portage/package.unmask&lt;/div&gt;&lt;/pre&gt;&#xA;&lt;/div&gt;&#xA;把这些包加入/etc/portage/package.keywords中：&lt;br /&gt;&#xA;&lt;div style=&#34;margin: 5px 20px 20px 0px;&#34;&gt;&#xA;&#x9;&lt;div class=&#34;smallfont&#34; style=&#34;margin-bottom: 2px;&#34;&gt;代码:&lt;/div&gt;&#xA;&#x9;&lt;pre class=&#34;alt2&#34; style=&#34;border: 1px solid rgb(198, 198, 198); margin: 0px; padding: 4px; overflow: auto; width: 640px; height: 34px;&#34;&gt;&lt;div dir=&#34;ltr&#34; style=&#34;text-align: left;&#34;&gt;sed -n &#39;/# New GNOME 2.16 gtk# components/,/# End GNOME 2.16 mask/p&#39; /usr/portage/profiles/package.mask |awk &#39;{ print $1 &#34; ~x86&#34; }&#39; &amp;gt;&amp;gt; /etc/portage/package.keywords&lt;/div&gt;&lt;/pre&gt;&#xA;&lt;/div&gt;&#xA;把gnome依赖的包也加入到keywords中：&lt;br /&gt;&#xA;&lt;div style=&#34;margin: 5px 20px 20px 0px;&#34;&gt;&#xA;&#x9;&lt;div class=&#34;smallfont&#34; style=&#34;margin-bottom: 2px;&#34;&gt;代码:&lt;/div&gt;&#xA;&#x9;&lt;pre class=&#34;alt2&#34; style=&#34;border: 1px solid rgb(198, 198, 198); margin: 0px; padding: 4px; overflow: auto; width: 640px; height: 34px;&#34;&gt;&lt;div dir=&#34;ltr&#34; style=&#34;text-align: left;&#34;&gt;ACCEPT_KEYWORDS=&#34;~x86&#34; emerge -p =gnome-base/gnome-2.16* | grep \[ebuild |awk &#39;{ print $4 }&#39; | sed -e &#39;s/^/~/&#39; -e &#39;s/-r[0-9]{1,2}//&#39; |uniq -u | sort &amp;gt;&amp;gt;/etc/portage/package.keywords&lt;/div&gt;&lt;/pre&gt;&#xA;&lt;/div&gt;&#xA;最后，升级gnome：&lt;br /&gt;&#xA;&lt;div style=&#34;margin: 5px 20px 20px 0px;&#34;&gt;&#xA;&#x9;&lt;div class=&#34;smallfont&#34; style=&#34;margin-bottom: 2px;&#34;&gt;代码:&lt;/div&gt;&#xA;&#x9;&lt;pre class=&#34;alt2&#34; style=&#34;border: 1px solid rgb(198, 198, 198); margin: 0px; padding: 4px; overflow: auto; width: 640px; height: 34px;&#34;&gt;&lt;div dir=&#34;ltr&#34; style=&#34;text-align: left;&#34;&gt;emerge -DuN gnome&lt;/div&gt;&lt;/pre&gt;&#xA;&lt;/div&gt;&#xA;&lt;br /&gt;&#xA;注：要把~x86替换为与你的平台相对应的关键字</description>
    </item>
    <item>
      <title>升级gentoo到2006.1</title>
      <link>https://blog.xupeng.me/2006/09/10/update-gentoo-to-2006-1/</link>
      <pubDate>Sun, 10 Sep 2006 08:00:00 +0800</pubDate>
      <guid>https://blog.xupeng.me/2006/09/10/update-gentoo-to-2006-1/</guid>
      <description>gentoo发布了2006.1，系统有很久没有更新过了，借此机会更新到2006.1吧。&lt;br /&gt;&lt;br /&gt;因为这是一个新的release，先更改系统的profile：&lt;br /&gt;&lt;span style=&#34;color: rgb(0, 128, 255);&#34;&gt;rm /etc/make.profile&lt;/span&gt;&lt;br style=&#34;color: rgb(0, 128, 255);&#34;/&gt;&lt;span style=&#34;color: rgb(0, 128, 255);&#34;&gt;ln -s /usr/protage/profiles/default-linux/x86/2006.1 /etc/make.profile&lt;/span&gt;&lt;br style=&#34;color: rgb(0, 153, 204);&#34;/&gt;&lt;br style=&#34;color: rgb(0, 153, 204);&#34;/&gt;接下来下载需要更新的软件包：&lt;br /&gt;&lt;span style=&#34;color: rgb(0, 128, 255);&#34;&gt;emerge -feuDv system&lt;br /&gt;emerge -feuDv world&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;更新system：&lt;br /&gt;&lt;span style=&#34;color: rgb(0, 128, 255);&#34;&gt;emerge -euDv system&lt;br /&gt;emerge -euDv world&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;这又是一个漫长的过程，估计明天要工作一整天了。&lt;br /&gt;&lt;br /&gt;</description>
    </item>
    <item>
      <title>网络断了一个多星期，终于通了。</title>
      <link>https://blog.xupeng.me/2006/09/08/the-network-down-for-one-week/</link>
      <pubDate>Fri, 08 Sep 2006 08:00:00 +0800</pubDate>
      <guid>https://blog.xupeng.me/2006/09/08/the-network-down-for-one-week/</guid>
      <description>没有网络的确很不方便，生活不能没有网络。</description>
    </item>
    <item>
      <title>使用grub引导第二块硬盘上的Windows</title>
      <link>https://blog.xupeng.me/2006/08/28/boot-windows-on-second-harddisk-with-grub/</link>
      <pubDate>Mon, 28 Aug 2006 08:00:00 +0800</pubDate>
      <guid>https://blog.xupeng.me/2006/08/28/boot-windows-on-second-harddisk-with-grub/</guid>
      <description>新添一块儿硬盘给Linux使用，在旧的硬盘上安装了windows，在BIOS中设置新硬盘为第一个硬盘，因此计算机默认从新硬盘启动，仍然使用grub作为loader。&lt;br /&gt;&lt;br /&gt;由于windows安装在第二块硬盘上，使用以前的方法来引导windows的时候并不能凑效：&lt;br /&gt;&lt;span style=&#34;color: rgb(0, 128, 255);&#34;&gt;root (hd1,0)&lt;/span&gt;&lt;br style=&#34;color: rgb(0, 128, 255);&#34;/&gt;&lt;span style=&#34;color: rgb(0, 128, 255);&#34;&gt;chainloader +1&lt;/span&gt;&lt;br /&gt;查看了grub的文档，发现要引导DOS/Windows等系统时，如果其不在第一块硬盘上，还需要做一些特殊的设置，比如我的windows安装在第二块硬盘的第一个主分区上，我要使用grub来引导的话需要使用这样的grub命令：&lt;br /&gt;&lt;span style=&#34;color: rgb(0, 128, 255);&#34;&gt;title WindowsXP&lt;/span&gt;&lt;br /&gt;&lt;span style=&#34;color: rgb(0, 128, 255);&#34;&gt;map (hd0) (hd1)&lt;/span&gt;&lt;br style=&#34;color: rgb(0, 128, 255);&#34;/&gt;&lt;span style=&#34;color: rgb(0, 128, 255);&#34;&gt;map (hd1) (hd0)&lt;/span&gt;&lt;br style=&#34;color: rgb(0, 128, 255);&#34;/&gt;&lt;span style=&#34;color: rgb(0, 128, 255);&#34;&gt;root (hd1,0)&lt;/span&gt;&lt;br style=&#34;color: rgb(0, 128, 255);&#34;/&gt;&lt;span style=&#34;color: rgb(0, 128, 255);&#34;&gt;chainloader (hd1,0)+1&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;可以看出这两者的不同了吧？&lt;br /&gt;在这里使用了map命令，map命令用来把一个硬盘设备映射为另一个，官方文档中是这样写的：&lt;br /&gt;&lt;span style=&#34;color: rgb(0, 128, 255);&#34;&gt;Map the drive &lt;/span&gt;&lt;var style=&#34;color: rgb(0, 128, 255);&#34;&gt;from_drive&lt;/var&gt;&lt;span style=&#34;color: rgb(0, 128, 255);&#34;&gt; to the drive &lt;/span&gt;&lt;var style=&#34;color: rgb(0, 128, 255);&#34;&gt;to_drive&lt;/var&gt;&lt;span style=&#34;color: rgb(0, 128, 255);&#34;&gt;. This is&#xA;necessary when you chain-load some operating systems, such as DOS, if&#xA;such an OS resides at a non-first drive.&lt;/span&gt;&lt;br /&gt;chainloader的使用也有些不同，在这里要显式的指出windows所在的分区。&lt;br /&gt;&lt;br /&gt;注：使用gentoo一年多了，到今天才开始仔仔细细的看它的官方文档，其实gentoo的文档里已有这样的说明，遗憾的是我刚刚才看到，gentoo的文档里还有lilo的映射方法，与上面的grub指令等价的lilo指令如下：&lt;br /&gt;&lt;pre&gt;&lt;span style=&#34;color: rgb(0, 128, 255);&#34;&gt;other=/dev/hdb1 &lt;/span&gt;&lt;br style=&#34;color: rgb(0, 128, 255);&#34;/&gt;&lt;span style=&#34;color: rgb(0, 128, 255);&#34;&gt;  label=WindowsXP &lt;/span&gt;&lt;br style=&#34;color: rgb(0, 128, 255);&#34;/&gt;&lt;span style=&#34;color: rgb(0, 128, 255);&#34;&gt;  table=/dev/hdb&lt;/span&gt;&lt;br style=&#34;color: rgb(0, 128, 255);&#34;/&gt;&lt;span style=&#34;color: rgb(0, 128, 255);&#34;&gt;  map-drive = 0x80 &lt;/span&gt;&lt;br style=&#34;color: rgb(0, 128, 255);&#34;/&gt;&lt;span style=&#34;color: rgb(0, 128, 255);&#34;&gt;  to = 0x81 &lt;/span&gt;&lt;br style=&#34;color: rgb(0, 128, 255);&#34;/&gt;&lt;span style=&#34;color: rgb(0, 128, 255);&#34;&gt;  map-drive = 0x81 &lt;/span&gt;&lt;br /&gt; &lt;span style=&#34;color: rgb(0, 128, 255);&#34;&gt; to = 0x80 &lt;br /&gt;&lt;span style=&#34;color: rgb(255, 1, 2);&#34;&gt;修改于200年10月10日&lt;/span&gt;&lt;br /&gt;&lt;/span&gt;&lt;/pre&gt;&lt;br /&gt;</description>
    </item>
    <item>
      <title>Mac os X x86 10.4.6安装使用手记</title>
      <link>https://blog.xupeng.me/2006/08/24/install-and-use-mac-os-x-x86-1046/</link>
      <pubDate>Thu, 24 Aug 2006 08:00:00 +0800</pubDate>
      <guid>https://blog.xupeng.me/2006/08/24/install-and-use-mac-os-x-x86-1046/</guid>
      <description>&lt;p&gt;再次下载安装了 Mac OS X，仍然是使用 VMware 安装到物理硬盘上，因为我没有 DVD 刻录机，只好使用这样的方法了。使用 VMware 安装时需要注意的一个问题是：直接把 DVD 镜像作为虚拟机的光驱来启动安装是不能成功的，会出现传说中的四国文字，至少在我这里是这样，解决方法是在 Windows 下使用 Daemon tools 之类的光驱虚拟软件来把 DVD 镜像虚拟成光驱，再从这个光驱来启动。&lt;/p&gt;</description>
    </item>
    <item>
      <title>假期在家胖了一圈，今天回到学校了</title>
      <link>https://blog.xupeng.me/2006/08/18/i-got-much-fat-in-the-vacation/</link>
      <pubDate>Fri, 18 Aug 2006 08:00:00 +0800</pubDate>
      <guid>https://blog.xupeng.me/2006/08/18/i-got-much-fat-in-the-vacation/</guid>
      <description>在家里每天吃过饭就是坐在计算机前，要么就躺在床上闭目养神，除了周日去看看小米没有多余的事情可以做，就这样一个多月下来胖了一圈，一向清瘦的我居然也有了傲人的小肚子，无奈。&lt;br /&gt;&lt;br /&gt;回来学校，学校人比较多，我却感觉很安静。明年的这个时间，我会是坐在哪家公司的办公室，还是失落的走在街头？最终我决定放弃考研努力为找到一份好的工作而努力，这是我近期乃至几年几十年需要为之忙碌付出艰辛的事情。&lt;br /&gt;&lt;br /&gt;事情很乱，心里很杂，一点一点来吧，会好起来的。&lt;br /&gt;</description>
    </item>
    <item>
      <title>考试完了，准备明后天回家</title>
      <link>https://blog.xupeng.me/2006/07/02/finish-exams-and-go-home-tomorrow/</link>
      <pubDate>Sun, 02 Jul 2006 08:00:00 +0800</pubDate>
      <guid>https://blog.xupeng.me/2006/07/02/finish-exams-and-go-home-tomorrow/</guid>
      <description>终于考试完了，收拾下东西，准备些资料，明天或着后天回家。在学校呆时间长了真不是好玩儿的，回家静一静，给自己一些思考的时间，想想一些事情。</description>
    </item>
    <item>
      <title>我现在使用的Kernel配置文件</title>
      <link>https://blog.xupeng.me/2006/06/29/the-kernel-configuration-i-am-using-now/</link>
      <pubDate>Thu, 29 Jun 2006 08:00:00 +0800</pubDate>
      <guid>https://blog.xupeng.me/2006/06/29/the-kernel-configuration-i-am-using-now/</guid>
      <description>老是把配置文件弄丢，在这里备份个。&#xA;&lt;a href=&#39;https://blog.xupeng.me/downloads/2008/02/kernel-config.gz&#39; title=&#39;Kernel configuration&#39;&gt;Kernel configuration&lt;/a&gt;</description>
    </item>
    <item>
      <title>MacOSX x86 10.4.6安装成功，无法启动</title>
      <link>https://blog.xupeng.me/2006/06/27/installed-macosx-x86-1046-cannot-boot/</link>
      <pubDate>Tue, 27 Jun 2006 08:00:00 +0800</pubDate>
      <guid>https://blog.xupeng.me/2006/06/27/installed-macosx-x86-1046-cannot-boot/</guid>
      <description>bt真慢，拖了几天才拖下来，因为没有DVD刻录机，只能使用vmware来安装了，想安装到真实机上，因此选择了使用了物理硬盘。&lt;br /&gt;&lt;br /&gt;安装开始有一点小插曲，像以前安装其他的系统一样直接选择了ISO镜像作为光驱，启动后很长时间没有反应，无法继续安装，后来把ISO镜像放入虚拟光驱，在vmware里选择放入镜像的那个驱动器做虚拟机的光驱就可以正常安装了。&lt;br /&gt;&lt;br /&gt;安装算是很顺利，即便以前从来没有见过MacOS长什么样也能很顺利的完成安装，看来Mac的人机界面友好真的不是吹的，可惜虚拟机还是很慢，装完用了1个多小时，或者是两个小时左右，在忙其他的事情没太在意。&lt;br /&gt;&lt;br /&gt;安装完毕提示重启，关掉虚拟机，重启系统，从真实机启动Mac，遗憾的是在启动画面处久久没有动静，加入-v参数显示详细启动信息，看到了如下的错误信息：&lt;br /&gt;&lt;span style=&#34;color: rgb(255, 1, 2);&#34;&gt;still waiting for root device&lt;/span&gt;&lt;br /&gt;google了一下发现遇到这个问题的人非常多，众说纷纭，但没有一个明确的解决方案，我只好病急乱投医了，方法挨个试：&lt;br /&gt;1。-x -F 参数分别试，混合试 依旧&lt;br /&gt;2。platform=X86PC 无效&lt;br /&gt;3。rd参数指定root分区位置 不奏效&lt;br /&gt;4。强制硬盘为master，光驱为slave，而不使用cable select 依然不让人兴奋&lt;br /&gt;5。拔掉光驱，只留下硬盘 很遗憾&lt;br /&gt;6。无奈了，使用vmware启动试一下。出现了传说中的四国文字，不能启动，怪哉。&lt;br /&gt;&lt;br /&gt;小结：&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; 安装还算顺利，但还是给人空留遗憾，假期里有机会再研究吧，比较看好这个BSD的可爱精灵，我想我会喜欢这东西的。&lt;br /&gt;</description>
    </item>
    <item>
      <title>几行用于简繁编码转换的python代码</title>
      <link>https://blog.xupeng.me/2006/06/21/python-code-convert-between-big-and-gbk/</link>
      <pubDate>Wed, 21 Jun 2006 08:00:00 +0800</pubDate>
      <guid>https://blog.xupeng.me/2006/06/21/python-code-convert-between-big-and-gbk/</guid>
      <description>刚刚在list里看到有人问limodou老大以前写的简繁转换程序，就随手写了几行，试了下可以正确进行转换，也贴进了list：&lt;br /&gt;&lt;br /&gt;#coding=gbk&lt;br /&gt;&lt;br /&gt;chstr = &#34;中文&#34;&lt;br /&gt;&lt;br /&gt;big5file = open(&#34;big5.txt&#34;,&#34;w&#34;)&lt;br /&gt;big5file.write(chstr.decode(&#34;gbk&#34;).encode(&#34;big5&#34;))&lt;br /&gt;big5file.close()&lt;br /&gt;&lt;br /&gt;txt = open(&#34;big5.txt&#34;).read()&lt;br /&gt;gbfile = open(&#34;gb.txt&#34;,&#34;w&#34;)&lt;br /&gt;gbfile.write(txt.decode(&#34;big5&#34;).encode(&#34;gbk&#34;))&lt;br /&gt;gbfile.close()&lt;br /&gt;</description>
    </item>
    <item>
      <title>原来简繁转换并非那么简单</title>
      <link>https://blog.xupeng.me/2006/06/21/its-not-that-easy-to-convert-between-gbk-and-big5/</link>
      <pubDate>Wed, 21 Jun 2006 08:00:00 +0800</pubDate>
      <guid>https://blog.xupeng.me/2006/06/21/its-not-that-easy-to-convert-between-gbk-and-big5/</guid>
      <description>刚刚在list看到了limodou和swordsp的回复，才明白简繁转换远没有我想象的那么简单。&lt;br /&gt;&lt;br /&gt;limodou的回复：&lt;br /&gt;&lt;span style=&#34;color: rgb(0, 153, 204);&#34;&gt;还不是这么简单。你所写的转换只是把big5&amp;lt;-&amp;gt;gbk之间互转。但因为gbk汉字有繁体和简体字的区别，因此都是gbk，但却有繁体与简体之分。而big5则只有繁体字。因此，gbk-&amp;gt;big5结果应该是一样的。而big5-&amp;gt;gbk可能有不同的结果。我当时是从哪里找的对照表我也记不清了，反正是别人做好的，但因为不是python的程序，所以我写了一个转换程序。&lt;/span&gt;&lt;br style=&#34;color: rgb(0, 153, 204);&#34;/&gt;&lt;div style=&#34;direction: ltr; color: rgb(0, 153, 204);&#34;&gt;unicode是可以转，但没有研究过转出来是哪种结果。&lt;/div&gt;&lt;br /&gt;swordsp的回复：&lt;br /&gt;&lt;span style=&#34;color: rgb(0, 153, 204);&#34;&gt;你的程序只能在gb和big码的交集范围内工作，比如把&#34;中文&#34;换成&#34;简体&#34;就出错了。如果要把&#34;简体&#34;转成&#34;簡体&#34;，就需要根据专门的转换码表查表，也就是limodou的程序的做法。&lt;/span&gt;&lt;br style=&#34;color: rgb(0, 153, 204);&#34;/&gt;</description>
    </item>
    <item>
      <title>重新编译python以后mod_python出问题了</title>
      <link>https://blog.xupeng.me/2006/06/20/mod-python-broke-after-recompiling-python/</link>
      <pubDate>Tue, 20 Jun 2006 08:00:00 +0800</pubDate>
      <guid>https://blog.xupeng.me/2006/06/20/mod-python-broke-after-recompiling-python/</guid>
      <description>&lt;p class=&#34;line874&#34;&gt;也不是完全不能用了，我的moinmoin在mod_python下运行还基本良好，就是当我早上要查找一个文档时发现moin的“查找网页”功能出了问题，错误信息如下： &lt;span class=&#34;anchor&#34; id=&#34;line-3&#34;&gt;&lt;/span&gt;&lt;span class=&#34;anchor&#34; id=&#34;line-4&#34;&gt;&lt;/span&gt;&lt;/p&gt;&lt;pre&gt;&lt;span style=&#34;color: rgb(255, 1, 2);&#34;&gt;ImportError&lt;/span&gt;&lt;br style=&#34;color: rgb(255, 1, 2);&#34;/&gt;&lt;span style=&#34;color: rgb(255, 1, 2);&#34; class=&#34;anchor&#34; id=&#34;line-5&#34;&gt;&lt;/span&gt;&lt;br style=&#34;color: rgb(255, 1, 2);&#34;/&gt;&lt;span style=&#34;color: rgb(255, 1, 2);&#34; class=&#34;anchor&#34; id=&#34;line-6&#34;&gt;&lt;/span&gt;&lt;span style=&#34;color: rgb(255, 1, 2);&#34;&gt;/usr/lib/python2.4/lib-dynload/array.so: undefined symbol: PyUnicodeUCS4_FromUnicode&lt;/span&gt;&lt;br style=&#34;color: rgb(255, 1, 2);&#34;/&gt;&lt;span style=&#34;color: rgb(255, 1, 2);&#34; class=&#34;anchor&#34; id=&#34;line-7&#34;&gt;&lt;/span&gt;&lt;br style=&#34;color: rgb(255, 1, 2);&#34;/&gt;&lt;span style=&#34;color: rgb(255, 1, 2);&#34; class=&#34;anchor&#34; id=&#34;line-8&#34;&gt;&lt;/span&gt;&lt;span style=&#34;color: rgb(255, 1, 2);&#34;&gt;If you want to report a bug, please save this page and attach it to your bug report.&lt;/span&gt;&lt;br /&gt;&lt;span class=&#34;anchor&#34; id=&#34;line-9&#34;&gt;&lt;/span&gt;&lt;/pre&gt;&lt;span class=&#34;anchor&#34; id=&#34;line-10&#34;&gt;&lt;/span&gt;&lt;span class=&#34;anchor&#34; id=&#34;line-11&#34;&gt;&lt;/span&gt;&lt;p class=&#34;line862&#34;&gt;起初我并不知道这是mod_python的问题，也不知道这个PyUnicodeUCS4_FromUnicode&#xA;是什么意思，当然也没有认为这是moinmoin的问题，因为一星期以来moinmoin运行的都很好，没有出现过任何问题。猜测是python本身的原&#xA;因吧，因为这两天总是因为某些问题重新编译python，比如最初编译python时我没有使用&#34;tcltk&#34;这个USE，导致了python不支持&#xA;tk，于是我就重新编译了他，于是我的moinmoin就有小恙了。 &lt;span class=&#34;anchor&#34; id=&#34;line-12&#34;&gt;&lt;/span&gt;&lt;span class=&#34;anchor&#34; id=&#34;line-13&#34;&gt;&lt;/span&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>使用at执行X应用程序</title>
      <link>https://blog.xupeng.me/2006/06/19/use-at-to-run-x-application/</link>
      <pubDate>Mon, 19 Jun 2006 08:00:00 +0800</pubDate>
      <guid>https://blog.xupeng.me/2006/06/19/use-at-to-run-x-application/</guid>
      <description>&lt;p&gt;前几天以为使用 &lt;code&gt;at&lt;/code&gt; 不能定时执行 X 应用程序，还自己用 Python 写了一个很简单的来使用，见&lt;a href=&#34;https://blog.xupeng.me/2006/06/14/cannot-run-x-applications-with-at/&#34; target=&#34;_blank&#34;&gt;这里&lt;/a&gt;。&lt;/p&gt;&#xA;&lt;p&gt;早上起来在 linuxsir 看到了有人给了新的回复，说不能运行只是因为没有指明 display，并非 at 不支持X应用程序，解决的办法是使用 &amp;ndash;display 选项。&lt;/p&gt;</description>
    </item>
    <item>
      <title>Ubuntu下的时区设置问题</title>
      <link>https://blog.xupeng.me/2006/06/18/set-timezone-under-ubuntu/</link>
      <pubDate>Sun, 18 Jun 2006 08:00:00 +0800</pubDate>
      <guid>https://blog.xupeng.me/2006/06/18/set-timezone-under-ubuntu/</guid>
      <description>&lt;p&gt;我现在有两个系统，一个是 Gentoo 2006.0，一个是 Ubuntu Dapper，两个系统之间的时间不同步。&lt;/p&gt;&#xA;&lt;p&gt;我在 Gentoo 下设置时区的方法如下：&lt;/p&gt;&#xA;&lt;ol&gt;&#xA;&lt;li&gt;&lt;code&gt;ln -s /usr/share/zoneinfo/Asia/Shanghai /etc/localtime&lt;/code&gt;&lt;/li&gt;&#xA;&lt;li&gt;修改 &lt;code&gt;/etc/conf.d/clock&lt;/code&gt;，将其中的 CLOCK 设置为 &lt;code&gt;local&lt;/code&gt;，即：&lt;code&gt;CLOCK=&amp;quot;local&amp;quot;&lt;/code&gt;&lt;/li&gt;&#xA;&lt;/ol&gt;&#xA;&lt;p&gt;这也是 Gentoo 下正确的时区设置方法，因此可以认为 Gentoo 的设置没有问题，问题出在 Ubuntu 上。&lt;/p&gt;</description>
    </item>
    <item>
      <title>大量的DNS服务器不能使用了，自己装一个</title>
      <link>https://blog.xupeng.me/2006/06/18/setup-dns-server-with-bind/</link>
      <pubDate>Sun, 18 Jun 2006 08:00:00 +0800</pubDate>
      <guid>https://blog.xupeng.me/2006/06/18/setup-dns-server-with-bind/</guid>
      <description>&lt;p class=&#34;line874&#34;&gt;早上起来发现不能上网了，检查了一下是不能解析域名的缘故，不知道是不是又有什么病毒让大量的DNS服务器瘫痪了，至少我平时能够使用的DNS服务器一个都不能正常工作，比如ISP给的：&lt;span style=&#34;color: #ff0102;&#34;&gt;202.102.224.68、202.102.227.68&lt;/span&gt;，河南大学的：&lt;span style=&#34;color: #ff0102;&#34;&gt;202.196.96.131&lt;/span&gt;，河南理工的：&lt;span style=&#34;color: #ff0102;&#34;&gt;202.196.225.6&lt;/span&gt;，郑州大学的：&lt;span style=&#34;color: #ff0102;&#34;&gt;202.196.64.1&lt;/span&gt;。&lt;/p&gt;</description>
    </item>
    <item>
      <title>想起来昨天是我的生日</title>
      <link>https://blog.xupeng.me/2006/06/18/yesterday-is-my-birthday/</link>
      <pubDate>Sun, 18 Jun 2006 08:00:00 +0800</pubDate>
      <guid>https://blog.xupeng.me/2006/06/18/yesterday-is-my-birthday/</guid>
      <description>哈哈，想起来也没什么，我好像没有什么过生日的习惯，不过这样挺好的，过生日劳民伤财，最近我也是日渐贫穷啊，没办法，快要放假喽</description>
    </item>
    <item>
      <title>在Shell脚本中为用户设置密码</title>
      <link>https://blog.xupeng.me/2006/06/16/set-password-for-users-in-shell-script/</link>
      <pubDate>Fri, 16 Jun 2006 08:00:00 +0800</pubDate>
      <guid>https://blog.xupeng.me/2006/06/16/set-password-for-users-in-shell-script/</guid>
      <description>&lt;pre&gt;&#xA;echo &#34;test&#34; | passwd test --stdin &gt; /dev/null 2&gt;&amp;1&#xA;&lt;/pre&gt;&#xA;这条命令可以把test用户的密码设置为test。</description>
    </item>
    <item>
      <title>小巧好用的浏览器：Epiphany</title>
      <link>https://blog.xupeng.me/2006/06/15/small-but-useful-browser-epiphany/</link>
      <pubDate>Thu, 15 Jun 2006 08:00:00 +0800</pubDate>
      <guid>https://blog.xupeng.me/2006/06/15/small-but-useful-browser-epiphany/</guid>
      <description>&lt;p&gt;哎，真是……真是，怎么不早点用一下这个浏览器呢？简洁、快速、智能，实在是太合我的口味了：）&#xA;&lt;/p&gt;&#xA;&lt;a name=&#34;.E8.B5.B7.E5.9B.A0&#34;&gt;&lt;/a&gt;&lt;h4&gt;起因&lt;/h4&gt;&#xA;&lt;p&gt;使用gentoo，自己编译的firefox字体真的很漂亮，使用pango渲染的字体效果没得说，可惜真的太慢了（或许不是pango的错，而只是我的firefox有问题），尤其是在gmail中查看邮件列表时慢的一塌糊涂，动不动CPU利用率就到了100％，在&lt;b&gt;&lt;a href=&#34;http://www.linuxsir.org/bbs&#34; class=&#34;external text&#34; title=&#34;http://www.linuxsir.org/bbs&#34; rel=&#34;nofollow&#34;&gt;linuxsir&lt;/a&gt;&lt;/b&gt;上问了半天也没有结果，只能继续忍受firefox带给我的痛苦。&#xA;&lt;/p&gt;</description>
    </item>
    <item>
      <title>莫非at不能定时执行图形程序？</title>
      <link>https://blog.xupeng.me/2006/06/14/cannot-run-x-applications-with-at/</link>
      <pubDate>Wed, 14 Jun 2006 08:00:00 +0800</pubDate>
      <guid>https://blog.xupeng.me/2006/06/14/cannot-run-x-applications-with-at/</guid>
      <description>想趁晚上没有人使用网路时用amule下载一些东西，却发现使用at并不能定时执行图形化的程序，而定时执行console程序是没有问题的，man了一下又google了半天没有任何收获，只得用python临时写一个简单的先凑合用着。&#xA;&#xA;&lt;pre&gt;&#xA;#!/usr/bin/python&#xA;#coding=UTF-8&#xA;&#xA;import wx&#xA;import os&#xA;&#xA;class MyApp(wx.App):&#xA;    def OnInit(self):&#xA;        self.frame = wx.Frame(None,-1,&#39;RunAt&#39;,size=(290,77))&#xA;&#xA;        self.lblCmd = wx.StaticText(self.frame,-1,&#39;命令：&#39;)&#xA;        self.txtCmd = wx.TextCtrl(self.frame,-1,size=(150,-1))&#xA;        self.btnSelect = wx.Button(self.frame,-1,&#39;选择&#39;)&#xA;        self.btnSelect.Bind(wx.EVT_BUTTON,self.Select)&#xA;&#xA;        self.lblTime = wx.StaticText(self.frame,-1,&#39;时间：&#39;)&#xA;        self.txtTime = wx.TextCtrl(self.frame,-1,size=(150,-1))&#xA;        self.btnSet = wx.Button(self.frame,-1,&#39;设定&#39;)&#xA;        self.btnSet.Bind(wx.EVT_BUTTON,self.Set)&#xA;&#xA;        sizer1 = wx.BoxSizer(wx.HORIZONTAL)&#xA;        sizer1.Add(self.lblCmd,0,wx.LEFT|wx.TOP|wx.ALIGN_CENTER,5)&#xA;        sizer1.Add(self.txtCmd,0,wx.LEFT|wx.TOP|wx.ALIGN_CENTER,5)&#xA;        sizer1.Add(self.btnSelect,0,wx.LEFT|wx.TOP|wx.ALIGN_CENTER,5)&#xA;&#xA;        sizer2 = wx.BoxSizer(wx.HORIZONTAL)&#xA;        sizer2.Add(self.lblTime,0,wx.LEFT|wx.TOP|wx.ALIGN_CENTER,5)&#xA;        sizer2.Add(self.txtTime,0,wx.LEFT|wx.TOP|wx.ALIGN_CENTER,5)&#xA;        sizer2.Add(self.btnSet,0,wx.LEFT|wx.TOP|wx.ALIGN_CENTER,5)&#xA;&#xA;        sizer = wx.BoxSizer(wx.VERTICAL)&#xA;        sizer.Add(sizer1,0)&#xA;        sizer.Add(sizer2,0)&#xA;&#xA;        self.frame.SetSizer(sizer)&#xA;&#xA;        self.runTime = None&#xA;&#xA;        self.timer = wx.Timer()&#xA;        self.timer.Bind(wx.EVT_TIMER,self.OnTimer)&#xA;        self.timer.Start()&#xA;&#xA;        self.frame.Bind(wx.EVT_ICONIZE,self.OnMin)&#xA;&#xA;        self.frame.Center()&#xA;        self.frame.Show(True)&#xA;        self.SetTopWindow(self.frame)&#xA;&#xA;        return True&#xA;&#xA;    def Select(self,event):&#xA;        dlg = wx.FileDialog(self.frame)&#xA;        if dlg.ShowModal() == wx.ID_OK:&#xA;            self.txtCmd.SetValue(dlg.GetPath())&#xA;&#xA;    def OnTimer(self,event):&#xA;        if self.runTime == None:&#xA;            pass&#xA;        t = wx.DateTime.Now()&#xA;        str = &#39;%02d:%02d&#39; %(t.GetHour(),t.GetMinute())&#xA;        if str == self.runTime and t.GetSecond() == 0:&#xA;            os.system(&#39;%s&amp;&#39; %self.txtCmd.GetValue())&#xA;&#xA;    def Set(self,event):&#xA;        self.runTime = self.txtTime.GetValue()&#xA;&#xA;    def OnMin(self,event):&#xA;        self.frame.Show(False)&#xA;&#xA;def main():&#xA;    app = MyApp(0)&#xA;    app.MainLoop()&#xA;&#xA;if __name__ == &#39;__main__&#39;:&#xA;    main()&#xA;&lt;/pre&gt;</description>
    </item>
    <item>
      <title>等宽字体的概念</title>
      <link>https://blog.xupeng.me/2006/06/11/basic-ieda-about-monospace-font/</link>
      <pubDate>Sun, 11 Jun 2006 08:00:00 +0800</pubDate>
      <guid>https://blog.xupeng.me/2006/06/11/basic-ieda-about-monospace-font/</guid>
      <description>(由linuxsir上fundawang的帖子整理)&lt;br /&gt;&lt;br /&gt;所谓的等宽字体，应该是指同一种script下，所有字符的宽度都相等。至于中文这个script中，汉字的宽度是否是en这个script里英文宽度的&#xA;两倍，取决于制作字体时的考虑，以及pango的字体替换算法。因为在很多情况下，pango会试图使用同一种字体来显示所有的字符，所以你经常会看到&#xA;gtk2的应用把英文字符也用中文字体来显示。&lt;br /&gt;&#xA;&lt;br /&gt;&#xA;如果单就解决这个问题而言，你可以告诉这个软件的作者，在进行算法设计的时候，就把中日韩字符以及标点符号算成两个字符宽就行了。说中文的开发者可以自行设定正确的字体。他如果想要测试的话，可以安装文泉驿的点阵字体，这个字体应该是标准的双倍宽度 :)&lt;br /&gt;&lt;br /&gt;注：script是字体这个范畴内的一个术语，大概跟字符集的意思差不多，也可以理解为Unicode范围。总之不是脚本的意思了 :D&lt;br /&gt;</description>
    </item>
    <item>
      <title>limodou大虾评论基于python的web框架</title>
      <link>https://blog.xupeng.me/2006/06/08/limodou-talk-about-python-web-framework/</link>
      <pubDate>Thu, 08 Jun 2006 08:00:00 +0800</pubDate>
      <guid>https://blog.xupeng.me/2006/06/08/limodou-talk-about-python-web-framework/</guid>
      <description>(摘自python-chinese邮件列表)&lt;br /&gt;&lt;br /&gt;web framework大多数从功能上都大同小异。从功能上分：zope/plone算大型的，而django,turbogears算是轻量级的。从学习曲线上分，zope/plone要长一些，而django,turbogears相对要短一些。对于django,turbogears来说，开发的理念有所不同，但功能是类似的。django所有东西都是自已开发的，象模板系统，url映射机制，ORM等。而turbogears则是许多相对成熟项目的集合，这一点与pylons也很象，如模板系统主要是kid,通过模板适配可以使用其它的模板(强调一下，django是松耦合的，许多组件也可以替换)，webserver组件使用cherrypy，ORM使用SQLObject(还可以使用QLAlchemy)等等。关于这两种集成的方式，不同的人有不同的看法。有人认为turbogears是好的，因为没有重新造轮子。但有些人象我认为集中式更易管理和控制。所以关键看你认同哪一种设计理念。&lt;br /&gt;&lt;div style=&#34;direction: ltr;&#34;&gt;&lt;br /&gt;对于ajax也有许多不同的声音。ajax本身可以与后台无关&lt;wbr&gt;，它主要是在前端通过javascript,DOM来操纵前端数据，与后台交互。从这一点上，任何web framework都可以算是支持ajax。如果说不支持&lt;/wbr&gt;&lt;wbr&gt;，那是从后台能否自动生成相应的html,javascript代码这一层来说的。turbogears嵌&lt;/wbr&gt;&lt;wbr&gt;入了mochekit的js库的支持，可以通过python程序&lt;/wbr&gt;&lt;wbr&gt;生成相应的js代码。django则是有人做过这样的工作&lt;/wbr&gt;&lt;wbr&gt;，但要么不是成熟的东西，要么还没有成型。为什么会这样也与dj&lt;/wbr&gt;&lt;wbr&gt;ango的设计理念有关系。象turbogears&lt;/wbr&gt;&lt;wbr&gt;，它的支持是针对不同的js库生成不同的包装，这样如果js库非&lt;/wbr&gt;&lt;wbr&gt;常多，自然会有许多的包装，目前已经是这样的。而django在&lt;/wbr&gt;&lt;wbr&gt;讨论是则不希望是这样，希望有一个中间层或无关层&lt;/wbr&gt;&lt;wbr&gt;，但的确这一点很难。因此后来可能限定在了dojo&lt;/wbr&gt;&lt;wbr&gt;，不过还没有相关的代码可以看到。只不过admin功能使用了d&lt;/wbr&gt;&lt;wbr&gt;ojo的一些东西。&lt;br /&gt;&lt;br /&gt;还有pylons也很有特色。但对于我上人来说，我认为它太复杂&lt;/wbr&gt;&lt;wbr&gt;了，不容易理解，所以也没有人研究过。目前国内对于django&lt;/wbr&gt;&lt;wbr&gt;,turbogears, pylons都有人研究，从人数上看是比例依次递减&lt;/wbr&gt;&lt;wbr&gt;。对于zope/plone则有专门的czug.org&lt;/wbr&gt;&lt;wbr&gt;，有许多人在学习和研究。&lt;br /&gt;&lt;br /&gt;总之，不同的框架从基本功能上是大同小异，在功能是各有特色的&lt;/wbr&gt;&lt;wbr&gt;，设计理念上也是各有差异。选择一个框架不仅看它的功能是否满足&lt;/wbr&gt;&lt;wbr&gt;，可能还有许多的因素，如人气，成熟度，是否有现实的应用，性能&lt;/wbr&gt;&lt;wbr&gt;，设计理念等等。应用从方面进行考查，而且用着顺心可能更重要&lt;/wbr&gt;&lt;wbr&gt;。象karrigell作为初学入门，或更轻量级的选择也是不错&lt;/wbr&gt;&lt;wbr&gt;。&lt;/wbr&gt;&lt;/div&gt;</description>
    </item>
    <item>
      <title>Vmware 5.5的vmware-config.pl时找不到内核头文件的问题</title>
      <link>https://blog.xupeng.me/2006/04/10/vmware-55-cannot-found-kernel-headers/</link>
      <pubDate>Mon, 10 Apr 2006 08:00:00 +0800</pubDate>
      <guid>https://blog.xupeng.me/2006/04/10/vmware-55-cannot-found-kernel-headers/</guid>
      <description>&lt;span style=&#34;font-family: 宋体;&#34;&gt;我的dapper 6.06，是用官方的内核时vmware配置不存在任何问题，但是我自己编译的2.6.16内核，其他是用均正常，只有vmware在配置时出了问题，说是找不到内核头文件，错误信息如下：&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;table style=&#34;border: 1px solid rgb(153, 153, 153); width: 500px; font-size: 12px; height: 153px;&#34; align=&#34;center&#34;&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;What is the location of the directory of C header files that match your running&lt;br /&gt;&#xA;kernel? [/usr/src/linux/include]/usr/src/linux/include/&lt;br /&gt;&#xA;&lt;br /&gt;&#xA;The kernel defined by this directory of header files does not have the same&lt;br /&gt;&#xA;address space size as your running kernel.&lt;br /&gt;&#xA;&lt;br /&gt;&#xA;What is the location of the directory of C header files that match your running&lt;br /&gt;&#xA;kernel? [/usr/src/linux/include]&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;&lt;br /&gt;google了一下，发现是vmware自身的问题，在&lt;a href=&#34;http://mirror.vmmatrix.net/vmware-any-any-update/?C=M;O=A&#34; target=&#34;_blank&#34;&gt;这里&lt;/a&gt;下一个vmware的补丁就好了。&lt;br /&gt;&lt;br /&gt;这个问题是解决了，但我很不明白是用ubuntu官方的内核就没有问题呢？&lt;br /&gt;</description>
    </item>
    <item>
      <title>终于解决了挂载windows共享中文乱码的问题</title>
      <link>https://blog.xupeng.me/2006/04/10/mount-window-share-folders-under-linux/</link>
      <pubDate>Mon, 10 Apr 2006 08:00:00 +0800</pubDate>
      <guid>https://blog.xupeng.me/2006/04/10/mount-window-share-folders-under-linux/</guid>
      <description>我使用dapper 6.06，在nautilus中直接访问是没有问题的，所有的中文显示都很正常，&lt;br /&gt;&#xA;但是有一个问题是，mplayer似乎并不支持smb协议，这样就没有办法直接看局域网中共&lt;br /&gt;&#xA;享的电影了，必须mount了以后才可以。&lt;br /&gt;&#xA;&lt;br /&gt;&#xA;下面是我的解决过程：&lt;br /&gt;&#xA;&lt;br /&gt;&#xA;我的locale：&lt;br /&gt;&#xA;&lt;div style=&#34;margin: 5px 20px 20px;&#34;&gt;&#xA;&#x9;&lt;div class=&#34;smallfont&#34; style=&#34;margin-bottom: 2px;&#34;&gt;代码:&lt;/div&gt;&#xA;&#x9;&lt;pre class=&#34;alt2&#34; style=&#34;border: 1px inset ; margin: 0px; padding: 4px; overflow: auto; width: 640px; height: 274px;&#34;&gt;&lt;div dir=&#34;ltr&#34; style=&#34;text-align: left;&#34;&gt;aiyi@osr:~$ locale&lt;br /&gt;LANG=zh_CN.UTF-8&lt;br /&gt;LANGUAGE=zh_CN.UTF-8&lt;br /&gt;LC_CTYPE=zh_CN.UTF-8&lt;br /&gt;LC_NUMERIC=&#34;zh_CN.UTF-8&#34;&lt;br /&gt;LC_TIME=&#34;zh_CN.UTF-8&#34;&lt;br /&gt;LC_COLLATE=&#34;zh_CN.UTF-8&#34;&lt;br /&gt;LC_MONETARY=&#34;zh_CN.UTF-8&#34;&lt;br /&gt;LC_MESSAGES=&#34;zh_CN.UTF-8&#34;&lt;br /&gt;LC_PAPER=&#34;zh_CN.UTF-8&#34;&lt;br /&gt;LC_NAME=&#34;zh_CN.UTF-8&#34;&lt;br /&gt;LC_ADDRESS=&#34;zh_CN.UTF-8&#34;&lt;br /&gt;LC_TELEPHONE=&#34;zh_CN.UTF-8&#34;&lt;br /&gt;LC_MEASUREMENT=&#34;zh_CN.UTF-8&#34;&lt;br /&gt;LC_IDENTIFICATION=&#34;zh_CN.UTF-8&#34;&lt;br /&gt;LC_ALL=&lt;/div&gt;&lt;/pre&gt;&#xA;&lt;/div&gt;&#xA;&lt;br /&gt;&#xA;&lt;div style=&#34;margin: 5px 20px 20px;&#34;&gt;&#xA;&#x9;&lt;div class=&#34;smallfont&#34; style=&#34;margin-bottom: 2px;&#34;&gt;代码:&lt;/div&gt;&#xA;&#x9;&lt;pre class=&#34;alt2&#34; style=&#34;border: 1px inset ; margin: 0px; padding: 4px; overflow: auto; width: 640px; height: 34px;&#34;&gt;&lt;div dir=&#34;ltr&#34; style=&#34;text-align: left;&#34;&gt;sudo mount -t smbfs -o username=guest //192.168.0.38/movie /mnt/smb&lt;/div&gt;&lt;/pre&gt;&#xA;&lt;/div&gt;&#xA;这样挂载后中文文件或者目录名会是乱码。&lt;br /&gt;&#xA;&lt;br /&gt;&#xA;&lt;div style=&#34;margin: 5px 20px 20px;&#34;&gt;&#xA;&#x9;&lt;div class=&#34;smallfont&#34; style=&#34;margin-bottom: 2px;&#34;&gt;代码:&lt;/div&gt;&#xA;&#x9;&lt;pre class=&#34;alt2&#34; style=&#34;border: 1px inset ; margin: 0px; padding: 4px; overflow: auto; width: 640px; height: 34px;&#34;&gt;&lt;div dir=&#34;ltr&#34; style=&#34;text-align: left;&#34;&gt;sudo mount -t smbfs -o username=guest,codepage=utf8 //192.168.0.38/movie mnt/smb/&lt;/div&gt;&lt;/pre&gt;&#xA;&lt;/div&gt;&#xA;这样仍然是乱码，但显示的乱码看起来已经不一样了。&lt;br /&gt;&#xA;&lt;br /&gt;&#xA;&lt;div style=&#34;margin: 5px 20px 20px;&#34;&gt;&#xA;&#x9;&lt;div class=&#34;smallfont&#34; style=&#34;margin-bottom: 2px;&#34;&gt;代码:&lt;/div&gt;&#xA;&#x9;&lt;pre class=&#34;alt2&#34; style=&#34;border: 1px inset ; margin: 0px; padding: 4px; overflow: auto; width: 640px; height: 34px;&#34;&gt;&lt;div dir=&#34;ltr&#34; style=&#34;text-align: left;&#34;&gt;sudo mount -t smbfs -o username=guest,codepage=cp936,iocharset=utf8 //192.168.0.38/movie /mnt/smb/&lt;/div&gt;&lt;/pre&gt;&#xA;&lt;/div&gt;&#xA;哈哈，这回显示完全正常了。&lt;br /&gt;&#xA;mount windows共享老乱码的朋友不妨也试一试。</description>
    </item>
    <item>
      <title>FreeBSD 4.11安装Vmware2.0.4-1142遇到的问题。</title>
      <link>https://blog.xupeng.me/2005/03/15/installi-vmware-2041143-under-freebsd-411-error/</link>
      <pubDate>Tue, 15 Mar 2005 08:00:00 +0800</pubDate>
      <guid>https://blog.xupeng.me/2005/03/15/installi-vmware-2041143-under-freebsd-411-error/</guid>
      <description>安装完毕后%vmware&#xA;出现下面的提示：&#xA;&#xA;```&#xA;************************************************************&#xA;It seems Linux procfs is not mounted on /compat/linux/proc.&#xA;VMware does not work without Linux procfs mounted.&#xA;&#xA;For details, see linprocfs(5) manpage.&#xA;************************************************************&#xA;```&#xA;&#xA;现在还没有找到解决办法。</description>
    </item>
    <item>
      <title>HOW TO INSTALL SAMBA ON FREEBSD</title>
      <link>https://blog.xupeng.me/2005/03/14/how-to-install-samba-on-freebsd/</link>
      <pubDate>Mon, 14 Mar 2005 08:00:00 +0800</pubDate>
      <guid>https://blog.xupeng.me/2005/03/14/how-to-install-samba-on-freebsd/</guid>
      <description>&lt;center&gt;&lt;h2 align=&#34;center&#34;&gt;&lt;b&gt;HOW TO INSTALL SAMBA ON FREEBSD&lt;/b&gt;&lt;/h2&gt;&lt;br /&gt;&lt;/center&gt;&lt;ol&gt;&lt;b&gt;ASSUMPTIONS:&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;li&gt;You are familiar with computers, and probably know either Windows or Linux fairly well.&lt;br /&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;You have already installed FreeBSD.&amp;nbsp; If not, then click here: &lt;a href=&#34;http://www.us-webmasters.com/FreeBSD/Install/&#34;&gt;How to Install FreeBSD&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;You have configured the FreeBSD shell.&amp;nbsp; If not, then click here: &lt;a href=&#34;http://www.us-webmasters.com/FreeBSD/Configuration/Shell/&#34;&gt;How to Configure the FreeBSD Shell&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Your &#39;ports tree&#39; is up to date.&amp;nbsp; If you don&#39;t know, then it probably isn&#39;t current.&amp;nbsp; Update the ports tree by issuing one of these commands: &lt;a href=&#34;http://www.us-webmasters.com/FreeBSD/Install/#CVSup_Commands&#34;&gt;Update the Ports Tree Using CVSup&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Here is how to configure your computer so that &lt;a href=&#34;http://www.us-webmasters.com/FreeBSD/Configuration/Shell/#CVSup_Crontab&#34;&gt;CVSup is run on a regular basis&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;NOTE WELL:&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;In the Samba configuration file, (as is true with many Unix type files), a hash/pound sign &#39;#&#39;, and a semi-colon &#39;;&#39; at the beginning of a line means that the computer should ignore the rest of the line.&amp;nbsp; Typically, these &#39;ignore&#39; characters are for your benefit--they usually contain comments about what is taking place. Hence, when a line begins with # or ; it is &#39;commented out&#39;. Sometimes double slashes &#39;//&#39; have the same &#39;ignore&#39; effect--it just depends on what type of program is reading the file.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;BEGIN INSTALLATION&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;You can find samba in the this directory:&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;code class=&#34;CODE&#34;&gt;&lt;font face=&#34;新宋体&#34;&gt;/usr/ports/net/samba3&lt;br /&gt;&lt;/font&gt;&lt;/code&gt;&lt;/blockquote&gt;At the present time (2004 September) &#39;/samba3&#39; will contain the 3.x series.&amp;nbsp; &#39;/samba&#39; will contain 2.x series, which is obsolete.&lt;br /&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Enter:&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;code class=&#34;CODE&#34;&gt;&lt;font face=&#34;新宋体&#34;&gt;make install&lt;br /&gt;&lt;/font&gt;&lt;/code&gt;&lt;/blockquote&gt;&lt;/li&gt;&lt;li&gt;Will look for file and download it from an FTP server if the file doesn&#39;t happen to be already in &lt;code class=&#34;CODE&#34;&gt;&lt;font face=&#34;新宋体&#34;&gt;/usr/ports/distfiles/&lt;/font&gt;&lt;/code&gt;.&amp;nbsp; The current version of the file (2004 September) is 3.0.7,1 and the file name is &lt;code class=&#34;CODE&#34;&gt;&lt;font face=&#34;新宋体&#34;&gt;samba-3.0.7.tar.gz&lt;/font&gt;&lt;/code&gt;.&lt;br /&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Once the file is downloaded and checked for integrity, the screen shows a number of options:&lt;br /&gt;&lt;br /&gt;&lt;center&gt;&lt;blockquote&gt;&lt;code class=&#34;CODE&#34;&gt;&lt;font face=&#34;新宋体&#34;&gt;Options for samba 3.0.7,1 &lt;/font&gt;&lt;/code&gt;&lt;/blockquote&gt;&lt;/center&gt;&lt;blockquote&gt;&lt;code class=&#34;CODE&#34;&gt;&lt;font face=&#34;新宋体&#34;&gt;[X] LDAP &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; With LDAP support&lt;br /&gt;[X] ADS &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; With Active Directory support&lt;br /&gt;[X] CUPS &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; With CUPS printing support&lt;br /&gt;[X] WINBIND &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; With WinBIND support&lt;br /&gt;[ ] ACL_SUPPORT &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; With ACL support&lt;br /&gt;[ ] SYSLOG &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; With Syslog support&lt;br /&gt;[ ] QUOTAS &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; With Quota support&lt;br /&gt;[X] UTMP &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; With UTMP support&lt;br /&gt;[ ] MSDFS &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; With MSDFS support&lt;br /&gt;[ ] SAM_XML &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; With XML smbpasswd backend&lt;br /&gt;[ ] SAM_MYSQL &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp; With MYSQL smbpasswd backend&lt;br /&gt;[ ] SAM_PGSQL &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp; With PostgreSQL smbpasswd backend&lt;br /&gt;[ ] SAM_OLD_LDAP &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; With Samba2.x LDAP smbpasswd backend&lt;br /&gt;[ ] PAM_SMBPASS &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; With SMB PAM module&lt;br /&gt;[X] POPT &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; With installed POPT library&lt;br /&gt;&lt;/font&gt;&lt;/code&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Leave options as they are&lt;br /&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Tab to OK, press enter.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;AUTOMATED EXTRACTION AND INSTALLATION&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Will say:&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;code class=&#34;CODE&#34;&gt;&lt;font face=&#34;新宋体&#34;&gt;Extracting samba-3.0.7,1 &lt;/font&gt;&lt;/code&gt;&lt;/blockquote&gt;or similar.&lt;br /&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Screen shows:&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;code class=&#34;CODE&#34;&gt;&lt;font face=&#34;新宋体&#34;&gt;Options for gettext:&lt;br /&gt;&lt;br /&gt;[X] Examples&lt;br /&gt;[X] HTML&lt;br /&gt;&lt;/font&gt;&lt;/code&gt;&lt;/blockquote&gt;Check both options&lt;br /&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Press Enter.&lt;br /&gt;&lt;br /&gt;Will then go on showing lots of lines of messages as it builds.&amp;nbsp; It will download any program/file that it depends on, including autoconf.&lt;br /&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;It is possible that the &#39;make install&#39; process will not complete successfully.&amp;nbsp; If this happens, go to: &lt;a href=&#34;http://www.us-webmasters.com/FreeBSD/Tips-Hints-Tricks/make-install-fails-dies-quits/&#34;&gt;&#39;make install&#39; fails on FreeBSD&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;After Samba has been installed, you should see something like this:&lt;br /&gt;&lt;br /&gt;&lt;font face=&#34;新宋体&#34;&gt;&lt;code class=&#34;CODE&#34;&gt;~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~&lt;br /&gt;/usr/local/bin/testprns&lt;br /&gt;/usr/local/bin/smbcquotas&lt;br /&gt;/usr/local/bin/smbcacls&lt;br /&gt;/usr/local/bin/wbinfo&lt;br /&gt;/usr/local/bin/smbtree&lt;br /&gt;/usr/local/bin/smbspool&lt;br /&gt;/usr/local/bin/smbpasswd&lt;br /&gt;/usr/local/bin/testparm&lt;br /&gt;/usr/local/bin/smbcontrol&lt;br /&gt;/usr/local/bin/ntlm_auth&lt;br /&gt;/usr/local/bin/net&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;/font&gt;&lt;blockquote&gt;&lt;code class=&#34;CODE&#34;&gt;&lt;font face=&#34;新宋体&#34;&gt;This port has installed the following startup scripts which may cause&lt;br /&gt;these network services to be started at boot time.&lt;br /&gt;&lt;/font&gt;&lt;/code&gt;&lt;/blockquote&gt;&lt;font face=&#34;新宋体&#34;&gt;&lt;code class=&#34;CODE&#34;&gt;/usr/local/etc/rc.d/samba.sh&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;/font&gt;&lt;blockquote&gt;&lt;code class=&#34;CODE&#34;&gt;&lt;font face=&#34;新宋体&#34;&gt;If there are vulnerabilities in these programs there may be a security&lt;br /&gt;risk to the system. FreeBSD makes no guarantee about the security of&lt;br /&gt;ports included in the Ports Collection. Please type &#39;make deinstall&#39;&lt;br /&gt;to deinstall the port if this is a concern.&lt;br /&gt;&lt;/font&gt;&lt;/code&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;code class=&#34;CODE&#34;&gt;&lt;font face=&#34;新宋体&#34;&gt;For more information, and contact details about the security&lt;br /&gt;status of this software, see the following webpage:&lt;br /&gt;&lt;/font&gt;&lt;/code&gt;&lt;/blockquote&gt;&lt;font face=&#34;新宋体&#34;&gt;&lt;code class=&#34;CODE&#34;&gt;http://www.samba.org/&lt;br /&gt;~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;&lt;/font&gt;&lt;b&gt;COPY SAMBA CONFIGURATION FILE&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;When Samba was installed, it created a a default configuration file in:&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;code class=&#34;CODE&#34;&gt;&lt;font face=&#34;新宋体&#34;&gt;/usr/local/etc/&lt;/font&gt;&lt;/code&gt;&lt;/blockquote&gt;Oddly enough it is called:&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;code class=&#34;CODE&#34;&gt;&lt;font face=&#34;新宋体&#34;&gt;smb.conf.default&lt;/font&gt;&lt;/code&gt;&lt;/blockquote&gt;Also, there is a copy here as well:&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;code class=&#34;CODE&#34;&gt;&lt;font face=&#34;新宋体&#34;&gt;/usr/ports/net/samba3/work/samba-3.0.7/examples/smb.conf.default &lt;/font&gt;&lt;/code&gt;&lt;/blockquote&gt;Since the system needs the file to be named &#39;smb.conf&#39;, let&#39;s make a copy:&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;code class=&#34;CODE&#34;&gt;&lt;font face=&#34;新宋体&#34;&gt;cd /usr/local/etc/ &lt;br /&gt;cp -p&#xA;smb.conf.default smb.conf &lt;/font&gt;&lt;/code&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;EDIT SAMBA CONFIGURATION FILE&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;In order for Samba to work we need to edit this file a bit. So, let&#39;s fire up Pico:&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;code class=&#34;CODE&#34;&gt;&lt;font face=&#34;新宋体&#34;&gt;pico smb.conf &lt;/font&gt;&lt;/code&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Item: &#39;workgroup&#39;&lt;br /&gt;&lt;br /&gt;Change from &amp;quot;MYGROUP&amp;quot; to whatever the name your workgroup is.&lt;br /&gt;&lt;br /&gt;example:&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;code class=&#34;CODE&#34;&gt;&lt;font face=&#34;新宋体&#34;&gt;workgroup = XYZworkgroup &lt;/font&gt;&lt;/code&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Item: &#39;server string&#39;&lt;br /&gt;&lt;br /&gt;Change the server string to whatever is appropriate. Here are some possibilities:&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;code class=&#34;CODE&#34;&gt;&lt;font face=&#34;新宋体&#34;&gt;%h Samba Server&lt;br /&gt;%h-the-FreeBSD-Samba-Server&lt;br /&gt;%h Samba&lt;br /&gt;%h_Samba_File_Server_1&lt;br /&gt;&lt;/font&gt;&lt;/code&gt;&lt;/blockquote&gt;&#39;%h&#39; is a variable for the name of the Host computer that Samba is running on.&lt;br /&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Item: &#39;log file&#39;&lt;br /&gt;&lt;br /&gt;The default line is:&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;code class=&#34;CODE&#34;&gt;&lt;font face=&#34;新宋体&#34;&gt;log file = /var/log/samba/log.%m &lt;/font&gt;&lt;/code&gt;&lt;/blockquote&gt;The %m is a variable for the client logging in. You can use the default naming convention, or perhaps something like this:&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;code class=&#34;CODE&#34;&gt;&lt;font face=&#34;新宋体&#34;&gt;log file = /var/log/Samba-%m.log &lt;/font&gt;&lt;/code&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;CONFIGURE FOR INDIVIDUAL USER&#39;S LOGIN PATH&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Go down until you see:&lt;br /&gt;&lt;br /&gt;&lt;font face=&#34;新宋体&#34;&gt;&lt;code class=&#34;CODE&#34;&gt;========================== Share Definitions ========================== &lt;/code&gt;&lt;br /&gt;&lt;br /&gt;&lt;/font&gt;&lt;/li&gt;&lt;li&gt;Let&#39;s set up the users so that they cannot obliterate their configuration files.&amp;nbsp; The first section is:&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;code class=&#34;CODE&#34;&gt;&lt;font face=&#34;新宋体&#34;&gt;[homes]&lt;br /&gt;&amp;nbsp;&amp;nbsp; comment = Homes Directories&lt;br /&gt;&amp;nbsp;&amp;nbsp; browseable = no&lt;br /&gt;&amp;nbsp;&amp;nbsp; writable = yes&lt;br /&gt;&lt;/font&gt;&lt;/code&gt;&lt;/blockquote&gt;Let&#39;s change this to:&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;code class=&#34;CODE&#34;&gt;&lt;font face=&#34;新宋体&#34;&gt;[homes]&lt;br /&gt;&amp;nbsp;&amp;nbsp; comment = Home directory for %u on %h&lt;br /&gt;&amp;nbsp;&amp;nbsp; browseable = no&lt;br /&gt;&amp;nbsp;&amp;nbsp; writable = yes&lt;br /&gt;&amp;nbsp;&amp;nbsp; path = /usr/home/%u/Docs&lt;br /&gt;&amp;nbsp;&amp;nbsp; valid users = %S&lt;br /&gt;&lt;/font&gt;&lt;/code&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Let&#39;s do the public section.&amp;nbsp; Just below the commented out section called [public] (just before the &#39;# Other examples&#39; section), let&#39;s add a public directory that can be read from and written to by all users:&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;code class=&#34;CODE&#34;&gt;&lt;font face=&#34;新宋体&#34;&gt;# A publicly accessible directory, that can be read from&lt;br /&gt;# or written to by all valid users.&lt;br /&gt;[public]&lt;br /&gt;&amp;nbsp;&amp;nbsp; comment = %h Shared Public Directory&lt;br /&gt;&amp;nbsp;&amp;nbsp; path = /usr/home/samba/public&lt;br /&gt;&amp;nbsp;&amp;nbsp; force directory mode = 0777&lt;br /&gt;&amp;nbsp;&amp;nbsp; force create mode = 0777&lt;br /&gt;&amp;nbsp;&amp;nbsp; force group = nobody&lt;br /&gt;&amp;nbsp;&amp;nbsp; force user = nobody&lt;br /&gt;&amp;nbsp;&amp;nbsp; public = yes&lt;br /&gt;&amp;nbsp;&amp;nbsp; writeable = yes&lt;br /&gt;&amp;nbsp;&amp;nbsp; read only = no&lt;br /&gt;&lt;/font&gt;&lt;/code&gt;&lt;/blockquote&gt;&lt;/li&gt;&lt;li&gt;Save this file, and exit Pico:&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;code class=&#34;CODE&#34;&gt;&lt;font face=&#34;新宋体&#34;&gt;Ctrl-O&lt;br /&gt;&lt;br /&gt;Press enter&lt;br /&gt;&lt;br /&gt;Ctrl-X &lt;/font&gt;&lt;/code&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Now let&#39;s test the file for typos and other errors:&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;code class=&#34;CODE&#34;&gt;&lt;font face=&#34;新宋体&#34;&gt;/usr/local/bin/testparm | more &lt;/font&gt;&lt;/code&gt;&lt;/blockquote&gt;If you don&#39;t see any error messages, then it&#39;s good to go.&lt;br /&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Next, let&#39;s create those directories that we referenced just a bit ago:&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;code class=&#34;CODE&#34;&gt;&lt;font face=&#34;新宋体&#34;&gt;cd /usr&lt;br /&gt;&lt;br /&gt;mkdir home&lt;br /&gt;&lt;br /&gt;cd home&lt;br /&gt;&lt;br /&gt;mkdir samba&lt;br /&gt;&lt;br /&gt;cd samba&lt;br /&gt;&lt;br /&gt;mkdir public&lt;br /&gt;&lt;br /&gt;cd public &lt;/font&gt;&lt;/code&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Let&#39;s reboot the computer:&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;code class=&#34;CODE&#34;&gt;&lt;font face=&#34;新宋体&#34;&gt;shutdown -r +1 &lt;/font&gt;&lt;/code&gt;&lt;/blockquote&gt;&lt;/li&gt;&lt;li&gt;Wait until the computer reboots, then log in again.&lt;br /&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;In order for the users to be able to use Samba on this computer, they have to be added to 2 user databases. The first is the OS database, and the second is the Samba user database.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;CREATE ACCOUNTS ON FREEBSD FOR WINDOWS USERS&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;For each of your users, add them to the OS database.&amp;nbsp; After you have entered your first user, the system will ask you if you have more users to enter.&amp;nbsp; Enter them all.&amp;nbsp; Start this process by entering:&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;code class=&#34;CODE&#34;&gt;&lt;font face=&#34;新宋体&#34;&gt;adduser -v &lt;/font&gt;&lt;/code&gt;&lt;/blockquote&gt;&lt;br /&gt;If it&#39;s the first time you have used the &#39;adduser&#39; command, you should see the following:&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;code class=&#34;CODE&#34;&gt;&lt;font face=&#34;新宋体&#34;&gt;/etc/adduser.conf: No such file or directory &lt;br /&gt;Use option &#39;&#39;-silent&#39;&#39; if you don&#39;t want to see all warnings and questions.&lt;br /&gt;&lt;br /&gt;Check /etc/shells&lt;br /&gt;Check /etc/master.passwd&lt;br /&gt;Check /etc/group&lt;br /&gt;Usernames must match regular expression:&lt;br /&gt;[^[a-z0-9_][a-z0-9_-]*$]&lt;br /&gt;&lt;/font&gt;&lt;/code&gt;&lt;/blockquote&gt;&lt;br /&gt;Press the enter key if you agree or enter the following if your Windows users have capitalized usernames:&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;code class=&#34;CODE&#34;&gt;&lt;font face=&#34;新宋体&#34;&gt;^[A-Za-z0-9_][a-z0-9_-]*$ &lt;/font&gt;&lt;/code&gt;&lt;/blockquote&gt;&lt;/li&gt;&lt;li&gt;Shows:&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;code class=&#34;CODE&#34;&gt;&lt;font face=&#34;新宋体&#34;&gt;Enter your default shell: csh date no sh tcsh zsh [sh]: &lt;/font&gt;&lt;/code&gt;&lt;/blockquote&gt;Enter:&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;code class=&#34;CODE&#34;&gt;&lt;font face=&#34;新宋体&#34;&gt;csh&lt;/font&gt;&lt;/code&gt;&lt;/blockquote&gt;&lt;/li&gt;&lt;li&gt;Shows:&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;code class=&#34;CODE&#34;&gt;&lt;font face=&#34;新宋体&#34;&gt;Your default shell is: csh -&amp;gt; /bin/csh&lt;br /&gt;Enter your default HOME partition: [/home]: &lt;/font&gt;&lt;/code&gt;&lt;/blockquote&gt;&lt;br /&gt;Press enter.&lt;br /&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Shows:&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;code class=&#34;CODE&#34;&gt;&lt;font face=&#34;新宋体&#34;&gt;Oops, /usr/home already exists.&lt;br /&gt;Create symlink: /home -&amp;gt; /user/home&lt;br /&gt;Copy dotfiles from: /usr/share/skel no [/usr/share/skel]:&lt;br /&gt;&lt;/font&gt;&lt;/code&gt;&lt;/blockquote&gt;Press enter.&lt;br /&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Shows:&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;code class=&#34;CODE&#34;&gt;&lt;font face=&#34;新宋体&#34;&gt;Send message from file: /etc/adduser.message no&lt;br /&gt;[/etc/adduser.message:] &lt;/font&gt;&lt;/code&gt;&lt;/blockquote&gt;Press enter.&lt;br /&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Shows:&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;code class=&#34;CODE&#34;&gt;&lt;font face=&#34;新宋体&#34;&gt;Create ``/etc/adduser.message&#39;&#39;? (y/n) [y]: &lt;/font&gt;&lt;/code&gt;&lt;/blockquote&gt;Press enter.&lt;br /&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Shows:&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;code class=&#34;CODE&#34;&gt;&lt;font face=&#34;新宋体&#34;&gt;Use passwords (y/n) [y]: &lt;/font&gt;&lt;/code&gt;&lt;/blockquote&gt;Press enter.&lt;br /&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Shows:&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;code class=&#34;CODE&#34;&gt;&lt;font face=&#34;新宋体&#34;&gt;Write your configuration to /etc/adduser.conf? (y/n) [y]: &lt;/font&gt;&lt;/code&gt;&lt;/blockquote&gt;Press enter.&lt;br /&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Shows:&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;code class=&#34;CODE&#34;&gt;&lt;font face=&#34;新宋体&#34;&gt;Ok, let&#39;s go.&lt;br /&gt;Don&#39;t worry about mistakes.&amp;nbsp; I will give you the chance later to correct any input.&lt;br /&gt;Enter username [[^[a-z0-9_][a-z0-9_-]*$&lt;/font&gt;&lt;/code&gt;&lt;/blockquote&gt;&lt;/li&gt;&lt;/ol&gt;</description>
    </item>
  </channel>
</rss>
