2011年2月21日 星期一

使用 Python 處理 XML 資料

範例:


<?xml version="1.0" encoding="UTF-8"?>
<TagName AttributeIntName="1" AttributeStringName="test">
<SubTagName AttributeIntName="2" AttributeStringName="example"/>
</TagName>


程式碼:


from xml.dom import minidom

raw_data = """<?xml version="1.0" encoding="UTF-8"?>
<TagName AttributeIntName="1" AttributeStringName="test">
<SubTagName AttributeIntName="2" AttributeStringName="example"/>
</TagName>
"""

if raw_data <> None:
xmldoc = minidom.parseString( raw_data )
for tagInfo in xmldoc.getElementsByTagName('TagName'):
#print tagInfo
_attributeIntValue = tagInfo.getAttribute('AttributeIntName')
_attributeStringValue = tagInfo.getAttribute('AttributeStringName').strip().encode('utf8')
                
               print _attributeIntValue, _attributeStringValue

for subInfo in tagInfo.getElementsByTagName('SubTagName'):
_subAttributeIntValue = subInfo.getAttribute('AttributeIntName')
_subAttributeStringValue = subInfo.getAttribute('AttributeStringName').strip().encode('utf8')
   
                        print _subAttributeIntValue , _subAttributeStringValue


執行結果:


# python t.py
1 test
2 example


 


2011年2月20日 星期日

[Unix] 使用 Tarball 簡易安裝 Squid Proxy Server @ FreeBSD

兩年前曾寫過一篇是安裝在 Windows XP 的,當時只是無聊試完 SSH Tunnel 後找的樂趣。直到出國後,才又回想起 Proxy 的重要性,在台灣太習慣順順的網路以及沒有限制的瀏覽。


去年底在 FreeBSD 8 的環境下,使用 tarball 方式架了 squid ,也不用 root 權限就可以跑在指定的 port 囉,唯一的限制應該是此台機器要有 public ip 以及沒有防火牆的問題,在此筆記一下,此例僅使用 IP 作為使用服務的管控:



  1. 在官網 http://www.squid-cache.org/ 下載 Squid ,在此使用 squid-3.1.11.tar.gz

    • # cd ~/ && mkdir tmp && cd ~/ && wget http://www.squid-cache.org/Versions/v3/3.1/squid-3.1.11.tar.gz



  2. 解壓縮在 ~/tmp 

    • # tar -xvf squid-3.1.11.tar.gz



  3. 編譯並指定安裝在 ~/tarball (此以 /home/user/tarball 為例)

    • # cd ~/tmp/squid-3.1.11 --prefix=/home/user/tarball 

    • # make && make install



  4. 運行

    • # cd ~/tarball

    • # ./sbin/squid -z  (Create swap directories)

    • # ./sbin/squid




接著可以用 ps -aux | grep squid 來查看有沒跑起來:


user    6329  ...   12:49上午   0:00.00 ./sbin/squid
user    6331  ...   12:49上午   0:00.04 (squid) (squid)
user    6354  ...   12:50上午   0:00.00 grep squid


預設使用 3128 port 並且僅允許 localhost 使用,透過 telnet 連一下:


# telnet localhost 3128
Trying 127.0.0.1...
Connected to localhost.domain.
Escape character is '^]'.


透過 sockstat 查看,會有類似訊息:


# sockstat | grep squid
user    squid      6331  6  udp4 6 *:49340               *:*
user    squid      6331  7  udp4   *:49936               *:*
user    squid      6331  13 tcp4 6 *:3128                *:*
user    squid      6329  5  dgram  -> /var/run/log


上述算是簡單跑了起來,但是根本還不太能用,因為此服務僅限 localhost ,假設以 123.124.125.126 此 IP 以及 123.125.0.0 此網域為例:


# vim ~/tarball/etc/squid.conf

acl MyIP 123.124.125.126
acl MyNet 123.125.0.0/16

# ...

http_access allow MyIP
http_access allow MyNet

# And finally deny all other access to this proxy
http_access deny all


設定重新讀取設定檔即可:


# ~/tarball/sbin/squid -k reconfigure


別忘了可透過 ~/tarball/sbin/squid -h 查看有什麼功能可用


其他部分,大概就是改變運行的 port 等用法,在去 squid.conf 裡找 http_port 資訊吧


最後,在 squid 進行服務時,也有一些 logs 檔案可用來監控或查看服務狀態:


# cd ~/tarball/var/logs
# ls -l
-rw-r-----  1 user  group    92  2 21 00:54 access.log
-rw-r-----  1 user  group  2133  2 21 00:54 cache.log


# tail -f access.log
可以看到一些存取記錄 


剩下的有空再來摸摸,例如透過帳密來限制存取 proxy 服務或是寫支 script 分析 access.log 等。另外,由於這次我是架在某長輩管的機器,因為人從國外連回來,讓他看到奇怪的 IP 緊張了一下,特別又是跑了一些網路服務。透過他的分享,原來是平時就保持好習慣,常常透過 last 和 sockstat 來查看系統狀況,真的還不錯喔!偉哉長輩啊。至於我使用 Squid 部分,由於是架給國外親友使用,目前還透過 crontab 定期跑 /home/user/tarball/sbin/squid 哩,因為 squid 預設是 daemon 狀態,所以還滿 ok 啦


補充 - 使用帳密管控 @ 2011/02/21 


在此使用 ncsa_auth 方式,好處是帳密跟原先 proxy server 分開,以免 proxy 帳密遺失導致系統被入侵,其他方式可以查詢 Features/Authentication - Squid Web Proxy Wiki



  1. 確認系統可以是用 ncsa_auth 方式

    • # ls -l ~/tarball/libexec/ncsa_auth
       /home/user/tarball/libexec/ncsa_auth

    • # which htpasswd 
      /usr/local/sbin/htpasswd



  2. 建立 ncsa_auth 帳密檔

    • 暫時擺在 ~/tarball/etc/passwd.ncsa,可以用 touch ~/tarball/etc/passwd.ncsa 或 htpasswd -c 的方式建立

    • # htpasswd /home/user/tarball/etc/passwd.ncsa proxy_user
      New password: 
      Re-type new password: 
      Adding password for user proxy_user



  3. 更新 squid.conf 檔案

    • 透過 IP 和帳密管控可以同時進行,唯一要得留意的是設定檔的順序,要記得把 IP 管控寫在帳密管控的前面,這樣使用 IP 的就不需要輸入帳密

    • # vim ~/tarball/etc/squid.conf


      #
      # INSERT YOUR OWN RULE(S) HERE TO ALLOW ACCESS FROM YOUR CLIENTS
      #


      auth_param basic program /home/user/tarball/libexec/ncsa_auth /home/user/tarball/etc/passwd.ncsa
      auth_param basic children 5
      auth_param basic realm Squid proxy-caching web server
      auth_param basic credentialsttl 2 hours
      auth_param basic casesensitive off 

      acl my_ip src 123.234.123.123
      acl pass_by_auth proxy_auth REQUIRED

      # 留意順序
      http_access allow my_ip
      http_access allow pass_by_auth

    • 重新讀取設定檔就行了! ~/tarball/sbin/squid -k recofigure




轉變

view


老家在市郊,小學三、四年級幾乎每天走路回家,上了國高中,只有兩次從學校走路回家,大概要耗一小時才能到家,偶爾在街上剪完頭髮也會散步走走,看看臭水溝、路邊的雜草,分外愜意。這張圖,看得出來是哪種店面嗎?


這是家鄉火車站前的唱片店,小時還會看到大排長龍的簽名會,上一次無意間看到的藝人活動,好像碩班返家時遇到的,只是地點不是這間,而是附近的光南。這間在 2008 年三月左右,開始往格子商店走,當時一樓只有一面3~5公尺的牆壁,隨著時間,今年應該算第三年了吧?發現擺設唱片影劇的範圍萎縮不少,前方已擺上滿滿的格子商品了,更別說二樓全部的空間都是格子商店。我記得看過火車站前的租屋價碼,大概一個月 15 ~ 20 萬跑不掉。以上述那間店的情況,光出租格子商店的服務,應該還是有小賺喔。


改變,漸漸地抹掉過往的回憶,或許現階段的感傷只是種不習慣的後遺症吧。


2011年2月19日 星期六

專心,把事做好


去年就想寫寫這類心得,但遲遲一直沒下筆,不然就是三兩句就刪光光。記得當年年紀小,每次看到家人下班疲憊的身影,總會丟一句要不要準備考公務人員,說什麼每天下班後抽時間來唸書啊,直到我開始工作後,我發現這樣的想法是稍微無知的,因為一天只有 24 小時,扣掉睡覺、工作時間,好運一點剩八小時,然後又要分給吃飯、交通、洗澡,那放鬆咧?當然也不要忘記!計算下去啊!


前陣子買了電視卡,結果發現下班偶爾會想看兩津堪吉 XD 這動畫我在碩班已經啃過一遍囉,第一次接觸是在大學系計中,當時看著同學再看搞笑的漫畫,還不懂他為啥一直看,直到我看了動畫後,才了解這種真諦,甚至搭客運時,看到旁邊的上班族笑得合不攏嘴呢!只可惜,時間沒拿捏好,就這般地流逝,最後我又回歸到聽廣播的生活了,呃,那台網樂通,還沒啟用說,當初買電視卡算是為了他 XD


這份工作快滿一年半了!常常接觸新東西,缺點也會容易迷失自己,彷佛像別人追隨名嘴投資股市,一件事還沒做完,馬上就得跟著錢人的眼光又走另一條。體會了,專心,是一件很重要的!工作方面,單位裡的強者跳槽了,有很強烈的失落感,就像 CTO 離去了,細想卻也是個不錯的時機點,提醒自己要自行學習留意,不要向雛鳥那般張嘴等技術。另外,工作以外的事情,也將花心力去規劃。今年比起去年的心態好很多,除了收斂外,也開始身體力行去實踐一些計畫,例如簡單的練習寫寫非常簡單的英文等。


剩下的,如同上述影片,除了專心以外,還要有點勇氣。今年對我而言應該是人生中滿重要的一年,希望年末可以有個好收成!


2011年2月13日 星期日

大陸劇 三國演義 DVD


來源:博客來DVD館 > 三國演義(上) 8DVD三國演義(下) 8DVD


週末若上台北,大概會去逛一下賣場,常常會逛逛出清價的影音區,例如動畫一片 19 元、老電影一片 29 元等,一兩年前的戲劇大概賣 158,貴一點的賣199元。上述就是三國演義的大陸劇,一盒也是一樣都賣 199 元,當下十分心動!另外也有看到韓劇愛在哈佛等的,全集也只要 199 吧。


原本以為只有我會這樣,但旁邊大概站了兩位媽媽或阿罵級的,手裡一拿就是五六盒,彼此還在分享哪部已經收藏了,好讚啊。我現在比較不清楚的是各部的情況,例如三國演義,我記得兩三年前在亞洲唱片有看到一樣是兩盒裝,一盒可要價 450 元,而在賣場也有看到的是三盒裝,一盒是 158 元的,但感覺 199 那包裝的比較精美,在博客來上面也查到 199 的發行是 2011/01/20 的喔!


逛逛網路,才發現其實網路上的購買也不會太麻煩,但沒有比較便宜多少,還有運費問題,如:



大多都可以從左邊的分類慢慢找尋。另外,Adios大神也留言提醒,有的 DVD5 有的是 DVD9 ,查了一下這個應該是儲存技術,DVD9比DVD5儲存容量大,所以有的 DVD 片比較少,另一個需要留意的是影像畫質,不過這些我都還沒經驗,如三國演義數位復刻版(上)DVD三國演義數位復刻版(中)DVD三國演義數位復刻版(下)DVD三國演義-桃園三結義DVD(1-26集)+三國演義-赤壁之戰DVD(27-51集)+三國演義-三國統一DVD(52-84集) 等。


回想起來,上一次在賣場看到動畫快打炫風,分兩片,共 2x 集的樣子,一片僅需19元說!一直沒把全部看完,當下也動心想買,最後還是收手,覺得沒啥時間看 XD 最近也有感看電視花費時間很多,正要努力規劃生活,影音收藏計劃就慢慢來吧!