<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-11055785</id><updated>2012-01-28T17:18:09.812+08:00</updated><category term='docutils'/><category term='OMNET++'/><category term='IPv6'/><category term='GTUG'/><category term='rst'/><category term='javascript'/><category term='olpc'/><category term='digest'/><category term='Music'/><category term='firebug'/><category term='webframework'/><category term='GAE'/><category term='NS2'/><category term='gadget'/><category term='django'/><category term='game'/><category term='http'/><category term='aglie test'/><category term='widgets'/><category term='s5'/><category term='pylons'/><category term='life'/><category term='grid'/><category term='trac'/><category term='pygments'/><category term='TurboGears'/><category term='chromeos'/><category term='GAEO'/><category term='Ubiquity'/><category term='python'/><category term='NS3'/><category term='functional'/><category term='coding'/><category term='soft'/><category term='zen'/><category term='design'/><category term='zhpy'/><category term='unicode'/><category term='network'/><category term='fun'/><category term='hg'/><category term='Android'/><category term='pypy'/><category term='nds'/><category term='subversion'/><title type='text'>INET6</title><subtitle type='html'>Gasolin's Python and Network Related stuff</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://blog.gasolin.idv.tw/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11055785/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://blog.gasolin.idv.tw/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><link rel='next' type='application/atom+xml' href='http://www.blogger.com/feeds/11055785/posts/default?start-index=101&amp;max-results=100'/><author><name>gaso lin</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh6.googleusercontent.com/-RYFnmJigzcM/AAAAAAAAAAI/AAAAAAAAB6E/0c6RsEHTN-c/s512-c/photo.jpg'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>385</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-11055785.post-3881784630012108226</id><published>2012-01-01T16:16:00.000+08:00</published><updated>2012-01-07T22:46:05.134+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='life'/><title type='text'>2011年個人總結</title><content type='html'>&lt;br /&gt;&lt;div style="background-color: white;"&gt;&lt;span style="font-family: Arial, sans-serif;"&gt;&lt;span style="line-height: 13px;"&gt;Java夜未眠一書裡，蔡學鏞說過：把工作、學習，和娛樂結合在一起，時間就會是別人的三倍。&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="background-color: white;"&gt;&lt;span style="font-family: Arial, sans-serif;"&gt;&lt;span style="line-height: 13px;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="background-color: white; font-family: Arial, sans-serif; line-height: 13px;"&gt;&lt;span style="background-color: #ebeff9; color: #333333; font-family: arial, sans-serif; line-height: normal;" title="只要找到了逻辑支点，没有什么问题不能解决。"&gt;2011年完成的事不算少，除了把個人終身大事解決了之外，因為一些原因，我接過了&lt;/span&gt;&lt;span style="background-color: #ebeff9; color: #333333; font-family: arial, sans-serif;"&gt;Ericsk主持的&lt;/span&gt;&lt;span style="background-color: #ebeff9; color: #333333; font-family: arial, sans-serif; line-height: normal;" title="只要找到了逻辑支点，没有什么问题不能解决。"&gt;Taipei GTUG的棒子，負責規劃並舉&lt;/span&gt;&lt;span style="background-color: #ebeff9; color: #333333; font-family: arial, sans-serif; line-height: normal;"&gt;辦了整年的GTUG活動(&lt;/span&gt;&lt;span style="background-color: #ebeff9; color: #333333; font-family: arial, sans-serif; line-height: normal;"&gt;25場聚會+3~4場合辦活動+1場Hackthon&lt;/span&gt;&lt;span style="background-color: #ebeff9; color: #333333; font-family: arial, sans-serif; line-height: normal;"&gt;)，在過程中認識了不少人，受到許多人的幫助，同時也增強或新學到了關於辦活動、新技術等諸多的經驗與樂趣。&lt;/span&gt;&lt;/div&gt;&lt;div style="background-color: white;"&gt;&lt;div style="font-family: 'LiHei Pro'; line-height: normal;"&gt;&lt;span style="background-color: #ebeff9; color: #333333; font-family: arial, sans-serif;" title="只要找到了逻辑支点，没有什么问题不能解决。"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: 'LiHei Pro'; line-height: normal;"&gt;&lt;span style="background-color: #ebeff9; color: #333333; font-family: arial, sans-serif;" title="只要找到了逻辑支点，没有什么问题不能解决。"&gt;&lt;span style="line-height: 13px;"&gt;從高中玩社團起就陸續協辦過一些活動，&lt;/span&gt;&lt;/span&gt;&lt;span style="background-color: #ebeff9; color: #333333; font-family: arial, sans-serif; line-height: 13px;"&gt;雖然說「&lt;/span&gt;&lt;span style="background-color: #ebeff9; color: #333333; font-family: arial, sans-serif; line-height: 13px;"&gt;近廟的懂拜神」，多多少少已有些相關經驗，過去也沒少看管理、組織、行銷等書籍，但總的來說&lt;/span&gt;&lt;span style="background-color: #ebeff9; color: #333333; font-family: arial, sans-serif; line-height: 13px;"&gt;社交或團隊能力是我原本不實分在行的一環。幸好受到小Q、Jehuen、Ted、Shaka&lt;/span&gt;&lt;span style="background-color: #ebeff9; color: #333333; font-family: arial, sans-serif; line-height: 13px;"&gt;等朋友的幫助，&lt;/span&gt;&lt;span style="background-color: #ebeff9; color: #333333; font-family: arial, sans-serif; line-height: 13px;"&gt;2011年陸續與TOSSUG、Cloud TW、Google行動推廣部等單位合作，&lt;/span&gt;&lt;span style="background-color: #ebeff9; color: #333333; font-family: arial, sans-serif; line-height: 13px;"&gt;或&lt;/span&gt;&lt;span style="background-color: #ebeff9; color: #333333; font-family: arial, sans-serif; line-height: 13px;"&gt;策劃或協&lt;/span&gt;&lt;span style="background-color: #ebeff9; color: #333333; font-family: arial, sans-serif; line-height: 13px;"&gt;辦了數場百人聚會，和諸多講者聯繫、討論聚會分享內容，或是更新Taipei GTUG網站、社群網站等，豐富了我下班後的生活。&lt;/span&gt;&lt;/div&gt;&lt;span style="color: #333333; font-family: arial, sans-serif;"&gt;&lt;span style="line-height: 13px;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #333333; font-family: arial, sans-serif;"&gt;&lt;span style="line-height: 13px;"&gt;在工作中，今年也帶領數人的團隊完成了數個專案，過程中&lt;/span&gt;&lt;/span&gt;&lt;span style="color: #333333; font-family: arial, sans-serif; line-height: 13px;"&gt;訓練新同事、&lt;/span&gt;&lt;span style="color: #333333; font-family: arial, sans-serif; line-height: 13px;"&gt;與同事&lt;/span&gt;&lt;span style="color: #333333; font-family: arial, sans-serif; line-height: 13px;"&gt;溝通&lt;/span&gt;&lt;span style="color: #333333; font-family: arial, sans-serif; line-height: 13px;"&gt;與&lt;/span&gt;&lt;span style="color: #333333; font-family: arial, sans-serif; line-height: 13px;"&gt;合作、與長官溝通和彙報、&lt;/span&gt;&lt;span style="color: #333333; font-family: arial, sans-serif; line-height: 13px;"&gt;與公司各部門或公司外窗口的溝通，都多虧了過去透過書本學習、社群實踐中累積的經驗，讓我即使在公司眼中是新手上路卻能順利上手。&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #333333; font-family: arial, sans-serif;"&gt;&lt;span style="line-height: 13px;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;div style="line-height: normal;"&gt;&lt;div&gt;&lt;div style="font-family: 'LiHei Pro';"&gt;&lt;span style="background-color: #ebeff9; color: #333333; font-family: arial, sans-serif;" title="只要找到了逻辑支点，没有什么问题不能解决。"&gt;2011年也是個人數據化更徹底的一年，我記了整年的帳、整年的&lt;a href="http://life.gasolin.idv.tw/2011/07/google.html"&gt;成功日記&lt;/a&gt;，&lt;/span&gt;&lt;span style="background-color: #ebeff9; color: #333333; font-family: arial, sans-serif;" title="只要找到了逻辑支点，没有什么问题不能解决。"&gt;透過&lt;a href="http://www.anobii.com/gasolin/books"&gt;Anobii&lt;/a&gt;統計共看了203本書&lt;/span&gt;&lt;span style="color: #333333; font-family: arial, sans-serif;"&gt;，總計42193頁；&lt;/span&gt;&lt;span style="background-color: #ebeff9; color: #333333; font-family: arial, sans-serif;"&gt;透過&lt;/span&gt;&lt;a href="http://movie.douban.com/" style="background-color: #ebeff9; font-family: arial, sans-serif;"&gt;豆瓣&lt;/a&gt;&lt;span style="background-color: #ebeff9; color: #333333; font-family: arial, sans-serif;"&gt;統計共看了31部電影&lt;/span&gt;&lt;span style="background-color: white; color: #333333; font-family: arial, sans-serif;"&gt;。&lt;/span&gt;&lt;span style="background-color: white; color: #333333; font-family: arial, sans-serif;"&gt;申請了個人的網域(gasolin.idv.tw)，開通了&lt;a href="http://gplus.to/gasolin"&gt;Google+&lt;/a&gt;，上傳了第一個Youtube影片，&lt;/span&gt;&lt;span style="background-color: white; color: #333333; font-family: arial, sans-serif;"&gt;貼了67+18篇博文；改版了一本書，發佈&lt;a href="https://market.android.com/developer?pub=gasolin"&gt;5款App&lt;/a&gt;，寫了6期雜誌專欄+為電子報推薦了一本書（數位記憶革命），做了11場公開演講，09年累積至今透過Yahoo公益捐助了共25個&lt;a href="http://tw.charity.yahoo.com/donator.html?yuid=Z2Fzb2xpbmtpbW8jOGQ-"&gt;公益專案&lt;/a&gt;&lt;/span&gt;&lt;span style="background-color: white; color: #333333; font-family: arial, sans-serif;"&gt;。&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div style="line-height: normal;"&gt;&lt;span style="color: #333333; font-family: arial, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div style="background-color: white;"&gt;&lt;div&gt;&lt;span style="font-family: Arial, sans-serif;"&gt;&lt;span style="line-height: 13px;"&gt;前美國教育部長Richard Riley說：我們必須教導現在的學生，畢業後投入目前還不存在的工作，使用根本還沒發明的科技，解決我們從未想像過的問題。&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="font-family: Arial, sans-serif;"&gt;&lt;span style="line-height: 13px;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="font-family: Arial, sans-serif;"&gt;&lt;span style="line-height: 13px;"&gt;這段話對學生們還是未來式，但是在產業劇變的今天，對在業界的我們已是現在進行式。&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: Arial, sans-serif; line-height: 13px;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;&lt;span style="font-family: Arial, sans-serif;"&gt;&lt;span style="line-height: 13px;"&gt;我也準備好繼續和對技術有熱忱的朋友們一起，透過活動，結合工作、學習，和娛樂，&lt;/span&gt;&lt;/span&gt;用網路/資訊技術改善生活、擴大影響力，讓身邊的人與環境一起變得更好。&lt;br /&gt;&lt;div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11055785-3881784630012108226?l=blog.gasolin.idv.tw' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.gasolin.idv.tw/feeds/3881784630012108226/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=11055785&amp;postID=3881784630012108226' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11055785/posts/default/3881784630012108226'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11055785/posts/default/3881784630012108226'/><link rel='alternate' type='text/html' href='http://blog.gasolin.idv.tw/2012/01/2011.html' title='2011年個人總結'/><author><name>gaso lin</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh6.googleusercontent.com/-RYFnmJigzcM/AAAAAAAAAAI/AAAAAAAAB6E/0c6RsEHTN-c/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-11055785.post-8129082345192831193</id><published>2011-11-15T22:19:00.001+08:00</published><updated>2011-11-16T10:14:56.954+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Android'/><title type='text'>gFolder: 把dropbox當手機外接硬碟</title><content type='html'>&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/-XSPmGOeZMQs/TsMclHvJa7I/AAAAAAAACLA/YY3Sy4Z3BfY/s1600/device-2011-11-07-224212.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="320" src="http://4.bp.blogspot.com/-XSPmGOeZMQs/TsMclHvJa7I/AAAAAAAACLA/YY3Sy4Z3BfY/s320/device-2011-11-07-224212.png" width="192" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;官方的 Dropbox app可以讓使用者將Dropbox中的檔案存到手機sd卡的dropbox資料夾中，但如果想要將書放到sd卡的books資料夾、音樂放到music資料夾...對於這樣的需求，&lt;br /&gt;使用官方Dropbox app就沒辦法辦到了。&lt;br /&gt;&lt;br /&gt;gFolder可以將SD卡中任一目錄下的任一檔案放到Dropbox上的任一目錄下，&lt;br /&gt;也可以將Dropbox任一目錄下的任一檔案放到SD卡的任一目錄下。&lt;br /&gt;&lt;br /&gt;主要介面類似FTP程式，只要點選檔案，即可將檔案傳送到Dropbox或sd卡中。&lt;br /&gt;當有網路的時候，使用gFolder起來，就像是在手機上直接插上了一個外接硬碟一樣。&lt;br /&gt;&lt;br /&gt;當使用者跳出程式，下一次再啟動時，gFolder也會記錄上一次sd卡和Dropbox的所在目錄，&lt;br /&gt;可以隨時回到上次的操作狀態。&lt;br /&gt;&lt;br /&gt;gFolder同時支援平板和手機，並先使用Android 4.0的統一使用者介面，在手機上也有和平板一樣的使用者介面。&lt;br /&gt;&lt;br /&gt;下載網址:&amp;nbsp;&lt;a href="https://market.android.com/details?id=tw.idv.gasolin.android.gfolder"&gt;https://market.android.com/details?id=tw.idv.gasolin.android.gfolder&lt;/a&gt;&lt;br /&gt;QRCode:&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/-LTuTHTi_vzQ/TsJ1gt1bplI/AAAAAAAACK4/9cAjcmbnXYg/s1600/gfolder.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://3.bp.blogspot.com/-LTuTHTi_vzQ/TsJ1gt1bplI/AAAAAAAACK4/9cAjcmbnXYg/s1600/gfolder.png" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11055785-8129082345192831193?l=blog.gasolin.idv.tw' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.gasolin.idv.tw/feeds/8129082345192831193/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=11055785&amp;postID=8129082345192831193' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11055785/posts/default/8129082345192831193'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11055785/posts/default/8129082345192831193'/><link rel='alternate' type='text/html' href='http://blog.gasolin.idv.tw/2011/11/gfolder-dropbox.html' title='gFolder: 把dropbox當手機外接硬碟'/><author><name>gaso lin</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh6.googleusercontent.com/-RYFnmJigzcM/AAAAAAAAAAI/AAAAAAAAB6E/0c6RsEHTN-c/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/-XSPmGOeZMQs/TsMclHvJa7I/AAAAAAAACLA/YY3Sy4Z3BfY/s72-c/device-2011-11-07-224212.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-11055785.post-585467667240122340</id><published>2011-10-30T12:24:00.002+08:00</published><updated>2011-10-30T12:24:47.838+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Android'/><title type='text'>升級build.xml</title><content type='html'>&lt;span class="Apple-style-span" style="background-color: white; font-family: arial, sans-serif; font-size: 14px; line-height: 15px;"&gt;用ant來編譯Android專案的開發者，&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="background-color: white; font-family: arial, sans-serif; font-size: 14px; line-height: 15px;"&gt;在2011/10月中升到r14之後版本的開發工具之後，ant檔案的格式又被修改了。&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="background-color: white; font-family: arial, sans-serif; font-size: 14px; line-height: 15px;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="background-color: white; font-family: arial, sans-serif; font-size: 14px; line-height: 15px;"&gt;要升級到新版的 build.xml，記得先把原來的build.xml檔案備份，&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="background-color: white; font-family: arial, sans-serif; font-size: 14px; line-height: 15px;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;blockquote class="tr_bq"&gt;&lt;span class="Apple-style-span" style="background-color: white; font-family: arial, sans-serif; font-size: 14px; line-height: 15px;"&gt;$ mv build.xml oldbuild.xml&lt;/span&gt;&lt;/blockquote&gt;&lt;span class="Apple-style-span" style="background-color: white; font-family: arial, sans-serif; font-size: 14px; line-height: 15px;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="background-color: white; font-family: arial, sans-serif; font-size: 14px; line-height: 15px;"&gt;再跑一下命令行&amp;nbsp;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="background-color: white; font-family: arial, sans-serif; font-size: 14px; line-height: 15px;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;blockquote class="tr_bq"&gt;&lt;span class="Apple-style-span" style="background-color: white; font-family: arial, sans-serif; font-size: 14px; line-height: 15px;"&gt;$ android update project --path .&amp;nbsp;&lt;/span&gt;&lt;/blockquote&gt;&lt;span class="Apple-style-span" style="background-color: white; font-family: arial, sans-serif; font-size: 14px; line-height: 15px;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="background-color: white; font-family: arial, sans-serif; font-size: 14px; line-height: 15px;"&gt;以更新相關檔案。&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="background-color: white; font-family: arial, sans-serif; font-size: 14px; line-height: 15px;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="background-color: white; font-family: arial, sans-serif; font-size: 14px; line-height: 15px;"&gt;開啟新的build.xml並加入自用的相關設定後，&lt;/span&gt;&lt;span class="Apple-style-span" style="background-color: white; font-family: arial, sans-serif; font-size: 14px; line-height: 15px;"&gt;最後再執行&amp;nbsp;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="background-color: white; font-family: arial, sans-serif; font-size: 14px; line-height: 15px;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;blockquote class="tr_bq"&gt;&lt;span class="Apple-style-span" style="background-color: white; font-family: arial, sans-serif; font-size: 14px; line-height: 15px;"&gt;$ ant clean release&lt;/span&gt;&lt;/blockquote&gt;&lt;span class="Apple-style-span" style="background-color: white; font-family: arial, sans-serif; font-size: 14px; line-height: 15px;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="background-color: white; font-family: arial, sans-serif; font-size: 14px; line-height: 15px;"&gt;看看有沒有問題。&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="background-color: white; font-family: arial, sans-serif; font-size: 14px; line-height: 15px;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="background-color: white; font-family: arial, sans-serif; font-size: 14px; line-height: 15px;"&gt;如果沒有問題的話，就恭喜你順利升級囉。&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11055785-585467667240122340?l=blog.gasolin.idv.tw' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.gasolin.idv.tw/feeds/585467667240122340/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=11055785&amp;postID=585467667240122340' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11055785/posts/default/585467667240122340'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11055785/posts/default/585467667240122340'/><link rel='alternate' type='text/html' href='http://blog.gasolin.idv.tw/2011/10/buildxml.html' title='升級build.xml'/><author><name>gaso lin</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh6.googleusercontent.com/-RYFnmJigzcM/AAAAAAAAAAI/AAAAAAAAB6E/0c6RsEHTN-c/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-11055785.post-8494237014559062043</id><published>2011-10-19T17:14:00.000+08:00</published><updated>2011-10-19T17:38:33.169+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Android'/><title type='text'>Android 4.0發佈</title><content type='html'>&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://developer.android.com/sdk/images/4.0/face-unlock.png" imageanchor="1"&gt;&lt;img border="0" height="256" src="http://developer.android.com/sdk/images/4.0/face-unlock.png" width="144" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;Android 4.0 (IceCream Sandwich)如期推出了這次的改進比較多是在軟體層面，套用Apple的OSX Lion廣告詞：&lt;br /&gt;&lt;blockquote&gt;&lt;pre&gt;ICS擁有超過250種全新功能，&lt;br /&gt;包括臉部解鎖、連續語音辨識、全景照片與影像特效、5倍瀏覽器速度、流量監測...&lt;br /&gt;ICS把Android推向下一個紀元&lt;/pre&gt;&lt;/blockquote&gt;Android 4.0比較重要的新功能已列在&lt;a href="http://developer.android.com/sdk/android-4.0-highlights.html"&gt;http://developer.android.com/sdk/android-4.0-highlights.html&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;iframe allowfullscreen="" frameborder="0" height="360" src="http://www.youtube.com/embed/-F_ke3rxopc" width="640"&gt;&lt;/iframe&gt;&lt;br /&gt;&lt;br /&gt;對一般App開發者來說，OS部分的改進如Holo Theme系統佈景主題、Fragment API等都是3.x已經有的，現在套用到手機上。新的連續語音辨識、影像處理API等軟體功能，和Android Beam、Wi-Fi Direct等通訊技術可以玩出一些新花樣。&lt;br /&gt;&lt;br /&gt;開發工具部分則是開始支援WebCam（Windows/Linux only）、新的初次使用設定精靈（Welcome Wizard）、比較好用的Layout編輯器、還有整合了&lt;a href="http://android-ui-utils.googlecode.com/hg/asset-studio/dist/index.html"&gt;Android Asset Studio&lt;/a&gt;製作圖示（Icon）的功能。&lt;br /&gt;&lt;br /&gt;整體來看這次推出的功能雖然很多，但在系統整體架構上並沒有多做改變，開發工具也做了些改進，讓開發者更容易使用。比較糟糕的一點是模擬器延續了Android 3.x版的不良傳統，為了完全模擬ARM的指令，而使得模擬器執行相當龜速。要測試Android 3.x版以上的系統時，還是得買實機來跑才比較準。&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;順便公告一下: 因為基本的東西都沒有改變，大家可以放心使用「&lt;a href="http://www.books.com.tw/exep/assp.php/gasolin/exep/prod/booksfile.php?item=0010513881" style="background-color: white; color: #3778cd; font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif; font-size: 14px; text-align: -webkit-center;"&gt;Google! Android 手機應用程式設計入門&lt;/a&gt;」來學習開發相容各種Android版本的應用程式，本書不會因Android 4.0再改版。&lt;br /&gt;&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11055785-8494237014559062043?l=blog.gasolin.idv.tw' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.gasolin.idv.tw/feeds/8494237014559062043/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=11055785&amp;postID=8494237014559062043' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11055785/posts/default/8494237014559062043'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11055785/posts/default/8494237014559062043'/><link rel='alternate' type='text/html' href='http://blog.gasolin.idv.tw/2011/10/android-40.html' title='Android 4.0發佈'/><author><name>gaso lin</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh6.googleusercontent.com/-RYFnmJigzcM/AAAAAAAAAAI/AAAAAAAAB6E/0c6RsEHTN-c/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://img.youtube.com/vi/-F_ke3rxopc/default.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-11055785.post-3145864045212737918</id><published>2011-10-19T16:52:00.000+08:00</published><updated>2011-10-19T17:34:39.150+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='fun'/><category scheme='http://www.blogger.com/atom/ns#' term='digest'/><title type='text'>程式屍</title><content type='html'>&lt;blockquote&gt;程式屍常常待在他天然的巢穴裡，駝背坐在顯示器淡淡的光線中，在文字編輯器中輸入著複雜的標點字元組合。有時候，這個膽小的傢伙會離開他的窩，四處尋找咖啡或比薩。很快的，他就會回到安全的地方，繼續在鍵盤上做他一直在做的事&lt;br /&gt;-- 編程創藝&lt;/blockquote&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11055785-3145864045212737918?l=blog.gasolin.idv.tw' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.gasolin.idv.tw/feeds/3145864045212737918/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=11055785&amp;postID=3145864045212737918' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11055785/posts/default/3145864045212737918'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11055785/posts/default/3145864045212737918'/><link rel='alternate' type='text/html' href='http://blog.gasolin.idv.tw/2011/10/blog-post.html' title='程式屍'/><author><name>gaso lin</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh6.googleusercontent.com/-RYFnmJigzcM/AAAAAAAAAAI/AAAAAAAAB6E/0c6RsEHTN-c/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-11055785.post-5495506163144187739</id><published>2011-08-27T23:52:00.001+08:00</published><updated>2011-08-27T23:52:33.577+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='digest'/><category scheme='http://www.blogger.com/atom/ns#' term='coding'/><title type='text'>技術</title><content type='html'>&lt;br /&gt;&lt;blockquote&gt;大部份的技術可以被分為兩大類，一個是使用者真正想要的並且會主動尋求的，而另一種只是為了解決某些問題而推出的基本解決方案。&amp;nbsp;&lt;/blockquote&gt;&lt;blockquote&gt;後者經常流於行銷噱頭而最終引不起消費者實際購買的興趣。&lt;/blockquote&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11055785-5495506163144187739?l=blog.gasolin.idv.tw' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.gasolin.idv.tw/feeds/5495506163144187739/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=11055785&amp;postID=5495506163144187739' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11055785/posts/default/5495506163144187739'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11055785/posts/default/5495506163144187739'/><link rel='alternate' type='text/html' href='http://blog.gasolin.idv.tw/2011/08/blog-post.html' title='技術'/><author><name>gaso lin</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh6.googleusercontent.com/-RYFnmJigzcM/AAAAAAAAAAI/AAAAAAAAB6E/0c6RsEHTN-c/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-11055785.post-6526688005616318620</id><published>2011-08-27T12:00:00.000+08:00</published><updated>2011-08-27T12:00:56.675+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Android'/><title type='text'>使用Jenkins持續集成與發佈Android應用程式</title><content type='html'>這是上週在&lt;a href="http://coscup.org/2011/zh-tw/"&gt;Coscup 2011&lt;/a&gt;活動中演講的主題與投影片。&amp;nbsp;&lt;br /&gt;&lt;br /&gt;介紹：&lt;br /&gt;&lt;br /&gt;Jenkins (http://jenkins-ci.org/) 是個廣為使用的持續集成（Continue Integration）框架，可以協助軟體工程師統合處理各種圍繞著「寫程式」之外的程式開發工作（如版本控制、環境設定、編譯、測試、發佈）。&amp;nbsp;&lt;br /&gt;&lt;br /&gt;在這個議程中將和大家分享實際使用Jenkins持續集成與發佈Android App，讓管理多應用程式變得更容易的經驗。&lt;br /&gt;&lt;br /&gt;&lt;div id="__ss_8944298" style="width: 425px;"&gt;&lt;strong style="display: block; margin: 12px 0 4px;"&gt;&lt;a href="http://www.slideshare.net/gasolin/android-jenkins" target="_blank" title="Android + jenkins"&gt;Android + jenkins&lt;/a&gt;&lt;/strong&gt; &lt;iframe frameborder="0" height="355" marginheight="0" marginwidth="0" scrolling="no" src="http://www.slideshare.net/slideshow/embed_code/8944298" width="425"&gt;&lt;/iframe&gt; &lt;br /&gt;&lt;div style="padding: 5px 0 12px;"&gt;View more &lt;a href="http://www.slideshare.net/" target="_blank"&gt;presentations&lt;/a&gt; from &lt;a href="http://www.slideshare.net/gasolin" target="_blank"&gt;gasolin&lt;/a&gt; &lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11055785-6526688005616318620?l=blog.gasolin.idv.tw' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.gasolin.idv.tw/feeds/6526688005616318620/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=11055785&amp;postID=6526688005616318620' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11055785/posts/default/6526688005616318620'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11055785/posts/default/6526688005616318620'/><link rel='alternate' type='text/html' href='http://blog.gasolin.idv.tw/2011/08/jenkinsandroid.html' title='使用Jenkins持續集成與發佈Android應用程式'/><author><name>gaso lin</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh6.googleusercontent.com/-RYFnmJigzcM/AAAAAAAAAAI/AAAAAAAAB6E/0c6RsEHTN-c/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-11055785.post-2301760287471936602</id><published>2011-08-18T16:43:00.004+08:00</published><updated>2011-08-21T22:12:17.353+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='GTUG'/><category scheme='http://www.blogger.com/atom/ns#' term='Android'/><title type='text'>AppInventor+愛無赦?（台客舞App開發心得）</title><content type='html'>&lt;a href="http://appinventor.googlelabs.com/"&gt;AppInventor&lt;/a&gt;&amp;nbsp;是GoogleLab中一個有趣的工具，可以讓一般人簡單地透過像堆積木的方式寫出一個Android App。（剛好&lt;a href="http://www.makezine.com.tw/2011/08/16/%E6%B7%BA%E8%AB%87%E6%96%87%E5%AD%97%E5%BC%8F%E8%88%87%E5%9C%96%E5%BD%A2%E5%8C%96%E7%A8%8B%E5%BC%8F%E9%96%8B%E7%99%BC%E4%BB%8B%E9%9D%A2%E4%B8%8A%E7%AF%87-%E4%BB%A5google-app-inventor%E7%82%BA/?utm_source=rss&amp;amp;utm_medium=rss&amp;amp;utm_campaign=%25e6%25b7%25ba%25e8%25ab%2587%25e6%2596%2587%25e5%25ad%2597%25e5%25bc%258f%25e8%2588%2587%25e5%259c%2596%25e5%25bd%25a2%25e5%258c%2596%25e7%25a8%258b%25e5%25bc%258f%25e9%2596%258b%25e7%2599%25bc%25e4%25bb%258b%25e9%259d%25a2%25e4%25b8%258a%25e7%25af%2587-%25e4%25bb%25a5google-app-inventor%25e7%2582%25ba"&gt;Make雜誌也出了AppInventor報導&lt;/a&gt;）這週三Taipei GTUG舉辦了&lt;a href="http://www.taipei-gtug.org/meetings/meeting2011/20110817"&gt;AppInventor&amp;nbsp;Bootcamp&lt;/a&gt;，由我先簡單介紹如何安裝與使用AppInventor後，再將時間交給大家，創作具備台灣特色，或能展現台灣特色與風格的App。首先當然是拿大家熟悉的BMI，重現在AppInventor上&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/-bYTU-9XHLWw/TkzAIbMkfqI/AAAAAAAACEA/TgOdgqOtKYw/s1600/%25E8%259E%25A2%25E5%25B9%2595%25E5%25BF%25AB%25E7%2585%25A7+2011-08-18+%25E4%25B8%258B%25E5%258D%25883.32.25.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="222" src="http://4.bp.blogspot.com/-bYTU-9XHLWw/TkzAIbMkfqI/AAAAAAAACEA/TgOdgqOtKYw/s320/%25E8%259E%25A2%25E5%25B9%2595%25E5%25BF%25AB%25E7%2585%25A7+2011-08-18+%25E4%25B8%258B%25E5%258D%25883.32.25.png" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;接著則是介紹程式積木部分，程式積木部分做到了原BMI程式大部分的功能。可以看到用拖拉積木的方式寫一個轉換數值程式，是蠻厚工的一件事。（剛剛要截圖才發現這部份原始碼被覆蓋掉了Orz，等影片轉出來再把錄到的畫面嵌在這）接著活動就進入Hacking模式。今天不少人都在問：用AppInventor寫好的App要怎麼轉換成程式碼？答案是目前沒有這樣的功能，也許年底&lt;a href="http://androidcommunity.com/google-app-inventor-discontinued-will-become-open-source-instead-20110809/"&gt;AppInventor&amp;nbsp;Open Source&lt;/a&gt;了之後，會有好心人寫出來吧...昨晚Hack的成果，是「台客舞App」。台客舞App簡介：看過jolin的&lt;a href="http://www.youtube.com/watch?v=KMqfVNnDSD0"&gt;愛無赦MV&lt;/a&gt;嗎？&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;/div&gt;&lt;object style="height: 390px; width: 640px;"&gt; &lt;embed src="http://www.youtube.com/v/KMqfVNnDSD0?version=3" type="application/x-shockwave-flash" allowfullscreen="true" allowScriptAccess="always" width="640" height="390"&gt;&lt;/object&gt; 裡面的電音舞曲和掌心燈是不是很搶眼而讓人一見難忘呢？&lt;a href="http://4.bp.blogspot.com/-BgbN_T0_EAQ/TkzCzakF4aI/AAAAAAAACEE/sGsWTkKf9KU/s1600/%25E8%259E%25A2%25E5%25B9%2595%25E5%25BF%25AB%25E7%2585%25A7+2011-08-18+%25E4%25B8%258B%25E5%258D%25883.18.48.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="180" src="http://4.bp.blogspot.com/-BgbN_T0_EAQ/TkzCzakF4aI/AAAAAAAACEE/sGsWTkKf9KU/s320/%25E8%259E%25A2%25E5%25B9%2595%25E5%25BF%25AB%25E7%2585%25A7+2011-08-18+%25E4%25B8%258B%25E5%258D%25883.18.48.png" width="320" /&gt;&lt;/a&gt;這個AppInventor作品結合了電音舞曲播放和掌心燈的功能，只要你擁有Android手機，就可以隨時跳一首台客舞曲～夠台味吧XD這個程式很簡單，主體是兩個按鈕和一個聲音檔案。&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/-ZI0dsxEj4d0/TkzEDzW9YDI/AAAAAAAACEI/n1uj_OvZDas/s1600/%25E8%259E%25A2%25E5%25B9%2595%25E5%25BF%25AB%25E7%2585%25A7+2011-08-18+%25E4%25B8%258B%25E5%258D%25883.45.09.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="320" src="http://3.bp.blogspot.com/-ZI0dsxEj4d0/TkzEDzW9YDI/AAAAAAAACEI/n1uj_OvZDas/s320/%25E8%259E%25A2%25E5%25B9%2595%25E5%25BF%25AB%25E7%2585%25A7+2011-08-18+%25E4%25B8%258B%25E5%258D%25883.45.09.png" width="308" /&gt;&lt;/a&gt;&lt;/div&gt;聲音檔案的部份，AppInventor目前只接受小於2MB的檔案，因此先用&lt;a href="http://audacity.sourceforge.net/"&gt;Audacity&lt;/a&gt;工具裁減了一小段轉成MP3檔，然後加入這個專案中。另外兩個按鈕，一個「播放」（Play）按鈕放在最上頭，按了之後即開始播放音樂。再按一次後就停止。另一個按鈕則是佔用大部分的螢幕，並將底色改為和背景同樣的黑色，在按下後會變換成白色，以模擬掌心燈的開、關狀態。&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/-yDXwCYRc2oQ/TkzLjE2hskI/AAAAAAAACEM/gZJ92vgs5EY/s1600/%25E8%259E%25A2%25E5%25B9%2595%25E5%25BF%25AB%25E7%2585%25A7+2011-08-18+%25E4%25B8%258B%25E5%258D%25884.20.54.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="320" src="http://4.bp.blogspot.com/-yDXwCYRc2oQ/TkzLjE2hskI/AAAAAAAACEM/gZJ92vgs5EY/s320/%25E8%259E%25A2%25E5%25B9%2595%25E5%25BF%25AB%25E7%2585%25A7+2011-08-18+%25E4%25B8%258B%25E5%258D%25884.20.54.png" width="242" /&gt;&lt;/a&gt;&lt;/div&gt;有興趣看現場DEMO的人，可以參加&lt;a href="http://registrano.com/events/61c494"&gt;(Coscup BoF) Appinventor Hack &amp;amp;amp; Show&lt;/a&gt;&amp;nbsp;活動（希望有人願意拿著現場秀一段台客舞XD）。程式可以到&lt;a href="http://showinventor.appspot.com/main/gallery"&gt;http://showinventor.appspot.com/main/gallery&lt;/a&gt;下載，供大家娛樂一下。（Android Market就算了吧）&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11055785-2301760287471936602?l=blog.gasolin.idv.tw' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.gasolin.idv.tw/feeds/2301760287471936602/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=11055785&amp;postID=2301760287471936602' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11055785/posts/default/2301760287471936602'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11055785/posts/default/2301760287471936602'/><link rel='alternate' type='text/html' href='http://blog.gasolin.idv.tw/2011/08/appinventorapp.html' title='AppInventor+愛無赦?（台客舞App開發心得）'/><author><name>gaso lin</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh6.googleusercontent.com/-RYFnmJigzcM/AAAAAAAAAAI/AAAAAAAAB6E/0c6RsEHTN-c/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/-bYTU-9XHLWw/TkzAIbMkfqI/AAAAAAAACEA/TgOdgqOtKYw/s72-c/%25E8%259E%25A2%25E5%25B9%2595%25E5%25BF%25AB%25E7%2585%25A7+2011-08-18+%25E4%25B8%258B%25E5%258D%25883.32.25.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-11055785.post-5863694196676322302</id><published>2011-08-09T10:12:00.005+08:00</published><updated>2011-08-12T21:16:11.351+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Android'/><title type='text'>Android 3.x與手機?</title><content type='html'>&lt;br /&gt;因為有一些人對Android 3與手機的關聯無法搭上線，在這邊記錄一些FAQ：&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;1. 手機應該和android 3無關吧！小弟還特別到官網讀了正式文件，確認android 3是給平板電腦用的，android 2才是給手機用的，後續或許會整合，但那是以後的事了不是嗎？&lt;/blockquote&gt;&lt;br /&gt;Android 3是Android最新版號，而且向下相容多數API。用Android 3.2 SDK來開發2.x版本（手機）的應用程式完全沒有問題。&lt;br /&gt;&lt;br /&gt;第四版主要使用3.x的SDK，只有要使用手機的虛擬機器時，才使用2.x SDK提供的虛擬機器（因為3.x SDK中只附了平板虛擬機器，沒有附手機版的虛擬機器）。採用本書寫法的話，程式在平板和手機上都能正常運行。您可以拿您手邊現有的任一開發中App來測、或等拿到書的時候照著試試，看看是不是確實能在3.x SDK上開發手機應用程式。&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;2. 本書既然叫Android 3，卻沒有講平板用的fragment API？&lt;/blockquote&gt;首先，這是一本入門書。這本書內容和其他同類書籍不同，關注的是跨版本的基礎知識（所以書名叫「入門」）。封面說明的部份有寫，想傳達的是用這本入門，就算是更新的版本拿來一樣適用。在寫現在版本時想的是善用開發工具、與市面上主流版本相容，而非關注新功能。&lt;br /&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: arial, sans-serif;"&gt;&lt;span class="Apple-style-span" style="font-size: 14px; line-height: 15px;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;而現在平板在Android系統中的市佔率 1.2%，要撐起書市還不到時機（個人意見）。一般入門的開發者（本書的預設讀者群）會專為了1.2%的使用者而開發？我認為不會。&lt;br /&gt;&lt;br /&gt;有些開發基礎，而又看過我的書的人，應該知道我一貫建議去官方網站查這些進階的API，而不是苦苦等中文書。&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;平板的fragment API（將畫面分隔的API）有兩種版本，一種是向後相容版，可以跑在Android 2.x 機種上。另一種是原生版，只能跑在3.x Tablet上。根據我個人的評估，這兩種API還會有某種程度的改動，除非是專為了平板而開發，不然學習fragment API還不是時候（也許等到Ice Cream Sandwich?）&lt;br /&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;blockquote&gt;3. 看第四版的目錄好像沒有講到Android 3的特性？&lt;/blockquote&gt;&lt;div&gt;其實各種新東西講了不少，但都已經整合在各個章節中，融入了整個學習過程裡。&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;在主要開發手機應用程式的情況下， 2.x 和 3.x 還有什麼差別哩？3.x版為了平板做很多事情，若是還繼續用 2.x SDK開發，程式放到Tablet上會有些"不太Native"的感覺，如選單會出現在平板的下方，而不是如其他內建應用程式顯示Action Bar在上方。&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;比起專為平板設計一份程式碼，在Android上要解決這些問題較容易。本入門書第四版的目標是「寫一次，就能在手機、平板、Google TV等設備上執行」。&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;因此我是以這樣的想法，以手機為主，在維持本書架構的開發過程中，加入更多實際經驗與技巧，來協助Android應用程式開發的入門者或剛接觸平板等機種的開發者。第四版除了圖片重新擷取之外，內容大概有30~40%的改動。新版加入了一些新章節，介紹了選單、關連選單、App Widget（桌面小工具）與平板相容設定。還加上了AsyncTask、Admob等章節，在主要使用者為手機的情形下，也能讓平板的使用者得到不錯的使用經驗。&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;「雖然平板等機種的數量少，但如果不麻煩的話，還是盡可能支援吧？」如果您贊同這樣的想法，那看這本書可以得到您想要的。&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;不必懷疑，&lt;a href="http://www.books.com.tw/exep/assp.php/gasolin/exep/prod/booksfile.php?item=0010513881"&gt;這是我的誠意之作&lt;/a&gt;。&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;PS: 本書歷版以來都追求和市面其他書籍不同，不求全，只追求初學者透過本書能確實理解Android應用程式開發，並能投入實用。我一直以支持入門者的想法來改版或寫作。除非是spam，不然大可不必揣測我會隨意砍誰的回覆。&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11055785-5863694196676322302?l=blog.gasolin.idv.tw' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.gasolin.idv.tw/feeds/5863694196676322302/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=11055785&amp;postID=5863694196676322302' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11055785/posts/default/5863694196676322302'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11055785/posts/default/5863694196676322302'/><link rel='alternate' type='text/html' href='http://blog.gasolin.idv.tw/2011/08/android-3x.html' title='Android 3.x與手機?'/><author><name>gaso lin</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh6.googleusercontent.com/-RYFnmJigzcM/AAAAAAAAAAI/AAAAAAAAB6E/0c6RsEHTN-c/s512-c/photo.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-11055785.post-3729791124335735279</id><published>2011-07-31T15:55:00.002+08:00</published><updated>2011-07-31T15:56:36.129+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='digest'/><category scheme='http://www.blogger.com/atom/ns#' term='coding'/><title type='text'>樂手與程序員</title><content type='html'>&lt;br /&gt;&lt;blockquote&gt;想要找一份穩定安逸工作的音樂人成不了音樂家。音樂這行很殘酷，壓根也不可能安逸。能成為專業樂手的人都想成名。一名樂手要不就努力想成名，要不就根本別踏進這一行。&amp;nbsp;&lt;/blockquote&gt;&lt;blockquote&gt;經常有人問我為什麼很多優秀的樂手同時又是很棒的軟體開發工程師。&lt;br /&gt;這絕對不是因為這兩種職業使用一樣的腦部功能，也不是因為他們都是追求細節和創造力的工作，而是因為一個渴望成功的人肯定要比那些只是單純完成工作的人更有可能成功。&amp;nbsp;&lt;/blockquote&gt;&lt;blockquote&gt;即使我們不能成為Linus Torvalds那樣的人，但確定高目標至少可以讓我們不再平凡。&amp;nbsp;&lt;/blockquote&gt;&lt;blockquote&gt;-- Chad Fowler , The passionate Programmer&lt;/blockquote&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11055785-3729791124335735279?l=blog.gasolin.idv.tw' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.gasolin.idv.tw/feeds/3729791124335735279/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=11055785&amp;postID=3729791124335735279' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11055785/posts/default/3729791124335735279'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11055785/posts/default/3729791124335735279'/><link rel='alternate' type='text/html' href='http://blog.gasolin.idv.tw/2011/07/blog-post.html' title='樂手與程序員'/><author><name>gaso lin</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh6.googleusercontent.com/-RYFnmJigzcM/AAAAAAAAAAI/AAAAAAAAB6E/0c6RsEHTN-c/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-11055785.post-1458456844811994476</id><published>2011-07-09T12:31:00.005+08:00</published><updated>2011-07-25T10:38:29.807+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='GAE'/><category scheme='http://www.blogger.com/atom/ns#' term='webframework'/><title type='text'>使用Play! Framework在GAE上架網站</title><content type='html'>&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/-jhvha3uwV_U/ThfaiWRMlZI/AAAAAAAAB7Q/EyIiGiHvdt0/s1600/ae_gwt_java-499x386.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="247" src="http://2.bp.blogspot.com/-jhvha3uwV_U/ThfaiWRMlZI/AAAAAAAAB7Q/EyIiGiHvdt0/s320/ae_gwt_java-499x386.png" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;今年自己在網站開發方面做了很多改變。&lt;br /&gt;&lt;br /&gt;第一件是Domain name續約並全面採用&amp;nbsp;&lt;a href="http://www.gasolin.idv.tw/"&gt;gasolin.idv.tw&lt;/a&gt;&amp;nbsp;系列網址。&lt;br /&gt;&lt;br /&gt;本如部落格網址可由&amp;nbsp;&lt;a href="http://blog.gasolin.idv.tw/"&gt;blog.gasolin.idv.tw&lt;/a&gt;&amp;nbsp;連結，&lt;br /&gt;Android書籍/應用相關訊息可由 &lt;a href="http://android.gasolin.idv.tw/"&gt;android.gasolin.idv.tw&lt;/a&gt; 連結。&lt;br /&gt;&lt;br /&gt;第二件是使用的網頁框架改變。&lt;br /&gt;&lt;br /&gt;個人的首頁 &lt;a href="http://www.gasolin.idv.tw/"&gt;www.gasolin.idv.tw&lt;/a&gt;&amp;nbsp;仍然架在&lt;a href="http://code.google.com/appengine/"&gt;Google App Engine&lt;/a&gt;上頭，&lt;br /&gt;但背後使用的技術，也從Python based的&amp;nbsp;&lt;a href="http://gaeo.org/"&gt;GAEO&lt;/a&gt;&amp;nbsp;，改為使用Java based的&amp;nbsp;&lt;a href="http://www.playframework.org/"&gt;Play! Framework&lt;/a&gt;。&lt;br /&gt;&lt;br /&gt;使用&amp;nbsp;&lt;a href="http://www.playframework.org/"&gt;Play! Framework&lt;/a&gt;&amp;nbsp;的好處是它並不像&lt;a href="http://gaeo.org/"&gt;GAEO&lt;/a&gt;一樣完全捆綁在&lt;a href="http://code.google.com/appengine/"&gt;Google App Engine&lt;/a&gt;上，而是隨時可以搬離GAE獨立運作。&lt;br /&gt;&lt;br /&gt;再者&lt;a href="http://www.playframework.org/"&gt;Play!&lt;/a&gt;的專案架構和使用方法很接近&lt;a href="http://www.turbogears.org/"&gt;TurboGears&lt;/a&gt;、&lt;a href="http://www.rubyonrails.org/"&gt;Django&lt;/a&gt;等現代的網頁框架，因此熟悉現代網頁框架的開發者應該能很快地上手。開發的時候可以在本地端開發，而且修改後的結果也能即時自動編譯並顯示，用起來非常接近使用動態語言開發的使用經驗。（&lt;a href="http://www.playframework.org/"&gt;Play!&lt;/a&gt;的命令行工具是用Python寫的:)）&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.playframework.org/"&gt;Play!&lt;/a&gt;&amp;nbsp;的另一個好處是有很好的模組（Module）架構。要將網站發佈在&lt;a href="http://code.google.com/appengine/"&gt;Google App Engine&lt;/a&gt;上時，透過&lt;a href="http://www.playframework.org/modules/gae"&gt;GAE&lt;/a&gt;模組和搭配&lt;a href="http://www.playframework.org/modules/siena"&gt;Siena&lt;/a&gt;（提供ORM層）、&lt;a href="http://www.playframework.org/modules/crudsiena"&gt;crudsiena&lt;/a&gt;（提供自動Admin管理頁面）模組，可以不被&lt;a href="http://code.google.com/appengine/"&gt;Google App Engine&lt;/a&gt;的一堆限制所制約，從而得到完整的開發經驗。&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.playframework.org/"&gt;Play!&lt;/a&gt;&amp;nbsp;的官方網站上有很齊全的&lt;a href="http://www.playframework.org/documentation/"&gt;文件&lt;/a&gt;可供參考。所謂的「齊全」到了什麼地步呢？&lt;br /&gt;除了簡介、教學、模組介紹之外，甚至還有&lt;a href="http://www.playframework.org/documentation/1.2.2/cheatsheet/commandLine"&gt;cheatsheet&lt;/a&gt;&amp;nbsp;!&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;要從頭開始建立一個Play網頁程式到發佈在GAE，要做以下6幾點&lt;br /&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-size: large;"&gt;1. 建立專案&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;$ play new &amp;nbsp;[project name]&lt;br /&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-size: large;"&gt;2.&amp;nbsp;安裝相關模組&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;執行&lt;br /&gt;&lt;br /&gt;$ play install gae-版本&lt;br /&gt;$ play install siena-版本&lt;br /&gt;$ play install crudsiena-版本&lt;br /&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-size: large;"&gt;3. 修改模組依存關係&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;進入專案目錄, 修改 conf/dependencies.yml 檔案&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="p1"&gt;# Application dependencies&lt;/div&gt;&lt;div class="p2"&gt;&lt;br /&gt;&lt;/div&gt;&lt;blockquote&gt;require&lt;span class="s1"&gt;:&lt;/span&gt;&lt;span class="s1"&gt;&amp;nbsp; &amp;nbsp; &lt;/span&gt;- play -&amp;gt; play [1.2.1,)&lt;br /&gt;&amp;nbsp; &amp;nbsp; - play -&amp;gt; secure&lt;br /&gt;&amp;nbsp; &amp;nbsp; - play -&amp;gt; siena [2.0.0,)&lt;br /&gt;&amp;nbsp; &amp;nbsp; - play -&amp;gt; crudsiena [2.0.0,)&lt;br /&gt;&amp;nbsp; &amp;nbsp; - play -&amp;gt; gae 1.4&lt;/blockquote&gt;&lt;div class="p4"&gt;&lt;span class="Apple-style-span" style="font-size: large;"&gt;4. 自動檢查模組依存關係&lt;/span&gt;&lt;/div&gt;&lt;div class="p4"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="p4"&gt;執行&lt;/div&gt;&lt;div class="p4"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="p4"&gt;$ play deps&lt;/div&gt;&lt;div class="p4"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="p4"&gt;&lt;span class="Apple-style-span" style="font-size: large;"&gt;5. 修改GAE相關設定&lt;/span&gt;&lt;/div&gt;&lt;div class="p4"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="p4"&gt;根據&lt;a href="http://www.playframework.org/modules/gae"&gt;GAE&lt;/a&gt;模組提供的文件做相應的GAE發佈設定（指定要deploy的GAE代號）&lt;/div&gt;&lt;div class="p4"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="p4"&gt;&lt;span class="Apple-style-span" style="font-size: large;"&gt;6. 發佈&lt;/span&gt;&lt;/div&gt;&lt;div class="p4"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="p4"&gt;&lt;/div&gt;&lt;div class="p4"&gt;執行&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;$ play gae:deploy --gae=[app engine java sdk path]&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;如此即完成整套使用&lt;a href="http://www.playframework.org/"&gt;Play!&lt;/a&gt;&amp;nbsp; +&amp;nbsp;&lt;a href="http://code.google.com/appengine/"&gt;Google App Engine&lt;/a&gt;&amp;nbsp;的配置流程。&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;Update 2011/7/20: 在Taipei GTUG活動中和大家分享了Play! on GAE的相關經驗，並公開投影片&lt;br /&gt;&lt;br /&gt;&lt;div id="__ss_8642014" style="width: 425px;"&gt;&lt;strong style="display: block; margin: 12px 0 4px;"&gt;&lt;a href="http://www.slideshare.net/gasolin/play-framework-on-google-app-engine" target="_blank" title="Play Framework on Google App Engine"&gt;Play Framework on Google App Engine&lt;/a&gt;&lt;/strong&gt; &lt;iframe frameborder="0" height="355" marginheight="0" marginwidth="0" scrolling="no" src="http://www.slideshare.net/slideshow/embed_code/8642014" width="425"&gt;&lt;/iframe&gt; &lt;br /&gt;&lt;div style="padding: 5px 0 12px;"&gt;View more &lt;a href="http://www.slideshare.net/" target="_blank"&gt;presentations&lt;/a&gt; from &lt;a href="http://www.slideshare.net/gasolin" target="_blank"&gt;gasolin&lt;/a&gt; &lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11055785-1458456844811994476?l=blog.gasolin.idv.tw' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.gasolin.idv.tw/feeds/1458456844811994476/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=11055785&amp;postID=1458456844811994476' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11055785/posts/default/1458456844811994476'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11055785/posts/default/1458456844811994476'/><link rel='alternate' type='text/html' href='http://blog.gasolin.idv.tw/2011/07/play-frameworkgae.html' title='使用Play! Framework在GAE上架網站'/><author><name>gaso lin</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh6.googleusercontent.com/-RYFnmJigzcM/AAAAAAAAAAI/AAAAAAAAB6E/0c6RsEHTN-c/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/-jhvha3uwV_U/ThfaiWRMlZI/AAAAAAAAB7Q/EyIiGiHvdt0/s72-c/ae_gwt_java-499x386.png' height='72' width='72'/><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-11055785.post-6272222295223453313</id><published>2011-06-27T21:24:00.009+08:00</published><updated>2011-07-03T11:10:06.981+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Android'/><title type='text'>對Google關掉台灣Android Market付費App下載的觀察</title><content type='html'>&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/-CDc8XsUKuk4/Tg_dVlGj1TI/AAAAAAAAB6A/j6NixnqDa8k/s1600/Ice-Cream-Sandwich-Yum-300x225.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://3.bp.blogspot.com/-CDc8XsUKuk4/Tg_dVlGj1TI/AAAAAAAAB6A/j6NixnqDa8k/s1600/Ice-Cream-Sandwich-Yum-300x225.jpg" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://www.abetterbagofgroceries.com/tag/ice-cream-sandwiches/"&gt;圖片來源&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;今天Google Android Market關掉台灣付費App下載的新聞動靜不小，也有一些相關的討論出來。但不管&lt;a href="http://ysl-paradise.blogspot.com/2011/06/app.html"&gt;法規合不合理&lt;/a&gt;，明顯政府短期內都不太可能修法。&lt;br /&gt;&lt;br /&gt;&lt;b&gt;影響的App類型&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;在談這個事件的影響之前，我們可以先界定「退費」（refund）機制的影響範圍。在允許48小時，24小時，15分鐘，或是7天無條件退費的爭議上，有最大影響的是那些「用過即丟」的App（如早期iPhone上的iFart模擬放屁聲程式）和遊戲、內容App。&lt;br /&gt;&lt;br /&gt;對於高品質的應用程式等原本就用不太到退費機制的App來說，影響不大。但這次Google關掉了台灣使用者付費機制，對這些原本用不到退費機制的App也造成了影響。&lt;br /&gt;&lt;br /&gt;「用過即丟」的App價格很便宜，一杯珍奶的價格（$0.99，接近30元台幣）可以讓下載的使用者開心幾分鐘。有數天無條件鑑賞期存在的話，大多數的使用者肯定會在這期間退掉。這確實可以減少使用者覺得「被詐騙」的感覺。因此在這樣的法律下，這類App將沒有生存空間。&lt;br /&gt;&lt;br /&gt;遊戲App方面，大多數移動遊戲的遊玩時間都不長，模式也較簡單。在不耐玩的情況下，允許的退貨時間長短，對這類App的盈利結果也會有很大的影響。&lt;br /&gt;&lt;br /&gt;這幾年內容App（如App電子書）的消費方式都跟著數位音樂走，但數位內容和數位音樂的消費方式還是有些不同。我們會重複地聽音樂，但很少會重複地看同樣的內容。對這類App來說，退貨規則是48小時，24小時，15分鐘，或是7天，就成為很關鍵的問題了。&lt;br /&gt;&lt;br /&gt;&lt;b&gt;影響&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;我們了解了受影響App的範圍，那麼在現行狀況下，我們可以觀察看看政府和Google兩方的舉措，會對台灣Android應用程式市場造成的影響。&lt;br /&gt;&lt;br /&gt;消費者&lt;br /&gt;&lt;br /&gt;1. Google把Android Market台灣的付費關掉了，除了無法再看到付費App之外，消費者之前買過的App都無法下載，傷害了消費者對Android Market的信心。有一就有可能有二。之後就算再開啟Market付費功能，消費者在消費前也要再多想想，是不是哪天這種鳥事又再來一次。&lt;br /&gt;&lt;br /&gt;update: 已購買過的程式還是可以透過Web版的Android Market再下載。&lt;br /&gt;&lt;br /&gt;其他市集業者&lt;br /&gt;&lt;br /&gt;2. 在Apple、Google都得照辦的新聞出來，面對大無畏的政府，中華、遠傳等電信商自有的市集是否也得儘快跟進，否則政府也會將鐵腕轉向這些大電信商，用同樣的標準來要求，用100萬連續開罰？&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://mag.udn.com/mag/digital/storypage.jsp?f_ART_ID=327164"&gt;針對付費App退費 台灣電信三雄正式回應&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;br /&gt;開發者&lt;br /&gt;&lt;br /&gt;3. 市場是否還存在？開發者是否還願意開發付費版的台灣專用App？&lt;br /&gt;&lt;br /&gt;4. 若Android Market再開放，但要在台灣販售得遵守台灣7天鑑賞期的法規，國外開發者是否願意勾選在台灣開賣他的付費應用程式？&lt;br /&gt;&lt;br /&gt;政府&lt;br /&gt;&lt;br /&gt;5. 台灣政府的反應，為什麼是台北市出面要求和罰金？&lt;br /&gt;&lt;br /&gt;update:&amp;nbsp;消保官是行政院指派, 隸屬地方政府管轄。因為Google公司登記在台北市，所以由台北市管轄。&lt;br /&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;相關連結&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://mag.udn.com/mag/digital/storypage.jsp?f_MAIN_ID=323&amp;amp;f_SUB_ID=2952&amp;amp;f_ART_ID=326777"&gt;買蘋果App 可試用7天&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.cpc.gov.tw/knowledgebase_query/ShowCategoryTree_Query_390.asp?SpecialID=416"&gt;消費者保護法&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://news.pchome.com.tw/public/taipei/20110627/index-13091040001792112601.html"&gt;Google停售付費APP 拒絕遵循臺灣法律 臺北市重罰一百萬&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11055785-6272222295223453313?l=blog.gasolin.idv.tw' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.gasolin.idv.tw/feeds/6272222295223453313/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=11055785&amp;postID=6272222295223453313' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11055785/posts/default/6272222295223453313'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11055785/posts/default/6272222295223453313'/><link rel='alternate' type='text/html' href='http://blog.gasolin.idv.tw/2011/06/googleandroid-marketapp.html' title='對Google關掉台灣Android Market付費App下載的觀察'/><author><name>gaso lin</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh6.googleusercontent.com/-RYFnmJigzcM/AAAAAAAAAAI/AAAAAAAAB6E/0c6RsEHTN-c/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/-CDc8XsUKuk4/Tg_dVlGj1TI/AAAAAAAAB6A/j6NixnqDa8k/s72-c/Ice-Cream-Sandwich-Yum-300x225.jpg' height='72' width='72'/><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-11055785.post-827502176161040917</id><published>2011-06-03T09:37:00.000+08:00</published><updated>2011-06-03T09:37:42.695+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='GTUG'/><title type='text'>Taipei GTUG活動簡介</title><content type='html'>今年初接了&lt;a href="taipei-gtug.org"&gt;Taipei GTUG&lt;/a&gt;活動的Organizer，開始更頻繁地和開發者們相處，並學習如何組織各式&lt;a href="https://sites.google.com/a/taipei-gtug.org/www/meetings/meeting2011"&gt;對開發者有幫助的活動&lt;/a&gt;。&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.taipei-gtug.org/"&gt;台北GTUG(Taipei GTUG)&lt;/a&gt;組織的全名是「Taipei Google Technique User Group」，為非Google官方的組織。GTUG主要參與者是開發者（developer），討論Google相關技術議題(Web, Mobile)，在&lt;a href="http://www.gtugs.org/"&gt;全世界&lt;/a&gt;都有類似的組織。隔週三晚間7:30聚會，每個月盡量安排一場Android（Mobile）相關主題，和一場Web（Chrome, App Engine...）相關主題。所有活動會公告在網站和各種社群網站（&lt;a href="http://twitter.com/#%21/Taipei_GTUG"&gt;Twitter&lt;/a&gt;, &lt;a href="http://www.plurk.com/Taipei_GTUG"&gt;Plurk&lt;/a&gt;, &lt;a href="http://www.facebook.com/Taipei.GTUG"&gt;Facebook&lt;/a&gt;）上。&lt;br /&gt;&lt;br /&gt;在五月&lt;a href="http://www.taipei-gtug.org/events/20110511"&gt;Google IO Extended同樂會活動&lt;/a&gt;開始時，我有製作一個Taipei GTUG活動的簡介（英文）來和與會者(和全世界)介紹Taipei GTUG活動。在昨天&lt;a href="http://www.taipei-gtug.org/events/mobile-ad-practice-2011"&gt;Android 應用盈利模式及成功案例&lt;/a&gt;活動中，我再將這份活動簡介更新一番，以中文來介紹我們的台北GTUG，並鼓勵大家來參與&lt;a href="http://www.google.com/moderator/?hl=zh-TW#16/e=8d4fd"&gt;Google IO 2011影片分享讀書會&lt;/a&gt;活動。&lt;br /&gt;&lt;br /&gt;在北部的開發者們，對Google相關技術有興趣的話，都歡迎查看時間，前來Taipei GTUG和其他開發者聊聊喔:)&lt;br /&gt;&lt;br /&gt;&lt;div style="width:425px" id="__ss_8179794"&gt;&lt;strong style="display:block;margin:12px 0 4px"&gt;&lt;a href="http://www.slideshare.net/gasolin/taipei-gtug-opening" title="Taipei gtug opening"&gt;Taipei gtug opening&lt;/a&gt;&lt;/strong&gt; &lt;iframe src="http://www.slideshare.net/slideshow/embed_code/8179794" width="425" height="355" frameborder="0" marginwidth="0" marginheight="0" scrolling="no"&gt;&lt;/iframe&gt; &lt;div style="padding:5px 0 12px"&gt;View more &lt;a href="http://www.slideshare.net/"&gt;presentations&lt;/a&gt; from &lt;a href="http://www.slideshare.net/gasolin"&gt;gasolin&lt;/a&gt; &lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11055785-827502176161040917?l=blog.gasolin.idv.tw' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.gasolin.idv.tw/feeds/827502176161040917/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=11055785&amp;postID=827502176161040917' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11055785/posts/default/827502176161040917'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11055785/posts/default/827502176161040917'/><link rel='alternate' type='text/html' href='http://blog.gasolin.idv.tw/2011/06/taipei-gtug.html' title='Taipei GTUG活動簡介'/><author><name>gaso lin</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh6.googleusercontent.com/-RYFnmJigzcM/AAAAAAAAAAI/AAAAAAAAB6E/0c6RsEHTN-c/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-11055785.post-3668540248257466431</id><published>2011-05-30T09:06:00.000+08:00</published><updated>2011-05-30T09:06:07.370+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Android'/><title type='text'>[投影片]Google IO 2011回顧 (Android部分)</title><content type='html'>今年的 &lt;a href="http://www.google.com/events/io/2011/sessions.html"&gt;Google IO&lt;/a&gt;議程中有太多好東西，但是每個議程都是一個鐘頭，對大多數人來說也是個負擔。&lt;br /&gt;&lt;br /&gt;上週六在癮科技主辦的&lt;a href="http://chinese.engadget.com/2011/05/28/x-android-android/"&gt;非手機 Android 聚會&lt;/a&gt;上分享了「Google IO 2011回顧」(Android)投影片。從Google IO 2011活動中找出一些我已經看過的有趣內容，在30分鐘之內分享給大家。&lt;br /&gt;&lt;br /&gt;同時也在會場公開了接下來會在&lt;a href="http://www.taipei-gtug.org/"&gt;Taipei-GTUG&lt;/a&gt;舉辦的「&lt;a href="http://www.google.com/moderator/?hl=zh-TW#16/e=8d4fd"&gt;Google IO 2011演講分享讀書會（系列）&lt;/a&gt;」活動。&lt;br /&gt;&lt;br /&gt;讀書會的目的是希望發起由參加者認領一至數個Google IO中的演講，再用5~1­0分鐘和大家分享精華，讓參與的人可以用更短的時間綜合了解Goo­gle IO的內容。&lt;br /&gt;&lt;br /&gt;歡迎有興趣一起學習的人報名參與喔 :)&lt;br /&gt;&lt;br /&gt;&lt;div style="width:425px" id="__ss_8145303"&gt;&lt;strong style="display:block;margin:12px 0 4px"&gt;&lt;a href="http://www.slideshare.net/gasolin/io2011-recap-20110528" title="Io2011 recap 20110528"&gt;Io2011 recap 20110528&lt;/a&gt;&lt;/strong&gt;&lt;object id="__sse8145303" width="425" height="355"&gt;&lt;param name="movie" value="http://static.slidesharecdn.com/swf/ssplayer2.swf?doc=io2011recap20110528-110529194942-phpapp01&amp;stripped_title=io2011-recap-20110528&amp;userName=gasolin" /&gt;&lt;param name="allowFullScreen" value="true"/&gt;&lt;param name="allowScriptAccess" value="always"/&gt;&lt;embed name="__sse8145303" src="http://static.slidesharecdn.com/swf/ssplayer2.swf?doc=io2011recap20110528-110529194942-phpapp01&amp;stripped_title=io2011-recap-20110528&amp;userName=gasolin" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="425" height="355"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;div style="padding:5px 0 12px"&gt;View more &lt;a href="http://www.slideshare.net/"&gt;presentations&lt;/a&gt; from &lt;a href="http://www.slideshare.net/gasolin"&gt;gasolin&lt;/a&gt;.&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11055785-3668540248257466431?l=blog.gasolin.idv.tw' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.gasolin.idv.tw/feeds/3668540248257466431/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=11055785&amp;postID=3668540248257466431' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11055785/posts/default/3668540248257466431'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11055785/posts/default/3668540248257466431'/><link rel='alternate' type='text/html' href='http://blog.gasolin.idv.tw/2011/05/google-io-2011-android.html' title='[投影片]Google IO 2011回顧 (Android部分)'/><author><name>gaso lin</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh6.googleusercontent.com/-RYFnmJigzcM/AAAAAAAAAAI/AAAAAAAAB6E/0c6RsEHTN-c/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-11055785.post-1298784539723478144</id><published>2011-05-15T12:11:00.001+08:00</published><updated>2011-05-15T12:14:23.214+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Android'/><title type='text'>HoneyComb Highlights</title><content type='html'>在Google I/O 2011大會上，Romain Guy作了「HoneyComb Highlight」演講，把大多數HoneyComb版的新功能都講到了。&lt;br /&gt;&lt;br /&gt;投影片&lt;br /&gt;&lt;br /&gt;&lt;div style="width:425px" id="__ss_7945793"&gt;&lt;strong style="display:block;margin:12px 0 4px"&gt;&lt;a href="http://www.slideshare.net/romainguy/google-io-2011-android-honeycomb-highlights" title="Google I/O 2011, Android Honeycomb Highlights"&gt;Google I/O 2011, Android Honeycomb Highlights&lt;/a&gt;&lt;/strong&gt; &lt;iframe src="http://www.slideshare.net/slideshow/embed_code/7945793" width="425" height="355" frameborder="0" marginwidth="0" marginheight="0" scrolling="no"&gt;&lt;/iframe&gt; &lt;div style="padding:5px 0 12px"&gt;View more &lt;a href="http://www.slideshare.net/"&gt;presentations&lt;/a&gt; from &lt;a href="http://www.slideshare.net/romainguy"&gt;Romain Guy&lt;/a&gt; &lt;/div&gt;&lt;/div&gt;&lt;br /&gt;錄影&lt;br /&gt;&lt;iframe width="480" height="300" src="http://www.youtube.com/embed/sTx-5CGDvM8" frameborder="0" allowfullscreen&gt;&lt;/iframe&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11055785-1298784539723478144?l=blog.gasolin.idv.tw' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.gasolin.idv.tw/feeds/1298784539723478144/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=11055785&amp;postID=1298784539723478144' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11055785/posts/default/1298784539723478144'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11055785/posts/default/1298784539723478144'/><link rel='alternate' type='text/html' href='http://blog.gasolin.idv.tw/2011/05/honeycomb-highlights.html' title='HoneyComb Highlights'/><author><name>gaso lin</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh6.googleusercontent.com/-RYFnmJigzcM/AAAAAAAAAAI/AAAAAAAAB6E/0c6RsEHTN-c/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://img.youtube.com/vi/sTx-5CGDvM8/default.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-11055785.post-5022964657236099145</id><published>2011-05-11T01:28:00.005+08:00</published><updated>2011-05-11T09:08:22.355+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Android'/><title type='text'>正面迎擊，看 Google I/O 2011 Day1 Keynote 感想</title><content type='html'>看完這次的&lt;a href="http://www.google.com/events/io/2011/index-live.html"&gt;Android I/O Keynote&lt;/a&gt;(咦，好像名字不是這個)，&lt;br /&gt;Android Market平台除了已推出的應用程式（App）、書籍（Book）之外，現在將提供使用者影片租賃（Movie Rental）、&lt;a href="http://music.google.com/about"&gt;音樂(Music)&lt;/a&gt;這兩種線上服務。&lt;br /&gt;&lt;br /&gt;同時Google TV也將接入Android Market。這些努力將對手尚未在iOS平台上開通的服務一次補足，同時Android開發者也首次有了可以向iOS開發者說嘴的優勢（可以開發App for TV）。&lt;br /&gt;&lt;br /&gt;更重要的宣告是&lt;a href="http://developer.android.com/intl/zh-TW/sdk/android-3.1.html"&gt;Android 3.1&lt;/a&gt;和&lt;a href="http://developer.android.com/sdk/android-2.3.4.html"&gt;Android 2.3.4&lt;/a&gt;的推出，全力支援iOS碰都不碰的&lt;a href="http://developer.android.com/reference/android/hardware/usb/package-summary.html"&gt;USB相關技術&lt;/a&gt;。&lt;br /&gt;&lt;br /&gt;首先是支援&lt;a href="http://developer.android.com/reference/android/hardware/usb/UsbDevice.html"&gt;USB Host&lt;/a&gt;，讓數位相機可以直接接到平板上，把照片傳進平板。&lt;br /&gt;&lt;br /&gt;再來是支援&lt;a href="http://developer.android.com/reference/android/hardware/usb/UsbAccessory.html"&gt;USB Accesories&lt;/a&gt; API，讓周邊設備可以直接透過USB與Android設備連線，與Android設備中的應用程式互動。當Android設備透過USB接上周邊時，會自動列出支援的App或是App的下載連結。&lt;br /&gt;&lt;br /&gt;接著Android@Home Framework則是在USB、網路等周邊的基礎上切入智慧家電領域。&lt;br /&gt;&lt;br /&gt;Google的三螢一雲已經成形，而Google的三螢一雲不僅只侷限在手機、PC、電視、Web上而已，Google的三螢一雲具備著更通用的涵義：&lt;b&gt;移動、定點、家庭、雲端&lt;/b&gt;。&lt;br /&gt;&lt;br /&gt;對開發者而言，可以用同個系統開發App for Mobile（手機、行動裝置）、App for Tablet（平板）、App for TV（電視）、App for Accesory（周邊）、App for Home（家庭），學習Android系統的吸引力無疑大大地增加。&lt;br /&gt;&lt;br /&gt;看到這次Android 3.1的發佈，我第一次有Android OS開始追上了iOS的感覺。面對這樣的正面迎擊，其他廠商該要擁抱它呢？還是也不落人後地端出什麼好料呢？Google I/O才剛開始，後續值得期待。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11055785-5022964657236099145?l=blog.gasolin.idv.tw' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.gasolin.idv.tw/feeds/5022964657236099145/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=11055785&amp;postID=5022964657236099145' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11055785/posts/default/5022964657236099145'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11055785/posts/default/5022964657236099145'/><link rel='alternate' type='text/html' href='http://blog.gasolin.idv.tw/2011/05/google-io-2011-keynote.html' title='正面迎擊，看 Google I/O 2011 Day1 Keynote 感想'/><author><name>gaso lin</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh6.googleusercontent.com/-RYFnmJigzcM/AAAAAAAAAAI/AAAAAAAAB6E/0c6RsEHTN-c/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-11055785.post-1868555047825085876</id><published>2011-04-25T13:29:00.002+08:00</published><updated>2011-04-25T13:29:19.291+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='digest'/><category scheme='http://www.blogger.com/atom/ns#' term='coding'/><title type='text'>程式設計工藝</title><content type='html'>&lt;blockquote&gt;我傾向於將程式設計看做是一種工藝--它需要技巧、手藝、訓練和經驗。&lt;br /&gt;它的產品具有一定的功能，並且很漂亮。&lt;br /&gt;程式設計還含有藝術元素，它是一個創造性的過程。&lt;br /&gt;與這種藝術性結合在一起的，還有對工具和技術的掌握-- 這些是工匠所具備的特徵。&lt;br /&gt;--編程創藝&lt;/blockquote&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11055785-1868555047825085876?l=blog.gasolin.idv.tw' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.gasolin.idv.tw/feeds/1868555047825085876/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=11055785&amp;postID=1868555047825085876' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11055785/posts/default/1868555047825085876'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11055785/posts/default/1868555047825085876'/><link rel='alternate' type='text/html' href='http://blog.gasolin.idv.tw/2011/04/blog-post.html' title='程式設計工藝'/><author><name>gaso lin</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh6.googleusercontent.com/-RYFnmJigzcM/AAAAAAAAAAI/AAAAAAAAB6E/0c6RsEHTN-c/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-11055785.post-663095389164012886</id><published>2011-03-08T10:07:00.001+08:00</published><updated>2011-03-08T10:12:33.814+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='webframework'/><title type='text'>理解Open ID</title><content type='html'>Open ID簡而言之，就是在瀏覽到某個網站時，不用在這個網站先註冊帳號，&lt;br /&gt;只要透過OpenID機制用自己現成的Yahoo、Google等大網站的帳號登入，&lt;br /&gt;就可以開始使用這個網站所提供的個人化服務。而且自己Yahoo、Google等帳號的密碼也不會透露給這個網站知道。讓使用者可以更放心嘗試各種新的網站應用服務。&lt;br /&gt;&lt;br /&gt;在使用者登入這個網站後，這個網站還是可以在自己的資料庫中記錄關於這個使用者的各種訊息。&lt;br /&gt;&lt;br /&gt;對應到現實世界的例子，就好比我們只要持有台灣護照，到日本、加拿大遊玩時免填簽證，就可以進入該國家。只要在該國海關前出示護照，表明我們是來自台灣的遊客，海關確認護照後即准予通行，於是我們就可以進入他們的國家。&lt;br /&gt;&lt;br /&gt;回到網路的世界，舉Google為例，我們也可以查看Google提供的各種外部網站(外國)接取Google帳號(Google護照)來登入的方式&lt;br /&gt;&lt;br /&gt;Third-party web sites and applications can now let visitors sign in using their Google user accounts.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://code.google.com/apis/accounts/docs/OpenID.html"&gt;http://code.google.com/apis/accounts/docs/OpenID.html&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Facebook Connect 也是使用類似的機制，提供外部網站可以使用Facebook帳號登入，有五億潛在使用者(Facebook國民)可以更容易地使用這個網站(外國)提供的應用服務.&lt;br /&gt;&lt;a href="http://www.facebook.com/help/?page=730"&gt;http://www.facebook.com/help/?page=730&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://developers.facebook.com/docs/guides/web/"&gt;http://developers.facebook.com/docs/guides/web/&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11055785-663095389164012886?l=blog.gasolin.idv.tw' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.gasolin.idv.tw/feeds/663095389164012886/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=11055785&amp;postID=663095389164012886' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11055785/posts/default/663095389164012886'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11055785/posts/default/663095389164012886'/><link rel='alternate' type='text/html' href='http://blog.gasolin.idv.tw/2011/03/open-id.html' title='理解Open ID'/><author><name>gaso lin</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh6.googleusercontent.com/-RYFnmJigzcM/AAAAAAAAAAI/AAAAAAAAB6E/0c6RsEHTN-c/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-11055785.post-8677157882149539153</id><published>2011-02-09T08:53:00.003+08:00</published><updated>2011-02-09T10:15:22.859+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Android'/><title type='text'>Android 3.0公布</title><content type='html'>Android平板快出了，Google在許多不同場合宣告了這個消息。&lt;br /&gt;&lt;br /&gt;&lt;iframe title="YouTube video player" width="640" height="390" src="http://www.youtube.com/embed/RfJuigJebRg" frameborder="0" allowfullscreen&gt;&lt;/iframe&gt;&lt;br /&gt;&lt;br /&gt;Android 3.0(HoneyComb)引入了部件(Fragment)的概念，讓同一個畫面中可以顯示多個區塊(在同一個Activity中包含多個mini-Activity)。區塊與區塊之間可以做各式互動。要達成直、橫顯示時不同的平版配置方式，只需巧妙地搭配從Android 1.6版引入的多重Layout和Android 3.0版引入的Fragment功能。&lt;a href="http://android-developers.blogspot.com/2011/02/android-30-fragments-api.html"&gt;Google Blog上的文章&lt;/a&gt;介紹了實際使用的方法。&lt;br /&gt;&lt;br /&gt;同時Android 3.0平板的「桌面」功能更強大了，各式新型桌面Widget開發也將成為另一個新的亮點。&lt;br /&gt;&lt;br /&gt;製造商們面對iPad龐大的壓力，勢必對Android平板趨之若騖。現在要問的是，開發者們準備好隨之起舞了嗎？&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11055785-8677157882149539153?l=blog.gasolin.idv.tw' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.gasolin.idv.tw/feeds/8677157882149539153/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=11055785&amp;postID=8677157882149539153' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11055785/posts/default/8677157882149539153'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11055785/posts/default/8677157882149539153'/><link rel='alternate' type='text/html' href='http://blog.gasolin.idv.tw/2011/02/android-30.html' title='Android 3.0公布'/><author><name>gaso lin</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh6.googleusercontent.com/-RYFnmJigzcM/AAAAAAAAAAI/AAAAAAAAB6E/0c6RsEHTN-c/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://img.youtube.com/vi/RfJuigJebRg/default.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-11055785.post-1272224229499556218</id><published>2010-12-24T12:56:00.002+08:00</published><updated>2010-12-24T12:58:12.199+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='python'/><title type='text'>白象禮物交換</title><content type='html'>&lt;blockquote&gt;白象禮物的交換派對，所謂的白象禮物, 指的是家中不論新舊, 只要是完好可用的東西, 用禮物袋裝一裝或包裝精美後就可以帶去派對與人交換. 當然一人限量一份禮物。&lt;br /&gt;&lt;br /&gt;交換規則: &lt;br /&gt;每個人抽一張號碼牌, 依序選擇一份禮物. 每樣禮物必須當場拆開, 每樣禮物只能被轉手換人兩次. 也就是說, 輪到我時, 我可以任選我前面的人已拆封的禮物(假設這個禮物是第一次轉手換人); 但我後面的人也可以選擇我的禮物, 而成為這份禮的最後擁有者, 因為這次的轉手換人是限制的第二次. 倘使你的禮物被選走了, 你可以馬上再選一份未開封的禮物, 或其他人已拆封的禮物.&lt;br /&gt;&lt;/blockquote&gt;&lt;br /&gt;聖誕節到了同事們要交換禮物。剛開始是想抽籤有點麻煩，於是用 Python 寫了個簡單的 Script 來滿足抽籤的需求：&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;&gt;&gt;&gt; import random&lt;br /&gt;&gt;&gt;&gt; order = ["alice", "betty", "cindy", "deby"]&lt;br /&gt;&gt;&gt;&gt; random.shuffle(order)&lt;br /&gt;&gt;&gt;&gt; order&lt;br /&gt;['deby', 'cindy', 'alice', 'betty']&lt;br /&gt;&gt;&gt;&gt; random.shuffle(order)&lt;br /&gt;&gt;&gt;&gt; order&lt;br /&gt;['alice', 'cindy', 'deby', 'betty']&lt;br /&gt;&lt;/blockquote&gt;這麼一來每次執行 random.shuffle(order) 都可以亂數得到一個順序囉。&lt;br /&gt;&lt;br /&gt;不過一旦當活動牽扯到人的話，還是靠真的抽籤比較有趣阿！&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11055785-1272224229499556218?l=blog.gasolin.idv.tw' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.gasolin.idv.tw/feeds/1272224229499556218/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=11055785&amp;postID=1272224229499556218' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11055785/posts/default/1272224229499556218'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11055785/posts/default/1272224229499556218'/><link rel='alternate' type='text/html' href='http://blog.gasolin.idv.tw/2010/12/blog-post.html' title='白象禮物交換'/><author><name>gaso lin</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh6.googleusercontent.com/-RYFnmJigzcM/AAAAAAAAAAI/AAAAAAAAB6E/0c6RsEHTN-c/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-11055785.post-1372272810276237901</id><published>2010-12-19T22:35:00.002+08:00</published><updated>2010-12-24T12:50:28.903+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Android'/><title type='text'>App Inventor 開放</title><content type='html'>&lt;blockquote&gt;當某人發明一套神奇的新程式產生工具，聲稱可以大幅提昇效率。這時有人就會出來說：「應該要先學會如何手動進行，然後才用這個神奇的工具來節省時間。」&lt;br /&gt;&lt;br /&gt;程式產生工具假裝將某些東西抽象化，這和其他所有抽象機制一樣都有漏洞，而唯一能適當處理漏洞的方法，就是弄懂該抽像原理以及所隱藏的東西。所以抽象機制雖然替我們節省了工作的時間，不過，學習的時間是無法省的。&lt;br /&gt;-- &lt;a href="http://www.books.com.tw/exep/assp.php/gasolin/exep/prod/booksfile.php?item=0010467041"&gt;約耳趣談軟體&lt;/a&gt;&lt;/blockquote&gt;&lt;br /&gt;Google 提出的 Android 拖拉放程式設計工具 &lt;a href="http://appinventor.googlelabs.com/about/"&gt;App Inventor&lt;/a&gt; 已經開放使用了。目前版本還有&lt;a href="http://appinventor.googlelabs.com/learn/userfaq.html"&gt;諸多限制&lt;/a&gt;，例如做出來的Apk無法上傳到Android Market、無法直接用模擬器而非實機測試等，但已可以作為簡單的程式教學工具。&lt;br /&gt;&lt;br /&gt;Android 2.3 版發佈之後，開發工具裡的使用者介面設計工具已經有所進展（但還是很陽春），參照 App Inventor 的開發經驗，明年再來看官方開發工具的時後，也許可以再提昇一些水準。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11055785-1372272810276237901?l=blog.gasolin.idv.tw' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.gasolin.idv.tw/feeds/1372272810276237901/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=11055785&amp;postID=1372272810276237901' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11055785/posts/default/1372272810276237901'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11055785/posts/default/1372272810276237901'/><link rel='alternate' type='text/html' href='http://blog.gasolin.idv.tw/2010/12/app-inventor.html' title='App Inventor 開放'/><author><name>gaso lin</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh6.googleusercontent.com/-RYFnmJigzcM/AAAAAAAAAAI/AAAAAAAAB6E/0c6RsEHTN-c/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-11055785.post-1805292037998873564</id><published>2010-12-13T10:03:00.003+08:00</published><updated>2010-12-18T22:56:18.599+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Android'/><title type='text'>Android 2.3 Google 應用程式的改進</title><content type='html'>Android 2.3 除了這些系統層面的改進外，Google 出的應用程式也多有修改，而且都已經放上 Android Market 供舊版本也能直接使用。這次各種應用程式的更新目標都是更貼近桌面端的使用經驗。幸好Google有「Release Early, Release Often」的哲學，我們才不必等到手機商出了新Firmware後才能享受到這些應用程式更新的好處。&lt;br /&gt;&lt;br /&gt;1. &lt;b&gt;Android Market 更新了&lt;/b&gt;，能查看版本更新、查看相關的應用程式、支援平板，並修改了一些使用條款，現在退款時限從48小時退化到只剩15分鐘。當然，還有台灣的 使用者可以買App，開發者可以賣App。&lt;br /&gt;&lt;br /&gt;&lt;object width="640" height="385"&gt;&lt;param name="movie" value="http://www.youtube.com/v/S41bPVQJgyY?fs=1&amp;amp;hl=zh_TW"&gt;&lt;/param&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;/param&gt;&lt;param name="allowscriptaccess" value="always"&gt;&lt;/param&gt;&lt;embed src="http://www.youtube.com/v/S41bPVQJgyY?fs=1&amp;amp;hl=zh_TW" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="640" height="385"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;br /&gt;&lt;br /&gt;2. &lt;b&gt;&lt;a href="http://googlemobile.blogspot.com/2010/12/youtube-21-app-now-available-on-android.html"&gt;YouTube 更新了&lt;/a&gt;&lt;/b&gt;。&lt;br /&gt;&lt;br /&gt;&lt;object width="640" height="385"&gt;&lt;param name="movie" value="http://www.youtube.com/v/6AAFF9PN-WU?fs=1&amp;amp;hl=zh_TW"&gt;&lt;/param&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;/param&gt;&lt;param name="allowscriptaccess" value="always"&gt;&lt;/param&gt;&lt;embed src="http://www.youtube.com/v/6AAFF9PN-WU?fs=1&amp;amp;hl=zh_TW" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="640" height="385"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;br /&gt;&lt;br /&gt;3. &lt;b&gt;&lt;a href="http://googlemobile.blogspot.com/2010/12/gmail-for-android-better-priority-inbox.html"&gt;Gmail 更新了&lt;/a&gt;&lt;/b&gt;，加入 Priority Box 支援&lt;br /&gt;&lt;br /&gt;&lt;object width="640" height="385"&gt;&lt;param name="movie" value="http://www.youtube.com/v/Ztasj8_gTpI?fs=1&amp;amp;hl=zh_TW"&gt;&lt;/param&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;/param&gt;&lt;param name="allowscriptaccess" value="always"&gt;&lt;/param&gt;&lt;embed src="http://www.youtube.com/v/Ztasj8_gTpI?fs=1&amp;amp;hl=zh_TW" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="640" height="385"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;br /&gt;&lt;br /&gt;4. &lt;b&gt;&lt;a href="http://googlemobile.blogspot.com/2010/11/personally-yours-on-go-personalized.html"&gt;Google Maps 更新了&lt;/a&gt;&lt;/b&gt;，可以為地點打分數。還有斜角3D顯示。&lt;br /&gt;&lt;br /&gt;&lt;object width="640" height="385"&gt;&lt;param name="movie" value="http://www.youtube.com/v/TAh4yiCzgKw?fs=1&amp;amp;hl=zh_TW"&gt;&lt;/param&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;/param&gt;&lt;param name="allowscriptaccess" value="always"&gt;&lt;/param&gt;&lt;embed src="http://www.youtube.com/v/TAh4yiCzgKw?fs=1&amp;amp;hl=zh_TW" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="640" height="385"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;br /&gt;&lt;br /&gt;5. &lt;b&gt;&lt;a href="http://googlemobile.blogspot.com/2010/11/create-and-edit-your-google-docs-on-the.html"&gt;Google Docs 更新了&lt;/a&gt;&lt;/b&gt;，支援手機線上編輯&lt;br /&gt;&lt;br /&gt;&lt;object width="640" height="385"&gt;&lt;param name="movie" value="http://www.youtube.com/v/eAr5VoYdVBo?fs=1&amp;amp;hl=zh_TW"&gt;&lt;/param&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;/param&gt;&lt;param name="allowscriptaccess" value="always"&gt;&lt;/param&gt;&lt;embed src="http://www.youtube.com/v/eAr5VoYdVBo?fs=1&amp;amp;hl=zh_TW" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="640" height="385"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11055785-1805292037998873564?l=blog.gasolin.idv.tw' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.gasolin.idv.tw/feeds/1805292037998873564/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=11055785&amp;postID=1805292037998873564' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11055785/posts/default/1805292037998873564'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11055785/posts/default/1805292037998873564'/><link rel='alternate' type='text/html' href='http://blog.gasolin.idv.tw/2010/12/android-google-app-android-23.html' title='Android 2.3 Google 應用程式的改進'/><author><name>gaso lin</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh6.googleusercontent.com/-RYFnmJigzcM/AAAAAAAAAAI/AAAAAAAAB6E/0c6RsEHTN-c/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-11055785.post-141785615712134985</id><published>2010-12-13T09:19:00.002+08:00</published><updated>2010-12-13T09:39:19.610+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Android'/><title type='text'>Android 2.3 釋出</title><content type='html'>&lt;object width="640" height="385"&gt;&lt;param name="movie" value="http://www.youtube.com/v/Jx3pdWBlZ34?fs=1&amp;amp;hl=zh_TW"&gt;&lt;/param&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;/param&gt;&lt;param name="allowscriptaccess" value="always"&gt;&lt;/param&gt;&lt;embed src="http://www.youtube.com/v/Jx3pdWBlZ34?fs=1&amp;amp;hl=zh_TW" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="640" height="385"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;br /&gt;&lt;br /&gt;上週 Google 釋出了 Android 2.3 版 SDK 與開發工具，2.3版新增了SIP協定以支援網路語音通訊;支援更多種感測器(sensor)，並支援了"xlarge"(7吋+)大小的螢幕，讓 Android 系統適用於更多種類的設備。&lt;br /&gt;&lt;br /&gt;開發工具的部分也做了許多更新，在 AVD Manager 的畫面裡，各種函式庫又區分地更細了，而且第一次加入除了 Google 之外的 Third Party API (Samsung Galaxy)。對用的到的開發者來說這是一個進步，也顯示了Android OS確實不只是Google一家在玩而已，而是背後有&lt;a href="http://www.openhandsetalliance.com/"&gt;OHA&lt;/a&gt;聯盟廠商的支援。從工程師的角度來看這個安裝工具也越來越正規化（與版本不直接相關的功能都可以拆成不同安裝包）了。但對新手來說卻是越來越不清楚第一次安裝時應該選些什麼來裝。&lt;br /&gt;相信如果 ADT 的開發哲學沒有改變的話，這個安裝開發工具過程變得越來越複雜的趨勢會一直持續下去。&lt;br /&gt;&lt;br /&gt;大部分開發工具的修改對使用Eclipse+ADT的開發者來講沒什麼明顯差別，影響比較大的卻是使用命令行來編譯程式的開發者。原本在 tools 資料夾下的命令都轉到 platform-tools 資料夾下，而且編譯 release 版本時預設會使用 &lt;a href="http://proguard.sourceforge.net/"&gt;proguard&lt;/a&gt; 來預做程式碼混淆的動作，省下開發者不少功夫。對原本就在使用命令行工具來編譯程式的開發者來說，需要一些修改才能順利編譯。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11055785-141785615712134985?l=blog.gasolin.idv.tw' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.gasolin.idv.tw/feeds/141785615712134985/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=11055785&amp;postID=141785615712134985' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11055785/posts/default/141785615712134985'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11055785/posts/default/141785615712134985'/><link rel='alternate' type='text/html' href='http://blog.gasolin.idv.tw/2010/12/android-23.html' title='Android 2.3 釋出'/><author><name>gaso lin</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh6.googleusercontent.com/-RYFnmJigzcM/AAAAAAAAAAI/AAAAAAAAB6E/0c6RsEHTN-c/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-11055785.post-4050730488181250592</id><published>2010-12-04T14:55:00.002+08:00</published><updated>2010-12-04T14:55:31.677+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='hg'/><title type='text'>Mercurial 介紹簡報</title><content type='html'>&lt;iframe src="https://docs.google.com/present/embed?id=ajkxs9k6pqxr_1104fbg5nwc6" frameborder="0" width="410" height="342"&gt;&lt;/iframe&gt;&lt;br /&gt;&lt;br /&gt;今天在 TWJUG 做的 Mercurial 簡報&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11055785-4050730488181250592?l=blog.gasolin.idv.tw' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.gasolin.idv.tw/feeds/4050730488181250592/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=11055785&amp;postID=4050730488181250592' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11055785/posts/default/4050730488181250592'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11055785/posts/default/4050730488181250592'/><link rel='alternate' type='text/html' href='http://blog.gasolin.idv.tw/2010/12/mercurial.html' title='Mercurial 介紹簡報'/><author><name>gaso lin</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh6.googleusercontent.com/-RYFnmJigzcM/AAAAAAAAAAI/AAAAAAAAB6E/0c6RsEHTN-c/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-11055785.post-6463868165311552678</id><published>2010-11-01T08:45:00.003+08:00</published><updated>2010-11-01T08:45:47.611+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='fun'/><category scheme='http://www.blogger.com/atom/ns#' term='digest'/><title type='text'>從過去遙望未來</title><content type='html'>&lt;blockquote&gt;但這是 Internet 對我們未來生活真正的影響嗎？我覺得不是。&lt;br /&gt;如果我們著眼於大眾，就會發現真正大的影響還沒有開始。&lt;br /&gt;&lt;br /&gt;如果 Internet 的意義確如 Bill Gates 說的 "Information at your fingertips" (彈指間立得訊息)，我們就該進一步追問大眾平日最多的「訊息行為」是什麼？&lt;br /&gt;&lt;br /&gt;想想看，普通老百姓最常見的「訊息行為」是不是「買東西」和「看電視看報紙」呢？這裡我們才看到一個新技術與生活型態的未來。&lt;br /&gt;-- 詹宏志, E時代, 1999&lt;/blockquote&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11055785-6463868165311552678?l=blog.gasolin.idv.tw' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.gasolin.idv.tw/feeds/6463868165311552678/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=11055785&amp;postID=6463868165311552678' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11055785/posts/default/6463868165311552678'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11055785/posts/default/6463868165311552678'/><link rel='alternate' type='text/html' href='http://blog.gasolin.idv.tw/2010/11/blog-post.html' title='從過去遙望未來'/><author><name>gaso lin</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh6.googleusercontent.com/-RYFnmJigzcM/AAAAAAAAAAI/AAAAAAAAB6E/0c6RsEHTN-c/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-11055785.post-7609142886037239652</id><published>2010-10-30T09:24:00.002+08:00</published><updated>2010-10-30T09:32:43.056+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='digest'/><category scheme='http://www.blogger.com/atom/ns#' term='coding'/><title type='text'>改善力和重構</title><content type='html'>&lt;blockquote&gt;豐田採取的是剔除每次到生產線場所發現的浪費，再重新調整佈署的生產方式。&lt;br /&gt;剔除浪費使流程更順暢之後，再回到現場去看，又會發現不同的浪費之處。每去一次就設立新的標準以避免浪費，這就是豐田的「改善」方式。&lt;br /&gt;&lt;br /&gt;「浪費會以不同的形態出現。浪費是會進化的。」一旦剔除了浪費之處，它就會以不同的形態再度出現。豐田採行的就是將進化的浪費再次摘除的作法。不斷重複這種過程，就會創造出更好的環境，這就是豐田的「改善」方式。&lt;br /&gt;--&lt;a href="http://www.books.com.tw/exep/assp.php/gasolin/exep/prod/booksfile.php?item=0010348197"&gt;規劃力&lt;/a&gt;&lt;/blockquote&gt;&lt;br /&gt;寫程式時做「重構」的目的，和在生產線上做「改善」的目標，不也是一致的嗎？&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11055785-7609142886037239652?l=blog.gasolin.idv.tw' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.gasolin.idv.tw/feeds/7609142886037239652/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=11055785&amp;postID=7609142886037239652' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11055785/posts/default/7609142886037239652'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11055785/posts/default/7609142886037239652'/><link rel='alternate' type='text/html' href='http://blog.gasolin.idv.tw/2010/10/blog-post_30.html' title='改善力和重構'/><author><name>gaso lin</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh6.googleusercontent.com/-RYFnmJigzcM/AAAAAAAAAAI/AAAAAAAAB6E/0c6RsEHTN-c/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-11055785.post-7026579851342969607</id><published>2010-10-11T21:26:00.000+08:00</published><updated>2010-10-11T21:26:49.381+08:00</updated><title type='text'>選戰也進入移動世代</title><content type='html'>繼前幾天在 Android Market 上看到某五都候選人的 App，&lt;br /&gt;裡面除了候選人簡介、官網新聞、還有參選地的一些吃喝地點分享等等，還算實用。&lt;br /&gt;&lt;br /&gt;在著實被這種宣傳方式驚訝了一番之後，昨日取用某日隨手拿到的一位市議員參選人的面紙宣傳品時，又有了意外發現。&lt;br /&gt;&lt;br /&gt;這份宣傳品不同的地方是，面紙袋背面印有QRCode（！），還一併附上了候選人的Gmail信箱（！！），更精采的是用手機掃瞄QRCode進去後，連到的不是理所當然的候選人個人首頁，而是該候選人的Facebook（！！！），連進去可以看到一些該候選人跑基層的照片和個人感想。&lt;br /&gt;&lt;br /&gt;民國到了100年，基層選舉也正在進化，明天還是很美好阿。&lt;br /&gt;&lt;br /&gt;PS: 為了避免政治口水，請別在此問我是哪幾位候選人，也請不要在這邊吵支持誰的問題。我支持全民最大黨 :D&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11055785-7026579851342969607?l=blog.gasolin.idv.tw' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.gasolin.idv.tw/feeds/7026579851342969607/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=11055785&amp;postID=7026579851342969607' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11055785/posts/default/7026579851342969607'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11055785/posts/default/7026579851342969607'/><link rel='alternate' type='text/html' href='http://blog.gasolin.idv.tw/2010/10/blog-post.html' title='選戰也進入移動世代'/><author><name>gaso lin</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh6.googleusercontent.com/-RYFnmJigzcM/AAAAAAAAAAI/AAAAAAAAB6E/0c6RsEHTN-c/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-11055785.post-2176478484437234124</id><published>2010-09-28T10:14:00.004+08:00</published><updated>2010-09-28T10:19:27.029+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='hg'/><title type='text'>DropBox &amp; SparkleShare</title><content type='html'>http://linuxtoy.org/archives/sparkleshare-beta.html&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.dropbox.com/referrals/NTExNTc4ODk5"&gt;DropBox&lt;/a&gt;是種結合了本地和雲端, 能改變使用者習慣的重要技術。&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.dropbox.com/referrals/NTExNTc4ODk5"&gt;DropBox&lt;/a&gt;讓使用者可以用原本的形式來處理檔案和文件, 只要在各種作業系統上安裝&lt;a href="http://www.dropbox.com/referrals/NTg3MDc3Njk"&gt;DropBox&lt;/a&gt;提供的軟體，登入&lt;a href="http://www.dropbox.com/referrals/NTg3MDc3Njk"&gt;DropBox&lt;/a&gt;帳號後即會在本地建立一個資料夾。&lt;br /&gt;這個資料夾中的所有檔案都會自動同步到&lt;a href="http://www.dropbox.com/referrals/NTExNTc4ODk5"&gt;DropBox&lt;/a&gt;伺服器。如果你有多台設備(電腦, iPad, 智慧手機)，並都登入了同一帳號，那麼當資料夾中的任一檔案被更新後，其他台設備很快就也能接收到這些檔案的更新。&lt;a href="http://www.dropbox.com/referrals/NTExNTc4ODk5"&gt;DropBox&lt;/a&gt;真正做到了隨處可得。&lt;br /&gt;&lt;br /&gt;很方便的是，不管是對檔案、文件夾改名，或是刪除檔案都難不倒它。如果在其中一台刪除了檔案，其他台的檔案也會一併被刪除。為了解決客戶對誤操作的擔憂，&lt;a href="http://www.dropbox.com/referrals/NTg3MDc3Njk"&gt;DropBox&lt;/a&gt;還提供了類似蘋果電腦上的時光回溯(Time Machine)功能(技術上基本就是將檔案操作結合版本控制系統)，若是做了誤操作，可以登入到&lt;a href="http://www.dropbox.com/referrals/NTg3MDc3Njk"&gt;DropBox&lt;/a&gt;網站上將上次的誤操作回復到之前狀態，真是非常安心。&lt;br /&gt;&lt;br /&gt;另外，放在&lt;a href="http://www.dropbox.com/referrals/NTExNTc4ODk5"&gt;DropBox&lt;/a&gt;檔案夾下的檔案，除了可以像以前的作法用網芳分享給在同個網域下的朋友外，還可以直接將一個資料夾分享給其他同樣有&lt;a href="http://www.dropbox.com/referrals/NTExNTc4ODk5"&gt;DropBox&lt;/a&gt;帳號的朋友，真正是天涯若彼鄰。&lt;br /&gt;&lt;br /&gt;&lt;a href="http://sparkleshare.org/"&gt;SparkleShare &lt;/a&gt;則是它的 open source 替代品，後端使用GIT版本控制系統。&lt;br /&gt;&lt;br /&gt;PS: 大家看了我上面的介紹，可以知道我真的很愛這種東西。因為研究所時我也花過一段時間研究，並發過一篇一樣為解決多台設備間資料同步問題的 paper，而人家真的做出來了 :D&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11055785-2176478484437234124?l=blog.gasolin.idv.tw' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.gasolin.idv.tw/feeds/2176478484437234124/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=11055785&amp;postID=2176478484437234124' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11055785/posts/default/2176478484437234124'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11055785/posts/default/2176478484437234124'/><link rel='alternate' type='text/html' href='http://blog.gasolin.idv.tw/2010/09/sparkleshare.html' title='DropBox &amp; SparkleShare'/><author><name>gaso lin</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh6.googleusercontent.com/-RYFnmJigzcM/AAAAAAAAAAI/AAAAAAAAB6E/0c6RsEHTN-c/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-11055785.post-6635054471266648434</id><published>2010-09-26T23:14:00.003+08:00</published><updated>2010-11-03T20:56:25.418+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Android'/><title type='text'>提問的智慧App電子書</title><content type='html'>「提問的智慧(How To Ask Questions The Smart Way)」是由知名黑客 Eric S. Raymond 所撰寫，被廣泛轉錄，可以很容易地透過Google搜尋到。&lt;br /&gt;&lt;br /&gt;花了一整天把 Eric S. Raymond 的 '提問的智慧'中文版修訂到和&lt;a href="http://www.catb.org/~esr/faqs/smart-questions.html"&gt;原文&lt;/a&gt;一樣的 3.6 版(&lt;a href="http://mis.ndhu.edu.tw/docu/question.htm"&gt;上一版&lt;/a&gt;正體中文是2001年D.H.Grand翻譯的)，翻譯的過程中也參考了&lt;a href="http://www.beiww.com/doc/oss/smart-questions.html"&gt;簡體中文版&lt;/a&gt;的翻譯。&lt;br /&gt;&lt;br /&gt;先做成 Android App, &lt;strike&gt;等有空再來弄個網站放內文以供連結吧...&lt;/strike&gt; 網站版文件也&lt;a href="http://code.google.com/p/smartquestions/wiki/Disclaimer"&gt;已放到 GoogleCode&lt;/a&gt;。&lt;br /&gt;&lt;br /&gt;&lt;a href="http://market.android.com/search?q=pname:com.gasolin.android.smartquestions.tw"&gt;Market 連結&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://qrcode.kaywa.com/img.php?s=8&amp;d=http%3A%2F%2Fmarket.android.com%2Fsearch%3Fq%3Dpname%3Acom.gasolin.android.smartquestions.tw"&gt;QRCode&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11055785-6635054471266648434?l=blog.gasolin.idv.tw' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.gasolin.idv.tw/feeds/6635054471266648434/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=11055785&amp;postID=6635054471266648434' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11055785/posts/default/6635054471266648434'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11055785/posts/default/6635054471266648434'/><link rel='alternate' type='text/html' href='http://blog.gasolin.idv.tw/2010/09/app.html' title='提問的智慧App電子書'/><author><name>gaso lin</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh6.googleusercontent.com/-RYFnmJigzcM/AAAAAAAAAAI/AAAAAAAAB6E/0c6RsEHTN-c/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-11055785.post-8278915329059261003</id><published>2010-09-11T08:47:00.000+08:00</published><updated>2010-09-11T08:47:24.597+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='hg'/><title type='text'>分散式版本控制的合作模式</title><content type='html'>傳統的版本控制系統(Version Control System, VCS)只有一台單一的版本庫（repository），所有的版本控制都必須經由這台版本庫主機才能管理。新一代的分散式版本控制系統(Distributed Version Control System, DVCS)如 git, Mercurial 則每份抓下來的 code 都可起到等同於版本庫的作用，使得在離線時做版本控制，並能容易地合併回主版本庫的工作模式成為可能。&lt;br /&gt;&lt;br /&gt;因為分散的特性，也衍生出各種可能的合作模式。&lt;br /&gt;git 有 &lt;a href="http://nvie.com/git-model"&gt;A successful Git branching model&lt;/a&gt;，Mercurial有 &lt;a href="http://stevelosh.com/blog/2010/02/mercurial-workflows-branch-as-needed/"&gt;Workflows: Branch As Needed&lt;/a&gt;, &lt;a href="http://stevelosh.com/blog/2010/05/mercurial-workflows-stable-default/"&gt;Stable &amp; Default&lt;/a&gt;, &lt;a href="http://stevelosh.com/blog/2010/06/mercurial-workflows-translation-branches/"&gt;Translation Branches&lt;/a&gt; 等方式。&lt;br /&gt;&lt;br /&gt;實際上該採用哪種方式比較好？先看看其他人怎麼做，從中選擇，或是加點創意，找出適合自己團隊使用的方法吧。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11055785-8278915329059261003?l=blog.gasolin.idv.tw' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.gasolin.idv.tw/feeds/8278915329059261003/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=11055785&amp;postID=8278915329059261003' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11055785/posts/default/8278915329059261003'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11055785/posts/default/8278915329059261003'/><link rel='alternate' type='text/html' href='http://blog.gasolin.idv.tw/2010/09/blog-post.html' title='分散式版本控制的合作模式'/><author><name>gaso lin</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh6.googleusercontent.com/-RYFnmJigzcM/AAAAAAAAAAI/AAAAAAAAB6E/0c6RsEHTN-c/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-11055785.post-7495098003499695902</id><published>2010-09-08T11:00:00.000+08:00</published><updated>2010-09-08T11:00:29.288+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='hg'/><title type='text'>[Mercurial]多來源更新</title><content type='html'>在做完「hg clone」（就如同從 Server 端 Check Out 程式碼）後，除了可以對原 Server 做「hg pull」以更新程式碼之外，也可以多加別台 Server 進列表。&lt;br /&gt;&lt;br /&gt;如原來從 Alice 處「hg clone」下來原始碼，而現在也想要從 Bob 處直接取得他的更新，可以使用&lt;br /&gt;&lt;blockquote&gt;$ hg pull [bob server]&lt;/blockquote&gt;命令。&lt;br /&gt;&lt;br /&gt;另一個好方法是可以在 .hg/hgrc 中定義額外的 Server 別名(alias)。&lt;br /&gt;&lt;br /&gt;例如原來的 .hg/hgrc 長這樣:&lt;br /&gt;&lt;blockquote&gt;[paths]&lt;br /&gt;default = [Alice Server]/[project]&lt;br /&gt;&lt;/blockquote&gt;&lt;br /&gt;我們在其後加入 Bob Server 的別名如下:&lt;br /&gt;&lt;blockquote&gt;[paths]&lt;br /&gt;default = [Alice Server]/[project]&lt;br /&gt;bob = [Bob server]/[project]&lt;br /&gt;&lt;/blockquote&gt;&lt;br /&gt;儲存後，要再從 Bob 處直接取得他的更新，可以使用&lt;br /&gt;&lt;blockquote&gt;$ hg pull bob&lt;/blockquote&gt;&lt;br /&gt;命令來直接取得 bob 的原始碼。分散式版本控制是不是很方便呢 :)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11055785-7495098003499695902?l=blog.gasolin.idv.tw' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.gasolin.idv.tw/feeds/7495098003499695902/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=11055785&amp;postID=7495098003499695902' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11055785/posts/default/7495098003499695902'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11055785/posts/default/7495098003499695902'/><link rel='alternate' type='text/html' href='http://blog.gasolin.idv.tw/2010/09/mercurial.html' title='[Mercurial]多來源更新'/><author><name>gaso lin</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh6.googleusercontent.com/-RYFnmJigzcM/AAAAAAAAAAI/AAAAAAAAB6E/0c6RsEHTN-c/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-11055785.post-1336186357005133760</id><published>2010-07-27T16:04:00.000+08:00</published><updated>2010-07-27T16:04:53.397+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Android'/><title type='text'>投影展示Android手機畫面</title><content type='html'>&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://www.adakoda.com/adakoda/android/asm/ASM2_00_Win.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://www.adakoda.com/adakoda/android/asm/ASM2_00_Win.png" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;去年寫過一篇&lt;a href="http://inet6.blogspot.com/2009/02/demo-your-android-phone-through-your.html"&gt;Demo Android Phone through your PC/MAC&lt;/a&gt;，介紹「DroidEx.jar」這個可以透過電腦螢幕展示Android手機畫面的工具。&lt;br /&gt;&lt;br /&gt;這次要介紹的是 &lt;a href="http://www.adakoda.com/adakoda/android/asm/"&gt;Android Screen Monitor&lt;/a&gt; 這個同類型的工具。&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.adakoda.com/adakoda/android/asm/"&gt;Android Screen Monitor&lt;/a&gt; 跨平台，從網頁下載之後，先將手機連上電腦，接著只要輸入&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;java - jar asm.jar&lt;/blockquote&gt;&lt;br /&gt;即可於螢幕顯示手機畫面，相當方便喔。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11055785-1336186357005133760?l=blog.gasolin.idv.tw' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.gasolin.idv.tw/feeds/1336186357005133760/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=11055785&amp;postID=1336186357005133760' title='5 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11055785/posts/default/1336186357005133760'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11055785/posts/default/1336186357005133760'/><link rel='alternate' type='text/html' href='http://blog.gasolin.idv.tw/2010/07/android.html' title='投影展示Android手機畫面'/><author><name>gaso lin</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh6.googleusercontent.com/-RYFnmJigzcM/AAAAAAAAAAI/AAAAAAAAB6E/0c6RsEHTN-c/s512-c/photo.jpg'/></author><thr:total>5</thr:total></entry><entry><id>tag:blogger.com,1999:blog-11055785.post-1497098972299125063</id><published>2010-07-22T10:22:00.009+08:00</published><updated>2010-09-11T08:27:20.916+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='hg'/><title type='text'>Mercurial, 分支與合併很簡單</title><content type='html'>&lt;a href="http://mercurial.selenic.com/"&gt;Mercurial(Hg)&lt;/a&gt; 一直是我很愛用的版本控制工具。以前自己最常用的用途是拿來取代 &lt;a href="http://subversion.tigris.org/"&gt;svn&lt;/a&gt;，單純享受單機/離線使用版本控制系統開發的樂趣。&lt;br /&gt;&lt;br /&gt;要單機使用版本控制系統開發，照著&lt;a href="http://inet6.blogspot.com/2007/04/mercurial-mozilla.html"&gt;水銀分散式版本控制系統的使用概念&lt;/a&gt;做就行了。&lt;br /&gt;&lt;br /&gt;最近看了&lt;a href="http://hginit.com/top/"&gt;Hg init&lt;/a&gt;和&lt;a href="http://progit.org/book/zh/"&gt;ProGit&lt;/a&gt;兩份分別講Hg和Git分散式版本控制的書，裡面都相當推崇「分支(Branch)開發」的概念。&lt;br /&gt;所謂「分支開發」，就是將主幹(trunk)保持在穩定可運作的版本（雖然本來就該這麼做），在開發任何新功能時都另建新分支(branch)，開發到一段落之後再合併回主幹。能支援這樣的開發模式，是因為Hg或Git這些分散式版本控制系統做開分支、合併等動作的額外開銷都很低。&lt;br /&gt;&lt;br /&gt;那麼要實際使用時該怎麼做呢？&lt;br /&gt;&lt;br /&gt;&lt;b&gt;開分支&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;我有一個名為「ZAKU」（薩克）的目錄，主幹版本代號為3, 現在要實作一個將綠色變成紅色的功能，這時我們可以建立一個新分支來繼續開發這個新功能。分支命令的格式為：&lt;br /&gt;&lt;blockquote&gt;$ hg branch [branch name]&lt;/blockquote&gt;&lt;br /&gt;因此要建立一個名為「red」的分支，可以使用以下命令：&lt;br /&gt;&lt;blockquote&gt;&lt;pre&gt;$ hg branch red&lt;br /&gt;marked working directory as branch red&lt;/pre&gt;&lt;/blockquote&gt;&lt;br /&gt;這麼一來，之後 commit 的 code 都會進入「red」這個分支了。&lt;br /&gt;&lt;br /&gt;&lt;b&gt;查看狀態&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;在 commit 進一些 code 之後（版本代號到13），輸入「hg branchs」命令可以列出所有版本&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;pre&gt;$ hg branches&lt;br /&gt;default                       3:e2287f9031a1 (inactive)&lt;br /&gt;red                           13:e590de4b0dc9&lt;/pre&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;b&gt;切換分支&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;在開發新功能的同時，也可能會碰上整個專案共通的bug，以前老派的作法是再 check out 一份主幹的程式碼，然後兩邊修正，現在有了hg, 只要先暫時切換回主幹，把bug修正了再合併回分支（或到時一次把分支合併回主幹）。&lt;br /&gt;&lt;br /&gt;要切換回主幹，輸入「hg update default」即可。&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;pre&gt;$ hg up default&lt;br /&gt;4 files 已更新, 0 files 已合併, 3 files 已移除, 0 files unresolved&lt;/pre&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;b&gt;合併&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;當我們把「red」分支中的新功能做好後，可以很容易地將這些修改合併回主幹。&lt;br /&gt;&lt;br /&gt;首先，用上面的方法切換回主幹，然後輸入「hg merge red」，即可將「red」分支中的修改加進主幹。&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;pre&gt;$ hg merge red&lt;br /&gt;5 files 已更新, 0 files 已合併, 0 files 已移除, 0 files unresolved&lt;br /&gt;(branch merge, don't forget to commit)&lt;/pre&gt;&lt;/blockquote&gt;&lt;br /&gt;合併命令的格式為&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;hg merge [branch name]&lt;/blockquote&gt;&lt;br /&gt;合併完後確認沒問題，就將程式碼再 commit 進版本庫吧！&lt;br /&gt;&lt;br /&gt;如果只想 push 某 branch 的修改到版本庫，可以使用&lt;br /&gt;&lt;blockquote&gt;hg push --rev [version]&lt;/blockquote&gt;&lt;br /&gt;命令，這樣只會將與指定版本相關的修改上傳到版本庫。&lt;br /&gt;&lt;br /&gt;&lt;b&gt;One more thing&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;同樣的方法，我們可以再建立一個分支「horn」來開發長角的功能，然後再將「horn」分支合併回主幹。&lt;br /&gt;&lt;br /&gt;別忘了hg還有提供一個離線網頁瀏覽功能，輸入「hg serve -p 5000」，在瀏覽器上輸入「http://localhost:5000」就能看到類似 gitweb 的版本控制訊息網頁。點選左側的「graph」標籤，可以用視覺化的方式看到之前所有分支合併的圖形記錄囉！&lt;br /&gt;&lt;br /&gt;學會分支與合併後，你的開發效率會不會也變成三倍速哩？&lt;br /&gt;&lt;br /&gt;參考資料: &lt;br /&gt;* http://stevelosh.com/blog/2009/08/a-guide-to-branching-in-mercurial/&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11055785-1497098972299125063?l=blog.gasolin.idv.tw' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.gasolin.idv.tw/feeds/1497098972299125063/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=11055785&amp;postID=1497098972299125063' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11055785/posts/default/1497098972299125063'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11055785/posts/default/1497098972299125063'/><link rel='alternate' type='text/html' href='http://blog.gasolin.idv.tw/2010/07/mercurial.html' title='Mercurial, 分支與合併很簡單'/><author><name>gaso lin</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh6.googleusercontent.com/-RYFnmJigzcM/AAAAAAAAAAI/AAAAAAAAB6E/0c6RsEHTN-c/s512-c/photo.jpg'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-11055785.post-5283054334103916667</id><published>2010-06-16T10:48:00.002+08:00</published><updated>2010-06-16T10:49:39.918+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='digest'/><title type='text'>書不像書的時代</title><content type='html'>&lt;blockquote&gt;紙本書變電子書是很小的事，書變得不像書，才是嚴重的事。&lt;/blockquote&gt;-- &lt;a href="http://www.facebook.com/note.php?note_id=434741171281&amp;id=194807678300&amp;ref=mf"&gt;紙本書變電子書是很小的事——詹宏志談數位元出版時代&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;假如電子書指的是，一個在特殊的閱讀設備上面呈現我們今天在紙本書上所看到的內容和形式的書，&lt;br /&gt;那我會說，電子書正在解決過去的問題而沒有解決未來的問題。&lt;/blockquote&gt;&lt;br /&gt;&lt;blockquote&gt;使用互聯網這件事都佔用了你很大一部分的時間，這個形式連電子書都沒有辦法解決。所以電子書是在解決過去的問題。&lt;/blockquote&gt;&lt;br /&gt;&lt;blockquote&gt;取得知識的方式如果已經變了，出版還沒變的話，就會慢慢變得不相干。&lt;br /&gt;出版者要解決今天的出版困境，他必須到未來的學習者取得知識的地方去做出版，不能繼續使用現在出版的形式，使自己愈來愈跟這個社會不相干。&lt;/blockquote&gt;&lt;br /&gt;&lt;blockquote&gt;舉個例子，現在全世界最好的百科全書極可能還是大英百科全書，可是最好有什麼用？它現在跟我們大部分年輕人是不相干的。&lt;br /&gt;而我也不覺得現在的年輕人用的是維基百科，真正改變他的行為的是搜索引擎。&lt;br /&gt;他是先丟出一個要查的東西，如果維基百科在前三條，就點進去，還沒到維基百科，這個事情就已經決定了。&lt;br /&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;blockquote&gt;當資訊量愈大的時候，導語和評論的價值就愈高。&lt;br /&gt;因為你真的沒辦法判斷，問題不在於沒有而在於太多了，多到你不知道誰好。&lt;br /&gt;在我看來未來編輯的工作會很不一樣，會加倍重要。&lt;br /&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;blockquote&gt;一個社會創作生產量愈大總的來講是好事，你可能會嫌他有很多不好的東西，但是數量跟好東西是有關聯性的。&lt;br /&gt;披沙揀金的結果，有這麼大量的垃圾，也會有某一個比例的含金量。&lt;br /&gt;容易發表的創作，其實是使得很多可能的創作都會跑出來的重要原因。&lt;/blockquote&gt;&lt;br /&gt;&lt;blockquote&gt;去瞭解你的朋友，現在的年輕人，取得資訊的行為是怎麼一回事，你可以從那裏看出，有什麼東西是你可以做。&lt;/blockquote&gt;&lt;br /&gt;&lt;blockquote&gt;你怎麼可以忍受看那麼多東西才找到那麼一點點好東西，應該有人幫我做這個事，對不對？&lt;br /&gt;應該有各種有判斷能力的人來幫我做這個事，而我會選擇每次判斷都深得我心的編輯來追隨，編輯也會有他的訴求、專長、分工。&lt;br /&gt;我們擋掉了很多不要浪費出版資源的東西；可同時，說不定也擋掉了對社會有衝擊的新創作。&lt;/blockquote&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11055785-5283054334103916667?l=blog.gasolin.idv.tw' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.gasolin.idv.tw/feeds/5283054334103916667/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=11055785&amp;postID=5283054334103916667' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11055785/posts/default/5283054334103916667'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11055785/posts/default/5283054334103916667'/><link rel='alternate' type='text/html' href='http://blog.gasolin.idv.tw/2010/06/blog-post.html' title='書不像書的時代'/><author><name>gaso lin</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh6.googleusercontent.com/-RYFnmJigzcM/AAAAAAAAAAI/AAAAAAAAB6E/0c6RsEHTN-c/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-11055785.post-2942915708214551117</id><published>2010-05-21T23:28:00.000+08:00</published><updated>2010-05-21T23:28:37.128+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Android'/><title type='text'>如何讓應用程式直接安裝到SD卡執行（2.2）</title><content type='html'>Android 2.2 中新增了應用程式直接安裝到SD卡執行 (不少人稱這個功能作 App2SD)，&lt;br /&gt;要使用這個功能只要在目前程式中做幾個設定：&lt;br /&gt;&lt;br /&gt;1. 專案的 Project Build Target 版本設定為 2.2 (API 8)&lt;br /&gt;2. 修改 AndroidManifest 清單&lt;br /&gt;&lt;br /&gt;&lt;b&gt;設定 Project Build Target 版本&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;在 Eclipse 專案列表中按右鍵，選取 properties 選項，會彈出設定視窗。&lt;br /&gt;在上面選擇左側的 Android 標籤，在右側 Build 欄位勾選「Android 2.2」選項（沒有這選項的請參考 &lt;a href="http://code.google.com/p/androidbmi/wiki/ManageSDK"&gt;管理SDK&lt;/a&gt; 來升級SDK），如此一來編譯時才能認得我們接下來在 AndroidManifest 清單中所做的設定。&lt;br /&gt;&lt;br /&gt;&lt;b&gt;修改 AndroidManifest 清單&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;在 manifest 標籤中加入一個「android:installLocation」屬性，實際程式碼如下&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;&amp;lt;manifest xmlns:android="http://schemas.android.com/apk/res/android"&amp;gt;&lt;br /&gt;package="com.demo.org"&lt;br /&gt;android:versionName="1.0" android:versionCode="1"&lt;br /&gt;&lt;b&gt;android:installLocation="preferExternal"&lt;/b&gt;&lt;br /&gt;&amp;gt;&lt;br /&gt;....&lt;/blockquote&gt;&lt;br /&gt;&lt;b&gt;說明&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;android:installLocation="preferExternal"&lt;/blockquote&gt;&lt;br /&gt;清單中加入以上宣告後，編譯好的程式仍然可以適用於較低版本的機器，只有在程式安裝到 Android 2.2 版之後的系統上，系統才會自動將這個程式安裝到 SD 卡中。&lt;br /&gt;&lt;br /&gt;安裝到SD卡中時程式會預作一次加密，讓只有安裝本程式的機器能存取這個程式，避免了程式可能會輕易被盜拷的疑慮。&lt;br /&gt;&lt;br /&gt;沒有用到 Service、桌面小工具（Widget）、或動態桌布（Live Wallpaper）功能的程式比較適合儲存到SD卡，例如遊戲或 BMI 等小程式。&lt;br /&gt;&lt;br /&gt;因為當機器使用 USB 和電腦連線，將SD卡掛載成磁碟機時，這些儲存在SD卡中執行的程式將會被中斷。&lt;br /&gt;&lt;br /&gt;其他提示請參考 Android&amp;nbsp;&lt;a href="http://developer.android.com/guide/appendix/install-location.html"&gt;官方文件&lt;/a&gt;。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11055785-2942915708214551117?l=blog.gasolin.idv.tw' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.gasolin.idv.tw/feeds/2942915708214551117/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=11055785&amp;postID=2942915708214551117' title='9 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11055785/posts/default/2942915708214551117'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11055785/posts/default/2942915708214551117'/><link rel='alternate' type='text/html' href='http://blog.gasolin.idv.tw/2010/05/sd22.html' title='如何讓應用程式直接安裝到SD卡執行（2.2）'/><author><name>gaso lin</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh6.googleusercontent.com/-RYFnmJigzcM/AAAAAAAAAAI/AAAAAAAAB6E/0c6RsEHTN-c/s512-c/photo.jpg'/></author><thr:total>9</thr:total></entry><entry><id>tag:blogger.com,1999:blog-11055785.post-5213298310904912020</id><published>2010-05-21T01:14:00.005+08:00</published><updated>2010-05-21T22:57:52.961+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Android'/><title type='text'>Android 2.2，完全版的Android就應該長這樣</title><content type='html'>&lt;object height="385" width="640"&gt;&lt;param name="movie" value="http://www.youtube.com/v/yAZYSVr2Bhc&amp;color1=0xb1b1b1&amp;color2=0xd0d0d0&amp;hl=en_US&amp;feature=player_embedded&amp;fs=1"&gt;&lt;/param&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;/param&gt;&lt;param name="allowScriptAccess" value="always"&gt;&lt;/param&gt;&lt;embed src="http://www.youtube.com/v/yAZYSVr2Bhc&amp;color1=0xb1b1b1&amp;color2=0xd0d0d0&amp;hl=en_US&amp;feature=player_embedded&amp;fs=1" type="application/x-shockwave-flash" allowfullscreen="true" allowScriptAccess="always" width="640" height="385"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;br /&gt;&lt;br /&gt;現在在Google I/O 2010 會場看現場發表會。Froyo 真的是非常高完成度的版本，除了機器OS本身之外，還支援了許多對開發者、對使用者都有利的特性：&lt;br /&gt;&lt;br /&gt;開發者：&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;新版開發工具支援 Library Project，意思是同時開發試用版/正式版時，終於可以共用多數程式碼和資源檔，而不用完全開兩個專案出來&lt;/li&gt;&lt;li&gt;支援 Data Backup API，表示任何應用程式都可以使用 Android Cloud 將程式中的資料記錄到雲端上，換到任何其他台手機上都可以備份回來。&lt;/li&gt;&lt;li&gt;允許遠端控制機器&lt;/li&gt;&lt;li&gt;多種模式的 Mobile AdSense&lt;/li&gt;&lt;li&gt;應用程式可以直接安裝到SD卡，得以在Android上實現大型遊戲等應用&lt;/li&gt;&lt;li&gt;Google TV 上也能裝 Android 應用程式。這表示什麼？表示開發Android平台遊戲就能打進電視遊戲市場！&lt;/li&gt;&lt;/ul&gt;&lt;div&gt;使用者&lt;/div&gt;&lt;ul&gt;&lt;li&gt;應用程式/網頁都有2~3倍以上的執行速度&lt;/li&gt;&lt;li&gt;應用程式能從SD卡中執行&lt;/li&gt;&lt;li&gt;在網頁版Market上點選安裝，在機器上即能自動下載&lt;/li&gt;&lt;li&gt;語音辨識功能、桌面搜尋功能更強大&lt;/li&gt;&lt;li&gt;有新版本應用程式可以自動從 Market 更新&lt;/li&gt;&lt;li&gt;搭載Froyo的設備能直接變成行動 AP (tethering)&lt;/li&gt;&lt;/ul&gt;&lt;div&gt;開發者們又很有事情可以做了 :)&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11055785-5213298310904912020?l=blog.gasolin.idv.tw' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.gasolin.idv.tw/feeds/5213298310904912020/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=11055785&amp;postID=5213298310904912020' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11055785/posts/default/5213298310904912020'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11055785/posts/default/5213298310904912020'/><link rel='alternate' type='text/html' href='http://blog.gasolin.idv.tw/2010/05/android-22.html' title='Android 2.2，完全版的Android就應該長這樣'/><author><name>gaso lin</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh6.googleusercontent.com/-RYFnmJigzcM/AAAAAAAAAAI/AAAAAAAAB6E/0c6RsEHTN-c/s512-c/photo.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-11055785.post-7821468790312441748</id><published>2010-04-13T07:40:00.003+08:00</published><updated>2010-04-13T07:48:03.555+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='digest'/><title type='text'>无知者的安全</title><content type='html'>&lt;blockquote&gt;买书时，你不只是为那本书付费，也是在为那些有可能被退回和销毁的书付费&lt;br /&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;blockquote&gt;无论出版商做不做电子书，他们所拥有的内容的数字版已经存在于网上了。有的是通过扫描＋文字识别技术制作的，而大部分热门书则是网友合力誊抄的。&lt;/blockquote&gt;&lt;br /&gt;&lt;blockquote&gt;尽管 DRM 的初衷在于保护老板们的权利，防止完美的数字拷贝被非法传播，但实际上它对于盗版毫无作用。每一个人们需要的数字媒体文件都会有人免费供应，不管是通过破解 DRM，还是拷贝未受 DRM 保护的文件，还是从未受保护的类比拷贝重新合成一份数字版本。DRM 唯一的作用就是令合法消费数字媒体的用户感到郁闷，同时遏制了方兴未艾的数字发行市场。&lt;/blockquote&gt;&lt;br /&gt;&lt;blockquote&gt;为数字媒体文件设置 DRM 是一种在数学、技术和智力上都已经破产的做法。它完全达不到其防止盗版的目的，倒是会带来相当多的负面效果：限制消费者对其通过合法渠道购买的内容所拥有的合法权利，并动辄以民事惩罚或刑事起诉相威胁。&lt;/blockquote&gt;&lt;br /&gt;&lt;blockquote&gt;按照成本和需求定价是好的，但这个成本和需求应该是你所卖的实际产品的成本和需求，而不是以另外一种成本和需求完全不一样的产品为基准！&lt;br /&gt;&lt;br /&gt;这种做法是不合逻辑的，这不是在卖电子书，而是在确保电子书的销售不影响精装本纸书的销量。&lt;br /&gt;&lt;/blockquote&gt;&lt;br /&gt;--from &lt;a href="http://apple4.us/2010/04/future-reading-siracusa-ebook.html"&gt;[阅读的未来] 电子书的前世今生（上）&lt;/a&gt;, &lt;a href="http://apple4.us/2010/04/future-reading-siracusa-ebook-2.html"&gt;下&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11055785-7821468790312441748?l=blog.gasolin.idv.tw' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='http://apple4.us/2010/04/future-reading-siracusa-ebook.html' title='无知者的安全'/><link rel='replies' type='application/atom+xml' href='http://blog.gasolin.idv.tw/feeds/7821468790312441748/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=11055785&amp;postID=7821468790312441748' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11055785/posts/default/7821468790312441748'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11055785/posts/default/7821468790312441748'/><link rel='alternate' type='text/html' href='http://blog.gasolin.idv.tw/2010/04/blog-post.html' title='无知者的安全'/><author><name>gaso lin</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh6.googleusercontent.com/-RYFnmJigzcM/AAAAAAAAAAI/AAAAAAAAB6E/0c6RsEHTN-c/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-11055785.post-4571570693036619426</id><published>2010-03-25T14:23:00.001+08:00</published><updated>2010-03-25T14:25:06.064+08:00</updated><title type='text'>自由軟體授權</title><content type='html'>自由軟體授權方式一直是讓許多工程師很困擾的事，OSSF 有提供 &lt;a href="http://swan.iis.sinica.edu.tw/LicenseWizard/index.htm"&gt;License Wizard&lt;/a&gt;（授權精靈）這個網頁工具，可以很直觀的查看大家所關心的項目，例如再次散布程式時是否必須提供原始碼等。&lt;br /&gt;&lt;br /&gt;另外有一個類似的是創用CC(Creative Commons)也提供了相似的&lt;a href="http://creativecommons.org.tw/static/choose/license/licwiz"&gt;創用CC授權精靈&lt;/a&gt;，在發表文章/圖片/影音到網路上時可以使用。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11055785-4571570693036619426?l=blog.gasolin.idv.tw' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.gasolin.idv.tw/feeds/4571570693036619426/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=11055785&amp;postID=4571570693036619426' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11055785/posts/default/4571570693036619426'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11055785/posts/default/4571570693036619426'/><link rel='alternate' type='text/html' href='http://blog.gasolin.idv.tw/2010/03/blog-post_25.html' title='自由軟體授權'/><author><name>gaso lin</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh6.googleusercontent.com/-RYFnmJigzcM/AAAAAAAAAAI/AAAAAAAAB6E/0c6RsEHTN-c/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-11055785.post-3280288632292670652</id><published>2010-03-09T11:19:00.007+08:00</published><updated>2010-04-14T09:15:18.245+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Android'/><title type='text'>自動偵測螢幕大小和解析度</title><content type='html'>在 Android 機器上，螢幕的解析度可以用「螢幕大小」和「螢幕點距」兩個參數來表示。&lt;br /&gt;&lt;br /&gt;&lt;b&gt;一般的方法&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;在 Android 1.6 版以後，可以使用&amp;nbsp;config.screenLayout&amp;nbsp;語句來判斷螢幕大小&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;pre&gt;Configuration config = getResources().getConfiguration();&lt;br /&gt;if((config.screenLayout&amp;amp;Configuration.SCREENLAYOUT_SIZE_MASK) == Configuration.SCREENLAYOUT_SIZE_NORMAL){&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;/blockquote&gt;&lt;br /&gt;UPDATE 2010/4/14: sam 說 「config = new Configuration()」只會回傳預設的Configuration, 而非當前的Configuration. 找了一下最好是使用 getResources().getConfiguration()&lt;br /&gt;&lt;br /&gt;支援的參數與代碼如下&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Configuration.SCREENLAYOUT_SIZE_UNDEFINED 0&lt;/li&gt;&lt;li&gt;Configuration.SCREENLAYOUT_SIZE_SMALL 1&lt;/li&gt;&lt;li&gt;Configuration.SCREENLAYOUT_SIZE_NORMAL 2&lt;/li&gt;&lt;li&gt;Configuration.SCREENLAYOUT_SIZE_LARGE 3&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;要檢查點距，可以使用 DisplayMetrics 語句來判斷螢幕點距&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;pre&gt;DisplayMetrics dm = new DisplayMetrics();&amp;nbsp;&lt;br /&gt;getWindowManager().getDefaultDisplay().getMetrics(dm);&lt;br /&gt;if((dm.densityDpi == dm.DENSITY_HIGH)){&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;/blockquote&gt;支援的參數與代碼如下&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;DENSITY_HIGH 240 (dpi)&lt;/li&gt;&lt;li&gt;DENSITY_MEDIUM 160&lt;/li&gt;&lt;li&gt;DENSITY_LOW 120&lt;/li&gt;&lt;li&gt;DENSITY_DEFAULT 160&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;b&gt;相容 1.5 以下機型&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;根據&lt;a href="http://developer.android.com/resources/dashboard/platform-versions.html"&gt;Android 版本使用圖表&lt;/a&gt;，2010年1月時 Android 1.5 市佔率還是接近 1/3，但是這1/3的機器上並無法使用上面的API。&lt;br /&gt;&lt;br /&gt;&lt;img src="http://chart.apis.google.com/chart?cht=p&amp;amp;chs=400x250&amp;amp;chd=t:0.3,31.0,47.6,0.7,20.4&amp;amp;chl=Android%201.1|Android%201.5|Android%201.6|Android%202.0|Android%202.0.1&amp;amp;chco=c4df9b,6fad0c" /&gt;&lt;br /&gt;&lt;br /&gt;在 1.5 版上，其實仍然可以用 density 語句來判斷螢幕點距比率&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;pre&gt;DisplayMetrics dm = new DisplayMetrics();&amp;nbsp;&lt;br /&gt;getWindowManager().getDefaultDisplay().getMetrics(dm);&lt;br /&gt;if((dm.density &amp;gt;= 1.5)){&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;/blockquote&gt;&lt;br /&gt;density 的值 1 代表一般點距，1.5 代表高點距，0.75代表低點距。要偵測市面上所有的機器是否是高解析度機型，只要運用以上方法，就可以自動偵測出螢幕大小和點距囉。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11055785-3280288632292670652?l=blog.gasolin.idv.tw' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.gasolin.idv.tw/feeds/3280288632292670652/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=11055785&amp;postID=3280288632292670652' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11055785/posts/default/3280288632292670652'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11055785/posts/default/3280288632292670652'/><link rel='alternate' type='text/html' href='http://blog.gasolin.idv.tw/2010/03/blog-post.html' title='自動偵測螢幕大小和解析度'/><author><name>gaso lin</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh6.googleusercontent.com/-RYFnmJigzcM/AAAAAAAAAAI/AAAAAAAAB6E/0c6RsEHTN-c/s512-c/photo.jpg'/></author><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-11055785.post-2277812241690666767</id><published>2010-03-02T17:19:00.000+08:00</published><updated>2010-03-02T17:19:36.211+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Android'/><title type='text'>Android 免費+廣告營利模式</title><content type='html'>一篇經驗分享文章，分享 Android 上使用 AdMob 廣告營利的經驗與注意事項&lt;br /&gt;&lt;a href="http://www.programmer.com.cn/2038/"&gt;2010世界杯，我的Android之旅&lt;/a&gt; 蠻不錯的&lt;br /&gt;&lt;br /&gt;另一篇&lt;a href="http://www.programmer.com.cn/2047/"&gt;移动应用排名与开发者的机会&lt;/a&gt;亦有可觀&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11055785-2277812241690666767?l=blog.gasolin.idv.tw' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.gasolin.idv.tw/feeds/2277812241690666767/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=11055785&amp;postID=2277812241690666767' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11055785/posts/default/2277812241690666767'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11055785/posts/default/2277812241690666767'/><link rel='alternate' type='text/html' href='http://blog.gasolin.idv.tw/2010/03/android.html' title='Android 免費+廣告營利模式'/><author><name>gaso lin</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh6.googleusercontent.com/-RYFnmJigzcM/AAAAAAAAAAI/AAAAAAAAB6E/0c6RsEHTN-c/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-11055785.post-2491415615433268401</id><published>2010-02-21T23:06:00.001+08:00</published><updated>2010-02-21T23:06:18.749+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Android'/><title type='text'>TAT桌面</title><content type='html'>每天使用的桌面需不需要這麼絢麗哩？&lt;br /&gt;&lt;br /&gt;&lt;object width="425" height="344"&gt;&lt;param name="movie" value="http://www.youtube.com/v/bOGmnnGpoqg&amp;hl=zh_TW&amp;fs=1&amp;"&gt;&lt;/param&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;/param&gt;&lt;param name="allowscriptaccess" value="always"&gt;&lt;/param&gt;&lt;embed src="http://www.youtube.com/v/bOGmnnGpoqg&amp;hl=zh_TW&amp;fs=1&amp;" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="425" height="344"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11055785-2491415615433268401?l=blog.gasolin.idv.tw' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.gasolin.idv.tw/feeds/2491415615433268401/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=11055785&amp;postID=2491415615433268401' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11055785/posts/default/2491415615433268401'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11055785/posts/default/2491415615433268401'/><link rel='alternate' type='text/html' href='http://blog.gasolin.idv.tw/2010/02/tat.html' title='TAT桌面'/><author><name>gaso lin</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh6.googleusercontent.com/-RYFnmJigzcM/AAAAAAAAAAI/AAAAAAAAB6E/0c6RsEHTN-c/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-11055785.post-3286170436930782286</id><published>2010-02-05T17:06:00.005+08:00</published><updated>2011-03-26T20:57:12.070+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='python'/><title type='text'>Virtualenv 簡單入門</title><content type='html'>&lt;b&gt;功用&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;使用 &lt;a href="http://pypi.python.org/pypi/virtualenv"&gt;Virtualenv&lt;/a&gt; 可以讓你預先建立一個虛擬環境，在虛擬環境中開發 Python 程式，可以保持 Python path 乾淨，並減少因為機器上需要同時支援不同版本函式庫，造成各函式庫彼此之間相依性的困擾。&lt;br /&gt;&lt;br /&gt;而且使用虛擬環境後，到時要將環境轉移到別台機器上，也減少很多設定上的問題。&lt;br /&gt;&lt;br /&gt;&lt;b&gt;安裝&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;$ easy_install virtualenv&lt;/blockquote&gt;&lt;br /&gt;&lt;b&gt;設定環境&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;$ virtualenv --no-site-packages [dev_place]&lt;/blockquote&gt;&lt;br /&gt;即建立一個名為 [dev_place] 的資料夾（中括號裡的名稱自行填寫取代）。&lt;br /&gt;&lt;br /&gt;&lt;b&gt;切換到虛擬環境&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;進入 [dev_place] 目錄，輸入命令：&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;$ source bin/activate&lt;/blockquote&gt;&lt;br /&gt;若看到路徑提示前多了個（[dev_place]）符號，即表示已經進入了虛擬環境。&lt;br /&gt;&lt;br /&gt;這時我們可以使用預設提供的 easy_install 工具安裝要使用的函式庫、或是安裝各種 Python 程式。&lt;br /&gt;&lt;br /&gt;安裝的函式庫會被放到 [dev_place]/lib/Python[版本]/site-packages/ 目錄中，跟一般的 Python 函式庫配置方式相似。&lt;br /&gt;&lt;br /&gt;&lt;b&gt;離開虛擬環境&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;要離開虛擬環境，只需輸入命令：&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;$ deactivate&lt;/blockquote&gt;&lt;br /&gt;即可回到預設的命令行狀態。&lt;br /&gt;&lt;br /&gt;&lt;b&gt;其他操作&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;如果你的電腦上有裝多個 Python 版本，在下 virtualenv 命令時加上「--python=python[版本] 」當作參數，例如建立2.6版的虛擬環境命令為&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;$ virtualenv --no-site-packages [dev_place] --python=python2.6&lt;br /&gt;&lt;/blockquote&gt;&lt;br /&gt;也可以建立出不同版本的 Python 虛擬環境，讓你可以更容易地在多個 Python 版本間做測試。&lt;br /&gt;&lt;br /&gt;其他使用方法可以輸入「virtualenv --help」參考印出的說明。&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Python3&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;目前 virtualenv 官方還不支援 Python 3.x, 但是有開發中版本可用，可使用Mercural下載來安裝&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;# hg clone https://bitbucket.org/brandon/virtualenv3&lt;br /&gt;# cd virtualenv3&lt;br /&gt;# python3 setup.py install&lt;br /&gt;&lt;/blockquote&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11055785-3286170436930782286?l=blog.gasolin.idv.tw' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.gasolin.idv.tw/feeds/3286170436930782286/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=11055785&amp;postID=3286170436930782286' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11055785/posts/default/3286170436930782286'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11055785/posts/default/3286170436930782286'/><link rel='alternate' type='text/html' href='http://blog.gasolin.idv.tw/2010/02/virtualenv.html' title='Virtualenv 簡單入門'/><author><name>gaso lin</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh6.googleusercontent.com/-RYFnmJigzcM/AAAAAAAAAAI/AAAAAAAAB6E/0c6RsEHTN-c/s512-c/photo.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-11055785.post-3540949344447806299</id><published>2010-02-03T20:57:00.000+08:00</published><updated>2010-02-03T20:57:16.427+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='hg'/><title type='text'>GoogleCode &amp; Mercurial 版本控制介紹</title><content type='html'>今天在&lt;a href="http://www.taipei-gtug.org/"&gt;台北 GTUG&lt;/a&gt; 講「GoogleCode &amp; Mercurial 版本控制介紹」。&lt;br /&gt;&lt;br /&gt;&lt;iframe src="http://docs.google.com/present/embed?id=ajkxs9k6pqxr_10304swnqvgs" frameborder="0" width="410" height="342"&gt;&lt;/iframe&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11055785-3540949344447806299?l=blog.gasolin.idv.tw' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.gasolin.idv.tw/feeds/3540949344447806299/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=11055785&amp;postID=3540949344447806299' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11055785/posts/default/3540949344447806299'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11055785/posts/default/3540949344447806299'/><link rel='alternate' type='text/html' href='http://blog.gasolin.idv.tw/2010/02/googlecode-mercurial.html' title='GoogleCode &amp; Mercurial 版本控制介紹'/><author><name>gaso lin</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh6.googleusercontent.com/-RYFnmJigzcM/AAAAAAAAAAI/AAAAAAAAB6E/0c6RsEHTN-c/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-11055785.post-3997209095399370276</id><published>2010-01-20T09:56:00.003+08:00</published><updated>2010-01-20T10:49:29.039+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='hg'/><title type='text'>分散式版本控制系統大亂鬥</title><content type='html'>讀到 &lt;a href="http://ldn.linuxfoundation.org/article/dvcs-round-one-system-rule-them-all-part-1"&gt;DVCS Round-Up: One System to Rule Them All?&lt;/a&gt;&amp;nbsp;記錄一下。（還有&lt;a href="http://ldn.linuxfoundation.org/article/dvcs-roundup-one-system-rule-them-all-part-2"&gt;Part II&lt;/a&gt;、&lt;a href="http://ldn.linuxfoundation.org/article/dvcs-round-one-system-rule-them-all-part-3"&gt;Part III&lt;/a&gt;）這麼長的文章在一般狀況下實在沒什麼耐心看下去。還好 Mac 上的 Text-To-Speech 功能做的非常好用，把預設的語速調快，並設定快速鍵(我設成 Command+~)後，讀一篇長文其實花不了幾分鐘。&lt;br /&gt;&lt;br /&gt;現在最常用的版本控制系統應該是 svn、hg、git 三種。&lt;br /&gt;svn(Subversion)、hg(Mercurial) 是自己平時會使用的版本控制系統，由於 hg 跟 svn 的命令幾乎相同，轉換時的學習曲線相當平緩，都是相當方便的工具。&lt;a href="http://code.google.com/hosting/"&gt;google code&lt;/a&gt; 剛好也是支援這兩種。git 則是開發 linux 系統時的常用的工具。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11055785-3997209095399370276?l=blog.gasolin.idv.tw' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.gasolin.idv.tw/feeds/3997209095399370276/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=11055785&amp;postID=3997209095399370276' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11055785/posts/default/3997209095399370276'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11055785/posts/default/3997209095399370276'/><link rel='alternate' type='text/html' href='http://blog.gasolin.idv.tw/2010/01/blog-post_20.html' title='分散式版本控制系統大亂鬥'/><author><name>gaso lin</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh6.googleusercontent.com/-RYFnmJigzcM/AAAAAAAAAAI/AAAAAAAAB6E/0c6RsEHTN-c/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-11055785.post-3482037526900140525</id><published>2010-01-11T16:03:00.006+08:00</published><updated>2010-01-11T16:10:21.838+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Android'/><title type='text'>甜點師父</title><content type='html'>&lt;a href="http://1.bp.blogspot.com/_2xGPUuRo1sg/S0rVvu9eF2I/AAAAAAAABS4/LqOW5m0ghFk/s1600-h/image.jpeg" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://1.bp.blogspot.com/_2xGPUuRo1sg/S0rVvu9eF2I/AAAAAAAABS4/LqOW5m0ghFk/s320/image.jpeg" /&gt;&lt;/a&gt;&lt;br /&gt;蛋糕賣完賣焦糖布丁，書一年改了三版，真是太瘋狂啦！&lt;br /&gt;&lt;br /&gt;當初寫作這本書的目標，就是成為學習 Android 基礎的第一本入門書，我想我有做到最好。對我來說，每個讀者當下拿到書可能只會看一遍。如果看到的內容與新版 Android 有所差距，雖然可以很容易歸因於&amp;nbsp;Android 改版太快，但我覺得作者也應該負上責任。&lt;br /&gt;&lt;br /&gt;Android 自 1.6 版後，引入了新的 SDK 工具架構，讓整個版本升級更容易。同時因為升級容易，Android 的改版也變得更快速（現在幾乎是一個月出一個新版本），這讓寫作入門書的挑戰變得更大。這次針對 Android 1.6、2.0 之後所引進開發工具新架構的大改版，讓新讀者入門時更順暢、也讓舊讀者能順利熟悉新版 Android 環境，並有足夠知識去使用各種 2.x 版的後續版本更新。&lt;br /&gt;&lt;br /&gt;這個版本加入 SDK 開發工具介紹，說明 Android 各版本與開發工具之間的關係；解釋了多種解析度機種的區別與開發/測試方式。同時因為書籍範例的完成度很高了，也將各章的範例操作完全獨立開來，每章都附有可直接對照進度的程式碼，更易於新手入門時對照學習。&lt;br /&gt;&lt;br /&gt;期望在新的一年裡，可以騰出手來，好好研究一些進階的技術，繼續與大家分享。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11055785-3482037526900140525?l=blog.gasolin.idv.tw' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.gasolin.idv.tw/feeds/3482037526900140525/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=11055785&amp;postID=3482037526900140525' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11055785/posts/default/3482037526900140525'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11055785/posts/default/3482037526900140525'/><link rel='alternate' type='text/html' href='http://blog.gasolin.idv.tw/2010/01/blog-post.html' title='甜點師父'/><author><name>gaso lin</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh6.googleusercontent.com/-RYFnmJigzcM/AAAAAAAAAAI/AAAAAAAAB6E/0c6RsEHTN-c/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_2xGPUuRo1sg/S0rVvu9eF2I/AAAAAAAABS4/LqOW5m0ghFk/s72-c/image.jpeg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-11055785.post-6275466584040408546</id><published>2010-01-04T23:57:00.002+08:00</published><updated>2010-01-04T23:57:59.858+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='python'/><title type='text'>Invent Your Own Computer Games with Python</title><content type='html'>電子書&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11055785-6275466584040408546?l=blog.gasolin.idv.tw' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='http://inventwithpython.com/' title='Invent Your Own Computer Games with Python'/><link rel='replies' type='application/atom+xml' href='http://blog.gasolin.idv.tw/feeds/6275466584040408546/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=11055785&amp;postID=6275466584040408546' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11055785/posts/default/6275466584040408546'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11055785/posts/default/6275466584040408546'/><link rel='alternate' type='text/html' href='http://blog.gasolin.idv.tw/2010/01/invent-your-own-computer-games-with.html' title='Invent Your Own Computer Games with Python'/><author><name>gaso lin</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh6.googleusercontent.com/-RYFnmJigzcM/AAAAAAAAAAI/AAAAAAAAB6E/0c6RsEHTN-c/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-11055785.post-5111831454514764438</id><published>2009-12-24T19:06:00.002+08:00</published><updated>2010-01-06T11:06:33.196+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Android'/><title type='text'>Nexus One 操作影片</title><content type='html'>&lt;object height="344" width="425"&gt;&lt;param name="movie" value="http://www.youtube.com/v/1CJFdG-MARw&amp;amp;color1=0xb1b1b1&amp;amp;color2=0xcfcfcf&amp;amp;hl=en_US&amp;amp;feature=player_embedded&amp;amp;fs=1"&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;param name="allowScriptAccess" value="always"&gt;&lt;embed src="http://www.youtube.com/v/1CJFdG-MARw&amp;amp;color1=0xb1b1b1&amp;amp;color2=0xcfcfcf&amp;amp;hl=en_US&amp;amp;feature=player_embedded&amp;amp;fs=1" type="application/x-shockwave-flash" allowfullscreen="true" allowscriptaccess="always" height="344" width="425"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;br /&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;看起來確實很順暢&lt;br /&gt;&lt;br /&gt;還有支援 Flash 10 的影片&lt;br /&gt;&lt;br /&gt;&lt;object height="340" width="560"&gt;&lt;param name="movie" value="http://www.youtube.com/v/vlWOocHwcLo&amp;hl=zh_TW&amp;fs=1&amp;"&gt;&lt;/param&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;/param&gt;&lt;param name="allowscriptaccess" value="always"&gt;&lt;/param&gt;&lt;embed src="http://www.youtube.com/v/vlWOocHwcLo&amp;hl=zh_TW&amp;fs=1&amp;" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="560" height="340"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11055785-5111831454514764438?l=blog.gasolin.idv.tw' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.gasolin.idv.tw/feeds/5111831454514764438/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=11055785&amp;postID=5111831454514764438' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11055785/posts/default/5111831454514764438'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11055785/posts/default/5111831454514764438'/><link rel='alternate' type='text/html' href='http://blog.gasolin.idv.tw/2009/12/nexus-one.html' title='Nexus One 操作影片'/><author><name>gaso lin</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh6.googleusercontent.com/-RYFnmJigzcM/AAAAAAAAAAI/AAAAAAAAB6E/0c6RsEHTN-c/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-11055785.post-408343106284003976</id><published>2009-11-20T21:52:00.006+08:00</published><updated>2009-11-20T22:53:39.717+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Android'/><title type='text'>Android 集市大亂鬥</title><content type='html'>&lt;blockquote&gt;是什麼 Market 並不太重要。使用者在哪裡，開發者就在哪裡。&lt;/blockquote&gt;&lt;br /&gt;談到 Android Market，非北美/西歐的開發者都有很多意見，主要焦點都集中在能不能放付費軟體上。這點對各 Android 集市皆然。前陣子開始整理了一個&lt;a href="http://code.google.com/p/androidbmi/wiki/ShanzaiMarket"&gt;已公開的各家 Market 一覽表&lt;/a&gt;。開發者把應用軟體寫出來了，該選擇放在哪些 Market 上頭呢?&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;寫應用軟體的目的&lt;/span&gt;&lt;br /&gt;&lt;p&gt;開發者開發免費應用程式無非是為了以下幾種目的：&lt;br /&gt;&lt;/p&gt; &lt;ol&gt;&lt;li&gt;自己要使用&lt;br /&gt;&lt;/li&gt;&lt;li&gt;增加經驗值(練功)&lt;/li&gt;&lt;li&gt;提高名聲/打知名度&lt;/li&gt;&lt;li&gt;靠廣告賺錢&lt;/li&gt;&lt;li&gt;靠付費版賺錢&lt;/li&gt;&lt;/ol&gt;  &lt;p&gt;在此暫時不分析付費軟體的部份，因為目前還沒有任何一家提供。&lt;/p&gt; &lt;p&gt;這篇只就免費軟體來談。免費軟體該發佈到哪些 Market 上頭呢?&lt;/p&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;殘酷的答案&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;老實說寫了免費軟體，經過思考之後，我只會丟到 Android Market。&lt;p&gt;理由如下:&lt;/p&gt;&lt;p&gt;以前面寫應用軟體的目的來分析：&lt;/p&gt;&lt;ul&gt;&lt;li&gt;自己要使用&lt;/li&gt;&lt;/ul&gt;目前手邊還沒有不預裝 Android Market 的機子。對其他 Market 的需求並不大。&lt;br /&gt;&lt;ul&gt;&lt;li&gt;增加經驗值(練功)&lt;/li&gt;&lt;/ul&gt;放到哪個 Market 上一樣都是練功。Android Market 背後有 G 社備援，提供網頁管理介面、使用者評論等等，雖然不完美，但至少可以和使用者取得互動。目前大部分其他的 Market 並無提供同級的網頁管理介面。有的 Market 還得自己四處申請、填寫一堆文件、截圖，各 Market 審核後還有可能會退你件，弄得跟到奴隸銀行求職一樣。寫免費軟體的開發者難道是為了得到這樣的經驗值？&lt;br /&gt;&lt;ul&gt;&lt;li&gt;提高名聲/打知名度&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;發佈到各家 Market 的下載量，可能還沒有 Android Market 上的 1/100（這是經過美化 n 倍後的數據，請原諒我就是這麼直）&lt;/p&gt;&lt;ul&gt;&lt;li&gt;靠廣告賺錢&lt;/li&gt;&lt;/ul&gt;參考上一點，發到各論壇去，下載數可能也會比在一些 Market 上高。要勤勞到處貼我建議去貼論壇或 PTT。&lt;br /&gt;&lt;br /&gt;以上四點都是 False Impact 的，各 Market 集市的擁有者們看了可能會很沮喪。但其實你們只剩下一個吸引開發者將程式放到自己 Market 的方式：&lt;br /&gt;&lt;ul&gt;&lt;li&gt;靠付費版賺錢&lt;/li&gt;&lt;/ul&gt;各家集市算盤打的精，想拿免費軟體開路，吸引使用者造訪的司馬昭之心再明顯不過。除了電信商推的 Market 之外，其他的 Market 要取得開發者/開發商青睞，自動奉上免費軟體更難。開發者不可能永遠靠佛心來支撐，沒飯吃還是會餓死的。國內哪個 Market 先能收費，對是否能帶動免費軟體進來，衝高軟體數量還是很關鍵的。&lt;br /&gt;&lt;br /&gt;&lt;p&gt;至於國內最後哪些個 Market 會繼續存活，其實只要比較兩件事：&lt;br /&gt;&lt;br /&gt;1. 人潮&lt;br /&gt;2. 哪個 Market 能放付費軟體&lt;br /&gt;&lt;br /&gt;我相信沒有回報，只有付出的關係是無法長久的。&lt;br /&gt;&lt;/p&gt;&lt;p&gt;只要誰先推出拆帳合理的付費機制，相信開發者還是會趨之若騖。&lt;/p&gt;&lt;p&gt;眾家 Market：加油，好嗎？&lt;/p&gt;&lt;span style="font-weight: bold;"&gt;&lt;/span&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/11055785-408343106284003976?l=blog.gasolin.idv.tw' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.gasolin.idv.tw/feeds/408343106284003976/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=11055785&amp;postID=408343106284003976' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11055785/posts/default/408343106284003976'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11055785/posts/default/408343106284003976'/><link rel='alternate' type='text/html' href='http://blog.gasolin.idv.tw/2009/11/android.html' title='Android 集市大亂鬥'/><author><name>gaso lin</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh6.googleusercontent.com/-RYFnmJigzcM/AAAAAAAAAAI/AAAAAAAAB6E/0c6RsEHTN-c/s512-c/photo.jpg'/></author><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-11055785.post-3656879946740262243</id><published>2009-11-20T16:38:00.010+08:00</published><updated>2009-11-26T11:27:23.870+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='chromeos'/><title type='text'>Chrome OS 公開原始碼</title><content type='html'>&lt;object width="425" height="344"&gt;&lt;param name="movie" value="http://www.youtube.com/v/ANMrzw7JFzA&amp;amp;rel=0&amp;amp;color1=0xb1b1b1&amp;amp;color2=0xcfcfcf&amp;amp;feature=player_embedded&amp;amp;fs=1"&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;param name="allowScriptAccess" value="always"&gt;&lt;embed src="http://www.youtube.com/v/ANMrzw7JFzA&amp;amp;rel=0&amp;amp;color1=0xb1b1b1&amp;amp;color2=0xcfcfcf&amp;amp;feature=player_embedded&amp;amp;fs=1" type="application/x-shockwave-flash" allowfullscreen="true" allowscriptaccess="always" width="425" height="344"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;br /&gt;&lt;br /&gt;&lt;div&gt;雖然有一堆文件或介紹影片，但再怎麼口沫橫飛，還是不如看上一段 Chrome OS 實際操作影片來的直覺。&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;總而言之，對專業工作者（繪圖、Coding、玩家）來說，Chrome OS 並不是理想的系統，但看DEMO對一般使用來說，上網聊天種菜儘管夠用了。&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;div&gt;我看到 Chrome OS 的幾個重點在&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Thin Client&lt;/li&gt;&lt;li&gt;2 partitions for the root file system&lt;/li&gt;&lt;li&gt;Web Apps + Local Media Player&lt;/li&gt;&lt;/ul&gt;&lt;div&gt;&lt;b&gt;Thin Client&lt;/b&gt;&lt;/div&gt;&lt;div&gt;Chrome OS 真的把所有 OS 中常見的東西都拿掉了。&lt;/div&gt;&lt;div&gt;桌面基本上就是個 Chrome 瀏覽器。&lt;/div&gt;&lt;div&gt;但也可以切換桌面，切換桌面就是切換帶有不同頁籤的 Chrome 瀏覽器。&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;img src="http://sites.google.com/a/chromium.org/dev/_/rsrc/1258650210340/chromium-os/chromiumos-design-docs/software-architecture/overviewpng" /&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;2 partitions for the root file system&lt;/b&gt;&lt;/div&gt;&lt;div&gt;2個可置換的 root file system 是高階嵌入式系統中常見的配置，有了這樣的備援方式，OS 基本上就很難更新失敗，更新失敗了也可以救回來。&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;Web Apps + Local Media Player&lt;/b&gt;&lt;/div&gt;&lt;div&gt;除了閉著眼都猜的到的 Google Gmail/Doc 之外，也內建了 Notes/Tasks Panel。玩遊戲靠 Flash，播SD 卡/線上的 MP3/影片則可以呼叫系統提供的播放工具。有 Local Media Player 至少沒連網路時也不會太糟。&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;對了，登入時一定得用 Google 帳號密碼，登入後使用各種 Google 服務時就不用再登入一次。這種作法有沒必要，可能得再深入點實際使用過才知道。如果我是詐騙集團，現在就趕緊來釋出一版 Chrome OS 下載版，相信可以偷到很多 Gmail 帳號 ;)&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;如果要寫 Chrome OS 上層的應用程式，只能用 HTML5、Javascript、Flash 這些工具，來撰寫網站或是 Chrome Extension。&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;img src="http://sites.google.com/a/chromium.org/dev/_/rsrc/1258650212610/chromium-os/chromiumos-design-docs/software-architecture/chromepng" /&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;a href="http://sites.google.com/a/chromium.org/dev/chromium-os/chromiumos-design-docs"&gt;Chromium&lt;/a&gt; 是 Chrome OS 跟 Chrome 的開源專案。&lt;/div&gt;&lt;div&gt;目前唯一在這個 OS 上開發程式的方式，是透過類似 Firefox Extension 的瀏覽器外掛套件方式達成。&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;一些連結實在是不太好找，順便列在此:&lt;/div&gt;&lt;div&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://sites.google.com/a/chromium.org/dev/chromium-os/discussion-groups"&gt;Chrome OS 相關的討論群組&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://code.google.com/chrome/extensions/index.html"&gt;Chrome Extension 開發文件&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11055785-3656879946740262243?l=blog.gasolin.idv.tw' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.gasolin.idv.tw/feeds/3656879946740262243/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=11055785&amp;postID=3656879946740262243' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11055785/posts/default/3656879946740262243'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11055785/posts/default/3656879946740262243'/><link rel='alternate' type='text/html' href='http://blog.gasolin.idv.tw/2009/11/chrome-os.html' title='Chrome OS 公開原始碼'/><author><name>gaso lin</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh6.googleusercontent.com/-RYFnmJigzcM/AAAAAAAAAAI/AAAAAAAAB6E/0c6RsEHTN-c/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-11055785.post-8577229500878029009</id><published>2009-11-18T22:53:00.003+08:00</published><updated>2011-07-10T17:35:58.899+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Android'/><title type='text'>AttachEmail: 從SD卡中加檔案到Email附件</title><content type='html'>(不知道為什麼系統沒直接提供這功能)&lt;br /&gt;&lt;br /&gt;昨晚上花了幾個鐘頭做了一版出來。功能非常單一：主要就是從檔案列表裡選擇任一檔案，而所有檔案左側都會有一個迴紋針符號，&lt;br /&gt;只要點選項目，就可以把檔案當做 Email 附件，這樣以後SD卡就不用拔來拔去了。&lt;br /&gt;&lt;br /&gt;大家有需要可以到 Android Market 搜尋 AttachEmail 下載。&lt;br /&gt;&lt;br /&gt;Update 2011/7/10:&lt;br /&gt;&lt;br /&gt;新版本的&lt;a href="https://market.android.com/details?id=com.gasolin.android.attachemail"&gt;AttachEmail&lt;/a&gt;&amp;nbsp;(&amp;gt;1.5.2)除了可以選擇任意附檔之外，還可以從GMail儲存任意附檔到SD卡中。&lt;br /&gt;&lt;a href="https://market.android.com/details?id=com.gasolin.android.attachemail"&gt;AttachEmail Pro&lt;/a&gt;版本還支援直接從GMail附加檔案，同時可以設定在AttachEmail中預設顯示的目錄，讓「處理Email附檔」這件事變得更方便。&lt;br /&gt;&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11055785-8577229500878029009?l=blog.gasolin.idv.tw' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.gasolin.idv.tw/feeds/8577229500878029009/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=11055785&amp;postID=8577229500878029009' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11055785/posts/default/8577229500878029009'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11055785/posts/default/8577229500878029009'/><link rel='alternate' type='text/html' href='http://blog.gasolin.idv.tw/2009/11/attachemail-sdemail.html' title='AttachEmail: 從SD卡中加檔案到Email附件'/><author><name>gaso lin</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh6.googleusercontent.com/-RYFnmJigzcM/AAAAAAAAAAI/AAAAAAAAB6E/0c6RsEHTN-c/s512-c/photo.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-11055785.post-3094925024825733234</id><published>2009-11-10T15:29:00.003+08:00</published><updated>2009-11-10T15:34:50.991+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='NS2'/><category scheme='http://www.blogger.com/atom/ns#' term='NS3'/><category scheme='http://www.blogger.com/atom/ns#' term='OMNET++'/><category scheme='http://www.blogger.com/atom/ns#' term='network'/><title type='text'>網路模擬器大亂鬥</title><content type='html'>網路模擬界的 M01-like 開箱文 &lt;a href="http://www.cs.wustl.edu/~jain/cse567-08/ftp/simtools/index.html"&gt;A Survey of Network Simulation Tools: Current Status and Future Developments&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://searun.javaeye.com/blog/433681"&gt;對岸網友的心得&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11055785-3094925024825733234?l=blog.gasolin.idv.tw' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.gasolin.idv.tw/feeds/3094925024825733234/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=11055785&amp;postID=3094925024825733234' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11055785/posts/default/3094925024825733234'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11055785/posts/default/3094925024825733234'/><link rel='alternate' type='text/html' href='http://blog.gasolin.idv.tw/2009/11/blog-post_10.html' title='網路模擬器大亂鬥'/><author><name>gaso lin</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh6.googleusercontent.com/-RYFnmJigzcM/AAAAAAAAAAI/AAAAAAAAB6E/0c6RsEHTN-c/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-11055785.post-6122714993636940817</id><published>2009-11-07T01:30:00.002+08:00</published><updated>2009-11-07T01:34:37.112+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Android'/><title type='text'>簡體版出版</title><content type='html'>&lt;a href="http://www.anobii.com/books/Google_Android开发入门指南/9787115213945/0160f479e767f835fd/" title="More about Google Android开发入门指南"&gt;&lt;img src="http://image.anobii.com/anobi/image_book.php?type=4&amp;item_id=0160f479e767f835fd&amp;time=1257526138" title="More about Google Android开发入门指南" alt="More about Google Android开发入门指南" style="padding: 5px;" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;終於簡體版也出版了。&lt;br /&gt;&lt;br /&gt;對應的是繁體的第二版（Android 1.5）。定價 45 RMB，換算回來還不到 200 NT，真是便宜呀。&lt;br /&gt;&lt;br /&gt;希望大陸的朋友們也會喜歡囉 :)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11055785-6122714993636940817?l=blog.gasolin.idv.tw' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.gasolin.idv.tw/feeds/6122714993636940817/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=11055785&amp;postID=6122714993636940817' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11055785/posts/default/6122714993636940817'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11055785/posts/default/6122714993636940817'/><link rel='alternate' type='text/html' href='http://blog.gasolin.idv.tw/2009/11/blog-post.html' title='簡體版出版'/><author><name>gaso lin</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh6.googleusercontent.com/-RYFnmJigzcM/AAAAAAAAAAI/AAAAAAAAB6E/0c6RsEHTN-c/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-11055785.post-8746174743709006895</id><published>2009-10-28T06:00:00.003+08:00</published><updated>2009-10-28T06:17:49.646+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Android'/><title type='text'>Eclair (Android 2.0) 發佈</title><content type='html'>&lt;object width="425" height="344"&gt;&lt;param name="movie" value="http://www.youtube.com/v/opZ69P-0Jbc&amp;color1=0xb1b1b1&amp;color2=0xcfcfcf&amp;hl=en&amp;feature=player_embedded&amp;fs=1"&gt;&lt;/param&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;/param&gt;&lt;param name="allowScriptAccess" value="always"&gt;&lt;/param&gt;&lt;embed src="http://www.youtube.com/v/opZ69P-0Jbc&amp;color1=0xb1b1b1&amp;color2=0xcfcfcf&amp;hl=en&amp;feature=player_embedded&amp;fs=1" type="application/x-shockwave-flash" allowfullscreen="true" allowScriptAccess="always" width="425" height="344"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;br /&gt;&lt;br /&gt;想不到才過了一個月，Android 2.0 這麼快就出來了。&lt;br /&gt;對開發者來說，主要的變化是開放了原本的一些 internal API，包含 Bluetooth、多點（至多3點）觸控(MotionEvent)、AccountManager、Sync Adapter、Dock（底座）、並強化相機 API、瀏覽器支援 HTML5、支援更多種解析度機器...等。&lt;br /&gt;&lt;br /&gt;除了大家期待已久的藍芽與多點觸控，開放 AccountManager、Sync Adapter、Dock這些 API 表示 Android 系統已經準備好讓開發者們能創造與 Google 以外的網路服務、與其他設備更加緊密結合的應用程式。真是很期待開發者們能怎麼運用這個強大的系統 :)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11055785-8746174743709006895?l=blog.gasolin.idv.tw' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.gasolin.idv.tw/feeds/8746174743709006895/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=11055785&amp;postID=8746174743709006895' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11055785/posts/default/8746174743709006895'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11055785/posts/default/8746174743709006895'/><link rel='alternate' type='text/html' href='http://blog.gasolin.idv.tw/2009/10/eclair-android-20.html' title='Eclair (Android 2.0) 發佈'/><author><name>gaso lin</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh6.googleusercontent.com/-RYFnmJigzcM/AAAAAAAAAAI/AAAAAAAAB6E/0c6RsEHTN-c/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-11055785.post-7582704015712946329</id><published>2009-10-19T09:23:00.009+08:00</published><updated>2009-11-18T09:34:36.350+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Android'/><title type='text'>支援不同解析度的 Android Market</title><content type='html'>本來市面上 Android 相關機種一律都是 480*320 解析度，&lt;br /&gt;在 &lt;a href="http://developer.android.com/intl/en/sdk/android-1.6.html"&gt;Android 1.6&lt;/a&gt; 發佈後，也正式發售支援了其他使用不同解析度的機種，例如 QVGA(320*240) 或 WVGA(800*480)。&lt;br /&gt;&lt;br /&gt;當然在不同的解析度下，畫面顯示上多少有些不同。&lt;br /&gt;為了避免使用者裝到不適合解析度的程式而引發使用上的混亂，Android 1.6 在 AndroidManifest 清單中引入了「supports-screens」宣告。&lt;br /&gt;&lt;br /&gt;一般來說要支援各種解析度，可以在編譯前先將編譯 Target 選為 1.6（專案名&gt;右鍵&gt;Properties&gt;Android&gt;Android 1.6），並在 AndroidManifest 清單中加入如下設定：&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;br /&gt; [supports-screens &lt;br /&gt;     android:largeScreens="true" &lt;br /&gt;     android:normalScreens="true" &lt;br /&gt;     android:smallScreens="true" &lt;br /&gt;     android:anyDensity="false"/]&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;「normalScreens」代表的是一般解析度（如 G1, Hero），「smallScreens」代表的是較低解析度（如 Tatoo）。&lt;br /&gt;&lt;br /&gt;現在將程式發佈到 Android Market 時若沒做以上設定，你寫的程式將不會顯示在 QVGA/WVGA 機器的 Market 中。&lt;/supports-screens&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;那麼其他使用奇怪解析度的設備哩？（例如最近發表的某台 WQVGA 機器...）反正上面也沒有 Android Market, 就留給打算支援這些設備的開發者多傷一份腦筋啦.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;PS: 將 Target 設為 1.6 跟在 AndroidManifest 清單中設定 minSdkVersion 最低相容版本並不衝突，只要 minSdkVersion 維持不變，低於 1.6 版的機器還是可以使用你的程式。&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;update: 事實上「smallScreens」代表的是小螢幕，「normalScreens」是一般螢幕，「largeScreens」當然是大螢幕。一般三者的分界點大概在3吋跟4吋。所以 Tattoo (2.8") 被歸在「smallScreens」範疇。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11055785-7582704015712946329?l=blog.gasolin.idv.tw' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.gasolin.idv.tw/feeds/7582704015712946329/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=11055785&amp;postID=7582704015712946329' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11055785/posts/default/7582704015712946329'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11055785/posts/default/7582704015712946329'/><link rel='alternate' type='text/html' href='http://blog.gasolin.idv.tw/2009/10/android-market.html' title='支援不同解析度的 Android Market'/><author><name>gaso lin</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh6.googleusercontent.com/-RYFnmJigzcM/AAAAAAAAAAI/AAAAAAAAB6E/0c6RsEHTN-c/s512-c/photo.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-11055785.post-6123937766408732895</id><published>2009-09-22T16:24:00.001+08:00</published><updated>2009-09-22T16:26:43.950+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Android'/><title type='text'>OCR 應用</title><content type='html'>&lt;object width="425" height="344"&gt;&lt;param name="movie" value="http://www.youtube.com/v/-73jqb0EMA4&amp;amp;rel=0&amp;amp;color1=0xb1b1b1&amp;amp;color2=0xcfcfcf&amp;amp;hl=en&amp;amp;feature=player_embedded&amp;amp;fs=1"&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;param name="allowScriptAccess" value="always"&gt;&lt;embed src="http://www.youtube.com/v/-73jqb0EMA4&amp;amp;rel=0&amp;amp;color1=0xb1b1b1&amp;amp;color2=0xcfcfcf&amp;amp;hl=en&amp;amp;feature=player_embedded&amp;amp;fs=1" type="application/x-shockwave-flash" allowfullscreen="true" allowscriptaccess="always" width="425" height="344"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.bitquill.net/trac/wiki/Android/OCR"&gt;WordSnap OCR&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;object width="560" height="340"&gt;&lt;param name="movie" value="http://www.youtube.com/v/1gj0GWWaSOg&amp;hl=zh_TW&amp;fs=1&amp;"&gt;&lt;/param&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;/param&gt;&lt;param name="allowscriptaccess" value="always"&gt;&lt;/param&gt;&lt;embed src="http://www.youtube.com/v/1gj0GWWaSOg&amp;hl=zh_TW&amp;fs=1&amp;" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="560" height="340"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.itwizard.ro/"&gt;Mezzofanti &lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11055785-6123937766408732895?l=blog.gasolin.idv.tw' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.gasolin.idv.tw/feeds/6123937766408732895/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=11055785&amp;postID=6123937766408732895' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11055785/posts/default/6123937766408732895'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11055785/posts/default/6123937766408732895'/><link rel='alternate' type='text/html' href='http://blog.gasolin.idv.tw/2009/09/ocr.html' title='OCR 應用'/><author><name>gaso lin</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh6.googleusercontent.com/-RYFnmJigzcM/AAAAAAAAAAI/AAAAAAAAB6E/0c6RsEHTN-c/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-11055785.post-6180667875217961376</id><published>2009-09-16T11:26:00.003+08:00</published><updated>2009-09-16T14:16:23.423+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Android'/><title type='text'>Donut (Android 1.6) 發佈</title><content type='html'>&lt;a href="http://developer.android.com/"&gt;Donut (Android 1.6) 發佈了&lt;/a&gt;，補完了 Android 1.x 應該有的功能，支援更多的機器。&lt;br /&gt;&lt;br /&gt;&lt;object width="425" height="344"&gt;&lt;param name="movie" value="http://www.youtube.com/v/MBRFkLKRwFw&amp;color1=0x3a3a3a&amp;color2=0x999999&amp;hl=en&amp;feature=player_embedded&amp;fs=1"&gt;&lt;/param&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;/param&gt;&lt;param name="allowScriptAccess" value="always"&gt;&lt;/param&gt;&lt;embed src="http://www.youtube.com/v/MBRFkLKRwFw&amp;color1=0x3a3a3a&amp;color2=0x999999&amp;hl=en&amp;feature=player_embedded&amp;fs=1" type="application/x-shockwave-flash" allowfullscreen="true" allowScriptAccess="always" width="425" height="344"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;br /&gt;&lt;br /&gt;隨著 Eclipse 3.5、Android 1.6 跟 ADT 0.9.3 推出，到底值不值得再次改版&lt;a href="http://www.books.com.tw/exep/assp.php/gasolin/exep/prod/booksfile.php?item=0010442861"&gt;我寫的入門書&lt;/a&gt;呢? &lt;br /&gt;&lt;br /&gt;如我在第二版序中所言的，Android 改版相當快，所有進階的內容很有可能變動，唯有&lt;a href="http://developer.android.com/intl/de/sdk/api_diff/4/changes.html"&gt;基本入門所需的知識並沒有改變太多&lt;/a&gt;。&lt;br /&gt;因此沒有意外的話，應該會等到 Android 2.0 之後才考慮再改版。&lt;br /&gt;&lt;br /&gt;1.6 新版本相關的新內容將先加在&lt;a href="http://androidbmi.googlecode.com/"&gt;電子書版&lt;/a&gt;中。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11055785-6180667875217961376?l=blog.gasolin.idv.tw' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.gasolin.idv.tw/feeds/6180667875217961376/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=11055785&amp;postID=6180667875217961376' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11055785/posts/default/6180667875217961376'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11055785/posts/default/6180667875217961376'/><link rel='alternate' type='text/html' href='http://blog.gasolin.idv.tw/2009/09/donut-android-16.html' title='Donut (Android 1.6) 發佈'/><author><name>gaso lin</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh6.googleusercontent.com/-RYFnmJigzcM/AAAAAAAAAAI/AAAAAAAAB6E/0c6RsEHTN-c/s512-c/photo.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-11055785.post-3689845378284908617</id><published>2009-09-06T14:25:00.002+08:00</published><updated>2009-09-06T14:28:46.803+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Android'/><title type='text'>樣板表示法</title><content type='html'>在做講解投影片時自然而然寫出&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;import package&lt;br /&gt;&lt;br /&gt;public class ${Name} extends Activity{&lt;br /&gt;    ...&lt;br /&gt;    public void onCreate(...){&lt;br /&gt;      ...&lt;br /&gt;      setContentView(${layout})&lt;br /&gt;    }&lt;br /&gt;}&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;這樣的 python Template 表示法, 抽象化有時確實有助於理解。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11055785-3689845378284908617?l=blog.gasolin.idv.tw' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.gasolin.idv.tw/feeds/3689845378284908617/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=11055785&amp;postID=3689845378284908617' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11055785/posts/default/3689845378284908617'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11055785/posts/default/3689845378284908617'/><link rel='alternate' type='text/html' href='http://blog.gasolin.idv.tw/2009/09/blog-post_06.html' title='樣板表示法'/><author><name>gaso lin</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh6.googleusercontent.com/-RYFnmJigzcM/AAAAAAAAAAI/AAAAAAAAB6E/0c6RsEHTN-c/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-11055785.post-2314543451471356901</id><published>2009-09-04T17:01:00.001+08:00</published><updated>2009-09-04T17:06:13.251+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='fun'/><title type='text'>打鼓</title><content type='html'>&lt;object width="425" height="344"&gt;&lt;param name="movie" value="http://www.youtube.com/v/ON1cxNU0K8w&amp;hl=zh_TW&amp;fs=1&amp;"&gt;&lt;/param&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;/param&gt;&lt;param name="allowscriptaccess" value="always"&gt;&lt;/param&gt;&lt;embed src="http://www.youtube.com/v/ON1cxNU0K8w&amp;hl=zh_TW&amp;fs=1&amp;" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="425" height="344"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;object width="425" height="344"&gt;&lt;param name="movie" value="http://www.youtube.com/v/51xPnN91mmM&amp;hl=zh_TW&amp;fs=1&amp;"&gt;&lt;/param&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;/param&gt;&lt;param name="allowscriptaccess" value="always"&gt;&lt;/param&gt;&lt;embed src="http://www.youtube.com/v/51xPnN91mmM&amp;hl=zh_TW&amp;fs=1&amp;" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="425" height="344"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;br /&gt;&lt;br /&gt;&lt;object width="560" height="340"&gt;&lt;param name="movie" value="http://www.youtube.com/v/UsnJbIgl_qc&amp;hl=zh_TW&amp;fs=1&amp;"&gt;&lt;/param&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;/param&gt;&lt;param name="allowscriptaccess" value="always"&gt;&lt;/param&gt;&lt;embed src="http://www.youtube.com/v/UsnJbIgl_qc&amp;hl=zh_TW&amp;fs=1&amp;" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="560" height="340"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11055785-2314543451471356901?l=blog.gasolin.idv.tw' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.gasolin.idv.tw/feeds/2314543451471356901/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=11055785&amp;postID=2314543451471356901' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11055785/posts/default/2314543451471356901'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11055785/posts/default/2314543451471356901'/><link rel='alternate' type='text/html' href='http://blog.gasolin.idv.tw/2009/09/blog-post_04.html' title='打鼓'/><author><name>gaso lin</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh6.googleusercontent.com/-RYFnmJigzcM/AAAAAAAAAAI/AAAAAAAAB6E/0c6RsEHTN-c/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-11055785.post-4036695028350535083</id><published>2009-09-04T07:08:00.001+08:00</published><updated>2009-09-04T07:10:01.206+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Android'/><title type='text'>Market</title><content type='html'>新版的 Market 介面改了不少, 看起來是有往好的方向走&lt;br /&gt;&lt;br /&gt;&lt;object width="425" height="344"&gt;&lt;param name="movie" value="http://www.youtube.com/v/8ma9Xh67Eyo&amp;color1=0x3a3a3a&amp;color2=0x999999&amp;hl=en&amp;feature=player_embedded&amp;fs=1"&gt;&lt;/param&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;/param&gt;&lt;param name="allowScriptAccess" value="always"&gt;&lt;/param&gt;&lt;embed src="http://www.youtube.com/v/8ma9Xh67Eyo&amp;color1=0x3a3a3a&amp;color2=0x999999&amp;hl=en&amp;feature=player_embedded&amp;fs=1" type="application/x-shockwave-flash" allowfullscreen="true" allowScriptAccess="always" width="425" height="344"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11055785-4036695028350535083?l=blog.gasolin.idv.tw' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.gasolin.idv.tw/feeds/4036695028350535083/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=11055785&amp;postID=4036695028350535083' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11055785/posts/default/4036695028350535083'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11055785/posts/default/4036695028350535083'/><link rel='alternate' type='text/html' href='http://blog.gasolin.idv.tw/2009/09/market.html' title='Market'/><author><name>gaso lin</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh6.googleusercontent.com/-RYFnmJigzcM/AAAAAAAAAAI/AAAAAAAAB6E/0c6RsEHTN-c/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-11055785.post-4994407879877750091</id><published>2009-09-03T14:59:00.002+08:00</published><updated>2009-09-03T15:02:25.889+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Android'/><title type='text'>麵包師父</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://sites.google.com/site/gasodroid/_/rsrc/1249885258323/Home/androidentry2/droid2.jpeg"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 200px; height: 280px;" src="http://sites.google.com/site/gasodroid/_/rsrc/1249885258323/Home/androidentry2/droid2.jpeg" border="0" alt="" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;看到第二版書的封面，就知這是筆者轉職成為麵包師父後的第一作（誤）&lt;br /&gt;&lt;br /&gt;「Google！Android 手機應用程式設計入門 2ed」 這本書主要是為了因為想開發 Android 而學 Java 的人寫的。&lt;br /&gt;最適合的讀者是有其他語言開發經驗，但對 Java 還不太熟悉的讀者。&lt;br /&gt;&lt;br /&gt;本書第二版上市時間跟前一版只差了 5 個月，主要是因應 Android 1.5 版釋出， &lt;br /&gt;加上 Android 開發工具 ADT 大改版到 0.9 而大量改寫，&lt;br /&gt;修正許多前一版的 Bug 跟範例程式碼，把整個學習流程弄的更順暢，&lt;br /&gt;並加入新章節、新圖例(超過 60 張)、實用小技巧。&lt;br /&gt;（當然出版社肯讓我這麼短時間就改版，也是因為賣得還算不錯啦）&lt;br /&gt;&lt;br /&gt;買過本書第一版的您不見得需要買第二版，但是本書第二版當然更適合拿來介紹給其他想入門 Android 的朋友。&lt;br /&gt;&lt;br /&gt;用杯子蛋糕（CupCake）當封面是我的惡趣味，以配合 Android 目前版本的代號，希望能在賞玩本書時帶來樂趣。&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.books.com.tw/exep/assp.php/gasolin/exep/prod/booksfile.php?item=0010442861"&gt;博客來連結&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11055785-4994407879877750091?l=blog.gasolin.idv.tw' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.gasolin.idv.tw/feeds/4994407879877750091/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=11055785&amp;postID=4994407879877750091' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11055785/posts/default/4994407879877750091'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11055785/posts/default/4994407879877750091'/><link rel='alternate' type='text/html' href='http://blog.gasolin.idv.tw/2009/09/blog-post.html' title='麵包師父'/><author><name>gaso lin</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh6.googleusercontent.com/-RYFnmJigzcM/AAAAAAAAAAI/AAAAAAAAB6E/0c6RsEHTN-c/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-11055785.post-3495831997262829801</id><published>2009-09-01T14:54:00.001+08:00</published><updated>2009-09-01T14:58:42.766+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='fun'/><title type='text'>Cool Interactive</title><content type='html'>&lt;object width="560" height="340"&gt;&lt;param name="movie" value="http://www.youtube.com/v/mUdDhWfpqxg&amp;amp;hl=zh_TW&amp;amp;fs=1&amp;amp;"&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;param name="allowscriptaccess" value="always"&gt;&lt;embed src="http://www.youtube.com/v/mUdDhWfpqxg&amp;amp;hl=zh_TW&amp;amp;fs=1&amp;amp;" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="560" height="340"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;object width="425" height="344"&gt;&lt;param name="movie" value="http://www.youtube.com/v/0H1zrLZwPjQ&amp;amp;hl=zh_TW&amp;amp;fs=1&amp;amp;"&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;param name="allowscriptaccess" value="always"&gt;&lt;embed src="http://www.youtube.com/v/0H1zrLZwPjQ&amp;amp;hl=zh_TW&amp;amp;fs=1&amp;amp;" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="425" height="344"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11055785-3495831997262829801?l=blog.gasolin.idv.tw' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.gasolin.idv.tw/feeds/3495831997262829801/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=11055785&amp;postID=3495831997262829801' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11055785/posts/default/3495831997262829801'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11055785/posts/default/3495831997262829801'/><link rel='alternate' type='text/html' href='http://blog.gasolin.idv.tw/2009/09/cool-interactive.html' title='Cool Interactive'/><author><name>gaso lin</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh6.googleusercontent.com/-RYFnmJigzcM/AAAAAAAAAAI/AAAAAAAAB6E/0c6RsEHTN-c/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-11055785.post-1205845560420109203</id><published>2009-08-28T18:36:00.002+08:00</published><updated>2009-08-28T18:37:46.518+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Android'/><title type='text'>NoCheatCalls（NCC）可疑電話通報</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://lh4.ggpht.com/_2xGPUuRo1sg/SpH9qERCd5I/AAAAAAAABCQ/tE6R8Y4XupU/s800/%E5%9C%96%E7%89%87%205.png"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 321px; height: 191px;" src="http://lh4.ggpht.com/_2xGPUuRo1sg/SpH9qERCd5I/AAAAAAAABCQ/tE6R8Y4XupU/s800/%E5%9C%96%E7%89%87%205.png" border="0" alt="" /&gt;&lt;/a&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;a href="http://android.cool3c.com/article/11595"&gt;寫了篇文章&lt;/a&gt;介紹前段時間寫的防詐騙公益程式。&lt;br /&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11055785-1205845560420109203?l=blog.gasolin.idv.tw' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.gasolin.idv.tw/feeds/1205845560420109203/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=11055785&amp;postID=1205845560420109203' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11055785/posts/default/1205845560420109203'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11055785/posts/default/1205845560420109203'/><link rel='alternate' type='text/html' href='http://blog.gasolin.idv.tw/2009/08/nocheatcallsncc.html' title='NoCheatCalls（NCC）可疑電話通報'/><author><name>gaso lin</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh6.googleusercontent.com/-RYFnmJigzcM/AAAAAAAAAAI/AAAAAAAAB6E/0c6RsEHTN-c/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh4.ggpht.com/_2xGPUuRo1sg/SpH9qERCd5I/AAAAAAAABCQ/tE6R8Y4XupU/s72-c/%E5%9C%96%E7%89%87%205.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-11055785.post-6615737792875499433</id><published>2009-08-16T16:24:00.001+08:00</published><updated>2009-08-16T16:25:54.426+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='zhpy'/><category scheme='http://www.blogger.com/atom/ns#' term='python'/><category scheme='http://www.blogger.com/atom/ns#' term='Android'/><title type='text'>Introduction of Android Scripting Environment</title><content type='html'>&lt;iframe src="http://docs.google.com/present/embed?id=ajkxs9k6pqxr_938ffvzq8n2" frameborder="0" width="410" height="342"&gt;&lt;/iframe&gt;&lt;br /&gt;&lt;br /&gt;On Coscup 2009&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11055785-6615737792875499433?l=blog.gasolin.idv.tw' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.gasolin.idv.tw/feeds/6615737792875499433/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=11055785&amp;postID=6615737792875499433' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11055785/posts/default/6615737792875499433'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11055785/posts/default/6615737792875499433'/><link rel='alternate' type='text/html' href='http://blog.gasolin.idv.tw/2009/08/introduction-of-android-scripting.html' title='Introduction of Android Scripting Environment'/><author><name>gaso lin</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh6.googleusercontent.com/-RYFnmJigzcM/AAAAAAAAAAI/AAAAAAAAB6E/0c6RsEHTN-c/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-11055785.post-409202940202255598</id><published>2009-08-15T11:02:00.000+08:00</published><updated>2009-08-15T11:03:02.717+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='python'/><title type='text'>Google Python Style Guide</title><content type='html'>&lt;a href="http://google-styleguide.googlecode.com/svn/trunk/pyguide.html"&gt;http://google-styleguide.googlecode.com/svn/trunk/pyguide.html&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11055785-409202940202255598?l=blog.gasolin.idv.tw' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.gasolin.idv.tw/feeds/409202940202255598/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=11055785&amp;postID=409202940202255598' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11055785/posts/default/409202940202255598'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11055785/posts/default/409202940202255598'/><link rel='alternate' type='text/html' href='http://blog.gasolin.idv.tw/2009/08/google-python-style-guide.html' title='Google Python Style Guide'/><author><name>gaso lin</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh6.googleusercontent.com/-RYFnmJigzcM/AAAAAAAAAAI/AAAAAAAAB6E/0c6RsEHTN-c/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-11055785.post-906819909152352183</id><published>2009-08-13T20:06:00.004+08:00</published><updated>2009-08-13T21:05:08.511+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='python'/><category scheme='http://www.blogger.com/atom/ns#' term='Android'/><title type='text'>Compiling Python for Android Scripting Environment</title><content type='html'>&lt;div&gt;Android Scripting Environment (ASE) is the scripting language (BeanShell, Python, Lua, Ruby) environment for Android Operating System.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;This article is about how to compile python for ASE.&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;The following instructions are according to the discussion from &lt;a href="http://groups.google.com/group/android-scripting/browse_thread/thread/6a2fcc058fc7a5b1"&gt;ASE group&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Compile python&lt;/span&gt;&lt;b&gt; for host&lt;br /&gt;&lt;/b&gt;To compile python for ASE, you need a Linux machine, then here goes:&lt;br /&gt;&lt;br /&gt;Download proper python source distribution (according to the python version in ase/python/src) from &lt;a href="http://www.python.org/"&gt;http://www.python.org/&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Extract the source and run the following command:&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;$ cd Python-2.6.2&lt;br /&gt;$ ./configure&lt;br /&gt;$ make&lt;br /&gt;&lt;/blockquote&gt;&lt;br /&gt;Then you have a clean python compiled for your PC (called host system).&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Compile python&lt;/span&gt;&lt;b&gt; for target&lt;br /&gt;&lt;/b&gt;Now we can go to compile python for your Android device (called target system).&lt;br /&gt;&lt;br /&gt;Copy the python executable file and the pgen file into ase/python/src folder&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;$ cd ~&lt;br /&gt;$ cp Python-2.6.2/python ase/python/src/hostpython&lt;br /&gt;$ cp Python-2.6.2/Parser/pgen ase/python/src/Parser/hostpgen&lt;br /&gt;&lt;/blockquote&gt;&lt;br /&gt;Then we should prepare the compile tools.&lt;br /&gt;&lt;br /&gt;First checkout the android source from &lt;a href="http://source.android.com/"&gt;http://source.android.com/&lt;/a&gt; (name as mydroid), we'll use the cross compile gcc in it's "prebuilt/linux-x86/toolchain/arm-eabi-4.2.1/bin" folder. Another tool is located in "ase/tools/agcc".&lt;br /&gt;&lt;br /&gt;Edit .bashrc , add a line to include those compile tools:&lt;br /&gt;&lt;blockquote&gt;export PATH=${PATH}:~/mydroid/prebuilt/linux&lt;br /&gt;-x86/toolchain/arm-eabi-4.2.1/bin:~/ase/tools/agcc&lt;br /&gt;&lt;/blockquote&gt;&lt;br /&gt;Then start compile python for ASE.&lt;br /&gt;&lt;br /&gt;$ cd ase/python&lt;br /&gt;$ ./build.py&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Done!&lt;br /&gt;&lt;/b&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11055785-906819909152352183?l=blog.gasolin.idv.tw' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.gasolin.idv.tw/feeds/906819909152352183/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=11055785&amp;postID=906819909152352183' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11055785/posts/default/906819909152352183'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11055785/posts/default/906819909152352183'/><link rel='alternate' type='text/html' href='http://blog.gasolin.idv.tw/2009/08/compiling-python-for-android-scripting.html' title='Compiling Python for Android Scripting Environment'/><author><name>gaso lin</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh6.googleusercontent.com/-RYFnmJigzcM/AAAAAAAAAAI/AAAAAAAAB6E/0c6RsEHTN-c/s512-c/photo.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-11055785.post-6527120004647735472</id><published>2009-08-05T17:29:00.002+08:00</published><updated>2009-08-05T17:51:55.971+08:00</updated><title type='text'>AppStore Rules</title><content type='html'>&lt;ul&gt;&lt;li&gt;&lt;a href="http://www.mobileorchard.com/avoiding-iphone-app-rejection-from-apple/"&gt;Avoiding iPhone App Rejection From Apple&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;div&gt;不管在哪個環境下開發給使用者用的應用程式都得先自我審查，過了自己這一關再把程式丟出去。&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11055785-6527120004647735472?l=blog.gasolin.idv.tw' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.gasolin.idv.tw/feeds/6527120004647735472/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=11055785&amp;postID=6527120004647735472' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11055785/posts/default/6527120004647735472'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11055785/posts/default/6527120004647735472'/><link rel='alternate' type='text/html' href='http://blog.gasolin.idv.tw/2009/08/appstore-rules.html' title='AppStore Rules'/><author><name>gaso lin</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh6.googleusercontent.com/-RYFnmJigzcM/AAAAAAAAAAI/AAAAAAAAB6E/0c6RsEHTN-c/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-11055785.post-3168259528194953017</id><published>2009-07-29T10:33:00.002+08:00</published><updated>2009-07-29T10:35:17.159+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Android'/><title type='text'>Zii Egg</title><content type='html'>&lt;object width="425" height="344"&gt;&lt;param name="movie" value="http://www.youtube.com/v/CZ6It6z05rg&amp;amp;color1=0xb1b1b1&amp;amp;color2=0xcfcfcf&amp;amp;feature=player_embedded&amp;amp;fs=1"&gt;&lt;/param&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;/param&gt;&lt;param name="allowScriptAccess" value="always"&gt;&lt;/param&gt;&lt;embed src="http://www.youtube.com/v/CZ6It6z05rg&amp;amp;color1=0xb1b1b1&amp;amp;color2=0xcfcfcf&amp;amp;feature=player_embedded&amp;amp;fs=1" type="application/x-shockwave-flash" allowfullscreen="true" allowscriptaccess="always" width="425" height="344"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;基於 Android 平台擴充，支援 MPEG-4 外接 FullHD 顯示器播放的手持設備（不是手機）&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11055785-3168259528194953017?l=blog.gasolin.idv.tw' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.gasolin.idv.tw/feeds/3168259528194953017/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=11055785&amp;postID=3168259528194953017' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11055785/posts/default/3168259528194953017'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11055785/posts/default/3168259528194953017'/><link rel='alternate' type='text/html' href='http://blog.gasolin.idv.tw/2009/07/zii-egg.html' title='Zii Egg'/><author><name>gaso lin</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh6.googleusercontent.com/-RYFnmJigzcM/AAAAAAAAAAI/AAAAAAAAB6E/0c6RsEHTN-c/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-11055785.post-2697663104487870854</id><published>2009-07-28T16:29:00.001+08:00</published><updated>2009-07-28T16:31:36.134+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='javascript'/><category scheme='http://www.blogger.com/atom/ns#' term='Android'/><title type='text'>IBM 教學</title><content type='html'>&lt;ul&gt;&lt;li&gt;&lt;a href="http://www.ibm.com/developerworks/cn/views/web/libraryview.jsp?sort_by=date&amp;amp;show_abstract=true&amp;amp;show_all=false&amp;amp;search_flag=true&amp;amp;topic_by=%E8%AF%B7%E9%80%89%E6%8B%A9%E4%B8%80%E4%B8%AA%E4%B8%BB%E9%A2%98%E6%88%96%E4%BA%A7%E5%93%81&amp;amp;type_by=%E6%89%80%E6%9C%89%E7%B1%BB%E5%88%AB&amp;amp;search_by=%E4%BD%BF%E7%94%A8+jQuery%EF%BC%8C&amp;amp;%E6%90%9C%E7%B4%A2.x=0&amp;amp;%E6%90%9C%E7%B4%A2.y=0&amp;amp;S_TACT=105AGX52&amp;amp;S_CMP=content"&gt;使用 JQuery&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.ibm.com/developerworks/cn/views/web/libraryview.jsp?sort_by=date&amp;amp;show_abstract=true&amp;amp;show_all=false&amp;amp;search_flag=true&amp;amp;topic_by=%E8%AF%B7%E9%80%89%E6%8B%A9%E4%B8%80%E4%B8%AA%E4%B8%BB%E9%A2%98%E6%88%96%E4%BA%A7%E5%93%81&amp;amp;type_by=%E6%89%80%E6%9C%89%E7%B1%BB%E5%88%AB&amp;amp;search_by=%E4%BD%BF%E7%94%A8+jQuery%EF%BC%8C&amp;amp;%E6%90%9C%E7%B4%A2.x=0&amp;amp;%E6%90%9C%E7%B4%A2.y=0&amp;amp;S_TACT=105AGX52&amp;amp;S_CMP=content"&gt;&lt;/a&gt;&lt;a href="http://www.ibm.com/developerworks/cn/opensource/theme/android/?open&amp;amp;cm_mmc=5740-_-n-_-vrm_newsletter-_-10104_124692&amp;amp;cmibm_em=dm:0:10623486"&gt;Android 教學&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11055785-2697663104487870854?l=blog.gasolin.idv.tw' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.gasolin.idv.tw/feeds/2697663104487870854/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=11055785&amp;postID=2697663104487870854' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11055785/posts/default/2697663104487870854'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11055785/posts/default/2697663104487870854'/><link rel='alternate' type='text/html' href='http://blog.gasolin.idv.tw/2009/07/ibm.html' title='IBM 教學'/><author><name>gaso lin</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh6.googleusercontent.com/-RYFnmJigzcM/AAAAAAAAAAI/AAAAAAAAB6E/0c6RsEHTN-c/s512-c/photo.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-11055785.post-5808787924045949593</id><published>2009-07-24T23:06:00.001+08:00</published><updated>2009-07-24T23:16:20.066+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Android'/><title type='text'>Guide to put (Hero) Builds to your G1/Magic Android</title><content type='html'>http://forum.xda-developers.com/showthread.php?t=533505&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11055785-5808787924045949593?l=blog.gasolin.idv.tw' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.gasolin.idv.tw/feeds/5808787924045949593/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=11055785&amp;postID=5808787924045949593' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11055785/posts/default/5808787924045949593'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11055785/posts/default/5808787924045949593'/><link rel='alternate' type='text/html' href='http://blog.gasolin.idv.tw/2009/07/guide-to-put-hero-builds-to-your.html' title='Guide to put (Hero) Builds to your G1/Magic Android'/><author><name>gaso lin</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh6.googleusercontent.com/-RYFnmJigzcM/AAAAAAAAAAI/AAAAAAAAB6E/0c6RsEHTN-c/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-11055785.post-1284107333335729845</id><published>2009-07-11T11:55:00.007+08:00</published><updated>2009-08-06T20:28:58.722+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='python'/><category scheme='http://www.blogger.com/atom/ns#' term='Android'/><title type='text'>Compiling Android Scripting Environment</title><content type='html'>&lt;div&gt;Android Scripting Environment (ASE) is the scripting language (BeanShell, Python, Lua, Ruby) environment for Android Operating System.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;The following instructions are according to the discussion from &lt;a href="http://groups.google.com/group/android-scripting/browse_thread/thread/07905d5d088d237b#"&gt;ASE group&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Prerequisites&lt;/b&gt;&lt;div&gt;&lt;b&gt;&lt;br /&gt;&lt;/b&gt;To compile ASE, you need a Linux machine, then here goes:&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;1. Get Android source (read &lt;a href="http://source.android.com/download"&gt;http://source.android.com/download&lt;/a&gt; to fetch the source) and&lt;br /&gt;name the folder as 'mydroid'(or else you prefer). In the following instructions I assume all the folders are in user's home folder(~) .&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;2. Get Android SDK (download from &lt;a href="http://developer.android.com/"&gt;http://developer.android.com/&lt;/a&gt;) and&lt;br /&gt;extract it as "android_sdk"(or else you prefer).&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;3. Get Android Scripting Environment source (hg clone from &lt;a href="http://code.google.com/p/android-scripting/source/"&gt;http://code.google.com/p/android-scripting/source/&lt;/a&gt;) as "ase"(or else you prefer).&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;4. Enter ase/tools folder and execute "fix_android_sdk.py"&lt;br /&gt;to patch the "android_sdk".&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;blockquote&gt;$ cd ase/tools&lt;br /&gt;$ python fix_android_sdk.py ~/mydroid ~/android_sdk&lt;br /&gt;Copying source from .....mydroid to .....android_sdk/platforms/android-[verison]/sources&lt;br /&gt;Adding android.os.Exec to android.jar&lt;br /&gt;Compiling android.os.Exec to....&lt;br /&gt;Done!&lt;br /&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;In addition to modifying the SDK by adding android.os.Exec, the script&lt;br /&gt;will also copy the source files into the SDK so that they can be&lt;br /&gt;browsed in Eclipse.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;b&gt;Import Project into Eclipse&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;After executing the script, follow the instructions for developing in&lt;br /&gt;Eclipse in the &lt;a href="http://developer.android.com/guide/developing/eclipse-adt.html"&gt;Android developer guide&lt;/a&gt; to setup a workable Android&lt;br /&gt;development environment.&lt;br /&gt;&lt;br /&gt;Change the project build path and specify the BeanShell path to (project&lt;br /&gt;path)/beanshell/bsh-[version].jar&lt;/div&gt;&lt;div&gt;&lt;br /&gt;Compile it, done!&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;PS: Python and Lua are precompiled and already put in res/raw folder. You&lt;br /&gt;don't need to setup the cross compile environment unless you want to&lt;br /&gt;also compile Lua and Python yourself.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11055785-1284107333335729845?l=blog.gasolin.idv.tw' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.gasolin.idv.tw/feeds/1284107333335729845/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=11055785&amp;postID=1284107333335729845' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11055785/posts/default/1284107333335729845'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11055785/posts/default/1284107333335729845'/><link rel='alternate' type='text/html' href='http://blog.gasolin.idv.tw/2009/07/compiling-android-scripting-environment.html' title='Compiling Android Scripting Environment'/><author><name>gaso lin</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh6.googleusercontent.com/-RYFnmJigzcM/AAAAAAAAAAI/AAAAAAAAB6E/0c6RsEHTN-c/s512-c/photo.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-11055785.post-2052434099915409253</id><published>2009-06-24T22:42:00.002+08:00</published><updated>2009-06-24T22:43:47.664+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Android'/><title type='text'>HTC HERO</title><content type='html'>&lt;object width="560" height="340"&gt;&lt;param name="movie" value="http://www.youtube.com/v/FKTDSfbcbBU&amp;hl=zh_TW&amp;fs=1&amp;"&gt;&lt;/param&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;/param&gt;&lt;param name="allowscriptaccess" value="always"&gt;&lt;/param&gt;&lt;embed src="http://www.youtube.com/v/FKTDSfbcbBU&amp;hl=zh_TW&amp;fs=1&amp;" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="560" height="340"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;br /&gt;&lt;br /&gt;介面進化多了&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11055785-2052434099915409253?l=blog.gasolin.idv.tw' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.gasolin.idv.tw/feeds/2052434099915409253/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=11055785&amp;postID=2052434099915409253' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11055785/posts/default/2052434099915409253'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11055785/posts/default/2052434099915409253'/><link rel='alternate' type='text/html' href='http://blog.gasolin.idv.tw/2009/06/htc-hero.html' title='HTC HERO'/><author><name>gaso lin</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh6.googleusercontent.com/-RYFnmJigzcM/AAAAAAAAAAI/AAAAAAAAB6E/0c6RsEHTN-c/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-11055785.post-2522879332295032650</id><published>2009-06-24T17:20:00.002+08:00</published><updated>2009-06-24T17:29:59.459+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='network'/><category scheme='http://www.blogger.com/atom/ns#' term='Android'/><title type='text'>OPhone 的 Web 3.0 架構</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://www.oms-sdn.com/uploads/Image/5.14(1).jpg"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 600px; height: 368px;" src="http://www.oms-sdn.com/uploads/Image/5.14(1).jpg" border="0" alt="" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;中國移動基於 Android 自行訂製的 OPhone 系統終於釋出了 SDK。&lt;/div&gt;&lt;div&gt;&lt;a href="http://www.oms-sdn.com/"&gt;OPhone 的 SDK&lt;/a&gt; 相容於 Android 1.0 API ，使用 ADT 0.8 版開發工具（不支援 Android 1.1、1.5 和 ADT 0.9.x 以上版本的開發工具），並需要安裝它提供的 OPhone SDK 還有 WDT （桌面小程式開發工具 Widget Development Toolkit）這個 Eclipse Plugin。&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;無獨有偶的，OPhone 弄出了一個跟 &lt;a href="http://unite.opera.com/"&gt;Opera Unite&lt;/a&gt; 相似的「客戶端即伺服器」架構，叫做「Mobileyou」&lt;a href="http://www.oms-sdn.com/article/show/24;jsessionid=9D59902E76E53BB69A5691043B726B8B"&gt;手機網頁伺服器&lt;/a&gt;。我乾脆把這類架構稱為「網頁P2P」，或「pWeb」（Personal Web、Peer-2-Peer Web）。&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;這類「pWeb」服務架構的本質，簡單說來是在電腦或手機上裝個網頁伺服器，以提供各種以網頁為介面的服務，再結合個人電腦或手機上提供的個人資訊，提供異化的功能性網站。&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;中國移動或 Opera 這些服務提供者端，將使用某種動態 DNS 轉址機制（Dynamic DNS），以提供一個統一的網址，如「http://官方網址/個人暱稱/服務」這樣的連結，讓網路上所有的人都可以用這個網址連上 pWeb 網站，以解決使用者該透過哪個網址訪問的問題。&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;OPhone 提供的「Mobileyou」，跟 Android 上另一個「i-jetty」應用程式很類似。裝了之後都可以存取手機上的功能，透過網頁介面來管理個人通訊錄、查看簡訊等。&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;有了這樣的服務以後，女朋友要看男朋友有沒有偷吃，就不用再偷偷拿他的手機查看簡訊，只要到個人手機上的網站查看就行了（怎麼覺得舉的是個反例 :p）&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11055785-2522879332295032650?l=blog.gasolin.idv.tw' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.gasolin.idv.tw/feeds/2522879332295032650/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=11055785&amp;postID=2522879332295032650' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11055785/posts/default/2522879332295032650'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11055785/posts/default/2522879332295032650'/><link rel='alternate' type='text/html' href='http://blog.gasolin.idv.tw/2009/06/ophone-web-30.html' title='OPhone 的 Web 3.0 架構'/><author><name>gaso lin</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh6.googleusercontent.com/-RYFnmJigzcM/AAAAAAAAAAI/AAAAAAAAB6E/0c6RsEHTN-c/s512-c/photo.jpg'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-11055785.post-1533026846846831234</id><published>2009-06-19T09:11:00.006+08:00</published><updated>2009-08-20T15:52:07.549+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Android'/><title type='text'>擴增實境</title><content type='html'>&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;object width="425" height="344"&gt;&lt;param name="movie" value="http://www.youtube.com/v/b64_16K2e08&amp;amp;rel=0&amp;amp;color1=0xb1b1b1&amp;amp;color2=0xcfcfcf&amp;amp;hl=en&amp;amp;feature=player_embedded&amp;amp;fs=1"&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;param name="allowScriptAccess" value="always"&gt;&lt;embed src="http://www.youtube.com/v/b64_16K2e08&amp;amp;rel=0&amp;amp;color1=0xb1b1b1&amp;amp;color2=0xcfcfcf&amp;amp;hl=en&amp;amp;feature=player_embedded&amp;amp;fs=1" type="application/x-shockwave-flash" allowfullscreen="true" allowscriptaccess="always" width="425" height="344"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;a href="http://www.cyrket.com/package/com.sprx.layar"&gt;Local Reality Browser&lt;/a&gt; 是一個擴增實境的應用。透過相機鏡頭，同時展示現實景色與相應的數位資訊。同時像瀏覽器一樣，讓開發者可以在 Android 手機上面自行加入自己的擴增實境網頁（這個軟體稱這些頁面為「圖層」Layer）。&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;object width="425" height="344"&gt;&lt;param name="movie" value="http://www.youtube.com/v/zVouwYAKqFk&amp;amp;color1=0xb1b1b1&amp;amp;color2=0xcfcfcf&amp;amp;hl=zh_TW&amp;amp;feature=player_embedded&amp;amp;fs=1"&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;param name="allowScriptAccess" value="always"&gt;&lt;embed src="http://www.youtube.com/v/zVouwYAKqFk&amp;amp;color1=0xb1b1b1&amp;amp;color2=0xcfcfcf&amp;amp;hl=zh_TW&amp;amp;feature=player_embedded&amp;amp;fs=1" type="application/x-shockwave-flash" allowfullscreen="true" allowscriptaccess="always" width="425" height="344"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;br /&gt;&lt;br /&gt;微軟的擴增實境&lt;br /&gt;&lt;br /&gt;&lt;object width="425" height="344"&gt;&lt;param name="movie" value="http://www.youtube.com/v/qb3AzXEB1Kg&amp;amp;color1=0xb1b1b1&amp;amp;color2=0xcfcfcf&amp;amp;hl=zh_TW&amp;amp;feature=player_embedded&amp;amp;fs=1"&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;param name="allowScriptAccess" value="always"&gt;&lt;embed src="http://www.youtube.com/v/qb3AzXEB1Kg&amp;amp;color1=0xb1b1b1&amp;amp;color2=0xcfcfcf&amp;amp;hl=zh_TW&amp;amp;feature=player_embedded&amp;amp;fs=1" type="application/x-shockwave-flash" allowfullscreen="true" allowscriptaccess="always" width="425" height="344"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;br /&gt;&lt;br /&gt;SONY 的擴增實境&lt;br /&gt;&lt;br /&gt;也可參考 &lt;a href="http://gnn.gamer.com.tw/2/38352.html"&gt;操縱介面的改變&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11055785-1533026846846831234?l=blog.gasolin.idv.tw' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.gasolin.idv.tw/feeds/1533026846846831234/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=11055785&amp;postID=1533026846846831234' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11055785/posts/default/1533026846846831234'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11055785/posts/default/1533026846846831234'/><link rel='alternate' type='text/html' href='http://blog.gasolin.idv.tw/2009/06/blog-post_19.html' title='擴增實境'/><author><name>gaso lin</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh6.googleusercontent.com/-RYFnmJigzcM/AAAAAAAAAAI/AAAAAAAAB6E/0c6RsEHTN-c/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-11055785.post-2623945697522983423</id><published>2009-06-14T11:33:00.001+08:00</published><updated>2009-06-14T11:33:25.894+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='digest'/><title type='text'>學走</title><content type='html'>&lt;!--StartFragment--&gt;  &lt;p class="Textbody" style="margin-bottom:14.15pt;tab-stops:35.45pt 70.9pt 106.35pt 141.8pt 177.25pt 212.7pt 248.15pt 283.6pt 319.05pt 354.5pt 389.95pt 425.4pt 460.85pt 496.3pt"&gt;&lt;span style="font-family:&amp;quot;儷宋 Pro&amp;quot;;mso-fareast-language:ZH-TW"&gt;&lt;/span&gt;&lt;/p&gt;&lt;blockquote&gt;&lt;p class="Textbody" style="margin-bottom:14.15pt;tab-stops:35.45pt 70.9pt 106.35pt 141.8pt 177.25pt 212.7pt 248.15pt 283.6pt 319.05pt 354.5pt 389.95pt 425.4pt 460.85pt 496.3pt"&gt;&lt;span style="font-family:&amp;quot;儷宋 Pro&amp;quot;;mso-fareast-language:ZH-TW"&gt;程式設計領域裡，每一個人都想飛。但是，還沒學會走之前，不要跑！&lt;span lang="EN-US"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;span lang="EN-US" style="font-size:10.0pt;font-family:&amp;quot;儷宋 Pro&amp;quot;;mso-ansi-language:EN-US;mso-fareast-language:ZH-TW"&gt;--侯捷&lt;/span&gt;&lt;/blockquote&gt;&lt;span lang="EN-US" style="font-size:10.0pt;font-family:&amp;quot;儷宋 Pro&amp;quot;;mso-ansi-language:EN-US;mso-fareast-language:ZH-TW"&gt;&lt;/span&gt;&lt;!--EndFragment--&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11055785-2623945697522983423?l=blog.gasolin.idv.tw' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.gasolin.idv.tw/feeds/2623945697522983423/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=11055785&amp;postID=2623945697522983423' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11055785/posts/default/2623945697522983423'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11055785/posts/default/2623945697522983423'/><link rel='alternate' type='text/html' href='http://blog.gasolin.idv.tw/2009/06/blog-post.html' title='學走'/><author><name>gaso lin</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh6.googleusercontent.com/-RYFnmJigzcM/AAAAAAAAAAI/AAAAAAAAB6E/0c6RsEHTN-c/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-11055785.post-796467131147708722</id><published>2009-06-09T14:38:00.002+08:00</published><updated>2009-06-09T14:42:59.439+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Android'/><title type='text'>Anobiit</title><content type='html'>&lt;table style="width:auto;"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;a href="http://picasaweb.google.com.tw/lh/photo/cwlwFVNYWxRJSMxOWlECFA?feat=embedwebsite"&gt;&lt;img src="http://lh4.ggpht.com/_2xGPUuRo1sg/Sit69HbA0eI/AAAAAAAAAz0/uCZtl9xl5zU/s800/front.jpg" /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style="font-family:arial,sans-serif; font-size:11px; text-align:right"&gt;&lt;br /&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;&lt;a href="http://android.cool3c.com/article/8940"&gt;寫了篇文章&lt;/a&gt;，介紹自己寫的小軟體 Anobiit&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11055785-796467131147708722?l=blog.gasolin.idv.tw' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.gasolin.idv.tw/feeds/796467131147708722/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=11055785&amp;postID=796467131147708722' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11055785/posts/default/796467131147708722'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11055785/posts/default/796467131147708722'/><link rel='alternate' type='text/html' href='http://blog.gasolin.idv.tw/2009/06/anobiit.html' title='Anobiit'/><author><name>gaso lin</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh6.googleusercontent.com/-RYFnmJigzcM/AAAAAAAAAAI/AAAAAAAAB6E/0c6RsEHTN-c/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh4.ggpht.com/_2xGPUuRo1sg/Sit69HbA0eI/AAAAAAAAAz0/uCZtl9xl5zU/s72-c/front.jpg' height='72' width='72'/><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-11055785.post-7351644751336458895</id><published>2009-05-22T17:09:00.005+08:00</published><updated>2009-05-22T17:18:30.463+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='GAE'/><category scheme='http://www.blogger.com/atom/ns#' term='python'/><title type='text'>Google 救甘興 -- Google 應用服務引擎（App Engine）中文文件</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_2xGPUuRo1sg/ShZt3Q4u9YI/AAAAAAAAAwc/BwzU9kxxXf8/s1600-h/google-app-engine.png"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 250px; height: 250px;" src="http://4.bp.blogspot.com/_2xGPUuRo1sg/ShZt3Q4u9YI/AAAAAAAAAwc/BwzU9kxxXf8/s400/google-app-engine.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5338575204487460226" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Google 對他的應用服務引擎（App Engine）推廣不遺餘力，&lt;br /&gt;除了在四月多發佈 Java 版的應用服務引擎之外，&lt;br /&gt;前幾天竟然把官方網站上的文件全部翻譯成了中文！&lt;br /&gt;&lt;br /&gt;學網頁開發再也不用自己架設伺服器（Server）、安裝網頁伺服器（Web Server）、伺服器語言、和資料庫（Database），有了 Google 應用服務引擎通通一次搞定。&lt;br /&gt;&lt;br /&gt;對 Google 應用服務引擎有興趣的人可以連至&lt;a href="http://code.google.com/intl/zh-TW/appengine/articles/"&gt;Google 應用服務引擎官方網站&lt;/a&gt; （中文）查看。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11055785-7351644751336458895?l=blog.gasolin.idv.tw' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='http://code.google.com/intl/zh-TW/appengine/articles/' title='Google 救甘興 -- Google 應用服務引擎（App Engine）中文文件'/><link rel='replies' type='application/atom+xml' href='http://blog.gasolin.idv.tw/feeds/7351644751336458895/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=11055785&amp;postID=7351644751336458895' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11055785/posts/default/7351644751336458895'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11055785/posts/default/7351644751336458895'/><link rel='alternate' type='text/html' href='http://blog.gasolin.idv.tw/2009/05/google-google-app-engine.html' title='Google 救甘興 -- Google 應用服務引擎（App Engine）中文文件'/><author><name>gaso lin</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh6.googleusercontent.com/-RYFnmJigzcM/AAAAAAAAAAI/AAAAAAAAB6E/0c6RsEHTN-c/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_2xGPUuRo1sg/ShZt3Q4u9YI/AAAAAAAAAwc/BwzU9kxxXf8/s72-c/google-app-engine.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-11055785.post-596758374228884573</id><published>2009-05-18T14:02:00.003+08:00</published><updated>2009-05-19T22:54:18.693+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Android'/><title type='text'>HTC 自製介面影片</title><content type='html'>&lt;object width="425" height="344"&gt;&lt;param name="movie" value="http://www.youtube.com/v/6OMrSTEBeyI&amp;color1=0xb1b1b1&amp;color2=0xcfcfcf&amp;hl=en&amp;feature=player_embedded&amp;fs=1"&gt;&lt;/param&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;/param&gt;&lt;embed src="http://www.youtube.com/v/6OMrSTEBeyI&amp;color1=0xb1b1b1&amp;color2=0xcfcfcf&amp;hl=en&amp;feature=player_embedded&amp;fs=1" type="application/x-shockwave-flash" allowfullscreen="true" width="425" height="344"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;br /&gt;&lt;br /&gt;&lt;object width="425" height="344"&gt;&lt;param name="movie" value="http://www.youtube.com/v/2B4u7P4L6qE&amp;color1=0xb1b1b1&amp;color2=0xcfcfcf&amp;feature=player_embedded&amp;fs=1"&gt;&lt;/param&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;/param&gt;&lt;embed src="http://www.youtube.com/v/2B4u7P4L6qE&amp;color1=0xb1b1b1&amp;color2=0xcfcfcf&amp;feature=player_embedded&amp;fs=1" type="application/x-shockwave-flash" allowfullscreen="true" width="425" height="344"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;br /&gt;&lt;br /&gt;HTC 自製介面的影片流出了，與 Android 標準介面有些不同。&lt;br /&gt;&lt;br /&gt;就像 Linux 發佈套件（Ubuntu, OpenSUSE, RedHat）一樣，當 OS 都免費取得時，要與其他廠商作區隔就得在使用介面（3D 效果）、易用性（各式工具，如 PDF Reader、HTC Mail）、特有功能（與 Extrange 整合）等方面來著墨。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11055785-596758374228884573?l=blog.gasolin.idv.tw' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.gasolin.idv.tw/feeds/596758374228884573/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=11055785&amp;postID=596758374228884573' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11055785/posts/default/596758374228884573'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11055785/posts/default/596758374228884573'/><link rel='alternate' type='text/html' href='http://blog.gasolin.idv.tw/2009/05/htc.html' title='HTC 自製介面影片'/><author><name>gaso lin</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh6.googleusercontent.com/-RYFnmJigzcM/AAAAAAAAAAI/AAAAAAAAB6E/0c6RsEHTN-c/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-11055785.post-2236229108968759585</id><published>2009-05-06T12:05:00.004+08:00</published><updated>2009-05-06T12:34:38.118+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Android'/><title type='text'>解決 Android 版本相容性問題1</title><content type='html'>&lt;!--StartFragment--&gt;  &lt;p&gt;Android 系統改版相當快，使用者拿到的手機上往往也搭載著不同版本的 Android 系統。當我們用到新版本 SDK 所提供的功能時，也代表我們放棄了所有使用舊版本 OS 的使用者。為了讓最多的使用者能用上我們所寫的應用程式，我們應該盡可能地讓應用程式做到向下相容。&lt;/p&gt;&lt;p&gt;那麼我們最好向下相容到那個版本的 SDK 哩？簡單的答案是：&lt;/p&gt;&lt;p&gt;在 2010 年以前，以 SDK 1.1 為基礎來開發可以享受到最新版的開發工具的便利，同時也可以支援最多使用者。&lt;/p&gt;&lt;p&gt;若只要寫供中文版手機使用的應用程式，則可以直接基於 SDK 1.5 來開發，能使用 SDK 1.5 版的所有功能（因為第一支 Android 中文手機內建的版本就是 1.5 版）。&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11055785-2236229108968759585?l=blog.gasolin.idv.tw' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.gasolin.idv.tw/feeds/2236229108968759585/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=11055785&amp;postID=2236229108968759585' title='5 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11055785/posts/default/2236229108968759585'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11055785/posts/default/2236229108968759585'/><link rel='alternate' type='text/html' href='http://blog.gasolin.idv.tw/2009/05/android.html' title='解決 Android 版本相容性問題1'/><author><name>gaso lin</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh6.googleusercontent.com/-RYFnmJigzcM/AAAAAAAAAAI/AAAAAAAAB6E/0c6RsEHTN-c/s512-c/photo.jpg'/></author><thr:total>5</thr:total></entry><entry><id>tag:blogger.com,1999:blog-11055785.post-4601756669075613419</id><published>2009-04-28T09:12:00.006+08:00</published><updated>2009-04-28T23:59:17.844+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Android'/><title type='text'>Android SDK 1.5 發佈</title><content type='html'>&lt;a href="http://developer.android.com/sdk/1.5_r1/index.html"&gt;Android SDK 1.5 發佈囉！&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;主要可查覺的變化有稍微美化的介面，模擬器的操作有些改動，還有期待已久的輸入法與桌面小工具（appWidget）功能。&lt;br /&gt;&lt;br /&gt;1.5 SDK 中，叫起模擬器的方法也改變了。新版支援多個不同版本模擬器共存，各廠商可以提供不同的自製模擬器。&lt;br /&gt;例如 Google Map 等 Google API 就被另外抽出來放到了（加入了） Google API 的模擬器上。&lt;br /&gt;&lt;br /&gt;所幸前陣子使用 1.5 pre 測試時&lt;a href="http://www.books.com.tw/exep/assp.php/gasolin/exep/prod/booksfile.php?item=0010429598"&gt;書中&lt;/a&gt;所提的範例都仍然可適用，在這段遷移往 1.5 平台的期間，請對照查看&lt;a href="http://code.google.com/p/androidbmi/wiki/DiveIntoAndroid"&gt;線上版&lt;/a&gt;的更新。&lt;br /&gt;&lt;br /&gt;&lt;div&gt;Update: 電子書版先支援 1.5 啦，主要的改動有&lt;/div&gt;&lt;div&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://code.google.com/p/androidbmi/wiki/InstallAndroid"&gt;安裝 Android 開發工具&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://code.google.com/p/androidbmi/wiki/OpenProject"&gt;開啟現有專案&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://code.google.com/p/androidbmi/wiki/PlayEmulator"&gt;操作 Android 模擬器(Emulator)&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11055785-4601756669075613419?l=blog.gasolin.idv.tw' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.gasolin.idv.tw/feeds/4601756669075613419/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=11055785&amp;postID=4601756669075613419' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11055785/posts/default/4601756669075613419'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11055785/posts/default/4601756669075613419'/><link rel='alternate' type='text/html' href='http://blog.gasolin.idv.tw/2009/04/android-sdk-15.html' title='Android SDK 1.5 發佈'/><author><name>gaso lin</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh6.googleusercontent.com/-RYFnmJigzcM/AAAAAAAAAAI/AAAAAAAAB6E/0c6RsEHTN-c/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-11055785.post-59827524729012414</id><published>2009-04-25T09:16:00.001+08:00</published><updated>2009-04-25T09:17:45.053+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Android'/><title type='text'>在 Ubuntu 9.04 上連接 G1 開發</title><content type='html'>參考&lt;a href="http://www.maximyudin.com/2009/04/24/android/connecting-and-debugging-g1-on-ubuntu-904/"&gt;這篇&lt;/a&gt;。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11055785-59827524729012414?l=blog.gasolin.idv.tw' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.gasolin.idv.tw/feeds/59827524729012414/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=11055785&amp;postID=59827524729012414' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11055785/posts/default/59827524729012414'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11055785/posts/default/59827524729012414'/><link rel='alternate' type='text/html' href='http://blog.gasolin.idv.tw/2009/04/ubuntu-904-g1.html' title='在 Ubuntu 9.04 上連接 G1 開發'/><author><name>gaso lin</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh6.googleusercontent.com/-RYFnmJigzcM/AAAAAAAAAAI/AAAAAAAAB6E/0c6RsEHTN-c/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-11055785.post-3635635041446701517</id><published>2009-04-08T20:32:00.007+08:00</published><updated>2009-04-13T18:05:15.815+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Android'/><title type='text'>非官方 SDK 與新的模擬器</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_2xGPUuRo1sg/Sdydlt2xTqI/AAAAAAAAArY/9nCp-GiGx-4/s1600-h/%E5%9C%96%E7%89%87+2.png"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 267px; height: 400px;" src="http://2.bp.blogspot.com/_2xGPUuRo1sg/Sdydlt2xTqI/AAAAAAAAArY/9nCp-GiGx-4/s400/%E5%9C%96%E7%89%87+2.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5322302130935123618" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://andappstore.com/AndroidPhoneApplications/sdk/"&gt;AndAppStore&lt;/a&gt; 4/7 日起提供非官方的 Android SDK BT 種子下載（需要註冊），有 Windows、Mac、Linux 版本。&lt;br /&gt;&lt;br /&gt;在目前非官方 SDK 1.5 上可以看到繁簡體中文支援了，只是目前這個版本 Image 還有些問題，像是不支援網路等功能。&lt;br /&gt;&lt;br /&gt;使用這版本的 emulator 前，需要建立一個 avd 模擬器 image 檔案。這表示不像目前模擬器只能換面板，骨子裡是同一台模擬器。SDK 1.5 發佈後，開發時可以自訂現在要模擬的機器是否支援諸如相機、GPS 等特性。也就是新版本在支援模擬多種不同的手機上跨進了一步。&lt;br /&gt;&lt;br /&gt;建立方法是在 SDK 的 tools 目錄下執行以下命令：&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;$ android create avd --target 1 --name cupcake-dev-vm&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;自訂完手機模擬器 image 檔案 avd 後，就可以啟動 emulator&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;emulator -avd cupcake-dev-vm&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;PS: 還好&lt;a href="http://www.books.com.tw/exep/assp.php/gasolin/exep/prod/booksfile.php?item=0010429598"&gt;書裡面&lt;/a&gt;有先見之明，全使用 Eclipse 來操作，而不是用 terminal 來控制模擬器或編譯 Android 應用程式，不然馬上就包很大了 XD&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11055785-3635635041446701517?l=blog.gasolin.idv.tw' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.gasolin.idv.tw/feeds/3635635041446701517/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=11055785&amp;postID=3635635041446701517' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11055785/posts/default/3635635041446701517'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11055785/posts/default/3635635041446701517'/><link rel='alternate' type='text/html' href='http://blog.gasolin.idv.tw/2009/04/sdk.html' title='非官方 SDK 與新的模擬器'/><author><name>gaso lin</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh6.googleusercontent.com/-RYFnmJigzcM/AAAAAAAAAAI/AAAAAAAAB6E/0c6RsEHTN-c/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_2xGPUuRo1sg/Sdydlt2xTqI/AAAAAAAAArY/9nCp-GiGx-4/s72-c/%E5%9C%96%E7%89%87+2.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-11055785.post-5772919208493674676</id><published>2009-04-03T14:18:00.001+08:00</published><updated>2009-04-03T14:18:55.044+08:00</updated><title type='text'>平行處理概觀</title><content type='html'>很棒的&lt;a href="http://www.zdnet.com.tw/white_board/intel/video-1.htm"&gt;平行處理概觀講座&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11055785-5772919208493674676?l=blog.gasolin.idv.tw' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='http://www.zdnet.com.tw/white_board/intel/video-1.htm' title='平行處理概觀'/><link rel='replies' type='application/atom+xml' href='http://blog.gasolin.idv.tw/feeds/5772919208493674676/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=11055785&amp;postID=5772919208493674676' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11055785/posts/default/5772919208493674676'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11055785/posts/default/5772919208493674676'/><link rel='alternate' type='text/html' href='http://blog.gasolin.idv.tw/2009/04/blog-post.html' title='平行處理概觀'/><author><name>gaso lin</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh6.googleusercontent.com/-RYFnmJigzcM/AAAAAAAAAAI/AAAAAAAAB6E/0c6RsEHTN-c/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-11055785.post-5161809708479059695</id><published>2009-03-30T09:48:00.000+08:00</published><updated>2009-03-30T09:49:25.532+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='digest'/><title type='text'>搜尋</title><content type='html'>&lt;blockquote&gt;The main rationale was that the world is more complicated.&lt;br /&gt;Now programmers spend more time researching libraries than writing everything from scratch.&lt;/blockquote&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11055785-5161809708479059695?l=blog.gasolin.idv.tw' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.gasolin.idv.tw/feeds/5161809708479059695/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=11055785&amp;postID=5161809708479059695' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11055785/posts/default/5161809708479059695'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11055785/posts/default/5161809708479059695'/><link rel='alternate' type='text/html' href='http://blog.gasolin.idv.tw/2009/03/blog-post.html' title='搜尋'/><author><name>gaso lin</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh6.googleusercontent.com/-RYFnmJigzcM/AAAAAAAAAAI/AAAAAAAAB6E/0c6RsEHTN-c/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-11055785.post-4891843986427013748</id><published>2009-03-23T10:47:00.001+08:00</published><updated>2009-03-23T10:49:00.702+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='django'/><category scheme='http://www.blogger.com/atom/ns#' term='python'/><title type='text'>Django Pinax</title><content type='html'>&lt;object width="425" height="344"&gt;&lt;param name="movie" value="http://www.youtube.com/v/1J91Ownq-7g&amp;color1=0xb1b1b1&amp;color2=0xcfcfcf&amp;hl=en&amp;feature=player_embedded&amp;fs=1"&gt;&lt;/param&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;/param&gt;&lt;embed src="http://www.youtube.com/v/1J91Ownq-7g&amp;color1=0xb1b1b1&amp;color2=0xcfcfcf&amp;hl=en&amp;feature=player_embedded&amp;fs=1" type="application/x-shockwave-flash" allowfullscreen="true" width="425" height="344"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://pinaxproject.com/"&gt;Pinax&lt;/a&gt; 是一套可重用的 Django app，看起來真是方便。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11055785-4891843986427013748?l=blog.gasolin.idv.tw' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.gasolin.idv.tw/feeds/4891843986427013748/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=11055785&amp;postID=4891843986427013748' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11055785/posts/default/4891843986427013748'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11055785/posts/default/4891843986427013748'/><link rel='alternate' type='text/html' href='http://blog.gasolin.idv.tw/2009/03/django-pinax.html' title='Django Pinax'/><author><name>gaso lin</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh6.googleusercontent.com/-RYFnmJigzcM/AAAAAAAAAAI/AAAAAAAAB6E/0c6RsEHTN-c/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-11055785.post-3953060841832194739</id><published>2009-03-04T14:18:00.007+08:00</published><updated>2009-04-13T17:08:30.192+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Android'/><title type='text'>Google! Android 手機應用程式設計入門 封面</title><content type='html'>&lt;div style="float: right; margin-left: 10px; margin-bottom: 10px;"&gt;&lt;a href="http://www.flickr.com/photos/gasolin/3327041647/" title="photo sharing"&gt;&lt;img src="http://farm4.static.flickr.com/3354/3327041647_80623f98d3_m.jpg" alt="" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;span style="font-size: 0.9em; margin-top: 0px;"&gt;&lt;a href="http://www.flickr.com/photos/gasolin/3327041647/"&gt;P0904703.jpg&lt;/a&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;新書封面設計好囉，全書應該這幾週就會上市啦！到時懇請讀者們支持喔 :)&lt;br clear="all" /&gt;&lt;br /&gt;&lt;br /&gt;Update: 3/10 已經 &lt;a href="http://www.books.com.tw/exep/assp.php/gasolin/exep/prod/booksfile.php?item=0010429598"&gt;在博客來上架了&lt;/a&gt; :)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11055785-3953060841832194739?l=blog.gasolin.idv.tw' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.gasolin.idv.tw/feeds/3953060841832194739/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=11055785&amp;postID=3953060841832194739' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11055785/posts/default/3953060841832194739'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11055785/posts/default/3953060841832194739'/><link rel='alternate' type='text/html' href='http://blog.gasolin.idv.tw/2009/03/google-android.html' title='Google! Android 手機應用程式設計入門 封面'/><author><name>gaso lin</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh6.googleusercontent.com/-RYFnmJigzcM/AAAAAAAAAAI/AAAAAAAAB6E/0c6RsEHTN-c/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://farm4.static.flickr.com/3354/3327041647_80623f98d3_t.jpg' height='72' width='72'/><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-11055785.post-8677179462586987265</id><published>2009-02-25T15:21:00.006+08:00</published><updated>2010-02-06T23:22:18.240+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Android'/><title type='text'>Demo Android Phone through your PC/MAC</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://www.elmousa.com/images/p_p100n.gif"&gt;&lt;img style="cursor: pointer; width: 266px; height: 324px;" src="http://www.elmousa.com/images/p_p100n.gif" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Situation:&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;I have to demo my Android Phone screen but I don't have a device projector.&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;&lt;br /&gt;Solution:&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Prerequisite:&lt;br /&gt;&lt;br /&gt;Download &lt;a href="http://groups.google.com/group/cw-android/web/DroidEx.jar"&gt;DroidEx.jar&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Do:&lt;br /&gt;&lt;br /&gt;1. Connect Phone to your PC/MAC&lt;br /&gt;2. Open Eclipse&lt;br /&gt;3. Enter your android_sdk/tool folder, and type the following command:&lt;br /&gt;&lt;blockquote&gt;&lt;br /&gt;$ java -cp DroidEx.jar:lib/ddmlib.jar com.commonsware.droidex.DroidEx&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;Done!&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Ref:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;http://androidguys.com/?p=3519&lt;/li&gt;&lt;li&gt;http://groups.google.com/group/cw-android/browse_thread/thread/d37cac83a2e2476b&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;Another similar tool: &lt;a href="http://www.adakoda.com/adakoda/android/asm/"&gt;Android Screen Monitor&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11055785-8677179462586987265?l=blog.gasolin.idv.tw' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.gasolin.idv.tw/feeds/8677179462586987265/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=11055785&amp;postID=8677179462586987265' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11055785/posts/default/8677179462586987265'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11055785/posts/default/8677179462586987265'/><link rel='alternate' type='text/html' href='http://blog.gasolin.idv.tw/2009/02/demo-your-android-phone-through-your.html' title='Demo Android Phone through your PC/MAC'/><author><name>gaso lin</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh6.googleusercontent.com/-RYFnmJigzcM/AAAAAAAAAAI/AAAAAAAAB6E/0c6RsEHTN-c/s512-c/photo.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-11055785.post-1165099852650473379</id><published>2009-02-19T16:56:00.000+08:00</published><updated>2009-02-19T17:00:11.115+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='IPv6'/><title type='text'>Internet History</title><content type='html'>&lt;object width="425" height="344"&gt;&lt;param name="movie" value="http://www.youtube.com/v/9hIQjrMHTv4&amp;color1=0xb1b1b1&amp;color2=0xcfcfcf&amp;hl=de&amp;feature=player_embedded&amp;fs=1"&gt;&lt;/param&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;/param&gt;&lt;embed src="http://www.youtube.com/v/9hIQjrMHTv4&amp;color1=0xb1b1b1&amp;color2=0xcfcfcf&amp;hl=de&amp;feature=player_embedded&amp;fs=1" type="application/x-shockwave-flash" allowfullscreen="true" width="425" height="344"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11055785-1165099852650473379?l=blog.gasolin.idv.tw' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.gasolin.idv.tw/feeds/1165099852650473379/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=11055785&amp;postID=1165099852650473379' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11055785/posts/default/1165099852650473379'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11055785/posts/default/1165099852650473379'/><link rel='alternate' type='text/html' href='http://blog.gasolin.idv.tw/2009/02/internet-history.html' title='Internet History'/><author><name>gaso lin</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh6.googleusercontent.com/-RYFnmJigzcM/AAAAAAAAAAI/AAAAAAAAB6E/0c6RsEHTN-c/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-11055785.post-8679198676519607826</id><published>2009-02-18T14:39:00.003+08:00</published><updated>2009-02-18T14:43:25.161+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Android'/><title type='text'>HTC Dream</title><content type='html'>&lt;object width="480" height="295"&gt;&lt;param name="movie" value="http://www.youtube.com/v/QBbu_FR6XPU&amp;hl=zh_TW&amp;fs=1"&gt;&lt;/param&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;/param&gt;&lt;param name="allowscriptaccess" value="always"&gt;&lt;/param&gt;&lt;embed src="http://www.youtube.com/v/QBbu_FR6XPU&amp;hl=zh_TW&amp;fs=1" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="480" height="295"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;br /&gt;&lt;br /&gt;第二台 Android 手機，一樣的 HVGA，機身變薄、512 MB 記憶體、虛擬鍵盤（無實體鍵盤）。&lt;br /&gt;&lt;br /&gt;mmm...太普通了。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11055785-8679198676519607826?l=blog.gasolin.idv.tw' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.gasolin.idv.tw/feeds/8679198676519607826/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=11055785&amp;postID=8679198676519607826' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11055785/posts/default/8679198676519607826'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11055785/posts/default/8679198676519607826'/><link rel='alternate' type='text/html' href='http://blog.gasolin.idv.tw/2009/02/htc-dream.html' title='HTC Dream'/><author><name>gaso lin</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh6.googleusercontent.com/-RYFnmJigzcM/AAAAAAAAAAI/AAAAAAAAB6E/0c6RsEHTN-c/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-11055785.post-3572573238760446723</id><published>2009-01-29T01:12:00.001+08:00</published><updated>2009-01-30T00:30:14.493+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Android'/><title type='text'>CupCake screencast in Emulator</title><content type='html'>&lt;object width="425" height="344"&gt;&lt;param name="movie" value="http://www.youtube.com/v/hfsvXJUVlY0&amp;color1=0xb1b1b1&amp;color2=0xcfcfcf&amp;feature=player_embedded&amp;fs=1"&gt;&lt;/param&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;/param&gt;&lt;embed src="http://www.youtube.com/v/hfsvXJUVlY0&amp;color1=0xb1b1b1&amp;color2=0xcfcfcf&amp;feature=player_embedded&amp;fs=1" type="application/x-shockwave-flash" allowfullscreen="true" width="425" height="344"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;br /&gt;&lt;br /&gt;CupCake (Android 1.5) screencast in Emulator&lt;br /&gt;&lt;br /&gt;&lt;a href="http://nullwire.com/try_out_cupcake_yourself"&gt;這裡&lt;/a&gt;可以抓到 Android 1.5 的 Emulator。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11055785-3572573238760446723?l=blog.gasolin.idv.tw' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.gasolin.idv.tw/feeds/3572573238760446723/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=11055785&amp;postID=3572573238760446723' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11055785/posts/default/3572573238760446723'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11055785/posts/default/3572573238760446723'/><link rel='alternate' type='text/html' href='http://blog.gasolin.idv.tw/2009/01/cupcake-screencast-in-emulator.html' title='CupCake screencast in Emulator'/><author><name>gaso lin</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh6.googleusercontent.com/-RYFnmJigzcM/AAAAAAAAAAI/AAAAAAAAB6E/0c6RsEHTN-c/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-11055785.post-2873077320722117575</id><published>2009-01-27T17:14:00.004+08:00</published><updated>2009-02-05T10:24:19.569+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Android'/><title type='text'>在 Android 程式中切換介面語系</title><content type='html'>在 Android 1.5 版發佈之後，我們就可以用&lt;a href="http://code.google.com/android/devel/resources-i18n.html"&gt;官方文件中教的方法&lt;/a&gt;來定義不同語系的資源文件，並根據語言設定，在使用者螢幕上顯示出對應的語言。在此之前，我們可以在 onCreate 中加入下面的程式片段，來測試不同語系的介面：&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;    Resources res = getResources();&lt;br /&gt;   Configuration conf = res.getConfiguration();&lt;br /&gt;   conf.locale = &lt;span style="font-weight: bold;"&gt;Locale.TRADITIONAL_CHINESE&lt;/span&gt;;&lt;br /&gt;   DisplayMetrics dm = res.getDisplayMetrics();&lt;br /&gt;   res.updateConfiguration(conf, dm);&lt;/blockquote&gt;              &lt;br /&gt;這段程式碼還可以搭配 Preference 設定，讓使用者在程式中自己選擇想要的語系。&lt;br /&gt;&lt;br /&gt;update: 要針對不同語系做處理時，可以直接判斷&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;if (conf.locale == Locale.TRADITIONAL_CHINESE)&lt;/blockquote&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11055785-2873077320722117575?l=blog.gasolin.idv.tw' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.gasolin.idv.tw/feeds/2873077320722117575/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=11055785&amp;postID=2873077320722117575' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11055785/posts/default/2873077320722117575'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11055785/posts/default/2873077320722117575'/><link rel='alternate' type='text/html' href='http://blog.gasolin.idv.tw/2009/01/android_27.html' title='在 Android 程式中切換介面語系'/><author><name>gaso lin</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh6.googleusercontent.com/-RYFnmJigzcM/AAAAAAAAAAI/AAAAAAAAB6E/0c6RsEHTN-c/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-11055785.post-9027751945538982835</id><published>2009-01-18T23:11:00.005+08:00</published><updated>2009-01-18T23:50:20.244+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='python'/><category scheme='http://www.blogger.com/atom/ns#' term='Android'/><title type='text'>Jythonroid works on Dev Phone!</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_2xGPUuRo1sg/SXNIc0PVM6I/AAAAAAAAAcQ/odAxGXphfSs/s1600-h/jythonroid.png.jpg"&gt;&lt;img style="cursor: pointer; width: 400px; height: 267px;" src="http://2.bp.blogspot.com/_2xGPUuRo1sg/SXNIc0PVM6I/AAAAAAAAAcQ/odAxGXphfSs/s400/jythonroid.png.jpg" alt="" id="BLOGGER_PHOTO_ID_5292653646986949538" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Just got my Dev Phone 1 and tried to run &lt;a href="http://inet6.blogspot.com/2008/11/jythonroid-jython-runs-successfully-on.html"&gt;Jythonroid&lt;/a&gt; on it.&lt;br /&gt;&lt;br /&gt;The procedure is&lt;br /&gt;&lt;br /&gt;1. download sourcecode&lt;br /&gt;&lt;br /&gt;$ svn co -r 51 http://jythonroid.googlecode.com/svn/branches/Jythonroid&lt;br /&gt;&lt;br /&gt;2. import project into eclipse&lt;br /&gt;&lt;br /&gt;3. connect Dev Phone and computer with USB&lt;br /&gt;&lt;br /&gt;4. setup eclipse debug setting to run jythonroid in real Dev Phone&lt;br /&gt;&lt;br /&gt;Now I got jythonroid installed in Dev Phone. Here's how to play with jythonroid:&lt;br /&gt;&lt;br /&gt;1. Install Terminal Emulator to use the shell&lt;br /&gt;&lt;br /&gt;2. just follow the screenshot to say 'Hello Android!' :)&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_2xGPUuRo1sg/SXNIr2LQ6kI/AAAAAAAAAcY/LGX1fEmJ1Rs/s1600-h/helloandroid.png.jpg"&gt;&lt;img style="cursor: pointer; width: 400px; height: 267px;" src="http://1.bp.blogspot.com/_2xGPUuRo1sg/SXNIr2LQ6kI/AAAAAAAAAcY/LGX1fEmJ1Rs/s400/helloandroid.png.jpg" alt="" id="BLOGGER_PHOTO_ID_5292653905204800066" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;in java we import Toast widget with&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;import android.widget.Toast;&lt;br /&gt;&lt;/blockquote&gt;In jython(roid), just type in interpreter:&lt;br /&gt;&lt;blockquote&gt;&gt;&gt;&gt; from android.widget import Toast&lt;br /&gt;&lt;/blockquote&gt;Python rocks!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11055785-9027751945538982835?l=blog.gasolin.idv.tw' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.gasolin.idv.tw/feeds/9027751945538982835/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=11055785&amp;postID=9027751945538982835' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11055785/posts/default/9027751945538982835'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11055785/posts/default/9027751945538982835'/><link rel='alternate' type='text/html' href='http://blog.gasolin.idv.tw/2009/01/jythonroid-on-dev-phone.html' title='Jythonroid works on Dev Phone!'/><author><name>gaso lin</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh6.googleusercontent.com/-RYFnmJigzcM/AAAAAAAAAAI/AAAAAAAAB6E/0c6RsEHTN-c/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_2xGPUuRo1sg/SXNIc0PVM6I/AAAAAAAAAcQ/odAxGXphfSs/s72-c/jythonroid.png.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-11055785.post-7880010088177072704</id><published>2009-01-12T23:43:00.004+08:00</published><updated>2009-01-13T00:10:33.738+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Android'/><title type='text'>Android 應用程式排行</title><content type='html'>&lt;a href="http://www.android.com/market/"&gt;Android Market &lt;/a&gt; 本身尚未提供網頁版本，只能透過實機來查看應用程式的下載與評論狀況。這對於還沒有拿到實機的開發者來說相當不方便。&lt;br /&gt;&lt;br /&gt;還好現在網路上已經出現了一些解決方法：&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.cyrket.com/"&gt;cyrket&lt;/a&gt; 提供了 Android Market 的網頁介面版本。可以透過 &lt;a href="http://www.cyrket.com/"&gt;cyrket&lt;/a&gt;  來查看最近的使用者評論。&lt;br /&gt;&lt;br /&gt;要得知最熱門應用程式，可以參考 &lt;a href="http://atrackdog.a0soft.com/"&gt;aTrackDog&lt;/a&gt; 網站提供的排行榜。&lt;br /&gt;&lt;br /&gt;想看各個應用程式的下載總數排行，則可以參考 &lt;a href="http://androidstats.com/ranking/applications"&gt;Android Market Place Rankings&lt;/a&gt; （均不提供詳細下載數目）。&lt;br /&gt;&lt;br /&gt;PS：下載數可以從側面顯示應用程式的普及率。但是應用程式的排行最理想的參考數值，則應該是使用者下載之後仍然保留在機器中繼續使用的數目（即 Active Install 數目）。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11055785-7880010088177072704?l=blog.gasolin.idv.tw' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.gasolin.idv.tw/feeds/7880010088177072704/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=11055785&amp;postID=7880010088177072704' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11055785/posts/default/7880010088177072704'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11055785/posts/default/7880010088177072704'/><link rel='alternate' type='text/html' href='http://blog.gasolin.idv.tw/2009/01/android.html' title='Android 應用程式排行'/><author><name>gaso lin</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh6.googleusercontent.com/-RYFnmJigzcM/AAAAAAAAAAI/AAAAAAAAB6E/0c6RsEHTN-c/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-11055785.post-1032366171589254937</id><published>2008-12-30T11:44:00.003+08:00</published><updated>2008-12-30T11:53:19.776+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='design'/><title type='text'>緊湊</title><content type='html'>&lt;blockquote&gt;Keep in mind the screen size of 480 x 320 pixels and use that as a motivation to focus the user interface on the essentials. You don't have the room to include design elements that aren't absolutely necessary, and &lt;br /&gt;crowding user interface elements makes your application unattractive and difficult to use. &lt;br /&gt;螢幕就只有 480x320 這麼點大，促使我們必須盡量合理地利用每吋的空間。&lt;br /&gt;在設計時我們不該在螢幕上放置不必要元素。&lt;br /&gt;擁擠的螢幕配置讓我們的程式變得難用而不吸引人。&lt;br /&gt;-- iphone Human Interface Guidelines&lt;/blockquote&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11055785-1032366171589254937?l=blog.gasolin.idv.tw' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.gasolin.idv.tw/feeds/1032366171589254937/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=11055785&amp;postID=1032366171589254937' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11055785/posts/default/1032366171589254937'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11055785/posts/default/1032366171589254937'/><link rel='alternate' type='text/html' href='http://blog.gasolin.idv.tw/2008/12/essentials.html' title='緊湊'/><author><name>gaso lin</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh6.googleusercontent.com/-RYFnmJigzcM/AAAAAAAAAAI/AAAAAAAAB6E/0c6RsEHTN-c/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-11055785.post-9216576983724222545</id><published>2008-12-25T12:11:00.002+08:00</published><updated>2008-12-25T12:16:33.631+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='OMNET++'/><title type='text'>OMNET++ 4.0</title><content type='html'>原來 OMNET++ 4.0 &lt;a href="http://www.omnest.com/webdemo/ide/"&gt;有 IDE 可用了&lt;/a&gt;呀，真是相當驚人。&lt;br /&gt;&lt;br /&gt;另外，3.2 版也有 &lt;a href="http://www.dlr.de/kn/en/desktopdefault.aspx/tabid-4979/8336_read-14161/"&gt;xMIPv6 Framework&lt;/a&gt; 可以用了，可以根據 xMIPv6 修改，來支援 HMIPv6、SMIPv6、甚至是 NEMO 等衍生 protocol。&lt;br /&gt;整個 Framework 是從 INET 修改而來，&lt;a href="http://www.kn.e-technik.uni-dortmund.de/content/view/232/lang,de/"&gt;說明在這&lt;/a&gt;。要是早幾年出來，我的論文就不必用麻煩的 NS-2 模擬啦。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11055785-9216576983724222545?l=blog.gasolin.idv.tw' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.gasolin.idv.tw/feeds/9216576983724222545/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=11055785&amp;postID=9216576983724222545' title='6 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11055785/posts/default/9216576983724222545'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11055785/posts/default/9216576983724222545'/><link rel='alternate' type='text/html' href='http://blog.gasolin.idv.tw/2008/12/omnet-40.html' title='OMNET++ 4.0'/><author><name>gaso lin</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh6.googleusercontent.com/-RYFnmJigzcM/AAAAAAAAAAI/AAAAAAAAB6E/0c6RsEHTN-c/s512-c/photo.jpg'/></author><thr:total>6</thr:total></entry><entry><id>tag:blogger.com,1999:blog-11055785.post-5360520121923129118</id><published>2008-12-19T11:09:00.008+08:00</published><updated>2008-12-19T11:18:32.345+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Android'/><title type='text'>aTrackDog: 來養隻幫你追蹤軟體更新的狗吧</title><content type='html'>&lt;table style="width:auto;"&gt;&lt;tr&gt;&lt;td&gt;&lt;a href="http://picasaweb.google.com/lh/photo/xk1ybHysinwtNviKrdN-vw?feat=embedwebsite"&gt;&lt;img src="http://lh4.ggpht.com/_2xGPUuRo1sg/SUrsr1JeDhI/AAAAAAAAAa0/07XuZHc9Ot0/s800/%E5%9C%96%E7%89%87%208.png" /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style="font-family:arial,sans-serif; font-size:11px; text-align:right"&gt;From &lt;a href="http://picasaweb.google.com/gasolin/ATrackDog?feat=embedwebsite"&gt;aTrackDog&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;br /&gt;&lt;br /&gt;第一次跑去&lt;a href="http://bbs.cool3c.com/article/1795"&gt;癮科科&lt;/a&gt;發文，介紹我跟 &lt;a href="http://ysl-paradise.blogspot.com"&gt;Sam Lu&lt;/a&gt; 合作寫的追蹤 Android 軟體更新程式：aTrackDog。&lt;br /&gt;&lt;br /&gt;這個程式的前身是 Palm 版的 TrackDog。不同之處在於 aTrackDog （Android）可以直接通過網路更新，而 TrackDog （Palm）更多是透過桌面 Sync 來更新，這也是明顯時代在進步之處呀......。&lt;br /&gt;&lt;br /&gt;連結：&lt;a href="http://bbs.cool3c.com/article/1795"&gt;http://bbs.cool3c.com/article/1795&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11055785-5360520121923129118?l=blog.gasolin.idv.tw' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.gasolin.idv.tw/feeds/5360520121923129118/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=11055785&amp;postID=5360520121923129118' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11055785/posts/default/5360520121923129118'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11055785/posts/default/5360520121923129118'/><link rel='alternate' type='text/html' href='http://blog.gasolin.idv.tw/2008/12/atrackdog.html' title='aTrackDog: 來養隻幫你追蹤軟體更新的狗吧'/><author><name>gaso lin</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh6.googleusercontent.com/-RYFnmJigzcM/AAAAAAAAAAI/AAAAAAAAB6E/0c6RsEHTN-c/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh4.ggpht.com/_2xGPUuRo1sg/SUrsr1JeDhI/AAAAAAAAAa0/07XuZHc9Ot0/s72-c/%E5%9C%96%E7%89%87%208.png' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-11055785.post-99946633460264977</id><published>2008-12-08T22:30:00.006+08:00</published><updated>2008-12-08T22:47:43.087+08:00</updated><title type='text'>Demo 導向開發（Demo Driven Development）</title><content type='html'>&lt;blockquote&gt;DEMOS ARE GOOD&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;&lt;embed src="http://blip.tv/play/Ad3zMYr8fA" type="application/x-shockwave-flash" width="480" height="320" allowscriptaccess="always" allowfullscreen="true"&gt;&lt;/embed&gt; &lt;br /&gt;&lt;br /&gt;Kevin Danger 做了一個關於如何發展社群（Growing Your Community）的演講，裡面提到了為了增加專案的可用性，可以運用「Embarrassment Driven Development」（丟臉導向開發）的觀念。亦即為了在上台時講到自己的東西不至於丟臉，會想辦法為台下聽講者加上一些感覺很好用的功能。例如用 quickstart 命令建立一個專案框架，在專案中打幾個指令就可以直接啟動 Web server 等等。&lt;br /&gt;&lt;br /&gt;我覺得不如把這個方法叫做「Demo 導向開發」（Demo Driven Development, 簡寫為 DDD? 3D?），感覺更為貼切。&lt;br /&gt;其一是多在可以 Demo 的場合發佈自己的專案，這樣可以增加群眾與開發者們接觸這個專案的機會（沒錯....有了魔獸/異塵餘生3 誰還天天在改自己的 Open Source 專案？當然是要有事件驅動呀！）。&lt;br /&gt;其二是為了在 Live Demo 中少出錯，在準備 Demo 時的壓力會激發許多靈感。&lt;br /&gt;其三是與聽眾互動的結果，也可以反過來促進專案的進步。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11055785-99946633460264977?l=blog.gasolin.idv.tw' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.gasolin.idv.tw/feeds/99946633460264977/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=11055785&amp;postID=99946633460264977' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11055785/posts/default/99946633460264977'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11055785/posts/default/99946633460264977'/><link rel='alternate' type='text/html' href='http://blog.gasolin.idv.tw/2008/12/demo-demo-driven-development.html' title='Demo 導向開發（Demo Driven Development）'/><author><name>gaso lin</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh6.googleusercontent.com/-RYFnmJigzcM/AAAAAAAAAAI/AAAAAAAAB6E/0c6RsEHTN-c/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-11055785.post-5799361149876930413</id><published>2008-12-05T15:39:00.002+08:00</published><updated>2008-12-05T15:41:43.576+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='python'/><category scheme='http://www.blogger.com/atom/ns#' term='digest'/><title type='text'>保持簡單</title><content type='html'>&lt;blockquote&gt;進行優化必須付出增加空間或計算時間之開銷的代價。 Python 開發人員發現，有些地方長期來看，進行簡單的實做會比「乍看之下更吸引人的額外優化」更好。簡言之，讓事物保持簡單，通常會有所收穫&lt;br /&gt;--美麗程式：Python 的辭典&lt;/blockquote&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11055785-5799361149876930413?l=blog.gasolin.idv.tw' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.gasolin.idv.tw/feeds/5799361149876930413/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=11055785&amp;postID=5799361149876930413' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11055785/posts/default/5799361149876930413'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11055785/posts/default/5799361149876930413'/><link rel='alternate' type='text/html' href='http://blog.gasolin.idv.tw/2008/12/blog-post.html' title='保持簡單'/><author><name>gaso lin</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh6.googleusercontent.com/-RYFnmJigzcM/AAAAAAAAAAI/AAAAAAAAB6E/0c6RsEHTN-c/s512-c/photo.jpg'/></author><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-11055785.post-7566538649063486414</id><published>2008-12-04T09:47:00.001+08:00</published><updated>2008-12-04T09:53:44.352+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='digest'/><title type='text'>As time goes by</title><content type='html'>&lt;blockquote&gt;I have always wished that my computer would be as easy to use as my telephone.&lt;br /&gt;My wish has come true.&lt;br /&gt;I no longer know how to use my telephone.&lt;/blockquote&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11055785-7566538649063486414?l=blog.gasolin.idv.tw' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.gasolin.idv.tw/feeds/7566538649063486414/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=11055785&amp;postID=7566538649063486414' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11055785/posts/default/7566538649063486414'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11055785/posts/default/7566538649063486414'/><link rel='alternate' type='text/html' href='http://blog.gasolin.idv.tw/2008/12/as-days-goes-by.html' title='As time goes by'/><author><name>gaso lin</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh6.googleusercontent.com/-RYFnmJigzcM/AAAAAAAAAAI/AAAAAAAAB6E/0c6RsEHTN-c/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-11055785.post-7946360776181538183</id><published>2008-12-03T22:52:00.003+08:00</published><updated>2008-12-03T22:57:04.360+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Android'/><title type='text'>Android 上的 3DMark</title><content type='html'>&lt;object width="425" height="344"&gt;&lt;param name="movie" value="http://www.youtube.com/v/RqKCam7wgws&amp;color1=0xb1b1b1&amp;color2=0xcfcfcf&amp;feature=player_embedded&amp;fs=1"&gt;&lt;/param&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;/param&gt;&lt;embed src="http://www.youtube.com/v/RqKCam7wgws&amp;color1=0xb1b1b1&amp;color2=0xcfcfcf&amp;feature=player_embedded&amp;fs=1" type="application/x-shockwave-flash" allowfullscreen="true" width="425" height="344"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;br /&gt;&lt;br /&gt;Qualcomm 做的名為「Neocore」的 3D Mark 程式，用來推他們公司的圖型晶片。原來 G1 的 3D 能力也很驚人呀。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11055785-7946360776181538183?l=blog.gasolin.idv.tw' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.gasolin.idv.tw/feeds/7946360776181538183/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=11055785&amp;postID=7946360776181538183' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11055785/posts/default/7946360776181538183'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11055785/posts/default/7946360776181538183'/><link rel='alternate' type='text/html' href='http://blog.gasolin.idv.tw/2008/12/android-3dmark.html' title='Android 上的 3DMark'/><author><name>gaso lin</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh6.googleusercontent.com/-RYFnmJigzcM/AAAAAAAAAAI/AAAAAAAAB6E/0c6RsEHTN-c/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-11055785.post-3728191691128934099</id><published>2008-11-28T09:43:00.003+08:00</published><updated>2008-11-28T09:53:51.615+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Android'/><title type='text'>不含 Google 服務的 Android 山寨機</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://img1.cache.netease.com/mobile/2008/11/27/qiji_07.jpg"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 500px; height: 375px;" src="http://img1.cache.netease.com/mobile/2008/11/27/qiji_07.jpg" border="0" alt="" /&gt;&lt;/a&gt;&lt;br /&gt;(圖片來自該網站)&lt;br /&gt;&lt;br /&gt;http://tech.163.com/mobile/08/1127/10/4ROIG2RF0011179O.html&lt;br /&gt;&lt;br /&gt;在 Android 平台公布原始碼後，對岸的手機廠短時間內就將介面自行簡體中文化，並加入簡單的中文輸入法功能（非官方），組合出一套可以販賣的產品。&lt;br /&gt;&lt;br /&gt;Android 平台是完全免費的（對山寨機廠來說，WM 好像也是完全免費的 冏）。由於暫時還沒有 Google 授權，所以這台機器上沒有 Android Market、GMail 這些 Google 自有的應用程式。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11055785-3728191691128934099?l=blog.gasolin.idv.tw' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.gasolin.idv.tw/feeds/3728191691128934099/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=11055785&amp;postID=3728191691128934099' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11055785/posts/default/3728191691128934099'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11055785/posts/default/3728191691128934099'/><link rel='alternate' type='text/html' href='http://blog.gasolin.idv.tw/2008/11/google-android.html' title='不含 Google 服務的 Android 山寨機'/><author><name>gaso lin</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh6.googleusercontent.com/-RYFnmJigzcM/AAAAAAAAAAI/AAAAAAAAB6E/0c6RsEHTN-c/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry></feed>
