<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/rss2full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><!-- generator="wordpress/2.0.5" --><rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:dc="http://purl.org/dc/elements/1.1/" version="2.0">

<channel>
	<title>Richard's Weblog</title>
	<link>http://huang.yunsong.net</link>
	<description>前尘往昔逝如烟 曾忆风云舞九天</description>
	<pubDate>Sun, 08 Nov 2009 05:18:49 +0000</pubDate>
	<generator>http://wordpress.org/?v=2.0.5</generator>
	<language>en</language>
			<atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" href="http://feeds.feedburner.com/hys" type="application/rss+xml" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com" /><item>
		<title>Ubuntu 9.10 Quick Guide</title>
		<link>http://huang.yunsong.net/2009/ubuntu-910-karmic-quick-guide.html</link>
		<comments>http://huang.yunsong.net/2009/ubuntu-910-karmic-quick-guide.html#comments</comments>
		<pubDate>Sat, 07 Nov 2009 15:47:23 +0000</pubDate>
		<dc:creator>richard</dc:creator>
		
		<category>Linux</category>

		<guid isPermaLink="false">http://huang.yunsong.net/2009/ubuntu-910-karmic-quick-guide.html</guid>
		<description><![CDATA[1. partitioning
If you&#39;re using alternative image to install Ubuntu from ISO without CD, you&#39;ll find that the problem of unable partitioning hard disk is solved. That problem exists in both 8.10 and 9.04 releases. In the installation wizard, there is a newly added dialog to ask if you want to umount the hard disk. Choose [...]]]></description>
			<content:encoded><![CDATA[<p><strong>1. partitioning</strong></p>
<p>If you&#39;re using alternative image to install Ubuntu from ISO without CD, you&#39;ll find that the problem of unable partitioning hard disk is solved. That problem exists in both 8.10 and 9.04 releases. In the installation wizard, there is a newly added dialog to ask if you want to umount the hard disk. Choose yes if you want to partition hard disk.</p>
<p><strong>2. coexisting with Windows XP</strong></p>
<p>If your computer has Windows XP and Ubuntu coexisting, and want to keep using Windows boot loader to intialize computer. You need to install Ubuntu boot loader to a location other than MBR, for example, I installed it to /dev/sda6 which is the root partition (/) of my Ubuntu installation. Since Ubuntu 9.10, GRUB2 replaces GRUB. The <font face="courier new,courier">dd</font> approach doesn&#39;t work any more. The grub4dos tool offers us a workaround: NTLDR -&gt; grldr -&gt; grub -&gt; grub2 -&gt; Ubuntu. It&#39;s not perfect but works.</p>
<ol>
<li>Extract <font face="courier new,courier">grldr</font> from grub4dos package, and put it into Windows <font face="courier new,courier">C:\</font> folder.</li>
<li>Create a text file <font face="courier new,courier">menu.lst</font> under <font face="courier new,courier">C:\</font> folder. The content of <font face="courier new,courier">menu.lst</font> as following:<br />
<blockquote>title grub4dos<br />root (hd0,5)<br />kernel /boot/grub/core.img<br />boot</p></blockquote>
</li>
<li>Add the following to the end of <font face="courier new,courier">boot.ini</font><br />
<blockquote>C:\grldr=&quot;grub4dos&quot;</p></blockquote>
</li>
</ol>
<p><strong>3. Chinese input method </strong></p>
<p>IBus replaces SCIM in Ubuntu 9.10. I like IBus, but seems that the factory settings of IBus in Ubuntu 9.10 are not correct. Open IBus Preferences, switch to the &quot;Input Method&quot; tab, delete all existing methods from the list, then add &quot;PinYin&quot; method into the list.</p>
<p><img src="http://huang.yunsong.net/data/ibus.png" alt="" width="425" height="513" />&nbsp;</p>
<p><strong>4. adjustments</strong></p>
<p>4.1. default font</p>
<p>By default, Ubuntu 9.10 uses the embedded bitmap font of WenQuanYi ZenHei. I don&#39;t know why not use vector font. It&#39;s weird. Follow <a href="http://wenq.org/forum/viewtopic.php?f=13&amp;t=904" target="_blank">this post</a> to enable vector font.</p>
<p>4.2. desktop interface</p>
<p>Open Appearance Preferences, and switch to the &quot;Interface&quot; tab. Make sure the item &quot;Show icons in menus&quot; is checked, and select &quot;Icons only&quot; in the drop list of &quot;Toolbar button labels&quot;.</p>
<p><img src="http://huang.yunsong.net/data/desktop-interface.png" alt="" width="559" height="527" />&nbsp;</p>
<p><strong>5. problems and workarounds</strong></p>
<p>5.1. Eclipse</p>
<p>In Ubuntu 9.10, mouse clicking on some buttons of Eclipse doesn&#39;t work, but keyboard works. This bug is fixed in Eclipse 3.6M2. If you&#39;re using 3.5.x or earlier release, there is a <a href="http://www.norio.be/blog/2009/10/problems-eclipse-buttons-ubuntu-910" target="_blank">workaround</a> for you.</p>
<p>5.2. Lotus Notes 8.5.x</p>
<p>Lotus Notes fails to draw several windows in Ubuntu 9.10. IBM is going to fix this bug in next minor release 8.5.2. If you&#39;re using 8.5.1, like me, or 8.5.0, don&#39;t worry, there is also an easy <a href="https://bugs.launchpad.net/ubuntu/+source/gtk+2.0/+bug/398250" target="_blank">workaround</a> (in #13 reply).</p>
]]></content:encoded>
			<wfw:commentRss>http://huang.yunsong.net/2009/ubuntu-910-karmic-quick-guide.html/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Android Twitter 翻墙指南</title>
		<link>http://huang.yunsong.net/2009/android-twitter-gfw.html</link>
		<comments>http://huang.yunsong.net/2009/android-twitter-gfw.html#comments</comments>
		<pubDate>Sat, 01 Aug 2009 06:29:07 +0000</pubDate>
		<dc:creator>richard</dc:creator>
		
		<category>Misc</category>

		<guid isPermaLink="false">http://huang.yunsong.net/2009/android-twitter-gfw.html</guid>
		<description><![CDATA[其实这个标题我是成心这么起的，因为在 Android 下根本就不用做太多操作，很无缝无痛地就能避开 G-F-W 的拦阻。
如果你喜欢使用客户端程式来登录 Twitter service，比如赫赫有名的 Twidroid，你只需要在设置帐号时选 Other, 并使用以下配置：
API URL: nest.onedd.net/apiTwitter ID: your_id_herePassword: your_pwd_here
觉得以上过多技术细节？好吧，还有更简单的，直接在浏览器里打开 http://dabr.co.uk/ 并使用你的 Twitter username/password 登录，就可以了。dabr 是什么？来一段它的介绍吧：
dabr is a mobile web interface to Twitter&#39;s API. It has been described as m.twitter.com on steroids, and tries to provide as much mobile functionality as possible.
还有更多其他的备选，比如 slandr, twitstat, tweete, et al.
我想这就是开放的好处，Twitter 开放了自己的接口，人们可以通过任意自己喜欢的手段在 Twitter 中发布信息。从很大程度上，Twitter [...]]]></description>
			<content:encoded><![CDATA[<p>其实这个标题我是成心这么起的，因为在 Android 下根本就不用做太多操作，很无缝无痛地就能避开 G-F-W 的拦阻。</p>
<p>如果你喜欢使用客户端程式来登录 Twitter service，比如赫赫有名的 <a href="http://twidroid.com/" target="_blank">Twidroid</a>，你只需要在设置帐号时选 Other, 并使用以下配置：</p>
<p>API URL: nest.onedd.net/api<br />Twitter ID: your_id_here<br />Password: your_pwd_here</p>
<p>觉得以上过多技术细节？好吧，还有更简单的，直接在浏览器里打开 <a href="http://dabr.co.uk/">http://dabr.co.uk/</a> 并使用你的 Twitter username/password 登录，就可以了。dabr 是什么？来一段它的介绍吧：</p>
<blockquote><p>dabr is a mobile web interface to Twitter&#39;s API. It has been described as m.twitter.com on steroids, and tries to provide as much mobile functionality as possible.</p></blockquote>
<p>还有更多其他的备选，比如 <a href="http://m.slandr.net/">slandr</a>, <a href="http://www.twitstat.com/m/">twitstat</a>, <a href="http://m.tweete.net/">tweete</a>, et al.</p>
<p>我想这就是开放的好处，Twitter 开放了自己的接口，人们可以通过任意自己喜欢的手段在 Twitter 中发布信息。从很大程度上，Twitter 已经成为了信息流的主管道，是否是通过 Twitter 官方网站发布的一点都不重要了。</p>
]]></content:encoded>
			<wfw:commentRss>http://huang.yunsong.net/2009/android-twitter-gfw.html/feed/</wfw:commentRss>
		</item>
		<item>
		<title>入手 G2 及 Android Apps 推荐</title>
		<link>http://huang.yunsong.net/2009/my-must-have-android-apps.html</link>
		<comments>http://huang.yunsong.net/2009/my-must-have-android-apps.html#comments</comments>
		<pubDate>Sat, 01 Aug 2009 06:00:38 +0000</pubDate>
		<dc:creator>richard</dc:creator>
		
		<category>Misc</category>

		<guid isPermaLink="false">http://huang.yunsong.net/2009/my-must-have-android-apps.html</guid>
		<description><![CDATA[等了差不多三个月，终于按耐不住了，上上周六出手 G2，购入一部 台版 HTC Magic，3200 大洋，外加一张屏幕保护膜 50 大洋、8G 高速 KINGMAX microSD 卡 150 大洋，总共耗资 天朝币 3400 大洋。
HTC Magic 目前世面上可以看到的版本主要有 Vodafone 版、T-Mobile 版、台湾版、香港版。个人觉得最好选择台湾版。可以很容易在网路上找到不同版本的对照表。
Android 出自 Google 门下，自然与 Google 诸多服务绑定紧密。如果你跟我一样严重依赖 Google Services 的话，Android 系 smart phone 真的非常合适。设置了你的 Google Account 后，Gmail, Google Contacts, Google Calendar 等主要服务都会自动同步。Google 目前的主要服务基本都有移动版本，比如 Google Maps, Google Docs, Picasaweb, Google Reader 等等，都针对手机设备进行了调节和优化。
Smart phone 最吸引人的地方之一应该就是它的第三方应用程序，可以极大地拓展其功能和应用范围。就像 iPhone 有 [...]]]></description>
			<content:encoded><![CDATA[<p>等了差不多三个月，终于按耐不住了，上上周六出手 G2，购入一部 台版 HTC Magic，3200 大洋，外加一张屏幕保护膜 50 大洋、8G 高速 KINGMAX microSD 卡 150 大洋，总共耗资 天朝币 3400 大洋。</p>
<p>HTC Magic 目前世面上可以看到的版本主要有 Vodafone 版、T-Mobile 版、台湾版、香港版。个人觉得最好选择台湾版。可以很容易在网路上找到不同版本的对照表。</p>
<p>Android 出自 Google 门下，自然与 Google 诸多服务绑定紧密。如果你跟我一样严重依赖 Google Services 的话，<a href="http://www.android.com" target="_blank">Android</a> 系 smart phone 真的非常合适。设置了你的 Google Account 后，Gmail, Google Contacts, Google Calendar 等主要服务都会自动同步。Google 目前的主要服务基本都有移动版本，比如 Google Maps, Google Docs, Picasaweb, Google Reader 等等，都针对手机设备进行了调节和优化。</p>
<p>Smart phone 最吸引人的地方之一应该就是它的第三方应用程序，可以极大地拓展其功能和应用范围。就像 iPhone 有 App Store 一样，Android phone 也有一个类似的东西，叫做 App Market. 当然，其丰富程度比不上 App Store, 不过我相信会慢慢赶上来的。</p>
<p>恰好这周在外培训，有了大把的时间可以好好把玩这部机器，也尝试了很多应用程序，下面是我目前的 must-have:</p>
<p>AK Notepad：一个记事本程式。试过好几个记事本程式，最后还是这个正。</p>
<p>子午播放器（安装后名称是英文的，叫做 Meridian）：一个全功能多媒体播放器，不过我只用它来播放电影。它支持 srt 格式的字幕（文件内码得是 UTF-8 编码），对中国人来说这很重要。著名的 Video Player 就不支持字幕。</p>
<p>Astrid Task/Todo List：一个任务管理程式。它可以与 <a href="http://huang.yunsong.net/2008/rtm-makes-you-organized.html">RTM</a> 无缝地同步，非常棒。</p>
<p>Meebo IM：相当于 Linux 下的 Pidgin，一个支持多协议的即时通讯工具。我主要用它来登录 MSN 和 Yahoo Messengers. 比那个 Hi MSN 好的不是一点半点。</p>
<p>The Weather Channel：天气预报。</p>
<p>ConnectBot：一个 telnet/ssh 客户端。比系统自带的那个 telnet 客户端好用多了。这样我在路上也可以远程操作我的服务器主机了。</p>
<p>Places Directory：一项来自 Google 的寻址服务。就是可以找出在你周围的一些服务设施，比如宾馆、餐厅、咖啡厅、茶馆、加油站等。</p>
<p>Compass：指南针。这玩意儿对我这样方向感不强的人很有用的。</p>
<p>Wapedia Mobile Wiki：wikipedia 的移动版客户端。支持中文。</p>
<p>Beelicious：在浏览器中共享到 del.icio.us. 因为我一直使用 del.icio.us 管理我的 bookmarks, 所以这个插件对我很有用。</p>
]]></content:encoded>
			<wfw:commentRss>http://huang.yunsong.net/2009/my-must-have-android-apps.html/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Playing with MLDonkey</title>
		<link>http://huang.yunsong.net/2009/playing-with-mldonkey.html</link>
		<comments>http://huang.yunsong.net/2009/playing-with-mldonkey.html#comments</comments>
		<pubDate>Sun, 24 May 2009 07:30:30 +0000</pubDate>
		<dc:creator>richard</dc:creator>
		
		<category>TechNotes</category>

		<guid isPermaLink="false">http://huang.yunsong.net/2009/playing-with-mldonkey.html</guid>
		<description><![CDATA[If you&#39;re a non-Windows user, Linux or Mac, whatever, and want a client to connect eDonkey network, probably you&#39;ll try aMule which is a clone of eMule. I&#39;m not saying that aMule sucks, but&#8230; it&#39;s just not good enough. Actually we do have another choice, MLDonkey. Know what&#39;s coolest? MLDonkey is a multi-protocol P2P client. [...]]]></description>
			<content:encoded><![CDATA[<p>If you&#39;re a non-Windows user, Linux or Mac, whatever, and want a client to connect <a href="http://en.wikipedia.org/wiki/EDonkey" target="_blank">eDonkey</a> network, probably you&#39;ll try <a href="http://www.amule.org/" target="_blank">aMule</a> which is a clone of <a href="http://www.emule-project.net" target="_blank">eMule</a>. I&#39;m not saying that aMule sucks, but&#8230; it&#39;s just not good enough. Actually we do have another choice, <a href="http://mldonkey.sourceforge.net" target="_blank">MLDonkey</a>. Know what&#39;s coolest? MLDonkey is a multi-protocol P2P client. In addition to eDonkey, it also supports BitTorrent, HTTP, FTP, FastTrack, etc. Check out <a href="http://mldonkey.sourceforge.net/MLdonkeyPlugin" target="_blank">the full list</a>.</p>
<p>Ubuntu repository has MLDonkey, but the version is a bit little old. If you don&#39;t mind, it&#39;s easy to get it installed through <font face="courier new,courier">apt-get</font> utility, of course. I&#39;m going to compile MLDonkey from source code, because it&#39;s also easy to do the compilation.</p>
<p>Firstly install the prerequisites to make your enviroment ready for compiling:</p>
<p><font face="courier new,courier">$ sudo apt-get install ocaml libbz2-dev libgd2-xpm-dev libmagic-dev</font></p>
<p>Then get the source package and compile it:</p>
<p><font face="courier new,courier">$ tar jxvf mldonkey-3.0.0.tar.bz2<br />$ cd mldonkey-3.0.0<br />$ ./configure<br />$ make</font></p>
<p>No necessary to run any command like <font face="courier new,courier">&#39;sudo make install&#39;</font> to finish the installation, because what we need is only one file. It&#39;s <font face="courier new,courier">mlnet</font> generated after compiling. Just copy it to any place you want, e.g., <font face="courier new,courier">/usr/local/bin</font>.</p>
<p><font face="courier new,courier">$ sudo cp mlnet /usr/local/bin</font></p>
<p>The installation is done!</p>
<p>Run mlnet to start MLDonkey:</p>
<p><font face="courier new,courier">$ mlnet &amp;</font></p>
<p>A working folder, <font face="courier new,courier">.mldonkey</font>, is created in the current logged-in user&#39;s home directory during the first running.</p>
<p>Two official ways are provided to interact with MLDonkey: </p>
<ul>
<li>CLI via telnet. Default port is 4000. Try telnet localhost 4000</li>
<li>web interface via browser. Default port is 4080. Try http://localhost:4080</li>
</ul>
<p>If you dislike both and want a full-function GUI tool, you can try <a href="http://sancho.awardspace.com/" target="_blank">Sancho</a>. CLI is my favorite. The following is a list of common-use commands.</p>
<p>&gt; ?<br />short help</p>
<p>&gt; ??<br />long help</p>
<p>&gt; save<br />save options into the configuration files</p>
<p>&gt; kill<br />shutdown MLDonkey</p>
<p>&gt; q<br />exit the CLI admin console</p>
<p>&gt; users<br />print all MLDonkey users</p>
<p>&gt; whoami<br />print the current logged-in MLDonkey user</p>
<p>&gt; passwd &lt;thepwd&gt;<br />change your password</p>
<p>&gt; auth &lt;username&gt; &lt;password&gt;<br />authicate yourself before executing any directive</p>
<p>&gt; networks<br />print the enabled networks currently</p>
<p>&gt; disable &lt;num&gt;<br />disable the specified network</p>
<p>&gt; set client_name &lt;new-client-name&gt;<br />set the client name</p>
<p>&gt; set allowed_ips &quot;ip1 ip2 ip3&quot;<br />set which IPs have access to admin consoles.<br />For example,<br />&gt; set allowed_ips &quot;127.0.0.1 192.168.0.157&quot;</p>
<p>&gt; set max_hard_download_rate &lt;digit&gt;<br />set the maximal download rate. 0 means umlimited.<br />For example,<br />&gt; set max_hard_download_rate 0</p>
<p>&gt; servers &lt;URL&gt;<br />load servers from a file or a URL<br />For example,<br />&gt; servers http://www.emule.org.cn/server.met</p>
<p>&gt; n &lt;server name or IP&gt; [&lt;port&gt;]<br />add a new server manually<br />For example,<br />&gt; n no1.eserver.emule.org.cn 8080<br />&gt; n no2.eserver.emule.org.cn 8080</p>
<p>&gt; vm<br />print the connected servers</p>
<p>&gt; dllink &lt;download-link&gt;<br />add a download task</p>
<p>&gt; vd<br />print the downloading tasks</p>
<p>&gt; reshare<br />check shared files for removal</p>
<p>By default the downloaded files can be found in <font face="courier new,courier">$HOME/.mldonkey/incoming/files</font> or <font face="courier new,courier">$HOME/.mldonkey/incoming/directories</font>. Just move the downloaded files out, then run the above <font face="courier new,courier">&#39;reshare&#39;</font> command.</p>
<p>BTW, I&#39;m using Ubuntu Linux 9.04 when writing this post. </p>
]]></content:encoded>
			<wfw:commentRss>http://huang.yunsong.net/2009/playing-with-mldonkey.html/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Say Goodbye to Partial Content in Google Reader</title>
		<link>http://huang.yunsong.net/2009/google-reader-feed-full-content.html</link>
		<comments>http://huang.yunsong.net/2009/google-reader-feed-full-content.html#comments</comments>
		<pubDate>Fri, 22 May 2009 09:19:28 +0000</pubDate>
		<dc:creator>richard</dc:creator>
		
		<category>TechNotes</category>

		<guid isPermaLink="false">http://huang.yunsong.net/2009/google-reader-feed-full-content.html</guid>
		<description><![CDATA[Hate those feeds not providing full content? Users of Firefox and Google Reader don&#39;t have to suffer more, like me. There are always sweet workarounds for us. Extensibility is the power.
First of all, install greasemonkey which allows using javascript to change web pages on-the-fly. It likes a kind of container for javascript in Firefox. Then [...]]]></description>
			<content:encoded><![CDATA[<p>Hate those feeds not providing full content? Users of Firefox and <a href="https://www.google.com/reader" target="_blank">Google Reader</a> don&#39;t have to suffer more, like me. There are always sweet workarounds for us. Extensibility is the power.</p>
<p>First of all, install <a href="https://addons.mozilla.org/firefox/addon/748" target="_blank">greasemonkey</a> which allows using javascript to change web pages on-the-fly. It likes a kind of container for javascript in Firefox. Then go to userscripts.org, and install this script: <a href="http://userscripts.org/scripts/show/19949" target="_blank">google reader full feed changer</a>.</p>
<p>According to your OS, you can find a .js file under the folder</p>
<ul>
<li>Ubuntu Linux: $HOME/.mozilla/firefox/<em>profile_id</em>/gm_scripts/</li>
<li>Windows XP: %APPDATA%\Mozilla\Firefox\Profiles\<em>profile_id</em>\gm_scripts\</li>
</ul>
<p>Use your favorite editor to open it, and add your definitions in SITE_INFO like the following code snippet:</p>
<blockquote><p>{ <br />&nbsp;&nbsp;&nbsp; url: &#39;http://chinese.wsj.com&#39;, <br />&nbsp;&nbsp;&nbsp; xpath: &#39;//div[@id=&quot;A&quot;]&#39;, <br />&nbsp;&nbsp;&nbsp; charset: &#39;gb2312&#39; <br />}, <br />{ <br />&nbsp;&nbsp;&nbsp; url: &#39;http://cn.reuters.com/&#39;, <br />&nbsp;&nbsp;&nbsp; xpath: &#39;//div[@id=&quot;resizeableText&quot;]&#39; <br />}, <br />{ <br />&nbsp;&nbsp;&nbsp; url: &#39;http://www.ftchinese.com/&#39;, <br />&nbsp;&nbsp;&nbsp; xpath: &#39;//div[@class=&quot;content&quot;]&#39; <br />}, <br />{ <br />&nbsp;&nbsp;&nbsp; url: &#39;http://www.infzm.com&#39;, <br />&nbsp;&nbsp;&nbsp; xpath: &#39;//div[@id=&quot;content-context&quot;]&#39; <br />}</p></blockquote>
<p>url: define the domain name(s). If the URLs of feed and detail page have different domains, you need to define them all, for example,<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; url: &#39;http://(www|feed).openow.net&#39;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; url: &#39;http://(huang.yunsong.net|feeds2.feedburner.com)&#39;</p>
<p>xpath: define the HTML tag before the content. You can find the tag in the HTML source code of any detail page.</p>
<p>charset: define the character set of the detail page. It&#39;s an optional parameter.</p>
<p>OK. That&#39;s it!</p>
<p>Hmm&#8230; feeling&#8230; too much technical above. It might be a bit little boring and not easy to get started. Some of you doesn&#39;t like it. Right? OK, here comes an independent compiled Firefox add-on for making <a href="https://addons.mozilla.org/firefox/addon/6424" target="_blank">Google Reader better</a>. Try it instead. Have fun!</p>
]]></content:encoded>
			<wfw:commentRss>http://huang.yunsong.net/2009/google-reader-feed-full-content.html/feed/</wfw:commentRss>
		</item>
		<item>
		<title>NVIDIA Graphics Driver 180 Not Stable</title>
		<link>http://huang.yunsong.net/2009/nvidia-180-not-stable.html</link>
		<comments>http://huang.yunsong.net/2009/nvidia-180-not-stable.html#comments</comments>
		<pubDate>Sat, 25 Apr 2009 05:43:08 +0000</pubDate>
		<dc:creator>richard</dc:creator>
		
		<category>Linux</category>

		<guid isPermaLink="false">http://huang.yunsong.net/2009/nvidia-180-not-stable.html</guid>
		<description><![CDATA[Everything was fine when my ThinkPad T61p worked with the version 177 or 173 of NVIDIA Graphics Driver. When I got a notification that there was a new version 180 available, I was happy to upgrade it at once. Then problems came&#8230; sometimes my laptop got sudden black-screen crash on both Ubuntu 8.10 and 9.04! [...]]]></description>
			<content:encoded><![CDATA[<p>Everything was fine when my ThinkPad T61p worked with the version 177 or 173 of NVIDIA Graphics Driver. When I got a notification that there was a new version 180 available, I was happy to upgrade it at once. Then problems came&#8230; sometimes my laptop got sudden black-screen crash on both Ubuntu 8.10 and 9.04! Yes, it&#39;s black-screen, not Microsoft style blue-screen.</p>
<p>I found the following entries in <font face="courier new,courier">/var/log/messages</font></p>
<blockquote><p>Apr 25 12:35:56 hystp2 kernel: [ 5123.002987] Xorg[2927]: segfault at 5 ip b64df209 sp bfb99f60 error 4 in nvidia_drv.so[b6491000+3b4000]<br />Apr 25 12:35:56 hystp2 bonobo-activation-server (huangys-6077): could not associate with desktop session: Failed to connect to socket /tmp/dbus-n45hu1LoDE</p></blockquote>
<p>Seems that keeping crash is caused by NVIDIA driver. I have to switch back to 173. Is there any better solution than back to an old version?</p>
<p>Years passed, lacking of hardware driver support is still a big problem for Linux promotion. Although NVIDIA driver has bugs, it supports Linux better than ATI. Speaking of ATI driver for Linux&#8230; it really sucks.</p>
]]></content:encoded>
			<wfw:commentRss>http://huang.yunsong.net/2009/nvidia-180-not-stable.html/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Hotmail Enables Free POP3 Access</title>
		<link>http://huang.yunsong.net/2009/hotmail-free-pop3-access.html</link>
		<comments>http://huang.yunsong.net/2009/hotmail-free-pop3-access.html#comments</comments>
		<pubDate>Wed, 25 Mar 2009 08:25:52 +0000</pubDate>
		<dc:creator>richard</dc:creator>
		
		<category>Misc</category>

		<guid isPermaLink="false">http://huang.yunsong.net/2009/hotmail-free-pop3-access.html</guid>
		<description><![CDATA[Guess it&#39;s an old news already. The Hotmail&#39;s POP3 access service, which was provided to Hotmail Plus subscribers only, is free now! Lots of people have switched or are switching to Gmail which provides many great features including free POP3 and IMAP access services, but it&#39;s still a good thing to see this happen to [...]]]></description>
			<content:encoded><![CDATA[<p>Guess it&#39;s an old news already. The Hotmail&#39;s POP3 access service, which was provided to Hotmail Plus subscribers only, is free now! Lots of people have switched or are switching to Gmail which provides many great features including free POP3 and IMAP access services, but it&#39;s still a good thing to see this happen to Hotmail, right?</p>
<p>POP3 server: pop3.live.com<br />port: 995<br />security: SSL<br />username: yours@hotmail.com (or any other domains supported by Microsoft, e.g., msn.com, live.com)</p>
<p>SMTP server: smtp.live.com<br />port: 587<br />security: TLS<br />authentication required: Yes. Use your POP username here.</p>
]]></content:encoded>
			<wfw:commentRss>http://huang.yunsong.net/2009/hotmail-free-pop3-access.html/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Rocks! WordPress MU + HyperDB</title>
		<link>http://huang.yunsong.net/2009/wpmu-hyperdb.html</link>
		<comments>http://huang.yunsong.net/2009/wpmu-hyperdb.html#comments</comments>
		<pubDate>Sun, 22 Mar 2009 07:56:03 +0000</pubDate>
		<dc:creator>richard</dc:creator>
		
		<category>WordPress</category>

		<guid isPermaLink="false">http://huang.yunsong.net/2009/wpmu-hyperdb.html</guid>
		<description><![CDATA[Indeed it&#39;s very easy to get WPMU installed and up, but you&#39;ll find the number of tables in WPMU database increases every time a new blog is created. If you&#39;re providing public blogging service, the number of tables is going to 100, 1000, &#8230; very soon. Yes, WPMU is great, but the tables keep increasing, [...]]]></description>
			<content:encoded><![CDATA[<p>Indeed it&#39;s very easy to get WPMU installed and up, but you&#39;ll find the number of tables in WPMU database increases every time a new blog is created. If you&#39;re providing public blogging service, the number of tables is going to 100, 1000, &#8230; very soon. Yes, WPMU is great, but the tables keep increasing, that may drive you mad. I was mad, at least.</p>
<p>In WPMU version 2.7, there are 9 global tables: blogs, blog_versions, registration_log, signups, site, sitecategories, sitemeta, usermeta, users. These 9 tables are fixed and serving for WPMU system globally. Every blog has its own 8 tables: comments, links, options, postmeta, posts, terms, term_relationships, term_taxonomy. These 8 tables are created over and over every new blog is created.</p>
<p>This designing is cool and useful from scalability view, especially for those big blogging service providers, <a href="http://wordpress.com" target="_blank">wordpress.com</a> is a good example. But WPMU uses only one database by default, it&#39;s hard to manage the excessive tables in one database, and the performance should also not be good. OK, here comes <a href="http://wordpress.org/extend/plugins/hyperdb/" target="_blank">HyperDB</a>, which can solve this problem. Actually HyperDB is derived from the code using by wordpress.com.</p>
<p>Before starting installing and configuring, we need to define a rule for databases. In this post, the rule is:</p>
<ul>
<li>One database (wpmu_db0) for the global tables and the tables of first blog. It can be called global database.</li>
<li>Additional 3 databases (wpmu_db1, wpmu_db2, wpmu_db3) for the tables of other blogs, each database serves 2 blogs.</li>
</ul>
<p>Of course, you can define your own rules based-on your needs. It&#39;s flexible.</p>
<p>We can start now. The first thing is to set up a standard WPMU using the global database in the installation wizard. After that, go to WordPress website and download HyperDB. The version I&#39;m using is 2008-11-27. There are three files in HyperDB package:</p>
<ul>
<li><font face="courier new,courier">db.php</font>, which needs to be uploaded to <font face="courier new,courier">wp-content</font> directory</li>
<li><font face="courier new,courier">db-settings.php</font>, which needs to be uploaded to the directory that holds <font face="courier new,courier">wp-config.php</font></li>
<li><font face="courier new,courier">readme.txt</font>, oh, you know what it means</li>
</ul>
<p>Then add the following lines near the top of <font face="courier new,courier">wp-config.php</font></p>
<p>define(&#39;WPMU&#39;, true);<br />require(&#39;db-settings.php&#39;);</p>
<p>Then add the blow code at the bottom of <font face="courier new,courier">db-settings.php</font></p>
<p>// a handy function for mapping blog tables to dataset<br />function add_blog_tables($ds, $blog_id){<br />&nbsp;&nbsp; &nbsp;add_db_table($ds, &#39;wp_&#39; . $blog_id . &#39;_comments&#39;);<br />&nbsp;&nbsp; &nbsp;add_db_table($ds, &#39;wp_&#39; . $blog_id . &#39;_links&#39;);<br />&nbsp;&nbsp; &nbsp;add_db_table($ds, &#39;wp_&#39; . $blog_id . &#39;_options&#39;);<br />&nbsp;&nbsp; &nbsp;add_db_table($ds, &#39;wp_&#39; . $blog_id . &#39;_postmeta&#39;);<br />&nbsp;&nbsp; &nbsp;add_db_table($ds, &#39;wp_&#39; . $blog_id . &#39;_posts&#39;);<br />&nbsp;&nbsp; &nbsp;add_db_table($ds, &#39;wp_&#39; . $blog_id . &#39;_terms&#39;);<br />&nbsp;&nbsp; &nbsp;add_db_table($ds, &#39;wp_&#39; . $blog_id . &#39;_term_relationships&#39;);<br />&nbsp;&nbsp; &nbsp;add_db_table($ds, &#39;wp_&#39; . $blog_id . &#39;_term_taxonomy&#39;);<br />}</p>
<p>// add databases<br />add_db_server(&#39;global&#39;, 0, &#39;mysql3326_1&#39;, 1, 1, &#39;localhost:3326&#39;, &#39;&#39;, &#39;wpmu_db0&#39;, &#39;wpuser&#39;, &#39;thepwd&#39;);<br />add_db_server(&#39;s1&#39;, 0, &#39;mysql3326_2&#39;, 1, 1, &#39;localhost:3326&#39;, &#39;&#39;, &#39;wpmu_db1&#39;, &#39;wpuser&#39;, &#39;thepwd&#39;);<br />add_db_server(&#39;s2&#39;, 0, &#39;mysql3306_1&#39;, 1, 1, &#39;localhost:3306&#39;, &#39;&#39;, &#39;wpmu_db2&#39;, &#39;wpuser&#39;, &#39;thepwd&#39;);<br />add_db_server(&#39;s3&#39;, 0, &#39;mysql3306_2&#39;, 1, 1, &#39;localhost:3306&#39;, &#39;&#39;, &#39;wpmu_db3&#39;, &#39;wpuser&#39;, &#39;thepwd&#39;);</p>
<p>// add global tables which are in global database<br />add_db_table(&#39;global&#39;,&nbsp; &#39;wp_blogs&#39;);<br />add_db_table(&#39;global&#39;, &#39;wp_blog_versions&#39;);<br />add_db_table(&#39;global&#39;, &#39;wp_registration_log&#39;);<br />add_db_table(&#39;global&#39;, &#39;wp_signups&#39;);<br />add_db_table(&#39;global&#39;, &#39;wp_site&#39;);<br />add_db_table(&#39;global&#39;, &#39;wp_sitecategories&#39;);<br />add_db_table(&#39;global&#39;, &#39;wp_sitemeta&#39;);<br />add_db_table(&#39;global&#39;, &#39;wp_usermeta&#39;);</p>
<p>// add the tables for the first blog (created during wpmu installation)<br />// the first blog&#39;s tables are in global database<br />// of course, you can move it to any database you want<br />add_blog_tables(&#39;global&#39;, 1);</p>
<p>$dbsnum=3; // 3 additional databases<br />$blogs_per_db=2; // each database serves 2 blogs</p>
<p>for($db_id=1; $db_id&lt;=$dbsnum; $db_id++){<br />&nbsp;&nbsp; &nbsp;$dataset = &#39;s&#39; . $db_id;<br />&nbsp;&nbsp; &nbsp;$max = $db_id * $blogs_per_db + 1; // include<br />&nbsp;&nbsp; &nbsp;$min = $max - $blogs_per_db + 1; // include<br />&nbsp;&nbsp; &nbsp;for($blog_id=$min; $blog_id&lt;=$max; $blog_id++){<br />&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;add_blog_tables($dataset, $blog_id);<br />&nbsp;&nbsp; &nbsp;}<br />}</p>
<p>That&#39;s it!</p>
]]></content:encoded>
			<wfw:commentRss>http://huang.yunsong.net/2009/wpmu-hyperdb.html/feed/</wfw:commentRss>
		</item>
		<item>
		<title>WordPress MU Local Installation</title>
		<link>http://huang.yunsong.net/2009/wpmu-local-install.html</link>
		<comments>http://huang.yunsong.net/2009/wpmu-local-install.html#comments</comments>
		<pubDate>Wed, 11 Mar 2009 09:25:48 +0000</pubDate>
		<dc:creator>richard</dc:creator>
		
		<category>WordPress</category>

		<guid isPermaLink="false">http://huang.yunsong.net/2009/wpmu-local-install.html</guid>
		<description><![CDATA[Resovling Domain Names Locally
Wanna try WPMU on local machine? If you use localhost or 127.0.0.1 as the server address directly, you always get a message similar to the following:
Do not use an IP address (like 127.0.0.1) as your server address. Do not use a single word hostname like localhost.
That means a FQDN is needed, the [...]]]></description>
			<content:encoded><![CDATA[<p><strong>Resovling Domain Names Locally</strong></p>
<p>Wanna try <a href="http://mu.wordpress.org" target="_blank">WPMU</a> on local machine? If you use localhost or 127.0.0.1 as the server address directly, you always get a message similar to the following:</p>
<blockquote><p>Do not use an IP address (like 127.0.0.1) as your server address. Do not use a single word hostname like localhost.</p></blockquote>
<p>That means a FQDN is needed, the good thing is that it&#39;s easy to resolve domain names virtually locally. Open the <font face="courier new,courier">hosts</font> file:</p>
<ul>
<li><font face="courier new,courier">C:\WINDOWS\system32\drivers\etc\hosts</font> (Windows)</li>
<li><font face="courier new,courier">/etc/hosts</font> (Linux)</li>
</ul>
<p>Add or modify something, and make sure there is a line like the following in the file:</p>
<p>127.0.0.1&nbsp;&nbsp;&nbsp;&nbsp;localhost hys.lan bloga.hys.lan blogb.hys.lan blogc.hys.lan blogd.hys.lan</p>
<p>Here, hys.lan is used to install WPMU, blog(a-d).hys.lan are addresses for testing, I&#39;ll use these four to create weblogs.</p>
<p><strong>Configuring Apache</strong></p>
<p>Make sure two things:</p>
<ul>
<li>Apache is listening on port 80, because WPMU doesn&#39;t support server address with port number.</li>
<li>mod_rewrite is enabled.</li>
</ul>
<p>Then adds a virtual host section:</p>
<p>&lt;VirtualHost *:80&gt;<br />&nbsp; DocumentRoot /opt/wordpress-mu<br />&nbsp; ServerName hys.lan<br />&nbsp; ServerAlias *.hys.lan<br />&nbsp; &lt;Directory &quot;/opt/wordpress-mu&quot;&gt;<br />&nbsp;&nbsp;&nbsp; AllowOverride FileInfo<br />&nbsp;&nbsp;&nbsp; Order allow,deny<br />&nbsp;&nbsp;&nbsp; Allow from all<br />&nbsp; &lt;/Directory&gt;<br />&lt;/VirtualHost&gt;</p>
<p><strong>Preparing Database</strong></p>
<p>Create an empty database, and grant permissions to a database user.</p>
<p>mysql&gt; create database wpmu_db;<br />mysql&gt; grant all privileges on wpmu_db.* to wpuser@&#39;%&#39; identified by &#39;thepwd&#39;;<br />mysql&gt; flush privileges;</p>
<p><strong>Installing WPMU</strong></p>
<p>It&#39;s very easy to get WPMU up. Open your browser, and type the server address, in my case, it&#39;s http://hys.lan. Provide the required information, and press the &quot;Submit&quot; button to go. Waiting for a while, WPMU is installed and runs successfully.</p>
]]></content:encoded>
			<wfw:commentRss>http://huang.yunsong.net/2009/wpmu-local-install.html/feed/</wfw:commentRss>
		</item>
	</channel>
</rss>
