文章

目前顯示的是 七月, 2016的文章

Use PTT to track your friends' sleeping habits

00:02:08 不在站上 最近無新信件 23:18:21 123.195.xx.xx 08:26:11 閱讀文章 最近無新信件 08:22:36 111.70.xx.xx 09:00:14 閱讀文章 最近無新信件 08:54:48 111.70.xx.xx 10:36:14 不在站上 最近無新信件 08:54:48 111.70.xx.xx 14:04:11 閱讀文章 最近無新信件 13:58:08 140.136.xx.xx 14:47:15 閱讀文章 最近無新信件 14:44:02 140.136.xx.xx 15:31:08 不在站上 最近無新信件 14:44:02 140.136.xx.xx(隱藏部份資訊)
上面的資訊是之前用 expect 為主體完成的練習題,自動登入 ptt、查詢某位網友的動態、上線時間、ip等資料,再進行資料整理的結果。

利用這些資料,進一步想知道這 ip 的來源,ip 是誰發放的,如果是學術網路的話,又是那一所學校呢?

要完成上述的事項,需要幾個功能。
1. 查詢 ip 發放單位
2. 學術網路各學校的ip分配

指令如下
catptt 1|awk -F ' ' '{print $5}'|sort|uniq|while read x; do  echo $x; whois $x; done
 whois 是自己寫的一個功能,可以查到發放單位及是學術網路的哪個學校的ip
catptt 也是自己寫的,用來顯示每天所收集的資料, 後面參數 1 指的是昨天的資料

以下是 linux 指令
awk: 用來切字串的工具 (好用、推)
(awk -F ' ' '{print $5}' 意思是用空白當切割符號,並印出第五個元素)

sort: 排序資料行

uniq:利用排序過的資料,將重複的資料去除

while read x; do echo $x;whois $x; done
針對每一資料行,顯示 ip 並做 whois 查詢

結果如下
111.70.xx.xx
中華電信股份有限公司

1.168.xx.xx
中華電信股份有限公司

123.195.xx.xx
凱擘股份有限公司

140.136.xx.xx
教育部 - 天主教輔仁大學

42.77.xx.xx
中華電信股份有限公司
reference: 學…

sqlplus 中文亂碼解決方案

原因就不多說了, 總之是資料庫編碼與console viewer編碼不一致, 導致看到的中文變亂碼.
資料庫環境是 ZHT16MSWIN950, 所以設定 NLS_LANG=AMERICAN_AMERICA.ZHT16MSWIN950

----------------------------------------------------

 首先

查詢資料庫 NLS 參數
SQL> select * from v$nls_parameters where parameter in ('NLS_LANGUAGE','NLS_TERRITORY','NLS_CHARACTERSET');

PARAMETER                      VALUE
-----------------------------------------------------
NLS_LANGUAGE                  AMERICAN
NLS_TERRITORY                 AMERICA
NLS_CHARACTERSET        ZHT16MSWIN950

 回到 linux

export NLS_LANG=AMERICAN_AMERICA.ZHT16MSWIN950

終端機->設定字元編碼->BIG5


install oracle client and sqlplus on ubuntu

1. 下載 oracle client、sqlplus

2. 安裝 alien

sudo apt-get install alien

 3. 用 alien 安裝剛下載的兩個檔案 (oracle client、sqlplus)
這邊我下載的是basic lite

ubuntu 32bit:
sudo alien -i oracle-instantclient12.1-basiclite-12.1.0.2.0-1.i386.rpm
sudo alien -i oracle-instantclient12.1-sqlplus-12.1.0.2.0-1.i386.rpm

ubuntu 64bit:
sudo alien -i oracle-instantclient12.1-basiclite-12.1.0.2.0-1.x86_64.rpm
sudo alien -i oracle-instantclient12.1-sqlplus-12.1.0.2.0-1.x86_64.rpm

ubuntu 32bit: 
執行完畢後,安裝路徑在 /usr/lib/oracle/12.1/client  (本次安裝版本是12.1)

ubuntu 64bit:
執行完畢後,安裝路徑在 /usr/lib/oracle/12.1/client64  (本次安裝版本是12.1)

4.  設定 oracle.conf,將 library path 加進去
sudo vim /etc/ld.so.conf.d/oracle.conf
ubuntu 32bit:
 /usr/lib/oracle/12.1/client/lib

ubuntu 64bit:
/usr/lib/oracle/12.1/client64/lib

5. 執行 ldconfig
sudo ldconfig
6. 安裝 libaio1

sudo apt-get install libaio1
7. 手動加入 PATH

ubuntu 32bit:
/usr/lib/oracle/12.1/client/bin

ubuntu 64bit:
/usr/lib/oracle/12.1/client64/bin

8. export LD_LIBRARY_PATH

ubuntu 32bit:
export LD_LIBRARY_PATH…

非同步、交互式程式編寫工具 (sikuli、expect)

非同步、交互式程式編寫工具 (sikuli、expect)

先前發布的相見恨晚自動化測試工具 sikuli,可以用圖案去編寫程式流程,適用於自動化測試、一鍵執行程式及指令。
用 sikuli 編寫程式是很特別的體驗,概念上來說在程式流程裡,因為無法預期下一個作業或圖案的出現時間,常會有 wait 的情形,
這樣非同步的訊息傳遞、接收、執行,在這工具上變得很自然。

這次在 unix 系統上透過 expect 自動連上 bbs,透過 expect 自動收集想要的資料,並經由 log file 取回資料,再做進一步的資料整理。

expect 讓我有一種既視感,啊~就是 sikuli 呀!
寫程式流程時的體驗相近,sikuli 流程控制時,當發現某個圖形就去點擊另一個圖形。
expect 流程控制時,當發現某段文字就輸入你要的文字。
wait then action,又是個不可多得的好工具。

expect 是用 Tcl 語法 (筆者也是第一次看到 Tcl),expect 相關資料很少,不過還是有找到比較完整的語法書。
Welcome to the Tclers Wiki!  





這次以 expect 為主體完成的練習題,自動登入 ptt、查詢某位網友的動態、上線時間、ip等資料,再進行資料整理。
條列中間遇到的一些問題
1. 編碼問題: ptt 是 BIG5 編碼,ubuntu shell 預設是 UTF-8 編碼,所以會出現有亂碼的問題。
解決方法是透過 iconv -f UTF-8 -t BIG5 file_name -o output_file_name  (將 UTF-8 轉成 BIG5)
如果遇到錯誤訊息, iconv: 位置 xxxx 有不合法的輸入序列,可能是語系的問題,locale LANG 設成 BIG5 就可以了。

範例:
[osboxes@osboxes log]$ locale
LANG=zh_TW.UTF-8
LANGUAGE=zh_TW:en_GB:en
LC_CTYPE="zh_TW.UTF-8"
LC_NUMERIC=zh_TW.UTF-8
LC_TIME=zh_TW.UTF-8
LC_COLLATE="zh_TW.UTF-8"
LC_MONETARY=zh_TW.UTF-8
LC_MESSAGES=…

舊有 oracle 管理文章連結

以前在 點部落 的一些 oracle 管理文章. 在這裡做個關聯.

格主的興趣廣泛.

從 oracle 管理到現在 android, python, javascript 開發工作.  到 unix like (ubuntu) 學習.

不管是前台、後台、open source, 什麼都有興趣. IT 人什麼都要學.

格主也樂在其中. 大家就見怪不怪.

舊有 oracle 管理文章連結:  學如逆水行舟

'apt-get dist-upgrade' get error message 'Job for docker.service failed because the control process exited with error code.' after upgrade ubuntu kernel

referenece: [graphdriver] prior storage driver "aufs" failed: invalid argument

精簡版
1. aufs is no longer supported on Ubuntu kernel 4.*
2. trick is 'rm -rf /var/lib/docker/aufs'
3. sudo service docker start

完整操作過程