<?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>My Crusade &#187; jarodwang</title>
	<atom:link href="http://www.jarodwang.cn/author/jarodwang/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.jarodwang.cn</link>
	<description>For the future we believe in.</description>
	<lastBuildDate>Thu, 26 Nov 2009 12:29:57 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8.6</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>How to Install tusc on HP-UX</title>
		<link>http://www.jarodwang.cn/2009/11/26/how-to-install-tusc-on-hp-ux/</link>
		<comments>http://www.jarodwang.cn/2009/11/26/how-to-install-tusc-on-hp-ux/#comments</comments>
		<pubDate>Thu, 26 Nov 2009 12:29:57 +0000</pubDate>
		<dc:creator>jarodwang</dc:creator>
				<category><![CDATA[HP-UX]]></category>
		<category><![CDATA[tusc]]></category>

		<guid isPermaLink="false">http://www.jarodwang.cn/?p=318</guid>
		<description><![CDATA[tusc 是一个在 HP-UX 平台上用来跟踪系统调用的程序，其功能类似于 Linux 上的 strace 和 Solaris  上的 truss。最近两天应大洋彼岸的同事要求，要提供某个重要的 Oracle 数据库进程的 tusc 输出，可是在我用的 HP-UX 的测试机上并没有默认安装它。最后 Google 出来了 tusc 的安装方法，记录于此。
答案来自于 HP IT Resource Center 的论坛上的一篇帖子。其实安装过程很简单：
1 在这里下载版本合适的 tusc 安装文件压缩包；
2 以 root 身份使用 swinstall 命令进行安装。
默认的安装路径是在 /usr/local/bin/tusc，之后就可以开始使用了。最后这里顺便给出一个例子：
tusc -o tusc.out -aEfhpRunv -T &#8220;&#8221; -p pid
]]></description>
			<content:encoded><![CDATA[<p>tusc 是一个在 HP-UX 平台上用来跟踪系统调用的程序，其功能类似于 Linux 上的 strace 和 Solaris  上的 truss。最近两天应大洋彼岸的同事要求，要提供某个重要的 Oracle 数据库进程的 tusc 输出，可是在我用的 HP-UX 的测试机上并没有默认安装它。最后 Google 出来了 tusc 的安装方法，记录于此。</p>
<p>答案来自于 <a href="http://www.itrc.hp.com" target="_blank">HP IT Resource Center</a> 的论坛上的一篇<a href="http://forums11.itrc.hp.com/service/forums/questionanswer.do?admit=109447626+1259237010791+28353475&amp;threadId=1201801" target="_blank">帖子</a>。其实安装过程很简单：</p>
<p>1 在<a href="http://hpux.connect.org.uk/hppd/hpux/Sysadmin/tusc-7.10/" target="_blank">这里</a>下载版本合适的 tusc 安装文件压缩包；</p>
<p>2 以 root 身份使用 swinstall 命令进行安装。</p>
<p>默认的安装路径是在 /usr/local/bin/tusc，之后就可以开始使用了。最后这里顺便给出一个例子：</p>
<p>tusc -o tusc.out -aEfhpRunv -T &#8220;&#8221; -p pid</p>
]]></content:encoded>
			<wfw:commentRss>http://www.jarodwang.cn/2009/11/26/how-to-install-tusc-on-hp-ux/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Introduction to Oracle Application Express</title>
		<link>http://www.jarodwang.cn/2009/11/14/intro-to-oracle-apex/</link>
		<comments>http://www.jarodwang.cn/2009/11/14/intro-to-oracle-apex/#comments</comments>
		<pubDate>Sat, 14 Nov 2009 04:14:13 +0000</pubDate>
		<dc:creator>jarodwang</dc:creator>
				<category><![CDATA[APEX]]></category>

		<guid isPermaLink="false">http://www.jarodwang.cn/?p=310</guid>
		<description><![CDATA[最近打算写一个给小组内部成员使用的 Web 应用，作为一个不太精通 Web 编程的 Oracle 员工来说，Oracle Application Express (Oracle APEX) 是一个不错的选择，而且 Oracle 自己的许多内部和外部网站也都是用它来开发的。
Oracle APEX，以前称为 HTML DB，是一个集成在 Oracle 数据库中的快速 Web 应用开发工具。“集成在 Oracle 数据库中”是 Oracle APEX 的一个非常重要的特点，它意味着只要是安装了 Oracle 数据库，那么你就拥有了使用 Oracle APEX 开发 Web 应用的充分条件（当然了，你还需要一个浏览器来作为客户端）。另外，Oracle APEX 是 Oracle 数据库的一个默认组件，那么“它的生命周期完全和数据库等同，因而可以保证时间上的投入不会很快过时。此外，对于很多非 IT 企业而言，几乎可以完全摆脱对第三方 Web 应用开发商的依赖。默认的 Theme 已经可以满足绝大部分需求，只需要少量的修改，即可媲美专业网站。不论从员工价值提升，还是企业管理成本上说，都非常有益。”
稍微了解一下 Oracle APEX 的架构就可以知道，它与 Oracle 数据库的结合之紧密。原来所有的 Web 页面都是通过 Oracle APEX 引擎读取和渲染存储在数据库表中的数据而来。而当你建立或者扩展一个应用时，Oracle APEX 则将建立或者修改相应的元数据到数据库表中，而当应用运行时，Oracle [...]]]></description>
			<content:encoded><![CDATA[<p>最近打算写一个给小组内部成员使用的 Web 应用，作为一个不太精通 Web 编程的 Oracle 员工来说，<a href="http://www.oracle.com/technology/products/database/application_express/index.html" target="_blank">Oracle Application Express</a><span> </span>(Oracle APEX) 是一个不错的选择，而且 Oracle 自己的许多内部和外部网站也都是用它来开发的。</p>
<p>Oracle APEX，以前称为 HTML DB，是一个集成在 Oracle 数据库中的快速 Web 应用开发工具。“集成在 Oracle 数据库中”是 Oracle APEX 的一个非常重要的特点，它意味着只要是安装了 Oracle 数据库，那么你就拥有了使用 Oracle APEX 开发 Web 应用的充分条件（当然了，你还需要一个浏览器来作为客户端）。另外，Oracle APEX 是 Oracle 数据库的一个默认组件，那么<a href="http://www.orafans.org/archives/432" target="_blank">“<span id="expand_article_112721737">它的生命周期完全和数据库等同，因而可以保证时间上的投入不会很快过时。此外，对于很多非 IT 企业而言，几乎可以完全摆脱对第三方 Web 应用开发商的依赖。默认的 Theme 已经可以满足绝大部分需求，只需要少量的修改，即可媲美专业网站。不论从员工价值提升，还是企业管理成本上说，都非常有益。”</span></a></p>
<p><span>稍微了解一下 Oracle APEX 的架构就可以知道，它与 Oracle 数据库的结合之紧密。原来所有的 Web 页面都是通过 Oracle APEX 引擎读取和渲染存储在数据库表中的数据而来。而当你建立或者扩展一个应用时，Oracle APEX 则将建立或者修改相应的元数据到数据库表中，而当应用运行时，Oracle APEX 又将负责读取元数据和显示。令人惊讶的是，甚至连 Oracle APEX 自身也不过是由数据库中的 215+ 的表和 200+ 的 PL/SQL 对象所组成。</span></p>
<p><span>而由 Oracle APEX 的架构，我们也不难想象，为什么使用 Oracle APEX 来开发 Web 应用程序，所需的只是基本的 HTML、Javascript 和 SQL、PL/SQL 知识，由此也可见 Oracle APEX 的学习门槛是非常低的。</span></p>
<p><span>参考（英文）：</span></p>
<p><a href="http://www.oracle.com/technology/products/database/application_express/html/what_is_apex.html" target="_blank">What is Oracle Application Express?</a></p>
<p><a href="http://www.oracle.com/technology/documentation/apex.html" target="_blank">Oracle Application Express 文档</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.jarodwang.cn/2009/11/14/intro-to-oracle-apex/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Thoughts on Software Freedom Day 2009 in Shenzhen</title>
		<link>http://www.jarodwang.cn/2009/09/20/thoughts-on-software-freedom-day-2009-in-shenzhen/</link>
		<comments>http://www.jarodwang.cn/2009/09/20/thoughts-on-software-freedom-day-2009-in-shenzhen/#comments</comments>
		<pubDate>Sun, 20 Sep 2009 02:38:08 +0000</pubDate>
		<dc:creator>jarodwang</dc:creator>
				<category><![CDATA[Blog]]></category>

		<guid isPermaLink="false">http://www.jarodwang.cn/?p=304</guid>
		<description><![CDATA[昨天下午顶着 35 度的深圳高温，去了深圳大学学生活动中心参加了 SFD 2009 在深圳的活动。昨天的活动由于地点临时改到了深圳大学，结果主办单位就变成了深圳大学 Java 协会，他们还把这次活动顺便变成了他们协会的招新。（现在才成立类似的协会是不是晚了点？）另外也使得这次活动的大学味很浓。（开场致辞的是计算机学院的团委···）
这次活动一共安排了 4 个主题演讲：
1. 深圳大学的 Sun 校园大使方圆同学讲 JavaFX
JavaFX 是 Sun 在 2007 年（有点晚？）推出的用于建立 RIA 的产品和技术，同类的技术包括了 Adobe Flash (Flex?) 和 Microsoft Silverlight。这个题目对在场的很多人来说可能很陌生吧，没什么反响，而且方同学的 ppt 写得太深入细节了，有不少的大段代码。
2. 清华大学的沈彬彬同学讲他自己开发的“哼唱搜索系统”
这个比较厉害，而且还是沈同学大二时的作品，不得了。
3. SZLUG 代表张乐讲 Novell AlacrityVM
话说 r0bertz 这么快就开始给新东家打广告了，可谓是非常敬业。不过恕我直言，Novell 作为一家传统的领先 Linux 厂商，现在才刚刚开始自家的 VM 产品，脚步是不是有点太落后了？咱们 Oracle 的 OVM 可都已经发布了 2.1.5 版本了  
不过 AlacrityVM 和 RHEL 5u4 一样也是基于 KVM [...]]]></description>
			<content:encoded><![CDATA[<p>昨天下午顶着 35 度的深圳高温，去了深圳大学学生活动中心参加了 <a href="http://www.softwarefreedomday.org/" target="_blank">SFD</a> 2009 在深圳的活动。昨天的活动由于地点临时改到了深圳大学，结果主办单位就变成了深圳大学 Java 协会，他们还把这次活动顺便变成了他们协会的招新。（现在才成立类似的协会是不是晚了点？）另外也使得这次活动的大学味很浓。（开场致辞的是计算机学院的团委···）</p>
<p>这次活动一共安排了 4 个主题演讲：</p>
<p>1. 深圳大学的 Sun 校园大使方圆同学讲 <a href="http://javafx.com/" target="_blank">JavaFX</a></p>
<p>JavaFX 是 Sun 在 2007 年（有点晚？）推出的用于建立 <a href="http://en.wikipedia.org/wiki/Rich_Internet_application" target="_blank">RIA</a> 的产品和技术，同类的技术包括了 Adobe Flash (Flex?) 和 Microsoft Silverlight。这个题目对在场的很多人来说可能很陌生吧，没什么反响，而且方同学的 ppt 写得太深入细节了，有不少的大段代码。</p>
<p>2. 清华大学的沈彬彬同学讲他自己开发的“哼唱搜索系统”</p>
<p>这个比较厉害，而且还是沈同学大二时的作品，不得了。</p>
<p>3. SZLUG 代表张乐讲 Novell <a href="http://alacrityvm.sourceforge.net/" target="_blank">AlacrityVM</a></p>
<p>话说 r0bertz 这么快就开始给新东家打广告了，可谓是非常敬业。不过恕我直言，Novell 作为一家传统的领先 Linux 厂商，现在才刚刚开始自家的 VM 产品，脚步是不是有点太落后了？咱们 Oracle 的 <a href="http://www.oracle.com/us/technologies/virtualization/" target="_blank">OVM</a> 可都已经发布了 2.1.5 版本了 <img src='http://www.jarodwang.cn/wordpress/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' /> </p>
<p>不过 AlacrityVM 和 RHEL 5u4 一样也是基于 <a href="http://www.linux-kvm.org/" target="_blank">KVM</a> 的，而不是 <a href="http://www.xen.org/" target="_blank">Xen</a>，这会是将来的一个趋势吗？让我们拭目以待。</p>
<p>另外值得一提的是 Sun 的虚拟化技术 <a href="http://en.wikipedia.org/wiki/Solaris_Containers" target="_blank">Solaris Containers</a> 也已经很成熟了。</p>
<p>4. SZLUG 代表张煌彬讲 <a href="http://www.iredmail.org/" target="_blank">iRedMail</a> 项目</p>
<p>Michael 同学的口才不错，不愧是 RHCE 的讲师出身，而且还挺幽默。相信这个项目正是他在亲身经历了以往架设邮件服务器的痛苦之后而产生的吧，而很多其它开源软件项目的产生也是基于这样一个出发点。这个不禁让我想起了 <a href="http://en.wikipedia.org/wiki/Larry_Wall" target="_blank">Larry Wall</a> 所总结的程序员的三大优点。</p>
<p>以上就是这次 SFD 2009 Shenzhen 的主要内容了，还是挺充实的。最后还拿了张 <a href="http://www.opensolaris.org/" target="_blank">OpenSolaris</a> 的安装盘回来，有空了研究研究。</p>
<p>PS: 说起来自己都还没有在 <a href="http://szlug.org/" target="_blank">SZLUG</a> 做过类似的演讲，实在是有些惭愧，不过我不知道大家对 <a href="http://www.oracle.com/database/rac_home.html" target="_blank">RAC</a> 是否有兴趣，另外这样的以专有软件系统为题目的话题放在 LUG 的聚会上来讲会不会遭到排斥？</p>
]]></content:encoded>
			<wfw:commentRss>http://www.jarodwang.cn/2009/09/20/thoughts-on-software-freedom-day-2009-in-shenzhen/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Gentoo Linux Installation 3</title>
		<link>http://www.jarodwang.cn/2009/08/09/gentoo-linux-installation-3/</link>
		<comments>http://www.jarodwang.cn/2009/08/09/gentoo-linux-installation-3/#comments</comments>
		<pubDate>Sun, 09 Aug 2009 14:14:15 +0000</pubDate>
		<dc:creator>jarodwang</dc:creator>
				<category><![CDATA[Linux]]></category>

		<guid isPermaLink="false">http://www.jarodwang.cn/?p=299</guid>
		<description><![CDATA[自从上次之后，有大半年没有折腾 Gentoo 了，这个周末又研究了一下，在此小结一下。
1. 学会了如何使用别的 Linux 系统或者是 LiveCD 来安装 Gentoo。其实很简单，等机器从 Linux 系统或者 LiveCD 启动之后，挂载相应的硬盘分区到 /mnt/gentoo， chroot 过去，接着就可以按照官方的安装文档走下去了。
2. 之前我都是 emerge gnome 的，但是感觉装了很多不想要的软件，比如 evolution 这家伙（我平时都用的是 thunderbird），所以这次安装我选择了 emerge gnome-light，大概可以少安装 100 多个包。至于 KDE 嘛，我还是不敢造次，看官方文档上的 emerge kde-meta 所需要的时间几乎是 emerge gnome 的 2 倍，太耗费时间了。
3. 一定要在 emerge 桌面系统之前，先 emerge &#8211;sync &#38;&#38; emerge -avuDN world 一次，不然在安装桌面系统的过程之中会遇到一些被阻挡的包。
4. 每次 emerge world 之后记得要 revdep-rebuild 一下。
5. 在遇到和 Python [...]]]></description>
			<content:encoded><![CDATA[<p>自从上次之后，有大半年没有折腾 Gentoo 了，这个周末又研究了一下，在此小结一下。</p>
<p>1. 学会了如何使用别的 Linux 系统或者是 LiveCD 来安装 Gentoo。其实很简单，等机器从 Linux 系统或者 LiveCD 启动之后，挂载相应的硬盘分区到 /mnt/gentoo， chroot 过去，接着就可以按照官方的安装文档走下去了。</p>
<p>2. 之前我都是 emerge gnome 的，但是感觉装了很多不想要的软件，比如 evolution 这家伙（我平时都用的是 thunderbird），所以这次安装我选择了 emerge gnome-light，大概可以少安装 100 多个包。至于 KDE 嘛，我还是不敢造次，看官方文档上的 emerge kde-meta 所需要的时间几乎是 emerge gnome 的 2 倍，太耗费时间了。</p>
<p>3. 一定要在 emerge 桌面系统之前，先 emerge &#8211;sync &amp;&amp; emerge -avuDN world 一次，不然在安装桌面系统的过程之中会遇到一些被阻挡的包。</p>
<p>4. 每次 emerge world 之后记得要 revdep-rebuild 一下。</p>
<p>5. 在遇到和 Python 有关的包的问题时（比如我在 emerge gnome-light 的过程中遇到了 pycairo 的错误），可以试试先运行一下 python-updater，问题可能就此解决了。</p>
<p>6. 这次用了最新的 stage3 和 portage 快照，但在 emerge vnc 的时候遭遇了 <a href="http://bugs.gentoo.org/show_bug.cgi?id=273087" target="_blank">Gentoo Bug 273087</a>，最后只得改用了 tightvnc 提供的 vncserver （需要设置 USE 标记 server）。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.jarodwang.cn/2009/08/09/gentoo-linux-installation-3/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>2 Google Quick Tips</title>
		<link>http://www.jarodwang.cn/2009/07/29/2-google-quick-tips/</link>
		<comments>http://www.jarodwang.cn/2009/07/29/2-google-quick-tips/#comments</comments>
		<pubDate>Wed, 29 Jul 2009 14:53:04 +0000</pubDate>
		<dc:creator>jarodwang</dc:creator>
				<category><![CDATA[Blog]]></category>

		<guid isPermaLink="false">http://www.jarodwang.cn/?p=297</guid>
		<description><![CDATA[晚上在读李笑来老师的《把时间当作朋友》，发现自己也从来没有学习过在 Google 中使用通配符进行搜索，于是乎搜索了一下，找到了如下 2 个有用的 tips，记录一下：
1. Wildcards
http://google.about.com/od/googlepowersearches/qt/wildcardqt.htm
2. I&#8217;m Feeling Lucky
http://google.about.com/od/searchingtheweb/qt/imfeelingluckyq.htm
]]></description>
			<content:encoded><![CDATA[<p>晚上在读<a href="http://www.lixiaolai.com/" target="_blank">李笑来</a>老师的<a href="http://www.douban.com/subject/3609132/" target="_blank">《把时间当作朋友》</a>，发现自己也从来没有学习过在 Google 中使用通配符进行搜索，于是乎搜索了一下，找到了如下 2 个有用的 tips，记录一下：</p>
<p>1. Wildcards</p>
<p><a href="http://google.about.com/od/googlepowersearches/qt/wildcardqt.htm" target="_blank">http://google.about.com/od/googlepowersearches/qt/wildcardqt.htm</a></p>
<p>2. I&#8217;m Feeling Lucky</p>
<p><a href="http://google.about.com/od/searchingtheweb/qt/imfeelingluckyq.htm" target="_blank">http://google.about.com/od/searchingtheweb/qt/imfeelingluckyq.htm</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.jarodwang.cn/2009/07/29/2-google-quick-tips/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Words in News 1</title>
		<link>http://www.jarodwang.cn/2009/07/20/words-in-news-1/</link>
		<comments>http://www.jarodwang.cn/2009/07/20/words-in-news-1/#comments</comments>
		<pubDate>Mon, 20 Jul 2009 14:33:05 +0000</pubDate>
		<dc:creator>jarodwang</dc:creator>
				<category><![CDATA[Blog]]></category>

		<guid isPermaLink="false">http://www.jarodwang.cn/?p=290</guid>
		<description><![CDATA[graft 贿赂
dereliction of duty 失职
iron-ore talk
Rio Tinto
espionage 间谍活动
Gary Locke 骆家辉
retaliate 报复
a raft of 大量
apparel 服装
shortfall 赤字
impasse 僵局
gimmick 花招
IOU
ire 愤怒
顺便自勉一下，希望能每周坚持阅读 WSJ。
]]></description>
			<content:encoded><![CDATA[<p>graft 贿赂</p>
<p>dereliction of duty 失职</p>
<p>iron-ore talk</p>
<p>Rio Tinto</p>
<p>espionage 间谍活动</p>
<p>Gary Locke 骆家辉</p>
<p>retaliate 报复</p>
<p>a raft of 大量</p>
<p>apparel 服装</p>
<p>shortfall 赤字</p>
<p>impasse 僵局</p>
<p>gimmick 花招</p>
<p>IOU</p>
<p>ire 愤怒</p>
<p>顺便自勉一下，希望能每周坚持阅读 WSJ。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.jarodwang.cn/2009/07/20/words-in-news-1/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Macau 2 Day Tour</title>
		<link>http://www.jarodwang.cn/2009/07/13/macau-2-day-tour/</link>
		<comments>http://www.jarodwang.cn/2009/07/13/macau-2-day-tour/#comments</comments>
		<pubDate>Mon, 13 Jul 2009 12:18:21 +0000</pubDate>
		<dc:creator>jarodwang</dc:creator>
				<category><![CDATA[Blog]]></category>

		<guid isPermaLink="false">http://www.jarodwang.cn/?p=275</guid>
		<description><![CDATA[行程
第一天：横琴口岸 &#62; 新世纪酒店 &#62; 妈阁庙 &#62; 海事博物馆 &#62; 内港餐厅 &#62; 港务局大楼 &#62; 亚婆井前地 &#62; St. Lawerance 教堂 &#62; 民政总署 &#62; 议事亭前地 &#62; 义顺牛奶公司 &#62; 玫瑰堂 &#62; 大三巴 &#62; 大炮台 &#62; 郑家大屋 &#62; 澳门邮政局 &#62; 新葡京
第二天：黑沙海滩 &#62; 官也街 &#62; 诚昌饭店 &#62; 威尼斯人度假村 &#62; 横琴口岸
有用的网站
澳门特别行政区政府旅游局 http://www.macautourism.gov.mo/
游澳门 http://www.youaomen.com/
澳门公共汽车有限公司 http://www.tcm.com.mo/
澳门新福利公共汽车有限公司 http://www.transmac.com.mo/
澳门通 http://www.macaupass.com.mo/
]]></description>
			<content:encoded><![CDATA[<p>行程</p>
<p>第一天：横琴口岸 &gt; 新世纪酒店 &gt; 妈阁庙 &gt; 海事博物馆 &gt; 内港餐厅 &gt; 港务局大楼 &gt; 亚婆井前地 &gt; St. Lawerance 教堂 &gt; 民政总署 &gt; 议事亭前地 &gt; 义顺牛奶公司 &gt; 玫瑰堂 &gt; 大三巴 &gt; 大炮台 &gt; 郑家大屋 &gt; 澳门邮政局 &gt; 新葡京</p>
<p>第二天：黑沙海滩 &gt; 官也街 &gt; 诚昌饭店 &gt; 威尼斯人度假村 &gt; 横琴口岸</p>
<p>有用的网站</p>
<p>澳门特别行政区政府旅游局 <a href="http://www.macautourism.gov.mo/" target="_blank">http://www.macautourism.gov.mo/</a></p>
<p>游澳门 <a href="http://www.youaomen.com/" target="_blank">http://www.youaomen.com/</a></p>
<p>澳门公共汽车有限公司 <a href="http://www.tcm.com.mo/" target="_blank">http://www.tcm.com.mo/</a></p>
<p>澳门新福利公共汽车有限公司 <a href="http://www.transmac.com.mo/" target="_blank">http://www.transmac.com.mo/</a></p>
<p>澳门通 <a style="text-decoration: none;" href="http://www.macaupass.com.mo/" target="_blank">http://www.macaupass.com.mo/</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.jarodwang.cn/2009/07/13/macau-2-day-tour/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>3 Tips in Perl Programming</title>
		<link>http://www.jarodwang.cn/2009/05/09/three-tips-in-perl-programming/</link>
		<comments>http://www.jarodwang.cn/2009/05/09/three-tips-in-perl-programming/#comments</comments>
		<pubDate>Sat, 09 May 2009 09:20:31 +0000</pubDate>
		<dc:creator>jarodwang</dc:creator>
				<category><![CDATA[Perl]]></category>

		<guid isPermaLink="false">http://www.jarodwang.cn/?p=232</guid>
		<description><![CDATA[1. 获取当前时间
Perl 有一个函数 localtime 可以用来实现这个功能。在具体使用的过程中需要注意的是，它返回的月份数值是以 0 为基准的，而年份数值是在减掉 1900 之后的值，所以很多时候都需要进行相应的调整：

?View Code PERL# construct log file name
my &#40;$sec, $min, $hour, $day, $month, $year&#41; = &#40;localtime&#41; &#91;0, 1, 2, 3, 4, 5&#93;;
$month = $month + 1;
$year = $year + 1900;
&#160;
my $local_node;
$local_node = qx&#123;hostname&#125;;
chomp $local_node;
&#160;
my $filename = sprintf&#40;&#34;%04d%02d%02d%02d%02d%02d&#34;, $year, $month, $day, $hour, $min, $sec&#41;;
$filename = &#34;kill_crsd_&#34; . $local_node . [...]]]></description>
			<content:encoded><![CDATA[<p>1. 获取当前时间<br />
Perl 有一个函数 localtime 可以用来实现这个功能。在具体使用的过程中需要注意的是，它返回的月份数值是以 0 为基准的，而年份数值是在减掉 1900 之后的值，所以很多时候都需要进行相应的调整：</p>

<div class="wp_codebox_msgheader"><span class="right"><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p232code4'); return false;">View Code</a> PERL</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table width="100%" ><tr id="p2324"><td class="code" id="p232code4"><pre class="perl" style="font-family:monospace;"><span style="color: #666666; font-style: italic;"># construct log file name</span>
<span style="color: #b1b100;">my</span> <span style="color: #009900;">&#40;</span><span style="color: #0000ff;">$sec</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">$min</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">$hour</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">$day</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">$month</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">$year</span><span style="color: #009900;">&#41;</span> <span style="color: #339933;">=</span> <span style="color: #009900;">&#40;</span><span style="color: #000066;">localtime</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#91;</span><span style="color: #cc66cc;">0</span><span style="color: #339933;">,</span> <span style="color: #cc66cc;">1</span><span style="color: #339933;">,</span> <span style="color: #cc66cc;">2</span><span style="color: #339933;">,</span> <span style="color: #cc66cc;">3</span><span style="color: #339933;">,</span> <span style="color: #cc66cc;">4</span><span style="color: #339933;">,</span> <span style="color: #cc66cc;">5</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">;</span>
<span style="color: #0000ff;">$month</span> <span style="color: #339933;">=</span> <span style="color: #0000ff;">$month</span> <span style="color: #339933;">+</span> <span style="color: #cc66cc;">1</span><span style="color: #339933;">;</span>
<span style="color: #0000ff;">$year</span> <span style="color: #339933;">=</span> <span style="color: #0000ff;">$year</span> <span style="color: #339933;">+</span> <span style="color: #cc66cc;">1900</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #b1b100;">my</span> <span style="color: #0000ff;">$local_node</span><span style="color: #339933;">;</span>
<span style="color: #0000ff;">$local_node</span> <span style="color: #339933;">=</span> <span style="color: #000066;">qx</span><span style="color: #009900;">&#123;</span>hostname<span style="color: #009900;">&#125;</span><span style="color: #339933;">;</span>
<span style="color: #000066;">chomp</span> <span style="color: #0000ff;">$local_node</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #b1b100;">my</span> <span style="color: #0000ff;">$filename</span> <span style="color: #339933;">=</span> <span style="color: #000066;">sprintf</span><span style="color: #009900;">&#40;</span><span style="color: #ff0000;">&quot;%04d%02d%02d%02d%02d%02d&quot;</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">$year</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">$month</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">$day</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">$hour</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">$min</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">$sec</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #0000ff;">$filename</span> <span style="color: #339933;">=</span> <span style="color: #ff0000;">&quot;kill_crsd_&quot;</span> . <span style="color: #0000ff;">$local_node</span> . <span style="color: #ff0000;">&quot;_&quot;</span> . <span style="color: #0000ff;">$filename</span> . <span style="color: #ff0000;">&quot;.log&quot;</span><span style="color: #339933;">;</span>
<span style="color: #b1b100;">my</span> <span style="color: #0000ff;">$KILL_CRSD_LOG</span> <span style="color: #339933;">=</span> catfile<span style="color: #009900;">&#40;</span>curdir<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">$filename</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></td></tr></table></div>

<p>2. 一个写日志文件的函数<br />
经常跑一些小脚本去循环做一些破坏性测试，由于有些操作具有重启节点的潜在可能性，所以这样一个需求也就随之而来。下面就是一个我用来写日志文件的函数的实现：</p>

<div class="wp_codebox_msgheader"><span class="right"><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p232code5'); return false;">View Code</a> PERL</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table width="100%" ><tr id="p2325"><td class="code" id="p232code5"><pre class="perl" style="font-family:monospace;"><span style="color: #666666; font-style: italic;">#</span>
<span style="color: #666666; font-style: italic;"># Write trace file</span>
<span style="color: #666666; font-style: italic;">#</span>
<span style="color: #666666; font-style: italic;"># trace(@content)</span>
<span style="color: #666666; font-style: italic;">#</span>
<span style="color: #000000; font-weight: bold;">sub</span> trace<span style="color: #009900;">&#40;</span><span style="color: #339933;">@</span><span style="color: #009900;">&#41;</span>
<span style="color: #009900;">&#123;</span>
    <span style="color: #b1b100;">my</span> <span style="color: #009900;">&#40;</span><span style="color: #0000ff;">$sec</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">$min</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">$hour</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">$day</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">$month</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">$year</span><span style="color: #009900;">&#41;</span> <span style="color: #339933;">=</span> <span style="color: #009900;">&#40;</span><span style="color: #000066;">localtime</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#91;</span><span style="color: #cc66cc;">0</span><span style="color: #339933;">,</span> <span style="color: #cc66cc;">1</span><span style="color: #339933;">,</span> <span style="color: #cc66cc;">2</span><span style="color: #339933;">,</span> <span style="color: #cc66cc;">3</span><span style="color: #339933;">,</span> <span style="color: #cc66cc;">4</span><span style="color: #339933;">,</span> <span style="color: #cc66cc;">5</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">;</span>
    <span style="color: #0000ff;">$month</span> <span style="color: #339933;">=</span> <span style="color: #0000ff;">$month</span> <span style="color: #339933;">+</span> <span style="color: #cc66cc;">1</span><span style="color: #339933;">;</span>
    <span style="color: #0000ff;">$year</span> <span style="color: #339933;">=</span> <span style="color: #0000ff;">$year</span> <span style="color: #339933;">+</span> <span style="color: #cc66cc;">1900</span><span style="color: #339933;">;</span>
&nbsp;
    <span style="color: #000066;">open</span><span style="color: #009900;">&#40;</span>LOGFILE<span style="color: #339933;">,</span> <span style="color: #ff0000;">&quot;&gt;&gt;$KILL_CRSD_LOG&quot;</span><span style="color: #009900;">&#41;</span> <span style="color: #b1b100;">or</span> <span style="color: #000066;">die</span> <span style="color: #ff0000;">&quot;ERROR: Can't open $KILL_CRSD_LOG: $!&quot;</span><span style="color: #339933;">;</span>
    <span style="color: #000066;">printf</span> LOGFILE <span style="color: #ff0000;">&quot;%04d-%02d-%02d %02d:%02d:%02d: @_<span style="color: #000099; font-weight: bold;">\n</span>&quot;</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">$year</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">$month</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">$day</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">$hour</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">$min</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">$sec</span><span style="color: #339933;">;</span>
    <span style="color: #000066;">close</span> <span style="color: #009900;">&#40;</span>LOGFILE<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span></pre></td></tr></table></div>

<p>有了这样一个函数之后，可以在进行某个操作之前调用它来记录一下，这样就不怕因为节点重启而丢失脚本的运行信息了。</p>
<p>3. 高于秒级精度的休眠<br />
要让脚本休眠一段时间，我常用的是 Perl 中的 sleep 函数，但是遇到需要进行高于秒级精度的休眠时，这个函数就无能为力了。这时可以使用 select 操作符来实现：</p>

<div class="wp_codebox_msgheader"><span class="right"><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p232code6'); return false;">View Code</a> PERL</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table width="100%" ><tr id="p2326"><td class="code" id="p232code6"><pre class="perl" style="font-family:monospace;"><span style="color: #000066;">select</span> <span style="color: #000066;">undef</span><span style="color: #339933;">,</span> <span style="color: #000066;">undef</span><span style="color: #339933;">,</span> <span style="color: #000066;">undef</span><span style="color: #339933;">,</span> <span style="color: #cc66cc;">4.75</span><span style="color: #339933;">;</span></pre></td></tr></table></div>

<p>上面的语句将使你的脚本休眠 4.75 秒。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.jarodwang.cn/2009/05/09/three-tips-in-perl-programming/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Learning IPMI</title>
		<link>http://www.jarodwang.cn/2009/01/19/learning-ipmi/</link>
		<comments>http://www.jarodwang.cn/2009/01/19/learning-ipmi/#comments</comments>
		<pubDate>Mon, 19 Jan 2009 12:47:07 +0000</pubDate>
		<dc:creator>jarodwang</dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[IPMI]]></category>

		<guid isPermaLink="false">http://www.jarodwang.cn/2009/01/19/learning-ipmi/</guid>
		<description><![CDATA[IPMI 是 Intelligent Platform Management Interface （智能平台管理接口）的缩写。
IPMI 规格说明定义了一组可以被系统管理员用来监测和管理计算机系统的通用接口。
IPMI 独立运作于操作系统之外，并且允许管理员在没有操作系统或者系统管理软件存在的情况下远程管理计算机系统，甚至在系统关机的状态下也可以（但是系统需要接上电源）。
参考链接：
http://en.wikipedia.org/wiki/IPMI
http://en.wikipedia.org/wiki/Baseboard_Management_Controller
http://www.intel.com/design/servers/ipmi/
http://sourceforge.net/projects/openipmi/
http://sourceforge.net/projects/ipmitool/
http://sourceforge.net/projects/ipmiutil/
]]></description>
			<content:encoded><![CDATA[<p>IPMI 是 Intelligent Platform Management Interface （智能平台管理接口）的缩写。<br />
IPMI 规格说明定义了一组可以被系统管理员用来监测和管理计算机系统的通用接口。<br />
IPMI 独立运作于操作系统之外，并且允许管理员在没有操作系统或者系统管理软件存在的情况下远程管理计算机系统，甚至在系统关机的状态下也可以（但是系统需要接上电源）。</p>
<p>参考链接：<br />
<a href="http://en.wikipedia.org/wiki/IPMI">http://en.wikipedia.org/wiki/IPMI</a><br />
<a href="http://en.wikipedia.org/wiki/Baseboard_Management_Controller">http://en.wikipedia.org/wiki/Baseboard_Management_Controller</a><br />
<a href="http://www.intel.com/design/servers/ipmi/">http://www.intel.com/design/servers/ipmi/</a><br />
<a href="http://sourceforge.net/projects/openipmi/">http://sourceforge.net/projects/openipmi/</a><br />
<a href="http://sourceforge.net/projects/ipmitool/">http://sourceforge.net/projects/ipmitool/</a><br />
<a href="http://sourceforge.net/projects/ipmiutil/">http://sourceforge.net/projects/ipmiutil/</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.jarodwang.cn/2009/01/19/learning-ipmi/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Gentoo Linux installation 2</title>
		<link>http://www.jarodwang.cn/2009/01/09/gentoo-linux-installation-2/</link>
		<comments>http://www.jarodwang.cn/2009/01/09/gentoo-linux-installation-2/#comments</comments>
		<pubDate>Fri, 09 Jan 2009 14:46:11 +0000</pubDate>
		<dc:creator>jarodwang</dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[gentoo]]></category>

		<guid isPermaLink="false">http://www.jarodwang.cn/2009/01/09/gentoo-linux-installation-2/</guid>
		<description><![CDATA[昨天由于晚上临时加班，没有来得及安装 GNOME，但也不是没有折腾 Gentoo，而是参照 LinuxSir 论坛中的安装 Gentoo 疑难解答先升级了一次基本系统：
emerge &#8211;sync
emerge -avuDN world
man emerge 可以看到 &#8211;sync 选项用来启动一次 Portage 树的更新，而更新所使用的 rsync.gentoo.org 镜像是之前安装过程中使用 mirrorselect 来进行选择和设定的。另外，这里还涉及到了为 rsync 设置代理的问题，man rsync 会告诉你设置 RSYNC_PROXY 环境变量即可，每次都 export 会比较麻烦，于是我就把它加到了 /etc/make.conf 中。
剩下的 -a, -v, -u, -D 和 -N 选项的具体意义看看 man emerge 也都一目了然了。最后的 world 是 2 大软件包集合之一，另一个是 system。
今天早上，什么文档都还没有看，就先直接依葫芦画瓢的来了个 emerge -avuDN gnome （事实证明这样是会出问题的），开始 GNOME 安装的漫漫长路，260+ 的包需要全新安装。
结果第一个问题出现了，在安装 gtk+ 时报错了，错误信息告诉我是因为 cairo [...]]]></description>
			<content:encoded><![CDATA[<p>昨天由于晚上临时加班，没有来得及安装 GNOME，但也不是没有折腾 Gentoo，而是参照 LinuxSir 论坛中的<a href="http://www.linuxsir.org/bbs/thread320006.html" target="_blank">安装 Gentoo 疑难解答</a>先升级了一次基本系统：</p>
<p>emerge &#8211;sync<br />
emerge -avuDN world</p>
<p>man emerge 可以看到 &#8211;sync 选项用来启动一次 Portage 树的更新，而更新所使用的 rsync.gentoo.org 镜像是之前安装过程中使用 mirrorselect 来进行选择和设定的。另外，这里还涉及到了为 rsync 设置代理的问题，man rsync 会告诉你设置 RSYNC_PROXY 环境变量即可，每次都 export 会比较麻烦，于是我就把它加到了 /etc/make.conf 中。</p>
<p>剩下的 -a, -v, -u, -D 和 -N 选项的具体意义看看 man emerge 也都一目了然了。最后的 world 是 2 大软件包集合之一，另一个是 system。</p>
<p>今天早上，什么文档都还没有看，就先直接依葫芦画瓢的来了个 emerge -avuDN gnome （事实证明这样是会出问题的），开始 GNOME 安装的漫漫长路，260+ 的包需要全新安装。</p>
<p>结果第一个问题出现了，在安装 gtk+ 时报错了，错误信息告诉我是因为 <a href="http://cairographics.org/" target="_blank">cairo</a> 需要在 USE 标记中设置 X 标记，把 X 加到 /etc/make.conf 的 USE 中去，然后再次 emerge -avuDN gnome 就过去了。</p>
<p>后来又遇到一个错误，又需要添加了 gtk 到 USE 中，看来这样下去不是办法，只好求助于 Google，结果就搜到了 <a href="http://www.gentoo.org/doc/zh_cn/gnome-config.xml" target="_blank">GNOME 配置指南</a>这篇官方的中文文档，终于有了个 USE 的范例：</p>
<p>USE=&#8221;-qt3 -qt4 -arts -kde X dbus gtk gnome hal <span style="color: #ff0000;">avahi</span>&#8221;</p>
<p>只是其中的 avahi 在后来安装 cups 时又遇到了问题，被我拿掉了，其它都保留了下来。</p>
<p>后面的步骤就完全照着这篇文档来了，就此搞定了 GNOME 的安装。</p>
<p>值得一提的是文档中为 gnome-base/gnome-session 这个包单独设置 branding 标记的方法：</p>
<p>echo &#8220;gnome-base/gnome-session branding&#8221; &gt;&gt; /etc/portage/package.use</p>
<p>在后来安装 net-misc/vnc 时又被我依葫芦画瓢了一次：</p>
<p>echo &#8220;net-misc/vnc server&#8221; &gt;&gt; /etc/portage/package.use</p>
<p>只有设置了 server 标记，vncserver 才会被包括在安装中，否则默认情况下 emerge vnc 只会生成 vncviewer。</p>
<p>最后，详细的中文 Portage 入门可以看<a href="http://www.gentoo.org/doc/zh_cn/handbook/handbook-x86.xml?part=2&amp;chap=1" target="_blank">这里</a>，中文 USE 标记使用可以看<a href="http://www.gentoo.org/doc/zh_cn/handbook/handbook-x86.xml?part=2&amp;chap=2" target="_blank">这里</a>。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.jarodwang.cn/2009/01/09/gentoo-linux-installation-2/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
