RegExp物件的group元素取出方式

真的很妙……

這篇是要說明 RegExp 在 VBScript (WShell, ASP皆同) 內使用的狀況, 今天正在解決一個解析指令的語法, 想說利用 Regulare Expression 這個好物來處理一下, 結果真是令人不開心啊. 因為查了半天 msdn, 都沒有找到將 group 元素取出的方式, 所以整個就是失落(因為明明就應該是有方法可以取出來才對). 查到的文件在這裡:

http://msdn.microsoft.com/en-us/library/ms974570.aspx

想說怎麼會沒有這個語法呢? 真的是太奇怪了. 於是再到 google 另外查了一下, 發現其實還有個 SubMatches 的 collection 啦, 原來如此, 這個才是真的拿到 group 元素的方式, 想來真的是自己沒有仔細查找清楚, 只能再做個筆記自己記錄一下.

msdn 其實是有資料的, 在這裡:

http://msdn.microsoft.com/en-us/library/y27d2s18(VS.85).aspx

好地, 回到主題, 簡單地說, 今天原來要做的需求很單純, 就是將一個控制指令中的各項參數取出, 如下:

control_[series]_batch_[bno]_target_[tno]_end

這樣的一個字串, 將其中的 [series], [bno], [tno] 取出來, for example, 像是這樣的一個指令:

control_276324_batch_23_target_14_end

要將其中的 276324 及 23 及 14 取出, 若是用 parse 的方式比較麻煩, 就是一個一個比對下去, 但用 RegExp 就方便了, 既能檢查 pattern, 又可以將參數一次取出, 一舉兩得, 接下來就著手來作業了, 程式碼如下:

strCmd = "control_276324_batch_23_target_14_end"

Set objReg = New RegExp
objReg.Pattern = "control_([0-9]+)_batch_([0-9]+)_target_([0-9]+)_end"
Set objMatches = objReg.Execute(strCmd)
If objMatches.Count > 0 Then
  series = objMatches(0).SubMatches(0)
  bno = objMatches(0).SubMatches(1)
  tno = objMatches(0).SubMatches(2)
End If

Set objReg = Nothing

若是指令(strCmd)是多組, 也可以一次都處理完成, 利用 objMatches(i) 來取得, 不過就是要將 objReg.Global 設為 True 就是了.

這樣就可以一口氣將 series, bno, tno 全數取得, 一方面檢查看指令是否符合 pattern, 一方面又可以將所需要的參數取出, 豈不快哉!?

分類
Windows 懶得分類

快速kill process的方式(Windows)

手邊剛好在處理一個大量 process 未結束於系統上的一個問題. 該 server 不知什麼原因, 在起動 cgi 程式時, 發生了這個現象, 偶發的不會自行結束, 於是在系統內就留下了許多該 process 的名稱. 利用 task manager 會看到大量的 process, 雖未佔用 cpu, 不過會吃掉一部分的記憶.

在不方便重開 server 的狀況下, 如何快速地將相同名稱的 process 一起刪除呢? 於是上網想查看看有沒有什麼方便的小工具可以做這件事. 結果很順利地找到系統內建的一個指令: taskkill

這個指令是給定要刪除的 pid 或 image name (就是執行檔名稱), 來進行 process kill 的動作. 簡單研究一下, 進行了測試, 效果相當不錯, 800多個 process 一下就刪完了, 使用的指令如下:

taskkill /IM mytest.exe /F

如此一來, 所有 mytest.exe 的 process 一口氣就被 kill 完成了.

另外有許多方便的參數可供使用, 詳情可以利用 taskkill /? 來取得說明, 列表如下:

TASKKILL [/S system [/U username [/P [password]]]]
{ [/FI filter] [/PID processid | /IM imagename] } [/T] [/F]

Description:
This tool is used to terminate tasks by process id (PID) or image name.

Parameter List:
/S system Specifies the remote system to connect to.

/U [domain\]user Specifies the user context under which the
command should execute.

/P [password] Specifies the password for the given user
context. Prompts for input if omitted.

/FI filter Applies a filter to select a set of tasks.
Allows “*” to be used. ex. imagename eq acme*

/PID processid Specifies the PID of the process to be terminated.
Use TaskList to get the PID.

/IM imagename Specifies the image name of the process
to be terminated. Wildcard ‘*’ can be used
to specify all tasks or image names.

/T Terminates the specified process and any
child processes which were started by it.

/F Specifies to forcefully terminate the process(es).

/? Displays this help message.

Filters:
Filter Name Valid Operators Valid Value(s)
———– ————— ————————-
STATUS eq, ne RUNNING |
NOT RESPONDING | UNKNOWN
IMAGENAME eq, ne Image name
PID eq, ne, gt, lt, ge, le PID value
SESSION eq, ne, gt, lt, ge, le Session number.
CPUTIME eq, ne, gt, lt, ge, le CPU time in the format
of hh:mm:ss.
hh – hours,
mm – minutes, ss – seconds
MEMUSAGE eq, ne, gt, lt, ge, le Memory usage in KB
USERNAME eq, ne User name in [domain\]user
format
MODULES eq, ne DLL name
SERVICES eq, ne Service name
WINDOWTITLE eq, ne Window title

NOTE
—-
1) Wildcard ‘*’ for /IM switch is accepted only when a filter is applied.
2) Termination of remote processes will always be done forcefully (/F).
3) “WINDOWTITLE” and “STATUS” filters are not considered when a remote
machine is specified.

Examples:
TASKKILL /IM notepad.exe
TASKKILL /PID 1230 /PID 1241 /PID 1253 /T
TASKKILL /F /IM cmd.exe /T
TASKKILL /F /FI “PID ge 1000” /FI “WINDOWTITLE ne untitle*”
TASKKILL /F /FI “USERNAME eq NT AUTHORITY\SYSTEM” /IM notepad.exe
TASKKILL /S system /U domain\username /FI “USERNAME ne NT*” /IM *
TASKKILL /S system /U username /P password /FI “IMAGENAME eq note*”

給大家參考!

參考資料: XP: kill a Windows process from the command line with taskkill

分類
好用軟體

Firefox實用的佈景主題(縮小工具列)

在現在大螢幕的顯示器上似乎不是問題. 不過在小小NOTEBOOK上, Firefox 上面落落長的工具列(Toolbar)可就是很佔用可視空間的殺手咧.

這個Add-On名稱為Classic Compact, 其實直接看了就明白了, 很單純的目的, 就是把你的上面工具列(還包含了menu選單及分頁的頁籤, 就是FIRE上面整個能縮的都縮了)縮小, 節省的空間還蠻驚人的, 我們來比較看看, 使用前共高190px, 使用後共142px, 如下:

看起來真的節省不少高度上的空間, 尤其對於NOTEBOOK來說, 桌面大小是很侷限的狀況下, 能有效利用桌面的空間, 相對是很重要的, 這個Add-on相當值得使用!

官方網址: https://addons.mozilla.org/en-US/firefox/addon/3699

給大家參考看看囉!

PS. 不過對於使用Firebug的用家們提醒一下, 在下方的Firebug console是不會有任何變化的, 也不會變小!!

分類
懶得分類

使用google adsense for mobile content

好一陣子沒去看 google adsense 的獲利狀況, 今天心血來潮去看了一下, 發現多了個 adsense for mobile content, 因為 TatterTools 本來就有 mobile 的版本, 所以上 google adsense for mobile content 是不困難的事.

來看一下在 google adsense 新增的這個服務吧:

呈現的結果是這樣的:

於是進行申請並植入程式碼. 不過有趣的地方是在於他的程式碼和一般的 adsense for content 的 client side javascript 或 html code 是不同的, 他必須將 code 放在 server side code, 也就是在 server 上執行產出 html 供 mobile client 使用, 這個原因是因為大多數的 mobile client 對於 javascript 的支援性並不好, 而且也有相容性的問題, 所以必須使用這種方式來產生較相容的 html 供 mobile client 使用.

支援的 server side 程式語言目前共有4種, 分別為 php, perl, jsp及asp, 細項版本說明如下:
* PHP v4.3.0 或以上版本
* CGI/Perl v5.8 或以上版本
* JSP v1.2 或以上版本
* ASP 3.0 或以上版本

yam天空的Email信箱也用gmail平台了

今天登入了 Yam 天空的信箱, 發現這個公告:

原來他們已經改用gmail的平台做Email的服務了, 看起來原來免費的信箱也慢慢成為檢討的成本, 往 gmail尋求解決之道了. 不過和原來的介面完全不同(當然完全不同, 因為已經是gmail了啊), 所以其實就和gmail是一樣的, 只是左上角的logo不一樣而已. 這樣的狀況看起來對Yam天空來說也是節省了大量的server及維護的資源, 基本上應該也是件好事.

但是長得像 gmail 的 yam mail也有種怪怪的感覺呢!

相關閱讀:
Yam天空Email信箱改用Gmail平台了!
天空 yam 的新郵件系統也用 Gmail !!

分類
懶得分類

微軟將於Visual Studio整合jQuery進來了!!

最近的消息, 微軟將於Visual Studio嵌入jQuery這組Open Source的函數庫了. 可以參考下面文章連結: 微軟Visual Studio將嵌入開放源碼jQuery程式庫

jQuery, 有在寫 Web application的工程師應該不陌生, 好用又洗鍊的語法, 方便容易使用的方式, 整個和 Web UI 可以做相當方便結合的一組 library 最近因為微軟的這個消息, 對於之前投資學習 jQuery 的 developer 們來說, 真是個不錯的好消息.

當然, 無論是否於 Visual Studio 內嵌入 jQuery, 大家也都可以直接於 web application 上使用這組 library 沒有什麼大問題, 不過相信對於整合度及方便性來說, 能夠和 Visual Studio 整合當然是再好不過了.

不過和原來的 AJAX 那組 framework 要怎麼整合, 如何取捨, 或是同時並存也是一個有趣的課題. (據消息來說應該是會改用 jQuery)相信這個消息對於已經同時正在使用 asp.net 開發及 jQuery library 的 developer 來說真是個好消息呢.

相關文章及連結:
google blog search: link
微軟將在 ASP.NET 相關產品中全面支援 jQuery
jQuery进入微软和Nokia的解决方案
微軟也搶著支援jQuery?
jQuery從此有名有分,我出運了!