<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><feed xmlns="http://www.w3.org/2005/Atom" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" xml:lang="en"><title type="text">petertc's Note</title><link rel="alternate" type="text/html" href="http://petertc.blogspot.com/" /><subtitle type="html">休刊中zzz</subtitle><author><name>PTC</name><email>noreply@blogger.com</email><uri>http://www.blogger.com/profile/06497780346368581325</uri></author><updated>2009-11-10T13:37:17+00:00</updated><generator uri="http://www.blogger.com">Blogger</generator><openSearch:totalResults xmlns:openSearch="http://a9.com/-/spec/opensearch/1.1/">165</openSearch:totalResults><openSearch:startIndex xmlns:openSearch="http://a9.com/-/spec/opensearch/1.1/">1</openSearch:startIndex><openSearch:itemsPerPage xmlns:openSearch="http://a9.com/-/spec/opensearch/1.1/">25</openSearch:itemsPerPage><id>tag:blogger.com,1999:blog-10671828</id><link rel="license" type="text/html" href="http://creativecommons.org/licenses/by-nc-sa/2.0/" /><logo>http://creativecommons.org/images/public/somerights20.gif</logo><link rel="self" href="http://feeds.feedburner.com/petertc" type="application/atom+xml" /><feedburner:browserFriendly>This is an XML content feed. It is intended to be viewed in a newsreader or syndicated to another site, subject to copyright and fair use.</feedburner:browserFriendly><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com" /><entry><title type="text">IE很任性</title><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/petertc/~3/61uof7CAgEE/ie.html" /><category term="javascript" /><category term="web" /><author><name>PTC</name><email>noreply@blogger.com</email><uri>http://www.blogger.com/profile/06497780346368581325</uri></author><updated>2009-04-05T07:37:53-07:00</updated><id>tag:blogger.com,1999:blog-10671828.post-3550316731546630603</id><content type="html">&lt;p&gt;最近在寫ajax（javascript、DOM）的網頁，需要依使用者不同的選擇更新網頁文字內容（節點）&lt;/p&gt;&lt;p&gt;opera、Firefox都直接兩行解決：&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;code&gt;tnode = "xmldoc.getElementsByTagName("foo")['0'].hasChildNodes().data"; //從XML產生文字節點&lt;br /&gt;&lt;br /&gt;current.replaceChild(tnode,current.firstChild); //把舊的文字節點換成新的&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;但是碰到IE（我是用IE8測試）就會叫說節點不存在。&lt;br /&gt;可能是XML剛好是空的（第一行），或是第一次執行所以沒有舊的文字節點（第二行）。臨時只想到用hasChildNodes()做檢查，然後code就變的好糟糕：&lt;br /&gt;&lt;/p&gt;  &lt;br /&gt;&lt;br /&gt;&lt;code&gt;&lt;br /&gt;while(current.hasChildNodes())&lt;br /&gt;{&lt;br /&gt;current.removeChild(current.firstChild);&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;if(xmldoc.getElementsByTagName("foo")['0'].hasChildNodes())&lt;br /&gt;{&lt;br /&gt;tnode = document.createTextNode(xmldoc.getElementsByTagName("fax")['0'].firstChild.data);&lt;br /&gt;current.appendChild(tnode); &lt;br /&gt;}&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;不知道有什麼好方法：q&lt;br /&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/10671828-3550316731546630603?l=petertc.blogspot.com'/&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/petertc?a=61uof7CAgEE:2-KMmRmFwMQ:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/petertc?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/petertc?a=61uof7CAgEE:2-KMmRmFwMQ:63t7Ie-LG7Y"&gt;&lt;img src="http://feeds.feedburner.com/~ff/petertc?d=63t7Ie-LG7Y" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/petertc?a=61uof7CAgEE:2-KMmRmFwMQ:YwkR-u9nhCs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/petertc?d=YwkR-u9nhCs" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/petertc/~4/61uof7CAgEE" height="1" width="1"/&gt;</content><app:edited xmlns:app="http://www.w3.org/2007/app">2009-04-05T22:37:53.870+08:00</app:edited><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total><feedburner:origLink>http://petertc.blogspot.com/2009/04/ie.html</feedburner:origLink></entry><entry><title type="text">phoneME advanced Garbage Collector</title><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/petertc/~3/jf-3-i76whQ/phoneme-advanced-garbage-collector.html" /><category term="java" /><category term="linux" /><category term="csie" /><category term="javaME" /><author><name>PTC</name><email>noreply@blogger.com</email><uri>http://www.blogger.com/profile/06497780346368581325</uri></author><updated>2009-01-03T17:41:54-08:00</updated><id>tag:blogger.com,1999:blog-10671828.post-5813078882390636892</id><content type="html">&lt;p&gt;一、Build Options &lt;/p&gt;&lt;p&gt;-CVM_GCCHOICE (Generational/marksweep/semispace)&lt;br /&gt;Default: generational&lt;br /&gt;Example:-CVM_GCCHOICE=semispace&lt;br /&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;二、Runtime Options&lt;br /&gt;-Xgc:gc_specific_options(In generational is youngGen=nnn in bytes)&lt;br /&gt;Default: 1M&lt;br /&gt;&lt;/p&gt;&lt;p&gt;-Xmssize (memory allocation pool)&lt;br /&gt;Default: 4M&lt;br /&gt;Example: -Xms6291456, -Xms6144k, -Xms6m&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;三、Source Organization &lt;/p&gt;&lt;ul&gt;&lt;li&gt;src/share/javavm/include/gc_common.h：The shared GC interface.&lt;/li&gt;&lt;li&gt;src/share/javavm/include/gc/gc_impl.h ：The gcimpl GC interface that has to be implemented for each GC.&lt;/li&gt;&lt;li&gt;src/share/javavm/include/gc/&lt;gcname&gt;/gc_config.h ：The configuration file for a specific GC.&lt;/li&gt;&lt;li&gt;src/share/javavm/runtime/gc/&lt;gcname&gt;/gc_impl.c ：The implementation file for a specific GC.&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;四、Execution Flow &lt;/p&gt;&lt;ol&gt;&lt;li&gt;CVM allocates memory using the shared routine CVMgcAllocNewInstance().&lt;/li&gt;&lt;li&gt;CVMgcAllocNewInstance() does some processing and calls the GC-specific&lt;br /&gt;CVMgcimplAllocObject() to allocate the actual space for the object. &lt;/li&gt;&lt;li&gt;CVMgcimplAllocObject() performs the GC and calls the shared routine&lt;br /&gt;CVMgcStopTheWorldAndGC() to stop all threads at GC-safe points. &lt;/li&gt;&lt;li&gt;CVMgcStopTheWorldAndGC() ensures that all threads rendezvous at GC-safe points. When that is done, it calls the GC implementation CVMgcimplDoGC() to perform the GC action. &lt;/li&gt;&lt;li&gt;CVMgcimplDoGC() may call shared GC service routines to scan GC state: For example, CVMgcScanRoots() to scan all roots or CVMobjectWalkRefs() to scan the pointers in a given object or array. &lt;/li&gt;&lt;li&gt;When CVMgcimplDoGC() returns, all threads that were stopped at GC points resume execution. Eventually, CVMgcAllocNewInstance() returns and the thread that originally initiated GC resumes execution.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/li&gt;&lt;/ol&gt;&lt;p&gt;五、測試 &lt;/p&gt;&lt;p&gt;make clean; (win32 makefile有問題)&lt;br /&gt;make CVM_GCCHOICE=[semispacegenerationalmarksweep]&lt;br /&gt;bin/cvm -cp testclasses.zip HelloWorld;&lt;br /&gt;bin/cvm -XshowBuildOptions;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;六、reference&lt;/p&gt;&lt;p&gt;CDCfoundation_porting_guide.pdf &lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/10671828-5813078882390636892?l=petertc.blogspot.com'/&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/petertc?a=jf-3-i76whQ:eMGG5qHYqO8:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/petertc?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/petertc?a=jf-3-i76whQ:eMGG5qHYqO8:63t7Ie-LG7Y"&gt;&lt;img src="http://feeds.feedburner.com/~ff/petertc?d=63t7Ie-LG7Y" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/petertc?a=jf-3-i76whQ:eMGG5qHYqO8:YwkR-u9nhCs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/petertc?d=YwkR-u9nhCs" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/petertc/~4/jf-3-i76whQ" height="1" width="1"/&gt;</content><app:edited xmlns:app="http://www.w3.org/2007/app">2009-01-04T09:41:54.749+08:00</app:edited><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total><feedburner:origLink>http://petertc.blogspot.com/2009/01/phoneme-advanced-garbage-collector.html</feedburner:origLink></entry><entry><title type="text">phoneME advanced 編譯筆記</title><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/petertc/~3/aVyEDpVeda8/phoneme-advanced.html" /><category term="java" /><category term="csie" /><category term="javaME" /><author><name>PTC</name><email>noreply@blogger.com</email><uri>http://www.blogger.com/profile/06497780346368581325</uri></author><updated>2009-01-03T08:52:00-08:00</updated><id>tag:blogger.com,1999:blog-10671828.post-3606336133396027935</id><content type="html">&lt;p&gt;一、JavaME CDC小簡介&lt;/p&gt;&lt;p&gt;從JavaME CDC的全名"Java Micro Edition Connected Device Configuration"，可以大致看出他的特性。更進一步的介紹可以參考&lt;a href="http://java.sun.com/javame/technology/cdc/"&gt;Sun官方網站&lt;/a&gt;，以及&lt;a href="http://en.wikipedia.org/wiki/Java_Platform,_Micro_Edition"&gt;wikipedia&lt;/a&gt;的介紹。遠祖可以追朔到Personal Java（1999）。&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;JavaME CDC歷代版本（2001-2007）：&lt;/p&gt;&lt;ul&gt;&lt;li&gt;CDC1.0 (based on JavaSE1.3)&lt;/li&gt;&lt;li&gt;CDC1.0.1 (based on JavaSE1.3.1)&lt;/li&gt;&lt;li&gt;CDC1.1 (based on JavaSE1.4)&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;此後設立open source專案，名為phoneME Advanced，基於JavaME CDC1.1，相關資訊可以參考phoneME官方網站（CDC是"phoneME Advanced"，不是"phoneME Feature"，不要搞錯啦！）。&lt;br /&gt;&lt;/p&gt;&lt;p&gt;目前Sun官方的JavaME CDC source code已無法自由取得，網路尚能取得最新的版本為CDC1.0.1，相關資訊及編譯筆記可以參考&lt;a href="http://petertc.blogspot.com/2008/10/build-sun-cdc101-in-ubuntu.html"&gt;這篇&lt;/a&gt;。如果沒有特殊需求還是從phoneME Advanced入門是比較好的選擇。&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;二、編譯 phoneME advanced （Linux/x86）&lt;/p&gt;&lt;p&gt;如果是在Linux/x86環境，參考phoneME Advanced MR2 Getting Started Guide中的文章：&lt;a href="http://wiki.java.net/bin/view/Mobileandembedded/PhoneMEAdvancedBSGHost"&gt;Build Recipe: Linux/x86 Host Environment&lt;/a&gt; 應該可以順利完成。如果發生問題通常是相關工具程式沒有裝好設好。&lt;/p&gt;&lt;p&gt;第一個常碰到的問題是phoneME advanced MR2基於JavaME CDC1.1，意思是說要用JDK1.4才行！在編CDC1.0.1時我試過用JDK1.5/1.6在編譯時指定為1.4相容，但還是過不了。結論就是請用"Sun" JDK "1.4"。&lt;/p&gt;&lt;p&gt;第二問題繼承第一個問題。目前大部分GNU/Linux distribution內建的JRE/JDK為IceTea之類的，要設定換成Sun JDK 1.4才行。一般用update-alternates就能完成，但是常常只有設定java和javac，忘記"javah"！這個會用到。&lt;/p&gt;&lt;p&gt;第三個問題是phoneme advanced的Makefile寫的不太好，如果不是放在根目錄處理（e.g. /phoneme_advanced_mr2）可能會發生問題。（phoneme_advanced-mr2-dev-src-b97-20_nov_2008.zip有這個狀況。）&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;三、編譯 phoneME advanced （Win32/x86）&lt;/p&gt;&lt;p&gt;phoneME沒有提供Win32-x86的bundle release，要自己到 &lt;a href="https://phoneme.dev.java.net/source/browse/phoneme/"&gt;code repository&lt;/a&gt;抓。&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;編譯環境從無到有，過程簡單列表如下：&lt;/p&gt;&lt;ol&gt;&lt;li&gt;裝jdk1.4; 設定path(check java, javac, javah)&lt;/li&gt;&lt;li&gt;裝cywin and packages（binutils, bison ,diffutils ,flex ,gcc-g++ ,make ,perl ,subversion ,zip）&lt;/li&gt;&lt;li&gt;裝VC2005（VC8） express版 + win2003R2 platformSDK，或VC2005標準版(內建platformSDK) ；記得用windows update更新&lt;/li&gt;&lt;/ol&gt;&lt;p&gt;編譯過程和Linux/x86差不多，值得注意的是win32-x86的Makefile好像有bug，在改某些Makefile flag時要先make clean，不能像Linux可以直接改。&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/10671828-3606336133396027935?l=petertc.blogspot.com'/&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/petertc?a=aVyEDpVeda8:AF4nS8IKWG8:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/petertc?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/petertc?a=aVyEDpVeda8:AF4nS8IKWG8:63t7Ie-LG7Y"&gt;&lt;img src="http://feeds.feedburner.com/~ff/petertc?d=63t7Ie-LG7Y" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/petertc?a=aVyEDpVeda8:AF4nS8IKWG8:YwkR-u9nhCs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/petertc?d=YwkR-u9nhCs" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/petertc/~4/aVyEDpVeda8" height="1" width="1"/&gt;</content><app:edited xmlns:app="http://www.w3.org/2007/app">2009-01-04T00:52:00.631+08:00</app:edited><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">5</thr:total><feedburner:origLink>http://petertc.blogspot.com/2009/01/phoneme-advanced.html</feedburner:origLink></entry><entry><title type="text">Java bytecode</title><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/petertc/~3/oDYXULjuRzA/java-bytecode.html" /><category term="java" /><category term="compiler" /><author><name>PTC</name><email>noreply@blogger.com</email><uri>http://www.blogger.com/profile/06497780346368581325</uri></author><updated>2008-11-11T20:33:38-08:00</updated><id>tag:blogger.com,1999:blog-10671828.post-5934723334186460981</id><content type="html">java原始碼（.java）在經過java compiler（javac）編譯後形成bytecode（.class），再使用java virtual machine(JVM)直譯或JIT為physical machine code。java bytecode實際上就是由一串bytes所組成，可使用HEX editor檢視。&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;一. bytecode標準&lt;br /&gt;可參考JVM Specification（http://java.sun.com/docs/books/jvms/second_edition/html/VMSpecTOC.doc.html）：&lt;br /&gt;chapter4 "The class File Format" 以presudo code說明byte code格式。&lt;br /&gt;chapter6 "The Java Virtual Machine Instruction Set"說明JVM opcode。&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;對照以上內容可使用HEX editor自行撰寫bytecode再以JVM執行。&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;二. java組合語言&lt;br /&gt;相較於C編譯為assembler再組譯為machine code執行，如果將JVM視為physical machine，java bytecode相當於machine code的地位。但在java原始碼和bytecode之間，sun沒有定義標準的java assembler。&lt;br /&gt;&lt;br /&gt;jasmin(http://jasmin.sourceforge.net/)是一個java assembler（非標準），相較於直接編輯bytecode，可以先撰寫jasmin再組譯為byecode較為容易。&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;JDK也提供一個bytecode類反組譯器，可將bytecode轉為ascii code，說明如下：&lt;br /&gt;&lt;br /&gt;指令javap -c employeeName&lt;br /&gt;&lt;br /&gt;employeeName.java內容&lt;br /&gt;==========================================&lt;br /&gt;public String employeeName()&lt;br /&gt;{&lt;br /&gt;return name;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;==========================================&lt;br /&gt;&lt;br /&gt;執行結果&lt;br /&gt;==========================================&lt;br /&gt;Method java.lang.String employeeName()&lt;br /&gt;0 aload_0&lt;br /&gt;1 getfield #5 &lt;Field java.lang.String name&gt;&lt;br /&gt;4 areturn&lt;br /&gt;==========================================&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;以 javap 列出來的內容對照 JVM spec可瞭解 JVM instructions 的用途以及 class file format。&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;三. 參考資料：&lt;br /&gt;&lt;br /&gt;[1] Java bytecode: Understanding bytecode makes you a better programmer&lt;br /&gt;http://www-128.ibm.com/developerworks/ibm/library/it-haggar_bytecode/&lt;br /&gt;&lt;br /&gt;[2]JVM Specification&lt;br /&gt;http://java.sun.com/docs/books/jvms/second_edition/html/VMSpecTOC.doc.html&lt;br /&gt;&lt;br /&gt;[3]jasmin&lt;br /&gt;http://jasmin.sourceforge.net/&lt;br /&gt;&lt;br /&gt;[4]Decompiling Java&lt;br /&gt;http://www.tenlong.com.tw/Read/readForm.php?i=16&lt;br /&gt;&lt;br /&gt;[5]A Working Developer`s Guide to Java Bytecode &lt;br /&gt;http://www.strongd.net/blog/show/75&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/10671828-5934723334186460981?l=petertc.blogspot.com'/&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/petertc?a=oDYXULjuRzA:Vd3XBrn0mdM:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/petertc?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/petertc?a=oDYXULjuRzA:Vd3XBrn0mdM:63t7Ie-LG7Y"&gt;&lt;img src="http://feeds.feedburner.com/~ff/petertc?d=63t7Ie-LG7Y" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/petertc?a=oDYXULjuRzA:Vd3XBrn0mdM:YwkR-u9nhCs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/petertc?d=YwkR-u9nhCs" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/petertc/~4/oDYXULjuRzA" height="1" width="1"/&gt;</content><app:edited xmlns:app="http://www.w3.org/2007/app">2008-11-12T12:33:38.605+08:00</app:edited><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">1</thr:total><feedburner:origLink>http://petertc.blogspot.com/2008/11/java-bytecode.html</feedburner:origLink></entry><entry><title type="text">boats and birds</title><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/petertc/~3/QzpFSU_3xsY/boats-and-birds.html" /><author><name>PTC</name><email>noreply@blogger.com</email><uri>http://www.blogger.com/profile/06497780346368581325</uri></author><updated>2008-11-04T21:54:55-08:00</updated><id>tag:blogger.com,1999:blog-10671828.post-2984764484471542022</id><content type="html">&lt;object width="400" height="225"&gt;&lt;param name="allowfullscreen" value="true" /&gt;&lt;param name="allowscriptaccess" value="always" /&gt;&lt;param name="movie" value="http://vimeo.com/moogaloop.swf?clip_id=1912474&amp;amp;server=vimeo.com&amp;amp;show_title=0&amp;amp;show_byline=0&amp;amp;show_portrait=0&amp;amp;color=ffffff&amp;amp;fullscreen=1" /&gt;&lt;embed src="http://vimeo.com/moogaloop.swf?clip_id=1912474&amp;amp;server=vimeo.com&amp;amp;show_title=0&amp;amp;show_byline=0&amp;amp;show_portrait=0&amp;amp;color=ffffff&amp;amp;fullscreen=1" type="application/x-shockwave-flash" allowfullscreen="true" allowscriptaccess="always" width="400" height="225"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;br /&gt;&lt;a href="http://vimeo.com/1912474"&gt;I Live To Let You Shine&lt;/a&gt; from &lt;a href="http://vimeo.com/karenabad"&gt;Karen Abad loves Dinosaurs.&lt;/a&gt; on &lt;a href="http://vimeo.com"&gt;Vimeo&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/10671828-2984764484471542022?l=petertc.blogspot.com'/&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/petertc?a=QzpFSU_3xsY:Y5Ppyo3AaL0:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/petertc?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/petertc?a=QzpFSU_3xsY:Y5Ppyo3AaL0:63t7Ie-LG7Y"&gt;&lt;img src="http://feeds.feedburner.com/~ff/petertc?d=63t7Ie-LG7Y" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/petertc?a=QzpFSU_3xsY:Y5Ppyo3AaL0:YwkR-u9nhCs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/petertc?d=YwkR-u9nhCs" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/petertc/~4/QzpFSU_3xsY" height="1" width="1"/&gt;</content><app:edited xmlns:app="http://www.w3.org/2007/app">2008-11-05T13:54:55.709+08:00</app:edited><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total><feedburner:origLink>http://petertc.blogspot.com/2008/11/boats-and-birds.html</feedburner:origLink></entry><entry><title type="text">Build Sun CDC1.0.1 in Ubuntu</title><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/petertc/~3/tslcIvPLvWw/build-sun-cdc101-in-ubuntu.html" /><category term="java" /><category term="linux" /><category term="code" /><category term="compiler" /><category term="javaME" /><author><name>PTC</name><email>noreply@blogger.com</email><uri>http://www.blogger.com/profile/06497780346368581325</uri></author><updated>2008-10-29T00:23:33-07:00</updated><id>tag:blogger.com,1999:blog-10671828.post-5277942375689357190</id><content type="html">&lt;p&gt;這個版本（14_May_2002）的JavaME CDC開發環境為Redhat7.1/JDK1.3.1/egcs6，在Ubuntu上有很多水土不服的現象。這份筆記可以給想要考古的人一些參考。&lt;/p&gt;&lt;p&gt;&lt;br /&gt;I. source code&lt;br /&gt;j2me_cdcfp-1_0_1-fcs-src-b12-linux-i686-14_May_2002.zip&lt;br /&gt;可於http://jtrue.pl/files/GPS/取得&lt;br /&gt;這是我目前可以取得最新版本的Sun官方source code(原因有空再講)&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;II. Environment&lt;br /&gt;以下分別列出原本的開發環境，與本篇所使用的環境&lt;/p&gt;&lt;p&gt;Redhat7.1 / Ubuntu 6.06&lt;br /&gt;JDK1.3 / JDK1.4 &lt;br /&gt;egcs6 / gcc3.3 and related C develop tool&lt;br /&gt;ksh&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;III. Troubleshooting&lt;br /&gt;&lt;br /&gt;問題一：&lt;br /&gt;This Version's java code is based on JavaSE 1.3.1，JDK6即使使用javac -source 1.4或1.3還是會發生錯誤訊息如下：&lt;br /&gt;../../src/share/classes/java/lang/SecurityManager.java:299: cannot find symbol&lt;br /&gt;symbol  : method initCause(java.lang.ClassNotFoundException)&lt;br /&gt;location: class java.lang.NoClassDefFoundError&lt;br /&gt;        synchronized(SecurityManager.class) {&lt;br /&gt;                     ^&lt;br /&gt;解法：目前唯一解就是downgrade用JDK1.4或JDK1.3&lt;br /&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;問題二：GCC4 is restricted for nonstandard C code in this Version&lt;/p&gt;&lt;p&gt;錯誤訊息：&lt;br /&gt;complie time Error:&lt;br /&gt;Checking for test classes to compile ...&lt;br /&gt;... ../../build/linux-i686/obj/globals.o&lt;br /&gt;../../src/share/javavm/runtime/globals.c:121:1: 錯誤： 粘貼「.」和「nullClassLoaderLock」不能給出一個有效的預先處理識別字&lt;/p&gt;&lt;p&gt;&lt;br /&gt;解法：需安裝GCC3.3，如果本來是使用有裝GCC4，gcc -V3.3 指定使用V3.3&lt;br /&gt;change line 117 of /cdcfoundation/src/share/javavm/runtime/globals.c from&lt;br /&gt;#define CVM_SYSMUTEX_ENTRY(mutex, name) {&amp;amp;CVMglobals.##mutex, name}&lt;br /&gt;#define CVM_SYSMUTEX_ENTRY(mutex, name) {&amp;amp;CVMglobals. mutex, name}&lt;br /&gt;http://blog.csdn.net/huangqiqun/archive/2006/12/18/1447671.aspx&lt;br /&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;問題三：glibc &lt;2.2 is needed in this Version，會在Linking Time發生錯誤訊息如下：&lt;br /&gt;&lt;br /&gt;Linking ../../build/linux-i686/bin/cvm&lt;br /&gt;../../build/linux-i686/obj/UNIXProcess_md.o：在函式「sigchld_handler」中&lt;br /&gt;:../../src/linux/native/java/lang/UNIXProcess_md.c:213: 未定義參考到「&lt;br /&gt;__libc_wait」&lt;br /&gt;collect2: ld 回傳 1&lt;br /&gt;make: *** [../../build/linux-i686/bin/cvm] Error 1&lt;br /&gt;&lt;br /&gt;解法：&lt;/p&gt;&lt;p&gt;patch ../../src/linux/native/java/lang/UNIXProcess_md.c&lt;br /&gt;34,53c34&lt;br /&gt;&lt; &lt;br /&gt;&lt; /* following lines Hacked by Kent Hulick based on&lt;br /&gt;&lt;  * ftp://people.redhat.com/drepper/libcwait.c&lt;br /&gt;&lt;  * fixes a broken calls to a removed glibc function:*/&lt;br /&gt;&lt; #include &lt;errno.h&gt;&lt;br /&gt;&lt; #include &lt;sys/syscall.h&gt;&lt;br /&gt;&lt; pid_t __libc_wait (int *status)&lt;br /&gt;&lt; {&lt;br /&gt;&lt;   int res;&lt;br /&gt;&lt;   asm volatile ("pushl %%ebx\n\t"&lt;br /&gt;&lt;               "movl %2, %%ebx\n\t"&lt;br /&gt;&lt;               "movl %1, %%eax\n\t"&lt;br /&gt;&lt;               "int $0x80\n\t"&lt;br /&gt;&lt;               "popl %%ebx"&lt;br /&gt;&lt;               : "=a" (res)&lt;br /&gt;&lt;               : "i" (__NR_wait4), "0" (WAIT_ANY), "c" (status), "d" (0),&lt;br /&gt;&lt;                 "S" (0));&lt;br /&gt;&lt;   return res;&lt;br /&gt;&lt; }&lt;br /&gt;&lt; &lt;br /&gt;--&lt;br /&gt;http://forums.sun.com/thread.jspa?threadID=610934&amp;amp;tstart=555&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;IV. Preparation&amp;amp;Configure&lt;/p&gt;&lt;p&gt;#sudo su //root&lt;br /&gt;#cd /usr/local/src //anywhere you want to play around&lt;br /&gt;#wget http://jtrue.pl/files/GPS/j2me_cdcfp-1_0_1-fcs-src-b12-linux-i686-14_May_2002.zip //download source bundle&lt;br /&gt;#unzip j2me_cdcfp-1_0_1-fcs-src-b12-linux-i686-14_May_2002.zip //extracting cdcfoundation-1_0_1-fcs-src.zip and cdcfoundation-1_0_1-fcs-doc.zip&lt;br /&gt;#unzip cdcfoundation-1_0_1-fcs-src.zip //extracting cdcfoundation&lt;br /&gt;#cd cdcfoundation/build&lt;br /&gt;&lt;br /&gt;edit following Makefile&lt;br /&gt;#vi ./linux/defs.mk&lt;br /&gt;./linux/defs.mk:#petertc1026&lt;br /&gt;./linux/defs.mk-#CFLAGS_SPEED   = -c $(CC_ARCH_FLAGS) $(CCFLAGS) $(CCFLAGS_SPEED) $(CPPFLAGS)&lt;br /&gt;./linux/defs.mk-#CFLAGS_SPACE   = -c $(CC_ARCH_FLAGS) $(CCFLAGS) $(CCFLAGS_SPACE) $(CPPFLAGS)&lt;br /&gt;./linux/defs.mk-#SO_CFLAGS   = -c $(SO_CC_ARCH_FLAGS) $(CCFLAGS) $(CPPFLAGS)&lt;br /&gt;./linux/defs.mk-CFLAGS_SPEED   = -V3.3 -c $(CC_ARCH_FLAGS) $(CCFLAGS) $(CCFLAGS_SPEED) $(CPPFLAGS)&lt;br /&gt;./linux/defs.mk-CFLAGS_SPACE   = -V3.3 -c $(CC_ARCH_FLAGS) $(CCFLAGS) $(CCFLAGS_SPACE) $(CPPFLAGS)&lt;br /&gt;./linux/defs.mk-SO_CFLAGS   = -V3.3 -c $(SO_CC_ARCH_FLAGS) $(CCFLAGS) $(CPPFLAGS)&lt;br /&gt;&lt;br /&gt;#vi ./share/defs.mk&lt;br /&gt;./share/defs.mk:#petertc1026&lt;br /&gt;./share/defs.mk-#CVM_GNU_TOOLS_PATH=/micro/tools/i686-redhat-linux/gnu/bin&lt;br /&gt;./share/defs.mk-CVM_GNU_TOOLS_PATH=/usr/bin&lt;br /&gt;&lt;br /&gt;patch source code&lt;br /&gt;edit /usr/local/src/cdcfoundation/src/share/javavm/runtime/globals.c:117&lt;br /&gt;//petertc1026&lt;br /&gt;/*#define CVM_SYSMUTEX_ENTRY(mutex, name) {&amp;amp;CVMglobals.##mutex, name}*/&lt;br /&gt;#define CVM_SYSMUTEX_ENTRY(mutex, name) {&amp;amp;CVMglobals. mutex, name}&lt;br /&gt;&lt;br /&gt;edit /usr/local/src/cdcfoundation/src/linux/native/java/lang/UNIXProcess_md.c:213&lt;br /&gt;34,53c34&lt;br /&gt;&lt; &lt;br /&gt;&lt; /* following lines Hacked by Kent Hulick based on&lt;br /&gt;&lt;  * ftp://people.redhat.com/drepper/libcwait.c&lt;br /&gt;&lt;  * fixes a broken calls to a removed glibc function:*/&lt;br /&gt;&lt; #include &lt;errno.h&gt;&lt;br /&gt;&lt; #include &lt;sys/syscall.h&gt;&lt;br /&gt;&lt; pid_t __libc_wait (int *status)&lt;br /&gt;&lt; {&lt;br /&gt;&lt;   int res;&lt;br /&gt;&lt;   asm volatile ("pushl %%ebx\n\t"&lt;br /&gt;&lt;               "movl %2, %%ebx\n\t"&lt;br /&gt;&lt;               "movl %1, %%eax\n\t"&lt;br /&gt;&lt;               "int $0x80\n\t"&lt;br /&gt;&lt;               "popl %%ebx"&lt;br /&gt;&lt;               : "=a" (res)&lt;br /&gt;&lt;               : "i" (__NR_wait4), "0" (WAIT_ANY), "c" (status), "d" (0),&lt;br /&gt;&lt;                 "S" (0));&lt;br /&gt;&lt;   return res;&lt;br /&gt;&lt; }&lt;br /&gt;&lt; &lt;br /&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;V. build&amp;amp;demo&lt;br /&gt;#cd linux-i686/&lt;br /&gt;#make CVM_DEBUG=true JAVABIN=/usr/java/j2sdk1.4.2_18/bin&lt;br /&gt;//zzz...&lt;br /&gt;//Done Linking ../../build/linux-i686/bin/cvm!&lt;br /&gt;# bin/cvm -Djava.class.path=testclasses.zip HelloWorld&lt;br /&gt;&gt; GC[SS]: Initialized semi-space gen for generational GC&lt;br /&gt;&gt;         Size of *each* semispace in bytes=1048576&lt;br /&gt;&gt;         Limits of generation = [0xb7942200,0xb7b42200)&lt;br /&gt;&gt;         First semispace      = [0xb7942200,0xb7a42200)&lt;br /&gt;&gt;         Second semispace     = [0xb7a42200,0xb7b42200)&lt;br /&gt;&gt; GC[MC]: Initialized mark-compact gen for generational GC&lt;br /&gt;&gt;         Size of the space in bytes=3145728&lt;br /&gt;&gt;         Limits of generation = [0xb7b42200,0xb7e42200)&lt;br /&gt;&gt; GC[generational]: Auxiliary data structures&lt;br /&gt;&gt;         heapBaseMemoryArea=[0xb7942008,0xb7e42208)&lt;br /&gt;&gt;         cardTable=[0x8322f90,0x8325790)&lt;br /&gt;&gt;         objectHeaderTable=[0x8325798,0x8327f98)&lt;br /&gt;&gt;         summaryTable=[0x8327fa0,0x8331fa0)&lt;br /&gt;&gt; Hello world.&lt;br /&gt;&lt;br /&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/10671828-5277942375689357190?l=petertc.blogspot.com'/&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/petertc?a=tslcIvPLvWw:1Y_sbO6H9Hg:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/petertc?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/petertc?a=tslcIvPLvWw:1Y_sbO6H9Hg:63t7Ie-LG7Y"&gt;&lt;img src="http://feeds.feedburner.com/~ff/petertc?d=63t7Ie-LG7Y" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/petertc?a=tslcIvPLvWw:1Y_sbO6H9Hg:YwkR-u9nhCs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/petertc?d=YwkR-u9nhCs" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/petertc/~4/tslcIvPLvWw" height="1" width="1"/&gt;</content><app:edited xmlns:app="http://www.w3.org/2007/app">2008-10-29T15:23:33.496+08:00</app:edited><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total><feedburner:origLink>http://petertc.blogspot.com/2008/10/build-sun-cdc101-in-ubuntu.html</feedburner:origLink></entry><entry><title type="text">兩則JavaME馬路消息</title><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/petertc/~3/35eprhGNzM4/javame.html" /><category term="java" /><category term="csie" /><category term="javaME" /><author><name>PTC</name><email>noreply@blogger.com</email><uri>http://www.blogger.com/profile/06497780346368581325</uri></author><updated>2008-10-18T19:55:52-07:00</updated><id>tag:blogger.com,1999:blog-10671828.post-6857659064216091144</id><content type="html">&lt;span style="font-weight:bold;"&gt;&lt;p&gt;1. Sun release Java Platform Micro Edition Software Development Kit 3.0 Early Access。&lt;/p&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;quote&gt;Java ME Platform SDK is a state-of-the-art toolbox for developing mobile applications. It integrates CLDC, CDC and Blu-ray Disc Java (BD-J) technology into one SDK. Java ME SDK 3.0 is the successor to the popular Java Wireless Toolkit 2.5.2 and Java Toolkit 1.0 for CDC. It provides device emulation, a standalone development environment and a set of utilities for rapid development of Java ME applications.&lt;/quote&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;此版本整合了CDC、CLDC的開發環境，不過BD-J是什麼鬼不太清楚，windows only。目前還不太實用：無法與eclipse整合（NetBeans大概可以），對在linux上得開發者來說更別無選擇使用WTK for CLDC&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;&lt;br /&gt;可以預期的好處是，只要出linux版，順便也可以在linux上開發CDC了。目前JavaTK for CDC也是windows only...&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;2. EclipseME has grown into the the Eclipse Foundation Mobile Tools for Java (MTJ) project.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;EclipseME原本只能玩CLDC，EclipseMTJ支援CDC，兩家整合後對各家廠商支援度應該會更好。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/10671828-6857659064216091144?l=petertc.blogspot.com'/&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/petertc?a=35eprhGNzM4:Y1jcWaJai-E:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/petertc?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/petertc?a=35eprhGNzM4:Y1jcWaJai-E:63t7Ie-LG7Y"&gt;&lt;img src="http://feeds.feedburner.com/~ff/petertc?d=63t7Ie-LG7Y" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/petertc?a=35eprhGNzM4:Y1jcWaJai-E:YwkR-u9nhCs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/petertc?d=YwkR-u9nhCs" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/petertc/~4/35eprhGNzM4" height="1" width="1"/&gt;</content><app:edited xmlns:app="http://www.w3.org/2007/app">2008-10-19T10:55:52.154+08:00</app:edited><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total><feedburner:origLink>http://petertc.blogspot.com/2008/10/javame.html</feedburner:origLink></entry><entry><title type="text">張季雅：帶我去球場</title><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/petertc/~3/mXXtVHi8EAA/blog-post.html" /><category term="taiwan" /><category term="baseball" /><author><name>PTC</name><email>noreply@blogger.com</email><uri>http://www.blogger.com/profile/06497780346368581325</uri></author><updated>2008-09-06T21:24:04-07:00</updated><id>tag:blogger.com,1999:blog-10671828.post-2292692743125289574</id><content type="html">【作者簡介】張季雅，1988年生，雲林縣斗六市人。自《挑戰者月刊》舉辦之「投稿戰場1985」活動脫穎而出，於同誌正式出道。熱愛漫畫與棒球。&lt;br /&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;帶我去球場（斗六球場、花蓮球場）&lt;br /&gt;http://www.comibook.com/read.php?art_id=230&lt;br /&gt;&lt;br /&gt;帶我去球場-【新竹市立中正棒球場】忘卻的熱情&lt;br /&gt;http://www.comibook.com/read.php?art_id=178&lt;br /&gt;&lt;br /&gt;帶我去球場-【台南市立棒球場】我們迷獅子-前篇&lt;br /&gt;http://www.comibook.com/read.php?art_id=172&lt;br /&gt;&lt;br /&gt;帶我去球場-【台南市立棒球場】我們迷獅子-後篇&lt;br /&gt;http://www.comibook.com/read.php?art_id=173&lt;br /&gt;&lt;br /&gt;帶我去球場-【台北市立棒球場】不連續的記憶&lt;br /&gt;http://www.comibook.com/read.php?art_id=179&lt;br /&gt;&lt;br /&gt;帶我去球場-【台中棒球場】留下的理由-前篇&lt;br /&gt;http://www.comibook.com/read.php?art_id=386&lt;br /&gt;&lt;br /&gt;帶我去球場-【台中棒球場】留下的理由-後篇&lt;br /&gt;http://www.comibook.com/read.php?art_id=388&lt;br /&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;有沒有TML版本的呀（淚）&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/10671828-2292692743125289574?l=petertc.blogspot.com'/&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/petertc?a=mXXtVHi8EAA:lMV5OzCCF7U:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/petertc?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/petertc?a=mXXtVHi8EAA:lMV5OzCCF7U:63t7Ie-LG7Y"&gt;&lt;img src="http://feeds.feedburner.com/~ff/petertc?d=63t7Ie-LG7Y" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/petertc?a=mXXtVHi8EAA:lMV5OzCCF7U:YwkR-u9nhCs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/petertc?d=YwkR-u9nhCs" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/petertc/~4/mXXtVHi8EAA" height="1" width="1"/&gt;</content><app:edited xmlns:app="http://www.w3.org/2007/app">2008-09-07T12:24:04.142+08:00</app:edited><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total><feedburner:origLink>http://petertc.blogspot.com/2008/09/blog-post.html</feedburner:origLink></entry><entry><title type="text">SQLWays - Database Migration Tool</title><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/petertc/~3/1oWFc0f4l8A/sqlways-database-migration-tool.html" /><category term="mysql" /><category term="code" /><category term="csie" /><category term="database" /><category term="oracle" /><author><name>PTC</name><email>noreply@blogger.com</email><uri>http://www.blogger.com/profile/06497780346368581325</uri></author><updated>2008-08-26T23:51:21-07:00</updated><id>tag:blogger.com,1999:blog-10671828.post-3229774925541988732</id><content type="html">最近要將一個用oracle作為DBMS的資料庫轉移到Mysql上面。&lt;br /&gt;&lt;p&gt;&lt;img src="http://www.ispirer.com/images/banners/ind_ban.jpg" border="0" width="90%" /&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;查了一下資料，大部分的人做的事都是mysql -&gt; oracle，這比較好解決，畢竟一般來說oracle會比mysql強一點（像是trigger mysql5才有）。當然也是cost和performance的考量啦。最後在builder.com.cn找到一篇『&lt;a href="http://www.builder.com.cn/2007/0912/502923.shtml"&gt;Oracle移植到MySQL注意事项&lt;/a&gt;』（作者佚名，很酷）。這篇大致上講了一下兩邊DDL的差別，但實做流程看來還是要自己手工硬幹的。&lt;/p&gt;&lt;p&gt;後來在硬幹的過程中發現好像有個很神的軟體可以做這件事，叫做&lt;a href="http://www.ispirer.com/products"&gt;SQLWays&lt;/a&gt;，號稱data、schema、functions、triggers都能轉，而且也支援市面上絕大部分的DBMS（IBM DB2, Oracle, Microsoft SQL Server, Sybase, Informix, MySQL, PostgreSQL, Progress...）。抓下來試用一下，因為他是用ODBC連database，而且我已經硬幹的差不多了，就沒試這部份了。只試用了他的SQL converter。&lt;/p&gt;&lt;p&gt;SQLWays的SQL converter介面蠻簡潔的，就左邊貼source，選source DBMS，右邊選target DMBS，target SQL就跑出來了。&lt;/p&gt;&lt;p&gt;簡單的SQL他應該都可以幫你轉好啦，for example：&lt;/p&gt;&lt;p&gt;&lt;span style="font-size:85%;"&gt;SELECT COUNT (&lt;span style="color:#ff0000;"&gt;NO&lt;/span&gt;) FROM BANKINFORM WHERE BANKINFORM.END_TIME &gt;= &lt;span style="color:#ff0000;"&gt;SYSDATE&lt;/span&gt;-7 AND BANKINFORM.BEGIN_TIME &lt;= &lt;span style="color:#ff0000;"&gt;SYSDATE&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;經過轉換就會變成：&lt;/p&gt;&lt;p&gt;&lt;span style="font-size:85%;"&gt;SELECT COUNT(&lt;span style="color:#ff0000;"&gt;`NO`&lt;/span&gt;) FROM BANKINFORM WHERE BANKINFORM.END_TIME &gt;= &lt;span style="color:#ff0000;"&gt;CURRENT_TIMESTAMP&lt;/span&gt; -7 AND BANKINFORM.BEGIN_TIME &lt;= &lt;span style="color:#ff0000;"&gt;CURRENT_TIMESTAMP&lt;/span&gt;;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;但是在用的時候也有發現問題，像是這段code：&lt;/p&gt;&lt;p&gt;&lt;span style="font-size:85%;"&gt;SELECT &lt;span style="color:#ff0000;"&gt;to_char(TIME,'MM/DD')&lt;/span&gt; AS TIME, (DEPOSIT-WITHDRAWAL) AS TOTAL,MEMO FROM TRANSACTION_ACCT WHERE TRANSACTION_ACCT.ACCOUNT_NO ='49421045' ORDER BY &lt;span style="color:#ff0000;"&gt;TO_NUMBER(TRANSACTION_ACCT.NO)&lt;/span&gt; DESC&lt;/span&gt;&lt;/p&gt;&lt;p&gt;他轉出來的丟到mysql client commend會錯誤：&lt;/p&gt;&lt;p&gt;&lt;span style="font-size:85%;"&gt;SELECT &lt;span style="color:#ff0000;"&gt;STR(`TIME`,'MM/DD') `TIME`&lt;/span&gt;,(DEPOSIT -WITHDRAWAL) TOTAL,MEMO FROM TRANSACTION_ACCT WHERE TRANSACTION_ACCT.ACCOUNT_NO = '49421045' ORDER BY &lt;span style="color:#ff0000;"&gt;CAST(TRANSACTION_ACCT.`NO` AS unsigned) &lt;/span&gt;DESC;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;正確的SQL：&lt;/p&gt;&lt;p&gt;&lt;span style="font-size:85%;"&gt;SELECT &lt;span style="color:#ff0000;"&gt;DATE_FORMAT(TIME,'%m/%d') AS "TIME"&lt;/span&gt;, (DEPOSIT-WITHDRAWAL) AS "TOTAL",MEMO FROM TRANSACTION_ACCT WHERE TRANSACTION_ACCT.ACCOUNT_NO ='49421045' ORDER BY &lt;span style="color:#ff0000;"&gt;CAST(TRANSACTION_ACCT.NO AS SIGNED)&lt;/span&gt; DESC&lt;/span&gt;&lt;/p&gt;&lt;p&gt;使用上一些要注意的地方：&lt;/p&gt;&lt;p&gt;1.SQL一定要以分號（;）結尾，要不然他會一直說你寫錯，我試好幾次才知道問題在這裡。&lt;/p&gt;&lt;p&gt;2.因為Mysql是case sensitive的，和oracle不同。這在下SQL的時候會發生問題，如果之前大小寫沒統一的話。這是sematic的東西電腦不可能幫你轉，我的作法是把SQL貼到editor直接全部轉大寫再丟到SQLWays的converter去轉。&lt;/p&gt;&lt;p&gt;有空再寫整個porting的心得好了&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/10671828-3229774925541988732?l=petertc.blogspot.com'/&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/petertc?a=1oWFc0f4l8A:5xEaJ5lqJw4:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/petertc?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/petertc?a=1oWFc0f4l8A:5xEaJ5lqJw4:63t7Ie-LG7Y"&gt;&lt;img src="http://feeds.feedburner.com/~ff/petertc?d=63t7Ie-LG7Y" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/petertc?a=1oWFc0f4l8A:5xEaJ5lqJw4:YwkR-u9nhCs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/petertc?d=YwkR-u9nhCs" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/petertc/~4/1oWFc0f4l8A" height="1" width="1"/&gt;</content><app:edited xmlns:app="http://www.w3.org/2007/app">2008-08-27T14:51:21.600+08:00</app:edited><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total><feedburner:origLink>http://petertc.blogspot.com/2008/08/sqlways-database-migration-tool.html</feedburner:origLink></entry><entry><title type="text">慣性感應器(G-sensor)在相機的application</title><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/petertc/~3/S3BRxtfATuQ/g-sensorapplication.html" /><category term="idea" /><author><name>PTC</name><email>noreply@blogger.com</email><uri>http://www.blogger.com/profile/06497780346368581325</uri></author><updated>2008-08-05T05:30:44-07:00</updated><id>tag:blogger.com,1999:blog-10671828.post-2763969408188440645</id><content type="html">今天在整理相片的時候，覺得把直照的照片轉正實在是一件很麻煩的事。（而且我的老電腦要做JPEG lossless rotation又很慢= =）弄一弄，突然想到要是相機能內建慣性感應器（G-sensor）就好了。&lt;br /&gt;&lt;br /&gt;如果相機內建G sensor，當相機向左或向右轉90度，也就是直立照相時，相機就可以在EXIF寫入這張照片的正確方向，或以直立方式存檔（3:2，如果不是用panasonic LX2之類是奇怪的16:9的話），不用使用者再傳到電腦上調整了。這種制式化的動作就該交給電腦來做呀！&lt;br /&gt;&lt;br /&gt;小小idea，可以方便很多呢！很期待這樣的相機出現：p&lt;br /&gt;硬體畢竟不像軟題，自己想做就做的出來呀...&lt;br /&gt;&lt;br /&gt;目前最快的方法是去弄台iphone吧xd 不知道他的API可不可以讀寫G-sensor和exif的資料。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/10671828-2763969408188440645?l=petertc.blogspot.com'/&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/petertc?a=S3BRxtfATuQ:hJMZDJv069k:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/petertc?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/petertc?a=S3BRxtfATuQ:hJMZDJv069k:63t7Ie-LG7Y"&gt;&lt;img src="http://feeds.feedburner.com/~ff/petertc?d=63t7Ie-LG7Y" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/petertc?a=S3BRxtfATuQ:hJMZDJv069k:YwkR-u9nhCs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/petertc?d=YwkR-u9nhCs" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/petertc/~4/S3BRxtfATuQ" height="1" width="1"/&gt;</content><app:edited xmlns:app="http://www.w3.org/2007/app">2008-08-05T20:30:44.241+08:00</app:edited><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">2</thr:total><feedburner:origLink>http://petertc.blogspot.com/2008/08/g-sensorapplication.html</feedburner:origLink></entry><entry><title type="text">Some Java Compiler Front End Tools - jlex, jflex</title><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/petertc/~3/h6BHkwWTxrk/some-java-compiler-front-end-tools-jlex.html" /><category term="java" /><category term="csie" /><category term="compiler" /><author><name>PTC</name><email>noreply@blogger.com</email><uri>http://www.blogger.com/profile/06497780346368581325</uri></author><updated>2008-08-05T05:12:14-07:00</updated><id>tag:blogger.com,1999:blog-10671828.post-5714050672707402967</id><content type="html">&lt;p&gt;&lt;strong&gt;I. lexial analyer&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;lexial analyer 是compiler front end中最初步的工作之一，負責將char stream切割為token stream，discard註解等無用部份。&lt;/p&gt;&lt;p&gt;比較常見的有jlex和jflex，我使用的版本和測試環境如下：&lt;br /&gt;&lt;/p&gt;&lt;ul&gt;&lt;br /&gt;&lt;li&gt;FreeBSD? 6.2-RELEASE&lt;/li&gt;&lt;li&gt;jflex-1.4.1_1&lt;/li&gt;&lt;li&gt;jlex-1.2.6_2 &lt;/li&gt;&lt;li&gt;diablo-jdk-1.5.0.07.01_9&lt;/li&gt;&lt;br /&gt;&lt;/ul&gt;&lt;br /&gt;&lt;p&gt;jlex是使用java的lex產生器，由Elliot Joel Berk and C. Scott Ananian製作。整個製作lex analyzer的過程基本上分成三部奏：&lt;/p&gt;&lt;ol&gt;&lt;li&gt;撰寫rule file&lt;br /&gt;&lt;/li&gt;&lt;li&gt;使用flex產成lex analyzer source&lt;/li&gt;&lt;li&gt;使用gcc copmile lex analyzer&lt;/li&gt;&lt;/ol&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;Setup&lt;/span&gt;&lt;br /&gt;&lt;p&gt;在此以前述environment做說明&lt;/p&gt;&lt;br /&gt;&lt;pre&gt;cd /usr/ports/java/diablo-jdk;&lt;/pre&gt;&lt;br /&gt;&lt;p&gt;修改Makefile將X相關的註解掉免得裝一堆垃圾&lt;/p&gt;&lt;br /&gt;&lt;p&gt;然後設定不要用timezone要不然還要另外抓東西&lt;/p&gt;&lt;br /&gt;&lt;pre&gt;make install clean;&lt;/pre&gt;&lt;br /&gt;&lt;p&gt;因為版權問題，FreeBSD 預設沒有安裝jdk，而且也不能直接使用port tree system安裝。所以他會提示你去FreeBSD網站下載tarball後放到/usr/ports/distfiles...因為不能直接下fetch去抓，所以還要另外裝個lynx之類的去抓，頗麻煩。&lt;/p&gt;&lt;br /&gt;&lt;pre&gt;cd /usr/ports/java/jlex;&lt;br /&gt;make install clean;&lt;br /&gt;rehash; //if you use C shell&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;flex vs jlex&lt;/span&gt;&lt;p&gt;除了使用語言不同外，jlex的架構和lex/flex有很大的差別：&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;user code&lt;br /&gt;%%&lt;br /&gt;JLex directives&lt;br /&gt;%%&lt;br /&gt;regular expression rules&lt;/pre&gt;&lt;br /&gt;&lt;p&gt;其中JLex directives是jlex很特別的部份，其他兩部份則和flex的rules和user code兩部份相近。&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;regular expression rules&lt;/span&gt;&lt;p&gt;在rule的部份，pattern基本上是相容的，都是RE; 但是action就差很多了（C vs Java）&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;jflex&lt;/span&gt;&lt;br /&gt;&lt;p&gt;由於jflex源自jlex，所以這邊主要是在比較兩者&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;setup&lt;/span&gt;&lt;p&gt;基本上和jlex的情況一下...&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;cd /usr/ports/java/jflex;&lt;br /&gt;make install clean;&lt;br /&gt;rehash; //if you use C shell&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;jlex vs jflex&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;以同樣一份rule file去產生source code，數據如下：&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;jlex&lt;/p&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;NFA - 247 states&lt;/li&gt;&lt;li&gt;DFA - 116 (after removal of redundant states)&lt;/li&gt;&lt;br /&gt;&lt;/ul&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;jflex&lt;/p&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;NFA - 202 states&lt;/li&gt;&lt;li&gt;DFA - 114 states (after minimized DFA)&lt;/li&gt;&lt;br /&gt;&lt;/ul&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;結果jflex好像有好那麼一滴滴...不過由於我的rule file十分簡單，要是更複雜的rule file，差距可能會更大。&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/10671828-5714050672707402967?l=petertc.blogspot.com'/&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/petertc?a=h6BHkwWTxrk:oqRFO8lSUqw:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/petertc?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/petertc?a=h6BHkwWTxrk:oqRFO8lSUqw:63t7Ie-LG7Y"&gt;&lt;img src="http://feeds.feedburner.com/~ff/petertc?d=63t7Ie-LG7Y" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/petertc?a=h6BHkwWTxrk:oqRFO8lSUqw:YwkR-u9nhCs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/petertc?d=YwkR-u9nhCs" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/petertc/~4/h6BHkwWTxrk" height="1" width="1"/&gt;</content><app:edited xmlns:app="http://www.w3.org/2007/app">2008-08-05T20:12:14.065+08:00</app:edited><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total><feedburner:origLink>http://petertc.blogspot.com/2008/08/some-java-compiler-front-end-tools-jlex.html</feedburner:origLink></entry><entry><title type="text">[survey]車險選擇</title><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/petertc/~3/3mxEsZZUYXc/survey.html" /><category term="motor" /><category term="car" /><category term="insurance" /><category term="biker" /><author><name>PTC</name><email>noreply@blogger.com</email><uri>http://www.blogger.com/profile/06497780346368581325</uri></author><updated>2008-07-14T05:46:42-07:00</updated><id>tag:blogger.com,1999:blog-10671828.post-426269669046828737</id><content type="html">&lt;p&gt;根據&lt;a href="http://petertc.blogspot.com/2008/03/survey.html"&gt;上次survey的結果&lt;/a&gt;，&lt;/p&gt;&lt;p&gt;最後我的機車投保的是&lt;a href="http://www.fubon.com/financial/home/index.htm"&gt;富邦產物&lt;/a&gt;的『強制汽車責任保險』（機車強制險）以及『汽車第三人責任保險』（機車第三人責任險）。其中體傷50萬，單一事件限額100萬；財損10萬。這樣total一千出頭。&lt;/p&gt;&lt;p&gt;售價其實各家都差不多，選擇富邦的原因，是因為富邦在花蓮有分公司規模較大，出險時會比較方便。而且富邦免費贈送20KM免費拖吊、急修，雖然不一定實用，但有還是比沒有好啦～&lt;/p&gt;&lt;p&gt;我是請&lt;a href="telnet://ptt.cc"&gt;ptt&lt;/a&gt;上得保險業務員kmkr122719幫我投保的。有問題或想投保可以找他。&lt;/p&gt;&lt;p&gt;關於機車保險在ptt Insurance板 2008/6/13 houfons有發表一篇很詳盡的介紹，有需要可以去看看～&lt;/p&gt;&lt;p&gt;汽車險部份，我是在&lt;a href="http://www.ecover.com.tw/"&gt;華南產物ecover&lt;/a&gt;網站投保。原因純粹是他最便宜xd 強制險折扣200，第三人責任險8折！我是保體傷100萬，單一事件限額200萬；財損10萬。這樣保費2800左右，送20公里報路救援。（題外話，ecover網站做的很爛！不過客服還ok）&lt;/p&gt;&lt;p&gt;要保多少，業務給我的答覆是跟據富邦產險的理賠經驗，身故部分通常理賠金會在300萬~500萬之間，扣掉強制險理賠的的150萬，自行負擔部份約在150萬~350萬左右。&lt;br /&gt;&lt;br /&gt;財損比較不一定，不過一般來說財損金額通常不高，財損判賠超過10萬的情形非常少見。&lt;/p&gt;&lt;p&gt;也就是說要完全cover賠償金，第三人強制險體傷要拉到200萬~400萬才夠，視情況還要將單一事件額度拉到多倍（如兩倍：一人200萬/單一事件400萬 -&gt; 十倍：一人200萬/單一事件2000萬）；財損10萬就夠了。不過考量到使用狀況我沒有保很高，而且也不是說有保險車就可以亂開吧= =&lt;/p&gt;&lt;p&gt;保費應該是不用斤斤計較啦，在怎麼算都算不贏精算師的，頂多就只有華南ecover折扣比較多。就看哪種保額負擔得起，比較適合自己囉。&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;最近好窮，這個保下去就差不多花4000，今天去萬惡統一集團的&lt;a href="http://www.muji.tw"&gt;muji&lt;/a&gt;玩又噴2000（超喜歡muji的東西！），錢又都套住...好窮呀~~~（吶喊）&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/10671828-426269669046828737?l=petertc.blogspot.com'/&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/petertc?a=3mxEsZZUYXc:jzzj969XINQ:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/petertc?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/petertc?a=3mxEsZZUYXc:jzzj969XINQ:63t7Ie-LG7Y"&gt;&lt;img src="http://feeds.feedburner.com/~ff/petertc?d=63t7Ie-LG7Y" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/petertc?a=3mxEsZZUYXc:jzzj969XINQ:YwkR-u9nhCs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/petertc?d=YwkR-u9nhCs" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/petertc/~4/3mxEsZZUYXc" height="1" width="1"/&gt;</content><app:edited xmlns:app="http://www.w3.org/2007/app">2008-07-14T20:46:42.934+08:00</app:edited><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total><feedburner:origLink>http://petertc.blogspot.com/2008/07/survey.html</feedburner:origLink></entry><entry><title type="text">windows mobile KVM for JavaME</title><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/petertc/~3/jA2yz5CfQNU/windows-mobile-kvm-for-javame.html" /><category term="java" /><category term="csie" /><category term="javaME" /><author><name>PTC</name><email>noreply@blogger.com</email><uri>http://www.blogger.com/profile/06497780346368581325</uri></author><updated>2008-07-09T00:54:26-07:00</updated><id>tag:blogger.com,1999:blog-10671828.post-1112673073216154700</id><content type="html">&lt;p&gt;上學期修專題，選用&lt;a href="http://java.sun.com/javame/index.jsp"&gt;JavaME&lt;/a&gt;（J2ME）開發手機客戶端程式。相較於flash lite or other else，JavaME應該是發展最久，普及率最高的。&lt;/p&gt;&lt;p&gt;之前survey過，應該兩年內的手機都可以支援JWTI（CLDC1.0/MIDP2.0）以上標準，而市調機構做的調查，平均每人換手機頻率&lt;2years。也就是說，如果不使用低階ui和一些奇怪api的話，『理論上』，現在大家的手機對javame的支援度應該是ok的才對。&lt;/p&gt;&lt;p&gt;不過實際上不是那麼理想就是了，就算能跑UI還是會歪歪的。自己寫的話還要考慮midlet簽署的問題...難怪大家都跑去寫&lt;a href="http://code.google.com/android/"&gt;google android&lt;/a&gt;了xd（google android是用JavaSE!）&lt;/p&gt;&lt;p&gt;相較於一般小手機，smart phone or PDA（跑windows mobile）對JavaME的支援度更差。要找KVM還沒有免費的超慘。&lt;/p&gt;&lt;p&gt;找很久，最後可以跑我們team的程式的KVM（based on windows mobile 5.0）是Risidoro Intent MIDlet Manager 11.1.7，可以在&lt;a href="http://www.mobile01.com/topicdetail.php?f=129&amp;amp;t=614798&amp;amp;p=1&amp;amp;img=0"&gt;這裡&lt;/a&gt;找到。還有就是IBM的WEME MIDP，&lt;a href="http://www.shopping01.com/topicdetail.php?f=279&amp;amp;t=185774&amp;amp;r=9"&gt;在這裡&lt;/a&gt;。&lt;/p&gt;&lt;p&gt;我們的程式用的都是高階UI，有使用rms，有用到mdip2.0提供的https API，如果是類似的需求，可以先試試看我測出來的KVM。如果是game或有用到低階UI就不一定了。&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/10671828-1112673073216154700?l=petertc.blogspot.com'/&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/petertc?a=jA2yz5CfQNU:A0KdoU6yO_0:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/petertc?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/petertc?a=jA2yz5CfQNU:A0KdoU6yO_0:63t7Ie-LG7Y"&gt;&lt;img src="http://feeds.feedburner.com/~ff/petertc?d=63t7Ie-LG7Y" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/petertc?a=jA2yz5CfQNU:A0KdoU6yO_0:YwkR-u9nhCs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/petertc?d=YwkR-u9nhCs" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/petertc/~4/jA2yz5CfQNU" height="1" width="1"/&gt;</content><app:edited xmlns:app="http://www.w3.org/2007/app">2008-07-09T15:54:26.900+08:00</app:edited><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total><feedburner:origLink>http://petertc.blogspot.com/2008/07/windows-mobile-kvm-for-javame.html</feedburner:origLink></entry><entry><title type="text">2008summer， 中橫、以及北橫宜蘭支線 （台8, 台7甲）</title><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/petertc/~3/BPq-HZTJMnE/2008summer-8-7.html" /><category term="travel" /><category term="taiwan" /><category term="hualien" /><category term="ilan" /><author><name>PTC</name><email>noreply@blogger.com</email><uri>http://www.blogger.com/profile/06497780346368581325</uri></author><updated>2008-07-04T07:11:19-07:00</updated><id>tag:blogger.com,1999:blog-10671828.post-7188882723462556477</id><content type="html">這篇是前天的事！趁暑假回臺北，跑一次一直很想跑的中橫公路！&lt;br /&gt;&lt;br /&gt;&lt;p&gt;臺北到花蓮，一般都是蘇花吧。&lt;br /&gt;&lt;/p&gt;腳踏車、機車、汽車、火車都跑過了，實在有點無趣，這次回家臨時起意想要跑不一樣的路！&lt;br /&gt;&lt;br /&gt;看地圖發現臺北到花蓮有以下幾種走法：&lt;br /&gt;&lt;br /&gt;1.一路台九線（蘇花公路，北宜公路） 200KM&lt;br /&gt;&lt;br /&gt;2.在新城上台八線（中橫），在大禹嶺接台14甲線到南投，然後走北二高回臺北 400KM&lt;br /&gt;&lt;br /&gt;3.在新城上台八線（中橫），然後在大禹嶺接台7甲線（北橫宜蘭支線）。走到棲蘭山接台7線（北橫）回桃園，然後在看走北二高還是台3回臺北 29XKM&lt;br /&gt;&lt;br /&gt;4.在新城上台八線（中橫），然後在大禹嶺接台7甲線（北橫宜蘭支線）。走到棲蘭山接台7線（北橫），但在牛鬩轉台7丙線到宜蘭三星鄉，走北宜高回臺北 310KM&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;這次選擇的走法是方案四，挑戰台灣最難走也是最漂亮的的公路之一！&lt;br /&gt;&lt;br /&gt;&lt;p&gt;一早從學校出發，一路走台，一直到看到太魯閣國家公園的牌坊，正式進入台八線中橫公路...&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://static.zooomr.com/images/5232531_36f3b5f049_b.jpg"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 400px;" src="http://static.zooomr.com/images/5232531_36f3b5f049_b.jpg" border="0" alt="" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;一進去還蠻多車的，而且路很小條，一邊是峭壁，一邊是無蓋水溝，又有巨大遊覽車一輛接一輛，記得第一次走的時候還蠻抖的，這次走就還好啦，反而有點嫌其他車慢xd&lt;br /&gt;不過也不能怪他們啦，人家都是來玩的，不像我們是趕路&gt;"&lt;&lt;br /&gt;&lt;br /&gt;等過天祥遊客就明顯少很多了，一路爬高，天氣也涼爽起來，good!&lt;br /&gt;大禹嶺，標高2565公尺，本來期待大禹嶺會有什麼顯目的標誌，結果只有往台14甲（合歡山）以及台7甲（梨山）的指標&lt;br /&gt;&lt;br /&gt;從花蓮市到這裡約3hr&lt;br /&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;過大禹嶺基本上就是一路下坡了，這段路是行前板友說最難走的地方&lt;br /&gt;不過實際上走起來還好，有些地方有一小段沒柏油而已&lt;br /&gt;&lt;br /&gt;從東華到梨山，大約4hr&lt;br /&gt;梨山大概是這路上最熱鬧的地方了吧，到處都在賣水果（而且很貴！）&lt;br /&gt;吃完午餐繼續上路&lt;br /&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&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;在地圖上可以看到，台7甲線介於雪霸國家公園和太魯閣國家公園之間，往西邊看去是雪霸，往東是太魯閣，很不同的感受&lt;br /&gt;&lt;br /&gt;之後在棲蘭山接回台7線，並在牛鬩接台7丙到三星，羅東上北宜高回臺北，結束這次的旅程&lt;br /&gt;台7甲，台7，台7丙不分一百多公里，大約3hr&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;&lt;p&gt;花蓮-台八線-梨山-台7甲-棲蘭-台7-台7丙-三星-國5-臺北，總里程310KM&lt;/p&gt;&lt;p&gt;所以會經過超多地方的，花蓮、南投、台中、宜蘭、臺北xd&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;這次旅程畢竟是回家，沒辦法沿路玩耍。&lt;br /&gt;算是一次踩踏之旅吧：p&lt;br /&gt;&lt;br /&gt;有空，一定要把每個點好好的玩一玩，認識一下。&lt;br /&gt;&lt;br /&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;沿路經過的景點超多：&lt;/p&gt;&lt;p&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;梨山（加油站）&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;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;還是懶得重post，圖文請看&lt;a href="http://www.backpackers.com.tw/forum/showthread.php?t=99638"&gt;背包客棧文章&lt;/a&gt;，只看圖不說話，我上傳到新申請的&lt;a href="http://www.zooomr.com/photos/petertc/"&gt;zooomer&lt;/a&gt;啦！之前試很難用，這次在試試看...&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;br /&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/10671828-7188882723462556477?l=petertc.blogspot.com'/&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/petertc?a=BPq-HZTJMnE:_gSXvegWv1M:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/petertc?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/petertc?a=BPq-HZTJMnE:_gSXvegWv1M:63t7Ie-LG7Y"&gt;&lt;img src="http://feeds.feedburner.com/~ff/petertc?d=63t7Ie-LG7Y" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/petertc?a=BPq-HZTJMnE:_gSXvegWv1M:YwkR-u9nhCs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/petertc?d=YwkR-u9nhCs" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/petertc/~4/BPq-HZTJMnE" height="1" width="1"/&gt;</content><app:edited xmlns:app="http://www.w3.org/2007/app">2008-07-04T22:11:19.049+08:00</app:edited><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total><feedburner:origLink>http://petertc.blogspot.com/2008/07/2008summer-8-7.html</feedburner:origLink></entry><entry><title type="text">2007winter，單車環島</title><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/petertc/~3/odl_vUlC3Ko/2007winter.html" /><category term="環島" /><category term="travel" /><category term="bicycle" /><author><name>PTC</name><email>noreply@blogger.com</email><uri>http://www.blogger.com/profile/06497780346368581325</uri></author><updated>2008-07-02T23:22:03-07:00</updated><id>tag:blogger.com,1999:blog-10671828.post-4588410077199702974</id><content type="html">這是去年的事了（感覺好久好久以前呀！）&lt;br /&gt;&lt;strong&gt;那年寒假，我去單車環島。&lt;br /&gt;&lt;/strong&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://farm1.static.flickr.com/148/400760033_b21b959c88_o.jpg"&gt;&lt;img src="http://farm1.static.flickr.com/148/400760033_b21b959c88_o.jpg" border="0" alt="" width=100% /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;那時候還沒那麼多人騎單車，後來因為&lt;a href="http://news.google.com/news?client=opera&amp;rls=zh-tw&amp;sourceid=opera&amp;oe=utf-8&amp;um=1&amp;tab=wn&amp;hl=zh-TW&amp;q=%E6%B2%B9%E5%83%B9&amp;btnG=%E6%90%9C%E5%B0%8B%E6%96%B0%E8%81%9E"&gt;油價&lt;/a&gt;、&lt;a href="http://www.wretch.cc/blog/EtudeBike"&gt;練習曲&lt;/a&gt;、&lt;a href="http://www.giant.com.tw/"&gt;邪惡G社&lt;/a&gt;的行銷，路上到處都有人在騎腳踏車呀！！&lt;br /&gt;&lt;br /&gt;於是漸漸的，沒有那麼愛騎車了。&lt;br /&gt;&lt;br /&gt;還是會偶爾繞繞東華6KM外環，還是會騎鯉魚山，七星潭。&lt;br /&gt;但是應該不會再騎腳踏車去環島了吧...&lt;br /&gt;&lt;br /&gt;『有些事情做過一次，就不會在做第二次了。』&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;遊記懶得post 在這啦..&lt;br /&gt;請參閱我的&lt;a href="http://0rz.tw/fc2sF"&gt;wiki&lt;/a&gt;，以及&lt;a href="http://www.backpackers.com.tw/forum/showthread.php?t=99251"&gt;背包客棧&lt;/a&gt;文章&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.flickr.com/photos/tags/twcycle/"&gt;有圖有真相&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/10671828-4588410077199702974?l=petertc.blogspot.com'/&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/petertc?a=odl_vUlC3Ko:p-jhZjf1EhU:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/petertc?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/petertc?a=odl_vUlC3Ko:p-jhZjf1EhU:63t7Ie-LG7Y"&gt;&lt;img src="http://feeds.feedburner.com/~ff/petertc?d=63t7Ie-LG7Y" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/petertc?a=odl_vUlC3Ko:p-jhZjf1EhU:YwkR-u9nhCs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/petertc?d=YwkR-u9nhCs" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/petertc/~4/odl_vUlC3Ko" height="1" width="1"/&gt;</content><app:edited xmlns:app="http://www.w3.org/2007/app">2008-07-03T14:22:03.739+08:00</app:edited><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">1</thr:total><feedburner:origLink>http://petertc.blogspot.com/2008/07/2007winter.html</feedburner:origLink></entry><entry><title type="text">wxWidget cross-platform problem</title><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/petertc/~3/SREwju_AQ9M/wxwidget-cross-platform-problem.html" /><category term="linux" /><category term="wxWidget" /><category term="code" /><category term="OpenCV" /><author><name>PTC</name><email>noreply@blogger.com</email><uri>http://www.blogger.com/profile/06497780346368581325</uri></author><updated>2008-06-26T19:58:39-07:00</updated><id>tag:blogger.com,1999:blog-10671828.post-7985731287346389840</id><content type="html">&lt;p&gt;之前上多媒體，有一個作業是做視窗程式設計，膚色偵測（just R&gt;G&gt;B，這不是重點）。既然是視窗程式設計，用MFC作為GUI library也是理所當然的，再加上微軟在圖學方面的貢獻，感覺做多媒體的老師都比較prefer 微軟的東西。之前沒寫過視窗程式的經驗，看&lt;a href="http://pcman.sayya.org/blog.php?id=pcman"&gt;pcman&lt;/a&gt;很推&lt;a href="http://www.wxwidgets.org/"&gt;wxWidget&lt;/a&gt; 就拿來用了。&lt;/p&gt;&lt;p&gt;我在ms windows上是用&lt;a href="http://wxdsgn.sourceforge.net/"&gt;wxdevcpp&lt;/a&gt;當IDE，還蠻難用的。好像也可以在Vitural Studio用wxWidget，不過看說明超麻煩的... 而且都用VC了當然是用MFC呀xd&lt;/p&gt;&lt;p&gt;我在windows寫的code長成這樣：&lt;br /&gt;&lt;br /&gt;&lt;pre class="code"&gt;&lt;br /&gt;//load orginal picture&lt;br /&gt;wxImage img(imgFile, wxBITMAP_TYPE_ANY, 0);&lt;br /&gt;wxBitmap bmp(img);&lt;br /&gt;&lt;br /&gt;//link picture to dc&lt;br /&gt;wxMemoryDC srcDc;&lt;br /&gt;srcDc.SelectObject(bmp);&lt;br /&gt;&lt;br /&gt;//face detect and mask&lt;br /&gt;wxCoord w, h;&lt;br /&gt;srcDc.GetSize(&amp;amp;w, &amp;amp;h);&lt;br /&gt;&lt;br /&gt;for(wxCoord i=0;i&amp;lt;w;i++){&lt;br /&gt;for(wxCoord j=0;j&amp;lt;h;j++){&lt;br /&gt;//get color&lt;br /&gt;wxColour color;&lt;br /&gt;srcDc.GetPixel(i,j,&amp;amp;color);&lt;br /&gt;&lt;br /&gt;//R&amp;gt;G&amp;gt;B=R&amp;gt;G&amp;amp;&amp;amp;G&amp;gt;B=R&amp;lt;G||G&amp;lt;B&lt;br /&gt;if(color.Red()&amp;lt;color.Green()||color.Green()&amp;lt;color.Blue()){&lt;br /&gt;srcDc.SetPen(*wxBLACK_PEN);&lt;br /&gt;srcDc.DrawPoint(i,j);&lt;br /&gt;}&lt;br /&gt;}&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;//copy and show picture after mask&lt;br /&gt;wxPaintDC hisDc(this);&lt;br /&gt;hisDc.Blit(400, 10, 320, 240, &amp;amp;srcDc, 0, 0);&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;p&gt;這在windows跑起來是ok的，但在linux compile時雖然會過，但是圖片會有問題 。&lt;br /&gt;研究了一下發現linux在DC做處理會不正常，因為wx是在wxImage這層才是保證platform independent的。所以改成在wxImage做處理,順便整理了一下code。&lt;/p&gt;&lt;p&gt;修改後如下：&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre class="code"&gt;&lt;br /&gt;//load orginal picture...slow&lt;br /&gt;wxImage img2(imgFile, wxBITMAP_TYPE_ANY, -1);&lt;br /&gt;wxBitmap bmp2(img2);&lt;br /&gt;&lt;br /&gt;//link picture to dc&lt;br /&gt;wxMemoryDC srcDc2;&lt;br /&gt;srcDc1.SelectObject(bmp2);&lt;br /&gt;&lt;br /&gt;//face detect and mask&lt;br /&gt;int w=img2.GetWidth();&lt;br /&gt;int h=img2.GetHeight();&lt;br /&gt;&lt;br /&gt;for(int i=0;i&amp;lt;w;i++){&lt;br /&gt;for(int j=0;j&amp;lt;h;j++){&lt;br /&gt;//get color&lt;br /&gt;unsigned char r=img2.GetRed(i,j);&lt;br /&gt;unsigned char g=img2.GetGreen(i,j);&lt;br /&gt;unsigned char b=img2.GetBlue(i,j);&lt;br /&gt;&lt;br /&gt;if(r&amp;lt;g||g&amp;lt;b) img2.SetRGB(i,j,0,0,0);&lt;br /&gt;}&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;wxBitmap bmp2(img2);&lt;br /&gt;//link picture to dc&lt;br /&gt;wxMemoryDC srcDc2;&lt;br /&gt;srcDc2.SelectObject(bmp2);&lt;br /&gt;&lt;br /&gt;//copy and show picture after mask&lt;br /&gt;wxPaintDC hisDc(this);&lt;br /&gt;hisDc.Blit(400, 10, 320, 240, &amp;amp;srcDc2, 0, 0);&lt;br /&gt;&lt;br /&gt;/*show skin detect END*/&lt;br /&gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp1.blogger.com/_FCvqxwA8I2I/SGRXSdNW4hI/AAAAAAAAA-k/Wn_dmdYCTPc/s1600-h/screenshot.jpg"&gt;&lt;img style="cursor:pointer; cursor:hand;" src="http://bp1.blogger.com/_FCvqxwA8I2I/SGRXSdNW4hI/AAAAAAAAA-k/Wn_dmdYCTPc/s400/screenshot.jpg" border="0" alt="" id="BLOGGER_PHOTO_ID_5216390242991792658" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;這樣在windows和linux就都ok啦！不過在Mac OS X就不知道了&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;現在重做的話應該會用&lt;a href="http://www.intel.com/technology/computing/opencv/"&gt;OpenCV&lt;/a&gt;吧，什麼都準備好啦xd 不過不知道wxWidget和OpenCV能不能好好一起工作呀..&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/10671828-7985731287346389840?l=petertc.blogspot.com'/&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/petertc?a=SREwju_AQ9M:fyHBZZqZ3xU:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/petertc?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/petertc?a=SREwju_AQ9M:fyHBZZqZ3xU:63t7Ie-LG7Y"&gt;&lt;img src="http://feeds.feedburner.com/~ff/petertc?d=63t7Ie-LG7Y" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/petertc?a=SREwju_AQ9M:fyHBZZqZ3xU:YwkR-u9nhCs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/petertc?d=YwkR-u9nhCs" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/petertc/~4/SREwju_AQ9M" height="1" width="1"/&gt;</content><app:edited xmlns:app="http://www.w3.org/2007/app">2008-06-27T10:58:39.036+08:00</app:edited><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://bp1.blogger.com/_FCvqxwA8I2I/SGRXSdNW4hI/AAAAAAAAA-k/Wn_dmdYCTPc/s72-c/screenshot.jpg" height="72" width="72" /><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total><feedburner:origLink>http://petertc.blogspot.com/2008/06/wxwidget-cross-platform-problem.html</feedburner:origLink></entry><entry><title type="text">oracle筆記</title><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/petertc/~3/pOd2NR6_jWw/oracle.html" /><category term="note" /><category term="csie" /><category term="database" /><category term="oracle" /><author><name>PTC</name><email>noreply@blogger.com</email><uri>http://www.blogger.com/profile/06497780346368581325</uri></author><updated>2008-06-14T22:49:46-07:00</updated><id>tag:blogger.com,1999:blog-10671828.post-555829309473440407</id><content type="html">&lt;p&gt;會碰到&lt;a href="http://www.oracle.com/"&gt;oracle&lt;/a&gt;是因為專題，內建的webmin（IEonly xd）和PL/SQL，但一般使用還是mysql比較簡單吧：q&lt;/p&gt;&lt;p&gt;畢竟使用群不同，像是之前要找一個oracle client+ER diagram產生，找到的都是商業軟體超貴，不像mysql有一海票&lt;/p&gt;&lt;p&gt;然後呀，oracle現在XE版是免費自由使用的，其他版本用在開發上也都可以免費下載使用。其實這已經是很久很久以前的新聞了，只是好像很多人還是不知道。&lt;br /&gt;&lt;br /&gt;引述鄉民推文：&lt;br /&gt;&lt;blockquote&gt;&lt;em&gt;&lt;span style="font-size:78%;"&gt;→ westlife138 推：oracle不是超貴＠＠                                 08/06/12&lt;br /&gt;→ easy 推：嘖嘖..應該是水貨 XD                                       08/06/12&lt;/span&gt;&lt;/em&gt;&lt;br /&gt;&lt;/blockquote&gt;&lt;p&gt;連上database課的老師上課都在那邊說學校買不起超好笑，專題展報專題也被評審質問我們oracle是不是正版的orz&lt;br /&gt;&lt;/p&gt;&lt;p&gt;有時候感覺教授們除了conference、journal、paper上得東西以外，其他資訊和業界動態真的有點lag xd&lt;/p&gt;&lt;p&gt;以下只是個人筆記，應該很多人寫過了文件也有（不知道為甚麼連oracle官網超慢），based on Oracle 11g XE&lt;/p&gt;&lt;p&gt;一.流水號&lt;br /&gt;oracle不能像mysql簡單產生流水號，必須要新增"sequence"再用"trigger"去產生&lt;br /&gt;&lt;/p&gt;&lt;p&gt;1.建立sequence&lt;br /&gt;&lt;span style="font-size:85%;"&gt;&lt;/p&gt;&lt;blockquote&gt;CREATE SEQUENCE   "TRANSACTION_SEQ"  MINVALUE 1024 MAXVALUE 999999999999999999999999999 INCREMENT BY 1 START WITH 1144 NOCACHE  ORDER  NOCYCLE&lt;/blockquote&gt;&lt;/span&gt;&lt;span style="font-size:100%;"&gt;以上SQL建立一個sequence "T&lt;/span&gt;RANSACTION_SEQ"，範圍1024~999999999999999999999999999，從1144開始&lt;p&gt;特別要注意的是要NOCACHE要不然號碼會亂跳，而且每個relational schema通常要對應一個專用的sequence。&lt;br /&gt;&lt;br /&gt;2.建立trigger&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-size:85%;"&gt;&lt;/p&gt;&lt;blockquote&gt;CREATE OR REPLACE TRIGGER  "BANKINFORM_T1" &lt;br /&gt;BEFORE&lt;br /&gt;insert on "BANKINFORM"&lt;br /&gt;for each row&lt;br /&gt;begin&lt;br /&gt;SELECT       BANK_INFORM1_SEQ.NEXTVAL INTO :NEW.NO FROM DUAL;&lt;br /&gt;end;&lt;/blockquote&gt;&lt;/span&gt;&lt;br /&gt;&lt;p&gt;以上sql code 建立trigger "BANKINFORM_T1"，他會在"BANKINFORM"這個table做insert前在要insert的"NO"這個欄位自動插入流水號，即使你的insert on語句有對"NO"設定值也會被蓋掉（因為是再妳輸入指令之後才激發他的trigger）。&lt;br /&gt;&lt;/p&gt;&lt;p&gt;二. 欄位預設值&lt;br /&gt;跟流水號很像，只是輸入的是constant&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-size:85%;"&gt;&lt;/p&gt;&lt;blockquote&gt;CREATE OR REPLACE TRIGGER  "BANKINFORM_T1" &lt;br /&gt;BEFORE&lt;br /&gt;insert on "BANKINFORM"&lt;br /&gt;for each row&lt;br /&gt;begin&lt;br /&gt;SELECT       0 INTO :NEW.NO FROM DUAL;&lt;br /&gt;end;&lt;/blockquote&gt;&lt;/span&gt;&lt;p&gt;"NO"會自動填入預設值為0&lt;/p&gt;&lt;p&gt;三.時戳&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-size:85%;"&gt;&lt;/p&gt;&lt;blockquote&gt;CREATE OR REPLACE TRIGGER  "LOG_T2" &lt;br /&gt;BEFORE&lt;br /&gt;insert on "LOG"&lt;br /&gt;for each row&lt;br /&gt;begin&lt;br /&gt;SELECT systimestamp INTO :NEW.TIME FROM DUAL;&lt;br /&gt;end;&lt;/blockquote&gt;&lt;/span&gt;於"TIME"欄位自動填入系統現在時間&lt;p&gt;四. table間資料同步&lt;/p&gt;&lt;p&gt;&lt;span style="font-size:85%;"&gt;&lt;/p&gt;&lt;blockquote&gt;CREATE OR REPLACE TRIGGER  "TRANSACTION_ACCT_UPDATE" &lt;br /&gt;AFTER &lt;br /&gt;insert ON transaction_acct&lt;br /&gt;&lt;br /&gt;FOR EACH ROW&lt;br /&gt;DECLARE&lt;br /&gt;  v_no            TRANSACTION_ACCT.ACCOUNT_NO%TYPE;&lt;br /&gt;  v_balance0      ACCOUNT.BALANCE%TYPE;&lt;br /&gt;  v_withdrawal    TRANSACTION_ACCT.WITHDRAWAL%TYPE;&lt;br /&gt;  v_deposit       TRANSACTION_ACCT.DEPOSIT%TYPE;&lt;br /&gt;&lt;br /&gt;BEGIN&lt;br /&gt;  v_deposit := :new.DEPOSIT;&lt;br /&gt;  v_withdrawal := :new.WITHDRAWAL;&lt;br /&gt;  v_no := :new.ACCOUNT_NO;&lt;br /&gt;&lt;br /&gt;  SELECT ACCOUNT.BALANCE&lt;br /&gt;    INTO v_balance0&lt;br /&gt;    FROM ACCOUNT&lt;br /&gt;   WHERE ACCOUNT.NO= v_no;&lt;br /&gt;&lt;br /&gt;  update ACCOUNT &lt;br /&gt;    set ACCOUNT.BALANCE=(v_balance0+v_deposit-v_withdrawal) &lt;br /&gt;   where ACCOUNT.NO=v_no;&lt;br /&gt;&lt;br /&gt;END;&lt;/blockquote&gt;&lt;/span&gt;&lt;br /&gt;這一個trigger會在"TRANSACTION_ACCT"插入交易紀錄後，依據交易紀錄自動跟新"ACCOUNT"這個table的balance欄位，其實就是&lt;blockquote&gt;&lt;span style="font-size:85%;"&gt;balance=balance+deposit-withdrawal;&lt;/span&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;p&gt;其實很多事都可以在應用端eg. PHP簡單解決，只是能在database上就搞定也不錯。&lt;/p&gt;&lt;p&gt;其實一般應用還是PHP+mysql才是王道呀&lt;br /&gt;小公司或學校計中都是找這種人，我報JavaEE+oracle就被刷掉了（翻桌）&lt;br /&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/10671828-555829309473440407?l=petertc.blogspot.com'/&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/petertc?a=pOd2NR6_jWw:fIVixXcfOSg:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/petertc?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/petertc?a=pOd2NR6_jWw:fIVixXcfOSg:63t7Ie-LG7Y"&gt;&lt;img src="http://feeds.feedburner.com/~ff/petertc?d=63t7Ie-LG7Y" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/petertc?a=pOd2NR6_jWw:fIVixXcfOSg:YwkR-u9nhCs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/petertc?d=YwkR-u9nhCs" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/petertc/~4/pOd2NR6_jWw" height="1" width="1"/&gt;</content><app:edited xmlns:app="http://www.w3.org/2007/app">2008-06-15T13:49:46.088+08:00</app:edited><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total><feedburner:origLink>http://petertc.blogspot.com/2008/06/oracle.html</feedburner:origLink></entry><entry><title type="text">yam影音（二）</title><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/petertc/~3/5RbZZ-HbG7I/yam.html" /><category term="yam" /><category term="networking" /><author><name>PTC</name><email>noreply@blogger.com</email><uri>http://www.blogger.com/profile/06497780346368581325</uri></author><updated>2008-05-31T20:37:47-07:00</updated><id>tag:blogger.com,1999:blog-10671828.post-5197114604025261290</id><content type="html">&lt;p&gt;今天在&lt;a href="telnet://ptt.cc"&gt;ptt.cc &lt;/a&gt;看到EZsoft看到更快的方法！&lt;/p&gt;&lt;p&gt;範例：&lt;/p&gt;&lt;p&gt;下載 http://mymedia.yam.com/m/2145589&lt;/p&gt;&lt;p&gt;只要取後面的ID，"2145589"&lt;br /&gt;在配上prefix："http://mymedia.yam.com/api/m/?pID="&lt;/p&gt;&lt;p&gt;得http://mymedia.yam.com/api/m/?pID=2145589&lt;br /&gt;&lt;/p&gt;&lt;p&gt;連過去以後就可以看到mp3檔的位置了，可以直接下載！&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/10671828-5197114604025261290?l=petertc.blogspot.com'/&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/petertc?a=5RbZZ-HbG7I:_-eqVSgQA64:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/petertc?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/petertc?a=5RbZZ-HbG7I:_-eqVSgQA64:63t7Ie-LG7Y"&gt;&lt;img src="http://feeds.feedburner.com/~ff/petertc?d=63t7Ie-LG7Y" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/petertc?a=5RbZZ-HbG7I:_-eqVSgQA64:YwkR-u9nhCs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/petertc?d=YwkR-u9nhCs" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/petertc/~4/5RbZZ-HbG7I" height="1" width="1"/&gt;</content><app:edited xmlns:app="http://www.w3.org/2007/app">2008-06-01T11:37:47.965+08:00</app:edited><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">1</thr:total><feedburner:origLink>http://petertc.blogspot.com/2008/06/yam.html</feedburner:origLink></entry><entry><title type="text">FreeBSD SA Q&amp;A</title><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/petertc/~3/f9R8Y1sSFYA/freebsd-sa-q.html" /><category term="freebsd" /><category term="cnca" /><category term="bsd" /><author><name>PTC</name><email>noreply@blogger.com</email><uri>http://www.blogger.com/profile/06497780346368581325</uri></author><updated>2008-05-02T03:47:16-07:00</updated><id>tag:blogger.com,1999:blog-10671828.post-8702802970231992188</id><content type="html">&lt;p&gt;這篇是當我還是高中生，參加&lt;a href="http://ckshcnca.cksh.tp.edu.tw/"&gt;某神秘組織&lt;/a&gt;時，為了技術傳承而做紀錄。只是到後來還是差不多淪為個人筆記了，而某組織也已經...xd&lt;/p&gt;&lt;p&gt;由於年代久遠（FreeBSD4.5~FreeBSD5.3），有些東西應該out of date了，有誤請指正。&lt;/p&gt;&lt;p&gt;話說FreeBSD7, FreeBSD8都release，而我已經好久沒用BSD了（有些事情直接用ubuntu之類的比較不會找自己麻煩xd ）。最近計中找工讀，難得列出要會BSD的人，跑過去發現是寫PHP+mysql的東西，小失望了一下：q  不過有機會應該也碰的到吧。&lt;/p&gt;&lt;p&gt;/*end of  intro*/&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;如何讓一個用戶只能ftp而無法telnet&lt;/strong&gt;&lt;br /&gt;&lt;/p&gt;&lt;code&gt;&lt;br /&gt;1. 修改 /etc/passwd ，將該 user 的 shell 改為 /usr/bin/false&lt;br /&gt;&lt;br /&gt;2. 在 /etc/shells 檔中增加 /usr/bin/false&lt;br /&gt;&lt;br /&gt;此時，該用戶只能 ftp，而不能使用 telnet。&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;crontab設了不會跑?!&lt;/strong&gt;&lt;br /&gt;&lt;code&gt;&lt;br /&gt;maybe最後一行完沒有按enter = =a  &lt;-榮登本系列最笨 &lt;/code&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;#watch&lt;br /&gt;Fatal: Cannot open snoop device.&lt;/strong&gt;&lt;br /&gt;&lt;code&gt;&lt;br /&gt;BSD4.X&lt;br /&gt;cd /dev ; sh MAKEDEV snp0 snp1 snp2 snp3 snp4 ....&lt;br /&gt;REF: kernel:pseudo-device   snp     16&lt;br /&gt;&lt;br /&gt;BSD5.X&lt;br /&gt;kernel :device snp&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;bind: Address already in use&lt;/strong&gt;&lt;br /&gt;&lt;code&gt;&lt;br /&gt;檢查/etc/inetd /usr/local/etc/rc.d/ 有沒有重複啟動的服務&lt;br /&gt;通常在/var/log/messenge的錯誤訊息可以看的出來是哪個service重複啟動&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;perl: warning: Setting locale failed.&lt;br /&gt;perl: warning: Please check that your locale settings:&lt;/strong&gt;&lt;br /&gt;&lt;code&gt;&lt;br /&gt;FreeBsd 5.2 R locale problem&lt;br /&gt;已經改了，改成 en_US.ISO8859-1，那個底線已經拿掉了。&lt;br /&gt;遇到 locale 有問題先看看 /usr/share/locale 吧！&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;抓下來目錄名有空白&lt;/strong&gt;&lt;br /&gt;&lt;code&gt;&lt;br /&gt;ptc_3w: 抓下來目錄有空白&lt;br /&gt;ptc_3w: 根本進不去&lt;br /&gt;eric1300460: 可以&lt;br /&gt;ptc_3w: 怎麼弄&lt;br /&gt;eric1300460: 例如 b 1&lt;br /&gt;ptc_3w: ?&lt;br /&gt;eric1300460: 請打b\ 1&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;cfgmaker 錯誤&lt;/strong&gt;&lt;br /&gt;&lt;code&gt;&lt;br /&gt;應該是沒啟動 snmpd&lt;br /&gt;現在新版的程式大都改用 rc.subr 所以都要在&lt;br /&gt;rc.conf 加入 xxxx_enable="YES"&lt;br /&gt;&lt;br /&gt;而 snmpd 在 5.x 不知道多少之後就也是使用 rc.subr 所以要在 rc.conf 加&lt;br /&gt;snmpd_enable="YES"&lt;br /&gt;才會啟動&lt;br /&gt;否則執行 /usr/local/etc/rc.d/snmpd.sh start 是沒反應的&lt;br /&gt;&lt;br /&gt;PS: 目前網路上搜到的文件都該翻新了! 都是舊的照著做一定會漏掉這個&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;fetch: wxGTK-2.4.2.tar.bz2: local modification time does not match remote&lt;/strong&gt;&lt;br /&gt;&lt;code&gt;&lt;br /&gt;校時試看看&lt;br /&gt;man ntpdate&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;telnetd: All network ports in use. //只能開32個telnet&lt;/strong&gt;&lt;br /&gt;&lt;code&gt;&lt;br /&gt;1.kernel 設定&lt;br /&gt;pseudo-device   pty     " " &lt;-預設?  2. /dev 底下缺乏相對應的檔案 #cd /dev //預設32個 #./MAKEDEV pty1 //+32=64 #./MAKEDEV pty1 pty2 //+32+32=96 ..已次類推...  ref:http://freebsd.ntu.edu.tw/4/6.html    http://cnpa.cse.yzu.edu.tw/~freebsd/kernel/5_6_2.htm  PS.5.X的改變目前聽到的就是pty變成動態增加,不用努力去破kernel當中的pty上限 &lt;/code&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Q3.10 -- How do I solve "collect: I/O error on connection" errors?&lt;/strong&gt;&lt;br /&gt;&lt;code&gt;&lt;br /&gt;Date: April 8, 1997&lt;br /&gt;&lt;br /&gt;1.There is nothing wrong.&lt;br /&gt;This is just a diagnosis of a condition that had not been diagnosed before.&lt;br /&gt;If you are getting a lot of these from a single host, there is probably some&lt;br /&gt;incompatibility between 8.x and that host.&lt;br /&gt;If you get a lot of them in general, you may have network problems that are&lt;br /&gt;causing connections to get reset.&lt;br /&gt;&lt;br /&gt;Note that this problem is sometimes caused by incompatible values of the&lt;br /&gt;MTU (Maximum Transmission Unit) size on a SLIP or PPP connection.&lt;br /&gt;Be sure that your MTU size is configured to be the same value as what yo&lt;br /&gt;&lt;br /&gt;2.sendmail.cf -&gt;MaxMessageSize&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;根目錄為什麼不用soft-updates?&lt;/strong&gt;&lt;br /&gt;&lt;code&gt;&lt;br /&gt;# man tuning&lt;br /&gt;--snip--&lt;br /&gt;First,&lt;br /&gt;softupdates guarantees file system consistency in the case of a crash but&lt;br /&gt;could very easily be several seconds (even a minute!) behind on pending&lt;br /&gt;write to the physical disk.  If you crash you may lose more work than&lt;br /&gt;otherwise.  Secondly, softupdates delays the freeing of file system&lt;br /&gt;blocks.  If you have a file system (such as the root file system) which&lt;br /&gt;is close to full, doing a major update of it, e.g. ``make installworld'',&lt;br /&gt;can run it out of space and cause the update to fail.  For this reason,&lt;br /&gt;softupdates will not be enabled on the root file system during a typical&lt;br /&gt;install.  There is no loss of performance since the root file system is&lt;br /&gt;rarely written to.&lt;br /&gt;&lt;br /&gt;By Dan Nelson (dnelson@emsphone.com)&lt;br /&gt;&lt;br /&gt;The 2 drawbacks with SU are&lt;br /&gt;&lt;br /&gt;1 - You can't immediately reuse the space occupied by a file you just&lt;br /&gt;deleted; this may bite you if you do an installworld and don't have&lt;br /&gt;20MB free on /.  when it comes to installing /sbin, you need 18MB&lt;br /&gt;for the new binaries, but you can't reuse the 18MB for the&lt;br /&gt;just-deleted binaries.&lt;br /&gt;&lt;br /&gt;2 - If you create a file, SU doesn't commit it immediately; it waits a&lt;br /&gt;bit.  If you edit rc.conf and crash (or reboot by power-cycling),&lt;br /&gt;you may find you don't have an rc.conf.&lt;br /&gt;&lt;/code&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/10671828-8702802970231992188?l=petertc.blogspot.com'/&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/petertc?a=f9R8Y1sSFYA:bsXf0ZV7x08:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/petertc?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/petertc?a=f9R8Y1sSFYA:bsXf0ZV7x08:63t7Ie-LG7Y"&gt;&lt;img src="http://feeds.feedburner.com/~ff/petertc?d=63t7Ie-LG7Y" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/petertc?a=f9R8Y1sSFYA:bsXf0ZV7x08:YwkR-u9nhCs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/petertc?d=YwkR-u9nhCs" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/petertc/~4/f9R8Y1sSFYA" height="1" width="1"/&gt;</content><app:edited xmlns:app="http://www.w3.org/2007/app">2008-05-02T18:47:16.784+08:00</app:edited><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total><feedburner:origLink>http://petertc.blogspot.com/2008/05/freebsd-sa-q.html</feedburner:origLink></entry><entry><title type="text">[文件] lftp指令</title><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/petertc/~3/2ewhsbOivB0/lftp.html" /><category term="lftp" /><category term="cnca" /><category term="bsd" /><author><name>PTC</name><email>noreply@blogger.com</email><uri>http://www.blogger.com/profile/06497780346368581325</uri></author><updated>2008-04-21T05:11:15-07:00</updated><id>tag:blogger.com,1999:blog-10671828.post-2707661925169044972</id><content type="html">&lt;strong&gt;lftp&lt;/strong&gt;
&lt;br /&gt;可抓http,ftp protocol, 且可一次傳輸整個目錄, 多線傳輸的ftp client
&lt;br /&gt;&lt;p&gt;Commands
&lt;br /&gt;
&lt;br /&gt;1.! shell command
&lt;br /&gt;執行local端的指令
&lt;br /&gt;
&lt;br /&gt;EX:
&lt;br /&gt;!ls 列出本機資料夾內容
&lt;br /&gt;
&lt;br /&gt;2.alias
&lt;br /&gt;設定指令別名
&lt;br /&gt;
&lt;br /&gt;EX:
&lt;br /&gt;alias dir ls -lF    下dir=下ls -lF
&lt;br /&gt;
&lt;br /&gt;3.bookmark
&lt;br /&gt;建立我的最愛
&lt;br /&gt;
&lt;br /&gt;add &lt;name&gt; [&lt;loc&gt;]
&lt;br /&gt;add current place or given location to bookmarks and bind to given name
&lt;br /&gt;
&lt;br /&gt;del &lt;name&gt;
&lt;br /&gt;remove bookmark with name
&lt;br /&gt;&lt;/p&gt;&lt;p&gt;edit
&lt;br /&gt;start editor on bookmarks file
&lt;br /&gt;
&lt;br /&gt;import &lt;type&gt;
&lt;br /&gt;import foreign bookmarks
&lt;br /&gt;
&lt;br /&gt;list
&lt;br /&gt;list bookmarks (default)
&lt;br /&gt;
&lt;br /&gt;4.cat files
&lt;br /&gt;cat outputs the remote file(s) to stdout.
&lt;br /&gt;
&lt;br /&gt;5.cd rdir
&lt;br /&gt;
&lt;br /&gt;6.close [-a]
&lt;br /&gt;切斷閒置的連線
&lt;br /&gt;Close  idle  connections.
&lt;br /&gt;By default only with the current server,
&lt;br /&gt;use -a to close all idle connections.
&lt;br /&gt;
&lt;br /&gt;7.echo [-n]
&lt;br /&gt;guess what it does. //man lftp原文就是這樣寫的XD
&lt;br /&gt;&lt;/p&gt;&lt;p&gt;8.exit code
&lt;br /&gt;離開,or丟到background跑
&lt;br /&gt;下exit bg就直接丟到背景執行
&lt;br /&gt;
&lt;br /&gt;9.get
&lt;br /&gt;抓檔 //可指定多個檔案,但不可用萬用字元"*"
&lt;br /&gt;
&lt;br /&gt;-c        continue, reget
&lt;br /&gt;續傳下載
&lt;br /&gt;
&lt;br /&gt;-E        delete remote files after successful transfer
&lt;br /&gt;下載完後刪除遠端檔案
&lt;br /&gt;
&lt;br /&gt;-a        use ascii mode (binary is the default)
&lt;br /&gt;使用ASCII下載
&lt;br /&gt;
&lt;br /&gt;-O &lt; base &gt; specifies base directory or URL where files should be place
&lt;br /&gt;選擇下載後的目錄,檔名,位置(URL)
&lt;br /&gt;&lt;/p&gt;&lt;p&gt;EX:
&lt;br /&gt;get README
&lt;br /&gt;get README -o debian.README
&lt;br /&gt;get README README.mirrors
&lt;br /&gt;get README -o debian.README README.mirrors -o debian.mirrors
&lt;br /&gt;get README -o ftp://some.host.org/debian.README
&lt;br /&gt;get README -o ftp://some.host.org/debian-dir/ (end slash is importan
&lt;br /&gt;t)
&lt;br /&gt;
&lt;br /&gt;10.?/help
&lt;br /&gt;"中文"說明唷
&lt;br /&gt;
&lt;br /&gt;11.lcd ldir
&lt;br /&gt;
&lt;br /&gt;12.lpwd
&lt;br /&gt;
&lt;br /&gt;13.ls
&lt;br /&gt;
&lt;br /&gt;14.mget
&lt;br /&gt;Gets selected files with expanded wildcards.
&lt;br /&gt;&lt;/p&gt;&lt;p&gt;
&lt;br /&gt;-c        continue, reget.
&lt;br /&gt;
&lt;br /&gt;-d
&lt;br /&gt;create directories the same as file names and get
&lt;br /&gt;the files into them instead of current directory.
&lt;br /&gt;
&lt;br /&gt;-E        delete remote files after successful transfer
&lt;br /&gt;
&lt;br /&gt;-a
&lt;br /&gt;use ascii mode (binary is the default)
&lt;br /&gt;
&lt;br /&gt;-O &lt;base&gt; specifies base directory or URL where files should be placed
&lt;br /&gt;
&lt;br /&gt;15.Mirror
&lt;br /&gt;做mirror
&lt;br /&gt;&lt;/p&gt;&lt;p&gt;16.mkdir [-p] dir(s)
&lt;br /&gt;
&lt;br /&gt;Make remote directories. If -p is used, make all components of paths.
&lt;br /&gt;
&lt;br /&gt;17.mput [-c] [-d] [-a] [-E] [-O base] files
&lt;br /&gt;Upload files with wildcard expansion.
&lt;br /&gt;
&lt;br /&gt;-c        continue, reput
&lt;br /&gt;
&lt;br /&gt;-d
&lt;br /&gt;create directories the same as in file names and put the files into them instead
&lt;br /&gt; of current directory
&lt;br /&gt;
&lt;br /&gt;-E
&lt;br /&gt;delete remote files after successful transfer (dangerous)
&lt;br /&gt;
&lt;br /&gt;-a        use ascii mode (binary is the default)
&lt;br /&gt;
&lt;br /&gt;-O &lt;base&gt; specifies base directory or URL where files should be placed
&lt;br /&gt;
&lt;br /&gt;18.mrm file(s)
&lt;br /&gt;Removes specified file(s) with 萬用字元"*".
&lt;br /&gt;&lt;/p&gt;&lt;p&gt;19.mv file1 file2
&lt;br /&gt;
&lt;br /&gt;20.open
&lt;br /&gt;
&lt;br /&gt;21.pget [OPTS] rfile [-o lfile ]
&lt;br /&gt;多線下載
&lt;br /&gt;
&lt;br /&gt;-n 設定幾線下載,預設是5
&lt;br /&gt;
&lt;br /&gt;22.put
&lt;br /&gt;-o &lt;rfile&gt;
&lt;br /&gt;specifies remote file name (default - basename of lfi
&lt;br /&gt;le)
&lt;br /&gt;
&lt;br /&gt;-c
&lt;br /&gt;continue, reput it requires permission to overwrite remote files
&lt;br /&gt;
&lt;br /&gt;-E        delete local files after successful transfer (dangerous)
&lt;br /&gt;
&lt;br /&gt;-a        use ascii mode (binary is the default)
&lt;br /&gt;
&lt;br /&gt;-O &lt;base&gt; specifies base directory or URL where files should be placed
&lt;br /&gt;&lt;/p&gt;&lt;p&gt;23.pwd
&lt;br /&gt;
&lt;br /&gt;24.rm[-r]
&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;功能多指令就多...雖然有中文help
&lt;br /&gt;&lt;/p&gt;&lt;p&gt;相較於BSD內建的ftp client或是較為popular的ncftp，我覺得lftp是個很好的alternate&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;--&lt;/p&gt;&lt;p&gt;本文首次發表於Jan 31 2004，濟城歲月(telnet://bbs.cksh.tp.edu.tw)&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/10671828-2707661925169044972?l=petertc.blogspot.com'/&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/petertc?a=2ewhsbOivB0:tsIMBS8ITX4:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/petertc?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/petertc?a=2ewhsbOivB0:tsIMBS8ITX4:63t7Ie-LG7Y"&gt;&lt;img src="http://feeds.feedburner.com/~ff/petertc?d=63t7Ie-LG7Y" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/petertc?a=2ewhsbOivB0:tsIMBS8ITX4:YwkR-u9nhCs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/petertc?d=YwkR-u9nhCs" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/petertc/~4/2ewhsbOivB0" height="1" width="1"/&gt;</content><app:edited xmlns:app="http://www.w3.org/2007/app">2008-04-21T20:11:15.231+08:00</app:edited><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total><feedburner:origLink>http://petertc.blogspot.com/2008/04/lftp.html</feedburner:origLink></entry><entry><title type="text">[survey]車險</title><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/petertc/~3/tMkwAGZtTuU/survey.html" /><category term="motor" /><category term="car" /><category term="insurance" /><category term="biker" /><author><name>PTC</name><email>noreply@blogger.com</email><uri>http://www.blogger.com/profile/06497780346368581325</uri></author><updated>2008-03-29T06:14:05-07:00</updated><id>tag:blogger.com,1999:blog-10671828.post-4143255616388941915</id><content type="html">&lt;p&gt;在意外接手了一台&lt;del&gt; &lt;span style="color:#99ff99;"&gt;泛綠&lt;/span&gt; &lt;/del&gt;的&lt;a href="http://www.nissan.com.tw/car/march/index.asp"&gt;K11&lt;/a&gt;後，發現在騎機車和開汽車的心態真的不一樣。&lt;/p&gt;&lt;p&gt;以前騎機車的時候都覺得要是出事死的是自己（跟環境有關啦...在台北市就不一定了），騎起來就比較沒心理負擔...&lt;/p&gt;&lt;p&gt;但是在開汽車的時候，就會覺得，這東西真的可以殺人的耶（蘇花公路除外），於是... 戒慎恐懼？&lt;/p&gt;&lt;p&gt;不過這跟跟個性有關吧... 上禮拜交通安全宣導，聽說砂石車駕駛都是寧可死別人也不要死自己的。嗯，所以說砂石車的駕駛們都是scoripo嗎xd&lt;/p&gt;&lt;p&gt;喔對了這篇是要講保險的。&lt;/p&gt;&lt;p&gt;強制險都只保人不保車，汽車稍微撞到都超貴的，所以想買個保險，這樣撞到的時候就可以請保險公司負擔對方的維修費用。&lt;/p&gt;&lt;p&gt;survey了一下，報告如後：&lt;/p&gt;&lt;p&gt;一.汽機車都有的部份&lt;br /&gt;&lt;br /&gt;1.強制第三人責任險(規定要保)&lt;br /&gt;理賠對象：第三人（對方及自己的乘客）&lt;br /&gt;理賠金額：可能不足以全額支付賠償，可以任意第三人責任險補足不足部份&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;2.駕駛人傷害險（為強制險附約）&lt;br /&gt;理賠對象：第一人（自己）&lt;br /&gt;理賠金額：同強制險&lt;br /&gt;&lt;br /&gt;學生應該不用保，因為有學生平安保險，和其他壽險（如果有的話），除非覺得自己很值錢？&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;3.任意第三人責任險（為強制險附約）&lt;br /&gt;分成傷害責任險和財損責任險，敘述如後&lt;br /&gt;&lt;br /&gt;3-1 傷害責任險&lt;br /&gt;理賠對象：同強制險&lt;br /&gt;理賠金額：強制險不足部份&lt;br /&gt;&lt;/p&gt;&lt;p&gt;3-2 財損責任險&lt;br /&gt;理賠對象：第三人財產（對方的車輛）&lt;br /&gt;理賠金額：20萬&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;二.汽車only的部份&lt;br /&gt;4.乘客險（為強制險附約）&lt;br /&gt;其實和3-1 傷害責任險差不多都是補足強制險不足部份&lt;br /&gt;&lt;br /&gt;5.車體損失險 / 6.限額車體損失險 / 7.竊盜險&lt;br /&gt;理賠對象：自己的車&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;總結：&lt;br /&gt;for學生&lt;br /&gt;保強制第三人責任險+任意第三人責任險應該就ok了吧&lt;br /&gt;可以幾乎完整cover車禍時對對方的賠償（人+車），這樣一年保費比原本強制險多五百多左右&lt;br /&gt;&lt;/p&gt;&lt;p&gt;自己的人以學生平安保險或其他壽險支付&lt;br /&gt;&lt;br /&gt;自己的車...機車就沒辦法保啦&lt;br /&gt;如果是汽車，而且很愛護她的話，或許可以在加上車體損失險, 竊盜險&lt;br /&gt;&lt;br /&gt;參考資料：&lt;br /&gt;達康保險 http://www.ezsafe.com.tw/&lt;br /&gt;PTT Insurance板&lt;br /&gt;&lt;br /&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/10671828-4143255616388941915?l=petertc.blogspot.com'/&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/petertc?a=tMkwAGZtTuU:19-CJTXQ9r4:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/petertc?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/petertc?a=tMkwAGZtTuU:19-CJTXQ9r4:63t7Ie-LG7Y"&gt;&lt;img src="http://feeds.feedburner.com/~ff/petertc?d=63t7Ie-LG7Y" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/petertc?a=tMkwAGZtTuU:19-CJTXQ9r4:YwkR-u9nhCs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/petertc?d=YwkR-u9nhCs" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/petertc/~4/tMkwAGZtTuU" height="1" width="1"/&gt;</content><app:edited xmlns:app="http://www.w3.org/2007/app">2008-03-29T21:14:05.705+08:00</app:edited><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total><feedburner:origLink>http://petertc.blogspot.com/2008/03/survey.html</feedburner:origLink></entry><entry><title type="text">2008總統大選花蓮/東臺灣政見比較(draft)</title><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/petertc/~3/1eCE9cNF8gM/2008draft.html" /><category term="dpp" /><category term="taiwan" /><category term="kmt" /><category term="politics" /><category term="roc" /><author><name>PTC</name><email>noreply@blogger.com</email><uri>http://www.blogger.com/profile/06497780346368581325</uri></author><updated>2008-03-19T21:03:21-07:00</updated><id>tag:blogger.com,1999:blog-10671828.post-7264871805792314037</id><content type="html">&lt;div align="center"&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp3.blogger.com/_FCvqxwA8I2I/R-Hhar4i4jI/AAAAAAAAA4I/3E31zy8fceM/s1600-h/mashi.jpg"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;" src="http://bp3.blogger.com/_FCvqxwA8I2I/R-Hhar4i4jI/AAAAAAAAA4I/3E31zy8fceM/s400/mashi.jpg" border="0" alt="" id="BLOGGER_PHOTO_ID_5179668895025521202" /&gt;&lt;/a&gt;&lt;span style="font-size:78%;"&gt;好像感情好很一樣xd&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;p&gt;&lt;span style="font-size:180%;"&gt;&lt;span style="font-family:georgia;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-size:180%;"&gt;&lt;span style="font-family:georgia;"&gt;本篇為政治文XD&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-size:100%;"&gt;&lt;span style="font-family:georgia;"&gt;本來這次大選沒有要投的，只是因為某些因素要回臺北一下，所以就順便去投了。&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-size:100%;"&gt;&lt;span style="font-family:georgia;"&gt;其實我也不知道要投誰，只能依照雙方候選人的政見做比較...但是後來發現這實在太困難了orz&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-size:100%;"&gt;&lt;span style="font-family:georgia;"&gt;&lt;br /&gt;每個人care的部份，權重都不一樣&lt;br /&gt;&lt;br /&gt;這不是category的觀念，比較像tag&lt;br /&gt;都是相連結的&lt;br /&gt;&lt;br /&gt;鐵路該算環境，交通，還是經濟？&lt;br /&gt;&lt;br /&gt;大概只能特定挑出來去做比較，like tag&lt;br /&gt;今天設定tag=環境|交通|經濟，就可以做出比較&lt;br /&gt;&lt;br /&gt;但這個tag也是人為設定的，不是客觀的標準&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;可能在統計，或是公共政策比較學有比較好的方法去做這件事吧&lt;br /&gt;可惜我不是學統計或政治的&lt;br /&gt;&lt;br /&gt;在我學得課程裡面，最接近的是data mining XD&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:180%;"&gt;&lt;span style="font-family:georgia;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-size:180%;"&gt;&lt;span style="font-family:georgia;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-size:180%;"&gt;&lt;span style="font-family:georgia;"&gt;2008總統大選花蓮/東臺灣政見比較&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:georgia;"&gt;&lt;span style="font-size:100%;"&gt;一號  &lt;a href="http://www.frankhsieh.com/whitebook.php?lid=157"&gt;東台灣區域政策&lt;/a&gt;：&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;1.鐵路：a. 臺北-花蓮火車行車時間119-&gt;110分鐘&lt;br /&gt;        b. 花蓮-高雄火車行車時間120分鐘&lt;br /&gt;        c. 鐵路運送小客車&lt;br /&gt;&lt;br /&gt;2.經濟：a. 帶動民間投資300億&lt;br /&gt;        b. 平均每戶所得達到3.5萬美元以上&lt;br /&gt;        c. 增加東部產業之年產值2000億元&lt;br /&gt;        d. 失業率降低至4%以下，工作滿意比例提昇至70%以上。&lt;br /&gt;&lt;br /&gt;3.觀光：前往花東旅遊人數增加至1400萬人次。&lt;br /&gt;&lt;br /&gt;4.環境：調整高耗能、高耗水、高污染的傳統產業結構&lt;br /&gt;&lt;br /&gt;5.民族：a. 太魯閣國家公園共管&lt;br /&gt;        b. 蘭嶼原住民自治區&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:georgia;"&gt;&lt;span style="font-size:100%;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:georgia;"&gt;&lt;span style="font-size:100%;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:georgia;"&gt;&lt;span style="font-size:100%;"&gt;二號  &lt;a href="http://www.ma19.net/issue/2353"&gt;花東地區幸福工程：&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;1.鐵路：a. 電氣化,雙軌（7年）&lt;br /&gt;        b. 採購車廂太魯閣號40分鐘一班（4年）&lt;br /&gt;        c. 採購車廂以鐵路運運砂石，減少蘇花砂石車（3年）&lt;br /&gt;&lt;br /&gt;2.公路：a. 改善蘇花公路&lt;br /&gt;        b. 推動砂石車專用道&lt;br /&gt;        c. 規劃花東高速公路&lt;br /&gt;&lt;br /&gt;3.海路：a. 改善花蓮港&lt;br /&gt;        b. 改善漁港&lt;br /&gt;&lt;br /&gt;4.農業：a. 設立優質米生產專區，減少休耕面積&lt;br /&gt;        b. 荖花、荖葉納入農業天然災害救助範圍&lt;br /&gt;        c. 發展海洋深層水&lt;br /&gt;&lt;br /&gt;5.觀光：a. 改善海陸交通&lt;br /&gt;        b. 推動花海，石藝，民族觀光&lt;br /&gt;&lt;br /&gt;6.環境：鯉魚潭污水系統&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:georgia;"&gt;&lt;span style="font-size:100%;"&gt;1號沒有公路，海路政策&lt;br /&gt;2號沒有特別為花東設定經濟政策（僅農業）&lt;br /&gt;雙方都沒有很完整具體的環境政策&lt;br /&gt;雙方都不敢碰蘇花高議題&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:georgia;"&gt;&lt;span style="font-size:100%;"&gt;--&lt;br /&gt;以上僅供參考&lt;br /&gt;直接看各候選人網頁上得政策比較準確&lt;br /&gt;&lt;br /&gt;也不用太care這個啦&lt;br /&gt;東部人票很少的XD&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:georgia;"&gt;&lt;span style="font-size:100%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;po&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/10671828-7264871805792314037?l=petertc.blogspot.com'/&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/petertc?a=1eCE9cNF8gM:cfNqYCpswV8:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/petertc?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/petertc?a=1eCE9cNF8gM:cfNqYCpswV8:63t7Ie-LG7Y"&gt;&lt;img src="http://feeds.feedburner.com/~ff/petertc?d=63t7Ie-LG7Y" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/petertc?a=1eCE9cNF8gM:cfNqYCpswV8:YwkR-u9nhCs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/petertc?d=YwkR-u9nhCs" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/petertc/~4/1eCE9cNF8gM" height="1" width="1"/&gt;</content><app:edited xmlns:app="http://www.w3.org/2007/app">2008-03-20T12:03:21.831+08:00</app:edited><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://bp3.blogger.com/_FCvqxwA8I2I/R-Hhar4i4jI/AAAAAAAAA4I/3E31zy8fceM/s72-c/mashi.jpg" height="72" width="72" /><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total><feedburner:origLink>http://petertc.blogspot.com/2008/03/2008draft.html</feedburner:origLink></entry><entry><title type="text">試玩wireshark：yam影音</title><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/petertc/~3/oCbyz7A8B9g/wiresharkyam.html" /><category term="yam" /><category term="wireshark" /><category term="networking" /><author><name>PTC</name><email>noreply@blogger.com</email><uri>http://www.blogger.com/profile/06497780346368581325</uri></author><updated>2008-03-20T09:56:59-07:00</updated><id>tag:blogger.com,1999:blog-10671828.post-8546372159211789794</id><content type="html">&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp1.blogger.com/_FCvqxwA8I2I/R-HcsL4i4iI/AAAAAAAAA4A/sI5dOb10TdU/s1600-h/wireshark.jpg"&gt;&lt;img style="float:left; margin:0 10px 10px 0;cursor:pointer; cursor:hand;" src="http://bp1.blogger.com/_FCvqxwA8I2I/R-HcsL4i4iI/AAAAAAAAA4A/sI5dOb10TdU/s320/wireshark.jpg" border="0" alt="" id="BLOGGER_PHOTO_ID_5179663698115093026" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;p&gt;本來標題應該是&lt;strong&gt;&lt;em&gt;破解yam影音mp3下載教學&lt;/em&gt;&lt;/strong&gt;之類的，只是感覺這樣很像那種到處無段轉載的文，於是決定改用一個看起來比較&lt;del&gt; 學術 &lt;/del&gt;技術性的標題，好像這樣比較高級一樣。&lt;/p&gt;&lt;p&gt;今天吃早餐的時候聽到&lt;a href="http://www.youtube.com/watch?v=wP_-O6mlzfk"&gt;小鎮姑娘&lt;/a&gt;，作為萬惡的大學生當然回家就上網google一下啦。國語流行音樂很好找，只是是在&lt;a href="http://mymedia.yam.com/"&gt;yam影音&lt;/a&gt;找到的。&lt;/p&gt;&lt;p&gt;映像中yam應該直接看sources找key word: mp3就可以抓的到，但是他的flash player好像升級了orz。&lt;/p&gt;&lt;p&gt;想了一下，剛好電腦有裝&lt;a href="http://www.wireshark.org/"&gt;wireshark&lt;/a&gt;拿出來練習一下。&lt;/p&gt;&lt;p&gt;&lt;br /&gt;1.在source找到flash player的code，找到movie這個parameter，&lt;p&gt;like  &lt;blockquote&gt; &lt;param name="movie" value="/mp3player2.swf?pID=1882100"&gt;&lt;/blockquote&gt;&lt;em&gt;&lt;param name="movie" value="/mp3player2.swf?pID=1882100"&gt;&lt;/em&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;所以這個影音檔的player位置就是&lt;blockquote&gt;&lt;em&gt;http://mymedia.yam.com/mp3player2.swf?pID=1882100&lt;/em&gt;&lt;/blockquote&gt;&lt;em&gt;&lt;/em&gt;&lt;p&gt;2.wireshark開起來，直接連這個影音檔的player位置就可以抓到原始mp3檔的位置了。&lt;/p&gt;&lt;p&gt;3.把Host: &lt;em&gt;&lt;/em&gt;&lt;blockquote&gt;&lt;em&gt;pool.f5.mymedia.yam.com &lt;/em&gt;&lt;/blockquote&gt;和 Request URI: &lt;em&gt;&lt;/em&gt;&lt;blockquote&gt;&lt;em&gt;/mediacenter/c6d9d557e80280c2ce104d0c48361ad1/47e1a900/upload2/new/6/8/4/6844aeca84b6384e4e936c1b5778b0ea.mp3 &lt;/em&gt;&lt;/blockquote&gt;組合起來，就是下載網址了（唱片公司不要告我~~~我沒有提供完整網址呀orz）&lt;p&gt;&lt;/p&gt;&lt;p&gt;嗯...以上內容請斟酌服用&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/10671828-8546372159211789794?l=petertc.blogspot.com'/&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/petertc?a=oCbyz7A8B9g:F5X0B6eiZew:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/petertc?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/petertc?a=oCbyz7A8B9g:F5X0B6eiZew:63t7Ie-LG7Y"&gt;&lt;img src="http://feeds.feedburner.com/~ff/petertc?d=63t7Ie-LG7Y" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/petertc?a=oCbyz7A8B9g:F5X0B6eiZew:YwkR-u9nhCs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/petertc?d=YwkR-u9nhCs" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/petertc/~4/oCbyz7A8B9g" height="1" width="1"/&gt;</content><app:edited xmlns:app="http://www.w3.org/2007/app">2008-03-21T00:56:59.719+08:00</app:edited><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://bp1.blogger.com/_FCvqxwA8I2I/R-HcsL4i4iI/AAAAAAAAA4A/sI5dOb10TdU/s72-c/wireshark.jpg" height="72" width="72" /><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total><feedburner:origLink>http://petertc.blogspot.com/2008/03/wiresharkyam.html</feedburner:origLink></entry><entry><title type="text">Ext2 IFS - 在windows使用linux ext2/3 file system</title><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/petertc/~3/IxjDA7cgsj0/ext2-ifs-windowslinux-ext23-file-system.html" /><category term="linux" /><category term="windows" /><author><name>PTC</name><email>noreply@blogger.com</email><uri>http://www.blogger.com/profile/06497780346368581325</uri></author><updated>2008-02-18T05:33:25-08:00</updated><id>tag:blogger.com,1999:blog-10671828.post-3488765897256108505</id><content type="html">&lt;p&gt;在linux下讀取windows的fat, ntfs基本上沒有什麼問題（之前用ntfs-3g有時後會叫妳到windows下fsck完才能mount, 現在不知道好了沒）,&lt;/p&gt;&lt;p&gt;在windows要讀取linux麻煩比較大。之前試用的結果，非英文檔名還是會有問題。&lt;/p&gt;&lt;p&gt;最近重新survey了一下在microsoft windows下存取linux檔案系統的方法，發現了&lt;a href="http://www.fs-driver.org/"&gt;Ext2 IFS&lt;/a&gt;，很好用，使用上沒什麼問題，performace也很ok，推薦使用。&lt;/p&gt;&lt;p&gt;不過reserfs, xfs到目前還是沒有很好的解決方案，如果有的話請跟我說一聲吧，感謝。&lt;/p&gt;&lt;p&gt;&lt;/p&gt;ref: &lt;a href="http://blog.yam.com/lijohnson/article/12413235"&gt;Ext2 IFS - 在Windows上讀取Ext3/Ext2格式的硬碟&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/10671828-3488765897256108505?l=petertc.blogspot.com'/&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/petertc?a=IxjDA7cgsj0:C7Zy29ZVs8U:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/petertc?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/petertc?a=IxjDA7cgsj0:C7Zy29ZVs8U:63t7Ie-LG7Y"&gt;&lt;img src="http://feeds.feedburner.com/~ff/petertc?d=63t7Ie-LG7Y" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/petertc?a=IxjDA7cgsj0:C7Zy29ZVs8U:YwkR-u9nhCs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/petertc?d=YwkR-u9nhCs" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/petertc/~4/IxjDA7cgsj0" height="1" width="1"/&gt;</content><app:edited xmlns:app="http://www.w3.org/2007/app">2008-02-18T21:33:25.684+08:00</app:edited><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">1</thr:total><feedburner:origLink>http://petertc.blogspot.com/2008/02/ext2-ifs-windowslinux-ext23-file-system.html</feedburner:origLink></entry><entry><title type="text">讓0rz.net復活</title><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/petertc/~3/3--ju2HbhT8/0rznet.html" /><category term="0rz.tw" /><category term="0rz.net" /><category term="networking" /><author><name>PTC</name><email>noreply@blogger.com</email><uri>http://www.blogger.com/profile/06497780346368581325</uri></author><updated>2008-03-19T20:49:18-07:00</updated><id>tag:blogger.com,1999:blog-10671828.post-7412541173689189239</id><content type="html">各大bbs的精華區有很多好文章，但是文章中的網址大都是用0rz.net壓的。&lt;br /&gt;但是現在改成0rz.tw以後就連不上了，要手動把.net改成.tw才行。&lt;br /&gt;&lt;br /&gt;這幾天研究了一下，解法如下&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;解一：修改主機表&lt;/span&gt;&lt;br /&gt;適用於所有瀏覽器（但由於header的Host不對，只能連到轉址提示頁，要再點選鍊結進入）&lt;br /&gt;&lt;br /&gt;Unix-like使用者請編輯/etc/hosts，&lt;br /&gt;Microsoft Windows使用者請修改&lt;br /&gt;%Windir%\system32\drivers\etc\hosts&lt;br /&gt;&lt;br /&gt;加入下面這行：&lt;br /&gt;&lt;blockquote&gt;60.199.247.73   0rz.net&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;這樣就可以讓0rz.net正解為0rz.tw的反解位置&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;解二：Redirector&lt;/span&gt;&lt;br /&gt;這是Mozilla Firefox的Extension，所以只適用於Firefox和他的兄弟姊妹&lt;br /&gt;&lt;br /&gt;Redirector網址&lt;br /&gt;https://addons.mozilla.org/en-US/firefox/addon/5064&lt;br /&gt;&lt;br /&gt;安裝後設定如下：&lt;br /&gt;&lt;blockquote&gt;Pattern: http://0rz.net/(\w+)&lt;br /&gt;Redirect to : http://0rz.tw/$1&lt;br /&gt;&lt;p&gt;Pattern type請選 Regular Expression&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;/blockquote&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/10671828-7412541173689189239?l=petertc.blogspot.com'/&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/petertc?a=3--ju2HbhT8:HzLPIKzeBO8:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/petertc?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/petertc?a=3--ju2HbhT8:HzLPIKzeBO8:63t7Ie-LG7Y"&gt;&lt;img src="http://feeds.feedburner.com/~ff/petertc?d=63t7Ie-LG7Y" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/petertc?a=3--ju2HbhT8:HzLPIKzeBO8:YwkR-u9nhCs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/petertc?d=YwkR-u9nhCs" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/petertc/~4/3--ju2HbhT8" height="1" width="1"/&gt;</content><app:edited xmlns:app="http://www.w3.org/2007/app">2008-03-20T11:49:18.747+08:00</app:edited><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total><feedburner:origLink>http://petertc.blogspot.com/2007/10/0rznet.html</feedburner:origLink></entry></feed>
