Pages

Subscribe:

Ads 468x60px

2015年3月31日 星期二

古典玫瑰園 Rose House 集團官網 4/24 新竹遠百浪漫開幕

古典玫瑰園 Rose House 集團官網 (古典玫瑰园)

分期付款變信貸! 大三生控補習班詐騙

資料來源

2015年3月26日 星期四

玫瑰美食: 《鬆餅推薦》古典玫瑰園超級玫瑰鬆餅

玫瑰美食: 《鬆餅推薦》古典玫瑰園超級玫瑰鬆餅: 古典玫瑰園「超級玫瑰鬆餅」內含2球冰淇淋,味道十分美味 對於鬆餅愛好者來說 這是古典玫瑰園必點商品喔

2015年3月25日 星期三

【短網址】6個你不可不知的短網址服務

資料來源

免費資源網路社群在上週啟用全新的短網址 Fre.la,讓讀者更方便能夠轉貼或分享文章,也自動在每篇文章的後方顯示縮網址,如果你看到這個鏈結,可以放心的點下去,因為它僅會轉址到免費資源網路社群裡,而不會有其他的外部鏈結。
在開始使用短網址後,收到一些讀者的詢問:我要怎麼樣才能把網址縮短?其實之前已經介紹過不少縮網址服務,使用上都很簡單,只要把你的原始網址複製然後貼到適當的欄位,就會產生一個全新的短網址,而點擊該短網址後就會自動跳轉到你的原始網址。
使用短網址最大的優點就是可以把冗長的網址變短,有些網址後面可能帶有一些參數或是中文等等,網址複製貼上就會變成一長串,不但很不美觀,在 BBS 討論區或使用手機傳送時可能會因為過長而被截斷,當然網址若被截成兩段就無法正確進入你要的網頁了,所以才需要使用縮網址服務來變短。
另外一個優點是有些短網址服務本身內建統計功能,也就是說當你把一個網址縮短分享出去後,可以追蹤到究竟有多少人點擊了該網址,從那些平台或是國家進入等等,對於事後需要報表的使用者來說,選擇一個適當的短網址服務就變得非常重要。另外還有一些短網址服務是有包含「安全掃描」功能,能在縮短網址時自動掃描該網頁是否安全,以產生讓使用者信賴的短網址。
免費資源網路社群特別精選六個「短網址」服務,除了有簡單的特色介紹,也提供範例網址來讓大家做測試(每個範例鏈結都會回到本頁面),這些服務都已經營運相當長的時間,有些甚至是由大企業公司所提供的免費服務,相信能提供你最安全、快速且永久可靠的短網址。

1. Goo.gl

6個你不可不知的短網址服務
網站鏈結:http://goo.gl/
範例鏈結:http://goo.gl/Ubse3
擴充功能:Chrome | Firefox | Bookmarklet
這是目前很常看到的短網址,也是由 Google 所營運的 URL Shortener,無須註冊即可使用,或者可以直接登入你的 Google 帳戶,縮短後的網址就會出現在你的紀錄裡頭,方便後續的管理和數據查詢。產生後的網址只能隱藏,無法刪除,也不能再次編輯。
其他說明參見 Google 正式推出 Goo.gl 縮網址服務一文。
Goo.gl 提供分析報表供使用者參考,登入後點擊 Short URL 後方的 Details 即可查詢,報表會顯示總點擊次數、QR Code、來源、國家、使用的瀏覽器、平台。
6個你不可不知的短網址服務

2. Bitly

6個你不可不知的短網址服務
網站鏈結:https://bitly.com/
範例鏈結:http://bit.ly/130z16V
擴充功能:Chrome | Bookmarklet
Bit.ly 是我個人相當喜愛的一款短網址服務,它的網站設計很深得我心,速度很快、功能完整,第三方工具也很齊全,亦有提供 Chrome 瀏覽器擴充功能,書籤列快速縮網址工具,以及從手機、平板電腦以 Email 方式建立短網址等等,Bitly 曾有一度成為Twitter 預設的短網址服務。
開啟 Bitly 網站後,可選擇是否要註冊一個免費帳戶,或是直接將網址貼上右上角,點擊 Shorten 即可建立短網址。
Bitly 也有提供報表,使用方法更簡單,直接在短網址後面加上 + 號即可查看該網址的使用情形,能顯示包括總點擊次數、QR Code、建立時間、每小時的點擊次數、分享到那些地方,以及來源國家。
2013 06 03 2101

3. X.co

6個你不可不知的短網址服務
網站鏈結:http://x.co/
範例鏈結:http://x.co/1AFAM
擴充功能:Bookmarklet
X.co 是知名公司 GoDaddy 所提供的短網址服務,詳細的說明可以在 X.CO 超級短!GoDaddy推出的免費縮短網址服務!一文找到,會將這個服務列入本文的原因在於 X.co 所產生的鏈結非常短,它原本的網域名稱也是少見的單字元,對於追求「極短網址」的朋友來說確實能滿足你的需求。
X.co 有提供 QR Code,以及統計報表,不過必須要有 GoDaddy 的帳戶登入才能使用,雖然可以註冊免費帳戶,但過程有些繁瑣(要填寫的資料很多),如果不是很需要看統計數據的話,那就不用註冊了。另外,X.co 提供註冊的使用者「自訂網址」的功能,也就是能設定 X.co 後面的字串。
6個你不可不知的短網址服務

4. Y.ahoo.it

6個你不可不知的短網址服務
網站鏈結:http://y.ahoo.it/
範例鏈結:http://y.ahoo.it/aeW0r
我無意間發現的 Yahoo! 短網址服務,不過應該沒什麼在宣傳推廣,以致於能見度不高,產生的短網址為 y.ahoo.it ,算是相當有個性,但本身沒有統計數據功能,僅能選擇在轉址前是否讓使用者預覽鏈結。

5. McAf.ee

2013 06 03 2119
網站鏈結:http://mcaf.ee/
範例鏈結:http://mcaf.ee/2pysn
McAfee 常被戲稱為「麥咖啡」,大家應該都有聽過吧?沒錯,這是知名的防毒軟體大廠所推出的短網址服務,特別以 Mcaf.ee 作為它的網址,讓使用者在分享網址時也順便幫它曝光品牌名稱,真是相當厲害的行銷手法。
McAf.ee 主打「安全短網址」,也就是它具有掃描鏈結是否安全的功能,這招又讓它提供的短網址與公司本身的服務項目巧妙結合在一起了,我覺得真是太強了,所以不得不把它放進來清單裡。之前曾寫過一篇介紹它的文章 McAf.ee 來自 McAfee, 更安全的縮網址服務

6. PPT.cc

6個你不可不知的短網址服務
網站鏈結:http://ppt.cc/
範例鏈結:http://ppt.cc/zySA
擴充功能:Bookmarklet (PPT短網址工具)
PPT.cc 算是台灣很老牌的短網址服務,也是繼 0rz.tw 不再被鄉民青睞後所被廣為使用的短網址,很常在 Ptt 上面看到,對於喜歡中文介面的朋友來說,它確實是一個相當不錯的選擇。
產生後的短網址能設定是否以密碼保護,以及能設定網址說明,在跳轉到目標頁面前先讓使用者預覽該網址,另外還有「防堵機器人」的功能,使用者必須要輸入驗證碼才能跳到目標頁面,算是比較特別的功能。
其他 PPT.cc 相關文章:

後記

以上介紹六款精選短網址服務,相信對要縮網址的朋友來說多了更多可以參考的選擇。另外,短網址產生後一般都是不能再次編輯或修改的,也沒有刪除功能,若你貼錯網址,只要把正確的網址重新貼上,就能再產生一個全新的短網址了,而網址本身也沒有使用期限,你可以一直用、一直用,用到那天該服務關閉為止。

【文創園區】古典玫瑰園在宜蘭有新據點即將開幕

「宜蘭美術館食堂」前身為「台灣銀行-宜蘭分行舊行舍附設餐廳」。「台灣銀行-宜蘭分行」日治時期稱為「台灣銀行宜蘭出張所」,建立於1899(明治32)年10月2日,1946年5月改為宜蘭分行,是早期東台灣之代表性金融機構。從日治至戰後,在宜蘭之經濟發展史上佔了重要之角色,現經宜蘭縣政府整建設立美術館。該館文創及餐飲空間由古典玫瑰園文創取得OT經營權,並繼續沿用「宜蘭美術館食堂」名稱經營,以日本京都老街老舖氛圍,呈現「宜蘭美術館食堂」文創餐飲新風貌。透過歷史建物的活化再利用,再現舊城風華,「宜蘭美術館食堂」除傳承歷史記憶,更以嶄新的文創風貌與世人見面。
古典玫瑰園為了經營在地化,落實培訓當地的經營團隊,歡迎宜蘭優秀子弟加入古典玫瑰園的文創餐飲團隊。

2015年3月24日 星期二

亂七八糟筆記本: VMware Converter 一點心得(三)

亂七八糟筆記本: VMware Converter 一點心得(三): 前兩篇在無名小站:是亂講一些安裝與屁話!( 已經整個移到 Google Blogger 囉!)  (一)  http://www.wretch.cc/blog/weine814/11816195   屁話!   (二) http://www.wretch.cc/blog/we...

備份與還原


此篇專文偏向於單機磁碟備份.先不討論檔案模式備份


前時代Ghost  DOS 用於一般家用機 磁碟映像備份已成熟

對 經驗豐富MIS  備份考慮問題更多 因此新一代單機磁碟備份軟體重視為
1. 可否 熱備份  2. 增量備份  3.異機備份與還原  4.可否再轉為虛擬化VM  5.價格功能比 6.穩定性與 Raid Card支持程度

磁碟備份有分三種模式
  1. Sector to Sector 扇區對扇區對拷
    軟體:  Winimage ,Diskgenuius, Clonezilla ,Linux DD指令
    硬體:一般市場上拷貝機.

    實體Target Disk一定要大於或等於Sources disk
    Target Disk會變成跟Sources Disk一樣容量.多的容量會變成未分割區
     
  2. 分區調整模式對拷: 保留原分區格式 但可調整大小..
    軟體 Clonezilla  , Ghost, Trueimage ,Todo Backup
    這邊比較推Todo Backup
     
  3. 異機備份 =Restore Anywhere=Universal Restore 

    對不同硬體規格主機做OS與應用軟體還原

    可將影像檔案還原到其他不同系統晶片的主機
    異機備份備份時還是為磁碟映像檔

    可行軟體.BESR  2010 ,Acronis Backup & 
    Recovery 10
    這邊比較推Besr

    術語

    熱備份
    不關機影響原有服務狀況下,對運作中OS做備份
    Besr ,Trueimage, Todo Backup

    冷備份
    須脫離原有運作OS,從啟進入專用備份系統與軟體.
    Clonezilla ,Dos ghost,Besr,Trueimage 下面Win PE跟Linux 啟動版CD

    本站相關虛擬化P2V補充
     
備份軟體介紹


  1. Symantec Backup Exec System Recovery  (簡稱BESR) 2010    
    目前最新版為 BESR 2010 R2

    官方:
    http://www.symantec.com/zh/tw/busine...nt&pvid=1601_1
    http://www.savetime.com.tw/new_veritas/besr.asp

    BESR 不是以DISK ,分區還原技術 而是file level.因此某些設定. 可以保留原有檔案.並裝好OS
    但是要此運作時 要將目標硬內原有 OS  目錄及開機檔清除.


    支援 OS:
    Desktop 版Windows 2000 SP4, Windows XP, Windows Vista, Windows 7,  
    價格us 8x ~nt 5000

    Server版 
    Windows Server 2000/2003/2008 32Bit 與64Bit 、包含 Essential Server 2008、SQL 2008、Exchange 2010
    價格US 900
         
    Linux Edition
    SUSE  10, SP1 and SP2 (x86) 32-bit (x86_64 ) 64-bit
    Red Hat Enterprise Linux 5.0, 5.1, 5.2, 5.3 (x86) 32-bit  (x86_64 ) 64-bit
    其他版本Linux 待測
    US 600 

    功能: 1.檔案格式的對拷分區或重建 輸出映像檔可存網路  (samba  or ftp)  或內外接硬碟 還原一樣 可取於網路或內外接硬碟
            2.文件檔案與系統備份還原 可一起或分開
            3.可P2V 實轉虛擬化 轉換到 VMware ESX Server,XenServer,Hyper V by Lan
               轉換Disk 可為VMware vmdk or Hpyer-V  vhd格式
               也可V2P
              
               P2V 虛擬化 到Vmware or Hyper V 系統上    
               http://www.mobile01.com/topicdetail....f=300&t=539869
                新版Besr 2010 可直接用網路備份到VMware ESX Server
         
            4.異機備份方便優秀!
            5.支持很多硬體Raid 與網卡 

           
    Besr  下載 試用版 會有二個檔案

    BESR Workstation for windows  應用與備份軟體 下載 全功能版 60天試用
    BESR_2010_9.0.0.35656_Multilingual_Product.zip

    BESR_2010_9.0.0.35656_Multilingual_Recovery_Disk_Only.zip ISO 檔
    還原ISO 備份功能 需要輸入正式序號 還原功能則無限制
    此ISO 為Win Vista 32 PE CD 另外可加入Windows 7  ,Win 2003 32 Bit  or Vista 32 Bit  Inf Driver 驅動


    BESR 用v2i Image 檔案格式.
    除一般磁碟或檔案備份功能外 鏡像有支持增量備份


    優點:異機備份(Restore Anywhere) 可還原到不同硬體上

    筆者做出未啟動Win 7 盒裝正版+常用的Freeware  映像檔
    還原到 五台不同硬體  每台再經過不同合法序號授權後啟動 功能完全正常
    此可應用於企業或組織中軟體常更新狀況 應用狀況做好一套超萬用 OS 

    弱點:

    異機備份功能 難免遇到不是很單純環境(乾淨)OS  也許會有奇怪問題
    可能狀況:
    http://ycl-share.blogspot.com/2009/12/besr.html
    http://www.wretch.cc/blog/jerry0822/13832790

    若原Source OS 已半毀或藍底白字 ,也無法用Besr處理,

     
  2. Todo Backup 免費! 一般個人單機備份大推!
    http://www.todo-backup.com/products/


    熱備份 (不過有一個限制 需要設定TEMP 區 ,需要另外一顆硬碟)   備份整個硬碟或單一硬碟分割區
    支援Clone Disk全硬碟拷貝功能 (將硬碟A的資料完整拷貝到硬碟B)(sector to sector and file system clone)

    提供可開機光碟的製作功能,可用光碟開機、執行系統還原 可開機CD分為Linux and Win PE
    可將備份檔「Mount」成虛擬硬碟,快速瀏覽、取用備份檔中的資料。
    支持硬體Raid Card     by  Win PE CD  由官方軟體製作(要有自備WIN CD)
    支援備份檔自動分割功能,可自行設定分割檔最大容量
    支援自訂備份檔密碼功能,如備份時設定密碼,須輸入正確密碼才可還原
    支援大部分常見的IDE, SATA, SCSI, USB外接硬碟與Firewire等介面的硬碟與光碟機
    支援常見的FAT12, FAT16, FAT32與NTFS等格式的檔案系統
    支援 Windows 2000 SP4, Windows XP, Windows Vista, Windows 7, Windows Server 2000/2003/2008

    缺:
    尚未支援差異備份

    用於備份系統DISK 請注意,要設定TEMP 區位置

    http://blog.xuite.net/jin117/blog/28287983

     
  3. Clonezilla 免費!
    http://clonezilla.nchc.org.tw/
    台灣國網中心opensources專案
    優:Linux (ext2, ext3, ext4, reiserfs, reiser4, xfs, jfs), Mac OS (HFS+), 微軟Windows (fat, ntfs)
        可由網路備份與還原

    缺點: 冷備份
            目的分割區的大小必須等於或者大於原來的分割區大小
            尚未支援差異備份
     
  4. Ghost
    Dos版,
    優:啟動快,指令清楚,Know how 普遍
    缺:只能能冷備份 ,未支援差異備份  停產 無法買到正版授權是一大問題

    Windows版
    優:冷熱備份都有 ,價格低.映像檔格式可以做異機備份Restore anywhere.差異備份,定期備份
    缺:啟動慢

     
  5. Trueimage
    http://www.acronis.com/
    Home 單機版功能跟Ghost 差不多 但已有差異備份
    Trueimage 在對運作系統備份會自動進入冷備份狀況.可不需再一顆硬碟處理Temp檔.

    Acronis Backup & Recovery 10  全系列  試用版 15天 有功能 Boot CD限制 
    功能:一般備份功能 ,差異備份
           P2V 虛擬化 到Vmware or Hyper V 系統上
           異機備份 

    最便宜  有異機備份功能  Advanced Workstation  單機版 每套US 99      Universal Restore 要選購 +US 10
    試用版限制這樣多   
    所以筆者懶的試了

使用Backup Exec System Recovery(或Ghost )+VMware,將運作中的系統虛擬化

資料來源

前言:Backup Exec System Recovery/Ghost備份是多數人熟悉的應用(前者簡稱BESR),但備份後只是一個系統的影像檔(.v2i檔或.gho檔)。當日子一久,人們很難記得最初備份了哪些內容,不只是目錄或檔案,人們更想回憶備份時的系統組態。現在Ghost應用工具已不再只是備份與還原,新版提供「轉換為虛擬磁碟」工具可以將備份影像檔轉成VMware所使用的虛擬磁碟。

兼顧備份與組態分析並非辦不到,像VMware這類虛擬機器應用程式可以將運作中的系統(稱為Host OS)完整地遷移到虛擬主機(稱為Guest OS)中,當然包括系統組態與目錄。這麼一來,人們可以在不停機的狀態下,得知備份前的系統組態,或者搜尋舊檔案。

簡單地說,這是將運作中的系統虛擬化,正式名稱是P2V(P表示Physical,V則表示Virtual),由實體系統遷移到虛擬機器(Virtual Machine,簡稱VM)。將備份與還原應用與VMware結合,可說是BESR/Ghost新版重大改進,因為從備份到「還原」至虛擬機器,整個過程完全不需停機。

這樣的過程稱為P2V,顧名思義,也就是系統從實體(Physical)遷移到虛擬(Virtual)。對於不熟悉VMware這類應用程式與虛擬機器原理的人們來說,P2V過程就如同名稱般不可思議。的確,在BESR/Ghost沒有結合VMware之前,理解P2V的過程有些難度。雖然VMware本身便提供完整的P2V應用程式,但開始的過程並不如BESR/Ghost般直覺。

或許你常用BESR/Ghost備份工具,但不了解的是,BESR/Ghost備份其實已經完成P2V工作的前半段,也就是將系統轉換成一個影像檔,差別只是還原到真實的硬體,又回到實體系統。P2V後半段既然是虛擬化,VMware正可以模擬一套硬體主機(主要是Intel 440BX晶片組與AMD的網路卡等),接下來將備份影像檔「還原」到VMware所模擬的主機上,類似BESR/Ghost的還原過程,只是真實的主機換成了由軟體所模擬的硬體。人們不必再滿身大汗地搬動另一部主機,並面對不明所以的還原失敗等問題,特別是BESR/Ghost新手。更棒的是,現有的系統不必停機。

先不必急著歡呼,接下來,你可以在Linux系統下「還原」這個Windows系統,或在Windows上還原Linux系統(如果備份的是Linux)…虛擬化的優點當然不僅於備份,這個還原後的系統還可以做到實體主機無法做的事,例如,增加虛擬磁碟以擴大原本容量,或將真實的硬碟掛載到虛擬主機上,或插上多張網路卡等。

圖解:接下來所要展示就是BESR/Ghost+VMware實現簡單的P2V。新手不用擔心,因為BESR/Ghost備份等應用還是不變,只要學習使用VMware即可體驗P2V的優點。範例中使用Symantec Backup Exec System Recovery 7.0版(BESR:企業版的Ghost),運作中的系統是Windows 2003 Server Enterprise R2版(180天試用版),VMware是Workstation 6.0.2.59824試用版

一、簡介BESR備份過程,與Ghost備份相似
1.到Symantec官方網站可以下載Backup Exec System Recovery(BESR) for Windows Server 7.0試用版(或6.5版,更早期版本不支援VMware的虛擬磁碟功能)。至於for Windows Server是因為備份對象是Windows 2003 Server,一般家用的Ghost不支援。
安裝並開啟BESR畫面如圖所示

2.先備份Windows 2003 Server:「首頁」→右下方的「工作」→「執行或管理備份」。熟悉BESR備份的使用者可以直接跳到VMware虛擬化的步驟

3.「定義新項目」,BESR會記錄並監控備份檔案,一般使用者不用特別注意

4.選擇「備份我的電腦」,後續轉換成虛擬磁碟後,VMware才可以利用虛擬磁碟中的作業系統開機

5.選擇要備份的目標,也就是Windows 2003 Server所在的磁碟機,一般是C槽分割區

6.選擇復原點類型,較簡單的步驟是選擇「獨立的復原點」。「復原點集」是在系統更動後再備份時,BESR只會在原來的備份增加已更動的部份,沒更動的部份就不備份(但會參考前一次備份檔),降低系統僅因為輕微更動,使備份重覆佔據的硬碟容量。
首次備份選哪一個都沒有差別,也不影響虛擬磁碟的轉換

7.選擇儲存備份檔目的地,也就是備份檔案要儲存在哪顆硬碟或分割區,跟Ghost相似,建議選擇另一個分割區或磁碟機

8.復原點選項,如果是「獨立的復原點」的備份,直接跳下一步;如果是使用「復原點集」,記得勾選「驗證復原點」這一項(預設沒有勾選),首次備份勾選這一項也沒關係

9.選擇備份檔案的進階設定,如果事後要將備份檔案燒錄成DVD,在這裡要設定檔案分割成4GB以下;如果沒有分割,系統備份檔案可能高達4GB以上,依您作業系統中安裝多少應用程式而定。我曾備份過40GB以上的Windows 2003 Server,未分割時備份後的單一檔案約22GB以上
如果要燒錄的是轉換後的虛擬磁碟檔,可以到VMware設定虛擬機器時,再分割檔案。無論哪一種檔案分割,往後要使用時,只要將所有分割檔都複製到硬碟就可以了。

10.選擇指令檔,這裡用預設值就可以,跳下一步

11.選擇備份時間,簡單地說,就是排程,時間一到BESR會自動開始備份。排程通常是系統低負載時才啟用備份,因為這時候硬碟會大量讀寫,如果同時使用P2P,則P2P可能會降速

12.完成備份精靈,準備開始備份,在這之前都只是設定,硬碟還沒大量動作

13.開始備份的視窗,硬碟開始大量讀寫。「效能」桿可以拉到「慢」,特別是系統較大時,讓備份不出錯;備份時間依系統大小而定,40GB以上的資料,我耗費1.5小時以上,備份後約22GB…
備份後的檔案,副檔名是.v2i,一般家用的Ghost備份檔副檔名則是.gho


二、將.v2i備份檔轉為虛擬磁碟.vmdk(VMware相容的虛擬磁碟檔案格式)
1.備份完成後,再度開啟BESR,接下來選擇「工具」→「轉換為虛擬磁碟」

2.BESR啟動轉換精靈。說明中提到.v2i可以轉換為.vmdk給VMware使用,也可以轉為.vhd給Microsoft的Virtual PC/Server使用。
範例中選擇轉換為.vmdk。
如果轉換為.vhd,還是可以給VMware使用,因為VMware提供工具將.vhd再轉換為.vmdk,但Virtual PC/Server就沒有這種相容性了

3.選擇來源,也就是前面步驟的備份檔

4.選擇虛擬磁碟的格式,如果後續要給VMware使用,選擇「VMware虛擬磁碟」;如果是Virtual PC/Server使用,選擇「Microsoft虛擬磁碟」。這裡我選擇「VMware虛擬磁碟」

5.跳出下列視窗,意思是備份的檔案大於儲存空間,要選擇其他足夠儲存的磁碟或分割區;如果空間確定足夠(BESR不會自動判斷),就下一步

6.完成轉換設定,準備開始;一樣,這裡建議將「效能」桿拉到「慢」。
轉換完成後,儲存的磁碟會多出.vmdk的檔案,大小略大於.v2i檔,這個虛擬磁碟檔案還不能使用。接下來要用VMware掛載後,才完成系統虛擬化



三、將虛擬磁碟導入VMware,轉成為可以操作的虛擬機器
1.安裝並開啟VMware應用程式,我使用的是VMware Workstation 6.0.2.59824(可以到VMware官方網站下載試用版),也可以使用VMware Server。
在工具列上選擇「File」→「New」→「Virtual Machine」,準備新增一個虛擬機器

2.設定組態,我選擇「Custom」的方式,沒什麼特別,一般可以選「Typical」

3.設定虛擬機器的相容性,這是因為範例中使用Workstation 6.0.2以上的版本,可以向下相容舊版的Workstation或Server所產生的虛擬機器;反之,舊版(5.0或5.5以下)無法使用6.0.2以上的虛擬機器。如果BESR是6.5以上的版本,Workstation建議6.0以上的版本,以免不相容

4.選擇虛擬機器的作業系統,要選擇與備份系統相同的作業系統。如果備份的是Windows XP Professional,這裡就選Microsoft Windows中的Windows XP Professional;如果是uBuntu 7.10,就選Linux中的uBuntu。小心不要將原本Windows 2003 Server選擇成Windows XP Professional

5.設定虛擬機器檔案名稱與儲存位置。
[注意,容易出錯]這裡有個小技巧,選擇儲存虛擬機器檔案的磁碟空間要大於備份系統原始C槽略大,而不只是比BESR備份後的檔案大。例如原本C槽分割區有80GB(但Windows 2003 Server可能只有使用22GB),這個儲存位置的空間就要80GB以上,而不是22GB,也不是備份後的12GB。
即使從80GB備份後的VMware虛擬磁碟檔案只有12GB,這裡也是要選擇大於80GB,否則就算虛擬機器設定成功,但無法開啟使用。

6.選擇虛擬機器的處理器數量,範例中備份的系統只有一顆實體處理器(也沒有HyperThreading),所以這裡也選擇「One」,但我沒有試過「Two」。如果是多核處理器,這裡選「One」或「Two」都可以

7.虛擬機器使用的記憶體,不一定要與實體系統相同;舉例來說,範例中備份的Windows 2003 Sever原有2GB的主記憶體,但這裡我只分配512MB給虛擬機器

8.選擇虛擬機器的網路,相同地,不一定要與備份系統相同;例如原本備份的主機內建兩張網路卡,但這裡我只分配一張網路卡,並選擇NAT使用

9.選擇I/O卡的設定,預設是「SCSI Adapters」下的「LSI Logic」,如果完成後無法開啟虛擬機器,重新設定時,可能要在這個步驟改選擇「BusLogic」來模擬I/O卡,通常虛擬機器是Linux或BSD等會遇到這類問題
另一會遇到的問題是,如果備份的系統是Vista,VMware會提醒Vista不支援BusLogic所模擬的I/O卡

10.選擇虛擬磁碟,因為前面的備份已經由BESR協助轉成虛擬磁碟,所以這裡要選「Use a existing virtual disk」(使用已存在的虛擬磁碟);
如果是設定全新的虛擬機器,自然就選「Create a new virtual disk」;如果用虛擬機器測試安裝FreeNAS這個時,可以選擇第3項「Use a physical disk」,將真實硬碟掛載到FreeNAS下,成為分享的磁碟


11.完成設定,回到VMware的視窗,可以看到多了一個Windows 2003 Server的虛擬機器
現在可以按下「Start this virtual machine」,如果沒有問題,VMware會開啟Windows 2003 Server,接下來虛擬機器的設定可以跳過


四、「Edit virtual machine settings」,更動硬體設定
1.在「Edit virtual machine settings」這個選項,可以更動之前選擇好的硬體設定,通常我會選擇移除不必要的硬體(例如Floppy、USB Controller、Sound Adapter等),讓虛擬機器不用載入不必要的硬體;或增加第2張網路卡等。同樣地,這裡不一定要與實體機器一樣的設定

2.開啟後就像下圖所示,黑色區域是VMware所模擬出來的Windows 2003 Server虛擬機器(稱為Guest OS),外面是實體的Windows 2003 Server(稱為Host OS,VMware也安裝在Host OS上)。從圖中可以看到桌面上是一模一樣,因為我是將實體系統備份後轉為虛擬機器,所以兩個環境一模一樣。整個過程中,Host OS的Windows 2003 Server沒有停機

3.兩個一樣的桌面
進到桌面前,Guest OS所在的Windows 2003 Server會重新偵測硬體,因為VMware所模擬的是Intel 440BX晶片組與AMD網路卡等,原本真實的硬體則是Intel 915GM晶片組。
Intel 440BX是Pentium II時代的長壽晶片組,VMware選擇它成為通用的虛擬平臺,或許是基於穩定性與相容性吧


結論:其實,VMware本身有提供P2V的工具,備份系統也不須停機,過程並不難理解。會使用到Ghost備份後,再轉換到VMware虛擬化,是因為備份系統本身可能無法開機、或者想安裝軟體測試,又擔心測試軟體破壞原系統的穩定、以及測試Windows的Service Pack等升級。通常因為這些理由,人們不想面對系統重灌的風險,並想找一套跟目前使用系統一模一樣的配置,測試沒問題後,再到實際系統實作。
BESR(或Ghost)+VMware提供一個除了P2V工具以外的管道,讓人們延用熟悉的備份工具,又可體驗P2V的便利。

2015年3月23日 星期一

AJAX-PHP-JQuery-CSS设计拖拉式购物车

技術文件

 【IT168 专稿】在电子商务网站的建设中,购物车这个功能是不能缺少的。而编写购物车的方法也是多种多样,有的简单有的复杂,而在本文中,将带领大家使用PHP,JQuery和CSS和AJAX技术,去设计一个拖拉式的购物车,这个购物车的效果比较酷,当你选择好要购买的商品后,直接用鼠标拖拉到一个购物篮的图标中去,则完成一次购物的过程,跟在超市购物的过程有点相像。本文将使用MySQL数据库,并且用到了jQuery中的一个很好用的插件simpletip(地址:http://craigsworks.com/projects/simpletip/),接下来会介绍其详细的用法。
  步骤1、建立Mysql数据库
  首先,为我们的购物车应用建立如下的mysql数据库文件,下面给出表结构,并添加一些样例数据:
CREATE TABLE IF NOT EXISTS `internet_shop` (
  `id` int(6) NOT NULL auto_increment,
  `img` varchar(32) collate utf8_unicode_ci NOT NULL default '',
  `name` varchar(64) collate utf8_unicode_ci NOT NULL default '',
  `description` text collate utf8_unicode_ci NOT NULL,
  `price` double NOT NULL default '0',
  PRIMARY KEY  (`id`),
  UNIQUE KEY `img` (`img`)
) ENGINE=MyISAM  DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci AUTO_INCREMENT=7 ;

INSERT INTO `internet_shop` VALUES(1, 'iPod.png', 'iPod', 'The original and popular iPod.', 200);
INSERT INTO `internet_shop` VALUES(2, 'iMac.png', 'iMac', 'The iMac computer.', 1200);
INSERT INTO `internet_shop` VALUES(3, 'iPhone.png', 'iPhone', 'This is the new iPhone.', 400);
INSERT INTO `internet_shop` VALUES(4, 'iPod-Shuffle.png', 'iPod Shuffle', 'The new iPod shuffle.', 49);
INSERT INTO `internet_shop` VALUES(5, 'iPod-Nano.png', 'iPod Nano', 'The new iPod Nano.', 99);
INSERT INTO `internet_shop` VALUES(6, 'Apple-TV.png', 'Apple TV', 'The new Apple TV. Buy it now!', 300);
   这里我们只是简单地设计了商品的属性表,其中包括了商品的图片,名称,价格和描述,在实际的应用中,可能会设计更复杂的商品属性。

  步骤2、设计页面结构
  接下来,我们开始设计我们的页面结构,HTML代码如下:
<div id="main-container"> <!—主DIV -->

<div class="tutorialzine">    <!—标题 -->
<h1>Shopping cart</h1>
<h3>The best products at the best prices</h3>
</div>

<div class="container">    <!—显示商品区域-->

<span class="top-label">
<span class="label-txt">Products</span>    <!—显示Products的标题div -->
</span>

<div class="content-area">
<div class="content drag-desired">   
php
// 这里动态从数据库中读取商品
?>

<div class="clear"></div>    <!—这里用于当用户鼠标移动到该产品时,显示该产品的简介->
</div>
</div>

<div class="bottom-container-border">    <!—区域底部的圆角区域-->
</div>

</div>   
<div class="container">    <!—购物车的div层>

<span class="top-label">
<span class="label-txt">Shopping Cart</span>   
</span>

<div class="content-area">
<div class="content drop-here">    <!—该区域为可接收用户拖拉物品到购物车的区域 -->
<div id="cart-icon">
<img src="img/Shoppingcart_128x128.png" alt="shopping cart" class="pngfix" width="128" height="128"/>   

<img src="img/ajax_load_2.gif" alt="loading.." id="ajax-loader" width="16" height="16" />
</div>
<!—购物表单?
>   
<div id="item-list">    <!—购物清单列表 -->

</div>
</form>   

<div class="clear"></div>   
<div id="total"></div>    <!—商品总价 -->
<div class="clear"></div>    


</div>

</div>
  在这个页面中,在上半部分,设置了一个div层,用于显示各种商品,并且在页面下半部分,另外设置了一个用于接收用户拖拽商品到购物车的层,只要用户把商品拖拽到这个层中的任意区域(不限于拖拽到购物车内),都被认为是用户把商品放到了购物车中。

  步骤3、设计CSS
  将CSS的名称命名为demo.css,代码如下:
  body,h1,h2,h3,p,td,quote,small,form,input,ul,li,ol,label{
/* 为某些浏览器兼容性而设计 */
    margin
:0px;
    padding
:0px;
    font-family
:Arial, Helvetica, sans-serif;
}


body
{
    color
:#555555;
    font-size
:13px;
    background-color
:#282828;
}


.clear
{   
    clear
:both;
}


#main-container
{    /* 页面中主层的宽度和边距设置*/
    width
:700px;
    margin
:20px auto;
}


.container
{    /* 商品列表层和购物车区域的div设置 */
    margin-bottom
:40px;
}


.top-label
{    /* 这是页面上部products的样式*/
    background
:url(img/label_bg.png) no-repeat;   
    display
:inline-block;
    margin-left
:20px;
    position
:relative;
    margin-bottom
:-15px;   
}


.label-txt
{   
    background
:url(img/label_bg.png) no-repeat top right;   
    display
:inline-block;
    font-size
:10px;
    height
:36px;
    margin-left
:10px;   
    padding
:12px 15px 0 5px;
    text-transform
:uppercase;
}


.content-area
{    /* content-area区域的样式 */
    background
:url(img/container_top.png) no-repeat #fcfcfc;
    padding
:15px 20px 0 20px;
}


.content
{   
    padding
:10px;
}


.drag-desired
{    /* 商品列表区域的样式*/
    background
:url(img/drag_desired_label.png) no-repeat top right;
    padding
:30px;
}


.drop-here
{    /*购物车区域的样式 */
    background
:url(img/drop_here_label.png) no-repeat top right;
}


.bottom-container-border
{   
    background
:url(img/container_bottom.png) no-repeat;
    height
:14px;
}


.product
{    /* 商品的样式 */
    border
:2px solid #F5F5F5;
    float
:left;
    margin
:15px;
    padding
:10px;
}


.product img
{
    cursor
:move;
}


p.descr
{
    padding
:5px 0;
}


small
{
    display
:block;
    margin-top
:4px;
}


.tooltip
{    /* 商品的简单介绍用到的样式,这个样式jQuery 的simpletip plugin插件会用到 */
    position
: absolute;
    top
: 0;
    left
: 0;
    z-index
: 3;
    display
: none;

    background-color
:#666666;
    border
:1px solid #666666;
    color
:#fcfcfc;

    padding
:10px;

    -moz-border-radius
:12px;    /* 圆角效果*/
    -khtml-border-radius
: 12px;
    -webkit-border-radius
: 12px;
    border-radius
:12px;
}
   以上的样式中给出了关键部分的注释,其中注意的是使用了CSS3中的圆角效果样式border-radius,接下来再看剩余的其他样式部分:
#cart-icon{    /* 购物篮的样式 */
    width
:128px;
    float
:left;
    position
:relative;   
}


#ajax-loader
{
    position
:absolute;    /* 这是等待加载的图标的样式*/
    top
:0px;
    left
:0px;
    visibility
:hidden;
}


#item-list
{    /* 购物篮中已放置的商品的样式*/
    float
:left;
    width
:490px;
    margin-left
:20px;
    padding-top
:15px;
}


a.remove,a.remove:visited
{    /* 移除购物车中商品的链接的样式 */
    color
:red;
    font-size
:10px;
    text-transform
:uppercase;
}


#total
{    /* 总计的样式*/
    clear
:both;
    float
:right;
    font-size
:10px;
    font-weight
:bold;
    padding
:10px 12px;
    text-transform
:uppercase;
}


#item-list table
{   
    background-color
:#F7F7F7;
    border
:1px solid #EFEFEF;
    margin-top
:5px;
    padding
:4px;
}


a.button,a.button:visited
{    /* 结算按钮*/
    display
:none;

    height
:29px;
    width
:136px;

    padding-top
:15px;
    margin
:0 auto;
    overflow
:hidden;

    color
:white;
    font-size
:12px;
    font-weight
:bold;
    text-align
:center;
    text-transform
:uppercase;

    background
:url(img/button.png) no-repeat center top;   
}


a.button:hover
{
    background-position
:bottom;   
    text-decoration
:none;
}
   为了兼容IE 6浏览器,我们特别添加如下的CSS样式代码,以让IE 6支持PNG下背景透明的特性:
  将其中的iepngfix.htc和blank.gif解压缩到合适的目录内,.htc即Html Components,该文件需要在CSS中被调用;blank.gif是一个1×1像素的透明GIF图片。
  最后,我们的页面效果做出来应该是这样的:
AJAX/PHP/JQuery/CSS设计拖拉式购物车

  步骤4、PHP部分设计
  下面进行PHP部分的代码设计,首先是列出数据库表中的商品,代码简单,如下所示:
Demo.php中
$result = mysql_query("SELECT * FROM internet_shop");   
while($row=mysql_fetch_assoc($result))
{
    
echo '
'
.$row['img'].'" alt="'.htmlspecialchars($row['name']).'" width="128" height="128" class="pngfix" />
';
}
   另外一个需要编写PHP代码的地方,是当用户鼠标移动到某个商品介绍时,通过jQuery的simpletips插件,将商品的图片作为参数,使用ajax方式调用,获得该商品的介绍,并且返回为一个HTML文件再给前端页面进行处理,该文件在ajax目录下的tips.php文件,如下所示:
Ajax/tips.php

define('INCLUDE_CHECK',1);
require "../connect.php";

if(!$_POST['img']) die("There is no such product!");

$img=mysql_real_escape_string(end(explode('/',$_POST['img'])));

$row=mysql_fetch_assoc(mysql_query("SELECT * FROM internet_shop WHERE img='".$img."'"));

if(!$rowdie("There is no such product!");

echo ''.$row['name'].'

'.$row['description'].'
price: $'.$row['price'].'
Drag it to your shopping cart to purchase it';
   此外,我们还需要编写一个addtocart.php文件,这个文件的作用是:当用户将选定的商品拖拉到购物车时,程序在数据库中检索该商品,然后以JSON的形式返回给前端,代码如下:

define('INCLUDE_CHECK',1);
require "../connect.php";

if(!$_POST['img']) die("There is no such product!");

$img=mysql_real_escape_string(end(explode('/',$_POST['img'])));
$row=mysql_fetch_assoc(mysql_query("SELECT * FROM internet_shop WHERE img='".$img."'"));

echo '{status:1,id:'.$row['id'].',price:'.$row['price'].',txt:\'\
\
'
.$row['id'].'">\
\
'.$row['name'].'
\
$'.$row['price'].'\
.$row['id'].'_cnt" id="'.$row['id'].'_cnt" onchange="change('.$row['id'].');">\
\
\
\
\
\
'.$row['id'].');return false;" class="remove">remove\
\
\'}';
   当用户把商品拖拉到购物车区域后,前端页面就以表格的形式逐一显示出用户所选的商品,如下图:
AJAX/PHP/JQuery/CSS设计拖拉式购物车
  最后,我们看下当用户点结帐按钮后的页面order.php的编写,这里我们只是简单把用户的选择最后罗列出来并且进行商品价格合计,代码如下:
php

define('INCLUDE_CHECK',1);
require "connect.php";

if(!$_POST)    // 检查是否有数据提交

{
    
if($_SERVER['HTTP_REFERER'])   
    
header('Location : '.$_SERVER['HTTP_REFERER']);
    
exit;   
}

?>



php

$cnt = array();
$products = array();

foreach($_POST as $key=>$value)
{
    
$key=(int)str_replace('_cnt','',$key);
    
$products[]=$key;    // 将产品的ID编号放到数组products中去

    
$cnt[$key]=$value;   

$result = mysql_query("SELECT * FROM internet_shop WHERE id IN(".join($products,',').")");    // selecting all the products with the IN() function

if(!mysql_num_rows($result))    // 没找到相关产品
{
    
echo '

There was an error with your order!

';
}
else
{
    
echo '

You ordered:

';
    
while($row=mysql_fetch_assoc($result))
    {
        
echo '

'.$cnt[$row['id']].' x '.$row['name'].'
';
        
//计算总价格
        $total+=$cnt[$row['id']]*$row['price'];
    }

    
echo '

Total: $

'.$total.'';
}

?>
   这里,使用数组products保存了用户选择好的商品名称,而cnt数组则记录了每个商品购买的件数,最后实现效果如下:
AJAX/PHP/JQuery/CSS设计拖拉式购物车

  步骤5、jQuery部分设计
  我们首先要引入相关的jQuery文件,如下:
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.3.2/jquery.min.js"></script>
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jqueryui/1.7.2/jquery-ui.min.js"></script>
<script type="text/javascript" src="simpletip/jquery.simpletip-1.3.1.pack.js"></script> 
<script type="text/javascript" src="script.js"></script>
  同时,我们要编写自己的script.js文件,在这个文件中,我们使用了jQuery的toolstip控件:
var purchased=new Array();    //该数组包含了用户购买的商品

 var totalprice
=0;    //商品总价
$(document).ready(function(){

    $(
'.product').simpletip({    //使用simpletip控件
        offset:[40,0],
        content:
'loading',   

        onShow: function()
{

            var param 
= this.getParent().find('img').attr('src');
            
// 修复IE6的问题
            if($.browser.msie && $.browser.version=='6.0')
            
{
                param 
= this.getParent().find('img').attr('style').match(/src=\"([^\"]+)\"/);
                param = param[1];
            }


            
// 通过ajax方式加载tips.php文件
            this.load('ajax/tips.php',{img:param});
        }


    }
);

    $(
".product img").draggable({    // 允许所有商品图片能拖拽

    containment: 
'document',
    opacity: 
0.6,
    revert: 
'invalid',
    helper: 
'clone',
    zIndex: 
100

    }
);

    $(
"div.content.drop-here").droppable({    // 当商品被拖拉到购物车区域时触发

            drop:
                function(e, ui)
                
{
                    var param 
= $(ui.draggable).attr('src');
                    
// 修复IE 6下的问题
                    if($.browser.msie && $.browser.version=='6.0')
                    
{
                        param 
= $(ui.draggable).attr('style').match(/src=\"([^\"]+)\"/);
                        param = param[1];
                    }


                    addlist(param);    
//调用addlist方法
                }


    }
);

}
);
   接下来看addlist方法的编写,其中都提供了详细的注释:
function addlist(param)
{
   

    $.ajax(
{    // ajax方法调用 addtocart.php
    type: "POST",
    url: 
"ajax/addtocart.php",
    data: 
'img='+encodeURIComponent(param),    // the product image as a parameter
    dataType: 'json',    // JSON形式调用

//在调用前,显示加载的小图标
    beforeSend: function(x){$('#ajax-loader').css('visibility','visible');},   
//调用成功时的回调方法
    success: function(msg){

//调用成功后,隐藏等待加载的小图标
        $('#ajax-loader').css('visibility','hidden');    // hiding the loading gif animation
//如果有出错
        if(parseInt(msg.status)!=1)
        
{
            
return false;            }

        
else
        
{
            var check
=false;
            var cnt 
= false;

//检查某个商品是否已经在购物车中存在了
            for(var i=0; i<purchased.length;i++)
            
{
                
if(purchased[i].id==msg.id)                    {
                    check
=true;
                    cnt
=purchased[i].cnt;

                    
break;
                }

            }


            
if(!cnt)   
                $(
'#item-list').append(msg.txt);

            
if(!check)    //如果该商品是新购买商品,购物车中不存在,则purchased数组中增加相关产品
            {
                purchased.push(
{id:msg.id,cnt:1,price:msg.price});
            }


            
else    // 如果购物车中已经有该商品,则数量增加

            
{
// 这里设置每样商品只能买3件,当然大家可以修改
                if(cnt>=3return false;   

//增加购物车中显示的数量
                purchased[i].cnt++;

//设置数量下拉框中的数量
                $('#'+msg.id+'_cnt').val(purchased[i].cnt);   

            }


            totalprice
+=msg.price;    // 重新计算总价格
            update_total();    // 修改总价格

        }


        $(
'.tooltip').hide();    // 隐藏商品的介绍
    }

    }
);
}



//帮助工具类,找出当前产品在purchased数组中的位置
function findpos(id)   
{
    
for(var i=0; i<purchased.length;i++)
    
{
        
if(purchased[i].id==id)
            
return i;
    }


    
return false;
}


//将商品从购物车中移除
function remove(id)   
{
//找出其在数组中的位置
    var i=findpos(id);   

    totalprice
-=purchased[i].price*purchased[i].cnt;    //更新总价格
    purchased[i].cnt = 0;    // reset the counter设置purchased数组中,该商品的数量为0

    $(
'#table_'+id).remove();    //在购物车列表中删除该项目
    update_total();   
}



//当用户点每个商品的下拉框,改变数量时触发该方法
function change(id)    
{
    var i
=findpos(id);

//更新总价格
    totalprice+=(parseInt($('#'+id+'_cnt').val())-purchased[i].cnt)*purchased[i].price;

    purchased[i].cnt
=parseInt($('#'+id+'_cnt').val());
    update_total();
}



//计算当前购物车中的货品总价格
function update_total()   

{
    
if(totalprice)
    
{
//如果买了商品,显示总价格标签文本
        $('#total').html('total: $'+totalprice);            $('a.button').css('display','block');
    }

    
else    // 如果没购买商品,不显示总价格标签文本
    {
        $(
'#total').html('');
        $(
'a.button').hide();
    }

}
  最后,我们可以运行看到相关效果:
  效果可以在这个地址看到:http://demo.tutorialzine.com/2009/09/shopping-cart-php-jquery/demo.php
  相关代码下载:http://demo.tutorialzine.com/2009/09/shopping-cart-php-jquery/demo.zip