2016/11/29
2016/09/26
docker nginx reload
根據[官方blog](https://blog.docker.com/2015/04/tips-for-deploying-nginx-official-image-with-docker/)
當 nginx 設定檔更動時, 你不能直接執行 nginx reload, 但幸好 nginx 支援特定 signal 去做 reload
/etc/init.d/nginx reload
```sh
sudo docker kill -s HUP
```
/etc/init.d/nginx restart
```sh
sudo docker restart
```
2016/08/22
將虛擬機器映像檔 匯入AWS EC2
由於必須必須把映像檔上傳至 S3 上才能建立 EC2 的 AMI
所以我們先在S3上建立一個 bucket
```sh
aws s3api create-bucket --bucket vm-image
```
將映像檔上傳至 S3
```sh
aws s3 cp ~/ubuntu.ova s3://vm-image/
```
建立一個名為 vmimport 的 role
```sh
aws iam create-role --role-name vmimport
```
condition 要改為
"sts:Externalid":"vmimport"
開始匯入囉
```sh
aws ec2 import-image --cli-input-json "{ \"Description\": \"Ubuntu\", \"Format\": \"ova\", \"UserBucket\": { \"S3Bucket\": \"vm-image\", \"S3Key\": \"Ubuntu.ova\" } }"
```
之後就是等等等, 當然可以查進度
```sh
aws ec2 describe-import-image-tasks --import-task-ids import-ami-xxxxxxxxxx
```
完成後就會在你的EC2的AMIs看到image囉
Reference:
* http://docs.aws.amazon.com/vm-import/latest/userguide/import-vm-image.html#import-vm
* http://docs.aws.amazon.com/vm-import/latest/userguide/vmimport-image-import.html
2016/07/18
docker 解決 container mount檔案
目前在操作 docker 上會遇到一個問題:
mount 某個檔案或某的目錄到 container 上後修改 host 上的擋案後 container 對應的擋案不會跟著變動
docker container 預設加入 host 至 /etc/hosts
從 docker v1.3.1 起
docker支援了 --add-host 的參數可以再啟動時加入私有主機別名設定 (/etc/hosts)
可參考 https://docs.docker.com/v1.8/reference/run/#network-settings
我們只要再docker啟動時加入 --add-host $NAME:$IP
例如:
docker run -itd --restart=always --name lol_backend -p 80:80 -p $22:22 --add-host db:10.10.10.1 lol_backend
有多筆就加多個囉
docker run -itd --restart=always --name lol_backend -p 80:80 -p $22:22 --add-host db:10.10.10.1 --add-host db2:10.10.10.2 lol_backend
2016/07/01
docker 如何修改 container 中的 RestartPolicy
如何修改 running 狀態的 container 的 RestartPolicy 呢
docker 在 1.11 版中可以透過 update 去更新了
2016/06/29
非管理員權限在透過 homebrew 安裝 iterm2
homebrew 又來拯救工程師啦~
homebrew caskroom的安裝記得先參考以下兩篇:
非管理員權限在 macOS 安裝 homebrew
非管理員權限在透過 homebrew 安裝 robomongo
安裝 iterm2 指令
brew cask install iterm2
這樣就完成了!!
對了, 記得改成將主題改成 monokai
https://github.com/honomoa/monokai.terminal
2016/06/21
vim 游標背景
老了...看東西常常看不清楚...
常常 vim 後找不到游標在哪一行
這時候就該開啟 set cursorline 的功能
你可以在命令列模式直接打上
:set cursorline
或是編輯 .vimrc 加上一行
set cursorline
2016/06/18
如何讓你 macOS 的 terminal 連 SSH 不會自動斷線
這個問題困擾我一陣子了
常常 ssh 看東西一陣子不動它後就會斷線
以前在 windows 用的軟體有內建送出防 idle 的字元出去
不過 macOS 的 terminal 似乎沒這麼聰明啊~
今天找了3個解決方法
這三個方法意思相同, 都是透過 ssh 軟體做設定, 只不過是在不同地方而已
2016/06/16
利用 cloudwatch 監控 ec2 instance 的 記憶體/磁碟使用率
環境: Ubuntu 14.04
1. 安裝相依套件
sudo apt-get install unzip libwww-perl libdatetime-perl
2016/06/15
解決 macOS 的 screen 無法垂直分割問題
這個原因是因為我的 screen 版本是 4.00.04 貌似不支援 split -v
$ /usr/bin/screen -v
Screen version 4.00.03 (FAU) 23-Oct-06
在 mac 下什麼事情用 homebrew 解決就對了
安裝 screen
$ brew install homebrew/dupes/screen
如果你的 homebrew 是用非管理員權限安裝的
那麼記得把 homebrew 的 bin path 加在原本 $PATH 的前面
這樣在下 screen 的時候才不會找到系統下的喔
$ screen -v
Screen version 4.03.01 (GNU) 28-Jun-15
2016/05/05
在 macOS 中中文輸入時暫時切換英文
最近才開始使用 mac 系統,有很多地方都不熟悉
今天心血來潮查了我心中的疑問 --為什麼我輸入中文穿插英文時都會是全形字型
上網查了查 有!有方法
原來輸入中想要穿插英數字時可以按 caps lock 就可以暫時輸入半形英數字囉
再按一次 caps lock 就可以繼續輸入中文!!
2016/05/04
2016/05/03
非管理員權限在透過 homebrew 安裝 robomongo
沒有管理員權限真的是非常的 sucks
還好這世界上還是有優秀的工程師可以繞過去(ex: yoyodiy)
由於 homebrew 沒有 robomongo 的安裝腳本
2016/05/02
sublime 安裝 Package Control
其實這篇蠻廢的
不過常常換個新環境就會忘記 Sublime 的 Package Control 是要另外安裝的XD
1. 到官網依據你的 Sublime Text 選擇適合的腳本
https://packagecontrol.io/installation
2. 按下 ctrl+` 並把剛剛複製的東西貼上執行
3. 重新啟動 Sublime 後, 按下command+shift+p 就可以找到 Package Control 了
非管理員權限在 sublime text 2 安裝 ctags
首先請先參考 非管理員權限在 macOS 安裝 homebrew 與 sublime 安裝 Package Control
將你的 homebrew 安裝起來
接下來就可以利用 brew 安裝 ctags
非管理員權限在 macOS 安裝 homebrew
2019/07/08 更新
由於 homebrew 更新了repository 專案名稱
故原 install.rb 會無法安裝
這邊提供我修改後的版本連結: [install.rb](https://gist.github.com/honomoa/08714fb5b517cc83c063a9337a451470)
---
因為沒有那該死的管理員密碼
所以就要想辦法把所有東西都安裝在家目錄下
1. 首先[下載](https://gist.github.com/honomoa/08714fb5b517cc83c063a9337a451470) 別人處理好的安裝腳本存成 install.rb
```
curl https://gist.githubusercontent.com/honomoa/08714fb5b517cc83c063a9337a451470/raw/6e23f7d73a56dc86e7fa46678b9ce0c7ecb00cdc/install.rb -o install.rb
```
2. 修改第1步驟中的 `YOUR_HOME` 變數改成你自己的家目錄
3. 預先建立目錄
```shell
mkdir -p ~/usr/local
```
4. 執行腳本
```ruby
ruby install.rb
```
5. 新增環境變數 ~/.bash_profile
```shell
export HOMEBREW_PREFIX=${HOME}/usr/local
export PATH=${PATH}:${HOMEBREW_PREFIX}/bin
```
6.
```
source ~/.bash_profile
```
這樣你就可以透過 brew 安裝套件了
參考來源:http://superuser.com/questions/619498/can-i-install-homebrew-without-sudo-privileges
2016/04/29
git 如何移除本地端中 remote 已不存在的 branch
常常我們合併了一個 branch 出去之後必須把該 branch 關掉
通常 git server 都可以在網頁上操作關閉該 branch
可是你的 local 並不會自動移除該 remote branch,所以你下 git remote -a 時就會有一堆你曾經 checkout 過的 branch
可以下
```
git remote prune "你要同步的 remote"
```
他就會把 remote 上不存在的分支從你的本地端移除囉
2016/04/28
2016/04/27
git 好用的 alias
紀錄一下 git 好用的 alias
```
[alias]
co = checkout
ci = commit
di = diff --ignore-space-change --ignore-space-at-eol
st = status -sb
br = branch -v
rt = reset --hard
unstage = reset HEAD
uncommit = reset --soft HEAD^
l = log --pretty=oneline --abbrev-commit --graph --decorate
lg = "log --color --graph --oneline --decorate --pretty=format:'%C(auto)%h%Creset%C(auto)%d%Creset %s %Cgreen(%cr) %C(bold blue)<%an>%Creset' --abbrev-commit"
amend = commit --amend
who = shortlog -n -s --no-merges
g = grep -n --color -E
cp = cherry-pick -x
nb = checkout -b
# 'git add -u' handles deleted files, but not new files
# 'git add .' handles any current and new files, but not deleted
# 'git addall' now handles all changes
addall = !sh -c 'git add . && git add -u'
# Handy shortcuts for rebasing
rc = rebase --continue
rs = rebase --skip
ra = rebase --abort
ri = rebase --interactive
logf = log --follow
purge = clean -d -f -x
head = !sh -c 'git clean -d -f -x && git reset --hard HEAD'
```
nvm 一套 nodejs 版本管理程式
沒有管理員權限,照樣安裝nodejs
幸好有了 nvm 這玩意,可以把 nodejs 裝在自己目錄下
在安裝 global 套件時也沒問題
** ~~nvm 被系統鎖權限時好用的 nodejs 安裝程式~~ **
**nvm 一套 nodejs 版本管理程式**
非常好
首先我們只要執行 readme 提供的指令就可以了
我的 mac 沒有 wget 所以選擇 curl 安裝
```
curl -o- https://raw.githubusercontent.com/creationix/nvm/v0.31.0/install.sh | bash
```
安裝前記得先產生 ~/.bashrc 或是 ~/.bash_profile
不然你的 terminal 不會每次開啟都可以直接設定好喔
結束...
將你 mac 的 terminal 改成 monokai 配色
新工作新 mba 一切都要重新設定,在這邊紀錄一下
我所使用的配色檔是 monokai.terminal
1. 首先 git clone https://github.com/stephenway/monokai.terminal.git
2. 開啟 terminal 並且 import 該描述檔進去就可以了
這樣你的 terminal 就變成美美的
2016/04/26
將你的 vim 改成 monokai 配色
新工作新環境一切都要重新設定,在這邊紀錄一下
我所使用的配色檔是 vim-monokai
1. 首先下載 monokai.vim 並放在 ~/.vim/colors/ 底下
2. 開啟 vim 的 syntax 並設為 monokai
vim 命令模式
# :syntax on 也可以
:syntax enable
:colorscheme monokai
或是編輯 ~/.vimrc
# syntax on 也可以
syntax enable
colorscheme monokai
這樣你的 vim 就變成美美的
2016/04/25
將 canvas 轉為圖檔並下載
紀錄一下新工作第一個討論到的問題
”把手寫簽名轉存成圖檔下載“
// 在此建立一個空的 canvas
var canvas = $('<canvas>');
// 把 canvas 轉成 base64(DataURL) 型態
var imageData = canvas[0].toDataURL("image/png");
// 建立一個 a 讓使用者可以點擊下載
var a = $('<a>').attr('href', imageData).attr('download', 'name.png');
// 把 a 放到網頁上點擊試試看,會下載一個名為 name.png 的空白檔案
$('body').append(a);
下載下來的圖檔是沒有內容的,你可以照你的方式編輯 canvas 之後在下載下來就有內容了
2016/03/15
vim 的分割視窗功能
以前在使用 vim 去比對並編輯兩個檔案的時候我都是用以下兩個笨方法
1. 不停的來回開關 vim 切換作切換
2. 開兩個 terminal 出來
今天終於心血來潮想去找找 vim 有沒有這種功能
以下
:e filename # 編輯另一個檔案
:split filename # 水平分割
:vsplit filename # 垂直分割
ctrl w w # 視窗來回切換
ctrl w 方向鍵 # 切換到該方向的視窗
ctrl w _ # 視窗最大化
ctrl w = # 將所有視窗大小設一樣
ctrl w - # 將視窗大小減少一行
ctrl w + # 將視窗大小增加一行
:hide # 隱藏現在這個視窗
:only # 只顯示現在這個視窗
如果要分割的視窗同步捲動的話就在要同步的視窗中下(兩個分割視窗就切換各下一次)
:set scrollbind
2016/01/20
mongodb 2.6 command 小記
設定 replica set 相關
初始化 replica set
var config = { _id : "repl", members : [ {_id : 0, host : 'repl1:27017'}] };
rs.initiate(config);
修改 replica set 設定
var config = rs.conf();
config.members[1].priority = 0;
rs.reconfig(config);
加入仲裁者
rs.addArb('replarb:27017');
權限相關
新增 user
db.createUser(
{
user: "username",
pwd: "password",
roles: [
'userAdminAnyDatabase',
'dbAdminAnyDatabase',
'readWriteAnyDatabase'
]
}
);
移除 user
db.removeUser('username');
現有 user 加入新權限角色
db.grantRolesToUser(
"backupuser",
[
{ role: "backup", db: "admin" },
{ role: "restore", db: "admin" }
]
);
Capped Collections
建立一個有大小/筆數限制的collection
官方文件: capped-collections
// set on create
db.createCollection( "<collection name>", { capped: true, size: <size in byte>[, max : <num of max documents>] } );
// set on exists
db.runCommand({"convertToCapped": "<collection name>", size: <size in byte>[, max : <num of max documents>]});
2016/01/07
sudo: unable to resolve host
這個問題煩惱我一陣子了
除了每次出現訊息之外
在打 sudo 的時候 還會 lag 好一陣子
嘗試過在 /etc/hosts 加上一筆正解,但還是不行
在這邊提供另一種解決方法
修改 /etc/resolve.conf
加上一筆 domain 就可以了
如果你出現的訊息是
sudo: unable to resolve host moa.sw
那麼就在 /etc/resolve.conf 加上一行
domain moa.sw
我們可以繼續快樂的使用 sudo 了
訂閱:
文章 (Atom)