<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
    <title>DB2 学习笔记</title>
    <link rel="alternate" type="text/html" href="http://www.aiview.com/" />
    <link rel="self" type="application/atom+xml" href="http://www.aiview.com/index.xml" />
    <id>tag:www.aiview.com,2009-07-20://1</id>
    <updated>2009-07-30T20:26:25Z</updated>
    <subtitle>博客话题：DB2，Linux，Web，业余无线电，户外，摄影，截拳道，Thankpad，其他</subtitle>
    <generator uri="http://www.sixapart.com/movabletype/">Movable Type 4.261</generator>

<entry>
    <title>升级MT4 带来的plugins问题：Blogroll, LinkRoller, Favicon and etc</title>
    <link rel="alternate" type="text/html" href="http://www.aiview.com/2009/07/mt4_plugins_problem_blogroll_linkroller_favicon_and_etc.html" />
    <id>tag:www.aiview.com,2009://1.992</id>

    <published>2009-07-13T01:42:26Z</published>
    <updated>2009-07-30T20:26:25Z</updated>

    <summary><![CDATA[LinkRoller替代Blogroll 升级到MT4，比较普遍的问题就是插件兼容性，被抱怨的比较多的是Blogroll，Blogroll的标签在MT4中无法识别，作者到目前为止还没有升级代码，有人发布了一个替代品LinkRoller ，但有部分Blogroll的功能没有实现：Link的分类和优先顺序，临时的解决方法是用tags与创建时间来对应。 LinkRoller作者提供了安装指南，文件copy 结束，重新访问MT4管理界面，会提示升级，升级过程会将Blogroll所属表的数据自动导入MT4的Asset系列表中（不copy Blogroll的lib文件到LinkRoller 也可以自动导入数据），原来Blogroll的Category（分类）属性，在LinkRoller中会关联到Tags属性。 plugin升级完成后，更新模板代码（参照了Justin的文章）：&lt;mt:Tags type="asset" sort_by="name"&gt;&lt;h2&gt;&lt;mt:TagName&gt;&lt;/h2&gt;&lt;MTSetVarBlock name="linktag"&gt;&lt;mt:TagName /&gt;&lt;/MTSetVarBlock&gt;&lt;ul class="links"&gt;&lt;mt:assets type="link" tag="$linktag" sort_by="$created_on" sort_order="ascent"&gt;&nbsp; &lt;li&gt;&lt;a href="&lt;mt:assetURL /&gt;" title="&lt;mt:assetDescription /&gt;"&gt;&lt;mt:assetLabel /&gt;&lt;/a&gt;&lt;li&gt;&lt;/mt:assets&gt;&lt;/ul&gt;&lt;/mt:Tags&gt; 这部分代码会显示不同Tags下面的Links(首页右侧有实例)，Links的顺序以创建时间为准，这符合我原来的需求，也可以更改为按名称排序等方式：sort_by="label"，如果需要再现在Blogroll 当中手工设置的无规律排序方式，那么有点麻烦，有人变通的活用了Author 属性。&nbsp; 如果遇到Plugin升级后，Link数据有中文乱码的问题，如果是Mysql数据库，那么可以检查一下mt_asset表的字符集设置，如果是Latin1，改成utf8试试，直接Alter表和相关列的定义即可，数据不用动。值得一提的是Mysql有非常灵活的字符集设定，可以在安装实例、数据库、表、列，不同的级别上独立设定，因此Alter命令必须在表本身，以及所有需要的列上面分别运行。 Favicon Favicon是个获取网站访问者的网站的favicon.ico的插件，只能用在Comments与Trackbacks的上下文中，目前的版本还是1.4，默认地，其在MT4中可以很好的运行。如果不幸遇到以下错误信息："Undefined subroutine &amp;URI::Escape::escapechar called"，那么可能是MT4的某个插件包含了一个较MT4 自身lib更旧的Escape.pm，在我的例子里是Blogroll，找到后将其删除或者重命名即可。$ find cgi-bin/mt -name "Escape.pm" $ mv cgi-bin/mt/plugins/Blogroll/lib/Escape.pm...]]></summary>
    <author>
        <name>Alex</name>
        
    </author>
    
        <category term="Movable Type" scheme="http://www.sixapart.com/ns/types#category" />
    
    <category term="blogroll" label="Blogroll" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="favicon" label="favicon" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="linkroller" label="linkroller" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="mt" label="MT" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="plugin" label="plugin" scheme="http://www.sixapart.com/ns/types#tag" />
    
    <content type="html" xml:lang="en" xml:base="http://www.aiview.com/">
        <![CDATA[<h4>LinkRoller替代Blogroll</h4>
<p>升级到MT4，比较普遍的问题就是插件兼容性，被抱怨的比较多的是Blogroll，Blogroll的标签在MT4中无法识别，作者到目前为止还没有升级代码，有人发布了一个替代品<a href="http://plugins.movalog.com/link-roller/">LinkRoller</a> ，但有部分Blogroll的功能没有实现：Link的分类和优先顺序，临时的解决方法是用tags与创建时间来对应。</p>
<p>LinkRoller作者提供了<a href="http://plugins.movalog.com/link-roller/install/">安装指南</a>，文件copy 结束，重新访问MT4管理界面，会提示升级，升级过程会将Blogroll所属表的数据自动导入MT4的Asset系列表中（不copy Blogroll的lib文件到LinkRoller 也可以自动导入数据），原来Blogroll的Category（分类）属性，在LinkRoller中会关联到Tags属性。</p>
<p>plugin升级完成后，更新模板代码（参照了<a href="http://www.secnix.com/blog/justin/2008/08/sensible-link-management-in-movable-type.html">Justin的文章</a>）：</p><pre class="code">&lt;mt:Tags type="asset" sort_by="name"&gt;<br />&lt;h2&gt;&lt;mt:TagName&gt;&lt;/h2&gt;<br /><br />&lt;MTSetVarBlock name="linktag"&gt;&lt;mt:TagName /&gt;&lt;/MTSetVarBlock&gt;<br />&lt;ul class="links"&gt;<br />&lt;mt:assets type="link" tag="$linktag" sort_by="$created_on" sort_order="ascent"&gt;<br /><br />&nbsp; &lt;li&gt;&lt;a href="&lt;mt:assetURL /&gt;" title="&lt;mt:assetDescription /&gt;"&gt;&lt;mt:assetLabel /&gt;&lt;/a&gt;&lt;li&gt;<br />&lt;/mt:assets&gt;<br />&lt;/ul&gt;<br /><br />&lt;/mt:Tags&gt;</pre>
<p>这部分代码会显示不同Tags下面的Links(首页右侧有实例)，Links的顺序以创建时间为准，这符合我原来的需求，也可以更改为按名称排序等方式：sort_by="label"，如果需要再现在Blogroll 当中手工设置的无规律排序方式，那么有点麻烦，有人变通的活用了Author 属性。&nbsp;</p>
<p>如果遇到Plugin升级后，Link数据有中文乱码的问题，如果是Mysql数据库，那么可以检查一下mt_asset表的字符集设置，如果是Latin1，改成utf8试试，直接Alter表和相关列的定义即可，数据不用动。值得一提的是Mysql有非常灵活的字符集设定，可以在安装实例、数据库、表、列，不同的级别上独立设定，因此Alter命令必须在表本身，以及所有需要的列上面分别运行。</p>
<h4>Favicon</h4>
<p><a href="http://gemal.dk/mt/favicon.html">Favicon</a>是个获取网站访问者的网站的favicon.ico的插件，只能用在Comments与Trackbacks的上下文中，目前的版本还是1.4，默认地，其在MT4中可以很好的运行。如果不幸遇到以下错误信息："Undefined subroutine &amp;URI::Escape::escapechar called"，那么可能是<a href="http://forums.movabletype.org/2008/11/typepad-antispam-error-undefined-subroutine-uriescapeescape-char.html">MT4的某个插件包含了一个较MT4 自身lib更旧的Escape.pm</a>，在我的例子里是Blogroll，找到后将其删除或者重命名即可。</p><pre class="cmd">$ find cgi-bin/mt -name "Escape.pm"
$ mv cgi-bin/mt/plugins/Blogroll/lib/Escape.pm cgi-bin/mt/plugins/Blogroll/lib/Escape.pm.bak</pre>
<p>我曾经为Favicon加了几行代码，让其支持Blogroll的标签，即<a href="http://www.aiview.com/2007/05/make_your_blogroll_more_vivid.html#1">自动获取好友网站的favicon.ico</a>并显示在其链接上。同样地，对于LinkRoller，也需要几行额外的代码：</p><pre class="code">sub favicon {<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; my($ctx, $args) = @_;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; my $c;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; my $u;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if ($c = $ctx-&gt;stash("ping")) {<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; favicon_debug("Trackback in MTFavicon");<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $u = $c-&gt;source_url;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; } elsif ($c = $ctx-&gt;stash("comment")) {<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; favicon_debug("Comment in MTFavicon");<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $u = $c-&gt;url;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; favicon_debug("URL for comment ID &lt;" . $c-&gt;id . "&gt; is &lt;$u&gt;");<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; } elsif ($c = $ctx-&gt;stash("br_entry")) {<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; favicon_debug("Blogroll in MTFavicon");<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $u = $c-&gt;uri;<br /><span class="emphasis">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; } elsif ($c = $ctx-&gt;stash("asset")) {<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; favicon_debug("LinkRoller in MTFavicon");<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $u = $c-&gt;url;</span><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; } else {<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; favicon_debug("Error: MTFavicon called without a comment or trackback in context");<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return $ctx-&gt;error("Error: MTFavicon called without a comment or trackback in context");<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return favicon_return($u, $ctx, $args);<br />}&nbsp;</pre>
<p>将以上加重的部分加入文件cgi-bin/mt/plugin/Favicon/favicon.pl 对应的位置即可。</p>
<p>如何使用Favicon？下面是一个例子：</p><pre class="code">&lt;mt:Tags type="asset" sort_by="name"&gt;<br />&lt;h2&gt;&lt;mt:TagName&gt;&lt;/h2&gt;<br /><br />&lt;MTSetVarBlock name="linktag"&gt;&lt;mt:TagName /&gt;&lt;/MTSetVarBlock&gt;<br />&lt;ul class="links"&gt;<br />&lt;mt:assets type="link" tag="$linktag" sort_by="$created_on" sort_order="ascent"&gt;<br />  &lt;li&gt;<br /><span class="emphasis">&lt;MTFaviconIfAvailable&gt;<br />&nbsp; &lt;img src="&lt;$MTFavicon$&gt;" alt="Siteicon" title="Siteicon" height="16" width="16" /&gt;<br />&lt;/MTFaviconIfAvailable&gt;</span><br />&nbsp; &lt;a href="&lt;mt:assetURL /&gt;" title="&lt;mt:assetDescription /&gt;"&gt;&lt;mt:assetLabel /&gt;&lt;/a&gt;&lt;li&gt;<br />&lt;/mt:assets&gt;<br />&lt;/ul&gt;<br /><br />&lt;/mt:Tags&gt;</pre>
<h4>其它插件</h4>
<p>WidgetManager 遇到了一点小问题，升级过程仅仅将我自定义的Widgets 名称迁移到MT4，而下面包含的Module 信息丢失了，不得不手工又添加了一遍。</p>
<p><a href="http://code.appnel.com/mt-varz">mt-varz</a>&nbsp;在MT4中内建了，如果将它留在MT4的plugins目录中，登录MT4管理界面会出错。</p>
<p><a href="http://www.movabletype.org/documentation/upgrade/plugins-rendered-obsolete-by-m.html">MT4引入的所有plugins</a>.</p>
<p>除此以外，我用到的其它plugins在MT4中都很正常：</p>
<p><ul><li>Collect 1.2</li><li>Feeds.App Lite 1.01</li><li>TagSupplementals 0.22</li><li>mt-archive-dateheader</li></ul></p>
<p>&nbsp;</p>]]>
        
    </content>
</entry>

<entry>
    <title>MT3.34 升级至 MT4.26 数据库中文乱码的解决</title>
    <link rel="alternate" type="text/html" href="http://www.aiview.com/2009/07/upgrade_mt334_to_mt426.html" />
    <id>tag:www.aiview.com,2009://1.991</id>

    <published>2009-07-12T23:36:58Z</published>
    <updated>2009-07-13T06:40:58Z</updated>

    <summary><![CDATA[上次升级MT是两年前的事情了，过程很顺利，这次就没那么幸运，遇到了字符集的问题，此外还有一些插件的问题，而且都比较棘手。 字符集的问题与虚拟主机有一定关系，数据存储在Dreamhost主机的mysql数据库中，3.34版本的数据库使用Dreamhost上Mysql默认的字符集Latin1，升级完成，切换到MT4.26之后，登录MT后台管理，数据库中所有的中文是乱码（问号），尝试了一个从前(MT3.34)的解决方法： 在文件 cgi-bin/mt/lib/MT/ObjectDriver/DBI/mysql.pm 中增加一行： $driver-&gt;{dbh}-&gt;do("SET NAMES 'utf8'");，这句代码告诉数据库，客户端和数据库连接都使用utf-8编码，数据库返回的数据也使用utf-8编码，但于事无补，乱码依旧。临时学习了一下Mysql处理字符集的机制，找到了一个解决方法：先将升级后（MT4.26）的数据导出，然后新建一个utf-8编码的数据库，最后导入数据即可。 导出数据：$ mysqldump -h HOSTNAME -u USERNAME -p DBNAME &gt; DUMPFILE Dreamhost中似乎无法命令行创建数据库，只能在Web phpMyAdmin中创建，Dreamhost的Mysql服务器参数character_set_server的默认值是utf8（从前是Latin1），可以用以下命令查看：mysql&gt;&nbsp;use DBNAME; mysql&gt; show variables like 'character_set_%'; 如果不是utf8，可以用以下命令修改：mysql&gt; alter database&nbsp;DBNAME default character set utf8; 最后一步，导入数据：$ mysql -h HOSTNAME -u USERNAME -p...]]></summary>
    <author>
        <name>Alex</name>
        
    </author>
    
        <category term="Movable Type" scheme="http://www.sixapart.com/ns/types#category" />
    
    <category term="mt" label="MT" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="upgrade" label="upgrade" scheme="http://www.sixapart.com/ns/types#tag" />
    
    <content type="html" xml:lang="en" xml:base="http://www.aiview.com/">
        <![CDATA[<p><a href="http://www.aiview.com/2007/04/tips_for_upgrade_mt_333_to_mt334.html">上次升级MT</a>是两年前的事情了，过程很顺利，这次就没那么幸运，遇到了字符集的问题，此外还有一些插件的问题，而且都比较棘手。</p>
<p>字符集的问题与虚拟主机有一定关系，数据存储在Dreamhost主机的mysql数据库中，3.34版本的数据库使用Dreamhost上Mysql默认的字符集Latin1，升级完成，切换到MT4.26之后，登录MT后台管理，数据库中所有的中文是乱码（问号），尝试了一个从前(MT3.34)的解决方法： 在文件 cgi-bin/mt/lib/MT/ObjectDriver/DBI/mysql.pm 中增加一行： $driver-&gt;{dbh}-&gt;do("SET NAMES 'utf8'");，这句代码告诉数据库，客户端和数据库连接都使用utf-8编码，数据库返回的数据也使用utf-8编码，但于事无补，乱码依旧。临时学习了一下<a href="http://blog.donews.com/yllr/archive/2007/01/03/1107388.aspx">Mysql处理字符集的机制</a>，找到了一个解决方法：先将升级后（MT4.26）的数据导出，然后新建一个utf-8编码的数据库，最后导入数据即可。</p>
<p>导出数据：</p><pre class="cmd">$ mysqldump -h HOSTNAME -u USERNAME -p DBNAME &gt; DUMPFILE</pre>
<p>Dreamhost中似乎无法命令行创建数据库，只能在Web phpMyAdmin中创建，Dreamhost的Mysql服务器参数character_set_server的默认值是utf8（从前是Latin1），可以用以下命令查看：</p><pre class="cmd">mysql&gt;&nbsp;use DBNAME;
mysql&gt; show variables like 'character_set_%';</pre>
<p>如果不是utf8，可以用以下命令修改：</p><pre class="cmd">mysql&gt; alter database&nbsp;DBNAME default character set utf8;</pre>
<p>最后一步，导入数据：</p><pre class="cmd">$ mysql -h HOSTNAME -u USERNAME -p DBNAME &lt; DUMPFILE</pre>
<p>补充一下，查看了部分MT4的代码，在mt-config.cgi中设定：&nbsp;<a href="http://www.movabletype.org/documentation/appendices/config-directives/publishcharset.html">PublishCharset</a> utf-8 应该相当于在应用程序中：&nbsp;SET NAMES 'utf8'，而Dreamhost Mysql服务器目前与字符集有关参数的默认值如下：</p><pre class="output">+--------------------------+---------------------------------------------+
| Variable_name            | Value                                       |
+--------------------------+---------------------------------------------+
| character_set_client     | latin1                                      |
| character_set_connection | latin1                                      |
| character_set_database   | utf8                                        |
| character_set_filesystem | binary                                      |
| character_set_results    | latin1                                      |
| character_set_server     | latin1                                      |
| character_set_system     | utf8                                        |
+--------------------------+---------------------------------------------+
</pre>
<p>与客户端有关的几个参数默认值是Latin1（非utf8），而MT4的P<span class="Apple-style-span" style="FONT-FAMILY: Verdana; WHITE-SPACE: normal">ublishCharset默认值与MT后台管理User的Language 设定有关，对于值English，其对应了编码utf-8，此时，可以省略mt-config.cgi中的PublishCharset设定。</span></p>
<p>有关插件的部分再单独讨论。</p>
<h4>参考资料</h4>
<ul>
<li><a href="http://www.movabletype.org/documentation/upgrade/">Movable Type Upgrade Guide</a></li></ul>]]>
        
    </content>
</entry>

<entry>
    <title>升级Pentax *istDS 固件到V2.02</title>
    <link rel="alternate" type="text/html" href="http://www.aiview.com/2008/11/upgrade_firmware_of_pentax_istds_to_v202.html" />
    <id>tag:www.aiview.com,2008://1.989</id>

    <published>2008-11-09T22:48:27Z</published>
    <updated>2008-11-09T23:12:53Z</updated>

    <summary> 相机原固件版本是V1.00，最高支持1GB SD卡，更高容量的卡会被识别为1GB并可以正常使用。固件从V1.02 开始支持1GB以上，目前最新的版本是V2.02。 要查看当前固件版本，移除存储卡，按住Menu 键打开电源，查看液显即可。 先到官方网站下载*istDS 固件V2.02 ，升级之前先阅读一下指南。过程很简单，将下载的固件解出拷贝一个格式化好的SD卡内，插入相机，按住Menu 键打开电源，确认后即可进行固件升级，需要注意的就是保证电池有足够的电量，升级过程持续3分钟左右。 升级后将存储卡在相机中进行格式化，识别出完整的容量，另外原有的设置丢失，需要重新调整一遍。新的固件除了支持更高容量的存储卡（包括最新的SDHC），还带来了一些机身功能的升级。一切正常，手边没有闲置的8G卡，不知最高支持多大容量。 Pentax 其它型号相机的固件在这里查找。...</summary>
    <author>
        <name>Alex</name>
        
    </author>
    
        <category term="摄影" scheme="http://www.sixapart.com/ns/types#category" />
    
    <category term="istds" label="*istDS" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="firmware" label="firmware" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="pentax" label="Pentax" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="固件" label="固件" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="宾得" label="宾得" scheme="http://www.sixapart.com/ns/types#tag" />
    
    <content type="html" xml:lang="en" xml:base="http://www.aiview.com/">
        <![CDATA[<p>
相机原固件版本是V1.00，最高支持1GB SD卡，更高容量的卡会被识别为1GB并可以正常使用。固件从V1.02 开始支持1GB以上，目前最新的版本是V2.02。
</p>
<p>
要查看当前固件版本，移除存储卡，按住Menu 键打开电源，查看液显即可。
</p>
<p>
先到官方网站下载<a href="http://www.pentax.jp/english/support/digital/firmware/ds_e202w.EXE">*istDS 固件V2.02</a> ，升级之前先阅读一下<a href="http://www.pentax.jp/english/support/digital/20050415e.html">指南</a>。过程很简单，将下载的固件解出拷贝一个格式化好的SD卡内，插入相机，按住Menu 键打开电源，确认后即可进行固件升级，需要注意的就是保证电池有足够的电量，升级过程持续3分钟左右。
</p>
<p>
升级后将存储卡在相机中进行格式化，识别出完整的容量，另外原有的设置丢失，需要重新调整一遍。新的固件除了支持更高容量的存储卡（包括最新的SDHC），还带来了一些机身功能的升级。一切正常，手边没有闲置的8G卡，不知最高支持多大容量。
</p>
<p>
Pentax 其它型号相机的固件在<a href="http://www.pentax.jp/english/support/download_digital.html">这里</a>查找。
</p>
]]>
        
    </content>
</entry>

<entry>
    <title>Nokia E71 杂记</title>
    <link rel="alternate" type="text/html" href="http://www.aiview.com/2008/11/all_about_nokia_e71.html" />
    <id>tag:www.aiview.com,2008://1.988</id>

    <published>2008-11-07T18:52:21Z</published>
    <updated>2008-12-20T20:29:23Z</updated>

    <summary><![CDATA[说点废话E71是一款可以打动我的手机，无论是外形还是内在。相比使用了两年的Windows Mobile 平台的多普达手机，我对Symbian 系统的评价更高，或许是我的D700 型号太老了，总之，我能找到一大堆理由替换掉她：多任务切换需要第三方支持，更重要的是切换过程的反应速度过慢；内存占用过多时，会出现中文输入无法呼出的问题；无线或者蓝牙有时需要reboot一下系统才能启动；因电池耗尽更换电池后，需要手工关闭飞行模式，作为PDA设计无可厚非，作为电话却繁缛了点；最重要的一点，通信模块有时会假死，PDA功能正常，但电话打不进来；决定性的因素，她终于被我摔坏了:(黑莓、iPhone、Gphone或许都是不错的选择，尤其后两者的Shell 环境尤其吸引我，但E71 现在占据了我的心灵:)E71已经用了月余，让我欣慰的是，仅仅花费了一周左右的时间，就获得了在Mobile平台折腾月余的成果 。废话到此为止，现在分享一下E71经验。E71 可以共享PC连接上网吗？ 通过数据线目前似乎不能。&nbsp; 通过蓝牙似乎需要安装第三方软件才可以。&nbsp; 通过WIFI可以，参考下面链接。测试成功！&nbsp; http://bbs.dospy.com/thread-1935390-1-2.html&nbsp;更新（2008-12-20）：我的步骤与上面链接有些不同（不需要配置手机端的ipv4地址。PC端的无线连接也不需要手动指定DNS），简要列出如下： 前提：电脑通过某网络接口（一般是以太网卡）连接到Internet，获取的是内部IP或是外部IP没有关系。 在此网络接口上设置允许共享此连接，可共享此连接的网络选择电脑上空闲的无线网络接口。 验证无线网络是否分配了192.168.0.1/255.255.255.0 的地址。不需指定网关和DNS。 配置无线网络：选中&ldquo;使用windows管理无线网络&rdquo;，并添加一个adhoc类型的网络，SSID可随意命名，比如：myadhoc，可选择加密方式，比如WEP，并手工设置一个密钥。 下面配置手机端，进入连接设置，新增一个无线接入点，adhoc类型，SSID同为myadhoc，设置相同的加密方式和密钥，不用指定IP，网关，DNS等，保存。 手机上打开web，选择新增的无线接入点 myadhoc，连接应该成功。&nbsp;E71 使用8G卡会不会因为扫描大容量降低反应速度？ 已升级Sandisk 8G，无速度降低。每次开机都自动安装软件，最后提示失败，为什么？ 我购的是欧版，已在上级批发商统一刷过BOIS，估计是新系统与原TF卡的兼容问题。删除TF卡上此目录下的文件可解决问题:\private\10202dce 使用条码扫描工具扫描商品上的条码，没有任何结果。 E71自带条码扫描工具仅支持二维条码，通常商品包装是一维条码，可以这个页面中的二维条码 ，识别速度很快。 是否有手机版飞信？可使用这个E62版的飞信程序&nbsp; 有关E71的辐射 降低辐射的方法 。通话中录音 使用系统录音机，启动有些繁琐，录音过程对方能听到提示音，音质很好。有第三方可避免以上问题，不过不喜欢复杂。录音过程中如果离开录音机的画面，则自动暂停录音，注意不是停止，返回后可按键继续录音。 MSN, Gtalk, ICQ...Fring ，不二的选择。最近msn官方刚发布了移动版，同样支持Symbian平台，不过服务页面不支持Firefox，未下载成功，哪位有空可尝试下。Podcast 系统内置Podcast目录, 可直接订阅下载（小心GPRS下会产生巨大流量），系统播放器会自动读出播放列表。更新（2008-12-20）：&nbsp;解释一下Podcast的使用，界面中第2个选项Directory（目录）是podcast管理器，里面预存了可以订阅的资源入口，每次访问前需要在线更新资源列表，更新成功后可以进入列表选择要订阅的具体资源，订阅成功的资源会在界面的第一个选项Podcasts中出现。podcast管理器可以通过添加在线的OPML来扩充，也可以导入一个本地的OPML文件，从而批量增加podcast资源入口。如果已知某个podcast资源URL，可以在Podcasts （第一个选项）中直接添加。下面是我添加的几个PBS科普podcast：http://www.pbs.org/nova/rss/nova-podcast-pb.xmlhttp://www.pbs.org/nova/rss/nova-vodcast-pb.xmlhttp://www.pbs.org/nova/sciencenow/rss/nsn-podcast-pb.xmlhttp://www.pbs.org/nova/rss/einstein-podcast-pb.xml&nbsp;在Podcast中选择某个条目后，后面出现的白色方块图标，表示正在请求数据，请等待。&nbsp;对于一些内置播放器无法播放的视频，可以安装一个CorePlayer来解决。&nbsp;字典可在线下载Dictionary...]]></summary>
    <author>
        <name>Alex</name>
        
    </author>
    
        <category term="Thinkpad and PDA" scheme="http://www.sixapart.com/ns/types#category" />
    
    <category term="e71" label="E71" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="nokia" label="nokia" scheme="http://www.sixapart.com/ns/types#tag" />
    
    <content type="html" xml:lang="en" xml:base="http://www.aiview.com/">
        <![CDATA[<h4>说点废话<br /></h4><p>E71是一款可以打动我的手机，无论是外形还是内在。相比使用了两年的Windows Mobile 平台的多普达手机，我对Symbian 系统的评价更高，或许是我的D700 型号太老了，总之，我能找到一大堆理由替换掉她：</p><p>多任务切换需要第三方支持，更重要的是切换过程的反应速度过慢；内存占用过多时，会出现中文输入无法呼出的问题；无线或者蓝牙有时需要reboot一下系统才能启动；因电池耗尽更换电池后，需要手工关闭飞行模式，作为PDA设计无可厚非，作为电话却繁缛了点；最重要的一点，通信模块有时会假死，PDA功能正常，但电话打不进来；决定性的因素，她终于被我摔坏了:(</p><p>黑莓、iPhone、Gphone或许都是不错的选择，尤其后两者的Shell 环境尤其吸引我，但E71 现在占据了我的心灵:)</p><p>E71已经用了月余，让我欣慰的是，仅仅花费了一周左右的时间，就获得了在Mobile平台折腾月余的<a href="http://www.aiview.com/2007/06/pda_may_get_things_worse.html">成果</a> 。</p><p>废话到此为止，现在分享一下E71经验。</p><h4>E71 可以共享PC连接上网吗？</h4><ul>					<li>通过数据线目前似乎不能。&nbsp;<br />			</li>			<li>通过蓝牙似乎需要安装第三方软件才可以。&nbsp;<br />			</li>			<li>通过WIFI可以，参考下面链接。测试成功！&nbsp;<br />			http://bbs.dospy.com/thread-1935390-1-2.html&nbsp;</li></ul><p class="hilite2">更新（2008-12-20）：</p><div>我的步骤与上面链接有些不同（不需要配置手机端的ipv4地址。PC端的无线连接也不需要手动指定DNS），简要列出如下：</div><ol>					<li>前提：电脑通过某网络接口（一般是以太网卡）连接到Internet，获取的是内部IP或是外部IP没有关系。<br />			</li>			<li>在此网络接口上设置允许共享此连接，可共享此连接的网络选择电脑上空闲的无线网络接口。<br />			</li>			<li>验证无线网络是否分配了192.168.0.1/255.255.255.0 的地址。不需指定网关和DNS。<br />			</li>			<li>配置无线网络：选中&ldquo;使用windows管理无线网络&rdquo;，并添加一个adhoc类型的网络，SSID可随意命名，比如：myadhoc，可选择加密方式，比如WEP，并手工设置一个密钥。<br />			</li>			<li>下面配置手机端，进入连接设置，新增一个无线接入点，adhoc类型，SSID同为myadhoc，设置相同的加密方式和密钥，不用指定IP，网关，DNS等，保存。<br />			</li>			<li>手机上打开web，选择新增的无线接入点 myadhoc，连接应该成功。&nbsp;</li></ol><h4>E71 使用8G卡会不会因为扫描大容量降低反应速度？ </h4><p>已升级Sandisk 8G，无速度降低。</p><h4>每次开机都自动安装软件，最后提示失败，为什么？ </h4><p>我购的是欧版，已在上级批发商统一刷过BOIS，估计是新系统与原TF卡的兼容问题。</p><p>删除TF卡上此目录下的文件可解决问题:\private\10202dce </p><h4>使用条码扫描工具扫描商品上的条码，没有任何结果。 </h4><p>E71自带条码扫描工具仅支持二维条码，通常商品包装是一维条码，可以这个页面中的<a href="http://discussions.europe.nokia.com/discussions/board/message?board.id=communicators&amp;thread.id=24005">二维条码</a> ，识别速度很快。 </p><h4>是否有手机版飞信？</h4><p>可使用这个E62版的<a href="http://www.fetion.com.cn/Downloads/mobile.aspx">飞信程序</a>&nbsp; </p><h4>有关E71的辐射 </h4><p>降低辐射的<a href="http://bbs.dospy.com/viewthread.php?tid=1985626">方法</a> 。</p><h4>通话中录音 </h4><p>使用系统录音机，启动有些繁琐，录音过程对方能听到提示音，音质很好。有第三方可避免以上问题，不过不喜欢复杂。</p><p>录音过程中如果离开录音机的画面，则自动暂停录音，注意不是停止，返回后可按键继续录音。 </p><h4>MSN, Gtalk, ICQ...</h4><p><a href="http://www.fring.com">Fring</a> ，不二的选择。</p><p>最近msn官方刚发布了移动版，同样支持Symbian平台，不过服务页面不支持Firefox，未下载成功，哪位有空可尝试下。</p><h4>Podcast <br /></h4><p>系统内置Podcast目录, 可直接订阅下载（小心GPRS下会产生巨大流量），系统播放器会自动读出播放列表。</p><p class="hilite2">更新（2008-12-20）：&nbsp;</p><p>解释一下Podcast的使用，界面中第2个选项Directory（目录）是podcast管理器，里面预存了可以订阅的资源入口，每次访问前需要在线更新资源列表，更新成功后可以进入列表选择要订阅的具体资源，订阅成功的资源会在界面的第一个选项Podcasts中出现。</p><p>podcast管理器可以通过添加在线的OPML来扩充，也可以导入一个本地的OPML文件，从而批量增加podcast资源入口。</p><p>如果已知某个podcast资源URL，可以在Podcasts （第一个选项）中直接添加。下面是我添加的几个PBS科普podcast：</p><pre>http://www.pbs.org/nova/rss/nova-podcast-pb.xml</pre><pre>http://www.pbs.org/nova/rss/nova-vodcast-pb.xml</pre><pre>http://www.pbs.org/nova/sciencenow/rss/nsn-podcast-pb.xml</pre><pre>http://www.pbs.org/nova/rss/einstein-podcast-pb.xml&nbsp;</pre><p>在Podcast中选择某个条目后，后面出现的白色方块图标，表示正在请求数据，请等待。&nbsp;</p><p>对于一些内置播放器无法播放的视频，可以安装一个CorePlayer来解决。&nbsp;</p><h4>字典<br /></h4><p>可在线下载Dictionary Language 并安装 Chinese等感兴趣语种，并设置source/targe language </p><h4>有关GPRS流量</h4><p>Log中可查看GPRS 单次数据传输量，以及总量，可在月初手工清零。</p><p>彩信导致的流量也会计入，一般这部分是按条单独收费，需要考虑。</p><h4>Nokia Maps 语音导航 <br /></h4><p>使用破解的Nokia Maps 2.0 + 证书签名，驾驶导航功能一直在计算路径，无法进入导航。</p><p>如果地图与语音文件已安装好，那么可能是TF卡上缺少以下文件导致：</p><p>\cities\diskcache\CacheddatHeader.cdt 文件<a href="http://club.ccmove.com/nclub/topicdisplay-9789-1157519-1.html">必须存在</a> ！</p><p>另外：</p><p>\cities\diskcache\ffffffff.cdt 文件不能离线自动生成，但缺失情况下也可以语音导航。 <br />\cities\diskcache\config.cfg 文件可以离线自动生成。 <br />2个qf 文件可离线自动生成。 <br />\cities\qf <br />\cities\diskcache\qf </p><p>此问题与语音文件的语言无关，可以配置成与地图使用不同种类的语言。 </p><p>与选择的开始或者目的地点没有详细道路没有关系（两点之间必须有完整的地图道路数据，区别于地图未下载完整）。</p><h4>如果希望使用与系统语言不同的Nokia Maps数据</h4><p>那么千万不能在Nokia Maps中使用go online选项，否则会瞬间丢失所有本地地图数据。 </p><p>go online 之后Nokia Maps会自动在线更新地图，并且会根据系统的语言选择相应语言版本的地图数据，如果不符，会删除所有本地地图数据，并下载新的符合语言版本的地图数据。有人说修改qf文件中的languageID可避免不期望的删除，但经测试无效：</p><p>English 是129,大陆是31，但修改后软件会自动根据系统语言更新这个文件，如果修改后设为只读，虽然软件无法修改成功，但依然删除原有数据并下载与系统语言相符的地图数据。</p><h4>开心网</h4><p>可通过手机短信在开心网发布记录，或者通过彩信在开心网发布图片，目前(2008-11-08)免费。</p><p>以上功能需要在开心网进行手机号码绑定设置。</p><h4>GPS<br /></h4><p>GPS 在野外开阔地带第一次定位速度在1分钟内，经过长途导航测试，GPS表现非常稳定。开启GPS 利用地图持续导航的情况下（另外运行一个SportTracker保留轨迹），满电电池可以坚持10小时左右。 </p><h4>其他<br /></h4>通过WIFI 共享PC Internet连接，速度非常快，最高160k左右，几乎达到了电信宽带实际速度的上限。 <br />&nbsp;<br />运行第三方Energy Prifile 1.1 过久会导致手机自动重起。<br /><p>Activated connection中可查看WIFI连接的当前状态和速率。 </p><p>使用蓝牙连接PC suite，没有卡正在使用的问题。平时开着PC端蓝牙，一旦打开手机蓝牙即可自动连接PC suite，十分方便，缺点是文件传输速度稍慢。 <br />&nbsp;<br />SMS Spam Message 后台运行导致PC suite 连接后找不到TF卡，只有内存卡。 </p><p>科大讯飞语音电子书for Symbian 1.0 还不支持第三版，已经咨询过官方，目前无法运行在E71上。已注册了软件，等待升级，对于未来升级版，注册码在同一手机上有效。</p><p>输入法我用A4，奥运五环E71专用版。</p><p>BizReader在有的版本系统自带，没有的可自己下载，其利用摄像头扫描名片，出人意料的实用。</p><p>拍照时，按数字键2 先对焦，否则你可能会更嘲笑这个350w的。</p><h4>更新 2008-12-20</h4><p class="hilite2">在上面增加了一些更新。&nbsp;</p><p>（未完） </p><h4>延展阅读<br /></h4><ul>					<li><a href="http://bbs.dospy.com/thread-2067785-1-2.html">用E71做你真正的商务助手（持续更新）</a> </li>			<li><a href="http://www.aiview.com/2007/06/pda_may_get_things_worse.html">别让PDA 拖了后腿</a>&nbsp; <br />			</li></ul>]]>
        
    </content>
</entry>

<entry>
    <title>Gentoo Linux on T43 (17) VGA输出</title>
    <link rel="alternate" type="text/html" href="http://www.aiview.com/2008/11/gentoo_linux_on_t43_17_vga-out.html" />
    <id>tag:www.aiview.com,2008://1.987</id>

    <published>2008-11-05T16:57:07Z</published>
    <updated>2008-11-05T17:58:55Z</updated>

    <summary>接口 VGA 的输出可以利用xrandr 命令控制，这个软件包应该已经跟随xorg-x11安装好了。 通过xrandr 命令的输出，知道T43支持以下视频接口： VGA DVI LVDS S-video VGA接口在笔记本右侧，可外接显示器、投影仪等VGA 设备。 DVI接口在产品的spec中并没有声称支持，机身也找不到借口，但可以被检测到，猜测笔记本内可能存在相关的硬件。 LVDS就是内置的液晶屏接口。 S-video在USB接口旁边，我从未测试过。 xrandr 不带参数的xrandr 命令会列出系统支持的视频接口名称和设备连接情况。 $ xrandr Screen 0: minimum 320 x 200, current 1400 x 1050, maximum 1400 x 1200 VGA-0 disconnected (normal left inverted right...</summary>
    <author>
        <name>Alex</name>
        
    </author>
    
        <category term="Linux" scheme="http://www.sixapart.com/ns/types#category" />
    
    <category term="gentoo" label="gentoo" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="linux" label="linux" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="t43" label="T43" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="vgaout" label="VGA-Out" scheme="http://www.sixapart.com/ns/types#tag" />
    
    <content type="html" xml:lang="en" xml:base="http://www.aiview.com/">
        <![CDATA[<h4>接口<br />
</h4>
<p>
VGA 的输出可以利用xrandr 命令控制，这个软件包应该已经跟随xorg-x11安装好了。
</p>
<p>
通过xrandr 命令的输出，知道T43支持以下视频接口： 
</p>
<ul>
	<li>VGA</li>
	<li>DVI<br />
	</li>
	<li>LVDS</li>
	<li>S-video</li>
</ul>
<p>
VGA接口在笔记本右侧，可外接显示器、投影仪等VGA 设备。
</p>
<p>
DVI接口在产品的spec中并没有声称支持，机身也找不到借口，但可以被检测到，猜测笔记本内可能存在相关的硬件。 
</p>
<p>
LVDS就是内置的液晶屏接口。
</p>
<p>
S-video在USB接口旁边，我从未测试过。
</p>
<h4>xrandr</h4>
<p>
不带参数的xrandr 命令会列出系统支持的视频接口名称和设备连接情况。
</p>
<pre class="cmd">
$ xrandr
</pre>
<pre class="output">
Screen 0: minimum 320 x 200, current 1400 x 1050, maximum 1400 x 1200
VGA-0 disconnected (normal left inverted right x axis y axis)
DVI-0 disconnected (normal left inverted right x axis y axis)
LVDS connected 1400x1050+0+0 (normal left inverted right x axis y axis) 0mm x 0mm
1400x1050      50.0*+
1280x1024      59.9  
1024x768       60.0     59.9  
800x600        60.3     59.9  
640x480        59.9  
S-video disconnected (normal left inverted right x axis y axis)
</pre>
<p>
用以下命令将视频输出发送到某个接口设备。
</p>
<pre class="cmd">
&nbsp;$ xrandr --output VGA-0 --auto
</pre>
<p>
用以下命令关闭某个接口设备的视频输出。 
</p>
<pre class="cmd">
&nbsp;$ xrandr --output VGA-0 --off
</pre>
<h4>Fn＋keys <br />
</h4>
<p>
下面的脚本用于Fn＋F7 控制VGA 输出的转换，脚本会自动搜索connected 到VGA输出的设备（包含内置液晶屏LVDS；S-video可能会支持，但未做测试），并顺序将显示输出到每一个设备，同时关闭所有其它设备的输出，这其中还包含一个将所有设备打开的步骤，整个过程循环。 
</p>
<pre class="code">
00001007)
# Fn + F7 (Switch VGA/DVI/LVDS/S-video)
default=LVDS
# 1: connected and online
# 0: connected but not online
# N: disconnected
# i.e. &quot;VGA-0 0 DVI-0 N LVDS 1 S-video N&quot;
#screen=$(/usr/bin/xrandr |awk &#39;/connected| \+|\*\+/ { \
#            if (match($2, /^connected$/) &gt; 0) {printf $1 FS; next} \
#            else if (match($2, /^disconnected$/) &gt; 0) {print $1, &quot;N&quot;; next} \
#            else if (match($0,/\ \+/) &gt; 0) {print &quot;0&quot;} \
#            else if (match($0,/\*\+/) &gt; 0) {print &quot;1&quot;} }&#39;)
screen=$(/usr/bin/xrandr |awk &#39;/connected| \+|\*\+/ { if (match($2, /^connected$/) &gt; 0) {printf $1 FS; next} else if (match($2, /^disconnected$/) &gt; 0) {print $1, &quot;N&quot;; next} else if (match($0,/\ \+/) &gt; 0) {print &quot;0&quot;} else if (match($0,/\*\+/) &gt; 0) {print &quot;1&quot;} }&#39;)
#screen=&quot;VGA-0 0 DVI-0 N LVDS 1 S-video N&quot;
arr_output=($(echo $screen |xargs -n2 |awk &#39;{print $2 == &quot;N&quot;?&quot;&quot;:$1}&#39;)) # connected screens
arr_status=($(echo $screen |xargs -n2 |awk &#39;{print $2 == &quot;N&quot;?&quot;&quot;:$2}&#39;)) # 1: online; 0: offline
logger -t &quot;$0&quot; &quot;Supported Output: $(echo $screen |xargs -n2 |cut -d&#39; &#39; -f1 |xargs)&quot;
logger -t &quot;$0&quot; &quot;Connected Output: $(echo $screen |xargs -n2 |awk &#39;{ if ($2 == 1) print $1&quot;*&quot;; else if ($2 == 0) print $1 }&#39; |xargs)&quot;
[[ $(echo ${arr_status[@]} |xargs -n1 |awk /1/ |wc -l) -eq ${#arr_status[@]} ]] &amp;&amp; all_online=1
[[ $(echo ${arr_status[@]} |xargs -n1 |awk /0/ |wc -l) -eq ${#arr_status[@]} ]] &amp;&amp; all_offline=1
if [[ $all_offline -eq 1 ]] ; then
xrandr --output $default --auto
return
fi
[[ ${#arr_output[@]} -ne ${#arr_status[@]} ]] &amp;&amp; return 1
[[ ${#arr_output[@]} -le 1 ]] &amp;&amp; return
i=0
while [[ $i -le ${#arr_output[@]} ]]
do
next=$((i + 1))
[[ $next -ge ${#arr_output[@]} ]] &amp;&amp; next=0
if [[ ${arr_status[$i]} -eq 1 ]] ; then
if [[ ${arr_status[$i]} -eq 0 &amp;&amp; $all_online -ne 1 ]] ; then
logger -t &quot;$0&quot; &quot;Switching all outputs on: ${arr_output[@]}&quot;
for output in ${arr_output[@]}
do
xrandr --output $output --auto
done
break
fi
logger -t &quot;$0&quot; &quot;Switching ${arr_output[$next]} off&quot;
xrandr --output ${arr_output[$next]} --auto
logger -t &quot;$0&quot; &quot;Switching ${arr_output[$i]} on&quot;
xrandr --output ${arr_output[$i]} --off
break
fi
i=$((i + 1))
done
;;
&nbsp;
</pre>
<p>
上面这段脚本用于acpi的事件处理，这部分内容请查看<a href="http://www.aiview.com/2008/03/gentoo_linux_on_t43_15_fn_keys.html">Fn + Keys</a>。
</p>
<h4><a name="7" title="7"></a>下载</h4>
<p>
<a name="7" title="7"></a>以上脚本包含在/etc/acpi/<a href="http://www.aiview.com/ref/2008/03/default.sh">default.sh</a> ，请根据自己的情况提取使用。 
</p>
<h4>参考资料<br />
</h4>
<ul>
	<li><a href="http://www.aiview.com/2008/03/gentoo_linux_on_t43_15_fn_keys.html">Gentoo Linux on T43 (15) Fn + Keys</a></li>
	<li><a id="nabble.link13382872" href="http://www.nabble.com/forum/ViewPost.jtp?post=13382872&amp;framed=y" target="ViewPost">Clone display via VGA output on Thinkpad T41p, Radeon M10 (FireGL T2), Xorg 7.3</a></li>
</ul>
<p>
&nbsp;
</p>
]]>
        
    </content>
</entry>

<entry>
    <title>Gentoo Linux on T43 (16) 蓝牙传输文件</title>
    <link rel="alternate" type="text/html" href="http://www.aiview.com/2008/11/gentoo_linux_on_t43_16_bluetooth.html" />
    <id>tag:www.aiview.com,2008://1.986</id>

    <published>2008-11-04T19:48:11Z</published>
    <updated>2008-11-05T17:58:23Z</updated>

    <summary><![CDATA[ 通过蓝牙，可方便的实现与其它设备交换文件，接驳蓝牙耳机，组建局域网，甚至利用蓝牙连接移动设备进行拨号。我的需求不多，仅实现了与其它蓝牙设备双向传输文件，下面是我用到的应用程序、方法以及资源。 配置内核 内核的配置参考了Thinkwiki。 应用程序 我用到了以下软件包： net-wireless/bluez-libs-3.36&nbsp; (库文件) net-wireless/bluez-utils-3.36 (基础配置工具，蓝牙系统服务) dev-libs/openobex-1.3 (库文件) app-mobilephone/obex-data-server-0.3.2 (bluez-gnome依赖它) gnome-extra/gnome-vfs-obexftp-0.4 (bluez-gnome依赖它)&nbsp; net-wireless/bluez-gnome-0.28 (Bluetooth applet, 文件传输gui) net-wireless/gnome-bluetooth-0.11.0 (文件接收Daemon: gnome-obex-server) app-mobilephone/obexftp-0.22 (命令行文件传输工具)&nbsp; Bluetooth applet 可以在蓝牙设备打开时自动运行，可以浏览附近的蓝牙设备，提供文件发送与接收的操作，并进行基础的蓝牙属性配置。 但Bluetooth applet的文件接收功能在我的电脑上遇到问题，无法收到其它设备的发送文件请求。为此需要安装 gnome-bluetooth，这事另外一个文件接收服务器（仅接收）。 obexftp 是一个命令行ftp工具，可选安装。 将以上软件包merge到系统，然会添加蓝牙的系统服务 # rc-update add bluetooth default gnome-obex-server...]]></summary>
    <author>
        <name>Alex</name>
        
    </author>
    
        <category term="Linux" scheme="http://www.sixapart.com/ns/types#category" />
    
    <category term="bluetooth" label="bluetooth" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="gentoo" label="gentoo" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="linux" label="linux" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="t43" label="T43" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="蓝牙" label="蓝牙" scheme="http://www.sixapart.com/ns/types#tag" />
    
    <content type="html" xml:lang="en" xml:base="http://www.aiview.com/">
        <![CDATA[<p>
通过蓝牙，可方便的实现与其它设备交换文件，接驳蓝牙耳机，组建局域网，甚至利用蓝牙连接移动设备进行拨号。我的需求不多，仅实现了与其它蓝牙设备双向传输文件，下面是我用到的应用程序、方法以及资源。
</p>
<h4>配置内核</h4>
<p>
内核的配置参考了<a href="http://www.thinkwiki.org/wiki/How_to_setup_Bluetooth#Configuring_the_kernel">Thinkwiki。</a>
</p>
<h4>应用程序</h4>
<p>
我用到了以下软件包：
</p>
<ul>
	<li>net-wireless/bluez-libs-3.36&nbsp; (库文件)</li>
	<li>net-wireless/bluez-utils-3.36 (基础配置工具，蓝牙系统服务)</li>
	<li>dev-libs/openobex-1.3 (库文件)</li>
	<li>app-mobilephone/obex-data-server-0.3.2 (bluez-gnome依赖它) <br />
	</li>
	<li>gnome-extra/gnome-vfs-obexftp-0.4 (bluez-gnome依赖它)&nbsp;</li>
	<li>net-wireless/bluez-gnome-0.28 (Bluetooth applet, 文件传输gui)</li>
	<li>net-wireless/gnome-bluetooth-0.11.0 (文件接收Daemon: gnome-obex-server)</li>
	<li>app-mobilephone/obexftp-0.22 (命令行文件传输工具)&nbsp;
	</li>
</ul>
<p>
Bluetooth applet 可以在蓝牙设备打开时自动运行，可以浏览附近的蓝牙设备，提供文件发送与接收的操作，并进行基础的蓝牙属性配置。
</p>
<p>
但Bluetooth applet的文件接收功能在我的电脑上遇到问题，无法收到其它设备的发送文件请求。为此需要安装 gnome-bluetooth，这事另外一个文件接收服务器（仅接收）。
</p>
<p>
obexftp 是一个命令行ftp工具，可选安装。
</p>
<p>
将以上软件包merge到系统，然会添加蓝牙的系统服务
</p>
<pre class="cmd">
# rc-update add bluetooth default 
</pre>
<p>
gnome-obex-server 不会跟随蓝牙设备的开启自动运行，可以将其加入Gnome的启动session，令其跟随系统启动运行。 
</p>
<p>
再进行接下来的配置。
</p>
<h4>配置文件</h4>
<p>
编辑修改/etc/bluetooth/hcid.conf ，对照修改黄底色的部分，密码88888改成自己的。
</p>
<pre class="code">
&nbsp;options {
# Automatically initialize new devices
autoinit <span class="hilite">yes</span>;
# Security Manager mode
#   none - Security manager disabled
#   auto - Use local PIN for incoming connections
#   user - Always ask user for a PIN
#
security <span class="hilite">auto</span>;
# Pairing mode
#   none  - Pairing disabled
#   multi - Allow pairing with already paired devices
#   once  - Pair once and deny successive attempts
pairing multi;
<span class="hilite">	# Default PIN code for incoming connections
passkey &quot;88888&quot;;</span>
}
# Default settings for HCI devices
device {
# Local device name
#   %d - device id
#   %h - host name
name &quot;BlueZ (%d)&quot;;
# Local device class
class 0x000100;
# Default packet type
#pkt_type DH1,DM1,HV1;
# Inquiry and Page scan
iscan enable; pscan enable;
# Default link mode
#   none   - no specific policy 
#   accept - always accept incoming connections
#   master - become master on incoming connections,
#            deny role switch on outgoing connections
lm accept;
# Default link policy
#   none    - no specific policy
#   rswitch - allow role switch
#   hold    - allow hold mode
#   sniff   - allow sniff mode
#   park    - allow park mode
lp rswitch,hold,sniff,park;
}
</pre>
<h4>测试<br />
</h4>
<p>
配置完成之后，启动蓝牙系统服务。
</p>
<pre class="cmd">
# /etc/init.d/bluetooth start 
</pre>
<p>
此时应该可以看到Bluetooth applet出现在托盘，右键选择发送文件，选择浏览到的目标设备，应该可以测试成功。
</p>
<p>
然后测试接收文件，从系统工具中运行Bluetooth File Sharing (即bluetooth-obex-server)，托盘会出现另外一个图标。此时从其它蓝牙设备选择向这部电脑发送文件，应该可以收到确认请求。
</p>
<h4>Toggle 蓝牙开关 <br />
</h4>
<p>
为了方便的开启／关闭蓝牙，我将以下脚本添加到acpi的事件处理当中，可以利用Thinkpad 的Fn＋F5 toggle 蓝牙的开关。
</p>
<p>
/etc/acpi/default.sh
</p>
<pre class="code">
00001005)
# Fn + F5 (Bluetooth on/off)
# 2006-03-07 &lt;pille@struction.de&gt;
#
# acpi called script to toogle bluetooth
#
# get current bluetooth state
cat /proc/acpi/ibm/bluetooth |grep &quot;^status:.*enabled&quot; &gt; /dev/null
if [ $? == 0 ] ; then
logger -t &quot;$0&quot; &quot;bluetooth is on. switching it off.&quot;
logger -t &quot;$0&quot; &quot;disabling bluetooth.&quot;
echo disable &gt;/proc/acpi/ibm/bluetooth
else
logger -t &quot;$0&quot; &quot;bluetooth is off. switching it on.&quot;
logger -t &quot;$0&quot; &quot;enabling bluetooth.&quot;
echo enable &gt;/proc/acpi/ibm/bluetooth
fi
;;
</pre>
<p>
有关acp事件处理，请参考<a href="http://www.aiview.com/2008/03/gentoo_linux_on_t43_15_fn_keys.html" title="Tags: Fn, gentoo, linux, t43, thinkpad ">Fn + Keys</a>获得详细信息。
</p>
<h4>有关命令行工具<br />
</h4>
<p>
以下几个是比较常用的命令行工具。
</p>
<h5>hcitool <br />
</h5>
<p>
hcitool 可用于蓝牙设备扫描，连接，认证等操作。
</p>
<pre class="cmd">
$ hcitool scan
</pre>
<p>
如果输出扫描到的蓝牙设备名是乱码，可能是蓝牙设备与电脑环境编码不一致，可尝试将UTF-8 编码转换到GBK：
</p>
<pre class="cmd">
$ hcitool scan |iconv -f utf-8 -t gbk 
</pre>
<h4>hciconfig</h4>
<p>
类似于ifconfig，可用于配置蓝牙设备，一般设备名为hci0。
</p>
<pre class="cmd">
# hciconfig hci0 
</pre>
<h4><a name="7"></a>下载</h4>
<a name="7"></a>以上脚本包含在/etc/acpi/<a href="http://www.aiview.com/ref/2008/03/default.sh">default.sh</a> ，请根据自己的情况提取使用。 &nbsp;
<h4>参考资料</h4>
<ul>
	<li><a href="http://www.thinkwiki.org/wiki/How_to_setup_Bluetooth" target="_blank" onmousedown="return clk(0,'','','res','1','')">How to setup Bluetooth - ThinkWiki</a><span class="std nobr"></span> </li>
	<li><a href="http://www.aiview.com/2008/03/gentoo_linux_on_t43_15_fn_keys.html" title="Tags: Fn, gentoo, linux, t43, thinkpad ">Gentoo Linux on T43 (15) Fn + Keys</a></li>
</ul>
<p>
&nbsp;
</p>
]]>
        
    </content>
</entry>

<entry>
    <title>升级到openoffice 2.3.1 宋体显示为方块</title>
    <link rel="alternate" type="text/html" href="http://www.aiview.com/2008/10/openoffice_231_break_simsun_font.html" />
    <id>tag:www.aiview.com,2008://1.985</id>

    <published>2008-10-30T02:46:59Z</published>
    <updated>2008-10-30T02:54:00Z</updated>

    <summary><![CDATA[ 搜索了一下，不少朋友都遇到了类似的问题，2.4.0似乎也有同样的问题。经测试，上面的问题仅仅出现在我加入字体别名替换的配置下，问题可能是openoffice 以上版本不识别宋体（等遇到问题的字体）的英文字体名称。很多朋友的字体配置文件中指定了别名替换，比如将宋体替换为SimSun，这也包含在我推荐的字体配置文件中，而openoffice 无法识别替换后的字体名称SimSun，原因未知。 我的临时修补方法是注释掉相应的字体别名替换，openoffice中宋体显示恢复正常。 &lt;!-- &lt;match target=&quot;pattern&quot;&gt; &lt;test name=&quot;family&quot;&gt; &lt;string&gt;宋体&lt;/string&gt; &lt;/test&gt; &lt;edit name=&quot;family&quot; mode=&quot;assign&quot;&gt; &lt;string&gt;SimSun&lt;/string&gt; &lt;/edit&gt; &lt;/match&gt; --&gt; 另外的一个方法可尝试升级到openoffice 3.0。...]]></summary>
    <author>
        <name>Alex</name>
        
    </author>
    
        <category term="Linux" scheme="http://www.sixapart.com/ns/types#category" />
    
    <category term="openoffice" label="openoffice" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="simsun" label="SimSun" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="宋体" label="宋体" scheme="http://www.sixapart.com/ns/types#tag" />
    
    <content type="html" xml:lang="en" xml:base="http://www.aiview.com/">
        <![CDATA[<p>
搜索了一下，不少朋友都遇到了类似的问题，2.4.0似乎也有同样的问题。经测试，上面的问题仅仅出现在我加入字体别名替换的配置下，问题可能是openoffice 以上版本不识别宋体（等遇到问题的字体）的英文字体名称。很多朋友的字体配置文件中指定了别名替换，比如将宋体替换为SimSun，这也包含在我<a href="http://www.aiview.com/2008/01/gentoo_linuxon_t43_7_chinese_fonts.html">推荐</a>的字体配置文件中，而openoffice 无法识别替换后的字体名称SimSun，原因未知。
</p>
<p>
我的临时修补方法是注释掉相应的字体别名替换，openoffice中宋体显示恢复正常。
</p>
<pre class="code">
&lt;!--
&lt;match target=&quot;pattern&quot;&gt;
&lt;test name=&quot;family&quot;&gt;
&lt;string&gt;宋体&lt;/string&gt;
&lt;/test&gt;
&lt;edit name=&quot;family&quot; mode=&quot;assign&quot;&gt;
&lt;string&gt;SimSun&lt;/string&gt;
&lt;/edit&gt;
&lt;/match&gt;
--&gt;
</pre>
<p>
另外的一个方法可尝试升级到openoffice 3.0。
</p>
]]>
        
    </content>
</entry>

<entry>
    <title>vmware: 利用已有Windows 安装创建虚拟机</title>
    <link rel="alternate" type="text/html" href="http://www.aiview.com/2008/07/vmware_using_physical_windows_installation.html" />
    <id>tag:www.aiview.com,2008://1.983</id>

    <published>2008-07-31T15:23:14Z</published>
    <updated>2008-07-30T18:35:16Z</updated>

    <summary> 如果已有安装配置好的Windows 系统分区，将其转化为虚拟机文件，或者直接将虚拟机运行在其上，都是可能的，vmware 与另一个虚拟机软件VirtualBox 均支持此功能。 NOTE：VirtualBox 的开源版本 VirtualBox OSE 不支持直接在物理分区的系统上运行虚拟机，仅仅二进制分发版本支持此功能，当前版本：1.5.7。 无论如何，通过虚拟机启动物理分区上的操作系统，并同时希望某个时候还可以像平常那样直接从物理分区启动，实现这一目标的过程，以及使用的过程，都是带有一定的危险性，可能会导致无法修复的数据损失，这在两个软件的文档中都有提及。同时，因为软硬件环境的多样性，也可能无法成功实现从虚拟机的启动。 我选择克隆一份已有的Windows分区来创建虚拟机。下面介绍一下我的步骤以及使用的辅助工具。 所需软件 vmware-workstation 6.0.4 for linux 安装文件 vmware-workstation 6.0.4 for linux Serial Number（30天评估 ） windows 98 启动盘，或者相应的.img 或者.iso 文件 windows 安装光盘，或者.iso 文件 ghost .img或者.iso文件 安装步骤 1. 安装vmware # emerge...</summary>
    <author>
        <name>Alex</name>
        
    </author>
    
        <category term="Linux" scheme="http://www.sixapart.com/ns/types#category" />
    
    <category term="vmware" label="vmware" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="windows" label="windows" scheme="http://www.sixapart.com/ns/types#tag" />
    
    <content type="html" xml:lang="en" xml:base="http://www.aiview.com/">
        <![CDATA[<p>
如果已有安装配置好的Windows 系统分区，将其转化为虚拟机文件，或者直接将虚拟机运行在其上，都是可能的，<a href="http://www.vmware.com">vmware</a>  与另一个虚拟机软件<a href="http://www.virtualbox.org/">VirtualBox</a>  均支持此功能。
</p>
<p>
NOTE：VirtualBox 的开源版本 VirtualBox OSE 不支持直接在物理分区的系统上运行虚拟机，仅仅二进制分发版本支持此功能，当前版本：1.5.7。
</p>
<p>
无论如何，通过虚拟机启动物理分区上的操作系统，并同时希望某个时候还可以像平常那样直接从物理分区启动，实现这一目标的过程，以及使用的过程，都是带有一定的危险性，可能会导致无法修复的数据损失，这在两个软件的文档中都有提及。同时，因为软硬件环境的多样性，也可能无法成功实现从虚拟机的启动。
</p>
<p>
我选择克隆一份已有的Windows分区来创建虚拟机。下面介绍一下我的步骤以及使用的辅助工具。 
</p>
<h4>所需软件</h4>
<ul>
	<li><a href="http://www.vmware.com/download/ws/">vmware-workstation 6.0.4</a>  for linux 安装文件</li>
	<li>vmware-workstation 6.0.4 for linux Serial Number（<a href="https://www.vmware.com/tryvmware/login.php?eval=workstation-l">30天评估</a> ）<br />
	</li>
	<li>windows 98 启动盘，或者相应的.img 或者.iso 文件</li>
	<li>windows 安装光盘，或者.iso 文件<br />
	</li>
	<li>ghost .img或者.iso文件</li>
</ul>
<h4>安装步骤</h4>
<p>
1. 安装vmware 
</p>
<pre class="cmd">
# emerge -av1 vmware-workstation
</pre>
<p>
NOTE: 安装完成之后，应该先读本地<a href="file:///opt/vmware/workstation/lib/help-manual/index.html ">文档</a> ，尤其是<a href="file:///opt/vmware/workstation/lib/help-manual/disks_ws.html">Using Disks</a> 一章，事实上，如vmware 这样，如行云流水一般组织的文档，非常少见。这些文档位于：
</p>
<p>
 /opt/vmware/workstation/lib/help-manual/index.html 
</p>
<p>
2. 选择运行虚拟机的用户（不要用root），将其加入vmware 组
</p>
<pre class="cmd">
# usermod -aG vmware yourusername 
</pre>
<p>
3. 运行软件，输入Serial Number。
</p>
<p>
NOTE：如果运行软件遇到错误，可能需要重新emerge以下两个packages：
</p>
<pre class="output">
x11-libs/libview
x11-libs/libsexy
</pre>
<p>
4. 按通常步骤创建一个Windows 虚拟机A。使用Windows 98 启动盘启动虚拟机。
</p>
<p>
5. 启动后，首先用fdisk 命令安需要分区虚拟机的磁盘，要求分区与想要克隆的物理分区在数量上相对应，并且至少要分别大于物理分区的已占用空间。
</p>
<p>
6. 重启虚拟机，格式化分区，Power Off 虚拟机。
</p>
<p>
7. 回到Linux 系统，接下来需要临时更改Windows 分区所在的磁盘的权限，将所有者由root 改为运行vmware 软件的用户。假设你的磁盘设备名为/dev/sda:
</p>
<pre class="cmd">
# chown yourusername /dev/sda*
</pre>
<p>
在Linux 系统，确认Windows 所在分区当前没有在Linux 下挂载(mount)，否则必须要umount 掉！才能进行接下来的步骤！ 
</p>
<p>
NOTE：如果使用udev，在Linux 系统重启后，修改的磁盘所有者会自动复原，也可以在下面克隆的步骤（10）完成之后，手工修改回来，以减少可能的风险。
</p>
<pre class="cmd">
# chown root /dev/sda*
</pre>
<p>
8. 回到vmware，使用定制方式创建一个新的虚拟机B，选择使用物理磁盘以及单独的分区，并选择Windows 所在分区。保存退出，不必启动此虚拟机。
</p>
<p>
9. 回到前面创建的第一个虚拟机A的设定，在虚拟机中添加一个磁盘，选择已有的文件，并指向到虚拟机B 的vmdk 文件。保存，并使用windows 启动盘启动虚拟机A。
</p>
<p>
10. 配置虚拟机访问ghost 工具，在DOS 下运行ghost，进行分区到分区的克隆，源分区选择新添加的磁盘（来自于虚拟机B 的vmdk文件）中的分区，目标分区是前面使用fdisk 创建的相对应分区。一一克隆完毕。
</p>
<p>
在虚拟机A的设定中删除第9步新添加的磁盘，此时可以删除虚拟机B，并恢复/dev/sda* 的所有者为root。
</p>
<p>
NOTE: 如果使用DOS 的xcopy 命令代替ghost可能会遇到长文件名截短的问题，同时速度也更慢。 
</p>
<p>
11. 配置虚拟机访问windows 安装文件，在DOS 下进入i386目录，运行winnt.exe启动系统安装程序，目标安装分区选择前面克隆的目标系统分区，待文件复制完毕，Power Off虚拟机。这步的目的是在目标系统分区写入Windows 引导记录。
</p>
<p>
12. 使用Windows 98 启动盘再次启动虚拟机，在DOS 下进入到系统分区根目录，一般会是C盘，需要编辑boot.ini，首先去除其系统／隐藏／只读 属性：
</p>
<pre class="cmd">
C:\&gt; attrib -s -h -r boot.ini
</pre>
<p>
编辑此文件：
</p>
<pre class="cmd">
C:\&gt; edit boot.ini
</pre>
<p>
13. 根据实际情况修改启动条目中的分区编号，使其符合虚拟机环境中的磁盘配置。修改默认启动条目，并删除windows 安装的启动条目，保存退出。
</p>
<p>
重启虚拟机，选择从硬盘启动。
</p>
<p>
如果顺利应该可以进入windows 启动界面，并启动成功。
</p>
<p>
14. 如果启动失败，可尝试进入安全模式。如果依然失败，可尝试重启Linux 系统，进入物理分区上的windows 系统，创建一个新的硬件profile作为backup，并在当前硬件profile 中，删去一些在虚拟机中不需要，或者认为可能引起问题的硬件，然后重启回到Linux 系统，从第7步重新做起，最后在虚拟机中使用修改后的硬件profile 尝试进行启动。
</p>
<p>
NOTE：当然，这一步也可以在第8步之前就准备好。 
</p>
<p>
15. 启动成功后，可以在系统分区删除前面安装windows 导致的临时文件，比如：
</p>
<pre class="output">
C:\$win_nt$.~bt
C:\$win_nt$.~ls
...
</pre>
<p>
&nbsp;
</p>
]]>
        
    </content>
</entry>

<entry>
    <title>在linux 下运行PowerDesigner 15 Beta 2</title>
    <link rel="alternate" type="text/html" href="http://www.aiview.com/2008/07/powerdesigner_15_beta_2_under_linux.html" />
    <id>tag:www.aiview.com,2008://1.982</id>

    <published>2008-07-27T17:15:00Z</published>
    <updated>2009-03-07T10:10:31Z</updated>

    <summary> PowerDesigner 是Sybase 的一款优秀的数据库辅助设计软件，目前没有开发Linux 版本，同时我在Linux 下也找不到可替代的产品。经过尝试，通过wine 可以在Linux 下将PowerDesinger 版本15 很好的运行起来，加上一些额外的努力，还可以启用PowerDesigner 对VB Script 以及数据库连接的支持。我把主要步骤列出来，供有兴趣的朋友参考。 测试环境： Gentoo Linux 2.6.24-r3 wine-1.1.0 PowerDesigner 15 Beta 2 由于缺乏VC80的支持，PowerDesigner 15 Beta 2 的安装程序默认在wine 下面无法正常运行，安装会失败。一种解决方法是移植已有的Windows 安装版本。 移植已有的Windows 安装版本 在Windows 下安装好PowerDesigner，然后将以下目录copy至Linux ： 程序的安装目录 将存放License的目录：C:\\Documents and Settings\\All Users\\Application Data\\PowerDesigner...</summary>
    <author>
        <name>Alex</name>
        
    </author>
    
        <category term="软件开发" scheme="http://www.sixapart.com/ns/types#category" />
    
    <category term="linux" label="linux" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="powerdesigner" label="PowerDesigner" scheme="http://www.sixapart.com/ns/types#tag" />
    
    <content type="html" xml:lang="en" xml:base="http://www.aiview.com/">
        <![CDATA[<p>
PowerDesigner 是Sybase 的一款优秀的数据库辅助设计软件，目前没有开发Linux 版本，同时我在Linux 下也找不到可替代的产品。经过尝试，通过wine 可以在Linux 下将PowerDesinger 版本15 很好的运行起来，加上一些额外的努力，还可以启用PowerDesigner 对VB Script 以及数据库连接的支持。我把主要步骤列出来，供有兴趣的朋友参考。 
</p>
<p>
测试环境： 
</p>
<ul>
	<li>Gentoo Linux 2.6.24-r3</li>
	<li>wine-1.1.0</li>
	<li>PowerDesigner 15 Beta 2</li>
</ul>
<p>
由于缺乏VC80的支持，PowerDesigner 15 Beta 2 的安装程序默认在wine 下面无法正常运行，安装会失败。一种解决方法是移植已有的Windows 安装版本。 
</p>
<h4>移植已有的Windows 安装版本</h4>
<p>
在Windows 下安装好PowerDesigner，然后将以下目录copy至Linux ： 
</p>
<ul>
	<li>程序的安装目录</li>
	<li>将存放License的目录：C:\\Documents and Settings\\All Users\\Application Data\\PowerDesigner 15</li>
</ul>
<p>
然后在Windows 运行注册表，将以下keys 分别导出： 
</p>
<ul>
	<li>[HKEY_CURRENT_USER\Software\Sybase\PowerDesigner 15]</li>
	<li>[HKEY_LOCAL_MACHINE\SOFTWARE\Sybase\PowerDesigner 15]</li>
	<li>[HKEY_USERS\.Default\Software\Sybase\PowerDesigner 15]</li>
</ul>
<p>
在Linux 下运行wine regedit 导入以上keys， 如果出错，那么可能需要先对文件的编码进行转换： 
</p>
<pre class="cmd">
$ recode UCS2..  *Sybase*.reg
</pre>
<p>
NOTE：如果没有recode 命令，$ emerge -av1 recode 
</p>
<p>
导入成功之后，在Linux 下运行注册表工具，修改key ：[HKEY_LOCAL_MACHINE\SOFTWARE\Sybase\PowerDesigner 15\License\LicenseDirectory]，将目录修改为License 在Linux 下存放的目录，例如 &quot;C:\\Documents and Settings\\All Users\\Application Data\\PowerDesigner 15&quot; 
</p>
<p>
如果一切顺利，就可以用以下命令来运行PowerDesigner了。 
</p>
<pre class="cmd">
env WINEPREFIX=&quot;$HOME/.wine&quot; wine &quot;C:\Program Files\Sybase\PowerDesigner 15\pdshell15.exe&quot;
</pre>
<p>
另外一种方法是在Linux wine 下安装VC80 支持，然后在Linux 下运行安装程序。 
</p>
<h4>在Linux 下进行安装</h4>
<p>
NOTE: 命令中跟在＃后面的是注释文本&nbsp; 
</p>
<p>
在运行安装程序之前，按照自己的需求先准备好如下环境： 
</p>
<ul>
	<li>隔离的wine 环境</li>
	<li>.Net FrameWork 2.0 Support<br />
	</li>
	<li>VB Script Support<br />
	</li>
	<ul>
		<li>VBScript 5.6</li>
		<li>Vitual C++ 2005 support</li>
	</ul>
	<li>VC80 dll support （必需）</li>
	<ul>
		<li>Microsoft.VC80.CRT.manifest</li>
		<li>msvcm80.dll</li>
		<li>msvcp80.dll</li>
		<li>msvcr80.dll</li>
	</ul>
	<li>Connection Profile Support（可在安装完成之后进行）</li>
	<ul>
		<li>Sun JRE 1.4.2<br />
		</li>
		<li>DB2 JDBC Type 4 Driver - db2jcc.jar</li>
	</ul>
</ul>
<h5>隔离的wine 环境 </h5>
<p>
此步为可选。 
</p>
<p>
NOTE：如果省略这一步，请替换下面各节命令中的路径.winePD/ 为.wine/ 
</p>
<p>
如果不希望影响原有的wine 环境，或者用于测试，可以为PowerDesigner 新建一个独立的wine 目录。 
</p>
<pre class="cmd">
$ wineprefixcreate --prefix $HOME/.winePD  $ export WINEPREFIX=&quot;$HOME/.winePD&quot; 
</pre>
<h5>.Net FrameWork 2.0 Support </h5>
<p>
这一步是可选。 
</p>
<p>
PowerDesigner 在Beta 2中引入了.Net FrameWork 2.0 支持，用于更漂亮的模型自动排版功能，如果希望使用需要先安装.Net 2.0 ，但.Net 2.0需要IE 5.0以上支持，安装IE 6 可以参考<a href="http://appdb.winehq.org/objectManager.php?sClass=version&amp;iId=469"> Wine AppDB - Internet Explorer 6.0</a>，经过尝试是可行的。 
</p>
<p>
IE 6.0安装好之后到MS 网站下载.Net 2.0 安装文件 dotnetfx.exe，放至 $HOME/.winePD/drive_c/，运行安装文件完成安装。 
</p>
<pre class="cmd">
$ wine &quot;c:\dotnetfx.exe&quot;
</pre>
<h5>VB Script Support </h5>
<p>
这一步是可选。 
</p>
<p>
首先到MS 网站下载合适版本的VB Script 安装文件：WindowsXP-Windows2000-Script56-KB917344-x86-chs.exe 
</p>
<p>
安装过程参考 <a href="http://appdb.winehq.org/appview.php?iVersionId=1325">Wine AppDB - Visual Basic 6.0 Enterprise Edition</a>，所不同之处是安装的文件不一样。 
</p>
<p>
NOTE: 下面的/win/目录是我的 Windows XP安装分区。 
</p>
<pre class="cmd">
$ winecfg # add libraries overwrite; set OS to Windows ME; $ cd .winePD/drive_c/windows/system32/$ for i in riched20.dll riched32.dll oleaut32.dll urlmon.dll hhctrl.ocx ; do mv $i $i.bak; done	$ for i in riched20.dll riched32.dll oleaut32.dll urlmon.dll hhctrl.ocx ; do cp /win/windows/system32/$i .; done$ cp /win/windows/system32/mfc42.dll .winePD/drive_c/windows/system32$ wine &quot;c:\WindowsXP-Windows2000-Script56-KB917344-x86-chs.exe&quot;$ winecfg # set OS back to Windows XP
</pre>
<h5>VC80 dll support </h5>
<p>
这一步必需完成以运行PowerDesigner 15 Beta 2 安装程序。 
</p>
<p>
在网上下载msvbvm60.dll 和MS-VC80.MSI ，还需要去MS 网站下载Vitual C++ 2005 support 安装文件 vcredist_x86.exe。然后参考以下步骤完成安装。 
</p>
<pre class="cmd">
$  cp Desktop/msvbvm60.dll .winePD/drive_c/windows/system32$  msiexec /i &quot;c:\MS-VC80.MSI&quot;$  wine &quot;c:\vcredist_x86.exe&quot;$  ls .winePD/drive_c/windows/winsxs/ # 确认vcredist_x86.exe 安装成功
</pre>
<h5>Connection Profile Support</h5>
<p>
这一步是可选。 
</p>
<p>
PowerDesigner 当中支持对数据库的连接，这是通过ODBC 驱动程序实现的，此外，PowerDeisnger也加入了对JDBC 驱动程序的支持，其称作Connection Profile。在Linux 下为wine 程序配置ODBC，我没有经验，可能需要安装MDAC，而通过JDBC则比较容易实现。对于DB2 类型的数据库，IBM 提供一种TYPE 4的JDBC 驱动程序，可以不需要在连接的客户端安装DB2 Client，仅仅拥有TYPE 4驱动程序以及JRE 支持即可。下面的配置就是通过在wine 中配置JRE 以及DB2 JDBC TYPE 4 驱动程序来实现在PowerDesigner 中对DB2 数据库的访问。 
</p>
<p>
NOTE：Linux 世界中的libiodbc 和unixODBC 并不适用这个场景，其提供的ODBC 数据源并不是为wine 程序使用的。 
</p>
<p>
首先需要下载Sun 的JRE安装程序（<a href="https://cds.sun.com/is-bin/INTERSHOP.enfinity/WFS/CDS-CDS_Developer-Site/en_US/-/USD/ViewProductDetail-Start?ProductRef=j2re-1.4.2_18-oth-JPR@CDS-CDS_Developer">1.4.2</a> for windows）<a href="https://cds.sun.com/is-bin/INTERSHOP.enfinity/WFS/CDS-CDS_Developer-Site/en_US/-/USD/ViewProductDetail-Start?ProductRef=j2re-1.4.2_18-oth-JPR@CDS-CDS_Developer"></a> 和IBM 的DB2 JDBC TYPE 4 驱动程序（跨平台）。 
</p>
<p>
NOTE：IBM 的JRE 安装程序会检测ibmpc 系统兼容性，我在wine中无法通过检测（甚至在vmware 这样的虚拟机中也不行），具体原因不知道，导致安装失败，因此选择Sun的JRE。 
</p>
<pre class="cmd">
$ winecfg # 在Libraries 中将 urlmon 临时改为 Builtin$ wine &quot;c:\j2re-1_4_2_18-windows-i586-p.exe&quot;$ winecfg # 在Libraries 中将 urlmon 改回 Native$ mkdir ~/.winePD/drive_c/db2java$ cp /opt/IBM/db2/V8.1/java/db2jcc_license_cu.jar ~/.winePD/drive_c/db2java/$ cp /opt/IBM/db2/V8.1/java/db2jcc.jar ~/.winePD/drive_c/db2java/
</pre>
<p>
运行wine regedit，找到key： 
</p>
<p>
[HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\Session Manager\Environmen] 
</p>
<p>
添加或者修改以下2个键值: 
</p>
<pre class="code">
CLASSPATH=C:\db2java\db2jcc.jar;C:\db2java\db2jcc_license_cu.jar;. PATH=C:\windows\system32;C:\windows;C:\Program Files\Java\j2re1.4.2_18\bin 
</pre>
<pre class="cmd">
$ regedit ＃add values to CLASSPATH , PATH
</pre>
<h5>开始安装PowerDesigner 15 Beta 2</h5>
<p>
下面开始真正安装PowerDesigner。 
</p>
<pre class="cmd">
$ winecfg # 在Libraries 中将 oleaut32 临时改为 Builtin$ wine &quot;c:\PowerDesigner15.exe&quot;$ winecfg # 在Libraries 中将 oldaut32 改回 Native$ wine &quot;C:\Program Files\Sybase\PowerDesigner 15\pdshell15.exe&quot;
</pre>
<p>
整个安装过程应该很顺畅，如果遇到问题，可以重头检查一下必需的步骤。 
</p>
<h4>测试VB Script</h4>
<p>
执行Tools - Execute Commands - Edit/Run Script，在代码编辑框中写入一句简单的VB Script代码，比如: &quot;dim s&quot;，然后点击Run，如果没有任何错误弹出，说明VB Script 支持正常。 
</p>
<h4>测试Connection Profile</h4>
<p>
在File 菜单中点击 Revers Engineer - Databases，选择IBM DB2 UDB 8.x Common Server - Using a datasource，浏览datasource，选择Connection Profile，Configure 一个新的数据库连接。 
</p>
<p>
点击Test Connection，如果出错，查看output (alt+1)中的messages，有助于解决问题。 
</p>
<h4>TroubleShooting</h4>
<h5>Could not find dependent assembly L&quot;Microsoft.VC80.CRT&quot; (On running PowerDesigner.exe)</h5>
<p>
解决方法：安装VC80 dll support。 
</p>
<h5>Runtime error: R6034 - An application has made an attempt to load the C runtime library incorrectly (On running PowerDesigner.exe)</h5>
<p>
解决方法：安装VC80 dll support。 
</p>
<h5>Failed to load DLL: pdflm15 (On running PowerDesigner.exe) </h5>
<p>
解决方法：安装VC80 dll support。 
</p>
<h5>err:module:import_dll Library MSVBVM60.DLL (which is needed by ... </h5>
<p>
解决方法：在Windows 安装中复制msvbvm60.dll 或者网上下载到wine 的system32 目录。 
</p>
<h5>err:module:import_dll Library MFC42.DLL (which is needed by L&quot;C:\\windows\\system32\\vbscript.dll&quot;) not found （On Installing VBScript.exe)</h5>
<p>
解决方法：在Windows 安装中复制mfc42.dll 或者网上下载到wine 的system32 目录。 
</p>
<h5>Required property &quot;serverName&quot; is unknown host</h5>
<p>
解决方法：检查网络连接，服务器设置，服务器地址，端口，数据库名称等。 
</p>
<h5>Non SQL Error : Could not load class com.ibm.db2.jcc.DB2Driver。 </h5>
<p>
解决方法：检查wine 注册表中CLASSPATH 是否包含正确的db2jcc.jar 全路径，注册表修改之后，应该重新运行PowerDesigner 应用程序。 
</p>
<h5>Could not Initialize JavaVM! <br />
</h5>
<p>
解决方法：检查wine 注册表中PATH 是否包含正确的到JRE bin 路径，注册表修改之后，应该重新运行PowerDesigner 应用程序。 
</p>
<h4>参考资料</h4>
<ul>
	<li><a href="http://www.sybase.com/detail_list?id=11662&amp;multi=true&amp;SR=Y&amp;show=1249">Sybase PowerDesigner Downlaod</a> (current version 12.5)<br />
	PowerDesigner 版本15 目前的Beta 2 版本还在测试当中，估计过些日子在Sysbase网站就会有正式版的评估版本供下载。 </li>
	<li><a href="http://appdb.winehq.org/objectManager.php?sClass=version&amp;iId=469">Wine AppDB - Internet Explorer 6.0</a></li>
	<li><a href="http://appdb.winehq.org/appview.php?iVersionId=1325">Wine AppDB - Visual Basic 6.0 Enterprise Edition</a></li>
</ul>
<h4>延展阅读</h4>
<ul>
	<li><a id="viewpost1_TitleUrl" href="http://www.blogjava.net/canonical/archive/2008/01/06/173154.html">关系模型与ORM</a></li>
	<li><a href="http://www.aiview.com/2004/07/power_designer_tips.html">Power Designer 使用笔记</a></li>
</ul>
<p>
&nbsp;
</p>
]]>
        
    </content>
</entry>

<entry>
    <title>奥运会第三阶段剩余门票查询</title>
    <link rel="alternate" type="text/html" href="http://www.aiview.com/2008/05/beijing2008_tickets.html" />
    <id>tag:www.aiview.com,2008://1.981</id>

    <published>2008-05-07T01:48:31Z</published>
    <updated>2008-05-14T05:55:53Z</updated>

    <summary>每日更新：所有项目剩余门票。 信息来源于：北京奥运官方票务网站页面，仅供参考。 更新 2008-05-14 使用“有票可售&quot;作为状态提取关键字，使结果更为准确。 旧版本使用“最佳可选”作为关键字，因为无票的查询结果会有两种样式的页面，所以旧版本会将一些没有票的场次也列出来。...</summary>
    <author>
        <name>Alex</name>
        
    </author>
    
        <category term="Sports" scheme="http://www.sixapart.com/ns/types#category" />
    
    <category term="奥运门票" label="奥运门票" scheme="http://www.sixapart.com/ns/types#tag" />
    
    <content type="html" xml:lang="en" xml:base="http://www.aiview.com/">
        <![CDATA[<p>每日更新：<a href="/ref/2008/05/bjo_tickets.html">所有项目剩余门票</a>。</p>

<p>信息来源于：<a href="http://www.tickets.beijing2008.cn">北京奥运官方票务网站</a>页面，仅供参考。</p>

<h4>更新 2008-05-14</h4>
使用“有票可售"作为状态提取关键字，使结果更为准确。
旧版本使用“最佳可选”作为关键字，因为无票的查询结果会有两种样式的页面，所以旧版本会将一些没有票的场次也列出来。
]]>
        
    </content>
</entry>

<entry>
    <title>Gentoo Linux: 我安装的软件</title>
    <link rel="alternate" type="text/html" href="http://www.aiview.com/2008/04/gentoo_linux_apps_on_my_box.html" />
    <id>tag:www.aiview.com,2008://1.972</id>

    <published>2008-04-09T14:14:58Z</published>
    <updated>2008-11-05T18:54:59Z</updated>

    <summary><![CDATA[ 经过一段时间的磨合，Gentoo Linux使用起来已经很顺手，下面是我对一些常用软件的选择，采用与Windows 平台对照的方式列出。每一种软件Linux 下可能都有很多种选择，有的我进行过对比，有的直接就采用了我认为最合适的。 我的评论可能会比较主观，欢迎讨论！ 用途／Windows 软件 Linux 软件 支持情况 MSN, Gtalk, Netmeeting, QQ, ICQ Pidgin-2.4.0 (old Gaim) 不支持语音、视频、群聊、Netmeeting Gtalk: check SSL option in advanced tab page, mail notification works! Kopete 功能丰富，支持视频、群聊、Netmeeting，但在我的环境经常crash，基本不用。 浏览器 Firefox &nbsp; Skype Linux 版 官方二进制代码发布...]]></summary>
    <author>
        <name>Alex</name>
        
    </author>
    
        <category term="Linux" scheme="http://www.sixapart.com/ns/types#category" />
    
    <category term="gentoo" label="gentoo" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="linux" label="linux" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="软件" label="软件" scheme="http://www.sixapart.com/ns/types#tag" />
    
    <content type="html" xml:lang="en" xml:base="http://www.aiview.com/">
        <![CDATA[<p>
经过一段时间的磨合，Gentoo Linux使用起来已经很顺手，下面是我对一些常用软件的选择，采用与Windows 平台对照的方式列出。每一种软件Linux 下可能都有很多种选择，有的我进行过对比，有的直接就采用了我认为最合适的。
我的评论可能会比较主观，欢迎讨论！ 
</p>
<table border="1" cellspacing="0" cellpadding="0" width="899" height="1198">
	<tbody>
		<tr>
			<td>用途／Windows 软件<br />
			</td>
			<td>Linux 软件 </td>
			<td>支持情况<br />
			</td>
		</tr>
		<tr>
			<td rowspan="2">MSN, Gtalk, Netmeeting, QQ, ICQ </td>
			<td>Pidgin-2.4.0 (old Gaim) <br />
			</td>
			<td>
			<p>
			不支持语音、视频、群聊、Netmeeting
			</p>
			<p>
			Gtalk: check SSL option in advanced tab page, mail notification works! 
			</p>
			</td>
		</tr>
		<tr>
			<td>Kopete <br />
			</td>
			<td>功能丰富，支持视频、群聊、Netmeeting，但在我的环境经常crash，基本不用。</td>
		</tr>
		<tr>
			<td>浏览器<br />
			</td>
			<td>Firefox <br />
			</td>
			<td>&nbsp;</td>
		</tr>
		<tr>
			<td>Skype <br />
			</td>
			<td>Linux 版 <br />
			</td>
			<td>官方二进制代码发布<br />
			</td>
		</tr>
		<tr>
			<td>图片浏览<br />
			</td>
			<td>Gpicview</td>
			<td>比gThumb更轻量化，用于不想启动Picasa 时<br />
			</td>
		</tr>
		<tr>
			<td>Picasa <br />
			</td>
			<td>Linux 版</td>
			<td>通过Google 内部优化版wine支持 <br />
			</td>
		</tr>
		<tr>
			<td>GoogleEarth <br />
			</td>
			<td>Linux 版<br />
			</td>
			<td>T43 上速度很慢，可能是我配置的问题（Windows 版很快） <br />
			</td>
		</tr>
		<tr>
			<td>MS Office <br />
			</td>
			<td>OpenOffice <br />
			</td>
			<td>&nbsp;</td>
		</tr>
		<tr>
			<td>Lotus Notes <br />
			</td>
			<td>
			<p>
			Linux 版 
			</p>
			</td>
			<td>T43 的配置运行Notes 7比较合适，版本8界面响应迟钝 <br />
			</td>
		</tr>
		<tr>
			<td>光盘刻录<br />
			</td>
			<td>Brasero<br />
			</td>
			<td>Brasero 比Gnomebaker 更成熟易用 <br />
			</td>
		</tr>
		<tr>
			<td>TotalCommander <br />
			</td>
			<td>Krusader <br />
			</td>
			<td>配合diff、打包压缩等工具</td>
		</tr>
		<tr>
			<td>文本编辑器（开发）UltraEdit
			</td>
			<td>Emacs <br />
			</td>
			<td><a href="http://www.aiview.com/2008/02/emacs_study_notes.html" title="Tags: emacs, study notes ">emacs 学习笔记</a> <br />
			</td>
		</tr>
		<tr>
			<td>文本编辑器（普通）&nbsp;&nbsp;&nbsp;<br />
			</td>
			<td>gedit <br />
			</td>
			<td>&nbsp;</td>
		</tr>
		<tr>
			<td>P2P <br />
			</td>
			<td>aMule <br />
			</td>
			<td>&nbsp;</td>
		</tr>
		<tr>
			<td>金山词霸</td>
			<td>StarDict <br />
			</td>
			<td>单词朗读可通过任何语音合成软件支持，比如：festival, WyabdcRealPeopleTTS </td>
		</tr>
		<tr>
			<td>中文输入法<br />
			</td>
			<td>Scim <br />
			</td>
			<td><a href="http://www.aiview.com/2008/01/gentoo_linux_on_t43_6_chinese_environment.html" title="Tags: chinese, gentoo, linux, locale, t43, thinkpad, 中文 ">Gentoo Linux on T43 (6) 中文环境</a> <br />
			</td>
		</tr>
		<tr>
			<td>Adobe Reader（PDF） <br />
			</td>
			<td>kpdf <br />
			</td>
			<td>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</td>
		</tr>
		<tr>
			<td>Windows 远程桌面 <br />
			</td>
			<td>grdesktop<br />
			</td>
			<td><a href="http://pinker.vicp.net/?p=46">Howto: linux远程连接windows | 品可的blog</a>&nbsp;
			<br />
			</td>
		</tr>
		<tr>
			<td>MS AcitveSync (PDA) <br />
			</td>
			<td>&nbsp;<br />
			</td>
			<td>&nbsp;</td>
		</tr>
		<tr>
			<td rowspan="2">BeyondCompare（文本比较）</td>
			<td>
			<p>
			Meld 
			</p>
			</td>
			<td>&nbsp;</td>
		</tr>
		<tr>
			<td>wine + BeyondCompare </td>
			<td>用过的最好的文本比较工具<br />
			</td>
		</tr>
		<tr>
			<td rowspan="3">分区魔法师 PQ Magic</td>
			<td>
			<p>
			GParted 
			</p>
			</td>
			<td>不支持系统分区调整，支持Windows 扩展分区resize<br />
			</td>
		</tr>
		<tr>
			<td>QTParted&nbsp; <br />
			</td>
			<td>未测试<br />
			</td>
		</tr>
		<tr>
			<td>fdisk 手工修改分区表<br />
			</td>
			<td>&nbsp;</td>
		</tr>
		<tr>
			<td rowspan="2">股票<br />
			</td>
			<td>Gnome Invest Applet <br />
			</td>
			<td>使用Yahoo 数据，支持国外以及国内股票查询，可查看均线图<br />
			</td>
		</tr>
		<tr>
			<td>wine 0.9.60 + 招商证券全能版 v6.27(已升级至v6.33) （通信达软件）<br />
			</td>
			<td>
			<p>
			行情与交易，除菜单条与右键菜单中文乱码，其它正常。
			</p>
			<p>
			如果旧的wine 版本需要打补丁： <a href="http://tech.ccidnet.com/art/302/20080321/1397347_1.html">Wine安装一些Windows软件的错误以及处理</a>
			</p>
			</td>
		</tr>
		<tr>
			<td>HDAPS <br />
			</td>
			<td>tp_smapi, hdapsd, gnome_hdaps_applet <br />
			</td>
			<td>支持一块硬盘<br />
			<a href="http://www.aiview.com/2008/01/gentoo_linux_on_t43_9_hdaps.html" title="Tags: gentoo, hdaps, linux, t43, thinkpad ">Gentoo Linux on T43 (9) HDAPS 硬盘动态保护系统</a><br />
			</td>
		</tr>
		<tr>
			<td>RamDisk<br />
			</td>
			<td>tmpfs <br />
			</td>
			<td><a href="http://www.aiview.com/2008/02/gentoo_linux_on_t43_14_ramdisk.html">Gentoo Linux on T43 (14) 内存虚拟盘加速系统</a> <br />
			</td>
		</tr>
		<tr>
			<td rowspan="2">TTS 语音合成 <br />
			</td>
			<td>festival </td>
			<td>语音合成<br />
			</td>
		</tr>
		<tr>
			<td>WyabdcRealPeopleTTS</td>
			<td>真人发声<br />
			</td>
		</tr>
		<tr>
			<td>蓝牙<br />
			</td>
			<td>
			<p>
			bluez-utils<br />
			bluez-gnome<br />
			gnome-bluetooth
			</p>
			</td>
			<td>GUI文件发送／接收<br />
			<a href="http://www.aiview.com/2008/11/gentoo_linux_on_t43_16_bluetooth.html" title="Tags: bluetooth, gentoo, linux, t43, 蓝牙 ">Gentoo Linux on T43 (16) 蓝牙传输文件</a><br />
			</td>
		</tr>
		<tr>
			<td>VGA 输出</td>
			<td>xrandr</td>
			<td><a href="http://www.aiview.com/2008/11/gentoo_linux_on_t43_17_vga-out.html" title="Tags: gentoo, linux, t43, VGA-Out ">Gentoo Linux on T43 (17) VGA输出</a> <br />
			</td>
		</tr>
		<tr>
			<td>红外<br />
			</td>
			<td>&nbsp;</td>
			<td>&nbsp;</td>
		</tr>
		<tr>
			<td>网上银行<br />
			</td>
			<td>Firefox <br />
			</td>
			<td>上海浦发银行动态密码网银（支持Firefox）
			</td>
		</tr>
		<tr>
			<td>淘宝／支付宝<br />
			</td>
			<td>Firefox + alipay安全控件 <br />
			</td>
			<td>淘宝、支付宝支持Firefox，但支付宝不支持数字证书（2008-11-06更新）<br />
			<a href="http://blog.alipay.com/301.html" title="支付宝针对 Linux 下 Firefox 的安全控件 _ 支付志">支付宝针对 Linux 下 Firefox 的安全控件</a><br />
			</td>
		</tr>
		<tr>
			<td>Thinkpad 指纹识别 <br />
			</td>
			<td>thinkfinger-0.3 <br />
			</td>
			<td><a href="http://www.aiview.com/2008/01/gentoo_linux_on_t43_10_fingerprint_reader.html">Gentoo Linux on T43 (10) Fingerprint Reader 指纹认证</a>&nbsp;
			<br />
			</td>
		</tr>
		<tr>
			<td>Intel CPU StepSpeed <br />
			</td>
			<td>acpi-cpufreq (kernel)</td>
			<td>在我的T43 上当温度上升到60度左右，便强制降频到800MHz，目前已禁用</td>
		</tr>
		<tr>
			<td>Web Java applet<br />
			</td>
			<td>USE: nsplugin <br />
			java<br />
			</td>
			<td><a href="http://www.aiview.com/2008/01/gentoo_linux_on_t43_12_java_environment.html">Gentoo Linux on T43 (12) Java 环境</a>&nbsp;
			<br />
			</td>
		</tr>
		<tr>
			<td>数据恢复/FinalData</td>
			<td>TestDisk <br />
			</td>
			<td><a href="http://www.aiview.com/2008/03/testdisk_recover_my_partition_table.html" title="Tags: partition table, testdisk ">TestDisk 找回丢失的硬盘分区表</a> <br />
			</td>
		</tr>
		<tr>
			<td>Thinkpad 热键 <br />
			</td>
			<td>thinkpad-acpi (kernel) + acpid<br />
			</td>
			<td><a href="http://www.aiview.com/2008/03/gentoo_linux_on_t43_15_fn_keys.html" title="Tags: Fn, gentoo, linux, t43, thinkpad ">Gentoo Linux on T43 (15) Fn + Keys</a> <br />
			</td>
		</tr>
		<tr>
			<td>鼠标键盘即插即用<br />
			</td>
			<td>hal-0.5.10<br />
			xf86-input-evdev-1.2.0<br />
			xorg-server-1.4.0</td>
			<td><a href="http://forums.gentoo.org/viewtopic-t-641870-start-0.html?sid=95bb661a51943968eefe49cbb144fc5b">Gentoo Forums :: 阅读主题 - x11-drivers/xf86-input-evdev-1.2.0 keyboard problem</a>&nbsp;
			<a href="http://www.aiview.com/2008/03/xorg_allows_hotplug.html"><br />
			Linux 支持鼠标、键盘即插即用</a> <br />
			</td>
		</tr>
		<tr>
			<td>虚拟机VMWare<br />
			</td>
			<td>VirtualBox<br />
			VMWare
			</td>
			<td>
			<p>
			VirtualBox 是开源项目，可以在物理Windows 安装之上直接建立vmdk虚拟机（Portage 版本不支持vmdk，到VirtualBox 项目主页自行下载）。 
			</p>
			</td>
		</tr>
		<tr>
			<td>PowerDesigner 15 Beta 2 <br />
			</td>
			<td>wine 1.1.0 +&nbsp;PowerDesigner 15 Beta 2</td>
			<td><a href="http://www.aiview.com/2008/07/powerdesigner_15_beta_2_under_linux.html">在linux 下运行PowerDesigner 15 Beta 2</a>&nbsp;
			<br />
			</td>
		</tr>
	</tbody>
</table>
<h4>参考资源</h4>
<ul>
	<li><a href="http://www.linuxrsp.ru/win-lin-soft/table-eng.html">Windows 软件类似替代列表</a>&nbsp; <br />
	</li>
</ul>
]]>
        
    </content>
</entry>

<entry>
    <title>Gentoo Linux on T43 (15) Fn + Keys</title>
    <link rel="alternate" type="text/html" href="http://www.aiview.com/2008/03/gentoo_linux_on_t43_15_fn_keys.html" />
    <id>tag:www.aiview.com,2008://1.980</id>

    <published>2008-03-30T18:04:42Z</published>
    <updated>2008-11-05T17:54:59Z</updated>

    <summary> 对于Linux 对Thinkpad Fn 组合键的支持的了解一直比较模糊，有很多内核中的支持以及软件包，不太清楚具体的分工以及关系，今天查阅了一些资料，试图清理一下自己的思路，也把自己的配置共享一下。 下面给一些包及内核Module加一些注释： 内核Thinkpad ACPI 在2.6.20 中叫做IBM ACPI，这里是它的项目主页。如果编译为module，名字为thinkpad_acpi，它的功能是把Fn 组合按键的事件export 到/proc/acpi（在kernel-2.6.24 中应该选择此项：[*] Deprecated /proc/acpi/event support ），但其并不负责处理事件，需要其它userspace 程序来处理。 app-laptop/tp_smapi 来自Tpctl 项目 ，将thinkpad 硬件的信息export 到sysfs，供其它程序使用，目前主要实现了电池管理和HDAPS的功能。Fn keys应该不需要这个软件包，但我一直使用patched kernel + tp_smapi 来驱动HDAPS。 包含moduels： hdaps thinkpad_ec tp_smapi app-laptop/thinkpad 也来自Tpctl 项目 ，但目前已经被上面的tp_smapi 所取代，除非使用很古老的笔记本（before 2001），应该不需要这个软件包。...</summary>
    <author>
        <name>Alex</name>
        
    </author>
    
        <category term="Linux" scheme="http://www.sixapart.com/ns/types#category" />
    
        <category term="Thinkpad and PDA" scheme="http://www.sixapart.com/ns/types#category" />
    
    <category term="fn" label="Fn" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="gentoo" label="gentoo" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="linux" label="linux" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="t43" label="T43" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="thinkpad" label="Thinkpad" scheme="http://www.sixapart.com/ns/types#tag" />
    
    <content type="html" xml:lang="en" xml:base="http://www.aiview.com/">
        <![CDATA[<p>
对于Linux 对Thinkpad Fn 组合键的支持的了解一直比较模糊，有很多内核中的支持以及软件包，不太清楚具体的分工以及关系，今天查阅了一些资料，试图清理一下自己的思路，也把自己的配置共享一下。
</p>
<p>
下面给一些包及内核Module加一些注释：
</p>
<h4>内核Thinkpad ACPI</h4>
<p>
在2.6.20 中叫做IBM ACPI，这里是它的<a href="http://ibm-acpi.sourceforge.net/">项目主页</a>。如果编译为module，名字为thinkpad_acpi，它的功能是把Fn 组合按键的事件export 到/proc/acpi（在kernel-2.6.24 中应该选择此项：[*]   Deprecated /proc/acpi/event support ），但其并不负责处理事件，需要其它userspace 程序来处理。
</p>
<h4>app-laptop/tp_smapi</h4>
<p>
来自<a href="http://tpctl.sourceforge.net/">Tpctl 项目</a> ，将thinkpad 硬件的信息export 到sysfs，供其它程序使用，目前主要实现了电池管理和HDAPS的功能。Fn keys应该不需要这个软件包，但我一直使用patched kernel + tp_smapi 来驱动HDAPS。
</p>
<p>
包含moduels：
</p>
<pre class="output">
hdaps
thinkpad_ec
tp_smapi
</pre>
<h4>app-laptop/thinkpad</h4>
<p>
也来自<a href="http://tpctl.sourceforge.net/">Tpctl 项目</a> ，但目前已经被上面的tp_smapi 所取代，除非使用很古老的笔记本（before 2001），应该不需要这个软件包。
</p>
<h4>sys-power/acpid</h4>
<p>
<a href="http://acpid.sourceforge.net">acpid</a>需要配合thinkpad-acpi使用，它默认读取/proc/acpi/event 中的条目，并将其传递给事件处理脚本，作出相应动作，比如关闭屏幕、待机等。 这些条目由/etc/acpi/events/default 捕获，并传递给/etc/acpi/default.sh 处理，但默认的/etc/acpi/default.sh 功能十分有限，必须自己修改。
</p>
<h4>配置Fn＋Keys<br />
</h4>
<p>
这里已经<a href="http://www2.informatik.hu-berlin.de/~pilop/HOWTO_Gentoo_T43/#ACPI-handler">有人写好了一些常用脚本</a>，我根据他的内容整理了一份<a href="/ref/2008/03/default.sh">default.sh</a>，目前可以处理Fn+F3(关屏), Fn+F4(Suspend to ram), Fn+F5(开关蓝牙), Fn+F6(开关wifi)，Fn+F7(Toggle VGA-out)，Fn+F12(Suspend to disk) 。这个脚本会用到radeontool，如果系统没有这么命令，merge它（也可以使用xset，但需要自己更改default.sh）。
</p>
<pre class="cmd">
# emerge -av1 radeontool
</pre>
<p>
另外，我注释了脚本中的xosd 命令，如果你有GUI 程序需要显示Fn控制程序的状态，那么可以去掉注释（需要merge xosd）
</p>
<h4>调试 <br />
</h4>
<p>
共享一下调试Fn 组合键的方法，thinkpad_acpi 会将按键事件写入/proc/acpi/event，但acpid 运行时我们无法读取这个文件，先停掉服务：
</p>
<pre class="cmd">
# /etc/init.d/acpid stop
</pre>
<p>
然后cat这个文件（确保module thinkpad_acpi 已经装载，或者内建在内核）
</p>
<pre class="cmd">
# cat /proc/acpi/event
</pre>
<p>
接着按Fn 组合键，console 中会打印出事件条目，括号中是我的注释。default.sh 将解析这些条目，并调用不同的命令进行处理。
</p>
<pre class="output">
ibm/hotkey HKEY 00000080 00001001 (Fn+F1)
ibm/hotkey HKEY 00000080 00001002 (Fn+..)
ibm/hotkey HKEY 00000080 00001003
ibm/hotkey HKEY 00000080 00001004
ibm/hotkey HKEY 00000080 00001005
ibm/hotkey HKEY 00000080 00001006
ibm/hotkey HKEY 00000080 00001007
ibm/hotkey HKEY 00000080 00001008
ibm/hotkey HKEY 00000080 00001009
ibm/hotkey HKEY 00000080 0000100a
ibm/hotkey HKEY 00000080 0000100b
ibm/hotkey HKEY 00000080 0000100c (Fn+F12)
ibm/hotkey HKEY 00000080 00001018 (Access IBM)
ibm/hotkey HKEY 00000080 00001014 (Fn+Space)
</pre>
<p>
在我这里，调整屏幕亮度、屏幕灯、音量几个按键thinkpad_acpi 似乎是捕获不到的，event 没有输出，但功能正常，是不是xmodmap 处理了？
</p>
<p>
另外，内核中还有一个ACPI Button 支持，如果编译为module，在rmmod thinkpad_acpi之后，并且已经装在button，诸如Fn+F4 的事件会被其捕获，同样写入/proc/acpi/event：
</p>
<pre class="output">
button/sleep SLPB 00000080 00000001
button/sleep SLPB 00000080 00000002
</pre>
<h4>下载</h4>
<p>
使用<a href="/ref/2008/03/default.sh">default.sh</a> 覆盖acpid 默认的文件/etc/acpi/default.sh 即可，/etc/acpi/events/default 不用更改。
</p>
<p class="emphasis">
更新了default.sh，加入了toggleVGA-out 的脚本。（2008-11-06）
</p>
<h4>更新 2008-04-09&nbsp;</h4>
<p>
今天偶然发现hal (0.5.10)中已经包含全系列thinkpad 型号hotkey的policy 配置文件，包括最新的T/X 6系列，这个文件位于：/usr/share/hal/fdi/information/10freedesktop/30-keymap-module-thinkpad-acpi.fdi，对于T4&nbsp; 系列，有如下定义：
</p>
<pre class="code">
&lt;match key=&quot;/org/freedesktop/Hal/devices/computer:system.hardware.version&quot; contains=&quot;T4&quot;&gt;
&lt;append key=&quot;input.keymap.data&quot; type=&quot;strlist&quot;&gt;0x02:screenlock&lt;/append&gt; &lt;!-- Fn+F3 lock --&gt;
&lt;append key=&quot;input.keymap.data&quot; type=&quot;strlist&quot;&gt;0x03:sleep&lt;/append&gt; &lt;!-- Fn+F4 suspend --&gt;
&lt;append key=&quot;input.keymap.data&quot; type=&quot;strlist&quot;&gt;0x04:radio&lt;/append&gt; &lt;!-- Fn+F5 switch radio --&gt;
&lt;append key=&quot;input.keymap.data&quot; type=&quot;strlist&quot;&gt;0x06:switchvideomode&lt;/append&gt; &lt;!-- Fn+F7 switch video output device --&gt;
&lt;append key=&quot;input.keymap.data&quot; type=&quot;strlist&quot;&gt;0x0b:suspend&lt;/append&gt; &lt;!-- Fn+F12 hibernate --&gt;
&lt;append key=&quot;input.keymap.data&quot; type=&quot;strlist&quot;&gt;0x0f:brightnessup&lt;/append&gt; &lt;!-- Fn+Home --&gt;
&lt;append key=&quot;input.keymap.data&quot; type=&quot;strlist&quot;&gt;0x10:brightnessdown&lt;/append&gt; &lt;!-- Fn+End --&gt;
&lt;append key=&quot;input.keymap.data&quot; type=&quot;strlist&quot;&gt;0x13:zoom&lt;/append&gt; &lt;!-- Fn+Space --&gt;
&lt;append key=&quot;input.keymap.data&quot; type=&quot;strlist&quot;&gt;0x17:vendor&lt;/append&gt; &lt;!-- ThinkPad/ThinkVantage button --&gt;
&lt;append key=&quot;info.capabilities&quot; type=&quot;strlist&quot;&gt;input.keymap&lt;/append&gt;
&lt;/match&gt; 
</pre>
<p>
我猜想如果使用这个配置文件，应该可以免去上面手工配置Fn keys的步骤，或者不再使用/proc/acpi/event 这个interface，代之使用经由hal 提供的事件绑定？
</p>
<p>
尝试将其copy 至/etc/hal/fdi/policy 或者/usr/share/hal/fdi/policy/10osvendor，然后重启/etc/init.d/hald 服务，同时关闭了可能与其冲突的acpid 服务，但并没有预期的作用。查看lshal，似乎也都符合配置文件：
</p>
<pre class="cmd">
$ lshal |grep input.product 
</pre>
<pre class="output">
  input.product = &#39;ThinkPad Extra Buttons&#39;  (string)
...
</pre>
<pre class="cmd">
$ lshal |grep system.hardware.vendor
</pre>
<pre class="output">
  system.hardware.vendor = &#39;IBM&#39;  (string)
</pre>
<pre class="cmd">
$ lshal |grep system.hardware.version
</pre>
<pre class="output">
  system.hardware.version = &#39;ThinkPad T43&#39;  (string)
</pre>
<p>
继续关注这个问题。
</p>
<p>
下面添加了一篇Gentoo 配置的参考文章。
</p>
<h4>延展阅读</h4>
<ul>
	<li><a href="http://www2.informatik.hu-berlin.de/%7Epilop/HOWTO_Gentoo_T43/#download">DE.STRUCTION:private - Gentoo on IBM ThinkPad T43</a> （参考其事件处理脚本）</li>
	<li><a href="http://www.thinkwiki.org/wiki/How_to_get_special_keys_to_work" title="How to get special keys to work">How to setup/configure the extra keys</a></li>
	<li><a href="http://www.linuxsir.org/bbs/lastpostinthread313431.html" target="_blank" onmousedown="return clk(0,'','','res','1','')">[分享]在IBM ThinkPad X41上安装Gentoo全记录!（第二部分）</a>（一篇不错的参考）</li>
	<li><a href="http://www.aiview.com/2008/11/gentoo_linux_on_t43_17_vga-out.html" title="Tags: gentoo, linux, VGA-Out ">Gentoo Linux on T43 (17) VGA输出</a></li>
	<li><a href="http://www.aiview.com/2008/11/gentoo_linux_on_t43_16_bluetooth.html" title="Tags: bluetooth, gentoo, linux, t43, 蓝牙 ">Gentoo Linux on T43 (16) 蓝牙传输文件</a></li>
</ul>
]]>
        
    </content>
</entry>

<entry>
    <title>Linux 支持鼠标、键盘即插即用</title>
    <link rel="alternate" type="text/html" href="http://www.aiview.com/2008/03/xorg_allows_hotplug.html" />
    <id>tag:www.aiview.com,2008://1.979</id>

    <published>2008-03-29T20:04:50Z</published>
    <updated>2008-04-09T06:21:39Z</updated>

    <summary><![CDATA[ xorg-server-1.4 发布了有一段时间，配合hal-0.5.10 以及evdev-1.2 可以支持鼠标、键盘的即插即用（hotplug）。 上一次的evdev 升级允许在xorg.conf 中仅仅指定Device 名称即可，不需要指定Driver，xorg 会自动搜索合适的驱动程序，这一此更彻底，在xorg.conf 中不需要进行任何InputDevice 有关的设置。 如果升级到了以上版本，可以修改xorg.conf 来使用hotplug 功能，修改非常简单，移除所有的InputDevice Section 和相关行即可。 Section &quot;InputDevice&quot; ... EndSection Section &quot;ServerLayout&quot; ... InputDevice &quot;Trackpoint&quot; &quot;CorePointer&quot; InputDevice &quot;Logitech MX1000&quot; &quot;SendCoreEvents&quot; InputDevice &quot;Externel USB Mouse&quot; &quot;SendCoreEvents&quot; InputDevice &quot;Generic Keyboard&quot; &quot;CoreKeyboard&quot;...]]></summary>
    <author>
        <name>Alex</name>
        
    </author>
    
        <category term="Linux" scheme="http://www.sixapart.com/ns/types#category" />
    
    <category term="hotplug" label="hotplug" scheme="http://www.sixapart.com/ns/types#tag" />
    
    <content type="html" xml:lang="en" xml:base="http://www.aiview.com/">
        <![CDATA[<p>
xorg-server-1.4 发布了有一段时间，配合hal-0.5.10 以及evdev-1.2 可以支持鼠标、键盘的即插即用（hotplug）。
</p>
<p>
上一次的evdev 升级允许在xorg.conf 中仅仅指定Device 名称即可，不需要指定Driver，xorg 会自动搜索合适的驱动程序，这一此更彻底，在xorg.conf 中不需要进行任何InputDevice 有关的设置。
</p>
<p>
如果升级到了以上版本，可以修改xorg.conf 来使用hotplug 功能，修改非常简单，移除所有的InputDevice Section 和相关行即可。
</p>
<pre class="code">
<del>Section &quot;InputDevice&quot;
...
EndSection</del>
</pre>
<pre class="code">
Section &quot;ServerLayout&quot;
...<del>
InputDevice	&quot;Trackpoint&quot; &quot;CorePointer&quot;
InputDevice &quot;Logitech MX1000&quot; &quot;SendCoreEvents&quot;
InputDevice	&quot;Externel USB Mouse&quot; &quot;SendCoreEvents&quot;
InputDevice	&quot;Generic Keyboard&quot; &quot;CoreKeyboard&quot;</del>
EndSection
</pre>
<p>
移除之后，重启X，我的trackpoint、无线鼠标都工作得很好，甚至罗技的四向滚轮也可以正常驱动（仅仅横滚的方向弄反了:) ）。
</p>
<p>
Xake 在这个讨论中对这次升级做了<a href="http://forums.gentoo.org/viewtopic-t-641870-postdays-0-postorder-asc-start-50.html?sid=6a3dfd503c879abc707c0ab41190d803#4790294">一些更详细的描述</a>，同时也澄清了一些问题。在升级到这些版本之后，有些人遇到了Up键与PrintScreen键混在一起的情况，也包括我，尝试了Xake 的<a href="http://forums.gentoo.org/viewtopic-t-641870-postdays-0-postorder-asc-start-100.html#4988510">清空所有自定义属性</a> 的方法，但不奏效。最终<a href="http://ubuntuforums.org/showthread.php?t=29114" title="Arrow keys bring up &quot;save screenshot&quot; dialog - Ubuntu Forums">Disable 了PrintScreen 键</a>，Up键恢复正常，等待fix。
</p>
<p>
一点题外话，在升级后，很多人遇到了类似的问题，并且抱怨xorg, evdev, 或是hal，Xake 很乐于帮助人们解决问题，但一再强调：
</p>
<blockquote>
	<p>
	HAL is not the problem. DBUS is not the problem. xf86-input-evdev is not the problem.
	You configuration is the problem. 
	</p>
</blockquote>
<p>
的确，如果希望使用最易用的linux，那么应该选择Ubuntu，而不是Gentoo，而遇到了以上问题，也是因为指定了允许升级不稳定版的关键字 ~arch：
</p>
<pre class="code">
ACCEPT_KEYWORDS=&quot;~x86&quot;
</pre>
<p>
每一次emerge --sync，看到成百上千的包更新，心里都会莫名的感动，理解Xake，想起几篇老文章，翻出来：
</p>
<ul>
	<li><a href="http://www.aiview.com/v_3/favorites/whats_opensource.htm">什么是Open Source |
	What&#39;s Open Source</a> by E. Raymond</li>
	<li><a href="http://www.aiview.com/v_3/favorites/gnu_manifesto.htm">GNU 宣言 | GNU Manifesto</a>
	by R. Stallman</li>
	<li><a href="http://www.aiview.com/v_3/favorites/cathedral_bazaar.htm">大教堂和市集 |
	Cathedral and Bazaar</a> by E. Raymond</li>
	<li><a href="http://www.aiview.com/v_3/favorites/homesteading.htm">开拓智域 | Homesteading</a>
	by E. Raymond</li>
	<li><a href="http://www.aiview.com/v_3/favorites/magic_cauldron.htm">魔法大锅炉 Magic
	Cauldron</a> by E. Raymond</li>
</ul>
<p>
&nbsp;
</p>
]]>
        
    </content>
</entry>

<entry>
    <title>TestDisk 找回丢失的硬盘分区表</title>
    <link rel="alternate" type="text/html" href="http://www.aiview.com/2008/03/testdisk_recover_my_partition_table.html" />
    <id>tag:www.aiview.com,2008://1.978</id>

    <published>2008-03-29T15:07:08Z</published>
    <updated>2008-03-31T07:08:43Z</updated>

    <summary>分区表丢失 早晨启动笔记本，被告知未找到操作系统，有点心惊，用Linux 启动U盘引导系统，查看我的主硬盘设备：fdisk -l /dev/sda ，找不到任何分区，应该是分区表丢了，原因不知道。 从前使用Windows 软件FinalData 恢复过被快速格式化甚至重新分过区的硬盘数据，于是把硬盘拆下，装在第二块硬盘托架内，借了台thinkpad，装了FanalData，但发现它只能恢复文件，不能恢复分区表，而且对Linux 分区数据也无能为力。 恢复分区表 在尝试易我分区表医生未果之后，Google到这篇文章： 介绍一个 GPL 的分区表修复工具 TestDisk | BT的花，找到TestDisk，下载了Windows 版，先读了一遍Using TestDisk 下面的文档，然后开始对故障硬盘进行Analyse ，但经过Deeper Search 之后，仅仅找前三个主分区，位于Windows 扩展分区内的两个对我而言最重要的逻辑分区未找到。记起帮助文档中介绍 Geometry下面可以调整柱面(C)、磁道(H)、扇区(S)、扇区size(SS)等参数，目前设定为：9730、255、63、512，将Head修改为240 （柱面数没有进行修改，TestDisk会自动读取剩余的柱面，如果需要计算的话，SS 不变，应该满足：new_C=9730*255/240），再次执行Analyse，TestDisk读出了所有的分区信息！ 使用p 命令可以列出每个分区上的文件，经过仔细确认，分区信息无误之后，执行写入分区表。 修复MBR grub 装回硬盘，启动，屏幕左上角出现了几个字母后停住，估计是MBR grub 损坏，从U盘引导，mount 主硬盘的/boot 分区，进入/boot/grub 目录，执行grub，重新写入主硬盘MBR： # grub...</summary>
    <author>
        <name>Alex</name>
        
    </author>
    
        <category term="Linux" scheme="http://www.sixapart.com/ns/types#category" />
    
        <category term="未分类" scheme="http://www.sixapart.com/ns/types#category" />
    
    <category term="partitiontable" label="partition table" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="testdisk" label="testdisk" scheme="http://www.sixapart.com/ns/types#tag" />
    
    <content type="html" xml:lang="en" xml:base="http://www.aiview.com/">
        <![CDATA[<h4>分区表丢失<br />
</h4>
<p>
早晨启动笔记本，被告知未找到操作系统，有点心惊，用Linux 启动U盘引导系统，查看我的主硬盘设备：fdisk -l /dev/sda ，找不到任何分区，应该是分区表丢了，原因不知道。
</p>
<p>
从前使用Windows 软件FinalData 恢复过被快速格式化甚至重新分过区的硬盘数据，于是把硬盘拆下，装在第二块硬盘托架内，借了台thinkpad，装了FanalData，但发现它只能恢复文件，不能恢复分区表，而且对Linux 分区数据也无能为力。
</p>
<h4>恢复分区表<br />
</h4>
<p>
在尝试易我分区表医生未果之后，Google到这篇文章：
<a href="http://www.dup2.org/node/347" title="介绍一个 GPL 的分区表修复工具 TestDisk | BT的花">介绍一个 GPL 的分区表修复工具 TestDisk | BT的花</a>，找到<a href="http://www.cgsecurity.org/wiki/TestDisk">TestDisk</a>，下载了Windows 版，先读了一遍Using TestDisk 下面的文档，然后开始对故障硬盘进行Analyse ，但经过Deeper Search 之后，仅仅找前三个主分区，位于Windows 扩展分区内的两个对我而言最重要的逻辑分区未找到。记起帮助文档中介绍 <a href="http://www.cgsecurity.org/wiki/Menu_Geometry" title="Menu Geometry">Geometry</a>下面可以调整柱面(C)、磁道(H)、扇区(S)、扇区size(SS)等参数，目前设定为：9730、255、63、512，将Head修改为240 （柱面数没有进行修改，TestDisk会自动读取剩余的柱面，如果需要计算的话，SS 不变，应该满足：new_C=9730*255/240），再次执行Analyse，TestDisk读出了所有的分区信息！
</p>
<p>
使用p 命令可以列出每个分区上的文件，经过仔细确认，分区信息无误之后，执行写入分区表。
</p>
<h4>修复MBR grub </h4>
<p>
装回硬盘，启动，屏幕左上角出现了几个字母后停住，估计是MBR grub 损坏，从U盘引导，mount 主硬盘的/boot 分区，进入/boot/grub 目录，执行grub，重新写入主硬盘MBR：
</p>
<pre class="cmd">
# grub
grub&gt; root (hd0,0)
grub&gt; setup (hd0)
grub&gt; quit 
</pre>
<p>
&nbsp;
</p>
<p>
再次硬盘启动成功，进入系统，所有分区数据访问正常。
</p>
<h4>后记</h4>
<p>
如果有分区表备份，在这种情况下，可以使用Linux fdisk 按照原来的起止柱面，直接建立原类型分区，数据也同样可以找到。
</p>
<p>
看来备份分区表很重要，可以添加这样一条命令到crontab，来备份最近7天的分区表信息（还应该有机制自动将备份文件mail 出去或者同步到移动存储器，也可以scp 到本地硬盘以外的主机）：
</p>
<pre class="cmd">
00 12 * * * fdisk -l &gt; ~/.pt_backup_$(date &#39;+%Y%m%d&#39;); find ~ -name &quot;.pt_backup_*&quot; -mtime +7 -exec rm -f {} \;
</pre>
<p>
TestDisk Windows 版本在系统安装有cygwin 的情况下，启动出错，大概是因为系统中的cygwin1.dll 版本更新，删除了TestDisk 解压目录中的cygwin1.dll 之后可正常启动TestDisk。
</p>
<p>
为软件作者实现了一个在Amazon的wish：<strong>
</strong><a href="http://www.amazon.fr/Engines-God-Jack-McDevitt/dp/0441002846/ref=wl_it_dp?ie=UTF8&amp;coliid=I11GR62M4ESYVJ&amp;colid=3RJB6AKCR77KD">The Engines of God</a>，为了省运费，使用了amazon.fr，不过还好有<a href="http://www.google.cn/language_tools">Google 语言工具</a>。
</p>
<h4>延展阅读<br />
</h4>
<ul>
	<li class="toclevel-1"><a href="http://www.cgsecurity.org/wiki/Data_Recovery_Examples#Problem_of_disk_geometry_-_When_all_partitions_are_deleted"><span class="tocnumber"></span><span class="toctext">Problem of disk geometry - When all partitions are deleted</span></a></li>
	<li class="toclevel-1"><a href="http://www.cgsecurity.org/wiki/TestDisk">TestDisk wiki</a></li>
	<li class="toclevel-1"><a href="http://www.dup2.org/search/node/testdisk">http://www.dup2.org/search/node/testdisk</a> <br />
	</li>
	<li class="toclevel-1"><a href="http://linux.chinaitlab.com/administer/740415.html">Linux下恢复EXT3&nbsp;Superblock的正确方法 </a> </li>
</ul>
]]>
        
    </content>
</entry>

<entry>
    <title>mysqld 启动失败一例</title>
    <link rel="alternate" type="text/html" href="http://www.aiview.com/2008/03/mysqld_start_failed.html" />
    <id>tag:www.aiview.com,2008://1.977</id>

    <published>2008-03-29T12:04:07Z</published>
    <updated>2008-03-29T12:47:41Z</updated>

    <summary> 启动mysql server 失败，查看/var/log/mysqld.err 080329 16:01:29 [ERROR] Can&#39;t start server : Bind on unix socket: No such file or directory 080329 16:01:29 [ERROR] Do you already have another mysqld server running on socket: /var/run/mysqld/mysqld.sock ? 080329 16:01:29 [ERROR] Aborting 080329...</summary>
    <author>
        <name>Alex</name>
        
    </author>
    
        <category term="软件开发" scheme="http://www.sixapart.com/ns/types#category" />
    
    <category term="mysql" label="mysql" scheme="http://www.sixapart.com/ns/types#tag" />
    
    <content type="html" xml:lang="en" xml:base="http://www.aiview.com/">
        <![CDATA[<p>
启动mysql server 失败，查看/var/log/mysqld.err
</p>
<pre class="output">
080329 16:01:29 [ERROR] Can&#39;t start server : Bind on unix socket: No such file or directory
080329 16:01:29 [ERROR] Do you already have another mysqld server running on socket: /var/run/mysqld/mysqld.sock ?
080329 16:01:29 [ERROR] Aborting
080329 16:01:29  InnoDB: Starting shutdown...
080329 16:01:30  InnoDB: Shutdown completed; log sequence number 0 4646872
080329 16:01:30 [Note] /usr/sbin/mysqld: Shutdown complete
</pre>
<p>
百思不得其解，后来查看/var/db/pkg/dev-db/mysql-5.0.56/CONTENTS 文件，或者执行equery f mysql（两种方法非Gentoo Linux 发布不适用），得知安装文件中包含/var/run/mysqld，而这个目录不存在，回忆起之前曾清空过/var/run目录，一直以为这下面的内容都是动态创建，删除之后重启系统即可，看来对mysql 来说还不是这么回事。
</p>
<p>
创建此目录，并chown，问题解决。
</p>
<pre class="cmd">
# mkdir /var/run/mysqld
# chown mysql:mysql /var/run/mysqld
</pre>
]]>
        
    </content>
</entry>

</feed>
