時常有些機會寫了需要存取單一檔案且耗時許久的 shell script, 為了避免重複執行相同的 script 而覆蓋單一檔案,為了避免 race condition,必須查看是否已經執行了另外一隻程式,這些確認過程其實相當繁雜。

若寫過 C 語言,便知道有個函數是 flock (2),這個函式可以幫你在檔案上做 “advisory lock” (意思是,其他程式可以忽略你所下達的 lock 指令,而逕行複寫),但若你只是需要讓自己的程式知道檔案已被鎖住使用中,這倒是非常好用的函數。

Debian 系統中在新一點的 util-linux-ng加入flock (1) 指令,於是可以在 shell script 中如此鎖定特定檔案,如此便可避免單一程式重複執行、或複寫到同一個檔案。

#!/bin/shLOCKFILE=/tmp/script.lock
(
flock -n -x 200
if [ $? -ne 0 ] ;then
echo "The script is running already. bye"
exit
fi
date -R
read
) 200> ${LOCKFILE}

這是一篇 Tips.

今日設定了一個新的 Trac host, 為了方便眾人使用,期待預設用單一帳號登入,但是由於該組織使用的 LDAP Server 必須接上 VPN 才能存取,頗為不便。

貪圖省事的前提下,打算讓所有使用者都透過 POP3 Server 認證,由於 POP3 Server 已經接上 LDAP Server 作單一認證,因此最終還是可以使用單一帳號、密碼存取服務。

Continue reading

偶爾需要執行線上的廣告活動,會透過線上論壇、電子報、線上廣告等送出連結,一個線上活動績效最重要的就是評估各種媒體的點閱數。

如果純粹透過單一的網址,由於電子郵件內的連結點閱不會出現參照網址,因此在 Google Analytics 或其他的網站觀測工具中都難以估計活動成效。

最好的辦法是更改連結網址,而又盡量不要透過轉址的方式來做連結統計,以便網址被貼到公開網站上時,因為不同的獨立轉址網址造成 Page rank 下降,目標客戶反而搜尋不到正確的網址。

比較簡單的作法是透過網址參數來追蹤不同的連結來源,如此便可以「標記」不同的網址,可參考 Google 說明文件的「連結標記」說明與 URL 產生器

近日拜訪了幾個多媒體網站,發現 Debian 下的 GNU IceWeasel (GNU IceWeasel 是 FreeFirefox) 預設開啟的軟體是 Totem.

Totem 運作的還不錯,可惜的是某些檔案格式還是沒有 mplayer 處理的好。所以還是來改了一下預設的軟體吧

  • 作法是在瀏覽器列地址列鍵入 “about:config”
  • 在任一的設定值上按下右鍵,並選擇 “New” 與 “String”
  • 鍵入 “network.protocol-handler.app.mms”
  • 輸入欲使用的軟體指令名稱或全部路徑- 如 gmplayer 或 xinekaffeine
  • 再按下右鍵,並選擇 “New” 與 “Boolean”
  • 鍵入 “network.protocol-handler.external.mms”
  • 下一個視窗中選擇 “True”

如此即可。:-) 這是一篇 Tip.

你曾經在使用 Firefox 時,在網頁表單中輸入過錯誤的資料嗎?而這些資料就這麼被錯誤的存起來,下次回到這頁時,你得一次又一次的小心不要選錯打錯資料,否則你就得一口起清除掉所有的已存表單資訊。

剛在 Mission Data 上見到一個小技巧。你可以在欄位輸入時,以方向鍵按「上」、「下」,選擇 (反白) 錯誤的資料,然後按下 Shift + Del 就可以刪掉錯誤的資料啦。

我的讀者們,真抱歉,最近忙爆,只能寫些短篇小技巧。