<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	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/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	xmlns:creativeCommons="http://backend.userland.com/creativeCommonsRssModule">

<channel>
	<title>True EDGE &#187; Ubuntu</title>
	<atom:link href="http://blogs.gnome.org/happyaron/category/ubuntu/feed/" rel="self" type="application/rss+xml" />
	<link>http://blogs.gnome.org/happyaron</link>
	<description>Hacker builds things.</description>
	<lastBuildDate>Fri, 27 May 2011 15:19:04 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
<creativeCommons:license>http://creativecommons.org/licenses/by-nc-sa/3.0/</creativeCommons:license>		<item>
		<title>Announcing China national-wide Ubuntu 11.04 release parties</title>
		<link>http://blogs.gnome.org/happyaron/2011/04/29/announcing-china-national-wide-ubuntu-11-04-release-parties/</link>
		<comments>http://blogs.gnome.org/happyaron/2011/04/29/announcing-china-national-wide-ubuntu-11-04-release-parties/#comments</comments>
		<pubDate>Fri, 29 Apr 2011 11:49:34 +0000</pubDate>
		<dc:creator>Aron</dc:creator>
				<category><![CDATA[Ubuntu]]></category>

		<guid isPermaLink="false">http://blogs.gnome.org/happyaron/?p=486</guid>
		<description><![CDATA[After six month&#8217;s development, a brand new release of Ubuntu has arrived &#8211; Natty Narwhal. We are having more and more people interested in our community happily, thus I am now announcing 18 release parities in 17 cities in China, which will have approximately 2000 participates. It will be a wonderful chance for people to [...]]]></description>
			<content:encoded><![CDATA[<p>After six month&#8217;s development, a brand new release of Ubuntu has arrived &#8211; Natty Narwhal. We are having more and more people interested in our community happily, thus I am now announcing 18 release parities in 17 cities in China, which will have approximately 2000 participates. It will be a wonderful chance for people to share knowledge and joys, and generally enjoy the time getting together to celebrate a new release of the most widely used FLOSS distribution in China.</p>
<p>Here is the list cities and hosts (sort by alphabet order):<br />
City      / Host<br />
&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;<br />
Beijing   / Beijing University of Posts and Telecommunications<br />
Dalian    / Dalian Maritime University<br />
Deqing    / Deqing High School<br />
Guangzhou  / Sun Yat-Sen University<br />
Hangzhou  / Alibaba, Inc.<br />
Ji&#8217;nan    / Shandong Polytechnic University<br />
Jinzhou   / Liaoning Railway Vocational College of Technology<br />
Nanjing   / Nanjing University of Aeronautics and Astronautics<br />
Nanjing   / Nanjing University of Posts and Telecommunications<br />
Shanghai  / Shanghai University<br />
Shenzhen  / Unconfirmed (*)<br />
Tianjin   / Tianjin Normal University<br />
Wenzhou   / Wenzhou Vocational College of Science and Technology<br />
Wuhan     / Wuhan Railway Vocational College of Technology<br />
Xiangtan  / Hunan University of Science &amp; Technology<br />
Yantai    / Graduate School of China Agricultural University<br />
Zhengzhou / Henan Experimental High School<br />
Zhongshan / Zhongshan Institute of University of Electronic Science and Technology</p>
<p>* I haven&#8217;t confirmed where will host the release party in Shenzhen, however it has been handled by Shenzhen LUG already.</p>
]]></content:encoded>
			<wfw:commentRss>http://blogs.gnome.org/happyaron/2011/04/29/announcing-china-national-wide-ubuntu-11-04-release-parties/feed/</wfw:commentRss>
		<slash:comments>8</slash:comments>
		</item>
		<item>
		<title>Things to do before becoming a Debian Maintainer</title>
		<link>http://blogs.gnome.org/happyaron/2011/03/08/things-to-do-before-becoming-a-debian-maintainer/</link>
		<comments>http://blogs.gnome.org/happyaron/2011/03/08/things-to-do-before-becoming-a-debian-maintainer/#comments</comments>
		<pubDate>Tue, 08 Mar 2011 11:47:16 +0000</pubDate>
		<dc:creator>Aron</dc:creator>
				<category><![CDATA[Debian]]></category>
		<category><![CDATA[Ubuntu]]></category>

		<guid isPermaLink="false">http://blogs.gnome.org/happyaron/?p=437</guid>
		<description><![CDATA[Today I received a mail asking me to give him some advice on how to become a Debian Maintainer and Debian Developer, I am glad to hear more people getting interested on joining Debian, :-) The 1st thing to keep in mind is that, involving Debian&#8217;s development is easy, but becoming something _official_ requires a [...]]]></description>
			<content:encoded><![CDATA[<p>Today I received a mail asking me to give him some advice on how to become a Debian Maintainer and Debian Developer, I am glad to hear more people getting interested on joining Debian, :-)</p>
<p>The 1st thing to keep in mind is that, involving Debian&#8217;s development is easy, but becoming something <em>_official_</em> requires a lot of time and efforts, so just be patient, :)</p>
<p>Here are my advices:</p>
<li>1. Become a regular user of Debian (use it to do your everyday work as   much as possible, in other word you have to be a user before you are a developer).</li>
<p></p>
<li>2. Learn to make Debian package by reading Debian New Maintainer&#8217;s Guide[1]. This step gives you some basic ideas and methods on how to package software for Debian, but it&#8217;s still a bit far from making your package fits the Debian standards. You can find an existing package to work on it independently and then compare your work with the official one so you can find if there is any thing you still don&#8217;t know yet. Please don&#8217;t make very complex package here because it may just cost you many time on figuring out problems. It&#8217;ll be good if you ask some skilled people to give their opinions on your work (and in fact you can ask at any time before, during and after the process).</li>
<p></p>
<li>3. Find a software that you are interested in packaging it, and make sure you have enough knowledge/time to make and maintain it in the foreseeable future, if you can&#8217;t do either of the two you should find  another one to work on. Then, package it and check for any problems you can find, never try to hide problems when you are stucked, what you need to is do is just asking others for advice and mentoring, :)</li>
<p></p>
<li>4. When you believe your package is made to the best condition that you can do, find an official Debian Developer to check your package and to see whether it&#8217;s ready to become part of Debian release (he&#8217;s called a <em>_sponsor_</em>).
<p>  If there is one would like to help, he would do a throughout check on your package and find problems (and land mines) as much as he can. He might reject your package and ask you for improvements, then don&#8217;t be shy and just do what he has advised (DDs always think it is a good time to train new maintainers) and send your result back.   Finally he is satisfied and uploads you package to Debian archive.</p>
<p>  Try to get your first package uploaded as soon as possible if you&#8217;d like to achieve your aim at becoming DM/DD.</p>
<p>  You&#8217;ll have to read Debian Policy Manual[2] if you haven&#8217;t read it yet, and you may need to read it for several times while you are making your package. If you have enough time, it&#8217;ll be better if you read  Debian Developers Reference[3] as well.</li>
<p></p>
<li>5. It does not mean you can be a DM as your first (or even more) package being uploaded. Your sponsor must be convinced that you have the ability to manage upcoming updates and bug reports for some  specific package and then he would be happy to advocate you. This could usually be achieved by several good uploads (means he is satisfied with your work and nothing is required to be changed) and some bug management (optional). You can talk to your sponsor about advocating you to be a DM when you see fit.</li>
<p></p>
<li>6. It&#8217;s a requirement that your GPG key is signed by at least one Debian Developer and your key must be 2048R or stronger. If you don&#8217;t have, try to get one while you are processing the previous steps. Key signing does not need any skill-based judgment and you only need to find and meet some Debian Developers so they can check your identity.
</li>
<p>So you are a DM after some time of hard work, then you could plan on becoming a DD now. Being a DD is much more complex than becoming a DM, since you&#8217;ll have many privileges and people have to make sure you have the ability to use it correctly. You&#8217;ll need to read through all Debian documents and read/ask again about the details then.</p>
<p>[1]<a href="http://www.debian.org/doc/maint-guide/">http://www.debian.org/doc/maint-guide/</a><br />
[2]<a href="http://www.debian.org/doc/debian-policy/">http://www.debian.org/doc/debian-policy/</a><br />
[3]<a href="http://www.debian.org/doc/developers-reference/">http://www.debian.org/doc/developers-reference/</a></p>
]]></content:encoded>
			<wfw:commentRss>http://blogs.gnome.org/happyaron/2011/03/08/things-to-do-before-becoming-a-debian-maintainer/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Ubuntu 里的 ibus-pinyin</title>
		<link>http://blogs.gnome.org/happyaron/2011/01/27/more-on-ubuntu-ibus-pinyin/</link>
		<comments>http://blogs.gnome.org/happyaron/2011/01/27/more-on-ubuntu-ibus-pinyin/#comments</comments>
		<pubDate>Thu, 27 Jan 2011 16:40:38 +0000</pubDate>
		<dc:creator>Aron</dc:creator>
				<category><![CDATA[Ubuntu]]></category>

		<guid isPermaLink="false">http://blogs.gnome.org/happyaron/?p=394</guid>
		<description><![CDATA[前面写的《Ubuntu 中文拼音输入法小结》中说 ibus-pinyin 是 Python 写的，存在一些谬误。ibus-pinyin 已经用 C++ 重写，并且做了很多改进。 可能有些用 Ubuntu 的朋友要问为什么现在还会有那些崩溃的现象，其实这是发行版的问题，迟迟没有能将新版推送到用户手中。 感谢 Shawn P Huang，Shellexy 和 BYBird 的提醒，博客上的那篇文章也做了更新。]]></description>
			<content:encoded><![CDATA[<p>前面写的<a href="http://blogs.gnome.org/happyaron/2011/01/15/ubuntu-ime-chinese-pinyin-short-summary-zh/">《Ubuntu 中文拼音输入法小结》</a>中说 ibus-pinyin 是 Python 写的，存在一些谬误。ibus-pinyin 已经用 C++ 重写，并且做了很多改进。</p>
<p>可能有些用 Ubuntu 的朋友要问为什么现在还会有那些崩溃的现象，其实这是发行版的问题，迟迟没有能将新版推送到用户手中。</p>
<p>感谢 Shawn P Huang，Shellexy 和 BYBird 的提醒，博客上的那篇文章也做了更新。</p>
]]></content:encoded>
			<wfw:commentRss>http://blogs.gnome.org/happyaron/2011/01/27/more-on-ubuntu-ibus-pinyin/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Linux input method framework brief summary</title>
		<link>http://blogs.gnome.org/happyaron/2011/01/15/linux-input-method-brief-summary/</link>
		<comments>http://blogs.gnome.org/happyaron/2011/01/15/linux-input-method-brief-summary/#comments</comments>
		<pubDate>Sat, 15 Jan 2011 12:05:51 +0000</pubDate>
		<dc:creator>Aron</dc:creator>
				<category><![CDATA[Debian]]></category>
		<category><![CDATA[Fedora]]></category>
		<category><![CDATA[General]]></category>
		<category><![CDATA[Ubuntu]]></category>

		<guid isPermaLink="false">http://blogs.gnome.org/happyaron/?p=361</guid>
		<description><![CDATA[I am trying to keep this article concise for you to make you have an outline of current condition of Linux (and maybe other platforms like BSDs) input methods. It&#8217;s coverage is mostly CJK languages, but I think other languages that use input method would be sure to find there examples in this article. We [...]]]></description>
			<content:encoded><![CDATA[<p>I am trying to keep this article concise for you to make you have an outline of current condition of Linux (and maybe other platforms like BSDs) input methods. It&#8217;s coverage is mostly CJK languages, but I think other languages that use input method would be sure to find there examples in this article. We will start with the most popular ones, and there will be some hints about other ones at last.</p>
<p>Before we start our tour, there are two concepts to know, input method framework and input method engine:</p>
<li>An input method framework is designed to serve as a daemon and handle user input events, output the result to target applications or layers. </li>
<li>
An input method engine is a program to analyze inputed characters and calculate a list of probably results, then send the results to their hosted input method framework to complete the reaction with users and applications.</li>
<p>1. <a href="http://www.scim-im.org"><strong>SCIM</strong></a> (Smart Common Input Method)</p>
<p>Most Linux input method users may have the experience of using SCIM, which is created by Chinese developer Su Zhe for promoting his Intelligent Pinyin input method and providing a better input method framework. </p>
<p>Some friends of mine are still keep using SCIM even though it is not being maintained, nor SKIM, its sister project on KDE. SCIM was the default choice of distros for years. People developed lots of input method engines for it, for example scim-pinyin, which has been mentioned above as Intelligent Pinyin input method. Users may be also familiar with <a href="http://code.google.com/p/scim-python">scim-python</a>, scim-xingma-*, <a href="http://code.google.com/p/scim-googlepinyin">scim-googlepinyin</a> and the still-maintained <a href="http://code.google.com/p/sunpinyin">scim-sunpinyin</a>. </p>
<p>On a distro maker&#8217;s point of view, the glorious age of SCIM has just finished.</p>
<p>2. <a href="http://code.google.com/p/ibus"><strong>IBus</strong></a> (Intelligent Input Bus)</p>
<p>IBus is the de facto standard of input method framework on nowadays Linux distros, whose author is a Chinese developer, Huang Peng, who has been mentioned as the author of scim-python and scim-xingma-*. IBus is aiming at a &#8220;next generation input framework&#8221; comparing to SCIM. I think this goal has been achieved &#8211; new comers may only know IBus from the very beginning of his adventure on Linux.</p>
<p>IBus is written in C++, and is designed to be highly modularized: core input bus, gtk/qt interfaces, python binding, table engine, table modules and other input method engines. It uses Gtk immodule, thus is the best choice for GTK+ applications. What&#8217;s more, Flash Player support Gtk immodule only and IBus has no problem to work with it. The author of IBus is really helpful with other input engine developers, so there are many input method engines available on IBus framework. </p>
<p>But IBus has obvious limitations from its design:</p>
<li>Firstly, it uses Gtk immodule only, which benefit GTK+ platform applications, but do poorly with QT.</li>
<li>Secondly, it depends on gconf, which is unacceptable for some users and distro makers (most of them are anti-gnome holic).</li>
<li>Thirdly, the most used input engine, ibus-pinyin is written in Python that caused serious performance limitation. And this engine has had some severe bugs like memory leak and dead loop (100%). Even though the condition is largely improved, users are still complaining about them.</li>
<li>Fourthly, the alternative Pinyin engine <a href="http://code.google.com/p/sunpinyin">ibus-sunpinyin</a> is not well maintained, and really lacks of testing. There are some obvious bug leaving their without people interested to fix.</li>
<p><strong>Note</strong>: ibus-pinyin has been rewritten in mainly C++ with many improvements, and such changes will land on major in very near future (maybe some of them have already published it, I didn&#8217;t do a detailed research here).</p>
<p>3. <a href="http://code.google.com/p/fcitx"><strong>Fcitx</strong></a> (Free Chinese Input Toy for X)</p>
<p>Fcitx is an old and new input method. It bears at the same time as SCIM, and now gets a new life with the brand new 4.x series. As name suggests, it is first designed to be a Chinese specific input method by Yuking. During 3.x series, the aim of being a feature rich Chinese input method gave it quite a few of fans, but also kept it from being a default choice of major distros. Fcitx uses XIM, which works well for most platforms (like GTK+ and QT), but has some small problems.</p>
<p>However, starting from 4.x series, Fcitx has been given a new goal with a new maintainer &#8211; a college student at Peking University, Weng Xuetian. Now he has published 4.0.1, the second version of 4.x series, with features like customizable skins, tables which has been wanted for a long time. It has been heavily modularized: all tables are separated, developer-friendly input method engine interface, graphic user configuration tool. Also, 4.x series does not use GBK encoded Chinese configuration files anymore, and UTF-8 encoded English configuration files are used. I would like to highlight its perfect user experience of fcitx-sunpinyin, it is worthwhile for every Pinyin users to give a try.</p>
<p>There are still issues on its way of (probably) being the default of distros:</p>
<li>Though the author has promised Gtk immodule support in 4.1.0 release, the feature is still not available now.</li>
<li>The internal Pinyin input method is old, and still not being separate out from the framework core because of too close integration before. The work will be done in 4.1.0 as well.</li>
<li>Fcitx is still lacking of people who are interested in developing input method engines, even if the interface is more friendly to developers. There is an example, fcitx-sunpinyin (written in C++) has only ~300 lines to make everything work perfectly with libsunpinyin.</li>
<p>Properly speaking, Fcitx is still not a input method framework because of the reasons listed above, but it will be, also as said above.</p>
<p>Above are the most famous input methods, here is a list of other things in Linux input methods with short descriptions.</p>
<p>1. <a href="http://code.google.com/p/ucimf"><strong>ucimf</strong></a> (Unicode Console Input Method Framework)</p>
<p>ucimf is an input method framework for Linux unicode framebuffer console, which is mainly with fbterm and jfberm. It is developed by Chinese developer, Mat. He maintains a series of input method engines ported from BSD licensed Mac OSX input method <a href="http://openvanilla.org/">OpenVanilla</a>.</p>
<p>There are other solutions under framebuffer console, for example <a href="http://code.google.com/p/ibus-fbterm">ibus-fbterm</a> (development has stopped), but I still recommend to use ucimf because it full featured and well maintained.</p>
<p>2. <a href="http://code.google.com/p/sunpinyin"><strong>SunPinyin</strong></a></p>
<p>One thing to clarify, Sunpinyin isn&#8217;t a frame work, but it is important so I would like to mention it here. We have mentioned scim-sunpinyin, ibus-sunpinyin and the recommended fcitx-sunpinyin. In fact there is also a standalone xsunpinyin alive. SunPinyin is a statistical language model based Chinese input method, which was firstly developed by Sun Beijing Globalization team, and opened source to community with Opensolaris project, with LGPLv2 and CDDL dual-licenses. </p>
<p>SunPinyin would be heavily used from now on, it is the best Pinyin engine on Linux and some other platforms.</p>
<p>3. <a href="http://code.google.com/p/scim2/"><strong>SCIM2</strong></a><br />
SCIM2 was trying to be a next generation SCIM, but abandoned because of the emerging star during that period &#8211; IBus. </p>
<p>4. <a href="http://code.google.com/p/imbus/"><strong>ImBus</strong></a></p>
<p>ImBus is created by the author of SCIM, and he would like to make it a general input method framework including all known best techniques with minimal dependencies. But the project halted with the same reason like SCIM2, no code in its svn repository.</p>
<p>5. <strong>Fitx</strong> (Fun Input Toy for Linux)</p>
<p>Fitx was a flash in the pan on Linux, the project stopped soon after its emerging. Fitx is a ported version of FIT input method on Mac OSX, but implemented using SCIM framework.</p>
<p>6. <a href="http://cle.linux.org.tw/trac"><strong>gcin</strong></a><br />
gcin is a input method developed by traditional Chinese community, targeted to traditional Chinese users.</p>
<p>7. <a href="http://code.google.com/p/uim"><strong>uim</strong></a></p>
<p>uim is a input method framework made by Japanese developers. It is a little different because uim isn&#8217;t an input method server (XIM is a server), it&#8217;s just a library. Because the designer believe many people don&#8217;t need a full featured platform but only something enough to work.</p>
<p>For information about input method types, there is a good website: <a href="http://seba.studentenweb.org/thesis/im.php">http://seba.studentenweb.org/thesis/im.php</a></p>
<p>Update:<br />
<strong>2011-01-15 21:30</strong><br />
Thanks to Zhengpeng Hou, I&#8217;ve added some description about uim, and a notice about whether fcitx should be considered as a framework now.<br />
<strong>2011-01-28 00:15</strong><br />
Thanks to Shawn P Huang, ibus-pinyin has been rewritten in mainly C++ with many improvements. </p>
]]></content:encoded>
			<wfw:commentRss>http://blogs.gnome.org/happyaron/2011/01/15/linux-input-method-brief-summary/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>VM disk performance on btrfs partition</title>
		<link>http://blogs.gnome.org/happyaron/2011/01/04/vm-disk-performance-on-btrfs-partition/</link>
		<comments>http://blogs.gnome.org/happyaron/2011/01/04/vm-disk-performance-on-btrfs-partition/#comments</comments>
		<pubDate>Tue, 04 Jan 2011 08:09:21 +0000</pubDate>
		<dc:creator>Aron</dc:creator>
				<category><![CDATA[Debian]]></category>
		<category><![CDATA[Fedora]]></category>
		<category><![CDATA[System]]></category>
		<category><![CDATA[Ubuntu]]></category>

		<guid isPermaLink="false">http://blogs.gnome.org/happyaron/?p=355</guid>
		<description><![CDATA[Recently I read Alexandre Rosenfeld&#8217;s blog post about low performance of btrfs while placing VM&#8217;s disk on it, so I had a try and got almost the same result. I tried to have someone look into the problem, and now get the answer, quoting Bastian Blank : This is a result of the filesystem design, [...]]]></description>
			<content:encoded><![CDATA[<p>Recently I read Alexandre Rosenfeld&#8217;s blog <a href="http://arosenfeld.wordpress.com/2010/12/27/back-to-ext4-from-btrfs">post</a> about low performance of btrfs while placing VM&#8217;s disk on it, so I had a try and got almost the same result.</p>
<p>I tried to have someone look into the problem, and now get the answer, quoting Bastian Blank <waldi @debian.org>:</p>
<blockquote><p>This is a result of the filesystem design, no bug. For decent performance don&#8217;t use O_SYNC on files. For qemu use cache=writeback in the disk definition.</p></blockquote>
<p></waldi></p>
]]></content:encoded>
			<wfw:commentRss>http://blogs.gnome.org/happyaron/2011/01/04/vm-disk-performance-on-btrfs-partition/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Speakers presentations of Bejing Ubuntu 10.10 Release Party</title>
		<link>http://blogs.gnome.org/happyaron/2010/10/18/speakers-presentations-of-bejing-ubuntu-10-10-release-party/</link>
		<comments>http://blogs.gnome.org/happyaron/2010/10/18/speakers-presentations-of-bejing-ubuntu-10-10-release-party/#comments</comments>
		<pubDate>Mon, 18 Oct 2010 06:55:51 +0000</pubDate>
		<dc:creator>Aron</dc:creator>
				<category><![CDATA[Documentation]]></category>
		<category><![CDATA[Ubuntu]]></category>

		<guid isPermaLink="false">http://blogs.gnome.org/happyaron/?p=337</guid>
		<description><![CDATA[Here are speakers presentations we&#8217;ve used on 16th Oct, 2010&#8242;s Beijing Ubuntu 10.10 Release Party, and licensed under CC by-nc-sa 3.0. 1. Live USB introduce &#8211; 白清杰 [linuxbqj AT gmail DOT com] (Chinese) 2. You in Community &#8211; Aron Xu [happyaron AT ubuntu DOT com] (English) 3. How Applications Speak Fluently &#8211; Eleanor Chen [chenyueg [...]]]></description>
			<content:encoded><![CDATA[<p>Here are speakers presentations we&#8217;ve used on 16th Oct, 2010&#8242;s Beijing Ubuntu 10.10 Release Party, and licensed under <a href="http://creativecommons.org/licenses/by-nc-sa/3.0/">CC by-nc-sa 3.0</a>. </p>
<p>1.<a href="http://people.ubuntu.com/~happyaron/presentations/20101016/Live_USB_introduce.pdf"> Live USB introduce</a> &#8211; 白清杰 [linuxbqj AT gmail DOT com] (Chinese)</p>
<p>2. <a href="http://people.ubuntu.com/~happyaron/presentations/20101016/You_in_Community.pdf">You in Community</a>  &#8211; Aron Xu [happyaron AT ubuntu DOT com] (English)</p>
<p>3. <a href="http://people.ubuntu.com/~happyaron/presentations/20101016/How_Applications_Speak_Fluently.pdf">How Applications Speak Fluently</a> &#8211; Eleanor Chen [chenyueg AT ubuntu DOT com] (English)</p>
]]></content:encoded>
			<wfw:commentRss>http://blogs.gnome.org/happyaron/2010/10/18/speakers-presentations-of-bejing-ubuntu-10-10-release-party/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Announcing Beijing Ubuntu 10.10 Release Party</title>
		<link>http://blogs.gnome.org/happyaron/2010/10/07/announcing-beijing-ubuntu-10-10-release-parity/</link>
		<comments>http://blogs.gnome.org/happyaron/2010/10/07/announcing-beijing-ubuntu-10-10-release-parity/#comments</comments>
		<pubDate>Thu, 07 Oct 2010 10:36:51 +0000</pubDate>
		<dc:creator>Aron</dc:creator>
				<category><![CDATA[Ubuntu]]></category>

		<guid isPermaLink="false">http://blogs.gnome.org/happyaron/?p=327</guid>
		<description><![CDATA[Update: I&#8217;ve updated more details about the party. Hello everybody, We are happy to announce that we&#8217;ll hold Beijing Ubuntu 10.10 Release Party on 16th Oct, 2010. Time: 2010-10-16 14:00-17:50 Location: Building 3, BUAA, No. 37 Xueyuan Road, Haidian District, Beijing, P.R.China (Google Maps) Activities: 14:00-15:00 Presentations 14:00-14:20 Qingjie Bai (From Kanas FOSS Store) Howto: [...]]]></description>
			<content:encoded><![CDATA[<p>Update: I&#8217;ve updated more details about the party.</p>
<p>Hello everybody, </p>
<p>We are happy to announce that we&#8217;ll hold Beijing Ubuntu 10.10 Release Party on 16th Oct, 2010. </p>
<p>Time: 2010-10-16 14:00-17:50<br />
Location: Building 3, BUAA, No. 37 Xueyuan Road, Haidian District, Beijing, P.R.China (<a href="http://maps.google.com/maps?f=q&#038;source=s_q&#038;hl=zh-CN&#038;geocode=&#038;q=%E5%8C%97%E8%88%AA+3%E5%8F%B7+%E6%95%99%E5%AD%A6%E6%A5%BC&#038;sll=39.904667,116.408198&#038;sspn=1.717088,2.469177&#038;brcurrent=3,0x35f05410fbf08a97:0xea21de81a06d377b,0,0x35f05137c865ad63:0xd348af83c67dc389;5,0,0&#038;ie=UTF8&#038;hq=%E5%8C%97%E8%88%AA+3%E5%8F%B7+%E6%95%99%E5%AD%A6%E6%A5%BC&#038;hnear=&#038;ll=39.985021,116.351722&#038;spn=0.00335,0.004823&#038;z=18&#038;iwloc=A">Google Maps</a>)</p>
<p>Activities:<br />
<strong>14:00-15:00 Presentations</strong><br />
14:00-14:20 Qingjie Bai (From Kanas FOSS Store) Howto: LiveUSB Making and Usage<br />
14:20-14:40 Aron Xu (Ubuntu Simplified Chinese Translation Team Leader, Ubuntu Member, Organizer): You in Community &#8211; The Foss Essentials<br />
14:40-15:00 Eleanor Chen (Ubuntu China LoCo Contact, Ubuntu Member, Organizer): How<br />
Applications Speak Fluently &#8211; Introduction to FOSS I18n and L10N</p>
<p><strong>15:00-17:50 Installfest and discussions</strong> (so take your laptop with you!)</p>
<p>There is no need for registration or invitation, feel free to join us and have fun! </p>
]]></content:encoded>
			<wfw:commentRss>http://blogs.gnome.org/happyaron/2010/10/07/announcing-beijing-ubuntu-10-10-release-parity/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>My Chromium trunk update script</title>
		<link>http://blogs.gnome.org/happyaron/2010/09/14/my-chromium-trunk-update-script/</link>
		<comments>http://blogs.gnome.org/happyaron/2010/09/14/my-chromium-trunk-update-script/#comments</comments>
		<pubDate>Tue, 14 Sep 2010 06:08:53 +0000</pubDate>
		<dc:creator>Aron</dc:creator>
				<category><![CDATA[Debian]]></category>
		<category><![CDATA[Fedora]]></category>
		<category><![CDATA[Ubuntu]]></category>

		<guid isPermaLink="false">http://blogs.gnome.org/happyaron/?p=312</guid>
		<description><![CDATA[Chromium trunk build doesn&#8217;t automatically update the latest version like Minefiled (Firefox trunk), some Ubuntu users have chosen chromium-daily PPA for doing so, but I think updating a bleeding edge daily package will make lots of noise, so I wrote this script. I am a big fan of Firefox, but I use Chromium in some [...]]]></description>
			<content:encoded><![CDATA[<p>Chromium trunk build doesn&#8217;t automatically update the latest version like Minefiled (Firefox trunk), some Ubuntu users have chosen <a href="https://launchpad.net/~chromium-daily/+archive/ppa">chromium-daily</a> PPA for doing so, but I think updating a bleeding edge daily package will make lots of noise, so I wrote this script.</p>
<p>I am a big fan of Firefox, but I use Chromium in some cases that Firefox cannot handle very well. The script will maintain a directory in good shape so that you can run your program properly, even when you are running chromium and the script won&#8217;t crash you by the update. But never tell me you don&#8217;t close it for a long long long time that this script has ran for times and your browser crashed, just restart will make it okay.</p>
<p>Put it in your ~/usr/chromium/ and setup cron to run it every day or any time you would like to, it will update your chromium from <a href="http://build.chromium.org" target="_blank">http://build.chromium.org</a> to your user&#8217;s directory. Be aware this program is run in a common user&#8217;s account, and by default it gets the AMD64 version.</p>
<p>If you wish to change to I386, find and replace &#8220;chromium-rel-linux-64&#8243; with &#8220;chromium-rel-linux&#8221;.</p>
<p>Note: replace any &#8220;&amp;lt&#8221; or &#8220;&amp;gt&#8221; (and following ; mark)you find in your script with &#8220;&#8221;, I am not able to to make them show up correctly in this page. :-(</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;"><span style="color: #666666; font-style: italic;">#!/bin/sh</span>
<span style="color: #666666; font-style: italic;"># Copyright (C) 2010 Aron Xu &amp;lt;happyaron.xu@gmail.com&amp;gt;</span>
<span style="color: #666666; font-style: italic;">#</span>
<span style="color: #666666; font-style: italic;"># This program is free software: you can redistribute it and/or modify</span>
<span style="color: #666666; font-style: italic;"># it under the terms of the GNU General Public License as published by</span>
<span style="color: #666666; font-style: italic;"># the Free Software Foundation, either version 3 of the License, or</span>
<span style="color: #666666; font-style: italic;"># (at your option) any later version.</span>
<span style="color: #666666; font-style: italic;">#</span>
<span style="color: #666666; font-style: italic;"># This program is distributed in the hope that it will be useful,</span>
<span style="color: #666666; font-style: italic;"># but WITHOUT ANY WARRANTY; without even the implied warranty of</span>
<span style="color: #666666; font-style: italic;"># MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the</span>
<span style="color: #666666; font-style: italic;"># GNU General Public License for more details.</span>
<span style="color: #666666; font-style: italic;">#</span>
<span style="color: #666666; font-style: italic;"># You should have received a copy of the GNU General Public License</span>
<span style="color: #666666; font-style: italic;"># along with this program.  If not, see .</span>
&nbsp;
<span style="color: #007800;">LATEST</span>=<span style="color: #000000; font-weight: bold;">`</span><span style="color: #c20cb9; font-weight: bold;">wget</span> <span style="color: #660033;">-q</span> <span style="color: #660033;">-O</span> - <span style="color: #ff0000;">'http://build.chromium.org/buildbot/snapshots/chromium-rel-linux-64/LATEST'</span> <span style="color: #000000; font-weight: bold;">|</span> <span style="color: #c20cb9; font-weight: bold;">awk</span> <span style="color: #ff0000;">'NF &amp;gt; 0'</span><span style="color: #000000; font-weight: bold;">`</span>
&nbsp;
<span style="color: #7a0874; font-weight: bold;">cd</span> <span style="color: #007800;">$HOME</span><span style="color: #000000; font-weight: bold;">/</span>usr<span style="color: #000000; font-weight: bold;">/</span>chromium<span style="color: #000000; font-weight: bold;">/</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">if</span> <span style="color: #7a0874; font-weight: bold;">&#91;</span> <span style="color: #660033;">-f</span> .<span style="color: #000000; font-weight: bold;">/</span>CURRENT <span style="color: #7a0874; font-weight: bold;">&#93;</span>; <span style="color: #000000; font-weight: bold;">then</span>
	<span style="color: #007800;">CURRENT</span>=<span style="color: #000000; font-weight: bold;">`</span><span style="color: #c20cb9; font-weight: bold;">cat</span> CURRENT<span style="color: #000000; font-weight: bold;">`</span>
	<span style="color: #000000; font-weight: bold;">if</span> <span style="color: #7a0874; font-weight: bold;">&#91;</span> <span style="color: #007800;">$LATEST</span> <span style="color: #660033;">-le</span> <span style="color: #007800;">$CURRENT</span> <span style="color: #7a0874; font-weight: bold;">&#93;</span>; <span style="color: #000000; font-weight: bold;">then</span>
		<span style="color: #7a0874; font-weight: bold;">exit</span>;
	<span style="color: #000000; font-weight: bold;">fi</span>
<span style="color: #000000; font-weight: bold;">fi</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">if</span> <span style="color: #7a0874; font-weight: bold;">&#91;</span> <span style="color: #660033;">-f</span> .<span style="color: #000000; font-weight: bold;">/</span>OLD <span style="color: #7a0874; font-weight: bold;">&#93;</span>; <span style="color: #000000; font-weight: bold;">then</span>
	<span style="color: #007800;">OLD</span>=<span style="color: #000000; font-weight: bold;">`</span><span style="color: #c20cb9; font-weight: bold;">cat</span> OLD<span style="color: #000000; font-weight: bold;">`</span>;
<span style="color: #000000; font-weight: bold;">fi</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">if</span> <span style="color: #7a0874; font-weight: bold;">&#91;</span> <span style="color: #660033;">-d</span> .<span style="color: #000000; font-weight: bold;">/</span>update <span style="color: #7a0874; font-weight: bold;">&#93;</span>; <span style="color: #000000; font-weight: bold;">then</span>
	<span style="color: #c20cb9; font-weight: bold;">rm</span> <span style="color: #660033;">-rf</span> .<span style="color: #000000; font-weight: bold;">/</span>update<span style="color: #000000; font-weight: bold;">/*</span> <span style="color: #000000; font-weight: bold;">&amp;</span>amp;<span style="color: #000000; font-weight: bold;">&amp;</span>amp; <span style="color: #7a0874; font-weight: bold;">cd</span> .<span style="color: #000000; font-weight: bold;">/</span>update<span style="color: #000000; font-weight: bold;">/</span>;
<span style="color: #000000; font-weight: bold;">else</span>
	<span style="color: #c20cb9; font-weight: bold;">rm</span> <span style="color: #660033;">-rf</span> .<span style="color: #000000; font-weight: bold;">/</span>update <span style="color: #000000; font-weight: bold;">&amp;</span>amp;<span style="color: #000000; font-weight: bold;">&amp;</span>amp; <span style="color: #c20cb9; font-weight: bold;">mkdir</span> .<span style="color: #000000; font-weight: bold;">/</span>update <span style="color: #000000; font-weight: bold;">&amp;</span>amp;<span style="color: #000000; font-weight: bold;">&amp;</span>amp; <span style="color: #7a0874; font-weight: bold;">cd</span> .<span style="color: #000000; font-weight: bold;">/</span>update<span style="color: #000000; font-weight: bold;">/</span>;
<span style="color: #000000; font-weight: bold;">fi</span>
&nbsp;
<span style="color: #c20cb9; font-weight: bold;">wget</span> <span style="color: #660033;">-q</span> http:<span style="color: #000000; font-weight: bold;">//</span>build.chromium.org<span style="color: #000000; font-weight: bold;">/</span>buildbot<span style="color: #000000; font-weight: bold;">/</span>snapshots<span style="color: #000000; font-weight: bold;">/</span>chromium-rel-linux-<span style="color: #000000;">64</span><span style="color: #000000; font-weight: bold;">/</span><span style="color: #007800;">$LATEST</span><span style="color: #000000; font-weight: bold;">/</span>chrome-linux.zip
<span style="color: #c20cb9; font-weight: bold;">unzip</span> chrome-linux.zip
<span style="color: #c20cb9; font-weight: bold;">rm</span> <span style="color: #660033;">-f</span> chrome-linux.zip
&nbsp;
<span style="color: #c20cb9; font-weight: bold;">mkdir</span> ..<span style="color: #000000; font-weight: bold;">/</span><span style="color: #007800;">$LATEST</span>
<span style="color: #c20cb9; font-weight: bold;">mv</span> .<span style="color: #000000; font-weight: bold;">/</span>chrome-linux<span style="color: #000000; font-weight: bold;">/*</span> ..<span style="color: #000000; font-weight: bold;">/</span><span style="color: #007800;">$LATEST</span><span style="color: #000000; font-weight: bold;">/</span>
<span style="color: #c20cb9; font-weight: bold;">rm</span> <span style="color: #660033;">-rf</span> .<span style="color: #000000; font-weight: bold;">/*</span>
<span style="color: #7a0874; font-weight: bold;">cd</span> ..<span style="color: #000000; font-weight: bold;">/</span>
&nbsp;
<span style="color: #c20cb9; font-weight: bold;">rm</span> <span style="color: #660033;">-f</span> chromium-browser
<span style="color: #c20cb9; font-weight: bold;">ln</span> <span style="color: #660033;">-s</span> <span style="color: #007800;">$LATEST</span> chromium-browser
&nbsp;
<span style="color: #c20cb9; font-weight: bold;">rm</span> <span style="color: #660033;">-rf</span> <span style="color: #007800;">$OLD</span>
<span style="color: #c20cb9; font-weight: bold;">mv</span> CURRENT OLD
<span style="color: #7a0874; font-weight: bold;">echo</span> <span style="color: #007800;">$LATEST</span> <span style="color: #000000; font-weight: bold;">&amp;</span>gt; CURRENT</pre></div></div>

<p>It is very easy to change this shell script to grab a specific build of chromium if you want to have &#8220;bug free&#8221; version (I mean build bot doesn&#8217;t complain).</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;"><span style="color: #666666; font-style: italic;">#!/bin/sh</span>
<span style="color: #666666; font-style: italic;"># Copyright (C) 2010 Aron Xu &amp;lt;happyaron.xu@gmail.com&amp;gt;</span>
<span style="color: #666666; font-style: italic;">#</span>
<span style="color: #666666; font-style: italic;"># This program is free software: you can redistribute it and/or modify</span>
<span style="color: #666666; font-style: italic;"># it under the terms of the GNU General Public License as published by</span>
<span style="color: #666666; font-style: italic;"># the Free Software Foundation, either version 3 of the License, or</span>
<span style="color: #666666; font-style: italic;"># (at your option) any later version.</span>
<span style="color: #666666; font-style: italic;">#</span>
<span style="color: #666666; font-style: italic;"># This program is distributed in the hope that it will be useful,</span>
<span style="color: #666666; font-style: italic;"># but WITHOUT ANY WARRANTY; without even the implied warranty of</span>
<span style="color: #666666; font-style: italic;"># MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the</span>
<span style="color: #666666; font-style: italic;"># GNU General Public License for more details.</span>
<span style="color: #666666; font-style: italic;">#</span>
<span style="color: #666666; font-style: italic;"># You should have received a copy of the GNU General Public License</span>
<span style="color: #666666; font-style: italic;"># along with this program.  If not, see .</span>
&nbsp;
<span style="color: #007800;">LATEST</span>=<span style="color: #007800;">$1</span>
&nbsp;
<span style="color: #7a0874; font-weight: bold;">cd</span> <span style="color: #007800;">$HOME</span><span style="color: #000000; font-weight: bold;">/</span>usr<span style="color: #000000; font-weight: bold;">/</span>chromium<span style="color: #000000; font-weight: bold;">/</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">if</span> <span style="color: #7a0874; font-weight: bold;">&#91;</span> <span style="color: #660033;">-f</span> .<span style="color: #000000; font-weight: bold;">/</span>CURRENT <span style="color: #7a0874; font-weight: bold;">&#93;</span>; <span style="color: #000000; font-weight: bold;">then</span>
	<span style="color: #007800;">CURRENT</span>=<span style="color: #000000; font-weight: bold;">`</span><span style="color: #c20cb9; font-weight: bold;">cat</span> CURRENT<span style="color: #000000; font-weight: bold;">`</span>
	<span style="color: #000000; font-weight: bold;">if</span> <span style="color: #7a0874; font-weight: bold;">&#91;</span> <span style="color: #007800;">$LATEST</span> <span style="color: #660033;">-le</span> <span style="color: #007800;">$CURRENT</span> <span style="color: #7a0874; font-weight: bold;">&#93;</span>; <span style="color: #000000; font-weight: bold;">then</span>
		<span style="color: #7a0874; font-weight: bold;">exit</span>;
	<span style="color: #000000; font-weight: bold;">fi</span>
<span style="color: #000000; font-weight: bold;">fi</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">if</span> <span style="color: #7a0874; font-weight: bold;">&#91;</span> <span style="color: #660033;">-f</span> .<span style="color: #000000; font-weight: bold;">/</span>OLD <span style="color: #7a0874; font-weight: bold;">&#93;</span>; <span style="color: #000000; font-weight: bold;">then</span>
	<span style="color: #007800;">OLD</span>=<span style="color: #000000; font-weight: bold;">`</span><span style="color: #c20cb9; font-weight: bold;">cat</span> OLD<span style="color: #000000; font-weight: bold;">`</span>;
<span style="color: #000000; font-weight: bold;">fi</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">if</span> <span style="color: #7a0874; font-weight: bold;">&#91;</span> <span style="color: #660033;">-d</span> .<span style="color: #000000; font-weight: bold;">/</span>update <span style="color: #7a0874; font-weight: bold;">&#93;</span>; <span style="color: #000000; font-weight: bold;">then</span>
	<span style="color: #c20cb9; font-weight: bold;">rm</span> <span style="color: #660033;">-rf</span> .<span style="color: #000000; font-weight: bold;">/</span>update<span style="color: #000000; font-weight: bold;">/*</span> <span style="color: #000000; font-weight: bold;">&amp;</span>amp;<span style="color: #000000; font-weight: bold;">&amp;</span>amp; <span style="color: #7a0874; font-weight: bold;">cd</span> .<span style="color: #000000; font-weight: bold;">/</span>update<span style="color: #000000; font-weight: bold;">/</span>;
<span style="color: #000000; font-weight: bold;">else</span>
	<span style="color: #c20cb9; font-weight: bold;">rm</span> <span style="color: #660033;">-rf</span> .<span style="color: #000000; font-weight: bold;">/</span>update <span style="color: #000000; font-weight: bold;">&amp;</span>amp;<span style="color: #000000; font-weight: bold;">&amp;</span>amp; <span style="color: #c20cb9; font-weight: bold;">mkdir</span> .<span style="color: #000000; font-weight: bold;">/</span>update <span style="color: #000000; font-weight: bold;">&amp;</span>amp;<span style="color: #000000; font-weight: bold;">&amp;</span>amp; <span style="color: #7a0874; font-weight: bold;">cd</span> .<span style="color: #000000; font-weight: bold;">/</span>update<span style="color: #000000; font-weight: bold;">/</span>;
<span style="color: #000000; font-weight: bold;">fi</span>
&nbsp;
<span style="color: #c20cb9; font-weight: bold;">wget</span> <span style="color: #660033;">-q</span> http:<span style="color: #000000; font-weight: bold;">//</span>build.chromium.org<span style="color: #000000; font-weight: bold;">/</span>buildbot<span style="color: #000000; font-weight: bold;">/</span>snapshots<span style="color: #000000; font-weight: bold;">/</span>chromium-rel-linux-<span style="color: #000000;">64</span><span style="color: #000000; font-weight: bold;">/</span><span style="color: #007800;">$LATEST</span><span style="color: #000000; font-weight: bold;">/</span>chrome-linux.zip
<span style="color: #c20cb9; font-weight: bold;">unzip</span> chrome-linux.zip
<span style="color: #c20cb9; font-weight: bold;">rm</span> <span style="color: #660033;">-f</span> chrome-linux.zip
&nbsp;
<span style="color: #c20cb9; font-weight: bold;">mkdir</span> ..<span style="color: #000000; font-weight: bold;">/</span><span style="color: #007800;">$LATEST</span>
<span style="color: #c20cb9; font-weight: bold;">mv</span> .<span style="color: #000000; font-weight: bold;">/</span>chrome-linux<span style="color: #000000; font-weight: bold;">/*</span> ..<span style="color: #000000; font-weight: bold;">/</span><span style="color: #007800;">$LATEST</span><span style="color: #000000; font-weight: bold;">/</span>
<span style="color: #c20cb9; font-weight: bold;">rm</span> <span style="color: #660033;">-rf</span> .<span style="color: #000000; font-weight: bold;">/*</span>
<span style="color: #7a0874; font-weight: bold;">cd</span> ..<span style="color: #000000; font-weight: bold;">/</span>
&nbsp;
<span style="color: #c20cb9; font-weight: bold;">rm</span> <span style="color: #660033;">-f</span> chromium-browser
<span style="color: #c20cb9; font-weight: bold;">ln</span> <span style="color: #660033;">-s</span> <span style="color: #007800;">$LATEST</span> chromium-browser
&nbsp;
<span style="color: #c20cb9; font-weight: bold;">rm</span> <span style="color: #660033;">-rf</span> <span style="color: #007800;">$OLD</span>
<span style="color: #c20cb9; font-weight: bold;">mv</span> CURRENT OLD
<span style="color: #7a0874; font-weight: bold;">echo</span> <span style="color: #007800;">$LATEST</span> <span style="color: #000000; font-weight: bold;">&amp;</span>gt; CURRENT
<span style="color: #7a0874; font-weight: bold;">echo</span> <span style="color: #007800;">$LATEST</span> <span style="color: #000000; font-weight: bold;">&amp;</span>gt; GRAB</pre></div></div>

<p>Again, put it in ~/usr/chromium/ and run:<br />
<code>sh grab-chromium.sh 59353</code><br />
(59353 is a build of chromium that no build bot bugs show up, you can change it to any version you&#8217;d like to grab).</p>
<p>If you like to run chromium with a long list of parameters, just create another script. Mine is here:</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;"><span style="color: #666666; font-style: italic;">#!/bin/sh</span>
<span style="color: #007800;">$HOME</span><span style="color: #000000; font-weight: bold;">/</span>usr<span style="color: #000000; font-weight: bold;">/</span>chromium<span style="color: #000000; font-weight: bold;">/</span>chromium-browser<span style="color: #000000; font-weight: bold;">/</span>chrome <span style="color: #000000; font-weight: bold;">%</span>U <span style="color: #660033;">--disk-cache-dir</span>=<span style="color: #ff0000;">&quot;/dev/shm/browser.<span style="color: #780078;">`whoami`</span>.cache/chromium&quot;</span> <span style="color: #660033;">--disk-cache-size</span>=<span style="color: #000000;">52428800</span></pre></div></div>

<p>You can add it to your desktop&#8217;s menu.</p>
]]></content:encoded>
			<wfw:commentRss>http://blogs.gnome.org/happyaron/2010/09/14/my-chromium-trunk-update-script/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Convert man page to PDF</title>
		<link>http://blogs.gnome.org/happyaron/2010/09/13/convert-man-page-to-pdf/</link>
		<comments>http://blogs.gnome.org/happyaron/2010/09/13/convert-man-page-to-pdf/#comments</comments>
		<pubDate>Mon, 13 Sep 2010 08:47:23 +0000</pubDate>
		<dc:creator>Aron</dc:creator>
				<category><![CDATA[Debian]]></category>
		<category><![CDATA[Documentation]]></category>
		<category><![CDATA[Fedora]]></category>
		<category><![CDATA[Ubuntu]]></category>

		<guid isPermaLink="false">http://blogs.gnome.org/happyaron/?p=310</guid>
		<description><![CDATA[It&#8217;s fairly easy: $ man -t bash &#124; ps2pdf - bash.pdf &#8220;man -t&#8221; uses groff -mandoc to format the manual page to stdout. &#8220;ps2pdf &#8211; bash.pdf&#8221; means the input is from stdin and output to bash.pdf. We use a simple pipe to join the stdout of &#8220;man&#8221; and stdin of &#8220;ps2pdf&#8221;. That&#8217;s it!]]></description>
			<content:encoded><![CDATA[<p>It&#8217;s fairly easy:<br />
<code>$ man -t bash | ps2pdf - bash.pdf</code></p>
<p>&#8220;man -t&#8221; uses groff -mandoc to format the manual page to stdout.</p>
<p>&#8220;ps2pdf &#8211; bash.pdf&#8221; means the input is from stdin and output to bash.pdf.</p>
<p>We use a simple pipe to join the stdout of &#8220;man&#8221; and stdin of &#8220;ps2pdf&#8221;. </p>
<p>That&#8217;s it!</p>
]]></content:encoded>
			<wfw:commentRss>http://blogs.gnome.org/happyaron/2010/09/13/convert-man-page-to-pdf/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Work around of file name problem while unzip handling CJK encodings</title>
		<link>http://blogs.gnome.org/happyaron/2010/09/03/workaround-of-file-name-problem-while-unzip-handling-cjk-encodings/</link>
		<comments>http://blogs.gnome.org/happyaron/2010/09/03/workaround-of-file-name-problem-while-unzip-handling-cjk-encodings/#comments</comments>
		<pubDate>Fri, 03 Sep 2010 12:43:29 +0000</pubDate>
		<dc:creator>Aron</dc:creator>
				<category><![CDATA[Debian]]></category>
		<category><![CDATA[Fedora]]></category>
		<category><![CDATA[General]]></category>
		<category><![CDATA[System]]></category>
		<category><![CDATA[Ubuntu]]></category>

		<guid isPermaLink="false">http://blogs.gnome.org/happyaron/?p=304</guid>
		<description><![CDATA[Unzip 5.x has an option -O to specific the encoding of file names in an ZIP archive, but when 6.0 is arriving with unicode support, that option disappeared as well. CJK users need special cares on support and conversion of obsolete encoding while they are switching to utf-8. Here is my workaround about this problem, [...]]]></description>
			<content:encoded><![CDATA[<p>Unzip 5.x has an option -O to specific the encoding of file names in an ZIP archive, but when 6.0 is arriving with unicode support, that option disappeared as well. CJK users need special cares on support and conversion of obsolete encoding while they are switching to utf-8.</p>
<p>Here is my workaround about this problem, install p7zip and convmv packages on your system first, then:<br />
<code>$ env LC_ALL=C 7z x file.zip</code><br />
<code>$ convmv -f gbk -t utf8 --notest *</code></p>
<p>File names extracted by unzip are not able to be converted to correct one whatever you do with it, but what is done by 7z can be converted by convmv.</p>
<p>Moving more on, we can automate this action to a script:<br />
<code>#! /bin/sh<br />
LANG=C /usr/bin/7z x -y "$1" | sed -n 's/^Extracting  //p' | sed '1!G;h;$!d' | xargs convmv -f gbk -t utf8 --notest >/dev/null 2>/dev/null</code></p>
<p>Save it us unzip.sh, then try:<br />
<code>$ sh unzip.sh file.zip</code><br />
This will act as what unzip does, but with additional care about converting file name encoding from gbk to utf-8. Moreover, convmv can detect whether your file name is already utf-8 encoded and will skip it.</p>
<p>If your file names are encoded other encoding, please replace &#8220;gbk&#8221; with the appropriate name.</p>
]]></content:encoded>
			<wfw:commentRss>http://blogs.gnome.org/happyaron/2010/09/03/workaround-of-file-name-problem-while-unzip-handling-cjk-encodings/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>My way of choosing email programs</title>
		<link>http://blogs.gnome.org/happyaron/2010/09/01/my-way-of-choosing-email-programs/</link>
		<comments>http://blogs.gnome.org/happyaron/2010/09/01/my-way-of-choosing-email-programs/#comments</comments>
		<pubDate>Wed, 01 Sep 2010 12:34:28 +0000</pubDate>
		<dc:creator>Aron</dc:creator>
				<category><![CDATA[Debian]]></category>
		<category><![CDATA[Fedora]]></category>
		<category><![CDATA[Ubuntu]]></category>

		<guid isPermaLink="false">http://blogs.gnome.org/happyaron/?p=231</guid>
		<description><![CDATA[This is just another article about how to get your emails managed in a graceful way. Here is my former way of dealing with them: I choose Gmail as my primary email service provider, and use the online Gmail web page for managing most of the emails &#8211; view and move to trash. As for [...]]]></description>
			<content:encoded><![CDATA[<p>This is just another article about how to get your emails managed in a graceful way. </p>
<p>Here is my former way of dealing with them: I choose Gmail as my primary email service provider, and use the online Gmail web page for managing most of the emails &#8211; view and move to trash. As for emails need my reply or participate, I use <a href="http://www.mozillamessaging.com">Thunderbird</a> 3 + <a href="http://enigmail.mozdev.org">Enigmail</a> with Gmail&#8217;s IMAP support, so I can GPG sign my outbound emails and verify signatures of inbound ones from other people. I keep emails on Gmail server and have a backup copy on my PC from Thunderbird&#8217;s IMAP sync. </p>
<p>Yes, everything looked good in the days I have only a not-too-much amount of emails and I was happy with all above worked well for a long period. But a bad thing appears while my mailbox size is growing quite fast in the near half year: Thunderbird&#8217;s speed is lower and lower, the local Mbox file is larger day by day. Personally I don&#8217;t think <a href="http://en.wikipedia.org/wiki/Mbox">Mbox</a> format with big amount of emails stored in a single file is so reliable because when there is something wrong, everything soon follow.</p>
<p>My initial thought of turning to another way is, I need to find a better way for managing large amount of growing emails, and three overall requirements are listed below:</p>
<li>1. A not-so-rare solution. I am not familiar with how email system runs so a popular solution can help me find essential documents when I run into trouble.</li>
<li>2. Good stability. Stability is always a key topic when people are finding a solution for their deployment. Even though I am just a desktop user who are looking for a personal way of dealing things, I&#8217;d like to have a stable platform to make my life easier.</li>
<li>3. A flexible (and maybe very customizable) way. Flexibility is an important thing when you use a *NIX platform or even all the time; customizability is another great thing once you are willing to pay your hours on making everything just fits your special taste.</li>
<p>Next, search the Internet and we can surely found <a href="http://www.mutt.org/">Mutt</a> should be counted in our list of choices,  and there are several different usages. Before comparing among them, I need to say something about the email system first.</p>
<p>There are three key elements in an email system: MUA (Mail User Agent), MTA (Mail Transfer Agent) and MDA (Mail Delivery Agent): </p>
<li>1. An <a href="http://en.wikipedia.org/wiki/Email_client">MUA</a> is always the client software that you will face directly everyday &#8211; read, write and manage your messages with it. </li>
<li>2. An <a href="http://en.wikipedia.org/wiki/Mail_transfer_agent">MTA</a> is a big concept that includes most part of the sending and receiving emails among servers, including but not limited to the services that we may know: <a href="http://en.wikipedia.org/wiki/SMTP">SMTP</a>, <a href="http://en.wikipedia.org/wiki/Internet_Message_Access_Protocol">IMAP</a>, <a href="http://en.wikipedia.org/wiki/Post_Office_Protocol">POP3</a>, etc. </li>
<li>3. An <a href="http://en.wikipedia.org/wiki/Mail_delivery_agent">MDA</a> is a program deal with user&#8217;s mail delivery to their specific mail spool on a particular system; its work are usually processing emails received by MTA and figuring out whether the email is a suspected spam and drop the email to the user specified place of receiving her/his mails. </li>
<p>When we are receiving and sending emails on our local computer (not the web based way since it is actually handled by remote server), we need all of the three parts. We get emails from remote server&#8217;s inbox with MTA; filter and deliver the emails to our email spool with MDA; read, write and manage emails with MUA; and send emails with a sending MTA. As for the local storage format, there is <a href="http://en.wikipedia.org/wiki/Mbox">Mbox</a> that I don&#8217;t like, and <a href="http://en.wikipedia.org/wiki/Maildir">Maildir</a> I am interested in. More about storage format will be described in following paragraphs.</p>
<p>There are many alternative all-in-one solutions like <a href="http://www.mozillamessaging.com/">Thunderbird</a>, <a href="http://projects.gnome.org/evolution/">Evolution</a>, <a href="http://userbase.kde.org/KMail">KMail</a> and so on, they combine the functions which are required to manage emails for an end-user and hide them behind. Now I am not finding another all-in-one application so I need to choose every program to take their roles in the route of receiving and sending emails. Since I have decided to use Mutt as my MUA from beginning, I don&#8217;t need to be bothered by this topic, again. </p>
<p>First I need a receiving MTA for fetching emails from Gmail server. There are two popular choices: Fetchmail and Getmail4.</p>
<li>1. <a href="http://fetchmail.berlios.de/">Fetchmail</a> is a full-featured, robust, well-documented remote-mail retrieval and forwarding utility written in the <a href="en.wikipedia.org/wiki/C_(programming_language)">C programing language</a>. It is famous of the large user base and <a href="http://www.catb.org/~esr/">Eric S. Raymond</a> was maintaining it from 1996 to 2003.</li>
<li>2. <a href="http://pyropus.ca/software/getmail/">Getmail4</a> is the 4th version of Getmail &#8211; which is designed to get rid of the shortcomings in fetchmail. The program is written in <a href="http://www.python.org/">Python</a>.</li>
<p>Both of the two supports both IMAP and POP3 protocol that are my choices of receiving emails. I prefer to use IMAP because the protocol is designed to have the functions POP3 has and many other features including sync between server and clients. I don&#8217;t really need to have mails synced because the local copy is mostly a backup, and I can do it through web interface or Thunderbird if I really need them to be synced. Setting up an IMAP synced local mail solution is kind of off topic from this article, and you may want to try <a href="http://www.linux-france.org/prj/imapsync/">imapsync</a> if you are sure you really need. Another reason of my choosing IMAP over POP3 is, Gmail&#8217;s POP3 implementation has violated the commonly expected behavior and there are much more limitations than IMAP (you can fetch around 200-500 mails per session in POP3, and probably be locked 24 hours if you access it several times in a short period, but when you are a newbie and trying to test your configuration you may exceed the limits). </p>
<p>Now try them out to find which one is better for me. The configuration files always have your email account and password, so make it only readable by yourself using:<br />
<code>chmod 0600 /path/to/file</code><br />
Here are the configurations for both the programs, username and password are changed to &#8220;user&#8221; and &#8220;passwd&#8221;:</p>
<li>1. $HOME/.fetchmailrc:<br />
<code>#set daemon 600<br />
#set syslog<br />
defaults<br />
poll "imap.gmail.com" proto IMAP<br />
        user 'user' password 'passwd'<br />
        mda "/usr/bin/procmail"<br />
        keep ssl<br />
        sslcertck<br />
        sslcertpath /etc/ssl/certs<br />
        fetchall<br />
        folder "[Gmail]/All Mail"</code><br />
The commented lines are telling fetchmail to work as a daemon and try to fetch emails from server every 600 seconds. Option &#8220;defaults&#8221; tells fetchmail load its default settings. The following two lines describes the server, protocol, username, password; port and local mapped user can be set as well, but I don&#8217;t need it. Next line started by &#8220;mda&#8221; tells fetchmail it should relay received emails to the specific MDA, now we set it to &#8220;/usr/bin/procmail&#8221; and will be documented in following paragraphs. &#8220;keep&#8221; means fetchmail should keep the copy on server after getting the mails, this option is not very useful for Gmail because there are preferences on the web interface that you can choose how the server deal with the delete request from clients. &#8220;ssl&#8221; stands for use ssl, &#8220;sslcertck&#8221; for checking whether the cert of server has a valid signature by a CA, and &#8220;sslcertpath&#8221; sets the path of CA cert&#8217;s and we use &#8220;/etc/ssl/certs&#8221;. &#8220;fetchall&#8221; tells that fetchmail should fetch all emails on the server rather than only new ones. &#8220;folder&#8221; tells the exact folder fetchmail should go and check, we set it to &#8220;[Gmail]/All Mail&#8221;.</li>
<li>2. $HOME/.getmail/getmailrc:<br />
<code>[retriever]<br />
type = SimpleIMAPSSLRetriever<br />
server = imap.gmail.com<br />
username = user<br />
password = passwd<br />
mailboxes = ("[Gmail]/All Mail",)</p>
<p>[destination]<br />
type = MDA_external<br />
path = /usr/bin/procmail</p>
<p>[options]<br />
delete = false<br />
message_log = ~/.mail/getmail.log<br />
message_log_syslog = false<br />
read_all = false<br />
verbose = 2<br />
delivered_to = false<br />
received = false</code><br />
Briefly, there are three sections in Getmail4&#8242;s configuration file: [retriever] (defines which kind of protocol to use and options related), [destination] (defines where to deliver or pass the emails) and [options] (other options for Getmail4).<br />
I use &#8220;SimpleIMAPSSLRetriever&#8221; type of retriever and its name suggests that it is used to common SSL enabled IMAP protocol, which meets our needs. Other fields in this section are easy to understand, the last one defines which folder the program should check, and don&#8217;t forget the last comma (,) if you only have one mailbox to be listed there. For destination, I was planning (finally I changed my mind, read on) to use procmail so I have a &#8220;MDA_external&#8221; type destination, and point the path to &#8220;/usr/bin/procmail&#8221;. In the last section, &#8220;delete&#8221; defines whether mails should be deleted from remote server after being received, as said in Fetchmail configuration&#8217;s explanation, it is not really necessary for Gmail users, &#8220;message_log&#8221; defines where the log of retrieving every message should go and &#8220;message_log_syslog&#8221; is the switch whether message retrieve info should be logged to syslog. &#8220;read_all&#8221; should not be set to true because it is saying that ignoring what have been fetched and get everything every time Getmail4 runs. &#8220;verbose&#8221; controls log verbosity: if set to 2, print messages about each of its actions; if set to 1, print messages about retrieving and deleting messages (only); if set to 0, ll only print warnings and errors. &#8220;delivered_to&#8221; and &#8220;received&#8221; tells Getmail4 whether it should add those two fields to retrieved emails header, personally like them to be set to &#8220;no&#8221;.</li>
<p>Before we start our test, we need to setup our MDA &#8211; <a href="http://www.procmail.org/">Procmail</a>. It is the time for me to tell you why I prefer <a href="http://en.wikipedia.org/wiki/Maildir">Maildir</a> local storage format to <a href="http://en.wikipedia.org/wiki/Mbox">Mbox</a> used by Thunderbird. In Maildir, every email is stored in a single file, and a real folder contains all the files in a &#8220;folder&#8221; on remote server. The email files are in plain text. There are three most important benefits from Maildir:</p>
<li>1. No need to lock the folder as in Mbox, Maildir stores emails in single plain text files that can accessed by multiple programs at the same time and can be easily maintained by scripts.</li>
<li>2. The maintenance of storage now depends on your file system rather than an email client. Nowadays file systems on *NIX systems like Ext3/4, Reiserfs, Btrfs are really stronger than ever before and is more reliable than a client program, because a file system is designed to maintain files but maintenance of email storage is only one of the functions of a rather smaller project comparing with file system designing. For the worst situation our data get damaged while the mail program is processing things, we get failed for some of the messages in Maildir, but the whole folder would be corrupted in Mbox.</li>
<li>3. Mailboxes in Maildir format can be used through a network file system (like NFS), but Mbox cannot.</li>
<p>And here are disadvantages: </p>
<li>1. Maildir is not supported by many client software while Mbox is universally supported.</li>
<li>2. Some filesystems may not efficiently handle a large number of small files (like XFS). </li>
<li>3. Searching text is not as fast as Mbox. If we want to speed up the search process, a helper program with cache is needed.</li>
<p>As I can search the text of email within web interface of Gmail, I don&#8217;t need to care too much about the searching disadvantages. I am using Ext4 and is strong enough to handle thousands of small files in one directory. At last I am choosing Mutt which supports Maildir very well. I&#8217;d like to take the advantages of it now.</p>
<p>Here is my configuration of Procmail, $HOME/.procmailrc:<br />
<code>VERBOSE=off<br />
DEFAULT=$HOME/.mail/inbox/<br />
MAILDIR=$HOME/.mail/<br />
LOGFILE=$HOME/.mail/procmail.log</code><br />
Don&#8217;t forget the slash after &#8220;$HOME/.mail/inbox/&#8221;, if you lose it Procmail will use Mbox, and you if add it, Maildir instead.</p>
<p>So we can kick off our test now, keep in mind that neither Fethmail nor Getmail4 nor Procmail need root privilege, just run them in your account:<br />
<code>$ fetchmail -v</code><br />
<code>$ getmail</code><br />
I have to admit my prediction of result is totally wrong. I thought Fetchmail is used by many many people and is written in the efficient C, Getmail4 only has a smaller user base and is written in Python which may take more resource on many cases. But the result tells me, under the current configuration, neither of them work for me: Fetchmail fails to fetch around 1/10 of my attachments and only get 0.x KB for a 5MB+ email; Getmail4 stuck when fetching mails larger than 5MB. </p>
<p>What a hell! But I am not stopping because there is another way &#8211; Getmail4 is designed to have some MDA functions built-in, so it can deliver messages directly to Maildir or Mbox format for user. It is time to say I like Gmail&#8217;s excellent spam filtering feature so that I don&#8217;t need to pay so much time on setting up a spam filter with Procmail or Maildrop, and a simple delivery is okay. Now I change the [destination] section of $HOME/.getmail/getmailrc to:<br />
<code>[destination]<br />
type = Maildir<br />
path = ~/.mail/inbox/</code><br />
and run again:<br />
<code>$ getmail</code><br />
Great this time and all my emails are retrieved successfully after a long time&#8217;s wait (just leave it here and move on other stuff). </p>
<p>After choosing a suitable receiving MTA (my choice is with MDA built-in), I still need a sending MTA. There are several popular choices, for light-weight ones: <a href="http://msmtp.sourceforge.net/">msmtp</a>, <a href="http://esmtp.sourceforge.net/">esmtp</a>; for powerful ones: <a href="http://www.exim.org/">exim4</a>, <a href="http://www.postfix.org/">postfix</a> and <a href="http://qmail.org/top.html">qmail</a>. The last three ones are run as root daemon, designed to be full replacement of the traditional <a href="http://www.sendmail.org/">sendmail</a>. Usually we don&#8217;t need such big things for a daily purpose, and they are really worth considering if you would like to run a *real* MTA that can exchange emails with other servers.<br />
Either msmtp or esmtp is designed to work as an agent to forward local email to a real MTA server supports SMTP protocol. Currently msmtp is more welcomed, but the feature list is shorter than esmtp. After a detailed check, that esmtp is not maintained now, so I choose msmtp. Here is my configuration, $HOME/.msmtprc:<br />
<code>defaults<br />
tls on<br />
tls_starttls on<br />
tls_certcheck on<br />
tls_trust_file /etc/ssl/certs/ca-certificates.crt<br />
logfile ~/.mail/msmtp.log</p>
<p>account default<br />
host smtp.gmail.com<br />
port 587<br />
from user@gmail.com<br />
auth on<br />
user user<br />
password passwd</code><br />
There is your username and password in this file, so follow the instruction before to change this file to 0600 mode. &#8220;tls&#8221;, &#8220;tls_starttls&#8221; and &#8220;tls_certcheck&#8221; tells msmtp to use <a href="http://en.wikipedia.org/wiki/STARTTLS">STARTTLS</a> for encryption, and check for validation of the cert.</p>
<p>Finally, I go to the key part &#8211; Mutt. Here is some essential lines from my $HOME/.muttrc:<br />
<code>ignore *<br />
unignore From Subject Lines<br />
hdr_order From Subject Lines</p>
<p>set index_format="%[%b-%d] %?X?%X&amp; ? %-2e %-18.18L [%4c] %s"<br />
set status_on_top=yes</p>
<p>set editor="vim -c 'norm O'"</p>
<p>set sendmail="/usr/bin/msmtp"<br />
set sendmail_wait = 5</p>
<p>set mbox_type=Maildir<br />
set folder="~/.mail"<br />
set mask="!^\\.[^.]"<br />
set mbox="+inbox"<br />
set record="+inbox"<br />
set postponed="+inbox"<br />
set spoolfile="~/.mail/inbox/"<br />
set trash="~/.mail/trash/"<br />
set maildir_trash=no</p>
<p>set quit=yes<br />
set move=no<br />
set beep_new=yes<br />
set check_new=yes<br />
set recall=no<br />
set resolve=yes<br />
set allow_8bit<br />
set charset="utf-8"<br />
set rfc2047_parameters=yes</p>
<p>set include=yes<br />
set indent_str="&gt; "<br />
set mime_forward<br />
set mime_forward_rest<br />
set fast_reply<br />
unset metoo<br />
unset reply_self<br />
set reply_regexp="^(re([\[0-9\]+])*|aw|回复)(:[ \t]|：)"<br />
set quote_regexp="^( {0,4}-?[&gt;|:]| {0,4}[a-z0-9]+[&gt;|]+)+"</p>
<p>set from='Name Last '<br />
set use_from<br />
set envelope_from=yes<br />
set realname='First Last'</p>
<p>bind    index   gg      first-entry<br />
bind    index   G       last-entry<br />
bind    index   \cf     next-page<br />
bind    index   \cb     previous-page<br />
bind    index   ,g      group-reply<br />
bind    pager   j       next-line<br />
bind    pager   k       previous-line<br />
bind    pager       previous-line<br />
bind    pager     next-line<br />
bind    pager   gg      top<br />
bind    pager   G       bottom</p>
<p>color    hdrdefault    black           default<br />
color    quoted        red             default<br />
color    signature     brightblack     default<br />
color    indicator     brightwhite     red<br />
color    attachment    black           default<br />
color    error         red             default<br />
color    message       blue            default<br />
color    search        brightwhite     magenta<br />
color    status        brightyellow    blue<br />
color    tree          red             default<br />
color    normal        blue            default<br />
color    tilde         green           default<br />
color    bold          brightyellow    default<br />
color    markers       red             default</code></p>
<p>Thanks to Roy L Zuo (roylzuo at gmail dot com) for great aid! There are much more lines in my mutt configuration, and the colors are suitable for white background.</p>
<p>In conclusion, here are my choice:<br />
Mutt + Getmail4 + Msmtp</p>
]]></content:encoded>
			<wfw:commentRss>http://blogs.gnome.org/happyaron/2010/09/01/my-way-of-choosing-email-programs/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Covert GBK/BIG5 encoded ID3 tag to UTF8</title>
		<link>http://blogs.gnome.org/happyaron/2010/08/13/covert-gbkbig5-encoded-id3-tag-to-utf8/</link>
		<comments>http://blogs.gnome.org/happyaron/2010/08/13/covert-gbkbig5-encoded-id3-tag-to-utf8/#comments</comments>
		<pubDate>Fri, 13 Aug 2010 03:46:06 +0000</pubDate>
		<dc:creator>Aron</dc:creator>
				<category><![CDATA[Debian]]></category>
		<category><![CDATA[Fedora]]></category>
		<category><![CDATA[Multimedia]]></category>
		<category><![CDATA[Ubuntu]]></category>

		<guid isPermaLink="false">http://blogs.gnome.org/happyaron/?p=226</guid>
		<description><![CDATA[For Chinese Linux users, we may meet many mp3 files with GBK/BIG5 encoded ID3 tags, which are very time consuming to change them to UTF8 one by one. Before using the following solution, please confirm that you won&#8217;t use media players on Windows that cannot handle UTF8 encoded ID3 tags correctly, and you won&#8217;t use [...]]]></description>
			<content:encoded><![CDATA[<p>For Chinese Linux users, we may meet many mp3 files with GBK/BIG5 encoded ID3 tags, which are very time consuming to change them to UTF8 one by one.</p>
<p>Before using the following solution, please confirm that you won&#8217;t use media players on Windows that cannot handle UTF8 encoded ID3 tags correctly, and you won&#8217;t use MP3 players that don&#8217;t support it.</p>
<p>Firstly, install python-mutagen package. For Debian/Ubuntu, use:<br />
<code>$ sudo aptitude install python-mutagen</code><br />
For Fedora and others, probably:<br />
<code># yum install python-mutagen</code></p>
<p>Secondly go to the directory containing files need to be converted.<br />
For files with GBK tags:<br />
<code>find . -iname "*.mp3" -execdir mid3iconv -e GBK {} \;</code><br />
For files with BIG5 tags:<br />
<code>find . -iname "*.mp3" -execdir mid3iconv -e BIG5 {} \;</code><br />
There is a good thing that the program could check if the encoding we selected is suitable, so when we convert GBK encoded files, the BIG5 ones won&#8217;t be changed. But please don&#8217;t use GB18030 option because it will cause problem when the file aren&#8217;t really GB18030 encoded.</p>
<p>If you need to edit tag text yourself, try easytag to help you. :P</p>
]]></content:encoded>
			<wfw:commentRss>http://blogs.gnome.org/happyaron/2010/08/13/covert-gbkbig5-encoded-id3-tag-to-utf8/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Ubuntu Desktop Course Chinese version for Lucid released!</title>
		<link>http://blogs.gnome.org/happyaron/2010/08/01/ubuntu-desktop-course-chinese-version-for-lucid-released/</link>
		<comments>http://blogs.gnome.org/happyaron/2010/08/01/ubuntu-desktop-course-chinese-version-for-lucid-released/#comments</comments>
		<pubDate>Sun, 01 Aug 2010 14:27:26 +0000</pubDate>
		<dc:creator>Aron</dc:creator>
				<category><![CDATA[Documentation]]></category>
		<category><![CDATA[Ubuntu]]></category>

		<guid isPermaLink="false">http://blogs.gnome.org/happyaron/?p=224</guid>
		<description><![CDATA[Thanks to the great work done by the team, we can release this desktop course for spreading Ubuntu in Chinese. Here is the project homepage: http://people.ubuntu.com/~happyaron/udc-cn/ We have released both HTML and PDF. Also, Docbook format is available.]]></description>
			<content:encoded><![CDATA[<p>Thanks to the great work done by the team, we can release this desktop course for spreading Ubuntu in Chinese.</p>
<p>Here is the project homepage:<br />
<a href="http://people.ubuntu.com/~happyaron/udc-cn/">http://people.ubuntu.com/~happyaron/udc-cn/</a></p>
<p>We have released both HTML and PDF. Also, Docbook format is available.</p>
]]></content:encoded>
			<wfw:commentRss>http://blogs.gnome.org/happyaron/2010/08/01/ubuntu-desktop-course-chinese-version-for-lucid-released/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Ubuntu China LoCo Team resigning and nomination meeting</title>
		<link>http://blogs.gnome.org/happyaron/2010/07/30/ubuntu-china-loco-resign-meeting/</link>
		<comments>http://blogs.gnome.org/happyaron/2010/07/30/ubuntu-china-loco-resign-meeting/#comments</comments>
		<pubDate>Fri, 30 Jul 2010 09:32:12 +0000</pubDate>
		<dc:creator>Aron</dc:creator>
				<category><![CDATA[Ubuntu]]></category>

		<guid isPermaLink="false">http://blogs.gnome.org/happyaron/?p=218</guid>
		<description><![CDATA[Yesterday, we held a meeting about Ubuntu China LoCo Team resigning and nomination, and talked a lot about our LoCo team&#8217;s future activities. Meeting minutes: 1.What is Ubuntu loco contact? [happyaron] 2.Vote for new loco contact, and the new contact decided is Eleanor Chen. (10 Pros, 0 Cons, 4 not voted) 3.Discussed about FullCircle China [...]]]></description>
			<content:encoded><![CDATA[<p>Yesterday, we held a meeting about Ubuntu China LoCo Team resigning and nomination, and talked a lot about our LoCo team&#8217;s future activities.</p>
<p>Meeting minutes:<br />
1.What is Ubuntu loco contact? [happyaron]<br />
2.Vote for new loco contact, and the new contact decided is <a href="https://wiki.ubuntu.com/EleanorChen">Eleanor Chen</a>. (10 Pros, 0 Cons, 4 not voted)<br />
3.Discussed about FullCircle China team&#8217;s work.<br />
4.Made decisions about participating the Ubuntu Global Jam, and proposed for opening a classroom for teaching people who are interested in becoming an MOTU.<br />
5.All participants agree with organizing more community activities, but not get a conclusion on when is the best time for starting a Ubuntu user group at Beijing.</p>
<p>Here is the meeting log (Chinese):<br />
<a href='http://blogs.gnome.org/happyaron/files/2010/07/ubuntu-cn-meeting.log_.txt'>ubuntu-cn-meeting.log</a></p>
]]></content:encoded>
			<wfw:commentRss>http://blogs.gnome.org/happyaron/2010/07/30/ubuntu-china-loco-resign-meeting/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Covert flac to mp3</title>
		<link>http://blogs.gnome.org/happyaron/2010/07/06/covert-flac-to-mp3/</link>
		<comments>http://blogs.gnome.org/happyaron/2010/07/06/covert-flac-to-mp3/#comments</comments>
		<pubDate>Tue, 06 Jul 2010 09:19:33 +0000</pubDate>
		<dc:creator>Aron</dc:creator>
				<category><![CDATA[Fedora]]></category>
		<category><![CDATA[Multimedia]]></category>
		<category><![CDATA[Ubuntu]]></category>

		<guid isPermaLink="false">http://blogs.gnome.org/happyaron/?p=214</guid>
		<description><![CDATA[Some time we have to use mp3 format because our moveable devices commonly don&#8217;t support flac/ogg, thus I need to convert a .flac file to mp3. It&#8217;s very simple: First of all, install flac and lame package from your distribution&#8217;s repository. Then, using the following command to actually covert the file. 1.flac -d filename.flac This [...]]]></description>
			<content:encoded><![CDATA[<p>Some time we have to use mp3 format because our moveable devices commonly don&#8217;t support flac/ogg, thus I need to convert a .flac file to mp3. It&#8217;s very simple:<br />
First of all, install flac and lame package from your distribution&#8217;s repository.<br />
Then, using the following command to actually covert the file.<br />
1.<code>flac -d filename.flac</code><br />
This will output an filename.wav in the same directory.<br />
2.<code>lame filename.wav</code><br />
Now a fresh filename.mp3 is lying in the same directory.</p>
<p>Enjoy!</p>
]]></content:encoded>
			<wfw:commentRss>http://blogs.gnome.org/happyaron/2010/07/06/covert-flac-to-mp3/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Lucid release party in Beijing!</title>
		<link>http://blogs.gnome.org/happyaron/2010/05/07/lucid-release-party-in-beijing/</link>
		<comments>http://blogs.gnome.org/happyaron/2010/05/07/lucid-release-party-in-beijing/#comments</comments>
		<pubDate>Fri, 07 May 2010 08:09:37 +0000</pubDate>
		<dc:creator>Aron</dc:creator>
				<category><![CDATA[Ubuntu]]></category>

		<guid isPermaLink="false">http://blogs.gnome.org/happyaron/?p=211</guid>
		<description><![CDATA[Ubuntu China LoCo Community is going to host a party at 2:00 PM, on May 8th in the Traktirr Russian Restaurant, Beijing, in order to celebrate the release of Ubuntu 10.04 LTS. Everybody, from newbie to hacker, is warmly welcomed. We will invite some people to give lectures about Ubuntu, but what is truly important [...]]]></description>
			<content:encoded><![CDATA[<p>Ubuntu China LoCo Community is going to host a party at 2:00 PM, on May 8th in the Traktirr Russian Restaurant, Beijing, in order to celebrate the release of Ubuntu 10.04 LTS. Everybody, from newbie to hacker, is warmly welcomed. We will invite some people to give lectures about Ubuntu, but what is truly important is, we hope that everybody can participate in the party! We sincerely wish that all of you can have fun here. Remember that there are a cake,  some free CDs of Ubuntu 10.04 LTS and other souvenirs waiting for you!</p>
]]></content:encoded>
			<wfw:commentRss>http://blogs.gnome.org/happyaron/2010/05/07/lucid-release-party-in-beijing/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Simplified Chinese version of Ubuntu Desktop Course</title>
		<link>http://blogs.gnome.org/happyaron/2010/04/25/ubuntu-desktop-course-cn/</link>
		<comments>http://blogs.gnome.org/happyaron/2010/04/25/ubuntu-desktop-course-cn/#comments</comments>
		<pubDate>Sun, 25 Apr 2010 07:42:08 +0000</pubDate>
		<dc:creator>Aron</dc:creator>
				<category><![CDATA[Documentation]]></category>
		<category><![CDATA[Ubuntu]]></category>

		<guid isPermaLink="false">http://blogs.gnome.org/happyaron/?p=208</guid>
		<description><![CDATA[After a period&#8217;s work, Ubuntu Desktop Course has been translated to Simplified Chinese, the content has already adapted to 9.10, most of them are ready for 10.04. We are happy to announce this to public and wish this course can help more people who speak Chinese enjoy and share Free Software. HTML view: http://people.ubuntu.com/~happyaron/udc-cn/ PDF [...]]]></description>
			<content:encoded><![CDATA[<p>After a period&#8217;s work, Ubuntu Desktop Course has been translated to Simplified Chinese, the content has already adapted to 9.10, most of them are ready for 10.04. We are happy to announce this to public and wish this course can help more people who speak Chinese enjoy and share Free Software.</p>
<p>HTML view:<br />
<a href="http://people.ubuntu.com/~happyaron/udc-cn/">http://people.ubuntu.com/~happyaron/udc-cn/</a><br />
PDF generation still have some problems.</p>
<p>This work is licensed under Creative Commons 3.0 Attribution No-Commercial Share-Alike .</p>
]]></content:encoded>
			<wfw:commentRss>http://blogs.gnome.org/happyaron/2010/04/25/ubuntu-desktop-course-cn/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Considerations about official localized editions of Live CDs</title>
		<link>http://blogs.gnome.org/happyaron/2009/12/16/considerations-about-official-localized-editions-of-live-cds/</link>
		<comments>http://blogs.gnome.org/happyaron/2009/12/16/considerations-about-official-localized-editions-of-live-cds/#comments</comments>
		<pubDate>Wed, 16 Dec 2009 06:37:33 +0000</pubDate>
		<dc:creator>Aron</dc:creator>
				<category><![CDATA[Ubuntu]]></category>

		<guid isPermaLink="false">http://blogs.gnome.org/happyaron/?p=203</guid>
		<description><![CDATA[It is a proven fact that Ubuntu, the Linux for Human Beings, is a great GNU/Linux distribution, which enables more and more people all over the world enjoy free software, share their knowledge and joys. Being an user of Ubuntu, I must say all the work done by the community and Canonical is awesome; but [...]]]></description>
			<content:encoded><![CDATA[<p>It is a proven fact that Ubuntu, the Linux for Human Beings, is a great GNU/Linux distribution, which enables more and more people all over the world enjoy free software, share their knowledge and joys.</p>
<p>Being an user of Ubuntu, I must say all the work done by the community and Canonical is awesome; but as a contributor from a not English spoken country, I would be extremely happy to see we can launch localized edition Live CDs, in other words language specific edition Live CDs for users that have different languages and preferences.</p>
<p>For different languages there always be different cultures, and this caused to different user preferences. There are many people don&#8217;t have enough knowledge about English to use a not localized computer in this world. A user of this kind will find it essential to download and install many thing to complete their language support when they installed Ubuntu from our Live CD in the past and at present. Most of these users have some common usage of software, so install these &#8220;language preferred&#8221; software is another required task before the system is usable. Do you think such a thing is very annoying? Yes, users would be much happier when they find an operating system designed to be very considerate.</p>
<p>We have spent lots of man power on improving the process of installation including language support, and a GNU/Linux distribution always ships not only a system but also a set of selected applications, but I think things are still not perfect for us. Microsoft and Apple make their operating systems have different language&#8217;s editions, and as a non-native English speaker, I &#8216;d like to say it worth. Users prefer to have a fully localized environment in every corner they can see from the very beginning. But for Ubuntu we can only add translations of software that used during installation. The live session is an exciting feature, but I always here somebody ask &#8220;why are those all in English?&#8221;"is there a fully translated Ubuntu available?&#8221; I&#8217;ve explained our current situation times by times, and these people always return to say &#8220;Ubuntu  is great, but if there is a fully translated one, things will be even better.&#8221; The way to solve such problem, is having a language specific edition.</p>
<p>So there are teams and individuals appear to make their distributions based on Ubuntu, or we are regarding them as Ubuntu Derivatives. The existence of these derivatives help us spread our distribution in the positive side, but there are really negative side, it&#8217;s not just a problem on user choice, like between Fedora and Ubuntu, but something influence our build of community. Those derivatives always not only ship language packs but also some small tweaks for specific user groups  (not like Mint, which makes some bigger differences). Due to many reasons, there always be breakages and bugs that never existed in official Live CD. Users have to choose a provider that he or she can trust when they are about to turn to Ubuntu but can hardly accept to start from a global edition Live CD with minor support of his or her  language. But who can make sure the quality of these derivatives? Perhaps nobody can tell. For the derivatives provided by non-profit organizations, situations are better than those profit-driven teams. I know some editions have changes that bring security holes, ship Ads (e.g. hard change on Firefox home page which point to a site full of Ads), and of course some of them refused to open there changes. Yes, users are able to drop those unwilling changes, but why he or she tries a derivative if they like to deal with such issues? We may still say it doesn&#8217;t matter a lot up to here. Then, most of those derivative&#8217;s authors don&#8217;t supply support even though some of them have make changes and cause problems, and even some of them push the support work to local community deliberately. Apart from general questions, these users always ask about problems caused by derivative&#8217;s changes. It is an annoying and overwhelming job to answer, even just tell them &#8220;to use the official one&#8221; can be an awful thing that few people like to do. This lead to discount to our community, and those users may think Ubuntu and our community are not friendly because most of them don&#8217;t know the real situation exactly.</p>
<p>Making official localized Live CDs can also lead to a new stage of Live CD usage. A Live CD can be used as a demo, a rescue system, or even a temporary working environment, the live session is a feature that many users like very much. As mentioned before, a not English spoken user can find some very limited support in the current Live CD. We need to admit it can hardly be used to do anything other than run a installation. Even for a demo purpose, other will always ask about the nearly all English environment. I&#8217;ve said in the beginning of this piece, users prefer to seeing that every corner he or she can reach is localized. To achieve a better usage of Live CD, a full localization is critical for these users. As for languages that need input method to input characters, for instance CJK languages (Chinese, Japanese and Korean), without a full featured input method, their usage of Live CD can be even more limited. It is really hard to input these complex scripts, though we have ibus with general m17n support by default, but you can only type characters one by one, such thing look very ridiculous for nowadays input method development and usage. When you cannot input a sentence, how can you make it even if you just want to search the web for some articles via live session?</p>
<p>Apart from the meanings of official localized Live CDs above, users can save time on downloading and installing language support and perhaps other common software using a localized Live CD. For example, to complete a basic language support of Chinese needs around 100MiB to be downloaded, such a size only count in the language packs and input method without pulling in any other common software like StarDict to land on the system. With a localized Live CD, users can have a usable environment to be installed when they can&#8217;t access a fast Internet connection, or even without a connection, such feature is obviously welcomed by many users who have desired it for long. With a fully localized environment, we can simplify user&#8217;s configuration process, and make it really almost ready-to-use once installed.</p>
<p>Making the localized Live CDs don&#8217;t need any changes on our most infrastructures, it is just a matter of default selection of software in the CD. This will cause some more work for CD image team, translation exportation and our ISO building facilities, but I think it worth it. The intention of default package sets and some QA work can be done by the LoCo teams.</p>
<p>We can&#8217;t provide Live CDs for all languages, especially at the very beginning, but starting with having a try for some languages that have special need of care and a big amount of potential users is worthwhile. We can accumulate experience and make the process better. Windows and Macs can have language specific editions, why we can&#8217;t?</p>
<p>Providing official localized editions can be a big step forward on spreading Ubuntu and free software to the world. The progress of making it out is another try on the cooperation of development community and local communities. Ubuntu is Linux for Human Beings, I think such an action is really to that point, which will benefit a lot of users throughout the world.</p>
]]></content:encoded>
			<wfw:commentRss>http://blogs.gnome.org/happyaron/2009/12/16/considerations-about-official-localized-editions-of-live-cds/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Getting NetworkManager work with pppoe connection on Ubuntu 9.10</title>
		<link>http://blogs.gnome.org/happyaron/2009/11/27/getting-networkmanager-work-with-pppoe-connection-on-ubuntu-9-10/</link>
		<comments>http://blogs.gnome.org/happyaron/2009/11/27/getting-networkmanager-work-with-pppoe-connection-on-ubuntu-9-10/#comments</comments>
		<pubDate>Fri, 27 Nov 2009 06:48:41 +0000</pubDate>
		<dc:creator>Aron</dc:creator>
				<category><![CDATA[Networking]]></category>
		<category><![CDATA[Ubuntu]]></category>

		<guid isPermaLink="false">http://blogs.gnome.org/happyaron/?p=191</guid>
		<description><![CDATA[When Ubuntu 9.10 releases, pppoe connection via NetworkManager is impossible because some bug in it. So I switched to the traditional but workable way &#8211; pppoeconf, now the problem seems to be solved when using nm team PPA, so I plan to turn back. But during my process, there are some other problems. Firstly nm [...]]]></description>
			<content:encoded><![CDATA[<p>When Ubuntu 9.10 releases, pppoe connection via NetworkManager is impossible because some bug in it. So I switched to the traditional but workable way &#8211; pppoeconf, now the problem seems to be solved when using nm team PPA, so I plan to turn back.<br />
But during my process, there are some other problems. Firstly nm cannot handle the connections automatically; secondly we cannot edit connections system wide.</p>
<p>Here are the correct steps:</p>
<p>First, add &#8220;NetworkManager daily trunk builds for ubuntu&#8221; PPA:</p>
<blockquote><p>deb http://ppa.launchpad.net/network-manager/trunk/ubuntu karmic main<br />
deb-src http://ppa.launchpad.net/network-manager/trunk/ubuntu karmic main</p></blockquote>
<p>Second, comment out line &#8220;exec pppd call dsl-provider&#8221; in /etc/ppp/pppoe_on_boot, that is to say disable my previous &#8220;pppoe on boot&#8221; setting which is configured by pppoeconf.</p>
<p>Third, rename /etc/network/interfaces to backup file. NetworkManager will only handle connections which haven&#8217;t declared in interfaces, if you didn&#8217;t any tunning on such file, you can delete it, but backup before doing any change is a good habit, :)</p>
<p>Forth, edit /usr/share/polkit-1/actions/org.freedesktop.network-manager-settings.system.policy , find out the line contains &#8220;System policy prevents modification of system settings&#8221;, and below it there is a &#8220;<allow_active>auth_admin_keep</allow_active>&#8220;, change it to &#8220;<allow_active>yes</allow_active>&#8220;. This will enable you to edit a system wide connection. If you consider this will do harm to your security, then revert the change once you have set up your connection correctly.</p>
<p>Fifth, reboot your system, because these settings won&#8217;t take effects even though you have run &#8220;sudo services network-manager restart&#8221; and &#8220;sudo services networking restart&#8221;.</p>
<p>Now it is working on my system, cheers!</p>
]]></content:encoded>
			<wfw:commentRss>http://blogs.gnome.org/happyaron/2009/11/27/getting-networkmanager-work-with-pppoe-connection-on-ubuntu-9-10/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Come with Karmic!</title>
		<link>http://blogs.gnome.org/happyaron/2009/10/29/come-with-karmic/</link>
		<comments>http://blogs.gnome.org/happyaron/2009/10/29/come-with-karmic/#comments</comments>
		<pubDate>Thu, 29 Oct 2009 13:15:46 +0000</pubDate>
		<dc:creator>Aron</dc:creator>
				<category><![CDATA[Ubuntu]]></category>

		<guid isPermaLink="false">http://blogs.gnome.org/happyaron/?p=123</guid>
		<description><![CDATA[Hi planet, I am finally part of Ubunu Member at the point we are releasing Karmic, cheers for myself and everybody!]]></description>
			<content:encoded><![CDATA[<p>Hi planet, I am finally part of  Ubunu Member at the point we are releasing Karmic, cheers for myself and everybody!</p>
]]></content:encoded>
			<wfw:commentRss>http://blogs.gnome.org/happyaron/2009/10/29/come-with-karmic/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
<!-- This Quick Cache file was built for (  blogs.gnome.org/happyaron/category/ubuntu/feed/ ) in 1.04021 seconds, on Feb 11th, 2012 at 7:40 pm UTC. -->
<!-- This Quick Cache file will automatically expire ( and be re-built automatically ) on Feb 11th, 2012 at 8:40 pm UTC -->
<!-- +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
<!-- Quick Cache Is Fully Functional :-) ... A Quick Cache file was just served for (  blogs.gnome.org/happyaron/category/ubuntu/feed/ ) in 0.00053 seconds, on Feb 11th, 2012 at 7:58 pm UTC. -->
