<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0">
<channel>
<title>DB2</title>
<link>http://www.aiview.com/</link>
<description>Alex&apos;s Public Information Portal.</description>
<copyright>Copyright 2009</copyright>
<lastBuildDate>Mon, 10 Nov 2008 05:48:27 +0700</lastBuildDate>
<generator>http://www.movabletype.org/?v=3.34</generator>
<docs>http://blogs.law.harvard.edu/tech/rss</docs> 

<item>
<title>升级Pentax *istDS 固件到V2.02</title>
<description><![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>
]]></description>
<link>http://www.aiview.com/2008/11/upgrade_firmware_of_pentax_istds_to_v202.html</link>
<guid>http://www.aiview.com/2008/11/upgrade_firmware_of_pentax_istds_to_v202.html</guid>
<category>Photography</category>
<pubDate>Mon, 10 Nov 2008 05:48:27 +0700</pubDate>
</item>
<item>
<title>Nokia E71 杂记</title>
<description><![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>]]></description>
<link>http://www.aiview.com/2008/11/all_about_nokia_e71.html</link>
<guid>http://www.aiview.com/2008/11/all_about_nokia_e71.html</guid>
<category>Thinkpad and PDA</category>
<pubDate>Sat, 08 Nov 2008 01:52:21 +0700</pubDate>
</item>
<item>
<title>Gentoo Linux on T43 (17) VGA输出</title>
<description><![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>
]]></description>
<link>http://www.aiview.com/2008/11/gentoo_linux_on_t43_17_vga-out.html</link>
<guid>http://www.aiview.com/2008/11/gentoo_linux_on_t43_17_vga-out.html</guid>
<category>Linux</category>
<pubDate>Wed, 05 Nov 2008 23:57:07 +0700</pubDate>
</item>
<item>
<title>Gentoo Linux on T43 (16) 蓝牙传输文件</title>
<description><![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>
]]></description>
<link>http://www.aiview.com/2008/11/gentoo_linux_on_t43_16_bluetooth.html</link>
<guid>http://www.aiview.com/2008/11/gentoo_linux_on_t43_16_bluetooth.html</guid>
<category>Linux</category>
<pubDate>Wed, 05 Nov 2008 02:48:11 +0700</pubDate>
</item>
<item>
<title>升级到openoffice 2.3.1 宋体显示为方块</title>
<description><![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>
]]></description>
<link>http://www.aiview.com/2008/10/openoffice_231_break_simsun_font.html</link>
<guid>http://www.aiview.com/2008/10/openoffice_231_break_simsun_font.html</guid>
<category>Linux</category>
<pubDate>Thu, 30 Oct 2008 10:46:59 +0700</pubDate>
</item>
<item>
<title>vmware: 利用已有Windows 安装创建虚拟机</title>
<description><![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>
]]></description>
<link>http://www.aiview.com/2008/07/vmware_using_physical_windows_installation.html</link>
<guid>http://www.aiview.com/2008/07/vmware_using_physical_windows_installation.html</guid>
<category>Linux</category>
<pubDate>Thu, 31 Jul 2008 23:23:14 +0700</pubDate>
</item>
<item>
<title>在linux 下运行PowerDesigner 15 Beta 2</title>
<description><![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>
]]></description>
<link>http://www.aiview.com/2008/07/powerdesigner_15_beta_2_under_linux.html</link>
<guid>http://www.aiview.com/2008/07/powerdesigner_15_beta_2_under_linux.html</guid>
<category>Software Technical</category>
<pubDate>Mon, 28 Jul 2008 01:15:00 +0700</pubDate>
</item>
<item>
<title>奥运会第三阶段剩余门票查询</title>
<description><![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>
使用“有票可售"作为状态提取关键字，使结果更为准确。
旧版本使用“最佳可选”作为关键字，因为无票的查询结果会有两种样式的页面，所以旧版本会将一些没有票的场次也列出来。
]]></description>
<link>http://www.aiview.com/2008/05/beijing2008_tickets.html</link>
<guid>http://www.aiview.com/2008/05/beijing2008_tickets.html</guid>
<category>Sports</category>
<pubDate>Wed, 07 May 2008 09:48:31 +0700</pubDate>
</item>
<item>
<title>Gentoo Linux: 我安装的软件</title>
<description><![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>
]]></description>
<link>http://www.aiview.com/2008/04/gentoo_linux_apps_on_my_box.html</link>
<guid>http://www.aiview.com/2008/04/gentoo_linux_apps_on_my_box.html</guid>
<category>Linux</category>
<pubDate>Wed, 09 Apr 2008 22:14:58 +0700</pubDate>
</item>
<item>
<title>Gentoo Linux on T43 (15) Fn + Keys</title>
<description><![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>
]]></description>
<link>http://www.aiview.com/2008/03/gentoo_linux_on_t43_15_fn_keys.html</link>
<guid>http://www.aiview.com/2008/03/gentoo_linux_on_t43_15_fn_keys.html</guid>
<category>Linux</category>
<pubDate>Mon, 31 Mar 2008 02:04:42 +0700</pubDate>
</item>
<item>
<title>Linux 支持鼠标、键盘即插即用</title>
<description><![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>
]]></description>
<link>http://www.aiview.com/2008/03/xorg_allows_hotplug.html</link>
<guid>http://www.aiview.com/2008/03/xorg_allows_hotplug.html</guid>
<category>Linux</category>
<pubDate>Sun, 30 Mar 2008 04:04:50 +0700</pubDate>
</item>
<item>
<title>TestDisk 找回丢失的硬盘分区表</title>
<description><![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>
]]></description>
<link>http://www.aiview.com/2008/03/testdisk_recover_my_partition_table.html</link>
<guid>http://www.aiview.com/2008/03/testdisk_recover_my_partition_table.html</guid>
<category>Misc</category>
<pubDate>Sat, 29 Mar 2008 23:07:08 +0700</pubDate>
</item>
<item>
<title>mysqld 启动失败一例</title>
<description><![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>
]]></description>
<link>http://www.aiview.com/2008/03/mysqld_start_failed.html</link>
<guid>http://www.aiview.com/2008/03/mysqld_start_failed.html</guid>
<category>Software Technical</category>
<pubDate>Sat, 29 Mar 2008 20:04:07 +0700</pubDate>
</item>
<item>
<title>DB2 connect 错误 SQLEUCCM: SQL0969N</title>
<description><![CDATA[<p>
DB2 v8.2 客户端连接任何DB2 Server出错：
</p>
<pre class="output">
SQL0969N  There is no message text corresponding to SQL error &quot;-2079391743&quot; in 
the message file on this workstation.  The error was returned from module 
&quot;SQLEUCCM&quot; with original tokens &quot;&quot;.
</pre>
<p>
事实上是，使用客户端instance owner 运行db2 connect 一切正常，当使用其它用户source instance owner 的db2profile 之后，运行db2 connect 出现以上错误，即使将此用户加入到instance owner 的group 也是同样错误。Google 到问题产生的原因：
<a href="http://www.coffeecode.net/archives/25-SQLEUCCM-error-message-for-DB2.html" title="SQLEUCCM error message for DB2 - Coffee|Code : Dan Scott, Caffeinated Librarian Geek">SQLEUCCM error message for DB2 - Coffee|Code : Dan Scott, Caffeinated Librarian Geek</a> 
</p>
<p>
我这里的原因与上文有点差别，我更改了客户端instance 的参数DFTDBPATH ，其默认在instance owner 的HOME，我将其更改为其它路径/db2，这个目录的owner为root，通过group <span class="hilite">db2</span>授权给客户端instance owner，所有的数据库数据文件将被创建在这个目录下的子目录，子目录与instance owner 同名，虽然子目录完全属于instance owner，并且instance owner 也是其父目录/db2的group 成员（对group成员授与了完全权限），DB2 客户端还会要求似乎不需要的权限，并报出以上错误。
</p>
<p>
上面描述的情况有点混乱，简单概括一下：
</p>
<ul>
	<li>
	DB2 v8.2 客户端instance owner and group: db2amor:db2amor （用户db2amor 也是group db2的成员） <br />
	</li>
	<li>DFTDBPATH 与权限: /db2  root:<span class="hilite">db2</span>  770 <br />
	</li>
	<li>instance 数据路径与权限： /db2/db2amor  db2amor:db2amor  775
	</li>
</ul>
<p>
使用其它用户source db2amor 的db2profile 之后连接数据库出错，即使将其加入db2amor group 成员也不行。
</p>
<p>
我的解决方法与上文也有差别，我将需要使用DB2 客户端的用户加入DFTDBPATH 所属group: db2（不需要加入instance owner group: db2amor）
</p>
<pre class="cmd">
# usermod -aG <span class="hilite">db2</span> USER_NAME
</pre>
<p>
产生前面的问题，是因为我使用了DB2 Server instance 中的客户端。其实有个更好的方法避免上述的问题，就是创建独立的DB2 客户端instance，无论是v8 还是v9，这就根本上避免了我们不希望的权限请求。
</p>
<pre class="cmd">
# /opt/IBM/db2/V8.1/instance/db2icrt -s client INSTANCE_NAME 
</pre>
]]></description>
<link>http://www.aiview.com/2008/03/db2_connect_issue_sqleuccm_sql0969n.html</link>
<guid>http://www.aiview.com/2008/03/db2_connect_issue_sqleuccm_sql0969n.html</guid>
<category>DB2</category>
<pubDate>Sat, 29 Mar 2008 18:00:34 +0700</pubDate>
</item>
<item>
<title>Gentoo Linux: /var/db/pkg 这个文件夹很重要！</title>
<description><![CDATA[<p>
前段时间折腾<a href="http://www.aiview.com/2008/02/gentoo_linux_on_t43_14_ramdisk.html">tmpfs 文件系统</a>，不小心弄丢了/var/db/pkg 下面所有的文件，在查资料的过程中，才了解这个文件夹的重要。 
</p>
<p>
这个文件夹对于Gentoo 的作用，相当于Windows 应用程序的Uninstall 文件，所有通过Portage 安装的程序包信息都保存在这，每个程序包包含哪些文件，以及文件的路径信息是最重要的，缺少这些信息，将无法正常的卸载程序包，其他一些重要的信息丢失也导致Portage 系统混乱。 
</p>
<p>
这个文件夹丢失，虽然系统中的应用程序可以照常运行，但却是最大的灾难，除非不再打算通过Portage 对包进行任何维护工作，比如升级，安装新的软件等。解决方法只有一个：重新merge 所有软件包，重新生成这部分信息。一般来说，系统中软件包的规模在几百，甚至上千个，里面还有一些重磅角色，全部重新编译一遍，可能需要几十个小时（OpenOffice 在我的T43 上花去10个小时进行编译）。 
</p>
<p>
文件夹丢失后，我最初找到了<a href="http://forums.gentoo.org/viewtopic-t-513191-start-0-postdays-0-postorder-asc-highlight-.html">这个讨论</a>(en)，参考<span class="name"><strong>hielvc </strong>写的脚本</span>，希望通过读取/var/log/emerge.log 恢复丢失的信息，但这个方法只能恢复出系统中所有已安装软件包名称和版本信息，无法找回已安装文件的列表，能不能通过某个Gentoo 工具得到每个软件包默认的文件列表呢，答案应该是不可以，因为Gentoo 是一个定制性的系统，大部分文件都是编译后生成的，并没有一个默认的库能够告诉这些文件的具体信息。换句话说，我的/var/db/pkg 是唯一的，如果没有备份，只能重新编译一遍系统来生成它们，下面这个讨论中，<span class="name"><strong>didymos</strong></span>很清楚的解释了这个问题，也证实了我的想法：<a href="http://forums.gentoo.org/viewtopic-t-665198.html" class="postdetails">PANIC! I deleted /var/db/pkg</a> 
</p>
<p>
所幸，在把我的/var/db/pkg 放入内存之前，我留下一个备份，但随后，我merge了约50个软件包，这些信息被写入内存中的/var/db/pkg ，随后就在一次重启后彻底丢失了。 
</p>
<p>
在具有备份的情况下，我使用以下步骤重建了/var/db/pkg，时间成本主要花费在重新merge 约50个软件包。 
</p>
<h4>步骤</h4>
<h5>恢复备份的/var/db/pkg 文件夹</h5>
<p>
恢复之后，/var/db/pkg 代表了merge 50个包之前我的系统的状况，但我的系统实际多出了一些包，或者一些已存在包的升级。 
</p>
<h5>找出/var/db/pkg 与实际系统的不一致</h5>
<p>
前面提到的<span class="name"><strong>hielvc </strong>写的脚本可以派上用场，但<strong>hielvc</strong> 忽略了一些情况（emerge -&gt; unmerge -&gt; emerge again），结果可能并不准确，我重写了一个脚本</span><a href="http://www.aiview.com/ref/2008/03/rebuildpkgdb">rebuildpkgdb</a>，用法： 
</p>
<pre class="cmd">
# ./rebuildpkgdb -p
</pre>
<pre class="output">
This is a dry-run, Nothing really changed.Done! Please check package.lst
</pre>
<p>
这将得到系统中实际安装的所有包列表（包含版本），再使用下面命令获取/var/db/pkg 记录的列表。 
</p>
<pre class="cmd">
#  find /var/db/pkg/ -type d |cut -d/ -f 5- |awk -F/ &#39;NF &gt; 1&#39; |sort &gt; package.db
</pre>
<p>
然后比较两个文件，找到以下包： 
</p>
<ol>
	<li>存在于package.lst，但不存在于package.db</li>
	<li>存在于package.db，但不存在于package.lst</li>
	<li>都存在，但版本不同（取 package.lst）</li>
</ol>
<p>
对于第一种情况，是因为我在/var/db/pkg 丢失之后，unmerge 了一些包，虽然emerge.log 显示unmerge 成功，但因为丢失/var/db/pkg，实际文件并没有从文件系统真正删除。 
</p>
<p>
而后两种情况是我备份/var/db/pkg 之后，丢失的信息。 
</p>
<p>
因此对于上面三种情况，都执行一次merge 即可。 
</p>
<h5>remerge</h5>
<p>
将上个步骤取得的包列表格式化成类似下面的命令，重新merge一遍，这个过程将重建正确的/var/db/pkg。 
</p>
<pre class="cmd">
# sudo emerge -av =app-admin/eselect-ctags-1.3 =app-admin/eselect-wxwidgets-0.8 \
=app-admin/sudo-1.6.9_p14 =app-editors/emacs-22.1-r3 ...
</pre>
<pre class="output">
These are the packages that would be merged, in order:Calculating dependencies... done![ebuild  N    ] sys-fs/mtools-3.9.10  USE=&quot;X&quot; 0 kB [ebuild     U ] kde-base/kpdf-3.5.9 [3.5.8] USE=&quot;xinerama -arts -debug -kdeenablefinal&quot; 0 kB [ebuild     U ] kde-misc/krusader-1.80.0-r1 [1.80.0] USE=&quot;xinerama -arts -debug -javascript -kde&quot; 0 kB [ebuild  N    ] sys-boot/syslinux-3.52  0 kB  ...Total: 49 packages (42 upgrades, 6 new, 1 in new slot), Size of downloads: 3 kBWould you like to merge these packages? [Yes/No] 
</pre>
<h5>检查系统</h5>
<p>
列出那些在/usr/lib/portage/world，但不在/var/db/pkg 中的软件包： 
</p>
<pre class="cmd">
# emaint --check world 
</pre>
<p>
如果上面命令找到了任何包，那么应该先merge 它们，如果事实不需要它们，再进行unmerge ，这样可以保证world, /var/db/pkg/, 以及文件系统三者的一致性。 
</p>
<h5>revdep-rebuild</h5>
<p>
最后执行revdep-rebuild 查找系统中的任何共享库以及依赖关系的缺失，如果需要，会自动merge 需要的软件包。这个命令可能需要运行多次，直到没有任何问题发现为止。 
</p>
<pre class="cmd">
# revdep-rebuild 
</pre>
<h4>如果没有/var/db/pkg 备份</h4>
<p>
这是个很不幸的状况，如果真正希望world, /var/db/pkg/, 以及文件系统这三者具有一致性，那么似乎没有别的选择，找个空闲时间依次执行下面的命令，来重建/var/db/pkg 
</p>
<pre class="cmd">
# emaint --check world# emerge -e system# emerge -e world# revdep-rebuild 
</pre>
<p>
这个过程可能很漫长，视机器的速度，如果有其他Gentoo 系统可以利用，那么可以尝试<a href="http://www.gentoo.org/doc/zh_cn/handbook/handbook-x86.xml?part=2&amp;chap=3#doc_chap2" class="altlink">分布式编译</a>来节省时间。&nbsp; 
</p>
<h4>延展阅读</h4>
<ul>
	<li><a href="http://www.gentoo.org/doc/zh_cn/handbook/handbook-x86.xml?part=2&amp;chap=1">Gentoo Linux文档 -- Portage入门</a>&nbsp;&nbsp;</li>
	<li><a href="http://forums.gentoo.org/viewtopic-t-665198.html">Gentoo Forums :: 阅读主题 - PANIC! I deleted /var/db/pkg</a> </li>
	<li><a href="http://forums.gentoo.org/viewtopic-t-513191-start-0-postdays-0-postorder-asc-highlight-.html">Gentoo Forums :: 阅读主题 - deleted /var/db/pkg [solved]</a></li>
	<li><a href="http://gentoo-wiki.com/HOWTO_Use_Portage_Correctly">HOWTO Use Portage Correctly - Gentoo Linux Wiki</a></li>
	<li><a href="http://forums.gentoo.org/viewtopic-t-136627-start-0-postdays-0-postorder-asc-highlight-.html" class="maintitle">GF16: Corrupt or empty world file, what do I do?</a></li>
</ul>
]]></description>
<link>http://www.aiview.com/2008/03/gentoo_linux_deleted_var_db_pkg.html</link>
<guid>http://www.aiview.com/2008/03/gentoo_linux_deleted_var_db_pkg.html</guid>
<category>Linux</category>
<pubDate>Mon, 24 Mar 2008 03:15:28 +0700</pubDate>
</item>


</channel>
</rss>