顯示包含「自製記帳軟件」標籤的文章。顯示所有文章
顯示包含「自製記帳軟件」標籤的文章。顯示所有文章

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 的, 希望大家會留意吧.

2013年9月27日星期五

自製記帳軟件 - Voucher 實體到虛疑


說了Schema, 說了Datatype, 是應該開始便用 MySQL Workbench 來實作的了. 但在這之前, 還是讓我說說一些邏輯上的東西吧. 為什麼還要說個不停? 因為這是關係到 Database Normalization 啊, 說的是系統的成與敗啊, 所以還是讓我說吧.


資訊
上圖是一張很平凡的 Payment Voucher (這個字太多不同的中文譯名, 所以我乾脆用回英文算了), 其中包含了很多資訊, 每一項資訊都有特定的功能, 有些是可以再用的, 有些則否. 在設計 Schema 時, 我們必須想清楚什麼是最核心的最不可或缺的資訊. 而在複式簿記 (Double Entry Bookkeeping) 之中, "日期 (Date)", "詳細 (Description)", "賬目 (Account)", "借方金額 (Debit Amount)" 及 "貸方金額 (Credit Amount)" 就是最不可或缺的五項資訊. 只要有了這五項資訊, 就是用 Microsoft Excel 來作記錄, 再加上善用 Sort 及 Filter 功能, 大家都可以輕鬆完成一盤會計賬目. 當然用 Microsoft Excel 來造賬, 出現錯誤的機會是很高的. 這並不是因為它本身有什麼程式缺憾, 而是因為人手參與的頻率與程度太高. 而記帳軟件其中的一個面向就是要盡量減少人手參與, 這是在設計 Schema 及 User Interface 時要多加留心的.

複式簿記流程
在繼續之前, 還是要略略說說複式簿記的流程. 首先會計人員在取得原始憑據後或某些特定事件發生或達到某個日期後, 會根據不同性質而開立不同的傳票, 並在傳票上列明事項日期, 詳細, 借方及(或)貸方賬目與金額, 涉事人員或公司. 在一天結束後將該所有當天的傳票, 匯整成日誌並結算借貸雙方的金額. 日誌上的借貸雙方的金額必須相等方何再轉錄到分賬內.

手民之誤
或許你會說所有資料不都是人手輸入的, 所以免除手民之誤是個不可能的任務. 可我們不是要免除, 而是要減少, 而且是盡量減少! 那如何作才可以減少 Human Error 呢? 答案就是限制同樣的資料以人手輸入的次數. 換句話說, 就是有效地善用已經輸入的資料. 在複式簿記的實作中, 有很多的資料都是重複, 像是"傳票類型", "賬目", "客戶", "供應商", "員工", "產品", "物品"等的名稱與編號. 這些重複性的資訊, 我們應該獨立建造屬於它們的資料表 (Table), 以待日後可以容易選取使用及設計查詢 (Query). 這部份我們日後會慢慢的涉獵到, 現在先按下不表.

資料類型
之前說過的五項主要資料是 "日期", "詳細", "賬目", "借方金額" 及 "貸方金額", 但是為了有效地解讀賬冊, 光有他們是不夠的. 於是我們還要加上如上一段所列的資訊. 資訊有了一大堆, 但是我們還要把它們分類. 基本我們可以把它們分成三類:

Basic Data (基本資料類型): 包括 "日期", "詳細", "傳票類型", "客戶/供應商" 及 "員工"

Transaction Data (交易資料類型): 包括 "賬目", "借方金額" 及 "貸方金額"

Additional Transaction Data (輔助交易資料類型): 包括 "產品" 或 "物品", 及其單價和數量

上述三類資料類型, 即代表著三個獨立的資料表. 下圖顯示了這三種類型在 OrangeAcc 中的傳單介面中的分佈.


很累, 下回繼續...