<?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>小惡魔 - 電腦技術 - 生活日記 - 美食介紹 - AppleBOY</title>
	<atom:link href="http://blog.wu-boy.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://blog.wu-boy.com</link>
	<description>介紹一堆美食日記，生活日記，電腦筆記</description>
	<lastBuildDate>Thu, 11 Mar 2010 10:14:50 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8.5</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>[FreeBSD] DenyHosts 設定在 hosts.allow 注意事項</title>
		<link>http://blog.wu-boy.com/2010/03/11/2041/</link>
		<comments>http://blog.wu-boy.com/2010/03/11/2041/#comments</comments>
		<pubDate>Thu, 11 Mar 2010 10:13:29 +0000</pubDate>
		<dc:creator>appleboy</dc:creator>
				<category><![CDATA[FreeBSD]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[DenyHost]]></category>
		<category><![CDATA[SSH]]></category>

		<guid isPermaLink="false">http://blog.wu-boy.com/?p=2041</guid>
		<description><![CDATA[DenyHosts 是一套用 Python 跟 shell script 寫出來的 open source base on Linux or FreeBSD (/var/log/secure on Redhat, /var/log/auth.log on Mandrake, FreeBSD, etc&#8230;)，用來阻擋 SSH Server 被攻擊，之前寫一篇 FreeBSD 安裝設定教學，有一點沒有注意到，就是打開 /etc/hosts.allow，注意要把 ALL : ALL : allow 放到最後一行，跟 iptables 設定原理是一樣的，會從第一條規則開始比對，如果比對成功，下面的 rule 就會略過比對了，參考英文說明：
<span class="readmore"><a href="http://blog.wu-boy.com/2010/03/11/2041/" title="[FreeBSD] DenyHosts 設定在 hosts.allow 注意事項" target="_blank">...詳全文（共781字）</a></span>]]></description>
			<content:encoded><![CDATA[<p><a title="Flickr 上 appleboy46 的 denyhosts" href="http://www.flickr.com/photos/appleboy/4424616360/"><img src="http://farm5.static.flickr.com/4062/4424616360_8f2af7881e_o.png" alt="denyhosts" width="347" height="73" /></a><br />
<a href="http://denyhosts.sourceforge.net/">DenyHosts</a> 是一套用 <a href="http://www.python.org/">Python</a> 跟 shell script 寫出來的 open source base on Linux or FreeBSD (/var/log/secure on Redhat, /var/log/auth.log on Mandrake, FreeBSD, etc&#8230;)，用來阻擋 SSH Server 被攻擊，之前寫一篇 <a href="http://blog.wu-boy.com/2008/12/26/663/" alt="[FreeBSD]利用 DenyHosts 軟體擋掉暴力破解 ssh 的使用者">FreeBSD 安裝設定教學</a>，有一點沒有注意到，就是打開 /etc/hosts.allow，注意要把 ALL : ALL : allow 放到最後一行，跟 iptables 設定原理是一樣的，會從第一條規則開始比對，如果比對成功，下面的 rule 就會略過比對了，參考英文說明：</p>
<blockquote><p>Start by allowing everything (this prevents the rest of the file from working, so remove it when you need protection). The rules here work on a &#8220;First match wins&#8221; basis.</p></blockquote>
<p>/etc/hosts.deny 已經被 FreeBSD 棄用，所以必須把 allow 跟 deny 的 rule 都寫到 hosts.allow 檔案裡面才是正確的</p>
<div class="codecolorer-container bash " style="overflow:auto;white-space:nowrap;width:580px"><div class="bash codecolorer" style="font-family:Monaco,Lucida Console,monospace"><span class="co0">#</span><br />
<span class="co0"># DenyHosts file: /etc/hosts.deniedssh</span><br />
sshd : <span class="sy0">/</span>etc<span class="sy0">/</span>hosts.deniedssh : deny<br />
sshd : ALL : allow<br />
<br />
<span class="co0"># Start by allowing everything (this prevents the rest of the file</span><br />
<span class="co0"># from working, so remove it when you need protection).</span><br />
<span class="co0"># The rules here work on a &quot;First match wins&quot; basis.</span><br />
<span class="co0"># move bottom by appleboy 2010.03.11</span><br />
ALL : ALL : allow</div></div>
<h3>Related View</h3><ul class="related_post"><li><a href="http://blog.wu-boy.com/2008/12/26/663/" title="[FreeBSD]利用 DenyHosts 軟體擋掉暴力破解 ssh 的使用者">[FreeBSD]利用 DenyHosts 軟體擋掉暴力破解 ssh 的使用者 (1)</a></li><li><a href="http://blog.wu-boy.com/2008/04/16/176/" title="[SSHFS] 好用的 SSH Filesystem fusefs-sshfs in FreeBSD or Linux">[SSHFS] 好用的 SSH Filesystem fusefs-sshfs in FreeBSD or Linux (0)</a></li><li><a href="http://blog.wu-boy.com/2008/03/19/155/" title="[筆記] ssh Tunnel 運用在 Linux and Windows FireFox">[筆記] ssh Tunnel 運用在 Linux and Windows FireFox (1)</a></li><li><a href="http://blog.wu-boy.com/2006/11/26/43/" title="[Linux,FreeBSD] scp 上傳跟下載">[Linux,FreeBSD] scp 上傳跟下載 (0)</a></li><li><a href="http://blog.wu-boy.com/2009/12/29/1918/" title="[Git] how to remove file and commit from history(如何移除 commit 歷史紀錄)">[Git] how to remove file and commit from history(如何移除 commit 歷史紀錄) (0)</a></li><li><a href="http://blog.wu-boy.com/2009/12/12/1901/" title="[UNIX] Vim 命令圖解說明">[UNIX] Vim 命令圖解說明 (0)</a></li><li><a href="http://blog.wu-boy.com/2009/06/11/1386/" title="[網站] 好站連結 (三)">[網站] 好站連結 (三) (0)</a></li><li><a href="http://blog.wu-boy.com/2009/03/10/958/" title="Linux or FreeBSD screen 指令介紹使用">Linux or FreeBSD screen 指令介紹使用 (0)</a></li><li><a href="http://blog.wu-boy.com/2009/03/09/948/" title="mydumper 取代 mysqldump 效能">mydumper 取代 mysqldump 效能 (1)</a></li><li><a href="http://blog.wu-boy.com/2009/03/07/940/" title=" Google App Engine SDK：python 基本教學安裝"> Google App Engine SDK：python 基本教學安裝 (0)</a></li></ul>]]></content:encoded>
			<wfw:commentRss>http://blog.wu-boy.com/2010/03/11/2041/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>[C/C++] 計算二進位任意數含有多少個位元為1?</title>
		<link>http://blog.wu-boy.com/2010/02/24/2036/</link>
		<comments>http://blog.wu-boy.com/2010/02/24/2036/#comments</comments>
		<pubDate>Wed, 24 Feb 2010 15:17:17 +0000</pubDate>
		<dc:creator>appleboy</dc:creator>
				<category><![CDATA[C/C++]]></category>

		<guid isPermaLink="false">http://blog.wu-boy.com/?p=2036</guid>
		<description><![CDATA[今天看到一個有趣的題目，就是計算二進位任意數值，其中包含了幾個1，這非常有趣，利用每個 bit 做&#038;就可以解出這個問題了:
#include &#60;stdio.h&#62;
#include &#60;stdlib.h&#62;
<span class="readmore"><a href="http://blog.wu-boy.com/2010/02/24/2036/" title="[C/C++] 計算二進位任意數含有多少個位元為1?" target="_blank">...詳全文（共661字）</a></span>]]></description>
			<content:encoded><![CDATA[<p>今天看到一個有趣的題目，就是計算二進位任意數值，其中包含了幾個1，這非常有趣，利用每個 bit 做&#038;就可以解出這個問題了:</p>
<div class="codecolorer-container c " style="overflow:auto;white-space:nowrap;width:580px"><div class="c codecolorer" style="font-family:Monaco,Lucida Console,monospace"><span class="co2">#include &lt;stdio.h&gt;</span><br />
<span class="co2">#include &lt;stdlib.h&gt;</span><br />
<span class="kw4">int</span> bitcount<span class="br0">&#40;</span><span class="kw4">unsigned</span> <span class="kw4">int</span><span class="br0">&#41;</span><span class="sy0">;</span><br />
<span class="kw4">int</span> main<span class="br0">&#40;</span><span class="br0">&#41;</span><span class="br0">&#123;</span><br />
&nbsp; &nbsp; <span class="kw4">int</span> count <span class="sy0">=</span> <span class="nu0">0</span><span class="sy0">,</span> a<span class="sy0">;</span><br />
&nbsp; &nbsp; a <span class="sy0">=</span> <span class="nu0">1023</span><span class="sy0">;</span><br />
&nbsp; &nbsp; count <span class="sy0">=</span> bitcount<span class="br0">&#40;</span>a<span class="br0">&#41;</span><span class="sy0">;</span><br />
&nbsp; &nbsp; <a href="http://www.opengroup.org/onlinepubs/009695399/functions/printf.html"><span class="kw3">printf</span></a><span class="br0">&#40;</span><span class="st0">&quot;%d有%d個位元為1<span class="es1">\n</span><span class="es1">\n</span>&quot;</span><span class="sy0">,</span> a<span class="sy0">,</span> count<span class="br0">&#41;</span><span class="sy0">;</span><br />
&nbsp; &nbsp; <br />
&nbsp; &nbsp; system<span class="br0">&#40;</span><span class="st0">&quot;pause&quot;</span><span class="br0">&#41;</span><span class="sy0">;</span><br />
&nbsp; &nbsp; <span class="kw1">return</span> <span class="nu0">0</span><span class="sy0">;</span><br />
<span class="br0">&#125;</span><br />
<span class="kw4">int</span> bitcount<span class="br0">&#40;</span><span class="kw4">unsigned</span> <span class="kw4">int</span> n<span class="br0">&#41;</span><br />
<span class="br0">&#123;</span><br />
&nbsp; &nbsp;<span class="kw4">int</span> count <span class="sy0">=</span> <span class="nu0">0</span> <span class="sy0">;</span><br />
&nbsp; &nbsp;<span class="kw1">while</span> <span class="br0">&#40;</span>n<span class="br0">&#41;</span><br />
&nbsp; &nbsp;<span class="br0">&#123;</span><br />
&nbsp; &nbsp; &nbsp; count<span class="sy0">++</span> <span class="sy0">;</span><br />
&nbsp; &nbsp; &nbsp; n <span class="sy0">&amp;=</span> <span class="br0">&#40;</span>n <span class="sy0">-</span> <span class="nu0">1</span><span class="br0">&#41;</span> <span class="sy0">;</span> <span class="co1">//關鍵演算之處</span><br />
&nbsp; &nbsp;<span class="br0">&#125;</span><br />
&nbsp; &nbsp;<span class="kw1">return</span> count <span class="sy0">;</span><br />
<span class="br0">&#125;</span></div></div>
<p>關鍵解法是在 n &#038;= (n &#8211; 1) ; 這個地方，為什麼會是這樣寫呢，大家可以想看看，為什麼要 (n-1)，其實可以帶數字進去跑看看就知道程式為什麼會這樣寫，這個 case 可以分作兩種，數值可能會有兩種狀況，一種是奇數，另一種就是偶數，8 代表 1000，9 代表 1001，最右邊 bit 是 1 代表奇數，剩下的都是偶數，拿9當例子帶入 while 迴圈試試看，首先將 count + 1，接下來 1001 會跟 1000 做相乘動作，就會變成 1000，接下來跑另一次 while 會變成 1000 &#038; 0111 就會變成 0 了，退出 while 迴圈，所以結論是 (n -1) 的用意是去掉一個 1 位元 bit，就像 [xxxx10 ... 0] -1 = [xxxx01 ... 1] &#8230;. 每運算一次相乘，就會少掉一個 1，原理就是這麼簡單。 </p>
<p>這只是一種解法，歡迎大家討論看看還有無其他方法？</p>
<h3>Related View</h3><ul class="related_post"><li><a href="http://blog.wu-boy.com/2010/02/08/2014/" title="[C/C++] 指標相加 = ？or 相減 = offset">[C/C++] 指標相加 = ？or 相減 = offset (2)</a></li><li><a href="http://blog.wu-boy.com/2008/03/17/154/" title="[C/C++] 實做 C 語言 substr 功能，模擬計算機功能">[C/C++] 實做 C 語言 substr 功能，模擬計算機功能 (0)</a></li><li><a href="http://blog.wu-boy.com/2008/03/01/144/" title="[C/C++] 判斷字串是否為數字">[C/C++] 判斷字串是否為數字 (1)</a></li><li><a href="http://blog.wu-boy.com/2008/02/29/143/" title="[C/C++] 判斷年份是否閏年">[C/C++] 判斷年份是否閏年 (0)</a></li><li><a href="http://blog.wu-boy.com/2008/02/03/138/" title="[C/C++] 如何計算陣列大小/個數">[C/C++] 如何計算陣列大小/個數 (0)</a></li></ul>]]></content:encoded>
			<wfw:commentRss>http://blog.wu-boy.com/2010/02/24/2036/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>製作 Windows XP USB 開機系統 (模擬光碟開機)</title>
		<link>http://blog.wu-boy.com/2010/02/15/2028/</link>
		<comments>http://blog.wu-boy.com/2010/02/15/2028/#comments</comments>
		<pubDate>Mon, 15 Feb 2010 08:37:03 +0000</pubDate>
		<dc:creator>appleboy</dc:creator>
				<category><![CDATA[windows]]></category>
		<category><![CDATA[USB]]></category>

		<guid isPermaLink="false">http://blog.wu-boy.com/?p=2028</guid>
		<description><![CDATA[最近幫朋友重灌一台電腦，發現他是 HP Mini 1109TU，沒有內建光碟機，然後朋友又沒買外接式光碟機，所以只好趕快上網找如何製作 Windows XP USB 系統，如果是 Linux 系列就好辦了，網路上找到一堆關於 Linux 教學文件，後來在 mobile01 找到一篇：『[教學]將USB 隨身碟 製成 XP 的安裝碟 (模擬CD-ROM)』，裡面的安裝過程我全部測試過了，可以正常運作，利用 USB 安裝 XP 真的還蠻快的，少了 CD-Rom 的讀取，USB 真的安裝相當快速，不過大家在上面下載的安裝程式，它會先將您的 USB 進行 Fat32 格式化，然後複製 XP 光碟內容到 USB 隨身碟，在設定複製內容到 USB 的同時，請不要將 USB 掛載到 D 槽，因為看了一下程式碼 usb_prep8.cmd 裡面有一段設定 USB 開機選項：
<span class="readmore"><a href="http://blog.wu-boy.com/2010/02/15/2028/" title="製作 Windows XP USB 開機系統 (模擬光碟開機)" target="_blank">...詳全文（共796字）</a></span>]]></description>
			<content:encoded><![CDATA[<p>最近幫朋友重灌一台電腦，發現他是 <a href="http://h50178.www5.hp.com/support/NQ202PA/faqs/114163.html?jumpid=reg_R1002_TWZH">HP Mini 1109TU</a>，沒有內建光碟機，然後朋友又沒買外接式光碟機，所以只好趕快上網找如何製作 Windows XP USB 系統，如果是 Linux 系列就好辦了，網路上找到<a href="http://wiki.ubuntu-tw.org/index.php?title=UNetbootin%EF%BC%9A%E5%8F%AF%E8%A3%BD%E4%BD%9C_Linux_Live_USB_%E7%9A%84%E7%A8%8B%E5%BC%8F">一堆關於 Linux 教學文件</a>，後來在 <a href="http://www.mobile01.com">mobile01</a> 找到一篇：『<a href="http://www.mobile01.com/topicdetail.php?f=159&#038;t=665722">[教學]將USB 隨身碟 製成 XP 的安裝碟 (模擬CD-ROM)</a>』，裡面的安裝過程我全部測試過了，可以正常運作，利用 USB 安裝 XP 真的還蠻快的，少了 CD-Rom 的讀取，USB 真的安裝相當快速，不過大家在上面下載的安裝程式，它會先將您的 USB 進行 Fat32 格式化，然後複製 XP 光碟內容到 USB 隨身碟，在設定複製內容到 USB 的同時，請不要將 USB 掛載到 D 槽，因為看了一下程式碼 usb_prep8.cmd 裡面有一段設定 USB 開機選項：</p>
<div class="codecolorer-container bash " style="overflow:auto;white-space:nowrap;width:580px"><div class="bash codecolorer" style="font-family:Monaco,Lucida Console,monospace">:_getusb<br />
<span class="kw1">set</span> <span class="re2">_ok</span>=<br />
echo.<br />
<span class="kw3">echo</span> &nbsp;Please give Target USB-Drive Letter e.g <span class="kw3">type</span> U<br />
ECHO.<br />
<span class="kw1">set</span> <span class="sy0">/</span>p <span class="re2">_ok</span>= Enter Target USB-Drive Letter: <br />
<span class="kw1">set</span> <span class="re2">_ok</span>=<span class="sy0">!</span>_ok:~<span class="nu0">0</span>,<span class="nu0">1</span><span class="sy0">!</span><br />
<span class="kw1">if</span> not exist <span class="sy0">!</span>_ok<span class="sy0">!</span>:\nul <span class="br0">&#40;</span><br />
&nbsp; echo.<br />
&nbsp; <span class="kw3">echo</span> &nbsp;<span class="sy0">*****</span> Target USB-Drive <span class="sy0">!</span>_ok<span class="sy0">!</span>: does NOT Exist <span class="sy0">*****</span><br />
&nbsp; echo.<br />
&nbsp; pause<br />
&nbsp; goto _main<br />
<span class="br0">&#41;</span><br />
<br />
FOR <span class="sy0">%%</span>i IN <span class="br0">&#40;</span>E F G H I J K L M N O P Q R S T U V W X Y e f g h i j k l m n o p q r s t u v <span class="kw2">w</span> x y<span class="br0">&#41;</span> DO IF <span class="st0">&quot;%%i&quot;</span> == <span class="st0">&quot;!_ok!&quot;</span> SET <span class="re2">usbdrive</span>=<span class="sy0">!</span>_ok<span class="sy0">!</span>:<br />
<br />
<span class="kw1">if</span> <span class="st0">&quot;%usbdrive%&quot;</span> == <span class="st0">&quot;&quot;</span> <span class="br0">&#40;</span> <br />
&nbsp; &nbsp; &nbsp; &nbsp; echo.<br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw3">echo</span> &nbsp;<span class="sy0">*****</span> <span class="sy0">!</span>_ok<span class="sy0">!</span>: is not a valid Drive <span class="sy0">*****</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; echo.<br />
&nbsp; &nbsp; pause<br />
&nbsp; &nbsp; goto _main<br />
<span class="br0">&#41;</span></div></div>
<p>在 for 的迴圈裡面，並沒有寫到 D 這個代碼，所以自己把它補上去吧，這樣就可以正常複製光碟內容到 USB 裡面了。</p>
<h3>Related View</h3><ul class="related_post"><li><a href="http://blog.wu-boy.com/2008/09/07/371/" title="[轉貼][教學] Windows 2003的操作設定">[轉貼][教學] Windows 2003的操作設定 (0)</a></li><li><a href="http://blog.wu-boy.com/2008/06/16/279/" title="[教學]修復 Windows 的開機磁區各種方法">[教學]修復 Windows 的開機磁區各種方法 (0)</a></li><li><a href="http://blog.wu-boy.com/2008/05/16/265/" title="[軟體介紹] Recuva &#8211; File Recovery 救回已刪除檔案資料">[軟體介紹] Recuva &#8211; File Recovery 救回已刪除檔案資料 (4)</a></li><li><a href="http://blog.wu-boy.com/2008/04/17/180/" title="[軟體] 好用的浮水印軟體，支援圖片浮水印跟文字浮水印 FastStone Photo Resizer">[軟體] 好用的浮水印軟體，支援圖片浮水印跟文字浮水印 FastStone Photo Resizer (1)</a></li><li><a href="http://blog.wu-boy.com/2008/04/13/175/" title="[軟體] 擷取 Word 檔內圖片工具 [免安裝]">[軟體] 擷取 Word 檔內圖片工具 [免安裝] (0)</a></li><li><a href="http://blog.wu-boy.com/2008/04/12/173/" title="[軟體教學] zShare 使用 RapidUp 空間分享教學及 FreeGrab 下載教學">[軟體教學] zShare 使用 RapidUp 空間分享教學及 FreeGrab 下載教學 (3)</a></li><li><a href="http://blog.wu-boy.com/2008/03/31/164/" title="[分享] Windows Live Messenger 9.0+繁體中文化 + PLUS!4.5 +shell4.2大整合">[分享] Windows Live Messenger 9.0+繁體中文化 + PLUS!4.5 +shell4.2大整合 (0)</a></li><li><a href="http://blog.wu-boy.com/2008/02/23/140/" title="[WWW] firefox and IE 的 greasemonkey">[WWW] firefox and IE 的 greasemonkey (0)</a></li></ul>]]></content:encoded>
			<wfw:commentRss>http://blog.wu-boy.com/2010/02/15/2028/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>[C/C++] 指標相加 = ？or 相減 = offset</title>
		<link>http://blog.wu-boy.com/2010/02/08/2014/</link>
		<comments>http://blog.wu-boy.com/2010/02/08/2014/#comments</comments>
		<pubDate>Mon, 08 Feb 2010 06:50:16 +0000</pubDate>
		<dc:creator>appleboy</dc:creator>
				<category><![CDATA[C/C++]]></category>
		<category><![CDATA[blog]]></category>

		<guid isPermaLink="false">http://blog.wu-boy.com/?p=2014</guid>
		<description><![CDATA[最近看到網路上討論 C/C++ 題目，某公司主管給新進人員面試的 C/C++ 考題，如下：
int main&#40;void&#41;
&#123;
&#160; &#160; &#160;int *a,*b;
<span class="readmore"><a href="http://blog.wu-boy.com/2010/02/08/2014/" title="[C/C++] 指標相加 = ？or 相減 = offset" target="_blank">...詳全文（共1409字）</a></span>]]></description>
			<content:encoded><![CDATA[<p>最近看到網路上討論 C/C++ 題目，某公司主管給新進人員面試的 C/C++ 考題，如下：</p>
<div class="codecolorer-container c " style="overflow:auto;white-space:nowrap;width:580px"><div class="c codecolorer" style="font-family:Monaco,Lucida Console,monospace"><span class="kw4">int</span> main<span class="br0">&#40;</span><span class="kw4">void</span><span class="br0">&#41;</span><br />
<span class="br0">&#123;</span><br />
&nbsp; &nbsp; &nbsp;<span class="kw4">int</span> <span class="sy0">*</span>a<span class="sy0">,*</span>b<span class="sy0">;</span><br />
&nbsp; &nbsp; &nbsp;a<span class="sy0">=</span><span class="nu0">1</span><span class="sy0">;</span><br />
&nbsp; &nbsp; &nbsp;b<span class="sy0">=</span><span class="nu0">1</span><span class="sy0">;</span><br />
&nbsp; &nbsp; &nbsp;<a href="http://www.opengroup.org/onlinepubs/009695399/functions/printf.html"><span class="kw3">printf</span></a><span class="br0">&#40;</span><span class="st0">&quot;%d<span class="es1">\n</span>&quot;</span><span class="sy0">,</span>a<span class="sy0">+</span>b<span class="br0">&#41;</span><span class="sy0">;</span><br />
&nbsp; &nbsp; &nbsp;<span class="kw1">return</span> <span class="nu0">0</span><span class="sy0">;</span><br />
<span class="br0">&#125;</span></div></div>
<p>請問上面這個題目，哪裡有出問題，這是面試官問新進人員的題目之一，看也知道這程式丟到 <a href="http://www.bloodshed.net/index.html">Dev-C++</a> 是不會過的，*a *b 都是宣告為整數指標型態，可是在 a=1 或 b=1 在 Dev-C++ 裡面是編譯不過的，但是那寫法是沒有錯的，就像你設定 a=0 或者是 a=NULL 是一樣意思，不過最好是不要這樣寫，assignment 這樣寫不太好，可以改成 a = (int *)1; b = (int *)1; 這樣就可以順利編譯通過，再來 printf(&#8221;%d\n&#8221;,a+b); 這行錯很大，指標相加會爆炸吧，如果程式這樣寫，不把 OS 搞掛，那我還會覺得懷疑呢，正確寫法是指標加上 offset(位移)，這樣才是可以正確執行的，所以我們把程式改成下面：</p>
<div class="codecolorer-container c " style="overflow:auto;white-space:nowrap;width:580px"><div class="c codecolorer" style="font-family:Monaco,Lucida Console,monospace"><span class="kw4">int</span> main<span class="br0">&#40;</span><span class="kw4">void</span><span class="br0">&#41;</span><br />
<span class="br0">&#123;</span><br />
&nbsp; &nbsp; &nbsp;<span class="kw4">int</span> <span class="sy0">*</span>a<span class="sy0">,*</span>b<span class="sy0">;</span><br />
&nbsp; &nbsp; &nbsp;a <span class="sy0">=</span> <span class="br0">&#40;</span><span class="kw4">int</span> <span class="sy0">*</span><span class="br0">&#41;</span><span class="nu0">1</span><span class="sy0">;</span><br />
&nbsp; &nbsp; &nbsp;b <span class="sy0">=</span> <span class="br0">&#40;</span><span class="kw4">int</span> <span class="sy0">*</span><span class="br0">&#41;</span><span class="nu0">1</span><span class="sy0">;</span><br />
&nbsp; &nbsp; &nbsp;<a href="http://www.opengroup.org/onlinepubs/009695399/functions/printf.html"><span class="kw3">printf</span></a><span class="br0">&#40;</span><span class="st0">&quot;%d<span class="es1">\n</span>&quot;</span><span class="sy0">,</span>a<span class="sy0">+</span><span class="br0">&#40;</span><span class="kw4">int</span><span class="br0">&#41;</span>b<span class="br0">&#41;</span><span class="sy0">;</span><br />
&nbsp; &nbsp; &nbsp;<span class="kw1">return</span> <span class="nu0">0</span><span class="sy0">;</span><br />
<span class="br0">&#125;</span></div></div>
<p>最後的執行結果是 5，(int) b 就相當於 sizeof(*b) 也等於 sizeof(int *) 答案都是四，所以就是 1+4 =5，指標是不能相加的，只能透過 offset 方式來讓指標指向不同 base，但是如果是指標相減，那就是求 offset 的意思喔，看一下底下例子</p>
<div class="codecolorer-container c " style="overflow:auto;white-space:nowrap;width:580px"><div class="c codecolorer" style="font-family:Monaco,Lucida Console,monospace"><span class="kw4">int</span> main<span class="br0">&#40;</span><span class="kw4">void</span><span class="br0">&#41;</span><br />
<span class="br0">&#123;</span><br />
&nbsp; &nbsp; <span class="kw4">int</span> <span class="sy0">*</span>a<span class="sy0">,*</span>b<span class="sy0">;</span><br />
&nbsp; &nbsp; a <span class="sy0">=</span> <span class="br0">&#40;</span><span class="kw4">int</span> <span class="sy0">*</span><span class="br0">&#41;</span><span class="nu12">0x5566</span><span class="sy0">;</span><br />
&nbsp; &nbsp; b <span class="sy0">=</span> <span class="br0">&#40;</span><span class="kw4">int</span> <span class="sy0">*</span><span class="br0">&#41;</span><span class="nu12">0x5570</span><span class="sy0">;</span><br />
&nbsp; &nbsp; <a href="http://www.opengroup.org/onlinepubs/009695399/functions/printf.html"><span class="kw3">printf</span></a><span class="br0">&#40;</span><span class="st0">&quot;%d %d %d %d %d<span class="es1">\n</span>&quot;</span><span class="sy0">,</span> a<span class="sy0">,</span> b<span class="sy0">,</span> <span class="br0">&#40;</span><span class="kw4">int</span><span class="br0">&#41;</span>a<span class="sy0">+</span><span class="br0">&#40;</span><span class="kw4">int</span><span class="br0">&#41;</span>b<span class="sy0">,</span> a<span class="sy0">+</span><span class="br0">&#40;</span><span class="kw4">int</span><span class="br0">&#41;</span>b<span class="sy0">,</span> <span class="kw4">sizeof</span><span class="br0">&#40;</span><span class="kw4">int</span> <span class="sy0">*</span><span class="br0">&#41;</span><span class="br0">&#41;</span><span class="sy0">;</span><br />
&nbsp; &nbsp; <a href="http://www.opengroup.org/onlinepubs/009695399/functions/printf.html"><span class="kw3">printf</span></a><span class="br0">&#40;</span><span class="st0">&quot;%d<span class="es1">\n</span>&quot;</span><span class="sy0">,</span> a <span class="sy0">-</span> b<span class="br0">&#41;</span><span class="sy0">;</span><br />
&nbsp; &nbsp; <a href="http://www.opengroup.org/onlinepubs/009695399/functions/printf.html"><span class="kw3">printf</span></a><span class="br0">&#40;</span><span class="st0">&quot;%d<span class="es1">\n</span>&quot;</span><span class="sy0">,</span> <span class="br0">&#40;</span><span class="br0">&#40;</span><span class="kw4">int</span><span class="br0">&#41;</span>b <span class="sy0">-</span> <span class="br0">&#40;</span><span class="kw4">int</span><span class="br0">&#41;</span>a<span class="br0">&#41;</span><span class="sy0">/</span><span class="kw4">sizeof</span><span class="br0">&#40;</span><span class="kw4">int</span> <span class="sy0">*</span><span class="br0">&#41;</span><span class="br0">&#41;</span><span class="sy0">;</span><br />
&nbsp; &nbsp; <span class="kw1">return</span> <span class="nu0">0</span><span class="sy0">;</span><br />
<span class="br0">&#125;</span></div></div>
<p>要算 offset 也非常容易，只要先轉成 10 進位相減在除以 sizeof(int *) 這樣就可以求出結果了，a-b 除以四其實 -2.5 取補數，所以是 -3，如果是 b-a 就是整數3了，只是位移 3 個 bit，其實觀念就是這樣，指標位址不能相加，但是指標位址可以相減 = Offset，觀念大致上是這樣，最後補上完整程式，大家可以 run 一次看看就知道了</p>
<div class="codecolorer-container c " style="overflow:auto;white-space:nowrap;width:580px"><div class="c codecolorer" style="font-family:Monaco,Lucida Console,monospace"><span class="co2">#include &quot;string.h&quot;</span><br />
<span class="co2">#include &quot;stdlib.h&quot;</span><br />
<span class="co2">#include &quot;stdio.h&quot;</span><br />
<br />
<span class="kw4">int</span> main<span class="br0">&#40;</span><span class="kw4">void</span><span class="br0">&#41;</span><br />
<span class="br0">&#123;</span><br />
&nbsp; &nbsp; <span class="kw4">int</span> <span class="sy0">*</span>a<span class="sy0">,</span> <span class="sy0">*</span>b<span class="sy0">;</span><br />
&nbsp; &nbsp; a <span class="sy0">=</span> <span class="br0">&#40;</span><span class="kw4">int</span> <span class="sy0">*</span><span class="br0">&#41;</span><span class="nu0">1</span><span class="sy0">;</span><br />
&nbsp; &nbsp; b <span class="sy0">=</span> <span class="br0">&#40;</span><span class="kw4">int</span> <span class="sy0">*</span><span class="br0">&#41;</span><span class="nu0">1</span><span class="sy0">;</span><br />
&nbsp; &nbsp; <a href="http://www.opengroup.org/onlinepubs/009695399/functions/printf.html"><span class="kw3">printf</span></a><span class="br0">&#40;</span><span class="st0">&quot;%d %d %d<span class="es1">\n</span>&quot;</span><span class="sy0">,</span> a <span class="sy0">+</span> <span class="br0">&#40;</span><span class="kw4">int</span><span class="br0">&#41;</span>b<span class="sy0">,</span> <span class="br0">&#40;</span><span class="kw4">int</span><span class="br0">&#41;</span><span class="br0">&#40;</span>a <span class="sy0">+</span> <span class="br0">&#40;</span><span class="kw4">int</span><span class="br0">&#41;</span>b<span class="br0">&#41;</span><span class="sy0">,</span> <span class="br0">&#40;</span><span class="kw4">int</span><span class="br0">&#41;</span>a <span class="sy0">+</span> <span class="br0">&#40;</span><span class="kw4">int</span><span class="br0">&#41;</span>b<span class="br0">&#41;</span><span class="sy0">;</span> <br />
&nbsp; &nbsp; a <span class="sy0">=</span> <span class="br0">&#40;</span><span class="kw4">int</span> <span class="sy0">*</span><span class="br0">&#41;</span><span class="nu12">0x5566</span><span class="sy0">;</span><br />
&nbsp; &nbsp; b <span class="sy0">=</span> <span class="br0">&#40;</span><span class="kw4">int</span> <span class="sy0">*</span><span class="br0">&#41;</span><span class="nu12">0x5570</span><span class="sy0">;</span><br />
<br />
&nbsp; &nbsp; <a href="http://www.opengroup.org/onlinepubs/009695399/functions/printf.html"><span class="kw3">printf</span></a><span class="br0">&#40;</span><span class="st0">&quot;%d %d %d %d %d<span class="es1">\n</span>&quot;</span><span class="sy0">,</span> a<span class="sy0">,</span> b<span class="sy0">,</span> <span class="br0">&#40;</span><span class="kw4">int</span><span class="br0">&#41;</span>a<span class="sy0">+</span><span class="br0">&#40;</span><span class="kw4">int</span><span class="br0">&#41;</span>b<span class="sy0">,</span> a<span class="sy0">+</span><span class="br0">&#40;</span><span class="kw4">int</span><span class="br0">&#41;</span>b<span class="sy0">,</span> <span class="kw4">sizeof</span><span class="br0">&#40;</span><span class="kw4">int</span> <span class="sy0">*</span><span class="br0">&#41;</span><span class="br0">&#41;</span><span class="sy0">;</span><br />
&nbsp; &nbsp; <a href="http://www.opengroup.org/onlinepubs/009695399/functions/printf.html"><span class="kw3">printf</span></a><span class="br0">&#40;</span><span class="st0">&quot;%d<span class="es1">\n</span>&quot;</span><span class="sy0">,</span> a <span class="sy0">-</span> b<span class="br0">&#41;</span><span class="sy0">;</span><br />
&nbsp; &nbsp; <a href="http://www.opengroup.org/onlinepubs/009695399/functions/printf.html"><span class="kw3">printf</span></a><span class="br0">&#40;</span><span class="st0">&quot;%d<span class="es1">\n</span>&quot;</span><span class="sy0">,</span> <span class="br0">&#40;</span><span class="br0">&#40;</span><span class="kw4">int</span><span class="br0">&#41;</span>b <span class="sy0">-</span> <span class="br0">&#40;</span><span class="kw4">int</span><span class="br0">&#41;</span>a<span class="br0">&#41;</span><span class="sy0">/</span><span class="kw4">sizeof</span><span class="br0">&#40;</span><span class="kw4">int</span> <span class="sy0">*</span><span class="br0">&#41;</span><span class="br0">&#41;</span><span class="sy0">;</span><br />
&nbsp; &nbsp; <br />
&nbsp; &nbsp; a <span class="sy0">=</span> <span class="br0">&#40;</span><span class="kw4">int</span><span class="sy0">*</span><span class="br0">&#41;</span><span class="nu12">0x1000</span><span class="sy0">;</span><br />
&nbsp; &nbsp; b <span class="sy0">=</span> a <span class="sy0">+</span> <span class="nu0">3</span><span class="sy0">;</span><br />
&nbsp; &nbsp; <a href="http://www.opengroup.org/onlinepubs/009695399/functions/printf.html"><span class="kw3">printf</span></a><span class="br0">&#40;</span><span class="st0">&quot;%d %d %p %p <span class="es1">\n</span>&quot;</span><span class="sy0">,</span> a<span class="sy0">,</span> b<span class="sy0">,</span> a<span class="sy0">,</span> b<span class="br0">&#41;</span><span class="sy0">;</span><br />
&nbsp; &nbsp; <br />
&nbsp; &nbsp; system<span class="br0">&#40;</span><span class="st0">&quot;pause&quot;</span><span class="br0">&#41;</span><span class="sy0">;</span><br />
&nbsp; &nbsp; <span class="kw1">return</span> <span class="nu0">0</span><span class="sy0">;</span><br />
<span class="br0">&#125;</span></div></div>
<h3>Related View</h3><ul class="related_post"><li><a href="http://blog.wu-boy.com/2010/02/24/2036/" title="[C/C++] 計算二進位任意數含有多少個位元為1?">[C/C++] 計算二進位任意數含有多少個位元為1? (0)</a></li><li><a href="http://blog.wu-boy.com/2008/03/17/154/" title="[C/C++] 實做 C 語言 substr 功能，模擬計算機功能">[C/C++] 實做 C 語言 substr 功能，模擬計算機功能 (0)</a></li><li><a href="http://blog.wu-boy.com/2008/03/01/144/" title="[C/C++] 判斷字串是否為數字">[C/C++] 判斷字串是否為數字 (1)</a></li><li><a href="http://blog.wu-boy.com/2008/02/29/143/" title="[C/C++] 判斷年份是否閏年">[C/C++] 判斷年份是否閏年 (0)</a></li><li><a href="http://blog.wu-boy.com/2008/02/03/138/" title="[C/C++] 如何計算陣列大小/個數">[C/C++] 如何計算陣列大小/個數 (0)</a></li></ul>]]></content:encoded>
			<wfw:commentRss>http://blog.wu-boy.com/2010/02/08/2014/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Google Chrome 支援超過 40,000 Extensions! with Greasemonkey</title>
		<link>http://blog.wu-boy.com/2010/02/03/1997/</link>
		<comments>http://blog.wu-boy.com/2010/02/03/1997/#comments</comments>
		<pubDate>Wed, 03 Feb 2010 15:33:13 +0000</pubDate>
		<dc:creator>appleboy</dc:creator>
				<category><![CDATA[Google]]></category>
		<category><![CDATA[blog]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[www]]></category>
		<category><![CDATA[Chrome]]></category>
		<category><![CDATA[google]]></category>

		<guid isPermaLink="false">http://blog.wu-boy.com/?p=1997</guid>
		<description><![CDATA[看到 Google Chrome Blog 發表的Google Chrome 支援超過 40,000 Extensions!，當 Google Chrome 瀏覽器剛出來的時候，造成 Web Developer 一些震撼，因為 Chrome 強調的是擁有快速的 Javascript 引擎，以及快速的啟動，Fast start-up、Fast loading、Fast search，也因此讓很多設計網站的工程師必須把 Chrome 的支援性考慮進去，但是由於剛推出的瀏覽器，沒有任何外掛功能，我本身用 FireFox 瀏覽器很多年了，FireFox 的附加元件讓許多程式設計師投入開發，也製造出很多方便的附加元件來讓大家使用，例如：FireBug、Gmail Manager、Greasemonkey…，然而 FireFox 最方便的就是 Greasemonkey 此附加元件，使用者可以撰寫簡單 Javascript 語言來跟指定網站進行元件控制，現在 Google 工程師聽到我們的聲音了，Google Chrome 4 加入 Greasemonkey user scripts 功能，大家可以到 userscripts.org 下載超過 40,000 script 安裝到 Chrome 瀏覽器。您可以在 blogger 使用 emoticons，大家可以去參考看看。
<span class="readmore"><a href="http://blog.wu-boy.com/2010/02/03/1997/" title="Google Chrome 支援超過 40,000 Extensions! with Greasemonkey" target="_blank">...詳全文（共823字）</a></span>]]></description>
			<content:encoded><![CDATA[<p>看到 <a href="http://blog.chromium.org/">Google Chrome Blo</a>g 發表的<a href="http://blog.chromium.org/2010/02/40000-more-extensions.html">Google Chrome 支援超過 40,000 Extensions!</a>，當 <a href="http://www.google.com/chrome">Google Chrome</a> 瀏覽器剛出來的時候，造成 Web Developer 一些震撼，因為 Chrome 強調的是擁有快速的 Javascript 引擎，以及快速的啟動，Fast start-up、Fast loading、Fast search，也因此讓很多設計網站的工程師必須把 Chrome 的支援性考慮進去，但是由於剛推出的瀏覽器，沒有任何外掛功能，我本身用 <a href="http://www.mozilla.com/en-US/firefox/upgrade.html">FireFox</a> 瀏覽器很多年了，FireFox 的<a href="https://addons.mozilla.org/zh-TW/firefox/">附加元件</a>讓許多程式設計師投入開發，也製造出很多方便的附加元件來讓大家使用，例如：<a href="https://addons.mozilla.org/zh-TW/firefox/addon/1843">FireBug</a>、<a href="https://addons.mozilla.org/zh-TW/firefox/addon/1320">Gmail Manager</a>、<a href="https://addons.mozilla.org/zh-TW/firefox/addon/748">Greasemonkey</a>…，然而 FireFox 最方便的就是 <a href="http://en.wikipedia.org/wiki/Greasemonkey">Greasemonkey</a> 此附加元件，使用者可以撰寫簡單 Javascript 語言來跟指定網站進行元件控制，現在 Google 工程師聽到我們的聲音了，Google Chrome 4 加入 Greasemonkey user scripts 功能，大家可以到 <a href="http://www.userscripts.org/">userscripts.org</a> 下載超過 40,000 script 安裝到 Chrome 瀏覽器。您可以在 blogger 使用 <a href="http://userscripts.org/scripts/show/67384">emoticons</a>，大家可以去參考看看。</p>
<p>由於 Chrome 支援了 Greasemonkey，所以趕快把 FireFox 所安裝的 script，也安裝到 Chrome，可是我發現之前 <a href="http://blog.gslin.org">DarkKiller</a> 大神寫的 <a href="http://userscripts.org/scripts/show/12267">Wretch Album Expander</a> 已經不能用了，所以我將它實做到 Chrome，可以從這裡下載安裝：<a href="http://userscripts.org/scripts/show/67929">Wretch Album Expander for Google Chrome or FireFox</a>，平時自己偶而會看看<a href="http://www.wretch.cc">無名小站</a>，所以也是方便自己觀看照片，此 script 也可以安裝在 FireFox 喔。這樣大家就不用再看圖片還要一張一張慢慢點，只要負責按換頁就可以了 ^^。</p>
<p>來測試看看，隨便找一本無名相簿：<a href="http://www.wretch.cc/album/album.php?id=lafiteho&#038;book=53&#038;page=2">馬甲‧小葵 </a>，畫面：<a href="http://farm3.static.flickr.com/2744/4327379085_f9a2834b1d_o.gif" title="馬甲‧小葵 - 2010-02-03 23 27 25 (by appleboy46)">點我觀看</a></p>
<h3>Related View</h3><ul class="related_post"><li><a href="http://blog.wu-boy.com/2009/03/03/910/" title="[Wordpress] post 文章不能使用 javascript 語法 ">[Wordpress] post 文章不能使用 javascript 語法  (0)</a></li><li><a href="http://blog.wu-boy.com/2009/02/11/754/" title="[FireFox] 安裝 google toolbar 使用 chrome Start page">[FireFox] 安裝 google toolbar 使用 chrome Start page (0)</a></li><li><a href="http://blog.wu-boy.com/2008/08/14/308/" title="[教學]網頁簡體繁體轉換程式(Google AJAX Language API)">[教學]網頁簡體繁體轉換程式(Google AJAX Language API) (0)</a></li><li><a href="http://blog.wu-boy.com/2010/01/29/1972/" title="Google Chrome 推出 4.0 穩定版 &#038; Mozilla 推出 FireFox 3.6">Google Chrome 推出 4.0 穩定版 &#038; Mozilla 推出 FireFox 3.6 (0)</a></li><li><a href="http://blog.wu-boy.com/2010/01/17/1957/" title="How to install Google Web Toolkit  with Eclipse">How to install Google Web Toolkit  with Eclipse (2)</a></li><li><a href="http://blog.wu-boy.com/2010/01/05/1943/" title="Using firebug for firefox 除錯 javascript">Using firebug for firefox 除錯 javascript (1)</a></li><li><a href="http://blog.wu-boy.com/2009/11/25/1861/" title="[Javascript] 在函數裡設定參數預設值">[Javascript] 在函數裡設定參數預設值 (0)</a></li><li><a href="http://blog.wu-boy.com/2009/10/21/1740/" title="[jQuery] ThickBox 3.1 無限期停止支援維護">[jQuery] ThickBox 3.1 無限期停止支援維護 (0)</a></li><li><a href="http://blog.wu-boy.com/2009/06/16/1454/" title="[jQuery] 驗證表單實作筆記 API/1.3/Selectors">[jQuery] 驗證表單實作筆記 API/1.3/Selectors (0)</a></li><li><a href="http://blog.wu-boy.com/2009/06/11/1386/" title="[網站] 好站連結 (三)">[網站] 好站連結 (三) (0)</a></li></ul>]]></content:encoded>
			<wfw:commentRss>http://blog.wu-boy.com/2010/02/03/1997/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>phpBB 3.1 版本將不再支援 PHP4</title>
		<link>http://blog.wu-boy.com/2010/02/01/1994/</link>
		<comments>http://blog.wu-boy.com/2010/02/01/1994/#comments</comments>
		<pubDate>Sun, 31 Jan 2010 16:40:24 +0000</pubDate>
		<dc:creator>appleboy</dc:creator>
				<category><![CDATA[www]]></category>
		<category><![CDATA[PHPBB]]></category>

		<guid isPermaLink="false">http://blog.wu-boy.com/?p=1994</guid>
		<description><![CDATA[在 phpBB 官方網站看到這篇：『phpBB 3.1 to discontinue support for PHP versions below 5.2』，內容大致上是說 phpBB 3.0 &#8220;Olympus&#8221; 系列的版本將是 phpBB 支援 php 4 最後一個版本，之後所推出的 phpBB 3.1 &#8220;Ascraeus&#8221; 版本，PHP 需要 5.2 或者是更高才可以正確執行。隨著 3.1 版本的推出，3.0 將會繼續維護 6~9 個月的時間，這版本將會繼續維持相容於 php 4 系統。
<span class="readmore"><a href="http://blog.wu-boy.com/2010/02/01/1994/" title="phpBB 3.1 版本將不再支援 PHP4" target="_blank">...詳全文（共361字）</a></span>]]></description>
			<content:encoded><![CDATA[<p>在 <a href="http://www.phpbb.com/">phpBB</a> 官方網站看到這篇：『<a href="http://www.phpbb.com/community/viewtopic.php?f=14&#038;t=1958605">phpBB 3.1 to discontinue support for PHP versions below 5.2</a>』，內容大致上是說 phpBB 3.0 &#8220;Olympus&#8221; 系列的版本將是 phpBB 支援 php 4 最後一個版本，之後所推出的 phpBB 3.1 &#8220;Ascraeus&#8221; 版本，PHP 需要 5.2 或者是更高才可以正確執行。隨著 3.1 版本的推出，3.0 將會繼續維護 6~9 個月的時間，這版本將會繼續維持相容於 php 4 系統。</p>
<p>由於 phpBB 3.1 還處於開發的階段，尚未決定發布日期，所以大家還是有很多時間可以將 php 升級到 5.2.0 或者是更高。看到 phpBB 可以捨棄 php 4 還蠻高興的，自己本身玩 phpBB 多年，看到 2.0 到 3.0 的變化蠻大的，php 4 安全姓做的非常不好，所以導致 code 非常隴長，希望 3.1 可以快點推出。 </p>
<h3>Related View</h3><ul class="related_post"><li><a href="http://blog.wu-boy.com/2009/03/30/1116/" title="MySQL count(&#8221;欄位&#8221;) vs mysql_num_rows 速度？">MySQL count(&#8221;欄位&#8221;) vs mysql_num_rows 速度？ (5)</a></li></ul>]]></content:encoded>
			<wfw:commentRss>http://blog.wu-boy.com/2010/02/01/1994/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Google Chrome 推出 4.0 穩定版 &amp; Mozilla 推出 FireFox 3.6</title>
		<link>http://blog.wu-boy.com/2010/01/29/1972/</link>
		<comments>http://blog.wu-boy.com/2010/01/29/1972/#comments</comments>
		<pubDate>Fri, 29 Jan 2010 04:07:55 +0000</pubDate>
		<dc:creator>appleboy</dc:creator>
				<category><![CDATA[Google]]></category>
		<category><![CDATA[www]]></category>
		<category><![CDATA[Chrmoe]]></category>
		<category><![CDATA[google]]></category>

		<guid isPermaLink="false">http://blog.wu-boy.com/?p=1972</guid>
		<description><![CDATA[Mozilla 在上禮拜 (2010.01.22) 推出了 FireFox 3.6，大家可以下載測試效能如何，也可以 follow 狐耳摩莎的 Plurk 來收到 MozTW 的最新資訊，這篇重點不是在 FireFox，而是 Google 正式推出 Windows 版本 new Chrome 4.0 stable release，4.0 版本已經可以正式使用 Google Extensions，之前在3.0版本，只能安裝 Chrome Beta 版本才可以使用 extension，現在只要將 Windows Google Chrome 升級成 Stable 版本，就可以全面使用 Extensions，可以使用手動升級，或者是在下禮拜就會自動 update 到最新版本。
<span class="readmore"><a href="http://blog.wu-boy.com/2010/01/29/1972/" title="Google Chrome 推出 4.0 穩定版 &#038; Mozilla 推出 FireFox 3.6" target="_blank">...詳全文（共424字）</a></span>]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.mozilla.com/">Mozilla</a> 在上禮拜 (2010.01.22) 推出了 <a href="http://moztw.org/firefox/releases/3.6/">FireFox 3.6</a>，大家可以下載測試效能如何，也可以 follow <a href="http://www.plurk.com/foxmosa">狐耳摩莎的 Plurk</a> 來收到 MozTW 的最新資訊，這篇重點不是在 FireFox，而是 <a href="http://www.google.com">Google</a> 正式推出 Windows 版本 <a href="http://chrome.blogspot.com/2010/01/over-1500-new-features-for-google.html">new Chrome 4.0 stable release</a>，4.0 版本已經可以正式使用 <a href="http://code.google.com/chrome/extensions/">Google Extensions</a>，之前在3.0版本，只能安裝 <a href="http://www.google.com/landing/chrome/beta/">Chrome Beta</a> 版本才可以使用 extension，現在只要將 Windows Google Chrome 升級成 Stable 版本，就可以全面使用 Extensions，可以使用<a href="http://www.google.com/support/chrome/bin/answer.py?hl=en&#038;answer=95414">手動升級</a>，或者是在下禮拜就會自動 update 到最新版本。</p>
<p><a href="http://www.flickr.com/photos/appleboy/4305644720/" title="Google Chrome 4.0 (by appleboy46)"><img src="http://farm3.static.flickr.com/2710/4305644720_fde6433a9c.jpg" title="Google Chrome 4.0 (by appleboy46)" alt="Google Chrome 4.0 (by appleboy46)" width="500" height="249" /></a></p>
<p>最後可以參考 <a href="http://blog.ericsk.org/">ericsk</a> 大大所寫的<a href="http://blog.ericsk.org/archives/1389">從開發者角度看 Chrome 4 的推出</a></p>
<p>Reference:<br />
<a href="http://googlecode.blogspot.com/2010/01/extensibility-new-html-and-javascript.html">Extensibility + new HTML and JavaScript APIs for Google Chrome</a><br />
<a href="http://blog.chromium.org/2010/01/more-resources-for-developers.html">More Resources for Developers</a></p>
<h3>Related View</h3><ul class="related_post"><li><a href="http://blog.wu-boy.com/2010/02/03/1997/" title="Google Chrome 支援超過 40,000 Extensions! with Greasemonkey">Google Chrome 支援超過 40,000 Extensions! with Greasemonkey (1)</a></li><li><a href="http://blog.wu-boy.com/2010/01/17/1957/" title="How to install Google Web Toolkit  with Eclipse">How to install Google Web Toolkit  with Eclipse (2)</a></li><li><a href="http://blog.wu-boy.com/2009/06/06/1421/" title="[Gmail] 最近發布的功能：進階搜尋，預覽收件夾，郵件內容語言轉換">[Gmail] 最近發布的功能：進階搜尋，預覽收件夾，郵件內容語言轉換 (0)</a></li><li><a href="http://blog.wu-boy.com/2009/04/05/1129/" title="New in Labs:Gmail search autocomplete 快速找尋使用者 email 跟附件檔案">New in Labs:Gmail search autocomplete 快速找尋使用者 email 跟附件檔案 (2)</a></li><li><a href="http://blog.wu-boy.com/2009/03/27/1081/" title="[PHP] Zend 使用 Google Calendar API &#8211; 瀏覽事件">[PHP] Zend 使用 Google Calendar API &#8211; 瀏覽事件 (3)</a></li><li><a href="http://blog.wu-boy.com/2009/03/26/1075/" title="[PHP] Zend 使用 Google Calendar API &#8211; 環境建立架設">[PHP] Zend 使用 Google Calendar API &#8211; 環境建立架設 (3)</a></li><li><a href="http://blog.wu-boy.com/2009/03/07/940/" title=" Google App Engine SDK：python 基本教學安裝"> Google App Engine SDK：python 基本教學安裝 (0)</a></li><li><a href="http://blog.wu-boy.com/2009/03/03/910/" title="[Wordpress] post 文章不能使用 javascript 語法 ">[Wordpress] post 文章不能使用 javascript 語法  (0)</a></li><li><a href="http://blog.wu-boy.com/2009/02/27/840/" title="[Google]Gmail 支援選擇多重檔案上傳跟進度狀況狀態 multi-select and progress bars">[Google]Gmail 支援選擇多重檔案上傳跟進度狀況狀態 multi-select and progress bars (2)</a></li><li><a href="http://blog.wu-boy.com/2009/02/21/819/" title="[google] Gmail Multiple Inboxes 支援多重資料夾">[google] Gmail Multiple Inboxes 支援多重資料夾 (0)</a></li></ul>]]></content:encoded>
			<wfw:commentRss>http://blog.wu-boy.com/2010/01/29/1972/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>How to change run levels and init.d scripts in Ubuntu &amp; Debian</title>
		<link>http://blog.wu-boy.com/2010/01/28/1978/</link>
		<comments>http://blog.wu-boy.com/2010/01/28/1978/#comments</comments>
		<pubDate>Thu, 28 Jan 2010 02:15:27 +0000</pubDate>
		<dc:creator>appleboy</dc:creator>
				<category><![CDATA[Debian]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[ubuntu]]></category>
		<category><![CDATA[Fedora]]></category>

		<guid isPermaLink="false">http://blog.wu-boy.com/?p=1978</guid>
		<description><![CDATA[Ubuntu 6.10 (Edgy Eft) 之後使用 Upstart 代替原來的 sysinit，而 init 是用來管理 Upstart 的 Daemon，本來系統預設的 runlevel 可以在 /boot/menu.list 或者是 /etc/inittab，可是現在這檔案已經移除了，取而代之的就是 Upstart 管理，可以利用 telinit 來改變系統 runlevel，然而現在 runlevel 的定義跟以前不太一樣了，原先 Ubuntu 跟 Fedora 系列 runlevel 代表意義如下：
<span class="readmore"><a href="http://blog.wu-boy.com/2010/01/28/1978/" title="How to change run levels and init.d scripts in Ubuntu &#038; Debian" target="_blank">...詳全文（共2743字）</a></span>]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.ubuntu.com/">Ubuntu</a> <a href="http://en.wikipedia.org/wiki/Ubuntu_%28operating_system%29#Releases">6.10 (Edgy Eft)</a> 之後使用 <a href="http://en.wikipedia.org/wiki/Upstart">Upstart</a> 代替原來的 sysinit，而 init 是用來管理 Upstart 的 Daemon，本來系統預設的 runlevel 可以在 /boot/menu.list 或者是 /etc/inittab，可是現在這檔案已經移除了，取而代之的就是 Upstart 管理，可以利用 <a href="http://wiki.linuxquestions.org/wiki/Telinit">telinit</a> 來改變系統 runlevel，然而現在 runlevel 的定義跟以前不太一樣了，原先 Ubuntu 跟 Fedora 系列 runlevel 代表意義如下：</p>
<blockquote><p>
0:系統關機 (to halt the system)<br />
1:單一使用者模式 (single-user mode)<br />
2:尚未使用（可由使用者定義）<br />
3:多使用者模式 (文字介面登入)<br />
4:尚未使用 (可由使用者定義)<br />
5:多使用者模式 (含有一個X介面的登入畫面)<br />
6:重新開機 (reboot the system)</p></blockquote>
<p>轉換成 Upstart 的話，就會變成底下</p>
<blockquote><p>
0:系統關機 (to halt the system)<br />
1:單一使用者模式 (single-user mode)<br />
2:多使用者模式 (含有一個X介面的登入畫面)<br />
3:多使用者模式 (含有一個X介面的登入畫面)<br />
4:多使用者模式 (含有一個X介面的登入畫面)<br />
5:多使用者模式 (含有一個X介面的登入畫面)<br />
6:重新開機(reboot the system)</p></blockquote>
<p>上面資訊可以在 man telinit 裡面找到，寫得很詳細，現在 Ubuntu 9.10 系統，預設啟用是在 runlevel 2，只要執行 runlevle 指令，就可以查出先前跟目前所設定的 runlevel 值，這些數值是存放在 /var/run/utmp，這是一個 <a href="http://en.wikipedia.org/wiki/Utmp">UTMP File</a>，你會發現，現在只要安裝好 Ubuntu Desktop 系統，就會自動啟動，所以常常會看到 Linux 使用者會來詢問如何關閉 gdm 桌面程式，其實有很多手動的方式，init 也管理了開機所需執行的程式，如果是跑 runlevel 2，就會去執行 /etc/rc2.d/* 底下所有的 script 檔案，所以大家可以發現會有 /etc/rcX.d/ (X:0,1,2,3,4,5,6,S)，其中的 S 代表 single user mode，我們用 rc2.d 底下的檔案來說明：<br />
<a href="http://www.flickr.com/photos/appleboy/4310037627/" title="/ect/rcX.d/ all script (by appleboy46)"><img src="http://farm5.static.flickr.com/4028/4310037627_a22f2ec884.jpg" title="/ect/rcX.d/ all script (by appleboy46)" alt="/ect/rcX.d/ all script (by appleboy46)" width="500" height="254" /></a><br />
大家可以看到，每個檔案命名方式：[S|K]\d{2}script_name，S 代表開機會啟動，K 代表開機不啟動，後面接兩位數字，代表開機優先權順序，這些檔案都是利用 Soft link 方式連接到 /etc/init.d/ 底下，所以修改 /etc/init.d/ 資料夾檔案內容，就可以自動更新 /etc/rc[0-6].d/ 檔案，相當方便吧，那該如何產生對應檔案到 /etc/rc[0-6].d/ 資料夾底下，可以利用 <a href="http://wiki.linuxquestions.org/wiki/Update-rc.d">update-rc.d</a> 這指令，update-rc.d 是用來產生或移除 init script links，可以參考 <a href="http://www.debian.org/doc/debian-policy/#contents">Debian Policy Manual</a>。</p>
<h2>如何使用 update-rc.d 管理 init script links</h2>
<p>利用系統預設值來新增 script links，預設值啟動 runlevels 2-5 跟停止於 runlevels 0, 1 and 6</p>
<div class="codecolorer-container bash " style="overflow:auto;white-space:nowrap;width:580px"><div class="bash codecolorer" style="font-family:Monaco,Lucida Console,monospace">update-rc.d script_name defaults</div></div>
<p>或者是可以自行設定執行優先順序跟自訂啟動 runlevel (ps. 請注意後面都有 <span style="color:red;font-size:11pt">.</span> 符號)</p>
<div class="codecolorer-container bash " style="overflow:auto;white-space:nowrap;width:580px"><div class="bash codecolorer" style="font-family:Monaco,Lucida Console,monospace">update-rc.d script_name start <span class="nu0">20</span> <span class="nu0">2</span> <span class="nu0">3</span> <span class="nu0">4</span> <span class="nu0">5</span> . stop <span class="nu0">20</span> <span class="nu0">0</span> <span class="nu0">1</span> <span class="nu0">6</span> .</div></div>
<p>移除這些 script links (-f 參數代表強制移除)</p>
<div class="codecolorer-container bash " style="overflow:auto;white-space:nowrap;width:580px"><div class="bash codecolorer" style="font-family:Monaco,Lucida Console,monospace">update-rc.d <span class="re5">-f</span> script_name remove</div></div>
<p><a href="http://www.flickr.com/photos/appleboy/4310832866/" title="2010-01-28 11 52 06 (by appleboy46)"><img src="http://farm5.static.flickr.com/4048/4310832866_617a2c8e8d.jpg" title="2010-01-28 11 52 06 (by appleboy46)" alt="2010-01-28 11 52 06 (by appleboy46)" width="500" height="144" /></a><br />
可以看到在 runlevel 0126 是不啟動，345 是啟動 gdm 狀態，在 Ubuntu 9.10 底下，如果不想要開機就執行桌面程式，那就是必須要把 gdm 關閉，可以用下面兩種 command line 關閉</p>
<div class="codecolorer-container bash " style="overflow:auto;white-space:nowrap;width:580px"><div class="bash codecolorer" style="font-family:Monaco,Lucida Console,monospace"><span class="sy0">/</span>etc<span class="sy0">/</span>init.d<span class="sy0">/</span>gdm stop<br />
service gdm stop</div></div>
<p>但是這兩種方式只會在開機後手動執行，大家需要的是開機不會啟動，當然可以寫到 /etc/rc.local，因為在 rcX.d 底下會有 S99rc.local 執行，底下分享一下如何修改開機 runlevel，預設值是 2，但是之前都是另用 /etc//inittab 方式來修改，那其實現在這檔案消失了，您也可以自行新增喔，請先看 /etc/init/rc-sysinit.conf</p>
<div class="codecolorer-container bash " style="overflow:auto;white-space:nowrap;width:580px"><div class="bash codecolorer" style="font-family:Monaco,Lucida Console,monospace"><span class="co0"># Default runlevel, this may be overriden on the kernel command-line</span><br />
<span class="co0"># or by faking an old /etc/inittab entry</span><br />
<span class="kw2">env</span> <span class="re2">DEFAULT_RUNLEVEL</span>=<span class="nu0">2</span></div></div>
<p>在這裡就可以修改系統 runlevel，註解也有說明，可以新增 /etc/inittab 來讓系統讀取其內容</p>
<div class="codecolorer-container bash " style="overflow:auto;white-space:nowrap;width:580px"><div class="bash codecolorer" style="font-family:Monaco,Lucida Console,monospace"><span class="kw2">id</span>:<span class="nu0">2</span>:initdefault:</div></div>
<p>最後也是會讀取 /etc/inittab</p>
<div class="codecolorer-container bash " style="overflow:auto;white-space:nowrap;width:580px"><div class="bash codecolorer" style="font-family:Monaco,Lucida Console,monospace"><span class="co0"># Check for default runlevel in /etc/inittab</span><br />
<span class="kw1">if</span> <span class="br0">&#91;</span> <span class="re5">-r</span> <span class="sy0">/</span>etc<span class="sy0">/</span>inittab <span class="br0">&#93;</span><br />
<span class="kw1">then</span><br />
&nbsp; &nbsp; <span class="kw3">eval</span> <span class="st0">&quot;<span class="es4">$(sed -nre 's/^[^#][^:]*:([0-6sS])</span>:initdefault:.*/DEFAULT_RUNLEVEL=&quot;</span>\<span class="nu0">1</span><span class="st0">&quot;;/p' /etc/inittab || true)&quot;</span><br />
<span class="kw1">fi</span></div></div>
<p>所以最後還是會依照 /etc/inittab 寫入的資訊來判斷系統 runlevel，最後才會去執行 rcX.d 所有 script 檔案。不想執行桌面程式，會在網路上找到利用</p>
<div class="codecolorer-container bash " style="overflow:auto;white-space:nowrap;width:580px"><div class="bash codecolorer" style="font-family:Monaco,Lucida Console,monospace">update-rc.d gdm stop <span class="nu0">20</span> <span class="nu0">0</span> <span class="nu0">1</span> <span class="nu0">2</span> <span class="nu0">3</span> <span class="nu0">4</span> <span class="nu0">5</span> <span class="nu0">6</span> .</div></div>
<p>這樣正常來說不會去啟動 gdm 才對，可是實驗結果，還是會繼續啟動，後來找到 /etc/init/gdm.conf 底下這段程式碼：</p>
<div class="codecolorer-container bash " style="overflow:auto;white-space:nowrap;width:580px"><div class="bash codecolorer" style="font-family:Monaco,Lucida Console,monospace">start on <span class="br0">&#40;</span>filesystem<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; and started hal<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; and tty-device-added <span class="re2">KERNEL</span>=tty7<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; and <span class="br0">&#40;</span>graphics-device-added or stopped udevtrigger<span class="br0">&#41;</span><span class="br0">&#41;</span><br />
stop on runlevel <span class="br0">&#91;</span>016<span class="br0">&#93;</span></div></div>
<p>把 stop on runlevel [016] 改成 stop on runlevel [0123456] 這樣就可以了</p>
<p>參考網站：<br />
<a href="http://blog.yam.com/alvinkw/article/17213461">Choosing different run level in Ubuntu</a><br />
<a href="http://www.linux521.com/2009/system/200906/5073.html">upstart 和ubuntu启动过程原理介绍</a><br />
<a href="http://kileleu.pixnet.net/blog/post/24838245">[Linux]ubuntu下修改服務的執行等級</a><br />
<a href="http://ubuntuforums.org/showthread.php?t=1305659">[ubuntu] Need to disable gdm</a> </p>
<h3>Related View</h3><ul class="related_post"><li><a href="http://blog.wu-boy.com/2009/02/18/803/" title="[Debian] GNU/Linux 5.0 發布 zhcon 解決終端機亂碼 ">[Debian] GNU/Linux 5.0 發布 zhcon 解決終端機亂碼  (1)</a></li><li><a href="http://blog.wu-boy.com/2008/04/09/170/" title="[Ubuntu＆Fedora] 開機 網路卡 MAC 變動亂跳 [解決方法]">[Ubuntu＆Fedora] 開機 網路卡 MAC 變動亂跳 [解決方法] (2)</a></li><li><a href="http://blog.wu-boy.com/2009/11/15/1821/" title="[Linux] VirtuBox ssh 遠端控制，Windows 資料夾分享 [On Ubuntu]">[Linux] VirtuBox ssh 遠端控制，Windows 資料夾分享 [On Ubuntu] (0)</a></li><li><a href="http://blog.wu-boy.com/2008/06/16/279/" title="[教學]修復 Windows 的開機磁區各種方法">[教學]修復 Windows 的開機磁區各種方法 (0)</a></li><li><a href="http://blog.wu-boy.com/2006/11/26/44/" title="[Ubuntu] 安裝 StarDict 星際譯王 以及 字典檔">[Ubuntu] 安裝 StarDict 星際譯王 以及 字典檔 (0)</a></li><li><a href="http://blog.wu-boy.com/2006/11/18/36/" title="[Ubuntu] 安裝 java-tool for Flickr upload tool">[Ubuntu] 安裝 java-tool for Flickr upload tool (0)</a></li><li><a href="http://blog.wu-boy.com/2006/10/22/23/" title="[Ubuntu]  開機自動執行script">[Ubuntu]  開機自動執行script (0)</a></li><li><a href="http://blog.wu-boy.com/2006/10/21/22/" title="[Linux] Ubuntu 6.06 Proftpd + Mysql 安裝方式">[Linux] Ubuntu 6.06 Proftpd + Mysql 安裝方式 (0)</a></li><li><a href="http://blog.wu-boy.com/2006/09/22/17/" title="[FreeBSD] Proftpd + SSL 虛擬帳號設定安裝">[FreeBSD] Proftpd + SSL 虛擬帳號設定安裝 (0)</a></li><li><a href="http://blog.wu-boy.com/2010/03/11/2041/" title="[FreeBSD] DenyHosts 設定在 hosts.allow 注意事項">[FreeBSD] DenyHosts 設定在 hosts.allow 注意事項 (0)</a></li></ul>]]></content:encoded>
			<wfw:commentRss>http://blog.wu-boy.com/2010/01/28/1978/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>遲來的 jQuery 1.4 Released</title>
		<link>http://blog.wu-boy.com/2010/01/21/1965/</link>
		<comments>http://blog.wu-boy.com/2010/01/21/1965/#comments</comments>
		<pubDate>Thu, 21 Jan 2010 09:37:07 +0000</pubDate>
		<dc:creator>appleboy</dc:creator>
				<category><![CDATA[jQuery]]></category>

		<guid isPermaLink="false">http://blog.wu-boy.com/?p=1965</guid>
		<description><![CDATA[為了慶祝 jQuery 四週年慶，官方網站終於 Release 1.4 版本了，也大幅度修改了 jQuery API 網站，跟以往一樣，jQuery 提供兩種版本讓大家測試跟下載：jQuery Minified (23kb Gzipped)，這版本是利用 Google Closure Compiler 去壓縮，以往好像是用 YUI Compressor，另一版本就是沒經過壓縮：jQuery Regular (154kb)，當然 Google 也提供了 host 來讓 jQuery 有 cache 檔案作用，增加網站速度：
<span class="readmore"><a href="http://blog.wu-boy.com/2010/01/21/1965/" title="遲來的 jQuery 1.4 Released" target="_blank">...詳全文（共564字）</a></span>]]></description>
			<content:encoded><![CDATA[<p>為了慶祝 <a href="http://jquery14.com/day-01">jQuery</a> 四週年慶，官方網站終於 Release 1.4 版本了，也大幅度修改了<a href="http://api.jquery.com/"> jQuery API 網站</a>，跟以往一樣，jQuery 提供兩種版本讓大家測試跟下載：<a href="http://code.jquery.com/jquery-1.4.min.js">jQuery Minified</a> (23kb Gzipped)，這版本是利用 <a href="http://code.google.com/closure/compiler/">Google Closure Compiler</a> 去壓縮，以往好像是用 <a href="http://developer.yahoo.com/yui/compressor/">YUI Compressor</a>，另一版本就是沒經過壓縮：<a href="http://code.jquery.com/jquery-1.4.js">jQuery Regular</a> (154kb)，當然 Google 也提供了 host 來讓 jQuery 有 cache 檔案作用，增加網站速度：</p>
<p><a href="http://ajax.googleapis.com/ajax/libs/jquery/1.4/jquery.min.js">http://ajax.googleapis.com/ajax/libs/jquery/1.4/jquery.min.js</a></p>
<p>1.4 版本的出來，最主要就是效能的改善，以及整個 Code Base 翻修，可以參考 <a href="http://ejohn.org/blog/">John Resig</a> 寫的 <a href="http://ejohn.org/blog/function-call-profiling/">JavaScript Function Call Profiling</a>，看到底下的圖，就大致上知道 1.4 的效能改善<br />
<a href="http://www.flickr.com/photos/appleboy/4292816426/" title="4271690739_f0bced3a78 (by appleboy46)"><img src="http://farm3.static.flickr.com/2771/4292816426_9fb5cb331a_o.jpg" title="4271690739_f0bced3a78 (by appleboy46)" alt="4271690739_f0bced3a78 (by appleboy46)" width="500" height="375" /></a></p>
<p><a href="http://api.jquery.com/css/">.css()</a> and <a href="http://api.jquery.com/attr/">.attr()</a> 效能改善圖：<br />
<a href="http://www.flickr.com/photos/appleboy/4292818140/" title="4271691147_fd72853fa4 (by appleboy46)"><img src="http://farm5.static.flickr.com/4037/4292818140_753f22920f_o.jpg" title="4271691147_fd72853fa4 (by appleboy46)" alt="4271691147_fd72853fa4 (by appleboy46)" width="500" height="375" /></a></p>
<p>整篇都在說明 jQuery 效能的部份，真的是改善很多，<a href="http://mediatemple.net/">Media Temple</a> 主機商也贊助 jQuery 14天的徵文活動，大家可以上去看看有很多影片都是在介紹 jQuery，最後得獎的人可以獲得 13&#8243; MacBook Pro，真是太吸引人了。</p>
<p>最後可以參考 <a href="http://blog.darkthread.net/blogs/">黑暗執行緒</a>大大寫的：<a href="http://blog.darkthread.net/blogs/darkthreadtw/archive/2010/01/16/jquery-1-4.aspx">jQuery 1.4 小閱兵</a></p>
<h3>Related View</h3><ul class="related_post"><li><a href="http://blog.wu-boy.com/2009/10/21/1740/" title="[jQuery] ThickBox 3.1 無限期停止支援維護">[jQuery] ThickBox 3.1 無限期停止支援維護 (0)</a></li><li><a href="http://blog.wu-boy.com/2009/07/28/1441/" title="[網站] 好站連結 (四)">[網站] 好站連結 (四) (0)</a></li><li><a href="http://blog.wu-boy.com/2009/06/16/1454/" title="[jQuery] 驗證表單實作筆記 API/1.3/Selectors">[jQuery] 驗證表單實作筆記 API/1.3/Selectors (0)</a></li><li><a href="http://blog.wu-boy.com/2009/06/11/1386/" title="[網站] 好站連結 (三)">[網站] 好站連結 (三) (0)</a></li><li><a href="http://blog.wu-boy.com/2009/05/28/1307/" title="[網站] 好站連結 (二)">[網站] 好站連結 (二) (1)</a></li><li><a href="http://blog.wu-boy.com/2009/05/12/1334/" title="[jQuery] 日曆時間外掛 timepicker CSS/Offset 問題 | Plugins">[jQuery] 日曆時間外掛 timepicker CSS/Offset 問題 | Plugins (7)</a></li><li><a href="http://blog.wu-boy.com/2009/05/07/1312/" title="利用 IE7 CSS 2.0 tbody 解決 IE6 hover 問題">利用 IE7 CSS 2.0 tbody 解決 IE6 hover 問題 (2)</a></li><li><a href="http://blog.wu-boy.com/2009/04/22/1204/" title="[jQuery] Events/live Click">[jQuery] Events/live Click (2)</a></li><li><a href="http://blog.wu-boy.com/2009/04/03/1131/" title="[jQuery] 解決 IE6 不支援 :hover CSS">[jQuery] 解決 IE6 不支援 :hover CSS (2)</a></li><li><a href="http://blog.wu-boy.com/2009/03/20/1043/" title="[jQuery] 如何取得 select List index 和 value 值">[jQuery] 如何取得 select List index 和 value 值 (4)</a></li></ul>]]></content:encoded>
			<wfw:commentRss>http://blog.wu-boy.com/2010/01/21/1965/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>How to install Google Web Toolkit  with Eclipse</title>
		<link>http://blog.wu-boy.com/2010/01/17/1957/</link>
		<comments>http://blog.wu-boy.com/2010/01/17/1957/#comments</comments>
		<pubDate>Sun, 17 Jan 2010 11:27:12 +0000</pubDate>
		<dc:creator>appleboy</dc:creator>
				<category><![CDATA[Google]]></category>
		<category><![CDATA[blog]]></category>
		<category><![CDATA[www]]></category>
		<category><![CDATA[google]]></category>
		<category><![CDATA[Google Web Toolkit]]></category>

		<guid isPermaLink="false">http://blog.wu-boy.com/?p=1957</guid>
		<description><![CDATA[Google Web Toolkit (簡稱：GWT)是先以 Java 語言編寫 AJAX 應用程式網頁，然後在編譯成最佳化 Javascript，不但幫助了剛入門 Javascrit，然後又需要撰寫 AJAX 應用程式的工程師很大的幫助，不僅如此，Google App Engine 也提供了 Java 跟 Python 環境，整合了 GWT，讓您可以上傳到 GAE 的空間進行測試，GWT 目的是產生具有高效能性的 Web 應用程式，您不需要是 Javascript 專家也可以做到，GWT 用在 Google 相當多的服務，例如 Google Wave, 新版的 Google AdWords 可以參考這裡更多實際範例。它是開放姓原始碼(open source)，完全免費，您也可以參與 GWT 的開發。
<span class="readmore"><a href="http://blog.wu-boy.com/2010/01/17/1957/" title="How to install Google Web Toolkit  with Eclipse" target="_blank">...詳全文（共615字）</a></span>]]></description>
			<content:encoded><![CDATA[<p><a href="http://code.google.com/webtoolkit/">Google Web Toolkit</a> (簡稱：GWT)是先以 Java 語言編寫 AJAX 應用程式網頁，然後在編譯成最佳化 Javascript，不但幫助了剛入門 Javascrit，然後又需要撰寫 AJAX 應用程式的工程師很大的幫助，不僅如此，<a href="http://code.google.com/appengine/">Google App Engine</a> 也提供了 Java 跟 Python 環境，整合了 GWT，讓您可以上傳到 GAE 的空間進行測試，GWT 目的是產生具有高效能性的 Web 應用程式，您不需要是 Javascript 專家也可以做到，GWT 用在 Google 相當多的服務，例如 <a href="https://wave.google.com/">Google Wave</a>, 新版的 <a href="https://adwords.google.com/">Google AdWords</a> 可以參考<a href="http://code.google.com/webtoolkit/examples/#real-world-projects" target="_blank">這裡</a>更多實際範例。它是開放姓原始碼(open source)，完全免費，您也可以參與 GWT 的開發。</p>
<p><a href="http://code.google.com/intl/en/eclipse/index.html">Google Plugin for Eclipse</a> 支援 <a href="http://code.google.com/webtoolkit">Google Web Toolkit</a> 跟 <a href="http://code.google.com/appengine">Google App Engine</a> 開發，我們可以直接安裝此 Plugin 就可以開始上手 GWT，當製作完成之後，就可以上傳到 GAE，直接打開提供的網址就可以看到成果了。</p>
<p>首先安裝 <a href="http://code.google.com/intl/en/eclipse/index.html">Google Plugin for Eclipse</a>，先去下載 Eclipse 3.5 (Galileo) 最新版，打開 Eclipse</p>
<p>1. 選擇 Help -&gt; Install New Software<br />
<a title="Google Web Toolkit (by appleboy46)" href="http://www.flickr.com/photos/appleboy/4279125424/"><img title="Google Web Toolkit (by appleboy46)" src="http://farm5.static.flickr.com/4006/4279125424_e4a129185e.jpg" alt="Google Web Toolkit (by appleboy46)" width="500" height="281" /></a><br />
2. 在 Work With: 填入 http://dl.google.com/eclipse/plugin/3.5<br />
<a title="Google Web Toolkit (by appleboy46)" href="http://www.flickr.com/photos/appleboy/4278377917/"><img title="Google Web Toolkit (by appleboy46)" src="http://farm3.static.flickr.com/2683/4278377917_2d4dbd0a4c.jpg" alt="Google Web Toolkit (by appleboy46)" width="500" height="428" /></a><br />
3. 將 Plugin 跟 SDKS 全部選取，接下來按下一步就可以完成</p>
<h3>Related View</h3><ul class="related_post"><li><a href="http://blog.wu-boy.com/2010/02/03/1997/" title="Google Chrome 支援超過 40,000 Extensions! with Greasemonkey">Google Chrome 支援超過 40,000 Extensions! with Greasemonkey (1)</a></li><li><a href="http://blog.wu-boy.com/2010/01/29/1972/" title="Google Chrome 推出 4.0 穩定版 &#038; Mozilla 推出 FireFox 3.6">Google Chrome 推出 4.0 穩定版 &#038; Mozilla 推出 FireFox 3.6 (0)</a></li><li><a href="http://blog.wu-boy.com/2009/06/06/1421/" title="[Gmail] 最近發布的功能：進階搜尋，預覽收件夾，郵件內容語言轉換">[Gmail] 最近發布的功能：進階搜尋，預覽收件夾，郵件內容語言轉換 (0)</a></li><li><a href="http://blog.wu-boy.com/2009/04/05/1129/" title="New in Labs:Gmail search autocomplete 快速找尋使用者 email 跟附件檔案">New in Labs:Gmail search autocomplete 快速找尋使用者 email 跟附件檔案 (2)</a></li><li><a href="http://blog.wu-boy.com/2009/03/27/1081/" title="[PHP] Zend 使用 Google Calendar API &#8211; 瀏覽事件">[PHP] Zend 使用 Google Calendar API &#8211; 瀏覽事件 (3)</a></li><li><a href="http://blog.wu-boy.com/2009/03/26/1075/" title="[PHP] Zend 使用 Google Calendar API &#8211; 環境建立架設">[PHP] Zend 使用 Google Calendar API &#8211; 環境建立架設 (3)</a></li><li><a href="http://blog.wu-boy.com/2009/03/07/940/" title=" Google App Engine SDK：python 基本教學安裝"> Google App Engine SDK：python 基本教學安裝 (0)</a></li><li><a href="http://blog.wu-boy.com/2009/03/03/910/" title="[Wordpress] post 文章不能使用 javascript 語法 ">[Wordpress] post 文章不能使用 javascript 語法  (0)</a></li><li><a href="http://blog.wu-boy.com/2009/02/27/840/" title="[Google]Gmail 支援選擇多重檔案上傳跟進度狀況狀態 multi-select and progress bars">[Google]Gmail 支援選擇多重檔案上傳跟進度狀況狀態 multi-select and progress bars (2)</a></li><li><a href="http://blog.wu-boy.com/2009/02/21/819/" title="[google] Gmail Multiple Inboxes 支援多重資料夾">[google] Gmail Multiple Inboxes 支援多重資料夾 (0)</a></li></ul>]]></content:encoded>
			<wfw:commentRss>http://blog.wu-boy.com/2010/01/17/1957/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
	</channel>
</rss>
