用 Docker 取代 Laravel Homestead 開發環境

docker

新手第一次接觸 Laravel,我都會推薦使用 Homestead 來解決開發環境的困擾,但是我發現 Homestead 對於第一次接觸 Virtualbox 及指令的初學者,設定還是比較複雜,造成很多新手光是在這邊就卡關了,有沒有什麼辦法可以解決這煩人又複雜的 Homestead 設定,剛好今天在 Github 上看到 laraedit-docker 專案,此專案是把 Homestead 轉換成用 Docker 來跑,這樣只要您的環境有支援 Docker,就可以快速設定好環境含 MySQL, Redis …等

[Read More]

Golang 發佈 1.6 正式 Release

今天 golang 正式發佈 1.6 版本,趕快到官方網站下載使用,如果你是用 gvm,直接下 gvm install go1.6 即可。golang wiki 提供了很多 Package Management Tools,可以隨意選一套來使用。底下整理幾點 1.6 的改變:

重大改變

效能議題

官方說無從比較,有些程式碼可能在 1.6 比較快,也有可能在 1.5 會比較快,但是在 garbage collector 上面 1.6 會比 1.5 好,前提是程式使用了大量的記憶體,1.6 版本也針對蠻多 package 做了 Performance 改善,提升了至少 10 % 喔 compress/bzip2, compress/gzip, crypto/aes, crypto/elliptic, crypto/ecdsa, 和 sort 套件。

[Read More]

在 MAC OS 快速又簡單安裝 Docker 環境 – dlite

Mac OS X 底下安裝 Docker 服務不難,只需要到 Docker Mac 教學網站下載 Docker Toolbox,就可以使用 docker-machine, docker, docker-compose 等指令操作 Docker 服務。本篇提供另外一種工具,讓 Mac 開發者可以快速使用 Docker 服務,就是這套用 Go 語言寫的 dlite 工具。

安裝方式

dlite 提供三種方式安裝

  1. 直接下載執行檔案 (推薦) (下載連結)
  2. 直接透過 brew 指令安裝: brew install dlite
  3. 開發者模式: git clone 專案,然後下 make dlite 產生執行檔案

請大家直接使用第一種方式安裝即可。

使用方式

安裝 dlite 需要使用到磁碟空間及記憶體,你可以動態指定 memory 使用量,或者是磁碟空間,詳細指令可以透過 dlite install -h 觀看

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
$ sudo dlite install -h
Usage:
  dlite [OPTIONS] install [install-OPTIONS]

creates an empty disk image, downloads the os, saves configuration and creates a launchd agent

Help Options:
  -h, --help            Show this help message

[install command options]
      -c, --cpus=       number of CPUs to allocate (default: 1)
      -d, --disk=       size of disk in GiB to create (default: 20)
      -m, --memory=     amount of memory in GiB to allocate (default: 2)
      -s, --ssh-key=    path to public ssh key (default: $HOME/.ssh/id_rsa.pub)
      -v, --os-version= version of DhyveOS to install
      -n, --hostname=   hostname to use for vm (default: local.docker)
      -S, --share=      directory to export from NFS (default: /Users)

可以看到指令預設會佔用 20GB 的磁碟使用量及 2GB 的記憶體,所以安裝時可以調整成個人需求大小,安裝請用 root 使用者

[Read More]

Git tips: 更改 commit log 作者

github

Github 上面看到這 git-blame-someone-else 專案,用來隨時修改 commit log 作者,也就是可以任意改 commit id 內的 `Author` 欄位資訊,作者也相當幽默,直接拿此 commit id 改成 Linux 作者 Linus Torvalds

使用時機

大家會問到什麼時候才會用到需要修改 commit 作者,以我自己的狀況為例,在團隊內開發新功能會直接開新的 Branch 來開發,完成後會進行 code review,此時原開發者目前正在忙其他專案,其他團隊成員就必須幫忙修改原先 commit 內容,通常我是直接建議透過 `git reset –soft HEAD^` 來更動原本 commit,而不是產生新的 commit,修改後作者就會變成自己,此時後這功能就派上用場了。

安裝方式

根據源專案是透過 root 權限,將執行檔丟到 `/usr/loca/bin` 目錄底下,但是我個人不建議用這方式,因為還需要 root 權限,要打密碼有點麻煩,我建議透過在家目錄建立 `bin` 目錄,並將此目錄加到 `$PATH` 變數內即可。

1
2
3
$ mkdir ~/bin
$ wget https://raw.githubusercontent.com/jayphelps/git-blame-someone-else/master/git-blame-someone-else -O ~/bin/git-blame-someone-else
$ chmod 755 ~/bin/git-blame-someone-else

修改 .bashrc,加入底下程式碼

[Read More]

提升 npm install 安裝速度

Npm-logo.svg

npmNode.js 套件管理模組,相信大家對 npm 不會很陌生,如果對於 npm 不了解的,可以參考阮一峰寫的這篇文章,今天要來探討的是如何提升 npm install 的安裝速度,如果你正在嘗試 npm@3 版本,我建議可以先換到 npm@2 的版本會比較快(為什麼呢?底下有數據會說話)。Github issue 上也蠻多速度上的討論,然而前幾天有網友發表一篇關掉 progress 提升不少速度,實際上我們可以拿專案來測試 npm@2 及 npm@3 的速度看看。

[Read More]

如何選擇 Web Framework

framework

現在各大語言都有很多 web framework 可以選擇,上週整理自己對於 Web Framework 的一些原因及考量,總共整理 12 點,給大家參考看看

  • 使用情境
  • 軟體架構
  • 主機部署
  • 安裝及開發
  • 學習曲線
  • 核心功能
  • 資料庫 ORM
  • 前端開發
  • 測試
  • 文件
  • 社群活動
  • 團隊合作
[Read More]

OpenSSH 安全性漏洞 CVE-2016-0777 and CVE-2016-0778

openssh

OpenSSH 今日公佈 Client Bug 漏洞 CVE-2016-0777 and CVE-2016-0778,發生原因是 SSH Clinet 跟 Server 溝通時,新功能 roaming 造成傳輸過程被惡意程式破解,影響的 OpenSSH 版本為 5.4 - 7.1. 大家快看看自己是否為這版本區間。此問題會發生在 SSH Client 而不是 Server 端,所以 Linux FreeBSDMacOS 都需要升級 OpenSSH,如果你是在 Windows 用 Putty 則不受影響。

[Read More]

Laravel 搭配 Google, Facebook, Twitter 第三方 OAuth 認證

laravel

Laravel 提供了 Socialite 套件讓開發者可以快速整合 Facebook, Twitter, Google, LinkedIn, GitHub and Bitbucket 等第三方服務的登入認證,我挑了大家最常使用的 Facebook, Twitter, Google 來整合,用 Google 跟 Twitter 需要注意一些小細節,首先是 Google 部分,如果大家去 Developer console 把 Oauth Callback 寫完,注意的是,這樣是不夠的,要去把 Contacts APIGoogle+ API 啟用,才可以真正使用 Google OAuth 認證服務。

[Read More]

Laravel Homestead 搭配 phpMyAdmin Docker

laravel

相信大家對於 Laravel 推出的 Homestead 開發環境不陌生,本篇不會教學使用 Homestead,直接看繁中官網的教學就可以完成了,Homestead 可以幫助開發者快速架設好 Laravel 環境,當然 Homestead 也適用於 CodeIgniter 的開發,因為兩套 Framework 的環境是一樣的,Homestead 開啟 VM 後,會自動將 Local port 對應到 VM port 如下

  • SSH: 2222 → Forwards To 22
  • HTTP: 8000 → Forwards To 80
  • HTTPS: 44300 → Forwards To 443
  • MySQL: 33060 → Forwards To 3306
  • Postgres: 54320 → Forwards To 5432
[Read More]