<?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>Temporality &#187; Programming</title>
	<atom:link href="http://www.sylin.net/blog/category/programming/feed" rel="self" type="application/rss+xml" />
	<link>http://www.sylin.net/blog</link>
	<description>my causerie</description>
	<lastBuildDate>Sat, 26 Jun 2010 19:44:04 +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>Java 5.0 New Features</title>
		<link>http://www.sylin.net/blog/2009/11/22/167</link>
		<comments>http://www.sylin.net/blog/2009/11/22/167#comments</comments>
		<pubDate>Sun, 22 Nov 2009 07:22:08 +0000</pubDate>
		<dc:creator>sylin</dc:creator>
				<category><![CDATA[Programming]]></category>
		<category><![CDATA[android]]></category>
		<category><![CDATA[java]]></category>

		<guid isPermaLink="false">http://www.sylin.net/blog/?p=167</guid>
		<description><![CDATA[最近又開始寫 Java 了, 大概四年沒碰過 Java 了吧，而且其實以前也沒用很熟，好像只用到 Java 2 的功能，現在接觸 Android SDK，其實看到蠻多 Java5 才有的新功能。 官方宣佈: http://java.sun.com/j2se/1.5.0/docs/relnotes/features.html 中文摘要: http://mi.hosp.ncku.edu.tw/km/index.php/javatech/43-javaother/46-java-50- 最近有遇到的是 Enumerated for/in Annotation Static Import Generic 是沒用到, 不過倒是遇到使用舊語法導致的編譯器警告 Enumerated型別 　同C++中Enum。在Java 1.4以前都用public static final屬性代替Enum功能，這兩種方法各有優缺點。Enum重點如下︰ Enum是class Enum繼承了java.lang.Enum Enumerated型別不是integer Enum沒有public constructor Enum值為public static final Enum可用==及equals作比較 Enum實作了java.lang.Comparable Enum改寫過toString() Enum提供valueOf() Enum定義了final ordinal() Enum定義了values() 可是似乎不太好用，因為預設「Enumerated型別不是integer」，用起來沒辦法像 C/C++ 自由跟普通變數作轉換，也有人認為 Java5 的 Enum 設計成這樣是多此一舉，因為它骨子裡還是用 class 去作，而且 [...]]]></description>
			<content:encoded><![CDATA[<p>最近又開始寫 Java 了, 大概四年沒碰過 Java 了吧，而且其實以前也沒用很熟，好像只用到 Java 2 的功能，現在接觸 Android SDK，其實看到蠻多 Java5 才有的新功能。</p>
<p>官方宣佈: http://java.sun.com/j2se/1.5.0/docs/relnotes/features.html</p>
<p>中文摘要: http://mi.hosp.ncku.edu.tw/km/index.php/javatech/43-javaother/46-java-50-</p>
<p>最近有遇到的是</p>
<ul>
<li>Enumerated</li>
<li>for/in </li>
<li>Annotation</li>
<li>Static Import</li>
</ul>
<p>Generic 是沒用到, 不過倒是遇到使用舊語法導致的編譯器警告</p>
<p><span id="more-167"></span></p>
<h3>Enumerated型別</h3>
<p>　同C++中Enum。在Java 1.4以前都用public static final屬性代替Enum功能，這兩種方法各有優缺點。Enum重點如下︰ </p>
<ul>
<li>Enum是class </li>
<li>Enum繼承了java.lang.Enum </li>
<li>Enumerated型別不是integer </li>
<li>Enum沒有public constructor </li>
<li>Enum值為public static final </li>
<li>Enum可用==及equals作比較 </li>
<li>Enum實作了java.lang.Comparable </li>
<li>Enum改寫過toString() </li>
<li>Enum提供valueOf() </li>
<li>Enum定義了final ordinal() </li>
<li>Enum定義了values() </li>
</ul>
<p>可是似乎不太好用，因為預設「Enumerated型別不是integer」，用起來沒辦法像 C/C++ 自由跟普通變數作轉換，也有人認為 Java5 的 Enum 設計成這樣是多此一舉，因為它骨子裡還是用 class 去作，而且 Android SDK 似乎本身也沒用 Enum，不知道有什麼考量嗎?</p>
<p>以我遇到的狀況來說，原本的程式有定義一組參數，有幾種不同的選項，所以是定義一大堆 final variable, 例如:<br />
<code><br />
 private static final int XXX_OPTION_OO = 0;<br />
 private static final int XXX_OPTION_OX = 1;<br />
 private static final int XXX_OPTION_XO = 2;<br />
 private static final int XXX_OPTION_XX = 3;<br />
</code><br />
真正選到的參數會以 interger 的形式帶進來(可能是讀檔，或從config讀進來，未必是傳參數的方式)和以上幾個作比較，使得我要使用 Enum 時還要再自己寫一個轉換函式，網路上也很多人用 constructor 的方式加上一個 _id 來作轉換，不過這作法似乎蠻醜的，我還沒決定要這樣用。</p>
<h3>for/in</h3>
<p>原本的 iterator 可以改成 for( item : items ) 的方式</p>
<h3>Annotation</h3>
<ul>
<li>Override</li>
<li>Deprecated</li>
<li>SupressWarnings</li>
<li>Marker annotation </li>
<li>Single-Value annotation </li>
<li>Full annotation </li>
</ul>
<p>這個倒是不錯，一方面提供 document 的資訊，一方面也能避免使用繼承時打錯字造成的 bug 之類的問題。</p>
<h3>靜態匯入（Static Import）</h3>
<p>可以直接 import 其他 package 的變數或常數定義，其實可以配合前面提到的 Enum/常數時使用。</p>
<hr />
<p><small>© admin for <a href="http://www.sylin.net/blog">Temporality</a>, 2009. |
<a href="http://www.sylin.net/blog/2009/11/22/167">Permalink</a> |
<a href="http://www.sylin.net/blog/2009/11/22/167#comments">No comment</a> |
Add to
<a href="http://del.icio.us/post?url=http://www.sylin.net/blog/2009/11/22/167&title=Java 5.0 New Features">del.icio.us</a>
<br/>
Post tags: <a href="http://www.sylin.net/blog/tag/android" rel="tag">android</a>, <a href="http://www.sylin.net/blog/tag/java" rel="tag">java</a><br/>
</small></p>
<p><small>Feed enhanced by <a href='http://planetozh.com/blog/my-projects/wordpress-plugin-better-feed-rss/'>Better Feed</a> from  <a href='http://planetozh.com/blog/'>Ozh</a></small></p>
]]></content:encoded>
			<wfw:commentRss>http://www.sylin.net/blog/2009/11/22/167/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>JS PDF and Zend_Tag_Cloud</title>
		<link>http://www.sylin.net/blog/2009/05/10/159</link>
		<comments>http://www.sylin.net/blog/2009/05/10/159#comments</comments>
		<pubDate>Sun, 10 May 2009 08:56:41 +0000</pubDate>
		<dc:creator>sylin</dc:creator>
				<category><![CDATA[Programming]]></category>
		<category><![CDATA[Web Design]]></category>
		<category><![CDATA[jdpdf]]></category>
		<category><![CDATA[jquery]]></category>
		<category><![CDATA[zend framework]]></category>

		<guid isPermaLink="false">http://www.sylin.net/blog/?p=159</guid>
		<description><![CDATA[這篇打算一次介紹幾個在 Web Development 上蠻有用的功能 jspdf 一個用 java script 產生 PDF 的 Open Source Library，目前最新版是 20090504 ，支援的瀏覽器以Safari 為主，甚至是 iPhone 上的 Safari，不過也支援 Firefox 以及 Opera ，至於 IE 還在努力中。看 Demo 大概就知道怎麼用了。 稍微看了一下 library 原始檔，看來是 Open Specfication 的幫助，所以把檔案格式填一填就可以產生 PDF 了，所以能夠用 js 在 client 端產生文件，可能是個用得到的 library。 Zend_Tag_Cloud Screencast 之前介紹 Zend Framework 1.8 Release 時提到了 Zend_Tag_Cloud 這個 new feature，同時 Zend_Tag 的作者也提供了使用 [...]]]></description>
			<content:encoded><![CDATA[<p>這篇打算一次介紹幾個在 Web Development 上蠻有用的功能</p>
<h3><a href="http://code.google.com/p/jspdf/">jspdf</a></h3>
<p>一個用 java script 產生 PDF 的 Open Source Library，目前最新版是 20090504 ，支援的瀏覽器以Safari 為主，甚至是 iPhone 上的 Safari，不過也支援 Firefox 以及 Opera ，至於 IE 還在努力中。看 <a href="http://jspdf.googlecode.com/svn/trunk/examples/basic.htm">Demo</a> 大概就知道怎麼用了。<br />
<span id="more-159"></span><br />
稍微看了一下 library 原始檔，看來是 Open Specfication 的幫助，所以把檔案格式填一填就可以產生 PDF 了，所以能夠用 js 在 client 端產生文件，可能是個用得到的 library。</p>
<h3>Zend_Tag_Cloud Screencast</h3>
<p>之前介紹 Zend Framework 1.8 Release 時提到了 Zend_Tag_Cloud 這個 new feature，同時 Zend_Tag 的作者也提供了使用 <a href="http://www.dasprids.de/blog/2009/04/24/zend-tag-cloud-screencast">Zend_Tag_Cloud 的教學影片</a>來示範如何使用這項功能。<br />
嗯，看起來不是很難的功能，說穿了 Tag Cloud 也就是許多清單項目(用 li 或 span 達成) 配合 CSS 做不同大小及排列的變化。</p>
<h3><a href="http://code.google.com/p/sexy-combo/">sexy-combo</a></h3>
<p>這是另一個在 google code 上的 project，屬於 jQuery 的 plugin，可以把原本的 select box 變的比較好用，並結合 auto-complete 的功能，支援 IE6/IE7/Firefox/Opera<br />
還不錯，可是替代性沒那個高。</p>
<hr />
<p><small>© admin for <a href="http://www.sylin.net/blog">Temporality</a>, 2009. |
<a href="http://www.sylin.net/blog/2009/05/10/159">Permalink</a> |
<a href="http://www.sylin.net/blog/2009/05/10/159#comments">3 comments</a> |
Add to
<a href="http://del.icio.us/post?url=http://www.sylin.net/blog/2009/05/10/159&title=JS PDF and Zend_Tag_Cloud">del.icio.us</a>
<br/>
Post tags: <a href="http://www.sylin.net/blog/tag/jdpdf" rel="tag">jdpdf</a>, <a href="http://www.sylin.net/blog/tag/jquery" rel="tag">jquery</a>, <a href="http://www.sylin.net/blog/tag/zend-framework" rel="tag">zend framework</a><br/>
</small></p>
<p><small>Feed enhanced by <a href='http://planetozh.com/blog/my-projects/wordpress-plugin-better-feed-rss/'>Better Feed</a> from  <a href='http://planetozh.com/blog/'>Ozh</a></small></p>
]]></content:encoded>
			<wfw:commentRss>http://www.sylin.net/blog/2009/05/10/159/feed</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Autoload in ZF 1.8</title>
		<link>http://www.sylin.net/blog/2009/05/03/158</link>
		<comments>http://www.sylin.net/blog/2009/05/03/158#comments</comments>
		<pubDate>Sun, 03 May 2009 06:01:21 +0000</pubDate>
		<dc:creator>sylin</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[computer]]></category>
		<category><![CDATA[web]]></category>
		<category><![CDATA[zend framework]]></category>

		<guid isPermaLink="false">http://www.sylin.net/blog/?p=158</guid>
		<description><![CDATA[最近 Zend Framework 推出了 1.8 Release, 除了許多新功能以外，原有的功能也做了一些改變。對原有的project來說，如果沒用到新功能的部份，那放著不管是沒關係的，可是舊功能的改變卻可能影響到原本程式的行為，所以反而要更注意。 Zend_Loader_Autoloader 的功用(目的) 提供真正的namespace autoloader (之前是不區分namespace的) 提供註冊任意個數的callback 函式作為 autoload function, 其中是以 stack 的方式運作。這是為了克服 PHP 5標準的 spl_autoload 只允許一個 callback function 的問題。 允許最佳化的 namespace 比對方式，提高解析類別的速度。 原本的 autoload 是這樣用的 (最簡單的情況) require_once&#40;'Zend/Loader.php'&#41;; Zend_Loader::registerAutoload&#40;&#41;; 在 ZF 1.8 要改成 require_once&#40;'Zend/Loader/Autoloader.php'&#41;; $autoloader = Zend_Loader_Autoloader::getInstance&#40;&#41;; $autoloader-&#62;setFallbackAutoloader&#40;true&#41;; 這適用於函式庫中沒有自己加的 namepsace，所以會使用預設的 Zend_ 跟 ZendX_，這也是 Zend Framework 中 class 所使用的 prefix [...]]]></description>
			<content:encoded><![CDATA[<p>最近 Zend Framework 推出了 <a href="http://www.sylin.net/blog/2009/05/03/157">1.8 Release</a>, 除了許多新功能以外，原有的功能也做了一些改變。對原有的project來說，如果沒用到新功能的部份，那放著不管是沒關係的，可是舊功能的改變卻可能影響到原本程式的行為，所以反而要更注意。</p>
<p>Zend_Loader_Autoloader 的功用(目的)</p>
<ul>
<li>提供真正的namespace autoloader (之前是不區分namespace的)</li>
<li>提供註冊任意個數的callback 函式作為 autoload function, 其中是以 stack 的方式運作。這是為了克服 PHP 5標準的 spl_autoload 只允許一個 callback function 的問題。</li>
<li>允許最佳化的 namespace 比對方式，提高解析類別的速度。</li>
</ul>
<p><span id="more-158"></span><br />
原本的 autoload 是這樣用的 (最簡單的情況)</p>
<p><!--DEVFMTCODE--><pre class="devcodeblock" title="PHP"><div class="devcodeoverflow"><span style="color: #b1b100;">require_once</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'Zend/Loader.php'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
Zend_Loader<span style="color: #339933;">::</span><span style="color: #004000;">registerAutoload</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></div></pre><!--END_DEVFMTCODE--></p>
<p>在 ZF 1.8 要改成</p>
<p><!--DEVFMTCODE--><pre class="devcodeblock" title="PHP"><div class="devcodeoverflow"><span style="color: #b1b100;">require_once</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'Zend/Loader/Autoloader.php'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #000088;">$autoloader</span> <span style="color: #339933;">=</span> Zend_Loader_Autoloader<span style="color: #339933;">::</span><span style="color: #004000;">getInstance</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #000088;">$autoloader</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">setFallbackAutoloader</span><span style="color: #009900;">&#40;</span><span style="color: #009900; font-weight: bold;">true</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></div></pre><!--END_DEVFMTCODE--></p>
<p>這適用於函式庫中沒有自己加的 namepsace，所以會使用預設的 Zend_ 跟 ZendX_，這也是 Zend Framework 中 class 所使用的 prefix ，這首先讓 Zend Framework 內的 class 能夠自動被載入。而 setFallbackAutoloader(true) 則是讓寫在 include_path 中，又沒有的 namespace 的 class 能被載入，這通常會是在 models/ 之中的檔案。</p>
<p>不過這邊有一點相當奇怪，假設我沒有 model，不需要 setFallbackAutoloader(true)，那麼就應該不需要執行 getInstance()而一樣可以使用 Zend_ 跟 ZendX_ 的類別，但實際上如果我只有 require_once(&#8216;Zend/Loader/Autoloader.php&#8217;) 的話，我之後還是不能使用 Zend_* 的類別，這部份還不清楚是 Zend_Loader_Autoloader 的 bug 還是 spl_autoload 的問題。</p>
<p>新版的改進其實還有 Zend_Tool 跟 Zend_Application 可以用，這部份之後再來研究，先把 Autoload 這部份 Apply 到現有的程式上。</p>
<p>參考資料</p>
<ul>
<li><a href="http://akrabat.com/2009/04/30/zend_loaders-autoloader_deprecated-in-zend-framework-18/">Zend_Loader&#8217;s autoloader deprecated in Zend Framework 1.8</a></li>
<li><a href="http://framework.zend.com/manual/en/zend.loader.autoloader.html">ZF Manual &#8211; Zend Loader Autoloader</a></li>
</ul>
<hr />
<p><small>© admin for <a href="http://www.sylin.net/blog">Temporality</a>, 2009. |
<a href="http://www.sylin.net/blog/2009/05/03/158">Permalink</a> |
<a href="http://www.sylin.net/blog/2009/05/03/158#comments">2 comments</a> |
Add to
<a href="http://del.icio.us/post?url=http://www.sylin.net/blog/2009/05/03/158&title=Autoload in ZF 1.8">del.icio.us</a>
<br/>
Post tags: <a href="http://www.sylin.net/blog/tag/zend-framework" rel="tag">zend framework</a><br/>
</small></p>
<p><small>Feed enhanced by <a href='http://planetozh.com/blog/my-projects/wordpress-plugin-better-feed-rss/'>Better Feed</a> from  <a href='http://planetozh.com/blog/'>Ozh</a></small></p>
]]></content:encoded>
			<wfw:commentRss>http://www.sylin.net/blog/2009/05/03/158/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Zend Framework 1.8 Released</title>
		<link>http://www.sylin.net/blog/2009/05/03/157</link>
		<comments>http://www.sylin.net/blog/2009/05/03/157#comments</comments>
		<pubDate>Sun, 03 May 2009 05:56:53 +0000</pubDate>
		<dc:creator>sylin</dc:creator>
				<category><![CDATA[Programming]]></category>
		<category><![CDATA[web]]></category>
		<category><![CDATA[zend framework]]></category>

		<guid isPermaLink="false">http://www.sylin.net/blog/?p=157</guid>
		<description><![CDATA[Zend Framework 在 4/30 已經推出最新的 1.8 Release 了，這次也提供了許多有用的更新，在開發上也變得更方便了，不過我怎麼覺得有種邪惡的感覺&#8230;. Zend_Tool: 包含 Zend_Tool_Framework 跟 Zend_Tool_Project。 Zend_Tool_Framework 是 ZF 之中用來發展工具的小型 framework，透過這小型的framework 可以設計一些開發所需的小功能，例如用來建立 project 的 scaffolds (鷹架、骨架)、藉由樣板產生一些基本常用的程式碼、建立搜尋的索引資料等。 Tool_Project 則是藉由 Tool_Framework 發展出來，專門用來建立 Web MVC Project，常用的功能包括建立project、目錄結構、增加controller/action以及view 等等，都是由 Zend_Tool_Project所提供。 Zend_Tool 的功能可以說是 ZF 要發展類似 RoR/rake, CakePHP/bake 等工具的基礎，也就是所謂的 meta-programming，用程式來寫(產生)程式。 Zend_Application: 這提供了開發 Web App 所需的 Bootstrap 功能，原本開發者需要自訂 bootstrap 的流程，用來設定環境變數、組態設定等等，現在可以使用 Zend_Application 來完成。 Zend_Loader_Autoloader: 取代原有的Zend_Loader::registerAutoload() Zend_Navigation: 網頁的 [...]]]></description>
			<content:encoded><![CDATA[<p>Zend Framework 在 4/30 已經推出最新的 1.8 Release 了，這次也提供了許多有用的更新，在開發上也變得更方便了，不過我怎麼覺得有種邪惡的感覺&#8230;.</p>
<p><span id="more-157"></span></p>
<ul style="font-size:1.1em;">
<li>Zend_Tool: 包含 Zend_Tool_Framework 跟 Zend_Tool_Project。
<ol>
<li>Zend_Tool_Framework 是 ZF 之中用來發展工具的小型 framework，透過這小型的framework 可以設計一些開發所需的小功能，例如用來建立 project 的 scaffolds (鷹架、骨架)、藉由樣板產生一些基本常用的程式碼、建立搜尋的索引資料等。</li>
<li>Tool_Project 則是藉由 Tool_Framework 發展出來，專門用來建立 Web MVC Project，常用的功能包括建立project、目錄結構、增加controller/action以及view 等等，都是由 Zend_Tool_Project所提供。</li>
</ol>
<p>Zend_Tool 的功能可以說是 ZF 要發展類似 RoR/rake, CakePHP/bake 等工具的基礎，也就是所謂的 meta-programming，用程式來寫(產生)程式。</li>
<li>Zend_Application: 這提供了開發 Web App 所需的 Bootstrap 功能，原本開發者需要自訂 bootstrap 的流程，用來設定環境變數、組態設定等等，現在可以使用 Zend_Application 來完成。</li>
<li><a href="http://framework.zend.com/manual/en/zend.loader.autoloader.html">Zend_Loader_Autoloader</a>: 取代原有的Zend_Loader::registerAutoload()</li>
<li><a href="http://framework.zend.com/manual/en/zend.navigation.html">Zend_Navigation</a>: 網頁的 navigation menu</li>
<li>Zend_CodeGenerator</li>
<li>Zend_Reflection</li>
<li>Zend Server backend for Zend_Cache</li>
<li>Zend_Service_Amazon_Ec2/Zend_Service_Amazon_S3: For Cloud Computing </li>
<li>Dojo 1.3 整合</li>
<li>Zend_Filter_Encrypt/Zend_Filter_Decrypt, 可以把資料藉由 Filter 的方式做加解密。</li>
<li>Zend_Filter_LocalizedToNormalized/_NormalizedToLocalized: 對資料形式做正規化處理，可以處理數字以及日期時間的格式轉換</li>
<li>Zend_File_Transfer:支援上傳進度，可以使用Zend_File_Transfer_Adapter_Http::getProgress() 配合 Zend_ProgressBar</li>
<li>Translation-aware routes</li>
<li>Route chaining capabilities</li>
<li>Zend_Json:在 <a href="http://framework.zend.com/manual/en/zend.json.advanced.html">Zend_Json_Expr</a>支援 expression ，之前好像只支援資料型態(number/string/array/object)</li>
<li>Zend_Http_Client_Adapter_Curl</li>
<li>SOAP input and output header support</li>
<li>Support for keyword field search using query strings</li>
<li>Support for searching across multiple indexes in Zend_Search_Lucene </li>
<li>Significant improvements for Zend_Search_Lucene search result match highlighting capabilities</li>
<li>Zend_Pdf: 支援頁面的縮放、位移、旋轉等<a href="http://framework.zend.com/manual/en/zend.pdf.drawing.html#zend.pdf.drawing.linear-transformations">線性轉換</a>。</li>
<li><a href="http://framework.zend.com/manual/en/zend.tag.cloud.html">Zend_Tag_Cloud</a>, 內建支援 Tag Cloud</li>
<li>Locale support in Zend_Validate_Int and Zend_Validate_Float</li>
<li>Phonecode support in Zend_Locale</li>
<li>Zend_Validate_Db_RecordExists and _RecordNotExists</li>
<li>Zend_Validate_Iban, 支援 IBAN (International Bank Account Number)驗證，我不清楚不是美國人用不用得到 XD</li>
<li>Zend_Validate_File_WordCount</li>
</ul>
<h3>相關連結</h3>
<ul>
<li><a href="http://devzone.zend.com/article/4524-Zend-Framework-1.8.0-Released">Zend Framework 1.8 Released</a></li>
<li><a href="http://twpug.net/modules/news/article.php?storyid=244">中文介紹(1.8 Preview)</a></li>
<li><a href="http://akrabat.com/2009/05/01/zend-framework-tutorial-for-zf-18/">Zend Framework (in 1.8) Tutorial </a></li>
<li><a href="http://www.jaceju.net/blog/?p=536">[PHP-ZF] Zend Framework 1.8 初探</a></li>
</ul>
<hr />
<p><small>© admin for <a href="http://www.sylin.net/blog">Temporality</a>, 2009. |
<a href="http://www.sylin.net/blog/2009/05/03/157">Permalink</a> |
<a href="http://www.sylin.net/blog/2009/05/03/157#comments">No comment</a> |
Add to
<a href="http://del.icio.us/post?url=http://www.sylin.net/blog/2009/05/03/157&title=Zend Framework 1.8 Released">del.icio.us</a>
<br/>
Post tags: <a href="http://www.sylin.net/blog/tag/zend-framework" rel="tag">zend framework</a><br/>
</small></p>
<p><small>Feed enhanced by <a href='http://planetozh.com/blog/my-projects/wordpress-plugin-better-feed-rss/'>Better Feed</a> from  <a href='http://planetozh.com/blog/'>Ozh</a></small></p>
]]></content:encoded>
			<wfw:commentRss>http://www.sylin.net/blog/2009/05/03/157/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>SCM大車拼</title>
		<link>http://www.sylin.net/blog/2009/03/01/153</link>
		<comments>http://www.sylin.net/blog/2009/03/01/153#comments</comments>
		<pubDate>Sun, 01 Mar 2009 07:45:19 +0000</pubDate>
		<dc:creator>sylin</dc:creator>
				<category><![CDATA[Software]]></category>
		<category><![CDATA[clear case]]></category>
		<category><![CDATA[cvs]]></category>
		<category><![CDATA[git]]></category>
		<category><![CDATA[svn]]></category>
		<category><![CDATA[version control]]></category>
		<category><![CDATA[vss]]></category>

		<guid isPermaLink="false">http://www.sylin.net/blog/?p=153</guid>
		<description><![CDATA[去年初的時候也寫過一篇 CMS 大車拼，今年換寫 SCM。 最近在看 git 的資料時，順便查了一下和其他 Version Control System 的比較，主要是因為要查 MS 提供的 Visual Source Safe，雖然沒必要我是不會去用它的，不過瞭解一下它和 Subversion 及 git 的差異倒沒問題。 找到在 Version control systems comparison 提供了常見 SCM 工具的功能比較表。這裡比較了我知道認識的人有再用的幾套，包括 ClearCase, CVS, Git, Subversion, Visual Source Safe。 Atomic Commit 指的是帶入 transcation 的觀念，一次的提交(commit)的內容可能會包含多個檔案的修改，這會被視為一個整體的操作，避免在 commit 的過程中發生錯誤，導致版本內容不一致。以 CVS 為例，假如我加了一個功能，需要修改10的檔案，就會一次 commit 10個檔案，如果在中途發生錯誤，會導致有些檔案是新版的，有些是舊版，有 Atomic Commit 可以避免這個問題。 Intelligent Merging after Moves or Renames [...]]]></description>
			<content:encoded><![CDATA[<p>去年初的時候也寫過一篇 <a href="http://www.sylin.net/blog/2008/01/22/63">CMS 大車拼</a>，今年換寫 SCM。</p>
<p>最近在看 git 的資料時，順便查了一下和其他 Version Control System 的比較，主要是因為要查 MS 提供的 Visual Source Safe，雖然沒必要我是不會去用它的，不過瞭解一下它和 Subversion 及 git 的差異倒沒問題。</p>
<p>找到在 <a href="http://versioncontrolblog.com/comparison/">Version control systems comparison</a> 提供了常見 SCM 工具的功能比較表。<a href="http://versioncontrolblog.com/comparison/ClearCase/CVS/Git/Subversion/Visual%20SourceSafe/index.html">這裡</a>比較了我知道認識的人有再用的幾套，包括 <a href="http://www-01.ibm.com/software/awdtools/clearcase/">ClearCase</a>, <a href="http://ximbiot.com/cvs/cvshome/">CVS</a>, <a href="http://git-scm.com/">Git</a>, <a href="http://subversion.tigris.org/">Subversion</a>, Visual Source Safe。</p>
<p><span id="more-153"></span></p>
<h4>Atomic Commit</h4>
<p>指的是帶入 transcation 的觀念，一次的提交(commit)的內容可能會包含多個檔案的修改，這會被視為一個整體的操作，避免在 commit 的過程中發生錯誤，導致版本內容不一致。以 CVS 為例，假如我加了一個功能，需要修改10的檔案，就會一次 commit 10個檔案，如果在中途發生錯誤，會導致有些檔案是新版的，有些是舊版，有 Atomic Commit 可以避免這個問題。</p>
<h4>Intelligent Merging after Moves or Renames</h4>
<p>以 Subversion 為例，它的 rename 等於是把原檔案刪除，再加入一個新的檔案(內容不變)，系統本身不維護更名這動作的資訊，所以要作 merge 到一個已被更名的檔案就會有麻煩，基本上這還是要透過人工的方式處理，而其他幾套也都不支援這樣的動作。</p>
<h4>File and Directories Copies</h4>
<p> Subversion有，可是 Git 沒有..再研究看看會有什麼影響..</p>
<h4>其他的部份</h4>
<p>在幾個比較項目上，Subversion 還需要透過其他 plug-in 或程式來達成，而 VSS 本身只支援 Windows 平台</p>
<p>比較的項目太多了，暫時先不一一註記，不過如果要打槍 VSS 的話，在 Wikipedia 上反而有個不錯的理由：<br />
<a href="http://zh.wikipedia.org/w/index.php?title=Visual_SourceSafe&#038;variant=zh-tw">Visual SourceSafe</a></p>
<blockquote><p>VSS雖然是微軟公司的產品，但微軟內部卻很少使用它。微軟內部使用一個名為SLM的版本控制系統，直至1999年。之後，微軟內部改以使用修改自Perforce的SourceDepot。</p></blockquote>
<p>連自己都不用的產品，應該也沒什麼前途&#8230;&#8230;</p>
<h3>其他教學文件</h3>
<ul>
<li><a href="http://www.csie.nctu.edu.tw/~tsaiwn/course/introcs/history/linux/linux.tnc.edu.tw/techdoc/cvs/book1.html">CVS入門</a></li>
<li><a href="http://www.bitsun.com/documents/gittutorcn.htm">Git 中文教程</a> (簡體)</li>
<li><a href="http://twpug.net/docs/Subversion/">SVN Book 中文版</a></li>
<li>VSS <a href="http://sun.cis.scu.edu.tw/~nms9115/articles/softeng/scm/vss/vss_primer.htm">中文入門教學</a></li>
</ul>
<hr />
<p><small>© admin for <a href="http://www.sylin.net/blog">Temporality</a>, 2009. |
<a href="http://www.sylin.net/blog/2009/03/01/153">Permalink</a> |
<a href="http://www.sylin.net/blog/2009/03/01/153#comments">No comment</a> |
Add to
<a href="http://del.icio.us/post?url=http://www.sylin.net/blog/2009/03/01/153&title=SCM大車拼">del.icio.us</a>
<br/>
Post tags: <a href="http://www.sylin.net/blog/tag/clear-case" rel="tag">clear case</a>, <a href="http://www.sylin.net/blog/tag/cvs" rel="tag">cvs</a>, <a href="http://www.sylin.net/blog/tag/git" rel="tag">git</a>, <a href="http://www.sylin.net/blog/tag/software" rel="tag">Software</a>, <a href="http://www.sylin.net/blog/tag/svn" rel="tag">svn</a>, <a href="http://www.sylin.net/blog/tag/version-control" rel="tag">version control</a>, <a href="http://www.sylin.net/blog/tag/vss" rel="tag">vss</a><br/>
</small></p>
<p><small>Feed enhanced by <a href='http://planetozh.com/blog/my-projects/wordpress-plugin-better-feed-rss/'>Better Feed</a> from  <a href='http://planetozh.com/blog/'>Ozh</a></small></p>
]]></content:encoded>
			<wfw:commentRss>http://www.sylin.net/blog/2009/03/01/153/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Git 入門筆記</title>
		<link>http://www.sylin.net/blog/2009/02/22/151</link>
		<comments>http://www.sylin.net/blog/2009/02/22/151#comments</comments>
		<pubDate>Sun, 22 Feb 2009 10:54:26 +0000</pubDate>
		<dc:creator>sylin</dc:creator>
				<category><![CDATA[Programming]]></category>
		<category><![CDATA[computer]]></category>
		<category><![CDATA[git]]></category>
		<category><![CDATA[linus]]></category>
		<category><![CDATA[SCM]]></category>
		<category><![CDATA[subversion]]></category>
		<category><![CDATA[svn]]></category>

		<guid isPermaLink="false">http://www.sylin.net/blog/?p=151</guid>
		<description><![CDATA[前言 這兩天花了蠻多時間在 Survey Git 這套先進的 SCM。在新的工作上，我打算從 Subversion 轉換到 Git 來做專案、程式的版本控制。 之前在學習 Subversion 時，是根據 SVN Book 中文版開始入門，從而瞭解 CVS 和 Subversion 設計及使用的觀念，讓我知道，使用 CVS 或 Subversion 的差異，以及該如何使用 SVN 融入我的開發流程，以文件來說， SVN Book 是寫的相當清楚易懂的。不過 Git 在這個部份，我卻沒有找到相似的介紹文件，尤其是它著名的 Distributed 特性，讓我不太了解如何套用，以及使用這樣 Distributed 的特性，會對原本工作的流程產生什麼樣的影響和變化。這些都是在 Survey 的過程中需要先被確認的。 疑問 &#8211; 如何規劃 Repository? 首先，我的第一個問題就是「我該如何規劃 Repository?」在 CVS/Subversion 中，我們可以使用一個 Repository 來放許多個不同的 Project，並以目錄來區分，如同工作複本這段所敘述的。更複雜一點的，可以使用檔案庫配置這段所建議兩種架構中選擇一種。 而在工作目錄的部份，可以直接依據情況，只 checkout 需要的子目錄部份即可，而因為 Subversion 會在 Working Directory [...]]]></description>
			<content:encoded><![CDATA[<h3>前言</h3>
<p>這兩天花了蠻多時間在 Survey <a href="http://git-scm.com/">Git</a> 這套先進的 SCM。在新的工作上，我打算從 <a href="http://subversion.tigris.org/">Subversion</a> 轉換到 Git 來做專案、程式的版本控制。</p>
<p>之前在學習 Subversion 時，是根據 <a href="http://twpug.net/docs/Subversion/">SVN Book 中文版</a>開始入門，從而瞭解 CVS 和 Subversion 設計及使用的觀念，讓我知道，使用 CVS 或 Subversion 的差異，以及該如何使用 SVN 融入我的開發流程，以文件來說， SVN Book 是寫的相當清楚易懂的。不過 Git 在這個部份，我卻沒有找到相似的介紹文件，尤其是它著名的 Distributed 特性，讓我不太了解如何套用，以及使用這樣 Distributed 的特性，會對原本工作的流程產生什麼樣的影響和變化。這些都是在 Survey 的過程中需要先被確認的。<br />
<span id="more-151"></span></p>
<h3>疑問 &#8211; 如何規劃 Repository?</h3>
<p>首先，我的第一個問題就是「我該如何規劃 Repository?」在 CVS/Subversion 中，我們可以使用一個 Repository 來放許多個不同的 Project，並以目錄來區分，如同<a href="http://twpug.net/docs/Subversion/#svn-ch-2-sect-3.1">工作複本</a>這段所敘述的。更複雜一點的，可以使用<a href="http://twpug.net/docs/Subversion/#svn-ch-5-sect-6.1">檔案庫配置</a>這段所建議兩種架構中選擇一種。<br />
<img alt="" src="http://twpug.net/docs/Subversion/ch05dia1.png" class="alignnone" width="341" height="187" /><br />
<img alt="" src="http://twpug.net/docs/Subversion/ch05dia2.png" class="alignnone" width="424" height="202" /><br />
而在工作目錄的部份，可以直接依據情況，只 checkout 需要的子目錄部份即可，而因為 Subversion 會在 Working Directory 的每個子目錄下，都建立一個 .svn/ ，所以它仍可以正確對應目錄資訊，不過 Git 由於只在 Working Directory 的最頂層放一個 .git/ 來處理，使得我蠻懷疑要怎麼處理這樣的狀況？</p>
<p>從這樣的一個基本的疑問，我開始查資料去瞭解 Git ~</p>
<h3>參考文件</h3>
<p>一開始我先看 Linus 之前在 Google 演講 Git 的錄影 &#8211; <a href="http://www.youtube.com/watch?v=4XpnKHJAok8">Linus Torvalds on git</a> (相關介紹可參考 <a href="http://people.debian.org.tw/~chihchun/2008/12/19/linus-torvalds-on-git/">Rex&#8217;s 的介紹</a>)，不過聽了半天，發現我只能斷斷續續的聽懂幾句話，而且錄影是以 Linus 的講演為主，對我來說學習的效果不佳，只好另外找其他資料。<br />
於是找到了另一篇簡報的錄影 &#8211; <a href="http://excess.org/article/2008/07/ogre-git-tutorial/">OGRE Git Tutorial</a>，這篇介紹了 Git 的內部設計(實做)概念，以及幾個主要的 Work Flow 跟常用指令，這一篇就蠻有幫助的。<br />
以下是一些相關的筆記：</p>
<ul>
<li>不需要 trunk 或 branch 這樣的目錄結構，在 .git 裡面會處理這訊息 *</li>
<li>
<p>git show = svn status (and svn diff)<br />
	git show &#8211;stat 單純顯示 status, 也就是 Working 和 HEAD 的差異<br />
	git show &#8211;name-status 如同 svn st 的顯示方式</p>
</li>
<li>branch 分成3種: local branch (綠色方塊)、tag (藍紫色方塊)、remote branch(橘色方塊)</li>
<li>使用 git checkout -b 做切換分支的動作 *</li>
<li>HEAD 代表目前 Work Directory 所使用的 branch (的最新版本)</li>
<li>merge 指令</li>
<li>rebase 指令, 可以將 (local) branch 整合到 (local) trunk 上，但和 merge 有點不同，感覺有點類似 merge 以後將分支砍掉的感覺 *</li>
</ul>
<p>其中有標 * 的表示和 Subversion (包括觀念或用法)比較不同的地方。<br />
不過在最後面有關 push 跟 poll 的部份，我還沒有看懂是怎麼分辨其他人能不能 push patch 到 original 去的，不過這不是大問題，用了以後就會知道了。</p>
<h3>結論</h3>
<p>基本上看完這些以後，目前是傾向把一個 git 來管理一個 project 吧，否則一個 branch 或 tag 在 git 是代表整個 repository 的版本，但對對多個 project 來說，這樣的 branch 或 release tag 並沒有意義。</p>
<hr />
<p><small>© admin for <a href="http://www.sylin.net/blog">Temporality</a>, 2009. |
<a href="http://www.sylin.net/blog/2009/02/22/151">Permalink</a> |
<a href="http://www.sylin.net/blog/2009/02/22/151#comments">One comment</a> |
Add to
<a href="http://del.icio.us/post?url=http://www.sylin.net/blog/2009/02/22/151&title=Git 入門筆記">del.icio.us</a>
<br/>
Post tags: <a href="http://www.sylin.net/blog/tag/git" rel="tag">git</a>, <a href="http://www.sylin.net/blog/tag/linus" rel="tag">linus</a>, <a href="http://www.sylin.net/blog/tag/scm" rel="tag">SCM</a>, <a href="http://www.sylin.net/blog/tag/subversion" rel="tag">subversion</a>, <a href="http://www.sylin.net/blog/tag/svn" rel="tag">svn</a><br/>
</small></p>
<p><small>Feed enhanced by <a href='http://planetozh.com/blog/my-projects/wordpress-plugin-better-feed-rss/'>Better Feed</a> from  <a href='http://planetozh.com/blog/'>Ozh</a></small></p>
]]></content:encoded>
			<wfw:commentRss>http://www.sylin.net/blog/2009/02/22/151/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>OSI Model</title>
		<link>http://www.sylin.net/blog/2009/01/14/144</link>
		<comments>http://www.sylin.net/blog/2009/01/14/144#comments</comments>
		<pubDate>Tue, 13 Jan 2009 18:47:37 +0000</pubDate>
		<dc:creator>sylin</dc:creator>
				<category><![CDATA[Programming]]></category>
		<category><![CDATA[computer]]></category>
		<category><![CDATA[computer network]]></category>
		<category><![CDATA[OSI]]></category>
		<category><![CDATA[tcp]]></category>
		<category><![CDATA[thread]]></category>
		<category><![CDATA[udp]]></category>

		<guid isPermaLink="false">http://www.sylin.net/blog/?p=144</guid>
		<description><![CDATA[再來新增幾個問題&#8230; 也是太久沒唸忘記的 ~_~ OSI Model 有那七層 TCP/IP 的五層是那五層 TCP 和 UDP 的差別 Process 和 Thread 的差別 OSI Model 有那七層 Physical Layer Data Link Layer Network Layer Transport Layer Session Layer Presentation Layer Application Layer 若以 TCP/IP 的架構來分的話，則是 Physical Layer Data Link Layer &#8211; MAC Layer 連線服務 &#8211; IP 傳輸服務 &#8211; TCP/UDP 連線服務 &#8211; HTTP/TELNET/&#8230; 參考資料 [...]]]></description>
			<content:encoded><![CDATA[<p>再來新增幾個問題&#8230; 也是太久沒唸忘記的 ~_~</p>
<ul>
<li>OSI Model 有那七層
<ul>
<li>TCP/IP 的五層是那五層</li>
</ul>
</li>
<li>TCP 和 UDP 的差別</li>
<li>Process 和 Thread 的差別</li>
</ul>
<p><span id="more-144"></span></p>
<h3>OSI Model 有那七層</h3>
<ol>
<li>Physical Layer</li>
<li>Data Link Layer</li>
<li>Network Layer</li>
<li>Transport Layer</li>
<li>Session Layer</li>
<li>Presentation Layer</li>
<li>Application Layer</li>
</ol>
<p>若以 TCP/IP 的架構來分的話，則是</p>
<ol>
<li>Physical Layer</li>
<li>Data Link Layer  &#8211;  MAC Layer</li>
<li>連線服務 &#8211; IP</li>
<li>傳輸服務 &#8211; TCP/UDP</li>
<li>連線服務 &#8211; HTTP/TELNET/&#8230;</li>
</ol>
<h4>參考資料</h4>
<ul>
<li><a href="http://www.ithome.com.tw/itadm/article.php?c=47085">iThome &#8211; 什麼是OSI的7層架構？</a></li>
<li><a href="http://lips.lis.ntu.edu.tw/YTCHIANG/STUDY/others/tcpiposi.htm">TCP/IP與OSI之比較研究</a></li>
</ul>
<h3>UDP 和 TCP 的差別</h3>
<p>TCP 提供 Connection Oriented 的可靠傳輸，UDP則是 COnnectionless Oriented。TCP 會透過確認及重送機制來保證封包正確抵達，在傳送的過程中，封包可不必按照順序進行接收。因此，UDP在傳送過程中可能會遺失、重複、錯誤，但傳輸的效能可以比較好，適合用於訊息量較大、注重時效性的協定。</p>
<h4>參考資料</h4>
<ul>
<li><a href="http://forum.icst.org.tw/phpbb/viewtopic.php?f=24&#038;t=14508">TCP &#038; UDP 的差異在哪?</a></li>
</ul>
<h3>Process 和 Thread 的差別</h3>
<ol>
<li>
<h4>Process</h4>
<p>Heavy weight, 獨立的Program Segment、Data Segment, OS resource 等, 但切換時(Context Switch), CPU 需將當前 Process 的狀態保存起來，再載入下一個要執行的 Process 的狀態，負責儲存這個狀態的稱為PCB (Process Controll Block，或稱 Process Descriptor)</li>
<li>
<h4>Thread</h4>
<p>Light weight process,有自己的 program counter, register set, stack space, no (or a little) context switch<br />
每個 Thread 有自己的 PC, register set, stack space 表示 thread 可以有自己的 call graph 來執行程式。一個Process中的Thread共用Address Space(包括Program/Data Segment、Resource)，因此切換Thread時不需要切換/複製Address Space，處理代價相對輕很多。</li>
</ol>
<h4>參考資料</h4>
<ul>
<li><a href="http://vrschool.ice.cycu.edu.tw/vrschool/Course/OS/CHAP4/CH4_5.HTM">Thread</a></li>
<li><a href="http://vrschool.ice.cycu.edu.tw/vrschool/course/os/%A7%EB%BCv%A4%F9/%A7@%B7~%A8t%B2%CE%B2%C4%A5%7C%B3%B9/sld012.htm">環境切換</a></li>
</ul>
<hr />
<p><small>© admin for <a href="http://www.sylin.net/blog">Temporality</a>, 2009. |
<a href="http://www.sylin.net/blog/2009/01/14/144">Permalink</a> |
<a href="http://www.sylin.net/blog/2009/01/14/144#comments">No comment</a> |
Add to
<a href="http://del.icio.us/post?url=http://www.sylin.net/blog/2009/01/14/144&title=OSI Model">del.icio.us</a>
<br/>
Post tags: <a href="http://www.sylin.net/blog/tag/computer-network" rel="tag">computer network</a>, <a href="http://www.sylin.net/blog/tag/osi" rel="tag">OSI</a>, <a href="http://www.sylin.net/blog/tag/tcp" rel="tag">tcp</a>, <a href="http://www.sylin.net/blog/tag/thread" rel="tag">thread</a>, <a href="http://www.sylin.net/blog/tag/udp" rel="tag">udp</a><br/>
</small></p>
<p><small>Feed enhanced by <a href='http://planetozh.com/blog/my-projects/wordpress-plugin-better-feed-rss/'>Better Feed</a> from  <a href='http://planetozh.com/blog/'>Ozh</a></small></p>
]]></content:encoded>
			<wfw:commentRss>http://www.sylin.net/blog/2009/01/14/144/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>sizeof</title>
		<link>http://www.sylin.net/blog/2009/01/13/143</link>
		<comments>http://www.sylin.net/blog/2009/01/13/143#comments</comments>
		<pubDate>Mon, 12 Jan 2009 19:12:37 +0000</pubDate>
		<dc:creator>sylin</dc:creator>
				<category><![CDATA[Programming]]></category>
		<category><![CDATA[sizeof]]></category>
		<category><![CDATA[趨勢]]></category>
		<category><![CDATA[面試]]></category>

		<guid isPermaLink="false">http://www.sylin.net/blog/?p=143</guid>
		<description><![CDATA[剛剛在查資料，剛好看到前幾天遇到一個我不會的題目&#8230; 把程式丟給 gcc 編譯後執行，發現我完全寫錯了&#8230;.. 題目如下： int main &#40;&#41; &#123; int a; int *b; char c; char *d; char e&#91;100&#93;; char *f&#91;100&#93;; char g&#91;7&#93;&#91;8&#93;; char *h&#91;7&#93;&#91;8&#93;; &#160; printf&#40;&#34;%d, %d, %d, %d, %d, %d, %d, %d&#34;, sizeof&#40;a&#41;, sizeof&#40;b&#41;, sizeof&#40;c&#41;, sizeof&#40;d&#41;, sizeof&#40;e&#41;, sizeof&#40;f&#41;, sizeof&#40;g&#41;, sizeof&#40;h&#41;&#41;; &#125; 在 32 位元機器的情況下，答案應該是 4, 4, 1, 4, 100, 400, 56, 224 因為 [...]]]></description>
			<content:encoded><![CDATA[<p>剛剛在查資料，剛好看到前幾天遇到一個我不會的<a href="http://graffine.pixnet.net/blog/post/22183136">題目</a>&#8230;<br />
把程式丟給 gcc 編譯後執行，發現我完全寫錯了&#8230;..</p>
<p>題目如下：<br />
<!--DEVFMTCODE--><pre class="devcodeblock" title="C"><div class="devcodeoverflow"><span style="color: #993333;">int</span> main <span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span>
<span style="color: #009900;">&#123;</span>
    <span style="color: #993333;">int</span> a<span style="color: #339933;">;</span>
    <span style="color: #993333;">int</span> <span style="color: #339933;">*</span>b<span style="color: #339933;">;</span>
    <span style="color: #993333;">char</span> c<span style="color: #339933;">;</span>
    <span style="color: #993333;">char</span> <span style="color: #339933;">*</span>d<span style="color: #339933;">;</span>
    <span style="color: #993333;">char</span> e<span style="color: #009900;">&#91;</span>100<span style="color: #009900;">&#93;</span><span style="color: #339933;">;</span>
    <span style="color: #993333;">char</span> <span style="color: #339933;">*</span>f<span style="color: #009900;">&#91;</span>100<span style="color: #009900;">&#93;</span><span style="color: #339933;">;</span>
    <span style="color: #993333;">char</span> g<span style="color: #009900;">&#91;</span>7<span style="color: #009900;">&#93;</span><span style="color: #009900;">&#91;</span>8<span style="color: #009900;">&#93;</span><span style="color: #339933;">;</span>
    <span style="color: #993333;">char</span> <span style="color: #339933;">*</span>h<span style="color: #009900;">&#91;</span>7<span style="color: #009900;">&#93;</span><span style="color: #009900;">&#91;</span>8<span style="color: #009900;">&#93;</span><span style="color: #339933;">;</span>
&nbsp;
    <span style="color: #000066;">printf</span><span style="color: #009900;">&#40;</span><span style="color: #ff0000;">&quot;%d, %d, %d, %d, %d, %d, %d, %d&quot;</span><span style="color: #339933;">,</span>
    <span style="color: #993333;">sizeof</span><span style="color: #009900;">&#40;</span>a<span style="color: #009900;">&#41;</span><span style="color: #339933;">,</span> <span style="color: #993333;">sizeof</span><span style="color: #009900;">&#40;</span>b<span style="color: #009900;">&#41;</span><span style="color: #339933;">,</span> <span style="color: #993333;">sizeof</span><span style="color: #009900;">&#40;</span>c<span style="color: #009900;">&#41;</span><span style="color: #339933;">,</span> <span style="color: #993333;">sizeof</span><span style="color: #009900;">&#40;</span>d<span style="color: #009900;">&#41;</span><span style="color: #339933;">,</span> <span style="color: #993333;">sizeof</span><span style="color: #009900;">&#40;</span>e<span style="color: #009900;">&#41;</span><span style="color: #339933;">,</span> <span style="color: #993333;">sizeof</span><span style="color: #009900;">&#40;</span>f<span style="color: #009900;">&#41;</span><span style="color: #339933;">,</span> <span style="color: #993333;">sizeof</span><span style="color: #009900;">&#40;</span>g<span style="color: #009900;">&#41;</span><span style="color: #339933;">,</span> <span style="color: #993333;">sizeof</span><span style="color: #009900;">&#40;</span>h<span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span>
</div></pre><!--END_DEVFMTCODE--></p>
<p><span id="more-143"></span></p>
<p>在 32 位元機器的情況下，答案應該是 4, 4, 1, 4, 100, 400, 56, 224<br />
因為 sizeof 是求 compile time 時得到的記憶體空間(in byte), 可是當時我一直想成陣列會給陣列大小, 陣列指標跟二維陣列以上的情況我就 confuse 了, 這題好像是在<a href="http://tw.trendmicro.com/tw/home/">趨勢</a>遇到的吧..</p>
<p>爆炸!!</p>
<hr />
<p><small>© admin for <a href="http://www.sylin.net/blog">Temporality</a>, 2009. |
<a href="http://www.sylin.net/blog/2009/01/13/143">Permalink</a> |
<a href="http://www.sylin.net/blog/2009/01/13/143#comments">No comment</a> |
Add to
<a href="http://del.icio.us/post?url=http://www.sylin.net/blog/2009/01/13/143&title=sizeof">del.icio.us</a>
<br/>
Post tags: <a href="http://www.sylin.net/blog/tag/sizeof" rel="tag">sizeof</a>, <a href="http://www.sylin.net/blog/tag/%e8%b6%a8%e5%8b%a2" rel="tag">趨勢</a>, <a href="http://www.sylin.net/blog/tag/%e9%9d%a2%e8%a9%a6" rel="tag">面試</a><br/>
</small></p>
<p><small>Feed enhanced by <a href='http://planetozh.com/blog/my-projects/wordpress-plugin-better-feed-rss/'>Better Feed</a> from  <a href='http://planetozh.com/blog/'>Ozh</a></small></p>
]]></content:encoded>
			<wfw:commentRss>http://www.sylin.net/blog/2009/01/13/143/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>PHP之父的演講</title>
		<link>http://www.sylin.net/blog/2008/11/21/126</link>
		<comments>http://www.sylin.net/blog/2008/11/21/126#comments</comments>
		<pubDate>Fri, 21 Nov 2008 08:30:28 +0000</pubDate>
		<dc:creator>sylin</dc:creator>
				<category><![CDATA[Programming]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[Rasmus Lerdorf]]></category>
		<category><![CDATA[siege]]></category>

		<guid isPermaLink="false">http://www.sylin.net/blog/?p=126</guid>
		<description><![CDATA[這個禮拜有 PHP 之父-Rasmus Lerdorf1 來台灣的演講，一共三場，分別是 17日在中央，18日在台大，20日在交大。 今天看到有人發表聽完演講的心得 &#8211; [心得] 與大師相遇－PHP教父談理想網路環境(台大場)。 台大場的投影片在此，不過台大場和交大場的演講內容應該是一樣，前面先講 PHP performance tuning 的技巧，後面則是講 XSS、security。而中央場講的則是 Yahoo! Open Hackday 和 Web Service。 (題外話，我覺得 talks.php.net 還蠻難用的耶。) Rasmus Lerdorf這邊使用 Siege 這套工具來作評測，可以方便地測量執行效能的結果。 接下來介紹了一堆提昇效能的作法，不過看來還是用 APC 最簡單又有效，調整 include_path 就是減少搜尋檔案(fstat)失敗的次數，這是要依據使用環境的不同而決定使用，如果要被引入的檔案都放在固定的目錄下，當然是先去找比較常用到的目錄會比較快，其他的方法一下子還看不懂，而且看起來還蠻麻煩的，而且改進的幅度也還好。再後面是 XSS 攻擊手法的介紹，不過只看投影片的話，有些地方實在看不太懂意思，還是要再找時間仔細地研究看看。 is most notable as the creator of the PHP programming language. © admin for Temporality, 2008. &#124; Permalink &#124; [...]]]></description>
			<content:encoded><![CDATA[<p>這個禮拜有 PHP 之父-<a href="http://en.wikipedia.org/wiki/Rasmus_Lerdorf">Rasmus Lerdorf</a><sup><a href="http://www.sylin.net/blog/2008/11/21/126#footnote_0_126" id="identifier_0_126" class="footnote-link footnote-identifier-link" title=" is most notable as the creator of the PHP programming language. ">1</a></sup> 來<a href="http://twpug.net/modules/newbb/viewtopic.php?viewmode=flat&#038;type=&#038;topic_id=3676&#038;forum=9">台灣的演講</a>，一共三場，分別是 17日在中央，18日在台大，20日在交大。</p>
<p>今天看到有人發表聽完演講的心得 &#8211; <a href="http://blog.roodo.com/jaceju/archives/7648121.html">[心得] 與大師相遇－PHP教父談理想網路環境(台大場)</a>。</p>
<p>台大場的投影片<a href="http://talks.php.net/show/ntu/">在此</a>，不過台大場和<a href="http://talks.php.net/show/nctu/">交大場</a>的演講內容應該是一樣，前面先講 PHP performance tuning 的技巧，後面則是講 XSS、security。而<a href="http://talks.php.net/show/ncu/">中央場</a>講的則是 <a href="http://hackday.ithome.com.tw/yahoo/">Yahoo! Open Hackday</a> 和 Web Service。</p>
<p>(題外話，我覺得 <a href="talks.php.net">talks.php.net</a> 還蠻難用的耶。)</p>
<p>Rasmus Lerdorf這邊使用 <a href="http://www.joedog.org/JoeDog/Siege">Siege</a> 這套工具來作評測，可以方便地測量執行效能的結果。</p>
<p>接下來介紹了一堆提昇效能的作法，不過看來還是用 <a href="http://tw2.php.net/apc">APC</a> 最簡單又有效，調整 include_path 就是減少搜尋檔案(fstat)失敗的次數，這是要依據使用環境的不同而決定使用，如果要被引入的檔案都放在固定的目錄下，當然是先去找比較常用到的目錄會比較快，其他的方法一下子還看不懂，而且看起來還蠻麻煩的，而且改進的幅度也還好。再後面是 XSS 攻擊手法的介紹，不過只看投影片的話，有些地方實在看不太懂意思，還是要再找時間仔細地研究看看。</p>
<ol class="footnotes"><li id="footnote_0_126" class="footnote"> is most notable as the creator of the PHP programming language. </li></ol><hr />
<p><small>© admin for <a href="http://www.sylin.net/blog">Temporality</a>, 2008. |
<a href="http://www.sylin.net/blog/2008/11/21/126">Permalink</a> |
<a href="http://www.sylin.net/blog/2008/11/21/126#comments">No comment</a> |
Add to
<a href="http://del.icio.us/post?url=http://www.sylin.net/blog/2008/11/21/126&title=PHP之父的演講">del.icio.us</a>
<br/>
Post tags: <a href="http://www.sylin.net/blog/tag/php" rel="tag">php</a>, <a href="http://www.sylin.net/blog/tag/rasmus-lerdorf" rel="tag">Rasmus Lerdorf</a>, <a href="http://www.sylin.net/blog/tag/siege" rel="tag">siege</a><br/>
</small></p>
<p><small>Feed enhanced by <a href='http://planetozh.com/blog/my-projects/wordpress-plugin-better-feed-rss/'>Better Feed</a> from  <a href='http://planetozh.com/blog/'>Ozh</a></small></p>
]]></content:encoded>
			<wfw:commentRss>http://www.sylin.net/blog/2008/11/21/126/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Zend Framework 1.7 Release</title>
		<link>http://www.sylin.net/blog/2008/11/18/124</link>
		<comments>http://www.sylin.net/blog/2008/11/18/124#comments</comments>
		<pubDate>Tue, 18 Nov 2008 07:20:27 +0000</pubDate>
		<dc:creator>sylin</dc:creator>
				<category><![CDATA[Programming]]></category>
		<category><![CDATA[zend framework]]></category>

		<guid isPermaLink="false">http://www.sylin.net/blog/?p=124</guid>
		<description><![CDATA[還蠻準時的.. 把看得懂得部份再整理一次 Zend_Amf AMF0 和 AMF3 支援 Dojo Toolkit 1.2.1 Zend_Service_Twitter, 支援 Twitter Service ZendX_JQuery, 支援 JQuery (as extras library) Metadata API in Zend_Cache (不過我還沒在用 Zend_Cache) Zend_Gdata 支援 Google Book Search, 並支援到 GData v2 提升 Zend_Loader, Zend_Controller, server components 的效能 同上, 手冊並增加新的章節 &#8211; Zend Framework Performance Guide Zend_ProgressBar: 進度元件1 Zend_Config_Writer: 可以用來生 Config file 了.. Zend_Db_Table_Select [...]]]></description>
			<content:encoded><![CDATA[<p>還蠻準時的..<br />
把看得懂得部份再整理一次</p>
<ul>
<li>Zend_Amf AMF0 和 AMF3 支援</li>
<li>Dojo Toolkit 1.2.1</li>
<li>Zend_Service_Twitter, 支援 Twitter Service</li>
<li>ZendX_JQuery, 支援 JQuery (as extras library)</li>
<li>Metadata API in Zend_Cache (不過我還沒在用 Zend_Cache)</li>
<li>Zend_Gdata 支援 Google Book Search, 並支援到 GData v2</li>
<li>提升 Zend_Loader, Zend_Controller, server components 的效能</li>
<li>同上, 手冊並增加新的章節 &#8211; <a href="http://framework.zend.com/manual/en/performance.html">Zend Framework Performance Guide</a></li>
<li>Zend_ProgressBar: 進度元件<sup><a href="http://www.sylin.net/blog/2008/11/18/124#footnote_0_124" id="identifier_0_124" class="footnote-link footnote-identifier-link" title="進度列的顯示要另外處理，主要是提供百分比計算, 及更新的架構">1</a></sup> </li>
<li>Zend_Config_Writer: 可以用來生 Config file 了..</li>
<li>Zend_Db_Table_Select support for Zend_Paginator, 應該是我<a href="http://www.sylin.net/blog/2008/09/14/104">之前</a>想要的那個功能吧</li>
</ul>
<h3>相關資料</h3>
<ul>
<li>完整的 <a href="http://devzone.zend.com/article/4045-Zend-Framework-1.7.0-is-now-available">Release Announce</a></li>
<li>簡單一點的<a href="http://www.zendframeworkinaction.com/2008/11/17/zend-framework-17-has-been-released/">Zend Framework 1.7 has been released!</a></li>
<li><a href="http://www.sylin.net/blog/2008/11/02/118">Zend Framework 1.7 PR</a></li>
</ul>
<ol class="footnotes"><li id="footnote_0_124" class="footnote">進度列的顯示要另外處理，主要是提供百分比計算, 及更新的架構</li></ol><hr />
<p><small>© admin for <a href="http://www.sylin.net/blog">Temporality</a>, 2008. |
<a href="http://www.sylin.net/blog/2008/11/18/124">Permalink</a> |
<a href="http://www.sylin.net/blog/2008/11/18/124#comments">No comment</a> |
Add to
<a href="http://del.icio.us/post?url=http://www.sylin.net/blog/2008/11/18/124&title=Zend Framework 1.7 Release">del.icio.us</a>
<br/>
Post tags: <a href="http://www.sylin.net/blog/tag/zend-framework" rel="tag">zend framework</a><br/>
</small></p>
<p><small>Feed enhanced by <a href='http://planetozh.com/blog/my-projects/wordpress-plugin-better-feed-rss/'>Better Feed</a> from  <a href='http://planetozh.com/blog/'>Ozh</a></small></p>
]]></content:encoded>
			<wfw:commentRss>http://www.sylin.net/blog/2008/11/18/124/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
