Laravel Homestead 新增站台

laravel logo

Laravel Homestead 是一個提供 PHP 或 Laravel 開發環環境,可以不用再花時間設定開發環境、搞爛目前本機上的環境。一開始,Homestead 會預設一個 homestead.app 的站台,但是,如果還要再開一個專案、增加新站台,該怎麼做呢?

Laravel 5.0 Homestead 文件增加更多站台裡面,有提供兩種方式:

  1. homestead provision 指令:具有破壞性,原本建立的資料庫會被刪除再建立一次資料庫架構,所以資料並沒有保留著
  2. server 指令:原本資料庫資料等都會留著,只是之後要做的步驟有點多

目前只試過第 2 個方式,因為需要把資料庫的資料留著。

繼續閱讀 “Laravel Homestead 新增站台”

Laravel Homestead 新增站台

Ruby 存取控制

圖片作者 Jozef Krajčovič  來源 http://jozefkrajcovic.sk/
圖片作者 Jozef Krajčovič
來源 http://jozefkrajcovic.sk/

Ruby 是一個完全物件導向程式語言,不管是字串、整數等,都是類別的物件。

在物件導向內,類別 (class)主要有方法 (method) 等組成,藉由呼叫方法來改變物件的狀態,Ruby 對方法的存取控制分為三個不同的層級,名稱與其他物件導向程式語言一樣,有 publicprotectedprivate

Public、Protected、Private 存取控制

在 Ruby 這三個存取控制層級與其他語言有不同之處,從其他語言跳到 Ruby 可能會忽略掉。

  • public 可以被任何人直接存取,例如:類別的物件可以呼叫 public 方法,預設所有的方法為 public,除了 #initialize 方法為 private
  • protected 層級比 public 小,只有相同類別或子類別內,才能存取 protected 方法
  • private 不能有明確的 receiver 呼叫 private 方法,表示 private 方法只能在物件內被呼叫

還是以下藉由程式來說明會更清楚!

繼續閱讀 “Ruby 存取控制”

Ruby 存取控制

第一次用 PHPUnit 寫測試就上手

一、什麼是測試?測試的重要性?

開發者在撰寫程式的時候,程式不大可能會沒有問題,所以通常就需要驗證程式的執行是不是符合預期。測試程式能用來驗證程式程式的運作是不是正常的,並發現程式中的錯誤,以增加軟體品質。

下面是一個活動報名的系統:

測試活動報名系統

這一個活動報名系統主要提供使用者報名活動,在報名活動內還有一些子功能,像是「限制活動報名人數」,如果是這一個子功能,該如何測試呢?

直覺想到可能就需要有 20 個以上的使用者,然後讓這個些使用者分別來報名活動,如果沒超過限制的人數,使用者就能繼續報名,反之,超過了限制人數的話,使用者就無法繼續報名了。說到這裡,會覺得這是什麼測試!

先分析一下,照上面的方法進行測試會有什麼問題:

  1. 測試案例一多,會花太多時間
    • 這時候,如果再增加報名截止日期的測試,這樣又需要再對報名功能測試一次
  2. 改了程式碼之後,需要再做一次測試
    • 日後維護時,會需要再次修改程式碼,但是,改了程式碼之後,該如何驗證修改後的程式運作上是沒問題的?所以,可能又要再次從頭做一次測試
  3. 與其他程式混在一起測試
    • 要執行報名功能的程式碼,要透過 view 的程式去呼叫。但是,這樣做測試的時候,如果測試失敗,就必須花時間去找出是報名的程式出問題,還是 view 程式

    那該如何解決這些問題呢?針對開發者來說,需要一個可以自動化、重複的、獨立的測試。

繼續閱讀 “第一次用 PHPUnit 寫測試就上手”

第一次用 PHPUnit 寫測試就上手

AWK 處理檔案

在處理「10,000 Top Passwords」的檔案時,想轉成array 資料型態存起來,檔案是:

password, 32027
123456, 25969
12345678, 8667
1234, 5786
qwerty, 5455
12345, 4523
dragon, 4321
pussy, 3945
baseball, 3739
football, 3682

第一欄是要儲存成array 的資料,就想到利用AWK 來處理,之前有用過了,不過現在有點生疏,來筆記一下,加深印象。

AWK 結構及選項

AWK 是讀取檔案或利用pipeline 的方式讀取接收到的結果,以每行為一個記錄(record)進行處理,在行中會在被區分成欄位(field),預設區隔欄位的則是空白

  • -F :可以自訂區隔欄位的字元是哪一個
  • -v:則是可以設定變數
  • pattern:當讀取每行時,可以利用pattern 判斷是否符合,如果沒pattern 需要判斷可以省略
  • action statements:要進行的動作,要將執行的動作寫在{ } 大括號內

繼續閱讀 “AWK 處理檔案”

AWK 處理檔案