﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>BlogJava-Read Sean-随笔分类-GNU/Linux</title><link>http://www.blogjava.net/sean/category/18647.html</link><description>Read me, read Sean.</description><language>zh-cn</language><lastBuildDate>Thu, 02 Jan 2014 06:09:12 GMT</lastBuildDate><pubDate>Thu, 02 Jan 2014 06:09:12 GMT</pubDate><ttl>60</ttl><item><title>[RPi] 树梅派安装Archlinux和蓝牙</title><link>http://www.blogjava.net/sean/archive/2014/01/01/408333.html</link><dc:creator>laogao</dc:creator><author>laogao</author><pubDate>Wed, 01 Jan 2014 05:11:00 GMT</pubDate><guid>http://www.blogjava.net/sean/archive/2014/01/01/408333.html</guid><wfw:comment>http://www.blogjava.net/sean/comments/408333.html</wfw:comment><comments>http://www.blogjava.net/sean/archive/2014/01/01/408333.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/sean/comments/commentRss/408333.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/sean/services/trackbacks/408333.html</trackback:ping><description><![CDATA[不久前入了个 Raspberry Pi 也就是大家说的树梅派（以下简称RPi），拿来做蓝牙测试，用的蓝牙dongle是ORICO的BTA-403-BL&nbsp;<a href="http://item.jd.com/980800.html">http://item.jd.com/980800.html</a>&nbsp;。这里简单记录下安装过程：<br />
<br />首先是操作系统。作为Arch重度用户，当然选Archlinux ARM了:&nbsp;<a href="http://archlinuxarm.org/platforms/armv6/raspberry-pi">http://archlinuxarm.org/platforms/armv6/raspberry-pi</a>&nbsp;下载img文件，用dd写到SD卡上：<br />
<div style="background-color:#eeeeee;font-size:13px;border:1px solid #CCCCCC;padding-right: 5px;padding-bottom: 4px;padding-left: 4px;padding-top: 4px;width: 98%;word-break:break-all"><!--<br />
<br />
Code highlighting produced by Actipro CodeHighlighter (freeware)<br />
http://www.CodeHighlighter.com/<br />
<br />
-->dd&nbsp;bs=1M&nbsp;<span style="color: #0000FF; ">if</span>=/path/to/archlinux-hf-*.img&nbsp;of=/dev/sdX</div>
<br />
然后用GParted把SD卡上的分区拖满，充分利用空间。这样SD卡就准备好了，插到RPi上，接上Micro-USB的电源和网线，启动RPi，从路由器上找到RPi的IP地址（机器名默认是alarmpi），ssh上去（用户名root密码root），修改密码，创建非root账号，执行系统更新 sudo pacman -Syu ，这之后开始安装蓝牙相关工具：<br />
<div style="background-color: #eeeeee; font-size: 13px; border: 1px solid #cccccc; padding: 4px 5px 4px 4px; width: 98%; word-break: break-all;"><!--<br />
<br />
Code highlighting produced by Actipro CodeHighlighter (freeware)<br />
http://www.CodeHighlighter.com/<br />
<br />
-->sudo pacman&nbsp;-S&nbsp;bluez&nbsp;bluez-utils</div>
<br />
确保蓝牙dongle插到RPi的USB接口，通过 hciconfig 确认蓝牙设备被识别，输出应该类似下面这个样子：<br />
<div style="background-color: #eeeeee; font-size: 13px; border: 1px solid #cccccc; padding: 4px 5px 4px 4px; width: 98%; word-break: break-all;"><!--<br />
<br />
Code highlighting produced by Actipro CodeHighlighter (freeware)<br />
http://www.CodeHighlighter.com/<br />
<br />
-->[sean<span style="color: #800080; ">@alarmpi</span>]$&nbsp;hciconfig<br />
hci0:&nbsp;&nbsp;&nbsp;Type:&nbsp;BR/EDR&nbsp;&nbsp;Bus:&nbsp;USB<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;BD&nbsp;Address:&nbsp;<span style="color: #800000; ">84</span>:A6:C8:DC:<span style="color: #800000; ">04</span>:<span style="color: #800000; ">97</span>&nbsp; ACL&nbsp;MTU:&nbsp;<span style="color: #800000; ">310</span>:<span style="color: #800000; ">10</span>&nbsp;&nbsp;SCO&nbsp;MTU:&nbsp;<span style="color: #800000; ">64</span>:<span style="color: #800000; ">8</span><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;DOWN&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;RX&nbsp;bytes:<span style="color: #800000; ">553</span>&nbsp;acl:<span style="color: #800000; ">0</span>&nbsp;sco:<span style="color: #800000; ">0</span>&nbsp;events:<span style="color: #800000; ">28</span>&nbsp;errors:<span style="color: #800000; ">0</span><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;TX&nbsp;bytes:<span style="color: #800000; ">384</span>&nbsp;acl:<span style="color: #800000; ">0</span>&nbsp;sco:<span style="color: #800000; ">0</span>&nbsp;commands:<span style="color: #800000; ">27</span>&nbsp;errors:<span style="color: #800000; ">0</span></div>
<br />
启动bluetooth：<br />
<div style="background-color: #eeeeee; font-size: 13px; border: 1px solid #cccccc; padding: 4px 5px 4px 4px; width: 98%; word-break: break-all;"><!--<br />
<br />
Code highlighting produced by Actipro CodeHighlighter (freeware)<br />
http://www.CodeHighlighter.com/<br />
<br />
-->sudo systemctl&nbsp;start&nbsp;bluetooth</div>
<br />
完成以后，即可通过 bluetoothctl 命令打开蓝牙控制台，执行各项蓝牙相关操作，比如show、list、scan on、agent、info等等，这里不展开了。<br />
<br />
如果想使用图形界面操作RPi，也很简单，基本步骤如下：<br />
<div style="background-color: #eeeeee; font-size: 13px; border: 1px solid #cccccc; padding: 4px 5px 4px 4px; width: 98%; word-break: break-all;"><!--<br />
<br />
Code highlighting produced by Actipro CodeHighlighter (freeware)<br />
http://www.CodeHighlighter.com/<br />
<br />
-->sudo&nbsp;pacman&nbsp;-S&nbsp;xorg xorg-xinit lxde<br />echo&nbsp;<span style="font-weight: bold;">'</span><span style="font-weight: bold;">exec&nbsp;startlxde</span><span style="font-weight: bold;">'</span>&nbsp;&gt;&nbsp;~/.xinitrc<br />
startx</div><br />Enjoy!<img src ="http://www.blogjava.net/sean/aggbug/408333.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/sean/" target="_blank">laogao</a> 2014-01-01 13:11 <a href="http://www.blogjava.net/sean/archive/2014/01/01/408333.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>[Tips] Windows环境下Apache最基本的调优方法</title><link>http://www.blogjava.net/sean/archive/2011/08/02/355618.html</link><dc:creator>laogao</dc:creator><author>laogao</author><pubDate>Tue, 02 Aug 2011 13:04:00 GMT</pubDate><guid>http://www.blogjava.net/sean/archive/2011/08/02/355618.html</guid><wfw:comment>http://www.blogjava.net/sean/comments/355618.html</wfw:comment><comments>http://www.blogjava.net/sean/archive/2011/08/02/355618.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/sean/comments/commentRss/355618.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/sean/services/trackbacks/355618.html</trackback:ping><description><![CDATA[<p>
今天远程支持同事在Windows环境调优Apache服务器性能，记录在此，供需要的朋友参考。</p>
<p>
Java EE应用，同时部署在两个Tomcat(5.5.27)实例上，前面放了个Apache(httpd-2.2.19-win32-x86-no_ssl)，通过mod_jk(1.2.32)做负载均衡，同一台物理服务器，操作系统为64位的Windows Server 2003 SP2。现象是60+客户端，平均每个客户端每秒请求数2次，单个请求正常响应时间在500ms以内，即每秒冲进来120个请求，并发量最多在60上下，Apache就已不堪"重"负，静态资源响应时间都超过10s，同时Tomcat和数据库服务器均正常。凭我的经验，同样的压力直接压到Tomcat也不至于这么难看。看来问题出在Apache。</p>
<p>
首先修改httpd.conf配置文件，打开status模块：</p>
<p>
<code>
LoadModule status_module modules/mod_status.so<br/>
&lt;Location /status&gt;<br/>
&nbsp;&nbsp;SetHandler server-status<br/>
&nbsp;&nbsp;Order deny,allow<br/>
&nbsp;&nbsp;Deny from all<br/>
&nbsp;&nbsp;Allow from 127.0.0.1 #需要的话也可放开为all<br/>
&lt;/Location&gt;
</code></p>
<p>
这样我们就能通过/status页面查看服务器当前的状态信息，结果观察到worker(即线程)数仅为64！坑爹啊！难怪撑不住。我记得以前Windows下面的Apache默认线程数没这么小的。找准问题，接下来就好办了：</p>
<p>
<code>
&lt;IfModule mpm_winnt.c&gt;<br/>
&nbsp&nbsp;ThreadsPerChild 300<br/>
&nbsp;&nbsp;MaxRequestsPerChild 0<br/>
&lt;/IfModule&gt;
</code></p>
<p>
稍微解释一下：mpm_winnt.c是Apache为Windows NT提供的MPM (Multi-Processing Module)，对应到Linux环境下，则有prefork.c(多进程/每进程1个线程)和worker.c(多进程+多线程)两种MPM可选。Windows下面只会有父与子两个进程，因此单个子进程能同时起多少线程(ThreadsPerChild)就成了调优的关键。另一个参数MaxRequestsPerChild的含义是单个子进程累计最多处理到少个请求，超过该值则退出重启，这是出于防止内存泄露慢慢拖垮整个服务器而做的防御性措施，0表示不做此限制。</p>
<p>
新配置上线后，客户端数量顺利冲上200+。Case closed.</p>
<img src ="http://www.blogjava.net/sean/aggbug/355618.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/sean/" target="_blank">laogao</a> 2011-08-02 21:04 <a href="http://www.blogjava.net/sean/archive/2011/08/02/355618.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Ubuntu Karmic安装手记 - T400s</title><link>http://www.blogjava.net/sean/archive/2009/12/26/307346.html</link><dc:creator>laogao</dc:creator><author>laogao</author><pubDate>Sat, 26 Dec 2009 03:14:00 GMT</pubDate><guid>http://www.blogjava.net/sean/archive/2009/12/26/307346.html</guid><wfw:comment>http://www.blogjava.net/sean/comments/307346.html</wfw:comment><comments>http://www.blogjava.net/sean/archive/2009/12/26/307346.html#Feedback</comments><slash:comments>2</slash:comments><wfw:commentRss>http://www.blogjava.net/sean/comments/commentRss/307346.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/sean/services/trackbacks/307346.html</trackback:ping><description><![CDATA[<br />
周二的时候拿到了新的T400s，安装Linux(64位Karmic)的过程比预想的要曲折，趁周末有时间，整理记录于此，希望对遇到同样问题的人有所帮助。<br />
<br />
T400s送到之前，我先简单的在网上查了查基本的配置信息，同时也看到有很多网友十分顺利的安装了Linux，不论是Ubuntu Karmic还是Arch Linux，基本都是除了指纹都是out-of-box就可直接工作的，这也符合我的预期。于是，拿着amd64版的Karmic盘，开始在T400s上安装。<br />
<br />
基本系统的安装很顺利，跟着提示一路走完，Karmic就能够boot并正常login了，so far so good。不过登录进去之后，无线网卡不工作，只有有线连接，这是怎么回事？用lspci一看：<br />
<ul>
    <li>00:00.0 Host bridge: Intel Corporation Mobile 4 Series Chipset Memory Controller Hub (rev 07)</li>
    <li>00:02.0 VGA compatible controller: Intel Corporation Mobile 4 Series Chipset Integrated Graphics Controller (rev 07)</li>
    <li>00:02.1 Display controller: Intel Corporation Mobile 4 Series Chipset Integrated Graphics Controller (rev 07)</li>
    <li>00:03.0 Communication controller: Intel Corporation Mobile 4 Series Chipset MEI Controller (rev 07)</li>
    <li>00:03.3 Serial controller: Intel Corporation Mobile 4 Series Chipset AMT SOL Redirection (rev 07)</li>
    <li>00:19.0 Ethernet controller: Intel Corporation 82567LM Gigabit Network Connection (rev 03)</li>
    <li>00:1a.0 USB Controller: Intel Corporation 82801I (ICH9 Family) USB UHCI Controller #4 (rev 03)</li>
    <li>00:1a.1 USB Controller: Intel Corporation 82801I (ICH9 Family) USB UHCI Controller #5 (rev 03)</li>
    <li>00:1a.2 USB Controller: Intel Corporation 82801I (ICH9 Family) USB UHCI Controller #6 (rev 03)</li>
    <li>00:1a.7 USB Controller: Intel Corporation 82801I (ICH9 Family) USB2 EHCI Controller #2 (rev 03)</li>
    <li>00:1b.0 Audio device: Intel Corporation 82801I (ICH9 Family) HD Audio Controller (rev 03)</li>
    <li>00:1c.0 PCI bridge: Intel Corporation 82801I (ICH9 Family) PCI Express Port 1 (rev 03)</li>
    <li>00:1c.1 PCI bridge: Intel Corporation 82801I (ICH9 Family) PCI Express Port 2 (rev 03)</li>
    <li>00:1c.2 PCI bridge: Intel Corporation 82801I (ICH9 Family) PCI Express Port 3 (rev 03)</li>
    <li>00:1c.3 PCI bridge: Intel Corporation 82801I (ICH9 Family) PCI Express Port 4 (rev 03)</li>
    <li>00:1d.0 USB Controller: Intel Corporation 82801I (ICH9 Family) USB UHCI Controller #1 (rev 03)</li>
    <li>00:1d.1 USB Controller: Intel Corporation 82801I (ICH9 Family) USB UHCI Controller #2 (rev 03)</li>
    <li>00:1d.2 USB Controller: Intel Corporation 82801I (ICH9 Family) USB UHCI Controller #3 (rev 03)</li>
    <li>00:1d.7 USB Controller: Intel Corporation 82801I (ICH9 Family) USB2 EHCI Controller #1 (rev 03)</li>
    <li>00:1e.0 PCI bridge: Intel Corporation 82801 Mobile PCI Bridge (rev 93)</li>
    <li>00:1f.0 ISA bridge: Intel Corporation ICH9M-E LPC Interface Controller (rev 03)</li>
    <li>00:1f.2 SATA controller: Intel Corporation ICH9M/M-E SATA AHCI Controller (rev 03)</li>
    <li>00:1f.3 SMBus: Intel Corporation 82801I (ICH9 Family) SMBus Controller (rev 03)</li>
    <li>03:00.0 Network controller: Realtek Semiconductor Co., Ltd. Device 8172 (rev 10)</li>
    <li>04:00.0 Memory controller: Intel Corporation Turbo Memory Controller (rev 11)</li>
    <li>05:00.0 SD Host controller: Ricoh Co Ltd Device e822 (rev 01)</li>
    <li>05:00.1 System peripheral: Ricoh Co Ltd Device e230 (rev 01)</li>
</ul>
注意03:00.0这一行，竟然是Realtek的8172，对应Windows下的型号是8192，Lenovo什么时候把T400s原本的无线芯片配置(Intel WiMAX/WiFi Link 5xxx)换成了Realtek 8172的？难怪没有无线，这块网卡的驱动还没有被Linux内核直接支持，需要手工安装。网上搜到很多方案，比如ndiswrapper+win版驱动等等，但这个Ubuntu LaunchPad上的方案[1]看上去最靠谱，还等什么，开工吧。<br />
<ul>
    <li>首先下载驱动: http://launchpadlibrarian.net/34090404/rtl8192se_linux_2.6.0010.1012.2009_64bit.tar.gz</li>
    <li>解压后进入rtl8192se_linux_2.6.0010.1020.2009_64bit子目录，make</li>
    <li>成功后在HAL/rtl8192下能够找到r8192se_pci.ko文件，cp至/lib/modules/`uname -r`/kernel/drivers/net/wireless/</li>
    <li>然后将固件相关文件，即firmware/RTL8192SE目录，cp至/lib/firmware/`uname -r`/</li>
    <li>执行命令depmod -a重新扫描module依赖关系</li>
    <li>执行命令modprobe r8192se_pci加载该module，这一步完成以后NetworkManager就可以搜到无线网络并进行连接了</li>
</ul>
好了，到此最大的拦路虎已经消灭，开始装别的软件吧。就在这时，新的问题出现了，dmesg可以看到重复出现的如下报错/警告信息：<br />
<ul>
    <li>[ 483.431670] DMA: Out of SW-IOMMU space for 9100 bytes at device 0000:0e:00.0</li>
    <li>[ 483.435783] DMA: Out of SW-IOMMU space for 9100 bytes at device 0000:0e:00.0</li>
    <li>[ 483.439867] DMA: Out of SW-IOMMU space for 9100 bytes at device 0000:0e:00.0</li>
    <li>...</li>
</ul>
通常经过数分钟的积累，系统就死机了，只剩下CapsLock键上的小灯不停闪烁，典型的kernel panic? 根据网友提供的线索[2]，由于Intel的64位实现虽是参考AMD64但细节有差异，所以在实际内存大于等于4G的环境下，某些未考虑到该特性的代码会leak memory，怎么办？增加内核启动参数mem=4G iommu=off，一方面限定内存范围，另一方面关闭IOMMU。<br />
<br />
经过测试，这样的配置下系统和无线网络都能够持续稳定运行。系统安装到此，一个大的里程碑达成，唯一的缺憾是每次kernel升级，可能还需要手工做一些工作，且暂时不能既开无线又开4G以上内存，不过这样总好过没有无线，或者缴枪投降，不是吗？本想多骂几句Lenovo，好好的Intel芯片不用，要换Realtek，但转念一想，这已是既成事实，而且看到很多其他型号的ThinkPad，如R500、SL400等，也有不少用上了Realtek的这款无线芯片，让我们一起期待稳定可靠的驱动最终被Linux内核支持的那一天吧。<br />
<br />
参考链接: <br />
[1] <a href="https://bugs.launchpad.net/ubuntu/+source/linux/+bug/401126" target="_blank">https://bugs.launchpad.net/ubuntu/+source/linux/+bug/401126</a><br />
[2] <a href="http://lwn.net/Articles/91870/" target="_blank">http://lwn.net/Articles/91870/</a><a><br />
<br />
</a>
<img src ="http://www.blogjava.net/sean/aggbug/307346.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/sean/" target="_blank">laogao</a> 2009-12-26 11:14 <a href="http://www.blogjava.net/sean/archive/2009/12/26/307346.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>[Tips] DIY制表符键自动补全(bash)</title><link>http://www.blogjava.net/sean/archive/2009/06/01/279316.html</link><dc:creator>laogao</dc:creator><author>laogao</author><pubDate>Sun, 31 May 2009 16:11:00 GMT</pubDate><guid>http://www.blogjava.net/sean/archive/2009/06/01/279316.html</guid><wfw:comment>http://www.blogjava.net/sean/comments/279316.html</wfw:comment><comments>http://www.blogjava.net/sean/archive/2009/06/01/279316.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.blogjava.net/sean/comments/commentRss/279316.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/sean/services/trackbacks/279316.html</trackback:ping><description><![CDATA[各位童鞋们过节好啊，今天给大家带来的是在bash中DIY制表符键自动补全。<br>
<br>
bash是大多数主流Linux发行版的默认shell，如果你用过bash，那么一定会接触到&lt;tab&gt;键自动补全的这个方便的功能，当你一个命令的头几个字符敲下去，按下&lt;tab&gt;，如果以此开头的命令只有1个， bash会直接帮你补全，如果有多个，则会有相应提示，而在后续的参数输入时，也会带有默认的自动补全文件路径的功能。当你习惯了&lt;tab&gt;，很难想象没有自动补全的日子会是什么样子。<br>
<br>
bash默认支持常见的补全功能，如可执行命令、文件路径等，如果安装了bash-completion包，甚至连chown, man, svn, ssh这些也会带有相应的自动补全提示，而不是单纯的文件路径补全。好奇的你一定想知道是怎么实现的吧，其实很简单，我们举个例子来说：<br>
<br>
假定你有一个命令，叫做abc，它又有自己的子命令，分别是build_all、compile和update，其中compile这个子命令需要的参数必须来自project.list这个文件中列出的值，怎么实现&lt;tab&gt;自动补全，让bash知道abc的合法子命令和compile子命令的合法参数列表呢？<br>
<br>
在你的~/.bashrc或者任何一个启动bash时会被执行的文件中加入下面的代码：<br>
<br>
function _abc() {<br>
&nbsp;&nbsp;&nbsp;&nbsp;COMPREPLY=()<br>
&nbsp;&nbsp;&nbsp;&nbsp;local cur=${COMP_WORDS[COMP_CWORD]};<br>
&nbsp;&nbsp;&nbsp;&nbsp;local com=${COMP_WORDS[COMP_CWORD-1]};<br>
&nbsp;&nbsp;&nbsp;&nbsp;case $com in<br>
&nbsp;&nbsp;&nbsp;&nbsp;'abc')<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;COMPREPLY=($(compgen -W 'build_all compile update' -- $cur))<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;;;<br>
&nbsp;&nbsp;&nbsp;&nbsp;'compile')<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;local pro=($(awk '{print $1}' project.list))<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;COMPREPLY=($(compgen -W '${pro[@]}' -- $cur))<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;;;<br>
&nbsp;&nbsp;&nbsp;&nbsp;*)<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;;;<br>
&nbsp;&nbsp;&nbsp;&nbsp;esac<br>
&nbsp;&nbsp;&nbsp;&nbsp;return 0<br>
}<br>
<br>
complete -F _abc abc<br>
<br>
手动载入一下，或者重启bash，再敲abc命令，即可自动补全子命令，如果子命令是compile，还能自动补全相应的参数值。我们来简单分析一下这段代码。首先我们定义一个function _abc，这个函数先清空自动补全列表，根据当前输入位置前一个token判断目前需要自动补全的语境，如果是abc，则将自动补全内容设置为'build_all'、'compile'和'update'，如果是'compile'，则将project.list文件内容输出到补全列表，当然，这里我们也可以换成其他任何必要的方式。最后我们通过complete -F _abc abc将这段自动补全逻辑注册到abc这个主词上。这样当我们敲abc时，后续内容就能自动补全了。<br>
<br>
Enjoy!<br>
<br><img src ="http://www.blogjava.net/sean/aggbug/279316.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/sean/" target="_blank">laogao</a> 2009-06-01 00:11 <a href="http://www.blogjava.net/sean/archive/2009/06/01/279316.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>[Tips] Wake-on-LAN</title><link>http://www.blogjava.net/sean/archive/2009/03/18/260576.html</link><dc:creator>laogao</dc:creator><author>laogao</author><pubDate>Wed, 18 Mar 2009 12:03:00 GMT</pubDate><guid>http://www.blogjava.net/sean/archive/2009/03/18/260576.html</guid><wfw:comment>http://www.blogjava.net/sean/comments/260576.html</wfw:comment><comments>http://www.blogjava.net/sean/archive/2009/03/18/260576.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/sean/comments/commentRss/260576.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/sean/services/trackbacks/260576.html</trackback:ping><description><![CDATA[
		<br />其实很早就听说有这个东东，只是一直没玩过，最近公司调整PC服务器，正好找个空闲实战了一把。基本的配置步骤如下(时间有限，挑简单的说，假定你要Wake-on-LAN的机器是Windows，控制服务器是Linux)：<br /><br /><b>[被控制方]</b><br />1- 正常开机进入BIOS设置<br />2- 找到Wake-on-LAN的选项enable它(如果是Dell的机器这个选项叫Remote Wake Up)<br />3- 进入OS，在需要配置Wake-on-LAN的网络端口的配置项中(网络连接属性-&gt;配置-&gt;电源管理)，选择允许此设备使计算机脱离待机状态<br />4- 记录网卡的MAC地址<br />5- 正常关机<br />// 如果被控制方是Linux/Ubuntu，OS的配置方法参考链接[4]<br /><br /><b>[控制方]</b><br />1- 安装wakeonlan，可以选择(如果有的选) apt-get install wakeonlan，或者从链接[3]获取源码手工安装（是Perl写的）<br />2- 通过wakeonlan+MAC地址的命令行方式控制需要wake up的机器，如 wakeonlan 01:23:45:67:89:AB<br />// 更高级的用法包括编写脚本，添加到cron，以及通过-f指定一个包含多个MAC地址的文件同时操作等<br /><b><br />[基本原理]</b><br />Wake-on-LAN的相关通信协议位于OSI七层模型中的数据链路层，比IP需要的网络层还要低一层，在局域网范围发送广播，数据包格式为：<br />FF FF FF FF FF FF $MAC*16<br />即 FF FF FF FF FF FF然后重复16次对方的MAC地址，被戏称为"magic packet"。<br /><br />配置成功后，只要被控制方正常关机、挂起、休眠，且环境始终不掉电，任何时候在局域网中广播"magic packet"，指定网卡的机器就可以被唤醒。<br /><i><br />链接:</i><br />[1] <a target="_blank" title="http://en.wikipedia.org/wiki/Wake-on-LAN" href="http://en.wikipedia.org/wiki/Wake-on-LAN">http://en.wikipedia.org/wiki/Wake-on-LAN</a><br />[2] <a target="_blank" title="http://en.wikipedia.org/wiki/OSI_model" href="http://en.wikipedia.org/wiki/OSI_model">http://en.wikipedia.org/wiki/OSI_model</a><br />[3] <a target="_blank" title="http://gsd.di.uminho.pt/jpo/software/wakeonlan/" href="http://gsd.di.uminho.pt/jpo/software/wakeonlan/">http://gsd.di.uminho.pt/jpo/software/wakeonlan/<br /></a>[4] <a target="_blank" title="http://ubuntuforums.org/showthread.php?t=234588" href="http://ubuntuforums.org/showthread.php?t=234588">http://ubuntuforums.org/showthread.php?t=234588<br /></a><br /><br /><img src ="http://www.blogjava.net/sean/aggbug/260576.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/sean/" target="_blank">laogao</a> 2009-03-18 20:03 <a href="http://www.blogjava.net/sean/archive/2009/03/18/260576.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>[Tips] openSUSE 11.1安装w32codec-all和MPlayer后仍无法正常播放rmvb格式视频的解决方法</title><link>http://www.blogjava.net/sean/archive/2008/12/20/247426.html</link><dc:creator>laogao</dc:creator><author>laogao</author><pubDate>Sat, 20 Dec 2008 00:11:00 GMT</pubDate><guid>http://www.blogjava.net/sean/archive/2008/12/20/247426.html</guid><wfw:comment>http://www.blogjava.net/sean/comments/247426.html</wfw:comment><comments>http://www.blogjava.net/sean/archive/2008/12/20/247426.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.blogjava.net/sean/comments/commentRss/247426.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/sean/services/trackbacks/247426.html</trackback:ping><description><![CDATA[
		<br />和11.0一样的问题，当你在openSUSE 11.1中配置好Packman资源库后，就能直接通过YaST2安装w32codec-all和MPlayer，不过这样并不能正常播放常见的rmvb格式视频，MPlayer报告找不到匹配的video解码包，声音能听到，但图像出不来。<br /><br />解决方法是：<br /><br />去Real的官方网站（选US站、免费播放器下载、Unix版）下载最新的RealPlayer 11安装包，文件名RealPlayer11GOLD.bin，到本地后chmod u+x，执行该文件进行安装，按照提示，安装路径指定为/usr/lib/RealPlayer10 （注意这里是MPlayer提示的路径，不是笔误）。完成安装后再次使用MPlayer即可正常播放。<br /><br /><br /><img src ="http://www.blogjava.net/sean/aggbug/247426.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/sean/" target="_blank">laogao</a> 2008-12-20 08:11 <a href="http://www.blogjava.net/sean/archive/2008/12/20/247426.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>[News] openSUSE 11.1 Released</title><link>http://www.blogjava.net/sean/archive/2008/12/18/247225.html</link><dc:creator>laogao</dc:creator><author>laogao</author><pubDate>Thu, 18 Dec 2008 14:23:00 GMT</pubDate><guid>http://www.blogjava.net/sean/archive/2008/12/18/247225.html</guid><wfw:comment>http://www.blogjava.net/sean/comments/247225.html</wfw:comment><comments>http://www.blogjava.net/sean/archive/2008/12/18/247225.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/sean/comments/commentRss/247225.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/sean/services/trackbacks/247225.html</trackback:ping><description><![CDATA[
		<br />就在数分钟之前，openSUSE 11.1正式release了，主要的新特性包括：<br /><br />Linux Kernel 2.6.27.8rc1<br />GCC 4.3.2<br />glibc 2.9<br />X.Org 7.4<br />Virtual Box 2.0.6 <br />PostgreSQL 8.3.5<br />MySQL 5.0.67<br />Eclipse 3.4 <br />gtk+ 2.14.4<br />Python 2.6.0<br />Ruby 1.8.7<br />Perl 5.10.0<br />Mono 2.0.1<br />Qt 4.4.3<br />PHP 5.2.6<br />openJDK 1,2b11<br />KDE 4.1.3 + 3.5.10<br />Firefox 3.0.4<br />OpenOffice 3.0<br />KOffice 1.6.3<br />Mono 2.0.1<br />GIMP 2.6.2<br />...<br /><br /><b>更多内容<br /></b>openSUSE主页: <a target="_blank" title="http://www.opensuse.org/en/" href="http://www.opensuse.org/en/">http://www.opensuse.org/en/</a><br />11.1功能清单: <a target="_blank" title="http://en.opensuse.org/Featurelist_11.1" href="http://en.opensuse.org/Featurelist_11.1">http://en.opensuse.org/Featurelist_11.1</a><br />下载页: <a target="_blank" title="http://software.opensuse.org/" href="http://software.opensuse.org/">http://software.opensuse.org/</a><br /><br /><br /><img src ="http://www.blogjava.net/sean/aggbug/247225.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/sean/" target="_blank">laogao</a> 2008-12-18 22:23 <a href="http://www.blogjava.net/sean/archive/2008/12/18/247225.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>So long, Ubuntu!</title><link>http://www.blogjava.net/sean/archive/2008/05/02/197760.html</link><dc:creator>laogao</dc:creator><author>laogao</author><pubDate>Fri, 02 May 2008 09:35:00 GMT</pubDate><guid>http://www.blogjava.net/sean/archive/2008/05/02/197760.html</guid><wfw:comment>http://www.blogjava.net/sean/comments/197760.html</wfw:comment><comments>http://www.blogjava.net/sean/archive/2008/05/02/197760.html#Feedback</comments><slash:comments>3</slash:comments><wfw:commentRss>http://www.blogjava.net/sean/comments/commentRss/197760.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/sean/services/trackbacks/197760.html</trackback:ping><description><![CDATA[
		<br />最近在家休息，想来Ubuntu新的LTS版本8.04已经出来一周多了，试试看吧，正好想给家里的服务器来一次升级，未曾想这一试让我彻底和Ubuntu说了bye bye。<br /><br />我的主打机器是一台T43，在3月下旬，这台ThinkPad就彻底从Ubuntu变脸成了Arch Linux，运行至今，十分稳定，要速度有速度，要功能有功能，简单而强大，让人爱不释手。我家里有一台"老"机器，AMD Athlon 2500+ / 512M，先后装过SuSE、Fedora、CentOS、Debian、Ubuntu 7.10，由于很长一段时间以来都比较忙，没时间去折腾，在最后这次开刀之前，定格在了Gusty Gibbon。<br /><br />说回这次开刀。趁休假有时间，我打算再整理/升级一下这台服务器，正好Ubuntu 8.04 LTS出来，冲着省事（平时难有时间去折腾）和LTS，我想这应该还是比较自然的一个选择。安装过程很顺利，该找到的硬件都找到，一切都还像是Ubuntu在7.10基础上正常的一次升级版，谁知刚配置完几个我常用的应用程序/服务，就遇到了严重的问题：系统会随机（通常几分钟时间）锁住，没有反应，键盘灯和鼠标灯还有反应，但是屏幕定格，Ctrl-Alt-Backspace或者Ctrl-Alt-F1等等，都不管用了，什么提示都没有。硬件问题？不像啊，之前的Gusty跑得很好。网上一搜，好家伙，还是普遍现象：<br /><br /><a target="_blank" title="http://ubuntuforums.org/showthread.php?t=768200" href="http://ubuntuforums.org/showthread.php?t=768200">http://ubuntuforums.org/showthread.php?t=768200</a><br /><br />没想到拿LTS的正式ISO安装，还是无奈的做了一次小白鼠，对Ubuntu印象因此大打折扣。算了吧，装回熟悉的Debian，一切又恢复安静。从今天起，我的Linux推荐榜调整为：公司服务器 - CentOS、个人服务器 - Debian、个人桌面 - Arch Linux。<br /><br />So long, Ubuntu!<br /><br /><br /><img src ="http://www.blogjava.net/sean/aggbug/197760.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/sean/" target="_blank">laogao</a> 2008-05-02 17:35 <a href="http://www.blogjava.net/sean/archive/2008/05/02/197760.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>[链接] KDE 4.1: Visual Changelog (rev 783000)</title><link>http://www.blogjava.net/sean/archive/2008/03/12/185525.html</link><dc:creator>laogao</dc:creator><author>laogao</author><pubDate>Tue, 11 Mar 2008 16:27:00 GMT</pubDate><guid>http://www.blogjava.net/sean/archive/2008/03/12/185525.html</guid><wfw:comment>http://www.blogjava.net/sean/comments/185525.html</wfw:comment><comments>http://www.blogjava.net/sean/archive/2008/03/12/185525.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/sean/comments/commentRss/185525.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/sean/services/trackbacks/185525.html</trackback:ping><description><![CDATA[
		<br />一篇关于目前开发中的KDE 4.1最新进展介绍<br /><a target="_blank" title="http://polishlinux.org/kde/kde-41-visual-changelog-rev-783000/" href="http://polishlinux.org/kde/kde-41-visual-changelog-rev-783000/">http://polishlinux.org/kde/kde-41-visual-changelog-rev-783000/</a><br /><br />看上去挺不错的，有了KDE 4的基础，从4.1开始，一些之前来不及polish的地方开始逐渐被弥补。<br /><br /><br /><img src ="http://www.blogjava.net/sean/aggbug/185525.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/sean/" target="_blank">laogao</a> 2008-03-12 00:27 <a href="http://www.blogjava.net/sean/archive/2008/03/12/185525.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>[Tips] 移植Oracle数据库到PostgreSQL的要点</title><link>http://www.blogjava.net/sean/archive/2008/03/11/185510.html</link><dc:creator>laogao</dc:creator><author>laogao</author><pubDate>Tue, 11 Mar 2008 15:04:00 GMT</pubDate><guid>http://www.blogjava.net/sean/archive/2008/03/11/185510.html</guid><wfw:comment>http://www.blogjava.net/sean/comments/185510.html</wfw:comment><comments>http://www.blogjava.net/sean/archive/2008/03/11/185510.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/sean/comments/commentRss/185510.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/sean/services/trackbacks/185510.html</trackback:ping><description><![CDATA[
		<br />最近尝试把一个Oracle数据库，连同构建在这个数据库上的Java应用移植到PostgreSQL环境。在移植过程中，总结了一些要点，一方面作为笔记备忘，一方面也给有类似任务需要处理而又无从下手的朋友作为参考。<br /><br />1- 首先是准备PostgreSQL环境。有条件的话，最好是找一台空闲的PC机作为测试服务器，安装Linux或BSD，然后从源码编译最新的PostgreSQL 8.3.0。编译时，通过configure指定--with-perl和--with-python以支持PL/Perl和PL/Python。因为绝大多数Linux发行版都已自带Perl和Python，不必额外安装。<br /><br />2- 如果是Windows环境，又需要Perl和Python，则必须额外安装，Python的话，可以方便的找到2.5 for Windows的安装包，Perl的话，推荐ActivePerl，相对麻烦一点，为了后面用到的一些便利的功能顺利加载，Perl版本尽量选5.8.8。<br /><br />3- 创建数据库和用户。通过initdb初始化数据目录，配置postgresql.conf指定主机IP、端口等等信息，配置pg_hba.conf指定访问权限，通过pg_ctl -D &lt;数据目录&gt; -l &lt;日志文件&gt; start启动postmaster，然后createdb、createuser创建数据库和用户。数据库建好之后，就可以createlang -d &lt;数据库名&gt; [plperl|plperlu|plpython|plpythonu]开启PL/Perl和PL/Python。具体命令行参数可通过各命令加--help查看。<br /><br />4- 安装PostgreSQL客户端pgAdminIII，最新版是1.8.2，有条件的话，也可以下载源码自己编译。<br /><br />5- 安装Oracle客户端，需要在PostgreSQL同一台机器，以便Perl用于连接数据库的DBI和Oracle驱动DBD::Oracle模块顺利安装。如果是Windows上的ActivePerl，则可以通过ppm install DBD-Oracle，如果是Linux/BSD，则可以通过CPAN来安装，如perl -MCPAN -e shell进入CPAN Shell，通过install &lt;模块名&gt;或force install &lt;模块名&gt;安装DBI和DBD::Oracle。<br /><br />6- 数据库的移植，可以选择ora2pg来帮忙，目前的版本是4.7。ora2pg是一个用于读取Oracle数据库schema、数据，并生成PostgreSQL脚本或直接导入PostgreSQL数据库的Perl工具。用法很简单，就是通过.conf文件指定数据库连接信息包括NLS_LANG、需要导出导入的schema、table、view、data等等，然后执行一个pl脚本。这是目前相对比较成熟的一个方案，但是遇到schema复杂、约束较强的数据库，需要手工处理的地方还是不少。建议不要直接写入PostgreSQL，而是生成SQL脚本，验证无误后再执行。ora2pg默认会把Oracle中名称的大写转换成小写，因为PostgreSQL在解析SQL时，除非""括起来，默认都是转成小写。schema、table、view、sequence、data等等，基本用ora2pg，加上一些手工调整即可搞定。至于function、stored procedure等，还是手工移吧，偷不得懒。除了ora2pg，其实也可以配置DBI-Link，将Oracle数据库挂到PostgreSQL数据库作为一组独立的"schema"，然后用create table xxx as select ... from ...这样的语法来倒表和数据。PostgreSQL的contrib包也附带有一个dblink，不过是连接其他PostgreSQL数据库的，如果需要连接非PostgreSQL，
还是考虑DBI-Link，任何可以通过Perl的DBI接口访问的数据库，都能link进PostgreSQL。<br /><br />7- 接下来就是Java应用本身了，我这次移的这个应用是Spring+iBatis架构的，很多SQL语句都是明文，好在DAO层的基础部分(CRUD)的SQLMap是工具自动生成，且都是符合ANSI SQL92标准的，不需要修改即可使用。其余的高级查询SQL，需要调整的地方不少，一些常见的修改列举如下：<br /><br />i. SELECT出来的column（包括子查询），如果有别名，必须加AS，比如 select null as some_column from some_table;<br />ii. PostgreSQL没有dual表，类似select 0 from dual的语句，写成select 0即可;<br />iii. DECODE函数需要重构成(case when some_column = 'some_value' then 'some_other_value' when ... then ... else 'some_default_value' end ) as some_column;<br />iv. NVL()函数，PostgreSQL中相对应的是coalesce()，其实几乎所有主流DBMS都支持coalesce，包括Oracle，这才是标准写法;<br />v. 比较日期，在PostgreSQL中，建议使用date_trunc('day', SOME_DATE) = date_trunc('day', #enteredDate#)这样的写法，其中'day'位置可选字段包括有year、month、week、hour、minute、second等等;<br />vi. SYSDATE，对应到PostgreSQL是current_timestamp，可以根据需要使用current_date;<br />vii. ROWNUM，通常我们用ROWNUM都是为了限制查询出来的记录数，PostgreSQL没有这个关键字，需要改成在SELECT语句最后添加 LIMIT语句，如LIMIT 100;<br />viii. (+)这样的外连接写法需要调整为SQL标准的 table1 [LEFT|RIGHT|FULL] OUTER JOIN table2 ON (...);<br />ix. CONNECT BY ... START WITH ... 递归查询可以参考 http: //www.postgresql.org/docs/8.3/static/tablefunc.html 的connectby()函数.<br /><br />最后再多提一点，PostgreSQL自带的过程语言是PL/pgSQL，在PostgreSQL上写function，除了用plpqsql，还支持sql、plperl(u)、plpython(u)等等。如果你对SQL天生过敏，看类似PL/pgSQL的代码都很吃力，别说是写了，你完全可以用你喜欢的语言来表达函数和存储过程的逻辑。有了PL/Python，你还怕什么呢？你几乎能做任何事。<br /><br />[更新 20080313] 把JDBC驱动的部分漏掉了，移植Java应用时，除了改SQL，还需要拿PostgreSQL的JDBC驱动放到classpath下面，如WEB-INF/lib，然后修改数据库连接URL，改成jdbc:postgresql://&lt;ip&gt;:&lt;port&gt;/&lt;dbname&gt;即可。<br /><br />[更新 20080323] 移植schema和数据时，比ora2pg更方便的一种方式是利用EnterpriseDB的Migration Tool，将Oracle的JDBC驱动ojdbc14.jar拷贝到EnterpriseDB安装路径下的jre/lib/ext下后，启动Developer Studio即可建立Oracle连接，选中schema后，可以通过右键Online Migration将schema、数据、函数包等等一次性通通导入EnterpriseDB。如果要继续往"纯"PostgreSQL移，从EDB做backup，然后到PostgreSQL下做restore，这样会丢掉函数包，因为毕竟EDB在PostgreSQL基础上做了相当改造以和Oracle兼容，不过函数包之类还是手工移比较稳妥。<br /><br /><br /><img src ="http://www.blogjava.net/sean/aggbug/185510.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/sean/" target="_blank">laogao</a> 2008-03-11 23:04 <a href="http://www.blogjava.net/sean/archive/2008/03/11/185510.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>[Tips] Linux下挂载中文Windows共享目录</title><link>http://www.blogjava.net/sean/archive/2008/01/18/176166.html</link><dc:creator>laogao</dc:creator><author>laogao</author><pubDate>Fri, 18 Jan 2008 04:54:00 GMT</pubDate><guid>http://www.blogjava.net/sean/archive/2008/01/18/176166.html</guid><wfw:comment>http://www.blogjava.net/sean/comments/176166.html</wfw:comment><comments>http://www.blogjava.net/sean/archive/2008/01/18/176166.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/sean/comments/commentRss/176166.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/sean/services/trackbacks/176166.html</trackback:ping><description><![CDATA[
		<br />使用Linux很便利的一个地方，就是它把所有资源都按照文件的方式抽象出来，于是我们在读写任何外部资源时，都像是操作本地普通文件一样。访问Windows共享，除了在Nautilus/Konquerer使用smb://，或者命令行使用smbclient之外，当然还有更cool的方式，那就是smbmount。<br /><br />在Ubuntu下使用smbmount，需要安装smbfs包，通过sudo apt-get install smbfs即可。调用方法如下，新建/share目录后：<br />$ [sudo] smbmount //10.10.10.10/share /share -o username=&lt;user_name&gt;,password=&lt;password&gt;,codepage=cp936,iocharset=ut8<br /><br />注意最后两个参数，Linux默认是UTF-8编码，中文Windows则是GBK，按codepage划分，也就是cp936。如果你的环境和上述不一致，则需要相应的修改codepage和iocharset参数。成功以后，我们就可以通过熟悉的ls, cp, cat, less, more, mv, zip, tar, rm, rename, nano, vi等等我们在Linux下已经习以为常的方式来操作了，就和本地文件夹一样。<br /><br />如果想在Linux启动时自动把Windows共享挂进来，则可以修改/etc/fstab，增加如下内容：<br />//10.10.10.10/share /share smbfs username=&lt;user_name&gt;,password=&lt;password&gt;,codepage=cp936,iocharset=ut8,umask=000 0 0<br /><br /><br /><img src ="http://www.blogjava.net/sean/aggbug/176166.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/sean/" target="_blank">laogao</a> 2008-01-18 12:54 <a href="http://www.blogjava.net/sean/archive/2008/01/18/176166.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Hello, Gusty Gibbon!</title><link>http://www.blogjava.net/sean/archive/2007/12/22/169664.html</link><dc:creator>laogao</dc:creator><author>laogao</author><pubDate>Sat, 22 Dec 2007 15:57:00 GMT</pubDate><guid>http://www.blogjava.net/sean/archive/2007/12/22/169664.html</guid><wfw:comment>http://www.blogjava.net/sean/comments/169664.html</wfw:comment><comments>http://www.blogjava.net/sean/archive/2007/12/22/169664.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/sean/comments/commentRss/169664.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/sean/services/trackbacks/169664.html</trackback:ping><description><![CDATA[
		<br />前段时间工作比较忙，想来Gusty Gibbon也已经出来2个月了，还没来得及好好把玩，这周终于有点时间和精力把它下载下来安装到本本上。<br /><br />这个版本用下来最直接的感受有两点：<br />1- 默认的中文字体支持更好了，一方面字体的处理更加协调一致，不像之前默认时经常中文字符一大一小的，默认采用英文字体时对中文的显示也做的不错。<br />2- Compiz和Beryl复和之后，成了Ubuntu新的标配，省得大家费力折腾从其他的apt源或者源码安装了。<br /><br />当然了，其他细微的改进还有很多，比如Pidgin、默认的ntfs-3g、keyring的处理、闭源的驱动和codecs等等。总的来说，Gusty Gibbon在Feisty Fawn基础上，更加成熟，也让我们对明年4月的Hardy Heron这个在6.06之后第二个LTS版本有了更多的期待。<br /><br />这里有一个截图，很多东东还没有装，基本上也没花太多时间去hack，感觉就已经挺漂亮，也挺好用的了，呵呵:<br /><img src="http://www.blogjava.net/images/blogjava_net/sean/screenshot_20071222.png" alt="screenshot_20071222.png" border="0" height="420" width="560" /><br /><br />BTW，AWN(Avant Window Navigator)已经确认会包含在明年8.04(Hardy Heron)默认的apt源中，这对AWN fans们，以及所有喜欢"eye candy"但又不愿花时间去折腾的朋友们来说，无疑是个好消息。<br /><br /><br /><img src ="http://www.blogjava.net/sean/aggbug/169664.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/sean/" target="_blank">laogao</a> 2007-12-22 23:57 <a href="http://www.blogjava.net/sean/archive/2007/12/22/169664.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title> [新闻] 联想将于今年第四季度发售预装Linux的ThinkPad</title><link>http://www.blogjava.net/sean/archive/2007/08/07/135071.html</link><dc:creator>laogao</dc:creator><author>laogao</author><pubDate>Tue, 07 Aug 2007 13:09:00 GMT</pubDate><guid>http://www.blogjava.net/sean/archive/2007/08/07/135071.html</guid><wfw:comment>http://www.blogjava.net/sean/comments/135071.html</wfw:comment><comments>http://www.blogjava.net/sean/archive/2007/08/07/135071.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.blogjava.net/sean/comments/commentRss/135071.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/sean/services/trackbacks/135071.html</trackback:ping><description><![CDATA[
		<br />
据外电报道，继Dell发布预装Ubuntu的PC和笔记本电脑之后，联想也宣布将于今年第四季度开始发售预装SuSE Linux
Enterprise Desktop
10的ThinkPad笔记本电脑，硬件和操作系统均由联想向客户提供支持，操作系统升级则由Novell提供。值得注意的是，与Dell面向Linux
爱好者和个人用户不同，联想这次更多的是针对企业用户。<br /><br />
对于广大Linux爱好者来说，这可是个不错的消息哦。<br /><br />
详见:<br /><a href="http://www.reghardware.co.uk/2007/08/06/lenovo_linux/" target="_blank">http://www.reghardware.co.uk/2007/08/06/lenovo_linux/</a><br /><br /><br /><img src ="http://www.blogjava.net/sean/aggbug/135071.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/sean/" target="_blank">laogao</a> 2007-08-07 21:09 <a href="http://www.blogjava.net/sean/archive/2007/08/07/135071.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Oracle 11g今年8月登陆Linux</title><link>http://www.blogjava.net/sean/archive/2007/07/14/130252.html</link><dc:creator>laogao</dc:creator><author>laogao</author><pubDate>Sat, 14 Jul 2007 04:31:00 GMT</pubDate><guid>http://www.blogjava.net/sean/archive/2007/07/14/130252.html</guid><wfw:comment>http://www.blogjava.net/sean/comments/130252.html</wfw:comment><comments>http://www.blogjava.net/sean/archive/2007/07/14/130252.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/sean/comments/commentRss/130252.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/sean/services/trackbacks/130252.html</trackback:ping><description><![CDATA[
		<br />
来自PC World的报道:<br /><a href="http://www.pcworld.com/article/id,134381-c,databases/article.html" target="_blank">http://www.pcworld.com/article/id,134381-c,databases/article.html</a><br /><br /><br /><img src ="http://www.blogjava.net/sean/aggbug/130252.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/sean/" target="_blank">laogao</a> 2007-07-14 12:31 <a href="http://www.blogjava.net/sean/archive/2007/07/14/130252.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>[Tips] 在Linux环境下调整Eclipse中树状列表(GtkTreeView)的显示密度</title><link>http://www.blogjava.net/sean/archive/2007/06/09/123109.html</link><dc:creator>laogao</dc:creator><author>laogao</author><pubDate>Sat, 09 Jun 2007 14:46:00 GMT</pubDate><guid>http://www.blogjava.net/sean/archive/2007/06/09/123109.html</guid><wfw:comment>http://www.blogjava.net/sean/comments/123109.html</wfw:comment><comments>http://www.blogjava.net/sean/archive/2007/06/09/123109.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.blogjava.net/sean/comments/commentRss/123109.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/sean/services/trackbacks/123109.html</trackback:ping><description><![CDATA[
		<br />
如果你在Windows和Linux两个平台下都使用过Eclipse，那么你一定注意到Windows下Eclipse项目列表的显示要比Linux下
紧凑许多。对于做开发的朋友来讲，在屏幕上同时看到的信息总是希望尽可能多，尽可能全，在这一点上目前的GNOME并不能让我们十分满意，它的GTK+控
件本身和控件之间的间隙占掉了不少本来就很有限的屏幕空间，尤其当屏幕分辨率不是特别高的时候。<br /><br />
Linux版的Eclipse默认使用GTK+2.0的控件，所以在默认的情况下，会和其他GTK应用程序（如OpenOffice.org）一样给人一
种不够密实的感觉。当然，这和GNOME的设计哲学不无关系，不过这不是本文主旨，就不深入讨论了，进入正题讲讲如何调整Eclipse树状列表的显示密
度。<br /><br />
基于GTK+2.0的程序在启动时会到用户的home目录找GTK+2.0的配置文件，即~/.gtkrc-2.0，Ubuntu下默认没有这个文件，需要我们自己创建。打开你习惯的编辑器，加入如下代码：<br /><br />
style "eclipse" {<br />
  font_name="Sans 8"<br />
  GtkTreeView::vertical-separator=0<br />
  GtkTreeView::horizontal-separator=0<br />
}<br />
class "GtkTreeView" style "eclipse"<br /><br />
重启Eclipse应该就能看到效果了。如果你想做得更彻底，对所有常用的GTK+2.0控件都开刀的话，可以这样写：<br /><br />
style "gtkcompact" {<br />
  font_name="Sans 8"<br />
  GtkButton::default_border={0,0,0,0}<br />
  GtkButton::default_outside_border={0,0,0,0}<br />
  GtkButtonBox::child_min_width=0<br />
  GtkButtonBox::child_min_heigth=0<br />
  GtkButtonBox::child_internal_pad_x=0<br />
  GtkButtonBox::child_internal_pad_y=0<br />
  GtkMenu::vertical-padding=1<br />
  GtkMenuBar::internal_padding=0<br />
  GtkMenuItem::horizontal_padding=4<br />
  GtkOptionMenu::indicator_size=0<br />
  GtkOptionMenu::indicator_spacing=0<br />
  GtkPaned::handle_size=4<br />
  GtkRange::trough_border=0<br />
  GtkRange::stepper_spacing=0<br />
  GtkScale::value_spacing=0<br />
  GtkScrolledWindow::scrollbar_spacing=0<br />
  GtkExpander::expander_size=10<br />
  GtkExpander::expander_spacing=0<br />
  GtkTreeView::vertical-separator=0<br />
  GtkTreeView::horizontal-separator=0<br />
  GtkTreeView::expander-size=8<br />
  GtkTreeView::fixed-height-mode=TRUE<br />
  GtkWidget::focus_padding=0<br />
}<br />
class "GtkWidget" style "gtkcompact"<br /><br /><br /><img src ="http://www.blogjava.net/sean/aggbug/123109.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/sean/" target="_blank">laogao</a> 2007-06-09 22:46 <a href="http://www.blogjava.net/sean/archive/2007/06/09/123109.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>[Tips] 解决Linux环境下SQL*Plus方向键无法使用的问题</title><link>http://www.blogjava.net/sean/archive/2007/06/07/122736.html</link><dc:creator>laogao</dc:creator><author>laogao</author><pubDate>Thu, 07 Jun 2007 14:13:00 GMT</pubDate><guid>http://www.blogjava.net/sean/archive/2007/06/07/122736.html</guid><wfw:comment>http://www.blogjava.net/sean/comments/122736.html</wfw:comment><comments>http://www.blogjava.net/sean/archive/2007/06/07/122736.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/sean/comments/commentRss/122736.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/sean/services/trackbacks/122736.html</trackback:ping><description><![CDATA[
		<br />
Linux下面使用Oracle的SQL*Plus工具有个挺恼人的问题：通过sqlplus命令进入到SQL*Plus控制台后，我们在Bash中已经
习以为常的上下左右键突然变成了^[[A^[[B^[[D^[[C这样的"乱码"。熟悉ksh的朋友肯定要说我们这是大惊小怪了，不过对于从
Windows平台转过来的一般用户而言，不小心按错一下就是4个错误的字符，而且历史命令也无法方便的回查了，确实挺郁闷的。<br /><br />
别着急，如果你的Linux是Debian或者Ubuntu/Kubuntu，直接sudo apt-get install
rlwrap安装这个小巧的readline扩展，然后就可以以rlwrap
sqlplus的方式进入方向键"正常"的SQL*Plus了。当然，如果嫌每次敲rlwrap不爽，可以在/etc/profile或者自己的
~/.bashrc里面添加alias sqlplus='rlwrap sqlplus'。其他发行版的朋友可以选择rpm包或者干脆从源码自己编译。<br /><br /><img src ="http://www.blogjava.net/sean/aggbug/122736.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/sean/" target="_blank">laogao</a> 2007-06-07 22:13 <a href="http://www.blogjava.net/sean/archive/2007/06/07/122736.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>[Tips] Ubuntu Feisty中修改nm-applet默认网络连接</title><link>http://www.blogjava.net/sean/archive/2007/05/13/117197.html</link><dc:creator>laogao</dc:creator><author>laogao</author><pubDate>Sun, 13 May 2007 15:34:00 GMT</pubDate><guid>http://www.blogjava.net/sean/archive/2007/05/13/117197.html</guid><wfw:comment>http://www.blogjava.net/sean/comments/117197.html</wfw:comment><comments>http://www.blogjava.net/sean/archive/2007/05/13/117197.html#Feedback</comments><slash:comments>2</slash:comments><wfw:commentRss>http://www.blogjava.net/sean/comments/commentRss/117197.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/sean/services/trackbacks/117197.html</trackback:ping><description><![CDATA[
		<br />
不知道大家注意到没有，Ubuntu Feisty自带的nm-applet有一个小毛病：一旦你通过它连上某个无线网络之后，不管你是不是点错了，或者说是不是真的需要保留这个连接的信息，它都会记录下这个网络ID，今后如果检测到这个网络，根据它自己排的优先级（最后一次成功连接，但有时候不准，或者说有可能在来回切换时不小心被弄乱），如果它排在前面，就会自动连上去，就算你手动选择另一个，它还是不依不饶的切回它认定的那一个。<br /><br />
遇到这个情况，我想许多朋友大概和我一样，在它提供的上下文菜单找，不过GNOME的界面哲学使得界面菜单直接提供的信息和高级功能很有限，或者到类似 /etc/*、~/.*/之类的地方找相关配置文件，但是实际上它也不是那么"传统"，因为nm-applet使用GConf来记录配置信息：<br /><br />
在命令行输入gconf-editor，打开GConf编辑器，定位到system -&gt; networking -&gt; wireless -&gt; networks，这个目录下记录了所有nm-applet使用的无线网络ID和相关配置信息，如果有不希望保留的配置，直接进到相关目录，右键逐个点击右面的key-value条目，Unset Key，完成以后就可以让nm-applet"忘掉"这个无线网络连接。当然，通过这个小工具，你也可以手工对某组具体的key-value做修改。<br /><br />
这件事也让我联想起Linus Torvalds不止一次（也包括不少KDE的死忠）对GNOME的微词：尽可能让用户自己掌控，还是尽可能帮用户拿主意？这是个问题。<br /><br /><br /><img src ="http://www.blogjava.net/sean/aggbug/117197.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/sean/" target="_blank">laogao</a> 2007-05-13 23:34 <a href="http://www.blogjava.net/sean/archive/2007/05/13/117197.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Dell to Choose Ubuntu</title><link>http://www.blogjava.net/sean/archive/2007/05/01/114947.html</link><dc:creator>laogao</dc:creator><author>laogao</author><pubDate>Tue, 01 May 2007 09:19:00 GMT</pubDate><guid>http://www.blogjava.net/sean/archive/2007/05/01/114947.html</guid><wfw:comment>http://www.blogjava.net/sean/comments/114947.html</wfw:comment><comments>http://www.blogjava.net/sean/archive/2007/05/01/114947.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/sean/comments/commentRss/114947.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/sean/services/trackbacks/114947.html</trackback:ping><description><![CDATA[
		<br />
		<a href="http://www.eweek.com/article2/0,1759,2124025,00.asp" target="_blank">http://www.eweek.com/article2/0,1759,2124025,00.asp</a>
		<br />
		<br />
相信大家都听说了Dell将在部分产品型号的PC和Laptop中预装Linux操作系统而非Windows，据eWeek的报道，该Linux操作系统将会是Ubuntu。<br /><br /><br /><img src ="http://www.blogjava.net/sean/aggbug/114947.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/sean/" target="_blank">laogao</a> 2007-05-01 17:19 <a href="http://www.blogjava.net/sean/archive/2007/05/01/114947.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>令人惊喜的Feisty，让人失望的Evolution</title><link>http://www.blogjava.net/sean/archive/2007/04/27/114214.html</link><dc:creator>laogao</dc:creator><author>laogao</author><pubDate>Fri, 27 Apr 2007 14:25:00 GMT</pubDate><guid>http://www.blogjava.net/sean/archive/2007/04/27/114214.html</guid><wfw:comment>http://www.blogjava.net/sean/comments/114214.html</wfw:comment><comments>http://www.blogjava.net/sean/archive/2007/04/27/114214.html#Feedback</comments><slash:comments>15</slash:comments><wfw:commentRss>http://www.blogjava.net/sean/comments/commentRss/114214.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/sean/services/trackbacks/114214.html</trackback:ping><description><![CDATA[
		<br />
上个周末的时候安装了最新的Ubuntu Feisty Fawn，给用了很久的Dapper来了一次彻底升级。第一印象是眼前一亮，打开默认自带的Compiz，对用惯了传统桌面系统的用户而言，毫不夸张的说，是全新的桌面体验。<br /><br />
花了个把小时样子简单调整了更新源、中文输入法、字体、区域选项等等，还上了比Compiz更强的Beryl，开始全面试用。经过一周的使用，包括工作和其他应用，感觉确实比6.06进步不少，尤其在桌面方面，比较明显的改善有：<br /><br />
1- 默认就支持Compiz，同时安装Beryl也非常容易。<br />
2- Shell中敲命令，如果出现尚未安装的常见软件包，会提示安装信息。<br />
3- Gaim默认增加了QQ支持。<br />
4- 新的NetworkManager Applet 0.6.4使得无线连接管理变得简单、直观、而且相当方便。<br />
5- OpenOffice.org更加完善，对中文支持更加友好，尤其是在中文字体宽度计算上的问题得到了解决。<br /><br />
总的来说，已经足够胜任日常工作的需要，而且十分简单易用。当然了，有些遗憾的是默认的邮件客户端Evolution并不能让人满意：<br /><br />
我原本一直使用Thunderbird，这次想给Evolution一次机会表现一下，它却不那么争气。本以为Novell和MS的东西集成应该不错，但是除了对日历、会议邀请的支持还算是亮点之外，并没有发现什么过人之处，而对TNEF的支持就有点贻笑大方了，Thunderbird都能正确处理的Winmail.dat附件，在Evolution下基本就是一个字：挂，连另存然后外部tnef处理都无法搞定，因为出来的东西已经不是tnef格式，搞不懂Evolution为什么要做这一层额外的处理。<br /><br />
于是准备切回Thunderbird，更令人感到困惑的事情出现了：在Evolution下辛辛苦苦录入的联系人信息，居然无法导出一个简简单单的CSV，而只能是vCard。界面上没有其他选项，命令行倒是有一个导出工具可以指定--format=csv，不过很不幸，上来就是core dump，晕倒。本来简简单单的东西，何必复杂化。还好vCard本身还是文本，处理一下也不难，但感觉怪怪的，心中难免不爽，对Evolution和Novell的印象大打折扣。<br /><br />
顺便表扬一下SWT/Eclipse，在Ubuntu Feisty下跑起来真的是无缝，界面风格完全就是一个native的应用程序，开启Beryl效果之后，连Tooltip都跟着"炫"了起来，让人越看越喜欢，Evolution带来的不愉快也就自然而然抛在脑后了。<br /><br />
今天，你Feisty了吗？<br /><br /><br /><img src ="http://www.blogjava.net/sean/aggbug/114214.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/sean/" target="_blank">laogao</a> 2007-04-27 22:25 <a href="http://www.blogjava.net/sean/archive/2007/04/27/114214.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>[新闻] Debian 4.0 (etch) 发布！</title><link>http://www.blogjava.net/sean/archive/2007/04/08/109279.html</link><dc:creator>laogao</dc:creator><author>laogao</author><pubDate>Sun, 08 Apr 2007 14:50:00 GMT</pubDate><guid>http://www.blogjava.net/sean/archive/2007/04/08/109279.html</guid><wfw:comment>http://www.blogjava.net/sean/comments/109279.html</wfw:comment><comments>http://www.blogjava.net/sean/archive/2007/04/08/109279.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/sean/comments/commentRss/109279.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/sean/services/trackbacks/109279.html</trackback:ping><description><![CDATA[
		<br />
大家期待已久的Debian重要升级4.0，代号"etch"，终于正式发布。请看官方声明:<br /><a href="http://www.debian.org/News/2007/20070408" target="_blank">http://www.debian.org/News/2007/20070408</a><br /><br /><br /><img src ="http://www.blogjava.net/sean/aggbug/109279.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/sean/" target="_blank">laogao</a> 2007-04-08 22:50 <a href="http://www.blogjava.net/sean/archive/2007/04/08/109279.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title> [新闻] Mark Shuttleworth Joins the Linux Foundation  </title><link>http://www.blogjava.net/sean/archive/2007/03/14/103905.html</link><dc:creator>laogao</dc:creator><author>laogao</author><pubDate>Wed, 14 Mar 2007 15:56:00 GMT</pubDate><guid>http://www.blogjava.net/sean/archive/2007/03/14/103905.html</guid><wfw:comment>http://www.blogjava.net/sean/comments/103905.html</wfw:comment><comments>http://www.blogjava.net/sean/archive/2007/03/14/103905.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/sean/comments/commentRss/103905.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/sean/services/trackbacks/103905.html</trackback:ping><description><![CDATA[<br/>
<a href="http://www.markshuttleworth.com/archives/99" target="_blank">http://www.markshuttleworth.com/archives/99</a><br/>
<br/>
Ubuntu创始人Mark Shuttleworth正式宣布加入今年1月由Linux业界两大组织OSDL和FSG合并成立的Linux Foundation。<br/>
<br/>
<br/><img src ="http://www.blogjava.net/sean/aggbug/103905.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/sean/" target="_blank">laogao</a> 2007-03-14 23:56 <a href="http://www.blogjava.net/sean/archive/2007/03/14/103905.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>[阅读] 从RH/Fedora到Ubuntu，ESR如是说</title><link>http://www.blogjava.net/sean/archive/2007/02/22/100329.html</link><dc:creator>laogao</dc:creator><author>laogao</author><pubDate>Wed, 21 Feb 2007 20:49:00 GMT</pubDate><guid>http://www.blogjava.net/sean/archive/2007/02/22/100329.html</guid><wfw:comment>http://www.blogjava.net/sean/comments/100329.html</wfw:comment><comments>http://www.blogjava.net/sean/archive/2007/02/22/100329.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/sean/comments/commentRss/100329.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/sean/services/trackbacks/100329.html</trackback:ping><description><![CDATA[<br />
<a href="http://www.linux-watch.com/news/NS6401388051.html" target="_blank">http://www.linux-watch.com/news/NS6401388051.html</a><br />
<br />
Linux-Watch上刚发布了一篇关于最近Eric S. Raymond (ESR)&ldquo;受够了&rdquo;Fedora，&ldquo;转投&rdquo;Ubuntu的文章，挺有趣的。<br />
<br />
Note: Eric S. Raymond可以说是Unix大牛和开源运动的鼻祖之一，他最有名的著作为&quot;The Cathedral and the Bazaar&quot;(中译&ldquo;大教堂与市集&rdquo;)和&quot;The Art of UNIX Programming&quot;(中译&ldquo;UNIX编程艺术&rdquo;)。<br />
<br/>
<br/><img src ="http://www.blogjava.net/sean/aggbug/100329.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/sean/" target="_blank">laogao</a> 2007-02-22 04:49 <a href="http://www.blogjava.net/sean/archive/2007/02/22/100329.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>[Tips] CVSNT到Linux平台的资源库无障碍迁移</title><link>http://www.blogjava.net/sean/archive/2007/02/02/97394.html</link><dc:creator>laogao</dc:creator><author>laogao</author><pubDate>Thu, 01 Feb 2007 16:24:00 GMT</pubDate><guid>http://www.blogjava.net/sean/archive/2007/02/02/97394.html</guid><wfw:comment>http://www.blogjava.net/sean/comments/97394.html</wfw:comment><comments>http://www.blogjava.net/sean/archive/2007/02/02/97394.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/sean/comments/commentRss/97394.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/sean/services/trackbacks/97394.html</trackback:ping><description><![CDATA[<br/>
一直误以为CVSNT和Linux下的CVS不兼容，至少没那么"无缝"，事实证明一切真的很简单，以下就是从CVSNT迁出一个资源库到Ubuntu下的全部步骤：<br/>
<br/>
1- 通过Samba或者其他方式将CVSNT资源库整个目录，包括CVSROOT子目录，拷贝到Ubuntu文件系统中，chown，chmod。<br/>
2- 在Ubuntu下编辑/etc/xinetd.d/cvspserver，在cvsargs增加--allow-root [YOUR CVS PATH]，每一个资源库均写在这里，以空格分隔。<br/>
3- 命令行执行sudo /etc/init.d/xinetd restart。<br/>
<br/>
迁移后的资源库即可使用了，包括历史修订记录、标签等等信息均完整保留，并不要求新的资源库用户和老资源库用户一致。这就是CVS值得我们叫好的地方，一切都那么简单、直接、好用。可能需要注意一下的是encoding，如果两边的encoding不一致，而文件名或目录名出现非ASCII字符的话，可能出现无法同步或者部分文件丢失的现象，文件内容出现非ASCII字符则不影响。<br/>
<br/>
See Also: <a href="http://www.blogjava.net/sean/archive/2006/09/17/70145.html" target="_blank">[Tips] 在Ubuntu Linux 6.06 LTS (Dapper Drake)上安装CVS服务</a><br/>
<br/>
<br/>

<img src ="http://www.blogjava.net/sean/aggbug/97394.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/sean/" target="_blank">laogao</a> 2007-02-02 00:24 <a href="http://www.blogjava.net/sean/archive/2007/02/02/97394.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>[Tips] Windows/Linux双系统重装Windows后无法进入Linux的最速解决办法</title><link>http://www.blogjava.net/sean/archive/2007/01/23/95605.html</link><dc:creator>laogao</dc:creator><author>laogao</author><pubDate>Tue, 23 Jan 2007 13:14:00 GMT</pubDate><guid>http://www.blogjava.net/sean/archive/2007/01/23/95605.html</guid><wfw:comment>http://www.blogjava.net/sean/comments/95605.html</wfw:comment><comments>http://www.blogjava.net/sean/archive/2007/01/23/95605.html#Feedback</comments><slash:comments>3</slash:comments><wfw:commentRss>http://www.blogjava.net/sean/comments/commentRss/95605.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/sean/services/trackbacks/95605.html</trackback:ping><description><![CDATA[<br/>
本文假定你有CD-ROM光驱以及Linux Live CD (如Ubuntu)，并使用GRUB作为bootloader。<br/>
<br/>
安装好Windows基本系统后，用Live CD启动，进入Linux桌面，打开Terminal，sudo -s切换到root，然后执行如下步骤：<br/>
&nbsp;&nbsp;# grub<br/>
&nbsp;&nbsp;grub&gt; root (hd0,7)<br/>
&nbsp;&nbsp;grub&gt; setup (hd0)<br/>
&nbsp;&nbsp;grub&gt; quit<br/>
&nbsp;&nbsp;# shutdown -r now<br/>
机器重启后，熟悉的grub界面又出来了。:)<br/>
<br/>
注意在root命令和setup命令后都有空格。另外稍微解释一下hd0和hd0,7的含义：hd是Hard Disk的缩写，0表示第一块硬盘，7表示编号为7的分区。如果不确定原先的Linux安装所在的分区编号是多少，可以在敲完"root (hd0,"后敲[TAB]键，在列表中即可通过文件系统类型和分区大小一目了然的找到。<br/>
<br/>
<br/>
<img src ="http://www.blogjava.net/sean/aggbug/95605.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/sean/" target="_blank">laogao</a> 2007-01-23 21:14 <a href="http://www.blogjava.net/sean/archive/2007/01/23/95605.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>[新闻] Open Source Development Labs (OSDL) 和 Free Software Group (FSG) 合并成为 Linux Foundation</title><link>http://www.blogjava.net/sean/archive/2007/01/22/95429.html</link><dc:creator>laogao</dc:creator><author>laogao</author><pubDate>Mon, 22 Jan 2007 15:59:00 GMT</pubDate><guid>http://www.blogjava.net/sean/archive/2007/01/22/95429.html</guid><wfw:comment>http://www.blogjava.net/sean/comments/95429.html</wfw:comment><comments>http://www.blogjava.net/sean/archive/2007/01/22/95429.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/sean/comments/commentRss/95429.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/sean/services/trackbacks/95429.html</trackback:ping><description><![CDATA[<br/>
详见:<br/>
<a href="http://www.linux-foundation.org/wordpress/?p=286" target="_blank">http://www.linux-foundation.org/wordpress/?p=286</a><br/>
<br/>
<br/>
<img src ="http://www.blogjava.net/sean/aggbug/95429.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/sean/" target="_blank">laogao</a> 2007-01-22 23:59 <a href="http://www.blogjava.net/sean/archive/2007/01/22/95429.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>[Tips] Debian/Ubuntu下安装NFS如无法正常启动需要dpkg-reconfigure portmap</title><link>http://www.blogjava.net/sean/archive/2007/01/10/93006.html</link><dc:creator>laogao</dc:creator><author>laogao</author><pubDate>Wed, 10 Jan 2007 13:17:00 GMT</pubDate><guid>http://www.blogjava.net/sean/archive/2007/01/10/93006.html</guid><wfw:comment>http://www.blogjava.net/sean/comments/93006.html</wfw:comment><comments>http://www.blogjava.net/sean/archive/2007/01/10/93006.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/sean/comments/commentRss/93006.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/sean/services/trackbacks/93006.html</trackback:ping><description><![CDATA[<br/>
安装NFS的方法很简单，apt-get install nfs-kernel-server，之后只要配置/etc/exports (如[path] [client-hostname](rw,async))，然后/etc/init.d/nfs-kernel-server start (或者stop|restart等等)即可启动和控制NFS服务运行。在客户端通过mount  xxx.xxx.xxx.xxx:/xxx ([ip-address]:[server-path])的方式即可挂载并当做本地文件系统一样使用。<br/>
<br/>
如果遇到在服务器端无法正常启动nfs-kernel-server，多半是你的portmap没有正确配置，需要dpkg-reconfigure portmap，弹出的界面选No。<br/>
<br/>
<br/>
<img src ="http://www.blogjava.net/sean/aggbug/93006.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/sean/" target="_blank">laogao</a> 2007-01-10 21:17 <a href="http://www.blogjava.net/sean/archive/2007/01/10/93006.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>[Tips] Debian Sarge(3.1r4)下编译和安装PostgreSQL 8.2.1</title><link>http://www.blogjava.net/sean/archive/2007/01/10/92796.html</link><dc:creator>laogao</dc:creator><author>laogao</author><pubDate>Tue, 09 Jan 2007 17:35:00 GMT</pubDate><guid>http://www.blogjava.net/sean/archive/2007/01/10/92796.html</guid><wfw:comment>http://www.blogjava.net/sean/comments/92796.html</wfw:comment><comments>http://www.blogjava.net/sean/archive/2007/01/10/92796.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.blogjava.net/sean/comments/commentRss/92796.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/sean/services/trackbacks/92796.html</trackback:ping><description><![CDATA[<br/>
[注]由于Debian相当保守的包管理和更新机制，本文提到的编译和安装过程可能要求你在/etc/apt/sources.list中开放testing级别的包。<br/>
<br/>
1- 首先是去PostgreSQL的官方网站[<a href="http://www.postgresql.org/" target="_blank">link</a>]下载最新8.2.1版本的源码，postgresql-8.2.1.tar.gz。<br/>
2- 拷贝并解压:<br/>
&nbsp;&nbsp;&nbsp;&nbsp; $ sudo -s<br/>
&nbsp;&nbsp;&nbsp;&nbsp; # cp postgresql-8.2.1.tar.gz /opt<br/>
&nbsp;&nbsp;&nbsp;&nbsp; # cd /opt<br/>
&nbsp;&nbsp;&nbsp;&nbsp; # tar zxvf postgresql-8.2.1.tar.gz<br/>
&nbsp;&nbsp;&nbsp;&nbsp; # cd postgresql-8.2.1<br/>
3- 在开始configure和make之前，先做一些准备工作，为了正常configure和make，需要:<br/>
&nbsp;&nbsp;&nbsp;&nbsp; # apt-get install build-essential gcc-4.0 libreadline5 libreadline5-dev m4 flex bison zlib1g zlib1g-dev<br/>
4- 一切就绪，开工: <br/>
&nbsp;&nbsp;&nbsp;&nbsp; # ./configure --prefix=/opt/postgresql  ### 更多选项参考./configure --help ###<br/>
&nbsp;&nbsp;&nbsp;&nbsp; # make<br/>
&nbsp;&nbsp;正常的话，可以看到最后一行输出为: "All of PostgreSQL successfully made. Ready to install."<br/>
5- 安装: <br/>
&nbsp;&nbsp;&nbsp;&nbsp; # make install<br/>
&nbsp;&nbsp;最后应该看到输出"PostgreSQL installation complete."。<br/>
6- 初始化数据库环境: <br/>
&nbsp;&nbsp;&nbsp;&nbsp; # mkdir /opt/postgresql/data<br/>
&nbsp;&nbsp;&nbsp;&nbsp; # adduser postgres<br/>
&nbsp;&nbsp;&nbsp;&nbsp; # chown postgres /opt/postgresql/data<br/>
&nbsp;&nbsp;&nbsp;&nbsp; # sudo -u postgres /opt/postgresql/bin/initdb /opt/postgresql/data/<br/>
&nbsp;&nbsp;编辑/opt/postgresql/data目录下的pg_hba.conf，添加local all postgres ident sameuser和local all all md5两行；<br/>
&nbsp;&nbsp;编辑/opt/postgresql/data目录下的postgresql.conf，去掉listen_addresses的注释符，修改为listen_addresses = '*'。<br/>
7- 启动数据库: <br/>
&nbsp;&nbsp;&nbsp;&nbsp; # sudo -u postgres /opt/postgresql/bin/pg_ctl -D /opt/postgresql/data -l /opt/postgresql/data/serverlog start<br/>
&nbsp;&nbsp;&nbsp;&nbsp; # sudo -u postgres /opt/postgresql/bin/createuser -P dbuser<br/>
&nbsp;&nbsp;&nbsp;&nbsp; # sudo -u postgres /opt/postgresql/bin/createdb testdb<br/>
&nbsp;&nbsp;&nbsp;&nbsp; # /opt/postgresql/bin/psql -U dbuser testdb<br/>
&nbsp;&nbsp;若能正常进入PostgreSQL控制台并执行查询如select version();即表示安装成功。<br/>
<br/>
每次都这样去命令行启动数据库当然有点太笨了，下次再抽空和大家分享PostgreSQL自动化启动脚本的编写。<br/>
<br/>
<br/>
<img src ="http://www.blogjava.net/sean/aggbug/92796.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/sean/" target="_blank">laogao</a> 2007-01-10 01:35 <a href="http://www.blogjava.net/sean/archive/2007/01/10/92796.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>[Tips] 网络不是很流畅的情况下安装rails 1.1.6 (Ubuntu Dapper Drake)</title><link>http://www.blogjava.net/sean/archive/2007/01/08/92487.html</link><dc:creator>laogao</dc:creator><author>laogao</author><pubDate>Mon, 08 Jan 2007 15:32:00 GMT</pubDate><guid>http://www.blogjava.net/sean/archive/2007/01/08/92487.html</guid><wfw:comment>http://www.blogjava.net/sean/comments/92487.html</wfw:comment><comments>http://www.blogjava.net/sean/archive/2007/01/08/92487.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/sean/comments/commentRss/92487.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/sean/services/trackbacks/92487.html</trackback:ping><description><![CDATA[<br/>
由于最近国际互联网速率不是很稳定，而gem install自动默认到rubyforge下载gem安装包，由于rails依赖好几个其他的gem，而gem install需要遍历所有这些gem，所以gem install经常出出现超时的情况，怎么办呢？答案就是把相关的每个gem单独下载到本地，然后用--local选项安装。但是怎么确定你的需要哪些gem呢？<br/>
<br/>
简单说明一下rubyforge的目录结构，了解之后找起gem来就会方便很多：<br/>
&nbsp;&nbsp;&nbsp;&nbsp;http://rubyforge.org/projects/[project_name]/<br/>
# 把[project_name]替换为你要找的gem名称（不要加版本号）就能访问到该gem的主页，然后中间靠右即是跳转到下载页面的链接("Download")，排在最上面的就是最新版，注意文件扩展名，我们要找的是.gem。<br/>
<br/>
本文假定你已经apt-get install ruby1.8 ri rdoc irb，并且也已经去<a href="http://rubyforge.org/projects/rubygems/" target="_blank">http://rubyforge.org/projects/rubygems/</a>下载并安装好RubyGems。<br/>
<br/>
1- 首先下载rails gem，按照刚才提的方法，rails的gem主页在<a href="http://rubyforge.org/projects/rails/" target="_blank">http://rubyforge.org/projects/rails/</a>，目前的最新版本是1.1.6。<br/>
2- cd到下载到本地的目录，然后<br/>
&nbsp;&nbsp;&nbsp;&nbsp;$ sudo gem specification --local --version 1.1.6 rails | grep "^&nbsp;&nbsp; name:\|^&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;version:" # (^后分别是2个空格和8个空格)<br/>
&nbsp;&nbsp;&nbsp;&nbsp;可以看到如下结果：<br/>
----------------------------------------<br/>
&nbsp;&nbsp;name: rake<br/>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;version: 0.7.1<br/>
&nbsp;&nbsp;name: activesupport<br/>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;version: 1.3.1<br/>
&nbsp;&nbsp;name: activerecord<br/>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;version: 1.14.4<br/>
&nbsp;&nbsp;name: actionpack<br/>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;version: 1.12.5<br/>
&nbsp;&nbsp;name: actionmailer<br/>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;version: 1.2.5<br/>
&nbsp;&nbsp;name: actionwebservice<br/>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;version: 1.1.6<br/>
----------------------------------------<br/>
3- OK，接下来我们依次去rubyforge下载这些gem，注意actionwebservice的project name是"aws"，其余的project name和gem名称一样。<br/>
4- 依次sudo gem install --local [gem_name]，rails放在最后，即可完成安装，可以通过which rails或者rails [项目名]验证。<br/>
<br/>
<br/>
<img src ="http://www.blogjava.net/sean/aggbug/92487.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/sean/" target="_blank">laogao</a> 2007-01-08 23:32 <a href="http://www.blogjava.net/sean/archive/2007/01/08/92487.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>[Tips] Ubuntu下安装和配置PostgreSQL 8.1</title><link>http://www.blogjava.net/sean/archive/2007/01/04/91845.html</link><dc:creator>laogao</dc:creator><author>laogao</author><pubDate>Thu, 04 Jan 2007 13:39:00 GMT</pubDate><guid>http://www.blogjava.net/sean/archive/2007/01/04/91845.html</guid><wfw:comment>http://www.blogjava.net/sean/comments/91845.html</wfw:comment><comments>http://www.blogjava.net/sean/archive/2007/01/04/91845.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/sean/comments/commentRss/91845.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/sean/services/trackbacks/91845.html</trackback:ping><description><![CDATA[<br/>
在Ubuntu下安装和配置PostgreSQL相对来说很简单，只是需要注意一些细节上的问题。在这里简单过一遍安装步骤，其中带[*]的地方需要特别留意。<br/>
<br/>
1- $ sudo apt-get install postgresql-8.1 #[*]apt-get install postgresql会安装7.4版的PostgreSQL。<br/>
2- $ sudo nano /etc/postgresql/8.1/main/postgresql.conf #如果不是单机使用，需要修改CONNECTION AND AUTHENTICATION段的"#listen_addresses = 'localhost'"为"listen_addresses = '*'"(去掉注释符"#"，允许网络访问而非仅限localhost)。<br/>
3- $ sudo -u postgres createuser -P #依次输入需要创建的用户名、密码、以及是否是超级用户、是否有权限创建数据库、是否有权限添加新的用户/角色 [*] 建议一定要用-P选项当场创建密码，避免以后的连接配置问题。<br/>
4- $ sudo -u postgres createdb [databasename] #创建数据库。<br/>
5- $ psql -U [username] [databasename] #正常的话已经可以进入PostgreSQL交互命令界面，并且看到PostgreSQL版本号，如8.1.4。[*]注意大小写<br/>
6- 安装自己喜欢的客户端，官方推荐pgadminIII，安装方法 $ apt-get install pgadmin3; 或者其他客户端，如Eclipse + QuantumDB (需要另外下载JDBC驱动)。<br/>
<br/>
大功告成，坐下来喝杯咖啡~~<br/>
<br/>
<br/>
<img src ="http://www.blogjava.net/sean/aggbug/91845.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/sean/" target="_blank">laogao</a> 2007-01-04 21:39 <a href="http://www.blogjava.net/sean/archive/2007/01/04/91845.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>[阅读] Linux software installation to improve</title><link>http://www.blogjava.net/sean/archive/2007/01/03/91647.html</link><dc:creator>laogao</dc:creator><author>laogao</author><pubDate>Wed, 03 Jan 2007 14:23:00 GMT</pubDate><guid>http://www.blogjava.net/sean/archive/2007/01/03/91647.html</guid><wfw:comment>http://www.blogjava.net/sean/comments/91647.html</wfw:comment><comments>http://www.blogjava.net/sean/archive/2007/01/03/91647.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/sean/comments/commentRss/91647.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/sean/services/trackbacks/91647.html</trackback:ping><description><![CDATA[
		<br />
		<a target="_blank" title="http://www.linux-watch.com/news/NS4586903228.html" href="http://www.linux-watch.com/news/NS4586903228.html">http://www.linux-watch.com/news/NS4586903228.html</a>
		<br />
		<br />由Debian创始人之一Ian Murdock担任主席的LSB(Linux Standard Base, Free Software Group的下属机构)近日做出计划，要提供一套通用的API整合不同的包管理工具/机制，如Debian的APT、RedHat和SuSE的RPM、YUM等等，使得在Linux平台安装软件变得更加标准化，以吸引更多的ISV为Linux平台开发软件。<br /><br /><br /><img src ="http://www.blogjava.net/sean/aggbug/91647.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/sean/" target="_blank">laogao</a> 2007-01-03 22:23 <a href="http://www.blogjava.net/sean/archive/2007/01/03/91647.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>