<?xml version="1.0" encoding="UTF-8" standalone="no"?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns="http://www.w3.org/2005/Atom" xmlns:blogger="http://schemas.google.com/blogger/2008" xmlns:gd="http://schemas.google.com/g/2005" xmlns:georss="http://www.georss.org/georss" xmlns:openSearch="http://a9.com/-/spec/opensearchrss/1.0/" xmlns:thr="http://purl.org/syndication/thread/1.0"><id>tag:blogger.com,1999:blog-8596053384636689442</id><updated>2026-03-25T14:22:29.858+08:00</updated><category term="BLOGGER HACK"/><category term="Blogger"/><category term="WL-500g HACK"/><category term="LinkStation HACK"/><category term="Android"/><category term="Feed"/><category term="HTC Magic Hack"/><category term="Javascript"/><category term="Google"/><category term="CSS"/><category term="Search Engine"/><category term="Picasa"/><title type="text">Abin's Tech Note</title><subtitle type="html">The Blog used for noting technical related articles</subtitle><link href="https://abintech.twidv.com/feeds/posts/full" rel="http://schemas.google.com/g/2005#feed" type="application/atom+xml"/><link href="https://www.blogger.com/feeds/8596053384636689442/posts/full" rel="self" type="application/atom+xml"/><link href="https://abintech.twidv.com/" rel="alternate" type="text/html"/><link href="http://pubsubhubbub.appspot.com/" rel="hub"/><link href="https://www.blogger.com/feeds/8596053384636689442/posts/full?start-index=26&amp;max-results=25" rel="next" type="application/atom+xml"/><author><name>Abin</name><uri>http://www.blogger.com/profile/11723161715531068787</uri><email>noreply@blogger.com</email><gd:image height="32" rel="http://schemas.google.com/g/2005#thumbnail" src="//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjeWuiw4mDiqf2k7uj4szC6I3hS70kEW-tm_gpLFxHpOwDP3VyZBV-1oG6OoQnI3ur10nD1kRIZgRcmN_lAoIeHbdUsFg89XUxEscnje6FaL8gWM3_jswkM1dTjJ9Y54Q/s220/Portrait-Blog-S.gif" width="32"/></author><generator uri="http://www.blogger.com" version="7.00">Blogger</generator><openSearch:totalResults>99</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-8596053384636689442.post-5860580516518513023</id><published>2011-05-15T16:31:00.002+08:00</published><updated>2011-05-15T16:31:00.521+08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Android"/><category scheme="http://www.blogger.com/atom/ns#" term="HTC Magic Hack"/><title type="text">更換手機的基頻 RADIO 版本</title><content type="html">&lt;p&gt;之前的幾篇改機文章，初看覺得很複雜很多名詞，像是 SPL (Second Program Loader, 類似 BIOS)、Recovery（復原用的開機印象檔）、ROM（一般稱作客製化韌體，就是主要操作手機的作業系統和軟體）等等，之所以有那麼多東西，是因為 Android 系統架構的彈性，讓這些分層負責的軟體都能獨立且分開升級，彼此之間有的會有關連性，刷壞了不起就是回到 fastboot 模式重刷就好，這也是為什麼人稱 HTC Magic 這隻手機是刷不壞的「神器」，是因為每個軟體模組都有人把它抽離出來，提供獨立升級和維護的能力。講到這除了一般軟體的部份，手機最重要的當然是講電話，Android 把負責控制無線網路和通話信號基頻模組 (Baseband Module) 的系統軟體也獨立出來，稱作通訊模組 (RADIO)，一樣能單獨升級改版。一般官方正式的 OTA (Over-The-Air) 線上升級也套用類似的原理，廠商在升級檔裡只包入需要升級的部份，就能在對手機的最小影響下達到更新手機的目的。我的手機換客製化韌體之前，曾乖乖上到 HTC 最後一次提供的升級韌體（詳見&lt;a href="http://abintech.twidv.com/2010/05/magic-75157516-root.html" target="_blank"&gt;此文&lt;/a&gt;），那次升級除了軟體部份，也一併將我的 RADIO 升級到 6.35.08.29，之後不管怎麼刷機改機，RADIO 模組都沒被動過。後來在論壇爬文的時候，某次得知 RADIO 有了新版，據說能修正通話品質和 3G 連線的問題，忍不住在某次刷機前順手就給換新了（拿新版 RADIO 檔在 fastboot 模式下做），至此我的 RADIO 就停留一直在 6.35.10.18 的版本。&lt;/p&gt;
&lt;p&gt;之前也提過，Magic 的刷機界分作兩派：一派是 OR (Old Radio)、用舊版 3.22 的基頻和原廠 1.33 的 SPL 為基礎修改出來的韌體，以穩定為號召；另一派則是 NR (New Radio)，用新版 6.35 的基頻和 1.76 的 SPL 為基礎來修改的韌體，目標是追求新功能和彈性。我從官方升級後到新版 RADIO 就再沒回去過，一直以來都是刷 NR 這派釋出的韌體，雖曾經心動、想換一下 OR 試試「敵營」的韌體看看，不過看到要換幾種底層的軟體模組怕麻煩就懶惰了。網路上雖有不少 DIY 升級降級的文章，想我總是「喜新厭舊」，所以就賴著 NR 都不曾嘗試。就在最近一直在玩 Android 2.3.3 的最新版韌體，突然看到又有新版的 RADIO 6.35.16.19 出現，正想 Google 一下如何升級的當下，誤打誤撞讓我找到能輕易更新 RADIO 的神器：RadioSwitchGUI（論壇上的&lt;a href="http://forum.xda-developers.com/showthread.php?t=794450" target="_blank"&gt;原文在此&lt;/a&gt;，v4.1 的直接&lt;a href="http://dl.dropbox.com/u/10686426/RadioSwitchGUI_v4.rar" target="_blank"&gt;下載連結在此&lt;/a&gt;），依照說明重新開機進到 fastboot 模式（按著返回鍵、然後再按電源鍵開機），然後....用 GUI 按按鈕就能達到升級的目的，什麼下載新版軟體、下什麼命令都不用（因為都被包在一起），真是太簡單啦！用這個工具一下就升級到最新的 RADIO 了！&lt;/p&gt;
&lt;p&gt;這個是 RadioSwitchGUI 的主畫面，很直覺，就是把所有功能和按鈕放在介面上，右邊則有操作的 Log 紀錄。&lt;br&gt;
&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgifmWjchlX9501rMI3njsXvuTHngZN1FK5bTpTAcPmer_84Swj6UH7zqLb0zIes6IUz-8JR6GF4GZfv-hPKLguHrZk1_MxiCGuWhcwaX5mpKakm43dxOhR5ptcur-tuO9AyveeWCOeyVft/s1600/RadioSwitchGUI.png"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 600px; height: 426px;" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgifmWjchlX9501rMI3njsXvuTHngZN1FK5bTpTAcPmer_84Swj6UH7zqLb0zIes6IUz-8JR6GF4GZfv-hPKLguHrZk1_MxiCGuWhcwaX5mpKakm43dxOhR5ptcur-tuO9AyveeWCOeyVft/s600/RadioSwitchGUI.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5605374011867356098" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;a name='more'&gt;&lt;/a&gt;
&lt;p&gt;仔細看一下軟體介面，原來這個工具的目的其實不是單純用來升級 RADIO，顧名思義，該軟體內含了所有 OR 和 NR 切換所需的所有映像檔！此外裡面還放了 1.6.2 和 1.7.0 的 Recovery，依使用者需要可以替換，真是神奇豐富的好物啊！說穿了，也許背後一樣是呼叫 fastboot 來刷各種軟體模組，不過替使用者設計了方便操作的 UI，還封裝了所有所需的映像檔，這樣對要常切換 RADIO (OR &amp;lt;-&amp;gt; NR) 的刷機愛好者來說，真的是太方便了。&lt;/p&gt;
&lt;p&gt;程式左上角區塊，直接提供替換成 OR (Old Radio) 或 NR (New Radio) 的整合功能（這是大工程，所以預設建議把系統 cache 一併清掉）&lt;br&gt;
&lt;img src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh6DlwHqWDKsadNQBpHpOWWBpuvTg5_K_ThsC1BQv1Fq_mXhcmyKOLjsw_t6F_swO2_Sp8o79zlF5refN8Z0gtQDUqUGdBrVpGMHN4vyHQk7vIwi5qyVV5zENloILYxxqkV8hSGEhe6fCt7/s400/SwitchOR-NR.png" border="0"id="BLOGGER_PHOTO_ID_5605374018912377010" /&gt;&lt;/p&gt;
&lt;p&gt;再下來提供分開刷特定模組的按鈕（包含 Radio, SPL 和 Recovery），點選按鈕先選擇需要的映像檔（IMGFiles 目錄下附了最新版本的檔案，以後有新版也可以自己複製進來後選擇），直接刷下去 (Flash) 就行了。&lt;br&gt;
&lt;img src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgNygPgTG2m3J18ko-H6YDYE96lZBV7lw43JPSo1Cm78yKfwah1JIiCsBB3mOdFdSlFWJ0p1h4199yAgPipivC9Iz2he5eyz7be_kyPej7wDRX4hQn9dL67_BoyLRZ3NLfCZsDiiD0MKO_Z/s1600/Flash.png" border="0" id="BLOGGER_PHOTO_ID_5605374017680917202" /&gt;&lt;/p&gt;
&lt;p&gt;倒數第二個區塊有用過客製 Recovery 的人就知道，Recovery 裡面有備份整個 NAND 記憶體的功能（nandroid backup，類似 Ghost，備份手機的系統和軟體設定），這邊是提供你透過系統備份來還原的功能。最下面的 utility function 其實 Recovery 裡面都有，是用來清 cache和分割區以便重刷韌體時使用的，另外旁邊 Reboot &amp;amp; Shutdown 手機的按鈕應該很一目了然，也是方便刷完重開使用。本程式也提供 dump 系統版本的功能，相關資訊會顯示在右邊的 Log 區，像我刷完後最終的版本為：&lt;br&gt;
&lt;img src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhQE1msnLC3CP0KNfwCn5afZvB54TwdAsaOW2VMLoFKZqBgwlMI3YB2V2W9rneXyIkWrlzm5Fb6o7RVwXCAL3FGeX7PHnkUi01dLMjlmxelwfYeR-9kSf2F_oYeaQWIVKVK0ihfmMDTtIJJ/s400/Log.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5605374009367037602" /&gt;&lt;/p&gt;
&lt;p&gt;Radio:6.35.16.19 + SPL: 1.76.2007，Security: off，表示我為 NR，S-OFF 的破解狀態，其實這些資訊 fastboot 後手機螢幕上也看得到，這裡表示該軟體的確能偵測當下的軟體模組版本。&lt;/p&gt;
&lt;p&gt;開機完來檢查版本，到系統設定-&amp;gt;關於手機-&amp;gt;，檢查刷機完各個軟體模組的實際版本 (基頻版本 = RADIO = 6.35.16.19)&lt;br&gt;
&lt;img src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh-MQixa69Z7M-KgTI5BjbdllyXqYDjc4KT5Zv1UCvB1PpRTP_etGfC1k5kRa3pKRyh2RtDR6yazBq3xv6b_hbYihIYV8vLZ7O2dYeRvriEgX4YaWnqrSlIdTB3eyrOkQX0EkNqQfE95Kkd/s400/Version.png" border="0" id="BLOGGER_PHOTO_ID_5605374023471721570" /&gt;&lt;/p&gt;
&lt;p&gt;最後其實還是有一些使用上的注意事項。首先，你的手機一定要先被「整治」過（就是換過 Engineering SPL，狀態是 S-OFF，也就是有 Root 權限啦..），此外這玩意的介面是用 Java 寫的，執行的主程式 WinRun.bat 其實只是個呼叫 jar 檔的批次檔，因此系統裡一定要先裝有 Java 的 Runtime Environment （也就是 JRE，系統沒有的請到&lt;a href="http://www.java.com/zh_TW/download/index.jsp" target="_blank"&gt;這裡下載安裝&lt;/a&gt;）。讓手機先進到 fastboot 模式（一樣要確定電腦裝置管理員有抓到手機裝置），執行 RadioSwitchGUI 解開後的 WinRun.bat，最後就是勇敢地刷下去，真是方便啦！不過我還是沒動力換 OR 改刷其他派韌體，只單純升級 RADIO 到最新版就好啦～&lt;/p&gt;
&lt;p&gt;備註：以上的工具、軟體版本和映像檔僅供 HTC Magic 手機使用，實際上我的確有操作過，或許其他 Android 手機的架構原理大同小異，但千萬別貿然拿去直接刷非 Magic 的手機，後果自負啊！也別問我怎麼套到其他的手機上，問這類問題前可以先送我一隻該手機，我玩一陣子以後再回答你的問題～XD&lt;/p&gt;</content><link href="https://abintech.twidv.com/feeds/5860580516518513023/comments/default" rel="replies" title="張貼留言" type="application/atom+xml"/><link href="https://abintech.twidv.com/2011/05/radio.html#comment-form" rel="replies" title="5 個意見" type="text/html"/><link href="https://www.blogger.com/feeds/8596053384636689442/posts/default/5860580516518513023" rel="edit" type="application/atom+xml"/><link href="https://www.blogger.com/feeds/8596053384636689442/posts/default/5860580516518513023" rel="self" type="application/atom+xml"/><link href="https://abintech.twidv.com/2011/05/radio.html" rel="alternate" title="更換手機的基頻 RADIO 版本" type="text/html"/><author><name>Abin</name><uri>http://www.blogger.com/profile/11723161715531068787</uri><email>noreply@blogger.com</email><gd:image height="32" rel="http://schemas.google.com/g/2005#thumbnail" src="//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjeWuiw4mDiqf2k7uj4szC6I3hS70kEW-tm_gpLFxHpOwDP3VyZBV-1oG6OoQnI3ur10nD1kRIZgRcmN_lAoIeHbdUsFg89XUxEscnje6FaL8gWM3_jswkM1dTjJ9Y54Q/s220/Portrait-Blog-S.gif" width="32"/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" height="72" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgifmWjchlX9501rMI3njsXvuTHngZN1FK5bTpTAcPmer_84Swj6UH7zqLb0zIes6IUz-8JR6GF4GZfv-hPKLguHrZk1_MxiCGuWhcwaX5mpKakm43dxOhR5ptcur-tuO9AyveeWCOeyVft/s72-c/RadioSwitchGUI.png" width="72"/><thr:total>5</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8596053384636689442.post-8169460986002145479</id><published>2011-05-10T20:38:00.002+08:00</published><updated>2011-05-10T20:38:00.096+08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Android"/><category scheme="http://www.blogger.com/atom/ns#" term="HTC Magic Hack"/><title type="text">更換 Android 手機的開機畫面 (Boot Splash Image)</title><content type="html">&lt;p&gt;這篇應該是老掉牙的文章了，只是我懶惰做了也沒有記錄下來，臨時要用又要忘記怎麼做，所以在這還是整理一下作法。一般手機開機都會有製造廠商宣示用的開機畫面，換到 Android 平台，就連門號系統商客製化也要插上一腳，硬是塞進自己的服務 Logo，像我的 HTC Magic 乃台灣正式上市的第一隻 Android 手機，綁的是中華電信，所以從入手到現在開機的第一個畫面還是那顆橘色的哈密瓜、表示內建中華電信的 Hami 客製化服務。後來即便我幾經改機、重刷系統，Hami 都不知道丟到那裡去了，那個開機畫面因為獨立於客製化韌體的映像檔外，所以怎樣也沒被改到過。客製化韌體通常都會內附自己修改過的開機「動畫」（算是第二開機畫面吧），雖說這才是開機過程漫長等待時最常停留的畫面，但這和開機第一個靜態畫面的 Splash 所在位置不一樣，得要特別處理才動得到。雖然也不是一天到晚在重開，但每次看到那顆哈密瓜就想把它換掉，總算有天心血來潮，順手就處理了。&lt;/p&gt;
&lt;p&gt;本文其實完全參考 &lt;a href="http://forum.xda-developers.com/" id="znpo" title="XDA"&gt;XDA&lt;/a&gt; &lt;a href="http://forum.xda-developers.com/showthread.php?t=467693" target="_blank"&gt;這篇文章&lt;/a&gt;的作法，坊間針對不同 Android 手機、不同版本看似有不同的處理工具和流程，但基本上原裡都一樣，我還是比較喜歡用 Android SDK 裡原生的工具來處理。需要的工具可以到原文下載，不過要有論壇註冊的帳號，這裡則備份分流連結下載：&lt;a href="http://www.box.net/shared/ds9pe17on0" target="_blank"&gt;Boot_images.zip&lt;/a&gt;。&lt;/p&gt;
&lt;p&gt;首要工作是先找一張自己喜歡的圖片當作開機畫面。原文裡也有不少，我翻了好久也在裡面挑了一張，想自己做專屬的圖片也行，不過要注意圖片解析度大小，必須符合手機的原生解析度才清楚，像我的 Magic 原生解析度是 320x480，所以還要用軟體來裁切尺寸。&lt;/p&gt;
&lt;p&gt;坊間圖檔格式 bmp, jpg, png 那麼多，並不是直接把圖檔丟進手機就能使用，所以接下來的關鍵步驟是「轉檔」，要轉成能放在手機裡當作桌面的檔案格式。這裡的轉檔工具叫 CreateG1Splash，作用是把圖檔轉成手機開機畫面格式（該軟體在上述的工具包裡，解壓縮的 Create 目錄下）。用法很簡單，只要 Open 選擇要轉的圖檔，看到圖片無誤後，直接壓下 Convert 轉換，轉檔完會在原圖檔的目錄下產生一個新檔案，檔名叫 mysplash.rgb565，產生無誤就轉檔成功啦！&lt;/p&gt;
&lt;p&gt;左邊是原來 Hami 的開機圖（從別人開箱文偷來的照片）、右邊是 CreateG1Splash 的畫面，只有兩個操作按鈕，中間是我現在用的開機圖，在&lt;a href="http://forum.xda-developers.com/showpost.php?p=3300371&amp;amp;postcount=66" target="_blank"&gt;論壇裡&lt;/a&gt;也能找到&lt;br&gt;
&lt;img src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg4r2qHMDoprHO_GvjLkQek8Lbs9sEKLlLuRCmu-EVVwov9x0L9quBUApNnMlpXy2-OoffZPWZa6UppScq6vvnRpir1Zf04UqpTFKXWTQl6R99NNqKJk4xPNUjCrmqKj1YGvBLzaktdGxeq/s1600/Hami.jpg" border="0" id="BLOGGER_PHOTO_ID_5605004881313603570" /&gt; &lt;img src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjjAJAPsmecncZSUZdN3a4zWAIZlYRUcYSPStcxvtUQuBjpeoVyeR3pJfcLQZ6U5YpdVH36iV7wziBtvuakQ4JDiUXPZXE-owTFD70WSi04zqCulNxXRPnC63KnzYfucIjVccGxNQfjpkKK/s1600/CreateG1Splash.jpg" border="0" id="BLOGGER_PHOTO_ID_5605004887875170178" /&gt;&lt;/p&gt;
&lt;a name='more'&gt;&lt;/a&gt;
&lt;p&gt;最後的步驟就是把該圖檔刷進手機。在 SDK 的工具目錄下，除了常用的 adb.exe，有另一個在 fastboot 開機模式下用的公用程式：fastboot.exe，很多更換開機畫面的作法背地裡其實也只是寫批次檔 call 這個程式。沒裝 SDK 的話上述的工具包裡也有附（在 fastboot 目錄下）。先把手機關機，按著返回鍵、然後再按電源鍵開機，這時候會進到 fastboot 的模式（某些客製化韌體選重新開機時，能直接選擇從 fastboot 重開，用這個選項更方便），請確定電腦能抓到 fastboot 的手機裝置（裝置管理員會看到一個 Android USB Device，看不到的話請參考這篇文章：&lt;a href="http://abintech.twidv.com/2010/03/htc-magic_11.html" target="_blank"&gt;HTC Magic 與電腦正確連線&lt;/a&gt;），打開 DOS 視窗切換到 fastboot.exe 和剛剛那個開機畫面檔所在的目錄，執行下列命令：&lt;/p&gt;
&lt;p&gt;&lt;code class="cmd"&gt;fastboot flash splash1 mysplash.rgb565&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;這樣就把剛剛自己轉檔的圖片刷進手機裡，作為開機畫面啦！原 Po 提到如果不是改機過用了新的 SPL (1.76.2007)，則可能要再設另一個 splash2 的 option：&lt;/p&gt;
&lt;p&gt;&lt;code class="cmd"&gt;fastboot flash splash2 mysplash.rgb565&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;不過我改過機也換成新的 SPL，所以下這個命令不會成功（下失敗沒有後遺症啦..）。刷完機就重新開機看看效果吧，可以用按鍵操作手機 Power Down 重開，也可以利用 fastboot 下重開命令：&lt;/p&gt;
&lt;p&gt;&lt;code class="cmd"&gt;fastboot reboot&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;靜態的開機畫面、被電信商綁去的 Logo 總算換成自己要的圖片啦！接下來會進到開機動畫、算是會動的開機畫面，這部份因為牽扯客製化韌體，修改便不在本文討論的範圍囉～&lt;/p&gt;</content><link href="https://abintech.twidv.com/feeds/8169460986002145479/comments/default" rel="replies" title="張貼留言" type="application/atom+xml"/><link href="https://abintech.twidv.com/2011/05/android-boot-splash-image.html#comment-form" rel="replies" title="0 個意見" type="text/html"/><link href="https://www.blogger.com/feeds/8596053384636689442/posts/default/8169460986002145479" rel="edit" type="application/atom+xml"/><link href="https://www.blogger.com/feeds/8596053384636689442/posts/default/8169460986002145479" rel="self" type="application/atom+xml"/><link href="https://abintech.twidv.com/2011/05/android-boot-splash-image.html" rel="alternate" title="更換 Android 手機的開機畫面 (Boot Splash Image)" type="text/html"/><author><name>Abin</name><uri>http://www.blogger.com/profile/11723161715531068787</uri><email>noreply@blogger.com</email><gd:image height="32" rel="http://schemas.google.com/g/2005#thumbnail" src="//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjeWuiw4mDiqf2k7uj4szC6I3hS70kEW-tm_gpLFxHpOwDP3VyZBV-1oG6OoQnI3ur10nD1kRIZgRcmN_lAoIeHbdUsFg89XUxEscnje6FaL8gWM3_jswkM1dTjJ9Y54Q/s220/Portrait-Blog-S.gif" width="32"/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" height="72" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg4r2qHMDoprHO_GvjLkQek8Lbs9sEKLlLuRCmu-EVVwov9x0L9quBUApNnMlpXy2-OoffZPWZa6UppScq6vvnRpir1Zf04UqpTFKXWTQl6R99NNqKJk4xPNUjCrmqKj1YGvBLzaktdGxeq/s72-c/Hami.jpg" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8596053384636689442.post-7231555875274462118</id><published>2010-09-17T22:16:00.003+08:00</published><updated>2010-09-18T01:09:25.213+08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Android"/><category scheme="http://www.blogger.com/atom/ns#" term="HTC Magic Hack"/><title type="text">更換預設電量圖示</title><content type="html">&lt;p&gt;原來 Android OS 裡面在顯示手機電量的方式，是在畫面右上角、狀態列裡右邊的電池圖示，雖然也有所剩電量比例，但圖示很小、分不出到底還剩下多少電，坊間雖然有一狗票電池監控的軟體、或能放在桌面的電量 Widget，但怎樣都沒有在狀態列裡方便。於是我找了個能在狀態列顯示電量、而且是以「百分比」字樣顯示的 &lt;a href="http://code.google.com/p/battery-indicator/" target="blank_"&gt;Battery Indicator&lt;/a&gt;，功能陽春但免費，一掛就沒拿下來過了。（付費版的 Battery Indicator Pro 多了一個功能，就是可以根據電量用不同的顏色來識別，官網還有原始碼下載，作者真是佛心來的）&lt;/p&gt;
&lt;p&gt;不過一個狀態列上有兩個電量標示圖示感覺挺累贅的，Android 原生的又關不掉，如果能拿能顯示剩餘電量百分比的圖示，直接取代原生功能該有多好！不但不用多裝個軟體來顯示、多浪費狀態列空間，也算是強化原生的電量顯示功能。最早在對岸有看過類似的修改文章，不外乎就是拉出系統電量顯示的圖示 resource 檔，手動整套翻新再重新封裝，然後再想辦法塞回手機取代掉原來的。不過這些手動改檔封檔的動作太過繁複，每個人愛的圖示組又都不一樣，所以看過該文章參考就算了！這兩天在 Mobile01 看到網友分享修改電量百分比圖示的 Step by Step 教學文，馬上就來依樣畫葫蘆，沒想到一次就成啦！當下就把 Battery Indicator 移除，因為我有更炫更棒的圖示啦！&lt;/p&gt;
&lt;p&gt;更換圖示前我手機的狀態列。右上角那個綠色電池就是 Android 預設的電量圖示，看不出剩餘電量的百分比，左上角那個有百分比的圖示是裝 Battery Indicator 產生的&lt;br&gt;
&lt;img src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjU0vx4JIVL4tnnnxQg164hFDjxjPckh9NfvIz1Jrjr3HfdAyMgaj7WcvqoXzAm-QPHoB9qAWpvye0KCuEGBVpX-qXsix6zY1t-U-X2yNMjf8I520yYol8eLj4IVxYhUrB3aOP7TuLFS8u7/s1600/Battery-1.png" border="0"id="BLOGGER_PHOTO_ID_5517762964656264722" /&gt;&lt;br&gt;
更換圖示後我的狀態列。右上角已經換成有百分比的圖示（而且有漸層色變化），Battery Indicator 就可以移除省記憶體，狀態列也更簡潔一點啦！&lt;br&gt;
&lt;img src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiXvLcLyMFBHlZ4y4q0FJtfZo0ENpn8h6x66NpXvjwt0XteRj9ZZQmIS0RK5aX87CaZeLFaxdQSTJ7dSwV6pFhb8qmHbruFNRMKDwMYftPUotpnCAsbZtFKesDmYi_JYM-eBjyQVcY4avmF/s1600/Battery-2.png" border="0" id="BLOGGER_PHOTO_ID_5517762961729205506" /&gt;&lt;/p&gt;
&lt;a name='more'&gt;&lt;/a&gt;
&lt;p&gt;詳情請參閱圖文並茂的原文：&lt;a href="http://www.mobile01.com/topicdetail.php?f=566&amp;t=1750016" target="blank_"&gt;線上製作個人化的電池％比圖示&lt;/a&gt;。&lt;/p&gt;
&lt;p&gt;步驟的原理是：提供這項服務的強者網友（服務網址在此：&lt;a href="http://circle.glx.nl/" target="blank_"&gt;Ultimate Online Theme Kitchen&lt;/a&gt;），把選擇和製作圖示的功能網頁化（包含自己決定樣式），決定圖示後，讓使用者上傳自己手機裡的 resource 檔 (\system\framework\framework-res.apk)，透過後端服務幫你替換圖示並重新封裝，順道還幫你做成安裝用的 zip 壓縮檔。因為這個修改牽扯到系統顯示，因此一定要在 recovery 模式、透過自製 recovery 內建的刷機功能把修改過的 resource 刷入，重新開機就大功告成了。不過開始前請檢查並注意以下幾點：&lt;/p&gt;
&lt;p&gt;&lt;ol&gt;
&lt;li&gt;只支援 root 過、有自訂 recovery 的修改手機 (原官方韌體不支援)&lt;/li&gt;
&lt;li&gt;網友回報部份廠牌型號的手機不會 work (Moto, CHT800, Samsung I9000，我自己的 Magic + Android 2.1 很順利)&lt;/li&gt;
&lt;li&gt;檢查手機的 \system\framework\ 目錄下是不是有 framework-res.odex （有 odex 檔的手機，修改過的 resource 檔無法套用）&lt;/li&gt;
&lt;/ol&gt;&lt;/p&gt;
&lt;p&gt;沒問題的話連去&lt;a href="http://circle.glx.nl/" target="blank_"&gt;服務網頁&lt;/a&gt;（目前仍持續在更新中），首頁有幾個選項，第一個是套用現成的圖示組，第二個能自訂樣式（另外選項和修改電量%圖示無關）。接下來進入樣式選擇，最重要的是先決定狀態列背景色，有的是淺色 (白色)，那百分比字樣當然要選擇深色系，像我的 Magic 上了 Android 2.1，用的是深色背景，那麼就要挑 black taskbar 的。第二頁則是詢問要不要「順道」替換聊天和其他狀態列圖示（沒勾 include icons 就不會更換），第三個步驟是上傳你手機裡的 framework-res.apk (可以用 "adb pull \system\framework\framework-res.apk ." 把檔案從手機裡拉出來)，上傳完該服務會幫你製作安裝用的壓縮檔、並告訴你檔名，讓你到&lt;a href="http://circle.glx.nl/pickup/" target="blank_"&gt;下載網頁&lt;/a&gt;下載。下載檔案後，只要把該 zip 檔複製到手機記憶卡的根目錄、進到 recovery 模式 (關機，再用 Home+Power 開機)，用內建的 Flash zip from sdcard 功能來刷機（怕死的話記得先備份），刷完重開、更換電量圖示的工作就搞定啦！&lt;/p&gt;
&lt;p&gt;更換圖示服務的&lt;a href="http://circle.glx.nl/" target="blank_"&gt;首頁&lt;/a&gt;，只要點選照螢幕提示做就能產生對應的改機檔&lt;br&gt;&lt;img src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEijDZdwCPtBvB2zTpPE5RezaN4Y_N6ModmujHICn3MafPMKYLPTcGJcZTIakpqaOY-cXPSZcQzrqaDjy4jHRID98UABAlCjVAPNy3X2wHAqg_owRKcuHkpTSHBcpzirxmGw5IM9Mv0qnbsk/s1600/Battery-3.png" border="0" id="BLOGGER_PHOTO_ID_5517762950009414626" /&gt;&lt;/p&gt;
&lt;p&gt;Hack 那麼簡單，還好一開始沒有去參照對岸的教學文，弄到大粒汗小粒汗（還不一定會成功），不過不知道這個服務的時效性有多久，沒事有空還是先做一下來放著、並記得備份相關檔案，以後要重新刷機的話還都用得到啦～&lt;/p&gt;</content><link href="https://abintech.twidv.com/feeds/7231555875274462118/comments/default" rel="replies" title="張貼留言" type="application/atom+xml"/><link href="https://abintech.twidv.com/2010/09/blog-post.html#comment-form" rel="replies" title="3 個意見" type="text/html"/><link href="https://www.blogger.com/feeds/8596053384636689442/posts/default/7231555875274462118" rel="edit" type="application/atom+xml"/><link href="https://www.blogger.com/feeds/8596053384636689442/posts/default/7231555875274462118" rel="self" type="application/atom+xml"/><link href="https://abintech.twidv.com/2010/09/blog-post.html" rel="alternate" title="更換預設電量圖示" type="text/html"/><author><name>Abin</name><uri>http://www.blogger.com/profile/11723161715531068787</uri><email>noreply@blogger.com</email><gd:image height="32" rel="http://schemas.google.com/g/2005#thumbnail" src="//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjeWuiw4mDiqf2k7uj4szC6I3hS70kEW-tm_gpLFxHpOwDP3VyZBV-1oG6OoQnI3ur10nD1kRIZgRcmN_lAoIeHbdUsFg89XUxEscnje6FaL8gWM3_jswkM1dTjJ9Y54Q/s220/Portrait-Blog-S.gif" width="32"/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" height="72" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjU0vx4JIVL4tnnnxQg164hFDjxjPckh9NfvIz1Jrjr3HfdAyMgaj7WcvqoXzAm-QPHoB9qAWpvye0KCuEGBVpX-qXsix6zY1t-U-X2yNMjf8I520yYol8eLj4IVxYhUrB3aOP7TuLFS8u7/s72-c/Battery-1.png" width="72"/><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8596053384636689442.post-2869319429157247616</id><published>2010-08-09T21:46:00.002+08:00</published><updated>2010-08-09T21:46:00.210+08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Blogger"/><category scheme="http://www.blogger.com/atom/ns#" term="BLOGGER HACK"/><title type="text">官方的分享按鈕 (Share Button)</title><content type="html">&lt;p&gt;一個多月前 Blogger 官方公佈了一個新功能，就是讓你能在 Blog 文章後面，補上一個&lt;a href="http://buzz.blogger.com/2010/06/new-share-buttons.html" target="blank_"&gt;分享按鈕&lt;/a&gt;，讓閱讀文章的讀者，如果喜歡你的文章，能更方便地透過按鈕分享到社群服務上。因為這個分享按鈕還挺小巧好用的，如果用的是官方樣板（就是沒像我愛手賤亂改的），只要兩三個步驟，就可以在 Blog 上啟用這項功能。也因為步驟太簡單，目前也只提供主流的社群服務，像是 Twitter 和 Facebook，另外還有 Email 分享（這個本來也就有）、Blogger 的 Blog This 和 Google Buzz，這樣五個按鈕一組的分享按鈕列就出現了！我好一陣子沒去動 Blogger 樣板，所以這項更新一直沒去動手，很久以前也做過「&lt;a href="http://abintech.twidv.com/2006/12/blog-post_15.html" target="blank_"&gt;訂閱圖示&lt;/a&gt;」、就是讓讀者把文章加入書籤用的，所以一時心血來潮，用本文整理一下放在文章後面用來訂閱和分享的功能。&lt;/p&gt;
&lt;p&gt;開始之前，先確定自己的 Blog 是不是有支援這項官方功能。登入管理介面，到「設計」、「網頁元素」頁面，找到「網誌文章」的區塊，點選編輯後會跳出設定畫面，勾選「分享按鈕」、看一下預覽後儲存，基本上 Blog 就支援這項功能啦，這時候來看看自己的文章，Reload 一下、如果文章後面已經出現分享按鈕，那麼後面文章也不用看了，因為你已經做完啦（代表你的樣板文件 Blogger 認得，而且程式碼有加對地方）！另外，如果有用這個分享按鈕，其實上面那個「顯示電子郵件發佈連結」就不用勾選啦，因為分享按鈕的第一個，作用就是透過電子郵件分享，功能一模一樣，留下一個就好了。&lt;/p&gt;
&lt;p&gt;新增分享按鈕的設定畫面，勾選儲存就好了&lt;br&gt;
&lt;img src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgV8BVB2bb9juOD2COWXK7Eh8o9uNY6cvJ9ZIOrJdqfqNhjo_ztFNFZ8yLzIW14uTuDfJz3SHgVyWoPHNjHY6O1cUahIrlKBZShGitu24lUko3qqZ9eFL-L9qQnrllVMKHDJvkdt1b2PsCT/s1600/ShareButton-1.png" border="0" id="BLOGGER_PHOTO_ID_5503360425038919874" /&gt;&lt;/p&gt;
&lt;a name='more'&gt;&lt;/a&gt;
&lt;p&gt;如果使用以上安裝分享按鈕的方式還是沒顯示，或是顯示的位置不滿意，那麼就來參考一下下面的手動調整模式吧！先來點硬的，這個功能基本上會先在樣板原始碼裡硬塞入一段模組宣告，像是這樣：&lt;/p&gt;
&lt;p&gt;&lt;code&gt;&amp;lt;b:includable id='shareButtons' var='post'&amp;gt;&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;lt;b:if cond='data:post.sharePostUrl'&amp;gt;&lt;br&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;lt;a class='share-button sb-email' expr:href='data:post.sharePostUrl + &amp;amp;quot;&amp;amp;amp;target=email&amp;amp;quot;' expr:title='data:top.emailThisMsg' target='_blank'&amp;gt;&lt;br&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;lt;span class='share-button-link-text'&amp;gt;&amp;lt;data:top.emailThisMsg/&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;/a&amp;gt;&lt;br&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;lt;a class='share-button sb-blog' expr:href='data:post.sharePostUrl + &amp;amp;quot;&amp;amp;amp;target=blog&amp;amp;quot;' expr:onclick='&amp;amp;quot;window.open(this.href, \&amp;amp;quot;_blank\&amp;amp;quot;, \&amp;amp;quot;height=270,width=475\&amp;amp;quot;); return false;&amp;amp;quot;' expr:title='data:top.blogThisMsg' target='_blank'&amp;gt;&lt;br&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;lt;span class='share-button-link-text'&amp;gt;&amp;lt;data:top.blogThisMsg/&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;/a&amp;gt;&lt;br&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;lt;a class='share-button sb-twitter' expr:href='data:post.sharePostUrl + &amp;amp;quot;&amp;amp;amp;target=twitter&amp;amp;quot;' expr:title='data:top.shareToTwitterMsg' target='_blank'&amp;gt;&lt;br&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;lt;span class='share-button-link-text'&amp;gt;&amp;lt;data:top.shareToTwitterMsg/&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;/a&amp;gt;&lt;br&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;lt;a class='share-button sb-facebook' expr:href='data:post.sharePostUrl + &amp;amp;quot;&amp;amp;amp;target=facebook&amp;amp;quot;' expr:onclick='&amp;amp;quot;window.open(this.href, \&amp;amp;quot;_blank\&amp;amp;quot;, \&amp;amp;quot;height=430,width=640\&amp;amp;quot;); return false;&amp;amp;quot;' expr:title='data:top.shareToFacebookMsg' target='_blank'&amp;gt;&lt;br&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;lt;span class='share-button-link-text'&amp;gt;&amp;lt;data:top.shareToFacebookMsg/&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;/a&amp;gt;&lt;br&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;lt;a class='share-button sb-buzz' expr:href='data:post.sharePostUrl + &amp;amp;quot;&amp;amp;amp;target=buzz&amp;amp;quot;' expr:onclick='&amp;amp;quot;window.open(this.href, \&amp;amp;quot;_blank\&amp;amp;quot;, \&amp;amp;quot;height=415,width=690\&amp;amp;quot;); return false;&amp;amp;quot;' expr:title='data:top.shareToBuzzMsg' target='_blank'&amp;gt;&lt;br&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;lt;span class='share-button-link-text'&amp;gt;&amp;lt;data:top.shareToBuzzMsg/&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;/a&amp;gt;&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;lt;/b:if&amp;gt;&lt;br&gt;
&amp;lt;/b:includable&amp;gt;&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;上面這段不用手動貼入，應該樣板原始碼裡都有（要「打開小裝置範本」才看得到）。有了宣告，要手動貼入的部份就是讓這個模組顯示的程式碼。當然貼在哪裡就會決定顯示的位置，我個人習慣放在文章的最後面，因為要收藏或分享，一定也是看完全文覺得好才做吧！文末的段落每個人的範本都不大一樣，但基本上是放在 post-footer 的區段下，像我的 post-footer 有三行，我找了最後一行：&lt;/p&gt;
&lt;p&gt;&lt;code&gt;&amp;lt;p class='post-footer-line post-footer-line-3'&amp;gt;&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;而且這行在 CSS 裡面我自己有定義「靠右」語法，所以區段下的所有元件都會自動靠右，我就不用再多塞程式碼來調整。然後是本文的重點，在下面貼入顯示分享按鈕的原始碼：&lt;/p&gt;
&lt;p&gt;&lt;code&gt;&amp;lt;!-- Share buttons --&amp;gt;&lt;br&gt;
&amp;lt;b:if cond='data:post.sharePostUrl'&amp;gt;&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;lt;div class='post-share-buttons'&amp;gt;&lt;br&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;lt;b:include data='post' name='shareButtons'/&amp;gt; &amp;nbsp;&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;lt;/div&amp;gt;&lt;br&gt;
&amp;lt;/b:if&amp;gt;&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;上面這段就是呼叫已經宣告的分享按鈕模組，樣板儲存、檢視文章，搞定！&lt;/p&gt;
&lt;p&gt;如果找不到 post-footer-line-3，或是位置不滿意，可以試著擺在 line-2 或 line-1 下面，當然想放在文章一開始，像 post-header-line 或 post-body 下面都隨人高興。由於上面是用 DIV 標籤來顯示，如果要改按鈕的對齊方式，可以 K 一下 CSS 語法，加些對齊的設定到樣式定義裡面。我知道看到這裡，一定也有人想說：只支援 Twitter 和 Facebook 太少啦，能不能加入 Plurk 或是 Del.icio.us 之類的服務哩？很抱歉，網頁功能就是這樣，要簡單就沒辦法做太多彈性，官網是有承諾未來會增加多一點服務，但現階段分享按鈕就那五個。如果看得懂上面的程式碼，要用手動的方式調整分享按鈕的數量和服務也行，只要修改上面貼的那段 shareButtons 的 includable 模組宣告，自己增加背景圖、連結和圖示位置，一樣是能自訂出個人專用的分享按鈕，範例和詳情可以參考這篇文章：&lt;a href="http://p2pclients.blogspot.com/2010/06/blogger-share-button-extended.html" target="blank_"&gt;Blogger Share Button extended&lt;/a&gt;，裡面多搞了五個按鈕，有興趣自己試著做吧！&lt;/p&gt;
&lt;p&gt;舊的和新的分享收藏工具列比一比&lt;br&gt;
&lt;img src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg79-mspOjxzIwiPoqHiE-ADkBywZBcqTpf7tAIhOisd4MvDTeJKHDZm0HPD54sG3Kx7m6tfzrVOq3F9OSETn-OBclb5C9aquoOK4Y5GUAm_F9-RBlHnsAnd5efuDm_9Zh9R5yao-ffjGP7/s1600/ShareButton-2.png" border="0"id="BLOGGER_PHOTO_ID_5503360435928820434" /&gt;&lt;/p&gt;
&lt;p&gt;因為我很懶惰，所以最後我自己的 Blog 採用的方式是官方的分享按鈕加上我自己舊的訂閱圖示，兜出現在的分享工具列，哪天 Blogger 官方提供更多分享的服務按鈕，我也比較容易無痛升級啊～&lt;/p&gt;</content><link href="https://abintech.twidv.com/feeds/2869319429157247616/comments/default" rel="replies" title="張貼留言" type="application/atom+xml"/><link href="https://abintech.twidv.com/2010/08/share-button.html#comment-form" rel="replies" title="3 個意見" type="text/html"/><link href="https://www.blogger.com/feeds/8596053384636689442/posts/default/2869319429157247616" rel="edit" type="application/atom+xml"/><link href="https://www.blogger.com/feeds/8596053384636689442/posts/default/2869319429157247616" rel="self" type="application/atom+xml"/><link href="https://abintech.twidv.com/2010/08/share-button.html" rel="alternate" title="官方的分享按鈕 (Share Button)" type="text/html"/><author><name>Abin</name><uri>http://www.blogger.com/profile/11723161715531068787</uri><email>noreply@blogger.com</email><gd:image height="32" rel="http://schemas.google.com/g/2005#thumbnail" src="//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjeWuiw4mDiqf2k7uj4szC6I3hS70kEW-tm_gpLFxHpOwDP3VyZBV-1oG6OoQnI3ur10nD1kRIZgRcmN_lAoIeHbdUsFg89XUxEscnje6FaL8gWM3_jswkM1dTjJ9Y54Q/s220/Portrait-Blog-S.gif" width="32"/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" height="72" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgV8BVB2bb9juOD2COWXK7Eh8o9uNY6cvJ9ZIOrJdqfqNhjo_ztFNFZ8yLzIW14uTuDfJz3SHgVyWoPHNjHY6O1cUahIrlKBZShGitu24lUko3qqZ9eFL-L9qQnrllVMKHDJvkdt1b2PsCT/s72-c/ShareButton-1.png" width="72"/><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8596053384636689442.post-5757750251809427832</id><published>2010-06-29T22:52:00.008+08:00</published><updated>2010-08-11T16:37:39.131+08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Android"/><category scheme="http://www.blogger.com/atom/ns#" term="HTC Magic Hack"/><title type="text">替 Magic 換上客製化韌體 (Android 1.5 to 2.1)</title><content type="html">&lt;p&gt;&lt;a href="http://abintech.twidv.com/2010/03/htc-magic.html" target="blank_"&gt;之前&lt;/a&gt;的改機動作，不外乎是透過工程版韌體的權限，趁機換掉 Boot Loader（到 SPL v1.76）、以及具備特異功能的 Recovery Image (RA v1.6.2)，事後還原最終穩定的官方韌體 (Android v1.5)、裝上最後的更新，然後補上 root 權限。這樣的改機，說穿了韌體還是沒變、只多了 root 權限，並保留未來換韌體的彈性，用起來還是沒差，就只貪圖能夠裝需要 root 權限才能跑的好用工具。隨著一堆軟體推陳出新，市場上出現一堆只支援新版 Android 的應用程式，我那可憐還在 1.5 的 Magic 自然都不支援。後來 HTC 幾經拖延讓 Hero 從 1.5 升級到 2.1 後，其他更舊的手機大概都要被邊緣化了，這時想升級也沒法期待官方的火力支援，自力救濟可能比較快吧！&lt;/p&gt;
&lt;p&gt;其實改機最困難的步驟之前已經完成了（就是做金卡、上歐版韌體、換 SPL 和 Recovery 這些），只要用客製化的 Recovery Image 開機，利用裡面提供刷韌體的功能、選擇想刷的韌體壓縮檔，執行下去就完成啦！換韌體的動作很簡單，困難的是怎麼選擇正確的客製化韌體、並確認基本功能的正常與否。之前遲遲不去換客製化韌體，是因為大部分這類韌體都是從別的手機 Porting 來的，因為硬體上的差異，在使用上多多少少都有缺陷，像什麼相機功能不正常啦、GPS 不能動、沒有中文輸入之類的，直到 HTC 發佈給 Hero 從 1.5 升到 2.1 的更新，神人們也取得了更好的素材，讓硬體上相當接近 Hero 的 Magic，能擁有更成熟穩定的客製化韌體。開刷之前，首先要先瞭解哪些韌體是適合自己手機的，因為在 &lt;a href="http://forum.xda-developers.com/forumdisplay.php?f=493" target="blank_"&gt;XDA&lt;/a&gt; 上，客製化的韌體流派很多，從早期的 SuperHero、到最近的 Smoki，使用上都有一些限制，處理上不小心，輕則手機開不了機、嚴重一點就直接變磚塊了。開始之前，要先確定當下手機的各種版本資訊，把手機關機，按著返回鍵、然後再按電源鍵開機，這時候會進到 BIOS/Fastboot 的模式（這模式沒法抓圖，只好拿別人拍的照片）：&lt;br&gt;
&lt;img src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjy_MC9guxrWRHo8w3JPZsWM4ALyKNK4-DnXb76Wmh1Hq6xMQ_uKt9IMs8GC0cxmPI6aNKKv0Y5TDZPTHqcPvMwTcB_nrG5KV_g0bEtTaegUe55fyexIDHzqCBmDwPK092sWWz0LEsCvox2/s400/FastBoot.jpg" border="0" id="BLOGGER_PHOTO_ID_5488069960741162482" /&gt;&lt;/p&gt;
&lt;p&gt;仔細看一下上面那幾行，如果是照我之前的改機動作更新 SPL &amp;amp; 歐版韌體，版本資訊應該是：&lt;/p&gt;
&lt;p&gt;SAPPHIRE PVT &lt;b&gt;32A&lt;/b&gt; ENG S-OFF H&lt;br&gt;
HBOOT-&lt;b&gt;1.76.2007&lt;/b&gt; (SAPP10000)&lt;br&gt;
CPLD-12&lt;br&gt;
RADIO-&lt;b&gt;6.35.08.29&lt;/b&gt;&lt;br&gt;
Aug 21 2009,18:19:15&lt;/p&gt;
&lt;a name='more'&gt;&lt;/a&gt;
&lt;p&gt;這裡透露了三個和選擇客製化韌體有關的資訊。首先，我的 Magic 是台灣中華電信綁約販售的，因此第一行型號上有個 32A，相對歐洲 Vodafone 販售的則是比較低規的 32B，硬體上的些微差異就會影響到韌體的相容性。其次，第二行標注了 HBOOT (SPL) 的版本，因為之前改機換過，所以當下是比較新的 1.76，如果是 HTC 原廠出貨、沒改過機甚至也沒上過任何更新，版本應該會停留在 1.33。第三個重要資訊是第四行的 RADIO 版本，換過歐版韌體後，RADIO 變成新的 6.35.0829（原來 Magic 好像是 6.35.0729），有些客製韌體會要求 RADIO 必須是更舊的 3.22，如果想刷這類韌體就必須先手動換 RADIO 降版號。有了這些資訊，就能判斷哪些韌體是適合自己手機使用的了，例如 XDA 上的置頂文章：&lt;a href="http://forum.xda-developers.com/showthread.php?s=ff15b271615ea231c058431f4597c1a6&amp;amp;t=666859" target="blank_"&gt;[ROM][32A][6.35]Smoki x.x.x&lt;/a&gt;，表示這個 ROM 是適用於 32A、RADIO 6.35 的 Magic 手機，另一個流派：&lt;a href="http://forum.xda-developers.com/showthread.php?s=ff15b271615ea231c058431f4597c1a6&amp;amp;t=673394" target="blank_"&gt;[Rom][32a][32b][3.22] CyanogenMod x.x.x&lt;/a&gt;，表示的則是適用 32A &amp;amp; 32B 型號、但限制 RADIO 必須是舊版 3.22 的。當然，刷機前還是要詳細閱讀文章裡提到的注意事項和步驟，才能確保刷機順利。&lt;/p&gt;
&lt;p&gt;更新前每個人最擔心的，是如果刷了不喜歡，能不能還原啊！所幸我們用客製化的 Recovery，裡面提供和 Ghost 一樣、有備份和還原的機制，只要記憶卡空間還夠（大概要兩三百 MB），可以直接幫忙 Backup 整個手機的韌體和所有應用程式（包含簡訊紀錄），想還原只要指定特定備份，也能完整地復原回去。&lt;/p&gt;
&lt;p&gt;進入 Recovery 模式 (關機，Home+Power 開機)、選 Backup/Restore、做 Nand Backup&lt;br&gt;
&lt;img src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhfSnkuRhLKakw9MNYqj_vZr3gDRy-Rcy1jvSVJWdNBwau17mFlxQ_dS4zqH1tGvgKbHKhFjuuLvGixv0cc7ANceC-mdlPFYMPEdjZ-kpvALa82pz2F6zZTkIM80sJrGnnO-3vi28Vixb9K/s400/Backup-1.png" border="0" id="BLOGGER_PHOTO_ID_5488069967084566242" /&gt; &lt;img src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhwD-vcyM9-BIpEvc9TCAFBkGXqRAo3giseHUWMmo2p0WAy09p3Fp47x3fN_ojpkbx2ML5uFCFymHBUdrDb6yhc8j-5VtJ1h410-E1DyFkae4towoLN0ELdQZNTW153kstpmh0aiAKjLrgj/s400/Backup-2.png" border="0" id="BLOGGER_PHOTO_ID_5488069970476200402" /&gt;&lt;/p&gt;
&lt;p&gt;備份完在記憶卡裡會有一個 nandroid 目錄，下面有手機序號子目錄、備份時間的次目錄，裡面放的幾個檔案就是整個手機的備份，要還原的話只要仿照上面備份的步驟，最後改選 Nand Restore，就能還原備份的系統啦！（備份選項有很多種，+ ext 指的是備份包含 App2SD 的分區資料，BART 則是另一種完整備份的方法，我沒試過，比較不出差異）&lt;/p&gt;
&lt;p&gt;像我比較保守，即便有備份也懶得把檔案在記憶卡和電腦間搬來搬去，因此另外準備了一張新的 MicroSD 記憶卡來玩改機。一方面我想玩 App2SD（就是能把應用程式裝到記憶卡的工具、可以節省手機記憶體空間）、要搞重新分區 (Partitioning)，其次也有網友反應玩新韌體時最好砍光記憶卡裡的檔案（甚至重新 Format），反正現在記憶卡便宜，原來的記憶卡就當備份（換記憶卡 Restore 就能復原），新卡就拿來亂搞吧！（沒錢買卡的只好先統統備份到電腦去、清空再亂搞你的記憶卡）&lt;/p&gt;
&lt;p&gt;新記憶卡重新格式化後 (FAT32)，插入手機、再次進到 Recovery 模式，先利用 Recovery 的分區功能割出一塊給 App2SD 用的空間：&lt;/p&gt;
&lt;p&gt;1. "Partition sdcard"&lt;br&gt;
2. "Partition SD"&lt;br&gt;
3. 然後設定分割大小&lt;br&gt;
&amp;nbsp;&amp;nbsp;a. "Swap-size" (沒什麼用，設 0 MB)&lt;br&gt;
&amp;nbsp;&amp;nbsp;b. "Ext2-size" (App2SD 存放程式的空間，看你高興，設定 1024 MB 應該夠了)&lt;br&gt;
&amp;nbsp;&amp;nbsp;c. 剩餘的空間就是記憶卡剩下的可用容量...&lt;br&gt;
4. "SD:ext2 to ext3" (轉換檔案系統，換成 ext3 就行了)&lt;br&gt;
&lt;img src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjVhfxJbuOJwHiZ4bQvg0JhUWQa4lUjEX5YfL2YMpA-qlxQSOa4m-8nrVQMDx6uo3xm8wPXepSV0IBgr1MOy4UB-zICsHj1hsU43YIknIzM4hHmT1CsCcsEI0gU0qZcYotoxo7TSdndK55d/s400/Partition-1.png" border="0" id="BLOGGER_PHOTO_ID_5488069979800630498" /&gt; &lt;img src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhs1mwCrbmvP1rzFKPWO_zUQ4g7xPUq4pX5ngoHtxLouBGe9wXozPTMBei5RBrnYdA1VMuf3hQPnzN322RCBpYnHgKqaLviZkrFD-HWEwrW4k86LND5Kd69kPK6yKTR0u02EThkeXt_K0A9/s400/Partition-2.png" border="0" id="BLOGGER_PHOTO_ID_5488069983213229474" /&gt;&lt;/p&gt;
&lt;p&gt;以上就完成 App2SD 的分割區準備了（你高興自己在電腦上做也行）。關掉手機，把記憶卡透過讀卡機接上電腦，把客製化韌體的檔案複製到記憶卡的根目錄（此時也可以順便用磁碟管理員看看剛剛的分區分割正不正確），就準備來刷機了。因應當下的版本資訊，以下用 &lt;a href="http://forum.xda-developers.com/showthread.php?s=ff15b271615ea231c058431f4597c1a6&amp;amp;t=695406" target="blank_"&gt;Sanpei&lt;/a&gt; 這個 2.1 的韌體當範例（本來用 &lt;a href="http://forum.xda-developers.com/showthread.php?s=ff15b271615ea231c058431f4597c1a6&amp;amp;t=666859" target="blank_"&gt;Smoki&lt;/a&gt;，不過版本更新太快又出很多小問題、所以又換回 Sanpei），先到作者&lt;a href="http://forum.xda-developers.com/showthread.php?t=695406" target="blank_"&gt;發佈的網頁&lt;/a&gt;上找連結，作者更新很快，因此韌體相關的檔案也很多，不過大致分成兩種：一種是完整韌體、檔案差不多要一百多 MB，要刷之前應該先把手機和記憶卡資料清乾淨（專業術語：WIPE）；另一種是更新檔，檔案約幾 MB，主要是給刷過完整韌體的人更新用的，更新完原有安裝的程式和資料都會保留。以 Sanpei 為例，現在最新版完整版為 &lt;a href="http://outboundlink.net/anxo/dr_ta_1/goto.php?DR_id=1359&amp;amp;linkout=http%3A//www.4shared.com/file/XHlI-Kdl/3pei_hero_21_alpha.html" target="blank_"&gt;2.1 alpha&lt;/a&gt;（差不多 100MB），後來又出了一些修正（&lt;a href="http://forum.xda-developers.com/attachment.php?attachmentid=345213&amp;amp;stc=1&amp;amp;d=1276842897" target="blank_"&gt;JIT 啦&lt;/a&gt;、&lt;a href="http://forum.xda-developers.com/attachment.php?attachmentid=349885&amp;amp;d=1277499752" id="amyn" target="blank_"&gt;超頻 OC 啦&lt;/a&gt;），因此刷韌體的步驟是先上完整版、再依序看個人需要上更新。下載完所需要的檔案後，統統複製到手機記憶卡的根目錄，把記憶卡插回手機，直接用 Recovery 模式開機。&lt;/p&gt;
&lt;p&gt;進到 Recovery 模式，記得要先清光所有資料。選擇 Wipe、進一步先去清掉資料和設定 (Wipe data/factory reset)、再來是 Cache (Wipe Dalvik-cache)、要清一下剛剛的分割區也可 (Wipe SD:ext partition)：&lt;br&gt;
&lt;img src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhyz2-zTmGCwLzER-5hIzQzLY3LE7uTAljXTmihyphenhyphenb5iR2jzPihH47RLHxe7vllbrWEHCaRDXHT6YNikdSx18zmlg4E_gJLTaVQxS5emFXnDf6KHwqx2CKN3tIckIk_BLIRj2S8bAu20-LO5/s400/Wipe-1.png" border="0" id="BLOGGER_PHOTO_ID_5488071356162764066" /&gt; &lt;img src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiZjNxXNZ6Rw2E_15Rr50usFS4Ae8r2z7_KabdA90a040rl4IKLw1UKJ3V8RlNrxJnRTHIh6cztjO3L2jp1ZHtQxPD-6TE62j81K0HutjPyP7MojG5MwHUnbPouEsxB3rbsw1Mz-yNyczYi/s400/Wipe-2.png" border="0" id="BLOGGER_PHOTO_ID_5488071362321895810" /&gt;&lt;/p&gt;
&lt;p&gt;清乾淨後就要開始刷機啦～選擇 Flash zip from sdcard，指定第一個要刷的完整韌體壓縮檔 3pei_hero_2.1_alpha.zip，完成後其他更新有興趣自己再補上去，都刷完後 Reboot 重開手機，就可以準備迎接重獲新生的 Magic 吧（第一次開機要比較久）！&lt;br&gt;
&lt;img src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjceoypvHZ4yk3yj_BmBr4Obiu0MqUL13YVAbvq3VnS1tGLyI5oVKkpK7sXl9Iwq-SG-qnrP5_3GUhzOjDPE8uzDN4T9VIQS6wNxqudaXZv46egqzPXU5odCz3c03mitz52fInCb6bg0SqC/s400/Flash-1.png" border="0" id="BLOGGER_PHOTO_ID_5488071369707699954" /&gt; &lt;img src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjWp7nkMY6mjSaHrXiPecfYqNHjwV-jz54lgr5jFOHhPuYwgmzAkI5qJCSAduUzusgQ7kGmeiBZ4TmWzSVWyG1q1lMzjax3vJuyIrautzNXcWH4JjZxo99avpD5gLPlAzpNUj5pBx4Br6NH/s400/Flash-2.png" border="0" id="BLOGGER_PHOTO_ID_5488071373756921058" /&gt;&lt;/p&gt;
&lt;p&gt;如果玩膩了這個流派的韌體，或是有問題用不順手，找到與手機相對應版本的其他韌體，只要反覆做「清空記憶卡檔案和目錄」、「複製韌體檔案到記憶卡根目錄」、「到 Recovery 模式 Wipe 和重刷韌體」，就能很輕鬆地體驗各種不同的客製化韌體。像另一個討論火熱的韌體 Smoki，從 0.6 開始我就刷過了，因為作者更新更快、動不動就有新更新，截稿前已經到 0.6.13.1 了！動手前一樣要注意想從那個版本開始，原則上就是找最新、需要 Wipe 的完整版，然後依序一個個補上之後 no wipe 的更新就行。如果覺得還是最後那份 1.5 的官方韌體習慣，只要插回備份的記憶卡、用 Recovery 模式 Restore，手機就能回到惡搞前的穩定狀態啦！難怪之前有人說，只要搞定 SPL &amp;amp; Recovery，要刷壞 Magic 應該還挺不容易的，一旦陷入玩客製韌體的世界，追著最新版或嘗試新服務新功能，實在是很難自拔啊～（本文的版本和連結請自行跟上 XDA 上的內容，那邊更新太快、本文一定跟不上啦～）&lt;/p&gt;
&lt;p&gt;最後老話一句，世界上不會有所謂的「完美」韌體，每家流派每個版本通常有一好沒兩好，維持最新版不一定是最棒的，端看個人的需求有沒有被滿足，如果追著最新版一直刷，可能面臨三天兩頭就要 Wipe 的命運（一旦 Wipe、所有軟體和設定就要重來，簡訊也沒了，就和重灌電腦一樣），玩客製化韌體還是要能自制，不然還是會走火入魔啊！&lt;/p&gt;
&lt;p&gt;PS. Sanpei 文章有提示，換新版韌體之後，記得也要把已經裝過的 HTC Sync 升級到新版，不然裝置可能會發生辨識不到的狀況。原來的版本好像是 2.0.18 之類的，最少要換到 &lt;a href="http://www.htc.com/us/support/magic-rogers/downloads/" target="blank_"&gt;2.0.25&lt;/a&gt; ，記得要更新一下。&lt;/p&gt;
&lt;p&gt;參考文章：&lt;br&gt;
&lt;a href="http://www.mobile01.com/topicdetail.php?f=566&amp;t=1558973&amp;m=s&amp;s=20&amp;b=1&amp;r=2&amp;last=20579544" target="blank_"&gt;MAGIC 2.1 ROM 點點名&lt;/a&gt;&lt;br&gt;
&lt;a href="http://www.shopping01.com/topicdetail.php?f=566&amp;t=1515767&amp;p=9&amp;cache=0#19279286" target="blank_"&gt;苦求升級無方~Magic 大補帖 (升級完美Android 2.1繁體中文版)&lt;/a&gt;&lt;br&gt;
&lt;a href="http://forum.xda-developers.com/showthread.php?t=695406" target="blank_"&gt;[ROM][6.35] Sanpei's HERO Sense, OCed version/almost everything like HTC official ROM&lt;/a&gt;&lt;/p&gt;</content><link href="https://abintech.twidv.com/feeds/5757750251809427832/comments/default" rel="replies" title="張貼留言" type="application/atom+xml"/><link href="https://abintech.twidv.com/2010/06/magic-android-15-to-21.html#comment-form" rel="replies" title="16 個意見" type="text/html"/><link href="https://www.blogger.com/feeds/8596053384636689442/posts/default/5757750251809427832" rel="edit" type="application/atom+xml"/><link href="https://www.blogger.com/feeds/8596053384636689442/posts/default/5757750251809427832" rel="self" type="application/atom+xml"/><link href="https://abintech.twidv.com/2010/06/magic-android-15-to-21.html" rel="alternate" title="替 Magic 換上客製化韌體 (Android 1.5 to 2.1)" type="text/html"/><author><name>Abin</name><uri>http://www.blogger.com/profile/11723161715531068787</uri><email>noreply@blogger.com</email><gd:image height="32" rel="http://schemas.google.com/g/2005#thumbnail" src="//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjeWuiw4mDiqf2k7uj4szC6I3hS70kEW-tm_gpLFxHpOwDP3VyZBV-1oG6OoQnI3ur10nD1kRIZgRcmN_lAoIeHbdUsFg89XUxEscnje6FaL8gWM3_jswkM1dTjJ9Y54Q/s220/Portrait-Blog-S.gif" width="32"/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" height="72" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjy_MC9guxrWRHo8w3JPZsWM4ALyKNK4-DnXb76Wmh1Hq6xMQ_uKt9IMs8GC0cxmPI6aNKKv0Y5TDZPTHqcPvMwTcB_nrG5KV_g0bEtTaegUe55fyexIDHzqCBmDwPK092sWWz0LEsCvox2/s72-c/FastBoot.jpg" width="72"/><thr:total>16</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8596053384636689442.post-6065521028973633197</id><published>2010-05-05T22:54:00.003+08:00</published><updated>2010-05-05T22:54:00.071+08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Android"/><category scheme="http://www.blogger.com/atom/ns#" term="HTC Magic Hack"/><title type="text">Magic 官方韌體線上更新 (751.5+751.6) 並保留 Root</title><content type="html">&lt;p&gt;之前提到將 Magic 成功改機、還原成穩定的官方韌體並保留 Root 權限後，感覺已經天下太平了，結果冷不防 HTC 在二月的時候又來更新程式，而且還是線上更新的模式！快樂改過機的用戶，突然收到更新通知時，到底該不該執行啊？有勇者毅然決然地同意後，會因為「驗證失敗」導致更新失敗（還沒開始就中斷了），難道改過機的人不能繼續使用 HTC 的線上更新嗎？&lt;/p&gt;
&lt;p&gt;首先，要能收到線上更新通知，記得更新檢查要先打開。相關設定在「設定」、「安全性」、「韌體下載」的選項裡，記得裡面選擇「下載提示」，才有機會收到通知。再來，這些線上更新內容是什麼，有沒有必要一定要上呢？根據&lt;a href="http://www.htc.com/tw/support.aspx" target="blank_"&gt;官網的說明&lt;/a&gt;：&lt;/p&gt;
&lt;p&gt;&lt;img src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjErRtNYxcPmcZkV8YiPd_Kwmzkcs6aTtByoWdNTrigbLbNaC-yc16BaMrUuiqy-D_2wRhakQgfMKcpHgujX33Qnj9IN_W-sWhoXUBoEcTQ8tJ42oNRlLcZ6_2tqEfir95xQS-IcEhk2IPd/s1600/HTC-Update.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5466957566479996882" /&gt;&lt;/p&gt;
&lt;p&gt;還記得上篇刷回官方韌體，最後的版本號碼是 3.03.751.4，這次線上更新前後包含了 751.5 和 751.6，更新完沒太大差異，也有人喊說沒那個必要升級。不過我必須說，因為官方沒列出更新細節，只說什麼「更新用戶端」和「漫遊優化」，但總共十幾MB的更新檔，絕對不會只有這兩項，一定也並修正了大大小小的其他 Bug，才會這麼一包。我實際上的感覺，之前用藍牙耳機聽音樂時容易斷斷續續，但更新後有很大的改善，上述更新檢查的選項也換位置放了（移到「關於手機」、「系統軟體更新」，裡面有排程和手動檢查），可能還有很多修正是族繁不及備載的，所以和 Windows 一樣，要維持在最新版才能確保系統的穩定。不過上面也提到，改機過的韌體在更新時似乎會被什麼檢查抓到，讓線上更新被中斷，看來 HTC 官方也有在關注和阻擋改機的行為哩～&lt;/p&gt;
&lt;p&gt;根據神人分析，HTC 做的是檢查 Recovery Image 版本。之前改機把 Recovery Image 換掉、換成 Amon_RA 大大做的 &lt;a href="http://www.androidspin.com/downloads.php?dir=amon_ra/RECOVERY/&amp;amp;file=recovery-RA-hero-v1.6.2.img" target="blank_"&gt;recovery-RA-hero-v1.6.2.img&lt;/a&gt;，這樣當然會驗證失敗。所以如果想執行線上更新的話，第一個步驟就是「暫時」還原官方 Recovery，待驗證過後、更新成功完再換回來。還記得上個步驟我們刷官方韌體時，拉了一個檔案 rom1.zip （後來改名為 sappimg.zip），如果我們手動解壓縮它，會在裡面發現一個 recovery.img，這就是本文需要的檔案（官方 Recovery Image）！把檔案複製出來放在電腦裡，手機關機後、重開進到 Fastboot 模式（按著返回鍵、再按電源鍵開機）、連接電腦，透過 ADB 執行重刷 Recovery 的命令：&lt;/p&gt;
&lt;p&gt;&lt;code class="cmd"&gt;fastboot flash recovery recovery.img&lt;/code&gt;&lt;/p&gt;
&lt;a name='more'&gt;&lt;/a&gt;
&lt;p&gt;更新完重開機，手機此時已經換回官方版本的 Recovery，照理來說就能上更新啦！由於線上更新這件事官方並不是隨時在檢查，而是隨機跑出來的，也有網友等了好久遲遲沒有更新通知。而我的經驗是，只要調整手機時間、像往前調個三個月，就會觸發更新檢查、通知你該線上更新囉（我是這樣才出來的）！依序更新完 751.5 和 751.6（最好在連接 WiFi 網路時來做比較快、手機也要有足夠電力），兩次更新完就大功告成啦！兩次更新的畫面分別如下：&lt;/p&gt;
&lt;p&gt;&lt;img src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgwgUQ_9YqcfpnYCbqIyhgwvQaYPlyi-zaxsHWyQ2Hw1_jfdFwLNNvJT3RJsOTFpVHP17JfSir46g6ND5mw2s0ShZO2PEqPfMKuWB1fcSKOmhgonRLvnQJwPnfGm4bGf9PsXCAFLmrSekfz/s400/Update-1.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5466957572617982978" /&gt; &lt;img src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhh_HsffPgSYjLPwsXZ0VDmRnCpUcy8zy4dntd1War-k6z9TzKKg7F9ko0ArsRtKw308VwXBO5Bb5LbVPuvt8k_yYr6UVnOMWNMTfZXEo9A-cN7SAklBQ6-IfU-dRQsmL0Eg5jQ1S-9wEb-/s400/Update-2.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5466957581926694066" /&gt;&lt;/p&gt;
&lt;p&gt;不過別高興得太早，前面就說過 HTC 有在關注改機的行為，更新完之前辛苦擁有的 root 權限就又不見啦！所以我們要重複之前的幾個改機步驟：先換回 Amon_RA 的客制化 Recovery、把 su 和相關程式再複製進手機才行。手機關機再進到 Fastboot 模式，與電腦連線、準備好之前的&amp;nbsp;&lt;a href="http://www.androidspin.com/downloads.php?dir=amon_ra/RECOVERY/&amp;amp;file=recovery-RA-hero-v1.6.2.img" target="blank_"&gt;recovery-RA-hero-v1.6.2.img&lt;/a&gt; 檔案，先刷回 Recovery：&lt;/p&gt;
&lt;p&gt;&lt;code class="cmd"&gt;fastboot flash recovery recovery-RA-hero-v1.6.2.img&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;刷完後重開完再關機，然後用剛刷的 Recovery 開機（按著 Home 鍵、再按電源鍵開機）、把手機透過 USB 接上電腦，再用 ADB 工具把檔案放進手機去，開 DOS 視窗執行以下命令：&lt;/p&gt;
&lt;p&gt;&lt;code class="cmd"&gt;adb shell mount /system&lt;br&gt;
adb push su /system/bin/&lt;br&gt;
adb shell chmod 4755 /system/bin/su&lt;br&gt;
adb push Superuser.apk /system/app/&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;請注意，在此神人發現 HTC 在這又做了點手腳，更新完它在系統目錄下 (/system) 複製了一份官方 Recovery Image 檔案，正常開機的時候，韌體會檢查 Recovery 的版本，一旦不符就把系統目錄下的檔案複製過去蓋掉手機的 Recovery，好奸詐啊！不過道高一尺魔高一丈，看破手腳後對策就簡單啦！我們只要把那個官方 Recovery 換成客製的版本（檔名用一樣），就算被抓到要複製，也還是複製非官方版啊（直接砍掉應該也行，不過怕有風險）！所以接下來的命令做的事情就是在砍掉官方偷塞的 Recovery Image、把非官方版的改檔名複製進去，然後重新開機就搞定啦！&lt;/p&gt;
&lt;p&gt;&lt;code class="cmd"&gt;adb shell rm /system/recovery.img&lt;br&gt;
adb push recovery-RA-hero-v1.6.2.img /system/recovery.img&lt;br&gt;
adb shell reboot&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;經過本文步驟，我們透過官方線上更新、讓版本從 751.4 升到 751.6，並維持非官方的 Recovery、還有之前改機的 root 權限，一併「破解」了官方的檢查動作（缺點就是開機會再慢一點），而這也是我目前維持在「最新官方韌體」的版本：&lt;/p&gt;
&lt;p&gt;&lt;img src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjjoIlQ6leDQmVsCuLx-POoFQrn4akO5X-KpAp87dxo1WO5-XohW8Tb0yrUhoG8ldELK-FLAZZdpVIHPF6DCmro46-F9FzJ3GlcAU7Y1oCPM2lZyRIOeA2raakzZm9TKMkXwm7FBnzleScr/s400/HTC_ROM-Official-2.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5466957600008305890" /&gt;&lt;/p&gt;
&lt;p&gt;如果不敢冒險用其他非官方韌體來說，這樣的版本應該是「目前」官方最穩定、最棒的了。（又出其他更新的話不知道還會怎麼做..XD）&lt;/p&gt;</content><link href="https://abintech.twidv.com/feeds/6065521028973633197/comments/default" rel="replies" title="張貼留言" type="application/atom+xml"/><link href="https://abintech.twidv.com/2010/05/magic-75157516-root.html#comment-form" rel="replies" title="6 個意見" type="text/html"/><link href="https://www.blogger.com/feeds/8596053384636689442/posts/default/6065521028973633197" rel="edit" type="application/atom+xml"/><link href="https://www.blogger.com/feeds/8596053384636689442/posts/default/6065521028973633197" rel="self" type="application/atom+xml"/><link href="https://abintech.twidv.com/2010/05/magic-75157516-root.html" rel="alternate" title="Magic 官方韌體線上更新 (751.5+751.6) 並保留 Root" type="text/html"/><author><name>Abin</name><uri>http://www.blogger.com/profile/11723161715531068787</uri><email>noreply@blogger.com</email><gd:image height="32" rel="http://schemas.google.com/g/2005#thumbnail" src="//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjeWuiw4mDiqf2k7uj4szC6I3hS70kEW-tm_gpLFxHpOwDP3VyZBV-1oG6OoQnI3ur10nD1kRIZgRcmN_lAoIeHbdUsFg89XUxEscnje6FaL8gWM3_jswkM1dTjJ9Y54Q/s220/Portrait-Blog-S.gif" width="32"/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" height="72" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjErRtNYxcPmcZkV8YiPd_Kwmzkcs6aTtByoWdNTrigbLbNaC-yc16BaMrUuiqy-D_2wRhakQgfMKcpHgujX33Qnj9IN_W-sWhoXUBoEcTQ8tJ42oNRlLcZ6_2tqEfir95xQS-IcEhk2IPd/s72-c/HTC-Update.png" width="72"/><thr:total>6</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8596053384636689442.post-1060021532869050101</id><published>2010-05-03T23:59:00.004+08:00</published><updated>2010-05-03T23:59:00.234+08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Android"/><category scheme="http://www.blogger.com/atom/ns#" term="HTC Magic Hack"/><title type="text">歐洲工程版 ROM 還原成官方中文 ROM</title><content type="html">&lt;p&gt;其實 Magic 搭載 HTC 歐版官方韌體，已經是完整功能的手機（除了一些中文問題），但已經解開其封印，要做什麼應用都可以。不過坊間所有的「非官方韌體」，目前個人覺得都沒有 HTC 自己的官方韌體來得穩定完整（會有的問題包含藍牙不正常、沒有中文輸入法、相機應用怪怪的一堆有的沒的..），而且我解開封印的目的只是取得 root 身份，對於原有的韌體版本 (Android v1.5)、HTC 的 Sense UI、甚至中華電信預載的設定和軟體 (Ex. Hami、Plurk ..) 都覺得還不錯，因此最後決定換回官方中文韌體，並希望保留改機後有的 root 權限和非官方的自製映像檔。&lt;/p&gt;
&lt;p&gt;要達到這個目標，首先要取得官方韌體。到 HTC &lt;a href="http://www.htc.com/tw/support.aspx" target="blank_"&gt;官網下載&lt;/a&gt;給中華電信客戶專用的韌體升級程式 (&lt;a href="http://www.htc.com/tw/SupportDownload.aspx?p_id=267&amp;amp;cat=2&amp;amp;dl_id=721" target="blank_"&gt;ChungHwa_3.03.751.4&lt;/a&gt;)，下載後執行這個 RUU、但別急著下一步開始！安裝程式一執行會先解壓縮到系統的 Temp 目錄下（每台電腦和作業系統 Temp 目錄都不一定位置相同，預設 XP 的目錄在 C:\Documents and Settings\用戶名\LocalSettings\Temp，也可以到「控制台」、「系統」、「進階」、「環境變數」，查看你系統變數 Temp 是在那裡），找一個檔案 rom1.zip，把它複製出來並改名為 sappimg.zip，接著取消 RUU 安裝程式，此時已經取得還原官方中文韌體所需的檔案了。連接手機，把剛剛的那個 sappimg.zip，還有之前用過的 Recovery Image (&lt;a href="http://www.androidspin.com/downloads.php?dir=amon_ra/RECOVERY/&amp;file=recovery-RA-hero-v1.6.2.img" target="blank_"&gt;recovery-RA-hero-v1.6.2.img&lt;/a&gt;) 複製到手機記憶卡的根目錄（待會要用），完成準備就要開始刷機啦！ 請注意，更新過程之前裝過的軟體、設定和簡訊資料一樣都會消失，要備份資料的話記得先做好。手機關機，按著返回鍵、再按電源鍵開機，這樣會進到 Fastboot 模式，按音量鍵下 [VOL DOWN]、用滾輪中鍵選擇 Flash 剛剛的那個 sappimg.zip 開始更新，更新完再按滾輪中鍵重新開機，HTC 給中華電信的中文官方韌體就刷完啦！&lt;/p&gt;
&lt;p&gt;不過，這個更新過程會再把以前我們刷過的 Recovery Image 一併蓋掉，少了這個 Recovery 未來會很不方便，所以我們要再把它刷回來！前一個步驟我們已經把神人自製的 Recovery Image 檔案給複製到手機記憶卡的根目錄了，手機關機，按著返回鍵按電源鍵開機，再進到 Fastboot 模式一次，這時候把手機連上電腦，利用 ADB (Android Debug Bridge) 工具裡面的 fastboot 程式，要來重刷 Recovery Image：&lt;/p&gt;
&lt;p&gt;&lt;code class="cmd"&gt;fastboot flash recovery recovery-RA-hero-v1.6.2.img&lt;/code&gt;&lt;/p&gt;
&lt;a name='more'&gt;&lt;/a&gt;
&lt;p&gt;刷完以後下命令重新開機：&lt;/p&gt;
&lt;p&gt;&lt;code class="cmd"&gt;fastboot reboot&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;開完機 Recovery 就回來啦！到此為止，手機的狀況是：Boot Loader 維持在 SPL 1.76.2007 （因為沒有人會動到它），手機韌體刷回了 HTC 給中華電信的官方中文版（也就是沒改機前、Android v1.5 + HTC Sense UI 這個版本），中間被換掉的 Recovery 也換回來，看起來挺完美了吧！錯！因為換回官方韌體，root 權限又被堵起來啦！所以最後的步驟就是要再取回 root 權限！&lt;/p&gt;
&lt;p&gt;之前因為是工程版、從頭到尾本來就是 root 身份，不過換回正式版韌體後就沒有那麼好啦！熟悉 Linux 的人都知道，儘量不用 root 登入能避免一些問題，但真的需要權限的時候，只要透過一個命令 &lt;a href="http://sites.google.com/site/abinlinks/share/su" target="blank_"&gt;su&lt;/a&gt; (switch user)，就可以當場變身成管理者啦！同樣的原理，Android 為了避免 root 權限外流，採用兩個措施阻擋：首先讓系統目錄變成唯讀，然後砍掉 su 這個程式，一般使用者要變 root 就沒門啦！為了突破這個限制，只要我們能想辦法把 su 複製到系統裡，當有需要 root 權限存取的時候，透過使用者允許，就能執行 su 開放權限，root 權限才算是又拿回來。&lt;p&gt;
&lt;p&gt;手機關機，這次要進入 Recovery 模式 (Home+Power)，此時再把手機透過 USB 接上電腦，我們要用 ADB 工具把檔案暗渡陳倉進手機去，開 DOS 視窗執行以下命令：&lt;/p&gt;
&lt;p&gt;&lt;code class="cmd"&gt;adb shell mount /system&lt;br&gt;
adb push su /system/bin/&lt;br&gt;
adb shell chmod 4755 /system/bin/su&lt;br&gt;
adb push Superuser.apk /system/app/&lt;br&gt;
adb shell reboot&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;以上命令分別是 mount 系統目錄、把 &lt;a href="http://sites.google.com/site/abinlinks/share/su" target="blank_"&gt;su&lt;/a&gt; 複製進系統並更改檔案權限、把 &lt;a href="http://sites.google.com/site/abinlinks/share/Superuser.apk" target="blank_"&gt;Superuser.apk&lt;/a&gt; 這個程式安裝到手機上（這是用來協調其他應用程式呼叫 su 使用的，這兩個檔案可以在這裡下載），最後重新開機。讓手機乖乖重新開機完（這時候和電腦還接著），我們透過 ADB 來測試一下 root 權限是不是搞定了，開 DOS 視窗執行以下命令：&lt;/p&gt;
&lt;p&gt;&lt;code class="cmd"&gt;adb shell&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;這時候的系統提示符號還是 $，代表是一般使用者，接著執行：&lt;/p&gt;
&lt;p&gt;&lt;code class="cmd"&gt;su&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;剛剛安裝的 Superuser.apk 這時候在手機上會跳出提示，告訴使用者有人在做 su 的 request，選擇 [Always Allow] 允許通過後，系統的提示符號就會變成 #，代表 su 成功重新拿回 root 權限啦！&lt;/p&gt;
&lt;p&gt;沒動 SPL，所以進到 Fastboot 看到的資訊和之前是一樣的，而此時的系統資訊變成：&lt;/p&gt;
&lt;p&gt;「設定」、「關於手機」的手機資訊&lt;br&gt;
&lt;img src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhqX1c10eUlIFP-7UJP6fKevnJ1XUfWis-7MUNswd7xLVDzDC7pHUdhPiRFX7c0pg4ge8jDfhiHOR1Azq1i-EAk5NQo_7Rjg-KYs19f-nRp1nDdtWeGim7iTKG2vEWwqZpa14HY9k0-A0GQ/s400/HTC_ROM-Official-1.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5466873918581832418" /&gt;&lt;/p&gt;
&lt;p&gt;有了 root 權限，接下來就可以裝一堆 Android Market 上宣告需要 root 權限才能執行的應用程式（像是看得到付費軟體的 Market Enabler、必裝的自動記憶體管理程式 Auto Memory Manager ..），享受著原來就習慣的官方韌體並且擁有解除封印的能力。&lt;/p&gt;
&lt;p&gt;參考文章：&lt;a href="http://www.mobile01.com/topicdetail.php?f=423&amp;t=1407136&amp;p=13#17454711" target="blank_"&gt;Tsubasa~翼 官方Rom+root刷機詳細教學+懶人下載包&lt;/a&gt;&lt;/p&gt;</content><link href="https://abintech.twidv.com/feeds/1060021532869050101/comments/default" rel="replies" title="張貼留言" type="application/atom+xml"/><link href="https://abintech.twidv.com/2010/05/rom-rom.html#comment-form" rel="replies" title="18 個意見" type="text/html"/><link href="https://www.blogger.com/feeds/8596053384636689442/posts/default/1060021532869050101" rel="edit" type="application/atom+xml"/><link href="https://www.blogger.com/feeds/8596053384636689442/posts/default/1060021532869050101" rel="self" type="application/atom+xml"/><link href="https://abintech.twidv.com/2010/05/rom-rom.html" rel="alternate" title="歐洲工程版 ROM 還原成官方中文 ROM" type="text/html"/><author><name>Abin</name><uri>http://www.blogger.com/profile/11723161715531068787</uri><email>noreply@blogger.com</email><gd:image height="32" rel="http://schemas.google.com/g/2005#thumbnail" src="//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjeWuiw4mDiqf2k7uj4szC6I3hS70kEW-tm_gpLFxHpOwDP3VyZBV-1oG6OoQnI3ur10nD1kRIZgRcmN_lAoIeHbdUsFg89XUxEscnje6FaL8gWM3_jswkM1dTjJ9Y54Q/s220/Portrait-Blog-S.gif" width="32"/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" height="72" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhqX1c10eUlIFP-7UJP6fKevnJ1XUfWis-7MUNswd7xLVDzDC7pHUdhPiRFX7c0pg4ge8jDfhiHOR1Azq1i-EAk5NQo_7Rjg-KYs19f-nRp1nDdtWeGim7iTKG2vEWwqZpa14HY9k0-A0GQ/s72-c/HTC_ROM-Official-1.png" width="72"/><thr:total>18</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8596053384636689442.post-5186066037493734936</id><published>2010-04-30T23:33:00.006+08:00</published><updated>2011-12-19T13:03:39.359+08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Android"/><category scheme="http://www.blogger.com/atom/ns#" term="HTC Magic Hack"/><title type="text">HTC Magic 刷入歐版 RUU (rooted) 加上 SPL 1.76.2007</title><content type="html">&lt;p&gt;其實這裡開始，才是真正進入更改韌體的刷機動作。整個「破解」官方韌體的關鍵，就是這份官方工程版的歐洲 RUU 韌體更新程式，首先，因為它是「官方」韌體，所以能夠理所當然、正大光明地拿來更新，其次，這個「工程版」裡面，直接是 root 身份、在擁有最大權限的狀況來操作手機，原則上只要能刷上這個韌體，其實就改完機、擁有 root 權限了。HTC 在使用這份韌體上其實並沒有做什麼阻擋（可能沒想到會流出吧），對我們亞洲的用戶來說，大概就受限於 CID Check，只要做了「&lt;a href="http://abintech.twidv.com/2010/03/gold-card.html" target="blank_"&gt;金卡&lt;/a&gt;」、直接 Bypass CID 檢查，這個韌體更新就能進行了。（除了做金卡，很多人遇到 RUU 執行失敗是遇到：錯誤[170]: USB 連線錯誤，那是因為沒裝 HTC Sync/Driver 的緣故，請先&lt;a href="http://abintech.twidv.com/2010/03/htc-magic_11.html" target="blank_"&gt;確認過電腦與手機連線狀況&lt;/a&gt;後，再來執行 RUU..）&lt;/p&gt;&lt;p&gt;確認連線正確、也已經準備好「金卡」之後，先把待會要用的非官方 Recovery Image (&lt;a href="http://www.box.com/s/egay7hcirnq9yjrpnbpj" target="blank_"&gt;recovery-RA-hero-v1.6.2.img&lt;/a&gt;) 和 Boot Loader (&lt;a href="http://www.box.com/s/dr03mvjzkaiu87qyo1an" target="blank_"&gt;update-hboot-1.76.2007-signed.zip&lt;/a&gt;) 複製到手機記憶卡的根目錄。Recovery Image 是一個相當精簡、有點像安全模式的核心韌體 (Kernel)，透過開機切換（關機後，按著 Home 鍵、再按電源鍵開機），就能用這個 Image 來開機，進行工程模式的維護。原廠的 Recovery 模式一般人當然不會操作，而且一樣有一堆檢查和驗證，為了後面改機換韌體方便，所以要一併替換掉。而 Boot Loader 就是之前提過的 SPL (Second Program Loader, 類似 BIOS)、最底層的開機程式，一樣能透過開機切換進到 HBoot 模式（關機後，按著音量鍵下、再按電源鍵開機），改機前如果連 BIOS 都換掉，那麼所有官方韌體裡有的桎梏就都解開了。也有網友提到，只要 SPL 刷成功，在硬體沒故障的前提下，手機應該怎麼刷都刷不壞啦～因此先複製這兩個檔案到手機根目錄，等刷完工程版 RUU 後取得 root 權限，就能替換 Recovery 用的 Kernel 以及 Boot Loader。&lt;/p&gt;&lt;p&gt;接下來開始更新歐版韌體。請注意，這個動作開始後，所有手機裡的資料、簡訊、安裝過的軟體就都會消失殆盡，有重要的資料記得先備份到記憶卡裡。準備檔案歐版韌體 RUU (Europe_3.04.401.2, files: &lt;a href="http://www.box.com/s/z7jzhlooj1t19yr74rov" target="blank_"&gt;Part1&lt;/a&gt;, &lt;a href="http://www.box.com/s/17lfa3vikh1ulahh0zul" target="blank_"&gt;Part2&lt;/a&gt;)，直接執行開始更新韌體，只要有金卡、而且手機和電腦正確連線，這個步驟就可以順利完成（這個歐版的 RUU，不能在 Windows 7 上跑）。當然，更新韌體過程的大忌就是電源不足（手機或筆電沒電，更慘就是突然停電跳電），一旦更新過程掛點（或是手賤拔線、被踢掉），那很有可能藥石罔效、再起不能，除了原廠大概沒有人能幫你了。更新完畢重新開機，會發現介面都變英文，變成一隻道地的歐洲機了，別急著輸入 SIM 卡密碼開始使用，確認電腦和手機有正確連線後，開個 DOS 視窗、透過 ADB 工具（在 &lt;a href="http://developer.android.com/intl/zh-TW/sdk/index.html" id="r6v." title="Android SDK"&gt;Android SDK&lt;/a&gt; 裡，解壓縮後 tools 目錄下的那些公用程式）連入手機：&lt;/p&gt;&lt;p&gt;&lt;code class="cmd"&gt;adb shell&lt;/code&gt;&lt;/p&gt;&lt;a name='more'&gt;&lt;/a&gt; &lt;p&gt;這時候的作業系統提示符號不再是原來的 $，而是原生 root 身份的 #！這樣就能對手機為所欲為啦！先來用剛複製近手機記憶卡根目錄的 Recovery Image 換掉官方的 Recovery Kernel：&lt;/p&gt;&lt;p&gt;&lt;code class="cmd"&gt;flash_image recovery /sdcard/recovery-RA-hero-v1.6.2.img&lt;/code&gt;&lt;/p&gt;&lt;p&gt;動作很快就完成了。緊接著關機後，按著 Home 鍵、再按電源鍵開機，這樣會進到 Recovery 模式，而且是用剛刷進手機的工程模式韌體！一定要用這個客制化的 Recovery Kernel 開機，才看得到修改過客制化的工程模式操作選單（預設的 Recovery 模式只有一張三角驚嘆號和手機的圖）。用軌跡球下移挑選選項，選擇 Flash zip from sdcard，並按通話鍵確定後，會列出找到的可用 ZIP 檔，最少會看到我們一開始就複製到記憶卡根目錄的另一個 Boot Loader (update-hboot-1.76.2007-signed.zip)，使用 Home 確認、解壓縮檔案，按 Menu 完成安裝，然後選 Reboot 重開手機，這就連 Boot Loader 都刷掉，直上 SPL 1.76.2007 啦！重開手機會再一次進到 Recovery 模式，畫面顯示 Formatting cache... ，不要緊張，用軌跡球再選到 Reboot 重開一遍，基本上改機工作已經完成啦！&lt;/p&gt;&lt;p&gt;新的 Recovery 模式畫面、以及正在更新 SPL 的畫面&lt;br /&gt;
&lt;img src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhGFfAnDPXHzeID0ISO3ROd8XSvPq68eJdymAbmPK7P-X48itcfsYsFS7oFCjP2ldWXBzV99JZo04QHkjRv62Dr-2Ikba7vYyE2KdGRQMXZMiQV6i12Wc6En7rzH_8__gp6TuB1DnUG2M5s/s400/HTC_ROM-Recovery.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5465879230718638930" /&gt; &lt;img src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj5WqLMX4rMx9nAX6EWWbqoawwEUmPvlKHQ90qvxJ5yb_VeZO4JYdOzDxLXXVeDTZUq2WRJcoUFlWs5ciWs3EqybVx38TwRt0ezu2rP_0PDmgKhWskOvlvbQML2Dw2XNTDa0eW4eLDmi8kf/s400/HTC_ROM-SPL.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5465879227144315474" /&gt;&lt;/p&gt;&lt;p&gt;再確認一次結果，以上我們透過有金卡規避檢查、執行了官方歐洲工程版韌體的更新，並且利用工程版內建的權限，一併利用神人自製的映像檔替換掉官方的 Recovery 和 Boot Loader，到這個步驟，手機正常模式開機後的狀態用的還是「官方韌體」，而且還是工程版具有 root 權限的！由於也具備了自製破解的 Recovery 和 Boot Loader，只要進到非正常開機模式（安全模式?!），也可以像重灌一樣換掉你手機的韌體，嘗試 XDA 論壇上的各種版本啦！&lt;/p&gt;&lt;p&gt;版本資訊（關機，按返回鍵、再按電源鍵開機，進到 BIOS/Fastboot 模式可以看到），改機前：&lt;br /&gt;
SAPPHIRE PVT 32A SHIP S-ON H&lt;br /&gt;
HBOOT-1.76.2007 (SAPP10000)&lt;br /&gt;
CPLD-12&lt;br /&gt;
RADIO-6.35.07.29&lt;br /&gt;
Aug 4 2009,19:43:30&lt;/p&gt;&lt;p&gt;改機後&lt;br /&gt;
SAPPHIRE PVT 32A ENG S-OFF H&lt;br /&gt;
HBOOT-1.76.2007 (SAPP10000)&lt;br /&gt;
CPLD-12&lt;br /&gt;
RADIO-6.35.08.29&lt;br /&gt;
Aug 21 2009,18:19:15&lt;/p&gt;&lt;p&gt;而系統資訊的畫面，改機前（官方中文）、改機後（歐版英文）：&lt;br /&gt;
&lt;img src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhmjjoMEIrPEmkyOoKjZnmQYEK64YfaT5WCuucZGmixda9iRubXz2j-RkCsrZjE05I6kw8IgeCl1VLKIXkdSE0jUuvnJX9DzV5CLyJAkFOer622ZUGt6VxRAFsYwCQTso4QJP9pkspW2vfv/s400/HTC_ROM-1.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5465879214157780914" /&gt; &lt;img style="cursor:pointer; cursor:hand;width: 267px; height: 400px;" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi4vsLoJ2ZIFNZUj0vQRzejLD_1bWZEeWk3lb_LfmZtAXjs3SH2GTVtXpkYr7vSAtlpLy6NnGN8kC3n_FA_D62J8S0l_LDdi4WLHJsJqvOwTBi-xtKxsCZraPAUlSTq9FcgjOuK32OFBOJH/s400/HTC_ROM-2.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5465879216492294450" /&gt; &lt;/p&gt;&lt;p&gt;當然到此為止，如果懶了也可以直接使用這個官方的歐洲工程版韌體（反正已經內建 root、啥都能跑了），既然是「官方」韌體，當然所有功能都和原廠提供的一樣，不用擔心什麼相機不能用、或是 LED 燈號不正常之類的，不過別忘了這是「歐洲版」，所以一開始都是英文介面，敲完 SIM 卡密碼會開始手機的初始設定，像是語系、時區之類的（事後都可以改，聽說都不選用預設選項就會變繁體中文，但我沒辦法），在台灣循正常管道買到的 Magic，應該都預載了中華電信的 3G 網路設定 (APN, Access Point Name)、繁體中文、輸入法和 Hami 網路服務，玩歐洲工程版這些就沒有啦，如果玩歐洲版英文韌體要解決以上問題，一切還是要靠手動：（如果你不想玩歐洲版韌體的話，以下就跳過去不用看囉！）&lt;/p&gt;&lt;ol&gt;&lt;li&gt;設定中華電信的網路：如果這裡不設，你的手機就不能 3G 上網啦！到「設定」、「無線通訊控制」、「行動網路設定」、「存取點名稱 (APN)」，預設應該都是空白的，官方預載有三筆紀錄，分別是 internet、emome 和 mms （預設選在 emome），這兒要手動一筆筆新增，內容如下（刷歐版韌體之前也可以自己把原設定先手抄下來，下面沒列的就用預設值）：&lt;br /&gt;
&lt;ul&gt;&lt;li&gt;CHT internet&lt;br /&gt;
名稱：CHT internet&lt;br /&gt;
APN：internet&lt;/li&gt;
&lt;li&gt;CHT emome&lt;br /&gt;
名稱：CHT emome&lt;br /&gt;
APN：emome&lt;/li&gt;
&lt;li&gt;CHT mms&lt;br /&gt;
名稱：CHT mms&lt;br /&gt;
APN：emome&lt;br /&gt;
Proxy：10.1.1.1&lt;br /&gt;
連線埠：8080&lt;br /&gt;
MMSC：http://mms.emome.net:8002&lt;br /&gt;
MMS proxy：10.1.1.1&lt;br /&gt;
MMSN 連線埠：8080&lt;br /&gt;
MCC：466&lt;br /&gt;
MNC：92&lt;br /&gt;
APN類型：mms&lt;/li&gt;
&lt;/ul&gt;以上是中華電信 + mPro 吃到飽的 APN 設定內容，其他電信業者或費率使用前最好在確認一下。&lt;/li&gt;

&lt;li&gt;語系問題：如果開完機看到的一切都是中文，包含設定的選項和圖示，那這個步驟可以跳過，但如果和我之前一樣，就算選了中文也還是一堆英文的話，那就要上網去 Android Market 下載一個軟體：morelocale 2，顧名思義，這個免費軟體可以打開韌體對不同區的語系封印，即便骨子裡是歐版韌體，一樣可以透過這個軟體打開所有語系，讓你設定到正確的繁體中文語系（想設到其他語言也隨便啦）。&lt;/li&gt;

&lt;li&gt;中文輸入法：這是很多改機人的惡夢，因為歐版手機沒法中文輸入！不過解決方案也很多，你可以選擇非官方的中文輸入法（注音台、LIME、中文拼音），如果你堅持要用 HTC 官方內建的 Touch Input Chinese，那步驟比較麻煩，有點像刷韌體一樣：&lt;br /&gt;
&lt;ul style='list-style:none'&gt;&lt;li&gt;(1). 複製輸入法檔案到根目錄：File: &lt;a href="http://www.box.net/shared/kj821i9yz9"  target="blank_"&gt;htc_cime_haykuro_hero_6.9mb_update.zip&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;(2). 關機，Home+Power 開機進入 Recovery 模式，可以看到 Flash zip from sdcard，用軌跡球下移、按通話鍵選擇後，選擇上述檔案，使用 Home 確認，解壓縮檔案，按 Menu 完成安裝，然後選 Reboot 重開。&lt;/li&gt;
&lt;li&gt;(3). 重開後到「設定」、「語言(地區)與文字」裡，在文字設定下會看到兩套 HTC 輸入法 (Touch Input, Touch Input Chinese)&lt;/li&gt;
&lt;li&gt;(4). 移除 Touch Input （我個人比較愛乾淨，不移也可以啦）&lt;br /&gt;
&lt;ul style='list-style:none'&gt;&lt;li&gt;(a). 連接電腦，adb shell 進入 # 操作&lt;/li&gt;
&lt;li&gt;(b). 把 /system 掛載成 Read/Write 模式&lt;br /&gt;
&lt;code class="cmd"&gt;mount -o rw,remount -t yaffs2 /dev/block/mtdblock3 /system&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;(c). 反安裝、砍掉輸入法檔案&lt;br /&gt;
&lt;code class="cmd"&gt;rm /system/app/HTC_IME.apk&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;/li&gt;
&lt;/ul&gt;這樣就裝好官方中文輸入法、並移掉歐版裡沒用的 Touch Input 啦！&lt;/li&gt;
&lt;/ol&gt;&lt;p&gt;到此，官方歐洲工程版的韌體在上網、中文和輸入法都 OK 啦，而且預設就是 root 權限（不需要 su）！穩定性和相容性當然沒問題（本來就是官方的），不過，因為歐洲不可能搭載中華電信，原來一些 HTC 幫中華電信做的預載程式 (Hami、還有 Hami 專用的股票、星座、新聞等 Widget)，就都不能用囉！這也算是美中不足啦！如果用不慣歐洲韌體、堅持要用中華電信服務、又懶得處理以上中文和輸入法的狀況，當然，以上設定步驟統統別做，直接再拿 HTC 給中華電信用戶專用的升級韌體，還原成 Magic 本來在用的官方中文韌體，那麼語系、網路、輸入法和 Hami 就都回來啦！當然為了能 root 還有點步驟要做，不過這是下篇改機的主題啦，這部份另文詳述。&lt;/p&gt;</content><link href="https://abintech.twidv.com/feeds/5186066037493734936/comments/default" rel="replies" title="張貼留言" type="application/atom+xml"/><link href="https://abintech.twidv.com/2010/04/htc-magic-ruu-rooted-spl-1762007.html#comment-form" rel="replies" title="45 個意見" type="text/html"/><link href="https://www.blogger.com/feeds/8596053384636689442/posts/default/5186066037493734936" rel="edit" type="application/atom+xml"/><link href="https://www.blogger.com/feeds/8596053384636689442/posts/default/5186066037493734936" rel="self" type="application/atom+xml"/><link href="https://abintech.twidv.com/2010/04/htc-magic-ruu-rooted-spl-1762007.html" rel="alternate" title="HTC Magic 刷入歐版 RUU (rooted) 加上 SPL 1.76.2007" type="text/html"/><author><name>Abin</name><uri>http://www.blogger.com/profile/11723161715531068787</uri><email>noreply@blogger.com</email><gd:image height="32" rel="http://schemas.google.com/g/2005#thumbnail" src="//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjeWuiw4mDiqf2k7uj4szC6I3hS70kEW-tm_gpLFxHpOwDP3VyZBV-1oG6OoQnI3ur10nD1kRIZgRcmN_lAoIeHbdUsFg89XUxEscnje6FaL8gWM3_jswkM1dTjJ9Y54Q/s220/Portrait-Blog-S.gif" width="32"/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" height="72" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhGFfAnDPXHzeID0ISO3ROd8XSvPq68eJdymAbmPK7P-X48itcfsYsFS7oFCjP2ldWXBzV99JZo04QHkjRv62Dr-2Ikba7vYyE2KdGRQMXZMiQV6i12Wc6En7rzH_8__gp6TuB1DnUG2M5s/s72-c/HTC_ROM-Recovery.png" width="72"/><thr:total>45</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8596053384636689442.post-8246108382198371091</id><published>2010-03-16T21:52:00.004+08:00</published><updated>2010-03-16T23:57:23.144+08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Android"/><category scheme="http://www.blogger.com/atom/ns#" term="HTC Magic Hack"/><title type="text">製作金卡 (Gold Card)</title><content type="html">&lt;p&gt;&lt;img src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEguiabLa-aohYtISBTCLKUo2nFIbBnUwZXbKIbuEyEOLkQ20-2C3H8MDxT4-ztxc_Cagd_nuCr3z_8VGp2s_sTC0xZMw3mp5FVvJItClE7bROkGfqTPKbvwD4iJGIQz2qPfUc5DagBOm2qs/s400/Goldcard.jpg" border="0" id="BLOGGER_PHOTO_ID_5449170900031055426" align="right"/&gt;根據神人的研究，發現 HTC 的韌體更新程式 RUU (ROM Update Utility)，為了怕使用者誤用、拿到不正確語系或版號的韌體去刷手機，於是在安裝程式裡面動了手腳，增加一些檢查機制，阻擋這類跨區或跨版本的韌體升級，這樣能避免不懂的使用者亂刷刷壞，間接也阻止了不同版本的韌體在不同地區的手機上使用。不過，如同之前&lt;a href="http://abintech.twidv.com/2010/03/htc-magic.html" &gt;改機前言&lt;/a&gt;所述，如果透過管道弄到「歐洲工程版」的 RUU，這道檢查機制就變成阻擋改機的第一道關卡。先從原理來看，RUU 在執行前，會要求使用者確認手機和電腦已經連接，一旦連接，安裝程式和手機就能溝通，藉由溝通結果來做檢查。而這個檢查機制主要有兩種：第一種開放給電話系統商使用，就是透過 SIM 卡檢查（讀取 ID 或序號之類的），來判斷是不是那一家的系統（Ex. 中華電信 or 台哥大），第二種是手機製造商（就是 HTC 自己啦），依照銷售的區域、機種和型號，判斷更新執行的權限，會檢查的包含了裝置識別碼 (MID; Model Identification) 和客戶識別碼 (CID; Customer Identification)。這次提供改機後門的 RUU 和電話系統商無關、有限定手機型號，所以只要是 Magic 手機應該都能夠用，唯一阻擋在前面的只剩下 CID 檢查（硬去執行 RUU 會因為 CID incorrect 而 update fail）。所以要能做到 CID Unlock，才能開始改機的第一步：安裝歐版的 RUU。（聽說也可以直接修改更新安裝程式，跳過檢查直接達到 SIM Unlock &amp;amp; CID Unlock 的目的..）&lt;/p&gt;
&lt;p&gt;實際 CID 檢查的詳細步驟我不是很瞭解，不過聽說在開機時、手機裡的 SPL (Second Program Loader, Android 上的 Bootloader, 類似 BIOS) 會讀取記憶卡做檢查，只要在手機的記憶卡裡寫入一些「引導資料」、讓 SPL 載入，當 RUU 要做 CID 檢查時，就能直接 bypass 啦！這張「被寫入引導資料」的記憶卡，就是所謂的「金卡」(Gold Card)。在製作金卡之前，要先確認幾個前提，首先所有步驟只和記憶卡有關，所以製作過程手機插著哪張記憶卡，就只能用那張卡來進行改機動作（也就是說不能產生寫入金卡資料後寫進別張記憶卡使用）。再者，這張卡必須是 FAT32 檔案系統（目前一般大容量記憶卡的標準格式），最後，有些人認為雜牌爛卡也會是金卡製作的失敗原因之一，所以最好是有品牌或好一點的記憶卡（我自己是用威剛 A-Data 8GB Class 6，買手機送的）。&lt;/p&gt;
&lt;p&gt;製作金卡的第一個步驟是先取得手機的 CID。熟悉 Linux 的人可以透過手機的終端機程式（例如用 &lt;a href="http://code.google.com/p/connectbot/" id="l_:c" title="ConnectBot"&gt;ConnectBot&lt;/a&gt; 連 Localhost、或是其他像 &lt;a href="http://www.cyrket.com/p/android/jackpal.androidterm/" id="e02m" title="Android Terminal Emulator"&gt;Android Terminal Emulator&lt;/a&gt; 之類的終端機工具，請自行安裝）從檢視下述檔案內容，或是先&lt;a href="http://abintech.twidv.com/2010/03/htc-magic_11.html" id="pa65" title="確認過電腦與手機連線狀況"&gt;確認過電腦與手機連線狀況&lt;/a&gt;後，透過 ADB 工具（可以從下載的 &lt;a href="http://developer.android.com/intl/zh-TW/sdk/index.html" id="ur4l" title="Android SDK"&gt;Android SDK&lt;/a&gt; 壓縮檔裡 tools 目錄下取得），執行命令查看檔案內容：&lt;/p&gt;
&lt;p&gt;&lt;code class="cmd"&gt;adb shell cat /sys/class/mmc_host/mmc1/mmc1:*/cid&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;或是使用 adb shell 登入，以及在手機上的終端機程式下命令：&lt;/p&gt;
&lt;p&gt;&lt;code class="cmd"&gt;cat /sys/class/mmc_host/mmc1/mmc1:*/cid&lt;/code&gt;&lt;/p&gt;
&lt;a name='more'&gt;&lt;/a&gt;
&lt;p&gt;它會回一個格式像 11223344556677889900aabbccddeeff 的字串，相當於 16 個 Byte、32 個字元的長字串，這就是 CID。這個字串必須做點處理才能夠用，第一個處理是字串反轉 (Reverse)，也就是每個 Byte 倒轉位置，以上面這個字串 11 22 33 44 ... dd ee ff 來舉例，所謂的反轉就是第一個 Byte 移到最後一個位置，第二個 Byte 移到倒數第二個位置....最後一個 Byte 移到第一個位置，所以範例字串反轉完就變成 ffeeddccbbaa00998877665544332211 了。其他教學文章是叫大家抓一個加解密工具 QMAT（試用或破解版），安裝和執行這個工具其實也只是為了做上面這個動作（Cyptoanalysis Tools -&amp;gt; Crypto Toolbox -&amp;gt; Reverse String），懶的弄這套工具的自己反轉字串就行了。反轉完的字串，第二個處理是第一個 Byte 替換成 00，這樣的 CID 才能去產生金卡用的引導資訊。所以範例的 CID 轉換結果為：&lt;/p&gt;
&lt;p&gt;&lt;code&gt;11223344556677889900aabbccddeeff -&amp;gt; 00eeddccbbaa00998877665544332211 &lt;/code&gt;&lt;/p&gt;
&lt;p&gt;可以手動，或利用 QMAT 來做字串反轉&lt;br/&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEizwbJP3heywq7LSI3n32hNZLK5bOH636-03xH0OghOExN2ZvIJdBRhPGMBTOeSlcpEuw5z3Q5T5PvC5LJmF6NVs26BDeUAzKABm6WMSIOxWj_tzx7cIPE_ebuXoqaJO87zHDVt702LepMI/s1600-h/QMAT.jpg"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 400px; height: 325px;" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEizwbJP3heywq7LSI3n32hNZLK5bOH636-03xH0OghOExN2ZvIJdBRhPGMBTOeSlcpEuw5z3Q5T5PvC5LJmF6NVs26BDeUAzKABm6WMSIOxWj_tzx7cIPE_ebuXoqaJO87zHDVt702LepMI/s400/QMAT.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5449170914004934370" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;得到處理過的 CID，網路上有根據這個 ID 能幫你自動產生引導資訊 (goldcard.img) 的服務，到 &lt;a href="http://revskills.de/pages/goldcard.html" id="zgb9" title="Free G1 goldcard generation"&gt;Free G1 goldcard generation&lt;/a&gt; 網站，填入 E-mail address 和處理過的 CID，網站會自動產生對應 ID 的資料映像檔，以附件直接寄到你的信箱，接下來把這個映像檔寫入記憶卡，金卡就算大功告成啦！（提醒：這個映像檔只能用在產生 CID 的那張記憶卡上，每次換不同記憶卡，就要重新找出 CID 來產生並取得其專屬的映像檔..）&lt;/p&gt;
&lt;p&gt;產生映像檔的網頁服務，只要填妥資料就可以收到檔案&lt;br/&gt;&lt;a href="http://revskills.de/pages/goldcard.html"&gt;&lt;img src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjh1To9fFmdADvvo0KufFfx86VPbQNQvUVcGK919qf1lW1y4PPXanAXQ7xt5NJ6OZr1mXZaca4K8bRpP0xKQIoVhcyYLvB1Y4q6DYJ3HCrIg7ymRu5wCsqRryoCAGcrTDyV8CL1z66ZO9Q8/s800/GoldcardGenerate.jpg" border="0" id="BLOGGER_PHOTO_ID_5449170905414743506" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;這個映像檔 goldcard.img 裡面盡是 Binary 的資料，因此我們需要一個編輯器、用映像檔以資料覆蓋掉記憶卡前端特定的資料區段，完成金卡的製作。這裡用的工具是 &lt;a href="http://mh-nexus.de/en/hxd/" id="we8d" title="HxD Hex Editor"&gt;HxD Hex Editor&lt;/a&gt;，軟體安裝完，並且將手機記憶卡取出、透過讀卡機連接到電腦（會多出一台卸除式硬碟），執行 HxD Hex Editor 後（必須以管理員身份執行，不然不能寫資料進記憶卡），選擇 Extras 選單 -&amp;gt; Open disk -&amp;gt; Removable Disk，要確定這裡選的 Removable Disk 就是那個接記憶卡的讀卡機（不能確定的話就拔掉其他 USB 儲存裝置來確定），按 OK 之前記得取消「以唯獨方式開啟」(Open as Readonly)，要修改的資料才能成功寫入。&lt;/p&gt;
&lt;p&gt;打開 HxD Hex Editor，選擇 Open disk&lt;br/&gt;&lt;img src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgdtKX2gB-MttIoUKWexUPQqolDbONTe2w7Vv4nSLsr-xQhB2eY3SRlu8vJuWdk8F_4BxN0XWBkhnjFXEbl22ZZyz8FSkKwI6HecBUDW_uEOmUF3nNSXXwVGCKbviQKgQlHjkTujZ2cs9K7/s800/HxD-1.jpg" border="0" id="BLOGGER_PHOTO_ID_5449176613495131010" /&gt;&lt;/p&gt;
&lt;p&gt;選擇記憶卡所在的磁碟機，記得取消 Readonly&lt;br/&gt;&lt;img src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEglfJ_K2veUe_g1lrLofWjU7JA51X5p0QWkjDsVuzGYSEEiNaU4_EUVrPZwD6YGmtQQ7G-1fLpZ_BrZhBAFK_6syfn91kaP_i4dG67LricezP6jdLOmN1J06S8h9wqf9ETLmDJdQziboQdu/s400/HxD-2.jpg" border="0" id="BLOGGER_PHOTO_ID_5449176622130590674" /&gt;&lt;/p&gt;
&lt;p&gt;開啟成功，會產生一個獨立分頁用來檢視這張記憶卡的詳細資料（有點像硬碟機的前段磁區），接下來再選擇 Extras 選單 -&amp;gt; Open disk image，選定剛收到的 goldcard.img、選擇以 512 (Hard disks/Floppy disks) 開啟，會另外產生這個映像檔資料內容的分頁，資料範圍是 Offset 00000000-00000170，接下來全選、複製 goldcard.img 的所有內容，然後切到記憶卡的資料分頁，選擇 Offset 00000000-00000170 的區段，使用貼上寫入 (Paste write），然後存檔，這樣修改過的記憶卡就是張載入引導資訊 goldcard.img，能夠規避 CID 檢查的金卡 (GoldCard) 啦！&lt;/p&gt;
&lt;p&gt;有了記憶卡資料的分頁，接著打開金卡的映像檔，選擇以 512 的 sector size 開啟&lt;br/&gt;&lt;img src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjD0Qf-f6uu5uarPfiN2SpVNCG_VWsBhpwYnQTKRnt2vYxC2gr7a_P0xSqUt0apwvnbchNxK0v8544M1Ba_N4KJZXSOOUpDYJnLmobtmF5K0VBlIg9-7n9-HefxfJoxqqW6UIVIgWjGDsnF/s800/HxD-3.jpg" border="0" id="BLOGGER_PHOTO_ID_5449176629794958194" /&gt;&lt;/p&gt;
&lt;p&gt;說實話，如何驗證金卡是否正確成功只有一種辦法，就是實際去執行會檢查 CID 的 RUU 程式。如果能夠執行、並進行官方韌體更新的話（不會出現 CID incorrect 之類的錯誤），那金卡製作就成功啦！金卡原理其實就是在記憶卡最前端的儲存空間寫入引導資料，這個動作不會影響記憶卡的使用、也不會破壞到記憶卡內的資料（怕的話記憶卡內的檔案可以先備份啦），所以有改機需求的人，即便現在還沒有要改機，也可以先做一下金卡來放著，哪天突然有需要馬上就能用囉！&lt;/p&gt;
&lt;p&gt;參考文章：&lt;br/&gt;
&lt;a href="http://www.htcwizardweb.net/node/170" id="rt13" title="SIM unlock and CID unlock your HTC Wizard"&gt;SIM unlock and CID unlock your HTC Wizard&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://forum.xda-developers.com/showthread.php?t=572683" id="y9o-" title="[HOWTO] Create a GoldCard - Bypassing the RUU/SPL CID check to Root/Downgrade"&gt;[HOWTO] Create a GoldCard - Bypassing the RUU/SPL CID check to Root/Downgrade&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://www.hiapk.com/bbs/viewthread.php?tid=40552&amp;amp;highlight=%2Bcadetnudt" id="oj:3" title="HTC版G2(32A)制作金卡详解教程"&gt;HTC版G2(32A)制作金卡详解教程&lt;/a&gt;&lt;/p&gt;</content><link href="https://abintech.twidv.com/feeds/8246108382198371091/comments/default" rel="replies" title="張貼留言" type="application/atom+xml"/><link href="https://abintech.twidv.com/2010/03/gold-card.html#comment-form" rel="replies" title="25 個意見" type="text/html"/><link href="https://www.blogger.com/feeds/8596053384636689442/posts/default/8246108382198371091" rel="edit" type="application/atom+xml"/><link href="https://www.blogger.com/feeds/8596053384636689442/posts/default/8246108382198371091" rel="self" type="application/atom+xml"/><link href="https://abintech.twidv.com/2010/03/gold-card.html" rel="alternate" title="製作金卡 (Gold Card)" type="text/html"/><author><name>Abin</name><uri>http://www.blogger.com/profile/11723161715531068787</uri><email>noreply@blogger.com</email><gd:image height="32" rel="http://schemas.google.com/g/2005#thumbnail" src="//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjeWuiw4mDiqf2k7uj4szC6I3hS70kEW-tm_gpLFxHpOwDP3VyZBV-1oG6OoQnI3ur10nD1kRIZgRcmN_lAoIeHbdUsFg89XUxEscnje6FaL8gWM3_jswkM1dTjJ9Y54Q/s220/Portrait-Blog-S.gif" width="32"/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" height="72" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEguiabLa-aohYtISBTCLKUo2nFIbBnUwZXbKIbuEyEOLkQ20-2C3H8MDxT4-ztxc_Cagd_nuCr3z_8VGp2s_sTC0xZMw3mp5FVvJItClE7bROkGfqTPKbvwD4iJGIQz2qPfUc5DagBOm2qs/s72-c/Goldcard.jpg" width="72"/><thr:total>25</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8596053384636689442.post-5738767321123520408</id><published>2010-03-11T21:52:00.006+08:00</published><updated>2010-08-10T09:30:08.101+08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Android"/><category scheme="http://www.blogger.com/atom/ns#" term="HTC Magic Hack"/><title type="text">HTC Magic 與電腦正確連線</title><content type="html">&lt;p&gt;不管是改機或做金卡，或是之後要對手機系統做一些進階的操作，都要先確認手機已經和電腦連線，這裡的連線不只是插上 USB 線，還要能確認電腦能夠透過接線相互溝通。其實 Magic 透過 USB 接上電腦，不用裝什麼驅動程式、預設就會被當作一台 USB「讀卡機」使用，只要在手機上選擇「掛載 SD 卡」，電腦就能像存取一般隨身碟一樣直接存取手機的記憶卡。但這種狀態下，並不能保證更新程式或其他工具能直接透過指令和手機的作業系統溝通，這時候必須安裝 HTC Driver，才能確保外部工具和手機系統能夠完整連線。這個驅動程式現在是包在 HTC Sync 裡面（舊版才有獨立版本）、在 &lt;a href="http://www.htc.com/tw/support.aspx" target="blank_"&gt;HTC Support 官網&lt;/a&gt;就有提供，&lt;a href="http://www.htc.com/tw/SupportViewNews.aspx?dl_id=933&amp;news_id=729" target="blank_"&gt;最新版本是 2.0.33&lt;/a&gt;，安裝程式會幫你裝進「HTC Driver」和「HTC Sync」，後者是一個開機會執行啟動的服務、主要是幫你 Sync Exchange/Outlook 資料用的，如果不需要的話可以獨立移除。一旦驅動程式裝好，只要你的手機接上電腦，除了原來當「讀卡機」的機制一樣會在你電腦跑出一個「卸除式磁碟」外，在裝置管理員裡，會多出一個 Android USB Devices 類別，裡面會有個 My HTC 的裝置，這樣才能確保手機裝置有正確連線，後面有一些透過電腦和手機連動的動作才能正確執行。（包含手機的「行動網路共用」，就是把能 3G 上網的手機當作數據機讓電腦能共用 3G 上網，這個 HTC driver 一定要裝..）&lt;/p&gt;
&lt;p&gt;當 HTC driver 裝好，每當手機有接上電腦，便會多出這個手機裝置&lt;br/&gt;&lt;img src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhyjUWl4F1l3JFRYL2gnzyUuzS-eRAE1s9QCGAoD_xJ25-VMJTZ-8EdblX4v4cbt-eoX2oOcNNASxuch3k5J5GmXAEkgFKvYwMV5ltIIERkVkyoe8kU5uB0Q4fiAh-HJC6fOKHthXTdijLo/s400/MyHTC.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5447312505278514178" /&gt;&lt;/p&gt;
&lt;p&gt;要檢查手機連線是否正常，可以透過 ADB (Android Debug Bridge) 工具來做一些測試。ADB 工具其實是包在 Google 提供的 &lt;a href="http://developer.android.com/intl/zh-TW/sdk/index.html" id="swi9" title="Android SDK"&gt;Android SDK&lt;/a&gt; 裡面（解壓縮後 tools 目錄下的那些執行檔），提供程式開發者拿來與手機或模擬器溝通的 Debug 公用程式，所以可以透過下載 SDK 解壓縮後取得。打開 DOS 視窗、切換到公用程式的目錄下，直接下執行檔命令 adb，就會列出所有 adb 參數和使用說明，如果要確認手機和電腦有正確連線，可以用命令：&lt;/p&gt;
&lt;p&gt;&lt;code class="cmd"&gt;adb devices&lt;/code&gt;&lt;/p&gt;
&lt;a name='more'&gt;&lt;/a&gt;
&lt;p&gt;如果有正確連線，這個命令會出現所有連線裝置的列表 (List of devices attached)，格式像是 HT0000000000 device，表示發現有一台「裝置」、序號 HT0000000000 正連接上，如此，不管要透過命令到手機的作業系統裡面操作，還是要進行韌體更新，才能確保連線無誤。其實 adb 是相當強大的公用程式，透過它可以直接「登入」手機裡的 Android 作業系統，由於 Android 本身是從 Linux 改來的，所以很多 Linux 的系統架構和操作命令大同小異，連線後「登入」手機的命令是：&lt;/p&gt;
&lt;p&gt;&lt;code class="cmd"&gt;adb shell&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;這時候會出現終端機模式最熟悉的提示符號「$」，然後就能執行 Linux 命令啦！在這個提示符號下其實有限定權限、只能在特定目錄做一些操作，這也是 Google 設計 Android 時希望保護作業系統穩定所做的限制，習慣 Linux 的人可能會想切換到最大使用者 root 去執行 (su)，不幸的是未改機的情況下這樣是不被允許的。不過如果改過機、系統內也被放入 su 這隻程式，當你切換到 root 身份、提示符號變成「#」（有的工程版或特殊韌體一執行終端機模式提示符號就是 #），就代表已經取得作業系統的最大權限，原先 Android 的封印也被解開，這樣就能為所欲為啦！&lt;/p&gt;
&lt;p&gt;不熟悉終端機操作也沒關係，adb 可以透過批次的方式直接下命令給手機，假設我想知道系統預設安裝的程式有哪些（就是那些不能移除的），可以直接在 DOS 視窗透過 adb 下命令：&lt;/p&gt;
&lt;p&gt;&lt;code class="cmd"&gt;adb shell ls /system/app&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;這樣會列出所有目前被安裝在系統應用程式目錄下 (/system/app) 的軟體 (*.apk)。如果要對手機做一些進階操作 (ex. 改機)，不少命令都要在這樣的環境下執行，以上連線的環境檢查就不再複述了。&lt;/p&gt;
&lt;p&gt;關於詳細 ADB 的用法，可以參照官方的使用文件：&lt;a href="http://developer.android.com/intl/zh-TW/guide/developing/tools/adb.html" id="yc75" title="Android Debug Bridge"&gt;Android Debug Bridge&lt;/a&gt;。&lt;/p&gt;
&lt;p&gt;註：有一個狀況下是例外，如果手機開機不是開在正常模式（像 H-Boot, recovery or fastboot），就有可能發現「裝置管理員看不到裝置、但其實手機是連線的」，這種模式下如果連線失敗比較難判斷是哪邊的問題，所以最好在正常模式先確認能正確連線，之後在改機時其他狀態下比較能確保操作的正常。&lt;/p&gt;</content><link href="https://abintech.twidv.com/feeds/5738767321123520408/comments/default" rel="replies" title="張貼留言" type="application/atom+xml"/><link href="https://abintech.twidv.com/2010/03/htc-magic_11.html#comment-form" rel="replies" title="12 個意見" type="text/html"/><link href="https://www.blogger.com/feeds/8596053384636689442/posts/default/5738767321123520408" rel="edit" type="application/atom+xml"/><link href="https://www.blogger.com/feeds/8596053384636689442/posts/default/5738767321123520408" rel="self" type="application/atom+xml"/><link href="https://abintech.twidv.com/2010/03/htc-magic_11.html" rel="alternate" title="HTC Magic 與電腦正確連線" type="text/html"/><author><name>Abin</name><uri>http://www.blogger.com/profile/11723161715531068787</uri><email>noreply@blogger.com</email><gd:image height="32" rel="http://schemas.google.com/g/2005#thumbnail" src="//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjeWuiw4mDiqf2k7uj4szC6I3hS70kEW-tm_gpLFxHpOwDP3VyZBV-1oG6OoQnI3ur10nD1kRIZgRcmN_lAoIeHbdUsFg89XUxEscnje6FaL8gWM3_jswkM1dTjJ9Y54Q/s220/Portrait-Blog-S.gif" width="32"/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" height="72" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhyjUWl4F1l3JFRYL2gnzyUuzS-eRAE1s9QCGAoD_xJ25-VMJTZ-8EdblX4v4cbt-eoX2oOcNNASxuch3k5J5GmXAEkgFKvYwMV5ltIIERkVkyoe8kU5uB0Q4fiAh-HJC6fOKHthXTdijLo/s72-c/MyHTC.jpg" width="72"/><thr:total>12</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8596053384636689442.post-5319272213303728087</id><published>2010-03-05T23:49:00.007+08:00</published><updated>2010-06-29T14:13:59.812+08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Android"/><category scheme="http://www.blogger.com/atom/ns#" term="HTC Magic Hack"/><title type="text">HTC Magic 改機步驟</title><content type="html">&lt;p&gt;&lt;img src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEicza1npEWrSTmf1pxTaOI-S7GKNSmAAn7xJWH0Nfviemo04dmYyZQXMjsO8g40oi1cqIeOkagFE4dS5LTWr0KmrP-eFdaFbHCrT-psitIclunj2Sslz7Up2jcQvjlG1HKQxxzbiXVS67C9/s400/HackedMagic.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5444995897311111954" align="right" /&gt;本文是用來紀錄徒手讓 HTC Magic 在具備官方韌體的狀態下，能夠額外具備 Root 身份的能力（前言&lt;a href="http://abin.twidv.com/2010/02/htc-magic-rooted.html" target="blank_"&gt;在此&lt;/a&gt;）。由於對 Android 的系統架構還很模糊，差不多就是照著人家指導的方法 Step by Step 地完成，過程很順利、但其實對每個步驟的原理還是不知其所以然，所以也不要問我為什麼哪個步驟不行、在那個平台或機種怎麼改，我沒辦法也不知道該如何回答。（我只是整理筆記...）&lt;/p&gt;
&lt;p&gt;一開始出貨的 Magic 用的是相當陽春的 Android 1.5 OS，不帶 HTC Sense UI， 透過一些技巧很容易就能取得 root 的最高系統權限（SPL v1.33，詳看&lt;a href="http://www.sogi.com.tw/newforum/article_list.aspx?topic_ID=6088974" target="blank_"&gt;此文&lt;/a&gt;），不過在 2009/10/23 HTC 推出&lt;a href="http://www.asia.htc.com/Campaign/TW/2009/Magic_Upgrade/index.html" target="blank_"&gt;官方的升級&lt;/a&gt;後 (FW: 3.03.751.4，要透過&lt;a href="http://www.htc.com/tw/SupportViewNews.aspx?dl_id=721&amp;amp;news_id=304" target="blank_"&gt;下載外部公用程式&lt;/a&gt;來升級)，雖然讓 Magic 擁有了和 Hero 一模一樣的軟體介面和應用程式，但卻阻擋了 root 的取得，一時讓 root 過的使用者在更新韌體後哀鴻遍野、怨聲載道。一開始沒趕上改機的熱潮，所以當我的 Magic 乖乖升了官方韌體、額外具備 Sense UI 和一堆 HTC 客製的應用程式，只覺得官方韌體也相當不錯，還沒感受到改機的急迫性。不過在用了一段時間後，漸漸發現好多必須利用 root 身份執行的應用程式和功能相當吸引我，於是在後來新改機步驟出現之後，我也躍躍欲試、一頭栽進改機刷韌體的熱潮當中。這個新的改機步驟緣由是 HTC 在歐洲釋出了一個帶 su (switch user，就是能切換身份到 root 的工具) 的 RUU (ROM Update Utility)，透過這個官方的韌體升級程式更新後除了擁有最新的韌體外 (FW: 3.04.401.2)，內含最大權限的 root 身份！不過不是一般人都能用這個韌體升級程式，HTC 有利用鎖銷售地區的方法限制使用者執行（怕亞洲客戶刷到歐洲韌體）。道高一尺魔高一丈，有人發現製作所謂的「金卡」(&lt;a href="http://forum.xda-developers.com/showthread.php?t=572683" target="blank_"&gt;GoldCard&lt;/a&gt;)，能夠規避 CID Check、達到任何人都能使用歐洲工程版 RUU 的目的。有了最大權限，就能透過更換 Recovery Image (工程模式的 Kernel)、進一步利用神人修改的 SPL (Second Program Loader, Android 上的 Bootloader, 類似 BIOS)，替換掉官方限制的版本，徹底解除 Android 系統的封印！在這之後，不管你想換什麼版本的韌體 (v1.5, 1.6, 甚至 2.0, 2.1)，還是想擁有什麼權限，都能易如反掌啦！&lt;/p&gt;
&lt;p&gt;嘴巴講講很簡單，實際上步驟還挺繁複的，而且，還要準備不少工具和程式。以下步驟僅適用於「具備 Sense UI、HTC 官方版韌體的 Magic 手機」，其他廠牌和型號機種一概不能用！大致流程如下，每個主題步驟很多，另行專文連結詳述：&lt;/p&gt;
&lt;a name='more'&gt;&lt;/a&gt;
&lt;p&gt;0. &lt;a href="http://abintech.twidv.com/2010/03/htc-magic_11.html" target="blank_"&gt;確認手機與電腦正確連接&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;1. &lt;a href="http://abintech.twidv.com/2010/03/gold-card.html" target="blank_"&gt;製作金卡&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;2. &lt;a href="http://abintech.twidv.com/2010/04/htc-magic-ruu-rooted-spl-1762007.html" target="blank_"&gt;刷入歐洲工程版的 RUU，並刷入客製的 Recovery Image 和 SPL&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;其實到這個步驟，Magic 搭載 HTC 歐版官方韌體，已經是完整功能的手機（就少中文輸入法），但已經解開其封印，要做什麼應用都可以。不過坊間所有的「非官方韌體」，個人覺得都沒有 HTC 自己的官方韌體來得穩定完整（會有的問題包含藍牙不正常、沒有中文輸入法、相機應用怪怪的一堆有的沒的..），而且我解開封印的目的只是取得 root 身份，對於原有的韌體版本 (Cupcake v1.5)、HTC 的 Sense UI、甚至中華電信客製的一些服務和功能 (Hami &amp;amp; Widget) 都覺得還不錯，因此最後還是還原官方韌體（保留修改過的 Recovery &amp;amp; SPL），讓一般操作和沒改機差不多：&lt;/p&gt;
&lt;p&gt;3. &lt;a href="http://abintech.twidv.com/2010/05/rom-rom.html" target="blank_"&gt;刷回 HTC 台灣官方韌體&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;無獨有偶，在搞定改機步驟一兩週後，HTC 又推出了官方更新 (FW: 3.03.751.5 &amp;amp; 3.03.751.6)！雖然升級幅度不大，直接透過手機網路更新就能達成，但對我們這種改機過的用戶，HTC 也做了一些檢查和防堵，透過提示介面要自動更新的時候，會跳出失敗的訊息！雖然這兩個更新算可有可無，但是「情感上」還是用最新的比較好（事實證明，最新韌體最少有改善我利用藍牙耳機聽音樂會發生斷斷續續的狀況），所以最後要讓透過網路下載的官方更新成功，然後再還原能 root 的環境：&lt;/p&gt;
&lt;p&gt;4. &lt;a href="http://abintech.twidv.com/2010/05/magic-75157516-root.html" target="blank_"&gt;成功網路升級，並回復 root 權限&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;透過以上的幾個步驟，目前最後的狀態是維持最新的 HTC 官方韌體版本 (FW: 3.03.751.6)，內建客製的 Recovery (recovery-RA-hero-v1.6.2) 和 SPL (v1.76.2007)，而且具備 root 的身份和權限。當然，這個現況很容易因為 HTC 又推出更新而改變，或又提供作業系統升級而大翻盤，不過，我相信大家都樂見 HTC 持續對舊的 Magic 用戶提供更新服務啦～網路上也一直有神人能找出因應破解的辦法，到時候再持續更新這篇文章。如果又如謠言、HTC 不管我們這些舊機型 Magic 用戶的話，坊間其實也有不少修改過的 Android 不同版本客製化韌體，加上 HTC &lt;a href="http://www.techbang.com.tw/?p=36476" target="blank_"&gt;確認&lt;/a&gt;三月中會釋出給 Hero 用的 2.1 更新（結果跳票了），幾經調整後我相信也能夠套用在 Magic 上（因為硬體和環境都差不多），對 Magic/Android 的前途，我還是相當樂觀的啦！&lt;/p&gt;
&lt;p&gt;這裡算是比較技術的 Blog，除了持續會有 Blogger 相關的 Hack 文章，我那台 &lt;a href="http://abintech.twidv.com/search/label/WL-500g%20HACK" target="blank_"&gt;Asus WL-500g&lt;/a&gt; 的系列改機應該已經斷尾了（因為機器已經掛掉往生了，再見啦，&lt;a href="http://oleg.wl500g.info/" target="blank_"&gt;Oleg 大大&lt;/a&gt;..），接下來新的系列筆記會是 Android 相關的 Hack 甚至軟體開發（程式環境終於搞定了），看看能不能重拾 RD 以及 Programming 的熱情囉～&lt;/p&gt;
&lt;p&gt;參考文章：&lt;br/&gt;
&lt;a href="http://forum.xda-developers.com/showthread.php?t=572683" target="blank_"&gt;[HOWTO] Create a GoldCard - Bypassing the RUU/SPL CID check to Root/Downgrade&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://www.hiapk.com/bbs/viewthread.php?tid=40552&amp;amp;highlight=%2Bcadetnudt" target="blank_"&gt;HTC版G2(32A)制作金卡详解教程&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://www.hiapk.com/bbs/thread-98605-1-1.html" target="blank_"&gt;G2 32A 1.76.0007 完美SPL终告破&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://www.mobile01.com/topicdetail.php?f=423&amp;amp;t=1407136&amp;amp;last=17315275" target="blank_"&gt;Magic Perfected SPL 1.76.0007 Unlocked(完美機解鎖)&lt;/a&gt;&lt;/p&gt;</content><link href="https://abintech.twidv.com/feeds/5319272213303728087/comments/default" rel="replies" title="張貼留言" type="application/atom+xml"/><link href="https://abintech.twidv.com/2010/03/htc-magic.html#comment-form" rel="replies" title="6 個意見" type="text/html"/><link href="https://www.blogger.com/feeds/8596053384636689442/posts/default/5319272213303728087" rel="edit" type="application/atom+xml"/><link href="https://www.blogger.com/feeds/8596053384636689442/posts/default/5319272213303728087" rel="self" type="application/atom+xml"/><link href="https://abintech.twidv.com/2010/03/htc-magic.html" rel="alternate" title="HTC Magic 改機步驟" type="text/html"/><author><name>Abin</name><uri>http://www.blogger.com/profile/11723161715531068787</uri><email>noreply@blogger.com</email><gd:image height="32" rel="http://schemas.google.com/g/2005#thumbnail" src="//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjeWuiw4mDiqf2k7uj4szC6I3hS70kEW-tm_gpLFxHpOwDP3VyZBV-1oG6OoQnI3ur10nD1kRIZgRcmN_lAoIeHbdUsFg89XUxEscnje6FaL8gWM3_jswkM1dTjJ9Y54Q/s220/Portrait-Blog-S.gif" width="32"/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" height="72" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEicza1npEWrSTmf1pxTaOI-S7GKNSmAAn7xJWH0Nfviemo04dmYyZQXMjsO8g40oi1cqIeOkagFE4dS5LTWr0KmrP-eFdaFbHCrT-psitIclunj2Sslz7Up2jcQvjlG1HKQxxzbiXVS67C9/s72-c/HackedMagic.jpg" width="72"/><thr:total>6</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8596053384636689442.post-1742352023109169960</id><published>2010-02-26T22:17:00.000+08:00</published><updated>2010-02-26T22:17:00.248+08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Blogger"/><title type="text">Blogger 的自動分頁機制 (Auto Pagination)</title><content type="html">&lt;p&gt;這邊好久沒 Po 文了。上個禮拜 Blogger 逕自推出了一個&lt;a href="http://buzz.blogger.com/2010/02/auto-pagination-on-blogger.html" id="g1v4" title="自動分頁"&gt;自動分頁&lt;/a&gt;的機制，我簡單看了內容，只是一堆敘述、沒有調整的程式碼和新控制介面，也就是官方會自動套用到每個 Blogger 使用者的 Blog 上，反正啥也做不了當時也沒去深究。剛開始一點感覺都沒有，後來有網友反應 Blog 發生不正常的分頁狀況，主要的現象是：首頁本來設定顯示固定文章數（ex. 5），結果怎麼突然變少了？透過新舊文章上下翻頁的功能，每次顯示的頁面文章數量都不一定一樣。另外，連搜尋、標籤 (label) 和存檔 (archive) 頁面，也有一樣的狀況發生，雖然無損文章內容，但是在頁面呈現上，文章數量會因文章內容而減少，由於和原來的使用習慣不一樣，討論區開始出現哀鴻遍野、出現要求&lt;a href="http://www.google.com/support/forum/p/blogger/thread?tid=7b9302f1f4bbec29&amp;amp;hl=en" id="hdg1" title="關閉自動分頁"&gt;關閉自動分頁&lt;/a&gt;的聲浪。&lt;/p&gt;
&lt;p&gt;回到一開始，看看為什麼要官方推出這個功能。很多人的 Blog 文章裡除了文字以外，也會補上不少圖片和照片（有的超愛插大圖），甚至內嵌多媒體，單篇文章瀏覽時無可厚非，一定要顯示出所有內容，但如果是在首頁、檢索或分類頁面，一樣要顯示或載入全部內容的話，那麼這些頁面光等全部載入就要等到死。很多 Blog 的主人根本不知道緣由、就抱怨是因為 Blogger 提供的流量不夠、太慢，讓人家不想看他們的網站，更專業一點的會說導致 pageviews 大幅下降，這對商業或提供廣告的網站可是致命的問題。在不動內容又想改進 Blog 載入速度的前提下，Blogger 官方於是有了這項決定和計畫。出發點是善意的，不過此舉一出，很多愛放大圖或照片的首頁只剩下兩篇文章（剩下的請翻前一頁），就連搜尋或分類結果也這樣，這可是犯了眾怒啊！仔細看了官方的作法，是直接在載入 Blog 版面樣板文件前就自己做了過濾的動作，因此即便在樣板裡塞什麼 Hack，拿被「和諧」過的資料來顯示，對版面內容調整自然也無能為力了。&lt;/p&gt;
&lt;p&gt;根據&lt;a href="http://buzz.blogger.com/2010/02/auto-pagination-on-blogger.html" id="i_.." title="官方的說法"&gt;官方的說法&lt;/a&gt;，他們是根據要載入的資料量 (amount of HTML on the page being requested in KB)，或是頁面圖檔數量來自動決定切分頁後該頁面會有的文章數量，假設是個愛放攝影作品的 Blog，一篇文章出現「夠多」「夠大」的圖檔，那麼在首頁，這類文章經「自動分頁」處理後最少只剩下「兩篇」，舊一點的第三篇、第四篇只好翻前一頁才會出來。如果前面一點的文章字多圖少，翻前一頁出來的文章數量又可能有五篇（根據自己設定的最大值），實際翻了幾頁，怎麼每頁的數量都不一樣？就像上一段說的，是在載入樣板文件前就做完分頁的機制，即便用了只顯示標題的 Hack、對這個問題也沒法改善（因此我這篇「&lt;a href="http://abintech.twidv.com/2007/03/simply-result-of-label-and-search.html" id="buka" title="標籤/搜尋頁面只列出標題 (Simplify the result of label and search)"&gt;標籤/搜尋頁面只列出標題 (Simplify the result of label and search)&lt;/a&gt; 」自然也是無效）。&lt;/p&gt;
&lt;a name='more'&gt;&lt;/a&gt;
&lt;p&gt;不過，如果文章內已經做了調整、採用&lt;a href="http://abintech.twidv.com/2009/09/jump-break-link.html" id="p9lk" title="官方的「繼續閱讀」(Jump Break Link)"&gt;官方的「繼續閱讀」(Jump Break Link)&lt;/a&gt;、或是早期半官方的 Hack (&lt;a href="http://www.google.com/support/blogger/bin/answer.py?hl=en&amp;amp;answer=42215" id="t5g5" title="Expandable Post Summaries"&gt;Expandable Post Summaries&lt;/a&gt;，也就是我用過的 Hack「&lt;a href="http://abintech.twidv.com/2006/11/blog-post_13.html" id="mpe1" title="首頁長篇文章的收合"&gt;首頁長篇文章的收合&lt;/a&gt;」)，照理說，頁面要載入的資料量和圖檔會變少了，以上自動分頁也沒有存在的必要了啊！這是官方一開始沒考慮到的，逕自全面套用自動分頁，對比較白目的人有改善到載入頁面的速度，但對已經調整過、套用 Jump Break 或繼續閱讀的人來說，那就莫名其妙了！根據這個現象，官方仍在盡力調整和修正中，在我發文的當下，如果有用 Jump Break 來減少首頁載入資料和圖檔的使用者，應該發現自動分頁機制的影響已經變小了，不過再沒 Jump Break 前用 Hack 方式做繼續閱讀的舊文章，還是沒改善，就算在樣板裡要透過 Hack 來做些什麼，也沒有太大的效果。&lt;/p&gt;
&lt;p&gt;所以哩，有上述問題的人，要徹底規避自動分頁的機制或減少影響，有以下的幾個作法：&lt;br/&gt;
&lt;ol&gt;&lt;li&gt;所有有大圖、流量大的文章，務必使用 Jump Break 分割文章（記得摘要裡當然不能有太多圖和嵌入檔）&lt;/li&gt;
&lt;li&gt;如果有用舊的繼續閱讀 Hack，要嘛就是啥都不做等官方支援、要不就是自己手動去換成 Jump Break （一篇篇改原始碼好累）&lt;/li&gt;
&lt;li&gt;整個取消官方的分頁機制，搜尋、分類和存檔全部都用 JSON &amp;amp; Javascript 的 Hack 模組來取代（RSS Feed 動態載入）&lt;/li&gt;
&lt;li&gt;直接避免在文章內塞太多的大圖、減少頁面載入流量&lt;/li&gt;&lt;/ol&gt;
&lt;p&gt;Blog 文章如果多一點，舊文章的標籤和搜尋常用的話，除非慢慢等官方修正、或自己手動去改，要不就自己用 Hack 做出相關模組外，應該沒有其他解。舉個例子，像首頁的分頁問題，很久以前我就用「&lt;a href="http://abintech.twidv.com/2008/01/blog-post.html" id="yost" title="最新文章"&gt;最新文章&lt;/a&gt;」的 Hack 放在首頁下方，避免透過官方的分頁切換來看舊文章分頁（透過 RSS Feed 只動態抓標題，沒有載入過慢的問題）。而搜尋結果，Blogger 也有 &lt;a href="http://abintech.twidv.com/2009/06/google-search-box-gadget.html" id="mbe-" title="Google 搜尋框 (Search Box Gadget)"&gt;Google 搜尋框 (Search Box Gadget)&lt;/a&gt;，這應該也不受自動分頁的限制。剩下標籤和存檔，好像現下還沒有人做過 Hack 模組來取代，不過原理上應該也做得到才是。不過在自己動手做前，還是要重申，雖然是自己的 Blog，但讀者的感覺很重要，沒有人喜歡去拜訪慢得要死的網站（可以用 &lt;a href="http://abin.twidv.com/2008/12/pingdom-tools.html" id="xmsx" title="Pingdom Tools - 網頁測速服務"&gt;Pingdom Tools - 網頁測速服務&lt;/a&gt;來檢查），站在 Blogger 官方的立場，講好聽點是為了提昇用戶的載入速度，背地裡也是希望使用者不用浪費太多無謂頻寬，既然人家都那麼大方免費提供 Blog Hosting，一些 make sense 的規矩還是要去遵從才是。&lt;/p&gt;
&lt;p&gt;參考文章：&lt;br/&gt;
&lt;a href="http://01mistery.blogspot.com/2010/02/auto-pagination.html" id="vj:-" title="Blogger官方自動分頁機制(Auto Pagination)"&gt;Blogger官方自動分頁機制(Auto Pagination)&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://blogging.nitecruzr.net/2010/02/auto-pagination-feature-receiving-mixed.html" id="xr1e" title="Auto Pagination Feature Receiving Mixed Review"&gt;Auto Pagination Feature Receiving Mixed Review&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://blogging.nitecruzr.net/2010/02/auto-pagination-and-read-more-solutions.html" id="fv-n" title="Auto Pagination And Read More Solutions"&gt;Auto Pagination And Read More Solutions&lt;/a&gt;&lt;/p&gt;</content><link href="https://abintech.twidv.com/feeds/1742352023109169960/comments/default" rel="replies" title="張貼留言" type="application/atom+xml"/><link href="https://abintech.twidv.com/2010/02/blogger-auto-pagination.html#comment-form" rel="replies" title="8 個意見" type="text/html"/><link href="https://www.blogger.com/feeds/8596053384636689442/posts/default/1742352023109169960" rel="edit" type="application/atom+xml"/><link href="https://www.blogger.com/feeds/8596053384636689442/posts/default/1742352023109169960" rel="self" type="application/atom+xml"/><link href="https://abintech.twidv.com/2010/02/blogger-auto-pagination.html" rel="alternate" title="Blogger 的自動分頁機制 (Auto Pagination)" type="text/html"/><author><name>Abin</name><uri>http://www.blogger.com/profile/11723161715531068787</uri><email>noreply@blogger.com</email><gd:image height="32" rel="http://schemas.google.com/g/2005#thumbnail" src="//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjeWuiw4mDiqf2k7uj4szC6I3hS70kEW-tm_gpLFxHpOwDP3VyZBV-1oG6OoQnI3ur10nD1kRIZgRcmN_lAoIeHbdUsFg89XUxEscnje6FaL8gWM3_jswkM1dTjJ9Y54Q/s220/Portrait-Blog-S.gif" width="32"/></author><thr:total>8</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8596053384636689442.post-125554391270267911</id><published>2009-09-23T22:30:00.000+08:00</published><updated>2009-09-23T22:30:01.690+08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Blogger"/><title type="text">官方版「繼續閱讀」(Jump Break Link)</title><content type="html">&lt;p&gt;才 Po 完一個新功能，沒多久又來一個，這次是幾乎大部分人都會用的「&lt;a href="http://bloggerindraft.blogspot.com/2009/09/you-might-as-well-jump.html" target="_blank"&gt;繼續閱讀&lt;/a&gt;」功能（官方叫它 Jump Break）。沒錯，這又是 Blogger 獨漏的功能之一，其實我在一開始玩 Blog 沒多久，就做了類似的 Hack：「&lt;a id="vvhm" href="/2006/11/blog-post_13.html" target="_blank" title="首頁長篇文章的收合"&gt;首頁長篇文章的收合&lt;/a&gt;」，顧名思義，主要是做在首頁的一個修改，有些文章篇幅太大，一旦讀者連到首頁，多篇文章過多的文字和大圖擠在首頁，在閱讀和載入時都很花時間，於是很多 Blog 系統提供了類似文章摘要的設計，在首頁只顯示一部分內文，如果讀者有興趣，再點「繼續閱讀」的連結跳轉該文章的完整連結。因為當時 Blogger 不支援，所以大部分做在 Blogger 的 Hack，顯示在首頁的並不是真正的「文章摘要」，而是仍載入全文、透過 CSS 的手法隱藏掉部份段落，讓版面上比較精簡，讀取上稍稍變快（因為沒顯示出來，但還是要全載入），所以我從來不叫這類 Hack 為首頁摘要或是繼續閱讀，因為原理上是透過「隱藏」的手段顯示部份內文。也因為這樣，我&lt;a id="k2bm" href="/2006/11/blog-post_13.html" target="_blank" title="之前的 Hack"&gt;之前的 Hack&lt;/a&gt;&amp;nbsp;才能夠提供兩種模式：一種是動態收合 (id=detail，點了連結馬上在首頁展開)，另一種才是繼續閱讀 (id=fullpost)、點連結跳轉完整文章。這次官方提供的「繼續閱讀」功能，作法是在想分段的地方插入程式碼，當首頁讀到這個標記，後半段內文就都直接「不載入」，這和我 Hack 的 CSS 收合隱藏作法大不相同（雖然畫面上看起來很像），但這才是正確、有效率的「繼續閱讀」，也是一般 Hack 所做不到的。&lt;/p&gt;
&lt;p&gt;此功能一出，網路上的教學和介紹文章也蜂擁而至，不過我第一次要試用，卻沒有人家講的那麼簡單。首先，人家說有個「插入 Jump/Break 指令」的圖示在編輯工具列，我卻看不到！除非登入「&lt;a id="kmap" href="http://draft.blogger.com/home" title="Blogger Draft"&gt;Blogger Draft&lt;/a&gt;」，不然那個功能圖示也出不來。原來是要先到後台的「設定」、「基本」最下面，「選取文章編輯器」時切換到「新版文章編輯器」，這樣才看得到那個圖示（新版編輯器的&lt;a id="cwcn" href="http://www.google.com/support/blogger/bin/answer.py?answer=156829" target="_blank" title="功能說明在此"&gt;功能說明在此&lt;/a&gt;）。有了那個圖示，代表你的編輯器可以直接插入用來做「繼續閱讀」的程式碼啦！&lt;/p&gt;
&lt;p&gt;要先套用「新版文章編輯器」&lt;br/&gt;
&lt;img src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgbn2tVaA4ANeSVarPO7dxhNRblE7ZsEwRVRTEHiYKrMjfbVv8lOPvL1RiIALU2CgAqjPQFcb5ciYck1U1jJp0S5UddUunzcVBpTU9sx79AiQEdLjZFENygqrRnuill9GMveeSTam8kQYab/s800/JumpLink-1.gif" border="0" alt=""id="BLOGGER_PHOTO_ID_5384619817215573522" /&gt;&lt;/p&gt;
&lt;p&gt;編輯器才會有插入「繼續閱讀」標籤的工具圖示&lt;br/&gt;
&lt;img src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEitLROs6XY2RzDC23vcYLKDv8IDjIN1_LTP9yrd-6FGqRbvdM3xF0LPFrdcG6uFHQTY20xRMo9CUVrsn-tdEpeDFe6JRmHXaJtuXn9Vr6Pty2rWm8HCNJ-mFTqzXE3gJkLI7o_UhSJZE0IC/s800/JumpLink-2.gif" border="0" alt=""id="BLOGGER_PHOTO_ID_5384619824582543618" /&gt;
&lt;/p&gt;
&lt;a name='more'&gt;&lt;/a&gt;
&lt;p&gt;受限於文章發表的介面，Blogger 沒辦法像部份 BSP 提供的辦法，將文章發表分成「摘要」和「內文」兩個區塊來寫作（摘要就是只顯示在首頁的部份，摘要+內文是完整文章），作法是發表新文章時，透過插入 Jump 指令的圖示，或是編輯文章原始碼，手動加入摘要和內文的分隔語法也行（語法：&amp;lt;!-- more --&amp;gt;），就可以在文章內識別出摘要的段落了。如果覺得「閱讀更多&amp;gt;&amp;gt;」這個字樣太醜，也可以到「版面配置」、「網頁元素」的設定頁面，編輯「網誌文章」的屬性，這個字樣內容就可以修改了。&lt;/p&gt;
&lt;p&gt;插入 Jump Break Link 以後的編輯畫面，會有一條明顯的分隔線&lt;br/&gt;
&lt;img src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgfzoKnSm6DQSqOnYJaFhPKcXtPNwo-fIQOQ6QPVnmqDy85Ha8kVKicW5UvqRBKmMqwUpIvbU48p8DCE7Vz9WEpEXSw7RV44Bn1MfEgeyfFHJiMNXJHxfZTIivWM14aP1rFDlB7COOlI_H3/s800/JumpLink-3.gif" border="0" alt=""id="BLOGGER_PHOTO_ID_5384619833753302146" /&gt;&lt;/p&gt;
&lt;p&gt;如果不想用預設的「閱讀更多&amp;gt;&amp;gt;」字樣，也可以自己修改&lt;br/&gt;
&lt;img src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjax5vFt15MX4a7r5jX3fHq9oF2pauvKY-da7bhU8wn_2aPogcLwkNsTU0Oqord685Q8KLWqUGiu2HrlBDgmHu113n9ckIZXWBa2ihf23Qlq7U9qa2xlfG_Ydtr_cgj3aUyuq7MsAKRMLI3/s800/JumpLink-4.gif" border="0" alt=""id="BLOGGER_PHOTO_ID_5384619839996277298" /&gt;
&lt;/p&gt;
&lt;p&gt;問題又來啦！有了「插入跳行」圖示，或你手動插入分隔語法，甚至也改了「閱讀更多」的字樣，怎麼 Po 了文，還是只有「摘要」出現在首頁，繼續閱讀的連結根本沒出現？老問題，如果你和我一樣 Hack 過程式碼，因為原始碼被動過，Blogger 可不敢貿然動你的 Code，所以這個新增功能所需的代碼並不會被插入樣板，這要靠自己手動補進去啦！檢查一下樣板原始碼（展開小裝置範本），先找到顯示內文的主要標籤（這句應該只有一個地方，如果你有用過其他 Hack，請視自己的狀況斟酌修改）：&lt;/p&gt;
&lt;p&gt;&lt;code&gt;&amp;lt;data:post.body/&amp;gt;&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;在內文的後面插入顯示「閱讀更多」字樣標籤的程式碼：&lt;/p&gt;
&lt;p&gt;&lt;code&gt;&amp;lt;b:if cond='data:post.hasJumpLink'&amp;gt;&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;lt;div class='jump-link'&amp;gt;&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;a expr:href='data:post.url + "#more"'&amp;gt;&amp;lt;data:post.jumpText/&amp;gt;&amp;lt;/a&amp;gt;&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;lt;/div&amp;gt;&lt;br&gt;
&amp;lt;/b:if&amp;gt;&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;上面這段程式碼的意思是，如果這篇文章內有 Jump Link （也就是繼續閱讀的程式碼標記），於是在文章的最後放上該文章的連結網址、套用 CSS class=jump-link、顯示文字變數 post.jumpText （就是上面提到可以改的「閱讀更多&amp;gt;&amp;gt;」字樣）。也因此如果對這個 Jump Link 的 CSS 樣式不滿意，也可以在自己的樣板裡（&amp;lt;/style&amp;gt; 標籤前面），加入這個連結的樣式定義，像我用的範例類似是這樣（靠右、有框）：&lt;/p&gt;
&lt;p&gt;&lt;code&gt;/* Style for Jump-Link */&lt;br&gt;
.jump-link {&lt;br&gt;
&amp;nbsp;&amp;nbsp;float: right;&lt;br&gt;
&amp;nbsp;&amp;nbsp;border: 1px solid #333333;&lt;br&gt;
&amp;nbsp;&amp;nbsp;background: #222222;&lt;br&gt;
&amp;nbsp;&amp;nbsp;font-size: 8pt;&lt;br&gt;
&amp;nbsp;&amp;nbsp;margin: 0;&lt;br&gt;
&amp;nbsp;&amp;nbsp;padding: 2px 10px 2px 10px;&lt;br&gt;
}&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;以上可以依照自己的需求樣式去修改（如果要插入圖示，也可以直接在字樣標籤的程式碼裡 &amp;lt;data:post.jumpText/&amp;gt; 前後插入圖示連結）。&lt;/p&gt;
&lt;p&gt;到此我們有了新版編輯器插「繼續閱讀」的編輯圖示，解決「繼續閱讀」連結出不來的問題，甚至也能自訂連結的樣式，官方版「繼續閱讀」的功能在一般改過樣板原始碼的 Blog 在套用上應該都沒問題了！最後我想麻煩的只剩那些過去用過收合 Hack 所發表的文章，當然它們沒機會再出現在首頁、但如果有用其他 Hack 顯示在搜尋或存檔的列表，可能多少還是要檢查一下，確保完全沒問題後才去移除掉文章收合相關 Hack 的程式碼。如果沒有要用到「動態收合」的效果，那麼這個官方版的「繼續閱讀」功能，不管在效率、操作和使用上，都比坊間任何類似的 Hack 來得好，只希望 Blogger 還有這類由官方版來實現比手動 Hack 更棒的功能，拜託趕緊都釋出，即便過渡時期我原來的 Hack 會失效或需要調整，至少更人性化、更有彈性的操作和閱讀環境，都是大家所樂見的～（本文已經套用新的「繼續閱讀」啦！不過透過 RSS 閱讀的看不到，請連到我 Blog 首頁才看得到..）&lt;/p&gt;
&lt;p&gt;不瞭解 Blogger 的人，別再說 Blogger 只有自訂的彈性，一般該有的 Blog 功能它都已經具備，甚至更強更好用了（除非手賤和我一樣亂改樣板，不然套用官方樣板的還能享有無痛的各種功能升級..）～&lt;/p&gt;</content><link href="https://abintech.twidv.com/feeds/125554391270267911/comments/default" rel="replies" title="張貼留言" type="application/atom+xml"/><link href="https://abintech.twidv.com/2009/09/jump-break-link.html#comment-form" rel="replies" title="24 個意見" type="text/html"/><link href="https://www.blogger.com/feeds/8596053384636689442/posts/default/125554391270267911" rel="edit" type="application/atom+xml"/><link href="https://www.blogger.com/feeds/8596053384636689442/posts/default/125554391270267911" rel="self" type="application/atom+xml"/><link href="https://abintech.twidv.com/2009/09/jump-break-link.html" rel="alternate" title="官方版「繼續閱讀」(Jump Break Link)" type="text/html"/><author><name>Abin</name><uri>http://www.blogger.com/profile/11723161715531068787</uri><email>noreply@blogger.com</email><gd:image height="32" rel="http://schemas.google.com/g/2005#thumbnail" src="//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjeWuiw4mDiqf2k7uj4szC6I3hS70kEW-tm_gpLFxHpOwDP3VyZBV-1oG6OoQnI3ur10nD1kRIZgRcmN_lAoIeHbdUsFg89XUxEscnje6FaL8gWM3_jswkM1dTjJ9Y54Q/s220/Portrait-Blog-S.gif" width="32"/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" height="72" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgbn2tVaA4ANeSVarPO7dxhNRblE7ZsEwRVRTEHiYKrMjfbVv8lOPvL1RiIALU2CgAqjPQFcb5ciYck1U1jJp0S5UddUunzcVBpTU9sx79AiQEdLjZFENygqrRnuill9GMveeSTam8kQYab/s72-c/JumpLink-1.gif" width="72"/><thr:total>24</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8596053384636689442.post-6301134724432096408</id><published>2009-09-01T21:28:00.004+08:00</published><updated>2009-09-23T15:43:48.564+08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Blogger"/><title type="text">新標籤工具 (Improved Label Gadgets) - Blogger 標籤雲 (Label Cloud)</title><content type="html">&lt;p&gt;標籤一向是 Blogger 中用來分類文章相當好用的功能之一（不要再問我什麼資料夾階層分類的問題了...），但一開始 Blogger 提供的「小工具模組」裡只有標籤清單，標籤一多就要拉一個很長佔空間的 List 來顯示，因為實在不喜歡，所以兩年半前我參考別人做了一個&lt;a id="su34" href="/2006/11/label-cloud.html" target="_blank" title="標籤雲 Hack (Label Cloud)"&gt;標籤雲 Hack (Label Cloud)&lt;/a&gt;，主要作用除了顯示所有標籤，而且可以依文章數量加權排列、顯示標籤大小和顏色漸層，不過麻煩的是要改程式碼，加 Javascript 函式、定義 CSS 樣式，而且是用預設的「網頁存檔」小工具來改。現在 Blogger 「終於」推出官方版的 Blogger 工具啦（官方公告&lt;a id="wmqu" href="http://buzz.blogger.com/2009/08/partly-cloudy-chance-of-labels.html" target="_blank" title="在此"&gt;在此&lt;/a&gt;）！不想用 Hack 的只要去新增這個工具，就有這項功能了～（就算有 Hack，加這個工具也不會有相容性的問題..）&lt;/p&gt;
&lt;p&gt;耍懶拖了幾天才來寫這篇介紹文章，安裝步驟很簡單，只要登入後台，到「版面配置」、「網頁元素」的頁面，想加這個工具的地方去「新增小工具」，點選新增「標籤」這個工具：&lt;/p&gt;
&lt;p&gt;&lt;img src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjUFLY1nkdlecqFz_OsW3yps5xRfQSE-OREHoNZ8_BYmShMDeA912CZCW6AcpM_oU8Cw5-5SXRH11cXx2RuiCvDXjh5TMCdgfTpH8UBbM5XIvtzcMe6X5mq2zTx3ZGGFKLas2od_M0w22NC/s800/BloggerLabel.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5376424796176374322" /&gt;&lt;/p&gt;
&lt;p&gt;然後設定屬性：&lt;br&gt;
&lt;img src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg-IJQrF9RDiElwDlAjlnV5rpTdk6-oFV-cGmK_trWrIlIm2Ktz7KB-7Y38d2ymF0axKJjfgcpCeBZTLBrS_mIeBboSapYVovO_1l4B85PDsZrLByvW0S4__Ddo6ixW5lAbOS3enCIVQ-ma/s800/LabelCloud.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5376424786215744738" /&gt;&lt;/p&gt;
&lt;p&gt;預設是所有標籤、按字母排列、清單顯示、顯示每個標籤的文章數，如果想改成依數量加權的標籤雲，記得點選到「依頻率排序」、「以雲端顯示」（雲端二字好像不是這樣用的吧），這樣就有很不錯的標籤雲啦！&lt;/p&gt;
&lt;a name='more'&gt;&lt;/a&gt;
&lt;p&gt;照例要來看一下原有標籤清單和新標籤雲的差別（拿我測試的 Blog 做的，標籤比較少，這朵「雲」比較小比較難看）：&lt;/p&gt;
&lt;p&gt;標籤一是傳統中規中矩的標籤列表，而正下方的標籤二就是新標籤雲的樣子，一樣有標籤文章數、照數量排序，標籤字型大小也有加權變化&lt;br&gt;&lt;img src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhA9Qv0zQQO8OIpiGtFEBFYR8Wc2ZbsvyxPYaNuyT5sLl3vc70Q5i-ovZrNYs3baV2OM4a5Vw_rJfcLT7GK3xGO1cb3ZO4h-KG073H7C7N8IfH90BxS6TQXEm3NrJx8fjWFc9EhzSSgjZei/s400/LabelSample.gif" border="0" alt=""id="BLOGGER_PHOTO_ID_5376424783433717442" /&gt;&lt;/p&gt;
&lt;p&gt;一定會有人要問：老闆～那和之前你手動 Hack 的標籤雲比較有什麼差別哩？嗯！同樣用 Hack 做出來的標籤雲外觀彈性比較多（能自訂樣式），來比較一下同樣資料源用 Hack 做出來的標籤雲是怎樣：&lt;/p&gt;
&lt;p&gt;上面是新的標籤雲，樣式比較沒有變化，而下面是我原有 Hack 做出來的標籤雲，除了字型顏色有變化外，也可以再多加一些有的沒的（像 Mouseover 的 Title Tip）&lt;br&gt;&lt;img src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh2UEVTQj9sEGMdcykQbId7g_BbqkG1dLoOWfrGYycF56RLkRKV3FGuSuk63sJ6wIZ8ULSzbeLzsIpjFNwwEKTx5G6Y1Sa9AhWlZwoNv7uIg8rvqjr0Eg7d2GKlRZvUc23O7sd32u3n5G5K/s400/LabelCompare.gif" border="0" alt=""id="BLOGGER_PHOTO_ID_5376424774981973298" /&gt;&lt;/p&gt;
&lt;p&gt;其實官方的標籤功能啥都有了，而且沒有 Hack 所擁有的限制：可以自選標籤雲的顯示的標籤（自己選）、一個頁面能有多個標籤雲（自己分類）、還有不會和「網頁存檔」模組衝突，看起來比 Hack 做得更棒。不過因為「樣式」是制式的沒選項修改，所以標籤的字體大小和顏色對齊問題沒地方可以調整，但比起以上的彈性，這外觀樣式倒是瑕不掩瑜啦，套句官方說的，這的確是鄉民們 Wish List 裡渴望的工具模組之一，Blogger 也從善如流做給大家用，懶得 Hack 或不會改程式碼的，套用官方工具就挺不錯的啦～&lt;/p&gt;
&lt;p&gt;如果覺得字體大小和顏色問題很重要，其實還是有辦法改。我參考這篇文章：&lt;a id="wbkt" href="http://www.bloggerbuster.com/2009/08/improved-label-gadgets-now-supporting.html" target="_blank" title="Improved Label Gadgets - Now Supporting Label Clouds and More!"&gt;Improved Label Gadgets - Now Supporting Label Clouds and More!&lt;/a&gt; ，才知道原來新的標籤「頻率加權」總共只有五級（原始碼裡也看得到），而且預設就有 CSS 樣式，分別是 .label-size-1 到 .label-size-5（編號越小代表標籤內的文章越少），所以如果你要標籤雲裡的標籤顏色和字型大小不一樣，那就自己打開原始碼，在 &amp;lt;/style&amp;gt; 前面補上這五個標籤的樣式。舉例來說，文章最多（字型最大）的標籤樣式定義可以是：&lt;/p&gt;
&lt;p&gt;&lt;code&gt;.label-size-5 a {&lt;br&gt;
&amp;nbsp;&amp;nbsp;color: #CCCCCC;&lt;br&gt;
&amp;nbsp;&amp;nbsp;font-size: 18px;&lt;br&gt;
&amp;nbsp;&amp;nbsp;text-decoration: none;&lt;br&gt;
}&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;然後 .label-size-4 的顏色就弄深一點、字弄小一點 (ex: 16px)，以此類推 -3, -2, -1 的，只要透過修改制式樣式，這樣還是能讓官方標籤雲再多一點點變化。（要最大的彈性還是搞 Hack 啦～）&lt;/p&gt;
&lt;p&gt;最後適逢 &lt;a id="m9rm" href="http://buzz.blogger.com/2009/08/blogger-is-turning-10.html" target="_blank" title="Blogger 十週年"&gt;Blogger 十週年&lt;/a&gt;有感，這最老牌的 Blog 平台，到現在都還在一直成長和茁壯，仍然堅持沒有廣告、最大的使用彈性，多次的改版和新增功能，對我這類的 Hacker 也沒有任何阻擋或影響，對使用者還有求必應，真的是佛心來的！雖然有些 Blog 工具和國內 BSP 平台的習慣是有點差異，但論誠意和穩定性，Blogger 還是國內外 Blog 界唯一的王者，之前還要手動做的 Hack，很多也都補齊了（我的 Hack 就無用武之地啦～）。再十年或許網際網路又和現在很不一樣，但如果我還在寫 Blog，Blogger 應該也還是無可取代的平台吧～（Blogger 新功能其實還有很多，詳情關注&lt;a id="efz_" href="http://buzz.blogger.com/" target="_blank" title="官方 Blog"&gt;官方 Blog&lt;/a&gt; 比較快～）&lt;/p&gt;</content><link href="https://abintech.twidv.com/feeds/6301134724432096408/comments/default" rel="replies" title="張貼留言" type="application/atom+xml"/><link href="https://abintech.twidv.com/2009/09/improved-label-gadgets-blogger-label.html#comment-form" rel="replies" title="13 個意見" type="text/html"/><link href="https://www.blogger.com/feeds/8596053384636689442/posts/default/6301134724432096408" rel="edit" type="application/atom+xml"/><link href="https://www.blogger.com/feeds/8596053384636689442/posts/default/6301134724432096408" rel="self" type="application/atom+xml"/><link href="https://abintech.twidv.com/2009/09/improved-label-gadgets-blogger-label.html" rel="alternate" title="新標籤工具 (Improved Label Gadgets) - Blogger 標籤雲 (Label Cloud)" type="text/html"/><author><name>Abin</name><uri>http://www.blogger.com/profile/11723161715531068787</uri><email>noreply@blogger.com</email><gd:image height="32" rel="http://schemas.google.com/g/2005#thumbnail" src="//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjeWuiw4mDiqf2k7uj4szC6I3hS70kEW-tm_gpLFxHpOwDP3VyZBV-1oG6OoQnI3ur10nD1kRIZgRcmN_lAoIeHbdUsFg89XUxEscnje6FaL8gWM3_jswkM1dTjJ9Y54Q/s220/Portrait-Blog-S.gif" width="32"/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" height="72" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjUFLY1nkdlecqFz_OsW3yps5xRfQSE-OREHoNZ8_BYmShMDeA912CZCW6AcpM_oU8Cw5-5SXRH11cXx2RuiCvDXjh5TMCdgfTpH8UBbM5XIvtzcMe6X5mq2zTx3ZGGFKLas2od_M0w22NC/s72-c/BloggerLabel.jpg" width="72"/><thr:total>13</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8596053384636689442.post-8247033004678613974</id><published>2009-07-09T00:17:00.000+08:00</published><updated>2009-07-09T00:18:20.289+08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Blogger"/><title type="text">更換網域: abintech.twidv.com</title><content type="html">&lt;p&gt;本站更換網域名稱啦！更換網域的「心路歷程」和廢話請參考我發表在另一個 Blog: &lt;a target="_blank" href="http://abinlee.blogspot.com"&gt;Abin's Note&lt;/a&gt; 的&lt;a target="_blank" href="http://abinlee.blogspot.com/2009/07/abintwidvcom.html"&gt;這一篇文章&lt;/a&gt;。&lt;/p&gt;
&lt;p&gt;我手上所有 *.azhai.org，即日起統統轉成 *.twidv.com 啦！本 Blog 的網址變更成為 &lt;a target="_blank" href="/"&gt;abintech.twidv.com&lt;/a&gt;，如果把本站紀錄到書籤（我的最愛）或其他 Bookmarklet 的人，請麻煩更新一下，如果有訂閱 RSS 的朋友，那不用改、Feedburner 會自動調整轉向到新網址。而舊的 azhai.org 因為續約沒多久，所以自動轉址會持續到明年底，中間這段時間就等網路上的各種服務和 Search Engine 更新連結，而到期後舊網址就終止不用了，希望舊雨新知繼續捧場啦！&lt;/p&gt;</content><link href="https://abintech.twidv.com/feeds/8247033004678613974/comments/default" rel="replies" title="張貼留言" type="application/atom+xml"/><link href="https://abintech.twidv.com/2009/07/abintechtwidvcom.html#comment-form" rel="replies" title="0 個意見" type="text/html"/><link href="https://www.blogger.com/feeds/8596053384636689442/posts/default/8247033004678613974" rel="edit" type="application/atom+xml"/><link href="https://www.blogger.com/feeds/8596053384636689442/posts/default/8247033004678613974" rel="self" type="application/atom+xml"/><link href="https://abintech.twidv.com/2009/07/abintechtwidvcom.html" rel="alternate" title="更換網域: abintech.twidv.com" type="text/html"/><author><name>Abin</name><uri>http://www.blogger.com/profile/11723161715531068787</uri><email>noreply@blogger.com</email><gd:image height="32" rel="http://schemas.google.com/g/2005#thumbnail" src="//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjeWuiw4mDiqf2k7uj4szC6I3hS70kEW-tm_gpLFxHpOwDP3VyZBV-1oG6OoQnI3ur10nD1kRIZgRcmN_lAoIeHbdUsFg89XUxEscnje6FaL8gWM3_jswkM1dTjJ9Y54Q/s220/Portrait-Blog-S.gif" width="32"/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8596053384636689442.post-6133613921383318120</id><published>2009-07-08T23:35:00.000+08:00</published><updated>2009-07-08T23:35:35.363+08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Blogger"/><title type="text">本站留言板 (Message Board)</title><content type="html">&lt;p&gt;這邊是 &lt;a title="Abin's Tech Note" target="_blank" href="/" id="b_i4"&gt;Abin's Tech Note&lt;/a&gt; Blog 的留言板！&lt;/p&gt;
&lt;p&gt;用了一段時間的 &lt;a title="cbox" target="_blank" href="http://www.cbox.ws/" id="g01g"&gt;cbox&lt;/a&gt;，雖然這個留言板服務很不錯，但我自己常常沒在看，有留言一擺大概一兩個月都沒注意到，如果留言板還要搞到 e-mail 通知又太 over，而且這也不支援 RSS 訂閱，不去注意的留言板應該也失去了它的效用吧！所以乾脆就取消掉了！但是如果對 Blog 有些非關特定主題的留言（來打招呼簽到?!）、或是不知道該在哪個地方發問的主題，沒有了這樣的留言版似乎又很不方便，所以我就發了本篇文章，打算利用 Blogger 的文章留言功能充當留言板，一方面可以提供 RSS 訂閱提醒、另一方面也可以用 Blogger 的郵件訂閱讓讀者來關注，功能性和實用性上比起 cbox 有過之而無不及。如果有空的話，我會針對這篇文章做一個留言板的 Hack，一樣可以放在 Sidebar 上、一樣可以是一個 widget-look 的模組，修改和使用上應該就更有彈性啦！&lt;/p&gt;
&lt;p&gt;所以，要打屁就在這邊留言吧！如果是要發問，不好意思，還是請先善用「搜尋」功能，說不定就可以找到答案、要不也可以在正確的主題上發問，如果非關特定主題、或是想問的問題實在 Google 不到，那就在本文後面回應吧！不過留言的禮貌還是要注意一下，不然留言是會被無視的，畢竟公開的網路上，一種米養百種人啊！最後，還是歡迎鄉民路人在這留言，想私密留言 PM 的，還是請寄 &lt;a title="e-mail" target="_blank" href="mailto:abin@twidv.com" id="hban"&gt;e-mail&lt;/a&gt; 吧！&lt;/p&gt;</content><link href="https://abintech.twidv.com/feeds/6133613921383318120/comments/default" rel="replies" title="張貼留言" type="application/atom+xml"/><link href="https://abintech.twidv.com/2009/07/message-board.html#comment-form" rel="replies" title="37 個意見" type="text/html"/><link href="https://www.blogger.com/feeds/8596053384636689442/posts/default/6133613921383318120" rel="edit" type="application/atom+xml"/><link href="https://www.blogger.com/feeds/8596053384636689442/posts/default/6133613921383318120" rel="self" type="application/atom+xml"/><link href="https://abintech.twidv.com/2009/07/message-board.html" rel="alternate" title="本站留言板 (Message Board)" type="text/html"/><author><name>Abin</name><uri>http://www.blogger.com/profile/11723161715531068787</uri><email>noreply@blogger.com</email><gd:image height="32" rel="http://schemas.google.com/g/2005#thumbnail" src="//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjeWuiw4mDiqf2k7uj4szC6I3hS70kEW-tm_gpLFxHpOwDP3VyZBV-1oG6OoQnI3ur10nD1kRIZgRcmN_lAoIeHbdUsFg89XUxEscnje6FaL8gWM3_jswkM1dTjJ9Y54Q/s220/Portrait-Blog-S.gif" width="32"/></author><thr:total>37</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8596053384636689442.post-5235355341373134190</id><published>2009-06-15T21:08:00.006+08:00</published><updated>2009-07-02T19:12:25.113+08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Blogger"/><category scheme="http://www.blogger.com/atom/ns#" term="Google"/><category scheme="http://www.blogger.com/atom/ns#" term="Search Engine"/><title type="text">站內搜尋的「Google 搜尋框」(Search Box Gadget)</title><content type="html">&lt;p&gt;&lt;img src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjDFTEhgk4-HFOs194IrgIABqIlDtZvZSa9SqsrDrBdoRhwbK6SbHKOfqMQunkpUMxDEVHju4F6HsbvgvDlZZ6T2b1cX4RnW0e-PN4fPMpaf6Ybc3DqqPwu3josD_IPvyHcvBSGUwOoOeTi/s400/Search+Gadget.gif" border="0" alt=""id="BLOGGER_PHOTO_ID_5347482345977899634" /&gt;&lt;/p&gt;
&lt;p&gt;很久以前我做了一個給 Blogger 使用、能套用三種搜尋引擎的&lt;a title="站內文章搜尋" target="_blank" href="/2006/11/blog-blog-search.html" id="iq67"&gt;站內文章搜尋&lt;/a&gt;功能，原理很簡單，就是用 Blogger 自己的站內搜尋語法（Navibar 裡的那一個，參考&lt;a title="這一篇" target="_blank" href="/2006/11/blog-post_03.html" id="mcar"&gt;這一篇&lt;/a&gt;）、Google 的自訂搜尋以及 Technorati 的 Blog 搜尋來實現，讓自己能從關鍵字快速找到特定文章。最快的應該是 Blogger 自己提供的站內搜尋吧，Google 自訂搜尋的要看「Google 機器人」什麼時候來訪才有紀錄，而 Technorati 則是端看你站內 RSS 更新的速度決定。這三種方法各有優缺點，但具有「指標性」意義的還是 Google 的自訂搜尋，因為任何人用 Google 找關鍵字時，如果在自訂搜尋找得到，代表一般的 Google Search 也才有進入排名的機會。最近 Blogger 官方「終於」推出給 Blog 專用的「&lt;a title="Google 搜尋框" target="_blank" href="http://buzz.blogger.com/2009/06/search-box-gadget-available-to-all.html" id="f1.x"&gt;Google 搜尋框&lt;/a&gt;」，這是一個「網頁元素」、用拖拉的就能加進 Blog 裡成為一個元件，提供使用者做快速的站內搜尋。（新增方法：登入管理介面，版面配置-&amp;gt;網頁元素-&amp;gt;新增小工具，把新增的「搜尋框」加進去就行了）&lt;/p&gt;
&lt;p&gt;元件新增以後的設定畫面&lt;br&gt;
&lt;img src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjX__r0gNB_e42lypdHG9B1oIZUqs8B9Y7PDmwf5ofgmno9OT_uGk3lCqLUUomf3n9qKK737EtG7PZdpS9PQoCQx4eTmj-58bcddW_bsJ4ah5OItlia4f-6Hmof_agp2NVjLf8M5C8De7D_/s400/Search+Gadget+Setting.gif" border="0" alt=""id="BLOGGER_PHOTO_ID_5347482335984029890" /&gt;&lt;/p&gt;
&lt;p&gt;問題來了，到底這個元件和我之前做的三合一 Combo 有什麼差別呢？能不能找到更快、更多呢？看來還是要裝來實測一下。我用相同的關鍵字下搜尋，Blogger 自己的站內搜尋完全不破壞版面、直接將結果出現在本文區域內，速度最快也不漏勾，不用擔心什麼機器人或 RSS 更新的問題，缺點是搜尋範圍窄、關鍵字不夠精準會找不到。接下來用 Google 自訂搜尋，和一般 Google Search 一樣強大，但要跳轉頁面顯示、還要看機器人有沒有來你的站台「臨幸」過，所以新開張或少更新的 Blog、剛發的新文章很容易都搜尋不到。而 Technorati 的 Blog 搜尋也接近 Google 的能力，新文章出現的頻率也「應該」比 Google 快（端看 RSS 更新的結果），不過這項服務好像國內知道的人少、用的也少，我單純就是自己裝來找爽用的。以上三種和這個新增的「搜尋框」比起來，搜尋效果的確等同於 Google 自訂搜尋，而且還能多幾種分類，效果還不錯，而且為了配合 Blogger、不需要跳轉頁面顯示，直接就給你塞入 Blogger 的本文區域，而且提供純 CSS 的 Tab 分頁來切換搜尋結果，還會自動配合你 Blogger 的樣板顏色和樣式，真的是很強大、很簡單哩！&lt;/p&gt;
&lt;p&gt;站內搜尋比一比！上面這塊是我 Combo 的三種站內搜尋，下面的模組是新增的「Google 搜尋框」，顏色樣式和圖示會配合樣板調整，真強！&lt;br&gt;
&lt;img src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhG-i7FhAXf20ZJjo72DBLhSedkJveZMXMXn93YO7kT6cRLJaGEjoHwOprfDpLEBjVwLevBJObJyOo5an0tUk-KAslOiCpW43NFrkOeNF_3PrDiBskZ-AA7qoERlrCvsnkV0pSxYXy7RcoJ/s400/Search+Gadget+Comparison.gif" border="0" alt=""id="BLOGGER_PHOTO_ID_5347482337148338930" /&gt;&lt;/p&gt;
&lt;p&gt;偷看網頁原始碼，其實這個模組和許多 Blogger 外掛模組一樣，是用外嵌的 Javascript 達成，使用很簡單，但沒有什麼修改的彈性，而且載入需要一點點時間（所以會看到「載入中..」），我想我還是會用自己做的自訂搜尋吧！因為搜尋效果一樣、載入速度快，而且應該沒有人會沒事一直在做站內搜尋吧！但如果是一般使用者、懶得自己做搜尋介面，又希望在 Blogger 塞入 Google 搜尋的模組，這個搜尋框的確是很讚的選擇。越來越發現 Google 和 Blogger 整合後的強大，放在 Blogger 上的文章似乎曝光率也比較高、Google 也容易找到，現下越來越多與 Search Engine 結合的模組和機制，只要拖拉選取就能塞進 Blog 裡，免 Hack 馬上就能用，這實在是支持 Google 服務者的福音啊～&lt;/p&gt;
&lt;p&gt;內嵌式的搜尋結果，有分頁、CSS 樣式也會自動配合版型！&lt;br&gt;
&lt;img src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjAsIdnA1_JTEGMaMohbAl-S_7Jr2_nJfWDKVs6FmiY1N9COEZ6qmlp7mKYXTL4NnKWRJibE0uFvfcMaxMkYvAyxRHpBLHohYxVNg9Wv3ggpnJBwTXcmEyg0UqkJrf_sU7xODW4VaGzTWva/s800/Search+Gadget+Result.gif" border="0" alt=""id="BLOGGER_PHOTO_ID_5347482330891766850" /&gt;&lt;/p&gt;&lt;a style="color:#000000;font-size:1pt;" href="http://technorati.com/claim/7tidfhas4q" rel="me"&gt;Technorati Profile&lt;/a&gt;</content><link href="https://abintech.twidv.com/feeds/5235355341373134190/comments/default" rel="replies" title="張貼留言" type="application/atom+xml"/><link href="https://abintech.twidv.com/2009/06/google-search-box-gadget.html#comment-form" rel="replies" title="13 個意見" type="text/html"/><link href="https://www.blogger.com/feeds/8596053384636689442/posts/default/5235355341373134190" rel="edit" type="application/atom+xml"/><link href="https://www.blogger.com/feeds/8596053384636689442/posts/default/5235355341373134190" rel="self" type="application/atom+xml"/><link href="https://abintech.twidv.com/2009/06/google-search-box-gadget.html" rel="alternate" title="站內搜尋的「Google 搜尋框」(Search Box Gadget)" type="text/html"/><author><name>Abin</name><uri>http://www.blogger.com/profile/11723161715531068787</uri><email>noreply@blogger.com</email><gd:image height="32" rel="http://schemas.google.com/g/2005#thumbnail" src="//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjeWuiw4mDiqf2k7uj4szC6I3hS70kEW-tm_gpLFxHpOwDP3VyZBV-1oG6OoQnI3ur10nD1kRIZgRcmN_lAoIeHbdUsFg89XUxEscnje6FaL8gWM3_jswkM1dTjJ9Y54Q/s220/Portrait-Blog-S.gif" width="32"/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" height="72" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjDFTEhgk4-HFOs194IrgIABqIlDtZvZSa9SqsrDrBdoRhwbK6SbHKOfqMQunkpUMxDEVHju4F6HsbvgvDlZZ6T2b1cX4RnW0e-PN4fPMpaf6Ybc3DqqPwu3josD_IPvyHcvBSGUwOoOeTi/s72-c/Search+Gadget.gif" width="72"/><thr:total>13</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8596053384636689442.post-3640970376794305515</id><published>2009-05-07T21:50:00.004+08:00</published><updated>2009-06-16T18:08:32.746+08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Blogger"/><category scheme="http://www.blogger.com/atom/ns#" term="Google"/><title type="text">Blogger 放檔的好選擇 - Google Code</title><content type="html">&lt;p&gt;繼&lt;a title="之前" target="_blank" href="/2008/08/google-page-creator-google-pages.html" id="su_5"&gt;之前&lt;/a&gt;發現，&lt;a title="Google Page Creator" target="_blank" href="http://pages.google.com/" id="r0en"&gt;Google Page Creator&lt;/a&gt; (Google Pages) 要倒店關門的消息，我就一直在找更好的地方，用來放我 Blog 會用到的各種小圖和外連檔案（不然每次登入 Google Pages，都要恐嚇我一次，我所有的資料都要被強制移到 Google Sites 了），試用了一陣，本來覺得即將取而代之的 &lt;a title="Google Sites" target="_blank" href="http://sites.google.com/" id="cywt"&gt;Google Sites&lt;/a&gt; 也不錯用，正打算大舉遷移，把檔案和連結都搬過去之際，突然緊急煞車，發現 Google Sites 不能這樣用啊！目前它有兩個關鍵性的障礙：&lt;/p&gt;
&lt;p&gt;&lt;ol&gt;&lt;li&gt;不准上傳 HTML 或 Javascript 之類的程式碼。對很多朋友來講，這可是嚴重的缺陷，因為有不少人習慣把外掛 Blogger 的模組，都寫成獨立的 js 檔，載入頁面時再用 include 的方式呼叫，改版時只要兼顧相容性，不用再動到網頁樣板的原始碼，維護也比較獨立和方便。原先的 Google Pages 並不阻擋，但到了 Google Sites 卻拒絕上傳（說是安全性考量），這一點就讓不少人打退堂鼓了。&lt;/li&gt;
&lt;li&gt;不支援 GIF。這一點我就非常非常不能接受了，Google Sites 是用來建立「個人網站」、來做協作的平台，有聽過提供這類服務但不支援 GIF 圖檔的嗎？！一開始我還沒發現，因為 GIF 圖檔是可以上傳的，一般靜態標準的 GIF 圖檔看起來都沒事，但嵌入網頁外連所有圖片時才發現，不正常的情況來了！首先是透明底圖 (Transparent GIF)，在 Firefox 沒事，但用 IE (IE6) 看卻不再透明了，就算你想換成透明底圖的 PNG 檔，舊版 IE 不支援、新版 IE 照樣不能透明！其次，動態圖片 (Animated GIF) 照樣沒作用，這次連用 Firefox 也沒效果，Google 找了半天，得到的竟然&lt;a title="官網的回答" target="_blank" href="http://sites.google.com/support/bin/answer.py?hl=b5&amp;amp;answer=92123" id="eort"&gt;官網的回答&lt;/a&gt;：「Google 協作平台目前不支援動畫 GIF。如果要使用動畫 GIF，則需要將它裝載在協作平台外部，並使用它的裝載網址進行連結。」看到這句，檔案還要放在「外部」，我真的無言了～（據說還是安全性考量.. XD）&lt;/li&gt;&lt;/ol&gt;
&lt;p&gt;&lt;img src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgUv-mOCxaIYXcCUfXFlV1U_P12rD8tQlWcDGqRq-XIXK3k8BFzq_3acVQuT6NFbgovaU4xvMURo-q6x0exzhyVTFHeaFAjPzHWSFQZcIf8nI-tzvI-En21xL15vfBPiu5dlTfAhyphenhyphen6OzYW2/s400/GoogleCode.gif" border="0" alt=""id="BLOGGER_PHOTO_ID_5333021283540914242" align="right"/&gt;以前還一度以為是外連檔案後面那個謎字串 ?attredirects=0 搞的鬼，因為之前測試加了該字串好像會正常，但其實是因為當下我有登入 Google Sites 的關係。至此，我想我是完全放棄用 Google Sites 來取代 Google Pages 了（這狀況已經一段時間，我也上 &lt;a title="Google Groups" target="_blank" href="http://groups.google.com.tw/group/sites-help" id="u2io"&gt;Google Groups&lt;/a&gt; 去反應，看來還是沒進度）！在尋找其他解的過程中，看到了有人推薦使用 &lt;a title="Google Code" target="_blank" href="http://code.google.com/intl/zh-TW/" id="qwgu"&gt;Google Code&lt;/a&gt;、一項 Google 提供給使用者用來公佈及開放程式碼的平台，為了讓用戶能自由下載、修改和分享程式和專案的原始碼，該服務平台也有提供 File Hosting 的機制，讓專案主人能放置檔案公開分享和連結使用。當然，這些公開的原始碼檔案也提供像是版本控制、描述分類等專案控管的機制，還有 Wiki 和 Issues 讓管理者和使用者能控制和掌握專案的進度和變動（還支援 &lt;a title="Google Analytics" target="_blank" href="http://www.google.com/analytics/zh-TW/" id="r3vd"&gt;Google Analytics&lt;/a&gt; 來監看存取流量），算是一個相當簡單、又配備大部分該有功能的程式碼控管平台。&lt;/p&gt;
&lt;span id="detail"&gt;
&lt;p&gt;對我來說，現階段最重要的當然是小圖檔的 Image Hosting，還有少部份幾個外連用的小檔案。既然是該服務是分享「Code」，未來我也考慮把自己的樣板原始碼公佈出來，甚至將有在用的 Blogger Hack 抽離成一隻隻的 js 檔，這樣用 Google Code 來放置檔案，也才更理所當然，是吧？仔細看看 Google Code 的限制：一個專案空間限制單檔最大 100MB、總容量 2GB、不限網路流量、使用 *.googlecode.com 格式二級域名（但不支援自訂網域）、一個帳號最多可以開十個專案，哇！拿來做我 Blog 的 File Hosting 絕對是綽綽有餘啊！實際試了一下圖片外連，不管什麼格式，顯示下載都很快很正常，測試幾天後，沒想太多我就把檔案統統都搬過去啦！透過&lt;a title="之前" target="_blank" href="/2008/10/blogger-template-variable.html" id="cfbc"&gt;之前&lt;/a&gt;介紹過的技巧，我大概只改了三行原始碼，就讓所有的 Blog 小圖檔統統轉向到 Google Code 去，果真是 Blogger 放檔的好選擇啊！如果不介意，還可以公佈自己的 Blog 樣板（透過版本控制當備份）和用到的所有 js 檔（不要再盜連了），這樣也符合 Blog 原始碼開放的需要，速度和反應都很不錯，除了擔心對岸會「牆」掉 Google 服務的疑慮（沒差，反正我的 Blog 也是在 Google 的 Blogger 上），不用擔心它會倒掉或關閉（現下用的人很多），看來可以好好頂一陣子了！&lt;/p&gt;
&lt;p&gt;我想 Google Code 應該不用教學怎麼使用，只要有 Google 帳號、連到 Google Code &lt;a title="首頁" target="_blank" href="http://code.google.com/intl/zh-TW/" id="owtu"&gt;首頁&lt;/a&gt; 、選擇「&lt;a title="專案託管" target="_blank" href="http://code.google.com/hosting/" id="ey7p"&gt;專案託管&lt;/a&gt;」、在畫面中央直接選 &lt;a title="Create a new project" target="_blank" href="http://code.google.com/hosting/createProject" id="y0.o"&gt;Create a new project&lt;/a&gt;，填好 Project 名稱（這名稱會決定你的二級網域名）和相關資料，專案就開好啦！接著玩一玩專案設定，切到到 Downloads 的分頁，就可以上傳下載自己的檔案了。申請前有興趣可以參考我 Blog 都已經換用的專案：&lt;a title="abinlink" target="_blank" href="http://abinlink.googlecode.com/" id="se6n"&gt;abinlink&lt;/a&gt;。推薦因應 Google Pages 倒閉、Google Sites 又不濟事，和我一樣需要空間來放置小檔案的人來參考～(希望不要被拿來愛亂分享大檔的人搞爛就行了～）&lt;/p&gt;
&lt;/span&gt;</content><link href="https://abintech.twidv.com/feeds/3640970376794305515/comments/default" rel="replies" title="張貼留言" type="application/atom+xml"/><link href="https://abintech.twidv.com/2009/05/blogger-google-code.html#comment-form" rel="replies" title="22 個意見" type="text/html"/><link href="https://www.blogger.com/feeds/8596053384636689442/posts/default/3640970376794305515" rel="edit" type="application/atom+xml"/><link href="https://www.blogger.com/feeds/8596053384636689442/posts/default/3640970376794305515" rel="self" type="application/atom+xml"/><link href="https://abintech.twidv.com/2009/05/blogger-google-code.html" rel="alternate" title="Blogger 放檔的好選擇 - Google Code" type="text/html"/><author><name>Abin</name><uri>http://www.blogger.com/profile/11723161715531068787</uri><email>noreply@blogger.com</email><gd:image height="32" rel="http://schemas.google.com/g/2005#thumbnail" src="//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjeWuiw4mDiqf2k7uj4szC6I3hS70kEW-tm_gpLFxHpOwDP3VyZBV-1oG6OoQnI3ur10nD1kRIZgRcmN_lAoIeHbdUsFg89XUxEscnje6FaL8gWM3_jswkM1dTjJ9Y54Q/s220/Portrait-Blog-S.gif" width="32"/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" height="72" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgUv-mOCxaIYXcCUfXFlV1U_P12rD8tQlWcDGqRq-XIXK3k8BFzq_3acVQuT6NFbgovaU4xvMURo-q6x0exzhyVTFHeaFAjPzHWSFQZcIf8nI-tzvI-En21xL15vfBPiu5dlTfAhyphenhyphen6OzYW2/s72-c/GoogleCode.gif" width="72"/><thr:total>22</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8596053384636689442.post-218712300678644152</id><published>2009-04-29T15:20:00.004+08:00</published><updated>2011-04-22T17:43:30.258+08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="LinkStation HACK"/><title type="text">Debian 的安裝與設定 (下)</title><content type="html">&lt;p&gt;（接續&lt;a title="前篇" target="_blank" href="/2007/06/debian.html" id="kn7k"&gt;前篇&lt;/a&gt;）順利登入後，接下來要替新裝好的 Debian 系統做一些軟體安裝和更新。在安裝軟體之前，由於 Debian 是用 apt-get 來管理程式安裝，我們要先確定下載的伺服器位置。接下來編輯下載伺服器的列表：&lt;/p&gt;
&lt;p&gt;&lt;code class="cmd"&gt;nano /etc/apt/sources.list&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;裡面的資料都刪掉，直接取代成下面這一段：&lt;/p&gt;
&lt;p&gt;&lt;code&gt;# 完整列表參考 http://www.debian.org/mirrors/list&lt;br/&gt;
deb http://security.debian.org/ oldstable/updates main contrib non-free&lt;br/&gt;
# 國家高速網路與計算中心&lt;br/&gt;
deb ftp://opensource.nchc.org.tw/debian/ oldstable main contrib non-free&lt;br/&gt;
deb-src ftp://opensource.nchc.org.tw/debian/ oldstable main contrib non-free&lt;br/&gt;
# 交大&lt;br/&gt;
deb http://debian.nctu.edu.tw/debian/ stable main contrib non-free&lt;br/&gt;
deb-src http://debian.nctu.edu.tw/debian/ stable main contrib non-free&lt;br/&gt;
# 台大&lt;br/&gt;
deb ftp://ftp.tw.debian.org/debian/ oldstable main contrib non-free&lt;br/&gt;
deb-src ftp://ftp.tw.debian.org/debian/ oldstable main contrib non-free&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;隨著時間更迭，以上的列表常常可能失效或是更新，所以在使用上有發生類似下載不到或是伺服器沒有回應，可以再去找找看最新的 apt-get 伺服器列表並且更新（上面的註解裡有完整列表參考的連結）。&lt;/p&gt;
&lt;blockquote&gt;&lt;p&gt;伺服器很多，要挑那個當作自己的優先伺服器呢？可以先裝 netselect 這個工具：&lt;/p&gt;
&lt;p&gt;&lt;code class="cmd"&gt;apt-get install netselect&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;然後用以下命令比較每個伺服器哪個比較快（數字越小表示反應速度越快，這個命令會列出最快的伺服器）：&lt;/p&gt;
&lt;p&gt;&lt;code class="cmd"&gt;netselect host1 host2 host3 host4&lt;/code&gt;&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;有了列表，接下來第一件事情是更新已知的 Package List，用以下命令進行更新列表，並更新系統現有的元件：&lt;/p&gt;
&lt;p&gt;&lt;code class="cmd"&gt;apt-get update&lt;br/&gt;
apt-get upgrade&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;問題來啦，更新系統所有現存元件並不一定會很順利，不是部份依存的元件沒裝、導致更新失敗，不然就是模組之間的依存關係沒建好，就算裝好也不能動，在排除這些問題之前，系統都不能算是穩定和最新的，除了上面用的命令 apt-get upgrade，也可以換用 apt-get dist-upgrade 來試試看（這兩個命令的差異比較可以參考&lt;a target="_blank" href="http://plog.longwin.com.tw/my_note-unix/2008/03/04/debian_ubuntu_apt_dist_upgrade_difference_2008"&gt;這篇文章&lt;/a&gt;）。如果還有問題，可以根據錯誤訊息 Google 一下解法來處理，例如我在更新系統時，碰到下面的訊息「dpkg: error processing .. trying to overwrite `/usr/sbin/add-shell’」，參照網路上的&lt;a title="說法" target="_blank" href="http://osterman.com/wordpress/2007/09/08/debian-trying-to-overwrite-add-shell-with-passwd" id="hq.7"&gt;說法&lt;/a&gt;，這應該是權限的問題，只要用下面的命令開放權限、並強迫安裝和更新，就能迎刃而解：&lt;/p&gt;
&lt;p&gt;&lt;code class="cmd"&gt;dpkg -r --force all passwd&lt;br&gt;
apt-get -f install&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;如果過程還有短少什麼元件，那就補安裝 (apt-get install '元件名稱') 再繼續，補到 apt-get upgrade 都沒東西要更新，那就搞定了（有點像 Windows Update 一樣）。不知道有沒有注意到上面的 source list 裡，我用的是 oldstable 的 package？原因是如果一口氣上 stable，更新過程會很不順利（因為內含的 debian 版本是 sarge 3.1，直上最新版差異太大很多套件會相互干擾），所以算是階段性更新系統，先用 oldstable（目前的 oldstable 是 lenny 5.0），一切更新都順利搞定後，再去修改 list、把 oldstable 字樣都改成 stable，接著再 update、upgrade 到沒有錯誤為此。照我的經驗，系統元件升級完畢後 Debian 也會被推到最穩定的新版（從原來的 sarge 3.1、etch 4.0，到 oldstable 的 lenny 5.0，到最新的穩定版 squeeze 6.0），一樣可以用以下命令檢查升級後的 Debian 版本：&lt;/p&gt;
&lt;p&gt;&lt;code class="cmd"&gt;cat /etc/debian_version&lt;/code&gt;&lt;/p&gt;
&lt;span id="fullpost"&gt;
&lt;p&gt;系統更新完畢就可以安裝軟體了，這裡安裝的第一套軟體是 SSH Server，用以下的命令：&lt;/p&gt;
&lt;p&gt;&lt;code class="cmd"&gt;apt-get install ssh&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;安裝過程會要求你安裝其他相關套件，或是更新 Library，都用 Y 確認就是了，有不懂的設置問題也都直接按 Enter 繼續就好。&lt;/p&gt;
&lt;p&gt;裝好 SSH，建議最好重開系統測試一下（重新開機記得選對分割區，要開在 Debian 上），這時候不管 root 或是新開的帳號，應該都要能夠用 SSH 登入。登入順利的話，為了安全，預設的那個 Telnet Daemon 就該關掉了，可以用下面的命令移除預設的 Telnet daemon：&lt;/p&gt;
&lt;p&gt;&lt;code class="cmd"&gt;update-rc.d -f utelnetd remove&lt;br/&gt;
rm -f /etc/init.d/utelnetd&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;現在只剩 SSH 了，如果想改登入的提示訊息，可以編輯 /etc/issue.net 的內容，不過預設 SSH 會關閉，因此還要編輯 SSH 的設定檔 (/etc/ssh/sshd_config)，找到這一行：Banner /etc/issue.net，移掉前面的 # 標記。如果想馬上生效，可以 kill 掉 SSH 的 Daemon (sshd)，然後重跑 /usr/sbin/sshd 即可。&lt;/p&gt;
&lt;p&gt;接下來開始安裝基本軟體和服務，安裝軟體前都要有好習慣，先更新最新的軟體列表，然後安裝基本工具（安裝中如果有 [Y/n] 一律按 y 然後 Enter，有不確定的選項就都用預設值）：&lt;/p&gt;
&lt;p&gt;&lt;code class="cmd"&gt;apt-get update&lt;br/&gt;
apt-get upgrade&lt;br/&gt;
apt-get install screen nmap less w3m lynx bzip2 zip unzip host make gcc ncftp tzdata ntpdate&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;以後可以用 dpkg -l 來查看到底系統裡裝了哪些套件。如果想知道還有哪些套件 Package 能夠安裝，可以上官網的&lt;a href="http://www.debian.org/distrib/packages" target="_blank" title="連結"&gt;連結&lt;/a&gt;，有很詳細的分類。接下來是設定台北時區，先刪除舊的時區設定，再連結台北的，最後一個 date 命令會顯示目前日期和時間，檢查看看對不對：&lt;/p&gt;
&lt;p&gt;&lt;code class="cmd"&gt;cd /etc&lt;br/&gt;
rm -f localtime&lt;br/&gt;
ln -s /usr/share/zoneinfo/Asia/Taipei localtime&lt;br/&gt;
date&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;接下來是設定 Host 記錄，讓 Domain Name 能讓系統認得（有自己 Domain 的可以加進去，或是當作手動的 DNS record）&lt;/p&gt;
&lt;p&gt;&lt;code class="cmd"&gt;nano /etc/hosts&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;基本內容如下：&lt;/p&gt;
&lt;p&gt;&lt;code&gt;127.0.0.1 LinkStation localhost localhost.localdomain&lt;br/&gt;
&lt;br/&gt;
# The following lines are desirable for IPv6 capable hosts&lt;br/&gt;
# (added automatically by netbase upgrade)&lt;br/&gt;
&lt;br/&gt;
::1&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;ip6-localhost ip6-loopback&lt;br/&gt;
fe00::0 ip6-localnet&lt;br/&gt;
ff00::0 ip6-mcastprefix&lt;br/&gt;
ff02::1 ip6-allnodes&lt;br/&gt;
ff02::2 ip6-allrouters&lt;br/&gt;
ff02::3 ip6-allhosts&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;再來還有一個重要的設定，就是語系和中文化支援。目前的狀況應該連打中文、顯示中文都有問題，因此要做調整、能夠完整處理中文目錄和檔名。為了支援全中文和 UTF-8 (Unicode) 的套件和環境，這裡建議預設用中文 UTF-8（不用 Big5 了），首先，要先安裝中文相對應的 Locale （語系）：&lt;/p&gt;
&lt;p&gt;&lt;code class="cmd"&gt;apt-get install locales localepurge&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;這樣會跳出一個文字選單，裡面記得至少要選擇 en_US.UTF-8 UTF-8、en_US ISO-8859-1、zh_TW BIG5 和 zh_TW.UTF-8 UTF-8（用空白鍵選擇、Tab 鍵切換到 OK、Default Locale 選 zh_TW.UTF-8）。安裝完畢，可以 cat /etc/locale.gen 這個檔案內容對不對（如果要新增刪除其他語系，請用 dpkg-reconfigure locales）。有注意到除了 locales，上面還另外安裝了 localepurge？因為語系檔預設會全裝到系統裡（以上設定只是設了預設用的），甚至以後安裝軟體，語系支援也會全裝，localepurge 裝完後直接執行，會幫忙清掉系統裡用不著的 locale、藉此節省不必要的空間浪費，而往後安裝軟體時一安裝完，localepurge 也會馬上啟動主動幫忙清「垃圾」，真算得上是有用 locales 時也必裝的工具。接下來設定使用者預設的 Locale，輸入 nano ~/.bashrc，增加下面這兩行：&lt;/p&gt;
&lt;p&gt;&lt;code&gt;export LANGUAGE=zh_TW.UTF-8&lt;br/&gt;
export LC_ALL=zh_TW.UTF-8&lt;br/&gt;
export LANG=zh_TW.UTF-8&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;登出再登入一次（可以用 locale 這個命令確認是否系統已經更改，SSH Client 程式連線前記得也要換編碼成 UTF-8 unicode 才行，&lt;a href="http://ntu.csie.org/%7Epiaip/pietty/" target="_blank"&gt;PuTTY&lt;/a&gt; 有支援），如此，在登入後命令列的操作就可以看到中文字了。如果 Shell 裡面還是不能輸入，這時候更改使用者的輸入設定，建立檔案 nano ~/.inputrc，確定有下列四行：&lt;/p&gt;
&lt;p&gt;&lt;code&gt;set input-meta on&lt;br/&gt;
set output-meta on&lt;br/&gt;
set convert-meta off&lt;br/&gt;
set meta-flag on&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;同樣登出再登入後就生效了。以上兩個檔案 .bashrc &amp;amp; .inputrc 都是針對一個特定使用者的，如果希望每個新增的帳號都可以免去手動建立的話，那可以去改 /etc/profile 和 /etc/inputrc，可以順便加入一些 alias 和顯示設定（不過記住，在此之前已經建立的帳號，還是會用已經存在的 .bashrc 和 .profile，除非都砍掉才會套用系統的設定），以下是我在預設 /etc/profile 裡面新增的範例（主要是改提示符號、設定別名和中文語系輸出）：&lt;/p&gt;
&lt;p&gt;&lt;code&gt;export PS1='\u@\h[\w]:'&lt;br/&gt;
umask 022&lt;br/&gt;
&lt;br/&gt;
# You may uncomment the following lines if you want `ls' to be colorized:&lt;br/&gt;
alias ls='ls --color=auto'&lt;br/&gt;
&lt;br/&gt;
# Some more alias to avoid making mistakes:&lt;br/&gt;
alias rm='rm -i'&lt;br/&gt;
alias cp='cp -i'&lt;br/&gt;
alias mv='mv -i'&lt;br/&gt;
&lt;br/&gt;
# Added aliases&lt;br/&gt;
alias cls='clear'&lt;br/&gt;
alias dir='ls -al'&lt;br/&gt;
alias lo="exit"&lt;br/&gt;
alias md="mkdir"&lt;br/&gt;
alias rd="rmdir"&lt;br/&gt;
&lt;br/&gt;
# Added for Chinese supported&lt;br/&gt;
export LANGUAGE=zh_TW.UTF-8&lt;br/&gt;
export LC_ALL=zh_TW.UTF-8&lt;br/&gt;
export LANG=zh_TW.UTF-8&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;搞定中文、語系和登入問題，最後別忘了系統時間的同步。Debian 是一台伺服器，所有的 Log 紀錄都有參考意義，所以紀錄裡的系統時間同步與否就額外重要。和一般電腦一樣，LinkStation 有兩種時間，一個是硬體的 BIOS Clock，另外一個是作業系統的時間日期。你可以用命令 date 來看系統時間，還可以用 hwclock 來看 BIOS 時間（兩邊不一定會一模一樣），手動調整很麻煩，不過只要網路是通的，我們可以直接透過網路來對時。上面裝的基本軟體裡有一項叫 ntpdate，作用就是提供你做網路對時的，只要用下列命令：&lt;/p&gt;
&lt;p&gt;&lt;code class="cmd"&gt;ntpdate clock.stdtime.gov.tw&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;就會幫你連到中央標準局的 Time Server 取得正確時間，並且自動調整。如果此時還想把該時間「同步」到 BIOS 裡，也可以用命令：&lt;/p&gt;
&lt;p&gt;&lt;code class="cmd"&gt;hwclock -w&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;剛剛更新的系統時間就會和 BIOS 同步了。當然沒事要手動做以上動作其實也很累，我們可以做一個時間同步的程式，讓系統每天執行一次，那麼時間不就會一天更新一次保持同步了？首先建立一個程式：timesync&lt;/p&gt;
&lt;p&gt;&lt;code class="cmd"&gt;nano /etc/cron.daily/timesync&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;填入以下的程式碼：&lt;/p&gt;
&lt;p&gt;&lt;code&gt;#!/bin/sh&lt;br/&gt;
# Synchronize time via NTP daily&lt;br/&gt;
/usr/sbin/ntpdate clock.stdtime.gov.tw &amp;&amp; /sbin/hwclock -w &lt;/code&gt;&lt;/p&gt;
&lt;p&gt;最後記得改執行檔屬性：&lt;/p&gt;
&lt;p&gt;&lt;code class="cmd"&gt;chmod a+x /etc/cron.daily/timesync&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;這樣系統每天就會自己同步一次系統和 BIOS 時間了。同樣的，也可以像上一篇修改主機名稱（用 hostname 指定名稱、在 /etc/hosts 加一行記錄、修改 /etc/hostname 檔案裡的字串）、更改登入後訊息（登入後畫面 Telnet 用 /etc/issue、SSH 登入用 /etc/motd）。如果未來 Debian 有開放對外服務，偏偏那個服務的 Port 在韌體分割區開機也有提供（像是 Web、SSH），為求安全、怕機器重開被人家連進韌體，建議這兩個分割區指定不同的 IP 位址（都用固定 IP），這樣就可以避免機器因故重開卻讓外面使用者連到另一個分割區去。&lt;/p&gt;
&lt;p&gt;到這裡基本的 Debian 環境就完成了。如果和我一樣有舊資料在 USB 硬碟裡、打算全部複製回來，那就可以開始做資料復原的工作。首先準備你的硬碟，插入 USB，先檢查看看 USB 硬碟有沒有抓到，可以用 dmesg 來檢視：&lt;/p&gt;
&lt;p&gt;&lt;code class="cmd"&gt;dmesg | grep sda&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;以上命令是從 dmesg 裡找出所有的硬碟分割出來，內接的硬碟應該都是 hda (hda1, hda2, hda3 ..)，外接的 USB 碟則會用 sda。接下來決定你要掛載的分割區，因為我的 USB 碟裝的是之前拿來裝 LinkStation 的 500GB 硬碟，資料都在 hda3，因此我就要 Mount 第三個分割區（這時候變 sda3），掛載的目錄是 /usb/ （沒這個目錄的話要自己建立）：&lt;/p&gt;
&lt;p&gt;&lt;code class="cmd"&gt;mount /dev/sda3 /usb/&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;我隨身碟裡面用的檔案系統是 ext3，如果 Format 成 NTFS 或 FAT32，上面就不能用 ext3 這個參數囉！因為現在已經完全改用 UTF-8 的環境，原來有中文的資料大多還是用 Big5 的（目錄、檔名），所以接下來要準備編碼轉換程式，把 Big5 的目錄和檔名都改成 UTF-8 的格式，這裡安裝的工具是 convmv：&lt;/p&gt;
&lt;p&gt;&lt;code class="cmd"&gt;apt-get install convmv&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;裝好後就有這個編碼轉換工具了。只要指定編碼，指定的目錄檔名就可以轉換成你要的格式，假設要從 Big5 轉成 UTF-8，命令如下：&lt;/p&gt;
&lt;p&gt;&lt;code class="cmd"&gt;convmv -f big5-eten -t utf8 -r --notest /目錄名稱&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;這個命令會把指定目錄下原來是 Big5 (ANSI 中文) 的中文目錄和檔名，直接改編碼轉換成對應的 UTF-8 名稱。改完檔名，如果有些檔案內容的註解文字以前是 Big5 的中文（舊的中文文字檔），也可以手動針對檔案內容編碼做轉換，讓你在 UTF-8 的環境下能看到轉換過的正確中文字：&lt;br&gt;
&lt;p&gt;&lt;code class="cmd"&gt;iconv -f big5 -t utf-8 檔案名稱 -o 轉換後另存新檔名稱&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;這個動作完成之後，整個檔案系統環境就都是純的 UTF-8 了。把所有資料還原前，你可能也會想對整個系統先做備份，因為現在是用 Debian 開機，所以比較好備份的是位於 hda1 的原廠韌體，可以先把 /dev/hda1 Mount 到 /mnt 上，然後備份整個原廠韌體到一個檔案（就是把整個 /mnt TAR 起來壓縮），接下來用原廠韌體開機 (hda1)，然後 Mount hda3 到 /mnt，就可以備份整個 Debian 了！動作大同小異，端看你想備份哪個分割區，步驟如下：&lt;/p&gt;
&lt;p&gt;&lt;code class="cmd"&gt;mkdir /backups&lt;br&gt;
cd /mnt&lt;br&gt;
tar -zcvp -f /backups/backup_hda1.tgz *&lt;/code&gt;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;備註：備份前，你應該不希望浪費空間去備份不必要的檔案吧！首先是那些透過 apt-get 安裝的軟體套件暫存檔，這些檔案應該在安裝完就清掉才是，如果之前都沒清，備份前記得下命令清掉：&lt;/p&gt;
&lt;p&gt;&lt;code class="cmd"&gt;apt-get clean&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;這個命令會清掉 /var/cache/apt/archives 目錄下用不著的安裝套件暫存檔。上面有提到，如果有裝 locales，記得用 localepurge 清掉無用的語系檔。如果想手動處理、找出系統裡佔用空間最多的目錄或檔案，可以在根目錄下用下面的命令依佔用空間大小排序列出，讓你想辦法縮小備份壓縮檔的大小。&lt;/p&gt;
&lt;p&gt;&lt;code class="cmd"&gt;du -x | sort -n&lt;/code&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;以上是在根目錄下建立一個 backups 目錄，然後把整個 /mnt 目錄壓縮備份成一個檔案：backup_hda1.tgz（顧名思義這是 hda1 的備份，請依樣畫葫蘆備份 hda3），壓縮完可以用命令 tar -ztv -f 來測試和檢視壓縮檔內容。要注意備份前要放備份檔的地方空間夠不夠，假設你想備份整個 Debian，那麼想必 hda1 下所剩的空間一定不夠，這時候你可能要備份到外接硬碟上才行了！不想備份的特定目錄可以用參數 --exclude '目錄名稱' 來排除。有了備份檔未來要怎麼重灌還原呢？只要用韌體分割區開機，砍掉整個要還原的根目錄 (rm -r /mnt/*，不想砍的目錄可以先改目錄名稱像是 mv /mnt/share /mnt/.share，這樣就砍不到，還原完再把目錄名稱改回來)、或是用 Web 介面進行 Format（hda1 的官方韌體有提供，會清除整個 hda3 分割區），這樣就清掉了整個分割區，再用剛剛的備份檔，在根目錄下解壓縮進行還原：&lt;/p&gt;
&lt;p&gt;&lt;code class="cmd"&gt;cd /mnt&lt;br&gt;
tar -zxv -f /backups/backup_hda1.tgz&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;以上就是整個備份和還原的步驟（要很清楚的知道，你開機的分割去是哪一個，然後去 Mount 你要備份或還原的分割區到 /mnt，接著進行備份或還原的再操作，做完再切換開機分割區用你要的分割區開機來使用）。&lt;/p&gt;
&lt;p&gt;至此，我們更新了軟體列表、並讓系統元件都維持在最新的版本，安裝了 SSH 和一些基本工具、移掉 Telnet Daemon、修改 Local Host 紀錄、解決語系和中文環境設定（使用 UTF-8），最後還有搞定登入和網路對時的問題，連資料備份還原的步驟都交代清楚，這樣總算是完成重灌及還原的工作了。&lt;/p&gt;
&lt;/span&gt;</content><link href="https://abintech.twidv.com/feeds/218712300678644152/comments/default" rel="replies" title="張貼留言" type="application/atom+xml"/><link href="https://abintech.twidv.com/2009/04/debian.html#comment-form" rel="replies" title="9 個意見" type="text/html"/><link href="https://www.blogger.com/feeds/8596053384636689442/posts/default/218712300678644152" rel="edit" type="application/atom+xml"/><link href="https://www.blogger.com/feeds/8596053384636689442/posts/default/218712300678644152" rel="self" type="application/atom+xml"/><link href="https://abintech.twidv.com/2009/04/debian.html" rel="alternate" title="Debian 的安裝與設定 (下)" type="text/html"/><author><name>Abin</name><uri>http://www.blogger.com/profile/11723161715531068787</uri><email>noreply@blogger.com</email><gd:image height="32" rel="http://schemas.google.com/g/2005#thumbnail" src="//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjeWuiw4mDiqf2k7uj4szC6I3hS70kEW-tm_gpLFxHpOwDP3VyZBV-1oG6OoQnI3ur10nD1kRIZgRcmN_lAoIeHbdUsFg89XUxEscnje6FaL8gWM3_jswkM1dTjJ9Y54Q/s220/Portrait-Blog-S.gif" width="32"/></author><thr:total>9</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8596053384636689442.post-8980601970502351780</id><published>2009-03-18T21:54:00.004+08:00</published><updated>2009-06-16T18:06:31.144+08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="BLOGGER HACK"/><category scheme="http://www.blogger.com/atom/ns#" term="Feed"/><title type="text">增加文章更新時間 (Show Post Update Time)</title><content type="html">&lt;p&gt;我的 Blog 大多都是一些個人筆記，有參考性的筆記除了分享給大家看，連自己有需要時三不五時也要來回顧和參考一番。不過因時制宜，有些東西總會因為時間變化而些要作調整，尤其像之前關於 LinkStation 的改機資訊，也因為機器變動、軟體和參考下載的網址有更新，所以在閱讀筆記的時候，不時也會一併更新已經失效和變更的部份。Blogger 顯示的文章時間，用的是「發表時間」，也就是說文章一旦公開，發表的日期和時間就不會變了（除非手動修改發表時間），這樣方便文章排列時依發表前後順序來整理，但也因為這樣，哪天如果有修改過這篇文章、想標示文章最後更新的時間，只好手動在文章裡告知了！（因為 Blogger 的&lt;a title="樣板變數" target="_blank" href="http://help.blogger.com/bin/answer.py?hl=en&amp;amp;answer=47270" id="fp-s"&gt;樣板變數&lt;/a&gt;，Post 裡只有發表的 timestamp，並沒有更新的時間..）&lt;/p&gt;
&lt;p&gt;不過之前在處理 Feed 內容的時候，有注意到 Feed Content 裡除了有文章的&lt;a title="發表時間" target="_blank" href="http://code.google.com/intl/zh-TW/apis/blogger/docs/2.0/reference.html#PublicationUpdatedDates" id="n:fz"&gt;發表時間&lt;/a&gt;  (published)，也還有更新時間 (updated) 啊，所以只要能透過該篇文章的 Feed 內容，就可以找出該篇文章最後的更新時間，把它抓出來用不就能達到目的了嗎？從 Feed 透過 JSON 抓資料顯示是小事，但遇到的障礙有兩個，首先，現在有的 Feed &lt;a title="標準" target="_blank" href="/2007/03/blogger-site-feed-usage.html" id="qscz"&gt;標準&lt;/a&gt;是「全部文章」、或「全部留言」的資訊，我要的只是單篇文章的 Feed 內容，不會要我從全部文章的 Feed 來搜尋吧？其次，就算找到單篇文章的 Feed 資料，裡面的格式又為何（會這麼說，是因為和 Google 公告的格式不大一樣）？經過幾天的奮鬥，終於讓我解決問題做出這個 Hack，由於部份用法都不在官方的說明文件裡，所以格外花時間（在確定資料內容）。&lt;/p&gt;
&lt;p&gt;顯示文章最後的更新時間&lt;br&gt;&lt;img src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgRZpbxiX7iBcCo_NVma9xMSr92v9BWGpSRhNXUZL2HvHbxYwj1jKgHvWC4RZIpGnA2ruUjFU9RAYh05QFYXxkC-2_KdSS23g0T5VuTvIRSilX-UvMOOVl8-Xjk8OYa_A07Q8PqXzhLPpgt/s400/showupdate.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5314387926046402834" /&gt;&lt;/p&gt;
&lt;p&gt;首先是單篇文章的 Feed 網址格式。之前&lt;a title="找到的資料" target="_blank" href="http://purplemoggy.blogspot.com/2006/09/blogger-beta-feeds.html" id="badq"&gt;找到的資料&lt;/a&gt;，Feed 的種類有 Posts Feed (所有文章）、Comments Feed (所有留言)、Labels Feed、還有 Post Comment Feed (單篇文章的所有留言)，單純一篇文章的 Feed 其實沒什麼用（而且需要先找出 Post ID），找半天好不容易被我 try 出來，單篇文章的 Feed 網址是：&lt;/p&gt;
&lt;p&gt;&lt;code&gt;http://xxx.blogspot.com/feeds/posts/default/POST-ID&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;有了 Feed 就簡單啦，接下來用 JSON 來抓 Post 的 Update Time。根據 JSON 的 &lt;a title="Parse 規則" target="_blank" href="http://expsharing.blogspot.com/2008/09/blogger-json-feed-and-json-recent-posts.html" id="xxy-"&gt;Parse 規則&lt;/a&gt;，Update Time 的變數是 json.feed.entry[i].updated.$t，不過我是單篇文章啊，沒有一堆 Feed Entry，所以資料結構和一般的 Feed 又不一樣啊！後來透過直接解讀該 Feed 的內容、並用 JSON 的&lt;a title="規格" target="_blank" href="http://code.google.com/intl/zh-TW/apis/gdata/json.html" id="hcqo"&gt;規格&lt;/a&gt;來判斷，才知道該變數應該是 json.entry.updated.$t 啊！解決這兩個關鍵的問題，要顯示文章更新時間就一如反掌了！看不懂的人沒關係，一樣複製、貼上、修改就能用這個功能了。打開管理介面、版面配置、修改 HTML 樣板原始碼（一樣要展開小程式範本），在程式碼 &amp;lt;head&amp;gt; 區段內（&amp;lt;/b:skin&amp;gt; 標籤後、&amp;lt;/head&amp;gt; 標籤前），塞入 Javascript 程式：&lt;/p&gt;
&lt;p&gt;&lt;code&gt;&amp;lt;script type='text/javascript'&amp;gt;&lt;br&gt;
//&amp;lt;![CDATA[&lt;br&gt;
&amp;lt;!-- Function used for generating the last update time for each post: showPostUpdateTime() --&amp;gt;&lt;br&gt;
function showPostUpdateTime(json) {&lt;br&gt;
&amp;nbsp; var updateTime = json.entry.updated.$t;&lt;br&gt;
&amp;nbsp; var publishTime = json.entry.published.$t;&lt;br&gt;
&amp;nbsp; if (updateTime.substr(0,10) != publishTime.substr(0,10))&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; document.write(' | 更新於 '+updateTime.substr(0,10)+' '+updateTime.substr(11,5));&lt;br&gt;
}&lt;br&gt;
//]]&amp;gt;&lt;br&gt;
&amp;lt;/script&amp;gt;&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;說明一下，這段 Javascript 的工作原理是：先取得該文章的「發表時間」和「更新時間」，如果「日期」一模一樣，那麼就不顯示更新時間（因為我覺得，在發表文章的同一天內對內容做一點修改無可厚非，可能只是打錯字）。如果日期不一樣，那麼就顯示該文章最後更新的日期和時間。（如果要改顯示格式、內容和判斷規則的，自己修改這段 Javascript，不要再來找我客制化了！）&lt;/p&gt;
&lt;p&gt;接下來，要把觸發以上 Javascript 的函式呼叫塞到原始碼裡，這裡主要也是決定這段更新時間要顯示的位置。以這的範例來看，我把最後更新時間放在「發表時間」的後面，而且，只有在顯示該篇文章全文的時候，才會顯示出來（所以首頁看不到，判斷規則可以參考&lt;a title="這篇文章" target="_blank" href="/2007/02/sidebar.html" id="dc55"&gt;這篇文章&lt;/a&gt;）。所以先找到顯示發表時間 (&amp;lt;data:post.timestamp/&amp;gt;) 的區段，插入紅色的那個程式：&lt;/p&gt;
&lt;p&gt;&lt;code&gt;&amp;lt;span class='post-timestamp'&amp;gt;&lt;br&gt;
&amp;nbsp; &amp;lt;b:if cond='data:top.showTimestamp'&amp;gt;&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;data:top.timestampLabel/&amp;gt;&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;b:if cond='data:post.url'&amp;gt;&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;a class='timestamp-link' expr:href='data:post.url' title='permanent link'&amp;gt;&amp;lt;data:post.timestamp/&amp;gt;&amp;lt;/a&amp;gt;&lt;br&gt;
&lt;span style="color: rgb(255, 0, 0);"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;!-- Fixed for display post update time --&amp;gt;&lt;/span&gt;&lt;br style="color: rgb(255, 0, 0);"&gt;
&lt;span style="color: rgb(255, 0, 0);"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;b:if cond='data:blog.pageType == &amp;amp;quot;item&amp;amp;quot;'&amp;gt;&lt;/span&gt;&lt;br style="color: rgb(255, 0, 0);"&gt;
&lt;span style="color: rgb(255, 0, 0);"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;script expr:src='&amp;amp;quot;/feeds/posts/default/&amp;amp;quot; + data:post.id + &amp;amp;quot;?alt=json-in-script&amp;amp;amp;callback=showPostUpdateTime&amp;amp;quot;' type='text/javascript'/&amp;gt;&lt;/span&gt;&lt;br style="color: rgb(255, 0, 0);"&gt;
&lt;span style="color: rgb(255, 0, 0);"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/b:if&amp;gt;&lt;/span&gt;&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/b:if&amp;gt;&lt;br&gt;
&amp;nbsp; &amp;lt;/b:if&amp;gt;&lt;br&gt;
&amp;lt;/span&amp;gt;&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;那個 if 的判斷句就是檢查是不是「顯示文章全文」的狀態，如果到處都想看到「更新時間」，那麼把該 if 判斷拿掉就行了。&lt;/p&gt;
&lt;p&gt;會想加這項資訊，主要也是想標示文章最後的更新時間，自己在整理筆記時，才知道上次更新的時間，閱讀時也能知道這篇是不是 Po 完就沒動過的舊文章，對於值得一看再看或會修改的文章，這項資訊很有參考價值，對於愛 Po 流水帳、或是 Po 完連自己都不一定會再看的 Blog 來說，這項功能就完全用不到囉～&lt;/p&gt;
&lt;span id="fullpost"&gt;&lt;/span&gt;</content><link href="https://abintech.twidv.com/feeds/8980601970502351780/comments/default" rel="replies" title="張貼留言" type="application/atom+xml"/><link href="https://abintech.twidv.com/2009/03/show-post-update-time.html#comment-form" rel="replies" title="22 個意見" type="text/html"/><link href="https://www.blogger.com/feeds/8596053384636689442/posts/default/8980601970502351780" rel="edit" type="application/atom+xml"/><link href="https://www.blogger.com/feeds/8596053384636689442/posts/default/8980601970502351780" rel="self" type="application/atom+xml"/><link href="https://abintech.twidv.com/2009/03/show-post-update-time.html" rel="alternate" title="增加文章更新時間 (Show Post Update Time)" type="text/html"/><author><name>Abin</name><uri>http://www.blogger.com/profile/11723161715531068787</uri><email>noreply@blogger.com</email><gd:image height="32" rel="http://schemas.google.com/g/2005#thumbnail" src="//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjeWuiw4mDiqf2k7uj4szC6I3hS70kEW-tm_gpLFxHpOwDP3VyZBV-1oG6OoQnI3ur10nD1kRIZgRcmN_lAoIeHbdUsFg89XUxEscnje6FaL8gWM3_jswkM1dTjJ9Y54Q/s220/Portrait-Blog-S.gif" width="32"/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" height="72" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgRZpbxiX7iBcCo_NVma9xMSr92v9BWGpSRhNXUZL2HvHbxYwj1jKgHvWC4RZIpGnA2ruUjFU9RAYh05QFYXxkC-2_KdSS23g0T5VuTvIRSilX-UvMOOVl8-Xjk8OYa_A07Q8PqXzhLPpgt/s72-c/showupdate.jpg" width="72"/><thr:total>22</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8596053384636689442.post-4328337152560551278</id><published>2009-03-12T00:35:00.005+08:00</published><updated>2009-06-16T18:04:35.454+08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="LinkStation HACK"/><title type="text">LinkStation 的升級 Part2: 支援 SATA 硬碟</title><content type="html">&lt;p&gt;沒想到從 &lt;a title="Part1" target="_blank" href="/2007/06/linkstation-part1.html" id="kppx"&gt;Part1&lt;/a&gt; 到 Part2 的發文中間隔了快兩年...XD～從&lt;a title="前一篇" target="_blank" href="/2007/06/linkstation-part1.html" id="z97t"&gt;前一篇&lt;/a&gt; Part1 文章可以知道拆開 LinkStation 的詳細步驟，透過這些動作可以直接把原先 LinkStation 裡的「IDE」硬碟換成大容量的新硬碟，不過從市場趨勢來看，原來 LinkStation 裡使用的 IDE 介面硬碟漸漸消失，新出的大容量硬碟都是 SATA 介面的（就是從針腳的介面變成像金手指的介面），而 IDE 市面上買得到最大也只到 500GB，SATA 卻已經來到其四倍的 2TB (2000GB) 啦！為了 LinkStation 的未來，讓 LinkStation 能支援到 SATA 硬碟就非常重要了。不過這個動作不像軟體改機那麼簡單，這需要一個 SATA -&amp;gt; IDE 介面轉換的硬體轉接板，熟悉零組件的人應該知道這類轉板到處都有賣，不過那大多是給電腦用的，對寸土寸金的 LinkStation 小機殼來講，這類轉板就算能用，但也塞不進機殼裡啊！所幸和 LinkStation 同門師兄弟的 &lt;a title="Kurobox" target="_blank" href="http://kuroutoshikou.com/modules/display/?iid=122" id="h4mi"&gt;Kurobox&lt;/a&gt; 有推出其專用的 SATA/IDE 轉板，經測試回報在 LinkStation 上也能用，雖然台灣買不到，但最後還是透過「代購」的辦法請「&lt;a title="神蹟兄" target="_blank" href="http://www.pcgamma.com/forumdisplay.php?f=51" id="isdf"&gt;神蹟兄&lt;/a&gt;」幫忙，這才&lt;a title="入手" target="_blank" href="http://abinlee.blogspot.com/2008/03/kuro-sata.html" id="yunc"&gt;入手&lt;/a&gt;這張&lt;a title="玄人志向" target="_blank" href="http://kuroutoshikou.com/" id="df9b"&gt;玄人志向&lt;/a&gt;的 &lt;a title="Kuro-SATA" target="_blank" href="http://www.kuroutoshikou.com/modules/display/?iid=898" id="cc7:"&gt;Kuro-SATA&lt;/a&gt;。&lt;/p&gt;
&lt;p&gt;買回來後苦無硬碟測試（其實是懶惰）、加上大容量硬碟價格居高不下，所以這張轉板擺在家裏生灰塵了一段時間，直到&lt;a title="最近" target="_blank" href="http://abinlee.blogspot.com/2009/02/wd-caviar-green-1tb.html" id="xr_a"&gt;最近&lt;/a&gt;購入 1TB 的 SATA 硬碟，這才動手安裝使用。拆開 LinkStation 的步驟仍請參考 &lt;a title="Part1" target="_blank" href="/2007/06/linkstation-part1.html" id="lttz"&gt;Part1&lt;/a&gt; 的文章，等硬碟安裝好再上轉接板、復原接線就大功告成啦！這個轉板的好處是不用掛啥驅動程式，裝上去硬體重頭到尾還是以為它只是個「IDE」硬碟（所以 Device ID 仍是 hda，不會變成 sda），除了拆機上轉板外，使用上和一般 IDE 硬碟無異，所以其他軟體改機步驟都不會受到影響。&lt;/p&gt;
&lt;p&gt;之前也有人問到，到底其他 IDE 轉 SATA 的轉板到底在 LinkStation 上能不能用，除了有勇者回報他買了 Uptech 最後宣告失敗的經驗，好像大多人沒有概念有什麼困難。我以坊間看到應該是最小了的轉接卡做例子，下面用是 &lt;a title="Uptech UTN620" target="_blank" href="http://www.upmost.com.tw/eng/product_detail.php?prod_id=221" id="fqjs"&gt;Uptech UTN620&lt;/a&gt; 轉接板將 SATA 硬碟接上 IDE 排線的樣子（原圖引用自 &lt;a title="Roch Blog" target="_blank" href="http://www.upmost.com.tw/blog/index.php?blogId=7" id="g1b9"&gt;Roch's Blog&lt;/a&gt; 的這篇文章：&lt;a title="IDE轉 SATA，Uptech UTN620/630 介面轉換器介紹" target="_blank" href="http://www.upmost.com.tw/blog/index.php?op=ViewArticle&amp;amp;articleId=255&amp;amp;blogId=7" id="ep6w"&gt;IDE轉 SATA，Uptech UTN620/630 介面轉換器介紹&lt;/a&gt;）：&lt;/p&gt;
&lt;p&gt;&lt;img src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjuP5udd4Mp0qXWMgMrFLdaBfcJUZBtYRXX0Q3PoxvHwwzwZYoYFOaAC4uFnvLETfFLtbuuTD7qQbkibzcAJ3GPObxP6vVwPi9g4Sr6BuGlVdWs0zd6Ofs09tvEsq5hLvD1dbw3TpQ_XoD8/s800/Uptech+UTN620.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5311967897871384162" /&gt;&lt;/p&gt;
&lt;span id="fullpost"&gt;
&lt;p&gt;關鍵點在那個 IDE 插座是往後的，LinkStation 上了硬碟的空間很小，小到連那個插座都快塞不下，更別說要把排線和電源接上去了，所以光看這張圖應該想像得到，一般這類介面卡除非特別設計，不然一定是不行的。反觀玄人志向的 Kuro-SATA，介面卡長這樣：&lt;/p&gt;
&lt;p&gt;&lt;img src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjrQqlHIJflvtnyo_J8FWTaO8bOMCSTENYzRTUk3VMFWZEPyigoOv94VsuKOFmRUuQW8xm1OkxsDtnsLCVacV_-Y5593UdIEeEFanvTU9CvRE4PKpvtJZ9HTLqdk6xwoUvxatmOp4jarFef/s400/Kuro-SATA.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5311967895722907330"/&gt;&lt;/p&gt;
&lt;p&gt;IDE 插座是往上的，電源插座還特別突出來往後！這樣就可以解決問題了嗎？請看實際安裝的樣子：&lt;/p&gt;
&lt;p&gt;左圖是上轉接板前，右圖是上轉接板後&lt;br/&gt;
&lt;img src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhQKNdST1imU9ueGnVvLoeM0M05wQ0sKy7g7agZh14XbX-Cl3hJN7Xf3F6-kCxsNuFfWXJHYTss-KqSWDzQcCNiUm9Os39zES7K_vSkn2hr2n45PHMWj3QkewmOw5os_IustRMHZzqm8NIW/s320/Kuro-SATA-Before.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5311968876778277714" /&gt; &lt;img src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhpzv1I6_zlqlRoA7_sUVkOT514dKSPHj8aCZ0YEpoap9yyj5U-8H4FUS-xI9TQuGa8b6LdSgsCEEzvys9PWwM5XhC3C8AwsWPy59LkAKI9Z-IxrF9lYsR8ZSrPQSZlDdWN7MuBftuRyq0c/s320/Kuro-SATA-After.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5311968881875914994" /&gt;&lt;/p&gt;
&lt;p&gt;從左圖看來，硬碟在接排線前，機殼的空間就小到只塞得下一小片電路板，別說排線了，電容電阻大顆一點都可能卡到。而經過「客制化」的 Kuro-SATA 有特別調整過，專門給 Kurobox 或 LinkStation 使用，因此也應該只有這款「專用」的轉接板，才能應付讓 LinkStation 能支援 SATA 介面的硬碟。所以有這等考量、還想 Try 其他轉板的人，不要掙扎了，趕緊想辦法去找人代購 Kuro-SATA 吧，哪天轉板停賣、又找不到合用的 IDE 硬碟時，才不會欲哭無淚、讓 LinkStation 「巧婦難為無米之炊」啊～（我不是業代、也沒有幫忙代購啦，只是這篇和 LinkStation Hack 有關，想說網路上也沒有類似的中文文章，所以特別記錄下來，有興趣的自己去找神蹟大、或是其他日本代購的賣家～）&lt;/p&gt;
&lt;/span&gt;</content><link href="https://abintech.twidv.com/feeds/4328337152560551278/comments/default" rel="replies" title="張貼留言" type="application/atom+xml"/><link href="https://abintech.twidv.com/2009/03/linkstation-part2-sata.html#comment-form" rel="replies" title="12 個意見" type="text/html"/><link href="https://www.blogger.com/feeds/8596053384636689442/posts/default/4328337152560551278" rel="edit" type="application/atom+xml"/><link href="https://www.blogger.com/feeds/8596053384636689442/posts/default/4328337152560551278" rel="self" type="application/atom+xml"/><link href="https://abintech.twidv.com/2009/03/linkstation-part2-sata.html" rel="alternate" title="LinkStation 的升級 Part2: 支援 SATA 硬碟" type="text/html"/><author><name>Abin</name><uri>http://www.blogger.com/profile/11723161715531068787</uri><email>noreply@blogger.com</email><gd:image height="32" rel="http://schemas.google.com/g/2005#thumbnail" src="//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjeWuiw4mDiqf2k7uj4szC6I3hS70kEW-tm_gpLFxHpOwDP3VyZBV-1oG6OoQnI3ur10nD1kRIZgRcmN_lAoIeHbdUsFg89XUxEscnje6FaL8gWM3_jswkM1dTjJ9Y54Q/s220/Portrait-Blog-S.gif" width="32"/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" height="72" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjuP5udd4Mp0qXWMgMrFLdaBfcJUZBtYRXX0Q3PoxvHwwzwZYoYFOaAC4uFnvLETfFLtbuuTD7qQbkibzcAJ3GPObxP6vVwPi9g4Sr6BuGlVdWs0zd6Ofs09tvEsq5hLvD1dbw3TpQ_XoD8/s72-c/Uptech+UTN620.jpg" width="72"/><thr:total>12</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8596053384636689442.post-8009790595398382203</id><published>2009-03-08T23:08:00.005+08:00</published><updated>2009-06-16T18:01:10.428+08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="LinkStation HACK"/><title type="text">起死回生的 LinkStation (via JTAG)</title><content type="html">&lt;p&gt;話說之前買了個 &lt;a href="http://abinlee.blogspot.com/2009/02/wd-caviar-green-1tb.html"&gt;1TB 的 WD 硬碟&lt;/a&gt;，加上請人代購的 &lt;a href="http://abinlee.blogspot.com/2008/03/kuro-sata.html"&gt;SATA 套件&lt;/a&gt;，目的就是為了讓我的 NAS - LinkStation 能夠上更大的容量，經過幾次測試發現沒問題後，打算重灌、讓我新的 1TB 硬碟走馬上任，無奈手賤，看到網路上有提到一個超棒神奇的 ROM：&lt;a href="http://buffalo.nas-central.org/index.php/U-boot_bootloader"&gt;U-boot&lt;/a&gt;（LinkStation 的 Firmware 是放在硬碟上，而 ROM 裡面有基本的 Boot Loader，即便硬碟壞了也可以透過 ROM 開機來修復重灌，這個 U-boot 的作用就是提昇原廠 ROM 的功能），可以塞到原廠 ROM 的前面當 Boot Loader、讓使用者能靠按電源鍵來決定哪個開機區（不用再手動 swaphd），也可以在重刷的過程一併將原廠的 ROM 換成有 Telnet 功能的方便維修。抱著戒慎恐懼的心態想來試刷看看，沒想到才跑第一個步驟，馬上出現我看不懂的錯誤訊息，關機重開後，機器就送給我最害怕的 Diag 燈連閃五下：Flash memory error （不同閃燈數量代表的意義可以參考&lt;a href="http://buffalo.nas-central.org/wiki/Information/HGLED"&gt;這篇文章&lt;/a&gt;）！死了！ROM 刷壞哩（明明就連第一個步驟都還沒開始哩，它告訴我空間不足啊），這個可不是我能解決的狀況啊！一失足成千古恨，難道我服役兩年半 NAS 從此就變成磚塊 (Brick，這個字現在已經也可以做「動詞」了)，之前買來升級的套件和硬碟都用不著了嗎？&lt;/p&gt;
&lt;p&gt;訪查網路的文章，據說這個情況發生，除了送回原廠（但早就過保固啦），唯一的手段就是上 &lt;a href="http://zh.wikipedia.org/wiki/JTAG"&gt;JTAG&lt;/a&gt; (Joint Test Action Group)。透過在電路板上焊幾隻針腳做一個連接埠，用這個連接埠與電腦連線，藉由和晶片的直接溝通 (Daisy Chain)，就可以進行電路除錯、訊號資料傳送和維修的動作。以上都是從&lt;a href="http://zh.wikipedia.org/wiki/JTAG"&gt;維基百科&lt;/a&gt;上查來的，我只是個小文組，電工的知識一點都沒有，這輩子也沒用過電烙鐵，就算以上動作再簡單，對我來說都是難如登天（更何況，並沒有那麼簡單），還好在網路上找到有維修 LinkStation 的賣家（&lt;a href="http://petonline.dyndns.org/"&gt;翔工坊&lt;/a&gt;），不只是單純幫忙改機，連搞 JTAG 都有經驗，我二話不說就快遞機器給他處理了！&lt;/p&gt;
&lt;p&gt;根據賣家告知的流程，基本上就是先在板子上焊一組 2x8 的針腳頭，當作 JTAG Port，然後做一張 JTAG 的 Cable（用來把針腳轉 Printer Port，裡面還有塊電路板），透過這條線連接機板和電腦，以及 JTAG Software，就可以下命令送資料進 ROM 裡重刷資料（用講的比較簡單）！以下整理搞 JTAG 的步驟以及相關的資料，如果有錯可以糾正我，但有細節問題要問我就沒法回答啦（因為沒親手做過）：&lt;/p&gt;
&lt;span id="fullpost"&gt;
&lt;p&gt;步驟一：先焊上 JTAG Port （照片是我被焊過的機板，正面和反面）&lt;br&gt;
&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEie6Bin7vZdvqjhxo2vKffZ76uI4u_ICeK8bXJTKMTDPq9AqR-o2cvpwJJyeWEF0u5qfy9l2AcRV07YpXRHxruFxDMUBGcxJfckBQOvAF0oCnAB3gtEp_l0ZE3Q-wtEXAMllpY594fLhZ2o/s1600-h/JTAG-Port-1.jpg"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 320px; height: 240px;" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEie6Bin7vZdvqjhxo2vKffZ76uI4u_ICeK8bXJTKMTDPq9AqR-o2cvpwJJyeWEF0u5qfy9l2AcRV07YpXRHxruFxDMUBGcxJfckBQOvAF0oCnAB3gtEp_l0ZE3Q-wtEXAMllpY594fLhZ2o/s320/JTAG-Port-1.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5309658558303375282" /&gt;&lt;/a&gt; &lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgyBA6Y9jip1ppkdX3KfH-nZvHZUAwFpsGpP961S5N3um3HXlLy69KaWvZSALyABcaFd3gBIDpAjRQLhfTGVCj5-veR1kjogpBrmuLJyhlb4ebgGpKQzFwodsb07Hh_YDqD-EzrZKeg3ezG/s1600-h/JTAG-Port-2.jpg"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 320px; height: 240px;" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgyBA6Y9jip1ppkdX3KfH-nZvHZUAwFpsGpP961S5N3um3HXlLy69KaWvZSALyABcaFd3gBIDpAjRQLhfTGVCj5-veR1kjogpBrmuLJyhlb4ebgGpKQzFwodsb07Hh_YDqD-EzrZKeg3ezG/s320/JTAG-Port-2.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5309658562664829730" /&gt;&lt;/a&gt;&lt;br&gt;
請參考這兩篇：&lt;a href="http://buffalo.nas-central.org/wiki/Install_a_JTAG_Port"&gt;Install a JTAG Port&lt;/a&gt;, &lt;a href="http://buffalo.nas-central.org/wiki/Add_Jtag_Port#JTAG_Interface_Cable"&gt;Add Jtag Port&lt;/a&gt;，主要是交待每個針腳的意義。&lt;/p&gt;
&lt;p&gt;步驟二：自己做一塊 JTAG，像下面這樣的東西：&lt;br&gt;
&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiePt-6R7lYUkhiIIsvfYCsX8x7Sg-duknODN_Pbkk_pDr_TduXo0c3F64yfDRKw3Sj5l3lTvmYZT34nRZ0BtgMZz21-RRFkCS-vHcq7VkwOhuzt8zXOT-ArM8CswVwCD2bMFXPk_O8NpB_/s1600-h/JTAG-Cable-DIY.jpg"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 400px; height: 266px;" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiePt-6R7lYUkhiIIsvfYCsX8x7Sg-duknODN_Pbkk_pDr_TduXo0c3F64yfDRKw3Sj5l3lTvmYZT34nRZ0BtgMZz21-RRFkCS-vHcq7VkwOhuzt8zXOT-ArM8CswVwCD2bMFXPk_O8NpB_/s400/JTAG-Cable-DIY.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5309659113075351362" /&gt;&lt;/a&gt;&lt;br&gt;
參考這一篇文章：&lt;a href="http://buffalo.nas-central.org/wiki/Building_a_JTAG_Interface"&gt;Building a JTAG Interface&lt;/a&gt; ，或是參考&lt;a href="http://buffalo.nas-central.org/wiki/Add_Jtag_Port#JTAG_Interface_Cable"&gt;上面那篇&lt;/a&gt;，去買一條現成的 Cable，像這樣：&lt;br&gt;
&lt;img src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgeqR5iieQmGJ8d3JD-Oq6vw8z3tGsmdSxx6AUoFqz2M5SHVBmvhEx6kmuGWbCGAkYJhUywzwC3y8CBjzgs-zYKGHs5fwHhVNSnb1ptrU60vytuuiIctSPY170sskKKiI1Xh1T6PAAWbc-F/s400/JTAG-Cable.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5309659116345141042" /&gt;&lt;/p&gt;
&lt;p&gt;步驟三：連接電腦和機板（電腦還要有 Printer Port，或透過轉接），透過 &lt;a href="http://buffalo.nas-central.org/wiki/JTAG_Software"&gt;JTAG Software&lt;/a&gt; (&lt;a href="http://buffalo.nas-central.org/wiki/JTAG_Software/Openwince"&gt;Openwince&lt;/a&gt;)，準備對應的 &lt;a href="http://www.genbako.com/u-boot_loader/u-boot-hg.flash.bin"&gt;u-boot.bin&lt;/a&gt; （如果要上 U-boot 的話）和 &lt;a href="http://downloads.buffalo.nas-central.org/LSHG_PPC/Initrds/telnet_and_ftp_enabled/HG/firmimg.bin"&gt;Firmimg.bin&lt;/a&gt;（Linux Initrds, 原廠 ROM 含 Telent 的，3 MB），以及相關命令，開始刷（據說要很久）！&lt;br&gt;
參考這一篇文章：&lt;a href="http://buffalo.nas-central.org/wiki/Building_and_using_Openwince%27s_JTAG_Tools"&gt;Building and using Openwince's JTAG Tools&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;步驟四：刷完重開測試。如果有裝 U-boot，可以用 Net Cat 監看開機過程。&lt;br&gt;
參考文章：&lt;a href="http://buffalo.nas-central.org/index.php/NetCat-A_UBoot-Friendly_Network_Utility"&gt;NetCat-A UBoot-Friendly Network Utility&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;幫我維修的賣家直接幫我先上 U-boot，然後再刷上原廠內含 Telnet 的 ROM (firmimg.bin)，哇！這就是原先我手賤想要「升級」的狀態啊！東西塞進 ROM 後，除非硬體故障、或哪天又手賤去動 ROM（我不敢了），基本上這樣的 LinkStation 就所向無敵啦！想要從那個分割區開機，只要搭配 Power 鍵按幾下就行，如果想用新硬碟、或是不小心硬碟掛了，隨時都可以進到 EM (Emergency Mode) ，看是要重灌原廠韌體（從新分割區做起）、還是要 Telnet 進 EM 模式檢查和維修，這樣再也不用擔心要拆機器或搞壞啦！（希望自己和大家都不需要用到這篇筆記的動作....）&lt;/p&gt;
&lt;/span&gt;</content><link href="https://abintech.twidv.com/feeds/8009790595398382203/comments/default" rel="replies" title="張貼留言" type="application/atom+xml"/><link href="https://abintech.twidv.com/2009/03/linkstation-via-jtag.html#comment-form" rel="replies" title="28 個意見" type="text/html"/><link href="https://www.blogger.com/feeds/8596053384636689442/posts/default/8009790595398382203" rel="edit" type="application/atom+xml"/><link href="https://www.blogger.com/feeds/8596053384636689442/posts/default/8009790595398382203" rel="self" type="application/atom+xml"/><link href="https://abintech.twidv.com/2009/03/linkstation-via-jtag.html" rel="alternate" title="起死回生的 LinkStation (via JTAG)" type="text/html"/><author><name>Abin</name><uri>http://www.blogger.com/profile/11723161715531068787</uri><email>noreply@blogger.com</email><gd:image height="32" rel="http://schemas.google.com/g/2005#thumbnail" src="//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjeWuiw4mDiqf2k7uj4szC6I3hS70kEW-tm_gpLFxHpOwDP3VyZBV-1oG6OoQnI3ur10nD1kRIZgRcmN_lAoIeHbdUsFg89XUxEscnje6FaL8gWM3_jswkM1dTjJ9Y54Q/s220/Portrait-Blog-S.gif" width="32"/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" height="72" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEie6Bin7vZdvqjhxo2vKffZ76uI4u_ICeK8bXJTKMTDPq9AqR-o2cvpwJJyeWEF0u5qfy9l2AcRV07YpXRHxruFxDMUBGcxJfckBQOvAF0oCnAB3gtEp_l0ZE3Q-wtEXAMllpY594fLhZ2o/s72-c/JTAG-Port-1.jpg" width="72"/><thr:total>28</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8596053384636689442.post-8967803858866983670</id><published>2009-03-05T22:13:00.004+08:00</published><updated>2009-06-16T17:57:31.095+08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="BLOGGER HACK"/><title type="text">增加文章留言回應的編號 (Show Comment Index)</title><content type="html">&lt;p&gt;&lt;img src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgvTO3e7ny9B4s8Zu2634Zj3NyYoycmgD-tTknOwrmcl98MbIb6LZXBttWyGoKObeJTWFUax3L_NHKE4_Up77QeZXXvx6tOyuTcMpb36lps4KpY8xzoaQPi5eotjlwhdSEyYkJjvzk2m5e4/s400/CommentIndex.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5309646469532746738" align="right"/&gt;習慣透過 Blog 和「讀者」溝通交流的人，應該會發現 Blogger 的留言回應少了一個很重要的參考，那就是留言的「順序編號」。雖說這個編號是流水號，但這個有順序的編號對某些人氣很高的 Blog 來說，代表了讀者留言的前後關係，有的粉絲會盯著作者發表或更新文章，透過搶第一個留言的方式來表達熱情，什麼搶「頭香」「沙發」之類的，雖然這種行為沒啥意義，但還是一堆人樂此不疲。當留言少、一眼整頁就能看完的時候，其實編號的意義並不大，但留言一多，其中還有鄉民在發問（偏偏一堆人不愛看其他人的留言或回應），如果要針對特定一篇留言討論（「五樓」?!），或告知答案在的第幾篇回應中，沒有這個編號就很麻煩了（雖然編號會因為中間留言刪除而改變，但雖不中亦不遠矣）。又不少鄉民愛用「幾樓」來指定特定的第幾篇留言，如果不在留言上打上「樓層編號」，留言在管理和討論上實在也很不方便，難不成要讀者一篇篇用手數嗎？&lt;/p&gt;
&lt;p&gt;當然這個問題不少人也有發現（追根究底是 Blogger 的樣板語言裡，有迴圈語法卻沒有顯示迴圈 Index 的變數），既然如此，那只好手動塞 Javascript 程式在該迴圈外和迴圈內，單純做個計數器就能夠搞定，不過坊間的改法看起來比較不友善，因此這裡用比較簡單的方式來處理這個問題（鄉民們也比較容易剪貼來用）。&lt;/p&gt;
&lt;p&gt;首先定義這個回應編號計數器的宣告和計算。登入管理介面，切到版面配置、修改 HTML 樣板原始碼（要展開小程式範本），在程式碼 &amp;lt;head&amp;gt; 區段內（&amp;lt;/b:skin&amp;gt; 標籤後、&amp;lt;/head&amp;gt; 標籤前），塞入以下 Javascript 程式：&lt;/p&gt;
&lt;span id="fullpost"&gt;
&lt;p&gt;&lt;code&gt;&amp;lt;script type='text/javascript'&amp;gt;&lt;br&gt;
//&amp;lt;![CDATA[&lt;br&gt;
&amp;lt;!-- Function used for generating the index number for each post: ShowCommentIndex() --&amp;gt;&lt;br&gt;
var CommentIndex = 0, CommentPostID = '';&lt;br&gt;
function ShowCommentIndex(PostID) { &lt;br&gt;
&amp;nbsp; if (CommentPostID != PostID) {&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; CommentIndex = 0;&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; CommentPostID = PostID;&lt;br&gt;
&amp;nbsp; }&lt;br&gt;
&amp;nbsp; document.write(++CommentIndex);&lt;br&gt;
}&lt;br&gt;
//]]&amp;gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;br&gt;
&amp;lt;/script&amp;gt;&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;接下來決定在留言內，要顯示回應編號的位置。基本上只要放在產生所有留言的迴圈「後面」就行了，那一行是：&lt;/p&gt;
&lt;p&gt;&lt;code&gt;&amp;lt;b:loop values='data:post.comments' var='comment'&amp;gt;&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;舉例，我把留言編號放在該篇留言的最後面 (comment-footer 區段裡、留言的時間後面，如同上面的例圖一樣)，顯示編號的程式碼放的位置和內容如下：&lt;/p&gt;
&lt;p&gt;&lt;code&gt;&amp;lt;dd class='comment-footer'&amp;gt;&lt;br&gt;
&amp;nbsp;&amp;nbsp; &amp;lt;span class='comment-timestamp'&amp;gt;&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; @ &amp;lt;a expr:href='data:comment.url' title='comment permalink'&amp;gt;&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;data:comment.timestamp/&amp;gt;&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/a&amp;gt;&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;b:include data='comment' name='commentDeleteIcon'/&amp;gt;&lt;br&gt;
&amp;nbsp;&amp;nbsp; &amp;lt;/span&amp;gt;&lt;br&gt;
&amp;nbsp;&amp;nbsp; &amp;lt;!-- Fixed for display comment index --&amp;gt;&lt;br&gt;
&amp;nbsp;&amp;nbsp; | &amp;lt;data:commentLabel/&amp;gt; #&lt;br&gt;
&amp;nbsp;&amp;nbsp; &amp;lt;script type='text/javascript'&amp;gt;&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ShowCommentIndex(&amp;amp;#39;&amp;lt;data:post.id/&amp;gt;&amp;amp;#39;); &lt;br&gt;
&amp;nbsp;&amp;nbsp; &amp;lt;/script&amp;gt;&lt;br&gt;
&amp;lt;/dd&amp;gt;&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;其實新加的關鍵是上面的倒數第六行到倒數第二行，如果編號想顯示在別的地方，請自行變更那五行的位置就行了（想改字型大小、顏色或靠哪一邊，請自己定義那一段的 CSS 樣式）。&lt;/p&gt;
&lt;p&gt;和別人不一樣的是，程式碼裡我多加了 Post ID 的判斷，因為那個計數器變數 (CommentIndex) 是全域變數，如果有其他模組「同時」要用這個函式，只要不要交叉呼叫，基本上同一個頁面不同的文章也可以產生正確的留言編號。對像我一樣用一堆 Hack 的人來說，算是多做一點檢查和判斷，以避免重複呼叫產生編號錯亂的情況～&lt;/p&gt;
&lt;/span&gt;</content><link href="https://abintech.twidv.com/feeds/8967803858866983670/comments/default" rel="replies" title="張貼留言" type="application/atom+xml"/><link href="https://abintech.twidv.com/2009/03/show-comment-index.html#comment-form" rel="replies" title="29 個意見" type="text/html"/><link href="https://www.blogger.com/feeds/8596053384636689442/posts/default/8967803858866983670" rel="edit" type="application/atom+xml"/><link href="https://www.blogger.com/feeds/8596053384636689442/posts/default/8967803858866983670" rel="self" type="application/atom+xml"/><link href="https://abintech.twidv.com/2009/03/show-comment-index.html" rel="alternate" title="增加文章留言回應的編號 (Show Comment Index)" type="text/html"/><author><name>Abin</name><uri>http://www.blogger.com/profile/11723161715531068787</uri><email>noreply@blogger.com</email><gd:image height="32" rel="http://schemas.google.com/g/2005#thumbnail" src="//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjeWuiw4mDiqf2k7uj4szC6I3hS70kEW-tm_gpLFxHpOwDP3VyZBV-1oG6OoQnI3ur10nD1kRIZgRcmN_lAoIeHbdUsFg89XUxEscnje6FaL8gWM3_jswkM1dTjJ9Y54Q/s220/Portrait-Blog-S.gif" width="32"/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" height="72" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgvTO3e7ny9B4s8Zu2634Zj3NyYoycmgD-tTknOwrmcl98MbIb6LZXBttWyGoKObeJTWFUax3L_NHKE4_Up77QeZXXvx6tOyuTcMpb36lps4KpY8xzoaQPi5eotjlwhdSEyYkJjvzk2m5e4/s72-c/CommentIndex.jpg" width="72"/><thr:total>29</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8596053384636689442.post-4447544756482164416</id><published>2009-02-19T23:39:00.011+08:00</published><updated>2009-06-16T17:54:52.283+08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Blogger"/><category scheme="http://www.blogger.com/atom/ns#" term="Google"/><category scheme="http://www.blogger.com/atom/ns#" term="Picasa"/><title type="text">Blogger 和 Picasa 的圖片上傳和外連限制</title><content type="html">&lt;p&gt;好久沒 Po 文了，這次來整理一下 Blogger 和 Picasa 對圖片上傳的限制和處理方法吧！大家都喜歡看「圖文並茂」的文章，尤其是 Blog，於是乎大部分 BSP 系統都會有其後端的圖片上傳和文章連結的機制，舉凡&lt;a title="無名小站" target="_blank" href="http://www.wretch.cc/" id="j5yx"&gt;無名小站&lt;/a&gt;、&lt;a title="痞客幫" target="_blank" href="http://www.pixnet.net/" id="b1bd"&gt;痞客幫&lt;/a&gt;都有，不過我覺得弔詭的是，難道 Blog 文章會放的「圖」，都一定只有「照片」嗎？一般 BSP 搞的都是「相簿」+「Blog」，那像寫些其他的文章，需要貼些 Logo 和插圖，這些只有一兩張、只和文章有關的小圖片，是要怎麼分類、放在哪個「相簿」哩？扣掉直接盜連的作法，也有人放在免費的「圖床」，但這些「圖床」在管理和保留上都有不少限制，沒人希望哪天看到文章圖片的部份都變成「叉燒包」的失效連結吧！所幸 Blogger 的圖片管理方式，雖還是結合 &lt;a title="Picasa 網路相簿" target="_blank" href="http://picasaweb.google.com.tw" id="i8.l"&gt;Picasa 網路相簿&lt;/a&gt;，但只要透過 Blogger 的圖片上傳介面來嵌入文章用圖，它會在網路相簿裡自動建立一個給該 Blog 專用不公開的「相簿」，方便管理和保存 Blog 用到的所有圖片（這一點&lt;a title="之前也提過" target="_blank" href="/2007/03/blogger-picasa-web-album.html" id="fglc"&gt;之前也提過&lt;/a&gt;），於是乎，我 Blog 用的圖片、偷來的照片，就可以「專門」放在 Blogger -&amp;gt; Picasa 的「圖床」，至於自己拍的「相片」，那就外連到 Flickr 那邊，算是把 Blog 圖片和網路相簿的照片分開管理。（Picasa 用得最好的典範，首推「&lt;a title="索爾王" target="_blank" href="http://thorking05.blogspot.com/" id="qblx"&gt;索爾王&lt;/a&gt;」）&lt;/p&gt;
&lt;p&gt;但也因為這樣，有時候寫 Blog 需要的圖片，透過 Blogger 後台上傳到 Picasa 後常會有些疑問，像圖片上傳後會被自動「縮圖」、Blogger 也會自動產生一些 HTML code 方便顯示圖片和連結原始檔，偏偏這些自動的東西不一定合用啊，因為嵌入文章的圖片大小會影響版面的排列，一旦無法掌握，文章的圖文排版就會不如預期，而插圖，也不一定需要連結（尤其是連結到原始圖）。經過幾個測試，終於把規則找出來了（線上 Help 也都沒提到），在這就順便紀錄下來。&lt;/p&gt;
&lt;p&gt;
&lt;img src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh7NWKy6RYo98EW38YSaob_JFIWxSvMNmqh82kPc4GJmATPtqx-DQa_5mPBjwbXvJgSQEGVxHvtyDMPKb-dyaojAYsZE0IvjTp02hfSZBhjZ3jJ966XtzbVLMf7UKMTGmCpbe6s-upQWtd1/s800/BloggerUpload.png"/&gt;
&lt;/p&gt;
&lt;span id="fullpost"&gt;
&lt;p&gt;首先，上面是 Blogger 上傳圖片的介面，不管你上傳的圖片多大多小，也只有三個選項：「小」「中」「大」，看到這些選項，使用者根本不知道待會上傳的圖片會變成多大？是原圖大小，還是被縮成多小？原來，這三種縮圖 Size 代表的是三種解析度限制，分別是 200 (小)、320 (中)、400 (大)，但為了不破壞圖樣比例，它會以較長的那邊做等比例縮小。例如假設一張 800x600 的原圖被上傳、選擇圖片大小為「中」，那麼文章裡被嵌入的會變成一張 320x240 的圖片（把長邊 800 縮到 320 中等圖片的上限，短邊 600 等比例就變成 240 啦），知道圖的大小，才能知道該圖片的安排了（看是要文繞圖、靠左靠右還是置中）！之前也有網友發問，說為什麼自己上傳用數位相機拍的照片（N 百萬像素），貼到 Blog 後變好小？因為根據限制版面最長或最寬就 400 pixels （「大」，400x400 相當於十六萬像素），當然照片的細節就看不清楚啦！除非點到該照片、開新頁面連到該照片的「原始圖檔」，不然在文章裡最大就 400x400 啦！因此，如果你打算放張更大的圖，很抱歉，預設 Blogger 的上傳介面不允許（但，還是有手動的方法，請容後述），如果就只要插入一張 400 pixels 以下的圖檔，乾脆自己先縮圖再上傳，一方面比較快、另一方面也比較不會浪費網路相簿的總容量空間（目前 Picasa 提供的免費空間總共有 1024 MB，也就是只有 1 GB，放「照片」應該是很不夠，但放 Blog 的小圖應該綽綽有餘，可以在&lt;a title="這個頁面" target="_blank" href="https://www.google.com/accounts/ManageStorage" id="njka"&gt;這個頁面&lt;/a&gt;查詢使用狀況，視需要還可以&lt;a title="花錢升級" target="_blank" href="https://www.google.com/accounts/PurchaseStorage" id="y_iz"&gt;花錢升級&lt;/a&gt;）。原來在 Picasa 裡是&lt;a title="限制單張圖" target="_blank" href="http://picasa.google.com/support/bin/answer.py?answer=43879" id="rwd6"&gt;限制單張圖&lt;/a&gt;最大 20 MB（或五千萬像素），Blogger 卻只允許最大 8 MB，這裡也看得出來並不鼓勵你在 Blog 上塞大圖，其實 Blog 文章重點應該是在「文字」，圖片和照片算是「點綴插花」，量太多不但拖慢大家瀏覽的速度（有興趣的自己會去點大圖看細節、或直接瀏覽網路相簿）、浪費頻寬，只看圖也會讓讀者對文字失去焦點，自己點網路相簿看圖說故事不就行啦！&lt;/p&gt;
&lt;p&gt;上面之所以建議「自己先縮圖」，好處當然是自己也能掌握縮圖的品質，上傳到 Picasa 的圖片品質並不會縮水，但經過自動縮圖後結果可能會遠不如預期（同一張 JPEG 圖檔縮到一樣解析度，也可能因為取樣方法導致檔案大小和品質相差甚大），讓你本來打算給人家看到的細節反倒模糊了。圖檔最好是用全彩的 PNG 或 BMP 格式（但檔案較大、很舊的 IE 還不支援 XD），選 GIF 只能有 256 色，JPEG 檔則是最常用的格式，但 JPEG 縮圖很容易讓細節一整個糊掉出現格子，所以自己縮圖時除了大小，格式品質也要注意。&lt;/p&gt;
&lt;p&gt;最後提到的是圖片外連的問題。假設用 Blogger 上傳一張圖片，在文章 HTML 原始碼會出現像下面的一段程式碼：&lt;/p&gt;
&lt;p&gt;&lt;code&gt;&amp;lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh7NWKy6RYo98EW38YSaob_JFIWxSvMNmqh82kPc4GJmATPtqx-DQa_5mPBjwbXvJgSQEGVxHvtyDMPKb-dyaojAYsZE0IvjTp02hfSZBhjZ3jJ966XtzbVLMf7UKMTGmCpbe6s-upQWtd1/s1600-h/BloggerUpload.png"&amp;gt;&lt;br&gt;
&amp;lt;img style="cursor:pointer; cursor:hand;width: 400px; height: 216px;" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh7NWKy6RYo98EW38YSaob_JFIWxSvMNmqh82kPc4GJmATPtqx-DQa_5mPBjwbXvJgSQEGVxHvtyDMPKb-dyaojAYsZE0IvjTp02hfSZBhjZ3jJ966XtzbVLMf7UKMTGmCpbe6s-upQWtd1/s400/BloggerUpload.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5304446511228360850" /&amp;gt;&lt;br&gt;
&amp;lt;/a&amp;gt;&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;除了一些特效和 CSS 外，原始碼主要包含一個連結網址 (&amp;lt;a href=""&amp;gt;&amp;lt;/a&amp;gt;)、和實際顯示的圖片語法 (&amp;lt;img src="" /&amp;gt;，像上面說的，最大就 400 pixels)。連結網址會幫你 redirect 到原始大圖的網頁，但如果直接把這個網址貼到文章裡面，該大圖在文章內是出不來的（注意看一下，這邊的連結網址是 blogspot.com 的）！硬要嵌大於 400 pixels 的圖檔在文章裡，又想透過 Blogger 來管理和上傳，這時候只要在圖片上傳後、手動修改文章內文被插入的程式碼，就可以自行決定圖片顯示的大小囉！熟悉 HTML 的人應該知道，&amp;lt;img&amp;gt; 標籤是用來顯示圖片的語法，分析上面這段自動產生的程式碼，裡面有原始圖檔的連結網址：&lt;/p&gt;
&lt;p&gt;&lt;code&gt;http://2.bp.blogspot.com/_mDXx3vcmH6Q/SZ0t_2_TmJI/AAAAAAAACGc/AH8SDDj-le4&lt;b style="color: rgb(255, 0, 0);"&gt;/s1600-h&lt;/b&gt;/BloggerUpload.png&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;以及縮圖後的圖片網址：&lt;/p&gt;
&lt;p&gt;&lt;code&gt;http://2.bp.blogspot.com/_mDXx3vcmH6Q/SZ0t_2_TmJI/AAAAAAAACGc/AH8SDDj-le4&lt;b style="color: rgb(255, 0, 0);"&gt;/s400&lt;/b&gt;/BloggerUpload.png&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;看出差異了嗎？其實網址幾乎一模一樣，只差在「檔名」的前面，多了一個標示解析度的「路徑」，由於上面範例上傳的是用「大」圖片、於是解析度會被限制在 400 pixels，因此路徑是 /s400！所以假設是要貼大圖、不需連結和啥 CSS，上面那一大段只要替換成：&lt;/p&gt;
&lt;p&gt;&lt;code&gt;&amp;lt;img src="http://2.bp.blogspot.com/_mDXx3vcmH6Q/SZ0t_2_TmJI/AAAAAAAACGc/AH8SDDj-le4&lt;b style="color: rgb(255, 0, 0);"&gt;/s800&lt;/b&gt;/BloggerUpload.png" border="0"/&amp;gt;&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;就拿掉不必要的 CSS 和註解、指定顯示的大小，大圖就出得來啦（如果不指定顯示大小，也就是沒有那個路徑，感覺應該就是原始圖，但有時候外連會怪怪的顯示出不來）！其實那個路徑就是 Picasa 相簿處理縮圖的關鍵，假設不打算自己縮圖，又想用各種不同尺寸的圖片大小，只要手動調整那個路徑名稱，改成像是 /s144, /s288, /s400, /s800, 甚至更大的 /s1024, /s1440, /s1600，或直接拿掉路徑用原始圖的解析度大小，就可以任意決定 Blogger 文章裡面的圖片大小（當然那個「值」並不是任意值，但至少上面提到過的解析度都應該有，如果大於原圖的解析度，就相當是顯示原始圖啦）！不過請注意，原始圖檔的連結網址有個 /s1600-h，我懷疑 -h 是阻止嵌入文章外連的語法，詭異的是直接開啟網址卻能夠使用，可能也是類似 redirect 的作法吧！要嵌入文章使用的圖片記得避開 -h 就行了。&lt;/p&gt;
&lt;p&gt;另外，當然也可以直接跑到 Picasa 裡找該圖片的網址，再把該網址嵌入文章內也有一樣的效果（當然這樣比較累），同樣的，Picasa 也能用上面提到的「以路徑決定縮圖解析度」的規則，雖然圖片網址和在 Blogger 顯示出來的伺服器好像不大一樣（網址變到 ggpht.com），但指的應該是同一張圖片，例如上面提到的大圖網址，在 Picasa 裡面就變成：&lt;/p&gt;
&lt;p&gt;&lt;code&gt;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh7NWKy6RYo98EW38YSaob_JFIWxSvMNmqh82kPc4GJmATPtqx-DQa_5mPBjwbXvJgSQEGVxHvtyDMPKb-dyaojAYsZE0IvjTp02hfSZBhjZ3jJ966XtzbVLMf7UKMTGmCpbe6s-upQWtd1/s800/BloggerUpload.png&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;知道這個規則後，相信結合 Blogger 和 Picasa 來處理 Blog 文章內的插圖，就能更得心應手吧！（本文上面貼的圖，就是手動修改原始碼做的，所以圖片寬度能夠超過 640 pixels～以上範例也都是用那張圖上傳後的網址和程式碼貼過來的～）&lt;/p&gt;
&lt;/span&gt;</content><link href="https://abintech.twidv.com/feeds/4447544756482164416/comments/default" rel="replies" title="張貼留言" type="application/atom+xml"/><link href="https://abintech.twidv.com/2009/02/blogger-picasa.html#comment-form" rel="replies" title="14 個意見" type="text/html"/><link href="https://www.blogger.com/feeds/8596053384636689442/posts/default/4447544756482164416" rel="edit" type="application/atom+xml"/><link href="https://www.blogger.com/feeds/8596053384636689442/posts/default/4447544756482164416" rel="self" type="application/atom+xml"/><link href="https://abintech.twidv.com/2009/02/blogger-picasa.html" rel="alternate" title="Blogger 和 Picasa 的圖片上傳和外連限制" type="text/html"/><author><name>Abin</name><uri>http://www.blogger.com/profile/11723161715531068787</uri><email>noreply@blogger.com</email><gd:image height="32" rel="http://schemas.google.com/g/2005#thumbnail" src="//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjeWuiw4mDiqf2k7uj4szC6I3hS70kEW-tm_gpLFxHpOwDP3VyZBV-1oG6OoQnI3ur10nD1kRIZgRcmN_lAoIeHbdUsFg89XUxEscnje6FaL8gWM3_jswkM1dTjJ9Y54Q/s220/Portrait-Blog-S.gif" width="32"/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" height="72" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh7NWKy6RYo98EW38YSaob_JFIWxSvMNmqh82kPc4GJmATPtqx-DQa_5mPBjwbXvJgSQEGVxHvtyDMPKb-dyaojAYsZE0IvjTp02hfSZBhjZ3jJ966XtzbVLMf7UKMTGmCpbe6s-upQWtd1/s72-c/BloggerUpload.png" width="72"/><thr:total>14</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8596053384636689442.post-966019668232164555</id><published>2008-11-21T22:31:00.004+08:00</published><updated>2009-07-02T17:09:56.602+08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Blogger"/><category scheme="http://www.blogger.com/atom/ns#" term="Feed"/><title type="text">Feed 訂閱網址轉換</title><content type="html">&lt;p&gt;根據我另一個 Blog 的&lt;a href="http://abinlee.blogspot.com/2008/11/feedburner-to-feedproxygooglecom.html" target="_blank"&gt;這篇文章&lt;/a&gt;，原先有訂閱我 FeedBurner 網址的朋友，可以更改訂閱的網址，從 http://feeds.feedburner.com/abinlee-tech，改成了 &lt;a title="http://feedproxy.google.com/abinlee-tech" target="_blank" href="http://feedproxy.google.com/abinlee-tech" id="as_c"&gt;http://feedproxy.google.com/abinlee-tech&lt;/a&gt; （當然，如果你訂閱的還是 &lt;a target="_blank" href="/feeds/posts/default" id="xz_c"&gt;http://abintech.twidv.com/feeds/posts/default&lt;/a&gt; 那就沒差啦），有空沒事的話就改一下吧！（基本上懶得改也沒關係啦，會自動轉址～）&lt;/p&gt;
&lt;p&gt;之前&lt;a title="這篇文章" target="_blank" href="/2007/01/html-head-content.html" id="xe4:"&gt;這篇文章&lt;/a&gt;提到，Blogger 「預設」的 Feed 網址其實是塞在預設的「檔頭」(head-content) 裡面，自從 FeedBurner 和 Blogger 整合以後，只要到 Blogger 設定（可以參考&lt;a title="官方文件" target="_blank" href="http://www.google.com/support/feedburner/bin/answer.py?answer=78465&amp;amp;ctx=sibling" id="a436"&gt;官方文件&lt;/a&gt;），即使看原始碼裡面「好像」還是原來的官方 Feed （就是像 http://xxx.blogspot.com/feeds/posts/default 這樣），但當使用者透過 Firefox 或其他工具訂閱 Blog 時，也會「自動」轉址到 FeedBurner 的頁面，所以就不需要多費工夫在檔頭後面手動再加 FeedBurner 的訂閱 Link 了，也因此，新訂閱我 Blog 的朋友，透過你的瀏覽器或網路服務直接訂閱，自然就會用到最新的 FeedBurner 網址（feedproxy.google.com），一整個無痛就是啦～&lt;/p&gt;</content><link href="https://abintech.twidv.com/feeds/966019668232164555/comments/default" rel="replies" title="張貼留言" type="application/atom+xml"/><link href="https://abintech.twidv.com/2008/11/feed.html#comment-form" rel="replies" title="4 個意見" type="text/html"/><link href="https://www.blogger.com/feeds/8596053384636689442/posts/default/966019668232164555" rel="edit" type="application/atom+xml"/><link href="https://www.blogger.com/feeds/8596053384636689442/posts/default/966019668232164555" rel="self" type="application/atom+xml"/><link href="https://abintech.twidv.com/2008/11/feed.html" rel="alternate" title="Feed 訂閱網址轉換" type="text/html"/><author><name>Abin</name><uri>http://www.blogger.com/profile/11723161715531068787</uri><email>noreply@blogger.com</email><gd:image height="32" rel="http://schemas.google.com/g/2005#thumbnail" src="//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjeWuiw4mDiqf2k7uj4szC6I3hS70kEW-tm_gpLFxHpOwDP3VyZBV-1oG6OoQnI3ur10nD1kRIZgRcmN_lAoIeHbdUsFg89XUxEscnje6FaL8gWM3_jswkM1dTjJ9Y54Q/s220/Portrait-Blog-S.gif" width="32"/></author><thr:total>4</thr:total></entry></feed>