Laravel Homestead 2.1.5 版本將不再刪除舊有資料庫

Laravel PHP Framework

Laravel Homestead 提供一套虛擬機器,讓開發者可以快速將 Laravel 環境架設起來。在 2.1.5 版本以前,要新增新的 Site 都會透過修改 yaml 設定檔後,直接下 homestead provision 來重新啟動 VM,問題就來了,此指令會將現有的 Database 全部刪除,重先建立一次,這樣開發者就要重新跑 DB Migration 才有資料。此問題作者聽到了,所以在 2.1.5 版本作者拿掉 Drop Database 指令,而是透過 CREATE DATABASE IF NOT EXISTS 來取代原有指令 (下面程式碼),這樣開發者就不用擔心資料會被刪除。當然作者也很貼心,如果開發者想要清除整個資料庫,一樣可以透過指令 homestead destroy 來將整個 VM 刪除即可。

// 取代原有 mysql -uhomestead -psecret -e "DROP DATABASE IF EXISTS \`$DB\`";
mysql -uhomestead -psecret -e "CREATE DATABASE IF NOT EXISTS \`$DB\` DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_unicode_ci";

詳細的資訊可以參考 official documentation,或參考最近修改的 commit 內容

git tips 找尋遺失的 commit 紀錄

github-logo

個人每天常用的常用的三大 Git 指令分別是 git reset, git pull, git rebase,但是呢有時候手殘,常常把 git reset --soft 打成 git reset --hard 造成不可預期的錯誤,朋友圈內也有人常常問我該如何救不見的 commit,其實很容易,git 對於每隔操作後產生的 commit 都會存放在 Local 端,所以基本上不用擔心 commit 記錄會不見,有一種狀況會永遠消失,那就是假設尚未 commit 目前修正過的檔案,然後下 git reset --hard HEAD,這樣的話我想誰都無法幫忙把已修正過的檔案找回來了,原因是連 git 都不知道你改了什麼啊。所以為了避免這情況方生,個人建議開發者,只要開發到一定的階段,務必要下一個 commit 當作記錄,但是你會說,這樣功能開發完後,就會有很多個 commit 非常不好看,這時候可以嘗試 git rebase 將整個功能合併成一個 commit,這樣其他開發者 review 時就會非常清楚。

現在的問題是如果開發者不小心下了 git reset --hard HEAD^,上一個 commit 就會消失了,這時候該如何救回來呢?答案可以使用 git reflog 指令然觀看開發者全部 git 的操作記錄,裡面詳細記載你曾經下過的 git 指令

1
2
3
4
5
6
7
8
$ git reflog
794be8b HEAD@{0}: reset: moving to HEAD^
5e2be6f HEAD@{1}: commit (amend): update
bfa593c HEAD@{2}: cherry-pick: update
794be8b HEAD@{3}: reset: moving to 649c658
794be8b HEAD@{4}: reset: moving to HEAD^
649c658 HEAD@{5}: commit: update
794be8b HEAD@{6}: commit (initial): addd

上面可以看到之前 commit 的記錄,接著可以透過 git reset --hard xxxxx,或者是用 git cherry-pick xxxxx 將上一個 commit ID 記錄抓回來即可。

Awesome List

logo

@sindresorhus 建立一個強大的專案叫做 awesome,裡面收集了各式各樣的 Awesome List,包含 Programming Languages, Front-end Development, Back-end Development 等等,只要可以收集到非常 Awesome 的 Project List,經過大家認證,認為收集此列表非常俱有價值性,而不是把一堆教學文件集合在一起,程式開發者必定參考到這裡面列表。看到有人提出加入 Regular Expression 列表@arthurvr 就回覆底下

That’s not what an awesome list should be. It should be a curated list of the best things. Not a “collection of everything” 原發問者不了解 curated list of the best things,最後 @sindresorhus 拿了 w3schools 來回答為什麼 w3schools 總是能在搜尋排行榜第一名

Because they use sleazy and spammy SEO optimizations to get there. 有夠好笑的,原來大家都是很討厭 w3schools,難怪會有 W3Schools Hider 外掛

用一張圖學習 JavaScript

2015.07.03 作者出了 GitHub Page 線上版

javascript-logo

GitHub 上的 javascript-in-one-pic 作者將 JavaScript 一些基本用法整理成 PDF, PNG .. 等版本,讓開發者可以一目了然學習基本 JavaScript 用法,這專案啟動沒多久就一堆人 Star 了,看到作者是參考之前我有參與翻譯的 JavaScript GardenProfessional JavaScript for Web Developers 這本書,目前尚未全部整理完整,已經整理的目錄如下

[Read More]

簡介 JavaScript ES6 物件及陣列

es6-logo

今年 2015 六月 17 號 Ecma International 已經同意 ECMA-262 6th edition 版本,這是在 ECMAScript 2015 Has Been Approved 看到的消息,而現在主流就是以 Babeljs 為主,將 ES2015 語法直接轉換成 ES5,讓各大瀏覽器可以繼續支援 ES2015 寫法。今天來介紹 ES2015 內如何使用物件 (Object) 或陣列 (Array)。

[Read More]

優化 Percona XtraDB Cluster for write hotspots

percona

Percona Blog 上看到這篇 Optimizing Percona XtraDB Cluster for write hotspots 優化多重寫入 MySQL 的狀況,舉例來說,要計算 global counter 的時候,就會遇到很頻繁的寫入 (write hotspot),目前是不能同時寫入資料到同一個 record,會造成 performance 降低,所以大家開始導入 Percona XtraDB Cluster 來解決同時間寫入到同一個 record,大家都認為,搞了三台 Percona Server,可以將寫入的動作分散到其他兩台,就不會遇到 Lock 問題,但是實際上根本就不是這樣。

[Read More]

Laravel 5.1 is released

很高興昨天收到 Laravel 釋出 5.1 版本,此版本在 Laravel 發展過程中第一個長期支援的版本,底下我們就來看看 Taylor Otwell 作者在此版本釋出有什麼新功能或變化。

[Read More]

Node.js Mocha 延遲測試

687474703a2f2f662e636c2e6c792f6974656d732f336c316b306e32413155334d3149314c323130702f53637265656e25323053686f74253230323031322d30322d32342532306174253230322e32312e3433253230504d2e706e67

如果大家有在寫 Node.js Express Framework,一定對 Mocha Unit Testing 不陌生,各位工程師不要太相信自己寫的程式碼,產品上線前,務必要把 Unit Test 寫完整,如果是要 Code Refactor,那測試的重要性更是大。網站架構越來越大,功能越來越多,每寫一個新功能,都會產生 side effect,造成其他程式或邏輯出錯,這時候就需要 Unit Test 來驗證邏輯的正確性。使用 Express 寫 API 我個人會建議使用 Supertest + Should.js 來驗證後端程式碼即可,這幾套框架都是由 TJ Holowaychuk 完成。使用 supertest 也可以讓 express 不用 listen port 就可以測試。

[Read More]

Mac iTerm2 + tmux 搭配 Mouse mode

Screen Shot 2015-05-02 at 10.17.10 AM

在 Mac 上必裝 iTerm2 終端機軟體搭配 copy mode 相當好用,只要用滑鼠選擇了一段文字,系統就會自動幫忙 copy,接著在任何地方就可以直接使用 command + v 貼上,如果要多視窗操作,可以安裝 tmux 多視窗軟體,如果使用了 tmux 你會發現滾輪滑鼠無法使用了,也就是看不到執行過的畫面跟指令,這時候就要調整 tmux 設定檔,補上 Mouse mode 設定檔

[Read More]