<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-4332348533516593211</id><updated>2011-12-25T22:23:30.613+08:00</updated><category term='吃喝玩樂'/><category term='SpringFramework'/><category term='心情雜記'/><category term='iPhone'/><category term='GUNPLA'/><category term='Linux'/><category term='Wicket'/><category term='Objective-C'/><category term='Hibernate'/><category term='Wii'/><category term='Ubuntu'/><category term='Java'/><category term='MAC'/><title type='text'>蒼天之劍</title><subtitle type='html'></subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://freedom-heero.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4332348533516593211/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://freedom-heero.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Heero</name><uri>http://www.blogger.com/profile/15484005945091463086</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>72</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-4332348533516593211.post-5826388974497868123</id><published>2011-08-28T21:21:00.002+08:00</published><updated>2011-08-28T22:09:26.597+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Java'/><category scheme='http://www.blogger.com/atom/ns#' term='SpringFramework'/><title type='text'>JMX &amp; Spring</title><content type='html'>&lt;blockquote&gt;&lt;/blockquote&gt;用Spring要產生一個MBean並且註冊到MBeanServer是蠻容易的。基本上，幾乎只要使用XML設定就可以了。作法如下：&lt;div&gt;&lt;ol&gt;&lt;li&gt;確定有使用context的XML schema。在XML設定檔中加入&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;blockquote&gt;&lt;span class="Apple-style-span"  style="color:#ff6666;"&gt;&amp;lt;context:mbean-server id="mbeanServer"&amp;gt;&lt;/span&gt;&lt;/blockquote&gt;&lt;/span&gt;, 其中id是用來表示該mbean server。這個xml tag是Spring 2.5以後多的，可以簡化設定。當然也可以用傳統的spring bean的定義方式：&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;blockquote&gt;&amp;lt;bean id="mbeanServer" class="org.springframework.jmx.support.MBeanServerFactoryBean"/&amp;gt;&lt;/blockquote&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;加入RMI registry的宣告，一般來說使用JMX的remoting，在沒特別處理的情況，都是以RMI protocol來做通訊：&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;blockquote&gt;&lt;span class="Apple-style-span"  style="color:#ff6666;"&gt;&amp;lt;bean id="rmiRegistry" class="org.springframework.remoting.rmi.RmiRegistryFactoryBean"&amp;gt;&amp;lt;property name="port" value="1099"/&amp;gt;&amp;lt;/bean&amp;gt;&lt;/span&gt;&lt;/blockquote&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;宣告MBean的connector server，這是用來讓外部可以連線到MBeanServer：&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;blockquote&gt;&amp;lt;bean id="serverConnector" class="&lt;span class="Apple-style-span"  style="color:#ff6666;"&gt;org.springframework.jmx.support.ConnectorServerFactoryBean&lt;/span&gt;"&amp;gt;&lt;property name="daemon" value="true"&gt;&lt;/property&gt;&lt;/blockquote&gt;&lt;blockquote&gt;    &amp;lt;property name="threaded" value="true"/&amp;gt;&lt;/blockquote&gt;&lt;blockquote&gt;    &amp;lt;property name="objectName" value="connector:name=rmi"/&amp;gt;&lt;/blockquote&gt;&lt;blockquote&gt;    &lt;span class="Apple-style-span"  style="color:#ff6666;"&gt;&amp;lt;property name="serviceUrl" value="service:jmx:rmi://localhost/jndi/rmi://localhost:1099/jmxrmi"/&amp;gt;&lt;/span&gt;&lt;/blockquote&gt;&lt;blockquote&gt;&amp;lt;/bean&amp;gt;&lt;/blockquote&gt;&lt;/span&gt;，其中，service url的定義跟JMX的定義跟格式是一樣的。&lt;/li&gt;&lt;li&gt;最後就是宣告MBeanExporter，然後指定要export的bean跟ObjectName：&lt;br /&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;blockquote&gt;&amp;lt;bean id="mbeanExporter" class="&lt;span class="Apple-style-span"  style="color:#ff6666;"&gt;org.springframework.jmx.export.MBeanExporter"&lt;/span&gt; lazy-init="false"&amp;gt;&lt;/blockquote&gt;&lt;blockquote&gt;    &lt;span class="Apple-style-span"  style="color:#ff6666;"&gt;&amp;lt;property name="server" ref="mbeanServer"/&amp;gt;&lt;/span&gt;&lt;/blockquote&gt;&lt;blockquote&gt;    &amp;lt;property name="registrationBehaviorName" value="REGISTRATION_REPLACE_EXISTING"/&amp;gt;&lt;/blockquote&gt;&lt;blockquote&gt;&amp;lt;property name="beans"&amp;gt;&lt;/blockquote&gt;&lt;blockquote&gt;&lt;span class="Apple-style-span"  style="color:#ff6666;"&gt;&amp;lt;map&amp;gt;&lt;/span&gt;&lt;/blockquote&gt;&lt;blockquote&gt;&lt;span class="Apple-style-span"  style="color:#ff6666;"&gt;&amp;lt;entry key="heero:name=msService" value-ref="mobileSuitService"/&amp;gt; &lt;/span&gt;&lt;/blockquote&gt;&lt;blockquote&gt;&lt;span class="Apple-style-span"  style="color:#ff6666;"&gt;&amp;lt;/map&amp;gt;&lt;/span&gt;&lt;/blockquote&gt;&lt;blockquote&gt;&amp;lt;/property&amp;gt;&lt;/blockquote&gt;&lt;blockquote&gt;&amp;lt;/bean&amp;gt;&lt;/blockquote&gt;&lt;/span&gt;&lt;/li&gt;&lt;/ol&gt;&lt;div&gt;而連線的方式，可以用一般標準的JMX client連線方式，或是使用Spring的方式。Spring的方式就是透過MBeanProxyFactoryBean來產生MBean的proxy。&lt;/div&gt;&lt;/div&gt;&lt;div&gt;最後，有幾點注意：&lt;/div&gt;&lt;div&gt;&lt;ol&gt;&lt;li&gt;mbean server的宣告，如果不是使用&amp;lt;context:mbean-server/&amp;gt;&lt;context:mbean-server&gt;，則如果再產生mbean server發現已經有同id的server存在時，還是會繼續產生。所以可能會造成混淆。所以必須額外加上&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;blockquote&gt;&lt;span class="Apple-style-span"  style="color:#ff6666;"&gt;&amp;lt;property name="locateExistingServerIfPossible" value="true"/&amp;gt;&lt;/span&gt;&lt;/blockquote&gt;&lt;/span&gt;&lt;property name="locateExistingServerIfPossible" value="true"&gt;&lt;/property&gt;&lt;/context:mbean-server&gt;&lt;/li&gt;&lt;li&gt;在實際上使用發現，如果有使用Hibernate跟Spring JMX support，則用傳統bean定義的方式產生mbean server，會一直警告該server已經存在。&lt;/li&gt;&lt;li&gt;經測試發現，當mbean server啟動時，立刻去連線會失敗，但是若是等待幾秒則OK&lt;/li&gt;&lt;li&gt;根據Spring文件，MBeanExporter是不可以lazy initialization的。所以必須設定為&lt;span class="Apple-style-span"  style="color:#ff6666;"&gt;lazy-init="false"&lt;/span&gt;&lt;/li&gt;&lt;/ol&gt;&lt;div&gt;這是最簡單容易的作法之一，在幾乎不改code的情況下就可以產生JMX的支援。當然Spring也有其他的作法，像是使用annotation。詳情就參考Spring文件。&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4332348533516593211-5826388974497868123?l=freedom-heero.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://freedom-heero.blogspot.com/feeds/5826388974497868123/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4332348533516593211&amp;postID=5826388974497868123' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4332348533516593211/posts/default/5826388974497868123'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4332348533516593211/posts/default/5826388974497868123'/><link rel='alternate' type='text/html' href='http://freedom-heero.blogspot.com/2011/08/jmx-spring.html' title='JMX &amp; Spring'/><author><name>Heero</name><uri>http://www.blogger.com/profile/15484005945091463086</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4332348533516593211.post-8179258340191449662</id><published>2011-08-28T18:19:00.002+08:00</published><updated>2011-08-28T18:37:08.111+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Java'/><category scheme='http://www.blogger.com/atom/ns#' term='SpringFramework'/><title type='text'>Property file &amp; Spring</title><content type='html'>Spring設定除了透過annotation跟xml之外，也可以透過property file來讀取。SpringFramework有提供這樣的機制。&lt;div&gt;首先，定義設定檔內容，例如：&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;/span&gt;&lt;/div&gt;&lt;blockquote&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;(jmx.properties)&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;jmx.host=localhost&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;jmx.port=1099&lt;/span&gt;&lt;/div&gt;&lt;/blockquote&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;然後在spring的xml設定檔內，先加入&lt;span class="Apple-style-span"   style="font-family:'courier new';color:#ff6666;"&gt;PropertyPlaceholderConfigurer&lt;/span&gt;的定義：&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;/span&gt;&lt;/div&gt;&lt;blockquote&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&amp;lt;bean id="propertyConfigurer" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer"&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;	&lt;/span&gt;&lt;span class="Apple-style-span"  style="color:#ff6666;"&gt;&amp;lt;property name="location" value="classpath:jmx.properties"/&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&amp;lt;/bean&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;/blockquote&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;其中，location是指要讀取的設定檔檔名與位置。範例中的寫法是指在classpath內找尋jmx.properties。&lt;/div&gt;&lt;div&gt;然後在需要使用的spring xml設定檔中，使用&lt;span class="Apple-style-span"   style="font-family:'courier new';color:#ff6666;"&gt;${property name}&lt;/span&gt;的方式即可。例如：&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&amp;lt;bean id="example" class="..."&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;	&lt;/span&gt;&amp;lt;property name="host" value="${jmx.host}"/&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;	&lt;/span&gt;&amp;lt;property name="port" value="${jmx.port}"/&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&amp;lt;/bean&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4332348533516593211-8179258340191449662?l=freedom-heero.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://freedom-heero.blogspot.com/feeds/8179258340191449662/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4332348533516593211&amp;postID=8179258340191449662' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4332348533516593211/posts/default/8179258340191449662'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4332348533516593211/posts/default/8179258340191449662'/><link rel='alternate' type='text/html' href='http://freedom-heero.blogspot.com/2011/08/property-file-spring.html' title='Property file &amp; Spring'/><author><name>Heero</name><uri>http://www.blogger.com/profile/15484005945091463086</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4332348533516593211.post-5640220808731412212</id><published>2011-02-16T15:33:00.003+08:00</published><updated>2011-02-16T15:53:19.051+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='iPhone'/><category scheme='http://www.blogger.com/atom/ns#' term='Objective-C'/><title type='text'>Objective-C的類別初始化</title><content type='html'>在Java中，要對class variable作初始化，可以透過static method或是static block；而在Objective-C則是必須透過&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;initialize&lt;/span&gt;。&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;在Objective-C中，物件的預設建構式為&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;init&lt;/span&gt;，是用來對類別的單一物件作初始化。而除了這個method，其實還有另一個預設的初始化method，叫做"&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;initialize&lt;/span&gt;"。這是一個static method，所以是針對class variable來做初始化的。&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;但是有幾點跟Java比較不同的：&lt;/div&gt;&lt;div&gt;&lt;ul&gt;&lt;li&gt;Java的類別初始化，若是透過static method，則必須做明確的呼叫；但是Objective-C的initialize，則是會在該類別第一次載入時被自動呼叫（跟Java的static block較類似）。&lt;/li&gt;&lt;li&gt;Java的static block僅會被執行一次；Objective-C的&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;initialize&lt;/span&gt;則是在父類別與子類別被載入時，會分別個執行一次。（若是實際上只有子類別被使用，則實際的載入動作會先載入父類別並執行initialize，然後再載入子類別與執行&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;initialize&lt;/span&gt;）&lt;/li&gt;&lt;/ul&gt;&lt;div&gt;因此，在使用&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;initialize&lt;/span&gt;應該特別注意是否會被子類別進行重複呼叫。解決方法是在&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;initialize&lt;/span&gt;執行時，檢查當時的類別是否為父類別或是特定類別，範例程式如下：&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;/span&gt;&lt;/div&gt;&lt;blockquote&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;+ (void)initialize {&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt; &lt;/span&gt;if(&lt;span class="Apple-style-span"  style="color:#FF0000;"&gt;self == [XXXX class]&lt;/span&gt;) {&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;  &lt;/span&gt;// initialize class variables here&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt; &lt;/span&gt;}&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;}&lt;/span&gt;&lt;/div&gt;&lt;/blockquote&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;其中，XXXX指的是父類別名稱。&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;參考文章：&lt;a href="http://www.cocoachina.com/b/?p=132"&gt;Objective-C的Initialize初始化方法研究&lt;/a&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4332348533516593211-5640220808731412212?l=freedom-heero.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://freedom-heero.blogspot.com/feeds/5640220808731412212/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4332348533516593211&amp;postID=5640220808731412212' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4332348533516593211/posts/default/5640220808731412212'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4332348533516593211/posts/default/5640220808731412212'/><link rel='alternate' type='text/html' href='http://freedom-heero.blogspot.com/2011/02/objective-c.html' title='Objective-C的類別初始化'/><author><name>Heero</name><uri>http://www.blogger.com/profile/15484005945091463086</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4332348533516593211.post-1328380758723970319</id><published>2011-02-16T15:15:00.003+08:00</published><updated>2011-02-16T15:29:41.544+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='iPhone'/><category scheme='http://www.blogger.com/atom/ns#' term='Objective-C'/><title type='text'>Create an UUID by using Objective-C</title><content type='html'>&lt;blockquote&gt;&lt;/blockquote&gt;許多computer language都有方法可以產生UUID，所以Objective-C當然也不例外。目前查詢到而且驗證過可用的方法有兩種：&lt;div&gt;&lt;ul&gt;&lt;li&gt;使用C function：使用以下程式碼即可&lt;/li&gt;&lt;/ul&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;&lt;blockquote&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;- (NSString *)createUUID{   &lt;/span&gt;&lt;/span&gt;&lt;/blockquote&gt;&lt;blockquote&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;// Create universally unique identifier (object)   &lt;/span&gt;&lt;/span&gt;&lt;/blockquote&gt;&lt;blockquote&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;CFUUIDRef uuidObject = CFUUIDCreate(kCFAllocatorDefault);     &lt;/span&gt;&lt;/span&gt;&lt;/blockquote&gt;&lt;blockquote&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;// Get the string representation of CFUUID object.   &lt;/span&gt;&lt;/span&gt;&lt;/blockquote&gt;&lt;blockquote&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;NSString *uuidStr = [(NSString *)CFUUIDCreateString(kCFAllocatorDefault, uuidObject) autorelease];     &lt;/span&gt;&lt;/span&gt;&lt;/blockquote&gt;&lt;blockquote&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;CFRelease(uuidObject);     &lt;/span&gt;&lt;/span&gt;&lt;/blockquote&gt;&lt;blockquote&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;return uuidStr; &lt;/span&gt;&lt;/span&gt;&lt;/blockquote&gt;&lt;blockquote&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/blockquote&gt;&lt;/span&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;使用NSProcessInfo 類別：使用以下程式碼即可&lt;span class="Apple-style-span"  style="font-size:small;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;blockquote&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;NSString *uuid = [[NSProcessInfo processInfo] globallyUniqueString];&lt;/span&gt;&lt;/blockquote&gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;div&gt;兩種方法都可以產生UUID，但是長度不一樣。NSProcessInfo因為參考比較多資訊來產生，所以產生的長度會比較長，為58個字元長度&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;參考文章：&lt;a href="http://iphonedevelopertips.com/general/create-a-universally-unique-identifier-uuid.html?utm_source=feedburner&amp;amp;utm_medium=feed&amp;amp;utm_campaign=Feed:+IphoneDeveloperTips+(iPhone+Developer+Tips)"&gt;Create a Universally Unique Identifier (UUID)&lt;/a&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4332348533516593211-1328380758723970319?l=freedom-heero.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://freedom-heero.blogspot.com/feeds/1328380758723970319/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4332348533516593211&amp;postID=1328380758723970319' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4332348533516593211/posts/default/1328380758723970319'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4332348533516593211/posts/default/1328380758723970319'/><link rel='alternate' type='text/html' href='http://freedom-heero.blogspot.com/2011/02/create-uuid-by-using-objective-c.html' title='Create an UUID by using Objective-C'/><author><name>Heero</name><uri>http://www.blogger.com/profile/15484005945091463086</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4332348533516593211.post-4082679045217187291</id><published>2011-02-16T14:53:00.002+08:00</published><updated>2011-02-16T15:14:45.300+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='iPhone'/><category scheme='http://www.blogger.com/atom/ns#' term='Objective-C'/><title type='text'>Improve data upload speed on iPhone (for using ASIHTTPRequest)</title><content type='html'>&lt;blockquote&gt;&lt;/blockquote&gt;在先前的文章就曾經介紹過使用在先前的文章就曾經介紹過使用&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;ASIHTTPRequest&lt;/span&gt;來開發iOS上的HTTP通訊應用。它也的確讓coding變得比較簡單容易。不過，最近在實務上，卻碰到一個問題，就是當上傳大檔案或大量資料時，傳輸速率似乎不是很理想。經過一番股溝之後，發現在ASIHTTPRequest本身的API中，有相關設定可以改善。那就是透過static method &lt;span class="Apple-style-span" style="border-collapse: collapse; font-size: 14px; line-height: 18px; "&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;blockquote&gt;[ASIHTTPRequest setShouldThrottleBandwidthForWWAN:YES]&lt;/blockquote&gt;&lt;/span&gt;&lt;/span&gt;，來對流量作限制。事實上，該method的原意，似乎是在3G/GPRS網路下作流量管控的，不過API的說明也提到，對於大資料的上下傳也會有速度改善的效果。&lt;br /&gt;&lt;br /&gt;但是，在不是很嚴謹的測試之後，發現該method的效果在大資料上傳才會比較明顯。對於下載，似乎不但沒有改善的效果，反而會減慢。而API文件也提到，使用該API應該盡量在需要的情況在開啟，否則平時應該是要設定在&lt;span class="Apple-style-span"  style="color:#FF0000;"&gt;NO&lt;/span&gt;的狀態。但是，由於該method的設定效果是針對整個&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;ASIHTTPRequest&lt;/span&gt;的，而非針對單一request物件，因此在不需要的情況下，必須明確的使用&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;blockquote&gt;[ASIHTTPRequest setShouldThrottleBandwidthForWWAN:&lt;span class="Apple-style-span"  style="color:#FF0000;"&gt;NO&lt;/span&gt;]&lt;/blockquote&gt;&lt;/span&gt;來關閉功能。&lt;div&gt;參考的文章：&lt;a href="http://stackoverflow.com/questions/3567539/iphone-upload-image-speed-advice"&gt;iPhone upload image speed advice&lt;/a&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4332348533516593211-4082679045217187291?l=freedom-heero.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://freedom-heero.blogspot.com/feeds/4082679045217187291/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4332348533516593211&amp;postID=4082679045217187291' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4332348533516593211/posts/default/4082679045217187291'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4332348533516593211/posts/default/4082679045217187291'/><link rel='alternate' type='text/html' href='http://freedom-heero.blogspot.com/2011/02/improve-data-upload-speed-on-iphone-for.html' title='Improve data upload speed on iPhone (for using ASIHTTPRequest)'/><author><name>Heero</name><uri>http://www.blogger.com/profile/15484005945091463086</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4332348533516593211.post-8758630987556728762</id><published>2011-01-10T03:45:00.001+08:00</published><updated>2011-01-10T03:49:23.610+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='吃喝玩樂'/><category scheme='http://www.blogger.com/atom/ns#' term='Wii'/><title type='text'>Wii 軟改參考</title><content type='html'>請依軔體版本參考以下連結&lt;div&gt;&lt;meta equiv="content-type" content="text/html; charset=utf-8"&gt;&lt;span class="Apple-style-span" style="color: rgb(51, 51, 51); font-family: Verdana, Arial, Tahoma, Calibri, Geneva, sans-serif; font-size: 13px; "&gt;&lt;h2 class="title icon" style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 10px; padding-right: 10px; padding-bottom: 10px; padding-left: 0px; font-size: 14px; font-weight: normal; display: block; font: normal normal bold 14px/normal Tahoma, Calibri, Verdana, Geneva, sans-serif; "&gt;&lt;a href="http://www.wiihacks.com/recommended-faqs-guides-tutorials-only/24630-full-hacking-guide-4-2-system-menus.html"&gt;Full hacking guide for 4.2 system menus!!!!&lt;/a&gt;&lt;/h2&gt;&lt;div&gt;&lt;meta equiv="content-type" content="text/html; charset=utf-8"&gt;&lt;h2 class="title icon" style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 10px; padding-right: 10px; padding-bottom: 10px; padding-left: 0px; font-size: 14px; font-weight: normal; display: block; font: normal normal bold 14px/normal Tahoma, Calibri, Verdana, Geneva, sans-serif; "&gt;&lt;a href="http://www.wiihacks.com/recommended-faqs-guides-tutorials-only/16970-new-3-1-4-1-softmod-any-wii.html"&gt;New 3.1-4.1 Softmod for ANY Wii&lt;/a&gt;&lt;/h2&gt;&lt;/div&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4332348533516593211-8758630987556728762?l=freedom-heero.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://freedom-heero.blogspot.com/feeds/8758630987556728762/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4332348533516593211&amp;postID=8758630987556728762' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4332348533516593211/posts/default/8758630987556728762'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4332348533516593211/posts/default/8758630987556728762'/><link rel='alternate' type='text/html' href='http://freedom-heero.blogspot.com/2011/01/wii.html' title='Wii 軟改參考'/><author><name>Heero</name><uri>http://www.blogger.com/profile/15484005945091463086</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4332348533516593211.post-5700942921665755009</id><published>2010-10-28T15:51:00.002+08:00</published><updated>2010-10-28T16:02:52.894+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='iPhone'/><category scheme='http://www.blogger.com/atom/ns#' term='MAC'/><category scheme='http://www.blogger.com/atom/ns#' term='Objective-C'/><title type='text'>Objective-C 之 日期字串格式化與轉換</title><content type='html'>在撰寫程式的時候，時常需要把日期物件跟它的字串表示式來做互轉的動作。在Java中，可以透過java.text.SimpleDateFormat來做。而在Objective-C中，也有類似的類別，叫做NSDateFormatter。&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;NSDateFormatter的用法其實很簡單，就是建立一個NSDateFormatter物件，然後設定需要的dateFormat。之後如果是要把日期物件轉換為字串表示法，則用stringFromDate:；反之，則是使用dateFromString:。詳細內容可以參考：&lt;a href="http://cocoawithlove.com/2009/05/simple-methods-for-date-formatting-and.html"&gt;Simple methods for date formatting and transcoding&lt;/a&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4332348533516593211-5700942921665755009?l=freedom-heero.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://freedom-heero.blogspot.com/feeds/5700942921665755009/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4332348533516593211&amp;postID=5700942921665755009' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4332348533516593211/posts/default/5700942921665755009'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4332348533516593211/posts/default/5700942921665755009'/><link rel='alternate' type='text/html' href='http://freedom-heero.blogspot.com/2010/10/objective-c.html' title='Objective-C 之 日期字串格式化與轉換'/><author><name>Heero</name><uri>http://www.blogger.com/profile/15484005945091463086</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4332348533516593211.post-5939482515457413192</id><published>2010-10-07T00:51:00.000+08:00</published><updated>2010-10-07T00:52:24.532+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='iPhone'/><category scheme='http://www.blogger.com/atom/ns#' term='MAC'/><category scheme='http://www.blogger.com/atom/ns#' term='Objective-C'/><title type='text'>Objective-C的@synchronized</title><content type='html'>在Objective-C中，也有synchronized這個keyword，也是用來作thread synchronization，正是語法是&lt;blockquote&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;@synchronized(id) { ... }&lt;/span&gt;&lt;/blockquote&gt;，其中id是只要鎖定的物件pointer。而比較常用的情況是&lt;blockquote&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;@synchronized(self)&lt;/span&gt;&lt;/blockquote&gt;&lt;div&gt;有趣的是，如果@synchronized(self)語法出現在一般的instance method，則self是指該instance；但是如果是出現在static method，則self是指該class本身。&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4332348533516593211-5939482515457413192?l=freedom-heero.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://freedom-heero.blogspot.com/feeds/5939482515457413192/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4332348533516593211&amp;postID=5939482515457413192' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4332348533516593211/posts/default/5939482515457413192'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4332348533516593211/posts/default/5939482515457413192'/><link rel='alternate' type='text/html' href='http://freedom-heero.blogspot.com/2010/10/objective-csynchronized.html' title='Objective-C的@synchronized'/><author><name>Heero</name><uri>http://www.blogger.com/profile/15484005945091463086</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4332348533516593211.post-3723390789930568153</id><published>2010-09-26T23:33:00.003+08:00</published><updated>2010-09-26T23:40:52.095+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='心情雜記'/><title type='text'>抱怨！Google的產品彼此支援度不佳....</title><content type='html'>剛剛在編輯blogger上的文章時，發現不管怎麼弄，文章內的style一直就是弄不好...最後，想到該不會是Google Chrome的問題吧...所以換到Safari 5.0.2再試一次，結果就OK了...........&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;其實不只這件，Chrome在某些HTML的呈現與layout效果，似乎也不是很正確，反而是Safari真的是比較正確一點，也比較沒有問題...要不是Safari的memory usage比較大，而且&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;這真的是一大諷刺啊...Google...&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4332348533516593211-3723390789930568153?l=freedom-heero.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://freedom-heero.blogspot.com/feeds/3723390789930568153/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4332348533516593211&amp;postID=3723390789930568153' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4332348533516593211/posts/default/3723390789930568153'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4332348533516593211/posts/default/3723390789930568153'/><link rel='alternate' type='text/html' href='http://freedom-heero.blogspot.com/2010/09/google.html' title='抱怨！Google的產品彼此支援度不佳....'/><author><name>Heero</name><uri>http://www.blogger.com/profile/15484005945091463086</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4332348533516593211.post-481448765152647970</id><published>2010-09-26T22:47:00.006+08:00</published><updated>2010-09-26T23:33:12.336+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='iPhone'/><category scheme='http://www.blogger.com/atom/ns#' term='MAC'/><category scheme='http://www.blogger.com/atom/ns#' term='Objective-C'/><title type='text'>Singleton pattern for Objective-C</title><content type='html'>&lt;blockquote&gt;&lt;/blockquote&gt;&lt;blockquote&gt;&lt;/blockquote&gt;在Java中，要撰寫一個應用Singleton pattern的class十分容易。但是在Objective-C中，就沒這麼簡單了。原因在於物件與記憶體的配置與管理機制是完全不同的（個人見解，不見得對）。&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;其實原理是都很類似，就是設法讓app只產生一個object instance，而且是透過特定的static method來獲得這個instance，而不是透過constructor來建立各個獨立的instance。對於一些某些需要集中管理的資訊或是資源，singleton pattern十分有用。&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;在Objective-C中，因為無法宣告constructor為private，所以很難避免使用者去呼叫。另外，因為Objective-C的alloc/retain/release/dealloc的機制，所以我們也必須去處理有關instance reference count的問題，不然很容易會出現記憶體管理的問題...而造成災難。&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;如何撰寫呢？首先，先在header file中定義要取得singleton instance的static method，例如：&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;blockquote&gt;&lt;span class="Apple-style-span"  style="color:#FF0000;"&gt;+ (id) sharedInstance;&lt;/span&gt;&lt;/blockquote&gt;&lt;/span&gt;然後，在對應的.m檔案中，添加下列內容：&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-style-span"&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;/span&gt;&lt;/div&gt;&lt;blockquote&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-style-span"  style="color:#FF0000;"&gt;static MyManager *instance = nil;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;@implementation MyManager&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-style-span"  style="color:#3366FF;"&gt;#pragma mark Singleton Methods&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-style-span"  style="color:#3366FF;"&gt;+ (id)sharedInstance {&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-style-span"  style="color:#3366FF;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-style-span"  style="color:#3366FF;"&gt;@synchronized(self) {&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-style-span"  style="color:#3366FF;"&gt;  &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-style-span"  style="color:#3366FF;"&gt;if(sharedMyManager == nil)&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-style-span"  style="color:#3366FF;"&gt;   &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-style-span"  style="color:#3366FF;"&gt;sharedMyManager = [[super allocWithZone:NULL] init];&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-style-span"  style="color:#3366FF;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-style-span"  style="color:#3366FF;"&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-style-span"  style="color:#3366FF;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-style-span"  style="color:#3366FF;"&gt;return sharedMyManager;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-style-span"  style="color:#3366FF;"&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;+ (id)allocWithZone:(NSZone *)zone {&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;    return [[self sharedManager] retain];&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;}&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;- (id)copyWithZone:(NSZone *)zone {&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;    return self;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;}&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;- (id)retain {&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;    return self;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;}&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;- (unsigned)retainCount {&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;    return UINT_MAX; //denotes an object that cannot be released&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;}&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;- (void)release {&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;    // never release&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;}&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;- (id)autorelease {&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;    return self;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;}&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;- (id)init {&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;    if (self = [super init]) {&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;        // initialize your instance variables&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;    }&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;    return self;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;}&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;- (void)dealloc {&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;    // Should never be called, but just here for clarity really.&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;    // release your instance variables&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;    [super dealloc];   &lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;}&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;@end&lt;/span&gt;&lt;/div&gt;&lt;/blockquote&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;首先，是定義全域變數instance，用來表示此class的singleton instance。然後實作之前定義的singleton method，讓它傳回該instance variable，如此一來，只要呼叫此method，就可以取得同一個instance。其他的method都是override原本NSObject的定義。主要是用來處理reference count的問題，用來避免該instance被不小心release掉。其中，在init跟dealloc，可以對自己定義的instance variables做初始化跟回收。原則上，Objective-C的singleton pattern大概就是長這樣。&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;心得：比起Java，真的複雜多了...而且老實說，我也不知道這樣想是不是真的沒問題...只是目前google到的寫法，大多是長得類似這樣。&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;參考：&lt;a href="http://iphone.galloway.me.uk/iphone-sdktutorials/singleton-classes/"&gt;Singleton Classes&lt;/a&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4332348533516593211-481448765152647970?l=freedom-heero.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://freedom-heero.blogspot.com/feeds/481448765152647970/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4332348533516593211&amp;postID=481448765152647970' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4332348533516593211/posts/default/481448765152647970'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4332348533516593211/posts/default/481448765152647970'/><link rel='alternate' type='text/html' href='http://freedom-heero.blogspot.com/2010/09/singleton-pattern-for-objective-c.html' title='Singleton pattern for Objective-C'/><author><name>Heero</name><uri>http://www.blogger.com/profile/15484005945091463086</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4332348533516593211.post-3616568041084051570</id><published>2010-09-26T18:53:00.002+08:00</published><updated>2010-09-26T19:03:26.630+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='MAC'/><title type='text'>檢查MacBook Pro的硬體錯誤</title><content type='html'>一般來說，當安裝了新硬體之後出現問題，通常就是得自己想辦法從混亂的情況中，找出可能的原因。尤其是安裝了像是RAM或CPU這類的東西。有時候新的RAM有問題或是不合於目前硬體，是不會造成無法開機，但是就會讓你出現很多類似靈異現象的事。&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;在Windows中，至少我所知道的，就是只能用自己經驗跟third-party的硬體檢測軟體來判斷。但是每套硬體檢測軟體的結果又都不太一樣。&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;最近，我幫我的MacBook Pro加到了8GB，本來很高興的要工作，但是卻一直有很多不太正常的事...當然，很直覺的就判斷可能是RAM的問題。但是，該怎麼確定呢？於是Google了一些軟體做檢測，但是結果也是時好時壞。&lt;/div&gt;&lt;div&gt;但是後來發現，原來...Apple在出廠時所附的Application installation disc中，就有「Apple Hardware Test」的程式。只要把該片放入光碟機之中，然後在開機時按住「d」，就可以進入「Apple Hardware Test」，檢測很簡單，就是「標準測試」與「延伸測試」兩種。基本上，如果連標準測試都沒辦法過，就是有很明確的問題了。而我的問題在連續三次的標準測試都指出是RAM的問題...所以當然就是去創見處理囉～&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;結論：再也不用為了硬體檢測問題傷神了～&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4332348533516593211-3616568041084051570?l=freedom-heero.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://freedom-heero.blogspot.com/feeds/3616568041084051570/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4332348533516593211&amp;postID=3616568041084051570' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4332348533516593211/posts/default/3616568041084051570'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4332348533516593211/posts/default/3616568041084051570'/><link rel='alternate' type='text/html' href='http://freedom-heero.blogspot.com/2010/09/macbook-pro.html' title='檢查MacBook Pro的硬體錯誤'/><author><name>Heero</name><uri>http://www.blogger.com/profile/15484005945091463086</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4332348533516593211.post-2118806693981314672</id><published>2010-09-25T02:19:00.003+08:00</published><updated>2010-09-25T02:24:34.959+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Linux'/><category scheme='http://www.blogger.com/atom/ns#' term='Ubuntu'/><title type='text'>在Ubuntu Server Edition上安裝GUI介面</title><content type='html'>想把server改成用Ubuntu Server，但是又不想只用command line的方式來管理與設定系統。所以就想到在Ubuntu Server上面裝上gnome...但是又不想安裝完整的gnome&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;在參考&lt;a href="http://www.urien.info/blog/index.php/how-to-install-gui-in-ubuntu-server/"&gt;How to install GUI in Ubuntu Server&lt;/a&gt;之後，自己就試著用&lt;/div&gt;&lt;div&gt;&lt;blockquote&gt;sudo apt-get install x-window-system-core gnome-core&lt;/blockquote&gt;&lt;/div&gt;&lt;div&gt;結果真的可以安裝很簡易版本的gnome...幾乎沒有任何GUI app...連synaptic都沒有，所以只好再用apt-get來安裝&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4332348533516593211-2118806693981314672?l=freedom-heero.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://freedom-heero.blogspot.com/feeds/2118806693981314672/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4332348533516593211&amp;postID=2118806693981314672' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4332348533516593211/posts/default/2118806693981314672'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4332348533516593211/posts/default/2118806693981314672'/><link rel='alternate' type='text/html' href='http://freedom-heero.blogspot.com/2010/09/serverubuntu-servercommand-lineubuntu.html' title='在Ubuntu Server Edition上安裝GUI介面'/><author><name>Heero</name><uri>http://www.blogger.com/profile/15484005945091463086</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4332348533516593211.post-8284321695178200166</id><published>2010-08-05T11:13:00.004+08:00</published><updated>2010-09-26T22:44:55.364+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='iPhone'/><category scheme='http://www.blogger.com/atom/ns#' term='Objective-C'/><title type='text'>DOM-based XML utility For iPhone</title><content type='html'>在Mac OSX上，分別有&lt;span class="Apple-style-span" style="font-family:'courier new';"&gt;NSXMLParser&lt;/span&gt;跟&lt;span class="Apple-style-span" style="font-family:'courier new';"&gt;NSXMLDocument&lt;/span&gt;來處理有關SAX與DOM方式的XML parsing。然而在iOS上的Cocoa Touch，卻只剩下SAX的&lt;span class="Apple-style-span" style="font-family:'courier new';"&gt;NSXMLParser&lt;/span&gt;的處理方式。相較於DOM來說，SAX的處理方式是較為快速與節省資源的，也或許是這樣才會在iOS上只保留這種方式的parsing。&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;然而，如果只是簡單格式的XML讀取，用&lt;span class="Apple-style-span" style="font-family:'courier new';"&gt;NSXMLParser&lt;/span&gt;來parse可能是很快速簡便。但是如果要處理的XML格式眾多或是格式複雜，那就可能不是那麼好過了...而且&lt;span class="Apple-style-span" style="font-family:'courier new';"&gt;NSXMLParser&lt;/span&gt;也只能處理讀取時的parsing。如果是要將資料輸出成XML格式，那不使用DOM的處理將會變得比較難以處理。&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;後來在internet上，發現這篇&lt;a href="http://arashpayan.com/blog/index.php/2009/01/14/apxml-nsxmldocument-substitute-for-iphoneipod-touch/"&gt;APXML: NSXMLDocument 』substitute' for iPhone/iPod Touch&lt;/a&gt;，才知道有這個&lt;span class="Apple-style-span" style="font-family:'courier new';"&gt;APXML&lt;/span&gt;的DOM-based簡易套件可以使用。說它是簡易套件還真不為過，含Header file在內，全部也才不過6~7個source code files，每個也都不算太大、太複雜。&lt;/div&gt;&lt;div&gt;既然是DOM-based parser，當然除了可以讀取，也可以輸出成為XML。使用上很簡單，只要&lt;blockquote&gt;&lt;span class="Apple-style-span" style="font-family:'courier new';"&gt;#import "APXML.h"&lt;/span&gt;&lt;/blockquote&gt;就可以使用到全部的相關類別，不必一一去import個別的class。&lt;/div&gt;&lt;div&gt;Parse XML：&lt;blockquote&gt;&lt;span class="Apple-style-span" style="font-family:'courier new';"&gt;APDocument *doc = [APDocument documentWithXMLString:xmlstring];&lt;/span&gt;&lt;/blockquote&gt;&lt;/div&gt;&lt;div&gt;取得Root Element：&lt;span class="Apple-style-span" style="font-family:'courier new';"&gt;&lt;blockquote&gt;APElement *rootElem = [doc rootElement];&lt;/blockquote&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;讀取所有子element：&lt;span class="Apple-style-span" style="font-family:'courier new';"&gt;&lt;blockquote&gt;NSArray *childElements = [rootElem childElements];&lt;/blockquote&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;讀取element name：&lt;span class="Apple-style-span" style="font-family:'courier new';"&gt;&lt;blockquote&gt;NSString *elementName = elem.name;&lt;/blockquote&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;讀取element value：&lt;span class="Apple-style-span" style="font-family:'courier new';"&gt;&lt;blockquote&gt;NSString *elementValue = elem.value;&lt;/blockquote&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;讀取特定名稱之attribute：&lt;span class="Apple-style-span" style="font-family:'courier new';"&gt;&lt;blockquote&gt;NSString *attrValue = [elem valueForAttributeNamed:attributeName];&lt;/blockquote&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;輸出部分則為&lt;/div&gt;&lt;div&gt;Create Element：&lt;span class="Apple-style-span" style="font-family:'courier new';"&gt;&lt;blockquote&gt;APElement *elem = [APElement elementWithName:elementName];&lt;/blockquote&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;Set attribute &amp;amp; element value：&lt;span class="Apple-style-span" style="font-family:'courier new';"&gt;&lt;/span&gt;&lt;/div&gt;&lt;blockquote&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family:'courier new';"&gt;[elem addAttributeNamed:attrName withValue:attiValue];&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family:'courier new';"&gt;[elem appendValue:elementValue];&lt;/span&gt;&lt;/div&gt;&lt;/blockquote&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family:'courier new';"&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;Add child element：&lt;span class="Apple-style-span" style="font-family:'courier new';"&gt;&lt;blockquote&gt;[elem addChild: childElem];&lt;/blockquote&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;Create XML Document：&lt;span class="Apple-style-span" style="font-family:'courier new';"&gt;&lt;blockquote&gt;APDocument *doc = [[APDocument alloc] initWithRootElement: elem];&lt;/blockquote&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;Output XML string：&lt;span class="Apple-style-span" style="font-family:'courier new';"&gt;&lt;blockquote&gt;NSString *xmlString = [doc xml];&lt;/blockquote&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;使用語法算是十分簡單、直覺。&lt;/div&gt;&lt;div&gt;其實，要自己實作DOM-based parser也不算太難，但是總是比較費工夫、品質也需要時間來鍛鍊。既然有現成又不錯的lib，當然能善加利用會更好囉～&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4332348533516593211-8284321695178200166?l=freedom-heero.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://freedom-heero.blogspot.com/feeds/8284321695178200166/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4332348533516593211&amp;postID=8284321695178200166' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4332348533516593211/posts/default/8284321695178200166'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4332348533516593211/posts/default/8284321695178200166'/><link rel='alternate' type='text/html' href='http://freedom-heero.blogspot.com/2010/08/dom-based-xml-utility-for-iphone.html' title='DOM-based XML utility For iPhone'/><author><name>Heero</name><uri>http://www.blogger.com/profile/15484005945091463086</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4332348533516593211.post-8198517868056619502</id><published>2010-08-05T10:28:00.004+08:00</published><updated>2010-09-26T22:45:47.725+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='iPhone'/><category scheme='http://www.blogger.com/atom/ns#' term='MAC'/><category scheme='http://www.blogger.com/atom/ns#' term='Objective-C'/><title type='text'>好用的HTTP lib(for iPhone &amp; Mac OSX)</title><content type='html'>HTTP API其實在Cocoa裡面是有的，透過NSURL、NSURLRequest、NSURLConnection等類別來達成，也分別支援同步與非同步傳輸。使用上雖然不算是太難，但是仍然有不少繁瑣的手續要做，要處理的delegate method也不算少，讓人感覺還是有點不是那麼方便。&lt;br /&gt;&lt;br /&gt;因此，後來在internet上，找到一個叫做ASIHTTPRequest的lib，這個lib是以BSD license的方式open source的。顧名思義，這個lib的主要工作就是提供HTTP protocol的通訊機制，而且用很簡單的方式讓developer可以操作request、response，以及設定POST parameter，甚至是上下傳檔案等等。本身也內建啟用Cookie機制，所以對於一些有session tracking的web services也很方便。當然也提供有同步與非同步的傳輸。&lt;br /&gt;官網位置：&lt;a href="http://allseeing-i.com/ASIHTTPRequest/"&gt;http://allseeing-i.com/ASIHTTPRequest/&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;心得：該Lib除了可以在Mac OSX上使用外，也可以在iOS上使用，而且目前已經與iOS4相容。使用上算是很簡單，也沒碰過啥大問題。如果要說缺點，就是放到project中，會導致project code在compile之後多出不少容量吧XD&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4332348533516593211-8198517868056619502?l=freedom-heero.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://freedom-heero.blogspot.com/feeds/8198517868056619502/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4332348533516593211&amp;postID=8198517868056619502' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4332348533516593211/posts/default/8198517868056619502'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4332348533516593211/posts/default/8198517868056619502'/><link rel='alternate' type='text/html' href='http://freedom-heero.blogspot.com/2010/08/http-libfor-iphone-mac-osx.html' title='好用的HTTP lib(for iPhone &amp; Mac OSX)'/><author><name>Heero</name><uri>http://www.blogger.com/profile/15484005945091463086</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4332348533516593211.post-1416361123241552227</id><published>2010-08-04T21:07:00.003+08:00</published><updated>2010-09-26T22:47:08.255+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='iPhone'/><category scheme='http://www.blogger.com/atom/ns#' term='Objective-C'/><title type='text'>動態調整TableVewCell的高度</title><content type='html'>因為工作需求，原本要使用UITextView來顯示多行文字，但是發現使用了UITextView之後，Cell可以觸發select動作的區域將變得很小（受到UITextView的區域影響）。所以改用別的方式處理。&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;首先，發現原來UILabel是可以顯示多行文字的，只要把property &lt;span class="Apple-style-span" style="font-family:'courier new';"&gt;numberOfLines&lt;/span&gt;設為0，就可以支援多行文字，但是必須呼叫&lt;span class="Apple-style-span" style="font-family:'courier new';"&gt;[label sizeToFit]&lt;/span&gt;，來調整UILabel的大小。&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;而預設的UITableViewCell的&lt;span class="Apple-style-span" style="font-family:'courier new';"&gt;textLabel&lt;/span&gt;也可以這樣調整，所以就可以顯示多行文字。然而，UITableView還有個問題，就是有cell height的問題。因為cell height似乎是在cell顯示前就會設定好，所以即使在&lt;span class="Apple-style-span" style="font-family:'courier new';"&gt;tableView:cellForRowAtIndexPath:&lt;/span&gt;這個method裡面去調整cell的高度也是無效。必須透過&lt;span class="Apple-style-span" style="font-family:'courier new';"&gt;tableView:heightForRowAtIndexPath:&lt;/span&gt;來回傳特定cell的高度。&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;但是，對於多行文字來說，因為內容行數是不固定的，所以必須在顯示時計算實際行數文字的總高度。幸好在參考&lt;a href="http://www.raddonline.com/blogs/geek-journal/iphone-sdk-resizing-a-uitableviewcell-to-hold-variable-amounts-of-text/"&gt;iPhone SDK: Resizing a UITableViewCell to Hold Variable Amounts of Text, Part 2 of 2&lt;/a&gt;這篇之後，得到解答。就是利用NSString裡面的&lt;span class="Apple-style-span" style="font-family:'courier new';"&gt;sizeWithFont:constrainedToSize:lineBreakMode:&lt;/span&gt;來根據指定的字型高度跟斷行方式來計算。可以使用Objective-C的Category機制，將此method放置到NSString中。以下是參考上述文章所寫的code：&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;blockquote&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family:'courier new';"&gt;@implementation NSString (TextHeight)&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family:'courier new';"&gt;-(CGFloat) textHeightForSystemFontOfSize:(CGFloat)size {&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;&lt;span class="Apple-style-span" style="font-family:'courier new';"&gt; &lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-family:'courier new';"&gt;//Calculate the expected size based on the font and linebreak mode of the label&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family:'courier new';"&gt;    CGFloat maxWidth = [UIScreen mainScreen].bounds.size.width - 50;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family:'courier new';"&gt;    CGFloat maxHeight = 9999;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family:'courier new';"&gt;    CGSize maximumLabelSize = CGSizeMake(maxWidth,maxHeight);&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;&lt;span class="Apple-style-span" style="font-family:'courier new';"&gt; &lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family:'courier new';"&gt;    CGSize expectedLabelSize = [self sizeWithFont:[UIFont systemFontOfSize:size] constrainedToSize:maximumLabelSize lineBreakMode:UILineBreakModeWordWrap]; &lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;&lt;span class="Apple-style-span" style="font-family:'courier new';"&gt; &lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family:'courier new';"&gt;    return expectedLabelSize.height;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family:'courier new';"&gt;}&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family:'courier new';"&gt;@end&lt;/span&gt;&lt;/div&gt;&lt;/blockquote&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;透過此method，就可以在tableView:heightForRowAtIndexPath:中回傳正確的文字內容高度了。&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4332348533516593211-1416361123241552227?l=freedom-heero.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://freedom-heero.blogspot.com/feeds/1416361123241552227/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4332348533516593211&amp;postID=1416361123241552227' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4332348533516593211/posts/default/1416361123241552227'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4332348533516593211/posts/default/1416361123241552227'/><link rel='alternate' type='text/html' href='http://freedom-heero.blogspot.com/2010/08/tablevewcell.html' title='動態調整TableVewCell的高度'/><author><name>Heero</name><uri>http://www.blogger.com/profile/15484005945091463086</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4332348533516593211.post-2483535049743708863</id><published>2010-05-12T21:23:00.004+08:00</published><updated>2010-05-12T22:04:46.991+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Java'/><category scheme='http://www.blogger.com/atom/ns#' term='Hibernate'/><title type='text'>DB實作心得---SQL JOIN語法</title><content type='html'>因為都是用Hibernate，所以好久沒碰這種語法了...老實說以前在學SQL的時候，也一直沒很認真的搞懂。一直到最近為了案子，才又比較認真的去看了...&lt;div&gt;找了幾篇網友分享的文章，都講得很清楚，所以就不在贅述：&lt;/div&gt;&lt;div&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://www.wretch.cc/blog/sky4s/2250385"&gt;SQL Join語法筆記&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.study-area.org/coobila/tutorial_381.html"&gt;用SQL合併資料表&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.dotblogs.com.tw/hatelove/archive/2010/01/23/13229.aspx"&gt;[SQL]Join的觀念&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;一般來說，我們通常都會儘量用一個SQL statement的方式來完成所需要的查詢。而其中都儘量可以用JOIN的方式來把所需要的資料串出來。不過我也有看到有網友發表心得，表示在MySQL上，進行較複雜的JOIN時，效率會很糟糕，甚至會造成DB table被lock過久的情況。事實上，幾年前我自己也用過MySQL，也是發現它在作較複雜JOIN時，效率真的不好...所以後來我就都改用PostgreSQL。&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;而在Hibernate中，我所常用的Criteria是一種物件式的查詢方式，它建立跟其他table JOIN的方式是透過&lt;span class="Apple-style-span"  style="color:#FF9900;"&gt;createCriteria()&lt;/span&gt;或是&lt;span class="Apple-style-span"  style="color:#FF9900;"&gt;createAlias()&lt;/span&gt;。透過這兩種method，可以把要查詢的root entity跟child entity作JOIN。在建立這種JOIN關係時，Hibernate&lt;span class="Apple-style-span"  style="color:#FF9900;"&gt;預設是使用inner join的方式&lt;/span&gt;，所以在某些情況會無法正確的找到所要資料，甚至會出現LazyInitializationException。此時，可以試試看在這兩種method的呼叫時，加上&lt;span class="Apple-style-span"  style="color:#FF9900;"&gt;Criteria.LEFT_JOIN&lt;/span&gt;，這樣Hibernate會以Left outer join的方式處理，也許就可以成功的找到所要的資料了。&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;我個人認為與其使用一個很複雜的SQL statement來增加查詢效率，未必比使用多個簡單的SQL statement來取出資料再透過自己程式邏輯作處理來的容易跟快速...&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4332348533516593211-2483535049743708863?l=freedom-heero.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://freedom-heero.blogspot.com/feeds/2483535049743708863/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4332348533516593211&amp;postID=2483535049743708863' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4332348533516593211/posts/default/2483535049743708863'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4332348533516593211/posts/default/2483535049743708863'/><link rel='alternate' type='text/html' href='http://freedom-heero.blogspot.com/2010/05/db-sql-join.html' title='DB實作心得---SQL JOIN語法'/><author><name>Heero</name><uri>http://www.blogger.com/profile/15484005945091463086</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4332348533516593211.post-4451230082461143580</id><published>2010-05-12T16:22:00.003+08:00</published><updated>2010-05-12T16:47:37.406+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Java'/><category scheme='http://www.blogger.com/atom/ns#' term='Hibernate'/><title type='text'>Database系統實做心得---SQL調校</title><content type='html'>做了很久跟DB有關的開發工作，但是其實後來大部分都是靠Hibernate為主。透過它，開發者不再需要傷神有關DB底層的設定與SQL語法的管理與維護。不過也變得比較偷懶，比較不會去在意SQL語法上的調校。&lt;div&gt;在網路上有許多高手有此道的獨到心得，我只也是從中獲得一點點，這兩偏是個人覺得還蠻不錯的：&lt;a href="http://www.javaworld.com.tw/roller/ingramchen/entry/2007_6_8_DatabaseIndexMemo"&gt;Database Index 筆記&lt;/a&gt; 與 &lt;a href="http://blog.xuite.net/j2ee/ccc/15120677"&gt;調校 SQL 以徹底改善應用程式效能&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;其中有些跟DB table schema設計或是SQL語法的技巧，不過在Hibernate中，要使用這些技巧可能就不是那麼容易。Hibernate是允許使用者自行設定這些東西產生的方法，甚至可以自訂SQL statement。不過個人覺得Hibernate自己所產生的schema跟SQL statement已經很不錯了，除非真的很有特殊的需求，不然實在也沒必要自己搞（如果都要自己搞，那就失去用Hibernate的意義了）。&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;不過兩篇文章都有提到的一個重點：index。在Hibernate中，也有支援產生index的機制，但是只會對primary key跟unique column自動產生。雖然在Hibernate Annotation Extensions中有@index的annotation可以指定對某個property產生db index，但是這功能只有在透過Hibernate作第一次DB schema建立時有效；若是指定的index的table已經存在的話，這機制不會有作用，就必須手動產生。根據上面兩篇文章的內容，產生與刪除index的SQL DML為：&lt;/div&gt;&lt;div&gt;&lt;blockquote&gt;create index index_mytable_mycol on mytable(mycol)&lt;/blockquote&gt;&lt;/div&gt;&lt;div&gt;與&lt;/div&gt;&lt;div&gt;&lt;blockquote&gt;drop index index_mytable_mycol&lt;/blockquote&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;而根據上述兩篇文章的講法，幾乎都認為應該對FK也設定index比較好。當然有些但書，例如在主table資料量有到一定量以上的時候才會比較有效果等等的。&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4332348533516593211-4451230082461143580?l=freedom-heero.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://freedom-heero.blogspot.com/feeds/4451230082461143580/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4332348533516593211&amp;postID=4451230082461143580' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4332348533516593211/posts/default/4451230082461143580'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4332348533516593211/posts/default/4451230082461143580'/><link rel='alternate' type='text/html' href='http://freedom-heero.blogspot.com/2010/05/database-sql.html' title='Database系統實做心得---SQL調校'/><author><name>Heero</name><uri>http://www.blogger.com/profile/15484005945091463086</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4332348533516593211.post-3112544307731418323</id><published>2010-03-26T15:22:00.002+08:00</published><updated>2010-03-26T15:39:59.829+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='MAC'/><title type='text'>32bits vs 64bits part2, 32bits未必不好</title><content type='html'>之前就提過有關Snow Leopard的kernel mode的問題了...事實上我一直很困惑為何Apple不把Snow Leopard的kernel預設為64bit的。&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;當然，後來也去查過很多的文章，發現不管是國內外的一些使用心得或是報告，都是差不多的結論，就是32bit跟64bit的效能差異不大。其實我自己的感受也是一樣。而不管是使用者或是官方的說法都是說32bit kernel的相容性比較高...這點在我上次要透過iPhone來上往時也證實了...目前某些driver或是軟體可能是無法在64bit kernel下運作的。&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;當然，自己還是很不死心的測試了一下...用XBench...來測試32bit跟64bit的差異...結果...就分數來看兩者差異真的很小...才2~3分左右...事實上還是32bit贏的。而分項成績則是互有優勝，但是差距不大。除了在記憶體方面的項目中的allocation，64bit有大贏之外，其他的其實大部分都是差不多。而32在OpenGL跟一些圖形顯示方面是有些小贏...不管測幾次都一樣。剛好符合一些使用者的講法，目前在顯示driver上，Mac OS的32bit driver的最佳化是比較好的。&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;官方講法是說64bit kernel在安裝有大量記憶體（32G以上）的情況下才有需要啟動，而其他情況則與32bit無異。&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;不管怎樣，Snow Leopard的確讓64bit的app更加廣泛的被使用了，數量也變比較多...雖然還是不少32bit third-party app。能以32bit kernel來良好運作64bit app，apple的工程師也是夠厲害...&lt;/div&gt;&lt;div&gt;至於很多人都猜測，在下一版的Mac OS應該就會改變成為64bit kernel...我個人反而不是那麼看待...畢竟目前還是不少driver跟app還是32bit的...轉換為64bit kernel，對Apple來說會有好處還是壞處，還是難講...這也許也是Snow Leopard採用32bit kernel的原因。除非在新一版的Mac OS出現的時候，已經有更多重量級的driver跟軟體都轉換到64bit，否則用32bit kernel來運作應該還是必然的吧&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;講了一堆屁話，結論就是我又回到32bit kernel了XD&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4332348533516593211-3112544307731418323?l=freedom-heero.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://freedom-heero.blogspot.com/feeds/3112544307731418323/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4332348533516593211&amp;postID=3112544307731418323' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4332348533516593211/posts/default/3112544307731418323'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4332348533516593211/posts/default/3112544307731418323'/><link rel='alternate' type='text/html' href='http://freedom-heero.blogspot.com/2010/03/32bits-vs-64bits-part2-32bits.html' title='32bits vs 64bits part2, 32bits未必不好'/><author><name>Heero</name><uri>http://www.blogger.com/profile/15484005945091463086</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4332348533516593211.post-7050529591046867372</id><published>2010-03-21T18:48:00.005+08:00</published><updated>2010-03-26T15:22:09.551+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='MAC'/><title type='text'>香草輸入法, 新酷音模組 &amp; Snow Leopard</title><content type='html'>&lt;span class="Apple-style-span" style="font-size: medium;"&gt;之前一直都是用Yahoo輸入法，是沒太多缺點啦...如果要說的話，就是猜字的準確度不高，而且不方便自己加詞。之前有人一直推薦我使用香草輸入法，但是Google之後，發現目前香草輸入法在0.9a1，看起來不算是很穩定的版本的感覺...而且我又是用64bit kernel，剛好又不在開發團隊有測試過的OS版本內，所以一直很遲疑...&lt;/span&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;但是，對於新酷音的猜字準確率很難忘，所以今天還是『冒險』一試了...為何說冒險...因為官網上有段話很嚇人：『&lt;/span&gt;&lt;span class="Apple-style-span"  style="  line-height: 20px; font-family:helvetica, arial, freesans, clean, sans-serif;"&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;請注意：輸入法屬於重要系統元件，系統可能因為輸入法軟體的bug而造成不穩或循環crash。如果發生這種情況，請以其他使用者登入後，砍掉輸入法元件檔案&lt;/span&gt;&lt;span class="Apple-style-span"  style=" line-height: normal;  font-family:Georgia, serif;"&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;』...聽起來就感覺好像穩定度不高的感覺。&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="  line-height: 20px; font-family:helvetica, arial, freesans, clean, sans-serif;"&gt;&lt;span class="Apple-style-span"  style=" line-height: normal;  font-family:Georgia, serif;"&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="  line-height: 20px; font-family:helvetica, arial, freesans, clean, sans-serif;"&gt;&lt;span class="Apple-style-span"  style=" line-height: normal;  font-family:Georgia, serif;"&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;不過後來安裝，發現也沒想像中的難跟有問題...跟一般的Mac App安裝沒啥兩樣。不過...安裝玩香草輸入法之後，發現...沒有酷音模組...得另外下載跟安裝...  所幸官網文件還算詳盡。&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="  line-height: 20px; font-family:helvetica, arial, freesans, clean, sans-serif;"&gt;&lt;span class="Apple-style-span"  style=" line-height: normal;  font-family:Georgia, serif;"&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="  line-height: 20px; font-family:helvetica, arial, freesans, clean, sans-serif;"&gt;&lt;span class="Apple-style-span"  style=" line-height: normal;  font-family:Georgia, serif;"&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;試用的感覺：從活動管理員看，輸入法本身似乎所耗用的memory要比Yahoo的少蠻多，大概只有一半還不到，不過目前沒有for 64bit的版本（Yahoo的是64bit版本），所以只能用32bit啟動，但是使用上並沒有什麼問題，速度也算是很快。手動加詞的功能可以work，但是似乎只能按住shift之後，再按方向鍵的左鍵選擇詞彙長度，如果從輸入的句子中間開始往右選詞，則會失敗。至於穩定性，目前感覺不出來有啥大問題，可能要多用一陣子吧...&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="  line-height: 20px; font-family:helvetica, arial, freesans, clean, sans-serif;"&gt;&lt;span class="Apple-style-span"  style=" line-height: normal;  font-family:Georgia, serif;"&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="  line-height: 20px; font-family:helvetica, arial, freesans, clean, sans-serif;"&gt;&lt;span class="Apple-style-span"  style=" line-height: normal;  font-family:Georgia, serif;"&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;目前香草輸入法的進展感覺好像有點停擺了...目前的版本是2009.8月份的；而新酷音模組則更舊...感覺有點可惜就是...&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="  line-height: 20px; font-family:helvetica, arial, freesans, clean, sans-serif;"&gt;&lt;span class="Apple-style-span"  style=" line-height: normal;  font-family:Georgia, serif;"&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;Updated: 原來Yahoo奇摩輸入法也是有手動加詞功能，而且方法跟香草輸入法是一樣的&lt;/span&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4332348533516593211-7050529591046867372?l=freedom-heero.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://freedom-heero.blogspot.com/feeds/7050529591046867372/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4332348533516593211&amp;postID=7050529591046867372' title='2 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4332348533516593211/posts/default/7050529591046867372'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4332348533516593211/posts/default/7050529591046867372'/><link rel='alternate' type='text/html' href='http://freedom-heero.blogspot.com/2010/03/snow-leopard.html' title='香草輸入法, 新酷音模組 &amp; Snow Leopard'/><author><name>Heero</name><uri>http://www.blogger.com/profile/15484005945091463086</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4332348533516593211.post-8980191085094616470</id><published>2010-02-02T23:19:00.003+08:00</published><updated>2010-02-04T12:38:43.527+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='MAC'/><category scheme='http://www.blogger.com/atom/ns#' term='Linux'/><category scheme='http://www.blogger.com/atom/ns#' term='Ubuntu'/><title type='text'>令人沮喪的事實？！Firefox的CPU 使用率問題</title><content type='html'>因為今天在公司用MacBook Pro，原本之前電池都可以撐很久的，但是今天卻只撐了3小時左右。讓我覺得有點納悶...所以剛剛查了一下...發現...Firefox會一直有CPU usage，即使只有一兩個很簡單且沒有flash的page而已...&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;當然，到Google上去搜尋，也是得到類似的結論...元兇的話，plugins是一大因素，但是我也用safe-mode的方式去啟動Firefox，但是還是會有持續的CPU usage，只是比有啟用plugins來的少一點。&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;感覺很「冏」啊...Firefox的一大優點就是有豐富的plugins來幫助瀏覽，但是...現在卻也變成CPU使用率的大怪獸...也許會有人覺得：反正只是多耗一點點的CPU usage，現在CPU都那麼powerful，沒差啦...&lt;br /&gt;但是如果是在筆電尚且使用電池的環境，這可就有很大差別了...因為持續不斷的CPU usage會讓系統處於busy的狀態...CPU就無法進入比較省電的模式了，自然電池就會很快用完....&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;嗯...真是兩難啊....看來如果用電池模式的話，可能不適合使用Firefox吧...使用Safari跟Google Chrome倒是都沒這種問題。&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;P.S: 除了發現Firefox有這問題，M$的Messenger for Mac也會在沒動作的情況有CPU usage，但是沒有像Firefox那麼嚴重&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Update: 後來發現原本以為應該不會有動作的Google搜尋結果頁面，其實似乎也是有javascript在背後慢慢跑？！為何這麼說呢...因為在Safari、Chrome跟Firefox都發現同樣的情況...但是，結論還是沒有變，Firefox在CPU使用上還是偏高。在改用Safari跟Chrome之後，MacBook Pro的溫度明顯降低。&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4332348533516593211-8980191085094616470?l=freedom-heero.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://freedom-heero.blogspot.com/feeds/8980191085094616470/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4332348533516593211&amp;postID=8980191085094616470' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4332348533516593211/posts/default/8980191085094616470'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4332348533516593211/posts/default/8980191085094616470'/><link rel='alternate' type='text/html' href='http://freedom-heero.blogspot.com/2010/02/firefoxcpu.html' title='令人沮喪的事實？！Firefox的CPU 使用率問題'/><author><name>Heero</name><uri>http://www.blogger.com/profile/15484005945091463086</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4332348533516593211.post-6099411362865324487</id><published>2010-02-02T09:51:00.003+08:00</published><updated>2010-02-02T10:06:36.527+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='MAC'/><title type='text'>Snow Leopard的Kernel mode的真相</title><content type='html'>Snow Leopard這次的賣點之一，就是64bit，強調64bit帶來的效率與好處。而Snow Leopard這次的確把大部分的內建軟體都改版為64bit了。&lt;br /&gt;&lt;br /&gt;但是，有趣的是kernel的部份居然還是使用32bit，而更有趣的是在32bit的kernel之下，透過「活動監視器」去看，卻是會看到有軟體是以64bit來運作的。相當神奇吧？至少我是這麼認為...當然也許是我認知錯了也說不定啦&lt;br /&gt;&lt;br /&gt;如何讓Snow Leopard真正的以64bit運作呢？也很簡單，只要開機過程時，按著6跟4就好。但是這種方式只有在該次開機有效，重開機之後，就會回到32bit了。想要永久的切換的話，可以安裝一個&lt;a href="http://seiryu.home.comcast.net/%7Eseiryu/sixtyfourswitcher.html"&gt;SixtyFourSwitcher&lt;/a&gt;，透過它就可以做永久性的切換了，不管是從32-&gt;64還是64-&gt;32。&lt;br /&gt;&lt;br /&gt;切換到64bit有何好處呢？理論上是會效能更好一點啦...但是其實在Snow Leopard上面的話，感覺到不是很明顯（不過我在Ubuntu上倒是有比較明顯的感覺）。也許是目前為了兼具32與64bit共存的情況，所以還沒辦法完全發揮64bit的能力吧。不過可以在不用重新安裝的情況，就切換kernel mode，這也算是一項特點。至少在Windows跟Linux上，都必須重新安裝64bit的版本才行。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4332348533516593211-6099411362865324487?l=freedom-heero.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://freedom-heero.blogspot.com/feeds/6099411362865324487/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4332348533516593211&amp;postID=6099411362865324487' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4332348533516593211/posts/default/6099411362865324487'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4332348533516593211/posts/default/6099411362865324487'/><link rel='alternate' type='text/html' href='http://freedom-heero.blogspot.com/2010/02/snow-leopardkernel-mode.html' title='Snow Leopard的Kernel mode的真相'/><author><name>Heero</name><uri>http://www.blogger.com/profile/15484005945091463086</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4332348533516593211.post-2294104144550164284</id><published>2010-02-02T09:33:00.003+08:00</published><updated>2010-02-02T09:48:48.536+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='MAC'/><title type='text'>MacBook Pro + iPhone 3GS的行動上網</title><content type='html'>前天因為使用的SEEDNET數位光纖突然大斷線，導致沒辦法上網。後來想到，iPhone有「internet 分享」的功能，剛好又是3G費率吃到飽的方案，所以試了一下...&lt;br /&gt;&lt;br /&gt;設定很簡單，只要到iPhone的「設定」-&gt;「一般」-&gt;「網路」-&gt;「internet共享」打開就好。然後它會要你選擇只用USB共享還是USB跟Bluetooth都啟用。如果有USB連接線的話，建議只開USB就好，可以一邊充電一邊上網。開啟之後，將iPhone連接到MacBook Pro，就會在Mac OSX上看到找到新的網路裝置，叫做「iPhone USB」，選擇它作為連線的網路裝置即可。&lt;br /&gt;&lt;br /&gt;不過，實際試的時候，卻發現不能work...怎麼設定跟連結就是不能透過USB來連線...但是如果有啟用Bluetooth，則是可以透過Bluetooth來連線，但是速度就會變比較慢。後來詢問Google大神之後，發現...原來如果啟用Snow Leopard的64bits Kernel模式，就沒辦法透過USB的方式連結。所以只好先把kernel模式改回32 bit再重新啟動。果然，就可以順利連線了。&lt;br /&gt;&lt;br /&gt;使用心得的話，3G上網其實還是蠻不錯的，雖然速度不及於數位光纖，但是也在可以接受的範圍了。不過訊號穩定性是個問題，因為有時候會有突然變慢的情況。不確定在使用「internet共享」的時候，能不能收發電話，有試過但是發現，有時候會造成網路斷線，但是有時候又不會。&lt;br /&gt;&lt;br /&gt;不能在64bit kernel mode下使用USB的internet分享，是唯一美中不足的地方...畢竟Snow Leopard的賣點之一就是64bit~&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4332348533516593211-2294104144550164284?l=freedom-heero.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://freedom-heero.blogspot.com/feeds/2294104144550164284/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4332348533516593211&amp;postID=2294104144550164284' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4332348533516593211/posts/default/2294104144550164284'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4332348533516593211/posts/default/2294104144550164284'/><link rel='alternate' type='text/html' href='http://freedom-heero.blogspot.com/2010/02/macbook-pro-iphone-3gs.html' title='MacBook Pro + iPhone 3GS的行動上網'/><author><name>Heero</name><uri>http://www.blogger.com/profile/15484005945091463086</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4332348533516593211.post-7972007197341787797</id><published>2010-01-05T19:56:00.003+08:00</published><updated>2010-01-05T21:17:17.097+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='MAC'/><title type='text'>I love Mac~</title><content type='html'>09/12/31我拿到了人生中第一台的MacBook Pro，雖然只是13吋中的最低階款，但是還是很令人興奮。&lt;div&gt;&lt;br /&gt;&lt;div&gt;之前我就偶爾會去台中誠品B1的Apple專賣店看看，但是畢竟沒有真的很深入的用過，所以剛拿到的時候，其實有點心慌慌，不知道怎麼用。但是試了一下，慢慢就開始有漸入佳境的感覺了。讓我感到最棒的是multi-touch的觸控板，一開始我也只覺得這觸控板大概只是噱頭，要有外接滑鼠的打算。不過看了設定裡的示範，跟實際操作之後，我反而覺得Windows 7的觸控螢幕的功能是多餘的。真正的好的觸控操作不見得要在觸控螢幕上啊～這讓我對Apple更加佩服了。&lt;/div&gt;&lt;div&gt;在Mac OSX上面安裝程式十分簡單，用safari下載的dmg檔案會自動地掛載為安裝媒體，然後只要把程式的圖示拖曳到Applicaions圖示或是資料夾中就ok；移除的話，也只是把程式拖曳到垃圾桶就好，都十分直覺。Dock的操作也十分簡便，不過點選Dock上的圖示只能把以開啟的程式從最小化還原，而不能最小化，這點有點可惜。而沒有『剪下貼上』功能也是讓人覺得美中不足。Global menu讓一開始接觸的我很混淆，常常會找不到menu。&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;因為買的是新款的MAcBook Pro，是全鋁合金的，用的是新款強效電池，官方號稱可以撐7小時，實測結果的確是很久。系統在idle的時候的省電機制做的很不錯，今天在辦公室從早開機到下班，將近7~8小時，雖然中間也有不少時間是在idle，但是對於一般筆電來說，也是沒辦法撐這麼久的。而且使用電池的時候，其實幾乎感覺不到有效能下降的感覺。OS是Snow Leopard，有64bit跟32bit的kerenl模式，預設是以32bit kernel啟動，據說是為了相容性問題。但是在開機的時候可以按著6跟4就可以以64bit模式啟動。64bit模式似乎有快那麼一點點，但是其實我感覺沒有很明顯。有工具程式可以幫忙切換，而不用每次開機都要按6跟4，有興趣的人可以google 『SityFourSwitcher』。&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;整個系統運作的感覺只有一個字可以形容，那就是「順」；它不是讓你覺得好像飛快一樣，但是也絕對不會有卡卡的感覺，就是很平順快速的完成各種工作。它也沒有用啥獨立顯卡，跟7200RPM的HDD或是SDD，但是就是不會覺得卡住的感覺，換做是Windows Vista，可能就已經卡到罵髒話了....XD。只能說，整個硬體與軟體的搭配到了一個絕妙的地步，不是都是頂級的配備，但是最後呈現的就是高水準的表現～NB的外觀也蠻有質感的，果然不愧是NB中的跑車等級。我已經決定了下一台NB也是MacBook Pro了～&lt;/div&gt;&lt;div&gt;P.S：目前用的其實是公司買來要開發iphone應用的&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4332348533516593211-7972007197341787797?l=freedom-heero.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://freedom-heero.blogspot.com/feeds/7972007197341787797/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4332348533516593211&amp;postID=7972007197341787797' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4332348533516593211/posts/default/7972007197341787797'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4332348533516593211/posts/default/7972007197341787797'/><link rel='alternate' type='text/html' href='http://freedom-heero.blogspot.com/2010/01/i-love-mac.html' title='I love Mac~'/><author><name>Heero</name><uri>http://www.blogger.com/profile/15484005945091463086</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4332348533516593211.post-2034465780174695329</id><published>2009-04-29T14:59:00.003+08:00</published><updated>2009-04-29T16:02:32.871+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Ubuntu'/><title type='text'>Ubuntu 9.04 問題與處理(1)</title><content type='html'>2009/4/23, Ubuntu 9.04如期出現...原本想觀望幾天...但是還是忍不住好奇心的裝了...&lt;br /&gt;開裝好的時候，真的對它的改進跟速度很驚豔...但是過了幾天，發現還是有些小問題...在此列出部份目前已經遇到的:&lt;br /&gt;&lt;ol&gt;&lt;li&gt;不正常重開機&lt;br /&gt;這是目前我碰到過最嚴重的問題，主要發生的原因在於安裝上我自己編譯的kernel之後，一旦reboot，就會發生不能載入nvidia kernel module的問題，必須關機之後在開才行。後來在&lt;a href="http://www.ubuntu-tw.org/index.php"&gt;Ubuntu 正體中文站&lt;/a&gt;上看到這篇&lt;a href="http://www.ubuntu-tw.org/modules/newbb/viewtopic.php?topic_id=14743&amp;amp;forum=2&amp;amp;post_id=76201#forumpost76201"&gt;Ubuntu 9.04 重開機&lt;/a&gt;問題，然後經過google查證之後發現果然是因為kexec-tools的問題。&lt;br /&gt;解決方法：將/etc/default/kexec中的LOAD_KEXEC=true改成false即可&lt;/li&gt;&lt;li&gt;用GDebi安裝DEB檔時出現錯誤&lt;br /&gt;一開始其實並沒有這問題，怎麼發生的其實真的也不清楚，目前只知道用GDebi來安裝DEB檔都會出現錯誤訊息而失敗...目前只能透過dpkg來安裝&lt;/li&gt;&lt;li&gt;Cairo-dock顯示不正常&lt;br /&gt;目前Cairo-dock並沒有真正for 9.04的版本，所以必須使用8.10的repository來安裝，但是安裝完啟動之後，原本的3Dplane的顯示會消失，相關選項也會不見...即使重新執行也一樣&lt;br /&gt;解決方法：重新載入cairo-dock的theme，然後存檔重啟即可&lt;br /&gt;&lt;/li&gt;&lt;/ol&gt;目前我自己真正遇到的問題大概是這些，比起之前在8.10所遇到的，是少了很多...當然有部份原因是透過使用跟8.10相同的設定就可以解決，所以也就不算是問題了。就整體來看，9.04算是相當不錯的版本，而且又有個大賣點：ext4。ext4的效率真的還不錯，而9.04的開機速度也跟宣稱的差不多。但是比較讓人擔心的是，ext4目前還是有些問題尚未解決...例如data loss跟soft lock，雖然不是常態性的問題，好像也不是那麼容易發生，但是如果發生了，那就真的很「冏」了&lt;br /&gt;&lt;br /&gt;P.S：9.04 + 2.6.29 kernel速度似乎更上一層樓~而且即使沒有restricted-modules，對於intel的無線網卡還是可以正確的驅動(之前在8.04的時候好像還不行)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4332348533516593211-2034465780174695329?l=freedom-heero.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://freedom-heero.blogspot.com/feeds/2034465780174695329/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4332348533516593211&amp;postID=2034465780174695329' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4332348533516593211/posts/default/2034465780174695329'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4332348533516593211/posts/default/2034465780174695329'/><link rel='alternate' type='text/html' href='http://freedom-heero.blogspot.com/2009/04/ubuntu-904-1.html' title='Ubuntu 9.04 問題與處理(1)'/><author><name>Heero</name><uri>http://www.blogger.com/profile/15484005945091463086</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4332348533516593211.post-2242731489359744238</id><published>2009-04-14T17:57:00.002+08:00</published><updated>2009-04-14T18:16:15.293+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Java'/><title type='text'>JAX-WS &amp; Apache CXF 二三事(3) - 額外設定與功能</title><content type='html'>Apache CXF也支援fast infoset，而且只需要少少的設定即可，在service side的spring設定檔中加上：&lt;br /&gt;&amp;lt;cxf:bus&amp;gt;&lt;br /&gt;        &amp;lt;cxf:features&amp;gt;&lt;br /&gt;            &amp;lt;bean class="org.apache.cxf.feature.FastInfosetFeature"&amp;gt;&amp;lt;/bean&amp;gt;&lt;br /&gt;        &amp;lt;/cxf:features&amp;gt;&lt;br /&gt;    &amp;lt;/cxf:bus&amp;gt;&lt;br /&gt;&lt;br /&gt;其他詳細有關CXF bus的設定可以參考：&lt;a linkindex="3" href="http://cwiki.apache.org/CXF20DOC/bus-configuration.html" title="Bus Configuration"&gt;Bus Configuration&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;若是有需要傳輸大量資料，可以考慮使用MTOM&lt;br /&gt;可以參考：&lt;a href="http://cwiki.apache.org/CXF20DOC/mtom.html"&gt;Using MTOM &lt;/a&gt;、&lt;a href="http://www.theasolutions.com/roller/ws/entry/upload_big_attachment_document_using"&gt;Upload big attachment (document) using CXF ( MTOM ) Spring and Tomcat&lt;/a&gt;&lt;br /&gt;基本上，就是在service-side與client-side上都設定&lt;span style="color: rgb(255, 0, 0);"&gt;mtom-enabled=true&lt;/span&gt;的property。而service-side上，可以考慮用&lt;span style="color: rgb(255, 0, 0);"&gt;DataHandler&lt;/span&gt;作為傳輸的媒介&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4332348533516593211-2242731489359744238?l=freedom-heero.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://freedom-heero.blogspot.com/feeds/2242731489359744238/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4332348533516593211&amp;postID=2242731489359744238' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4332348533516593211/posts/default/2242731489359744238'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4332348533516593211/posts/default/2242731489359744238'/><link rel='alternate' type='text/html' href='http://freedom-heero.blogspot.com/2009/04/jax-ws-apache-cxf-3.html' title='JAX-WS &amp;amp; Apache CXF 二三事(3) - 額外設定與功能'/><author><name>Heero</name><uri>http://www.blogger.com/profile/15484005945091463086</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4332348533516593211.post-2105008219371681653</id><published>2009-04-14T17:01:00.005+08:00</published><updated>2009-04-14T17:55:32.426+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Java'/><title type='text'>JAX-WS &amp; Apache CXF 二三事(2) - Authentication</title><content type='html'>Apache CXF也有支援WS-Security來為Web service做傳輸加解密與身份認證的工作。設定與程式部份並不難。可以參考&lt;a linkindex="3" href="http://cwiki.apache.org/CXF20DOC/ws-security.html" title="WS-Security"&gt;WS-Security&lt;/a&gt; 與 &lt;a href="http://www.benmccann.com/dev-blog/apache-cxf-tutorial-ws-security-with-spring/"&gt;Apache CXF Tutorial - WS-Security with Spring&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;首先，必須先確定classpath中有wss4j的jar。然後在原本的spring設定檔中的&lt;span style="color: rgb(255, 102, 102);"&gt;&amp;lt;jaxws:endpoint&amp;gt;&lt;/span&gt;加上以下內容：&lt;br /&gt;&lt;blockquote&gt;&amp;lt;jaxws:inInterceptors&amp;gt;&lt;br /&gt;&amp;lt;bean class="org.apache.cxf.binding.soap.saaj.SAAJInInterceptor" /&amp;gt;&lt;br /&gt;&amp;lt;bean class="org.apache.cxf.ws.security.wss4j.WSS4JInInterceptor"&amp;gt;&lt;br /&gt;  &amp;lt;constructor-arg&amp;gt;&lt;br /&gt;    &amp;lt;map&amp;gt;&lt;br /&gt;      &amp;lt;entry key="action" value="UsernameToken" /&amp;gt;&lt;br /&gt;&lt;br /&gt;      &amp;lt;entry key="passwordType" value="PasswordText" /&amp;gt;&lt;br /&gt;      &amp;lt;entry key="passwordCallbackClass" value="com.company.auth.service.ServerPasswordCallback" /&amp;gt;&lt;br /&gt;    &amp;lt;/map&amp;gt;&lt;br /&gt;  &amp;lt;/constructor-arg&amp;gt;&lt;br /&gt;&amp;lt;/bean&amp;gt;&lt;br /&gt;&amp;lt;/jaxws:inInterceptors&amp;gt;&lt;/blockquote&gt;&lt;br /&gt;其中必須注意的是&lt;span style="color: rgb(255, 0, 0);"&gt;WSS4JInInterceptor&lt;/span&gt;的設定。action是設定認證的方式，使用UsernameToken是表示使用username與password的認證方式，這是最簡單也是常用的方式；passwordType是設定密碼型態，使用PasswordText是指明碼password；passwordCallbackClass是指實作密碼驗證的classname，此處亦可以用passwordCallbackRef來代替，而設定值也將變為已經設定好的bean。以上就是在service端必須要的設定。而除此之外，也必須撰寫對應的PasswordCallback class。例如：&lt;br /&gt;&lt;pre class="code-java"&gt;&lt;span class="code-keyword"&gt;&lt;/span&gt;&lt;blockquote&gt;&lt;span class="code-keyword"&gt;import&lt;/span&gt; java.io.IOException;&lt;br /&gt;&lt;span class="code-keyword"&gt;import&lt;/span&gt; javax.security.auth.callback.Callback;&lt;br /&gt;&lt;span class="code-keyword"&gt;import&lt;/span&gt; javax.security.auth.callback.CallbackHandler;&lt;br /&gt;&lt;span class="code-keyword"&gt;import&lt;/span&gt; javax.security.auth.callback.UnsupportedCallbackException;&lt;br /&gt;&lt;span class="code-keyword"&gt;import&lt;/span&gt; org.apache.ws.security.WSPasswordCallback;&lt;br /&gt;&lt;br /&gt;&lt;span class="code-keyword"&gt;public&lt;/span&gt; class ServerPasswordCallback &lt;span class="code-keyword"&gt;implements&lt;/span&gt; CallbackHandler {&lt;br /&gt;&lt;br /&gt;&lt;span class="code-keyword"&gt;public&lt;/span&gt; void handle(Callback[] callbacks) &lt;span class="code-keyword"&gt;throws&lt;/span&gt; IOException, UnsupportedCallbackException {&lt;br /&gt;&lt;br /&gt;  WSPasswordCallback pc = (WSPasswordCallback) callbacks[0];&lt;br /&gt;&lt;br /&gt;  &lt;span class="code-keyword"&gt;if&lt;/span&gt; (pc.getIdentifer().equals(&lt;span class="code-quote"&gt;"joe"&lt;/span&gt;) {&lt;br /&gt;      &lt;span class="code-comment"&gt;// set the password on the callback. This will be compared to the&lt;br /&gt;&lt;/span&gt;            &lt;span class="code-comment"&gt;// password which was sent from the client.&lt;br /&gt;&lt;/span&gt;            pc.setPassword(&lt;span class="code-quote"&gt;"password"&lt;/span&gt;);&lt;br /&gt;  }&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;}&lt;/blockquote&gt;&lt;/pre&gt;而client的部份也是使用類似的設定但是是for &lt;span style="color: rgb(255, 0, 0);"&gt;WSS4JOutInterceptor&lt;/span&gt;；而password callback class是必須for client的，因為是要設定傳送給service的username跟password。&lt;br /&gt;在client的部份，如果不是透過spring的方式去取得service，則必須自己手動加入有關WSS4JOutInterceptor的設定。&lt;br /&gt;&lt;br /&gt;心得：&lt;span&gt;&lt;br /&gt;&lt;/span&gt;&lt;ol&gt;&lt;li&gt;透過&lt;span&gt;WSS4JOutInterceptor跟&lt;/span&gt;&lt;span&gt;WSS4JInInterceptor，可以讓CXF支援身份認證的功能。但是這類的身份認證是在每次連線時都會進行，所以如果是需要查詢DB的話，可能會導致執行效率低落&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span&gt;service端使用WSS4JInInterceptor; client使用WSS4JOutInterceptor.&lt;br /&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span&gt;若是透過&lt;/span&gt;JaxWsServerFactoryBean來取得service，則手動設定WSS4JOutInterceptor時，雖然會有設定username的行為，但是client password callback class還是必須做設定identifier的動作，否則會有連線問題&lt;/li&gt;&lt;li&gt;當passwordType是PasswordText時，service side 必須自己取出密碼並且驗證，若是驗證失敗則必須丟出適當的exception；而若是passwordType為PasswordDigest，則密碼是處理過的，無法透過getPassword取出密碼，此時service side也必須將service端的密碼透過setPassword設定給callback class，然後交由framework去驗證；若是驗證失敗，framework會自動丟出exception&lt;br /&gt;&lt;/li&gt;&lt;/ol&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4332348533516593211-2105008219371681653?l=freedom-heero.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://freedom-heero.blogspot.com/feeds/2105008219371681653/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4332348533516593211&amp;postID=2105008219371681653' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4332348533516593211/posts/default/2105008219371681653'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4332348533516593211/posts/default/2105008219371681653'/><link rel='alternate' type='text/html' href='http://freedom-heero.blogspot.com/2009/04/jax-ws-apache-cxf-1-security.html' title='JAX-WS &amp;amp; Apache CXF 二三事(2) - Authentication'/><author><name>Heero</name><uri>http://www.blogger.com/profile/15484005945091463086</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4332348533516593211.post-6225171580833572477</id><published>2009-04-14T15:18:00.004+08:00</published><updated>2009-04-14T17:00:38.385+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Java'/><title type='text'>JAX-WS &amp; Apache CXF 二三事(1) - Basic</title><content type='html'>最近因為工作上的需要，所以研究了目前Java對於SOAP Web Services的東西，最後選擇了Apache CXF作為JAX-WS的implementation.&lt;br /&gt;&lt;br /&gt;基本上，因為JAX-WS運用了Annotation，所以在開發上算是簡化了許多，比較不需要使用大量的XML來定義。而且JAX-WS &amp;amp; Apache CXF預設會自動使用JAXB來做訊息格式的轉換，所以基本上只要不是複雜的JavaBean，都可以自動轉換，甚至也不會自己去定義JAXB的東西，算是相當方便。而Apache CXF本身也是支援Spring framework，所以在設定上也是遵照Spring 2.0的設定檔標準，倒是不用另外學習。&lt;br /&gt;&lt;br /&gt;Apache CXF其實本身支援相當多的格式與標準，但是目前我只是使用JAX-WS的部份。基本入門可以參考：&lt;br /&gt;&lt;a href="http://www.benmccann.com/dev-blog/web-services-tutorial-with-apache-cxf/"&gt;Web Services Tutorial with Apache CXF&lt;/a&gt; 與&lt;a href="http://cwiki.apache.org/CXF20DOC/a-simple-jax-ws-service.html"&gt; A simple JAX-WS service&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;基本上就是在service class加上@WebService等適當的annotation，然後在spring的設定檔中加上以下內容：&lt;br /&gt;&lt;code&gt;&lt;/code&gt;&lt;blockquote&gt;&lt;code&gt;&amp;lt;beans xmlns="http://www.springframework.org/schema/beans"&lt;/code&gt;&lt;br /&gt;&lt;code&gt;     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"&lt;/code&gt;&lt;br /&gt;&lt;code&gt;     xmlns:jaxws="http://cxf.apache.org/jaxws"&lt;/code&gt;&lt;br /&gt;&lt;code&gt;     xsi:schemaLocation="http://www.springframework.org/schema/beans&lt;/code&gt;&lt;br /&gt;&lt;code&gt;     http://www.springframework.org/schema/beans/spring-beans.xsd&lt;/code&gt;&lt;br /&gt;&lt;code&gt;     http://cxf.apache.org/jaxws&lt;/code&gt;&lt;br /&gt;&lt;code&gt;     http://cxf.apache.org/schemas/jaxws.xsd"&amp;gt;&lt;/code&gt;&lt;br /&gt;&lt;code&gt; &amp;lt;import resource="classpath:META-INF/cxf/cxf.xml" /&amp;gt;&lt;/code&gt;&lt;br /&gt;&lt;code&gt; &amp;lt;import resource="classpath:META-INF/cxf/cxf-extension-soap.xml"/&amp;gt;&lt;/code&gt;&lt;br /&gt;&lt;code&gt; &amp;lt;import resource="classpath:META-INF/cxf/cxf-servlet.xml" /&amp;gt;&lt;/code&gt;&lt;br /&gt;&lt;code&gt; &amp;lt;jaxws:endpoint id="auth"&lt;/code&gt;&lt;br /&gt;&lt;code&gt;                 implementor="com.company.auth.service.AuthServiceImpl"&lt;/code&gt;&lt;br /&gt;&lt;code&gt;                 address="/swAuth"/&amp;gt;&lt;/code&gt;&lt;br /&gt;&lt;code&gt;&amp;lt;/beans&amp;gt;&lt;/code&gt;&lt;/blockquote&gt;&lt;code&gt;&lt;/code&gt;&lt;br /&gt;其中，前三行的import是必要的，用來載入CXF自己本身的一些預設設定。主要的Web service定義在&lt;code&gt;&amp;lt;jaxws:endpoint&lt;/code&gt;&lt;code&gt;/&amp;gt;&lt;/code&gt;裏面。其中的implementor是用來指定service implementation class，而address是指service對外公開的名稱，也就是被取用的名稱。spring會根據這個設定，將implementor所描述的class建立出instance，並設定成為JAX-WS的service。如果不想透過指定class name的方式而是想reuse已經存在的bean，則可以省略implementor，而改用&amp;lt;jaxws:implementor&amp;gt;的方式來reference到已定義好的bean&lt;br /&gt;&lt;br /&gt;然後在web.xml中加上必要的listener跟servlet設定，如下：&lt;br /&gt;&lt;blockquote&gt;&amp;lt;web-app&amp;gt;&lt;br /&gt; &amp;lt;display-name&amp;gt;Auth Manager&amp;lt;/display-name&amp;gt;&lt;br /&gt; &amp;lt;context-param&amp;gt;&lt;br /&gt;   &amp;lt;param-name&amp;gt;contextConfigLocation&amp;lt;/param-name&amp;gt;&lt;br /&gt;&lt;br /&gt;   &amp;lt;param-value&amp;gt;classpath:com/company/auth/service/cxf.xml&amp;lt;/param-value&amp;gt;&lt;br /&gt; &amp;lt;/context-param&amp;gt;&lt;br /&gt; &amp;lt;listener&amp;gt;&lt;br /&gt;   &amp;lt;listener-class&amp;gt;&lt;br /&gt;     org.springframework.web.context.ContextLoaderListener&lt;br /&gt;   &amp;lt;/listener-class&amp;gt;&lt;br /&gt;&lt;br /&gt; &amp;lt;/listener&amp;gt;&lt;br /&gt; &amp;lt;servlet&amp;gt;&lt;br /&gt;   &amp;lt;servlet-name&amp;gt;CXFServlet&amp;lt;/servlet-name&amp;gt;&lt;br /&gt;   &amp;lt;servlet-class&amp;gt;&lt;br /&gt;       org.apache.cxf.transport.servlet.CXFServlet&lt;br /&gt;   &amp;lt;/servlet-class&amp;gt;&lt;br /&gt;&lt;br /&gt; &amp;lt;/servlet&amp;gt;&lt;br /&gt; &amp;lt;servlet-mapping&amp;gt;&lt;br /&gt;   &amp;lt;servlet-name&amp;gt;CXFServlet&amp;lt;/servlet-name&amp;gt;&lt;br /&gt;   &amp;lt;url-pattern&amp;gt;/services/*&amp;lt;/url-pattern&amp;gt;&lt;br /&gt; &amp;lt;/servlet-mapping&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;/web-app&amp;gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;其中listener的設定是為了spring，而serlvet的部份才是為了CXF。&lt;br /&gt;而client也可以透過spring來取得web service或是透過JaxWsProxyFactoryBean。&lt;br /&gt;&lt;br /&gt;目前有幾點需要注意：&lt;br /&gt;&lt;ol&gt;&lt;li&gt;之前使用2.1.4版會有無法連線的問題，改用2.1.3版之後就正常；2.2.0版雖然release，但是還尚未測試&lt;/li&gt;&lt;li&gt;即使取得service object，但是並不表示連線就已經建立完成。真正的連線會等到method call進行時，才做連線。&lt;br /&gt;&lt;/li&gt;&lt;li&gt;預設的client的Connection timeout跟receive timeout分別是30s跟60s，所以如果需要等待較長的呼叫時，可能會出現連線中斷。可以透過在client的classpath中加入cxf.xml來覆蓋預設值。詳細的設定可以參考：&lt;a linkindex="4" href="http://cwiki.apache.org/CXF20DOC/client-http-transport-including-ssl-support.html" title="Client HTTP Transport (including SSL support)"&gt;Client HTTP Transport (including SSL support)&lt;/a&gt;&lt;/li&gt;&lt;/ol&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4332348533516593211-6225171580833572477?l=freedom-heero.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://freedom-heero.blogspot.com/feeds/6225171580833572477/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4332348533516593211&amp;postID=6225171580833572477' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4332348533516593211/posts/default/6225171580833572477'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4332348533516593211/posts/default/6225171580833572477'/><link rel='alternate' type='text/html' href='http://freedom-heero.blogspot.com/2009/04/jax-ws-apache-cxf-1-basic.html' title='JAX-WS &amp;amp; Apache CXF 二三事(1) - Basic'/><author><name>Heero</name><uri>http://www.blogger.com/profile/15484005945091463086</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4332348533516593211.post-5399716738878417443</id><published>2009-03-14T15:46:00.004+08:00</published><updated>2009-03-23T14:49:51.012+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Linux'/><category scheme='http://www.blogger.com/atom/ns#' term='Ubuntu'/><title type='text'>改進nvidia driver的2D速度</title><content type='html'>從網路上看來的...&lt;br /&gt;&lt;ol&gt;&lt;li&gt;修改xorg.conf，加入&lt;br /&gt;&lt;blockquote&gt;Option    "PixmapCacheSize" "300000"&lt;br /&gt;Option    "OnDemandVBlankInterrupts" "True"&lt;/blockquote&gt;&lt;/li&gt;&lt;li&gt;在Console視窗執行(也可以在「作業階段」中加入項目，讓他在登入時執行)：&lt;br /&gt;&lt;blockquote&gt;nvidia-settings -a InitialPixmapPlacement=2 -a GlyphCache=1&lt;/blockquote&gt;&lt;/li&gt;&lt;/ol&gt;實際成效嘛...還沒有很明顯的感受...仍在測試中&lt;br /&gt;&lt;br /&gt;P.S: 後來從Google上找出來的另一項可能改善Xserver的CPU usage的設定：設定一個環境變數__GL_YIELD="NOTHING"&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4332348533516593211-5399716738878417443?l=freedom-heero.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://freedom-heero.blogspot.com/feeds/5399716738878417443/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4332348533516593211&amp;postID=5399716738878417443' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4332348533516593211/posts/default/5399716738878417443'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4332348533516593211/posts/default/5399716738878417443'/><link rel='alternate' type='text/html' href='http://freedom-heero.blogspot.com/2009/03/nvidia-driver2d.html' title='改進nvidia driver的2D速度'/><author><name>Heero</name><uri>http://www.blogger.com/profile/15484005945091463086</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4332348533516593211.post-10064863088861031</id><published>2009-02-19T21:56:00.004+08:00</published><updated>2009-02-19T23:54:21.887+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='心情雜記'/><title type='text'>扣人心弦的『神曲』</title><content type='html'>這次GUNDAM 00第2季的片尾曲都相當好聽。尤其這首由依藤由奈所演唱的『Trust you'更是讓人感動...配上新的片尾畫面更是淒美...&lt;br /&gt;&lt;object height="405" width="660"&gt;&lt;param name="movie" value="http://www.youtube.com/v/6bLKTyFzZYI&amp;amp;hl=zh_TW&amp;amp;fs=1&amp;amp;border=1"&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;param name="allowscriptaccess" value="always"&gt;&lt;embed src="http://www.youtube.com/v/6bLKTyFzZYI&amp;amp;hl=zh_TW&amp;amp;fs=1&amp;amp;border=1" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" height="405" width="660"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;br /&gt;&lt;br /&gt;以下則是完整的PV：&lt;br /&gt;&lt;object height="505" width="640"&gt;&lt;param name="movie" value="http://www.youtube.com/v/9sguPblVT5A&amp;amp;hl=zh_TW&amp;amp;fs=1"&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;param name="allowscriptaccess" value="always"&gt;&lt;embed src="http://www.youtube.com/v/9sguPblVT5A&amp;amp;hl=zh_TW&amp;amp;fs=1" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" height="505" width="640"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;br /&gt;&lt;br /&gt;聽完，心裡只有兩字：感動&lt;br /&gt;&lt;br /&gt;P.S:以下網路上看來的中文歌詞，寫的相當不錯：&lt;br /&gt;仿如花朵在風中飄搖 &lt;br /&gt;仿如細雨滋潤大地 &lt;br /&gt;世間萬物都彼此依偎 共同生存 &lt;br /&gt;為何人卻要彼此傷害 &lt;br /&gt;為何總有別離 &lt;br /&gt;即使你已遠行 &lt;br /&gt;在我心深處 &lt;br /&gt;總為那溫柔笑顏所填滿&lt;br /&gt;緊緊擁抱著你的碎片 &lt;br /&gt;雖覺疼痛 卻依然相連 &lt;br /&gt;我深信 &lt;br /&gt;還會再見&lt;br /&gt;I'm waiting for your love &lt;br /&gt;I love you I trust you &lt;br /&gt;請與我分享你的孤獨 &lt;br /&gt;I love you I trust you &lt;br /&gt;無論光明或是黑暗 &lt;br /&gt;我們都在一起 彼此信任 &lt;br /&gt;No 不要分開&lt;br /&gt;&lt;br /&gt;誰將看見世界的盡頭&lt;br /&gt;誰將繼承旅途的終點&lt;br /&gt;儘管現在仍是看不見答案的漫漫長夜&lt;br /&gt;我也想往堅信的道路前行&lt;br /&gt;因為在那一頭有光明等待&lt;br /&gt;你教會我的那首歌&lt;br /&gt;如今仍在我心中&lt;br /&gt;與你溫柔的聲音一起響徹&lt;br /&gt;流下滿載著心情的水滴&lt;br /&gt;溫暖了臉頰&lt;br /&gt;我會變得堅強&lt;br /&gt;我深信&lt;br /&gt;緊緊相連就是&lt;br /&gt;I'm always by your side&lt;br /&gt;I love you I trust you&lt;br /&gt;為你流下的眼淚&lt;br /&gt;I love you I trust you&lt;br /&gt;告訴了我什麼是愛&lt;br /&gt;就算你在路上迷失了方向&lt;br /&gt;我也會在你身邊&lt;br /&gt;&lt;br /&gt;Waiting for your love&lt;br /&gt;Always by your side&lt;br /&gt;You are the one that I love&lt;br /&gt;You are the one that I trust&lt;br /&gt;You are the only one&lt;br /&gt;&lt;br /&gt;I love you I trust you &lt;br /&gt;請與我分享你的孤獨&lt;br /&gt;I love you I trust you &lt;br /&gt;無論光明或是黑暗&lt;br /&gt;I love you I trust you &lt;br /&gt;無論悲傷與歡樂&lt;br /&gt;I love you I trust you &lt;br /&gt;我想要守護你的一切 &lt;br /&gt;就算你在路上迷失了方向&lt;br /&gt;我也會在你身邊&lt;br /&gt;我們都在一起 彼此信任&lt;br /&gt;No 不要分開&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4332348533516593211-10064863088861031?l=freedom-heero.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://freedom-heero.blogspot.com/feeds/10064863088861031/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4332348533516593211&amp;postID=10064863088861031' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4332348533516593211/posts/default/10064863088861031'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4332348533516593211/posts/default/10064863088861031'/><link rel='alternate' type='text/html' href='http://freedom-heero.blogspot.com/2009/02/blog-post.html' title='扣人心弦的『神曲』'/><author><name>Heero</name><uri>http://www.blogger.com/profile/15484005945091463086</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4332348533516593211.post-645870741695281972</id><published>2009-01-21T17:48:00.002+08:00</published><updated>2009-01-21T20:16:40.502+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Linux'/><category scheme='http://www.blogger.com/atom/ns#' term='Ubuntu'/><title type='text'>Too many open file?!</title><content type='html'>之前一直都沒有注意Linux有開啟檔案數的問題，一直到不久前，在使用eclipse時常常會出現『Too many open files'的錯誤，導致eclipse無法正常運作。原本以為是Linux上的JDK的問題，在google之後才知道原來是Linux本身的設定問題。&lt;br /&gt;&lt;br /&gt;想知道自己某個程式的開啟檔案數，可以用以下的指令察看：&lt;blockquote style="color: rgb(255, 102, 0);"&gt;lsof -p [pid of your process] | wc -l&lt;/blockquote&gt;如果想調大檔案開啟數，可以調整fs.file-max這個核心參數。如果memory夠大，可以將此值加大到65536，或是更大：調整的方式：&lt;br /&gt;&lt;blockquote style="color: rgb(255, 153, 102);"&gt;在/etc/rc.local中加入echo 65536 &gt; /proc/sys/fs/file-max&lt;/blockquote&gt;或是&lt;blockquote style="color: rgb(255, 153, 102);"&gt;在sysctl.conf中加入fs.file-max=65536&lt;/blockquote&gt;不過單修改核心參數只能加大系統核心的上限，Linux本身還有針對每個user的每個程式本身的限制，因此還需要編輯/etc/security/limits.conf，並加入&lt;blockquote style="font-family: arial; color: rgb(255, 153, 102);"&gt;*    soft    nofile    4096&lt;br /&gt;*    hard    nofile    4096&lt;/blockquote&gt;修改完畢之後，重新開機即可！&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4332348533516593211-645870741695281972?l=freedom-heero.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://freedom-heero.blogspot.com/feeds/645870741695281972/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4332348533516593211&amp;postID=645870741695281972' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4332348533516593211/posts/default/645870741695281972'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4332348533516593211/posts/default/645870741695281972'/><link rel='alternate' type='text/html' href='http://freedom-heero.blogspot.com/2009/01/too-many-open-file.html' title='Too many open file?!'/><author><name>Heero</name><uri>http://www.blogger.com/profile/15484005945091463086</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4332348533516593211.post-530536785047278259</id><published>2009-01-21T01:46:00.003+08:00</published><updated>2009-01-21T01:59:00.271+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Ubuntu'/><title type='text'>自己編譯gcin的deb</title><content type='html'>因為家中的Ubuntu是裝64bit的，所以在使用gcin上，不容易找到編譯好的deb來安裝。所幸，廣大的internet上還是有不少資訊可以參考，以下就是參考整理後的步驟：&lt;br /&gt;&lt;ol&gt;&lt;li&gt;去抓取想編譯的版本的source code。抓回來之後，解開。(&lt;a href="http://cle.linux.org.tw/gcin/download/"&gt;官網下載&lt;/a&gt;)&lt;/li&gt;&lt;li&gt;抓取編譯用的diff，並且解開放到gcin source的目錄。注意：版本要符合。(&lt;a href="http://hyperrate.com/thread.php?tid=6570"&gt;diff下載點&lt;/a&gt;)&lt;/li&gt;&lt;li&gt;安裝編譯gcin的必要套件：&lt;blockquote&gt;sudo apt-get build-dep gcin&lt;/blockquote&gt;&lt;/li&gt;&lt;li&gt;把diff檔patch到gcin source：進入步驟1的目錄，輸入：&lt;blockquote&gt;patch -Np1 -i *.diff&lt;/blockquote&gt;&lt;/li&gt;&lt;li&gt;進行編譯：先把編譯必要的rule檔加上正確的權限&lt;blockquote&gt;chmod u+x ./debian/rules&lt;/blockquote&gt;，然後輸入&lt;blockquote&gt;dpkg-buildpackage -b&lt;/blockquote&gt;&lt;/li&gt;&lt;/ol&gt;經過以上步驟就可以產生需要的deb檔，就可以透過dpkg來安裝&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4332348533516593211-530536785047278259?l=freedom-heero.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://freedom-heero.blogspot.com/feeds/530536785047278259/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4332348533516593211&amp;postID=530536785047278259' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4332348533516593211/posts/default/530536785047278259'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4332348533516593211/posts/default/530536785047278259'/><link rel='alternate' type='text/html' href='http://freedom-heero.blogspot.com/2009/01/gcindeb.html' title='自己編譯gcin的deb'/><author><name>Heero</name><uri>http://www.blogger.com/profile/15484005945091463086</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4332348533516593211.post-762334216024668122</id><published>2008-12-27T23:40:00.004+08:00</published><updated>2008-12-28T00:17:28.557+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Linux'/><category scheme='http://www.blogger.com/atom/ns#' term='Ubuntu'/><title type='text'>Performance tuning for Ubuntu 8.10 by modifying kernel parameters</title><content type='html'>雖然Ubuntu一直在進步，但是在desktop環境上還是有點效能不滿意的感覺。在Google過後，看了一些文章跟討論，加上自己的實驗，得到以下的一些調整步驟跟心得：&lt;br /&gt;&lt;ol&gt;&lt;li&gt;編輯/etc/sysctl.conf：&lt;blockquote&gt;sudo nano /etc/sysctl.conf&lt;/blockquote&gt;&lt;/li&gt;&lt;li&gt;加入以下核心參數設定：&lt;blockquote&gt;#&lt;br /&gt;# for kernel&lt;br /&gt;#&lt;br /&gt;kernel.sem = 250 32000 100 128&lt;br /&gt;kernel.shmall = 2097152&lt;br /&gt;kernel.shmmax = 2147483648&lt;br /&gt;kernel.shmmni = 4096&lt;br /&gt;fs.file-max = 65535&lt;br /&gt;vm.swappiness = 1&lt;br /&gt;vm.vfs_cache_pressure = 50&lt;br /&gt;vm.dirty_writeback_centisecs=1500&lt;br /&gt;&lt;br /&gt;#&lt;br /&gt;# For net connections&lt;br /&gt;#&lt;br /&gt;net.core.rmem_max = 16777216&lt;br /&gt;net.core.wmem_max = 16777216&lt;br /&gt;net.ipv4.tcp_rmem = 4096 87380 16777216&lt;br /&gt;net.ipv4.tcp_wmem = 4096 65536 16777216&lt;br /&gt;net.ipv4.tcp_no_metrics_save = 1&lt;br /&gt;net.ipv4.tcp_moderate_rcvbuf = 1&lt;br /&gt;# recommended to increase this for 1000 BT or higher&lt;br /&gt;net.core.netdev_max_backlog = 2500&lt;br /&gt;net.ipv4.tcp_rfc1337 = 1&lt;br /&gt;net.ipv4.ip_no_pmtu_disc = 0&lt;br /&gt;net.ipv4.tcp_sack = 1&lt;br /&gt;net.ipv4.tcp_fack = 1&lt;br /&gt;net.ipv4.tcp_window_scaling = 1&lt;br /&gt;net.ipv4.tcp_timestamps = 1&lt;br /&gt;net.ipv4.tcp_ecn = 0&lt;br /&gt;net.ipv4.route.flush = 1&lt;/blockquote&gt;&lt;/li&gt;&lt;li&gt;重新讀取設定即ok：&lt;blockquote&gt;sudo sysctl -p&lt;/blockquote&gt;&lt;/li&gt;&lt;li&gt;加上block device讀取參數的修改，來改善讀取的效能：&lt;br /&gt;修改/etc/rc.local&lt;blockquote&gt;sudo nano /etc/rc.local&lt;/blockquote&gt;在最後的exit 0之前加上&lt;blockquote&gt;echo 1024 &gt; &lt;code&gt;/sys/block/sda/queue/read_ahead_kb&lt;br /&gt;&lt;/code&gt;&lt;code&gt;echo 1024 &gt; /sys/block/sda/queue/nr_requests&lt;/code&gt;&lt;/blockquote&gt;其中，sda是指欲調整的磁碟代號，如果有多個磁碟想調整，則重複以上設定，但是將磁碟代號修改完欲調整的。&lt;br /&gt;&lt;/li&gt;&lt;/ol&gt;以上參數調整主要是針對在kernel memory跟cache設定，以及有關網路連線方面的設定，所以調整後應該會覺得在檔案讀取跟網路連線上有改善。其中，有關kernel的部份，建議最好在主記憶體&gt;512MB時才調整。尤其在於fs.file-max、vm.swappiness、vm.vfs_cache_pressure此3個參數。(fs.file-max: 可開啟最大檔案個數；vm.swappines：kernel對於使用swap的情況，越小表示越不使用swap，預設值為60；vm.vfs_cache_pressure：kernel對inode的cache，預設為100，&lt;100表示儘量保留在cache中，&gt;100則反之)&lt;br /&gt;&lt;br /&gt;以上的修改只是針對透過修改核心參數來達到提升效能的方式，事實上，還有很多其他部份可以調整。個人使用的感覺是還不錯，有蠻顯著的效果&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4332348533516593211-762334216024668122?l=freedom-heero.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://freedom-heero.blogspot.com/feeds/762334216024668122/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4332348533516593211&amp;postID=762334216024668122' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4332348533516593211/posts/default/762334216024668122'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4332348533516593211/posts/default/762334216024668122'/><link rel='alternate' type='text/html' href='http://freedom-heero.blogspot.com/2008/12/performance-tuning-for-ubuntu-810-by.html' title='Performance tuning for Ubuntu 8.10 by modifying kernel parameters'/><author><name>Heero</name><uri>http://www.blogger.com/profile/15484005945091463086</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4332348533516593211.post-8812637440957897016</id><published>2008-09-07T19:09:00.002+08:00</published><updated>2008-09-07T19:30:35.501+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='吃喝玩樂'/><title type='text'>潭雅神綠園道...第二次完全征服！</title><content type='html'>今天下午，又跟愛芸姐去了一趟潭雅神...因為怕傍晚的時候又下雨，所以提早到3:30分就出發。太陽是有點點大，不過也還沒有大到覺得很討厭，但是路上騎車的人就少了不少。&lt;br /&gt;&lt;br /&gt;這次的行程比上次去的感覺差超多的，記得上次在路程上休息了2~3次，但是這次一次都沒有休息！而且時間上也快很多，我們大概在4點半左右就到達終點。在那邊休息了大概20分鐘，在這段時間還有一位也是騎車的同好過來詢問我們車子的事～哈哈。同時也在那邊的租車店看到很多人在租車，可見這騎車的風潮有多夯！&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://lh4.ggpht.com/heerojheng/SMO5VdEXFyI/AAAAAAAAAPI/Qj-Thgl9y9o/dsc00013.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 400px;" src="http://lh4.ggpht.com/heerojheng/SMO5VdEXFyI/AAAAAAAAAPI/Qj-Thgl9y9o/dsc00013.jpg" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;另外，上次我們去吃晚餐的越南小吃，並沒有仔細看他的招牌，今天就看到招牌的真面目&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://lh6.ggpht.com/heerojheng/SMO5WWYpgQI/AAAAAAAAAPQ/aF0IP4M5Mbc/dsc00014.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 400px;" src="http://lh6.ggpht.com/heerojheng/SMO5WWYpgQI/AAAAAAAAAPQ/aF0IP4M5Mbc/dsc00014.jpg" alt="" border="0" /&gt;&lt;/a&gt;哈哈哈～有河粉、咖啡、果汁跟剉冰，真是多樣化啊～&lt;br /&gt;&lt;br /&gt;回程的時候，路上就多了很多人載騎車，尤其很多是家庭...所以有點「塞車」，不過還是在1小時內騎完了～ 最後到家的里程是大約是39km左右。騎完之後最想幹嘛？當然是吃冰啊～哈哈哈～&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4332348533516593211-8812637440957897016?l=freedom-heero.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://freedom-heero.blogspot.com/feeds/8812637440957897016/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4332348533516593211&amp;postID=8812637440957897016' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4332348533516593211/posts/default/8812637440957897016'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4332348533516593211/posts/default/8812637440957897016'/><link rel='alternate' type='text/html' href='http://freedom-heero.blogspot.com/2008/09/blog-post_07.html' title='潭雅神綠園道...第二次完全征服！'/><author><name>Heero</name><uri>http://www.blogger.com/profile/15484005945091463086</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh4.ggpht.com/heerojheng/SMO5VdEXFyI/AAAAAAAAAPI/Qj-Thgl9y9o/s72-c/dsc00013.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4332348533516593211.post-2893684819111053192</id><published>2008-09-07T14:41:00.003+08:00</published><updated>2008-09-07T15:09:49.935+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='吃喝玩樂'/><title type='text'>真正的日式咖哩？！</title><content type='html'>9/6的中午，我們騎車三人組又去市區吃美食了～不過不是騎車，是開車去...（大中午騎車的痛苦，我可不想再經歷一次）。這次也是愛芸姐推薦的，一家在台中裕毛屋後面巷子裡的日式咖哩、豬排專賣店，叫做「向日葵」。店面看起來很普通、不太起眼...不過真的很日式喔！....因為...老闆是個日本人～&lt;br /&gt;&lt;br /&gt;主餐定食的部份主要就是豬排、雞肉、豬+雞、以及漢堡肉這四種主菜，看是要一般訂食還是要咖哩飯，大概就是這樣。當然還有一些額外的小菜可以點，但是忘記拍菜單了=.=。價錢大概都在150~200左右吧。店裡就是老闆跟老闆娘在弄餐跟招呼。老闆感覺還算是親切，有很明顯的日語口音。&lt;br /&gt;&lt;br /&gt;我點了漢堡肉咖哩，Ray點了漢堡肉定食，愛芸姐則是回味了豬排咖哩。&lt;br /&gt;漢堡肉咖哩&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://lh3.ggpht.com/heerojheng/SMN7cpkl8LI/AAAAAAAAAOQ/fFxCz17B_LU/s800/dsc00009.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 400px;" src="http://lh3.ggpht.com/heerojheng/SMN7cpkl8LI/AAAAAAAAAOQ/fFxCz17B_LU/s800/dsc00009.jpg" alt="" border="0" /&gt;&lt;/a&gt;漢堡肉定食&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://lh5.ggpht.com/heerojheng/SMN7c7kq8_I/AAAAAAAAAOY/VC08hr7CosQ/s800/dsc00011.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 400px;" src="http://lh5.ggpht.com/heerojheng/SMN7c7kq8_I/AAAAAAAAAOY/VC08hr7CosQ/s800/dsc00011.jpg" alt="" border="0" /&gt;&lt;/a&gt;豬排咖哩&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://lh6.ggpht.com/heerojheng/SMN7dF8qoaI/AAAAAAAAAOg/ETHuSjKGUc4/s800/dsc00010.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 400px;" src="http://lh6.ggpht.com/heerojheng/SMN7dF8qoaI/AAAAAAAAAOg/ETHuSjKGUc4/s800/dsc00010.jpg" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;看起來還蠻豐盛的，我的價位是200，其他人的是150，但是感覺還算不錯，不會覺得很貴。味道呢...我覺得還蠻不錯的，主菜還蠻夠味的，小菜也蠻好吃、蠻開胃的，咖哩的味道比較辣一點，但是也還ok。愛芸姐有讓我試吃了一塊豬排，我覺得也還不錯，不過她覺得跟以前味道不太一樣。&lt;br /&gt;&lt;br /&gt;這家店還有一點蠻有趣的，就是門口寫的公休日是「不固定」，聽說老闆也蠻隨性的，想休假就不開了...哈哈～。所以也不是說想去吃就有的吃，還得碰碰運氣咧～&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4332348533516593211-2893684819111053192?l=freedom-heero.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://freedom-heero.blogspot.com/feeds/2893684819111053192/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4332348533516593211&amp;postID=2893684819111053192' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4332348533516593211/posts/default/2893684819111053192'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4332348533516593211/posts/default/2893684819111053192'/><link rel='alternate' type='text/html' href='http://freedom-heero.blogspot.com/2008/09/blog-post.html' title='真正的日式咖哩？！'/><author><name>Heero</name><uri>http://www.blogger.com/profile/15484005945091463086</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh3.ggpht.com/heerojheng/SMN7cpkl8LI/AAAAAAAAAOQ/fFxCz17B_LU/s72-c/dsc00009.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4332348533516593211.post-3947524427207227907</id><published>2008-08-26T01:09:00.001+08:00</published><updated>2008-08-26T01:51:49.928+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='吃喝玩樂'/><title type='text'>第一次夜騎~美村點頭冰之旅~</title><content type='html'>在24號拿到我自己的腳踏車之後，我室友Ray跟他姊姊就非常熱心的安排了一趟超低難度的「美村點頭冰之旅」（原本是要台中都會公園之旅的，但是我膽怯了XD）&lt;br /&gt;&lt;br /&gt;我們大概七點多從中科愛買這邊出發，其實一路上也是看到不少人騎腳踏車的。基本上，之所以會說這路線是超低難度是因為幾乎都是平路，除了途中有經過虹揚橋有上坡的部份。由於都是平路，而且又是一般的道路，我的車又比較輕、車輪寬度也比較小，所以騎起來算是還蠻快蠻輕鬆的～常常會騎一騎就會追上在帶頭的愛芸姐～哈～不過畢竟薑是老的辣，騎了7~8km之後，我還是開始露出疲態了...但是，愛芸姐還是持續往前衝....果然...真不愧是女中豪傑啊～&lt;br /&gt;&lt;br /&gt;因為我並沒有特別去記騎的路線，所以我也沒辦法很清楚的描述路線。不過大概在騎了8~9km之後，我們到了一家「梁媽媽臭豆腐」，三人就先在這裡吃個臭豆腐當晚餐，此時大約是晚上8點左右。客人很多，但是味道我覺得還好而已，Ray跟愛芸姐似乎也是這麼認為，不過真的蠻辣的。&lt;br /&gt;&lt;br /&gt;吃完之後，繼續往我們的目標前進，又騎了不遠之後，就到了美村點頭冰。不過，因為晚餐只有臭豆腐，所以愛芸姐建議我們到附近的豆樂永和豆漿，再吃一點東西...我點了蜜汁叉燒包，味道還好。這家店我覺得比較特別的是店面沒很大，但是卻是用B.B.Call在叫客人拿東西，還蠻有趣的。吃完之後，馬上就到格幾個店面的「美村點頭冰」達陣成功～&lt;br /&gt;&lt;br /&gt;在吃完冰之後，差不多已經快9點，我們就開始啟程回家了。因為在吃東西的時候，有休息到一下，所以回程的時候，又感覺是「一尾活龍」。但是...在行經文心路與公益路口的時候，突然覺得後輪有異常的聲音，而且騎起來的感覺很怪...赫然發現！哇靠！我的後輪居然「破輪」！新車第一天出門就出這種問題，我也真是有夠狗屎運的了。後來沒辦法，只好跟Ray用牽的，牽去腳踏車店修。&lt;br /&gt;&lt;br /&gt;到腳踏車店的時候，又發現...原來這全台唯一的車有著其他的困擾...就是...我的車輪輪徑是28吋的，而這尺寸的內胎是比較少見.....本來一開始還沒得換，後來店家剛好有到一條可以用。除此之外，另一個困擾是我買的一個車墊下的包包也不能裝，因為車墊架子的尺寸也不太一樣....&lt;br /&gt;&lt;br /&gt;由於牽著車走了一段還不短的路，回程又要經過虹揚橋，這時我真的就很虛了...但是Ray跟愛芸姐還是很輕鬆...果然有練過的就是不一樣...最後回到家已經10點多，而且我真的滿身大汗....不過整體來說，還是算很輕鬆啦...至少跟上次去潭雅神那次比的話。如果不是發生破輪事件，應該也沒那麼久那麼累才是。其實回來之後，也只感覺大腿跟小腿有微微的痠。所以結論：騎一台跟自己很合適的車真的很重要！畢竟騎的舒服才能繼續騎啊～&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4332348533516593211-3947524427207227907?l=freedom-heero.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://freedom-heero.blogspot.com/feeds/3947524427207227907/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4332348533516593211&amp;postID=3947524427207227907' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4332348533516593211/posts/default/3947524427207227907'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4332348533516593211/posts/default/3947524427207227907'/><link rel='alternate' type='text/html' href='http://freedom-heero.blogspot.com/2008/08/blog-post_26.html' title='第一次夜騎~美村點頭冰之旅~'/><author><name>Heero</name><uri>http://www.blogger.com/profile/15484005945091463086</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4332348533516593211.post-2232695930771572936</id><published>2008-08-25T01:48:00.003+08:00</published><updated>2008-08-25T02:50:42.136+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='吃喝玩樂'/><title type='text'>(號稱)全台唯一的Cannondale Quick 5</title><content type='html'>24號中午，我跟我室友Ray以及他姊愛芸姐一起去看腳踏車。原本是要先去三民路那邊找一個Dorcus的牌子的車，所以先去吃個台中肉圓，肉圓生意真是有夠好，味道的確是不錯，不過一顆35元，不算便宜就是。&lt;br /&gt;&lt;br /&gt;吃完去找賣Dorcus的那間店，但是都找不到，所以只好去大雅那邊的捷安特跟美利達看。看完的感覺是捷安特的車型比較多樣化，但是價錢比較貴；美利達的價錢比較便宜、同價位的零件等級好一點，但是車型與塗裝比較單調，比較沒選擇。由於我的預算是在15k上下，不希望超過20k，所以可以選擇的車款就更少了。在捷安特那邊有看到一台黑色的Flight M1，感覺很不錯，價錢好像是16.8k，也有一台限量的登山車...但是那台就要20.5k....美利達那邊看到的都是登山車居多...但是沒有特別有感覺的...後來因為覺得要考慮一下就沒買那台M1了。&lt;br /&gt;&lt;br /&gt;後來我們又去一家店看Louis Garneau，這是個加拿大牌子的車。不過去看到的實車好像沒有特別喜歡的，不過從型錄上，到是有幾款跟捷安特的Flight M1有類似的那個感覺，不過好像也是有缺貨吧。最後，愛芸姐建議我們去東山路上的一家店看看...&lt;br /&gt;&lt;br /&gt;看起來小小不太起眼的一家店，沒想到居然挖到寶...一開始進去看一看並沒有看到什麼特別的。正有點想走人的時候，Ray跟愛芸姐看到了2台跟M1感覺接近的車，而且車型跟塗裝野蠻好看的。然後才發現原來那兩台是Cannondale的（我孤陋寡聞不認識這牌子，愛芸姐說這是美國最大牌子），我們就問了一下。老闆說...那是沒有在台灣上市的車款，原本是代理商組起來拍Catalog，拍完之後被老闆要來的，總共只有3輛，一色一輛。試了一下，感覺還蠻不錯的，因為不是登山車，所以還蠻輕的，騎起來很輕快的感覺。而且，價錢才15.8k...感覺很便宜（此時愛芸姐在旁邊已經說，15.8k買到Cannondale的這台車算是很便宜了），已經讓我有點心動了。而且聽說...Cannondale的車架是終身保固的，加上這輛又市全台唯一的一輛，聽起來就是很屌的感覺～讓我更加猶豫了...猶豫不是不喜歡...而是不知道該不該這麼快做決定。最後，Ray跟愛芸姐幫忙凹了前後燈跟水壺架（因為老闆堅持不打折），終究是買了～哇！看了一整個下午就買了...我還在想會不會太草率了...&lt;br /&gt;&lt;br /&gt;晚上回到家，上網查了一下，好像真的沒有看到台灣有人有耶！晚上10點多的時候，老闆幫我送車來，真是越看越覺得不錯，而且真的蠻輕的（11.8kg），有24段變速！所以，就請Ray幫我拍了照啦～&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://lh5.ggpht.com/heerojheng/SLGOO1_gR2I/AAAAAAAAAJQ/eiIFx843Plg/IMG_3046.JPG"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 400px;" src="http://lh5.ggpht.com/heerojheng/SLGOO1_gR2I/AAAAAAAAAJQ/eiIFx843Plg/IMG_3046.JPG" alt="" border="0" /&gt;&lt;/a&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://lh3.ggpht.com/heerojheng/SLGOPLLNnZI/AAAAAAAAAJY/-xNISZkb2kg/IMG_3001.JPG"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 400px;" src="http://lh3.ggpht.com/heerojheng/SLGOPLLNnZI/AAAAAAAAAJY/-xNISZkb2kg/IMG_3001.JPG" alt="" border="0" /&gt;&lt;/a&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://lh5.ggpht.com/heerojheng/SLGOkUeWmkI/AAAAAAAAAJ4/szssDNOHyoU/IMG_3008.JPG"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 400px;" src="http://lh5.ggpht.com/heerojheng/SLGOkUeWmkI/AAAAAAAAAJ4/szssDNOHyoU/IMG_3008.JPG" alt="" border="0" /&gt;&lt;/a&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://lh5.ggpht.com/heerojheng/SLGOPM0_dmI/AAAAAAAAAJo/FlC56q8cJzI/IMG_3005.JPG"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 400px;" src="http://lh5.ggpht.com/heerojheng/SLGOPM0_dmI/AAAAAAAAAJo/FlC56q8cJzI/IMG_3005.JPG" alt="" border="0" /&gt;&lt;/a&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://lh6.ggpht.com/heerojheng/SLGOkQR7URI/AAAAAAAAAKA/5yVtX5rwnB4/IMG_3009.JPG"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 400px;" src="http://lh6.ggpht.com/heerojheng/SLGOkQR7URI/AAAAAAAAAKA/5yVtX5rwnB4/IMG_3009.JPG" alt="" border="0" /&gt;&lt;/a&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://lh5.ggpht.com/heerojheng/SLGOkd2iD0I/AAAAAAAAAKI/VtdEv0JmiHk/IMG_3011.JPG"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 400px;" src="http://lh5.ggpht.com/heerojheng/SLGOkd2iD0I/AAAAAAAAAKI/VtdEv0JmiHk/IMG_3011.JPG" alt="" border="0" /&gt;&lt;/a&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://lh3.ggpht.com/heerojheng/SLGOkixH2aI/AAAAAAAAAKQ/j7zWO7XHEFo/IMG_3014.JPG"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 400px;" src="http://lh3.ggpht.com/heerojheng/SLGOkixH2aI/AAAAAAAAAKQ/j7zWO7XHEFo/IMG_3014.JPG" alt="" border="0" /&gt;&lt;/a&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://lh4.ggpht.com/heerojheng/SLGPe9dfbKI/AAAAAAAAAL8/lMbm6P6yFZA/IMG_3038.JPG"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 400px;" src="http://lh4.ggpht.com/heerojheng/SLGPe9dfbKI/AAAAAAAAAL8/lMbm6P6yFZA/IMG_3038.JPG" alt="" border="0" /&gt;&lt;/a&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://lh5.ggpht.com/heerojheng/SLGPMr2JodI/AAAAAAAAALU/znzIhbUQ8EA/IMG_3030.JPG"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 400px;" src="http://lh5.ggpht.com/heerojheng/SLGPMr2JodI/AAAAAAAAALU/znzIhbUQ8EA/IMG_3030.JPG" alt="" border="0" /&gt;&lt;/a&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://lh6.ggpht.com/heerojheng/SLGPfOGcDbI/AAAAAAAAAMM/dzUd45r8wIU/IMG_3040.JPG"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 400px;" src="http://lh6.ggpht.com/heerojheng/SLGPfOGcDbI/AAAAAAAAAMM/dzUd45r8wIU/IMG_3040.JPG" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;真的是很不錯的一輛車，而且又不算是很貴！再來就是看怎麼持續騎車計畫了....我來了～健康的生活～跟我的全台唯一的Cannondale Quick 5一起努力！&lt;br /&gt;對這車有興趣的可以看這邊:&lt;table style="width: 194px;"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style="background: transparent url(http://picasaweb.google.com/f/img/transparent_album_background.gif) no-repeat scroll left center; height: 194px; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;" align="center"&gt;&lt;a href="http://picasaweb.google.com/heerojheng/MyCannondaleQuick5?authkey=TqWX78_3rMg"&gt;&lt;img src="http://lh3.ggpht.com/heerojheng/SLGNKgV4hJE/AAAAAAAAANA/ZdxmnjSSrec/s160-c/MyCannondaleQuick5.jpg" style="margin: 1px 0pt 0pt 4px;" height="160" width="160" /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style="text-align: center; font-family: arial,sans-serif; font-size: 11px;"&gt;&lt;a href="http://picasaweb.google.com/heerojheng/MyCannondaleQuick5?authkey=TqWX78_3rMg" style="color: rgb(77, 77, 77); font-weight: bold; text-decoration: none;"&gt;My Cannondale Quick 5&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4332348533516593211-2232695930771572936?l=freedom-heero.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://freedom-heero.blogspot.com/feeds/2232695930771572936/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4332348533516593211&amp;postID=2232695930771572936' title='2 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4332348533516593211/posts/default/2232695930771572936'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4332348533516593211/posts/default/2232695930771572936'/><link rel='alternate' type='text/html' href='http://freedom-heero.blogspot.com/2008/08/cannondale-quick-5.html' title='(號稱)全台唯一的Cannondale Quick 5'/><author><name>Heero</name><uri>http://www.blogger.com/profile/15484005945091463086</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh5.ggpht.com/heerojheng/SLGOO1_gR2I/AAAAAAAAAJQ/eiIFx843Plg/s72-c/IMG_3046.JPG' height='72' width='72'/><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4332348533516593211.post-6687242904343242027</id><published>2008-08-23T22:02:00.003+08:00</published><updated>2008-08-23T22:51:14.066+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='吃喝玩樂'/><title type='text'>赤鬼炙燒牛排</title><content type='html'>台中市公益路上有不少餐廳，而且規模都還不小。而有在這附近走動的，應該會發現有家牛排館常常很多人在門口排隊，那就是在公益路與大墩路口的「赤鬼炙燒牛排」。平常從旁邊經過就看到滿滿的人，沒有一次例外，真的很好奇...所以...22號晚上就去排看看了。&lt;br /&gt;&lt;br /&gt;果然...第一次碰到進去用餐還要拿號碼牌的...而且過號還得等三桌咧！我跟我室友Ray到的時候，號碼已經到345...而我拿到的號碼牌是358...還真是多人在等...=..=。想說還要等很久，所以先離開到附近的特價運動鞋/衣的店去晃晃，沒想到才去沒10分鐘就過號了.........。最後終於在八點多左右進場了。&lt;br /&gt;&lt;br /&gt;「赤鬼」...果然裝潢都是以紅色為主...菜單上的餐點沒有很多種，大概才6～7項吧，價錢是還算平價，最貴的才430吧。我點了一份6盎司的菲力，七分熟...但是來的時候看起來大概才5分吧。哈～因為吃到一半才想到要拍，所以才會這麼小。&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://lh4.ggpht.com/heerojheng/SLAXpMAXVNI/AAAAAAAAAH4/tV4bp8sOX1w/20080822%28001%29.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 400px;" src="http://lh4.ggpht.com/heerojheng/SLAXpMAXVNI/AAAAAAAAAH4/tV4bp8sOX1w/20080822%28001%29.jpg" alt="" border="0" /&gt;&lt;/a&gt;他的飲料跟湯品都是自取，湯品有羅宋湯跟玉米濃湯；飲料則是有冰開水、冰紅茶跟冷泡茶（無糖的喔）。還有，可自取的小菜...嗯...搞得很像吃清粥小菜一樣....= =。&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://lh5.ggpht.com/heerojheng/SLAXpP7wQ9I/AAAAAAAAAIA/zy_ZwCgEp7Q/20080822%28002%29.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 400px;" src="http://lh5.ggpht.com/heerojheng/SLAXpP7wQ9I/AAAAAAAAAIA/zy_ZwCgEp7Q/20080822%28002%29.jpg" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;Ray則是點了9盎司的沙朗...它附的麵跟菜可以加量...所以Ray加了菜...所以他的四季豆比我多一點。而且...我們還赫然發現...在這排餐中還有兩顆丸子樣的物體...試了之後發現原來是「花枝丸」...但是...為啥...牛排餐中會突然有花枝丸...真是奇妙啊！&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://lh3.ggpht.com/heerojheng/SLAXpTgZu4I/AAAAAAAAAII/95uD4M7nj_k/20080822%28003%29.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 400px;" src="http://lh3.ggpht.com/heerojheng/SLAXpTgZu4I/AAAAAAAAAII/95uD4M7nj_k/20080822%28003%29.jpg" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;我在吃完之後，很無聊的情況下，開始觀察店裡的情況。服務生的穿著說真的，還真特別，有點像古惑仔（或是也可以說像乩童XD）。我還看到有5個服務生站一排，那真的是很有趣的畫面，可惜沒拍到。&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://lh6.ggpht.com/heerojheng/SLAXpa4sJ2I/AAAAAAAAAIQ/oWepoLOa2H4/20080822%28004%29.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 400px;" src="http://lh6.ggpht.com/heerojheng/SLAXpa4sJ2I/AAAAAAAAAIQ/oWepoLOa2H4/20080822%28004%29.jpg" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;除了服務生的穿著，我還不時聽到「鼓聲」...一直搞不清楚為啥會有鼓聲...最後終於發現，在門口有掛一個鼓。但是，到底在什麼時候會敲那個鼓，我觀察很久...還是看不出來那規則...&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://lh4.ggpht.com/heerojheng/SLAXpomRElI/AAAAAAAAAIY/UWmJlydNUYY/20080822%28005%29.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 400px;" src="http://lh4.ggpht.com/heerojheng/SLAXpomRElI/AAAAAAAAAIY/UWmJlydNUYY/20080822%28005%29.jpg" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;其實說真的。味道算是還好而已，價錢也算是平價（不算是超便宜啦...因為沒記錯的話，最便宜的餐也是要140還是160吧），份量也算是ok啦...整體來說就算是合理吧...老實說...我真的不知道它為啥會有那麼多人要等...也許還有我沒發現的特點吧。不過人真的還蠻多的...而且抽一張號碼牌還只能給5個人用呢！有興趣而且愛吃牛排的人可以去try try see～&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4332348533516593211-6687242904343242027?l=freedom-heero.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://freedom-heero.blogspot.com/feeds/6687242904343242027/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4332348533516593211&amp;postID=6687242904343242027' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4332348533516593211/posts/default/6687242904343242027'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4332348533516593211/posts/default/6687242904343242027'/><link rel='alternate' type='text/html' href='http://freedom-heero.blogspot.com/2008/08/blog-post.html' title='赤鬼炙燒牛排'/><author><name>Heero</name><uri>http://www.blogger.com/profile/15484005945091463086</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh4.ggpht.com/heerojheng/SLAXpMAXVNI/AAAAAAAAAH4/tV4bp8sOX1w/s72-c/20080822%28001%29.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4332348533516593211.post-1109649486093453645</id><published>2008-06-22T22:43:00.013+08:00</published><updated>2008-06-23T09:19:30.888+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='吃喝玩樂'/><title type='text'>鐵馬遊記初體驗～（潭雅神綠園道）</title><content type='html'>因為19號的時候，機車牽去修了，得修一整天，所以20號就索性請假一天。但是請假一天總得做點什麼事，不然睡一整天就浪費了，所以就鼓起勇氣跟室友Ray提出去騎腳踏車的建議，他也非常爽快的答應了～&lt;br /&gt;&lt;br /&gt;但是，20號的天氣實在事有夠熱，所以我們一直到下午5點才出發，此行總共就3人：我、Ray跟Ray的姊姊。由於我是菜鳥，所以我們挑戰難度甚低的「潭雅神綠園道」，它的終點就在中科旁邊附近，所以對我來說第一個挑戰，也是最大的挑戰就是從我們家爬坡到中科。一開始看起來，算是簡單啊～一副神清氣爽的樣子，但是很快就變成一副虛樣了...。&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_S5G9fsfP18M/SF5unia9gwI/AAAAAAAAAE4/JIWvCwQiYx8/s1600-h/IMG_6767.JPG"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://4.bp.blogspot.com/_S5G9fsfP18M/SF5unia9gwI/AAAAAAAAAE4/JIWvCwQiYx8/s400/IMG_6767.JPG" alt="" id="BLOGGER_PHOTO_ID_5214727044075455234" border="0" /&gt;&lt;/a&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_S5G9fsfP18M/SF5ungcfSAI/AAAAAAAAAFA/w_skUF-yql8/s1600-h/IMG_6775.JPG"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://2.bp.blogspot.com/_S5G9fsfP18M/SF5ungcfSAI/AAAAAAAAAFA/w_skUF-yql8/s400/IMG_6775.JPG" alt="" id="BLOGGER_PHOTO_ID_5214727043544991746" border="0" /&gt;&lt;/a&gt;還好，到了中科就不需要爬坡了。「潭雅神綠園道」總長大概12km，我們必須騎到潭子的起點，對於常騎的老手來說事非常簡單的，但是對我來說光是那數字就有點嚇人。&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_S5G9fsfP18M/SF5unxc39gI/AAAAAAAAAFI/zXReP1oIv-0/s1600-h/IMG_6785.JPG"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://3.bp.blogspot.com/_S5G9fsfP18M/SF5unxc39gI/AAAAAAAAAFI/zXReP1oIv-0/s400/IMG_6785.JPG" alt="" id="BLOGGER_PHOTO_ID_5214727048110011906" border="0" /&gt;&lt;/a&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_S5G9fsfP18M/SF5un_ECntI/AAAAAAAAAFQ/5F0dzTMt0qU/s1600-h/IMG_6786.JPG"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://2.bp.blogspot.com/_S5G9fsfP18M/SF5un_ECntI/AAAAAAAAAFQ/5F0dzTMt0qU/s400/IMG_6786.JPG" alt="" id="BLOGGER_PHOTO_ID_5214727051763949266" border="0" /&gt;&lt;/a&gt;其實一路上同騎的人還蠻多的（休息的時候還可以看到一旁也在休息的阿伯）&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_S5G9fsfP18M/SF5uoH_6SAI/AAAAAAAAAFY/J-VPndTGcaQ/s1600-h/IMG_6808.JPG"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://3.bp.blogspot.com/_S5G9fsfP18M/SF5uoH_6SAI/AAAAAAAAAFY/J-VPndTGcaQ/s400/IMG_6808.JPG" alt="" id="BLOGGER_PHOTO_ID_5214727054162544642" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;騎著騎著，天氣慢慢變暗了，不過還好也離我們的目的地越來越近了。&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_S5G9fsfP18M/SF5voeRx0WI/AAAAAAAAAFg/q55J9QMeVyM/s1600-h/IMG_6812.JPG"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://3.bp.blogspot.com/_S5G9fsfP18M/SF5voeRx0WI/AAAAAAAAAFg/q55J9QMeVyM/s400/IMG_6812.JPG" alt="" id="BLOGGER_PHOTO_ID_5214728159654695266" border="0" /&gt;&lt;/a&gt;只是居然在快到了之前出現兩個陸橋要上....@#$%。&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_S5G9fsfP18M/SF5vocnNytI/AAAAAAAAAFo/rZWgWGsxAn0/s1600-h/IMG_6813.JPG"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://3.bp.blogspot.com/_S5G9fsfP18M/SF5vocnNytI/AAAAAAAAAFo/rZWgWGsxAn0/s400/IMG_6813.JPG" alt="" id="BLOGGER_PHOTO_ID_5214728159207738066" border="0" /&gt;&lt;/a&gt;終於...到了，時間是7點半了，其實全都因為我太遜了，所以拖慢了到達時間。&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_S5G9fsfP18M/SF5vocndO-I/AAAAAAAAAFw/CtwZ223XcfA/s1600-h/IMG_6818.JPG"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://3.bp.blogspot.com/_S5G9fsfP18M/SF5vocndO-I/AAAAAAAAAFw/CtwZ223XcfA/s400/IMG_6818.JPG" alt="" id="BLOGGER_PHOTO_ID_5214728159208750050" border="0" /&gt;&lt;/a&gt;我們就在對面的一家「越南美食」吃晚餐，這家小吃店很特別，除了有吃的，&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_S5G9fsfP18M/SF5voq682pI/AAAAAAAAAGA/VM3Ft5wbI8w/s1600-h/IMG_6823.JPG"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://3.bp.blogspot.com/_S5G9fsfP18M/SF5voq682pI/AAAAAAAAAGA/VM3Ft5wbI8w/s400/IMG_6823.JPG" alt="" id="BLOGGER_PHOTO_ID_5214728163048610450" border="0" /&gt;&lt;/a&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_S5G9fsfP18M/SF5w56bnsZI/AAAAAAAAAGI/OfLG-suqcCk/s1600-h/IMG_6824.JPG"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://3.bp.blogspot.com/_S5G9fsfP18M/SF5w56bnsZI/AAAAAAAAAGI/OfLG-suqcCk/s400/IMG_6824.JPG" alt="" id="BLOGGER_PHOTO_ID_5214729558781571474" border="0" /&gt;&lt;/a&gt;還有卡啦ok，旁邊還有一家「越南咖啡」，哈～沒看過越南的MV。&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_S5G9fsfP18M/SF5w58OqY8I/AAAAAAAAAGQ/KkLNN56WCdo/s1600-h/IMG_6826.JPG"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://2.bp.blogspot.com/_S5G9fsfP18M/SF5w58OqY8I/AAAAAAAAAGQ/KkLNN56WCdo/s400/IMG_6826.JPG" alt="" id="BLOGGER_PHOTO_ID_5214729559264093122" border="0" /&gt;&lt;/a&gt;我們在「越南咖啡」叫了蠻特別的「越南水果茶」，一堆料，其中還有一些東西一直吃不出來是啥。&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_S5G9fsfP18M/SF5vorVPWJI/AAAAAAAAAF4/MJB9bh-GcaY/s1600-h/IMG_6822.JPG"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://2.bp.blogspot.com/_S5G9fsfP18M/SF5vorVPWJI/AAAAAAAAAF4/MJB9bh-GcaY/s400/IMG_6822.JPG" alt="" id="BLOGGER_PHOTO_ID_5214728163158874258" border="0" /&gt;&lt;/a&gt;最有趣的是在快吃完的時候，店裡的卡啦ok突然關燈跟關門，原來...是有人在「熱舞」～哈哈哈～。&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_S5G9fsfP18M/SF5w56BCswI/AAAAAAAAAGY/PbgIahy5bh0/s1600-h/IMG_6829.JPG"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://2.bp.blogspot.com/_S5G9fsfP18M/SF5w56BCswI/AAAAAAAAAGY/PbgIahy5bh0/s400/IMG_6829.JPG" alt="" id="BLOGGER_PHOTO_ID_5214729558670095106" border="0" /&gt;&lt;/a&gt;吃完之後，因為時間已經8點半了，所以只好趕快啟程返回。夜騎真的很涼快，但也真的是很暗。最後到家已經10點半，整個人已經累到不行。不過雖然累，感覺卻是蠻充實的～但是...禮拜六就「鐵腿」一整天&gt;_&lt;。&lt;br /&gt;&lt;br /&gt;結論：體力跟腳力需要鍛鍊....&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4332348533516593211-1109649486093453645?l=freedom-heero.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://freedom-heero.blogspot.com/feeds/1109649486093453645/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4332348533516593211&amp;postID=1109649486093453645' title='3 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4332348533516593211/posts/default/1109649486093453645'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4332348533516593211/posts/default/1109649486093453645'/><link rel='alternate' type='text/html' href='http://freedom-heero.blogspot.com/2008/06/blog-post.html' title='鐵馬遊記初體驗～（潭雅神綠園道）'/><author><name>Heero</name><uri>http://www.blogger.com/profile/15484005945091463086</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_S5G9fsfP18M/SF5unia9gwI/AAAAAAAAAE4/JIWvCwQiYx8/s72-c/IMG_6767.JPG' height='72' width='72'/><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4332348533516593211.post-5285389281799441058</id><published>2008-06-20T03:38:00.007+08:00</published><updated>2008-06-20T04:30:29.466+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='GUNPLA'/><category scheme='http://www.blogger.com/atom/ns#' term='吃喝玩樂'/><title type='text'>GUNPLA第一彈～GN-002 Gundam Dynames</title><content type='html'>雖然說收集鋼彈模型已經有好一段時間了，但是一直沒這麼做。直到搬回台中，有了Ray大師的照相技術的加持，才有這樣的想法：把模型拍照上網～&lt;br /&gt;&lt;br /&gt;第一次這麼做，所以挑選了製作難度低的Gundam 00的1/100的機體「GN-002 Gundam Dynames」，這隻呢剛好也是我慶祝搬回台中時，犒賞自己而買的～。Gundam 00是2007年的最新Gundam TV版作品，故事的時空與環境與現在有點類似，是在2307年，也是有石化能源危機的問題；當時的世界分成三大勢力：美國為首的UNION、中國為首的人類革新聯盟、由歐盟改組的新歐盟（AEU），以及擁有機動戰士（Mobile Suit）「GUNDAM」的私設武裝組織「天上人」（Celestial Being）之間發生的故事，目前第一季已經播映完畢，算是還蠻不錯的。有興趣的可以自己上網找尋更多的資訊～&lt;br /&gt;&lt;br /&gt;由於不是屬於MG等級的1/100模型，所以在細節上就簡單很多，主體一天之內就完成了，加上了上溝槽線，頂多2天（別問我為啥沒有自己上色跟做無縫處理那些...我的功力跟時間不允許啊！，期待有人可以提供美術支援～）。完成之後，當然就是請我們的Ray大師幫忙拍攝啦！不過Ray也是第一次拍這種東西...所以還是有很多需要改進的地方。另外，我們的拍攝場景跟道具更是需要大大的改進啊！所以，只好先將就一點了。&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_S5G9fsfP18M/SFq9GbeIqoI/AAAAAAAAABs/R2XCOCD3EUM/s1600-h/IMG_1706.JPG"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://2.bp.blogspot.com/_S5G9fsfP18M/SFq9GbeIqoI/AAAAAAAAABs/R2XCOCD3EUM/s400/IMG_1706.JPG" alt="" id="BLOGGER_PHOTO_ID_5213687436785789570" border="0" /&gt;&lt;/a&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_S5G9fsfP18M/SFq9G6qYYWI/AAAAAAAAAB0/rSRBSixz3WM/s1600-h/IMG_1716.JPG"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://4.bp.blogspot.com/_S5G9fsfP18M/SFq9G6qYYWI/AAAAAAAAAB0/rSRBSixz3WM/s400/IMG_1716.JPG" alt="" id="BLOGGER_PHOTO_ID_5213687445158650210" border="0" /&gt;&lt;/a&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_S5G9fsfP18M/SFq9HKF9WmI/AAAAAAAAAB8/70fDRXEmWlE/s1600-h/IMG_1782.JPG"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://2.bp.blogspot.com/_S5G9fsfP18M/SFq9HKF9WmI/AAAAAAAAAB8/70fDRXEmWlE/s400/IMG_1782.JPG" alt="" id="BLOGGER_PHOTO_ID_5213687449300851298" border="0" /&gt;&lt;/a&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_S5G9fsfP18M/SFq9HuFXF0I/AAAAAAAAACE/HZRIitktndY/s1600-h/IMG_1786.JPG"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://2.bp.blogspot.com/_S5G9fsfP18M/SFq9HuFXF0I/AAAAAAAAACE/HZRIitktndY/s400/IMG_1786.JPG" alt="" id="BLOGGER_PHOTO_ID_5213687458962020162" border="0" /&gt;&lt;/a&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_S5G9fsfP18M/SFq9H8iuGVI/AAAAAAAAACM/KPSlPQxft3M/s1600-h/IMG_1793.JPG"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://2.bp.blogspot.com/_S5G9fsfP18M/SFq9H8iuGVI/AAAAAAAAACM/KPSlPQxft3M/s400/IMG_1793.JPG" alt="" id="BLOGGER_PHOTO_ID_5213687462843259218" border="0" /&gt;&lt;/a&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_S5G9fsfP18M/SFq-zclQQiI/AAAAAAAAACU/WtSDbF-w1c8/s1600-h/IMG_1812.JPG"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://2.bp.blogspot.com/_S5G9fsfP18M/SFq-zclQQiI/AAAAAAAAACU/WtSDbF-w1c8/s400/IMG_1812.JPG" alt="" id="BLOGGER_PHOTO_ID_5213689309689823778" border="0" /&gt;&lt;/a&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_S5G9fsfP18M/SFq-zgeRXTI/AAAAAAAAACc/378TcW8eAfM/s1600-h/IMG_1837.JPG"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://4.bp.blogspot.com/_S5G9fsfP18M/SFq-zgeRXTI/AAAAAAAAACc/378TcW8eAfM/s400/IMG_1837.JPG" alt="" id="BLOGGER_PHOTO_ID_5213689310734277938" border="0" /&gt;&lt;/a&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_S5G9fsfP18M/SFq-zrDTplI/AAAAAAAAACk/X6sx29ijjF0/s1600-h/IMG_1849.JPG"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://2.bp.blogspot.com/_S5G9fsfP18M/SFq-zrDTplI/AAAAAAAAACk/X6sx29ijjF0/s400/IMG_1849.JPG" alt="" id="BLOGGER_PHOTO_ID_5213689313573971538" border="0" /&gt;&lt;/a&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_S5G9fsfP18M/SFq-z-JLaFI/AAAAAAAAACs/TIMWdwzot2k/s1600-h/IMG_1858.JPG"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://3.bp.blogspot.com/_S5G9fsfP18M/SFq-z-JLaFI/AAAAAAAAACs/TIMWdwzot2k/s400/IMG_1858.JPG" alt="" id="BLOGGER_PHOTO_ID_5213689318698870866" border="0" /&gt;&lt;/a&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_S5G9fsfP18M/SFq-z6-8Z_I/AAAAAAAAAC0/ozxuVBBeT28/s1600-h/IMG_1870.JPG"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://4.bp.blogspot.com/_S5G9fsfP18M/SFq-z6-8Z_I/AAAAAAAAAC0/ozxuVBBeT28/s400/IMG_1870.JPG" alt="" id="BLOGGER_PHOTO_ID_5213689317850638322" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;亂入的同作品系列機：GN-001 Exia跟GN-003 Kyrios&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_S5G9fsfP18M/SFrAxU_EgcI/AAAAAAAAADU/PlioYzBp9kQ/s1600-h/IMG_1895.JPG"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://2.bp.blogspot.com/_S5G9fsfP18M/SFrAxU_EgcI/AAAAAAAAADU/PlioYzBp9kQ/s400/IMG_1895.JPG" alt="" id="BLOGGER_PHOTO_ID_5213691472314139074" border="0" /&gt;&lt;/a&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_S5G9fsfP18M/SFrAxgbp7DI/AAAAAAAAADc/WWA-8VwPn88/s1600-h/IMG_1897.JPG"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://4.bp.blogspot.com/_S5G9fsfP18M/SFrAxgbp7DI/AAAAAAAAADc/WWA-8VwPn88/s400/IMG_1897.JPG" alt="" id="BLOGGER_PHOTO_ID_5213691475386821682" border="0" /&gt;&lt;/a&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_S5G9fsfP18M/SFrAyDbcntI/AAAAAAAAADk/nJFKueHsoEQ/s1600-h/IMG_1904.JPG"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://1.bp.blogspot.com/_S5G9fsfP18M/SFrAyDbcntI/AAAAAAAAADk/nJFKueHsoEQ/s400/IMG_1904.JPG" alt="" id="BLOGGER_PHOTO_ID_5213691484781190866" border="0" /&gt;&lt;/a&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_S5G9fsfP18M/SFrAyaj1oUI/AAAAAAAAADs/CKL497hKcxQ/s1600-h/IMG_1912.JPG"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://3.bp.blogspot.com/_S5G9fsfP18M/SFrAyaj1oUI/AAAAAAAAADs/CKL497hKcxQ/s400/IMG_1912.JPG" alt="" id="BLOGGER_PHOTO_ID_5213691490990399810" border="0" /&gt;&lt;/a&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_S5G9fsfP18M/SFrAyiCXsbI/AAAAAAAAAD0/3I4INO3Ns2k/s1600-h/IMG_1945.JPG"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://2.bp.blogspot.com/_S5G9fsfP18M/SFrAyiCXsbI/AAAAAAAAAD0/3I4INO3Ns2k/s400/IMG_1945.JPG" alt="" id="BLOGGER_PHOTO_ID_5213691492997509554" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;嗯...的確拍的沒有很理想...不過這也比我自己亂拍好很多了...感謝你，Ray~不但很辛苦的幫忙拍照，還得教導我一些攝影基礎啊&lt;br /&gt;心得：果然還是比想像中要難很多，看來打光跟背景的問題是目前第一個要處理的問題！&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4332348533516593211-5285389281799441058?l=freedom-heero.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://freedom-heero.blogspot.com/feeds/5285389281799441058/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4332348533516593211&amp;postID=5285389281799441058' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4332348533516593211/posts/default/5285389281799441058'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4332348533516593211/posts/default/5285389281799441058'/><link rel='alternate' type='text/html' href='http://freedom-heero.blogspot.com/2008/06/gunplagn-002-gundam-dynames.html' title='GUNPLA第一彈～GN-002 Gundam Dynames'/><author><name>Heero</name><uri>http://www.blogger.com/profile/15484005945091463086</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_S5G9fsfP18M/SFq9GbeIqoI/AAAAAAAAABs/R2XCOCD3EUM/s72-c/IMG_1706.JPG' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4332348533516593211.post-8505303818005595896</id><published>2008-06-15T21:56:00.010+08:00</published><updated>2008-06-15T23:29:40.305+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Java'/><category scheme='http://www.blogger.com/atom/ns#' term='吃喝玩樂'/><title type='text'>Google Developer Day 2008~（會場花絮）</title><content type='html'>昨天是Google Developer Day 2008在台北舉辦的日子，算是一件大事吧，因為我看ZdNet跟ITHome的電子新聞在6/13的時候都有報導。不過昨天的天氣其實蠻糟糕的，一直都在下雨...一大早起來搭高鐵的時候就開始下，到了台北還是在下...所以最後就很懶的從市政府捷運站坐小黃過去台北國際會議中心。不過到的時候就看到有不少人在門口對著今天的招牌拍照留念了，所以我們當然也就插一腳囉～&lt;a dragover="true" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_S5G9fsfP18M/SFUhWWTDH3I/AAAAAAAAAAU/ntkIMsD2-7c/s1600-h/20080614%28002%29.jpg"&gt;&lt;img dragover="true" style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://4.bp.blogspot.com/_S5G9fsfP18M/SFUhWWTDH3I/AAAAAAAAAAU/ntkIMsD2-7c/s320/20080614%28002%29.jpg" alt="" id="BLOGGER_PHOTO_ID_5212108811577532274" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;哈～同事Jack忍住沒吃早餐的飢餓，來擔當照片男主角。一進去大廳，果然是蠻多人的啊～跟前年的JavaTwo有的比。報到後想說要快點進去聽開幕的主題演講，沒想到...居然被趕出來！原來...是場地太小...所以晚到的人只能去另外的較小的演講廳看實況轉播....@#$%...。在主題演講中，Google台灣研究所所長簡立峰先生也提到，報名的人數遠超出他們的預估，所以預定的場地完全不夠用...Google啊～你們未免也太小看自己了吧～&lt;br /&gt;&lt;br /&gt;在主題演講之後的中場休息，到場外晃晃，馬上就見識到所謂的「百步之內必有食物」，Google!，算你狠！有Google mark的冰箱，沒看過～拍一張。帥氣人學弟，做男主角。&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_S5G9fsfP18M/SFUjkph4E_I/AAAAAAAAAAc/eb7tPDnT-cc/s1600-h/20080614%28003%29.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://2.bp.blogspot.com/_S5G9fsfP18M/SFUjkph4E_I/AAAAAAAAAAc/eb7tPDnT-cc/s320/20080614%28003%29.jpg" alt="" id="BLOGGER_PHOTO_ID_5212111256281420786" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;冰箱裡都是Coke Cola跟雪碧，自己取用啦～兩旁還有兩個鐵架，上面也都是滿滿的零食，也都是自己取用啦...當自己家，別客氣啊～&lt;br /&gt;&lt;br /&gt;Google的休息區就是這樣嗎？怎麼可能！當然，有吃就有有玩囉～Google非常了解大家的在現場擺了一台Wii跟XBOX360~當然也準備了沙發，讓大家可以舒服的玩囉～(可惡！忘記帶片子來了...)&lt;a dragover="true" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_S5G9fsfP18M/SFUkuahJxDI/AAAAAAAAAAk/WlNBeCwWNkk/s1600-h/20080614%28004%29.jpg"&gt;&lt;img dragover="true" style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://2.bp.blogspot.com/_S5G9fsfP18M/SFUkuahJxDI/AAAAAAAAAAk/WlNBeCwWNkk/s320/20080614%28004%29.jpg" alt="" id="BLOGGER_PHOTO_ID_5212112523562173490" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;休息區裡面還有一堆懶骨頭跟氣球讓大家坐。帥氣人當然也就上去湊湊熱鬧了（手上還有Google招待的雪碧XD）。帥氣人，你看到沒，你後面的帥哥被你嚇到了!&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_S5G9fsfP18M/SFUmAPKpBuI/AAAAAAAAAAs/SjL3CEKWNmk/s1600-h/20080614%28007%29.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://1.bp.blogspot.com/_S5G9fsfP18M/SFUmAPKpBuI/AAAAAAAAAAs/SjL3CEKWNmk/s320/20080614%28007%29.jpg" alt="" id="BLOGGER_PHOTO_ID_5212113929264236258" border="0" /&gt;&lt;/a&gt;可別小看這些東西啊～在場地座位不夠的時候，這些東西可是幫上大忙呢～&lt;br /&gt;&lt;br /&gt;人真的是大爆滿啊～據說總共是1千多人（我的序號都是1322了，我看搞不好有破1500）。所以，很多場次都是人多到要坐在地板.....&lt;br /&gt;&lt;br /&gt;最後，下午4點結束的時候，大家開始等著拿今天最期待的禮物：Google T-Shirt~&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_S5G9fsfP18M/SFUm9RuuKrI/AAAAAAAAAA0/i88ZAMYcyVU/s1600-h/20080614%28008%29.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://3.bp.blogspot.com/_S5G9fsfP18M/SFUm9RuuKrI/AAAAAAAAAA0/i88ZAMYcyVU/s320/20080614%28008%29.jpg" alt="" id="BLOGGER_PHOTO_ID_5212114977924459186" border="0" /&gt;&lt;/a&gt;看到了嗎？這還不是全部的人啊～只是我排很久之後拿到才拍的一部分人啊！衣服質料還不錯啦～整體來說，算是還ok啦～只是場地真的太小啦！&gt;_&lt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4332348533516593211-8505303818005595896?l=freedom-heero.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://freedom-heero.blogspot.com/feeds/8505303818005595896/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4332348533516593211&amp;postID=8505303818005595896' title='1 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4332348533516593211/posts/default/8505303818005595896'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4332348533516593211/posts/default/8505303818005595896'/><link rel='alternate' type='text/html' href='http://freedom-heero.blogspot.com/2008/06/google-developer-day-2008.html' title='Google Developer Day 2008~（會場花絮）'/><author><name>Heero</name><uri>http://www.blogger.com/profile/15484005945091463086</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_S5G9fsfP18M/SFUhWWTDH3I/AAAAAAAAAAU/ntkIMsD2-7c/s72-c/20080614%28002%29.jpg' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4332348533516593211.post-8062382224527179038</id><published>2008-06-09T22:54:00.003+08:00</published><updated>2008-06-09T23:40:44.770+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='吃喝玩樂'/><title type='text'>Go!廟東夜市！</title><content type='html'>之前同事就大力推薦，讓我口水流不停～週五晚上，跟室友研究了一下路線之後，找了最苦命的男人「丸仔」一起去（因為一時也找不到其他人....只有這傢伙剛好放假回家會經過台中...）。晚上8點才出發過去，但是由於之前研究的路線都是以機車為主，卻忘了丸仔現在是有車一族，所以還是照著機車路線前進，但是...還真是有夠遠...開到都覺得是不是迷路了.........還好還是到了豐原...但是還是搞不清楚在哪，所以最後還是靠我的室友老簡的幫忙～感謝你，老簡！&lt;br /&gt;&lt;br /&gt;到的時候，有點飄雨，不過還是沒澆熄我們的興趣～同事大力推薦的「清水排骨麵」「詹加泡泡冰」當然絕對是不能錯過的，所以當然開場就是清水排骨麵，而Happy ending就是泡泡冰啦。基本上，第一次碰到吃麵還得拿號碼牌的，果然夠屌～還好我們才等兩號，就可以入座。嗯～味道果然不錯，排骨煮的還蠻軟爛的，味道也很夠味，湯頭也蠻不錯，份量算是還好，不算很大碗，但是也夠吃了；如果說缺點的話，就是湯有一點點油，還有...座位太小XD。&lt;br /&gt;&lt;br /&gt;吃完之後怎麼可能就這樣準備ending，所以靠著老簡的推薦，我們又試了傳說中的蚵仔煎老店，一人叫一份，結果來的時候...我們後悔了...這...份量還真大啊！滿盤耶！...老闆...我才剛剛吃完排骨麵...這...要吃完它，有點難。基本上，份量當然是不用說，料的部份，空心菜跟蔥很多，蚵仔也不少，只是好像不是每個都很大顆。味道蠻不錯的，但是我真的蠻飽的，而且我得留點空間給泡泡冰啊...所以剩下了大概1/4吧...抱歉了，老闆～不過還真的像新聞講的，一份變成60!（排骨麵是80）&lt;br /&gt;&lt;br /&gt;之後，又買了路口的菱角酥，那真的也蠻不錯吃的！外表香酥，內在軟甜，算是相當不錯的零嘴，不過有點小貴，我們買了一點來吃，爭取最後時間XD。&lt;br /&gt;&lt;br /&gt;最後，終於到了最後的關頭，來到詹家泡泡冰，點了人氣最高的「雞蛋牛奶冰」。原來這就是泡泡冰，口感還蠻綿密的，雖然不像是冰淇淋那樣，但是也蠻接近了，而且相當的香，甜味也還ok（化成水的時候就覺得有點太甜）。不過缺點是就份量跟價錢來看是稍貴，但是考慮口感、口味，是還蠻值得的。嗯～果然是Happy ending~&lt;br /&gt;&lt;br /&gt;整晚的收穫還算不錯，吃得相當的滿足～但是最大的缺點，當天晚上一直處於下小雨的狀態....還有對那邊不熟，不知道去哪逛...看來下次還是得靠老簡帶路了。&lt;br /&gt;&lt;br /&gt;另外，大力感謝Anne大大的強力友情推薦！&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4332348533516593211-8062382224527179038?l=freedom-heero.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://freedom-heero.blogspot.com/feeds/8062382224527179038/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4332348533516593211&amp;postID=8062382224527179038' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4332348533516593211/posts/default/8062382224527179038'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4332348533516593211/posts/default/8062382224527179038'/><link rel='alternate' type='text/html' href='http://freedom-heero.blogspot.com/2008/06/go.html' title='Go!廟東夜市！'/><author><name>Heero</name><uri>http://www.blogger.com/profile/15484005945091463086</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4332348533516593211.post-6024590321436326895</id><published>2008-06-09T20:55:00.004+08:00</published><updated>2008-06-09T22:54:22.021+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='吃喝玩樂'/><title type='text'>從來沒有過的端午Wii Patry</title><content type='html'>今年端午剛好碰到是禮拜天，沒補假，讓人感到非常的悶...天氣也是讓人感到非常的悶...原本週六上午很累的被宅配大哥挖起來收我新買的鋼普拉，所以在中午過後想要很悠閒地把堆積如山的鋼普拉做一做...沒想到...才正準備開始前，原本背叛我的帥氣人學弟居然來電，找我去他的狗窩一起party。這可真的讓我為難了，經過漫長的思考（大概30秒左右），我還是去了..........&lt;br /&gt;&lt;br /&gt;這真是一場非常小的party...只有我、帥氣人學弟以及許久不見的money大大（其實也不是很熟），大家一起玩了「超級猴子球」「馬力歐派對8」，第一次見識「馬力歐派對8」，真沒想到這game這樣可怕，有著讓大家翻臉的能耐。基本上我只能說...帥氣人...難道你不知道一直贏學長跟學姐，會讓人不爽嗎？尤其money大大臉都已經臭掉了XD，難怪你會一直喊沒錢，因為你一直得罪「money」啊～而Money大大，您的運氣也真的是有夠背的，我看要找到比妳背的也不容易了～哈哈～&lt;br /&gt;&lt;br /&gt;就這樣，在我前往廟東夜市之前，我們在廝殺聲與漫罵聲中，度過一個有趣的下午。帥氣人、money大大，感謝你們！&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4332348533516593211-6024590321436326895?l=freedom-heero.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://freedom-heero.blogspot.com/feeds/6024590321436326895/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4332348533516593211&amp;postID=6024590321436326895' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4332348533516593211/posts/default/6024590321436326895'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4332348533516593211/posts/default/6024590321436326895'/><link rel='alternate' type='text/html' href='http://freedom-heero.blogspot.com/2008/06/wii-patry.html' title='從來沒有過的端午Wii Patry'/><author><name>Heero</name><uri>http://www.blogger.com/profile/15484005945091463086</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4332348533516593211.post-1620991719327460679</id><published>2008-04-28T01:04:00.002+08:00</published><updated>2008-04-28T01:41:33.869+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Ubuntu'/><title type='text'>字型設定 for Ubuntu 8.04</title><content type='html'>Ubuntu 8.04 LTS終於在4/24正式release了。但是之前在RC版裡碰到的字型問題還是一樣，所以我就展開的許多次的實驗，看到眼睛都快脫窗了...&lt;br /&gt;在8.04的/etc/fonts/conf.d中的字型設定跟之前的有許多的不同，除了很多人有提到的原本的/etc/fonts/language-selector.conf已經不存在，而被拆散成多份設定放到/etc/fonts/conf.d中（29-language-selector-zh.conf, 69-language-selector-zh-tw.conf, 99-language-selector-zh.conf）另外一個比較大的改變是多了幾個10開頭的設定檔（10-antialias.conf, 10-hinting.conf, 10-hinting-medium.conf, 10-no-sub-pixel.conf），當然可能其他設定檔也有改變，但是我就沒有一一對照了。因此，如果只用之前的字型設定方式，你會看到令人吐血的結果...（至少我的情況是那樣）。在多次測試之後，終於找出一個可以調回與之前7.10差不多的效果，作法其實很簡單，就是把conf.d中的字型設定還原到跟7.10差不多。所以作法大概如下：&lt;br /&gt;&lt;ol&gt;&lt;li&gt;刪除那些10開頭的設定檔，可以放心刪除，因為他們只是連結，真正的檔案內容放在/etc/fonts/conf.avail。&lt;blockquote style="color: rgb(51, 51, 255);"&gt;sudo rm /etc/fonts/conf.d/10-*&lt;/blockquote&gt;&lt;/li&gt;&lt;li&gt;刪除上述提到那三個language-selector.conf:&lt;blockquote style="color: rgb(51, 51, 255);"&gt;sudo rm 29-language-selector-zh.conf&lt;br /&gt;sudo rm 69-language-selector-zh-tw.conf&lt;br /&gt;sudo rm 99-language-selector-zh.conf&lt;/blockquote&gt;&lt;/li&gt;&lt;li&gt;把自己的字型設定檔連結到/etc/fonts/conf.d, 假設字型設定檔為/home/xxxx/.fonts/myfonts.conf：&lt;blockquote style="color: rgb(51, 51, 255);"&gt;sudo ln -s /home/xxxx/.fonts/myfonts.conf 99-myfonts.conf&lt;/blockquote&gt;，&lt;span style="color: rgb(255, 102, 0);"&gt;注意：開頭要為99，這跟以前的講法不一樣，以前是要越小越好，但是測試結果用小數字反而無效&lt;/span&gt;&lt;/li&gt;&lt;li&gt;重啟X-window就可以看到成果&lt;/li&gt;&lt;/ol&gt;步驟很簡單，但是有一點需要注意的就是，字型設定檔中，若是有使用&lt;alias&gt;來做字型別名的設定的話，那在8.04中，那個寫法可能會得不到所要的結果，所以必須用其他寫法，寫法可以參考69-language-selector-zh-tw.conf中的寫法&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4332348533516593211-1620991719327460679?l=freedom-heero.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://freedom-heero.blogspot.com/feeds/1620991719327460679/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4332348533516593211&amp;postID=1620991719327460679' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4332348533516593211/posts/default/1620991719327460679'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4332348533516593211/posts/default/1620991719327460679'/><link rel='alternate' type='text/html' href='http://freedom-heero.blogspot.com/2008/04/for-ubuntu-804.html' title='字型設定 for Ubuntu 8.04'/><author><name>Heero</name><uri>http://www.blogger.com/profile/15484005945091463086</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4332348533516593211.post-8346853225971942582</id><published>2008-04-22T10:44:00.003+08:00</published><updated>2008-04-23T16:15:18.654+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Ubuntu'/><title type='text'>Ubuntu 8.04 LTS RC使用小心得</title><content type='html'>上週末終於發表了8.04 RC版了，看了一些人的使用心得，讓我也忍不住的想嘗試一番。所以鼓起了勇氣，升級上去了。基本上，升級的過程沒有什麼問題，算是很平順，除了某些軟體會詢問是否保留原有的設定。而升級之後，老實說並沒有太大的差異感覺，執行速度上感覺也跟7.10差不多（看來新的kernel 2.6.24並沒有太多效能上的改進）。不過在Gnome的軟體上到是有比較多的不同，不過感覺主要還是在介面與操作感的差異。不過仍有幾項問題讓我感到有些困擾：&lt;br /&gt;&lt;ol&gt;&lt;li&gt;字型設定與7.10的差異頗大：原本使用於7.10的設定，套用到8.04時，呈現的卻得不到原本的效果，試了很久，但是到目前還是找不到比較合適的設定&lt;/li&gt;&lt;li&gt;怪異的dbus-daemon問題：原本沒有發現，是在測試字型設定時發現的，就是每當我重啟xwindow時，原本的dbus-daemon process並不會消失，而是會在重新產生一個，所以重啟越多次，就會積存越多，而一些與dbus-daemon相關的process也會被留置在memory中。目前只能手動去刪除（還不能刪錯）。目前是透過gnome-system-monitor發現這問題的，所以到底是不是真的有這問題，還是只是gnome-system-monitor的顯示問題，還需進一步確認&lt;/li&gt;&lt;li&gt;gnome-system-monitor的調整優先權功能似乎無法正常作用&lt;/li&gt;&lt;li&gt;pulseaudio原本無法啟動；後來發現是自己的Home目錄下的.pulse跟.pulse-cookies的owner變成root，所以導致無法啟用，目前可以順利啟動了&lt;/li&gt;&lt;li&gt;AWN跟Compiz-fusion運作有問題，但是後來刪除原本版本，再重新安裝最新版本就OK了&lt;/li&gt;&lt;li&gt;原本應用Gnome 2.20的icon theme，在Gnome 2.22上使用會有些些小問題，某些圖示的對應會跟之前不一樣。（看來2.20跟2.22在這方面也是有些修改吧）&lt;/li&gt;&lt;/ol&gt;以上就是讓我感覺比較不方便與麻煩的幾點，有的其實也不是很嚴重的問題，只是感覺的問題。整體上來說，系統還算是十分穩定的。期待正式版的到來～&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4332348533516593211-8346853225971942582?l=freedom-heero.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://freedom-heero.blogspot.com/feeds/8346853225971942582/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4332348533516593211&amp;postID=8346853225971942582' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4332348533516593211/posts/default/8346853225971942582'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4332348533516593211/posts/default/8346853225971942582'/><link rel='alternate' type='text/html' href='http://freedom-heero.blogspot.com/2008/04/ubuntu-804-lts-rc.html' title='Ubuntu 8.04 LTS RC使用小心得'/><author><name>Heero</name><uri>http://www.blogger.com/profile/15484005945091463086</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4332348533516593211.post-6463026424242689027</id><published>2008-03-12T16:02:00.002+08:00</published><updated>2008-03-12T16:23:49.906+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Ubuntu'/><title type='text'>Solution for Ubuntu laptop-mode harddisk bug</title><content type='html'>根據&lt;a href="https://launchpad.net/ubuntu/+source/acpi-support/+bug/59695"&gt;High frequency of load/unload cycles on some hard disks may shorten lifetime&lt;/a&gt;此bug的說明，當notebook使用電池模式的時候，可能會造成硬碟壽命的耗損。這的確非常的嚇人...所幸目前已經有一些解決方案，以下是處理的步驟：&lt;br /&gt;&lt;ol&gt;&lt;li&gt;確認是否有安裝&lt;span style="color: rgb(255, 102, 0);"&gt;laptop-mode-tools&lt;/span&gt;，如果沒有，請用synaptic或是apt-get安裝&lt;/li&gt;&lt;li&gt;修改/etc/default/acpi-support的以下內容: &lt;blockquote&gt;ENABLE_LAPTOP_MODE=&lt;span style="font-weight: bold;"&gt;true&lt;/span&gt;&lt;/blockquote&gt;&lt;/li&gt;&lt;li&gt;修改/etc/laptop-mode/laptop-mode.conf :&lt;blockquote&gt;CONTROL_HD_POWERMGMT=&lt;span style="font-weight: bold;"&gt;1&lt;/span&gt;&lt;br /&gt;LM_AC_HD_POWERMGMT=&lt;span style="font-weight: bold;"&gt;254&lt;/span&gt;&lt;br /&gt;NOLM_AC_HD_POWERMGMT=&lt;span style="font-weight: bold;"&gt;254&lt;/span&gt;&lt;/blockquote&gt;，以下的修改只是減少laptop-mode下的耗電：&lt;blockquote&gt;CONTROL_NOATIME=&lt;span style="font-weight: bold;"&gt;1&lt;/span&gt;&lt;/blockquote&gt;&lt;/li&gt;&lt;/ol&gt;以上的修改資訊是參考自 &lt;a href="http://vale.homelinux.net/wordpress/?p=199"&gt;Potential risk for your NX6325』s harddrive, and a solution&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4332348533516593211-6463026424242689027?l=freedom-heero.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://freedom-heero.blogspot.com/feeds/6463026424242689027/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4332348533516593211&amp;postID=6463026424242689027' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4332348533516593211/posts/default/6463026424242689027'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4332348533516593211/posts/default/6463026424242689027'/><link rel='alternate' type='text/html' href='http://freedom-heero.blogspot.com/2008/03/solution-for-ubuntu-laptop-mode.html' title='Solution for Ubuntu laptop-mode harddisk bug'/><author><name>Heero</name><uri>http://www.blogger.com/profile/15484005945091463086</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4332348533516593211.post-4062383301487262046</id><published>2008-03-01T03:42:00.004+08:00</published><updated>2008-03-03T15:31:09.693+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Linux'/><category scheme='http://www.blogger.com/atom/ns#' term='Ubuntu'/><title type='text'>手動安裝JDK與Eclipse</title><content type='html'>雖然說Sun後來有推出for Ubuntu的Java相關套件（JDK, JRE, Glassfish, NetBeans），但是官方套件庫裡的套件更新似乎很慢。所以想要用最新的Java環境，還是自己手動安裝比較快。以下是我自己參考網路上各偏的作法而整理出來的手動安裝步驟，我個人預設的Java環境的安裝路徑都是在/opt下，此範例使用的是jdk-6u10-ea-bin-b12-linux-i586-19_feb_2008：&lt;br /&gt;&lt;ol&gt;&lt;li&gt;安裝JDK&lt;/li&gt;&lt;ol&gt;&lt;li&gt;先去Sun網站抓取jdk檔案，Ubuntu的話抓取bin檔，不要抓取RPM檔。抓完之後，將賦予檔案「執行」的權限。然後在Console視窗下執行，就可以解出jdk的資料夾(jdk1.6.0_10)。&lt;/li&gt;&lt;li&gt;在Console視窗下用chown將jdk資料夾的擁有者與群組更改為root：&lt;blockquote&gt;sudo chown -R root:root jdk1.6.0_10&lt;/blockquote&gt;，然後將jdk資料夾搬移到/opt下：&lt;blockquote&gt;sudo mv jdk1.6.0_10 /opt&lt;/blockquote&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;在/opt下建立一個符號連結，讓它指向jdk資料夾，如此一來以後更新jdk時，只要讓符號連結指向新的jdk資料夾即可：&lt;blockquote&gt;sudo ln -s /opt/jdk1.6.0_10 /opt/jdk6&lt;/blockquote&gt;&lt;/li&gt;&lt;li&gt;修改/etc/environment檔案，設定JAVA_HOME環境變數：&lt;blockquote&gt;JAVA_HOME=/opt/jdk6&lt;/blockquote&gt;，注意：此處的jdk路徑必定要指向剛剛建立的符號連結；然後修改/etc/profile，在檔案最後加上：&lt;blockquote&gt;export PATH=$JAVA_HOME/bin:$PATH&lt;/blockquote&gt;，這樣系統在尋找Java執行環境時，就可以我們手動安裝的為優先了&lt;/li&gt;&lt;li&gt;為了讓Swing/AWT的Java app可以正常顯示中文，我們必須到jdk資料夾(/opt/jdk6)中的jre/lib/fonts中作一些必要動作：&lt;blockquote&gt;sudo mkdir fallback&lt;br /&gt;cd fallback&lt;br /&gt;sudo ln -s /usr/share/fonts/truetype/arphic/uming.ttf&lt;br /&gt;sudo mkfontdir&lt;br /&gt;sudo mkfontscale&lt;/blockquote&gt;，此處的第三步驟的字型可以選用自己想要的&lt;/li&gt;&lt;li&gt;在Console視窗中輸入：&lt;blockquote&gt;sudo ln -s /opt/jdk6/jre/plugin/i386/ns7/libjavaplugin_oji.so  /usr/lib/firefox/plugins&lt;/blockquote&gt;；如果使用的是Swiftweasel而非firefox，則最後的目標資料夾改為/usr/lib/mozilla/plugins&lt;/li&gt;&lt;li&gt;（Optional）在Console視窗中輸入：&lt;blockquote&gt;sudo gedit /usr/share/applications/java_control_panel.desktop&lt;/blockquote&gt;，並且編輯檔案內容為：&lt;blockquote&gt;[Desktop Entry]&lt;br /&gt;Encoding=UTF-8&lt;br /&gt;Name=Java Control Panel&lt;br /&gt;Comment=Java Control Panel&lt;br /&gt;Exec=jcontrol&lt;br /&gt;Icon=sun_java.png&lt;br /&gt;Terminal=false&lt;br /&gt;Type=Application&lt;br /&gt;Categories=Application;Settings;Java;X-Red-Hat-Base;X-Ximian-Settings;&lt;/blockquote&gt;然後將/opt/jdk6/jre/plugin/desktop/sun_java.png複製到/usr/share/icons下，然後就可以發現在「系統」-&gt;「偏好設定」中會出現「Java Control Panel」的選項&lt;/li&gt;&lt;li&gt;完成以上設定之後，重新開機就可以正確的使用我們手動安裝的jdk了&lt;br /&gt;&lt;/li&gt;&lt;/ol&gt;&lt;li&gt;安裝Eclipse&lt;/li&gt;&lt;ol&gt;&lt;li&gt;去Eclipse的官網抓目前最新版的eclipse壓縮檔&lt;/li&gt;&lt;li&gt;將eclipse壓縮檔解開，設定擁有者與群組為root，並且賦予適當的存取權限：&lt;blockquote&gt;sudo chown -R root:root eclipse&lt;br /&gt;sudo chmod -R 777 eclipse&lt;br /&gt;sudo chmod +x `sudo find eclipse -type d`&lt;/blockquote&gt;，在此處我們給予eclipse資料夾（包含子資料夾）全部權限，如此才能在線上更新時進行寫入動作&lt;/li&gt;&lt;li&gt;將設定好的eclipse資料夾搬移到/opt之下：&lt;blockquote&gt;sudo mv eclipse /opt&lt;/blockquote&gt;&lt;/li&gt;&lt;li&gt;在/usr/bin下建立一個名為eclipse的啟動shell script，並賦予正確的權限：&lt;blockquote&gt;sudo gedit /usr/bin/eclipse&lt;br /&gt;sudo chmod 755 /usr/bin/eclipse&lt;/blockquote&gt;，而該shell script的內容為：&lt;blockquote&gt;#!/bin/sh&lt;br /&gt;#export MOZILLA_FIVE_HOME="/usr/lib/mozilla/"&lt;br /&gt;export ECLIPSE_HOME="/opt/eclipse"&lt;br /&gt;&lt;br /&gt;$ECLIPSE_HOME/eclipse $*&lt;/blockquote&gt;&lt;/li&gt;&lt;li&gt;建立一個GNOME的選單項目：&lt;blockquote&gt;sudo gedit /usr/share/applications/eclipse.desktop&lt;/blockquote&gt;，而eclipse.desktop的內容為：&lt;blockquote&gt;[Desktop Entry]&lt;br /&gt;Encoding=UTF-8&lt;br /&gt;Name=Eclipse&lt;br /&gt;Comment=Eclipse IDE&lt;br /&gt;Exec=eclipse&lt;br /&gt;Icon=/opt/eclipse/icon.xpm&lt;br /&gt;Terminal=false&lt;br /&gt;Type=Application&lt;br /&gt;Categories=GNOME;Application;Development;&lt;br /&gt;StartupNotify=true&lt;/blockquote&gt;&lt;/li&gt;&lt;li&gt;完成以上設定之後，就可以在「應用程式」-&gt;「軟體開發」中找到「Eclipse」的選項了&lt;/li&gt;&lt;/ol&gt;&lt;/ol&gt;以上就是手動安裝jdk跟eclipse的過程。&lt;br /&gt;優點：可以安裝最新版本的jdk與eclipse&lt;br /&gt;缺點：無法透過系統的套件管理程式來更新或是移除、重新安裝等的管理&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4332348533516593211-4062383301487262046?l=freedom-heero.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://freedom-heero.blogspot.com/feeds/4062383301487262046/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4332348533516593211&amp;postID=4062383301487262046' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4332348533516593211/posts/default/4062383301487262046'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4332348533516593211/posts/default/4062383301487262046'/><link rel='alternate' type='text/html' href='http://freedom-heero.blogspot.com/2008/03/jdkeclipse.html' title='手動安裝JDK與Eclipse'/><author><name>Heero</name><uri>http://www.blogger.com/profile/15484005945091463086</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4332348533516593211.post-7886715291494307570</id><published>2008-02-26T16:19:00.003+08:00</published><updated>2008-02-26T16:32:10.831+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Ubuntu'/><title type='text'>在Ubuntu 7.10中使用內建的Texas的5合一讀卡機</title><content type='html'>我的NB為Acer Aspire 5562 WXMi，有內建一個Texas的5合一讀卡機。之前都一直以為7.10預設已經有安裝並驅動了，所以有一天很開心的插入SD卡時，發現毫無反應，當場一陣錯愕...&lt;br /&gt;後來在一番Google之後，大概知道原因了：可能是7.10的kernel預設並沒有載入相關的driver module，所以只要去load driver module就可以，以下是設定步驟：&lt;br /&gt;&lt;ol&gt;&lt;li&gt;開啟console視窗並輸入&lt;blockquote&gt;lspci |grep Texas&lt;/blockquote&gt;，若是有結果有出現&lt;span style="color: rgb(255, 153, 0);"&gt;Mass storage controller: Texas Instruments 5-in-1 Multimedia Card Reader (SD/MMC/MS/MS PRO/xD)&lt;/span&gt;就表示內建的讀卡機是Texas的，而且已經被識別出&lt;/li&gt;&lt;li&gt;編輯&lt;span style="color: rgb(255, 102, 102);"&gt;/etc/modules&lt;/span&gt;然後加入以下module字串，讓kernel在開機時可以順利的去載入driver module：&lt;blockquote&gt;sdhci&lt;br /&gt;mmc_core&lt;br /&gt;mmc_block&lt;br /&gt;tifm_sd&lt;br /&gt;tifm_7xx1&lt;br /&gt;tifm_core&lt;/blockquote&gt;&lt;/li&gt;&lt;li&gt;修改完畢之後進行Reboot，然後應該就可以正常work了&lt;/li&gt;&lt;/ol&gt;這個方法目前確定可以在Ubuntu 7.10上使用，但是...是不是一定有用...這我就不知道了...總之，有Texas 5合一讀卡機的可以試試看&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4332348533516593211-7886715291494307570?l=freedom-heero.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://freedom-heero.blogspot.com/feeds/7886715291494307570/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4332348533516593211&amp;postID=7886715291494307570' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4332348533516593211/posts/default/7886715291494307570'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4332348533516593211/posts/default/7886715291494307570'/><link rel='alternate' type='text/html' href='http://freedom-heero.blogspot.com/2008/02/ubuntu-710texas5.html' title='在Ubuntu 7.10中使用內建的Texas的5合一讀卡機'/><author><name>Heero</name><uri>http://www.blogger.com/profile/15484005945091463086</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4332348533516593211.post-4633917169812800358</id><published>2008-02-26T15:47:00.003+08:00</published><updated>2008-02-26T16:32:41.103+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Ubuntu'/><title type='text'>Ubuntu 7.10 + ATI Catalyst 8.2 driver + Compiz-Fusion</title><content type='html'>AMD在去年10月份開始發佈支援AIGLX的fglrx driver，但是一直都不理想，所以一直還是使用舊的fglrx+Xgl來跑compiz-fusion。但是後來在一些forum中看到對8.2版的評價似乎稍微好一點，所以就抱著試試看的心態來安裝，果然是比之前好多了。以下是我自己參考各論壇與網站的安裝與設定方式：&lt;br /&gt;&lt;ol&gt;&lt;li&gt;參考此篇&lt;a href="http://wiki.cchtml.com/index.php/Ubuntu_Gutsy_Installation_Guide#Method_2:_Install_the_Catalyst_8.2_Driver_Manually"&gt;Ubuntu Gutsy Installation Guide&lt;/a&gt;的安裝方法2; 此篇中也有其他有關設定或是問題排解的部份可以參考，例如休眠與待機&lt;/li&gt;&lt;li&gt;安裝好driver之後，參考&lt;a href="http://wiki.cchtml.com/index.php/Ubuntu_Gutsy_Installation_Guide#3D_desktop_effects"&gt;3D desktop effects&lt;/a&gt;來修改compiz，讓compiz可以正常執行(若是安裝的compiz-fusion版本為0.6.99以上，則可以忽略此步驟)&lt;/li&gt;&lt;li&gt;編輯/etc/X11/xorg.conf，找到&lt;span style="color: rgb(51, 102, 255);"&gt;Section "Device"&lt;/span&gt;並加入以下內容：    &lt;blockquote&gt;&lt;/blockquote&gt;&lt;blockquote&gt;Option      "XaaNoOffscreenPixmaps" "on"&lt;br /&gt;   Option     "TexturedVideo" "on"&lt;br /&gt;   Option     "TexturedVideoSync" "True"&lt;br /&gt;   Option     "Textured2D" "on"&lt;br /&gt;   Option     "TexturedXrender" "on"&lt;br /&gt;   Option     "BackingStore" "on"&lt;/blockquote&gt;然後找到&lt;span style="color: rgb(51, 102, 255);"&gt;Section "Extensions"&lt;/span&gt;，並加入以下內容：&lt;blockquote&gt;Option "RENDER" "Enable"&lt;br /&gt;   Option "DAMAGE" "Enable"&lt;br /&gt;   Option "XVideo" "Enable" &lt;/blockquote&gt;&lt;br /&gt;&lt;/li&gt;&lt;li dragover="true"&gt;若是原先有安裝XGL的話，可以移除或是在~/.config/xserver-xgl建立一個空白檔案，檔名為disable，就可以關閉XGL的啟動&lt;/li&gt;&lt;/ol&gt;這次安裝之後，之前感覺一些scrollbar的遲緩問題好像是已經解決了，但是有關XVideo的支援問題還是無解，所以使用XVideo的播放軟體將無法正常播放（會一直閃爍），解決方法：可以用mplayer播放，播放裝置可以改為x11，效率會差一點但是至少是正常的；而有關3D應用程式的部份則還沒測試，所以暫時不知道結果。雖然仍不滿意，但是至少有稍微感受的AMD的一點點的誠意了，繼續期待下一版本的改進，不然...我看我也只好換NB了...&lt;br /&gt;&lt;br /&gt;PS1: compiz-fusion最好不要用非官方套件庫的版本，雖然一些私人套件庫裡的版本很新，但是個人測試的結果似乎不是很穩定&lt;br /&gt;PS2: 有關第三步驟，詳情可以參考&lt;strong&gt;   &lt;a href="http://forum.compiz-fusion.org/showthread.php?t=6794"&gt;Setup an ATI card with the new FGLRX drivers for Compiz-Fusion&lt;/a&gt;&lt;/strong&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4332348533516593211-4633917169812800358?l=freedom-heero.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://freedom-heero.blogspot.com/feeds/4633917169812800358/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4332348533516593211&amp;postID=4633917169812800358' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4332348533516593211/posts/default/4633917169812800358'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4332348533516593211/posts/default/4633917169812800358'/><link rel='alternate' type='text/html' href='http://freedom-heero.blogspot.com/2008/02/ubuntu-710-ati-catalyst-82-driver.html' title='Ubuntu 7.10 + ATI Catalyst 8.2 driver + Compiz-Fusion'/><author><name>Heero</name><uri>http://www.blogger.com/profile/15484005945091463086</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4332348533516593211.post-7758932584214481147</id><published>2008-02-22T23:32:00.003+08:00</published><updated>2008-02-23T00:45:57.759+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Linux'/><category scheme='http://www.blogger.com/atom/ns#' term='Ubuntu'/><title type='text'>使用mplayer來產生影像檔的縮圖</title><content type='html'>&lt;div dragover="true" style="text-align: left;"&gt;在Gnome的桌面環境中，Nautilus也有類似Windows檔案總管的縮圖功能，而且也是都支援圖檔跟影像檔。但是由於Nautilus是透過Totem來產生縮圖，而Totem目前有兩個版本：一個是透過GStreamer，一個則是透過xine來播放。xine版本支援度跟效率似乎好一點，但是最近新的update之後，似乎會無法對rmvb檔產生縮圖。而GStreamer版本則是對某些rmvb檔無法產生縮圖。因此我就上Google找了一下，發現有可以透過mplayer來產生縮圖的方式。mplayer在Linux中算是相當不錯的播放軟體，所以試了一下，感覺還不錯。&lt;a href="http://forum.ubuntu.org.cn/viewtopic.php?t=80385&amp;amp;sid=780577aa7ff8c8d8953efbc3e77d94d6"&gt;步驟主要是參考在ubuntu下如何實現全視頻文件預覽（使用mplayer 預覽）&lt;/a&gt;:&lt;br /&gt;&lt;ol&gt;&lt;li&gt;由於需要透過mplayer跟&lt;span class="postbody"&gt;imagemagick來產生縮圖，所以開啟Synaptic來安裝mplayer與imagemagick兩套件；若已經安裝，則可以跳過此一步驟&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span class="postbody"&gt;去&lt;a href="http://me2030581.googlepages.com/download_mplayer"&gt;Ravinder Rathi's Web Page&lt;/a&gt; 下載&lt;span style="color: rgb(255, 153, 102); font-weight: bold;"&gt;Mplayer-video-thumb&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span class="postbody"&gt;將下載回來的Mplayer-video-thumb解壓縮，然後進入解壓縮的資料夾中，開啟console視窗執行：&lt;/span&gt;&lt;span class="postbody"&gt; &lt;/span&gt;&lt;span class="postbody"&gt;&lt;/span&gt;&lt;blockquote&gt;&lt;span class="postbody"&gt;chmod 755 setup.sh&lt;/span&gt;&lt;span class="postbody"&gt;&lt;br /&gt;sudo ./setup.sh&lt;br /&gt;&lt;/span&gt;&lt;span class="postbody"&gt; ./gconf.sh&lt;/span&gt;&lt;span class="postbody"&gt;&lt;/span&gt;&lt;/blockquote&gt;&lt;span class="postbody"&gt;，這樣就完成安裝&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span class="postbody"&gt;然後執行以下指令來刪除舊的縮圖：&lt;/span&gt;&lt;blockquote&gt;&lt;span class="postbody"&gt;&lt;/span&gt;&lt;span class="postbody"&gt;&lt;/span&gt;&lt;/blockquote&gt;&lt;/li&gt;&lt;/ol&gt;&lt;blockquote&gt;&lt;blockquote&gt;&lt;span class="postbody"&gt; rm -rf $HOME/.thumbnails/large/ &lt;/span&gt;&lt;span class="postbody"&gt;&lt;/span&gt;&lt;span class="postbody"&gt;&lt;br /&gt;rm -rf $HOME/.thumbnails/normal/ &lt;/span&gt;&lt;br /&gt;rm -rf $HOME/.thumbnail/fail/gnome-thumbnail-factory/&lt;/blockquote&gt;&lt;span class="postbody"&gt;&lt;/span&gt;&lt;blockquote&gt;&lt;/blockquote&gt;&lt;span class="postbody"&gt;&lt;/span&gt;&lt;/blockquote&gt;&lt;span class="postbody"&gt;然後重新開始有影像檔的資料夾，就可以看到新的縮圖了&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;心得：透過mplayer來產生影像檔縮圖的效率還算不錯，不過似乎對某些mpg檔或是rm檔會無法產生，不過此類情況很少，不像Totem-GStreamer那麼嚴重&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4332348533516593211-7758932584214481147?l=freedom-heero.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://freedom-heero.blogspot.com/feeds/7758932584214481147/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4332348533516593211&amp;postID=7758932584214481147' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4332348533516593211/posts/default/7758932584214481147'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4332348533516593211/posts/default/7758932584214481147'/><link rel='alternate' type='text/html' href='http://freedom-heero.blogspot.com/2008/02/mplayer.html' title='使用mplayer來產生影像檔的縮圖'/><author><name>Heero</name><uri>http://www.blogger.com/profile/15484005945091463086</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4332348533516593211.post-6788478350743392475</id><published>2008-01-31T13:22:00.000+08:00</published><updated>2008-01-31T13:33:36.484+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Linux'/><category scheme='http://www.blogger.com/atom/ns#' term='Ubuntu'/><title type='text'>幫Opera安裝flash plugin</title><content type='html'>雖然說在Ubuntu Linux上用Firefox已經相當好用了，但是有些時候可能還是有些問題，此時或許可以用Opera來替代，但是預設安裝的Opera並沒有安裝flash plugin，所以必須手動安裝。之前網路上有一些安裝方法，不過有些似乎在Ubuntu 7.10就無效了。以下是我看到並且測試ok的新方法：&lt;br /&gt;&lt;ol&gt;&lt;li&gt;先去adobe官網下載最新的flash plugin for Linux，請抓.tar.gz的版本&lt;/li&gt;&lt;li&gt;解壓縮並執行flashplayer-installer.sh。此時，應該會將新的flash plugin安裝到~/.mozilla/plugins&lt;/li&gt;&lt;li&gt;到/usr/lib/opera/plugins下執行：&lt;blockquote&gt;sudo cp ~/.mozilla/plugins/libflashplayer.so . &lt;/blockquote&gt;將flash plugin複製到Opera的plugins中&lt;/li&gt;&lt;li&gt;重新啟動Opera，應該就可以看到flash的播放了&lt;br /&gt;&lt;/li&gt;&lt;/ol&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4332348533516593211-6788478350743392475?l=freedom-heero.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://freedom-heero.blogspot.com/feeds/6788478350743392475/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4332348533516593211&amp;postID=6788478350743392475' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4332348533516593211/posts/default/6788478350743392475'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4332348533516593211/posts/default/6788478350743392475'/><link rel='alternate' type='text/html' href='http://freedom-heero.blogspot.com/2008/01/operaflash-plugin.html' title='幫Opera安裝flash plugin'/><author><name>Heero</name><uri>http://www.blogger.com/profile/15484005945091463086</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4332348533516593211.post-9206149376153410180</id><published>2007-12-24T01:34:00.000+08:00</published><updated>2007-12-24T01:51:42.324+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Linux'/><category scheme='http://www.blogger.com/atom/ns#' term='Ubuntu'/><title type='text'>更換Ubuntu的Boot Usplash</title><content type='html'>Ubuntu boot usplash就是指開機時所看到的那個進度條的畫面。預設就是用Ubuntu的那個橘色進度條。以下是從網路上參考來的修改方法：&lt;br /&gt;&lt;ol&gt;&lt;li&gt;通常進度條的畫面都是以.so的檔案存在。所以把要更換的.so複製到&lt;span style="font-weight: bold;"&gt;/usr/lib/usplash&lt;/span&gt;中&lt;/li&gt;&lt;li&gt;用以下指令來替換symbolic link：&lt;blockquote style="font-weight: bold;"&gt;sudo ln -sf /usr/lib/usplash/[要替換的usplash].so /etc/alternatives/usplash-artwork.so&lt;/blockquote&gt;&lt;/li&gt;&lt;li&gt;用Startup manager修改開機畫面的解析度與color depth。注意：解析度與color depth務必符合所選用的usplash，否則將無法顯示&lt;/li&gt;&lt;li&gt;用以下指令更新GRUB：&lt;blockquote style="font-weight: bold;"&gt;sudo dpkg-reconfigure linux-image-$(uname -r)&lt;/blockquote&gt;&lt;/li&gt;&lt;li&gt;替換完畢之後，可以用&lt;blockquote style="font-weight: bold;"&gt;sudo usplash&lt;/blockquote&gt;查看是否替換成功。如果觀看完畢，可以按下&lt;span style="font-weight: bold;"&gt;Alt + F7&lt;/span&gt;切換回Xwindow。&lt;/li&gt;&lt;/ol&gt;方法雖然簡單，但是問題最大的還是在於選擇正確的解析度與color depth。所以更換完畢之後物必要查看一遍。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4332348533516593211-9206149376153410180?l=freedom-heero.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://freedom-heero.blogspot.com/feeds/9206149376153410180/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4332348533516593211&amp;postID=9206149376153410180' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4332348533516593211/posts/default/9206149376153410180'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4332348533516593211/posts/default/9206149376153410180'/><link rel='alternate' type='text/html' href='http://freedom-heero.blogspot.com/2007/12/ubuntuboot-usplash.html' title='更換Ubuntu的Boot Usplash'/><author><name>Heero</name><uri>http://www.blogger.com/profile/15484005945091463086</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4332348533516593211.post-1371515595321789470</id><published>2007-12-17T10:54:00.000+08:00</published><updated>2007-12-17T11:23:50.393+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Linux'/><category scheme='http://www.blogger.com/atom/ns#' term='Ubuntu'/><title type='text'>安裝類似Mac OS的Dock</title><content type='html'>Mac OS的Dock軟體一直都可以說是Mac OS的特色之一，在Windows平台上也有不少仿製品，雖然也都還不錯，但是畢竟還是做的不夠好。而在Linux上，之前試用過Kiba-Dock跟AWN，不過都覺得不是很好用，穩定性跟功能性都不理想，所以就放棄使用。不過最近看到還不少人推薦使用AWN的，所以又安裝一次，果然是變得很不一樣了。AWN全名為Avant Window Navigator，在Ubuntu上要安裝還蠻簡單的，以下是參考網路上其他人的安裝方法加上自己的心得的安裝步驟：&lt;br /&gt;&lt;ol&gt;&lt;li&gt;到Synaptic中的「套件庫」裡加上以下兩個套件庫網址：&lt;blockquote&gt;deb http://download.tuxfamily.org/syzygy42/ gutsy avant-window-navigator&lt;br /&gt;deb-src http://download.tuxfamily.org/syzygy42/ gutsy avant-window-navigator&lt;/blockquote&gt;&lt;/li&gt;&lt;li&gt;然後下載套件庫所需的金鑰&lt;blockquote&gt;http://download.tuxfamily.org/syzygy42/reacocard.asc&lt;/blockquote&gt;並且在Synaptic中匯入，完成以上兩個設定之後，進行套件庫的「重新載入」&lt;/li&gt;&lt;li&gt;然後安裝avant-window-navigator-bzr與awn-core-applets-bzr兩個套件，這兩個套件會有另外兩個相依的套件也需要安裝，所以總共是安裝4個套件&lt;/li&gt;&lt;/ol&gt;安裝結束即完成整個Avant Window Navigator的安裝。要啟動AWN的話，是必須從&lt;blockquote&gt;「應用程式」-&gt;「附屬應用程式」-&gt;「Avant Window Navigator」&lt;/blockquote&gt;來啟動；設定的話則是到&lt;blockquote&gt;「系統」-&gt;「偏好設定」-&gt;「Awn manager」&lt;/blockquote&gt;。&lt;br /&gt;軟體優點：&lt;br /&gt;&lt;ol&gt;&lt;li&gt;介面很特別、很漂亮&lt;/li&gt;&lt;li&gt;操作上也還算蠻方便的，雖然不是完全相似Mac OS的Dock，但是也還算蠻接近了（個人還蠻喜歡那種Shortcut也可以當成是開啟的task的這種呈現方式）&lt;/li&gt;&lt;/ol&gt;缺點：&lt;br /&gt;&lt;ol&gt;&lt;li&gt;穩定度還是欠佳（不過已經比以前好了）&lt;/li&gt;&lt;li&gt;memory使用量偏多：因為它的applet跟幾乎都是獨立的process，所以雖然本身使用量可能不多，但是加上applet的使用量，那就很驚人了&lt;/li&gt;&lt;li&gt;applet的數量與實用性偏低。core-applets雖然看起來有不少，但是實際比較有用的卻不多&lt;/li&gt;&lt;/ol&gt;整體來說，我還是給予蠻正面的評價的！不過使用上，由於他會與下方的taskbar的panel重疊到，所以會建議把下方的panel整個刪除，如果真的想拿來用的話。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4332348533516593211-1371515595321789470?l=freedom-heero.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://freedom-heero.blogspot.com/feeds/1371515595321789470/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4332348533516593211&amp;postID=1371515595321789470' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4332348533516593211/posts/default/1371515595321789470'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4332348533516593211/posts/default/1371515595321789470'/><link rel='alternate' type='text/html' href='http://freedom-heero.blogspot.com/2007/12/mac-osdock.html' title='安裝類似Mac OS的Dock'/><author><name>Heero</name><uri>http://www.blogger.com/profile/15484005945091463086</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4332348533516593211.post-3056966146547049077</id><published>2007-10-22T00:45:00.000+08:00</published><updated>2007-10-22T01:13:03.460+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Ubuntu'/><title type='text'>Ubuntu 7.10 released!</title><content type='html'>終於，在10/18傍晚，Ubuntu 7.10正式發佈了！大概在快一個月前有裝過測試版，當時就覺得很不錯，但是因為還有不少bug，不小心弄出問題，所以又裝回7.04。所以這次的release，讓我是又期待又怕受傷害。因為不知道那些問題是否都解決了。&lt;br /&gt;        後來，就先拿家裏的desktop來作實驗，用線上升級來安裝，安裝過程一切還算順利；而使用上，大致上也沒啥大問題，執行的效率也相當的好。不過有一點比較不一樣的，原本在7.04有lowlatency的kernel，到7.10卻沒有了，但是多了一個rt（realtime）的kernel？！而7.10已有內建Compiz-fusion了，而且版本還蠻新的，使用上也沒太大的問題（不過有些plugin的預設值跟之前不太一樣就是），整體上來說，還算滿意，所以在20號下午也透過DVD把notebook的7.04也升級了，不過DVD升級的速度好像也是很慢。目前已經確認的問題：&lt;br /&gt;&lt;ol&gt;&lt;li&gt;原本修改/etc/init.d/rc裡的CONCURRENCY=shell來加快開機速度，這方法目前在7.10會出問題，不管在我的desktop or notebook pc都已確認&lt;/li&gt;&lt;li&gt;ATI的fglrx driver無法在新的kernel上進行暫停與休眠，這是已經被確認的bug，目前大概只能等ATI的新driver，不然就是等kernel更新了&lt;/li&gt;&lt;li&gt;amsn如果是透過「作業階段」在開機登入時啟動的話，字型的大小會有問題（可能會大一號或是小一號），但是重開amsn就ok&lt;/li&gt;&lt;li&gt;Swiftfox會不穩（至少我在desktop跟notebook都碰到了）&lt;/li&gt;&lt;li&gt;7.10在「位置」選單有新增幾個捷徑，不過這些捷徑的建立與讀取似乎有點怪怪的：如果你用繁體中文，系統會自動用中文當目錄名稱，但是切換到不同語系時，可以轉換；但是就是無法只變換捷徑名稱，而不變換目錄名稱。而且，如果目錄被刪除後重建，捷徑就可能會無法重新出現&lt;/li&gt;&lt;/ol&gt;除了升級到7.10之外，前一陣子又看到一些有關file system的說法，所以又把file system換成JFS了。目前感覺用JFS似乎有比XFS快一點點，不過似乎有時候會有點點頓的情況發生，不過JFS的cpu usage有比XFS少，而且GRUB可以支援JFS，所以不用另外切一個ext3給/boot。不過目前似乎沒看到JFS的defrager，不過可能暫時還不需要吧. (XFS在做大量的讀寫之後，他的fragment factor會變得很大，那時候就可能需要作online defrag了；難怪之前用XFS時有越來越慢的感覺)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4332348533516593211-3056966146547049077?l=freedom-heero.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://freedom-heero.blogspot.com/feeds/3056966146547049077/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4332348533516593211&amp;postID=3056966146547049077' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4332348533516593211/posts/default/3056966146547049077'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4332348533516593211/posts/default/3056966146547049077'/><link rel='alternate' type='text/html' href='http://freedom-heero.blogspot.com/2007/10/ubuntu-710-released.html' title='Ubuntu 7.10 released!'/><author><name>Heero</name><uri>http://www.blogger.com/profile/15484005945091463086</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4332348533516593211.post-6853315062353435885</id><published>2007-10-22T00:21:00.000+08:00</published><updated>2007-10-22T00:45:29.596+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Java'/><title type='text'>Sun Tech Day - Java 2007參加心得</title><content type='html'>2007.10.19台灣昇陽公司在台北國際會議中心舉辦了今年的Java大會。原本在8月份的時候想說今年是不是停辦了，因為往年都是在7~8月份的時候辦，沒想到今年卻是拖到了10月中。今年的規模變小了，往年都是2天的議程，今年變成只有一天，不過費用也變便宜XD。另外今年的贊助廠商也變少許多，不過另一個好處是今年不像前兩年，有半強迫逛攤位的活動。今年的議題主要當然是Java(廢話！)，不過另一個主題應該是Solaris吧！除了在大會一開始的演講裡有不少對Solaris的推薦與吹捧，在當天的議程裡也有安排了兩場跟Solaris有關的，只是因為我個人目前還不需要去熟悉與了解Solaris，所以沒去～～。&lt;br /&gt;        老實說，今年的題目有些是不錯，但是講師的表現卻不是很理想。今年似乎大部分的場次都是由中國過來的Sun的講師主講居多？！然而，這些講師的表現，說實在的，只能說是「差強人意」，當天看到的幾個他們做的Demo，居然沒幾個是在沒出錯的情況下完成的...唉...。至於有關主題的心得，有去參與了JDK發展情況的那場，大致上對未來的JDK 7有更多一點的了解，算是還蠻期待的吧；而最讓我驚艷的，莫過於JavaFX那場了，雖然說講師並沒有講到太多有用的東西，但是那些Demo的效果實在是太驚人了！對JavaFX開始有更多的興趣與期待了！另一個覺得還不錯的，就是JavaME與Mobile Ajax、SVG的結合應用，感覺也是讓人耳目一新。&lt;br /&gt;        說真的，今年我並沒有去參與server-side相關的，除了最後一場有關SOA、BPEL。因為今年server-side上面的技術發展似乎沒有啥太大的改變。反倒是client-side上面的UI與互動性這方面的技術的進展，令人感到興奮！個人認為，JavaFX的出現讓原本在client-side比較貧弱的Java重新露出一線曙光，也許真的可以讓Sun也有機會與Adobe、M$一較高下也說不定。不過，就怕Sun自己又亂玩，把它搞砸了。現在心理想的，就是希望找個時間好好玩一下JavaFX～&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4332348533516593211-6853315062353435885?l=freedom-heero.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://freedom-heero.blogspot.com/feeds/6853315062353435885/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4332348533516593211&amp;postID=6853315062353435885' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4332348533516593211/posts/default/6853315062353435885'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4332348533516593211/posts/default/6853315062353435885'/><link rel='alternate' type='text/html' href='http://freedom-heero.blogspot.com/2007/10/sun-tech-day-java-2007.html' title='Sun Tech Day - Java 2007參加心得'/><author><name>Heero</name><uri>http://www.blogger.com/profile/15484005945091463086</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4332348533516593211.post-5304931765061236099</id><published>2007-09-27T00:20:00.000+08:00</published><updated>2007-09-28T00:52:22.139+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Linux'/><category scheme='http://www.blogger.com/atom/ns#' term='Ubuntu'/><title type='text'>Install nVidia VGA card driver in Ubuntu</title><content type='html'>自己之前在自己的notebook上安裝過數次Ubuntu，從6.06～7.04，所以深知ATI的顯示晶片在Linux上的支援度並不理想。之前就有聽說nVidia的卡就要好的多，所以這次利用空的HDD在我的desktop上安裝Ubuntu 7.04，不過似乎跟我想像的不太一樣，也是碰到不少麻煩。最後發現， 安裝nVidia顯示卡driver有兩大方式：&lt;br /&gt;&lt;ol&gt;&lt;li&gt;安裝套件庫內的driver:&lt;/li&gt;&lt;ol&gt;&lt;li&gt;這是最簡單的方式，可以使用synaptic或是在console視窗內使用apt-get來安裝。一般而言，&lt;span style="color: rgb(255, 102, 102);"&gt;最新的顯示卡是安裝nvidia-glx-new或是nvidia-glx；較舊的則是nvidia-glx-legacy&lt;/span&gt;。詳情可以參考：&lt;span style="text-decoration: underline;"&gt;&lt;a href="http://albertomilone.com/latest_nvidia_udsf_feisty.html#METHOD_1"&gt;HOWTO: Latest NVIDIA drivers  - Method 1&lt;/a&gt;&lt;br /&gt;&lt;/span&gt;&lt;/li&gt;&lt;/ol&gt;&lt;li&gt;手動安裝官方driver: 套件庫裡的drvier雖然比較好安裝，但是由於版本比較舊，所以比較可能有問題，對於最新的顯示晶片(Geforce 7xxx,8xxx系列)的支援也可能比較不夠。個人在參考過&lt;a href="http://albertomilone.com/latest_nvidia_udsf_feisty.html#METHOD_2"&gt;HOWTO: Latest NVIDIA drivers - Method 2&lt;/a&gt;跟&lt;a href="http://www.nvnews.net/vbulletin/showthread.php?t=72490"&gt;Installing NVIDIA Linux graphics drivers on recent distributions (FC, Ubuntu, etc)&lt;/a&gt;之後，大概發現只要完成幾個步驟就可以很輕鬆的安裝完成：&lt;/li&gt;&lt;ol&gt;&lt;li&gt;將需要的相關套件更新到最新版：&lt;blockquote style="color: rgb(255, 102, 102);"&gt;sudo apt-get install linux-headers-generic build-essential gcc xserver-xorg-dev pkg-config&lt;/blockquote&gt;，其中linux-headers請根據&lt;span style="color: rgb(255, 102, 102);"&gt;安裝的kernel種類&lt;/span&gt;來安裝，如lowlatency的kernel就必須安裝linux-headers-lowlatency&lt;/li&gt;&lt;li&gt;移除目前安裝的nVidia driver：&lt;/li&gt;&lt;li&gt;修改&lt;span style="color: rgb(255, 102, 102);"&gt;/etc/default/linux-restricted-modules-common&lt;/span&gt;，確定有以下內容：&lt;span style="color: rgb(255, 102, 102);"&gt;&lt;blockquote&gt;DISABLED_MODULES="nv nvidia_new"&lt;/blockquote&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;刪除以下檔案&lt;/li&gt;&lt;ol style="color: rgb(255, 102, 102);"&gt;&lt;li&gt;/etc/init.d/nvidia-glx&lt;/li&gt;&lt;li&gt;/etc/init.d/nvidia-kernel&lt;/li&gt;&lt;li&gt;/lib/linux-restricted-modules/.nvidia_new_installed&lt;/li&gt;&lt;/ol&gt;&lt;li&gt;&lt;blockquote&gt;&lt;span style="color: rgb(255, 102, 102);"&gt;sudo /etc/init.d/gdm stop&lt;/span&gt;&lt;/blockquote&gt;按下Ctrl+Alt+F1切換到console mode，然後登入後輸入&lt;/li&gt;&lt;li&gt;以sudo執行下載的nVidia官方driver安裝檔，所有的選擇都選擇Accept或是Yes，除了要求連線下載符合目前kernel的預先編譯好的driver。（若是只是更新driver，則最後的修改xorg.conf檔的部份也可以選擇No）&lt;/li&gt;&lt;li&gt;完成安裝後，可以輸入&lt;blockquote&gt;sudo /etc/init.d/gdm start&lt;/blockquote&gt;來重新啟動X-Window，或是重開機。若是安裝成功，則會看到X-Window的登入畫面。&lt;/li&gt;&lt;li&gt;進入X-Window之後，在console視窗輸入&lt;blockquote&gt;sudo gedit /usr/share/applications/NVIDIA-Settings.desktop&lt;/blockquote&gt;，然後填入以下內容之後存檔：&lt;blockquote&gt;[Desktop Entry]&lt;br /&gt;Name=NVIDIA Settings&lt;br /&gt;Comment=NVIDIA X Server Settings&lt;br /&gt;Exec=nvidia-settings&lt;br /&gt;Icon=&lt;br /&gt;StartupNotify=true&lt;br /&gt;Terminal=false&lt;br /&gt;Type=Application&lt;br /&gt;Categories=Application;System;&lt;/blockquote&gt;，然後就可以在「應用程式-&gt;系統」中找到nVidia的X server設定程式了（若是更新driver，則不需重複進行此步驟）&lt;/li&gt;&lt;li&gt;啟動nVidia X server設定程式，然後設定自己需要的設定&lt;/li&gt;&lt;/ol&gt;&lt;/ol&gt;基本上需要注意的事項也是不少，不過整體來說還不算太難安裝，有一點必須注意的是，在安裝driver之前一定要關閉gdm，否則也會導致安裝失敗。&lt;br /&gt;另外，有幾個常用的option可以設定&lt;span style="color: rgb(255, 102, 102);"&gt;在xorg.conf的Device or Screen&lt;/span&gt;區段內：&lt;br /&gt;&lt;ol&gt;&lt;li&gt;Option    "NoLogo" "true"        ---- 關閉進入X-Window時顯示的nVidia logo畫面&lt;/li&gt;&lt;li&gt;Option    "AddARGBGLXVisuals" "true"     ---- 避免在使用Compiz-fusion or Beryl時有視窗邊框消失的問題&lt;/li&gt;&lt;li&gt;Option    "Coolbits" "1"    ---- 啟動超頻選項&lt;/li&gt;&lt;/ol&gt;更詳盡的Option設定，可以參閱nVidia官網上的資料&lt;br /&gt;&lt;br /&gt;基本上，Nvidia對於Linux的支援真的是比ATI好太多了！透過AIGLX來跑Compiz-fusion的感覺就是不一樣，不但效率很好，也比較不吃resource。據說ATI也在開發支援AIGLX的driver，只是會是怎樣....很難想像啊...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4332348533516593211-5304931765061236099?l=freedom-heero.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://freedom-heero.blogspot.com/feeds/5304931765061236099/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4332348533516593211&amp;postID=5304931765061236099' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4332348533516593211/posts/default/5304931765061236099'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4332348533516593211/posts/default/5304931765061236099'/><link rel='alternate' type='text/html' href='http://freedom-heero.blogspot.com/2007/09/install-nvidia-vga-card-driver-in.html' title='Install nVidia VGA card driver in Ubuntu'/><author><name>Heero</name><uri>http://www.blogger.com/profile/15484005945091463086</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4332348533516593211.post-4752068280399677764</id><published>2007-09-17T17:36:00.000+08:00</published><updated>2007-09-17T18:16:45.187+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Java'/><category scheme='http://www.blogger.com/atom/ns#' term='Wicket'/><title type='text'>動態產生form欄位</title><content type='html'>在wicket中，幾乎所有的web元件都要有對應的html element+wicket id，因此要做到動態產生form內的欄位幾乎沒辦法。不過，最近同事在研究最新版的jtrac的source code，發現透過&lt;span style="color: rgb(51, 51, 255);"&gt;ListView + Fragment + BoundCompoundPropertyModel&lt;/span&gt;就可以做到：&lt;br /&gt;&lt;ul&gt;&lt;li&gt;ListView主要是用來作為動態新增項目layout的部份，因為它可以根據所給予的model或是List內的內容來產生應該要有的項目。&lt;/li&gt;&lt;li&gt;Fragment主要是用來簡化設計，因為原本Fragment就是一種不需要獨立的html template file的一種特殊Panel，所以可以運用來呈現每個ListItem裡的欄位&lt;/li&gt;&lt;li&gt;BoundCompoundPropertyModel主要是用來將POJO跟wicket component之間的綁定，採取更彈性的方式來實現。&lt;/li&gt;&lt;/ul&gt;事實上，應該不是只有以上3種東西的結合才做的出來，只是目前這三種東西的結合是比較容易的作法。主要的關鍵應該是在於如何在runtime的時候，才去產生form欄位的html與必要的code，這通常是需要像是ListView或是Loop這類可以重複產生item的元件。而雖然可以產生重複的item，但是item的內容還必須不一樣，所以才會需要Fragment（這邊也可以用Panel來達成，只是用Panel就會比較麻煩）。有了不同的item之後，另一個問題就是元件與實際data model之間的連結關係，使用BoundCompoundPropertyModel是可以用比較彈性的方式去做到，但是用其他的Model應該也可以，只是可能會比較困難。&lt;br /&gt;&lt;br /&gt;有一點需要注意的是：由於是透過ListView來產生item，所以當發生validate error時而回到form時，ListView是會重新再產生新的item，而新的item會去讀取model內的值。但是，由於validation失敗，所以model是不會被更新，所以所有的item都會回到一開始的值，而不是之前輸入的值，這對於很大的form來說是會對user造成困擾的。所幸，可以透過&lt;span style="color: rgb(51, 102, 255);"&gt;ListView&lt;/span&gt;的&lt;span style="color: rgb(51, 51, 255);"&gt;setReuseItem(true)&lt;/span&gt;來避免重新產生新的item，而是沿用先前產生的，所以就可以保留validation之前的輸入值。&lt;br /&gt;&lt;br /&gt;P.S: 雖然說理論上不一定要用ListView，但是由於所知只有ListView才有setReuseItems()，所以若是使用Loop或是其他非ListView的subclasses的元件，可能要自己想辦法處理重複產生新item的問題。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4332348533516593211-4752068280399677764?l=freedom-heero.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://freedom-heero.blogspot.com/feeds/4752068280399677764/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4332348533516593211&amp;postID=4752068280399677764' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4332348533516593211/posts/default/4752068280399677764'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4332348533516593211/posts/default/4752068280399677764'/><link rel='alternate' type='text/html' href='http://freedom-heero.blogspot.com/2007/09/form.html' title='動態產生form欄位'/><author><name>Heero</name><uri>http://www.blogger.com/profile/15484005945091463086</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4332348533516593211.post-5591756833413403134</id><published>2007-09-15T02:39:00.000+08:00</published><updated>2007-09-15T02:48:37.687+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Linux'/><category scheme='http://www.blogger.com/atom/ns#' term='Ubuntu'/><title type='text'>Google Desktop Search for Linux</title><content type='html'>Google desktop在Windows一直是蠻有名的軟體，而在前一陣子，他也終於推出for Linux的版本了。除了可以透過連到google的網頁去安裝以外，也支援apt的安裝方式，以下是安裝的步驟：&lt;br /&gt;&lt;ol&gt;&lt;li&gt;開啟console視窗並輸入# sudo wget &lt;a href="http://dl.google.com/linux/linux_signing_key.pub" target="_blank"&gt;http://dl.google.com/linux/linux_signing_key.pub&lt;/a&gt; -O- | sudo apt-key add -來匯入憑證&lt;/li&gt;&lt;li&gt;然後打開Synaptic，進到[設定]-&gt;[套件庫]-&gt;[Third party software]，加入 deb &lt;a href="http://dl.google.com/linux/deb/" target="_blank"&gt;http://dl.google.com/linux/deb/&lt;/a&gt; stable non-free&lt;/li&gt;&lt;li&gt;然後按下重新載入，然後就可以用搜尋找到Google desktop了&lt;/li&gt;&lt;/ol&gt;不過，有點可惜的是這個版本只有提供search的功能，沒有像Windows版那樣有很多豐富的小軟體可以使用&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4332348533516593211-5591756833413403134?l=freedom-heero.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://freedom-heero.blogspot.com/feeds/5591756833413403134/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4332348533516593211&amp;postID=5591756833413403134' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4332348533516593211/posts/default/5591756833413403134'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4332348533516593211/posts/default/5591756833413403134'/><link rel='alternate' type='text/html' href='http://freedom-heero.blogspot.com/2007/09/google-desktop-search-for-linux.html' title='Google Desktop Search for Linux'/><author><name>Heero</name><uri>http://www.blogger.com/profile/15484005945091463086</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4332348533516593211.post-2339192372146387534</id><published>2007-09-13T15:54:00.000+08:00</published><updated>2007-09-13T16:05:37.507+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Linux'/><category scheme='http://www.blogger.com/atom/ns#' term='Ubuntu'/><title type='text'>Ubuntu字型設定</title><content type='html'>原則上是參考&lt;span style="font-size:100%;"&gt;中文 fontconfig 設定檔裡的設定，但是由於這裡面的設定有些部份不是很喜歡，所以又自行修改了某些地方：&lt;br /&gt;&lt;/span&gt;&lt;ol&gt;&lt;li&gt;有關所有字型的AA、hinting、autohint：&lt;blockquote&gt;&amp;lt;match target="font"&gt;&lt;br /&gt;  &amp;lt;edit name="antialias" mode="assign"&gt;&lt;br /&gt;      &amp;lt;bool&gt;&lt;span style="color: rgb(255, 153, 102);"&gt;true&lt;/span&gt;&amp;lt;/bool&gt;&lt;br /&gt;  &amp;lt;/edit&gt;&lt;br /&gt;  &amp;lt;edit name="hinting" mode="assign"&gt;&lt;br /&gt;      &amp;lt;bool&gt;&lt;span style="color: rgb(255, 153, 102);"&gt;true&lt;/span&gt;&amp;lt;/bool&gt;&lt;br /&gt;  &amp;lt;/edit&gt;&lt;br /&gt;  &amp;lt;edit name="autohint" mode="assign"&gt;&lt;br /&gt;      &amp;lt;bool&gt;&lt;span style="color: rgb(255, 153, 102);"&gt;false&lt;/span&gt;&amp;lt;/bool&gt;&lt;br /&gt;  &amp;lt;/edit&gt;&lt;br /&gt;&amp;lt;/match&gt;&lt;/blockquote&gt;&lt;/li&gt;&lt;li&gt;關閉英文小字AA：&lt;blockquote&gt;&amp;lt;test name="pixelsize" compare="less"&gt;&lt;br /&gt;      &amp;lt;double&gt;&lt;span style="color: rgb(255, 153, 102);"&gt;8&lt;/span&gt;&amp;lt;/double&gt;&lt;br /&gt;  &amp;lt;/test&gt;&lt;/blockquote&gt;&lt;/li&gt;&lt;li&gt;關閉中文字體小字AA：&lt;blockquote&gt;&amp;lt;test name="pixelsize" compare="less_eq"&gt;&lt;br /&gt;      &amp;lt;double&gt;&lt;span style="color: rgb(255, 153, 102);"&gt;16&lt;/span&gt;&amp;lt;/double&gt;&lt;br /&gt;  &amp;lt;/test&gt;&lt;/blockquote&gt;&lt;/li&gt;&lt;/ol&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4332348533516593211-2339192372146387534?l=freedom-heero.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://freedom-heero.blogspot.com/feeds/2339192372146387534/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4332348533516593211&amp;postID=2339192372146387534' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4332348533516593211/posts/default/2339192372146387534'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4332348533516593211/posts/default/2339192372146387534'/><link rel='alternate' type='text/html' href='http://freedom-heero.blogspot.com/2007/09/ubuntu_13.html' title='Ubuntu字型設定'/><author><name>Heero</name><uri>http://www.blogger.com/profile/15484005945091463086</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4332348533516593211.post-4495696311768662593</id><published>2007-09-13T11:12:00.000+08:00</published><updated>2007-09-13T11:47:57.624+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Linux'/><category scheme='http://www.blogger.com/atom/ns#' term='Ubuntu'/><title type='text'>切換Touchpad開關</title><content type='html'>NB的Touchpad預設是一直開啟的，這對於喜歡使用滑鼠的我來說其實是種困擾。從google上找了一些資料之後，可以透過一些方式來做到類似Windows下的切換：&lt;br /&gt;&lt;ol&gt;&lt;li&gt;首先在/etc/X11/xorg.conf中找到以下區段：&lt;blockquote&gt;Section "InputDevice"&lt;br /&gt;    Identifier  "Synaptics Touchpad"&lt;/blockquote&gt;然後在該區段裡面加上&lt;blockquote&gt;Option    "SHMConfig" "on"&lt;/blockquote&gt;，之後重啟xwindow&lt;/li&gt;&lt;li&gt;可以在console視窗輸入&lt;blockquote&gt;&lt;code&gt;synclient TouchpadOff=1&lt;/code&gt;&lt;/blockquote&gt;&lt;code&gt;就可以關閉touchpad，&lt;/code&gt;&lt;blockquote&gt;&lt;code&gt;&lt;/code&gt;&lt;code&gt;&lt;/code&gt;&lt;code&gt;synclient TouchpadOff=0&lt;/code&gt;&lt;/blockquote&gt;&lt;code&gt;&lt;/code&gt;&lt;code&gt;則是開啟；或是執行&lt;/code&gt;&lt;blockquote&gt;/etc/acpi/asus-touchpad.sh&lt;/blockquote&gt;&lt;span style="font-family: Georgia,serif;"&gt;，系統會自動切換開啟狀態&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-family: Georgia,serif;"&gt;可在Compiz-fusion中設定熱鍵呼叫asus-touchpad.sh，效果更佳&lt;/span&gt;&lt;/li&gt;&lt;/ol&gt;P.S: 目前此作法沒辦法透過插拔滑鼠來切換touchpad的開關&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4332348533516593211-4495696311768662593?l=freedom-heero.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://freedom-heero.blogspot.com/feeds/4495696311768662593/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4332348533516593211&amp;postID=4495696311768662593' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4332348533516593211/posts/default/4495696311768662593'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4332348533516593211/posts/default/4495696311768662593'/><link rel='alternate' type='text/html' href='http://freedom-heero.blogspot.com/2007/09/touchpad.html' title='切換Touchpad開關'/><author><name>Heero</name><uri>http://www.blogger.com/profile/15484005945091463086</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4332348533516593211.post-8476291619212338136</id><published>2007-09-10T14:24:00.000+08:00</published><updated>2007-09-10T14:54:17.262+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Linux'/><category scheme='http://www.blogger.com/atom/ns#' term='Ubuntu'/><title type='text'>Replace Nautilus</title><content type='html'>Ubuntu預設是使用Gnome，而在Gnome裡預設是以nautilus作為file manager，但是nautilus比較肥大、比較慢。因此，也開始有更多light-weight file manager被開發，像是很有名的PCManFM即是其中之一。不過礙於Gnome的設計，是沒辦法直接更換file manager，必須用特別方式去更換。&lt;br /&gt;在這篇&lt;a href="http://www.psychocats.net/ubuntu/nonautilusplease"&gt;Changing the Default File Manager in Gnome&lt;/a&gt;中，介紹如何將nautilus替換成thunar或是Konqueror、Krusader，也有提供還原的方法，算是相當的簡單容易。不過可惜的是，裡面並未提供替換為pcmanfm的方法。&lt;br /&gt;&lt;br /&gt;個人是選用thunar，因為使用了pcmanfm之後，發現pcmanfm雖然速度很快，但是某些設計與功能感覺沒有thunar好用。不過thunar也有些不便之處與小問題：&lt;br /&gt;&lt;ol&gt;&lt;li dragover="true"&gt;不支援smb://這類的網址路徑，所以無法直接瀏覽網芳與ftp。（據說可以透過fusesmb來達到效果，不過我沒試過）&lt;/li&gt;&lt;li&gt;某些應用程式在透過thunar去開啟檔案再關閉之後，該程式會留下zombie，必須等到所有的thunar關閉之後會被清除。（不過似乎也不會對系統有不良影響）&lt;/li&gt;&lt;li&gt;thunar與nautilus兩者不能互相進行檔案的copy &amp;amp; paste&lt;/li&gt;&lt;/ol&gt;不過即使如此，thunar還是一個蠻輕量級而且功能的file manager！而且thunar在自訂action的部份與設定檔案開啟的預設程式部份也是蠻簡單的&lt;br /&gt;&lt;br /&gt;有關以pcmanfm來替換nautilus，可以參考&lt;a href="http://www.ubuntu.org.tw/modules/newbb/viewtopic.php?post_id=24645#forumpost24645"&gt;回覆: 請問 pcmanfm 取代 nautilus&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4332348533516593211-8476291619212338136?l=freedom-heero.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://freedom-heero.blogspot.com/feeds/8476291619212338136/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4332348533516593211&amp;postID=8476291619212338136' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4332348533516593211/posts/default/8476291619212338136'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4332348533516593211/posts/default/8476291619212338136'/><link rel='alternate' type='text/html' href='http://freedom-heero.blogspot.com/2007/09/replace-nautilus.html' title='Replace Nautilus'/><author><name>Heero</name><uri>http://www.blogger.com/profile/15484005945091463086</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4332348533516593211.post-3697890405991339452</id><published>2007-09-09T22:00:00.000+08:00</published><updated>2007-09-09T22:12:05.578+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Linux'/><category scheme='http://www.blogger.com/atom/ns#' term='Ubuntu'/><title type='text'>好用的media player</title><content type='html'>在Ubuntu裡，有很多meida player可以使用，其中最有名的應該是mplayer。但是，mplayer的設定並不容易，我也曾經吃過不少苦頭，所以也有不少軟體套件是用來作為mplayer的front-end。&lt;br /&gt;&lt;br /&gt;之前，看到網路上一些人的推薦，就抱持著實驗的心態去安裝一套叫做smplayer，這個套件並不存在於官方的Repository裡，但是在GetDeb網站上找的到。而目前官網上最新的版本是0.5.46。安裝此套件之前必須先安裝mplayer以及相關的codec。&lt;br /&gt;&lt;br /&gt;使用心得：操作介面比原本的mplayer還要親切順手，執行效率也還不錯。個人認為透過smplayer來使用mplayer是目前在Ubuntu上最棒的多媒體播放器（當然是指播放video）&lt;br /&gt;&lt;br /&gt;P.S:有一點很特別，在使用Xgl + Beryl(or Compiz-fusion)的環境裡，原本用mplayer是無法設定video driver為xv, 但是在smplayer卻可以？！&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4332348533516593211-3697890405991339452?l=freedom-heero.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://freedom-heero.blogspot.com/feeds/3697890405991339452/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4332348533516593211&amp;postID=3697890405991339452' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4332348533516593211/posts/default/3697890405991339452'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4332348533516593211/posts/default/3697890405991339452'/><link rel='alternate' type='text/html' href='http://freedom-heero.blogspot.com/2007/09/media-player.html' title='好用的media player'/><author><name>Heero</name><uri>http://www.blogger.com/profile/15484005945091463086</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4332348533516593211.post-7901666833532277674</id><published>2007-09-09T21:46:00.000+08:00</published><updated>2007-09-09T22:14:10.264+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Ubuntu'/><title type='text'>Ubuntu套件收集網站</title><content type='html'>有個不錯的Ubuntu套件收集網站，叫做&lt;a href="http://www.getdeb.net"&gt;GetDeb&lt;/a&gt;，有收集整理各版本的Ubuntu的軟體套件，收集的軟體套件有些還蠻實用的。不過可惜的是這個網站並沒有提供Repository，所以只能自己下載deb檔來安裝，而且上面的版本可能也不是最新的。不過整體來說，他還是提供一個很方便的平來，可以讓Ubuntu的使用者找尋自己需要的軟體&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4332348533516593211-7901666833532277674?l=freedom-heero.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://freedom-heero.blogspot.com/feeds/7901666833532277674/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4332348533516593211&amp;postID=7901666833532277674' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4332348533516593211/posts/default/7901666833532277674'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4332348533516593211/posts/default/7901666833532277674'/><link rel='alternate' type='text/html' href='http://freedom-heero.blogspot.com/2007/09/ubuntu_09.html' title='Ubuntu套件收集網站'/><author><name>Heero</name><uri>http://www.blogger.com/profile/15484005945091463086</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4332348533516593211.post-5262920283668823750</id><published>2007-09-06T10:52:00.000+08:00</published><updated>2007-09-06T11:28:34.437+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Java'/><title type='text'>Eclipse &amp; Ant</title><content type='html'>Eclipse是一套相當受歡迎的IDE，他的refactoring跟code completion做的相當不錯，而且也有許多不錯用的plugin，重點還是免費的（不過老實說，他其他的很多功能並不好用，而且3.2版之後似乎越來越肥大）。Ant是許多Java developer常用的工具，在Netbeans跟Eclipse都有支援。事實上，透過Ant，可以來協助解決很多Eclipse本身沒做好的事。但是，問題在於Ant所需要的build.xml並不容易撰寫，常常可能會發生為了作一件小事，結果花費很多時間去撰寫build.xml。所幸，Eclipse本身有支援將project export出build.xml的功能，透過此功能就可以將使用中的project的相關的設定（像是lib設定等等）一併產生。因此，我們只需要在匯出的build.xml上再加上我們所需要的target去執行我們要的task即可。&lt;br /&gt;以下列出幾個在開發Java project常用的target的語法：&lt;br /&gt;&lt;ol&gt;&lt;li&gt;產生jar:&lt;blockquote&gt;&amp;lt;target name="build-jar" depends="build-project"&gt;&lt;br /&gt;            &amp;lt;jar destfile="your_jar.jar" basedir="${basedir}/build/classes" compress="true"&gt;&amp;lt;/jar&gt;&lt;br /&gt;&amp;lt;/target&gt;&lt;/blockquote&gt;&lt;/li&gt;&lt;li&gt;產生javadoc:&lt;blockquote&gt;&amp;lt;target name="build-docs" depends="build-project" description="--&gt; build-docs"&gt;&lt;br /&gt;        &amp;lt;javadoc author="true" source="1.5" classpathref="Your_project.classpath" sourcepath="${basedir}/src"  destdir="${basedir}/doc" charset="UTF-8" version="true" packagenames="*"&gt;&lt;br /&gt;            &amp;lt;link href="http://java.sun.com/j2se/1.5.0/docs/api/"/&gt;&lt;br /&gt;        &amp;lt;/javadoc&gt;&lt;br /&gt;    &amp;lt;/target&gt;&lt;/blockquote&gt;其中，classpathref可以填入由eclipse幫忙產生的路徑變數，通常是以你的proejct_name.classpath命名。&lt;br /&gt;&lt;/li&gt;&lt;li&gt;產生war:war的建立比前兩個稍微複雜，原因在於third-party lib的import，ant的war task並沒有辦法以&amp;lt;path&gt;來讀取project有用到的lib路徑。所以我們必須自行把這些lib先複製到某個資料夾之後，在用war task去建立war檔，建立完畢之後再刪除。&lt;blockquote&gt;&amp;lt;target name="build-war" depends="build-project" description="--&gt; description"&gt;&lt;br /&gt;        &amp;lt;copy todir="${basedir}/WebContent/WEB-INF/lib" flatten="true"&gt;&lt;br /&gt;            &amp;lt;path refid="Apache Commons Logging-1.1.0.userclasspath"/&gt;&lt;br /&gt;            &amp;lt;path refid="Apache Log4J-1.2.13.userclasspath"/&gt;&lt;br /&gt;            &amp;lt;path refid="Wicket-1.2.6.userclasspath"/&gt;&lt;br /&gt;        &amp;lt;/copy&gt;&lt;br /&gt;        &amp;lt;war destfile="wicket.war" webxml="${basedir}/WebContent/WEB-INF/web.xml"&gt;&lt;br /&gt;            &amp;lt;lib dir="${basedir}/WebContent/WEB-INF/lib"&gt;&lt;/lib&gt;&lt;br /&gt;            &amp;lt;classes dir="${basedir}/build/classes"&gt;&lt;/classes&gt;&lt;br /&gt;        &amp;lt;/war&gt;&lt;br /&gt;        &amp;lt;delete&gt;&lt;br /&gt;            &amp;lt;fileset dir="${basedir}/WebContent/WEB-INF/lib" includes="**/*"&gt;&lt;/fileset&gt;&lt;br /&gt;        &amp;lt;/delete&gt;&lt;br /&gt;    &amp;lt;/target&gt;&lt;/blockquote&gt;&lt;/li&gt;&lt;/ol&gt;透過以上的語法，可以有效簡化jar, javadoc, war的產生。&lt;br /&gt;P.S: 以上語法內的task與attribute的用法與意義，請查閱Ant的說明文件&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4332348533516593211-5262920283668823750?l=freedom-heero.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://freedom-heero.blogspot.com/feeds/5262920283668823750/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4332348533516593211&amp;postID=5262920283668823750' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4332348533516593211/posts/default/5262920283668823750'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4332348533516593211/posts/default/5262920283668823750'/><link rel='alternate' type='text/html' href='http://freedom-heero.blogspot.com/2007/09/eclipse-ant.html' title='Eclipse &amp; Ant'/><author><name>Heero</name><uri>http://www.blogger.com/profile/15484005945091463086</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4332348533516593211.post-3553636510795535906</id><published>2007-09-05T11:24:00.000+08:00</published><updated>2007-09-05T11:41:22.929+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Ubuntu'/><title type='text'>讓Ubuntu 享受快感！</title><content type='html'>Ubuntu有提供各種不同版本的kernel, 來針對不同的用途使用，總共有i4種：generic, server, big iron server, low latency，而Ubuntu Desktop預設安裝的是採用generic的kernel。最近無意間看到有人提到了Ubuntu Studio是採用low-latency kernel，所以順便查了一下相關的資料，發現這個kernel似乎是針對desktop的環境作強化，來減少GUI 的response time。&lt;br /&gt;要替換Ubuntu Desktop的預設kernel很簡單，只需要透過Synaptic去安裝&lt;span style="color: rgb(255, 102, 102);"&gt;linux-lowlatency&lt;/span&gt;套件即可，Synaptic會自動幫你選取必要的套件。或是用&lt;blockquote&gt;sudo apt-get install linux-lowlatency&lt;/blockquote&gt;亦可。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4332348533516593211-3553636510795535906?l=freedom-heero.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://freedom-heero.blogspot.com/feeds/3553636510795535906/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4332348533516593211&amp;postID=3553636510795535906' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4332348533516593211/posts/default/3553636510795535906'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4332348533516593211/posts/default/3553636510795535906'/><link rel='alternate' type='text/html' href='http://freedom-heero.blogspot.com/2007/09/ubuntu.html' title='讓Ubuntu 享受快感！'/><author><name>Heero</name><uri>http://www.blogger.com/profile/15484005945091463086</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4332348533516593211.post-1848036334350525227</id><published>2007-09-01T18:05:00.000+08:00</published><updated>2007-09-16T22:39:41.498+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Linux'/><category scheme='http://www.blogger.com/atom/ns#' term='Ubuntu'/><title type='text'>解決amsn的傳檔問題</title><content type='html'>在Ubuntu裡有很多MSN client可以使用，但是各有各的優缺點。而個人試用過後，覺得amsn 0.97RC1以後的版本，不管在功能與介面跟MSN Messanger都很相似，使用起來也比較順手。amsn 0.97RC1目前只有source package可以安裝，所以必須自己手動compile跟install，而為了解決中文輸入的問題，需要的Tcl/Tk也必須安裝8.5以上版本。相關的安裝方式在網路上已有人詳述。但是，amsn 0.97RC1有一個問題，就是傳輸稍大的檔案時，會很容易無故斷線。為了解決這個問題，必須將Tcl/Tk升級到最新版的8.5a7，另外amsn也必須使用最新的svn版的source code來編譯。以下是安裝步驟的簡單紀錄：&lt;br /&gt;&lt;ol&gt;&lt;li&gt;先安裝svn client與cvs client: &lt;blockquote&gt;sudo apt-get install subversion&lt;br /&gt;sudo apt-get install cvs&lt;/blockquote&gt;&lt;/li&gt;&lt;li&gt;由於Ubuntu 7.04內建的Tcl/Tk為8.3，而amsn在編譯階段會檢查版本，所以必須先安裝8.4版&lt;/li&gt;&lt;li&gt;安裝必要相依套件：&lt;blockquote&gt;sudo apt-get install libxft-dev&lt;br /&gt;sudo apt-get install imlib11 sox libpng12-0 docker tcltls python libc6 libgcc1 libice6 libjpeg62 libsm6 libstdc++6 libx11-6 zlib1g&lt;/blockquote&gt;&lt;/li&gt;&lt;li&gt;下載cvs版的Tcl/Tk&lt;/li&gt;&lt;ol&gt;&lt;li&gt;Tcl: &lt;tt&gt;&lt;blockquote&gt;  cvs -z3 -d:pserver:anonymous@tcl.cvs.sourceforge.net:/cvsroot/tcl co -P &lt;span style="font-style: italic;"&gt;tcl&lt;/span&gt;&lt;/blockquote&gt;&lt;span style="font-style: italic;"&gt;&lt;/span&gt;&lt;/tt&gt;&lt;/li&gt;&lt;li&gt;Tk: &lt;tt&gt;&lt;blockquote&gt;  cvs -z3 -d:pserver:anonymous@tktoolkit.cvs.sourceforge.net:/cvsroot/tktoolkit co -P &lt;span style="font-style: italic;"&gt;tk&lt;/span&gt;&lt;/blockquote&gt;&lt;span style="font-style: italic;"&gt;&lt;/span&gt;&lt;/tt&gt;&lt;/li&gt;&lt;/ol&gt;&lt;li&gt;安裝Tcl cvs版：&lt;/li&gt;&lt;ol&gt;&lt;li&gt;進入下載的cvs版Tcl的unix目錄&lt;br /&gt;&lt;/li&gt;&lt;li&gt;執行以下指令：&lt;blockquote style="color: rgb(255, 102, 102);"&gt;./configure --with-x --enable-xft --enable-threads&lt;br /&gt;make&lt;br /&gt;sudo make install&lt;br /&gt;sudo ln -f -s /usr/local/lib/tclConfig.sh /usr/local/lib/tcl8.5/&lt;/blockquote&gt;&lt;/li&gt;&lt;/ol&gt;&lt;li&gt;安裝Tk svc版：&lt;/li&gt;&lt;ol&gt;&lt;li&gt;進入下載的cvs版Tk的unix目錄&lt;/li&gt;&lt;li&gt;執行以下指令：&lt;blockquote style="color: rgb(255, 102, 102);"&gt;./configure --with-tcl=/usr/local/lib/tcl8.5/ -with-x --enable-xft -enable-threads&lt;br /&gt;make&lt;br /&gt;sudo make install&lt;br /&gt;sudo ln -f -s /usr/local/lib/tkConfig.sh /usr/local/lib/tk8.5/&lt;/blockquote&gt;&lt;span style="color: rgb(51, 102, 255);"&gt;注意：一定要加–enable-xft參數，否則在字型的顯示與切換會有問題&lt;/span&gt;&lt;/li&gt;&lt;/ol&gt;&lt;li&gt;設定amsn的執行環境：由於amsn是透過Tcl的wish模組來執行，所以也必須在安裝完新版的Tcl/Tk時，設定好新的wish路徑。先用&lt;blockquote&gt;whereis wish&lt;/blockquote&gt;找出最新版的wish的位置，一般來說Ubuntu應該會是在&lt;span style="color: rgb(51, 102, 255);"&gt;/usr/local/bin/wish8.5&lt;/span&gt;，然後用以下指令設定路徑&lt;blockquote style="color: rgb(255, 102, 102);"&gt;sudo ln -f -s /usr/local/bin/wish8.5 /usr/bin/wish&lt;/blockquote&gt;&lt;/li&gt;&lt;li&gt;編譯amsn：&lt;/li&gt;&lt;ol&gt;&lt;li&gt;下載svn版amsn: &lt;blockquote style="color: rgb(255, 102, 102);"&gt;svn co https://amsn.svn.sourceforge.net/svnroot/amsn/trunk/amsn&lt;/blockquote&gt;&lt;/li&gt;&lt;li&gt;進入下載的amsn目錄，並用以下指令編譯：&lt;blockquote style="color: rgb(255, 102, 102);"&gt;./configure --with-tcl=/usr/local/lib/tcl8.5/ --with-tk=/usr/local/lib/tk8.5/&lt;br /&gt;make clean&lt;br /&gt;make&lt;/blockquote&gt;編譯完成之後，可以用&lt;blockquote style="color: rgb(255, 102, 102);"&gt;sudo make install&lt;/blockquote&gt;安裝，或是用&lt;blockquote style="color: rgb(255, 102, 102);"&gt;make deb&lt;/blockquote&gt;來產生.deb檔，再用deb檔安裝，詳細的安裝資訊可以參考INSTALL.TXT&lt;/li&gt;&lt;/ol&gt;&lt;li&gt;安裝完畢之後，可以安裝&lt;span style="color: rgb(255, 153, 102);"&gt;libsnack2&lt;/span&gt;套件來增加Tcl/Tk對於聲音功能的支援；另外在啟動的時候，如果遇到需要安裝TLS套件的錯誤訊息，請安裝&lt;span style="color: rgb(255, 153, 102);"&gt;tcltls&lt;/span&gt;套件，並在安裝後修改 &lt;span style="color: rgb(255, 153, 102);"&gt;/usr/lib/tls1.50/pkgIndex.tcl&lt;/span&gt;。將裡面的&lt;span style="color: rgb(255, 153, 102);"&gt;1.5改成1.50&lt;/span&gt;，然後存檔再重新啟動amsn。&lt;br /&gt;&lt;/li&gt;&lt;/ol&gt;心得：amsn svn版+Tcl/Tk 8.5a7 cvs版，目前的確可以解決傳大檔案斷線的問題，而且使用的記憶體也比之前的amsn 0.97RC1少蠻多的。&lt;br /&gt;P.S: amsn 0.97RC1 + Tcl/Tk 8.5a7 cvs版會無法啟動&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4332348533516593211-1848036334350525227?l=freedom-heero.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://freedom-heero.blogspot.com/feeds/1848036334350525227/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4332348533516593211&amp;postID=1848036334350525227' title='1 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4332348533516593211/posts/default/1848036334350525227'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4332348533516593211/posts/default/1848036334350525227'/><link rel='alternate' type='text/html' href='http://freedom-heero.blogspot.com/2007/09/amsn.html' title='解決amsn的傳檔問題'/><author><name>Heero</name><uri>http://www.blogger.com/profile/15484005945091463086</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4332348533516593211.post-3617439009836171973</id><published>2007-08-17T11:51:00.000+08:00</published><updated>2007-09-16T22:51:07.433+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Linux'/><category scheme='http://www.blogger.com/atom/ns#' term='Ubuntu'/><title type='text'>OXIM安裝心得</title><content type='html'>之前一直都是使用SCIM，因為它上面有新酷音，對於我這種只會注音類輸入法的人來說，是非常好用的。問題是SCIM並不是很穩定，有時後會有一些異常現象發生。之前有試用過GCIN，但是它對一些軟體的相容性不是很好，而且也沒有新酷音，個人又不是很喜歡詞音輸入法。偶然在Ubuntu正體中文站看到有人介紹OXIM，索性試了一下。其實還算蠻穩定的，也有新酷音。不過，1.1.1版會跟Flash plugin相衝，而又找不到有其他的更新的deb。所以只好自己下載source code來compile。&lt;br /&gt;以下是簡單的步驟紀錄：&lt;br /&gt;&lt;ol&gt;&lt;li&gt;安裝qt3-dev-tools套件，以及相關的qt3的套件(像是libqt3-headers等等)。然後執行&lt;blockquote&gt;./configure --disable-static --with-qt-dir=/usr/share/qt3&lt;/blockquote&gt;&lt;/li&gt;&lt;li&gt;在執行完後，會顯示某些module的狀態是no，就去安裝相關的開發用套件(like gtk2, qt, chewing,libxpm-dev等等)，然後再重新執行一次&lt;/li&gt;&lt;li&gt;當所有套件的狀態都是yes，此時執行&lt;blockquote&gt;sudo make&lt;/blockquote&gt;。若是無錯誤訊息，再執行&lt;blockquote&gt;sudo make install-strip&lt;/blockquote&gt;，就安裝完成&lt;/li&gt;&lt;li&gt;在安裝完成之後，用&lt;blockquote&gt;sudo im-switch -s oxim&lt;/blockquote&gt;，將oxim設定為預設輸入法&lt;/li&gt;&lt;li&gt;在/etc/X11/Xsession.d中建立一個75custom_oxim_init，並包含以下內容：&lt;blockquote&gt;export XMODIFIERS="@im=oxim"&lt;br /&gt;export GTK_IM_MODULE="oxim"&lt;br /&gt;export XIM_PROGRAM="oxim &amp;amp;"&lt;/blockquote&gt;&lt;/li&gt;&lt;li&gt;到系統-&gt;偏好設定-&gt;作業階段，選擇「初始啟動程式」，添增一個項目，並填入指令：&lt;blockquote&gt;oxim &amp;amp;&lt;/blockquote&gt;&lt;blockquote&gt;&lt;/blockquote&gt;&lt;/li&gt;&lt;li&gt;開啟console視窗，執行以下指令：&lt;blockquote&gt;sudo -s -h&lt;br /&gt;gtk-query-immodules-2.0 &gt; /etc/gtk-2.0/gtk.immodules&lt;/blockquote&gt;&lt;/li&gt;&lt;li&gt;完成之後，重新登入或是重新啟動即可&lt;/li&gt;&lt;li&gt;如果在使用im-switch去設定預設輸入法的時候，出現無法更新alternative的錯誤訊息時：&lt;/li&gt;&lt;ol&gt;&lt;li&gt;請安裝galternatives套件，並在console視窗以sudo galternatives來啟動&lt;/li&gt;&lt;li&gt;從左邊側邊欄中找出xinput-zh_TW的項目，然後按下右側裡的「新增」，之後輸入path為/etc/X11/xinit/xinput.d/oxim，並把priority調成60後按下確定。然後確認剛剛新增的項目是被選擇的。&lt;/li&gt;&lt;/ol&gt;&lt;/ol&gt;心得：oxim的確是比較穩定，而且因為有新酷音，所以也是很好用。不過也是有幾個缺點：&lt;br /&gt;&lt;ol&gt;&lt;li&gt;中英文切換比較麻煩，一旦切換，所有編輯區的文字都會被送出&lt;/li&gt;&lt;li&gt;狀態顯示不太正常。原本在A視窗是切換到中文輸入法，但是切到B視窗時，會顯示為英文輸入模式，但是實際社仍為中文輸入模式，而且此時編輯區跟候選字區都無法正常顯示&lt;/li&gt;&lt;/ol&gt;以上幾個缺點說大也不大，只是還是有點不便就是。另外發現一件事，自行compile出來的程式無法用checkinstall包成deb檔來使用&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4332348533516593211-3617439009836171973?l=freedom-heero.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://freedom-heero.blogspot.com/feeds/3617439009836171973/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4332348533516593211&amp;postID=3617439009836171973' title='2 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4332348533516593211/posts/default/3617439009836171973'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4332348533516593211/posts/default/3617439009836171973'/><link rel='alternate' type='text/html' href='http://freedom-heero.blogspot.com/2007/08/oxim.html' title='OXIM安裝心得'/><author><name>Heero</name><uri>http://www.blogger.com/profile/15484005945091463086</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4332348533516593211.post-5030389619184672646</id><published>2007-08-17T11:16:00.000+08:00</published><updated>2007-08-17T11:46:17.708+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Java'/><category scheme='http://www.blogger.com/atom/ns#' term='Wicket'/><title type='text'>Wicket 心得(2)</title><content type='html'>&lt;ol&gt;&lt;li&gt;動態加入javascript:&lt;/li&gt;&lt;ol&gt;&lt;li&gt;呼叫AjaxRequestTarget的appendJavascript()，不過僅能在Ajax component上使用&lt;/li&gt;&lt;li&gt;使用JavascriptUtils.writeJavascript(), 需要有wicket.Response作為參數。一般可以透過實做IHeaderContributor來獲得。然後在需要加入Javascript的page，加入以下code:&lt;br /&gt;&lt;blockquote&gt;        add(new HeaderContributor(new YourHeaderContributorImpl()));&lt;/blockquote&gt;即可&lt;/li&gt;&lt;/ol&gt;&lt;li&gt;Component可以透過override onComponentTag()來將原本的HTML tag進行置換。例如把無效的AjaxLink的&amp;lt;a&amp;gt;換成以&amp;lt;span&amp;gt;替代&lt;/li&gt;&lt;li&gt;關閉輸出wicket id到頁面：&lt;blockquote&gt;getMarkupSettings().setStripWicketTags(true);&lt;/blockquote&gt;&lt;/li&gt;&lt;li&gt;Wicket extension中的Wizard並不支援Ajax，因此當在ModalWindow中使用時，無法再按下Finish時關閉ModalWindow，解決方式：&lt;blockquote&gt;繼承AjaxSubmitButton，並在onSubmit()中呼叫WizardModel的finsih()。另外，由於AjaxSubmit似乎沒辦法透過setEnabled(false)來關閉，所以也必須override onComponentTag()來對HTML tag添加 disabled屬性&lt;/blockquote&gt;&lt;br /&gt;&lt;/li&gt;&lt;/ol&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4332348533516593211-5030389619184672646?l=freedom-heero.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://freedom-heero.blogspot.com/feeds/5030389619184672646/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4332348533516593211&amp;postID=5030389619184672646' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4332348533516593211/posts/default/5030389619184672646'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4332348533516593211/posts/default/5030389619184672646'/><link rel='alternate' type='text/html' href='http://freedom-heero.blogspot.com/2007/08/wicket-2.html' title='Wicket 心得(2)'/><author><name>Heero</name><uri>http://www.blogger.com/profile/15484005945091463086</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4332348533516593211.post-7910847166267262102</id><published>2007-08-17T10:52:00.000+08:00</published><updated>2007-08-17T11:48:21.619+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Linux'/><category scheme='http://www.blogger.com/atom/ns#' term='Ubuntu'/><title type='text'>Install Compiz-Fusion in Ubuntu 7.04</title><content type='html'>安裝方法可以參考：&lt;br /&gt;&lt;a href="http://www.ubuntu.org.tw/modules/newbb/viewtopic.php?topic_id=5552&amp;forum=19&amp;amp;post_id=23735"&gt;7.04 Howto: 安裝Compiz Fusion特效 + Fusion Icon 管理器&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;其中有幾點必須注意：&lt;br /&gt;1. Fusion-icon的安裝，我自己是無法利用網友包好的deb來安裝，但是直接使用git來下載source並compile的話，是OK&lt;br /&gt;2. Mplayer在啟動時，可能會沒有視窗外框。amsn則是一定沒有視窗外框。解決方法：&lt;br /&gt;    &lt;blockquote&gt;系統-&gt;偏好設定-&gt;CompizConfig Settings Manager-&gt;Workarounds-&gt;Qt Window fix&lt;br /&gt;    將該選項取消即可&lt;/blockquote&gt;心得：&lt;br /&gt;目前雖然Compiz-Fusion還在開發階段，但是穩定度已經比6月底的版本好很多了，甚至比Beryl穩體，效率也還不錯，資源的使用也比Beryl少。在特效上也比Beryl多。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4332348533516593211-7910847166267262102?l=freedom-heero.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://freedom-heero.blogspot.com/feeds/7910847166267262102/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4332348533516593211&amp;postID=7910847166267262102' title='1 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4332348533516593211/posts/default/7910847166267262102'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4332348533516593211/posts/default/7910847166267262102'/><link rel='alternate' type='text/html' href='http://freedom-heero.blogspot.com/2007/08/install-compiz-fusion-in-ubuntu-704.html' title='Install Compiz-Fusion in Ubuntu 7.04'/><author><name>Heero</name><uri>http://www.blogger.com/profile/15484005945091463086</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4332348533516593211.post-7525277278607449722</id><published>2007-08-17T10:37:00.000+08:00</published><updated>2007-08-17T11:48:21.620+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Linux'/><category scheme='http://www.blogger.com/atom/ns#' term='Ubuntu'/><title type='text'>Install Ubuntu 7.04 with ATI VGA card</title><content type='html'>之前在6.06, 6.10的時候，都可以直接使用Live CD作圖形介面安裝，但是到了7.04之後卻不行了。在Live CD登入的時候，會出現X server error.  在google之後，據說是x server的 vesa driver有問題。&lt;br /&gt;目前的解決方法：&lt;br /&gt;在出現錯誤訊息回到console模式下時，調整x server的設定：&lt;br /&gt;&lt;blockquote&gt;sudo dpkg-reconfigure xserver-xorg&lt;/blockquote&gt;&lt;br /&gt;前面所有設定都依照預設值即可，除了幾點需要特別設定：&lt;br /&gt;1. VGA driver選用vesa&lt;br /&gt;2. 在螢幕設定時選擇advance，將水平更新率設定為36-52，垂直更新率設為36-60，並且將解析度只留下640*480&lt;br /&gt;3. 完成設定後存檔離開，並且重新啟動X server&lt;br /&gt;   &lt;blockquote&gt; sudo /etc/init.d/gdm restart&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;此時應該就可以進入圖形安裝模式了&lt;br /&gt;&lt;br /&gt;P.S: 有其他人說過，不能用圖形介面安裝時，可以用文字模式安裝。但是我實際上發現，當碰到那個問題時，即使文字模式安裝完畢，也無法進入x window&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4332348533516593211-7525277278607449722?l=freedom-heero.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://freedom-heero.blogspot.com/feeds/7525277278607449722/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4332348533516593211&amp;postID=7525277278607449722' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4332348533516593211/posts/default/7525277278607449722'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4332348533516593211/posts/default/7525277278607449722'/><link rel='alternate' type='text/html' href='http://freedom-heero.blogspot.com/2007/08/install-ubuntu-704-with-ati-vga-card.html' title='Install Ubuntu 7.04 with ATI VGA card'/><author><name>Heero</name><uri>http://www.blogger.com/profile/15484005945091463086</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4332348533516593211.post-4101516678415262164</id><published>2007-06-21T13:48:00.000+08:00</published><updated>2007-08-17T11:47:33.947+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Java'/><category scheme='http://www.blogger.com/atom/ns#' term='Wicket'/><title type='text'>Wicket 心得</title><content type='html'>1. 建立簡單的Ajax component: 對一般的component加上&lt;span style="font-weight: bold;"&gt;AjaxEventBehavior&lt;/span&gt;來達成，範例：&lt;br /&gt;&lt;pre&gt; DropDownChoice choice=new DropDownChoice(...);&lt;br /&gt;    choice.add(new AjaxEventBehavior("onchange") {&lt;br /&gt;           protected void onEvent(AjaxRequestTarget target) {&lt;br /&gt;               System.out.println("ajax here!");&lt;br /&gt;           }&lt;br /&gt;        }&lt;/pre&gt;或是自行繼承&lt;b&gt;AbstractDefaultAjaxBehavior&lt;/b&gt;並進行必要改寫onComponentTag()與respond()來加入所需要的javascript與處理行為&lt;br /&gt;2. 較複雜的Ajax component可以透過組合多個component來達成，可以參考wicket-extension裡的&lt;span style="font-weight: bold;"&gt;AjaxEditableLabel&lt;/span&gt;&lt;br /&gt;3. 部份特效可以借助CSS來達成，例如tooltip&lt;br /&gt;4. Override onComponentTag()可以修改tag本身的資訊，包含name，也可以加上其他attribute&lt;br /&gt;5. 目前wicket中提供的大部分component都已經將onComponentTag()與onComponentTagBody()定義成final，所以要加上額外的attribute必須使用&lt;b&gt;AttributeModifier&lt;/b&gt;或是&lt;b&gt;AttributeAppender&lt;/b&gt;&lt;br /&gt;6. ListView不只可以使用於table與&amp;lt;div&amp;gt;，亦可使用於&amp;lt;span&amp;gt;。若是需要橫向排列的效果，便需要使用&amp;lt;span&amp;gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4332348533516593211-4101516678415262164?l=freedom-heero.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://freedom-heero.blogspot.com/feeds/4101516678415262164/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4332348533516593211&amp;postID=4101516678415262164' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4332348533516593211/posts/default/4101516678415262164'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4332348533516593211/posts/default/4101516678415262164'/><link rel='alternate' type='text/html' href='http://freedom-heero.blogspot.com/2007/06/wicket.html' title='Wicket 心得'/><author><name>Heero</name><uri>http://www.blogger.com/profile/15484005945091463086</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4332348533516593211.post-6861330461647226645</id><published>2007-06-10T21:21:00.000+08:00</published><updated>2007-08-17T11:47:57.112+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Java'/><category scheme='http://www.blogger.com/atom/ns#' term='Hibernate'/><title type='text'>Hibnerate Annotation心得筆記</title><content type='html'>1. 原來JPA的Annotation的定義：@OneToOne跟@ManyToOne都是預設是Fetch.Eager&lt;br /&gt;2. Hibernate Annotation可以用@LazyToOne來設定@OneToOne或是@ManyToOne的Lazy fetch的方式（通常都是用LazyToOneOption.PROXY吧）。但是，對於@OneToOne來說，怎麼設定似乎都是無用的，Hibernate的實做，似乎還是會進行non-lazy fetch.&lt;br /&gt;3. 若是@ManyToOne設定為fetch=FetchMode.Lazy的話，則該relation必須在使用Hibernate.initialize()之後，或是在查詢時加上fetch的語法才能在session關閉後取得.&lt;br /&gt;4. 目前用Hibernate annotation extension中的@Index想幫一些relation加上db index，但是似乎不行。&lt;br /&gt;&lt;br /&gt;結論，JPA的定義與原本的Hibernate作法似乎是有不少差異，而且就功能上來看，JPA的annotation比起Hibernate也就為不足&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4332348533516593211-6861330461647226645?l=freedom-heero.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://freedom-heero.blogspot.com/feeds/6861330461647226645/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4332348533516593211&amp;postID=6861330461647226645' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4332348533516593211/posts/default/6861330461647226645'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4332348533516593211/posts/default/6861330461647226645'/><link rel='alternate' type='text/html' href='http://freedom-heero.blogspot.com/2007/06/hibnerate-annotation.html' title='Hibnerate Annotation心得筆記'/><author><name>Heero</name><uri>http://www.blogger.com/profile/15484005945091463086</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4332348533516593211.post-1137442084215922582</id><published>2007-02-06T15:37:00.000+08:00</published><updated>2007-08-17T11:47:57.112+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Java'/><category scheme='http://www.blogger.com/atom/ns#' term='Hibernate'/><title type='text'>Hibernate Secindary Level Cache 與Persistence Entity的繼承關係的問題</title><content type='html'>使用Hibernate的好處除了可以使用ORM的觀念來開發系統之外，另一個優點就是它提供了可以設定的cache機制 ，尤其是Secondary Level Cache。在對於經常使用到primary key來查詢的情況下，是有蠻大的幫助的。不過，最近在專案內使用卻發現一個問題。就是在有繼承關係的entity中，可能會造成一些問題：&lt;br /&gt;        例如，AUser跟BUser都繼承自User，而三者的繼承作法是採用Join的作法，也就是說AUser跟BUser都是參考到User的table。在還沒有使用Secondary level cache時，查詢一個已在AUser，但是不在BUser的entity，若是先以AUser的型態查詢，然後再以BUser的型態查詢則會正確的回傳null。但是當對User啟用Second level cache時，就會出現ClassCastException。原因應該是cache是以primary key來作為cache的key，所以第一次查詢的結果會被存入cache，但是第二次的查詢則因為是直接由cache取得，所以會得到AUser，但是由於查詢的型別是BUser，所以會出會轉型錯誤。&lt;br /&gt;&lt;br /&gt;        當然，這問題對於一般的系統可能是很難碰到。但是如果對於有應用到繼承觀念的系統的話，也許是需要特別注意的。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4332348533516593211-1137442084215922582?l=freedom-heero.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://freedom-heero.blogspot.com/feeds/1137442084215922582/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4332348533516593211&amp;postID=1137442084215922582' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4332348533516593211/posts/default/1137442084215922582'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4332348533516593211/posts/default/1137442084215922582'/><link rel='alternate' type='text/html' href='http://freedom-heero.blogspot.com/2007/02/hibernate-secindary-level-cache.html' title='Hibernate Secindary Level Cache 與Persistence Entity的繼承關係的問題'/><author><name>Heero</name><uri>http://www.blogger.com/profile/15484005945091463086</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry></feed>
