<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="http://feedproxy.google.com/~d/styles/rss2full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feedproxy.google.com/~d/styles/itemcontent.css"?><!-- generator="wordpress/2.3.2" --><rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:creativeCommons="http://backend.userland.com/creativeCommonsRssModule" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" version="2.0">

<channel>
	<title>Dada's Blog</title>
	<link>http://blog.urdada.net</link>
	<description>Just for fun</description>
	<pubDate>Mon, 17 Nov 2008 15:19:08 +0000</pubDate>
	<generator>http://wordpress.org/?v=2.3.2</generator>
	<language>en</language>
			<creativeCommons:license>http://creativecommons.org/licenses/by-nc-nd/2.0/</creativeCommons:license><image><link>http://creativecommons.org/licenses/by-nc-nd/2.0/</link><url>http://creativecommons.org/images/public/somerights20.gif</url><title>Some Rights Reserved</title></image><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" href="http://feedproxy.google.com/cdsheen" type="application/rss+xml" /><feedburner:emailServiceId>cdsheen</feedburner:emailServiceId><feedburner:feedburnerHostname>http://feedburner.google.com</feedburner:feedburnerHostname><feedburner:browserFriendly>This is an XML content feed. It is intended to be viewed in a newsreader or syndicated to another site, subject to copyright and fair use.</feedburner:browserFriendly><item>
		<title>Mantis Mail Gateway (perl script)</title>
		<link>http://feedproxy.google.com/~r/cdsheen/~3/VM4Jnthp5lo/</link>
		<comments>http://blog.urdada.net/2008/11/11/95/#comments</comments>
		<pubDate>Tue, 11 Nov 2008 15:09:26 +0000</pubDate>
		<dc:creator>dada</dc:creator>
		
		<category><![CDATA[軟體]]></category>

		<guid isPermaLink="false">http://blog.urdada.net/2008/11/11/95/</guid>
		<description><![CDATA[This is a simple Mantis Mail Gateway for mail-in tickets.
It can be used for alert management for monitoring system.
For installation, add the line below to /etc/aliases:
bug:   "&#124;/usr/local/bin/mantis-mail-gateway.pl  &#160; PROJECT &#160;  REPORTER"
and then run newaliases.
The incoming mail will be posted to a Mantis project named 'PROJECT' on behave of user 'REPORTER'. The [...]]]></description>
			<content:encoded><![CDATA[<p>This is a simple Mantis Mail Gateway for mail-in tickets.<br />
It can be used for alert management for monitoring system.</p>
<p>For installation, add the line below to /etc/aliases:</p>
<p><strong>bug:   "|/usr/local/bin/mantis-mail-gateway.pl  &nbsp; PROJECT &nbsp;  REPORTER"</strong></p>
<p>and then run newaliases.</p>
<p>The incoming mail will be posted to a Mantis project named 'PROJECT' on behave of user 'REPORTER'. The mail subject will become the bug summary and the mail content will become the bug description.</p>
<p>Note that this script does not understand MIME multipart encoding and may have problems on mail contents besides plain-ASCII encoding.</p>
<p>You are welcome to add more features.</p>
<p><img src=http://farm4.static.flickr.com/3286/3022458848_b690e23167.jpg /></p>
<p>mantis-mail-gateway.pl: (can be downloaded <a href=http://urdada.net/codings/mantis-mail-gateway.pl>here</a>)</p>

<div class="wp_syntax"><div class="code"><pre class="perl"><span style="color: #808080; font-style: italic;">#!/usr/bin/perl</span>
&nbsp;
<span style="color: #808080; font-style: italic;"># mantis-mail-gateway.pl</span>
&nbsp;
<span style="color: #808080; font-style: italic;"># Mantis Mail Gateway</span>
<span style="color: #808080; font-style: italic;"># Shen Cheng-Da (cdsheen AT gmail.com)</span>
<span style="color: #808080; font-style: italic;"># require DBI to connect MySQL database</span>
<span style="color: #808080; font-style: italic;"># http://blog.urdada.net/2008/11/11/95/</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">use</span> DBI;
<span style="color: #000000; font-weight: bold;">use</span> POSIX <span style="color: #000066;">qw</span><span style="color: #66cc66;">&#40;</span>strftime<span style="color: #66cc66;">&#41;</span>;
&nbsp;
<span style="color: #b1b100;">my</span> <span style="color: #0000ff;">$db_host</span>    = <span style="color: #ff0000;">'localhost'</span>;
<span style="color: #b1b100;">my</span> <span style="color: #0000ff;">$db_name</span>    = <span style="color: #ff0000;">'mantis'</span>;
<span style="color: #b1b100;">my</span> <span style="color: #0000ff;">$db_user</span>    = <span style="color: #ff0000;">'monitor'</span>;
<span style="color: #b1b100;">my</span> <span style="color: #0000ff;">$db_pass</span>    = <span style="color: #ff0000;">'monitorpass'</span>;
&nbsp;
<span style="color: #b1b100;">my</span> <span style="color: #0000ff;">$debug</span>      = <span style="color: #cc66cc;">0</span>;
&nbsp;
<span style="color: #b1b100;">my</span> <span style="color: #0000ff;">$db</span> = <span style="color: #ff0000;">&quot;dbi:mysql:dbname=${db_name};host=${db_host}&quot;</span>;
&nbsp;
<span style="color: #000066;">die</span> <span style="color: #ff0000;">&quot;Usage: $0 [project-name] [reporter]<span style="color: #000099; font-weight: bold;">\n</span>&quot;</span> <span style="color: #b1b100;">unless</span> <span style="color: #0000ff;">@ARGV</span> &gt; <span style="color: #cc66cc;">1</span>;
&nbsp;
<span style="color: #b1b100;">my</span> <span style="color: #0000ff;">$project_name</span>  = <span style="color: #0000ff;">$ARGV</span><span style="color: #66cc66;">&#91;</span><span style="color: #cc66cc;">0</span><span style="color: #66cc66;">&#93;</span>;
<span style="color: #b1b100;">my</span> <span style="color: #0000ff;">$reporter_name</span> = <span style="color: #0000ff;">$ARGV</span><span style="color: #66cc66;">&#91;</span><span style="color: #cc66cc;">1</span><span style="color: #66cc66;">&#93;</span>;
&nbsp;
<span style="color: #b1b100;">my</span> <span style="color: #0000ff;">$dbh</span>;
<span style="color: #b1b100;">my</span> <span style="color: #0000ff;">$sql</span>;
<span style="color: #b1b100;">my</span> <span style="color: #0000ff;">$sth</span>;
<span style="color: #b1b100;">my</span> <span style="color: #0000ff;">$project</span>  = <span style="color: #cc66cc;">-1</span>;
<span style="color: #b1b100;">my</span> <span style="color: #0000ff;">$reporter</span> = <span style="color: #cc66cc;">-1</span>;
&nbsp;
<span style="color: #0000ff;">$dbh</span> = DBI-&gt;<span style="color: #006600;">connect</span><span style="color: #66cc66;">&#40;</span><span style="color: #0000ff;">$db</span>, <span style="color: #0000ff;">$db_user</span>, <span style="color: #0000ff;">$db_pass</span><span style="color: #66cc66;">&#41;</span>
        || <span style="color: #000066;">die</span> <span style="color: #ff0000;">'ERROR: '</span>.<span style="color: #0000ff;">$dbh</span>-&gt;<span style="color: #006600;">errstr</span>;
&nbsp;
<span style="color: #0000ff;">$sql</span> = <span style="color: #ff0000;">&quot;SELECT id,name FROM mantis_project_table
        WHERE name LIKE '$project_name'&quot;</span>;
&nbsp;
<span style="color: #0000ff;">$sth</span> = <span style="color: #0000ff;">$dbh</span>-&gt;<span style="color: #006600;">prepare</span><span style="color: #66cc66;">&#40;</span><span style="color: #0000ff;">$sql</span><span style="color: #66cc66;">&#41;</span> || <span style="color: #000066;">die</span> <span style="color: #ff0000;">'ERROR: '</span>.<span style="color: #0000ff;">$dbh</span>-&gt;<span style="color: #006600;">errstr</span>;
<span style="color: #0000ff;">$sth</span>-&gt;<span style="color: #006600;">execute</span><span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span> || <span style="color: #000066;">die</span> <span style="color: #ff0000;">'ERROR: '</span>.<span style="color: #0000ff;">$dbh</span>-&gt;<span style="color: #006600;">errstr</span>;
<span style="color: #b1b100;">while</span><span style="color: #66cc66;">&#40;</span> <span style="color: #0000ff;">@data</span> = <span style="color: #0000ff;">$sth</span>-&gt;<span style="color: #006600;">fetchrow_array</span><span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">&#123;</span>
        <span style="color: #0000ff;">$project</span> = <span style="color: #0000ff;">$data</span><span style="color: #66cc66;">&#91;</span><span style="color: #cc66cc;">0</span><span style="color: #66cc66;">&#93;</span>;
<span style="color: #66cc66;">&#125;</span>
<span style="color: #0000ff;">$sth</span>-&gt;<span style="color: #006600;">finish</span>;
&nbsp;
<span style="color: #000066;">die</span> <span style="color: #ff0000;">&quot;ERROR: project <span style="color: #000099; font-weight: bold;">\`</span>$project_name' does not exist<span style="color: #000099; font-weight: bold;">\n</span>&quot;</span> <span style="color: #b1b100;">unless</span> <span style="color: #0000ff;">$project</span> &gt; <span style="color: #cc66cc;">0</span>;
&nbsp;
<span style="color: #000066;">print</span> <span style="color: #ff0000;">&quot;project: $project_name ($project)<span style="color: #000099; font-weight: bold;">\n</span>&quot;</span> <span style="color: #b1b100;">if</span> <span style="color: #0000ff;">$debug</span>;
&nbsp;
<span style="color: #0000ff;">$sql</span> = <span style="color: #ff0000;">&quot;SELECT id,username FROM mantis_user_table
        WHERE username = '$reporter_name'&quot;</span>;
&nbsp;
<span style="color: #0000ff;">$sth</span> = <span style="color: #0000ff;">$dbh</span>-&gt;<span style="color: #006600;">prepare</span><span style="color: #66cc66;">&#40;</span><span style="color: #0000ff;">$sql</span><span style="color: #66cc66;">&#41;</span> || <span style="color: #000066;">die</span> <span style="color: #ff0000;">'ERROR: '</span>.<span style="color: #0000ff;">$dbh</span>-&gt;<span style="color: #006600;">errstr</span>;
<span style="color: #0000ff;">$sth</span>-&gt;<span style="color: #006600;">execute</span><span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span> || <span style="color: #000066;">die</span> <span style="color: #ff0000;">'ERROR: '</span>.<span style="color: #0000ff;">$dbh</span>-&gt;<span style="color: #006600;">errstr</span>;
<span style="color: #b1b100;">while</span><span style="color: #66cc66;">&#40;</span> <span style="color: #0000ff;">@data</span> = <span style="color: #0000ff;">$sth</span>-&gt;<span style="color: #006600;">fetchrow_array</span><span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">&#123;</span>
        <span style="color: #0000ff;">$reporter</span> = <span style="color: #0000ff;">$data</span><span style="color: #66cc66;">&#91;</span><span style="color: #cc66cc;">0</span><span style="color: #66cc66;">&#93;</span>;
<span style="color: #66cc66;">&#125;</span>
<span style="color: #0000ff;">$sth</span>-&gt;<span style="color: #006600;">finish</span>;
&nbsp;
<span style="color: #000066;">die</span> <span style="color: #ff0000;">&quot;ERROR: user <span style="color: #000099; font-weight: bold;">\`</span>$reporter_name' does not exist<span style="color: #000099; font-weight: bold;">\n</span>&quot;</span> <span style="color: #b1b100;">unless</span> <span style="color: #0000ff;">$reporter</span> &gt; <span style="color: #cc66cc;">0</span>;
&nbsp;
<span style="color: #000066;">print</span> <span style="color: #ff0000;">&quot;reporter: $reporter_name ($reporter)<span style="color: #000099; font-weight: bold;">\n</span>&quot;</span> <span style="color: #b1b100;">if</span> <span style="color: #0000ff;">$debug</span>;
&nbsp;
<span style="color: #b1b100;">my</span> <span style="color: #0000ff;">$subject</span> = <span style="color: #ff0000;">''</span>;
<span style="color: #b1b100;">my</span> <span style="color: #0000ff;">$content</span> = <span style="color: #ff0000;">''</span>;
&nbsp;
<span style="color: #b1b100;">while</span><span style="color: #66cc66;">&#40;</span><span style="color: #009999;">&lt;STDIN&gt;</span><span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">&#123;</span>
        <span style="color: #000066;">s</span>/\<span style="color: #000066;">s</span>+$//;
        <span style="color: #b1b100;">last</span> <span style="color: #b1b100;">if</span> <span style="color: #0000ff;">$_</span> eq <span style="color: #ff0000;">''</span>;
        <span style="color: #0000ff;">$subject</span> = $<span style="color: #cc66cc;">1</span> <span style="color: #b1b100;">if</span> /^Subject: <span style="color: #66cc66;">&#40;</span>.+<span style="color: #66cc66;">&#41;</span>$/;
<span style="color: #66cc66;">&#125;</span>
<span style="color: #b1b100;">while</span><span style="color: #66cc66;">&#40;</span><span style="color: #009999;">&lt;STDIN&gt;</span><span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">&#123;</span>
        <span style="color: #0000ff;">$content</span> .= <span style="color: #0000ff;">$_</span>;
<span style="color: #66cc66;">&#125;</span>
&nbsp;
<span style="color: #0000ff;">$sql</span> = <span style="color: #ff0000;">'INSERT INTO mantis_bug_text_table (description) VALUES (?)'</span>;
&nbsp;
<span style="color: #0000ff;">$sth</span> = <span style="color: #0000ff;">$dbh</span>-&gt;<span style="color: #006600;">prepare</span><span style="color: #66cc66;">&#40;</span><span style="color: #0000ff;">$sql</span><span style="color: #66cc66;">&#41;</span> || <span style="color: #000066;">die</span> <span style="color: #ff0000;">'ERROR: '</span>.<span style="color: #0000ff;">$dbh</span>-&gt;<span style="color: #006600;">errstr</span>;
<span style="color: #0000ff;">$sth</span>-&gt;<span style="color: #006600;">execute</span><span style="color: #66cc66;">&#40;</span><span style="color: #0000ff;">$content</span><span style="color: #66cc66;">&#41;</span> || <span style="color: #000066;">die</span> <span style="color: #ff0000;">'ERROR: '</span>.<span style="color: #0000ff;">$dbh</span>-&gt;<span style="color: #006600;">errstr</span>;
<span style="color: #0000ff;">$sth</span>-&gt;<span style="color: #006600;">finish</span>;
&nbsp;
<span style="color: #b1b100;">my</span> <span style="color: #0000ff;">$textid</span> = <span style="color: #0000ff;">$dbh</span>-&gt;<span style="color: #66cc66;">&#123;</span> <span style="color: #000066;">q</span><span style="color: #66cc66;">&#123;</span>mysql_insertid<span style="color: #66cc66;">&#125;</span> <span style="color: #66cc66;">&#125;</span>;
&nbsp;
<span style="color: #000066;">print</span> <span style="color: #ff0000;">&quot;bug text id: $textid<span style="color: #000099; font-weight: bold;">\n</span>&quot;</span> <span style="color: #b1b100;">if</span> <span style="color: #0000ff;">$debug</span>;
&nbsp;
<span style="color: #0000ff;">$sql</span> = <span style="color: #ff0000;">'INSERT INTO mantis_bug_table
                ( project_id, reporter_id,
                  date_submitted, last_updated,
                  bug_text_id, summary )
        VALUES (?,?,?,?,?,?)'</span>;
&nbsp;
<span style="color: #b1b100;">my</span> <span style="color: #0000ff;">$now</span> = strftime<span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">'%Y-%m-%d %H:%M:%S'</span>, <span style="color: #000066;">localtime</span><span style="color: #66cc66;">&#40;</span><span style="color: #000066;">time</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>;
&nbsp;
<span style="color: #0000ff;">$sth</span> = <span style="color: #0000ff;">$dbh</span>-&gt;<span style="color: #006600;">prepare</span><span style="color: #66cc66;">&#40;</span><span style="color: #0000ff;">$sql</span><span style="color: #66cc66;">&#41;</span> || <span style="color: #000066;">die</span> <span style="color: #ff0000;">'ERROR: '</span>.<span style="color: #0000ff;">$dbh</span>-&gt;<span style="color: #006600;">errstr</span>;
<span style="color: #0000ff;">$sth</span>-&gt;<span style="color: #006600;">execute</span><span style="color: #66cc66;">&#40;</span><span style="color: #0000ff;">$project</span>, <span style="color: #0000ff;">$reporter</span>, <span style="color: #0000ff;">$now</span>, <span style="color: #0000ff;">$now</span>, <span style="color: #0000ff;">$textid</span>, <span style="color: #0000ff;">$subject</span><span style="color: #66cc66;">&#41;</span>
        || <span style="color: #000066;">die</span> <span style="color: #ff0000;">'ERROR: '</span>.<span style="color: #0000ff;">$dbh</span>-&gt;<span style="color: #006600;">errstr</span>;
<span style="color: #0000ff;">$sth</span>-&gt;<span style="color: #006600;">finish</span>;
&nbsp;
<span style="color: #0000ff;">$dbh</span>-&gt;<span style="color: #006600;">disconnect</span>;</pre></div></div>


<p><a href="http://feedads.googleadservices.com/~a/pbEhzQyw9g0HcLyBjUrDEiHIR1c/a"><img src="http://feedads.googleadservices.com/~a/pbEhzQyw9g0HcLyBjUrDEiHIR1c/i" border="0" ismap="true"></img></a></p><img src="http://feedproxy.google.com/~r/cdsheen/~4/VM4Jnthp5lo" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://blog.urdada.net/2008/11/11/95/feed/</wfw:commentRss>
		<feedburner:origLink>http://blog.urdada.net/2008/11/11/95/</feedburner:origLink></item>
		<item>
		<title>信用卡優惠~嘟嘟房-台北市區臨時停車 (Google Maps)</title>
		<link>http://feedproxy.google.com/~r/cdsheen/~3/mUaOsegT55w/</link>
		<comments>http://blog.urdada.net/2008/09/29/92/#comments</comments>
		<pubDate>Mon, 29 Sep 2008 13:36:35 +0000</pubDate>
		<dc:creator>dada</dc:creator>
		
		<category><![CDATA[消費資訊]]></category>

		<guid isPermaLink="false">http://blog.urdada.net/2008/09/29/92/</guid>
		<description><![CDATA[在台北開車是個麻煩，尤其是要找停車位的時候...
這時候查看一下你手邊的信用卡，也許有一些優惠可以用:)
這篇要介紹的是首開與各大信用卡合作的 中興嘟嘟房停車網
中興嘟嘟房在台北市區很多地方的停車場都很方便..
例如世貿站就在台北國際會議中心地下室:

我最愛的通化夜市站，就在基隆路臨江街旁:

除此之外，永康夜市 和 士林夜市 也是個好地方  
嘟嘟房各站點的位置以及合作的銀行可以從嘟嘟房的網站上面找到:
http://www.dodohome.com.tw/menu09/actparktable_big.asp
不過嘟嘟房的網站實在不好查，網站有點慢而且查詢層級有點亂.. orz
因此颱風假在家無聊，就把嘟嘟房台北市可以臨時停車的站點匯入了 Google Maps，
產生了一份「我的地圖」，方便直接查詢可以停車的站點，如下所示:

有興趣的人可以直接點選 這邊 直接連結到這份地圖
不過實際的位置狀況以及哪些銀行間可以使用還是需以嘟嘟房原始網站的說明為準
然後重點來了，到底哪些卡才能使用嘟嘟房的停車優惠呢?
其實自從卡債風暴開始，各銀行已經已經大幅縮減信用卡的免費停車優惠了，
以嘟嘟房為例，很多信用卡已經改成需要扣點數或者符合一定消費金額才能免費停車了
以下僅列出不需要額外扣點數也不需要扣錢的卡，主要是需要扣點數的算起來都不太划算
更詳細即時的資訊請參考原始嘟嘟房網站上 卡友專區 的說明
台新銀行: (~2008/12/31)

無限卡: 3hr/每天1次 (無條件)
賓士白金卡、尊爵世界卡: 3hr/每天1次 (無條件)

新光銀行: (~2008/12/31)

無限卡: 3hr/每天1次 (條件: 前三月有消費)
新鑽卡: 2hr/每天1次/每月5次 (條件: 前二月消費10000元)

台北富邦: (~2008/12/31)

世界卡: 2hr/每天1次 (條件: 上月有消費)

AIG友邦: (~2009/06/30)

Auto Plus 汽車卡: 2hr/每天1次/每月3次 (條件: 上月刷3次)

聯邦銀行: (~2008/12/31)

無限卡、世界卡、御璽卡、商務白金卡: 2hr/每天1次 (無條件)

荷蘭銀行: (~2008/12/31)

Lexus世界卡、貴賓理財世界卡: 3hr/每天1次 (條件: 上月有消費)
Lexus商務卡、貴賓理財白金卡: 2hr/每天1次 (條件: 上月有消費)
梵谷白金卡、Super白金卡: 2hr/每天1次 (條件: 上月消費20000元)

元大銀行: (~2009/12/31)

所有白金卡: 2hr/每天1次 (條件: 上月消費5888元)

永豐銀行: (~2008/12/31)

世界卡: 3hr/每天1次/每月5次 [...]]]></description>
			<content:encoded><![CDATA[<p>在台北開車是個麻煩，尤其是要找停車位的時候...<br />
這時候查看一下你手邊的信用卡，也許有一些優惠可以用:)</p>
<p>這篇要介紹的是首開與各大信用卡合作的 <a href=http://www.dodohome.com.tw/ target=_blank>中興嘟嘟房停車網</a></p>
<p>中興嘟嘟房在台北市區很多地方的停車場都很方便..</p>
<p>例如世貿站就在台北國際會議中心地下室:<br />
<iframe width="450" height="350" frameborder="0" scrolling="no" marginheight="0" marginwidth="0" src="http://maps.google.com.tw/maps/ms?ie=UTF8&amp;hl=zh-TW&amp;msa=0&amp;msid=118338097352562522963.000456ec1e60a6adc631e&amp;s=AARTsJr4CNYzOD6dkqBZiVmkTnVB2IRRgw&amp;ll=25.034147,121.561081&amp;spn=0.006805,0.009656&amp;z=16&amp;output=embed"></iframe></p>
<p>我最愛的通化夜市站，就在基隆路臨江街旁:<br />
<iframe width="450" height="350" frameborder="0" scrolling="no" marginheight="0" marginwidth="0" src="http://maps.google.com.tw/maps/ms?ie=UTF8&amp;hl=zh-TW&amp;msa=0&amp;msid=118338097352562522963.000456ec1e60a6adc631e&amp;s=AARTsJr4CNYzOD6dkqBZiVmkTnVB2IRRgw&amp;ll=25.029345,121.557133&amp;spn=0.003402,0.004828&amp;z=17&amp;output=embed"></iframe></p>
<p>除此之外，<a href="http://maps.google.com.tw/maps/ms?ie=UTF8&#038;hl=zh-TW&#038;msa=0&#038;msid=118338097352562522963.000456ec1e60a6adc631e&#038;s=AARTsJr4CNYzOD6dkqBZiVmkTnVB2IRRgw&#038;ll=25.032631,121.530011&#038;spn=0.006805,0.009656&amp;z=16" target=_blank>永康夜市</a> 和 <a href="http://maps.google.com.tw/maps/ms?ie=UTF8&#038;hl=zh-TW&#038;msa=0&#038;msid=118338097352562522963.000456ec1e60a6adc631e&#038;s=AARTsJr4CNYzOD6dkqBZiVmkTnVB2IRRgw&#038;ll=25.086901,121.52499&#038;spn=0.006802,0.009656&#038;z=16" target=_blank>士林夜市</a> 也是個好地方 <img src='http://blog.urdada.net/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>嘟嘟房各站點的位置以及合作的銀行可以從嘟嘟房的網站上面找到:<br />
<a href=http://www.dodohome.com.tw/menu09/actparktable_big.asp target=_blank>http://www.dodohome.com.tw/menu09/actparktable_big.asp</a></p>
<p>不過嘟嘟房的網站實在不好查，網站有點慢而且查詢層級有點亂.. orz</p>
<p>因此颱風假在家無聊，就把嘟嘟房台北市可以臨時停車的站點匯入了 <a href=http://maps.google.com.tw/ target=_blank>Google Maps</a>，<br />
產生了一份「<a href=http://maps.google.com.tw/maps/ms?ie=UTF8&#038;hl=zh-TW&#038;msa=0&#038;msid=118338097352562522963.000456ec1e60a6adc631e&#038;z=12 target=_blank>我的地圖</a>」，方便直接查詢可以停車的站點，如下所示:</p>
<p><iframe width="425" height="350" frameborder="0" scrolling="no" marginheight="0" marginwidth="0" src="http://maps.google.com.tw/maps/ms?ie=UTF8&amp;hl=zh-TW&amp;msa=0&amp;msid=118338097352562522963.000456ec1e60a6adc631e&amp;s=AARTsJr4CNYzOD6dkqBZiVmkTnVB2IRRgw&amp;ll=25.049214,121.53574&amp;spn=0.05443,0.072956&amp;z=13&amp;output=embed"></iframe></p>
<p>有興趣的人可以直接點選 <a href=http://maps.google.com.tw/maps/ms?ie=UTF8&#038;hl=zh-TW&#038;msa=0&#038;msid=118338097352562522963.000456ec1e60a6adc631e&#038;z=12 target=_blank>這邊</a> 直接連結到這份地圖</p>
<p>不過實際的位置狀況以及哪些銀行間可以使用還是需以嘟嘟房原始網站的說明為準</p>
<p>然後重點來了，到底哪些卡才能使用嘟嘟房的停車優惠呢?</p>
<p>其實自從卡債風暴開始，各銀行已經已經大幅縮減信用卡的免費停車優惠了，<br />
以嘟嘟房為例，很多信用卡已經改成需要扣點數或者符合一定消費金額才能免費停車了</p>
<p>以下僅列出不需要額外扣點數也不需要扣錢的卡，主要是需要扣點數的算起來都不太划算<br />
更詳細即時的資訊請參考原始嘟嘟房網站上 <a href=http://www.dodohome.com.tw/menu07/mainframebank.asp target=_blank>卡友專區</a> 的說明</p>
<p>台新銀行: (~2008/12/31)</p>
<ul>
<li>無限卡: 3hr/每天1次 (無條件)
<li>賓士白金卡、尊爵世界卡: 3hr/每天1次 (無條件)
</ul>
<p>新光銀行: (~2008/12/31)</p>
<ul>
<li>無限卡: 3hr/每天1次 (條件: 前三月有消費)
<li>新鑽卡: 2hr/每天1次/每月5次 (條件: 前二月消費10000元)
</ul>
<p>台北富邦: (~2008/12/31)</p>
<ul>
<li>世界卡: 2hr/每天1次 (條件: 上月有消費)
</ul>
<p>AIG友邦: (~2009/06/30)</p>
<ul>
<li>Auto Plus 汽車卡: 2hr/每天1次/每月3次 (條件: 上月刷3次)
</ul>
<p>聯邦銀行: (~2008/12/31)</p>
<ul>
<li>無限卡、世界卡、御璽卡、商務白金卡: 2hr/每天1次 (無條件)
</ul>
<p>荷蘭銀行: (~2008/12/31)</p>
<ul>
<li>Lexus世界卡、貴賓理財世界卡: 3hr/每天1次 (條件: 上月有消費)
<li>Lexus商務卡、貴賓理財白金卡: 2hr/每天1次 (條件: 上月有消費)
<li>梵谷白金卡、Super白金卡: 2hr/每天1次 (條件: 上月消費20000元)
</ul>
<p>元大銀行: (~2009/12/31)</p>
<ul>
<li>所有白金卡: 2hr/每天1次 (條件: 上月消費5888元)
</ul>
<p>永豐銀行: (~2008/12/31)</p>
<ul>
<li>世界卡: 3hr/每天1次/每月5次 (條件: 上月有消費)
<li>御璽卡: 1hr/每天1次/每月5次 (條件: 上月有消費)
</ul>
<p>玉山銀行: (~2008/12/31)</p>
<ul>
<li>世界卡: 3hr/每天1次 (條件: 上月有消費)
<li>商務白金卡: 2hr/每天1次 (條件: 上月消費5000元)
</ul>
<p>日盛銀行: (~2008/11/30)</p>
<ul>
<li>GOGO白金卡: 2hr/每天1次 (條件: 上月消費6666元)
<li>GOGO金、普卡: 1hr/每天1次 (條件: 上月消費3666元)
</ul>
<p>合作金庫: (~2008/12/31)</p>
<ul>
<li>無限卡: 2hr/每天1次 (條件: 上月有消費)
<li>白金卡、商務卡: 2hr/每天1次/每月8次 (條件: 上月消費5000元)
</ul>
<p>如果你的卡片及消費金額達到上述需求，那就可以好好利用一下這個優惠囉</p>

<p><a href="http://feedads.googleadservices.com/~a/smSoLGV0t_Iw_xX9DDSLO3bKPDY/a"><img src="http://feedads.googleadservices.com/~a/smSoLGV0t_Iw_xX9DDSLO3bKPDY/i" border="0" ismap="true"></img></a></p><img src="http://feedproxy.google.com/~r/cdsheen/~4/mUaOsegT55w" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://blog.urdada.net/2008/09/29/92/feed/</wfw:commentRss>
		<feedburner:origLink>http://blog.urdada.net/2008/09/29/92/</feedburner:origLink></item>
		<item>
		<title>Bye Bye ISP - 和信超媒體(GigaMedia)賣掉了 ISP 部門</title>
		<link>http://feedproxy.google.com/~r/cdsheen/~3/KAsZ_6XtMPE/</link>
		<comments>http://blog.urdada.net/2008/08/28/91/#comments</comments>
		<pubDate>Thu, 28 Aug 2008 15:30:44 +0000</pubDate>
		<dc:creator>dada</dc:creator>
		
		<category><![CDATA[網路科技]]></category>

		<guid isPermaLink="false">http://blog.urdada.net/2008/08/28/91/</guid>
		<description><![CDATA[和信超媒體的母公司 GigaMedia 今天宣佈以 2000 萬美元將 ISP 部門 (包含和網寬頻 KBT) 賣給中嘉網路，如果接下來兩年出售的部門達到業績目標，還可以另外再取得 500 萬美元
相關新聞:

GigaMedia Sells Legacy ISP Business; One-Time Gain Expected
GigaMedia unloads legacy ISP unit for $20 million

2000年進入 和信超媒體 工作時，當時公司最主要的業務就是 Cable Modem 寬頻上網，但受限於許多先天及後天因素，發展得並沒有很好。2001年開始進入 ADSL 的市場，但也因為中華電信獨占電路的關係，競爭還是處於不利地位。2006年 將 ADSL 部份賣給了現在的天空傳媒 (原Webs-TV) 之後，GigaMedia 還是持續經營著 Cable Modem 業務(和信超媒體)以及企業專線市場(和網寬頻)
中嘉網路原是和信關係企業，但在 安博凱MBK 入主之後，外資目前也佔了很大一部份股權。中嘉系統下的有線電視業者原本的 Cable Modem 寬頻上網服務就是由和信超媒體提供的，但是後來因為種種因素，中嘉還是推出了自己的 Cable Modem 品牌 (互動BB)，與和信超媒體 GIGA 品牌的 Cable Modem [...]]]></description>
			<content:encoded><![CDATA[<p>和信超媒體的母公司 <a href=http://www.gigamedia.com.tw/ target=_blank>GigaMedia</a> 今天宣佈以 2000 萬美元將 ISP 部門 (包含<a href=http://www.kbtelecom.net/ target=_blank>和網寬頻 KBT</a>) 賣給<a href=http://www.cns.net.tw/company_info.php target=_blank>中嘉網路</a>，如果接下來兩年出售的部門達到業績目標，還可以另外再取得 500 萬美元</p>
<p>相關新聞:</p>
<ul>
<li><a href=http://biz.yahoo.com/prnews/080828/hkth009.html?.v=1 target=_blank>GigaMedia Sells Legacy ISP Business; One-Time Gain Expected</a>
<li><a href=http://biz.yahoo.com/ap/080828/gigamedia_unit_sale.html?.v=1 target=_blank>GigaMedia unloads legacy ISP unit for $20 million</a>
</ul>
<p>2000年進入 <a href=http://www.gigamedia.com.tw/ target=_blank>和信超媒體</a> 工作時，當時公司最主要的業務就是 <a href=http://en.wikipedia.org/wiki/Cable_modem target=_blank>Cable Modem</a> 寬頻上網，但受限於許多先天及後天因素，發展得並沒有很好。2001年開始進入 <a href="http://zh.wikipedia.org/w/index.php?title=ADSL&#038;variant=zh-tw" target=_blank>ADSL</a> 的市場，但也因為中華電信獨占電路的關係，競爭還是處於不利地位。2006年 <a href=http://blog.urdada.net/2006/05/16/12/ target=_blank>將 ADSL 部份賣給了現在的天空傳媒</a> (原Webs-TV) 之後，GigaMedia 還是持續經營著 Cable Modem 業務(和信超媒體)以及企業專線市場(和網寬頻)</p>
<p>中嘉網路原是和信關係企業，但在 <a href=http://www.mbkpartnerslp.com/ target=_blank>安博凱MBK</a> 入主之後，外資目前也佔了很大一部份股權。中嘉系統下的有線電視業者原本的 Cable Modem 寬頻上網服務就是由和信超媒體提供的，但是後來因為種種因素，中嘉還是推出了自己的 Cable Modem 品牌 (<a href=http://www.totalbb.net.tw/ target=_blank>互動BB</a>)，與和信超媒體 GIGA 品牌的 Cable Modem 變成競爭又合作的奇妙關係...</p>
<p>GigaMedia 事實上近幾年已經把精力幾乎都投注在線上遊戲的發展，ISP 網路部門的出售也是遲早的事。 ISP 部門尤其是企業專線市場與有線電視業者整合後，應該是能夠有更好的發展的!</p>
<p>在新聞發佈的這時候，我正在上海出差，看到這則新聞其實是有點百感交集，當初會加入這個公司，也是對 ISP 所能夠提供的服務有濃厚的興趣。從整套的寬頻網路管理系統 (內部稱 SIMBA)、ADSL 服務、<a href=http://photo.giga.net.tw/ target=_blank>網路相簿</a> 到 <a href=http://webamp.giga.net.tw/ target=_blank>WebAMP</a>，都留下了我許多參與的心血... </p>
<p>世事是很難預料的，沒想到我最終還是回到網路遊戲這一塊，我研究所兩年的主要研究  <img src='http://blog.urdada.net/wp-includes/images/smilies/icon_wink.gif' alt=':wink:' class='wp-smiley' /> </p>
<p>無論如何，還是祝福 ISP 部門的同事們！</p>
<p>~ 希望我們的努力能讓你們手中的 option 價值更高一點  <img src='http://blog.urdada.net/wp-includes/images/smilies/icon_razz.gif' alt=':razz:' class='wp-smiley' /></p>

<p><a href="http://feedads.googleadservices.com/~a/WA-Et_ffe_YqS_u-qllnZ4dvW1o/a"><img src="http://feedads.googleadservices.com/~a/WA-Et_ffe_YqS_u-qllnZ4dvW1o/i" border="0" ismap="true"></img></a></p><img src="http://feedproxy.google.com/~r/cdsheen/~4/KAsZ_6XtMPE" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://blog.urdada.net/2008/08/28/91/feed/</wfw:commentRss>
		<feedburner:origLink>http://blog.urdada.net/2008/08/28/91/</feedburner:origLink></item>
		<item>
		<title>BloggerAds 的收益到達1000元了</title>
		<link>http://feedproxy.google.com/~r/cdsheen/~3/GzrjmtQE6yI/</link>
		<comments>http://blog.urdada.net/2008/08/24/90/#comments</comments>
		<pubDate>Sun, 24 Aug 2008 03:30:02 +0000</pubDate>
		<dc:creator>dada</dc:creator>
		
		<category><![CDATA[趣味軼事]]></category>

		<guid isPermaLink="false">http://blog.urdada.net/2008/08/24/90/</guid>
		<description><![CDATA[大約是2007年11月底抱著好玩的心裡加入 BloggerAds 的，主要使用的位置是放在我的 Blog 右方側欄的廣告，我的 Blog 流量並不多，但根據報表，平均每天還是約有200~300次的廣告曝光，大約是新台幣5~6元的收入。經過9個月的累積之後，收益終於到達 BloggerAds 訂的收益匯款門檻1000元了  

相對於 Google 的 AdSense，國內廠商 BloggerAds 的好處是只要有曝光就會有收入，一般來講，收益應該會比 AdSense 好很多..
BloggerAds 除了部落格的廣告外，另外還可以經由推薦連結及黃金寫手獲取收益，但對於一般的部落客而言，放廣告還是最簡單的方式
BloggerAds 的推薦連結只能讓推薦者分享30天內的收益，而且還只有30%，實在不夠吸引人，應該適度增加回饋的比例與時間，也許再搞個 老鼠會 多層次傳銷 的模式更能吸引人.. 不過國內廣告市場長期被G/Y等業者壟斷，不知道 BloggerAds 有沒有足夠的廣告來源來支撐營運就是了..
有興趣的人可以玩玩看，我半年才能吃一次大餐，也許你每個禮拜都能吃一次大餐  
]]></description>
			<content:encoded><![CDATA[<p>大約是2007年11月底抱著好玩的心裡加入 <a href="http://author.bloggerads.net/01_join_read.aspx?refid=20064&amp;id=20071122000025" target=_blank>BloggerAds</a> 的，主要使用的位置是放在我的 Blog 右方側欄的廣告，我的 Blog 流量並不多，但根據報表，平均每天還是約有200~300次的廣告曝光，大約是新台幣5~6元的收入。經過9個月的累積之後，收益終於到達 BloggerAds 訂的收益匯款門檻1000元了 <img src='http://blog.urdada.net/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p><img src="http://farm4.static.flickr.com/3056/2793318714_9d022a61b3.jpg" border=1 /></p>
<p>相對於 Google 的 <a href=https://www.google.com/adsense/home target=_blank>AdSense</a>，國內廠商 <a href="http://author.bloggerads.net/01_join_read.aspx?refid=20064&amp;id=20071122000025" target=_blank>BloggerAds</a> 的好處是<a href="http://www.bloggerads.net/15_faq_v2.aspx" target=_blank>只要有曝光就會有收入</a>，一般來講，收益應該會比 AdSense 好很多..</p>
<p><a href="http://author.bloggerads.net/01_join_read.aspx?refid=20064&amp;id=20071122000025" target=_blank>BloggerAds</a> 除了部落格的廣告外，另外還可以經由推薦連結及黃金寫手獲取收益，但對於一般的部落客而言，放廣告還是最簡單的方式</p>
<p>BloggerAds 的推薦連結只能讓推薦者分享30天內的收益，而且還只有30%，實在不夠吸引人，應該適度增加回饋的比例與時間，也許再搞個 <strike>老鼠會</strike> 多層次傳銷 的模式更能吸引人.. 不過國內廣告市場長期被G/Y等業者壟斷，不知道 BloggerAds 有沒有足夠的廣告來源來支撐營運就是了..</p>
<p>有興趣的人可以玩玩看，我半年才能吃一次大餐，也許你每個禮拜都能吃一次大餐 <img src='http://blog.urdada.net/wp-includes/images/smilies/icon_rolleyes.gif' alt=':roll:' class='wp-smiley' /> </p>

<p><a href="http://feedads.googleadservices.com/~a/t0l3TPGnh5zyAVa6U0t58g1Y3PA/a"><img src="http://feedads.googleadservices.com/~a/t0l3TPGnh5zyAVa6U0t58g1Y3PA/i" border="0" ismap="true"></img></a></p><img src="http://feedproxy.google.com/~r/cdsheen/~4/GzrjmtQE6yI" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://blog.urdada.net/2008/08/24/90/feed/</wfw:commentRss>
		<feedburner:origLink>http://blog.urdada.net/2008/08/24/90/</feedburner:origLink></item>
		<item>
		<title>部落格的 PageRank 升到 5 了</title>
		<link>http://feedproxy.google.com/~r/cdsheen/~3/A09AgAppPBw/</link>
		<comments>http://blog.urdada.net/2008/08/20/89/#comments</comments>
		<pubDate>Wed, 20 Aug 2008 15:12:05 +0000</pubDate>
		<dc:creator>dada</dc:creator>
		
		<category><![CDATA[趣味軼事]]></category>

		<guid isPermaLink="false">http://blog.urdada.net/2008/08/20/89/</guid>
		<description><![CDATA[我的第一篇 BLOG 是三年多前，2005/03/04 發表 於 無名小站，那時候無名小站剛剛商業化脫離交通大學，然後經過一番波折搬入了 GIGA 機房...

一年前 (2007/07/26) 把 BLOG 從無名小站 搬出來 到自己用 WordPress 架的這個站台
其實這一年來實在太忙，寫文章也是斷斷續續的，心血來潮就寫一篇，忙的時候停筆一兩個月也是常有的事，從開始寫 Blog 到現在也只累積了不到百篇文章。這幾天到上海出差，下班後回到飯店，想說連上自己的 Blog 看看有沒有被「和諧」掉(還好沒有)，突然發現 PageRank 升到 5 了。今年三月的時候，PageRank 還是只有 3 而已，大約四月底升到 4，然後到現在八月中左右就升到 5 了..  不曉得 Google 怎麼算的

不過雖然 PageRank 升到 5 了，但是我發現原來在無名小站的舊 Blog 每日訪問數都還是比新的這邊高，而且其實舊的 Blog 內的文章大部分已經被我拿掉了，但是每日訪問數還是較多。更重要的是，從 Bloglines 的訂閱數目來看，新的 Blog 還是沒有超越原來我無名小站 Blog 的訂閱數 (其實都很少 XD)
但是呢，在大陸這邊，訪問我新的 Blog 是沒問題的，而無名小站的 Blog 卻被和諧掉了... 必須要 [...]]]></description>
			<content:encoded><![CDATA[<p>我的第一篇 BLOG 是三年多前，<a href=http://www.wretch.cc/blog/cdsheen/1796065 target=_blank>2005/03/04 發表</a> 於 <a href=http://www.wretch.cc/ target=_blank>無名小站</a>，那時候無名小站剛剛商業化脫離<a href=http://www.nctu.edu.tw/ target=_blank>交通大學</a>，然後經過一番波折搬入了 <a href=http://www.giga.net.tw/ target=_blank>GIGA</a> 機房...</p>
<p><img src=http://farm4.static.flickr.com/3186/2782403037_2ac331e02a.jpg border=1 /></p>
<p>一年前 (2007/07/26) 把 BLOG 從無名小站 <a href=http://www.wretch.cc/blog/cdsheen/14935661 target=_blank>搬出來</a> 到自己用 <a href=http://wordpress.org/ target=_blank>WordPress</a> 架的這個<a href=http://blog.urdada.net/ target=_blank>站台</a></p>
<p>其實這一年來實在太忙，寫文章也是斷斷續續的，心血來潮就寫一篇，忙的時候停筆一兩個月也是常有的事，從開始寫 Blog 到現在也只累積了不到百篇文章。這幾天到上海出差，下班後回到飯店，想說連上自己的 <a href=http://blog.urdada.net/ target=_blank>Blog</a> 看看有沒有被「<a href="http://zh.wikipedia.org/w/index.php?title=%E6%B2%B3%E8%9F%B9_(%E7%B6%B2%E8%B7%AF%E7%94%A8%E8%AA%9E)&#038;variant=zh-tw" target=_blank>和諧</a>」掉(還好沒有)，突然發現 <a href=http://en.wikipedia.org/wiki/PageRank target=_blank>PageRank</a> 升到 5 了。今年三月的時候，PageRank 還是只有 3 而已，大約四月底升到 4，然後到現在八月中左右就升到 5 了..  不曉得 Google 怎麼算的</p>
<p><img src=http://farm4.static.flickr.com/3168/2783651950_23ab13a2b8_o.png border=1 /></p>
<p>不過雖然 PageRank 升到 5 了，但是我發現原來在無名小站的舊 Blog 每日訪問數都還是比新的這邊高，而且其實舊的 Blog 內的文章大部分已經被我拿掉了，但是每日訪問數還是較多。更重要的是，從 <a href=http://www.bloglines.com/ target=_blank>Bloglines</a> 的訂閱數目來看，新的 Blog 還是沒有超越原來我無名小站 Blog 的訂閱數 (其實都很少 XD)</p>
<p>但是呢，在大陸這邊，訪問我新的 Blog 是沒問題的，而無名小站的 Blog 卻被<a href="http://zh.wikipedia.org/w/index.php?title=%E6%B2%B3%E8%9F%B9_(%E7%B6%B2%E8%B7%AF%E7%94%A8%E8%AA%9E)&#038;variant=zh-tw" target=_blank>和諧</a>掉了... 必須要 VPN 連回台灣才看得到  <img src='http://blog.urdada.net/wp-includes/images/smilies/icon_rolleyes.gif' alt=':roll:' class='wp-smiley' /> </p>
<p><img src=http://farm4.static.flickr.com/3150/2783716514_8102ecf4f0.jpg border=1 /></p>
<p>不過大概是大陸舉辦奧運的關係，我三月到上海出差時 <a href=http://www.feedburner.com/ target=_blank>FeedBurner</a> 的 RSS Feed 是<a href=http://blog.urdada.net/2008/03/02/82/ target=_blank>無法直接存取</a>的，但是目前卻是一切正常的樣子，我想這或許也是大陸舉辦奧運的好處之一吧  <img src='http://blog.urdada.net/wp-includes/images/smilies/icon_confused.gif' alt=':???:' class='wp-smiley' />  </p>
<p>只是不知道奧運過了會不會恢復原狀就是了 XD </p>

<p><a href="http://feedads.googleadservices.com/~a/hOSxxI4emWLe-aVUTGpAVwuaAD4/a"><img src="http://feedads.googleadservices.com/~a/hOSxxI4emWLe-aVUTGpAVwuaAD4/i" border="0" ismap="true"></img></a></p><img src="http://feedproxy.google.com/~r/cdsheen/~4/A09AgAppPBw" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://blog.urdada.net/2008/08/20/89/feed/</wfw:commentRss>
		<feedburner:origLink>http://blog.urdada.net/2008/08/20/89/</feedburner:origLink></item>
		<item>
		<title>Subversion pre-commit hook</title>
		<link>http://feedproxy.google.com/~r/cdsheen/~3/wBZ2H2PpnvA/</link>
		<comments>http://blog.urdada.net/2008/07/30/88/#comments</comments>
		<pubDate>Tue, 29 Jul 2008 16:54:26 +0000</pubDate>
		<dc:creator>dada</dc:creator>
		
		<category><![CDATA[軟體]]></category>

		<guid isPermaLink="false">http://blog.urdada.net/2008/07/30/88/</guid>
		<description><![CDATA[很多人寫完程式要 commit 的時候會偷懶不寫 log，導致有時候要追問題時，
很難得知到底別人改了什麼，這時候裝個 pre-commit hook 還是蠻有用的
下面這個 pre-commit hook 只是很簡單的不允許空白或不含字母的 commit log，
如果需要的話可以很容易擴充加上更多的判斷.. 記得要 chmod 755 喔
[Subversion pre-commit hook to reject commit with empty log]

#!/usr/bin/perl
&#160;
# pre-commit hook to reject commit with empty log
# remember to chmod 755 on this file
&#160;
die &#34;Usage: $0 [REPOS] [TXN]\n&#34; unless @ARGV &#62; 1;
&#160;
$REPOS=$ARGV&#91;0&#93;;
$TXN=$ARGV&#91;1&#93;;
&#160;
$svnlook = '/usr/local/bin/svnlook';
&#160;
chomp&#40;$author=`$svnlook author -t $TXN $REPOS`&#41;;
chomp&#40;$log=`$svnlook log -t [...]]]></description>
			<content:encoded><![CDATA[<p>很多人寫完程式要 commit 的時候會偷懶不寫 log，導致有時候要追問題時，<br />
很難得知到底別人改了什麼，這時候裝個 pre-commit hook 還是蠻有用的</p>
<p>下面這個 <a href=http://svnbook.red-bean.com/en/1.4/svn.ref.reposhooks.pre-commit.html target=_blank>pre-commit hook</a> 只是很簡單的不允許空白或不含字母的 commit log，<br />
如果需要的話可以很容易擴充加上更多的判斷.. 記得要 chmod 755 喔</p>
<p><strong>[Subversion pre-commit hook to reject commit with empty log]</strong></p>

<div class="wp_syntax"><div class="code"><pre class="perl"><span style="color: #808080; font-style: italic;">#!/usr/bin/perl</span>
&nbsp;
<span style="color: #808080; font-style: italic;"># pre-commit hook to reject commit with empty log</span>
<span style="color: #808080; font-style: italic;"># remember to chmod 755 on this file</span>
&nbsp;
<span style="color: #000066;">die</span> <span style="color: #ff0000;">&quot;Usage: $0 [REPOS] [TXN]<span style="color: #000099; font-weight: bold;">\n</span>&quot;</span> <span style="color: #b1b100;">unless</span> <span style="color: #0000ff;">@ARGV</span> &gt; <span style="color: #cc66cc;">1</span>;
&nbsp;
<span style="color: #0000ff;">$REPOS</span>=<span style="color: #0000ff;">$ARGV</span><span style="color: #66cc66;">&#91;</span><span style="color: #cc66cc;">0</span><span style="color: #66cc66;">&#93;</span>;
<span style="color: #0000ff;">$TXN</span>=<span style="color: #0000ff;">$ARGV</span><span style="color: #66cc66;">&#91;</span><span style="color: #cc66cc;">1</span><span style="color: #66cc66;">&#93;</span>;
&nbsp;
<span style="color: #0000ff;">$svnlook</span> = <span style="color: #ff0000;">'/usr/local/bin/svnlook'</span>;
&nbsp;
<span style="color: #000066;">chomp</span><span style="color: #66cc66;">&#40;</span><span style="color: #0000ff;">$author</span>=`<span style="color: #0000ff;">$svnlook</span> author -t <span style="color: #0000ff;">$TXN</span> <span style="color: #0000ff;">$REPOS</span>`<span style="color: #66cc66;">&#41;</span>;
<span style="color: #000066;">chomp</span><span style="color: #66cc66;">&#40;</span><span style="color: #0000ff;">$log</span>=`<span style="color: #0000ff;">$svnlook</span> <span style="color: #000066;">log</span> -t <span style="color: #0000ff;">$TXN</span> <span style="color: #0000ff;">$REPOS</span>`<span style="color: #66cc66;">&#41;</span>;
&nbsp;
<span style="color: #b1b100;">if</span><span style="color: #66cc66;">&#40;</span> <span style="color: #0000ff;">$log</span> eq <span style="color: #ff0000;">''</span> || <span style="color: #0000ff;">$log</span> =~ /^\W+$/ <span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">&#123;</span>
    <span style="color: #000066;">die</span> <span style="color: #ff0000;">&quot;<span style="color: #000099; font-weight: bold;">\n</span>Hello, $author. Empty commit log is not permitted!<span style="color: #000099; font-weight: bold;">\n</span>&quot;</span>;
<span style="color: #66cc66;">&#125;</span>
&nbsp;
<span style="color: #000066;">exit</span><span style="color: #66cc66;">&#40;</span><span style="color: #cc66cc;">0</span><span style="color: #66cc66;">&#41;</span>;</pre></div></div>

<p>除此之外，對於 pre-commit hook，我還加上了檢查不允許跨 branch 的 commit，<br />
因為一旦有了跨 branch 的 commit，會使得未來需要作 merge 的時候遇到許多麻煩</p>
<p>例如常用的 repository 結構如下:</p>
<p>/trunk/<br />
/branches/helloworld-1.0/<br />
/branches/helloworld-1.1/</p>
<p>要防止使用者同時對兩個以上的 branch (包含 main trunk) 作 commit，<br />
可以把下面這一段程式再加進去 pre-commit 的 hook 中</p>
<p><strong>[Subversion pre-commit hook to reject cross-branch commit]</strong></p>

<div class="wp_syntax"><div class="code"><pre class="perl"><span style="color: #808080; font-style: italic;">#!/usr/bin/perl</span>
&nbsp;
<span style="color: #808080; font-style: italic;"># pre-commit hook to reject empty commit log and cross-branch commit</span>
<span style="color: #808080; font-style: italic;"># remember to chmod 755 on this file</span>
&nbsp;
<span style="color: #000066;">die</span> <span style="color: #ff0000;">&quot;Usage: $0 [REPOS] [TXN]<span style="color: #000099; font-weight: bold;">\n</span>&quot;</span> <span style="color: #b1b100;">unless</span> <span style="color: #0000ff;">@ARGV</span> &gt; <span style="color: #cc66cc;">1</span>;
&nbsp;
<span style="color: #0000ff;">$REPOS</span>=<span style="color: #0000ff;">$ARGV</span><span style="color: #66cc66;">&#91;</span><span style="color: #cc66cc;">0</span><span style="color: #66cc66;">&#93;</span>;
<span style="color: #0000ff;">$TXN</span>=<span style="color: #0000ff;">$ARGV</span><span style="color: #66cc66;">&#91;</span><span style="color: #cc66cc;">1</span><span style="color: #66cc66;">&#93;</span>;
&nbsp;
<span style="color: #0000ff;">$svnlook</span> = <span style="color: #ff0000;">'/usr/local/bin/svnlook'</span>;
&nbsp;
<span style="color: #000066;">chomp</span><span style="color: #66cc66;">&#40;</span><span style="color: #0000ff;">$author</span>=`<span style="color: #0000ff;">$svnlook</span> author -t <span style="color: #0000ff;">$TXN</span> <span style="color: #0000ff;">$REPOS</span>`<span style="color: #66cc66;">&#41;</span>;
<span style="color: #000066;">chomp</span><span style="color: #66cc66;">&#40;</span><span style="color: #0000ff;">$log</span>=`<span style="color: #0000ff;">$svnlook</span> <span style="color: #000066;">log</span> -t <span style="color: #0000ff;">$TXN</span> <span style="color: #0000ff;">$REPOS</span>`<span style="color: #66cc66;">&#41;</span>;
&nbsp;
<span style="color: #b1b100;">if</span><span style="color: #66cc66;">&#40;</span> <span style="color: #0000ff;">$log</span> eq <span style="color: #ff0000;">''</span> || <span style="color: #0000ff;">$log</span> =~ /^\W+$/ <span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">&#123;</span>
    <span style="color: #000066;">die</span> <span style="color: #ff0000;">&quot;<span style="color: #000099; font-weight: bold;">\n</span>Hello, $author. Empty commit log is not permitted!<span style="color: #000099; font-weight: bold;">\n</span>&quot;</span>;
<span style="color: #66cc66;">&#125;</span>
&nbsp;
<span style="color: #000066;">open</span><span style="color: #66cc66;">&#40;</span>DIRS,<span style="color: #ff0000;">&quot;$svnlook dirs-changed -t $TXN $REPOS|&quot;</span><span style="color: #66cc66;">&#41;</span>;
<span style="color: #b1b100;">while</span><span style="color: #66cc66;">&#40;</span><span style="color: #009999;">&lt;DIRS&gt;</span><span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">&#123;</span>
    <span style="color: #b1b100;">if</span><span style="color: #66cc66;">&#40;</span> /^<span style="color: #66cc66;">&#40;</span>trunk<span style="color: #66cc66;">&#41;</span>\// <span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">&#123;</span>
        <span style="color: #0000ff;">$branches</span><span style="color: #66cc66;">&#123;</span>$<span style="color: #cc66cc;">1</span><span style="color: #66cc66;">&#125;</span>++;
    <span style="color: #66cc66;">&#125;</span>
    <span style="color: #b1b100;">elsif</span><span style="color: #66cc66;">&#40;</span> /^branches\/<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#91;</span>^\/<span style="color: #66cc66;">&#93;</span>+<span style="color: #66cc66;">&#41;</span>/ <span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">&#123;</span>
         <span style="color: #0000ff;">$branches</span><span style="color: #66cc66;">&#123;</span>$<span style="color: #cc66cc;">1</span><span style="color: #66cc66;">&#125;</span>++;
    <span style="color: #66cc66;">&#125;</span>
<span style="color: #66cc66;">&#125;</span>
<span style="color: #000066;">close</span><span style="color: #66cc66;">&#40;</span>DIRS<span style="color: #66cc66;">&#41;</span>;
&nbsp;
<span style="color: #0000ff;">$c</span> = <span style="color: #0000ff;">%branches</span>;
&nbsp;
<span style="color: #b1b100;">if</span><span style="color: #66cc66;">&#40;</span> <span style="color: #0000ff;">$c</span> &gt; <span style="color: #cc66cc;">1</span> <span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">&#123;</span>
    <span style="color: #000066;">die</span> <span style="color: #ff0000;">&quot;<span style="color: #000099; font-weight: bold;">\n</span>Hello, $author. You can't commit to $c branches at the same time!<span style="color: #000099; font-weight: bold;">\n</span>&quot;</span>;
<span style="color: #66cc66;">&#125;</span>
&nbsp;
<span style="color: #000066;">exit</span><span style="color: #66cc66;">&#40;</span><span style="color: #cc66cc;">0</span><span style="color: #66cc66;">&#41;</span>;</pre></div></div>


<p><a href="http://feedads.googleadservices.com/~a/070l9gk1dsiptl84a9704avfgc/a"><img src="http://feedads.googleadservices.com/~a/070l9gk1dsiptl84a9704avfgc/i" border="0" ismap="true"></img></a></p><img src="http://feedproxy.google.com/~r/cdsheen/~4/wBZ2H2PpnvA" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://blog.urdada.net/2008/07/30/88/feed/</wfw:commentRss>
		<feedburner:origLink>http://blog.urdada.net/2008/07/30/88/</feedburner:origLink></item>
		<item>
		<title>2008 高扣抵稅率概念股</title>
		<link>http://feedproxy.google.com/~r/cdsheen/~3/35TUgtcDRYs/</link>
		<comments>http://blog.urdada.net/2008/05/12/86/#comments</comments>
		<pubDate>Sun, 11 May 2008 23:31:19 +0000</pubDate>
		<dc:creator>dada</dc:creator>
		
		<category><![CDATA[投資理財]]></category>

		<guid isPermaLink="false">http://blog.urdada.net/2008/05/12/86/</guid>
		<description><![CDATA[
經濟日報: 18檔高節稅概念股評析 (2008-05-05)



進一步觀察這些個股的可扣抵稅率，以儒鴻（1476）36.21%最高，中鋼構（2013）35.17%、中鴻（2014）33.38%，另外，全國電（6281）、三星科技（5007）、宣昶（3315）等，可扣抵稅率都超過三成。以中鋼構為例，今年配發的現金股息為1.2元，換言之，若持有一張中鋼構參與今年的除權息，投資人將可獲得1,200元的現金股息，而其可扣抵稅率為35.17%，屆時可扣抵稅額即為422元。
法人指出，股東在申報個人綜合所得稅時，「股東可扣抵稅額」取決於「發放股利」與「稅額扣抵比率」，只要「稅額扣抵比率」高於「個人綜合所得稅率」（區分為免稅、6%、13%、21%、30%與40%），股東參與除權息，不僅可享受到股利或股息報酬，亦可額外獲得抵減稅額，可謂一魚雙吃。

]]></description>
			<content:encoded><![CDATA[<p>
經濟日報: <a href=http://money.udn.com/html/rpt/rpt96682.html target=_blank>18檔高節稅概念股評析</a> (2008-05-05)<br />
<br />
<img src=http://farm4.static.flickr.com/3245/2484342275_544d05128d_o.gif /></p>
<blockquote><p>
進一步觀察這些個股的可扣抵稅率，以儒鴻（1476）36.21%最高，中鋼構（2013）35.17%、中鴻（2014）33.38%，另外，全國電（6281）、三星科技（5007）、宣昶（3315）等，可扣抵稅率都超過三成。以中鋼構為例，今年配發的現金股息為1.2元，換言之，若持有一張中鋼構參與今年的除權息，投資人將可獲得1,200元的現金股息，而其可扣抵稅率為35.17%，屆時可扣抵稅額即為422元。</p>
<p>法人指出，股東在申報個人綜合所得稅時，「股東可扣抵稅額」取決於「發放股利」與「稅額扣抵比率」，只要「稅額扣抵比率」高於「個人綜合所得稅率」（區分為免稅、6%、13%、21%、30%與40%），股東參與除權息，不僅可享受到股利或股息報酬，亦可額外獲得抵減稅額，可謂一魚雙吃。
</p></blockquote>

<p><a href="http://feedads.googleadservices.com/~a/klsk5oknpbci8rd0q72tiijuf8/a"><img src="http://feedads.googleadservices.com/~a/klsk5oknpbci8rd0q72tiijuf8/i" border="0" ismap="true"></img></a></p><img src="http://feedproxy.google.com/~r/cdsheen/~4/35TUgtcDRYs" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://blog.urdada.net/2008/05/12/86/feed/</wfw:commentRss>
		<feedburner:origLink>http://blog.urdada.net/2008/05/12/86/</feedburner:origLink></item>
		<item>
		<title>一個長整數各自表述 (in 64-bit system)</title>
		<link>http://feedproxy.google.com/~r/cdsheen/~3/fhH7S3CGK_A/</link>
		<comments>http://blog.urdada.net/2008/04/18/85/#comments</comments>
		<pubDate>Fri, 18 Apr 2008 14:06:30 +0000</pubDate>
		<dc:creator>dada</dc:creator>
		
		<category><![CDATA[作業系統]]></category>

		<category><![CDATA[程式語言]]></category>

		<guid isPermaLink="false">http://blog.urdada.net/2008/04/18/85/</guid>
		<description><![CDATA[Size of long integer may be different in 64-bit systems (一個長整數各自表述)
不知道是不是我太落伍了...
我一直以為 C/C++ 下面 short, long, long long 三種資料型態都固定是 2, 4, 8 個 bytes 大小。只有 int 這個資料型態會因為 16-bit/32-bit 系統的不同而變成 2 或 4 bytes 的大小，所以理所當然 int 在 64-bit 的電腦也應該會變成 8 bytes (64-bit) 的大小囉 ?!
在整理前一篇文章《Bypass the 2GB file size limit on 32-bit Linux》的時候，讓我驚覺在 64-bit 的系統下，long 的長度也是各自表述的！
首先，int 的大小即使到了 64-bit [...]]]></description>
			<content:encoded><![CDATA[<p>Size of long integer may be different in 64-bit systems (一個長整數各自表述)</p>
<p>不知道是不是我太落伍了...</p>
<p>我一直以為 C/C++ 下面 short, long, long long 三種資料型態都固定是 2, 4, 8 個 bytes 大小。只有 int 這個資料型態會因為 16-bit/32-bit 系統的不同而變成 2 或 4 bytes 的大小，所以理所當然 int 在 64-bit 的電腦也應該會變成 8 bytes (64-bit) 的大小囉 ?!</p>
<p>在整理前一篇文章《<a href=http://blog.urdada.net/2008/04/18/84/ target=_blank>Bypass the 2GB file size limit on 32-bit Linux</a>》的時候，讓我驚覺在 64-bit 的系統下，long 的長度也是各自表述的！</p>
<p>首先，int 的大小即使到了 64-bit 的機器上，大部分的系統仍然使用 4 bytes 的大小而已，這主要是為了避免程式從 32-bit 系統轉換到 64-bit 系統需要修改太多地方</p>
<p>再來，請參考 Wikipedia: <a href=http://en.wikipedia.org/wiki/64-bit#64-bit_data_models target=_blank>64-bit data models</a> 的說明</p>
<p>絕大多數的 UNIX 系統在 64-bit 下面採用 <a href=http://www.unix.org/version2/whatsnew/lp64_wp.html target=_blank>LP64</a> 這種 data model，這時候 long 就不再是固定為 4 bytes 大小，而是變成 8 bytes 的大小了！</p>
<p>然而，Win64 卻不是使用 LP64，而是採用 LLP64 這個 data model，這時候 long 的大小仍然還是 4 bytes</p>
<p><img src=http://farm4.static.flickr.com/3219/2422521769_4f4c50c2f2.jpg /></p>
<p><strong><i>Many 64-bit compilers today use the <strong>LP64</strong> model (including Solaris, AIX, HP, Linux, Mac OS X, and IBM z/OS native compilers). Microsoft's VC++ compiler uses the <strong>LLP64</strong> model.</i></strong></p>
<p>兩種 data model 的最大差異點就是 long 這個資料型態的大小，LP64 是 64-bit，而 LLP64 則是 32-bit</p>
<p>LLP64 data model 基本上可以說跟 32-bit 的系統一樣，唯一差別只有位址(pointer)改成了 64-bit 而已。資料物件(class, structure) 等如果沒有包含 pointer 的成員的話，整個物件的大小是與 32-bit 系統一樣的！</p>
<p>而 LP64 則是除了位址(pointer)改成 64-bit 之外，long 的大小也變成了 64-bit 大小。所以在 UNIX 下面，要把 32-bit 程式 porting 到 64-bit 可能要比 Windows 多花費多一點功夫。</p>
<p>所以呢，我們觀察到兩個問題影響著程式的相容性</p>
<ol>
<li>在 UNIX 下面，long 的大小在 32-bit 與 64-bit 的系統下是不一樣的
<li>同樣是 64-bit 系統，UNIX 與 Windows 對於 long 的大小看法是不一致的
</ol>
<p>為了使程式在 32-bit 與 64-bit 之間以及 UNIX 與 Windows 之間的相容性提昇，改用固定長度的資料型態是寫程式的一個好習慣</p>
<p>在 UNIX 下面，我們可以改用 <a href=http://en.wikipedia.org/wiki/Stdint.h target=_blank>stdint.h</a> 這個 header file 中對於資料型態的定義:</p>
<pre>
int8_t     8-bit signed interger
int16_t    16-bit signed interger
int32_t    32-bit signed interger
int64_t    64-bit signed interger
uint8_t    8-bit unsigned interger
uint16_t   16-bit unsigned interger
uint32_t   32-bit unsigned interger
uint64_t   64-bit unsigned interger
</pre>
<p>在 Windows 下面，則改用下面這些整數固定大小的資料型態</p>
<pre>
INT8       8-bit signed integer
INT16      16-bit signed integer
INT32      32-bit signed integer
INT64      64-bit signed integer
UINT8      8-bit unsigned integer
UINT16     16-bit unsigned integer
UINT32     32-bit unsigned integer
UINT64     64-bit unsigned integer
</pre>
<p>絕對不要再使用 int 和 long 了！</p>
<p>尤其是寫網路程式時，很可能 client 是 Windows 而 server 是 UNIX，然後又有 32-bit 及 64-bit 系統混在裡面，一不小心就發生不相容的問題了...</p>
<p>當然，在 64-bit 的系統下寫程式，要考慮的絕對不只上面這些基本的資料型態。除了 pointer 的大小變成 64-bit 外，許多系統內建函式會用到的 size_t 及 off_t 的大小也變成 64-bit 了.... 寫程式時若有用到這些資料型態，需特別注意，尤其是 casting 時，千萬不要用 32-bit 的整數去裝這些資料，免得造成不可預期的結果！</p>
<p>最後提供一個小程式讓你得知你的系統主要資料型態的大小</p>

<div class="wp_syntax"><div class="code"><pre class="c"><span style="color: #339933;">#include &lt;stdio.h&gt;</span>
<span style="color: #339933;">#include &lt;sys/types.h&gt;</span>
<span style="color: #993333;">int</span> main<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>
<span style="color: #66cc66;">&#123;</span>
        <span style="color: #000066;">printf</span><span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">&quot;sizeof(short)     = %d<span style="color: #000099; font-weight: bold;">\n</span>&quot;</span>, <span style="color: #993333;">sizeof</span><span style="color: #66cc66;">&#40;</span><span style="color: #993333;">short</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>;
        <span style="color: #000066;">printf</span><span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">&quot;sizeof(int)       = %d<span style="color: #000099; font-weight: bold;">\n</span>&quot;</span>, <span style="color: #993333;">sizeof</span><span style="color: #66cc66;">&#40;</span><span style="color: #993333;">int</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>;
        <span style="color: #000066;">printf</span><span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">&quot;sizeof(long)      = %d<span style="color: #000099; font-weight: bold;">\n</span>&quot;</span>, <span style="color: #993333;">sizeof</span><span style="color: #66cc66;">&#40;</span><span style="color: #993333;">long</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>;
        <span style="color: #000066;">printf</span><span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">&quot;sizeof(long long) = %d<span style="color: #000099; font-weight: bold;">\n</span><span style="color: #000099; font-weight: bold;">\n</span>&quot;</span>, <span style="color: #993333;">sizeof</span><span style="color: #66cc66;">&#40;</span><span style="color: #993333;">long</span> <span style="color: #993333;">long</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>;
&nbsp;
        <span style="color: #000066;">printf</span><span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">&quot;sizeof(size_t)    = %d<span style="color: #000099; font-weight: bold;">\n</span>&quot;</span>, <span style="color: #993333;">sizeof</span><span style="color: #66cc66;">&#40;</span>size_t<span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>;
        <span style="color: #000066;">printf</span><span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">&quot;sizeof(off_t)     = %d<span style="color: #000099; font-weight: bold;">\n</span>&quot;</span>, <span style="color: #993333;">sizeof</span><span style="color: #66cc66;">&#40;</span>off_t<span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>;
        <span style="color: #000066;">printf</span><span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">&quot;sizeof(void *)    = %d<span style="color: #000099; font-weight: bold;">\n</span>&quot;</span>, <span style="color: #993333;">sizeof</span><span style="color: #66cc66;">&#40;</span><span style="color: #993333;">void</span> *<span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>;
<span style="color: #66cc66;">&#125;</span></pre></div></div>

<p>參考資料:</p>
<ol>
<li>Wikipedia: <a href=http://en.wikipedia.org/wiki/64-bit#64-bit_data_models target=_blank>64-bit data models</a>
<li><a href=http://www.unix.org/version2/whatsnew/lp64_wp.html target=_blank>64-Bit Programming Models: Why LP64?</a>
<li><a href=http://technet.microsoft.com/en-us/library/bb496995.aspx target=_blank>Introduction to Win32/Win64</a>
<li><a href=http://softwarecommunity.intel.com/articles/eng/1660.htm target=_blank>Porting 32-bit Applications to the Itanium® Architecture</a>
<li><a href=http://cache-www.intel.com/cd/00/00/01/79/17969_codeclean_r02.pdf target=_blank>Preparing Code for the IA-64 Architecture</a> (PDF)
</ol>

<p><a href="http://feedads.googleadservices.com/~a/a7sl5ok8nbs5glrcgjqg5pkijg/a"><img src="http://feedads.googleadservices.com/~a/a7sl5ok8nbs5glrcgjqg5pkijg/i" border="0" ismap="true"></img></a></p><img src="http://feedproxy.google.com/~r/cdsheen/~4/fhH7S3CGK_A" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://blog.urdada.net/2008/04/18/85/feed/</wfw:commentRss>
		<feedburner:origLink>http://blog.urdada.net/2008/04/18/85/</feedburner:origLink></item>
		<item>
		<title>Bypass the 2GB file size limit on 32-bit Linux</title>
		<link>http://feedproxy.google.com/~r/cdsheen/~3/SaNWg-g-SmQ/</link>
		<comments>http://blog.urdada.net/2008/04/18/84/#comments</comments>
		<pubDate>Thu, 17 Apr 2008 18:18:56 +0000</pubDate>
		<dc:creator>dada</dc:creator>
		
		<category><![CDATA[作業系統]]></category>

		<guid isPermaLink="false">http://blog.urdada.net/2008/04/18/84/</guid>
		<description><![CDATA[Bypass the 2GB file size limit on 32-bit Linux (在 Linux 上面突破 2GB 的檔案大小限制)
在 32 位元的 Linux 上面寫超過 2GB 的檔案會發生錯誤，甚至導致程式終止執行
這是因為 Linux 的系統內部處理檔案時用的指標定義為 long，而 long 在 32 位元的系統上的大小為 32 位元，因此最大只能支援 2^31-1 = 2,147,483,647 bytes 等於是 2GB 扣掉 1 byte 的檔案大小
64 位元的系統 (例如 AMD64 或 IA64) 則因為 long 定義成 64 位元，所以不會有問題..

#  if __WORDSIZE == 64
typedef long [...]]]></description>
			<content:encoded><![CDATA[<p>Bypass the 2GB file size limit on 32-bit Linux (在 Linux 上面突破 2GB 的檔案大小限制)</p>
<p>在 32 位元的 Linux 上面寫超過 2GB 的檔案會發生錯誤，甚至導致程式終止執行</p>
<p>這是因為 Linux 的系統內部處理檔案時用的指標定義為 long，而 long 在 32 位元的系統上的大小為 32 位元，因此最大只能支援 2^31-1 = 2,147,483,647 bytes 等於是 2GB 扣掉 1 byte 的檔案大小</p>
<p>64 位元的系統 (例如 <a href=http://en.wikipedia.org/wiki/Amd64 target=_blank>AMD64</a> 或 <a href=http://en.wikipedia.org/wiki/IA64 target=_blank>IA64</a>) 則因為 long 定義成 64 位元，所以不會有問題..</p>

<div class="wp_syntax"><div class="code"><pre class="c"><span style="color: #339933;">#  if __WORDSIZE == 64</span>
<span style="color: #993333;">typedef</span> <span style="color: #993333;">long</span> <span style="color: #993333;">int</span> int64_t;
<span style="color: #339933;"># endif</span></pre></div></div>

<p>不過在 FreeBSD 上面，即使是 32 位元的系統，也不會有 2GB 檔案大小的限制，這是因為 FreeBSD 內部處理檔案時，本來就是使用 64 位元的數字當作指標，所以不會有問題</p>
<p>因此在 32 位元的 Linux 上面，程式需要作一些額外處理才能正確寫超過 2GB 的檔案</p>
<p>我們先寫一個小程式來測試一下 (large.c)</p>

<div class="wp_syntax"><div class="code"><pre class="c"><span style="color: #339933;">#include &lt;stdio.h&gt;</span>
<span style="color: #339933;">#include &lt;string.h&gt;</span>
<span style="color: #339933;">#include &lt;stdlib.h&gt;</span>
<span style="color: #339933;">#include &lt;fcntl.h&gt;</span>
<span style="color: #339933;">#include &lt;sys/types.h&gt;</span>
<span style="color: #339933;">#include &lt;sys/stat.h&gt;</span>
<span style="color: #339933;">#include &lt;signal.h&gt;</span>
<span style="color: #339933;">#include &lt;unistd.h&gt;</span>
<span style="color: #339933;">#include &lt;errno.h&gt;</span>
<span style="color: #993333;">void</span> sig_xfsz<span style="color: #66cc66;">&#40;</span><span style="color: #993333;">int</span> sig<span style="color: #66cc66;">&#41;</span>
<span style="color: #66cc66;">&#123;</span>
        <span style="color: #000066;">printf</span><span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">&quot;ERROR: SIGXFSZ (%d) signal received!<span style="color: #000099; font-weight: bold;">\n</span>&quot;</span>, sig<span style="color: #66cc66;">&#41;</span>;
<span style="color: #66cc66;">&#125;</span>
<span style="color: #993333;">int</span> main<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>
<span style="color: #66cc66;">&#123;</span>
        <span style="color: #993333;">int</span>     i, fd;
        <span style="color: #993333;">char</span>    dummy<span style="color: #66cc66;">&#91;</span><span style="color: #cc66cc;">4096</span><span style="color: #66cc66;">&#93;</span>;
&nbsp;
        signal<span style="color: #66cc66;">&#40;</span> SIGXFSZ, sig_xfsz <span style="color: #66cc66;">&#41;</span>;
&nbsp;
        unlink<span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">&quot;large.log&quot;</span><span style="color: #66cc66;">&#41;</span>;
        fd = open<span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">&quot;large.log&quot;</span>, O_CREAT|O_WRONLY, <span style="color: #cc66cc;">0644</span> <span style="color: #66cc66;">&#41;</span>;
&nbsp;
        bzero<span style="color: #66cc66;">&#40;</span> dummy, <span style="color: #cc66cc;">4096</span> <span style="color: #66cc66;">&#41;</span>;
        <span style="color: #808080; font-style: italic;">/* 2GB = 4KB x 524288 */</span>
        <span style="color: #b1b100;">for</span><span style="color: #66cc66;">&#40;</span> i = <span style="color: #cc66cc;">0</span> ; i &lt; <span style="color: #cc66cc;">524287</span> ; i++ <span style="color: #66cc66;">&#41;</span>
                write<span style="color: #66cc66;">&#40;</span> fd, dummy, <span style="color: #cc66cc;">4096</span> <span style="color: #66cc66;">&#41;</span>;
        write<span style="color: #66cc66;">&#40;</span> fd, dummy, <span style="color: #cc66cc;">4095</span> <span style="color: #66cc66;">&#41;</span>;
        <span style="color: #000066;">printf</span><span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">&quot;large.log: 2147483647 bytes<span style="color: #000099; font-weight: bold;">\n</span>&quot;</span><span style="color: #66cc66;">&#41;</span>;
&nbsp;
        <span style="color: #b1b100;">if</span><span style="color: #66cc66;">&#40;</span> write<span style="color: #66cc66;">&#40;</span> fd, dummy, <span style="color: #cc66cc;">1</span> <span style="color: #66cc66;">&#41;</span> &lt; <span style="color: #cc66cc;">0</span> <span style="color: #66cc66;">&#41;</span>
                <span style="color: #000066;">printf</span><span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">&quot;ERROR: %s [errno:%d]<span style="color: #000099; font-weight: bold;">\n</span>&quot;</span>,strerror<span style="color: #66cc66;">&#40;</span>errno<span style="color: #66cc66;">&#41;</span>,errno<span style="color: #66cc66;">&#41;</span>;
        <span style="color: #b1b100;">else</span>
                <span style="color: #000066;">printf</span><span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">&quot;large.log: 2147483648 bytes<span style="color: #000099; font-weight: bold;">\n</span>&quot;</span><span style="color: #66cc66;">&#41;</span>;
&nbsp;
        close<span style="color: #66cc66;">&#40;</span>fd<span style="color: #66cc66;">&#41;</span>;
        exit<span style="color: #66cc66;">&#40;</span><span style="color: #cc66cc;">0</span><span style="color: #66cc66;">&#41;</span>;
<span style="color: #66cc66;">&#125;</span></pre></div></div>

<p>在 32 位元的 Linux 下面，以上程式編譯後若沒有特殊處理，執行結果如下:</p>

<div class="wp_syntax"><div class="code"><pre># gcc -o large32 large.c
# ./large32
large.log: 2147483647 bytes
ERROR: SIGXFSZ (25) signal received!
ERROR: File too large [errno:27]</pre></div></div>

<p>在寫第 2147483648 byte 的時候，程式會收到 signal <a href=http://en.wikipedia.org/wiki/SIGXFSZ target=_blank>SIGXFSZ</a>，同時 write() 會回傳 -1 錯誤，errno 則為 27 (File too large)。更甚者，如果程式沒有像上面一樣去處理 SIGXFSZ 的話，內定的 signal handler 甚至會造成程式停止執行並產生 core dump</p>
<p>接下來，我們在編譯同一個程式的時候加入 -D_FILE_OFFSET_BITS=64 再試看看:</p>

<div class="wp_syntax"><div class="code"><pre># gcc -D_FILE_OFFSET_BITS=64 -o large64 large.c
# ./large64
large.log: 2147483647 bytes
large.log: 2147483648 bytes</pre></div></div>

<p>果然順利突破 2GB 的限制了!</p>
<p>而同樣的程式在 32 位元的 FreeBSD 下面，不論有沒有加這個定義，跑起來都是正確的</p>
<p>不過處理這些大檔案的時候，除了編譯程式時的參數不同外，有些函數的使用上也要作一些調整，例如 fseek() 與 ftell() 這兩個原本使用到 long integer 當作 offset 的函數:</p>

<div class="wp_syntax"><div class="code"><pre class="c"><span style="color: #993333;">int</span> fseek<span style="color: #66cc66;">&#40;</span>FILE *stream, <span style="color: #993333;">long</span> offset, <span style="color: #993333;">int</span> whence<span style="color: #66cc66;">&#41;</span>;
<span style="color: #993333;">long</span> ftell<span style="color: #66cc66;">&#40;</span>FILE *stream<span style="color: #66cc66;">&#41;</span>;</pre></div></div>

<p>只要系統是 32 位元，即使是在 FreeBSD 下面，都需要改為使用 off_t 的版本:</p>

<div class="wp_syntax"><div class="code"><pre class="c"><span style="color: #993333;">int</span> fseeko<span style="color: #66cc66;">&#40;</span>FILE *stream, off_t offset, <span style="color: #993333;">int</span> whence<span style="color: #66cc66;">&#41;</span>;
off_t ftello<span style="color: #66cc66;">&#40;</span>FILE *stream<span style="color: #66cc66;">&#41;</span>;</pre></div></div>

<p>在 Linux 下面，如果 _FILE_OFFSET_BITS 定義為 64，則 off_t 這個型態會自動轉成 64 位元的大小（在 FreeBSD 上面，off_t 本來就是 64 位元的大小)</p>
<p>每種系統支援大於 2GB 的檔案讀寫所需要的編譯選項都會有一些差異，即使是同樣是 Linux 也會因為 32 位元或 64 位元而有不同。有一個簡單的方法可以判斷，就是利用 glibc 提供的 getconf 來取得編譯(compile)以及連結(linking)時所需的參數:</p>

<div class="wp_syntax"><div class="code"><pre># getconf LFS_CFLAGS
-D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64
# getconf LFS_LDFLAGS 
&nbsp;
#</pre></div></div>

<p>上面是在 32 位元的 Redhat Linux 上面跑出來的結果，代表的是在這個系統上，若要讓程式支援 2GB 的檔案讀寫，編譯(compile)時需要加上 -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 這兩個參數，連結(linking)時則不用加任何參數</p>
<p>參考資料:</p>
<ul>
<li><a href=http://www.suse.de/~aj/linux_lfs.html target=_blank>Large File Support in Linux</a>
<li><a href=http://en.wikipedia.org/wiki/Large_file_support target=_blank>LFS: Large File Support</a> (Wikipedia)
</ul>

<p><a href="http://feedads.googleadservices.com/~a/6id3h8e07cmfl13bpbaihc7u2s/a"><img src="http://feedads.googleadservices.com/~a/6id3h8e07cmfl13bpbaihc7u2s/i" border="0" ismap="true"></img></a></p><img src="http://feedproxy.google.com/~r/cdsheen/~4/SaNWg-g-SmQ" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://blog.urdada.net/2008/04/18/84/feed/</wfw:commentRss>
		<feedburner:origLink>http://blog.urdada.net/2008/04/18/84/</feedburner:origLink></item>
		<item>
		<title>China blocked FeedBurner (problem for FeedSmith)</title>
		<link>http://feedproxy.google.com/~r/cdsheen/~3/ixhMwfyZ1PI/</link>
		<comments>http://blog.urdada.net/2008/03/02/82/#comments</comments>
		<pubDate>Sun, 02 Mar 2008 13:00:52 +0000</pubDate>
		<dc:creator>dada</dc:creator>
		
		<category><![CDATA[網路科技]]></category>

		<guid isPermaLink="false">http://blog.urdada.net/2008/03/02/82/</guid>
		<description><![CDATA[這次到大陸出差，讓我發現到一個嚴重的問題，就是 Great Firewall (GFW) 把著名的 feed service provider FeedBurner 給擋掉了，這已經是去年八月發生的事了。所以如果您自己以 WordPress 架設的 blog 使用了 FeedBurner FeedSmith 這個 WordPress plugin，就會有一些奇怪的問題發生...
首先是 blog 的 RSS/Atom 等都無法直接被訂閱了，因為 FeedSmith 自動把 RSS/Atom 導向到 FeedBurner 那邊了，所以大陸那邊的人就無法直接訂閱。
例如: 我的 blog 的 feed 是: http://blog.urdada.net/feed/ 就會被 FeedSmith 使用 HTTP Status Code 307 (Temporary Redirect) 重導到 http://feeds.feedburner.com/cdsheen，所以大陸人就看不到啦...
當然，從大陸透過 Bloglines 或 Google Reader 可能還是可以間接訂閱就是了...
另外一個問題是，所有 RSS/Atom 內文章的原始連結都會被 FeedSmith 代換成 [...]]]></description>
			<content:encoded><![CDATA[<p>這次到大陸出差，讓我發現到一個嚴重的問題，就是 <a href=http://en.wikipedia.org/wiki/Great_Firewall target=_blank>Great Firewall</a> (GFW) 把著名的 feed service provider <a href=http://www.feedburner.com/ target=_blank>FeedBurner</a> 給擋掉了，這已經是去年八月發生的事了。所以如果您自己以 <a href=http://wordpress.org/ target=_blank>WordPress</a> 架設的 blog 使用了 <a href=http://www.feedburner.com/fb/a/help/wordpress_quickstart target=_blank>FeedBurner FeedSmith</a> 這個 <a href=http://wordpress.org/extend/plugins/ target=_blank>WordPress plugin</a>，就會有一些奇怪的問題發生...</p>
<p>首先是 blog 的 <a href=http://en.wikipedia.org/wiki/RSS_(file_format) target=_blank>RSS</a>/<a href=http://en.wikipedia.org/wiki/Atom_%28standard%29 target=_blank>Atom</a> 等都無法直接被訂閱了，因為 FeedSmith 自動把 RSS/Atom 導向到 FeedBurner 那邊了，所以大陸那邊的人就無法直接訂閱。</p>
<p>例如: 我的 blog 的 feed 是: <a href=http://blog.urdada.net/feed/ target=_blank>http://blog.urdada.net/feed/</a> 就會被 FeedSmith 使用 <a href=http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.3.8 target=_blank>HTTP Status Code 307 (Temporary Redirect)</a> 重導到 <a href=http://feeds.feedburner.com/cdsheen target=_blank>http://feeds.feedburner.com/cdsheen</a>，所以大陸人就看不到啦...</p>
<p>當然，從大陸透過 <a href=http://www.bloglines.com/ target=_blank>Bloglines</a> 或 <a href=http://www.google.com/reader target=_blank>Google Reader</a> 可能還是可以間接訂閱就是了...</p>
<p>另外一個問題是，所有 RSS/Atom 內文章的原始連結都會被 FeedSmith 代換成 FeedBurner 的網址來追蹤點擊率，但是這些連結在大陸都沒有任何作用，無法導回原始網站了... 因此即使大陸人可以使用 Bloglines 或 Google Reader 來間接訂閱，但是當要回原網站查看原文時，也會因為 FeedBurner 被擋而無法正確連結!</p>
<p>暫時還想不到比較好的解決方法，有人建議額外使用一個沒被 GFW 擋掉的 feed service provider 來專門給大陸客使用，例如: <a href=http://www.feedsky.com/ target=_blank>FeedSky</a>，這是大陸的公司，我想應該不會被擋。不過為了不讓阿共仔的陰謀輕易得逞，我暫時還是維持只使用 FeedBurner，但是另外提供一個 feed 讓苦難的大陸同胞訂閱（雖然這樣就無法追蹤那邊的訂閱狀況了..）</p>
<p><strong># cp wp-rss.php rss-china.php</strong></p>
<p>如果您人在大陸，想要訂閱我的 blog，請改用下面這個未經 FeedSmith 處理過的 feed 吧:</p>
<p><a href=http://blog.urdada.net/rss-china.php target=_blank>http://blog.urdada.net/rss-china.php</a></p>
<p>真是無奈... 大陸對於言論審查的尺度一直跟不上經濟自由化的腳步，總有一天會出問題的</p>

<p><a href="http://feedads.googleadservices.com/~a/uian33jcn3pqo8m5msofj3pjdk/a"><img src="http://feedads.googleadservices.com/~a/uian33jcn3pqo8m5msofj3pjdk/i" border="0" ismap="true"></img></a></p><img src="http://feedproxy.google.com/~r/cdsheen/~4/ixhMwfyZ1PI" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://blog.urdada.net/2008/03/02/82/feed/</wfw:commentRss>
		<feedburner:origLink>http://blog.urdada.net/2008/03/02/82/</feedburner:origLink></item>
		<item>
		<title>2008 夜上海俱樂部</title>
		<link>http://feedproxy.google.com/~r/cdsheen/~3/LBJFgcRWUkE/</link>
		<comments>http://blog.urdada.net/2008/02/23/81/#comments</comments>
		<pubDate>Sat, 23 Feb 2008 04:35:54 +0000</pubDate>
		<dc:creator>dada</dc:creator>
		
		<category><![CDATA[趣味軼事]]></category>

		<guid isPermaLink="false">http://blog.urdada.net/2008/02/23/81/</guid>
		<description><![CDATA[2008 夜上海俱樂部
沒錯！這是敝公司今年的春酒主題，一進會場就可看到華麗的舞台佈景：

福委會鼓勵大家以「上海風」的主題打扮，同時會頒發三名最佳服裝造型獎，有豐厚的獎金。許多同事還精心去租借禮服打扮，走入會場彷彿回到民國初年的上海灘..


近年來線上遊戲已經是公司主要的業務，所以會場還擺了輪盤、骰子及 Black Jack 三張賭桌讓大家玩一玩.. 通通玩過後可以換得一張刮刮樂彩券
 
最後是充滿創意的菜單:

節目是還蠻精彩的，開頭還有播放由員工合力自製的爆笑的 MV，會場有樂團的現場演唱，甚至還有請到羅賓老師來表演魔術。唯一遺憾的是，我今年又槓龜了，眼睜睜看著 Sony Bravia 40吋液晶電視、Canon EOS 400D、PSP 以及數十萬的現金大獎落入別人的口袋... 賓果遊戲沒有連線，連拿到的兩張刮刮樂彩券都沒刮中... @@
夜上海俱樂部精彩落幕，巧的是下禮拜就要去上海出差，真正體驗現代的上海灘風情了 XD
]]></description>
			<content:encoded><![CDATA[<p>2008 夜上海俱樂部</p>
<p>沒錯！這是敝公司今年的春酒主題，一進會場就可看到華麗的舞台佈景：</p>
<p><img src=http://farm4.static.flickr.com/3132/2285292394_e3fca8549c.jpg /></p>
<p>福委會鼓勵大家以「上海風」的主題打扮，同時會頒發三名最佳服裝造型獎，有豐厚的獎金。許多同事還精心去租借禮服打扮，走入會場彷彿回到民國初年的<a href=http://zh.wikipedia.org/w/index.php?title=%E4%B8%8A%E6%B5%B7&#038;variant=zh-tw target=_blank>上海灘</a>..</p>
<p><img src=http://farm3.static.flickr.com/2220/2285294624_0fa0ec0367.jpg /><br />
<br />
近年來線上遊戲已經是公司主要的業務，所以會場還擺了輪盤、骰子及 Black Jack 三張賭桌讓大家玩一玩.. 通通玩過後可以換得一張刮刮樂彩券</p>
<p><img src=http://farm4.static.flickr.com/3231/2284510919_3f4ee6d31a_m.jpg /> <img src=http://farm3.static.flickr.com/2056/2284512683_afb8a7329b_m.jpg /></p>
<p>最後是充滿創意的菜單:<br />
<img src=http://farm3.static.flickr.com/2044/2284502315_942dd362b0.jpg /></p>
<p>節目是還蠻精彩的，開頭還有播放由員工合力自製的爆笑的 MV，會場有樂團的現場演唱，甚至還有請到羅賓老師來表演魔術。唯一遺憾的是，我今年又槓龜了，眼睜睜看著 <a href=http://en.wikipedia.org/wiki/BRAVIA target=_blank>Sony Bravia</a> 40吋液晶電視、<a href=http://en.wikipedia.org/wiki/Canon_EOS_400D target=_blank>Canon EOS 400D</a>、<a href=http://en.wikipedia.org/wiki/PlayStation_Portable target=_blank>PSP</a> 以及數十萬的現金大獎落入別人的口袋... 賓果遊戲沒有連線，連拿到的兩張刮刮樂彩券都沒刮中... @@</p>
<p>夜上海俱樂部精彩落幕，巧的是下禮拜就要去上海出差，真正體驗現代的上海灘風情了 XD</p>

<p><a href="http://feedads.googleadservices.com/~a/vfqej55t5ngqoaq0u0jh01t1o8/a"><img src="http://feedads.googleadservices.com/~a/vfqej55t5ngqoaq0u0jh01t1o8/i" border="0" ismap="true"></img></a></p><img src="http://feedproxy.google.com/~r/cdsheen/~4/LBJFgcRWUkE" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://blog.urdada.net/2008/02/23/81/feed/</wfw:commentRss>
		<feedburner:origLink>http://blog.urdada.net/2008/02/23/81/</feedburner:origLink></item>
		<item>
		<title>富邦momo購物網的 Touch Cruise 驚爆價!(標錯價?)</title>
		<link>http://feedproxy.google.com/~r/cdsheen/~3/XeYf1ZO2NGg/</link>
		<comments>http://blog.urdada.net/2008/02/14/80/#comments</comments>
		<pubDate>Thu, 14 Feb 2008 14:40:54 +0000</pubDate>
		<dc:creator>dada</dc:creator>
		
		<category><![CDATA[趣味軼事]]></category>

		<guid isPermaLink="false">http://blog.urdada.net/2008/02/14/80/</guid>
		<description><![CDATA[話說一個禮拜前貼的一篇文章才提到說我的手機 Siemens 3618 用了五年多了，一直都還是頭好壯壯的，沒想到今天慘事就發生了...


液晶畫面突然變得亂七八糟，雖然看起來還可以接聽來電，但根本看不出來是誰找我，也無法查詢電話簿，看來真的是該換一隻手機了...
不過這一篇的重點不在這邊...
我從 momo 富邦購物網訂購（疑似標錯價錢）的 HTC Touch Cruise PDA 手機今天又有最新消息了，下午有一位 momo 的客服人員打電話過來，說我訂購的手機缺貨，可能要一陣子才能到貨，問我要不要取消訂單。我當然是嚴詞拒絕囉，要求 momo 必須依照網站上的說明於五個工作天內到貨。而且既然客服人員這樣說明，就表示沒有標錯價錢的問題囉 !?
不過這隻手機雖然熱門，但也不可能達到這麼缺貨的地步，網路上甚至有人說被 momo 客服告知要兩個月才會到貨！其實就算標錯價錢，還是有辦法協商的，購物網站仍不見得要完全履行（可參考之前的聯邦銀行案例）如果富邦想用這招來騙買家取消訂單，未免也太低級了一點... 而且這樣可能適得其反，富邦是不是就等於承認沒有標錯價錢了呢？如果有人不接受取消訂單，那 momo 是不是兩個月內都不用想賣這支手機了呢？ 沒貨源還放上網站去賣，momo 以後不想混了嗎？
從 momo 網站的訂單查詢已經可以看到目前我這筆訂單處於「物流作業」狀態：


另外，我使用信用卡分期繳費，也已經在信用卡網站上看到第一期的扣款了


關於 momo 富邦購物網這次出的包，可參考 Mobile01 上的 [相關討論]，上面還有人說去年十二月底已經遇過相同的事了，那時主角是 HTC 的手機 TyTN II，富邦反悔推說沒貨，強制取消訂單，只送了一個保溫杯，沒想到現在又來一次，這個網站問題還真大...
[2008/02/21 update] 後來 momo 客服說 23 號才會出貨，目前東西還沒收到，慢慢等囉
[2008/02/23 update] 還是沒有收到貨，客服說 HTC 把貨扣住了，真爛的理由..
[2008/02/25 update] 出發到大陸上海出差，但東西還沒收到
[2008/03/01 update] 晚上回到台灣，大樓警衛說剛好今天到貨了，有圖有真相:
 
[總結]
2008/02/07 大年初一訂貨，二十三天後(2008/03/01) 收到貨品 (照規定應於五個工作日內到貨)，與市價約有五千多元價差，從頭到尾富邦 momo 都沒說這是標錯價錢，看來真的是驚爆價吧  [...]]]></description>
			<content:encoded><![CDATA[<p>話說一個禮拜前貼的一篇<a href=http://blog.urdada.net/2008/02/07/79/ target=_blank>文章</a>才提到說我的手機 Siemens 3618 用了五年多了，一直都還是頭好壯壯的，沒想到今天慘事就發生了...</p>
<p><img src=http://farm3.static.flickr.com/2039/2264334787_9ea3dbdab7_m.jpg /><br />
<br />
液晶畫面突然變得亂七八糟，雖然看起來還可以接聽來電，但根本看不出來是誰找我，也無法查詢電話簿，看來真的是該換一隻手機了...</p>
<p>不過這一篇的重點不在這邊...</p>
<p>我從 momo 富邦購物網訂購（<a href=http://blog.urdada.net/2008/02/07/79/ target=_blank>疑似標錯價錢</a>）的 HTC Touch Cruise PDA 手機今天又有最新消息了，下午有一位 momo 的客服人員打電話過來，說我訂購的手機缺貨，可能要一陣子才能到貨，問我要不要取消訂單。我當然是嚴詞拒絕囉，要求 momo 必須依照網站上的說明於五個工作天內到貨。而且<b>既然客服人員這樣說明，就表示沒有標錯價錢的問題囉</b> !?</p>
<p>不過這隻手機雖然熱門，但也不可能達到這麼缺貨的地步，<a href=http://www.mobile01.com/topicdetail.php?f=224&#038;t=520693 target=_blank>網路上</a>甚至有人說被 momo 客服告知要兩個月才會到貨！其實就算標錯價錢，還是有辦法協商的，購物網站仍不見得要完全履行（可參考之前的<a href=http://blog.urdada.net/2008/02/07/79/#ubot target=_blank>聯邦銀行案例</a>）如果富邦想用這招來騙買家取消訂單，未免也太低級了一點... 而且這樣可能適得其反，富邦是不是就等於承認沒有標錯價錢了呢？如果有人不接受取消訂單，那 momo 是不是兩個月內都不用想賣這支手機了呢？ 沒貨源還放上網站去賣，momo 以後不想混了嗎？</p>
<p>從 momo 網站的訂單查詢已經可以看到目前我這筆訂單處於「物流作業」狀態：</p>
<p><img src=http://farm3.static.flickr.com/2259/2265127110_8c2552cb1f.jpg class=border border=1 /><br />
<br />
另外，我使用信用卡分期繳費，也已經在信用卡網站上看到第一期的扣款了</p>
<p><img src=http://farm3.static.flickr.com/2010/2264334835_dd6108a927.jpg class=border border=1 /><br />
<br />
關於 momo 富邦購物網這次出的包，可參考 Mobile01 上的 [<a href=http://www.mobile01.com/topicdetail.php?f=224&#038;t=520693 target=_blank>相關討論</a>]，上面還有人說去年十二月底已經遇過相同的事了，那時主角是 HTC 的手機 TyTN II，富邦反悔推說沒貨，強制取消訂單，只送了一個保溫杯，沒想到現在又來一次，這個網站問題還真大...</p>
<p>[2008/02/21 update] 後來 momo 客服說 23 號才會出貨，目前東西還沒收到，慢慢等囉<br />
[2008/02/23 update] 還是沒有收到貨，客服說 HTC 把貨扣住了，真爛的理由..<br />
[2008/02/25 update] 出發到大陸上海出差，但東西還沒收到<br />
[2008/03/01 update] 晚上回到台灣，大樓警衛說剛好今天到貨了，有圖有真相:</p>
<p><img src=http://farm3.static.flickr.com/2227/2302293276_fc67378e79_m.jpg /> <img src=http://farm3.static.flickr.com/2088/2303493896_a7d565d313_m.jpg /></p>
<p><b>[總結]</b><br />
2008/02/07 大年初一<a href=http://blog.urdada.net/2008/02/07/79/>訂貨</a>，二十三天後(2008/03/01) 收到貨品 (照規定應於五個工作日內到貨)，與市價約有五千多元價差，從頭到尾富邦 momo 都沒說這是標錯價錢，看來真的是驚爆價吧  <img src='http://blog.urdada.net/wp-includes/images/smilies/icon_rolleyes.gif' alt=':roll:' class='wp-smiley' /> </p>

<p><a href="http://feedads.googleadservices.com/~a/2ol0j1ieceucue8b4r1kkpovg0/a"><img src="http://feedads.googleadservices.com/~a/2ol0j1ieceucue8b4r1kkpovg0/i" border="0" ismap="true"></img></a></p><img src="http://feedproxy.google.com/~r/cdsheen/~4/XeYf1ZO2NGg" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://blog.urdada.net/2008/02/14/80/feed/</wfw:commentRss>
		<feedburner:origLink>http://blog.urdada.net/2008/02/14/80/</feedburner:origLink></item>
		<item>
		<title>鼠年給自己的第一個新年禮物 HTC Touch Cruise</title>
		<link>http://feedproxy.google.com/~r/cdsheen/~3/RQ-zNEqkUQM/</link>
		<comments>http://blog.urdada.net/2008/02/07/79/#comments</comments>
		<pubDate>Thu, 07 Feb 2008 15:30:13 +0000</pubDate>
		<dc:creator>dada</dc:creator>
		
		<category><![CDATA[趣味軼事]]></category>

		<guid isPermaLink="false">http://blog.urdada.net/2008/02/08/79/</guid>
		<description><![CDATA[鼠年第一篇，祝大家新年快樂，鼠年發大財！
昨天除夕夜，用免費簡訊送了幾十通拜年簡訊出去，元宵節前去註冊都還有送100通免費簡訊，想用的人去玩看看吧。註冊時要輸入電話號碼以及真實姓名，據說填錯姓名不會獲得免費點數，雖然我沒試過填假名字，但是有點好奇這家公司怎麼去跟電信公司驗證註冊者的真實姓名，不曉得有沒有違反「電腦處理個人資料保護法」
我的手機 Siemens 3618 (沙漠風暴) 小橘已經用了五年多了，這支號稱防塵防震的運動型手機還真的蠻耐用的，摔了無數次，還曾經掉到馬桶裡面，到現在除了電池弱一點，其他功能都沒有任何問題，我想再用個一兩年應該不是問題。


不過，看到同事用 PDA 手機用的很高興，也興起我想買一支有 GPS 功能 PDA 手機來玩看看的念頭。今年一月底宏達電出了一支 Touch Cruise，3.5G+Wifi+Bluetooth+GPS+AF，看來外型及功能都符合我的需求，我想應該就是這支了，打算過年後就去買。這支手機在電腦家的訂價為 $24,990，據說一般通信行最低約可以拿到約 $22,500 的價格（不綁約）。
話說今天大年初一早上，無意中在 momo 富邦購物網 發現 HTC Touch Cruise「驚爆價」只賣 $16,688 元，不確定是促銷還是標錯價錢:


不過上面這項在我看到的時候已經買不到了，但有另一個可分12期的賣 $17,588 元，雖然較貴一點但是還是算便宜:


剛開始買的時候，填入信用卡卡號後，還是一樣跟我說商品數量不足，買不到。不過不死心的我過一個小時又試了一次，沒想到竟然成功了...


哈哈，就當作鼠年給自己的第一個新年禮物囉   希望富邦不要反悔不出貨就好了

話說將近四年前我也遇過類似的案件，聯邦銀行的購物網站 UBMall 賣一台當時市價約19萬的Panasonic 37吋電漿電視，網路上標價僅為19,499元，我就刷卡買了1台，後來聯邦銀行發現錯誤（少標了一個零），跑來和解希望取消訂單，我接受了，不過也收到了幾樣贈品以及6,000元的和解金。當時有十幾個人堅持不願接受和解，分別告上法院要求履行契約，後來結果法院好像均判決聯邦銀行不用履行契約，詳細資訊可參考這邊。
不過每個案件的情況不同，聯邦銀行這個案件當時判決理由之一是「原告既有意購買此類電視，依社會通念及客觀情況判斷，理應曾於市場訪價並知悉該類商品之市場一般價格，故被告聯邦銀行絕無可能以低於二萬元價格於網路上販售系爭電漿電視，此應為原告所明知或可得而知，揆諸前揭說明，原告應無可資保護之信賴利益」。但這次價差只有幾千元，看起來很像是促銷，尤其第一個網頁商品說明還寫著「驚爆價」，與聯邦銀行案件的情況不同，就看富邦怎麼處理囉。
]]></description>
			<content:encoded><![CDATA[<p>鼠年第一篇，祝大家新年快樂，鼠年發大財！</p>
<p>昨天除夕夜，用<a href=http://msg.mitake.com.tw/ target=_blank>免費簡訊</a>送了幾十通拜年簡訊出去，元宵節前去<a href=http://msg.mitake.com.tw/SMS/AddMember.jsp target=_blank>註冊</a>都還有送100通免費簡訊，想用的人去玩看看吧。註冊時要輸入電話號碼以及真實姓名，據說填錯姓名不會獲得免費點數，雖然我沒試過填假名字，但是有點好奇這家公司怎麼去跟電信公司驗證註冊者的真實姓名，不曉得有沒有違反「<a href=http://www.dgbas.gov.tw/ct.asp?xItem=10116&#038;ctNode=2286 target=_blank>電腦處理個人資料保護法</a>」</p>
<p>我的手機 <a href=http://www.sogi.com.tw/newsogi/sogiindex.asp?pro_no=226 target=_blank>Siemens 3618</a> (沙漠風暴) 小橘已經用了五年多了，這支號稱防塵防震的運動型手機還真的蠻耐用的，摔了無數次，還曾經掉到馬桶裡面，到現在除了電池弱一點，其他功能都沒有任何問題，我想再用個一兩年應該不是問題。</p>
<p><img src=http://farm3.static.flickr.com/2242/2249306499_925a70edbe_m.jpg /><br />
<br />
不過，看到同事用 PDA 手機用的很高興，也興起我想買一支有 GPS 功能 PDA 手機來玩看看的念頭。今年一月底<a href=http://www.htc.com/ target=_blank>宏達電</a>出了一支 <a href=http://www.htc.com/product/03-product_htctouch_cruise.htm target=_blank>Touch Cruise</a>，3.5G+Wifi+Bluetooth+GPS+AF，看來外型及功能都符合我的需求，我想應該就是這支了，打算過年後就去買。這支手機在<a href=http://www.pchome.com.tw/ target=_blank>電腦家</a>的訂價為 $24,990，據說一般通信行最低約可以拿到約 $22,500 的價格（不綁約）。</p>
<p>話說今天大年初一早上，無意中在 <a href=http://www.momoshop.com.tw/ target=_blank>momo 富邦購物網</a> 發現 HTC Touch Cruise「驚爆價」只賣 $16,688 元，不確定是促銷還是標錯價錢:</p>
<p><a href=http://www.flickr.com/photos/urdada/2247799683/ target=blank><img src=http://farm3.static.flickr.com/2219/2247799683_206fe89b9b.jpg class=border /></a><br />
<br />
不過上面這項在我看到的時候已經買不到了，但有另一個可分12期的賣 $17,588 元，雖然較貴一點但是還是算便宜:</p>
<p><a href=http://www.flickr.com/photos/urdada/2247799751/ target=blank><img src=http://farm3.static.flickr.com/2367/2247799751_991ecee9c6.jpg class=border /></a><br />
<br />
剛開始買的時候，填入信用卡卡號後，還是一樣跟我說商品數量不足，買不到。不過不死心的我過一個小時又試了一次，沒想到竟然成功了...</p>
<p><img src=http://farm3.static.flickr.com/2227/2247964211_480d7f44f9.jpg border=1 class=border /><br />
<br />
哈哈，就當作鼠年給自己的第一個新年禮物囉  <img src='http://blog.urdada.net/wp-includes/images/smilies/icon_razz.gif' alt=':razz:' class='wp-smiley' /> 希望富邦不要反悔不出貨就好了</p>
<p><a name=ubot></a><br />
話說將近四年前我也遇過類似的案件，聯邦銀行的購物網站 <a href=http://www.ubmall.com.tw/ target=_blank>UBMall</a> 賣一台當時市價約19萬的Panasonic 37吋電漿電視，網路上標價僅為19,499元，我就刷卡買了1台，後來聯邦銀行發現錯誤（少標了一個零），跑來和解希望取消訂單，我接受了，不過也收到了幾樣贈品以及6,000元的和解金。當時有十幾個人堅持不願接受和解，分別告上法院要求履行契約，後來結果法院好像均判決聯邦銀行不用履行契約，詳細資訊可參考<a href=http://www.oyag.com/rewrite.php/read-9.html target=_blank>這邊</a>。</p>
<p>不過每個案件的情況不同，聯邦銀行這個案件當時判決理由之一是「原告既有意購買此類電視，依社會通念及客觀情況判斷，<b>理應曾於市場訪價並知悉該類商品之市場一般價格，故被告聯邦銀行絕無可能以低於二萬元價格於網路上販售系爭電漿電視</b>，此應為原告所明知或可得而知，揆諸前揭說明，原告應無可資保護之信賴利益」。但這次價差只有幾千元，看起來很像是促銷，尤其第一個網頁商品說明還寫著「驚爆價」，與聯邦銀行案件的情況不同，就看富邦怎麼處理囉。</p>

<p><a href="http://feedads.googleadservices.com/~a/974ve51p5rhu5721s790h4hpr4/a"><img src="http://feedads.googleadservices.com/~a/974ve51p5rhu5721s790h4hpr4/i" border="0" ismap="true"></img></a></p><img src="http://feedproxy.google.com/~r/cdsheen/~4/RQ-zNEqkUQM" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://blog.urdada.net/2008/02/07/79/feed/</wfw:commentRss>
		<feedburner:origLink>http://blog.urdada.net/2008/02/07/79/</feedburner:origLink></item>
		<item>
		<title>Using Flickr API with phpFlickr</title>
		<link>http://feedproxy.google.com/~r/cdsheen/~3/LIFXdvNq3sk/</link>
		<comments>http://blog.urdada.net/2008/01/27/78/#comments</comments>
		<pubDate>Sat, 26 Jan 2008 17:36:11 +0000</pubDate>
		<dc:creator>dada</dc:creator>
		
		<category><![CDATA[網路科技]]></category>

		<guid isPermaLink="false">http://blog.urdada.net/2008/01/27/78/</guid>
		<description><![CDATA[本來我的私人照片都是放到自己架的網站上面的，一直在考慮要不要改放到 Flickr 上面...
最重要的一個考量因素就是與我自己的網站程式容不容易整合
雖然利用 Yahoo 送的免費三個月 Flickr Pro 帳號已經把幾年來、數十本相簿統統丟上去備份了，但一直沒有時間去實驗一下 Flickr API 到底合不合我用
拖了一陣子，結果免費三個月的 Flickr Pro 帳號在今天終於到期了，而且 Flickr Gift 買一年送三個月(備註)的活動也即將在一月底結束了，因此今天還是花了點時間評估了一下 Flickr API，結果還蠻滿意的，這幾天應該就會刷卡買了吧
我用的是 phpFlickr 這套程式庫，使用起來還蠻容易的，所有 Flickr 提供的 API 都有支援，而我要的其實只是列出所有相簿(sets)列表而已。唯一有點可惜的是，Flickr API 還沒有支援珍藏集 (collections)，目前僅能到相簿(sets)這個層次而已，但這不是 phpFlickr 的問題
使用 phpFlickr 前，要先去生一個 Flickr API Key 出來，然後就可以用這個 Key 來連接 Flickr API 了
要用 phpFlickr 程式去使用 Flickr API 需要認證，有兩種模式：
1. 每次都去認證使用者的帳號，phpFlickr 會把你導到 Flickr 的認證頁面再導回來
先把 API Key 的 callback 指到 [...]]]></description>
			<content:encoded><![CDATA[<p>本來我的私人照片都是放到自己架的網站上面的，一直在考慮要不要改放到 <a href=http://www.flickr.com target=_blank>Flickr</a> 上面...<br />
最重要的一個考量因素就是與我自己的網站程式容不容易整合</p>
<p>雖然利用 Yahoo 送的免費三個月 <a href=http://www.flickr.com/upgrade/ target=_blank>Flickr Pro</a> 帳號已經把幾年來、數十本相簿統統丟上去備份了，但一直沒有時間去實驗一下 <a href=http://www.flickr.com/services/api/ target=_blank>Flickr API</a> 到底合不合我用</p>
<p>拖了一陣子，結果免費三個月的 <a href=http://www.flickr.com target=_blank>Flickr Pro</a> 帳號在今天終於到期了，而且 Flickr Gift 買一年送三個月(備註)的活動也即將在一月底結束了，因此今天還是花了點時間評估了一下 Flickr API，結果還蠻滿意的，這幾天應該就會刷卡買了吧</p>
<p>我用的是 <a href=http://phpflickr.com/ target=_blank>phpFlickr</a> 這套程式庫，使用起來還蠻容易的，所有 Flickr 提供的 API 都有支援，而我要的其實只是列出所有相簿(sets)列表而已。唯一有點可惜的是，Flickr API 還沒有支援珍藏集 (collections)，目前僅能到相簿(sets)這個層次而已，但這不是 phpFlickr 的問題</p>
<p>使用 phpFlickr 前，要先去生一個 <a href=http://www.flickr.com/services/api/keys/ target=_blank>Flickr API Key</a> 出來，然後就可以用這個 Key 來連接 Flickr API 了</p>
<p>要用 phpFlickr 程式去使用 Flickr API 需要認證，有兩種模式：</p>
<p><strong>1. 每次都去認證使用者的帳號，phpFlickr 會把你導到 Flickr 的認證頁面再導回來</strong></p>
<p>先把 API Key 的 callback 指到 phpFlickr/auth.php，然後程式呼叫 auth() 後再作想作的事</p>

<div class="wp_syntax"><div class="code"><pre class="php"><span style="color: #000000; font-weight: bold;">&lt;?</span>
&nbsp;
<span style="color: #b1b100;">include</span><span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">'phpFlickr/phpFlickr.php'</span><span style="color: #66cc66;">&#41;</span>;
&nbsp;
<span style="color: #0000ff;">$f</span> = <span style="color: #000000; font-weight: bold;">new</span> phpFlickr<span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">&quot;[API Key]&quot;</span>,<span style="color: #ff0000;">&quot;[Auth Secret]&quot;</span><span style="color: #66cc66;">&#41;</span>;    <span style="color: #808080; font-style: italic;">//  填入 API Key 及 Secret</span>
<span style="color: #0000ff;">$f</span>-&gt;<span style="color: #006600;">auth</span><span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>;
&nbsp;
<span style="color: #808080; font-style: italic;">// 作自己的事</span>
&nbsp;
<span style="color: #000066;">print_r</span><span style="color: #66cc66;">&#40;</span> <span style="color: #0000ff;">$f</span>-&gt;<span style="color: #006600;">photosets_getList</span><span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">&#41;</span>;
&nbsp;
<span style="color: #000000; font-weight: bold;">?&gt;</span></pre></div></div>

<p>呼叫 auth() 會把使用者瀏覽器導到 Flickr 的認證網頁，而程式本身會結束執行：</p>
<p><a href="http://www.flickr.com/photos/urdada/2222101138/" class="tt-flickr"><img src="http://farm3.static.flickr.com/2289/2222101138_dd72077341.jpg" alt="Flickr API authentication" width="500" height="284" class=border /></a> </p>
<p>認證網頁可以讓使用者授權讓你的服務去存取使用者的 Flickr 帳號，不一定是上面產生 API key 的那個帳號。當認證完畢後，Flickr 會再把使用者瀏覽器導回之前設定的 callback (phpFlickr/auth.php)，然後再導回你原本呼叫 auth() 的那隻程式</p>
<p>再導回這個程式時，會有相關認證資訊 (authentication token) 放在 session data 中，這時呼叫 auth() 就不再會把使用者導到其他網頁了，而是會回傳認證的權限狀況，接下來程式就可以作自己的事了</p>
<p>使用者隨時可以經由 <a href=http://www.flickr.com/services/auth/list.gne?from=extend target=_blank>這個網頁</a> 來取消對你的程式的授權:</p>
<p><a href="http://www.flickr.com/photos/urdada/2222127564/" class="tt-flickr"><img src="http://farm3.static.flickr.com/2168/2222127564_71b8049af0.jpg" alt="Flickr extended authentication" width="472" height="170" class=border /></a> </p>
<p><strong>2. 每次都是用固定的帳號去認證，不會導到 Flickr 認證頁面</strong></p>
<p>要使用這種作法，請參考 <a href=http://www.phpflickr.com/tools/auth/ target=_blank>http://www.phpflickr.com/tools/auth/</a> 去產生一個永久的 token，接下來程式就可以直接使用了:</p>

<div class="wp_syntax"><div class="code"><pre class="php"><span style="color: #000000; font-weight: bold;">&lt;?</span>
&nbsp;
<span style="color: #b1b100;">include</span><span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">'phpFlickr/phpFlickr.php'</span><span style="color: #66cc66;">&#41;</span>;
&nbsp;
<span style="color: #0000ff;">$f</span> = <span style="color: #000000; font-weight: bold;">new</span> phpFlickr<span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">&quot;[API Key]&quot;</span>,<span style="color: #ff0000;">&quot;[Auth Secret]&quot;</span><span style="color: #66cc66;">&#41;</span>;    <span style="color: #808080; font-style: italic;">//  填入 API Key 及 Secret</span>
<span style="color: #0000ff;">$f</span>-&gt;<span style="color: #006600;">setToken</span><span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">&quot;[Token]&quot;</span><span style="color: #66cc66;">&#41;</span>;                 <span style="color: #808080; font-style: italic;">// 填入上面產生的 token</span>
&nbsp;
<span style="color: #808080; font-style: italic;">// 作自己的事</span>
&nbsp;
<span style="color: #000066;">print_r</span><span style="color: #66cc66;">&#40;</span> <span style="color: #0000ff;">$f</span>-&gt;<span style="color: #006600;">photosets_getList</span><span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">&#41;</span>;
&nbsp;
<span style="color: #000000; font-weight: bold;">?&gt;</span></pre></div></div>

<p>-----<br />
複雜的認證過後，你就可以開始玩 Flickr API 了...  phpFlickr 支援所有的 Flickr API，詳細列表請直接參照 <a href=http://www.flickr.com/services/api/ target=_blank>API 說明文件</a></p>
<p>例如要得到所有相簿列表必須要呼叫 flickr.photosets.getList 這個 API，在 phpFlickr 裡面就直接呼叫 $f->photosets_getList() 這個函數即可。也就是把 API 名字中的 "flickr." 拿掉，並把 . 換成 _ 就是 phpFlickr 支援的函數名稱了!</p>
<p>更詳細的說明請直接參閱 phpFlickr 的網站: <a href=http://phpflickr.com/ target=_blank>http://phpflickr.com/</a></p>
<p>--<br />
[備註]<br />
Flickr 實際上並沒有買一年送三個月的活動，但是現在可以買一年 Flickr Pro 帳號送別人，自己也會得到免費三個月的 Flickr Pro 帳號，而這個活動並沒有限制你不能送給自己，所以等於是買一年送三個月。</p>
<p>想參加這個活動的人<strong>千萬不要</strong>直接去買一年喔，一定要參加 <a href=http://www.flickr.com/gift/ target=_blank>Flickr Gift</a> 活動 "<strong>送禮物給自己</strong>" 才有多送三個月。</p>
<p>這個活動於太平洋時間 2008 年 1 月 31 日晚上 11時59分 (GMT-8) 結束，也就是台北時間 2008 年 2 月 1 日下午 3時59分 (GMT+8)，想買 Flickr Pro 的人請把握時間囉...</p>

<p><a href="http://feedads.googleadservices.com/~a/bsv7q5or60rfl34ujs6pen9gug/a"><img src="http://feedads.googleadservices.com/~a/bsv7q5or60rfl34ujs6pen9gug/i" border="0" ismap="true"></img></a></p><img src="http://feedproxy.google.com/~r/cdsheen/~4/LIFXdvNq3sk" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://blog.urdada.net/2008/01/27/78/feed/</wfw:commentRss>
		<feedburner:origLink>http://blog.urdada.net/2008/01/27/78/</feedburner:origLink></item>
		<item>
		<title>SDHC support on Thinkpad X60</title>
		<link>http://feedproxy.google.com/~r/cdsheen/~3/pOBy2XiqzUo/</link>
		<comments>http://blog.urdada.net/2008/01/19/77/#comments</comments>
		<pubDate>Fri, 18 Jan 2008 17:29:05 +0000</pubDate>
		<dc:creator>dada</dc:creator>
		
		<category><![CDATA[硬體]]></category>

		<guid isPermaLink="false">http://blog.urdada.net/2008/01/19/77/</guid>
		<description><![CDATA[Thinkpad X60 原本並沒有 支援 SDHC 卡，把 SDHC 卡插入 X60 左方的 SD 插槽會讀不到
本來以為 X60 對於 SDHC 的支援是無望了，沒想到現在竟然可以了，而且還只要更新作業系統即可... 詳情請參考微軟發佈的 Hotfix 923293
(標題: 在 Windows XP Hotfix 923293 為高容量的 SD 記憶卡加入支援)
不過這個 Hotfix 微軟還沒有釋放出來讓大家下載安裝，未來新的 Service Pack 3 才會放進去，有需要的人必須自己去線上申請，選擇好你的作業系統版本及語言即可
申請之後，微軟就會把 Hotfix 的下載連結寄給你（還有個密碼來解壓縮），正體中文 WinXP 的 Hotfix 檔名為: WindowsXP-KB923293-v4-x86-CHT.exe，怕麻煩的話網路上搜尋一下應該找得到.. 或者寄信給我吧...
安裝此 Hotfix、重新開機後，果然可以讀到 SDHC 卡了!  同事的華碩 ASUS W5 (WinXP) 原本也是不能讀 SDHC 卡，服用這帖 Hotfix 後也 OK [...]]]></description>
			<content:encoded><![CDATA[<p><a href=http://www.tpuser.idv.tw/articles/x60-test-main.htm target=_blank>Thinkpad X60</a> 原本並沒有 支援 <a href=http://zh.wikipedia.org/wiki/SDHC target=_blank>SDHC</a> 卡，把 SDHC 卡插入 X60 左方的 <a href=http://zh.wikipedia.org/wiki/Secure_Digital target=_blank>SD</a> 插槽會讀不到</p>
<p>本來以為 X60 對於 SDHC 的支援是無望了，沒想到現在竟然可以了，而且還只要更新作業系統即可... 詳情請參考微軟發佈的 <a href=http://support.microsoft.com/kb/923293 target=_blank>Hotfix 923293</a><br />
(標題: 在 Windows XP Hotfix 923293 為高容量的 SD 記憶卡加入支援)</p>
<p>不過這個 Hotfix 微軟還沒有釋放出來讓大家下載安裝，未來新的 Service Pack 3 才會放進去，有需要的人必須自己去<a href=http://go.microsoft.com/?linkid=6294451 target=_blank>線上申請</a>，選擇好你的作業系統版本及語言即可</p>
<p>申請之後，微軟就會把 Hotfix 的下載連結寄給你（還有個密碼來解壓縮），正體中文 WinXP 的 Hotfix 檔名為: WindowsXP-KB923293-v4-x86-CHT.exe，怕麻煩的話網路上搜尋一下應該找得到.. 或者寄信給我吧...</p>
<p>安裝此 Hotfix、重新開機後，果然可以讀到 SDHC 卡了!  同事的華碩 ASUS W5 (WinXP) 原本也是不能讀 SDHC 卡，服用這帖 Hotfix 後也 OK 了</p>
<p>Yeah! 這樣方便多了</p>
<p>2008/04/30 update: Windows XP SP3 已經包含這個修正了，不需要再特別安裝 hotfix 了...</p>

<p><a href="http://feedads.googleadservices.com/~a/cscmegs31q42ubpj97u66ju6cs/a"><img src="http://feedads.googleadservices.com/~a/cscmegs31q42ubpj97u66ju6cs/i" border="0" ismap="true"></img></a></p><img src="http://feedproxy.google.com/~r/cdsheen/~4/pOBy2XiqzUo" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://blog.urdada.net/2008/01/19/77/feed/</wfw:commentRss>
		<feedburner:origLink>http://blog.urdada.net/2008/01/19/77/</feedburner:origLink></item>
	</channel>
</rss>
