<?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>whatup 的 blog</title>
	<atom:link href="http://blog.twkang.net/feed/" rel="self" type="application/rss+xml" />
	<link>http://blog.twkang.net</link>
	<description>My world, My words, My programming</description>
	<lastBuildDate>Sat, 19 Jun 2010 08:19:55 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0</generator>
		<item>
		<title>How to Build a Hackintosh ?</title>
		<link>http://blog.twkang.net/2010/06/19/how-to-build-a-hackintosh/</link>
		<comments>http://blog.twkang.net/2010/06/19/how-to-build-a-hackintosh/#comments</comments>
		<pubDate>Sat, 19 Jun 2010 08:19:55 +0000</pubDate>
		<dc:creator>whatup</dc:creator>
				<category><![CDATA[MAC]]></category>
		<category><![CDATA[Hackintosh]]></category>
		<category><![CDATA[MACOSX]]></category>
		<category><![CDATA[黑金塔]]></category>

		<guid isPermaLink="false">http://blog.twkang.net/?p=307</guid>
		<description><![CDATA[之前非常多的同事在更換電腦時，就換了 Mac Book Pro ，另外我也看到了一篇文章說在討論「為什麼我用Mac」。所以我非常的好奇， MAC OS X到底有什麼魔力可以讓這些人讚不絕口。在前些日子裡，我就有聽說在 pc 上其實是可以裝 MAC 的，但最主要的問題還是硬體支援的問題。所以下面我列出我所使用的硬體，而CPU、主機板、和顯示卡為三個最重要的要素，如果你的這三個硬體有 MAC OS X 支援的話，在安裝上就沒有太大的問題了。 第一步：準備硬體 我所使用的硬體如下： 主機板：技嘉GA-H55M-USB3 超頻高效能主機板 CPU:Intel Core i5 750 四核心 2.66GHz LGA-1156處理器 顯示卡：微星 MSI N9800GT-MD1G顯示卡 其他的不是很重要，可以拿舊的，或是你喜歡的就好了 第二步：準備軟體 所需要的軟體如下： 原板的 OS X Snow Leopard retail DVD iboot boot disk &#8211; 如果是 i3/i5/i7 直接下載 iboot-supported.zip 並且把 iboot 燒錄成 CD 等等要拿他來作為開機使用。 第三步：設定 bios [...]]]></description>
			<content:encoded><![CDATA[<p>之前非常多的同事在更換電腦時，就換了 Mac Book Pro ，另外我也看到了一篇文章說在討論「<a href="http://blog.vgod.tw/2010/05/26/why-i-use-mac/">為什麼我用Mac</a>」。所以我非常的好奇， MAC OS X到底有什麼魔力可以讓這些人讚不絕口。在前些日子裡，我就有聽說在 pc 上其實是可以裝 MAC 的，但最主要的問題還是硬體支援的問題。所以下面我列出我所使用的硬體，而CPU、主機板、和顯示卡為三個最重要的要素，如果你的這三個硬體有 MAC OS X 支援的話，在安裝上就沒有太大的問題了。</p>
<p><strong>第一步：準備硬體</strong><br />
我所使用的硬體如下：</p>
<ul>
<li>主機板：<a href="http://tw.partner.buy.yahoo.com/gd/buy?mcode=MV9tUUZDUEZCS2JQQUpNK0JPS1o0a0pYamVid3VwR0RYTzhLWDdtNzZ0MTJRPQ==&amp;url=http%3A%2F%2Fbuy.yahoo.com.tw%2Fgdsale%2Fgdsale.asp%3Fgdid%3D1949178%26act%3Dgdsearch">技嘉GA-H55M-USB3 超頻高效能主機板</a></li>
<li>CPU:<a href="http://tw.partner.buy.yahoo.com/gd/buy?mcode=MV9tUUZDUEZCS2JQQUpNK0JPS1o0a0pYamVid3VwR0RYTzhLWDdtNzZ0MTJRPQ==&amp;url=http%3A%2F%2Fbuy.yahoo.com.tw%2Fgdsale%2Fgdsale.asp%3Fgdid%3D1638040%26act%3Dgdsearch">Intel Core i5 750 四核心 2.66GHz LGA-1156處理器</a></li>
<li>顯示卡：<a href="http://tw.partner.buy.yahoo.com/gd/buy?mcode=MV9tUUZDUEZCS2JQQUpNK0JPS1o0a0pYamVid3VwR0RYTzhLWDdtNzZ0MTJRPQ==&amp;url=http%3A%2F%2Fbuy.yahoo.com.tw%2Fgdsale%2Fgdsale.asp%3Fgdid%3D1925843%26act%3Dgdsearch">微星 MSI N9800GT-MD1G顯示卡</a></li>
<li>其他的不是很重要，可以拿舊的，或是你喜歡的就好了</li>
</ul>
<p><strong>第二步：準備軟體</strong><br />
所需要的軟體如下：</p>
<ul>
<li>原板的 OS X Snow Leopard retail DVD</li>
<li><a href="http://tonymacx86.blogspot.com/2010/04/iboot-multibeast-install-mac-os-x-on.html">iboot boot disk</a> &#8211; 如果是 i3/i5/i7 直接下載 <a href="http://www.tonymacx86.com/Public/iBoot-Supported.zip">iboot-supported.zip</a></li>
</ul>
<p>並且把 iboot 燒錄成 CD 等等要拿他來作為開機使用。</p>
<p><strong>第三步：設定 bios </strong><br />
依照「<a href="http://www.makeuseof.com/tag/how-to-install-mac-os-x-on-a-pc-without-using-a-mac/">How to Install Mac OS X on a PC (Without Using a Mac)</a>」這篇所示所需更改的 bios 選項如下：</p>
<ul>
<li>把 cdrom 改為第一個開機選項。</li>
<li>進入 Integrated Peripherals 選單，把 PCH SATA Control Mode 和 Onboard SATA/IDE Ctrl Mode 都改為 ACHI 。</li>
<li>接著進入 Power Management Setup 選單，把  HPET Mode 調成 64-bit 模式。</li>
</ul>
<p><strong>第四步：安裝 MAC OS X</strong><br />
將剛剛燒好的 iboot 光碟放入光碟機中，然後先利用他作為光碟開機。看到 iboot-supported 畫面出現後，把 iboot 光碟拿出來，放入原板 Snow leopard DVD 進去，接著等三到五秒，然後按 F5 。你就會看到安裝的選項跑出來了。其他的安裝方式其實就下一步一直按而已，沒有很難。安裝後第一次開機，請記得使用 iboot 片來作為開機片，否則會出現錯誤。</p>
<p><strong>第五步：安裝 boot loader &#038; drivers</strong><br />
如果你的硬體跟我一樣，哪其他的步驟就照著我所說的選擇就好了，如果不一樣，可能就要上 「<a href="http://wiki.osx86project.org/wiki/index.php/Main_Page">OSx86 Project</a>」找看看別人怎麼選驅動程式。</p>
<ul>
<li>下載 <a href="http://www.tonymacx86.com/Public/MultiBeast.zip">MultiBeast</a></li>
<li>下載 <a href="http://www.tonymacx86.com/Public/DSDT-GA-H55M-USB3-F7.aml">DSDT for the Gigabyte GA-H55M-USB3</a>，然後改名為 DSDT.aml 並且放置於桌面上，等等開啟 multi beast 時才會自動抓到。</li>
<li>開啟 mult beast ，並且選擇下列這些選項：
<ul>
<li>UserDSDT</li>
<li>System Utilities</li>
<li>Advanced Options > Kexts > Audio > LegacyHDA > ALC889</li>
<li>Advanced Options > Kexts > Graphics > NVEnabler</li>
<li>Advanced Options > Kexts > Network > RealtekR1000SL</li>
<li>Advanced Options > Patched Kernels > 10.3.1 Supported Kernel</li>
<p></il>
</li>
</ul>
<p>安裝完後，重新開啟，你就可以快快樂樂開開心心的使用黑金塔了！！</p>
<p><a href="http://photo.twkang.net/whatup/others/_2010-06-19_-4-14-33"><img alt="" src="http://photo.twkang.net/var/resizes/whatup/others/%E8%9E%A2%E5%B9%95%E5%BF%AB%E7%85%A7_2010-06-19_%E4%B8%8B%E5%8D%884.14.33.png" title="黑金塔" class="aligncenter" width="308" height="379" /></a></p>
<p>在剛開始不習慣使用 MAC 的情況下，很多的思維可能不一樣，想找個偏好設定都找不太到，現在越來越順手了，以後再分享一些心得出來。</p>
<p>參考網址：</p>
<ul>
<li><a href="http://wiki.osx86project.org/wiki/index.php/Main_Page">OSx86 Project</a></li>
<li><a href="http://www.makeuseof.com/tag/how-to-install-mac-os-x-on-a-pc-without-using-a-mac/">How to Install Mac OS X on a PC (Without Using a Mac)</a></li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://blog.twkang.net/2010/06/19/how-to-build-a-hackintosh/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>growl for YUI</title>
		<link>http://blog.twkang.net/2010/05/03/growl-for-yui/</link>
		<comments>http://blog.twkang.net/2010/05/03/growl-for-yui/#comments</comments>
		<pubDate>Mon, 03 May 2010 15:40:17 +0000</pubDate>
		<dc:creator>whatup</dc:creator>
				<category><![CDATA[前端技術]]></category>
		<category><![CDATA[growl]]></category>
		<category><![CDATA[js]]></category>
		<category><![CDATA[yui]]></category>

		<guid isPermaLink="false">http://blog.twkang.net/?p=272</guid>
		<description><![CDATA[最近在練習使用 YUI ，剛好想到一個感覺滿炫的主題，就是作 growl style 的 notice 。主要的畫面是參考 Gritter: Growl Notification by jQuery 的畫面，然後再使用 YUI 來實作。 實作方式就是包一個 div 後再把 overlay 塞進去，讓他作 FADE 的顯示和消失，他就會漸漸的出現和漸漸的消失，比我想像中的還簡單。 使用方法如下，首先記得把下列所需的的 js 引入： &#60;script type=&#34;text/javascript&#34; src=&#34;http://yui.yahooapis.com/2.8.0r4/build/yuiloader/yuiloader-min.js&#34;&#62;&#60;/script&#62; &#60;script type=&#34;text/javascript&#34; src=&#34;http://yui.yahooapis.com/2.8.0r4/build/dom/dom-min.js&#34;&#62;&#60;/script&#62; &#60;script type=&#34;text/javascript&#34; src=&#34;http://yui.yahooapis.com/2.8.0r4/build/event/event-min.js&#34;&#62;&#60;/script&#62; &#60;script type=&#34;text/javascript&#34; src=&#34;http://yui.yahooapis.com/2.8.0r4/build/animation/animation-min.js&#34;&#62;&#60;/script&#62; &#60;script type=&#34;text/javascript&#34; src=&#34;http://yui.yahooapis.com/2.8.0r4/build/container/container-min.js&#34;&#62;&#60;/script&#62; 然後下載 yui-growl.tar.gz ，並且解開後，並且引用 yui-growl.js。 &#60;script type=&#34;text/javascript&#34; src=&#34;js/yui-growl.js&#34;&#62;&#60;/script&#62; 在 &#60;body&#62; 之後加入： &#60;div id=&#34;notify&#34;&#62;&#60;/div&#62; 接著加入下列 css [...]]]></description>
			<content:encoded><![CDATA[<p>
最近在練習使用 <a href="http://developer.yahoo.com/yui/">YUI </a>，剛好想到一個感覺滿炫的主題，就是作 growl style 的 notice 。主要的畫面是參考 <a href="http://www.webdevelopmentstuff.com/128/gritter-growl-notification-by-jquery.html">Gritter: Growl Notification by jQuery </a> 的畫面，然後再使用 YUI 來實作。
</p>
<p>
實作方式就是包一個 div 後再把 overlay 塞進去，讓他作 FADE 的顯示和消失，他就會漸漸的出現和漸漸的消失，比我想像中的還簡單。
</p>
<p>
使用方法如下，首先記得把下列所需的的 js 引入：</p>
<pre class="brush: xml;">
    &lt;script type=&quot;text/javascript&quot; src=&quot;http://yui.yahooapis.com/2.8.0r4/build/yuiloader/yuiloader-min.js&quot;&gt;&lt;/script&gt;
    &lt;script type=&quot;text/javascript&quot; src=&quot;http://yui.yahooapis.com/2.8.0r4/build/dom/dom-min.js&quot;&gt;&lt;/script&gt;
    &lt;script type=&quot;text/javascript&quot; src=&quot;http://yui.yahooapis.com/2.8.0r4/build/event/event-min.js&quot;&gt;&lt;/script&gt;
    &lt;script type=&quot;text/javascript&quot; src=&quot;http://yui.yahooapis.com/2.8.0r4/build/animation/animation-min.js&quot;&gt;&lt;/script&gt;
    &lt;script type=&quot;text/javascript&quot; src=&quot;http://yui.yahooapis.com/2.8.0r4/build/container/container-min.js&quot;&gt;&lt;/script&gt;
</pre>
<p>然後下載 <a href="http://www.twkang.net/~whatup/sample/yus-growl.tar.gz">yui-growl.tar.gz</a> ，並且解開後，並且引用 yui-growl.js。</p>
<pre class="brush: xml;">
    &lt;script type=&quot;text/javascript&quot; src=&quot;js/yui-growl.js&quot;&gt;&lt;/script&gt;
</pre>
<p>在 &lt;body&gt; 之後加入：</p>
<pre class="brush: xml;">
&lt;div id=&quot;notify&quot;&gt;&lt;/div&gt;
</pre>
<p>接著加入下列 css style 和 gritter.png 這個圖片，放置於 css 可以讀取到的地方。</p>
<pre class="brush: css;">
 * html #notify {position:absolute; }
 #notify{position:fixed;right:0px;color:#fff;}
 .message{display:block;position:static;width:280px;visibility:hidden;margin:10px;}
 .message div.hd {height:10px;background:url(&quot;gritter.png&quot;) repeat-x scroll 0 -30px transparent}
 .message div.hd span {padding:10px 0 ;}
 .message div.bd {background:url(&quot;gritter.png&quot;) repeat-x scroll 0 -60px transparent}
 .message div.ft {height:10px;background:url(&quot;gritter.png&quot;) repeat-x scroll 0 -300px transparent}
 .message div.ft span {padding:10px 0 ;}
</pre>
<p>可以用下列的使用方法來使用：</p>
<pre class="brush: jscript;">
// message : 顯示的訊息
// seconds : 保持顯示的秒數
Widget.growl(message,seconds);
</pre>
<p>像我的範例裡就是放置在 Click 事件裡面：</p>
<pre class="brush: xml;">
&lt;input type=&quot;text&quot; id=&quot;text&quot;&gt;
&lt;button value=&quot;&quot; onclick=&quot;Widget.growl(YAHOO.util.Dom.get('text').value+ '&lt;br/&gt;'+Math.random(),2);&quot; /&gt;Click me&lt;/button&gt;
</pre>
<p>按下按鈕後，就會彈出訊息給使用者知道了。
</p>
<p>
可以在此看到 <a href="http://www.twkang.net/~whatup/sample/growl.html">demo &amp; source code</a> 。
</p>
<p>
<img src="http://photo.twkang.net/var/resizes/whatup/others/sample.JPG" alt="" /></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.twkang.net/2010/05/03/growl-for-yui/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>MUD eXtension Protocol</title>
		<link>http://blog.twkang.net/2010/04/12/mud-extension-protocol/</link>
		<comments>http://blog.twkang.net/2010/04/12/mud-extension-protocol/#comments</comments>
		<pubDate>Mon, 12 Apr 2010 14:18:32 +0000</pubDate>
		<dc:creator>whatup</dc:creator>
				<category><![CDATA[Mud]]></category>

		<guid isPermaLink="false">http://blog.twkang.net/?p=231</guid>
		<description><![CDATA[MUD eXtension Protocol (MXP) ，是由 Zugg Software 來維護，它可以利用特別的 Tag 讓 client 顯示時別的畫楮，來讓 Server 與 Client 之間互相通溝。所以玩家即可利用滑鼠進行遊戲操作，可大量降低使用者進入 Mud 的門檻。 Server 部份： 要啟動 MXP 除了 Client 要支援之外， Server 在送出資料時分為三種 Mode ，所以我們在送出資料前，要先送出這些資料是什麼模式，模式送錯，就只會顯示原始內容 。 Open mode &#8211; 代號 1： 這是預設的模式，在此模式下可以使用一般合法的 tag ，幾個常用的 Tag 如下： &#60;bold&#62; or &#60;b&#62; &#60;underline&#62; or &#60;u&#62; &#60;italic&#62; or &#60;i&#62; &#60;color&#62; or &#60;c&#62; &#60;font&#62; &#60;strike&#62; or [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://en.wikipedia.org/wiki/MXP_(computing)">MUD eXtension Protocol</a> (MXP) ，是由  <a href="http://www.zuggsoft.com">Zugg Software</a> 來<a href="http://www.zuggsoft.com/zmud/mxp.htm#Overview of MXP">維護</a>，它可以利用特別的 Tag 讓 client 顯示時別的畫楮，來讓 Server 與 Client 之間互相通溝。所以玩家即可利用滑鼠進行遊戲操作，可大量降低使用者進入 Mud 的門檻。</p>
<p><strong>Server 部份：</strong></p>
<p>要啟動 MXP 除了 Client 要支援之外， Server 在送出資料時分為三種 Mode ，所以我們在送出資料前，要先送出這些資料是什麼模式，模式送錯，就只會顯示原始內容 。</p>
<ol>
<li>Open mode  &#8211; 代號 1：<br />
這是預設的模式，在此模式下可以使用一般合法的 tag ，幾個常用的 Tag 如下：</p>
<pre class="brush: xml;">
&lt;bold&gt; or &lt;b&gt;
&lt;underline&gt; or &lt;u&gt;
&lt;italic&gt; or &lt;i&gt;
&lt;color&gt; or &lt;c&gt;
&lt;font&gt;
&lt;strike&gt; or &lt;s&gt;
&lt;strong&gt;
&lt;small&gt;
&lt;tt&gt;
</pre>
</li>
<li>Secure mode &#8211; 代號 2 ：<br />
這個模式可以使用特別的 command 來與 client 端互動，例如：east，他就會出現有底線的 east ，使用者只要點 east ，就會自動往東走。其他相關的資訊請參考 <a href="http://www.gammon.com.au/forum/bbshowpost.php?bbsubject_id=238">Secure Tag</a> 。</li>
<li>Locked mode &#8211; 代號 3 ：<br />
這是原始碼模式，這個部份將不會特別處理，直接顯示。</li>
<li>其餘模式請參考：<a href="http://www.gammon.com.au/forum/bbshowpost.php?bbsubject_id=222">MXP modes &#8211; secure, open and locked</a> 這篇文章。</li>
</ol>
<p><strong>Client 部份：</strong></p>
<p>目前支援 mxp 的 Client 只有 <a href="http://www.gammon.com.au/welcome.html">MUSHClient</a> 與 <a href="http://www.zuggsoft.com/zmud/zmudinfo.htm">Zmud </a>6.5 板以上，其他的 Client 並不支援。</p>
<p>目前狂想空間已經啟用了部份 mxp 的支援，例如在 npc 上點右鍵，可以得到 kill/fight/look 之類的動作。如果點到 item 上面，會有 get/drop 之類的動作。</p>
<p>你現在開啟 zmud 6.5 板以上，連到 fs.twkang.net 5555 ，並且在登入後，打「set mxp」這個指令，即可以開始享用用滑鼠玩 Mud 的樂趣了。</p>
<p style="text-align: center">有圖有真像：<a href="http://photo.twkang.net/whatup/others/zmud"><img class="aligncenter" src="http://photo.twkang.net/var/resizes/whatup/others/zmud.JPG" alt="zmud" width="384" height="183" /></a></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.twkang.net/2010/04/12/mud-extension-protocol/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Let&#8217;s Kill IE6 plugin for wordpress</title>
		<link>http://blog.twkang.net/2010/04/10/lkie6-plugin-for-wordpress/</link>
		<comments>http://blog.twkang.net/2010/04/10/lkie6-plugin-for-wordpress/#comments</comments>
		<pubDate>Sat, 10 Apr 2010 04:41:06 +0000</pubDate>
		<dc:creator>whatup</dc:creator>
				<category><![CDATA[WordPress/lyceum]]></category>
		<category><![CDATA[firefox]]></category>
		<category><![CDATA[ie6]]></category>
		<category><![CDATA[plugin]]></category>
		<category><![CDATA[wordpress]]></category>

		<guid isPermaLink="false">http://blog.twkang.net/?p=251</guid>
		<description><![CDATA[How To Use : You can download from lets_kill_ie6.phps Rename lets_kill_ie6.phps to lets_kill_ie6.php. Put lets_kill_ie6.php to wordpress plugin directory. Active it , and enjoy it. 我在網路上看到由 mg12 所提供消滅建議昇級 IE6 的 javascript ，覺得非常的美觀和有趣。身為 web Developer ，對於萬惡的 IE 6 非常的痛恨是很正常的，尤於要花費非常多的心力來支援它，所以大家快點幫忙把 IE6 消滅吧。 所以為了讓 wordpress 非常方便的可以使用該功能，我就作了一個 wordpress plugin 來協助啟用他，才不用更動每一個 template 。下面介紹如何安裝這個 plugin : 下載 lets_kill_ie6.phps 把檔名改為 lets_kill_ie6.php. 將他放在 [...]]]></description>
			<content:encoded><![CDATA[<p>How To Use :</p>
<ol>
<li>You can download from <a href="http://www.twkang.net/~whatup/php/lets_kill_ie6.phps">lets_kill_ie6.phps</a></li>
<li>Rename lets_kill_ie6.phps to lets_kill_ie6.php.</li>
<li>Put lets_kill_ie6.php to wordpress plugin directory.</li>
<li>Active it , and enjoy it.</li>
</ol>
<p>我在網路上看到由 mg12 所提供<del datetime="2010-04-10T04:15:42+00:00">消滅</del><a href="http://www.neoease.com/ie6-must-die/">建議昇級 IE6 的 javascript</a> ，覺得非常的美觀和有趣。身為 web Developer ，對於萬惡的 IE 6 非常的痛恨是很正常的，尤於要花費非常多的心力來支援它，所以大家快點幫忙把 IE6 消滅吧。</p>
<p>所以為了讓 wordpress 非常方便的可以使用該功能，我就作了一個 wordpress plugin 來協助啟用他，才不用更動每一個 template 。下面介紹如何安裝這個 plugin :</p>
<ol>
<li>下載 <a href="http://www.twkang.net/~whatup/php/lets_kill_ie6.phps">lets_kill_ie6.phps</a></li>
<li>把檔名改為 lets_kill_ie6.php.</li>
<li>將他放在 wordpress / wordpress mu 的 plugin 目錄下。</li>
<li>啟用他，你就可以看到效果了。</li>
</ol>
<p style="text-align: center">啟用後畫面如下：<br />
<img class="aligncenter" src="http://photo.twkang.net/var/resizes/whatup/others/killie6.JPG" alt="sample" width="384" height="219" /></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.twkang.net/2010/04/10/lkie6-plugin-for-wordpress/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>歷史上的今天-2010.04.01</title>
		<link>http://blog.twkang.net/2010/04/01/%e6%ad%b7%e5%8f%b2%e4%b8%8a%e7%9a%84%e4%bb%8a%e5%a4%a9-2010-04-01/</link>
		<comments>http://blog.twkang.net/2010/04/01/%e6%ad%b7%e5%8f%b2%e4%b8%8a%e7%9a%84%e4%bb%8a%e5%a4%a9-2010-04-01/#comments</comments>
		<pubDate>Thu, 01 Apr 2010 15:24:14 +0000</pubDate>
		<dc:creator>whatup</dc:creator>
				<category><![CDATA[歷史上的今天]]></category>
		<category><![CDATA[bbo]]></category>

		<guid isPermaLink="false">http://blog.twkang.net/?p=245</guid>
		<description><![CDATA[每年的愚人節我都會想各種奇怪的理由來騙朋友，例如有一年是騙同學說我和當時的女友分手了、或是另一年就是騙同學說我已經與另一個女生在一起了。今年沒有事先想什麼梗，早上上班就想說來玩個大一點的。上班前花了十分鐘，把我的全民打棒球球員資訊查詢網作了一個假的下架畫面，並且在 ptt 上公告說因為遊戲公司的反對，所以本站不再公開讓網友查詢。 這一招，果然騙到不少人，網路上一堆人在罵遊戲公司啊。相關資料： 【問題】關於球員資料查詢器 【情報】全民打棒球 球員資料查詢器 已經無限期停站了!!! 本來想將 FS 和 RW 的登入 port 互換的，可惜沒人支持這種玩法，好可惜。 擷圖如下：]]></description>
			<content:encoded><![CDATA[<p>
每年的愚人節我都會想各種奇怪的理由來騙朋友，例如有一年是騙同學說我和當時的女友分手了、或是另一年就是騙同學說我已經與另一個女生在一起了。今年沒有事先想什麼梗，早上上班就想說來玩個大一點的。上班前花了十分鐘，把我的<a href="http://bbo.twkang.net">全民打棒球球員資訊查詢網</a>作了一個假的下架畫面，並且在 ptt 上公告說因為遊戲公司的反對，所以本站不再公開讓網友查詢。
</p>
<p>
這一招，果然騙到不少人，網路上一堆人在罵遊戲公司啊。相關資料：</p>
<ul>
<li><a href="http://forum.gamer.com.tw/C.php?bsn=10964&amp;snA=101613&amp;tnum=5">【問題】關於球員資料查詢器</a></li>
<li><a href="http://forum.gamer.com.tw/C.php?bsn=10964&amp;snA=101406&amp;tnum=5">【情報】全民打棒球 球員資料查詢器 已經無限期停站了!!!</a></li>
</ul>
<p>本來想將 FS 和 RW 的登入 port 互換的，可惜沒人支持這種玩法，好可惜。</p>
<p>
擷圖如下：<br />
<a href="http://photo.twkang.net/whatup/others/fake"><img width="50%" src="http://photo.twkang.net/var/resizes/whatup/others/fake.JPG" alt="假畫面" /></a></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.twkang.net/2010/04/01/%e6%ad%b7%e5%8f%b2%e4%b8%8a%e7%9a%84%e4%bb%8a%e5%a4%a9-2010-04-01/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>將 Blog 系統從Lyceum轉換到WordPress Mu</title>
		<link>http://blog.twkang.net/2010/02/07/%e5%b0%87-blog-%e7%b3%bb%e7%b5%b1%e5%be%9elyceum%e8%bd%89%e6%8f%9b%e5%88%b0wordpress-mu/</link>
		<comments>http://blog.twkang.net/2010/02/07/%e5%b0%87-blog-%e7%b3%bb%e7%b5%b1%e5%be%9elyceum%e8%bd%89%e6%8f%9b%e5%88%b0wordpress-mu/#comments</comments>
		<pubDate>Sat, 06 Feb 2010 16:15:23 +0000</pubDate>
		<dc:creator>whatup</dc:creator>
				<category><![CDATA[blog 大小事]]></category>

		<guid isPermaLink="false">http://blog.twkang.net/?p=218</guid>
		<description><![CDATA[在支持了這麼久的 Lyceum 後，最後終於受不了將 blog 系統更換成 WordPress Mu 了。而之所以會這樣更換，是因為 Lyceum 上一個 Release 的版本是在 2008 年 6 月 4 號了，然而已經完全跟不上最新的 wordpress 。 花了一個晚上，將一些朋友的 blog 手動匯出成 xml 檔，並且再幫他們匯入到目前的 MU 上。另外還有一些小問題發生，例如原先文章中有寫到程式的部份，其中的 PHP Code 被 filter 掉，這部份的問題比較大要找時間再來修了。還有留言的部份，同一篇文章的留言好像只有匯入第一筆而已。 也順手更換了佈景主題，這次的主題有點黑暗，不過還滿喜歡目前這種帶點黑暗的感覺。 不過整體來說，wordpress mu 操作界面清楚了許多， widgets 也改成內建了，有更多的 Plugins &#38; widgets 可以使用。所以用了新版的 Blog 軟體後，說不定比較有動力發表文章呢？！]]></description>
			<content:encoded><![CDATA[<p>
在支持了這麼久的 <a href="http://lyceum.ibiblio.org/">Lyceum</a> 後，最後終於受不了將 blog 系統更換成 <a href="http://mu.wordpress.org/">WordPress Mu</a> 了。而之所以會這樣更換，是因為 Lyceum 上一個 Release 的版本是在 2008 年 6 月 4 號了，然而已經完全跟不上最新的 wordpress 。
</p>
<p>
花了一個晚上，將一些朋友的 blog 手動匯出成 xml 檔，並且再幫他們匯入到目前的 MU 上。另外還有一些小問題發生，例如原先文章中有寫到程式的部份，其中的 PHP Code 被 filter 掉，這部份的問題比較大要找時間再來修了。還有留言的部份，同一篇文章的留言好像只有匯入第一筆而已。
</p>
<p>
也順手更換了佈景主題，這次的主題有點黑暗，不過還滿喜歡目前這種帶點黑暗的感覺。
</p>
<p>
不過整體來說，wordpress mu 操作界面清楚了許多， widgets 也改成內建了，有更多的 Plugins &amp; widgets  可以使用。所以用了新版的 Blog 軟體後，說不定比較有動力發表文章呢？！</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.twkang.net/2010/02/07/%e5%b0%87-blog-%e7%b3%bb%e7%b5%b1%e5%be%9elyceum%e8%bd%89%e6%8f%9b%e5%88%b0wordpress-mu/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>java &amp; php 的 timestamp 為不同單位</title>
		<link>http://blog.twkang.net/2009/11/08/java-php-%e7%9a%84-timestamp-%e7%82%ba%e4%b8%8d%e5%90%8c%e5%96%ae%e4%bd%8d/</link>
		<comments>http://blog.twkang.net/2009/11/08/java-php-%e7%9a%84-timestamp-%e7%82%ba%e4%b8%8d%e5%90%8c%e5%96%ae%e4%bd%8d/#comments</comments>
		<pubDate>Sun, 08 Nov 2009 13:59:05 +0000</pubDate>
		<dc:creator>whatup</dc:creator>
				<category><![CDATA[程式小心得]]></category>

		<guid isPermaLink="false">http://blog.twkang.net/2009/11/08/java-php-%e7%9a%84-timestamp-%e7%82%ba%e4%b8%8d%e5%90%8c%e5%96%ae%e4%bd%8d/</guid>
		<description><![CDATA[一般以來，我以為 timestamp 應該是要從 1970 年零點零分零秒開始，至目前時刻所經過的「秒」數，才算是 timestamp 。不過後來查了一下 java 的 timestamp 的說明，他是從 1970 年零點零分零秒開始到現在的「微秒」數。所以二者之間相差了 1000 倍。 Java 的 timestamp的說明如下： long getTime() Returns the number of milliseconds since January 1, 1970, 00:00:00 GMT represented by this Timestamp object. PHP 的 timestamp 說明如下： int time ( void ) Returns the current time measured in the number of seconds [...]]]></description>
			<content:encoded><![CDATA[<p>一般以來，我以為 timestamp 應該是要從 1970 年零點零分零秒開始，至目前時刻所經過的「秒」數，才算是  timestamp 。不過後來查了一下 java 的 timestamp 的說明，他是從 1970 年零點零分零秒開始到現在的「微秒」數。所以二者之間相差了 1000 倍。</p>
<p>Java 的 timestamp的說明如下：<code><br />
long	getTime()<br />
Returns the number of milliseconds since January 1, 1970, 00:00:00 GMT represented by this Timestamp object.</code></p>
<p>PHP 的 timestamp 說明如下：<code><br />
int time ( void )<br />
Returns the current time measured in the number of seconds since the Unix Epoch (January 1 1970 00:00:00 GMT).</code></p>
<p>所以如果 php &amp; java 要作 web service 的服務的話，記得要處理這部份的轉換。</p>
<p>Java 部份的程式碼：</p>
<pre class="brush: java;">
import java.util.Calendar;
class Time
{
public static void  main(String arg[]) {
Calendar cal = Calendar.getInstance();
System.out.println(cal.getTime().getTime());
}
}
</pre>
<p>結果如下：</p>
<pre class="brush: plain;">
whatup@whatup:/tmp$ java Time
1257688227061
</pre>
<p>PHP 部份的程式碼：</p>
<pre class="brush: plain;">
 echo time();
</pre>
<p>結果如下：</p>
<pre class="brush: plain;">
whatup@whatup:/tmp$ php time.php
1257688308
</pre>
]]></content:encoded>
			<wfw:commentRss>http://blog.twkang.net/2009/11/08/java-php-%e7%9a%84-timestamp-%e7%82%ba%e4%b8%8d%e5%90%8c%e5%96%ae%e4%bd%8d/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>利用 curl 平行抓取多個網頁</title>
		<link>http://blog.twkang.net/2009/10/04/%e5%88%a9%e7%94%a8-curl-%e5%b9%b3%e8%a1%8c%e6%8a%93%e5%8f%96%e5%a4%9a%e5%80%8b%e7%b6%b2%e9%a0%81/</link>
		<comments>http://blog.twkang.net/2009/10/04/%e5%88%a9%e7%94%a8-curl-%e5%b9%b3%e8%a1%8c%e6%8a%93%e5%8f%96%e5%a4%9a%e5%80%8b%e7%b6%b2%e9%a0%81/#comments</comments>
		<pubDate>Sun, 04 Oct 2009 03:48:52 +0000</pubDate>
		<dc:creator>whatup</dc:creator>
				<category><![CDATA[程式小心得]]></category>

		<guid isPermaLink="false">http://blog.twkang.net/2009/10/04/%e5%88%a9%e7%94%a8-curl-%e5%b9%b3%e8%a1%8c%e6%8a%93%e5%8f%96%e5%a4%9a%e5%80%8b%e7%b6%b2%e9%a0%81/</guid>
		<description><![CDATA[如果一次要抓多個網頁，如果使用一個一個 curl 慢慢抓的話，實在是太慢了。假設一個網頁要 0.3 sec 的話，十個網頁需要抓時就要 3 sec 了。利用這個 curl 的 mutli handle 功能，可以同時抓取 N 個網頁，這樣抓取網頁速度會有明顯的提昇。 其實也可以利用這個方法，來試試自已的網頁的存取速度怎麼樣。不過如果一次開 50 個以上，感覺抓取速度會受到影響。所以還是別同時抓取太多網頁比較好。 範例程式碼如下： 0); foreach($curl_obs as $curl_ob) { $content = curl_multi_getcontent($curl_ob); var_dump(strlen($content)); } foreach($curl_obs as $curl_ob) { curl_multi_remove_handle($mh, $curl_ob); } curl_multi_close($mh); ?&#38;gt; 執行結果： whatup@whatup:/tmp$ php curl_multi.php int(222) int(9490)]]></description>
			<content:encoded><![CDATA[<p>
如果一次要抓多個網頁，如果使用一個一個 curl 慢慢抓的話，實在是太慢了。假設一個網頁要 0.3 sec 的話，十個網頁需要抓時就要 3 sec 了。利用這個 curl 的 <a href="http://tw2.php.net/manual/en/function.curl-multi-init.php">mutli handle</a> 功能，可以同時抓取 N 個網頁，這樣抓取網頁速度會有明顯的提昇。</p>
<p>
其實也可以利用這個方法，來試試自已的網頁的存取速度怎麼樣。不過如果一次開 50 個以上，感覺抓取速度會受到影響。所以還是別同時抓取太多網頁比較好。
</p>
<p>
範例程式碼如下：</p>
<pre class="brush: php;">
 0);

foreach($curl_obs as $curl_ob)
{
  $content = curl_multi_getcontent($curl_ob);
  var_dump(strlen($content));
}
foreach($curl_obs as $curl_ob)
{
  curl_multi_remove_handle($mh, $curl_ob);
}
curl_multi_close($mh);
?&amp;gt;
</pre>
</p>
<p>
執行結果：</p>
<pre class="brush: plain;">
whatup@whatup:/tmp$ php curl_multi.php
int(222)
int(9490)
</pre></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.twkang.net/2009/10/04/%e5%88%a9%e7%94%a8-curl-%e5%b9%b3%e8%a1%8c%e6%8a%93%e5%8f%96%e5%a4%9a%e5%80%8b%e7%b6%b2%e9%a0%81/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>google app enging for java 用來跑 PHP</title>
		<link>http://blog.twkang.net/2009/04/14/google-app-enging-for-java-%e7%94%a8%e4%be%86%e8%b7%91-php/</link>
		<comments>http://blog.twkang.net/2009/04/14/google-app-enging-for-java-%e7%94%a8%e4%be%86%e8%b7%91-php/#comments</comments>
		<pubDate>Tue, 14 Apr 2009 15:42:33 +0000</pubDate>
		<dc:creator>whatup</dc:creator>
				<category><![CDATA[程式小心得]]></category>

		<guid isPermaLink="false">http://blog.twkang.net/2009/04/14/google-app-enging-for-java-%e7%94%a8%e4%be%86%e8%b7%91-php/</guid>
		<description><![CDATA[前幾天 google 發布了 google app engine 支援了 java 後，就有聽說有人可以利用 Quercus 專案，來支援 PHP ，這是一個令人興奮的消息啊。像我不太會寫 python 的人，有 PHP 的支援，更可以讓更多的 web developer 快速上手。 幾天後，有一家公司的 blog 上發表了一篇「Run PHP on the Google App Engine」，他們已經成功的在 app engine 上執行 php 了。 他所列的步驟如下： Register a free account. Download this file to your computer. Edit application XML tag in the file war\WEB-INF\appengine-web.xml to the [...]]]></description>
			<content:encoded><![CDATA[<p>
前幾天 google 發布了  <a href="http://appengine.google.com">google app engine</a> 支援了 java 後，就有聽說有人可以利用 <a href="http://www.caucho.com/resin-3.0/quercus/">Quercus</a> 專案，來支援 PHP ，這是一個令人興奮的消息啊。像我不太會寫 python 的人，有 PHP 的支援，更可以讓更多的 web developer 快速上手。
</p>
<p>
幾天後，有一家<a href="http://www.webdigi.co.uk/blog/">公司的 blog</a> 上發表了一篇「<a href="http://www.webdigi.co.uk/blog/2009/run-php-on-the-google-app-engine/">Run PHP on the Google App Engine</a>」，他們已經成功的在 app engine 上執行 php 了。
</p>
<p>
他所列的步驟如下：</p>
<ol>
<li>Register a free account. </li>
<li><a href="http://www.webdigi.co.uk/fun/php-appengine/phpwithjava.zip">Download this file</a> to your computer.</li>
<li>Edit application XML tag in the file war\WEB-INF\appengine-web.xml to the name of the application you have registered.</li>
<li>Finally upload your application. I downloaded Google App Engine SDK for Java and use the following command in windows. </li>
</ol>
<p>
但我在本地端測試的時候，因為少了一些 package 所以沒辦法在本地端執行，你可以到 http://www.codehaus.org/ 下載 <a href="http://docs.codehaus.org/display/JETTY/Downloading+Jetty">jetty package</a> ，並且解壓縮到 app-engine 的 lib 目錄，即可以使用 dev_appserver.sh 這個指令在本地端測試了。Depoy 到 google 的 GAE  上的話，就不用這這個 package 了。
</p>
<p>
另外他沒有支援 Mysql 之類的關聯性資料庫，所以如果要 port 一些跟資料庫相關的東西的話，應該要自行改寫其資料庫的部份。</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.twkang.net/2009/04/14/google-app-enging-for-java-%e7%94%a8%e4%be%86%e8%b7%91-php/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>二個 postgresql 的 Tips</title>
		<link>http://blog.twkang.net/2009/04/08/%e4%ba%8c%e5%80%8b-postgresql-%e7%9a%84-tips/</link>
		<comments>http://blog.twkang.net/2009/04/08/%e4%ba%8c%e5%80%8b-postgresql-%e7%9a%84-tips/#comments</comments>
		<pubDate>Wed, 08 Apr 2009 03:13:00 +0000</pubDate>
		<dc:creator>whatup</dc:creator>
				<category><![CDATA[資訊文件]]></category>

		<guid isPermaLink="false">http://blog.twkang.net/2009/04/08/%e4%ba%8c%e5%80%8b-postgresql-%e7%9a%84-tips/</guid>
		<description><![CDATA[最近公司會用到 postgresql 來作為 Database ，不過因為之前都使用 Mysql 的 DB 設定和使用方法，所以有一些的不習慣，底下有二個我目前用到小技巧。 之前在 mysql 下，會使用 desc table 這個指令，來列出目前該 table 的 schema 有哪些。不過經由 postgresql 的 1.4. Accessing a Database 章節裡的使用者留言下說明，要用以下的方法來取代： SELECT column_name,data_type FROM information_schema.columns WHERE table_name = 'table_name' 如果是 show table 這個指令，就得由以下的指令來取代： SELECT table_name FROM information_schema.tables WHERE table_schema = 'public' 另外由於我目前寫 php 時，都是經由 pdo 來存取 Database ，所以一般來說，我們都會使用 PDO::lastInsertId 來取得最後一筆插入的 [...]]]></description>
			<content:encoded><![CDATA[<p>
最近公司會用到 <a href="http://www.postgresql.org">postgresql </a>來作為 Database ，不過因為之前都使用 Mysql 的 DB 設定和使用方法，所以有一些的不習慣，底下有二個我目前用到小技巧。
</p>
<p>
之前在 mysql 下，會使用 desc table 這個指令，來列出目前該 table 的 schema 有哪些。不過經由 postgresql 的 <a href="http://www.postgresql.org/docs/8.0/interactive/tutorial-accessdb.html">1.4. Accessing a Database</a> 章節裡的使用者留言下說明，要用以下的方法來取代：
</p>
<p><pre class="brush: sql;">
SELECT column_name,data_type FROM information_schema.columns WHERE table_name = 'table_name'
</pre>
</p>
<p>
如果是 show table 這個指令，就得由以下的指令來取代：
</p>
<p><pre class="brush: sql;">
SELECT table_name FROM information_schema.tables WHERE table_schema = 'public'
</pre>
</p>
<p>
另外由於我目前寫 php 時，都是經由 <a href="http://tw.php.net/manual/en/class.pdo.php">pdo</a> 來存取 Database  ，所以一般來說，我們都會使用 <a href="http://tw.php.net/manual/en/pdo.lastinsertid.php">PDO::lastInsertId</a> 來取得最後一筆插入的 ID ，不過因為 postgresql 並不支援該方法，所以會一直產生 false 的值。查了一下 php.net 的 PDO::lastinsertid 裡面的說明，他是改 select 一個 Sequences 的值，所以我依照我的需求改寫一下，就可以查出 last insert id 了。
</p>
<p><pre class="brush: php;">
prepare($query);
    $temp_q_id-&amp;gt;execute();

    if($temp_q_id)
    {
        $temp_result = $temp_q_id-&amp;gt;fetch(PDO::FETCH_ASSOC);
        return ( $temp_result ) ? $temp_result['last_value'] : false;
    }
}
?&amp;gt;
</pre>
</p>
<p>
當然在 php.net 上有更優雅的寫法，就是即時的分析 sql 字串，來找出 table ，但因為我的 pk 的鍵值都不一樣，所以才要自行作改寫了。</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.twkang.net/2009/04/08/%e4%ba%8c%e5%80%8b-postgresql-%e7%9a%84-tips/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
