2011年3月3日 星期四

[Unix] awk 與 bash script 的使用 @ FreeBSD

想說簡單分析一下 squid 產生的 logs ,於是就想到用 bash 與 awk ,不過,過程不是很順利,發現一些 script 使用上的問題,給他筆記一下。



























awk 與 bash script,在 FreeBSD 8.1-RELEASE amd64

#!/bin/sh
touch /tmp/access.log
echo "=== CASE 1 ==="
cmd="awk \"BEGIN{a=1;b=2;}{}END{}\" /tmp/access.log"
echo
echo $cmd
echo
dd=`$cmd`

=== CASE 1 ===


awk "BEGIN{a=1;b=2;}{}END{}" /tmp/access.log


#!/bin/sh
touch /tmp/access.log
echo "=== CASE 2 ==="
cmd="awk 'BEGIN{a=1;b=2;}{}END{}' /tmp/access.log"
echo
echo $cmd
echo
dd=`$cmd`

=== CASE 2 ===


awk 'BEGIN{a=1;b=2;}{}END{}' /tmp/access.log


awk: syntax error at source line 1
 context is
         >>> ' <<<
awk: bailing out at source line 1


#!/bin/sh
touch /tmp/access.log
echo "=== CASE 3 ==="
cmd="awk 'BEGIN{\
        a=1;\
        b=2;\
}{}END{}'
/tmp/access.log"
echo
echo $cmd
echo
dd=`$cmd`


=== CASE 3 ===


awk 'BEGIN{ a=1; b=2;}{}END{}' /tmp/access.log


awk: syntax error at source line 1
 context is
         >>> ' <<<
        missing }
awk: bailing out at source line 1



#!/bin/sh
touch /tmp/access.log
echo "=== CASE 4 ==="
cmd="awk \"BEGIN{\
        a=1;\
        b=2;\
}{}END{}\"
/tmp/access.log"
echo
echo $cmd
echo
dd=`$cmd`


=== CASE 4===


awk "BEGIN{ a=1; b=2;}{}END{}" /tmp/access.log


awk: non-terminated string BEGIN{... at source line 1
 context is
         >>>  <<<
awk: giving up
 source line number 2


#!/bin/sh
touch /tmp/access.log
echo "=== CASE 5 ==="
cmd="awk \"BEGIN{\
a=1;\
b=2;\
}{}END{}\"
/tmp/access.log"
echo
echo $cmd
echo
dd=`$cmd`


=== CASE 5===


awk "BEGIN{a=1;b=2;}{}END{}" /tmp/access.log



簡述一下,在 bash script 使用中,對於 awk 內部的敘述部分,要改用雙引號 " 而不是用單引號 ' ,另外則是敘述句裡頭不能有空白或Tab等。所以搞到最後我就改用 profile 的方式:


#!/bin/sh
touch /tmp/access.log
touch /tmp/awk.profile
awk_profile="BEGIN { \
        a=1;\
        b=2;\
}{}END{}"
echo $awk_profile > /tmp/awk.profile

cmd_out=`awk -f /tmp/awk.profile /tmp/access.log` 


2011年3月1日 星期二

使用 xGPS Manager 製作台灣離線地圖 Zoom Level 0-17

先前在 iPod touch 4 上玩了一下 xGPS ,結果發現 GPS 定位有點問題,找了一些討論,看來 iPod touch 並沒 GPS 天線,導致離線使用時,在外頭並無法進行衛星定位!讓我還滿挫折的,原先一直以為 iPod Touch 4 跟 iPhone 就差在相機的像素跟無法打電話的差別,現在又多了一項了!iPod touch 4 還是適合在 wifi 環境下定位,不然只能說附近的衛星訊號強到可以讓你定位成功 XD


回到主題,之前把玩 xGPS 和 xGPS Manager,覺得這整套軟體還不錯,可以製作離線地圖,實在方便,特別是我家那台美版 iPhone 3G,現在終於可以找到一件事給他做 XD 那就當一台簡單的電子地圖吧!只不過 xGPS 這套軟體,唯一的缺點大概是 UI 操作不是很流暢。


這篇主要是要簡單筆記使用 xGPS Manager 下載全台地圖的大小:


xGPS All Taiwan



  •  環境與設定

    • 勾選 0 ~ 17 全部的 zoom levels

    • 網路速度約 5Mb/s 上下傳





  • 時間花費  

    • 分析待下載的地圖大小,過程約 2~2.5 小時,前面會很慢,大概超過 8% 後會變得比較快並且經過 11% 後就會跳得更快,而最後估計結果是需要 4xxx MB 大小

    • 下載地圖,約 3~3.5 小時





  • 成果


    • 產出 xGPS_map.db 約 1.5 GB (1631596544) 大小




這款 xGPS 適用於 JB 過後的 iOS 設備,改天要來試試 Android 上面的好了,我記得找到的相關文章裡,有一種是產出 SQLite 的,不曉得跟 xGPS 產生的 xGPS_map.db 有什麼差別,另外,網路上可以透過關鍵字找到 1.4GB 的下載位置,但試用的結果並非 0-17 的地圖,這次測試的結果,有 0-17 的地圖可看 :D


2011年2月28日 星期一

幾個 AU-4912 無線網卡的使用問題

最近開始比較常用這張網卡,實在是它的體積很小,很吸引人,之前寫了一篇稍為筆記:USB 無線網卡 - SAPIDO AU-4912 超迷你無線N。用了一陣子,開始發現一些問題,這些問題可能是因為我自己的使用問題,環境資訊:



  • Windows 7 64-bit

  • 網卡數目:主機板內建有線網卡 x1、PCI 有線網卡 x1 、VirtualBox 虛擬網卡 x1,另外,就是這張 USB 無線網卡 x1


其中,我的 OS 有架一個 NAT 服務,也就是上述的 PCI 網卡是拿來架 NAT 的。


問題一:


假設把 AU-4912 架起 Soft AP 時,將導致 PCI 提供的 NAT 服務失效。


這邊可能的解釋是:


對外連線使用主機板內建網卡,當 PCI 網卡提供 NAT 模式時,等同於搶了主機板內建網卡的資源,然而,當啟動 Soft AP 時,此時又變成 AU-4912 網卡搶了系統對外連線資源,導致 PCI 提供的 NAT 服務出了問題。


目前我還沒想到好得解法,大概只有把 Soft AP 關掉時,這時候 PCI 網卡的 NAT 服務才能恢復正常


問題二:


AU-4912 + Windows 7 64-bit


出現藍白當機畫面,顯示資訊關鍵字:RTL8192cu.sys


可能的原因以及解法:


這是因為我買了第二張 AU-4912 無線網卡,把第二張插入主機的 USB 孔時,無論怎樣馬上出現藍白畫面!呈現的內容如上圖。


原先有點失落,也準備去購買的店換一下,只不過工程師的直覺,馬上讓我想到可能的出錯問題:驅動程式與資源的存取,於是開始行動!一開始我想透過 devmgmt.msc 來移除舊的驅動程式,但實在不知該移除哪一項,突然腦筋一轉,直接跑去把 C:\Windows\System32\drivers\rtl8192cu.sys 換個位置(移除驅動程式),於是解決了藍白問題。等同於讓他重新抓驅動程式


這個現象可能是第一張 USB 網卡已經將把相關硬體資訊綁在驅動程式裡,結果第二張 USB 網卡插入時,可能會被當成已經設定 ok ,但當要啟用網卡時就產生問題。我不太確定這個是因為 Windows 7 64-bit 的作業系統的問題,還是 AU-4912 無線網卡本身的設計問題,例如 ID 並非 unique 等


總之,這些現象對一般的使用者來說,應該不太會出現,只能說我使用的環境有些特別吧 Orz  在此順便筆記一下。


2011年2月26日 星期六

[電影] 3 idiots


之前在網路上就看過這個短片,幾個禮拜前,大學認識的學弟跟我說了這部片,要我一定要去看!這部片我今晚看了,豈是一個讚字了得!


裡頭有不少的經驗或觀點的分享,我覺得很 Nice !有些小事跟自己的體驗很接近,例如信念這件事,我在大五那年有了很深刻得體驗,我本身算是個無神論者,但最後我選擇了一種信仰,那追求的是一種心靈的穩定。人都需要一個好的信念,這個信念雖然不會很真實地改變生活,卻能讓人穩定情緒的,最重要的是要樂觀以及進取。


除此之外,我也體會得出那電影中所提及的貧困生活,那卑微地只剩數字可以衡量,這在電影裡也描繪的很生動。另外,也讓我想起工作相關事物,看了這部可以更加讓我確信要走的路 :)


很高興能看了這部電影,希望有興趣的可以抽空看看,我啊,真的越來越愛看低緯度的電影囉!


2011年2月24日 星期四

期待下一次,不如靠自己


好像三年前的廣告吧?去年跟幾位同事閒聊,發現大家對工作的衝勁並不多,今年原先很期待新的案子,結果搞到最後不是做當初說的工作內容 XD 一時間就想到想到這則廣告。過完年就好好思考,不能太期待工作能夠給予你什麼,這條船上大家各有各的盤算,我想,更當規畫自己的目標才是。去年就預約了一本 Android 書籍,春節前剛好輪到我,雖然網路上文獻不少,但有書可翻可以看到完整的筆記,只是偷懶的結果,書到期了卻還沒看完,最後把心一橫,就決定買書了,買了一本拍起來會有四條線的書。


在圖書館是借第二版的,買的是第三版,對我可能也算新書吧?!對於第二版的開頭看幾眼也滿有感觸:


"我們當中有太多人一直在等待, 等著做一些完美的事. 結果是一事無成...", By William Feather , 中譯出於 Android 手機應用程式設計入門第二版 gasolin 著


四條線的書


這本書買的時候很猶豫,因為第三本出版是 2010.01.20,現在連 Android 3.0 都有聲有影了,不過算了,當作支持作者吧 :D 而我這本是 2011 年 01 月第三版 9 刷,看來書賣的不錯喔!另外,我也覺得作者也滿有心的把一些觀念寫在網站上:androidbmi


雖然我喜歡寫 Objective C 勝過 Java (單純覺得前者比較靠近C語言),但未來應該會買隻 Android 的手機來玩玩,可以恣意地把寫好的程式擺上去跑是愉快的,過陣子也會來 build 一下 AOSP 好了。最近看著 Android 開發環境的成熟,越來越感到興奮了,唯一會反彈的大概是 Android 模擬器開起來也太慢了吧,Xcode 三兩下就好了 XD