<?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, 06 Feb 2010 16:24:33 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.1</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<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>
<a class="a2a_dd addtoany_share_save" href="http://www.addtoany.com/share_save?linkurl=http%3A%2F%2Fblog.twkang.net%2F2010%2F02%2F07%2F%25e5%25b0%2587-blog-%25e7%25b3%25bb%25e7%25b5%25b1%25e5%25be%259elyceum%25e8%25bd%2589%25e6%258f%259b%25e5%2588%25b0wordpress-mu%2F&amp;linkname=%E5%B0%87%20Blog%20%E7%B3%BB%E7%B5%B1%E5%BE%9ELyceum%E8%BD%89%E6%8F%9B%E5%88%B0Wordpress%20Mu"><img src="http://blog.twkang.net/wp-content/plugins/add-to-any/share_save_171_16.png" width="171" height="16" alt="Share/Bookmark"/></a>]]></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 since the Unix Epoch (January 1 ]]></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>
<a class="a2a_dd addtoany_share_save" href="http://www.addtoany.com/share_save?linkurl=http%3A%2F%2Fblog.twkang.net%2F2009%2F11%2F08%2Fjava-php-%25e7%259a%2584-timestamp-%25e7%2582%25ba%25e4%25b8%258d%25e5%2590%258c%25e5%2596%25ae%25e4%25bd%258d%2F&amp;linkname=java%20%26%2338%3B%20php%20%E7%9A%84%20timestamp%20%E7%82%BA%E4%B8%8D%E5%90%8C%E5%96%AE%E4%BD%8D"><img src="http://blog.twkang.net/wp-content/plugins/add-to-any/share_save_171_16.png" width="171" height="16" alt="Share/Bookmark"/></a>]]></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>
<a class="a2a_dd addtoany_share_save" href="http://www.addtoany.com/share_save?linkurl=http%3A%2F%2Fblog.twkang.net%2F2009%2F10%2F04%2F%25e5%2588%25a9%25e7%2594%25a8-curl-%25e5%25b9%25b3%25e8%25a1%258c%25e6%258a%2593%25e5%258f%2596%25e5%25a4%259a%25e5%2580%258b%25e7%25b6%25b2%25e9%25a0%2581%2F&amp;linkname=%E5%88%A9%E7%94%A8%20curl%20%E5%B9%B3%E8%A1%8C%E6%8A%93%E5%8F%96%E5%A4%9A%E5%80%8B%E7%B6%B2%E9%A0%81"><img src="http://blog.twkang.net/wp-content/plugins/add-to-any/share_save_171_16.png" width="171" height="16" alt="Share/Bookmark"/></a>]]></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 name of 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>
<a class="a2a_dd addtoany_share_save" href="http://www.addtoany.com/share_save?linkurl=http%3A%2F%2Fblog.twkang.net%2F2009%2F04%2F14%2Fgoogle-app-enging-for-java-%25e7%2594%25a8%25e4%25be%2586%25e8%25b7%2591-php%2F&amp;linkname=google%20app%20enging%20for%20java%20%E7%94%A8%E4%BE%86%E8%B7%91%20PHP"><img src="http://blog.twkang.net/wp-content/plugins/add-to-any/share_save_171_16.png" width="171" height="16" alt="Share/Bookmark"/></a>]]></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 來取得最後一筆插入的 ID ，不過因為 postgresql 並不支援該方法，所以會一直產生 ]]></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>
<a class="a2a_dd addtoany_share_save" href="http://www.addtoany.com/share_save?linkurl=http%3A%2F%2Fblog.twkang.net%2F2009%2F04%2F08%2F%25e4%25ba%258c%25e5%2580%258b-postgresql-%25e7%259a%2584-tips%2F&amp;linkname=%E4%BA%8C%E5%80%8B%20postgresql%20%E7%9A%84%20Tips"><img src="http://blog.twkang.net/wp-content/plugins/add-to-any/share_save_171_16.png" width="171" height="16" alt="Share/Bookmark"/></a>]]></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>
		<item>
		<title>jquery 判定 browser 種類</title>
		<link>http://blog.twkang.net/2009/04/02/jquery-%e5%88%a4%e5%ae%9a-browser-%e7%a8%ae%e9%a1%9e/</link>
		<comments>http://blog.twkang.net/2009/04/02/jquery-%e5%88%a4%e5%ae%9a-browser-%e7%a8%ae%e9%a1%9e/#comments</comments>
		<pubDate>Wed, 01 Apr 2009 16:00:11 +0000</pubDate>
		<dc:creator>whatup</dc:creator>
				<category><![CDATA[程式小心得]]></category>

		<guid isPermaLink="false">http://blog.twkang.net/2009/04/02/jquery-%e5%88%a4%e5%ae%9a-browser-%e7%a8%ae%e9%a1%9e/</guid>
		<description><![CDATA[
在工作中，有一些需要為 IE 作特別的 hack ，例如像 IE 的 option 不吃 onclick 的事件之類的。但又不想讓他影響到 IE 之外的 browser 。在 jquery 裡面，可以使用下列的參數來判定是不是使用 IE 。


if(jQuery.browser.msie) alert(&#34;這個 browser 是 IE&#34;);



當然其他的參數也可以判定 browser 的板本與種類，可以參考Utilities/jQuery.browser這份文件。
]]></description>
			<content:encoded><![CDATA[<p>
在工作中，有一些需要為 IE 作特別的 hack ，例如像 IE 的 option 不吃 onclick 的事件之類的。但又不想讓他影響到 IE 之外的 browser 。在 jquery 裡面，可以使用下列的參數來判定是不是使用 IE 。
</p>
<p><pre class="brush: jscript;">
if(jQuery.browser.msie) alert(&quot;這個 browser 是 IE&quot;);
</pre>
</p>
<p>
當然其他的參數也可以判定 browser 的板本與種類，可以參考<a href="http://docs.jquery.com/Utilities/jQuery.browser">Utilities/jQuery.browser</a>這份文件。</p>
<a class="a2a_dd addtoany_share_save" href="http://www.addtoany.com/share_save?linkurl=http%3A%2F%2Fblog.twkang.net%2F2009%2F04%2F02%2Fjquery-%25e5%2588%25a4%25e5%25ae%259a-browser-%25e7%25a8%25ae%25e9%25a1%259e%2F&amp;linkname=jquery%20%E5%88%A4%E5%AE%9A%20browser%20%E7%A8%AE%E9%A1%9E"><img src="http://blog.twkang.net/wp-content/plugins/add-to-any/share_save_171_16.png" width="171" height="16" alt="Share/Bookmark"/></a>]]></content:encoded>
			<wfw:commentRss>http://blog.twkang.net/2009/04/02/jquery-%e5%88%a4%e5%ae%9a-browser-%e7%a8%ae%e9%a1%9e/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>歷史上的今天-2009.03.12</title>
		<link>http://blog.twkang.net/2009/03/12/%e6%ad%b7%e5%8f%b2%e4%b8%8a%e7%9a%84%e4%bb%8a%e5%a4%a9-20090312/</link>
		<comments>http://blog.twkang.net/2009/03/12/%e6%ad%b7%e5%8f%b2%e4%b8%8a%e7%9a%84%e4%bb%8a%e5%a4%a9-20090312/#comments</comments>
		<pubDate>Wed, 11 Mar 2009 16:56:25 +0000</pubDate>
		<dc:creator>whatup</dc:creator>
				<category><![CDATA[歷史上的今天]]></category>

		<guid isPermaLink="false">http://blog.twkang.net/2009/03/12/%e6%ad%b7%e5%8f%b2%e4%b8%8a%e7%9a%84%e4%bb%8a%e5%a4%a9-20090312/</guid>
		<description><![CDATA[
很久沒報告近況了，自從在十二月被某知名網路公司 layoff 後，在一月份底就進到了新公司。而這段日子來，找工作實在是景氣非常的不好，很多公司都說很喜歡我，可是最後都跟我說手頭已經沒有任何的員額。這樣算是騙人去面試嘛？


離開了一個我滿喜歡的環境，裡面的同事說話和個性都非常的契合，跟我談論的東西也是我喜歡的。不過現在在新公司也是寫 php 和系統整合相關的工作，事實上還滿有趣的。在自已拿手的東西下，工作還滿輕鬆的。


為了找房子，最近也花了不少時間，才從永和搬到了石牌，因為本來從永和到新公司，光坐捷運就要 30 分鐘，還不包括走路到捷運站的時間。最後搬到了石牌，其實我搬到了新房間後，要到捷運站反而要走更長的時間，但是只要坐二站就到新公司了，這樣我也可以騎單車上下班哦。


每天的生活除了上班，就是搞 Fantasy Space ，要不然就是跟朋友出去吃飯聊天，其實這樣的日子我還過的滿愜意。其實只要開開心心的過生活，就不要想太多就好囉。


最近也在玩 plurk ，歡迎有興趣的人加入 我的 plurk 參觀啊。
]]></description>
			<content:encoded><![CDATA[<p>
很久沒報告近況了，自從在十二月被某<a href="http://yahoo.com">知名網路公司</a> layoff 後，在一月份底就進到了新公司。而這段日子來，找工作實在是景氣非常的不好，很多公司都說很喜歡我，可是最後都跟我說手頭已經沒有任何的員額。這樣算是騙人去面試嘛？
</p>
<p>
離開了一個我滿喜歡的環境，裡面的同事說話和個性都非常的契合，跟我談論的東西也是我喜歡的。不過現在在新公司也是寫 php 和系統整合相關的工作，事實上還滿有趣的。在自已拿手的東西下，工作還滿輕鬆的。
</p>
<p>
為了找房子，最近也花了不少時間，才從永和搬到了石牌，因為本來從永和到新公司，光坐捷運就要 30 分鐘，還不包括走路到捷運站的時間。最後搬到了石牌，其實我搬到了新房間後，要到捷運站反而要走更長的時間，但是只要坐二站就到新公司了，這樣我也可以騎單車上下班哦。
</p>
<p>
每天的生活除了上班，就是搞 <a href="http://fs.twkang.net">Fantasy Space</a> ，要不然就是跟朋友出去吃飯聊天，其實這樣的日子我還過的滿愜意。其實只要開開心心的過生活，就不要想太多就好囉。
</p>
<p>
最近也在玩 <a href="http://www.plurk.com">plurk</a> ，歡迎有興趣的人加入 <a href="http://www.plurk.com/whatup1981">我的 plurk</a> 參觀啊。</p>
<a class="a2a_dd addtoany_share_save" href="http://www.addtoany.com/share_save?linkurl=http%3A%2F%2Fblog.twkang.net%2F2009%2F03%2F12%2F%25e6%25ad%25b7%25e5%258f%25b2%25e4%25b8%258a%25e7%259a%2584%25e4%25bb%258a%25e5%25a4%25a9-20090312%2F&amp;linkname=%E6%AD%B7%E5%8F%B2%E4%B8%8A%E7%9A%84%E4%BB%8A%E5%A4%A9-2009.03.12"><img src="http://blog.twkang.net/wp-content/plugins/add-to-any/share_save_171_16.png" width="171" height="16" alt="Share/Bookmark"/></a>]]></content:encoded>
			<wfw:commentRss>http://blog.twkang.net/2009/03/12/%e6%ad%b7%e5%8f%b2%e4%b8%8a%e7%9a%84%e4%bb%8a%e5%a4%a9-20090312/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Asus WL-500W 改機實錄</title>
		<link>http://blog.twkang.net/2009/01/31/asus-wl-500w-%e6%94%b9%e6%a9%9f%e5%af%a6%e9%8c%84/</link>
		<comments>http://blog.twkang.net/2009/01/31/asus-wl-500w-%e6%94%b9%e6%a9%9f%e5%af%a6%e9%8c%84/#comments</comments>
		<pubDate>Sat, 31 Jan 2009 06:35:06 +0000</pubDate>
		<dc:creator>whatup</dc:creator>
				<category><![CDATA[Linux]]></category>

		<guid isPermaLink="false">http://blog.twkang.net/2009/01/31/asus-wl-500w-%e6%94%b9%e6%a9%9f%e5%af%a6%e9%8c%84/</guid>
		<description><![CDATA[
在幾個月前，買了 Asus WL-500W 這台 ip 分享器，看上的是他可以改機，與他支援 802.11N draft 的 protocol ，而且如果正式板出來的話，聽說還可以寄回去換主式板哦。雖然改機可能會破壞保固，但是可以自由的惡搞，這才是最令人爽快的。以下的內容就是 Asus WL-500W 的改機的方式。當然也是我自已作記錄的方式，避免之後忘記怎麼處理。


具備的知識與能力：

最好有基本的 Linux 的管理與操作知識
對於網路要有基本的了解
不怕死的精神


刷機步驟：

參考 OpenWRT for wl 500w 這篇文章，裡面其實已經說的滿詳細的。
準備刷機的 Firmware ，我是使用 brcm-2.4/openvpn 這一板的(下載位置)，因為我也想順便玩玩 openvpn 的功能。當然我也有不怕死的精神，所以我下載的是 snapshots 的板本。
準備 tftp server 讓 wl-500w 可以更新他的 Firmware 。參考文件：Installing OpenWrt via TFTP
我是使用 atftp 來作為我的 tftp server ，在 debian 下只要使用下列指令即可安裝：

# apt-get install atftp

安裝完後，照著上述說明完成架設 tftp server ，並且把 wl-500w 重開後，他就會自動下載更新。
刷機的這段時間，不要拔掉電源，否則會有不可預期的錯誤發生。
刷機完成後，如果想用 web ]]></description>
			<content:encoded><![CDATA[<p>
在幾個月前，買了 Asus WL-500W 這台 ip 分享器，看上的是他可以改機，與他支援 802.11N draft 的 protocol ，而且如果正式板出來的話，聽說還可以寄回去換主式板哦。雖然改機可能會破壞保固，但是可以自由的惡搞，這才是最令人爽快的。以下的內容就是 Asus WL-500W 的改機的方式。當然也是我自已作記錄的方式，避免之後忘記怎麼處理。
</p>
<p>
具備的知識與能力：</p>
<ul>
<li>最好有基本的 Linux 的管理與操作知識</li>
<li>對於網路要有基本的了解</li>
<li>不怕死的精神</li>
</ul>
<p>
刷機步驟：</p>
<ul>
<li>參考 <a href="http://wiki.openwrt.org/OpenWrtDocs/Hardware/Asus/WL500W">OpenWRT for wl 500w</a> 這篇文章，裡面其實已經說的滿詳細的。</li>
<li>準備刷機的 Firmware ，我是使用 brcm-2.4/openvpn 這一板的(<a href="http://downloads.x-wrt.org/xwrt/kamikaze/snapshots/brcm-2.4/openvpn/openwrt-brcm-2.4-squashfs.trx">下載位置</a>)，因為我也想順便玩玩 openvpn 的功能。當然我也有不怕死的精神，所以我下載的是 snapshots 的板本。</li>
<li>準備 tftp server 讓 wl-500w 可以更新他的 Firmware 。參考文件：<a href="http://wiki.openwrt.org/OpenWrtDocs/Installing/TFTP?action=show&amp;redirect=OpenWrtViaTftp">Installing OpenWrt via TFTP</a></li>
<li>我是使用 atftp 來作為我的 tftp server ，在 debian 下只要使用下列指令即可安裝：
<pre class="brush: bash;">
# apt-get install atftp
</pre>
<p>安裝完後，照著上述說明完成架設 tftp server ，並且把 wl-500w 重開後，他就會自動下載更新。</li>
<li>刷機的這段時間，不要拔掉電源，否則會有不可預期的錯誤發生。</li>
<li>刷機完成後，如果想用 web 管理的話，可以進入http://192.168.1.1/作管理，一開始會請你設定 root 密碼。</li>
<li>除了使用 web 管理之外， ssh root@192.168.1.1 也可以登入管理主機。</li>
<li>有需要安裝什麼功能，可以利過 system/package 或是 opkg 來安裝。</li>
</ul>
<p>
Tips:</p>
<ul>
<li>如果要讓外部的人連上 ssh 除了可以在 web 介面設定之外，也可以在 /etc/config/firewall 下新增下列設定：</p>
<pre class="brush: plain;">
config 'rule' 'ssh'
        option 'src' 'wan'
        option 'proto' 'tcp'
        option 'src_ip' ''
        option 'dest_ip' ''
        option 'dest_port' '22'
        option 'target' 'ACCEPT'
</pre>
</li>
<li>啟用 usb 隨身儲存裝置，可參考 <a href="http://wiki.openwrt.org/UsbStorageHowto">UsbStorageHowto</a> 來實作，可 ssh 進去後，使用下列指令：
<pre class="brush: plain;">
#opkg update
#opkg install
#opkg install kmod-fs-vfat
#opkg kmod-usb-core kmod-usb-ohci	 kmod-usb-storage kmod-usb2
</pre>
<p>或是利用 web 界面中的 package 選項裡安裝 kmod-fs-vfat, kmod-usb-core,kmod-usb-ohci,kmod-usb-storage,kmod-usb2 。接著利用 fdisk -l 與 mount 指令，就可以把隨身裝置掛載上去了。
</li>
</ul>
<p>
最後，歡迎加入惡搞世界。</p>
<a class="a2a_dd addtoany_share_save" href="http://www.addtoany.com/share_save?linkurl=http%3A%2F%2Fblog.twkang.net%2F2009%2F01%2F31%2Fasus-wl-500w-%25e6%2594%25b9%25e6%25a9%259f%25e5%25af%25a6%25e9%258c%2584%2F&amp;linkname=Asus%20WL-500W%20%E6%94%B9%E6%A9%9F%E5%AF%A6%E9%8C%84"><img src="http://blog.twkang.net/wp-content/plugins/add-to-any/share_save_171_16.png" width="171" height="16" alt="Share/Bookmark"/></a>]]></content:encoded>
			<wfw:commentRss>http://blog.twkang.net/2009/01/31/asus-wl-500w-%e6%94%b9%e6%a9%9f%e5%af%a6%e9%8c%84/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>受保護: 歷史上的今天-2009.01.09</title>
		<link>http://blog.twkang.net/2009/01/09/%e6%ad%b7%e5%8f%b2%e4%b8%8a%e7%9a%84%e4%bb%8a%e5%a4%a9-20090109/</link>
		<comments>http://blog.twkang.net/2009/01/09/%e6%ad%b7%e5%8f%b2%e4%b8%8a%e7%9a%84%e4%bb%8a%e5%a4%a9-20090109/#comments</comments>
		<pubDate>Fri, 09 Jan 2009 00:21:36 +0000</pubDate>
		<dc:creator>whatup</dc:creator>
				<category><![CDATA[歷史上的今天]]></category>

		<guid isPermaLink="false">http://blog.twkang.net/2009/01/09/%e6%ad%b7%e5%8f%b2%e4%b8%8a%e7%9a%84%e4%bb%8a%e5%a4%a9-20090109/</guid>
		<description><![CDATA[
Nightmare again ，對我而言，我的惡夢裡的人都不是很兇狠，或是劇情很恐怖，而是明明知道不會發生的事，還是夢到了。


我想我還是看不開，因為別人的一句話，又讓我夢到了她，也讓我在睡夢中，流了整晚的眼淚。夢的內容我已經不太記得了，但是我知道與妳有關，但是我也知道這是不可能發生的事，但內心卻一直抱著一種期望。直到現在，我還會害怕在路上有可能會遇到一個穿粽色外套帶著毛絨絨帽子的人在我眼前經過。


其實我一直期望妳會找我說話，也一直期望妳每次找我說的時候，是想聊跟新男朋友開心的事，而且是都要跟我說跟你聊天，我都要抱著很大的勇氣，聊完又不開心。但我跟妳聊完我也不開心啊，總是帶著一點點的期望，和數以千計的失望。


快一年了，之前我常常安慰別人說：「時間，會帶走一切的」。到現在，什麼也沒帶走，帶走的是我的鬥志和自信。


睡覺，比沒睡覺還累。
]]></description>
			<content:encoded><![CDATA[<p>
Nightmare again ，對我而言，我的惡夢裡的人都不是很兇狠，或是劇情很恐怖，而是明明知道不會發生的事，還是夢到了。
</p>
<p>
我想我還是看不開，因為別人的一句話，又讓我夢到了她，也讓我在睡夢中，流了整晚的眼淚。夢的內容我已經不太記得了，但是我知道與妳有關，但是我也知道這是不可能發生的事，但內心卻一直抱著一種期望。直到現在，我還會害怕在路上有可能會遇到一個穿粽色外套帶著毛絨絨帽子的人在我眼前經過。
</p>
<p>
其實我一直期望妳會找我說話，也一直期望妳每次找我說的時候，是想聊跟新男朋友開心的事，而且是都要跟我說跟你聊天，我都要抱著很大的勇氣，聊完又不開心。但我跟妳聊完我也不開心啊，總是帶著一點點的期望，和數以千計的失望。
</p>
<p>
快一年了，之前我常常安慰別人說：「時間，會帶走一切的」。到現在，什麼也沒帶走，帶走的是我的鬥志和自信。
</p>
<p>
睡覺，比沒睡覺還累。</p>
<a class="a2a_dd addtoany_share_save" href="http://www.addtoany.com/share_save?linkurl=http%3A%2F%2Fblog.twkang.net%2F2009%2F01%2F09%2F%25e6%25ad%25b7%25e5%258f%25b2%25e4%25b8%258a%25e7%259a%2584%25e4%25bb%258a%25e5%25a4%25a9-20090109%2F&amp;linkname=%E5%8F%97%E4%BF%9D%E8%AD%B7%3A%20%E6%AD%B7%E5%8F%B2%E4%B8%8A%E7%9A%84%E4%BB%8A%E5%A4%A9-2009.01.09"><img src="http://blog.twkang.net/wp-content/plugins/add-to-any/share_save_171_16.png" width="171" height="16" alt="Share/Bookmark"/></a>]]></content:encoded>
			<wfw:commentRss>http://blog.twkang.net/2009/01/09/%e6%ad%b7%e5%8f%b2%e4%b8%8a%e7%9a%84%e4%bb%8a%e5%a4%a9-20090109/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>於 mysql 裡使用 custom sort</title>
		<link>http://blog.twkang.net/2008/11/09/%e6%96%bc-mysql-%e8%a3%a1%e4%bd%bf%e7%94%a8-custom-sort/</link>
		<comments>http://blog.twkang.net/2008/11/09/%e6%96%bc-mysql-%e8%a3%a1%e4%bd%bf%e7%94%a8-custom-sort/#comments</comments>
		<pubDate>Sun, 09 Nov 2008 12:22:32 +0000</pubDate>
		<dc:creator>whatup</dc:creator>
				<category><![CDATA[程式小心得]]></category>

		<guid isPermaLink="false">http://blog.twkang.net/2008/11/09/%e6%96%bc-mysql-%e8%a3%a1%e4%bd%bf%e7%94%a8-custom-sort/</guid>
		<description><![CDATA[
通常在 mysql 下作排序的時候，會用「 ORDER BY 欄位」來排序內容，但這樣的方法的排序的動作只能依其大小來排。假設目前有下面的 table 內容想要顯示，可是球隊內容都會依照其防守位置作排序依據，這時就不能用單純的大小來比較了。

SELECT * FROM batters ORDER BY 守位;

結果如下：

守位    名字
1B 	潘忠韋
2B 	蔣智聰
3B 	石志偉
C 	陳峰民
CF 	黃龍義
DH 	陳金鋒
LF 	曾豪駒
RF 	霸漢
SS 	林智勝



可以透過 FIELD 來幫忙，他可以依照傳入的值找出順序，例如： field(欄位,&#8217;spring&#8217;,&#8217;summer&#8217;,'fall&#8217;,'winter&#8217;)，如果傳入值是 winter 的話，他會回傳數字，可以利用這個特性作為排序依據。依上面的例子來說：

SELECT * FROM batters ORDER BY FIELD(守位,'C','1B','2B','3B','SS','LF','CF','RF','DH');

此時結果就會變成：

守位    名字
C 	陳峰民
1B 	潘忠韋
2B 	蔣智聰
3B 	石志偉
SS 	林智勝
LF 	曾豪駒
CF 	黃龍義
RF 	霸漢
DH 	陳金鋒



一定有人說，為什麼剛開始就不設計用數字作為欄位內容，在有些情況之下，如果想在不更動 database 內容的話，即可使用這個方法排序。
]]></description>
			<content:encoded><![CDATA[<p>
通常在 mysql 下作排序的時候，會用「 ORDER BY 欄位」來排序內容，但這樣的方法的排序的動作只能依其大小來排。假設目前有下面的 table 內容想要顯示，可是球隊內容都會依照其防守位置作排序依據，這時就不能用單純的大小來比較了。</p>
<pre class="brush: sql;">
SELECT * FROM batters ORDER BY 守位;
</pre>
<p>結果如下：</p>
<pre>
守位    名字
1B 	潘忠韋
2B 	蔣智聰
3B 	石志偉
C 	陳峰民
CF 	黃龍義
DH 	陳金鋒
LF 	曾豪駒
RF 	霸漢
SS 	林智勝
</pre>
</p>
<p>
可以透過 FIELD 來幫忙，他可以依照傳入的值找出順序，例如： field(欄位,&#8217;spring&#8217;,&#8217;summer&#8217;,'fall&#8217;,'winter&#8217;)，如果傳入值是 winter 的話，他會回傳數字，可以利用這個特性作為排序依據。依上面的例子來說：</p>
<pre class="brush: sql;">
SELECT * FROM batters ORDER BY FIELD(守位,'C','1B','2B','3B','SS','LF','CF','RF','DH');
</pre>
<p>此時結果就會變成：</p>
<pre>
守位    名字
C 	陳峰民
1B 	潘忠韋
2B 	蔣智聰
3B 	石志偉
SS 	林智勝
LF 	曾豪駒
CF 	黃龍義
RF 	霸漢
DH 	陳金鋒
</pre>
</p>
<p>
一定有人說，為什麼剛開始就不設計用數字作為欄位內容，在有些情況之下，如果想在不更動 database 內容的話，即可使用這個方法排序。</p>
<a class="a2a_dd addtoany_share_save" href="http://www.addtoany.com/share_save?linkurl=http%3A%2F%2Fblog.twkang.net%2F2008%2F11%2F09%2F%25e6%2596%25bc-mysql-%25e8%25a3%25a1%25e4%25bd%25bf%25e7%2594%25a8-custom-sort%2F&amp;linkname=%E6%96%BC%20mysql%20%E8%A3%A1%E4%BD%BF%E7%94%A8%20custom%20sort"><img src="http://blog.twkang.net/wp-content/plugins/add-to-any/share_save_171_16.png" width="171" height="16" alt="Share/Bookmark"/></a>]]></content:encoded>
			<wfw:commentRss>http://blog.twkang.net/2008/11/09/%e6%96%bc-mysql-%e8%a3%a1%e4%bd%bf%e7%94%a8-custom-sort/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
