﻿<?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-随笔分类-Computer Usage</title><link>http://www.blogjava.net/sean/category/34.html</link><description>Read me, read Sean.</description><language>zh-cn</language><lastBuildDate>Wed, 07 May 2014 16:54:12 GMT</lastBuildDate><pubDate>Wed, 07 May 2014 16:54:12 GMT</pubDate><ttl>60</ttl><item><title>Mac安装tsocks</title><link>http://www.blogjava.net/sean/archive/2014/05/07/413382.html</link><dc:creator>laogao</dc:creator><author>laogao</author><pubDate>Wed, 07 May 2014 15:23:00 GMT</pubDate><guid>http://www.blogjava.net/sean/archive/2014/05/07/413382.html</guid><wfw:comment>http://www.blogjava.net/sean/comments/413382.html</wfw:comment><comments>http://www.blogjava.net/sean/archive/2014/05/07/413382.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/sean/comments/commentRss/413382.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/sean/services/trackbacks/413382.html</trackback:ping><description><![CDATA[不知道从什么时候开始的，tsocks在Mac下面安装要费些周折，brew官方和曾经一度存在的第三方tap都不再支持直接brew install，需要手工创建formula。过程倒也还OK：<br /><br />vim&nbsp;<span style="font-size: 14px;">/usr/local/Library/Formula/tsocks.rb</span><br /><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 />--><span style="color: #0000FF; ">require</span>&nbsp;<span style="font-weight: bold;">'</span><span style="font-weight: bold;">formula</span><span style="font-weight: bold;">'</span><br /><br />class&nbsp;Tsocks&nbsp;&lt;&nbsp;Formula<br />&nbsp;&nbsp;<span style="color: #008000; ">#</span><span style="color: #008000; ">&nbsp;The&nbsp;original&nbsp;is&nbsp;http://tsocks.sourceforge.net/<br />&nbsp;&nbsp;#&nbsp;This&nbsp;GitHub&nbsp;repo&nbsp;is&nbsp;a&nbsp;maintained&nbsp;fork&nbsp;with&nbsp;OSX&nbsp;support</span><span style="color: #008000; "><br /></span>&nbsp;&nbsp;homepage&nbsp;<span style="font-weight: bold;">'</span><span style="font-weight: bold;">http://github.com/pc/tsocks</span><span style="font-weight: bold;">'</span><br />&nbsp;&nbsp;head&nbsp;<span style="font-weight: bold;">'</span><span style="font-weight: bold;">https://github.com/pc/tsocks.git</span><span style="font-weight: bold;">'</span><br /><br />&nbsp;&nbsp;depends_on&nbsp;<span style="font-weight: bold;">'</span><span style="font-weight: bold;">autoconf</span><span style="font-weight: bold;">'</span>&nbsp;=&gt;&nbsp;:build&nbsp;<span style="color: #0000FF; ">if</span>&nbsp;MacOS.xcode_version.to_f&nbsp;&gt;=&nbsp;<span style="color: #800000; ">4.3</span><br /><br />&nbsp;&nbsp;def&nbsp;install<br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">system</span>&nbsp;<span style="font-weight: bold;">"</span><span style="font-weight: bold;">autoconf</span><span style="font-weight: bold;">"</span>,&nbsp;<span style="font-weight: bold;">"</span><span style="font-weight: bold;">-v</span><span style="font-weight: bold;">"</span><br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">system</span>&nbsp;<span style="font-weight: bold;">"</span><span style="font-weight: bold;">./configure</span><span style="font-weight: bold;">"</span>,&nbsp;<span style="font-weight: bold;">"</span><span style="font-weight: bold;">--prefix=#{prefix}</span><span style="font-weight: bold;">"</span>,&nbsp;<span style="font-weight: bold;">"</span><span style="font-weight: bold;">--disable-debug</span><span style="font-weight: bold;">"</span>,&nbsp;<span style="font-weight: bold;">"</span><span style="font-weight: bold;">--disable-dependency-tracking</span><span style="font-weight: bold;">"</span>,&nbsp;<span style="font-weight: bold;">"</span><span style="font-weight: bold;">--with-conf=#{config_file}</span><span style="font-weight: bold;">"</span><br /><br />&nbsp;&nbsp;&nbsp;&nbsp;inreplace(<span style="font-weight: bold;">"</span><span style="font-weight: bold;">tsocks</span><span style="font-weight: bold;">"</span>)&nbsp;{&nbsp;|bin|&nbsp;bin.change_make_var!&nbsp;<span style="font-weight: bold;">"</span><span style="font-weight: bold;">LIBDIR</span><span style="font-weight: bold;">"</span>,&nbsp;lib&nbsp;}<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">system</span>&nbsp;<span style="font-weight: bold;">"</span><span style="font-weight: bold;">make</span><span style="font-weight: bold;">"</span><br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">system</span>&nbsp;<span style="font-weight: bold;">"</span><span style="font-weight: bold;">make&nbsp;install</span><span style="font-weight: bold;">"</span><br /><br />&nbsp;&nbsp;&nbsp;&nbsp;etc.install&nbsp;<span style="font-weight: bold;">"</span><span style="font-weight: bold;">tsocks.conf.simple.example</span><span style="font-weight: bold;">"</span>&nbsp;=&gt;&nbsp;<span style="font-weight: bold;">"</span><span style="font-weight: bold;">tsocks.conf</span><span style="font-weight: bold;">"</span>&nbsp;<span style="color: #0000FF; ">unless</span>&nbsp;config_file.exist?<br />&nbsp;&nbsp;end<br /><br />&nbsp;&nbsp;def&nbsp;test<br />&nbsp;&nbsp;&nbsp;&nbsp;puts&nbsp;<span style="font-weight: bold;">'</span><span style="font-weight: bold;">Your&nbsp;current&nbsp;public&nbsp;ip&nbsp;is:</span><span style="font-weight: bold;">'</span><br />&nbsp;&nbsp;&nbsp;&nbsp;ohai&nbsp;`curl&nbsp;-sS&nbsp;ifconfig.me&nbsp;<span style="color: #800000; ">2</span>&gt;&amp;<span style="color: #800000; ">1</span>`.<span style="color: #0000FF; ">chomp</span><br />&nbsp;&nbsp;&nbsp;&nbsp;puts&nbsp;<span style="font-weight: bold;">"</span><span style="font-weight: bold;">If&nbsp;your&nbsp;correctly&nbsp;configured&nbsp;#{config_file},&nbsp;this&nbsp;should&nbsp;show&nbsp;the&nbsp;ip&nbsp;you&nbsp;have&nbsp;trough&nbsp;the&nbsp;proxy</span><span style="font-weight: bold;">"</span><br />&nbsp;&nbsp;&nbsp;&nbsp;puts&nbsp;<span style="font-weight: bold;">'</span><span style="font-weight: bold;">Your&nbsp;ip&nbsp;through&nbsp;the&nbsp;proxy&nbsp;is:</span><span style="font-weight: bold;">'</span><br />&nbsp;&nbsp;&nbsp;&nbsp;ohai&nbsp;`tsocks&nbsp;curl&nbsp;-sS&nbsp;ifconfig.me&nbsp;<span style="color: #800000; ">2</span>&gt;&amp;<span style="color: #800000; ">1</span>`.<span style="color: #0000FF; ">chomp</span><br />&nbsp;&nbsp;end<br /><br />&nbsp;&nbsp;def&nbsp;config_file<br />&nbsp;&nbsp;&nbsp;&nbsp;etc&nbsp;/&nbsp;<span style="font-weight: bold;">'</span><span style="font-weight: bold;">tsocks.conf</span><span style="font-weight: bold;">'</span><br />&nbsp;&nbsp;end<br />end</div><br />有了上述formula之后，即可 brew install --HEAD tsocks 。<img src ="http://www.blogjava.net/sean/aggbug/413382.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-05-07 23:23 <a href="http://www.blogjava.net/sean/archive/2014/05/07/413382.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>[RPi] 树梅派安装XBMC并让其支持中文</title><link>http://www.blogjava.net/sean/archive/2014/04/06/411990.html</link><dc:creator>laogao</dc:creator><author>laogao</author><pubDate>Sun, 06 Apr 2014 09:45:00 GMT</pubDate><guid>http://www.blogjava.net/sean/archive/2014/04/06/411990.html</guid><wfw:comment>http://www.blogjava.net/sean/comments/411990.html</wfw:comment><comments>http://www.blogjava.net/sean/archive/2014/04/06/411990.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/sean/comments/commentRss/411990.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/sean/services/trackbacks/411990.html</trackback:ping><description><![CDATA[有了RPi当然免不了要玩玩XBMC，这里推荐XBian，安装配置过程如下：<br />
<br />
1- 下载.img文件 (&nbsp;<span style="font-size: 14px;"><a href="http://www.xbian.org/download/" target="_blank">http://www.xbian.org/download/</a></span><span style="font-size: 14px;">&nbsp;)；</span><br />
2- 用dd命令将.img（比如XBian_beta_2.img）写入SD卡；<br />
3- 将中文字体（比如wqy-zenhei.ttc）重命名为arial.ttf，复制到SD卡的~/.xbmc/media/Fonts目录（XBian默认用户为xbian，密码raspberry）；<br />
4- 从&nbsp;<span style="font-size: 14px;"><a href="https://code.google.com/p/xbmc-addons-chinese/downloads/detail?name=repository.googlecode.xbmc-addons-chinese-eden.zip" target="_blank">https://code.google.com/p/xbmc-addons-chinese/downloads/detail?name=repository.googlecode.xbmc-addons-chinese-eden.zip</a> 下载资源插件并</span><span style="font-size: 14px;">复制到SD卡；</span><br />
5- 将SD卡插入RPi并连接HDMI到电视机/显示器；<br />
6- RPi开机，进入XBian的配置页面，可以校准屏幕，配置网络连接等；<br />
7- 在系统设置中选择字体为Arial，语言选为中文，此时应该看到界面可正常显示中文；<br />
8- 安装扩展程序，选择之前下载到SD卡的repository.googlecode.xbmc-addons-chinese-eden.zip文件，扩展安装成功后即可在扩展程序列表中看到对应的资源条目，逐一安装即可。<br />
<br />
额外提示：XBMC也可以通过网络共享播放视频，之前跟大家提到过XBMC显示中文字幕有时出现整行被方块覆盖的问题，解决方法是在字幕文件中查找并删除或替换"&#8230;"字符。Enjoy！<img src ="http://www.blogjava.net/sean/aggbug/411990.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-04-06 17:45 <a href="http://www.blogjava.net/sean/archive/2014/04/06/411990.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>IntelliJ IDEA 常用快捷键</title><link>http://www.blogjava.net/sean/archive/2014/03/09/410781.html</link><dc:creator>laogao</dc:creator><author>laogao</author><pubDate>Sun, 09 Mar 2014 05:38:00 GMT</pubDate><guid>http://www.blogjava.net/sean/archive/2014/03/09/410781.html</guid><wfw:comment>http://www.blogjava.net/sean/comments/410781.html</wfw:comment><comments>http://www.blogjava.net/sean/archive/2014/03/09/410781.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/sean/comments/commentRss/410781.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/sean/services/trackbacks/410781.html</trackback:ping><description><![CDATA[<br />
整理一下 IntelliJ IDEA 最常用的快捷键，按照便于记忆的方式排列：<br />
<br />
<pre>
Ctrl-N&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Class...&nbsp;(find&nbsp;by&nbsp;name)
Ctrl-Shift-N&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;File...&nbsp;(find&nbsp;by&nbsp;name)
Ctrl-Shift-Alt-N&nbsp;&nbsp;&nbsp;&nbsp;Symbol...&nbsp;(find&nbsp;by&nbsp;name)
Ctrl-G&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Line...&nbsp;(goto&nbsp;line)
Ctrl-H&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Type&nbsp;hierarchy&nbsp;(hierarchy)
Ctrl-Shift-H&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Method&nbsp;hierarchy&nbsp;(hierarchy)
Ctrl-Alt-H&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Call&nbsp;hierarchy&nbsp;(hierarchy)
Ctrl-Q&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Quick&nbsp;documentation
Ctrl-Alt-I&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Auto-indent&nbsp;lines&nbsp;(indent)
Ctrl-Alt-L&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Reformat&nbsp;code&nbsp;(line&nbsp;up)
Ctrl-Alt-O&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Optimize&nbsp;imports&nbsp;(optimize)
Ctrl-/&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Comment&nbsp;with&nbsp;line&nbsp;comment&nbsp;(//)
Ctrl-Shift-/&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Comment&nbsp;with&nbsp;block&nbsp;comment&nbsp;(/*...*/)
Ctrl-W&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Select&nbsp;word&nbsp;or&nbsp;block&nbsp;(word)
Ctrl-D&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Copy&nbsp;line&nbsp;(duplicate&nbsp;line,&nbsp;yyp)
Ctrl-X&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Cut&nbsp;line&nbsp;(dd)
Ctrl-U&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Uppercase/lowercase&nbsp;(upper)
Ctrl-J&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Insert&nbsp;live&nbsp;template
Ctrl-Alt-J&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Surround&nbsp;with&nbsp;live&nbsp;template
Ctrl-Alt-T&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Surround&nbsp;with&nbsp;(template)
Ctrl-Shift-J&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Join&nbsp;lines&nbsp;(join)
Ctrl-E&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Recent&nbsp;files&nbsp;(editions)
Ctrl-Shift-E&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Recently&nbsp;changed&nbsp;files&nbsp;(editions)
Alt-Shift-C&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Recent&nbsp;changes&nbsp;(changes)
Ctrl-B&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Delcaration
Ctrl-Shift-B&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Type&nbsp;declaration
Ctrl-Alt-B&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Implementation(s)
Ctrl-P&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Parameter&nbsp;info&nbsp;(parameter)
Ctrl-Space&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Basic&nbsp;completion
Ctrl-Shift-Space&nbsp;&nbsp;&nbsp;&nbsp;Smart&nbsp;completion
Ctrl-Alt-Space&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Completion&nbsp;lookup
Alt-Enter&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Auto-complete
Alt-Insert&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Generate...
Ctrl-Shift-Up/Down&nbsp;&nbsp;Move&nbsp;statement&nbsp;up/down
Alt-Shift-Up/Down&nbsp;&nbsp;&nbsp;Move&nbsp;line&nbsp;up/down
Ctrl-Up/Down&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Scroll&nbsp;up/down
Alt-Up/Down&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Previous/next&nbsp;method
F2&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Next&nbsp;highlighted&nbsp;error
Shift-F2&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Previous&nbsp;highlighted&nbsp;error
Ctrl-F&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Find
Ctrl-R&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Replace
F3&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Next&nbsp;match
Shift-F3&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Previous&nbsp;match
F4&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Jump&nbsp;to&nbsp;source
Ctrl-Alt-Shift-T&nbsp;&nbsp;&nbsp;&nbsp;Refactor&nbsp;this
F5&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Refactor&nbsp;copy
F6&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Refactor&nbsp;move
Ctrl-F6&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Refactor&nbsp;change&nbsp;signature
Shift-F6&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Refactor&nbsp;rename
Alt-Delete&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Refactor&nbsp;safe&nbsp;delete
Ctrl-Alt-V&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Refactor&nbsp;extract&nbsp;variable
Ctrl-Alt-F&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Refactor&nbsp;extract&nbsp;field
Ctrl-Alt-P&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Refactor&nbsp;extract&nbsp;parameter
Ctrl-Alt-M&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Refactor&nbsp;extract&nbsp;method
Ctrl-Alt-N&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Refactor&nbsp;inline
</pre>
<img src ="http://www.blogjava.net/sean/aggbug/410781.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-03-09 13:38 <a href="http://www.blogjava.net/sean/archive/2014/03/09/410781.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>"上海"是如何变成"涓婃捣"的？</title><link>http://www.blogjava.net/sean/archive/2011/03/29/347243.html</link><dc:creator>laogao</dc:creator><author>laogao</author><pubDate>Tue, 29 Mar 2011 15:50:00 GMT</pubDate><guid>http://www.blogjava.net/sean/archive/2011/03/29/347243.html</guid><wfw:comment>http://www.blogjava.net/sean/comments/347243.html</wfw:comment><comments>http://www.blogjava.net/sean/archive/2011/03/29/347243.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/sean/comments/commentRss/347243.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/sean/services/trackbacks/347243.html</trackback:ping><description><![CDATA[<br/ />
<p>今天帮同事解决一个邮件乱码的问题，简记于此。
</p>
<p>邮件正文就不贴了，有一段从上下文判断明显应该是"上海"，却显示成了"涓..."，于是自然而然的拿出"上"字和"涓"字来分析。

</p>
<p>通过简单的Groovy脚本对这两个汉字分别按gbk和utf-8编码，并将得到的byte[]转换成二进制表示输出如下：

</p>
<p><code>
== 上 ==<br/ />
11001001 11001111<br/ />   
11100100 10111000 10001010 <br/ />   
== 涓 ==<br/ />
11100100 10111000<br/ />   
11100110 10110110 10010011<br/ />    
</code>
</p>
<p>注意"上"字的第2排前两组和"涓"字第1排的两组byte正好相同，于是问题迎刃而解，乱码是由于邮件以utf-8编码后被错误的以gbk解码（随后又重新编码成utf-8）造成的。</p>
<p>关键代码：</p>
<p><code>
void showBytes(String input) {<br/ />
&nbsp;&nbsp;println("== " + input + " ==")<br/ />
&nbsp;&nbsp;b = input.getBytes("gbk")<br/ />
&nbsp;&nbsp;b.each { print Integer.toBinaryString(it).substring(24) + ' ' }<br/ />
&nbsp;&nbsp;println()<br/ />
&nbsp;&nbsp;b = input.getBytes("utf8")<br/ />
&nbsp;&nbsp;b.each { print Integer.toBinaryString(it).substring(24) + ' ' }<br/ />
&nbsp;&nbsp;println()<br/ />
}<br/ />
</code>
</p>




<img src ="http://www.blogjava.net/sean/aggbug/347243.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-03-29 23:50 <a href="http://www.blogjava.net/sean/archive/2011/03/29/347243.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>[Tips] 如何给SVN资源库降级</title><link>http://www.blogjava.net/sean/archive/2011/02/16/344471.html</link><dc:creator>laogao</dc:creator><author>laogao</author><pubDate>Wed, 16 Feb 2011 11:34:00 GMT</pubDate><guid>http://www.blogjava.net/sean/archive/2011/02/16/344471.html</guid><wfw:comment>http://www.blogjava.net/sean/comments/344471.html</wfw:comment><comments>http://www.blogjava.net/sean/archive/2011/02/16/344471.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/sean/comments/commentRss/344471.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/sean/services/trackbacks/344471.html</trackback:ping><description><![CDATA[<br/ /><p>问题起因: 帮同事排查一个SVN资源库导入后无法使用的问题，checkout时报错<br/ />&nbsp;&nbsp;Expected FS format '2'; found format '3'<br/ />&nbsp;&nbsp;期待文件系统(FS)格式 &#8220;2&#8221;；找到格式&#8220;3&#8221;<br/ /></p><p>熟悉SVN的朋友应该知道，Subversion大版本更新时有可能会对其文件格式进行调整，因此内部有文件格式版本的说法，以上报错信息在网上搜一下就知道，版本2和版本3分别对应Subversion的1.4.x和1.5.x，于是问题归结为如何给资源库降级，从而得到与1.4兼容的dump文件。方法很简单，记录如下，供需要的朋友参考:</p><p>首先在1.5.x的Subversion环境下新建一个与1.4.x兼容的资源库<br/ />&nbsp;&nbsp;svnadmin --pre-1.5-compatible create project01</p><p>然后将之前无法正常导入1.4.x的dump文件(dumpfile.old)导入<br/ />&nbsp;&nbsp;svnadmin load project01 < dumpfile.old</p><p>最后再做一次导出即可<br/ />&nbsp;&nbsp;svnadmin dump project01 > dumpfule.new</p><p>回到1.4.x的Subversion环境，新的dump文件(dumpfile.new)就可以正常导入和使用了。</p>
<img src ="http://www.blogjava.net/sean/aggbug/344471.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-02-16 19:34 <a href="http://www.blogjava.net/sean/archive/2011/02/16/344471.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>ssh+tsocks - 远程办公利器</title><link>http://www.blogjava.net/sean/archive/2011/02/09/343994.html</link><dc:creator>laogao</dc:creator><author>laogao</author><pubDate>Wed, 09 Feb 2011 14:37:00 GMT</pubDate><guid>http://www.blogjava.net/sean/archive/2011/02/09/343994.html</guid><wfw:comment>http://www.blogjava.net/sean/comments/343994.html</wfw:comment><comments>http://www.blogjava.net/sean/archive/2011/02/09/343994.html#Feedback</comments><slash:comments>5</slash:comments><wfw:commentRss>http://www.blogjava.net/sean/comments/commentRss/343994.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/sean/services/trackbacks/343994.html</trackback:ping><description><![CDATA[<br />
<p>设想一下这样的场景: 你出差在外，或者生病在家，有个紧急的需求要处理，涉及到数个源代码文件的改动，你亲自修改需要10分钟，电话和在公司的同伴沟通然后由他/她来修改则需要1小时。公司svn服务仅支持svn://协议，且仅限内网访问，而你只有一个ssh账号可以远程登录到公司某台Linux/UNIX服务器。</p>
<p>你暗自庆幸，幸好管理员有先见之明，为你留了个ssh口子，这样至少你还可以ssh上去通过命令行的方式在服务器上做svn checkout，vim ...和svn commit。不过如果你认为这就是全部，那就太小瞧ssh了。</p>
<p>ssh有个命令行参数 -D [地址:]端口，含义是在某个本地地址的某个端口上开SOCKS服务进行监听，把这个端口的数据通信以加密形式转发到ssh的另一端。你说好，我有了一个SOCKS服务器，但我又不是要上网走代理，svn也并不天然支持SOCKS啊，有什么用呢? 嗯，这正是tsocks的用武之地，它能透明的让普通应用程序也走SOCKS，安装方法很简单: 主流的Linux发行版，如Debian、Archlinux等的默认软件仓库已经自带了tsocks，通常只需要apt-get install或pacman -S即可，Mac OS X下则可以利用MacPorts安装，然后修改配置文件/etc/tsocks.conf(MacPorts会安装到/opt/local/etc目录)，可以在样本文件tsocks.conf.sample的基础上修改，通常只要配置server = 127.0.0.1即可，其他都可以默认。</p>
<p>有了这些打底，剩下的就很简单了: 首先 ssh -D 1080 -f -N 用户名@公司服务器的公网地址 在本机的1080端口开启SOCKS服务；然后按照你平时使用svn的习惯，只是在命令前加上tsocks，类似这样: tsocks svn up 或者 tsocks svn ci -m 'blahblahblah' 等等即可，本地的svn sandbox不需要任何修改。</p>
<p>这个例子可以说只是冰山一角，不论是ssh还是tsocks都还有更高级的用法，而这个通道一旦打通，它的效果就像是简化版的VPN，除了ping之类的少数命令外，几乎就跟你在公司做各种操作没有两样，所以，发挥你的想象力吧 :)</p>

<img src ="http://www.blogjava.net/sean/aggbug/343994.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-02-09 22:37 <a href="http://www.blogjava.net/sean/archive/2011/02/09/343994.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>[Tips] Emacs字符编码相关指令</title><link>http://www.blogjava.net/sean/archive/2011/01/05/342345.html</link><dc:creator>laogao</dc:creator><author>laogao</author><pubDate>Wed, 05 Jan 2011 05:31:00 GMT</pubDate><guid>http://www.blogjava.net/sean/archive/2011/01/05/342345.html</guid><wfw:comment>http://www.blogjava.net/sean/comments/342345.html</wfw:comment><comments>http://www.blogjava.net/sean/archive/2011/01/05/342345.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/sean/comments/commentRss/342345.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/sean/services/trackbacks/342345.html</trackback:ping><description><![CDATA[<br />
<p>在Vim中，我们可以通过set fencs=utf-8,gbk告诉它按照先utf-8后gbk的顺序自动识别打开文件的字符编码。Emacs也有一组字符编码相关指令，整理如下：</p>
<p>指令全名：set-buffer-file-coding-system<br />
指令作用：改变当前buffer的编码<br />
调用方法：(以目标编码gbk为例)<br />
C-x &lt;RET&gt; f gbk &lt;RET&gt;<br />
该指令还可以用于改变当前buffer的换行习惯(编码参数用dos或unix，对应\r\n或\n)。</p>
<p>指令全名：universal-coding-system-argument<br />
指令作用：指定紧随其后的命令(如C-x C-f或C-x C-w等)所采用的编码<br />
调用方法：(以目标编码gbk为例)<br />
C-x &lt;RET&gt; c gbk &lt;RET&gt;</p>
<p>指令全名：revert-buffer-with-coding-system<br />
指令作用：用指定编码重读当前buffer(如果打开时用错了编码)<br />
调用方法：(以目标编码gbk为例)<br />
C-x &lt;RET&gt; r gbk &lt;RET&gt;</p>
<p>指令全名：recode-region<br />
指令作用：将以错误编码解码的选区以指定编码重新解码<br />
调用方法：(以目标编码gbk为例)<br />
M-x recode-region &lt;RET&gt; gbk &lt;RET&gt; utf-8 &lt;RET&gt;</p>
<p>除了这些操作外，还有一种方法，那就是在文件开始的部分给出如下形式的指令，直接告诉编辑器在打开和保存时应采用的编码：<br />
-*- coding: gbk -*-<br />
接触过Python的同学是不是觉得很眼熟?</p>
<p>[补充] 查看当前编码选择的命令为：<br />
M-x describe-coding-system &lt;RET&gt; 或 C-h C &lt;RET&gt;<br />
也可在回车前输入具体的编码名称(如gbk)以查看详细说明。</p>

<img src ="http://www.blogjava.net/sean/aggbug/342345.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-01-05 13:31 <a href="http://www.blogjava.net/sean/archive/2011/01/05/342345.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>"已"是如何变成"å·²"的？小记UTF-8编码</title><link>http://www.blogjava.net/sean/archive/2009/05/05/269045.html</link><dc:creator>laogao</dc:creator><author>laogao</author><pubDate>Tue, 05 May 2009 11:24:00 GMT</pubDate><guid>http://www.blogjava.net/sean/archive/2009/05/05/269045.html</guid><wfw:comment>http://www.blogjava.net/sean/comments/269045.html</wfw:comment><comments>http://www.blogjava.net/sean/archive/2009/05/05/269045.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/sean/comments/commentRss/269045.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/sean/services/trackbacks/269045.html</trackback:ping><description><![CDATA[
		<br />本来是手写的一张草稿，清理台面的时候，正要扔，发现内容还有点意思，干脆吧，开个随笔记录一下，备忘，说不定还能帮到别人。<br /><br />在我们日常生活和工作中，尤其浏览含有中文的网站，时常会为乱码问题犯愁，一些天生Unicode支持不到位的编程语言和软件更是加重了这个现象。虽说已经是2009年了，我们时不时还是能碰到一些明显脑残的code，吐出一堆乱码，不论你用选什么字符集，似乎都无法还原最初的中文。比如"å·²"，或者同一个页面，无法用同一个字符集显示，任何一种字符都至少有一部分显示不正确，不是这儿就是那儿。<br /><br />首先科普一下UTF-8。UTF-8是Unicode所有字符编码实现中，应用范围最广的一个，最大的特点是兼容ASCII码，在此基础上，通过1..4个byte来表示每一个Unicode字符。它是怎么做到的？其实很简单，看首个byte：<br />00000000 ~ 01111111 : 0~127 (ASCII, 单个byte) 表示Unicode范围\u0000 ~ \u007F<br />11000000 ~ 11011111 : (2个1打头，所以2个byte) 表示Unicode范围\u0080 ~ \u07FF<br />11100000 ~ 11101111 : (3个1打头，所以3个byte) 表示Unicode范围\u0800 ~ \uFFFF<br />11110000 ~ 11110111 : (4个1打头，所以4个byte) 表示Unicode范围\u10000 ~ \u10FFFF<br /><br />除了单个byte这个case，其他情况下，后续的byte均以10打头。这些打头的bit：10、110、1110、11110，都不作为具体编码的一部分参与真正Unicode编码的计算。所以1..4个byte，其有效位数分别为：7、11、16、21，因此才有了\u007F、\u07FF、\uFFFF这样的临界值，且4个byte的空间还有富余。<br /><br />有了这个基础知识，我们就来具体看看这个"已"字，是怎么被UTF-8表示的，以及为什么处理不当的代码会最终输出"å·²"。<br /><br />"已"字，用Unicode表示法，是\u5DF2，按照2个byte拆开成二进制表示：<br />01011101 11110010<br />如果用UTF-8编码，采用1110???? 10?????? 10??????这个格式，?号部分填入上述01011101 11110010，得到<br />11100101 10110111 10110010 这样3个byte。<br /><br />好了，这个时候脑残代码出现，假如它不认识UTF-8，那么他会看到这样3个前后没有关联的byte，在西欧Latin-1字符集(即ISO 8859-1)中，它们分别表示"å"、"·"、"²"这3个字符。如果把它们分别再按照UTF-8编码，就成了：<br />11000011 10100101 11000010 10110111 11000010 10110010<br />完美的UTF-8编码，只不过，这完全是假象，只能通过非常规手段才能恢复它原本的样子。<br /><br /><br /><img src ="http://www.blogjava.net/sean/aggbug/269045.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-05-05 19:24 <a href="http://www.blogjava.net/sean/archive/2009/05/05/269045.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>[备忘] 在.bat中sleep和kill</title><link>http://www.blogjava.net/sean/archive/2009/01/23/252480.html</link><dc:creator>laogao</dc:creator><author>laogao</author><pubDate>Fri, 23 Jan 2009 11:36:00 GMT</pubDate><guid>http://www.blogjava.net/sean/archive/2009/01/23/252480.html</guid><wfw:comment>http://www.blogjava.net/sean/comments/252480.html</wfw:comment><comments>http://www.blogjava.net/sean/archive/2009/01/23/252480.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/sean/comments/commentRss/252480.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/sean/services/trackbacks/252480.html</trackback:ping><description><![CDATA[
		<br />在Unix环境下，命令行或者shell中sleep和kill是常见的动作，在Windows的.bat文件中处理类似的任务就不那么直接了，备忘如下：<br /><br />[sleep]<br />ping 127.0.0.1 -n 需要的秒数+1 -w 1000 &gt; nul<br /><br />[kill]<br />taskkill /f /im "进程名(如notepad.exe)"<br />taskkill /f /fi "WINDOWTITLE eq notepad*"<br /><br />其中/f表示强制，/im表示image镜像名(可执行文件名)，/fi表示filter，后面跟表达式，比如这里的"窗体标题等于notepad*"，支持wildcast通配符。<br /><br /><br /><img src ="http://www.blogjava.net/sean/aggbug/252480.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-01-23 19:36 <a href="http://www.blogjava.net/sean/archive/2009/01/23/252480.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>技嘉GA-M55SLI-S4主板北桥风扇问题</title><link>http://www.blogjava.net/sean/archive/2008/12/17/246755.html</link><dc:creator>laogao</dc:creator><author>laogao</author><pubDate>Tue, 16 Dec 2008 16:51:00 GMT</pubDate><guid>http://www.blogjava.net/sean/archive/2008/12/17/246755.html</guid><wfw:comment>http://www.blogjava.net/sean/comments/246755.html</wfw:comment><comments>http://www.blogjava.net/sean/archive/2008/12/17/246755.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/sean/comments/commentRss/246755.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/sean/services/trackbacks/246755.html</trackback:ping><description><![CDATA[
		<br />
		<i>提示: 流水账+非技术贴，赶时间的朋友请跳过。</i>
		<br />
		<br />最近一段时间以来，家里的PC（平时也就是给老爸老妈玩玩游戏看看股票什么的）开机状态下声音狂响，运行一些高CPU消耗的程序时有死机（直接跳掉关机）。实在不胜其扰，今天终于下定决心给它来个体检。<br /><br />根据鄙人并不丰富的经验，噪音肯定是来自风扇，而时有发生的自动关机现象，怀疑是风扇问题引发的散热不足导致CPU或者其他核心组件过热。观察下来CPU温度并不是很离谱，更加重了疑虑，准备开箱检查。简单的用螺丝刀把手压停风扇的办法，很快找到了问题风扇：确实不是CPU，也不是显卡，而是北桥芯片上的那个！关机后，手工尝试拨动叶片，也能感觉到引起噪音阻力，看来确定是它无疑了。<br /><br />怎么办呢？不知道是nForce芯片组的特点，还是GIGABYTE这个系列的特点（手头这块主板型号是GA-M55SLI-S4），北桥芯片上除了散热片，还在散热片上集成了一个风扇，看来这个芯片组发热蛮厉害的，要命的是这块散热片+风扇（也就是北桥芯片）的位置正好在PCI-E插槽的末端，也就是说正好被显卡挡在下面，空间十分狭小，如果要更换散热片/风扇，也只能是找最薄最小的那种，还不能保证插孔间距是标准的。<br /><br /><img src="http://www.blogjava.net/images/blogjava_net/sean/GA-M55SLI-S4.jpg" alt="GA-M55SLI-S4.jpg" border="0" height="365" width="480" /><br /><br />不过既然都到这份儿上了，索性做到底，试试换一个吧。从一个废弃的老显卡上拆下来一块散热片带风扇，目测和主板上的那块长方形散热片卡口间距一致。由于这个散热片的特殊位置，害得我只有把主板卸下来才得以拆除，不过新的问题又来了，间距并不标准！至少和我之前卸下来的显卡风扇间距不一致，要宽那么一点点。我无语了，只好闷着头回去看看出问题的散热风扇还有没有什么补救的措施。经过一番敲敲弄弄，"手测"风扇叶片，感觉比先前顺了很多，赶紧接上电源，居然就这样奇迹般的不响了。<br /><br />Google了一下，网友对这块主板的噪音（貌似都是北桥芯片上这块风扇的事儿）也多有抱怨，看来偶遇到的不是个案啊。不管怎么说，撞大运也好，对症下药也好，问题总算是解决了，功夫没白费："整个世界安静了"。<br /><br /><br /><img src ="http://www.blogjava.net/sean/aggbug/246755.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-17 00:51 <a href="http://www.blogjava.net/sean/archive/2008/12/17/246755.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>[Tips] 修改Java程序系统默认字体</title><link>http://www.blogjava.net/sean/archive/2008/10/24/236363.html</link><dc:creator>laogao</dc:creator><author>laogao</author><pubDate>Fri, 24 Oct 2008 03:36:00 GMT</pubDate><guid>http://www.blogjava.net/sean/archive/2008/10/24/236363.html</guid><wfw:comment>http://www.blogjava.net/sean/comments/236363.html</wfw:comment><comments>http://www.blogjava.net/sean/archive/2008/10/24/236363.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/sean/comments/commentRss/236363.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/sean/services/trackbacks/236363.html</trackback:ping><description><![CDATA[
		<br />实在受不了在中文Windows下Java(Swing)程序默认的字体，那叫一个难看。如果你和我一样，那么希望下面的小贴士可以帮到你（以JDK 1.5.0为例）：<br /><br />1- 找到JRE目录，如果你安装的是JDK，那么在JDK的目录下可以找到jre子目录，就是它了；如果你安装的JRE，那么默认应该在Program Files\Java\jre1.5.0_...。<br />2- 进入JRE目录下的lib文件夹，你应该可以看到很多fontconfig开头的文件，找到fontconfig.properties.src，拷贝一份，重命名为fontconfig.properties。<br />3- 打开fontconfig.properties，你会看到一大堆字体相关的配置，找到allfonts.chinese-ms936这一条（通常在最前面），可以看到默认设置为SimSun，修改这个配置，选填你需要的字体名称即可，如"Courier New"、"Consolas"等。<br /><br />更详细的配置，参考：<br /><a target="_blank" title="http://java.sun.com/j2se/1.5.0/docs/guide/intl/fontconfig.html" href="http://java.sun.com/j2se/1.5.0/docs/guide/intl/fontconfig.html">http://java.sun.com/j2se/1.5.0/docs/guide/intl/fontconfig.html</a><br /><br /><br /><img src ="http://www.blogjava.net/sean/aggbug/236363.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-10-24 11:36 <a href="http://www.blogjava.net/sean/archive/2008/10/24/236363.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>[Tips] DIY轻松搞定Firefox扩展和Firefox版本的兼容性验证</title><link>http://www.blogjava.net/sean/archive/2008/07/28/218186.html</link><dc:creator>laogao</dc:creator><author>laogao</author><pubDate>Mon, 28 Jul 2008 14:12:00 GMT</pubDate><guid>http://www.blogjava.net/sean/archive/2008/07/28/218186.html</guid><wfw:comment>http://www.blogjava.net/sean/comments/218186.html</wfw:comment><comments>http://www.blogjava.net/sean/archive/2008/07/28/218186.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/sean/comments/commentRss/218186.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/sean/services/trackbacks/218186.html</trackback:ping><description><![CDATA[
		<br />Firefox不久前推出了3.0.x系列的第一个升级版3.0.1。周末的时候对系统做了一次升级，我用的Arch Linux完整只需要一个命令，方便的没话说，顺便也就把Firefox也升级到了3.0.1。<br /><br />说点题外话，由于Mozilla对Firefox的分发有着很严格的要求，很多Linux发行版都有自己的命名，最有名的当然是Debian的"Iceweasel"，一个"Firefox"，一个"Iceweasel"，倒也相得益彰。其余大大小小的Linux发行版则更多的使用另外一套可自由分发的代号：1.5是"Deer Park"，2.0是"Bon Echo"，3.0则是"Gran Paradiso"，3.0刚出的时候，也用过非正式的代号"Minefield"。<br /><br />升级很顺利，再次打开Firefox，已经是3.0.1版。不过这个时候有个小小的麻烦出现了：经常使用的MySocial 24x7插件(用它可以方便的查看和更新FriendFeed)和3.0.1不兼容，被disable掉了。呵呵，不过这可难不倒我，拿到官方的MySocial的xpi包，简单的检查了一下，便发现了问题所在：其实是MySocial插件本身打包的时候，指定了很具体的3.0.0.x这个最高版本，而我现在更新后的Firefox是3.0.1，难怪会报不兼容。1.5~3.0.0.x都是兼容的，3.0.1肯定没啥问题啦，所以就DIY一下吧，轻松搞定。<br /><br />具体方法如下，供各位爱好者参考：<br />xpi格式其实就是一个压缩文件，打开以后，找到install.rdf文件，其中有一段<br />        em:minVersion="1.5"<br />        em:maxVersion="3.0.0.*"<br />修改em:maxVersion为"3.0.*.*"，重新打包即可用来安装。<br /><br />其实不光MySocial，其他插件如果遇到类似问题，也可以参照处理。如果你碰巧需要，又不想去DIY，这里是<a title="http://www.blogjava.net/Files/sean/mysocial24x7-0.5.zip" href="/Files/sean/mysocial24x7-0.5.zip">做好的版本</a>，供下载使用，版本0.5，修改扩展名.zip为.xpi即可。<br /><br /><br /><img src ="http://www.blogjava.net/sean/aggbug/218186.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-07-28 22:12 <a href="http://www.blogjava.net/sean/archive/2008/07/28/218186.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Firefox这次玩大了</title><link>http://www.blogjava.net/sean/archive/2008/06/18/208749.html</link><dc:creator>laogao</dc:creator><author>laogao</author><pubDate>Tue, 17 Jun 2008 21:30:00 GMT</pubDate><guid>http://www.blogjava.net/sean/archive/2008/06/18/208749.html</guid><wfw:comment>http://www.blogjava.net/sean/comments/208749.html</wfw:comment><comments>http://www.blogjava.net/sean/archive/2008/06/18/208749.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.blogjava.net/sean/comments/commentRss/208749.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/sean/services/trackbacks/208749.html</trackback:ping><description><![CDATA[
		<br />刚看完法国对意大利的比赛，准备下载Firefox 3，结果你猜怎么着？Mozilla英文官网上提供的链接，到现在仍然是2.0.0.14，尽管图标已经更新成了Firefox 3，而Mozilla中文官网，干脆就连不上了。(实际上是mozilla.org.cn连不上，不过貌似中文官网不知什么时候已经改成了mozillaonline.com，但提供的仍然是RC3。)<br /><br />其实在昨天，就已经有人对Mozilla选择在PDT 10:00 AM开始Download Day提出了异议，因为既然Firefox是面向全球的粉丝，这次下载活动也是全球范围内进行，为什么要选择在大半个欧洲都处于当天深夜，大半个个亚洲都已是第二天凌晨的时候启动呢？<br /><br />好吧，我们尊重Mozilla的选择，但是看来好事多磨，在PDT 10:00 AM，也就是北京时间凌晨1点过去4个多小时后，仍然没法顺利下载到正式版。<br /><br />来自CNET的跟踪报道：<br /><a target="_blank" title="http://news.cnet.com/8301-10784_3-9970628-7.html" href="http://news.cnet.com/8301-10784_3-9970628-7.html">http://news.cnet.com/8301-10784_3-9970628-7.html</a><br /><br />[更新|2008-06-18 06:15:00]<br />决定DIY一下，不等官网刷新了：<br /><a title="http://download.mozilla.org/?product=firefox-3.0&amp;os=linux&amp;lang=en-US" href="http://download.mozilla.org/?product=firefox-3.0&amp;os=linux&amp;lang=en-US">http://download.mozilla.org/?product=firefox-3.0&amp;os=linux&amp;lang=en-US<br /></a>注意后面的参数，根据需要，os可以选择linux/osx/win，lang可以选择en-US/zh-CN等等。<br /><br /><br /><img src ="http://www.blogjava.net/sean/aggbug/208749.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-06-18 05:30 <a href="http://www.blogjava.net/sean/archive/2008/06/18/208749.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>[链接] Office 2003 Service Pack Disables Older File Formats</title><link>http://www.blogjava.net/sean/archive/2008/01/02/172311.html</link><dc:creator>laogao</dc:creator><author>laogao</author><pubDate>Wed, 02 Jan 2008 13:33:00 GMT</pubDate><guid>http://www.blogjava.net/sean/archive/2008/01/02/172311.html</guid><wfw:comment>http://www.blogjava.net/sean/comments/172311.html</wfw:comment><comments>http://www.blogjava.net/sean/archive/2008/01/02/172311.html#Feedback</comments><slash:comments>3</slash:comments><wfw:commentRss>http://www.blogjava.net/sean/comments/commentRss/172311.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/sean/services/trackbacks/172311.html</trackback:ping><description><![CDATA[
		<br />
		<a title="http://it.slashdot.org/article.pl?sid=08/01/01/137257" href="http://it.slashdot.org/article.pl?sid=08/01/01/137257">http://it.slashdot.org/article.pl?sid=08/01/01/137257</a>
		<br />(来自Slashdot社区的文章链接)<br /><br />M$ Office 2003 SP3将取消对一部分老Office文件格式的支持，官方的说法是这些文件格式不够安全。本来就是二进制格式的文件了，隔几年你就搞个新的不兼容的格式，这是要存用户的数据还是你的数据啊？逼(诱?)大家升级？<br /><br />我本人不用M$ Office，但我周围许多人在用，而且大都很热衷于尝试新的版本。我想问问还在继续使用M$ Office的朋友，如果10年后，你今天写下的文档，再无法用市面上找的到的工具打开，你还会继续放心的使用今天这个工具吗？<br /><br />如果工具有bug、不安全，那你就做个没bug、安全的工具，别老拿文件格式当幌子，这不是祸祸人么？<br /><br /><br />另一篇挺有趣的文章:<br /><a href="http://www.vanwensveen.nl/rants/microsoft/IhateMS.html">Why I hate Microsoft</a><br /><a title="Why I Hate Microsoft" href="http://www.vanwensveen.nl/rants/microsoft/IhateMS.html"><br /></a><br /><img src ="http://www.blogjava.net/sean/aggbug/172311.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-02 21:33 <a href="http://www.blogjava.net/sean/archive/2008/01/02/172311.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>[KUDOS] Google Reader的最新界面改进，100+调整为1000+</title><link>http://www.blogjava.net/sean/archive/2007/09/09/143843.html</link><dc:creator>laogao</dc:creator><author>laogao</author><pubDate>Sun, 09 Sep 2007 14:34:00 GMT</pubDate><guid>http://www.blogjava.net/sean/archive/2007/09/09/143843.html</guid><wfw:comment>http://www.blogjava.net/sean/comments/143843.html</wfw:comment><comments>http://www.blogjava.net/sean/archive/2007/09/09/143843.html#Feedback</comments><slash:comments>2</slash:comments><wfw:commentRss>http://www.blogjava.net/sean/comments/commentRss/143843.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/sean/services/trackbacks/143843.html</trackback:ping><description><![CDATA[
		<br />
过去的一段时间几乎没什么时间看RSS，周末在家打开Google Reader，发现Google Reader界面上的一个小小调整：<br /><br />
原先最多能显示出100+，当某项RSS或分类超过100条的时候，看不到具体的数值，只能看到"100+"的字样，经常是都已经浏览完了，左边还是显示
100+，必须Refresh一下才能纠正过来，加上我的胃口比较大，超过100的情况简直是家常便饭，一直对这个100+颇为不爽。现在这个上限提高到
了1000，能够直观的看到各个类别的具体未读条目数，一下子清晰了不少，至少对我来说这个改进很实用。<br /><br />
希望Google Reader能越做越好。<br /><br /><br /><img src ="http://www.blogjava.net/sean/aggbug/143843.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-09-09 22:34 <a href="http://www.blogjava.net/sean/archive/2007/09/09/143843.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>[Tips] 有趣而实用的词典机器人</title><link>http://www.blogjava.net/sean/archive/2007/05/07/115729.html</link><dc:creator>laogao</dc:creator><author>laogao</author><pubDate>Mon, 07 May 2007 09:31:00 GMT</pubDate><guid>http://www.blogjava.net/sean/archive/2007/05/07/115729.html</guid><wfw:comment>http://www.blogjava.net/sean/comments/115729.html</wfw:comment><comments>http://www.blogjava.net/sean/archive/2007/05/07/115729.html#Feedback</comments><slash:comments>2</slash:comments><wfw:commentRss>http://www.blogjava.net/sean/comments/commentRss/115729.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/sean/services/trackbacks/115729.html</trackback:ping><description><![CDATA[
		<br />
时下类似小i这样的IM机器人越来越多，今天又发现一个有趣的Dictman，也挺实用：<br /><br /><img src="http://i59.photobucket.com/albums/g290/sean_gao/blog/Screenshot-Dictman.png" alt="" /><br /><br />
使用方法是在MSN中添加dictman@hotmail.com，用Gtalk的朋友可以加dictman@gmail.com，成功后直接输入要查的单词即可，支持英汉或汉英。<br /><br /><br /><img src ="http://www.blogjava.net/sean/aggbug/115729.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-07 17:31 <a href="http://www.blogjava.net/sean/archive/2007/05/07/115729.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>[Tips] 恼人的winmail.dat及解决办法</title><link>http://www.blogjava.net/sean/archive/2007/03/26/106293.html</link><dc:creator>laogao</dc:creator><author>laogao</author><pubDate>Sun, 25 Mar 2007 16:24:00 GMT</pubDate><guid>http://www.blogjava.net/sean/archive/2007/03/26/106293.html</guid><wfw:comment>http://www.blogjava.net/sean/comments/106293.html</wfw:comment><comments>http://www.blogjava.net/sean/archive/2007/03/26/106293.html#Feedback</comments><slash:comments>48</slash:comments><wfw:commentRss>http://www.blogjava.net/sean/comments/commentRss/106293.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/sean/services/trackbacks/106293.html</trackback:ping><description><![CDATA[<br />
如果你使用非Outlook软件来处理来自Outlook以及Exchange Server的E-mail，你很可能会遇到附件为winmail.dat的邮件，而你完全不知道这个附件如何打开，甚至更惨的是原本附件在邮件中的文件也不幸被这个winmail.dat吃掉了。你也许会询问这封邮件的发件人，这个时候对方多半也是一头雾水，因为人家用Outlook用的好好的，从来没有听说过这个问题，说得直白一点，就是完全不知道你在说什么。<br />
<br />
那到底这个winmail.dat是什么呢？是MS的工具在编码打包你的邮件进行发送时，如果按照默认指定的RTF格式，会把格式信息按照MS自己的一套标准存放在邮件体中，造成非Outlook客户端不认识，无法正确解析。Well done, Redmond.<br />
<br />
怎么办呢？两个方案：<br />
1- 如果可能，向发件人建议不要使用Outlook或者至少让他/她发送邮件时不要使用RTF格式，纯文本或HTML均可。（注意如果修改全局设置没有效果的话，可能还需要单独修改每一个存在通讯录里的联系人。）<br />
2- 如果没办法让邮件的发送人对他/她使用的邮件客户端作任何调整，你也可以下载winmail.dat阅读器，如<a href="http://www.kopf.com.br/winmail/winmail-reader-setup.exe" target="_blank">http://www.kopf.com.br/winmail/winmail-reader-setup.exe</a> ，或者通过Google寻找其他类似工具。<br />
<br />
强烈呼吁大家使用符合open standards的工具，尤其是在日常交流中日益重要的E-mail上，这是对你邮件的接收者最基本、也最直接的尊重。<br />
<br /><br />
<img src ="http://www.blogjava.net/sean/aggbug/106293.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-26 00:24 <a href="http://www.blogjava.net/sean/archive/2007/03/26/106293.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>刚才见面，就说再见: 小记Subversion试用心得</title><link>http://www.blogjava.net/sean/archive/2007/03/14/103899.html</link><dc:creator>laogao</dc:creator><author>laogao</author><pubDate>Wed, 14 Mar 2007 15:07:00 GMT</pubDate><guid>http://www.blogjava.net/sean/archive/2007/03/14/103899.html</guid><wfw:comment>http://www.blogjava.net/sean/comments/103899.html</wfw:comment><comments>http://www.blogjava.net/sean/archive/2007/03/14/103899.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/sean/comments/commentRss/103899.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/sean/services/trackbacks/103899.html</trackback:ping><description><![CDATA[<br />
由于工作需要，最近在Linux服务器上试用Subversion，如果一切顺利，全公司的文档都将交给Subversion管理。我承认我对Subversion一直存在偏见，但为了给大家一个交代，还是硬着头皮小试了一下。结果运行数天以后，终于还是回到了CVS的老路上。<br />
<br />
Subversion的优点就不在这里重复了，网上很多介绍文章，也有很多忠实粉丝，不过没办法，我还是更喜欢CVS的简单和直接。熟悉Unix和类Unix系统的朋友一定有同感，CVS更加符合Unix的思维和解决问题的方式。<br />
让我们最终放弃Subversion主要有以下大大小小的原因：<br />
1- 一个新建的几乎是空的资源库，打包后大小即有39MB上下; << 经核实错怪SVN了，实测完全空白的资源库124K，向大家道歉！<br />
2- 资源库几乎是以一种完全不透明的方式存储用户资源库文件;<br />
3- 没有一个官方的、安全可靠的方式彻底删除一个误提交的文件，一旦提交上去，你的资源库将永远背着这个包袱; &lt;&lt; 这一条实在让我无法忍受。<br />
<br />
对于最后一条，官方说法是提供了一个svndumpfilter的方式，先把资源库dump出来，然后pipe到svndumpfilter过滤掉匹配的文件，最后再load回去。这几乎就是给我们判了死刑：dump文件动辄就会是好几个G，且随着时间增长，或者错误提交持续出现在超大型文件上，要完成这个dump和filter，以及周期性的备份，将要吃掉多少资源，不敢想象；svndumpfilter不支持wildcast，且这个字符串匹配由于是整个dump文件pipe到svndumpfilter，无法保证精确制导，尤其在生产环境，敏感文件被上传、有效文件被误删或者资源库遭到破坏的后果是很严重滴。<br />
<br /><br /><img src ="http://www.blogjava.net/sean/aggbug/103899.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:07 <a href="http://www.blogjava.net/sean/archive/2007/03/14/103899.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>[新闻] RSSOwl 2.0</title><link>http://www.blogjava.net/sean/archive/2007/03/01/101258.html</link><dc:creator>laogao</dc:creator><author>laogao</author><pubDate>Thu, 01 Mar 2007 00:25:00 GMT</pubDate><guid>http://www.blogjava.net/sean/archive/2007/03/01/101258.html</guid><wfw:comment>http://www.blogjava.net/sean/comments/101258.html</wfw:comment><comments>http://www.blogjava.net/sean/archive/2007/03/01/101258.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/sean/comments/commentRss/101258.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/sean/services/trackbacks/101258.html</trackback:ping><description><![CDATA[<br />
<a href="http://www.rssowl.org/node/210" target="_blank">http://www.rssowl.org/node/210</a><br />
<br />
RSSOwl终于有了2.0版的消息，RSSOwl 2.0最大的变化是<br />
1- 采用Eclipse RCP；<br />
2- 可以在本地保存feed。<br />
<br />
<br />
<img src ="http://www.blogjava.net/sean/aggbug/101258.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-01 08:25 <a href="http://www.blogjava.net/sean/archive/2007/03/01/101258.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>[Tips] 无意中发现一个互联网上共享文件的好地方</title><link>http://www.blogjava.net/sean/archive/2007/02/24/100436.html</link><dc:creator>laogao</dc:creator><author>laogao</author><pubDate>Fri, 23 Feb 2007 18:36:00 GMT</pubDate><guid>http://www.blogjava.net/sean/archive/2007/02/24/100436.html</guid><wfw:comment>http://www.blogjava.net/sean/comments/100436.html</wfw:comment><comments>http://www.blogjava.net/sean/archive/2007/02/24/100436.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.blogjava.net/sean/comments/commentRss/100436.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/sean/services/trackbacks/100436.html</trackback:ping><description><![CDATA[<br />
<a href="http://www.ohshare.com/" target="_blank">http://www.ohshare.com/</a><br />
<br />
文件大小限制在80M，没什么特别的要求，直接上传即可，据称超过30天没有下载的文件可能被删除，不过对于一般性的临时网络硬盘使用，已经足够了。<br />
<br />
我试用了一下，速度还可以，大家可以试试下面这个下载链接：<br />
<br />
<a href="http://dl8.ohshare.com/d/9417066/1172241028/ruby_1.8.5_p12.tar.gz" target="_blank">http://dl8.ohshare.com/d/9417066/1172241028/ruby_1.8.5_p12.tar.gz</a><br />
<br /><br />
<img src ="http://www.blogjava.net/sean/aggbug/100436.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-24 02:36 <a href="http://www.blogjava.net/sean/archive/2007/02/24/100436.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></channel></rss>