- RINGING (3):遠端振鈴,該聽到 ringback tone
- -1:遠端接通,該停止 ringback tone
- SRCUPDATE (20)
- 數個 SRCUPDATE 加上 HOLD (16):遠端進行 Attended transfer,該聽到 Music on hold
- UNHOLD (17)、RINGING (3):遠端振鈴,持續 Music on hold 或變為 ringback tone
- SRCCHANGE (26)、CONNECTED_LINE (22):轉接完成,停止 Music on hold 或 ringback tone
- SRCUPDATE (20)
2013年7月21日 星期日
Asterisk channel indications for transferee
撥通後,被轉接 (Blind transfer 或 Attended transfer),從 channel .indicate 收到的 indicatations
2013年7月16日 星期二
一篇 awk 文章筆記
如何在 Linux 與 GnuCash 上使用 Awk 進行文字搜尋與排序
筆記:awk
筆記:awk
- 處理文字檔案的命令檔語言
- 將檔案中的每一行視為個別的記錄,一行中的每一個項目則是個別的欄位。
- 對每一行都會套用一個「樣式{動作}」,如果符合樣式,就執行指定的動作。如果沒有樣式,表示對每一行都執行該項動作;如果沒有動作,表示要顯示符合樣式的行。
- 經典的方式是以 /etc/passwd 來作說明,列出 UID 與用戶名稱
$ awk -F":" '{ print $3 " " $1 }' /etc/passwd- -F 用來定義欄位分隔字元,預設是 tab 或空白
- $0 代表整行,$3 是第三個欄位 UID,$1 是第一個欄位用戶名稱
- 搜尋文字,顯示區塊 (grep 難以作到)
- 語法:awk '/開始樣式/,/結束樣式/'
- 從完整 lspci 輸出中找出特定設備
$ lspci -v | awk '/VGA/,/^$/'
- /^$/ 會找出文字區塊間的空白行
- 截取不重複記錄並儲存在新的檔案中
$ awk '!x[$0]++' filewithdupes > newfile
- 要對正規表示式有不錯的理解,作者推薦 Mastering Regular Expressions 這本書
2013年7月14日 星期日
IP CAM = Web CAM + Wi-Fi router
有 USB 的 Wi-Fi router 安裝 OpenWrt、Web CAM 驅動程式、mjpg-streamer,接上 Web CAM,就變成 IP CAM
相關文章
相關文章
2013年7月13日 星期六
FIVN Asterisk Management GUI
FIVN 的 Asterisk GUI 可以查看 Asterisk 設定、狀態、紀錄檔,也可以編輯 Asterisk 設定檔,適合用在資源有限、並提供 CGI 的網頁伺服器。提供 non-commercial 使用,commercial 用途則需詢問原作者。
整個 GUI 相當精簡,只有下列檔案:
在網頁伺服器資源有限的環境,就要利用瀏覽器端較充足的記憶體及運算能力,使用 JavaScript 產生網頁,用 AJAX 去網頁伺服器只取得必要的資料或執行必要的動作。網頁伺服器需要支援 CGI 以便呼叫 asterisk.sh,處理 AJAX 的 HTTP POST 請求,會有 action 參數指示要執行什麼動作,而可能需要其它額外參數,包括 command (Asterisk 指令)、file (Asterisk 設定檔檔名)、content (檔案內容)。
雖然只是個精簡的 GUI,Asterisk 的設定需要透過直接編輯 Asterisk 設定檔完成,但可作為不錯的參考。
關於 CGI (Common Gateway Interface):
整個 GUI 相當精簡,只有下列檔案:
- asterisk.html:Asterisk GUI 網頁,實際上只是用來載入下列 js 檔及 css 檔,產生網頁內容。
- asterisk.js, main.js:產生網頁的 JavaScript,並透過 AJAX 去網頁伺服器取得需要的資料或執行動作。
- settings.js:網頁顯示設定
- style.css, loading.gif
- asterisk.sh:在網頁伺服器端負責執行動作的 shell script,包括取得資料、儲存檔案等。
- readme.txt:說明檔
在網頁伺服器資源有限的環境,就要利用瀏覽器端較充足的記憶體及運算能力,使用 JavaScript 產生網頁,用 AJAX 去網頁伺服器只取得必要的資料或執行必要的動作。網頁伺服器需要支援 CGI 以便呼叫 asterisk.sh,處理 AJAX 的 HTTP POST 請求,會有 action 參數指示要執行什麼動作,而可能需要其它額外參數,包括 command (Asterisk 指令)、file (Asterisk 設定檔檔名)、content (檔案內容)。
雖然只是個精簡的 GUI,Asterisk 的設定需要透過直接編輯 Asterisk 設定檔完成,但可作為不錯的參考。
關於 CGI (Common Gateway Interface):
- CGI 是網頁伺服器呼叫外部程式的界面,有點像是副程式。網頁伺服器判斷瀏覽器要請求的網址是 CGI 程式時,就會將請求的參數存在環境變數後去呼叫 CGI 程式,並將請求的內容透過標準輸入傳給 CGI 程式。網頁伺服器會將 CGI 程式執行結束的回傳資料 (標準輸出) 傳給瀏覽器。
- 網頁伺服器需要靠 CGI 程式產生動態資料 (未必是 HTML 網頁,例如給 JavaScript 的資料為未必是 HTML 格式),不然只能取到靜態資料。
- CGI 程式可以用任何支援的程式語言撰寫,只要能接收輸入並回傳結果。
- 可能會有安全問題。
- 一個 CGI 介紹及範例:http://ind.ntou.edu.tw/~dada/cgi/
2013年7月12日 星期五
Digispark
Digispark 是基於 Attiny85 微控器的 USB 發展板,類似 Arduino,但較便宜、較小、較省電,可使用 Arduino IDE。使用軟體 USB,主機需要安裝 Digispark USB driver,而不是使用一般的 USB to serial 驅動程式。8 KB flash 中 bootloader 佔 2KB,另外有 512B RAM、512B EEPROM。
電源可來自 USB 或外接 5V,或者外接 7~35V 透過板上的 regulator 轉換。Attiny85 只有 8 根接腳,除了 5V 跟 GND 外,有 6 I/O 接腳:
電源可來自 USB 或外接 5V,或者外接 7~35V 透過板上的 regulator 轉換。Attiny85 只有 8 根接腳,除了 5V 跟 GND 外,有 6 I/O 接腳:
- 2 for USB 燒錄程式用,之後可作為 I/O
- I²C and SPI (via USI)
- PWM on 3 pins
- ADC on 4 pins
2013年7月9日 星期二
lua interpreter
指令 lua 是 Lua 直譯器 (interpreter),可執行文字檔或 bytecode 格式的 Lua 命令檔,也可以用在互動模式。
指令格式:
lua 首先會執行環境變數 LUA_INIT 的內容,LUA_INIT 也可以是「@filename」格式,會去執行 filename 的內容。
script 是 Lua 命令檔,整個指令行每個欄位會變成執行 script 時,名為「arg」的全域表格,其中
編輯 hello.lua,內容如下:(說明:print("印出的字串"),用「..」結合字串)
script 檔案的第一行如果是「#」開頭,會忽略。如果寫成「#!/usr/bin/lua -v」,在 Linux 檔案就可以直接執行。
指令「luac arg.lua」會將 arg.lua 編譯成二進位的 lua bytecode 程式 luac.out,用法跟 arg.lua 一樣,只是加速 lua 載入時間,不用再編譯成 bytecode。bytecode 檔並不表示執行較快,或檔案較小。
指令「lua -e stat」直接執行 lua statement stat。例如「lua -e 'print("Hello Word")'」
指令「lua -」執行來自 stdin 的 lua 程式,例如「echo 'print("Hello Word")' | lua -」
lua option「-l name」用來載入 library,相當於呼叫 require('name') 。
只執行指令「lua」進入互動模式,prompt the user and execute lines from the standard input。輸入 end-of-file 字元結束,在 Linux 是 Ctrl-D, 在 DOS/Windows 是 Ctrl-Z (Ctrl-Z 在 Linux 會讓程式進入背景執行), 或呼叫來自 os library 的 os.exit()。
References
指令格式:
lua 首先會執行環境變數 LUA_INIT 的內容,LUA_INIT 也可以是「@filename」格式,會去執行 filename 的內容。
script 是 Lua 命令檔,整個指令行每個欄位會變成執行 script 時,名為「arg」的全域表格,其中
- arg[0]:是 script
- arg[1] 開始分別是每一個 args,每個 args 如果有空格或其它 shell 特殊字元,則需要加 quoted。shell 會移除這些 quotes。
- #arg:args 的數目,也等於最後 argument 的 index
- arg 負的 index 包括 script 前面的指令行,一直到 interpreter 名稱。
編輯 hello.lua,內容如下:(說明:print("印出的字串"),用「..」結合字串)
# this line ignored在 shell 執行指令
print("number args:"..#arg)
print("arg[-2]:"..arg[-2])
print("arg[-1]:"..arg[-1])
print("arg[0]:"..arg[0])
print("arg[1]:"..arg[1])
print("arg[2]:"..arg[2])
print("arg[3]:"..arg[3])
LUA_INIT='print("LUA_INIT first")' lua -v arg.lua Hello Word "last arg"其輸出如下:
LUA_INIT first可看出 lua 先執行 LUA_INIT,然後選項 -v 顯示版本訊息,最後才是執行 arg.lua 的結果,印出 args 數目及所有 args,其中 last arg 中間有空格,所以需要用 quote。
Lua 5.1.5 Copyright (C) 1994-2012 Lua.org, PUC-Rio
number args:3
arg[-2]:lua
arg[-1]:-v
arg[0]:arg.lua
arg[1]:Hello
arg[2]:Word
arg[3]:last arg
script 檔案的第一行如果是「#」開頭,會忽略。如果寫成「#!/usr/bin/lua -v」,在 Linux 檔案就可以直接執行。
指令「luac arg.lua」會將 arg.lua 編譯成二進位的 lua bytecode 程式 luac.out,用法跟 arg.lua 一樣,只是加速 lua 載入時間,不用再編譯成 bytecode。bytecode 檔並不表示執行較快,或檔案較小。
指令「lua -e stat」直接執行 lua statement stat。例如「lua -e 'print("Hello Word")'」
指令「lua -」執行來自 stdin 的 lua 程式,例如「echo 'print("Hello Word")' | lua -」
lua option「-l name」用來載入 library,相當於呼叫 require('name') 。
只執行指令「lua」進入互動模式,prompt the user and execute lines from the standard input。輸入 end-of-file 字元結束,在 Linux 是 Ctrl-D, 在 DOS/Windows 是 Ctrl-Z (Ctrl-Z 在 Linux 會讓程式進入背景執行), 或呼叫來自 os library 的 os.exit()。
- lines are read until a complete statement is formed or a syntax error is found
- 一種中斷不完整的 statement,強迫 syntax error 的方式是輸入「;」。
- If a line starts with '=', then lua displays the values of all the expressions in the remainder of the line. The expressions must be separated by commas.
- The default prompts are "> " and ">> ". The global variables _PROMPT and _PROMPT2 can change the prompts.
References
- man lua
- man luac
- 本站 Lua 相關文章
訂閱:
意見 (Atom)
SIP header Via
所有 SIP 訊息 都要有 Via,縮寫 v。一開始的 UAC 和後續途經的每個 proxy 都會疊加一個 Via 放傳送的位址,依序作為回應的路徑。 格式 sent-protocol sent-by [ ;branch= branch ][ ; 參數 ...] s...
-
列出目錄的檔案。 opendir(目錄) 或 fdopendir(fd) 開啟一個 directory stream (DIR),包含此目錄的所有檔案 (含目錄)。readdir(DIR *) 自 directory stream 取得一個檔案,用 struct direct ...
-
-l:輸出 Long Listing 格式,包括下列資訊: 檔案 type and permissions:有 10 個字母,第 1 個字母是 file type: -:一般檔案 b:block device c:character device d:direct...
-
APRS(Automatic Packet Reporting System)字面翻是「自動封包回報系統」,其實是「自動位置回報系統』,是業餘無線電結合全球衛星定位系統 (GPS),以 AFSK AX.25 通訊模式回報給世界各地的 APRS 接收電台,電台再透過網際網路上傳到 ...
