分類
程式技術

正則表式法表示ip區間

使用正則表示法來表示一個 ip 區間, 例如: 1.2.3.1~64 這樣的表示方式為:

^1\.2\.3\.([1-9]|[1-5][0-9]|6[1-4])$

另外也會有這樣的寫法: (下面是”流量的秘密”這本書中的第246頁寫的, 不過比較有效率的寫法應為上面, 實際上使用最後的 google analytics 的說明幫助頁上產生的亦同上)

^1\.2\.3\.([1-9]|[1-5][0-9]|[1-6][1-4])$

這是因為在 google-analytics中, 若需要新增設定檔用來排除某 ip, 或某區段 ip 時會用到, 如下畫面:
這樣可以很方便的進行某區段的 ip 篩選, 其實 google analytics 的說明幫助頁也有這個功能, 很方便, 自動可以產生某區段 ip 的正則表示法(或稱規則運算式): https://www.google.com/support/googleanalytics/bin/answer.py?answer=55572&hl=zh_TW&utm_id=ad

若需要試看看對不對, 可以利用線上工具來測試: http://www.regexplanet.com/simple/index.html.

如何對遠端web主機取出部分文字內容

這篇文章很單純的一個應用需求, 就是要取遠端文字檔內容, 但該文字檔內容是個 log file, 會隨時間愈來愈大, 如何能只取出部分最後的內容呢? 否則隨時間愈長, 每次取回來都會愈久, 而且其實需要的內容只有最後一部分, 也就是要像 tail 的功能.

若不在遠端主機上寫程式, 就得思考一下 http header 方式如何設定 request, 馬上想到一個續傳的應用, 也就是指定 Range header 的方式來對遠端的 web 主機下達只取出某個部分, 可以參考這裡對 Range header 的說明:

http://www.aslibra.com/blog/post/http_header_detail.php

若依這次的需求, 可以指定只要最後的 50k 的話, 可以利用 Range: bytes=-51200 若用 asp 程式實作可以這樣寫:

 

Set xmlhttp = Server.CreateObject("MSXML2.ServerXMLHTTP")
xmlhttp.Open "GET", "http://webserver/data.log", False
xmlhttp.setRequestHeader "Range", "bytes=-51200"
xmlhttp.Send
xmlData = xmlhttp.ResponseTEXT
Set xmlhttp = Nothing
Response.Write xmlData

這樣一樣可以不用在遠端的 web server 上實作程式, 又能快速地取出最後 50k 的資料內容, 實在非常方便, 又能節能減碳, 利用 Request Header 來解決, 真是快速啊!