2013年11月22日星期五

自製記帳軟件 - 使用 MySQL Workbench 6 製作 MySQL Model 初探

如果你只想知道如何設計製作 MySQL Model (Schema) , 不安裝 MySQL Server 是不會有什麼影響的. 但, 沒有 MySQL Server 你就不可能測試你自己所設計的 Schema 是否可行. 雖然我本身已有多年設計 Schema 的經驗, 可是在一些比較抽象複雜的設計中, 我還是會在設計好一部份就立即放上 Server 看看自己的設想是否可行, 檢視了才繼續設計其他部份. 有時候甚至會在 Microsoft Access 中先簡單地建立一些 User Input Dialog 看看在變動資料時是不是一如我所預料的. 


按一下 "Models" 旁邊的加號, 就可以新增一個 Model 了


空白的 Model


Double Click 在黃色圓筒旁的 "mydb" 就會出現 model 的屬性


除了改改 model 的名字外, 你或許也應該留意一下 Collation.
在 MySQL Workbench 6 中, 當你新增一個 model 時, 這個新 model 的預設 Collation 是
"utf8-utf8_general_ci" 
那這個 Collation 是什麼呢? 它就是你的 model 的編碼設定. 簡單地說, 這 Collation 就是控制由這個 model 所創建的 database 可以接受什麼文字的資料輸入. 由於我預期未來使用者會輸入CJK 文字, 而且效能對會計記帳而言並非重點, 所以我將 Collation 的值改成了
"utf8-utf8_unicode_ci"



先儲存一下吧!


開始建立 Table 囉. 如果你是新手, 我建議你這一階段先不要理會
什麼是 Datatype, PK, NN, UQ, BIN 及 UN 等東西. 你唯一要做好的事情, 就是根據 Database Normalization 來規劃好你的 Model. 什麼是 Database Normalization? 簡單一點的說法是:
"把所有會重複的資料都獨立成一個 Table"

2013年11月20日星期三

Tizen 的未來會否安泰豐澤?


Samsung 憑藉優秀的市場策略及 Google Android 打下了全球三份之一 的 Smart Phone 市場. 在這背景之下, 為什麼還要發展另一平台 Tizen 呢? Samsung 將會使用什麼策略來推動 Tizen? Tizen 是否能夠挑戰這個綠色機器人呢? 如果 Tizen 能夠在市場上佔一席位, 誰才是最大的得益者?

安泰豐澤
Samsung 作為製造商, 盈利是來自硬件的銷售, 一旦顧客買走了一支流動裝置, 該裝置就不會再為 Samsung 創造什麼收益, 因為後續收益都是裝置所搭載的 Android 的主人所擁有. 於是, 我們可以把 Samsung 看成是一個以體力換取收益的藍領工人, 而 Google 就像是坐在辦公室享受著工人所創造的成果的老闆. 但是與普通藍領不同的是, Samsung 還是要花大錢去為自己的產品打市場, 但是在市場上所取得的成果卻不能獨享. 這當然會令 Samsung 心中有刺. 

如果大家擁有 Samsung Galaxy 系列的任何產品, 應該都會發現預載了一款叫  Samsung Apps 的應用軟件. 這就是 Samsung 希望能夠創造後續營收的自家 App 市場. 但是大家可有使用過呢? 我相信沒有幾人有使用過這個 App, 而我是登記了但從來沒有使用過它來下載任何 Apps. 

既然在 Android 平台上不能取得所希望擁有的, 那唯有另闢溪徑了.

暗渡陳倉 潛龍勿用
大費周張地弄了一個新的平台 Tizen, Samsung 依然繼續將主力放在運行 Android 的流動裝置上.我相信他們是吸收了 Nokia 及 Blackberry 的經驗, 知道在現時市況上, 貿然跟 Android 分道揚鑣只會落得一敗塗地. 更重要一點是, Tizen 還處於燒錢階段, 在在需財啊. 於是, Tizen 的初試啼聲是落在 Samsung NX300M 相機的身上.

我個人覺得這是一個很高明的決定. 首先, 相機的螢幕大小相對是比較接近現時中低階 Smart Phone 的, 另外相機也是一種有多重身份的流動裝置, 它既是個人的創作或記錄工具, 也有社交聯誼的功效. 如果 Tizen 的平台上能夠提供不同的攝影特殊效果或簡單修改相片的 App, 途過 wi-fi 把相片立即分享到網上社交平台, 除了不能即時通話外, 它應該可以滿足了社交方面的要求. 而另一方面, 大家使用相機的習慣也減低了 Tizen 所要面對的挑戰. 我想大家不會為了玩遊戲而浪費相機的電量吧? 於是 Tizen 在 NX300M 身上集中優化攝影方面的功能, 而不需要提供全面又大量的 App 與功能來討好使用者. Microsoft 在流動裝置市場的失敗, 就是源於太貪心, 但又未能給予使用者一種超越 iOS 或 Android 的使用體驗. 

雖然 Tizen 暫時所面對的群眾很少, 卻有機會累積使用者體驗與口碑, 為下一波產品做好準備. 那下一波搭載 Tizen 的產品是什麼呢? 我想很大機會是 Smart TV. 

鄉村包圍城市
先來看看 Tizen 背後有什麼支持者: Fujitsu, Huawei, Intel Corporation, KT, NEC CASIO Mobile Communications, NTT DOCOMO, Orange, Panasonic Mobile Communications, Samsung, SK Telecom, Sprint 及 Vodafone. 先說說這陣營內的一票電訊網絡商 (尤其是日本的), 我想他們跟 Samsung 一樣, 對 Google 坐享源源不絕的收益同樣心中有刺. 而硬件廠商中, 最有代表性的自然是 Intel. 在流動裝置的晶片市場中, 採用 ARM 架構的晶片把 Intel 旗下的晶片殺得片甲不留. 如果 Intel 所提倡的 Tizen 能夠在智能家用/ 流動裝置市場中佔一席位, 必定可以拉抬 Intel 晶片的市佔率, 並補償在個人電腦市場逐漸萎縮時所帶來的損失.

同時, 如果 Tizen 成功落戶家電, 汽車及相機等生活裝置, 加上與 Android apps 相容, 會不會能夠衝擊 Google 一手建立的 Android 生態環境? 看著 Fujitsu, CASIO, Panasonic 及 Samsung 等家電/ 儀器巨頭的名字, 我想在東北亞地區或許是有可能的. 除非 Tizen 能夠及早把 Sony 及一些中國大陸家電巨頭拉入伙, 否則全面挑戰 Google 的機會是很有限的.

再進一步, 如果 Tizen 能夠放棄一時三刻在流動裝置運行的快感, 專注於三吋, 七吋及四十吋等三到四種固定尺寸的螢幕上發展, 或許能夠規避 Android 常為人究病的碎片化問題, 甚至化被動為主動成為未來家居/ 生活智能裝置的標準奠定者, 從而迫使 Google 加入一個更加廣闊更多元的生態環境.

如果...
如果 Tizen 只是在流動裝置上成功發展, 則可能進一步使 Android 市場更混亂, 更碎片化. 在這情況下, 受益的將會是 Google, Samsung, Sony, Microsoft 及 Apple 等在各自領域擁有市場主導位置的巨頭, 而傳統的硬件製造商及創新的小公司則會受苦最深. 而最終的消費者或許會受益一時的價格戰爭, 但是隨著選擇的減少, 我們未來的網絡生活可能就操縱在這幾間公司的手上.

作為一名平凡的消費者, 廠商間多點競爭, 擁有多點選擇, 始終是最好的事.


2013年11月14日星期四

自製記帳軟件 - 簡易安裝 MySQL Workbench 6 (CentOS)


Linux 發展到今時今日已經變得十分之 User Friendly. 除了一些電腦遊戲外, 使用它來處理一般日常工作已很容易, 更不用提 OS X 及 Android 這兩個作業系統在 User Experience 上所取得的成就. 除了 Linux 日益易用, Oracle 在接收 MySQL 後也並未停下她的開發的步伐. 雖然開源社區對  MySQL 的未來抱持悲觀的態度, 但是我畢竟只是一名普通的用家, 誰家好用又免費就用誰家的吧.

對於所有被 Microsoft 寵壞了的使用者來說, 以指令界面來控制電腦已經不甚容易, 更何況設計複雜的邏輯結構? 所以 MySQL Workbench 對我們來說簡直就是恩物! Workbench 賦予了我們一條管理 MySQL 的捷徑, 甚至讓我們有機會一探 Data Architect 的世界.

就讓我們開始在 CentOS 6.4 上安裝 MySQL Workbench 6 吧. 第一步當然是要到 MySQL Workbench 的官網看看. 當然心急的也可以直接到下載那一頁的...


要在 CentOS 6.4 上安裝 MySQL Workbench 6 就要在 "Select Platform" 中選
"Red Hat Enterprise Linux 6 / Oracle Linux 6", 然後再點選 32bit / 64bit 版本來下載


如果你在下載時選擇 "執行" 系統會在完成後自動執行. (廢話!)
若你的選擇是 "儲存", 那你就要在完成後手動啟動那個安裝檔. (就是 Double Click 啦)
無論如何, 系統都會在執行前再問你一遍: Do you want to install this file?


由於 Linux 的元件庫十分龐大, 所以一般都不會在安裝系統時把所有東西都塞進來的, 因此當你在 Linux 中安裝任何新軟件/元件時, 系統都會檢查新軟件/元件 "依賴" 的軟件/元件是否齊備. 放心, 系統不會要求你自行下載的.


如果你依據上一篇 "簡易安裝 CentOS 6.4 及 MySQL" 來安裝 CentOS 的, 那此時系統應會要求你安裝 "C library for reading, creating, and modifying" 的, 按下 "Install" 繼續吧.


還記得 "root" 的密碼吧? 
MySQL Workbench 6 的安裝過程現已完成, 接下來就啟動她來看看吧.


按圖索驥


安裝好的 MySQL Server 呢?! 甭怕! 甭怕! 點一下在 MySQL Connections 旁的加號吧


什麼也先不要碰...真乖


直接點一點 "Test Connection", 應該是沒問題的...
確認沒問題後就可以按下 "OK" 關閉了


現在出現了一個叫 "localhost" 的 Connection, Double Click 它吧.


按一下左邊的 "Server Status" 吧


這就是你親手安裝的 MySQL Server 的運行狀況了. 
拍拍手給自己點鼓勵吧


點一下 "Server Status" 下方的 "Client Connection" 看看有誰連上了你的 MySQL Server
如果你看到如上圖般有數個 "root" 存在是很正常的, 可不要以為有壞人 hack 了你的系統


下一篇將會是設定 MySQL Server 的, 希望大家會繼續留意吧.

2013年11月12日星期二

自製記帳軟件 - 簡易安裝 CentOS 6.4 及 MySQL


說了那麼多不著邊際的東西, 這一次就實實在在的跟大家講解一下 CentOS 6.4 的安裝過程吧. 上圖就是這次的主角: 2005年出廠的 Lenovo ThinkPad Z60T. 看著那個 IBM 商標, 總想起一句很經典的歌詞: "變幻原是永恆". 不過話說回來, ThinkPad 的工藝真是好. 好像這圖中的電腦, 她跟了我八個年頭, 除了電池壞了以外, 其他機能都仍然能夠好好地運作. 而且在這次作示範機器之前, 她作為一台 BitTorrent Client 日夜不停的運行了四年 (OS 是 Ubuntu), 為我們這幫遊子提供了大量的娛樂.

回歸正題, 要安裝 CentOS, 首先你要去 CentOS 網頁下載 CD 或 DVD 的 ISO 檔.
可供下載 CentOS ISO 的 Mirror Sites 列表
如果你的網絡連線不高, 我建議你使用 Torrent 來下載完整的 ISO 檔. 完成後, 就要把那剛下載好的 ISO 檔燒錄到 CD 或 DVD. 在 Windows 7 Professional 中只需以滑鼠右鍵點選 (Right Click) 要燒錄的 ISO 檔, 再選擇 Burn Disc Image (如下圖), 然後一步一步根據指示便可成功製作 CentOS 的安裝 CD 或 DVD.


 如果你的 Windows 版本沒有這個內建功能, 那你就要自己在網絡上下載一個來燒了.
"FREE ISO BURNER" 在GOOGLE 上的搜尋結果
把 CentOS ISO Disk 1 放進要安裝的電腦內, 重啟電腦後應該不久就會看到如下圖的畫面. 如果你的電腦沒有讀取 ISO Disk, 那你需要到BIOS 中把 CD/DVD-ROM 的 Boot Sequence 改排在 HDD 之前, 儲存設定後再重啟電腦即可.


選 "Install or upgrade an existing system"


充滿外星文的過場畫面


選 "OK" 系統會先檢查你的安裝安裝 CD 或 DVD 有沒有缺憾;
選 "Skip" 則系統會直接開始安裝. 


歡迎! 歡迎! 


除了 "NEXT" 外, 我們還有什麼選擇? 那就按下去吧!


強烈建議選擇英文! 


選擇 Basic Storage Devices 


如果你不是從 CentOS 以往的版本升級, 請選擇 Fresh Installation


如無必要就不要改了


這個請根據你的真實所在地或網絡內 (LAN) 的其他電腦的地區設定選擇時區


設定 "root" 的密碼

請不要忘記這組密碼! 還有, 記著這個 "root" 是作業系統內的擁有最大權限的戶口


如果你無需保留電腦內的其他作業系統, 選 "Use All Space" 吧


這個畫面只會在你有多於一個硬碟 (HDD) 時才會出現.

如果你的電腦內安裝了兩個硬碟, 而你又把他們全都移到右邊, 那在 CentOS 安裝完成之後你不會看到兩個分開的硬碟 (即是好像 Windows 內的 "C:" "D:" 等), 而是不同的 Folder. 

這代表你不可以隨便的移除硬碟, 因此你要在決定前好好考慮.


按了後就沒有回頭路了...


點選 "Desktop" 及勾選 "Customize now"


點選 "Database" 內的 "MySQL Database client" 及 "MySQL Database server"


終於接近尾聲了


再一次歡迎


建立第一個使用者. 要留意的是這個使用者不是 "root".

根據所有有關 Linux 的文件, 都強烈地呼籲用家不要用 "root" 來作日常工作之用, 現在大部份的 Linux distributions 都是在安裝時要求用家先設好 "root" 的密碼, 然後在安裝後的設定階段強迫使用者建立一個有限權限的使用者戶口. 


讓 Server 的時間準確是很重要的事, 所以請勾選 "Synchronize date and time over the network"

除了 Server 的時間要準確外, 讓整個網絡內 (LAN) 電腦的時間統一也很重要啊. Windows 系統內也有差不多的功能, 把所有電腦都指向同一組 NTP Servers.


做個乖孩子, 什麼也不要碰! 繼續下一步...


這時系統會要求重啟電腦, 乖乖的按指示做吧


"人在風暴中, 無奈的打轉..."


登入吧! 菜鳥! 


請按圖索驥...


順字母找出 "mysqld", 然後按上方的 "Enable"


還記得那個 "root" 的密碼嗎? 輸入到空格內吧


"Enable" 了便 "Start" 吧


留意右邊的 Service 狀態:
"This service is enabled" 及 "This service is running"


請再一次按圖索驥...


乖, 我輸入什麼, 你就跟著輸入, 然後按 "Enter" 


如果你看到上述畫面, 恭喜你! 你已經安裝了一台運行著 MySQL 的 Linux 機器了!
現在輸入 "exit" 及按 "Enter" 退出吧

要是你沒有看到上述畫面或出現任何錯誤訊息, 請先確定 "mysqld" 這個 "Service" 是不是已經 "enabled" 及 "running". 如果你的答案是肯定的, 那先重啟一次電腦. 要是重啟後還是不成, 那就從第一步開始再試吧. 對於未接觸過 Linux 的朋友, 上網找資料參考所花的時間必定比重灌一次多啊, 而且未必可以解決你所遇到的困難.

下一篇將會是安裝 MySQL Workbench 6 的, 希望大家會留意吧.