<?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/"
	>

<channel>
	<title>赖洪礼的 blog &#187; General</title>
	<atom:link href="http://izumi.plan99.net/blog/index.php/category/1/feed/" rel="self" type="application/rss+xml" />
	<link>http://izumi.plan99.net/blog</link>
	<description>Ecchi nanowa ikenai to omoimasu</description>
	<lastBuildDate>Wed, 06 Apr 2011 08:10:07 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>New way to hide the banner</title>
		<link>http://izumi.plan99.net/blog/index.php/2009/04/26/new-way-to-hide-the-banner/</link>
		<comments>http://izumi.plan99.net/blog/index.php/2009/04/26/new-way-to-hide-the-banner/#comments</comments>
		<pubDate>Sun, 26 Apr 2009 10:03:47 +0000</pubDate>
		<dc:creator>Hongli</dc:creator>
				<category><![CDATA[General]]></category>

		<guid isPermaLink="false">http://izumi.plan99.net/blog/?p=328</guid>
		<description><![CDATA[For those who want to be able to pass URLs of my blog to co-workers without showing them the banner: it is now possible. If you add &#8220;?hide_banner=yes&#8221; to the URL then the banner will be hidden automatically, without needing them to click on the &#8220;Censor banner&#8221; link. For example: http://izumi.plan99.net/blog/?hide_banner=yes This will also automatically [...]]]></description>
			<content:encoded><![CDATA[<p>For those who want to be able to pass URLs of my blog to co-workers without showing them the banner: it is now possible. If you add &#8220;?hide_banner=yes&#8221; to the URL then the banner will be hidden automatically, without needing them to click on the &#8220;Censor banner&#8221; link. For example:</p>
<pre>http://izumi.plan99.net/blog/?hide_banner=yes</pre>
<p>This will also automatically set a cookie so that subsequent page loads won&#8217;t show the banner by default.</p>
]]></content:encoded>
			<wfw:commentRss>http://izumi.plan99.net/blog/index.php/2009/04/26/new-way-to-hide-the-banner/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Blog compromised</title>
		<link>http://izumi.plan99.net/blog/index.php/2008/11/02/blog-compromised/</link>
		<comments>http://izumi.plan99.net/blog/index.php/2008/11/02/blog-compromised/#comments</comments>
		<pubDate>Sun, 02 Nov 2008 10:12:58 +0000</pubDate>
		<dc:creator>Hongli</dc:creator>
				<category><![CDATA[General]]></category>

		<guid isPermaLink="false">http://izumi.plan99.net/blog/index.php/2008/11/02/blog-compromised/</guid>
		<description><![CDATA[Roger Pack just told me that my blog had been compromised. A popup will open up in Internet Explorer. I just get rid of that. Thanks for the heads up Roger. My apologies to those who saw the popup. It seemed to be some kind of XSS vulnerability in WordPress. Sigh, I guess I&#8217;ll have [...]]]></description>
			<content:encoded><![CDATA[<p>Roger Pack just told me that my blog had been compromised. A popup will open up in Internet Explorer. I just get rid of that. Thanks for the heads up Roger.</p>
<p>My apologies to those who saw the popup. It seemed to be some kind of XSS vulnerability in WordPress. Sigh, I guess I&#8217;ll have to upgrade WordPress <b>again</b>. <img src='http://izumi.plan99.net/blog/wp-includes/images/smilies/icon_sad.gif' alt=':(' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://izumi.plan99.net/blog/index.php/2008/11/02/blog-compromised/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>This blog now officially Safe For Work(tm)</title>
		<link>http://izumi.plan99.net/blog/index.php/2008/10/28/this-blog-now-officially-safe-for-worktm/</link>
		<comments>http://izumi.plan99.net/blog/index.php/2008/10/28/this-blog-now-officially-safe-for-worktm/#comments</comments>
		<pubDate>Tue, 28 Oct 2008 11:30:11 +0000</pubDate>
		<dc:creator>Hongli</dc:creator>
				<category><![CDATA[#RailsSummit]]></category>
		<category><![CDATA[General]]></category>

		<guid isPermaLink="false">http://izumi.plan99.net/blog/index.php/2008/10/28/this-blog-now-officially-safe-for-worktm/</guid>
		<description><![CDATA[Latin America Rails Summit has been a very nice experience. It has been about a week since I&#8217;m back home, and the jetlag that I was experiencing is finally disappearing. I&#8217;ve talked to many interesting people, such as Chris Wanstrath from Github, Obie Fernandez from Hashrocket and Chad Fowler. I heard a&#8230; uhm&#8230; &#8220;interesting&#8221; story [...]]]></description>
			<content:encoded><![CDATA[<p>Latin America Rails Summit has been a very nice experience. It has been about a week since I&#8217;m back home, and the jetlag that I was experiencing is finally disappearing. I&#8217;ve talked to many interesting people, such as Chris Wanstrath from Github, Obie Fernandez from Hashrocket and Chad Fowler.</p>
<p>I heard a&#8230; uhm&#8230; &#8220;interesting&#8221; story from Chris. There was a time when he was reading my blog. His boss saw my blog&#8217;s banner and thought that he&#8217;s viewing non-safe-for-work-content. I heard similar things from several other people. Or, to quote Chad:</p>
<blockquote><p>&#8220;When I met you at RailsConf, I was pleasantly surprised that your personality doesn&#8217;t match your pr0n website.&#8221; &#8212; Chad Fowler, referring to this blog</p></blockquote>
<p>Or, as Tinco said, &#8220;the entire Ruby community wants to read your blog, but they can&#8217;t&#8221;.</p>
<p>I asked, why not use Adblock? &#8220;Too much of a hassle&#8221; was the answer I got.</p>
<p>I also pointed out that this is just my personal blog, and that it is clearly separated from <a href="http://blog.phusion.nl/">the company blog</a>. But the response was &#8220;But there&#8217;s too much interesting stuff on your blog!&#8221;</p>
<h2>No more excuses!</h2>
<p>Starting from today, there is no excuse anymore! I&#8217;ve added a &#8220;Censor banner&#8221; button, as you can see in this screenshot:</p>
<p><img src='http://izumi.plan99.net/blog/wp-content/uploads/2008/10/censorship.png' alt='censorship.png' /></p>
<p>The state will be saved into a cookie, so even if you press Reload, the banner will stay hidden. Therefore, this blog is now officially Safe For Work(tm).</p>
<p><b>Update:</b> it is now also possible to hide the banner by appending &#8220;?hide_banner=yes&#8221; to the URL, e.g.:</p>
<pre>http://izumi.plan99.net/blog/index.php/2009/04/10/hunting-down-obscure-gc-bugs/?hide_banner=yes</pre>
<h2>What&#8217;s with your blog&#8217;s banner anyway?</h2>
<p>The girls you see in the banner are actually friends of mine. Yes, I know them in real life. Those who live in Japan or who watch anime are probably familiar with the term &#8220;cosplay&#8221;. These girls like cosplaying, and I like this particular photo that I shot of them, so I turned it into a blog header. With permission.</p>
]]></content:encoded>
			<wfw:commentRss>http://izumi.plan99.net/blog/index.php/2008/10/28/this-blog-now-officially-safe-for-worktm/feed/</wfw:commentRss>
		<slash:comments>13</slash:comments>
		</item>
		<item>
		<title>Who has experience with Qt 4 on OS X?</title>
		<link>http://izumi.plan99.net/blog/index.php/2008/09/29/who-has-experience-with-qt-4-on-os-x/</link>
		<comments>http://izumi.plan99.net/blog/index.php/2008/09/29/who-has-experience-with-qt-4-on-os-x/#comments</comments>
		<pubDate>Mon, 29 Sep 2008 08:45:24 +0000</pubDate>
		<dc:creator>Hongli</dc:creator>
				<category><![CDATA[General]]></category>
		<category><![CDATA[Linux]]></category>

		<guid isPermaLink="false">http://izumi.plan99.net/blog/index.php/2008/09/29/who-has-experience-with-qt-4-on-os-x/</guid>
		<description><![CDATA[I&#8217;ve had pretty bad experiences with wxWidgets. Not that the toolkit itself is bad, but it&#8217;s lacking functionality and polish in various unexpected and awkward ways. The biggest turn-off for me is that it doesn&#8217;t support buttons with icons. Not only do I want my GUI apps to work well, I also want them to [...]]]></description>
			<content:encoded><![CDATA[<p>I&#8217;ve had pretty bad experiences with wxWidgets. Not that the toolkit itself is bad, but it&#8217;s lacking functionality and polish in various unexpected and awkward ways. The biggest turn-off for me is that it doesn&#8217;t support <a href="http://log.emmanuelebassi.net/images/shots/gdict-pref-dialog-1.png">buttons with icons</a>. Not only do I want my GUI apps to work well, I also want them to look nice and to integrate well into the environment. On Linux/GNOME, having buttons with icons is almost essential &#8211; not having icons just makes the GUI look plain and ugly. On Windows it can make a big difference as well when it comes to UI aesthetics. The wxWidgets developers commented that they won&#8217;t implement this because not all platforms (e.g. Windows) support it. I personally think this is nonsense &#8211; Delphi has supported buttons with icons since version 1.0 (for Windows 3.1). Besides, why not just implement it on platforms that do support it, and document it as such? This is already the case for things such as the flat button style.</p>
<p>Another thing I don&#8217;t like about wxWidgets is how it forces one to build the GUI top-down. One must first construct a parent container before one can construct child widgets. It&#8217;s not possible to construct an invisible child widget and then later on attach that onto a parent. This seems to be a design decision influenced by limitations in Windows.<br />
wxWidgets also has the tendency to layout the GUI differently on different platforms. I usually develop wxWidgets applications on Linux, and port them to Windows later on. What usually happens is that the GUI looks fine on Linux, but totally breaks on Windows &#8211; buttons being laid out differently, controls that have the wrong size, etc. I usually end up having to fix the GUI code for Windows. Apparently wxWidgets has different layout implementations for different platforms, and they behave subtly different ways.</p>
<p>The list can go on and on. But generally, wxWidgets feels clunky and awkward except for simple and standard user interfaces without a lot of dynamics. The differences in layout and resize behavior on different platforms seem to be bigger than the differences in CSS implementations in different browsers (with the exception of IE of course).</p>
<p>Qt 4 seems to be a good cross-platform GUI toolkit and doesn&#8217;t suffer from these issues. It looks very nice on Linux. However, I&#8217;ve seen Mac people flaming Qt for looking &#8220;totally miserable&#8221; on OS X. I couldn&#8217;t find any screenshots of Qt 4 on OS X so I can&#8217;t confirm whether that&#8217;s true. Does anybody have experience with Qt on OS X, and can show me some screenshots?</p>
]]></content:encoded>
			<wfw:commentRss>http://izumi.plan99.net/blog/index.php/2008/09/29/who-has-experience-with-qt-4-on-os-x/feed/</wfw:commentRss>
		<slash:comments>9</slash:comments>
		</item>
		<item>
		<title>CERN Rap</title>
		<link>http://izumi.plan99.net/blog/index.php/2008/08/12/cern-rap/</link>
		<comments>http://izumi.plan99.net/blog/index.php/2008/08/12/cern-rap/#comments</comments>
		<pubDate>Tue, 12 Aug 2008 22:04:23 +0000</pubDate>
		<dc:creator>Hongli</dc:creator>
				<category><![CDATA[General]]></category>

		<guid isPermaLink="false">http://izumi.plan99.net/blog/index.php/2008/08/12/cern-rap/</guid>
		<description><![CDATA[http://vimeo.com/1431471 Brilliant!]]></description>
			<content:encoded><![CDATA[<p><a href="http://vimeo.com/1431471">http://vimeo.com/1431471</a></p>
<p>Brilliant!</p>
]]></content:encoded>
			<wfw:commentRss>http://izumi.plan99.net/blog/index.php/2008/08/12/cern-rap/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Just back from the USA</title>
		<link>http://izumi.plan99.net/blog/index.php/2008/06/07/just-back-from-the-usa/</link>
		<comments>http://izumi.plan99.net/blog/index.php/2008/06/07/just-back-from-the-usa/#comments</comments>
		<pubDate>Sat, 07 Jun 2008 17:20:26 +0000</pubDate>
		<dc:creator>Hongli</dc:creator>
				<category><![CDATA[General]]></category>

		<guid isPermaLink="false">http://izumi.plan99.net/blog/index.php/2008/06/07/just-back-from-the-usa/</guid>
		<description><![CDATA[Urgh, jetlag&#8230; I went to sleep at 7 AM local time, and woke up at 6 PM.]]></description>
			<content:encoded><![CDATA[<p>Urgh, jetlag&#8230; I went to sleep at 7 AM local time, and woke up at 6 PM. <img src='http://izumi.plan99.net/blog/wp-includes/images/smilies/icon_sad.gif' alt=':(' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://izumi.plan99.net/blog/index.php/2008/06/07/just-back-from-the-usa/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Student assistant</title>
		<link>http://izumi.plan99.net/blog/index.php/2007/11/08/student-assistant/</link>
		<comments>http://izumi.plan99.net/blog/index.php/2007/11/08/student-assistant/#comments</comments>
		<pubDate>Thu, 08 Nov 2007 22:44:33 +0000</pubDate>
		<dc:creator>Hongli</dc:creator>
				<category><![CDATA[General]]></category>

		<guid isPermaLink="false">http://izumi.plan99.net/blog/index.php/2007/11/08/student-assistant/</guid>
		<description><![CDATA[Starting next Thursday, I&#8217;ll be a student assistant for the course Operating Systems at my university. What&#8217;s that you say? Well, my job is to aid the students during practicum sessions, thereby reducing the amount of work for the professors. This course is about operating system design, and it has a strong focus on POSIX [...]]]></description>
			<content:encoded><![CDATA[<p>Starting next Thursday, I&#8217;ll be a student assistant for the course Operating Systems at my university. What&#8217;s that you say? Well, my job is to aid the students during practicum sessions, thereby reducing the amount of work for the professors.<br />
This course is about operating system design, and it has a strong focus on POSIX operating systems. It talks about things like CPU scheduling, system calls, multiprocessing, filesystems, memory, etc. During the practicum sessions, students have to program in C. Last year I noticed that a lot of students have a hard time understanding C. C is not officially taught as a course at my university; students are only taught Java. The jump from Java to C is pretty big even though the syntax is somewhat similar, and most people have trouble understanding pointers, memory management and even include files and the nature of linking. On top of that, most students are unfamiliar with Linux, which is the operating system we use during practicum sessions.<br />
Now, I happen to be one of the few students who knew both C and Linux, and last year (when I was still attending the course) I was like a walking API reference.<br />
&#8220;Hey Hongli why does this code crash?&#8221;<br />
&#8220;Help Hongli it won&#8217;t compile!&#8221;<br />
&#8220;Hongli what the hell is &#8216;makes pointer from integer without cast&#8217; supposed to mean?&#8221;<br />
&#8220;OMG Hongli strlen() is eating my baby!&#8221;</p>
<p>Well, no more. I&#8217;m a student assistant now, so this time I can actually tell them &#8220;RTFM&#8221; (= read the sheets/book/man pages) if they ask me trivial things. I know that some people <b>will</b> have questions about how to compile multiple .c files to a single executable, so I prepared diagram:<br />
<img src='http://izumi.plan99.net/blog/wp-content/uploads/2007/11/compilerenvanc.png' alt='compilerenvanc.png' /><br />
If students don&#8217;t understand this then I&#8217;ll dance <a href="http://nl.youtube.com/watch?v=Z2HpAE-QcQA">Hare Hare Yukai</a> 20 times in a crowded place.</p>
]]></content:encoded>
			<wfw:commentRss>http://izumi.plan99.net/blog/index.php/2007/11/08/student-assistant/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Mikuru 1.0.0 released</title>
		<link>http://izumi.plan99.net/blog/index.php/2007/10/08/mikuru-100-released/</link>
		<comments>http://izumi.plan99.net/blog/index.php/2007/10/08/mikuru-100-released/#comments</comments>
		<pubDate>Mon, 08 Oct 2007 14:32:09 +0000</pubDate>
		<dc:creator>Hongli</dc:creator>
				<category><![CDATA[General]]></category>
		<category><![CDATA[Software announcements]]></category>

		<guid isPermaLink="false">http://izumi.plan99.net/blog/?p=57</guid>
		<description><![CDATA[Mikuru &#8211; named after Asahina Mikuru from The Melancholy of Haruhi Suzumiya &#8211; is an extremely simple image gallery generator. Its key features are: Easy to use and easy to set up. No dependencies on databases. The generated gallery has a simple, to the point, quick and easy to user interface. I wrote this because [...]]]></description>
			<content:encoded><![CDATA[<p><img src="/mikuru/Mikuru_Asahina.jpg" style="float: right"/><br />
Mikuru &#8211; named after Asahina Mikuru from <a href="http://en.wikipedia.org/wiki/The_Melancholy_of_Haruhi_Suzumiya_%28anime%29">The Melancholy of Haruhi Suzumiya</a> &#8211; is an extremely simple image gallery generator. Its key features are:</p>
<ul>
<li>Easy to use and easy to set up.</li>
<li>No dependencies on databases.</li>
<li>The generated gallery has a simple, to the point, quick and easy to user interface.</li>
</ul>
<p>I wrote this because I went to Abunai last weekend, and I took 150 pictures. I didn&#8217;t feel like setting up a full blown gallery system such as Gallery, so I wrote this simple fire-and-forget image gallery generator.</p>
<h2>How does it work?</h2>
<p>You put a bunch of pictures in a folder, run Mikuru, and it&#8217;ll generate an &#8216;index.html&#8217; as well as a set of thumbnails. There are no other generated files. Simply upload index.html, the thumbnails and the pictures to a web server, and you&#8217;re ready to go.</p>
<p>Here&#8217;s an example usage session:</p>
<pre>
$ ls
DSCN001.JPG   DSCN002.JPG   DSCN003.JPG
DSCN004.JPG   DSCN005.JPG   DSCN006.JPG
$ mikuru
MKDIR      thumbnails
WRITE      thumbnails/DSCN001.JPG
WRITE      thumbnails/DSCN002.JPG
WRITE      thumbnails/DSCN003.JPG
WRITE      thumbnails/DSCN004.JPG
WRITE      thumbnails/DSCN005.JPG
WRITE      thumbnails/DSCN006.JPG
WRITE      index.html
$ scp -r * www.somehost.com:public_html/my_gallery/
</pre>
<h2>How does it look like?</h2>
<p><a href="/mikuru/demo/">Click here for a demo image gallery.</a></p>
<h2>Download</h2>
<p><a href="/mikuru/mikuru-1.0.0.tar.gz">Version 1.0.0</a><br />
Requires <a href="http://www.ruby-lang.org/">Ruby</a> and <a href="http://rmagick.rubyforge.org/">RMagick</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://izumi.plan99.net/blog/index.php/2007/10/08/mikuru-100-released/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>GoDaddy sucks</title>
		<link>http://izumi.plan99.net/blog/index.php/2007/07/28/godaddy-sucks/</link>
		<comments>http://izumi.plan99.net/blog/index.php/2007/07/28/godaddy-sucks/#comments</comments>
		<pubDate>Sat, 28 Jul 2007 19:27:44 +0000</pubDate>
		<dc:creator>Hongli</dc:creator>
				<category><![CDATA[General]]></category>

		<guid isPermaLink="false">http://izumi.plan99.net/blog/?p=53</guid>
		<description><![CDATA[Never use GoDaddy.com to purchase SSL certificates. They&#8217;re cheap, but their service sucks. Yesterday I purchased an SSL certificate with my GoDaddy account. A friend agreed to pay the fee for me, so we used his Paypal account, which was under a different name. I can&#8217;t find anywhere on the GoDaddy website where they mention [...]]]></description>
			<content:encoded><![CDATA[<p>Never use GoDaddy.com to purchase SSL certificates. They&#8217;re cheap, but their service sucks.</p>
<p>Yesterday I purchased an SSL certificate with my GoDaddy account. A friend agreed to pay the fee for me, so we used his Paypal account, which was under a different name. I can&#8217;t find anywhere on the GoDaddy website where they mention that the Paypal account information must match the GoDaddy account information. The purchase seemed to go well, but after 2 hours GoDaddy refunded the fee and <b>deleted my GoDaddy account</b> without notice. I had to email them to ask what was going on. They replied that they need the Paypal account holder to fax them a government identification document, like a passport.</p>
<p>We refuse. They&#8217;re not the police. We&#8217;ll never buy anything from them ever again.</p>
]]></content:encoded>
			<wfw:commentRss>http://izumi.plan99.net/blog/index.php/2007/07/28/godaddy-sucks/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Status report</title>
		<link>http://izumi.plan99.net/blog/index.php/2007/07/20/status-report/</link>
		<comments>http://izumi.plan99.net/blog/index.php/2007/07/20/status-report/#comments</comments>
		<pubDate>Fri, 20 Jul 2007 12:25:12 +0000</pubDate>
		<dc:creator>Hongli</dc:creator>
				<category><![CDATA[General]]></category>
		<category><![CDATA[Optimization]]></category>
		<category><![CDATA[Ruby]]></category>
		<category><![CDATA[Ruby on Rails]]></category>

		<guid isPermaLink="false">http://izumi.plan99.net/blog/?p=48</guid>
		<description><![CDATA[It&#8217;s been a long time since I&#8217;ve posted on this blog. Some people might be asking whether I&#8217;m still alive. You&#8217;re reading this right now, so that answers the question. It&#8217;s been a while since I worked on my Ruby on Rails-related projects, saving memory by using copy-on-write and prepared statements support in ActiveRecord. They [...]]]></description>
			<content:encoded><![CDATA[<p>It&#8217;s been a long time since I&#8217;ve posted on this blog. Some people might be asking whether I&#8217;m still alive. You&#8217;re reading this right now, so that answers the question. <img src='http://izumi.plan99.net/blog/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>It&#8217;s been a while since I worked on my Ruby on Rails-related projects, <a href="http://izumi.plan99.net/blog/?p=34">saving memory by using copy-on-write</a> and <a href="http://izumi.plan99.net/blog/?p=35">prepared statements support in ActiveRecord</a>. They were on hold for a while since I&#8217;ve been pretty busy. Right now I&#8217;m having holidays, so I think I&#8217;ll start working on them in again in the coming few weeks.</p>
<p>I&#8217;ve also decided to finally release a program that I wrote, in the hope that they will be useful to someone. This is the <a href="http://izumi.plan99.net/blog/?page_id=47">System Daemon Manager</a>, a tool for running any program as a daemon (background process without controlling terminal) on a Unix system. I&#8217;m using this to manage my Ruby on Rails Lighttpd processes on my server.<br />
I&#8217;ve also written a new page for the <a href="http://izumi.plan99.net/blog/?page_id=46">Ruby Whirlpool library</a> and imported it into a Subversion repository.</p>
]]></content:encoded>
			<wfw:commentRss>http://izumi.plan99.net/blog/index.php/2007/07/20/status-report/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>

