2017/12/15

正規表示式 Regular Expression ?= Positive Lookahead Assertion


正規表示式(Regular Expression) 是一個用來描述或是比對某個規則的文字

一直以來我都沒有很透徹地去瞭解他每個pattern

都是看到什麼自己不知道的用法才去查

2017/08/01

取得EC2 instance的instance id



由於使用的 Amazon CloudWatch Monitoring Scripts for Linux 在建置新環境後會有 cache 在 `/var/tmp/aws-mon` 下

如果 instance id 改了會造成 aws-mon 回報錯的 id 回去導致新機器沒有資料

解決辦法可以刪除 `/var/tmp/aws-mon/instance-id` 這個檔案或是透過以下指令取代為新的

```sh
$ wget -q -O - http://169.254.169.254/latest/meta-data/instance-id > /var/tmp/aws-mon
```

除此之外 http://169.254.169.254 裡面還藏了很多資訊

可以參考 [http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-instance-metadata.html](http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-instance-metadata.html)

2018/09/25 補充
發現了 ec2metadata 這個指令可以更容易獲取一些資訊

```sh
$ ec2metadata --instance-id
```

2017/06/01

在 ubuntu 中建置 kamailio 伺服器


kamailio 是一款 sip server 可以用來做 voip 網路語音通話

他們前身是 OpenSER, 也有分支 Opensips

在這邊介紹如何在 ubuntu 14.04 建置 kamailio


由於個人比較偏好直接用別人打包好的套件做安裝,剛好官網也有提供 http://deb.kamailio.org/

安裝 kamailio
```sh
# 使用 apt-get 安裝
echo "deb http://deb.kamailio.org/kamailio trusty main" >> /etc/apt/sources.list
echo "deb-src http://deb.kamailio.org/kamailio trusty main" >> /etc/apt/sources.list
sudo apt-get update
sudo apt-get install kamailio
```

記得安裝 mysql modules
```sh
sudo apt-get install kamailio-mysql-modules kamailio-tls-modules
```


編輯 /etc/kamailio/kamailio.cfg
```sh

# #!開頭的會是 kamailio 的 script 語法, 在這邊定義啟用 mysql 跟用 db 做認證
#!define WITH_MYSQL
#!define WITH_AUTH

# 把機器自己的 public ip 設成一個 alias
alias="aws public ip"
```


設定 db
```sh
# 編輯 /etc/kamailio/kamctlrc

SIP_DOMAIN=aws public ip
DBENGINE=MYSQL
DBHOST=localhost
DBNAME=kamailio
DBRWUSER="kamailio"
DBRWPW="kamailiorw"
DBROUSER="kamailioro"
DBROPW="kamailioro"
DBROOTUSER="root"
USERCOL="username"
```

初始化 db
```sh
kamdbctl create
```

新增帳號
```sh
kamctl add 1000 1000 #kamctl add 帳號 密碼
```

全部設完記得重啟
```sh
sudo /etc/init.d/kamailio restart
```

sip客戶端:

* android 5: linphone、ECOA Sip
* android 6: linphone、sipdroid
* iOS: linphone
* macOS: YateClient

2017/05/22

在 ubuntu 中建立 swap


1. 建立 swap 檔
```sh
sudo fallocate -l 1G /data/swap
sudo chmod 600 /data/swap
sudo mkswap /data/swap
```

2. 編輯 /etc/fstab 加入系統啟動自動掛載
```sh
/data/swap none swap defaults 0 0
```

3. 自動掛載 fstab 設定的 swap
```sh
sudo swapon -a
```

4. 查詢 swap
```sh
swapon -s
# 或
free
```

2017/04/19

手動編譯 php *.so 檔


由於在同一環境中有不同版本的 php 同時運作

所以舊版 php 的 shared object 套件無法使用 pecl/pear 安裝

那就自己 build 吧