2010年2月15日 星期一

使用 Clonezilla Live 再生龍免費軟體備份 Windows 系統


圖片來源:http://clonezilla.nchc.org.tw/


以前常常重灌完電腦後,使用 Ghost 軟體將自己的系統槽進行備份,這個好處是電腦突然中毒的話,短時間又要做事,就可以拿備份資料來還原系統了!然而,現在比較常見的情況,反而是幫家人弄完電腦後,擔心哪天電腦出事,不在身邊時,至少還可以想辦法讓家人去執行還原系統的指令囉


我之前是用 Ghost 2003 的版本,完全的視窗化,非常方便。如今,來使用免費軟體 Clonezilla 再生龍 !使用過程雖然比較麻煩一點,但功能相對上強大許多,最重要的是免費囉!整體上我覺得比較適合系統管理者操作的軟體,一般使用者可能容易被一些不清楚的選項搞迷糊,慶幸的都可以選擇預設的選項。在此紀錄一下使用的備份環境及選項囉


電腦配備與環境



  • Windows XP with SP3

  • AMD Sempron 2600+

  • DDR400 1.5GB

  • Hard Disk x 2


    • 200GB IDE

    • 80GB IDE




首先可以參考 Clonezilla Live對Windows系統的備份與還原 嘉義縣網這篇教學文章,我覺得挺夠用了,雖然 Clonezilla 有更新部分選項,但原理並沒有改變,很推薦先看網站中的自機備份還原,以了解流程,上頭也都會有部分教學訊息。


此次我使用的是 LiveCD 版本(clonezilla-live-1.2.3-27.iso),把它燒成光碟來使用。而我的環境是將 200GB 切成兩槽,其中一個是系統槽(40GB),另一個是資料槽(160GB),而另一顆硬碟就是 80GB 的空間。我打算備份 40GB 那個分割槽。


流程:



  1. 下載並燒錄好 LiveCD 後,把它擺入光碟機並且重開機,須讓光碟開機為優先,不久之後即可進入 CloneZilla Live 的開機選單,我選擇預設進去。

  2. 我挑選中文環境:zh_TW.UTF-8 Chinese (Traditional) 正體中文 - 台灣

  3. 不要修改鍵盤對應

  4. Start_Clonezilla 使用再生龍

  5. device-image 使用印象檔處理整顆硬碟或部份分割區

  6. local_dev 使用本機的分割區(如:硬碟, 隨身碟)

  7. 選擇要掛載用來儲存備份結果的地方

    • 依我的電腦環境會列出三個項目,分別對應是 40GB 、160GB 和 80GB

    • 實際選項:


      • hda1 41.9GB_ntfs(In_HDT722520DLAT80)_VD051DTD00JB9L

      • hda5 158GB_ntfs(In_HDT722520DLAT80)_VD051DTD00JB9L

      • hdb1 82.3GB_ntfs(In_HDS722680VLAT20)_VN621RCHC7LARE



    • 我選擇將結果儲存在 80GB 那邊,所以勾選 hdb1



  8. 選擇要擺在剛剛掛載硬碟的位置,我選擇根目錄:/

  9. 我選擇專家模式

  10. saveparts 儲存本機分割區為印象檔

  11. 儲存為 2010-02-15-20-img (預設的目錄名稱,會將備份的資料擺入此目錄中)

  12. 選擇要備份的分割區

    • 我打算備份系統槽 40GB

    • 實際選項:

      • hda1 41.9GB_ntfs(In_HDT722520DLAT80)_VD051DTD00JB9L

      • hda5 158GB_ntfs(In_HDT722520DLAT80)_VD051DTD00JB9L



    • 選擇 hda1



  13. 預設將使用甚麼程式來備份,因為我是要備份 Windows 環境,所以就選擇把 ntfsclone 擺在最前頭的那個選項

    • -q  優先順序: ntfsclone > partimage > dd



  14. 備份程式的選項,我只使用預設的

    • -c     用戶電腦再開始複製前會再次確認是否要執行

    • -j2    複製介於 MBR 與第一個分割區中的隱藏資料



  15. 詢問是否要壓縮備份的結果,我使用預設的 gzip 壓縮

    • -z1 使用 gzip 壓縮



  16. 詢問是否要分割備份的結果,以 MB 當作單位,若不想分割就輸入大一點的數字,我不想分割,所以輸入了 200000MB 這個數字(我要備份的系統槽才 40GB)

  17. 工作結束的是否要自動執行動作

    • 由於我想要觀看結果的資訊,所以選擇不做其他動作

    • -p true  用戶複製完畢時不做其他動作



  18. 整個過程結束後,以我 40GB 的系統槽來說,真正使用到的資料約 9.23GB ,備份花了約 20 分鐘,每分鐘 500MB 左右的處理速度,結束後有選單會詢問你要做甚麼事,我選擇重開機:reboot

  19. 最後進去 Windows XP 後,我在 80GB 那顆硬碟中看到 2010-02-15-20-img 目錄,該目錄占了 6.19GB 的空間,或許該試試更好的壓縮模式。


使用心得,感覺比Ghost 速度慢?而預設使用 gzip 的結果也比較大?我印象中以前用 Ghost 2003 時,大概花 10 分鐘,而結果我也記得不到 4GB。或許有機會再試試其他的參數來看看吧!至於他的好處是免費,再來則是不用安裝軟體,直接使用 LiveCD 的模式,但對於管理者來說很方便,但倘若哪天要還原時,若操作的是一般的使用者,那他還是必須透過 LiveCD 來執行,相較之下,我覺得 Ghost 2003 之完全視窗介面的操作,還是比較貼切一點。


2010年2月12日 星期五

Facebook API Template - 塗鴉牆共同互動留言教學

之前因為 Template Bundle 的取消,所以我藉機學了 Facebook.streamPublish 的使用,詳情請參考:Facebook API Template Bundle - 發佈到個人塗鴉牆的樣版設定教學。只是,自從 Facebook 大部份的測驗,其邀請函根本不透過使用者的確認就自動發佈出去,讓我開始對測驗有些失望,便也不想再嘗試使用了。


最近有網友留言請教關於留言的問題,使用 Facebook.streamPublish 發佈到使用者的塗鴉牆時,那些制定好的 template 訊息,該如何讓所有的使用者都可以一起留言、按讚呢?而不在只是個人留言板。他稱呼這為留言派對。


這個我有印象在文件上有提到一些關鍵字,但直到今天才正式來測試使用,也算是在複習一下,或許過不久我又得投入這方面的研究吧。只是我一直搞不懂,有些 facebook develop wiki 頁面我很難從官方 wiki 連過去找到,好比如我想要像 Java API 那樣,可以很快地去找到想要用的函數及其說明。


首先可以逛逛的網頁:



這次實做只使用 Facebook Developers | FB.Connect.streamPublishAttachment (Streams) - Facebook Developer Wiki 資訊,其中對於 template 訊息部份,其實只要去制定 comments_xid 就可以了,但這種留言派對我覺得也有缺點,那就是大家的留言都串在上面,隱私會有問題,但在一些公告訊息方面,的確可以考慮使用啦。


comments_xid: An application-specific xid associated with the stream post. The xid allows you to get comments made to this post using the Comments API. It also allows you to associate comments made to this post with a Comments Box for FBML fb:comments.


程式碼範例:


<script type="text/javascript">
function do_post()
{
        var attachment = {
                'name':'Quiz',
                'href':'http://apps.facebook.com/your_apps/',
                'description':'good!',
                'caption':'{*actor*} is very smart!',
                'comments_xid':'1',
                'media':[
                                {
                                        'type':'image',
                                        'src':'http://upload.wikimedia.org/wikipedia/commons/thumb/0/06/Facebook.svg/200px-Facebook.svg.png',
                                        'href':'http://zh.wikipedia.org/wiki/Facebook'
                                }
                ]
        };
        //Facebook.streamPublish( ''  , attachment , null , null , 'Message:' , null , false  );
        FB.Connect.streamPublish( '' , attachment , null , null , 'Message:' , null , false  );
}
</script>
<a href="#" onclick="do_post();return false;">Click</a>


在此例中,指定了 comments_xid 數值,使得大家的討論都會很明確地紀錄在一起。


2010年2月11日 星期四

Facebook Connect 搭配 API 提供帳號管控教學

網路上已經有許多關於 Facebook API 的使用教學,而最近則是越來越多關於 Facebook Connect 的應用,例如替自己的 Blog 加入留言,但留言可以發佈到 Facebook 塗鴉牆上,在這邊試著結合 Facebok API 與 Facebook Connect ,建立一個網站服務,但網站管理者不管理帳號密碼,反而全部都使用 Facebook 的帳密管理機制。


這樣的最大的好處是網站服務的推廣時,主要透過 Facebook 的平台,提供類似 OpenID 或 OAuth 的服務,讓使用者不必再註冊一個新帳號,並且使用 Facebook 的平台推廣自己開發的服務。


先看看 Facebook 上頭使用者的活躍程度:


More than 400 million active users
50% of our active users log on to Facebook in any given day
More than 35 million users update their status each day
More than 60 million status updates posted each day
...


資料來源:Facebook | 統計資料


除此之外,Facebook 也提供許多官方與非官方 Client libraries ,如:


PHP 5
JavaScript
Facebook Connect for iPhone
ActionScript 3.0 Library for Facebook Platform
Microsoft SDK for Facebook Platform
...
資料來源:User:Client Libraries - Facebook Developer Wiki


所以,有機會就試試 Facebook Connect 的效果吧!


設定方式:





  • 可以透過傳統的 Facebook | 開發人員 建立應用程式或是從 Facebook Developers | Facebook Connect 上頭的 Start Building 按鈕進行,使用後者比較簡單,也有完整的程式範例。

  • Facebook | 開發人員 為例

    1. 建立新的應用程式


      • 填寫一些名稱資訊

        Facebook Connect Setup 01



    2. 設定 "聯外通" 並填寫 "聯外通網址"

      • 此例以 http://my.domain.com/path/fb/
        Facebook Connect Setup 02



    3. 設定儲存完則會切回此應用程式整體資訊,例如顯示 API 金鑰、Application Secret 等資訊。

    4. 切換到自己的機器上( http://my.domain.com )

      • 準備 xd_receiver.htm ,將它擺在網站的根目錄,以此例就是可以用網頁連到 http://my.domain.com/xd_receiver.htm 這個位置。如果沒有權限,那擺在 http://my.domain.com/path/fb/xd_receiver.htm 也可以試試,我試的結果兩者都可以。

      • xd_receiver.htm 檔案內容

        • <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><title>xd</title></head><body><script src="http://static.ak.facebook.com/js/api_lib/v0.4/XdCommReceiver.js" type="text/javascript"></script></body></html>






  • Facebook Developers | Facebook Connect 為例

    1. 點選 Start Building 建立基本資料
      Facebook Connect Setup 01

    2. 擺放 xd_receiver.htm 在網站的根目錄中,如果有權限可以擺放該檔,建議可以先測試後在進行,不然就點選稍候再上傳,並且把檔案擺在網站服務目錄下
      Facebook Connect Setup 02

    3. 接著網站上也會有一些現成的程式碼可以用,比傳統建立的方式輕鬆許多,資料也豐富很多。
      Facebook Connect Setup 03


  • 其他留意項目

    • 關於 Server 位置,雖然設定在使用非 80 port 時可以正常設定完成,如 http://my.domain.com:8080/path/fb/ ,但在使用 Facebook 提供的認證過程中,並不會幫你導回正確的 port ;使用 http://my.domain.com/~user/path/fb/ 的設定方式也會有問題,要留意一下。




辦完向 Facebook 申請的設定部份後,緊接著則是對 Server 撰寫合適的程式碼,在此以簡單的程式碼舉例:



  • 假設網站位置在 http://my.domain.com/path/fb/ ,在 Server 位置恰好是 /data/path/fb/ 目錄,那該目錄會有兩個檔案,分別是 config.php 跟 index.php ,如果無法設定網站根目錄 xd_receiver.htm ,那可以把它擺在 /data/path/fb/ 目錄中,也就是在 /data/path/fb 目錄中共有三個檔案。

  • config.php

    • <?php
      session_start();

      $appapikey = 'API_KEY';
      $appsecret = 'Application Secret';

      // check login
      if( isset( $_REQUEST['check_login'] ) )
      {
              require_once 'facebook.php';

              $facebook = new Facebook($appapikey, $appsecret);
              $user_id = $facebook->get_loggedin_user();

              if( !empty( $user_id ) && !isset( $_SESSION['id'] ) )
              {   
                      $_SESSION['type'] = 'facebook' ;
                      $_SESSION['id'] = $user_id;

                      if( isset( $_REQUEST['continue'] ) )
                      {   
                              header( 'LOCATION: '.$_REQUEST['continue'] );
                              exit;
                      }   
              }   
      }

      $curr_url = 'http://'.$_SERVER['HTTP_HOST'].$_SERVER['REQUEST_URI'];
      ?>



  • index.php

    • <?php
      require_once( 'config.php' );
      ?>
      <html>
              <head>
              </head>
              <body>
                      <script src="http://static.ak.connect.facebook.com/js/api_lib/v0.4/FeatureLoader.js.php/zh_TW" type="text/javascript"></script><script type="text/javascript">FB.init("<?php echo $appapikey;?>");</script>
       <?php
      if( !isset( $_SESSION['id'] ) )
      {
              $login_url = strpos( $curr_url , '?' ) > -1 ? $curr_url.'&check_login=on' : $curr_url.'?check_login=on';

      ?>
                      <fb:login-button v="2" size="small" onlogin="window.location='<?php echo $login_url; ?>';">用 Facebook 登入</fb:login-button>
      <?php
      }
      else
      {
      ?>
                      <fb:comments numposts="4" title="My Blog Comments" css="http://www.yourwebsite.com/css/comments.css?1234" simple="1"></fb:comments>
      <?php
      }
      ?>
               </body>
      </html>




網站 Demo 畫面:



  1. 初次訪問 http://my.domain.com/path/fb/ ,此頁只會有單純的一個登入按鈕
    Facebook Connect Demo 01

  2. 點選 Facebook 登入按鈕,會跳出相關的資訊給使用者,告知使用者一些資訊
    Facebook Connect Demo 02

  3. 若登入後,則將畫面轉成可以留言到個人塗鴉牆上的介面
    Facebook Connect Demo 03


目前的缺點:


尚未找到妥善的登出方式。


2010年2月10日 星期三

Windows XP 之 CPU 使用率 100% @ VirtualBox 3.1.2

前天重灌完電腦,我的 Host OS 是 Windows 7 x64 的環境,使用 VirtualBox-3.1.2-56127-Win 版本,而 Guest OS 是安裝 Windows XP with SP3 ,但無緣無故沒做甚麼事,那個 Windows XP 卻一直不斷地停在 100% ,害我甚麼事都不能做。


後來 Google 一下,幸運地發現一些文章:



解法:


將虛擬機器關機後,點選那個 Guest OS 並按下 [設定] ->[系統]->勾選 [延伸功能:啟用 IO APIC] ,目前打開選項後就沒有 100% 的現象,但我覺得那只是暫時改變一些環境條件使得該現象消失,之後我把這個選項關掉後,卻又沒有出現 CPU 100% 的問題,先記一下這個狀況,這種作法可能仍不是正解


2010年2月7日 星期日

三分之一的省思

一天有 24 小時,花 8 小時休息,花 8 小時工作,那還有 8 小時給自己。


工作一陣子,原先有點在想,為什麼一天要花八小時工作,後來發現只要工作 8 小時,就可以養活自己跟家人,已經是不錯的事了。倘若還沒有工作的人,也不用沮喪,因為多了 8 小時可以利用。


工作後,並不一定能做自己想做的事,有的人只做重複性的事務,有些人能做有挑戰的事,但這些也都一樣重要,因為社會就是這樣搭建起來,但滿足社會體系後,還是得看看自己,如果我花了 8 小時養身體,再花 8 小時養活自己,那剩下的 8 小時是不是很重要呢?其實那最後的 8 小時,還需扣掉洗澡洗衣吃飯準備上班等等的,其實並不多。


大概已有一陣子準時上下班,理由簡單,因為若多花了幾分鐘在公司,那我就對不起 1/3 的自己,所以盡量把工作安排恰當,目前我大概早 5 ~ 15 分鐘到辦公室,但其實有點像用來吃早餐,然後晚 5 ~ 15 分鐘下班。除此之外,最近有感主管是非常重要的角色,參加公司辦的新人訓練,才真正了解主管的意義,他們就是要幫你扛更多的責任!你可以安心地做工作上的事務,不需要花心思去爭取計畫費、跑業務,因為這個責任是主管在扛的,除此之外,其實工作上的進度不單單只是自己的責任,也是主管要拿捏的,一個人工作進度不佳,往往都會覺得是那個人的問題,那轉個方向,其實也是主管沒有評估好風險或能力的關係,這時候可以透過考績顯示出來,但我不喜歡用脾氣來顯示出來。考績好與壞,主要看待的是公司體系的運作,但如果一個人考績佳但是完全是犧牲掉個人的 1/3 天,那這樣不見得是成功的,只是這一切又會牽扯到價值觀的事…


看來工作與生活,還是需要很多的智慧來處理的。


莊子〈秋水〉

莊子與惠子遊於濠梁之上。
莊子曰:「鯈魚出游,從容是魚樂也。」
惠子曰:「子非魚,安知魚之樂?」
莊子曰:「子非我,安知我不知魚之樂?」
惠子曰:「我非子,固不知子矣。子固非魚也,子之不知魚之樂,全矣。」
莊子曰:「請循其本。子曰:『女安知魚樂』云者,既已知吾知之而問我,我知之濠上也。」