Tommy 碎碎念

Tommy Wu's blog

Google
 
SPBW2S2U2 讓 S2U2 可以使用 SPB Weather 2 的天氣資料
post by tommy @ 07 十一月, 2009 23:27

S2U2 對於 SPB Weather 的支援只有到 1.x 的版本. 而 SPB 的討論區裡頭雖然有說到要支援 S2U2, 不過... 也不知道什麼時候才會支援. 所以... 我就動手寫了這個小程式來使用.

檔案放在 http://www.teatime.com.tw/~tommy/files/SPBW2S2U2.7z  

首先... 你的 S2U2 必須在天氣插件那兒設定為 UserWeather, 然後執行 SPBW2S2U2.exe 就可以了. 你可以把 SPBW2S2U2.exe 放到 Windows\啟動 的目錄下, 每次開機自動執行就可以. 如果要離開程式, 只要再執行一次就可以.

程式只在 Samsung i8000 的 Windows Mobile 6.1 中測試過, 不保證不會有問題. 用的人自己小心吧, 本人對使用本程式造成的任何損失均不負責.

程式碼附在裡頭, 要修改的可以自行修改. 至於授權方式? 就當是 public domain 的東西吧, 本人放棄所有權利, 你高興怎麼用這程式或程式碼都可以. 

至於 SPBW2S2U2 的參數, 是放在 HKCU\Software\TeaTime\SPBW2S2U2 底下:

Debug (DWORD):
預設值為 0.
如果是非 0 的值, 會產生 \SPBW2S2U2_log.txt 的記錄檔, 以方便除錯.

UseCelsius (DWORD):
預設值為 1.
0 表示使用華氏, 非 0 表示使用攝氏.

DeleteCacheFile (DWORD):
預設值為 1.
非 0 的值會在讀取 SPB Weather 2 的 Cache 檔案後, 把該檔案刪除.

WaitAfterChanged (DWORD):
預設值為 10.
在偵測到 SPB Weather 2 的 Cache 目錄有更改時, 要暫停的秒數.

CheckInterval (DWORD):
預設值為 0.
如果你的 SPB Weather 2 並不會自動更新 (好像沒有執行時就不會自動更新?), 可以利用這個參數, 讓 SPBW2S2U2 自動透過 internet 去讀取資料來更新 (必須在已經有 internet 連線的情況下). SPBW2S2U2 會在這個設定的秒數之後, 檢查是否有網路連線, 然後去更新資料.

CheckConnectionTimeout (DWORD):
預設值為 5.
檢查是否有 internet 連線的秒數.

 


2009/11/08:

更新一下程式, 修正無法刪除自動抓取的暫存檔案所造成自動更新只有第一次有作用的問題.
之前有抓過的請自己重抓吧.


2009/11/08 13:33:13:

更新一下程式, 自動更新時, 強迫系統重新抓取檔案, 不要使用快取的資料.
之前有抓過的請自己重抓吧.

 


2009/11/09

 

如果需要 .cab 的安裝檔, 可以到這兒抓: http://www.teatime.com.tw/~tommy/files/SPBW2S2U2.CAB

 

Del.icio.us Furl HEMiDEMi Technorati MyShare
取消 Windows Mobile 來電鈴聲延遲 3 秒的問題
post by tommy @ 25 十月, 2009 13:34

最近換了一隻 Windows Mobile 的手機, 發現來電鈴聲會延遲3秒才開始響起. 雖然網路上有找到一些文章, 只要去修改 HKCU\ControlPanel\Sounds\RingTone0\Script 的值, 把裡頭的 w3 移除就可以. 不過... 每次修改設定就必需要再修改一次. 所以... 就動手寫了這個小程式來處理.

檔案放在 http://www.teatime.com.tw/~tommy/files/RingDelayRemover.7z

只要把 RingDelayRemover.exe 放到 Windows\啟動 的目錄下, 每次開機自動執行就可以. 如果要離開程式, 只要再執行一次就可以.

這個程式只是用來監看上頭的 key 值, 如果有任何更改就會把 w3 (只要是 wN 都會移除) 移除, 就不用每次都要手動去改了.

程式只在 Samsung i8000 的 Windows Mobile 6.1 中測試過, 不保證不會有問題. 用的人自己小心吧, 本人對使用本程式造成的任何損失均不負責.

程式碼附在裡頭, 要修改的可以自行修改. 至於授權方式? 就當是 public domain 的東西吧, 本人放棄所有權利, 你高興怎麼用這程式或程式碼都可以.

Del.icio.us Furl HEMiDEMi Technorati MyShare
修正這兩天 phpmsnclass 無法正常使用 MSNP15 的問題
post by tommy @ 25 七月, 2009 13:46

似乎由 7/21 開始, MS 的 server 伺服有些更改, 在 MSNP15 的使用上, 並不會在 USR 指令登入之後送出 SBS 的指令, 這會造成 phpmsnclass 在登入後等待 SBS 的指令而無後續的動作.

所以目前把程式修改一下, 直接在 USR 回應後就處理後續的動作, 不再依靠 SBS 指令處理.

改了之後看起來是正常了. 有使用的朋友, 請更新到 r38 或之後的版本.

Del.icio.us Furl HEMiDEMi Technorati MyShare
修正在 FPDF UTF-8 簡繁中文支援裡頭, AliasNbPages 沒有作用的問題
post by tommy @ 24 四月, 2009 16:31

在之前有提過有人寫了一個 FPDF UTF-8 簡繁中文支援的方案 (作者不是我), 不過, 有使用者反應會造成 AliasNbPages 沒有作用. 剛剛 trace 了一下, 發現在 chinese-unicode.php 裡頭, 就直接把字串轉成 unicode 內碼的十六進位字串了, 所以後來原本的 FPDF 在轉換 AliasNbPages 這個變數時, 自然不會有任何的作用.

舉例來說, 一般內定的 AliasNbPages 是用 {nb} 這個字串, 會變成 007b006e0062007d 的內容, 而在原本的 FPDF 依然是找 {nb}, 自然不會轉換. 因此我們需要針對 chinese-unicode.php 來特別處理這個部份.

你可以在 chinese-unicode.php 的 function PDF_Unicode() 之後,  加上一個 function Uni_putpages() 如下:

function Uni_putpages()
{
if(!empty($this->AliasNbPages)) {
//Replace number of pages
 
// find the pages alias already converted to hex string
$search = '';
$len = strlen($this->AliasNbPages);
for ($i = 0; $i < $len; $i++)
$search .= sprintf("%04x", ord($this->AliasNbPages[$i]));
 
// replace the pages alias with page number (hex format)
$replace = '';
$total_pages = ''.$this->page.'';
$len = strlen($total_pages);
for ($i = 0; $i < $len; $i++)
$replace .= sprintf("%04x", ord($total_pages[$i]));
 
// replace it now
for ($n = 1; $n <= $this->page; $n++)
$this->pages[$n] = str_replace($search, $replace, $this->pages[$n]);
}
}

然後在使用時, 在最後產生 PDF 之前, 記得呼叫這個 function, 如:

$pdf->Uni_putpages();
$pdf->Output();

這樣子應該就可以把頁數轉換出來了.

不過這樣子的處理, 並不保證那個轉換不會造成別的問題. 以內定的 {nb} 來說, 因為只是單純比對 007b006e0062007d 來轉換, 雖然機率不大, 還是有可能會轉錯的. 如果有碰到, 還想避免這個問題, 可以考慮弄個比較複雜的 alias 來使用吧.

Del.icio.us Furl HEMiDEMi Technorati MyShare
phpmsnclass v1.9
post by tommy @ 23 十月, 2008 23:24

更新 phpmsnclass 版本為 1.9. (閱讀全文)

Del.icio.us Furl HEMiDEMi Technorati MyShare
修正 Spreadsheet_Excel_Writer 的 unicode 問題
post by tommy @ 21 六月, 2008 15:10

在經過之前所提過的修正之後, 的確可以在 Excel 的欄位中正確的使用 unicode 了. 不過最近在 Study-Area 有人提到 Worksheet 的名稱與列印的 Header 與 Footer 都不能使用 unicode. 試了一下, 果然不能正確使用. (閱讀全文)

Del.icio.us Furl HEMiDEMi Technorati MyShare
透過 php 更改 ldap 的密碼
post by tommy @ 06 三月, 2008 19:14

一般來說, 我們在使用 php 去檢查使用者的帳號密碼時, 都是直接用該組帳號密碼去執行 ldap_bind() 的動作, 如果成功的話, 表示密碼是對的, 如果失敗的話, 表示密碼是錯的. (唯一的例外是... 如果密碼是空字串, 也會成功, 所以用這個方法要先檢查密碼是不是空的) 如:

if ($password !== '' && ldap_bind($id, "uid=$user,dc=example,dc=com", $password))
echo "password correct!\n";
else
echo "wrong password!\n";

但是, 如果要修改密碼時, 又該如何呢? 我們可以用下面的方式:

if (ldap_mod_replace($id, "uid=$username,dc=example,dc=com",
array('userpassword' => "{MD5}".base64_encode(pack("H*",md5($newpass)))
echo "succeded\n";
else
echo "failed";

就是先用該使用者 (或有權限改密碼的帳號) bind 之後, 去更改 userpassword 這個屬性. 使用 md5 的方式去設定密碼.

Del.icio.us Furl HEMiDEMi Technorati MyShare
Dialogic 在 Linux 上使用 ISDN 的設定
post by tommy @ 02 二月, 2008 16:26

上一篇文章提到了一些在 Dialogic 上頭使用 ISDN 要注意的事項. 不過原本用來測試的平台是用 Windows, 最近系統要上線使用前, 為了方便起見, 我們還是決定轉到 Linux 上頭使用. (閱讀全文)

Del.icio.us Furl HEMiDEMi Technorati MyShare
phpmsnclass v1.8
post by tommy @ 11 十一月, 2007 10:13

更新 phpmsnclass 版本為 1.8.  (閱讀全文)

Del.icio.us Furl HEMiDEMi Technorati MyShare
FPDF UTF-8 簡繁中文支援
post by tommy @ 20 十月, 2007 12:49

以前, 在 FPDF 的中文支援中, 並不支援 UTF-8 編碼, 所以每次要產生 pdf 檔案時, 都要用 iconv 轉成 BIG5 或 GB 來使用. 如果同一段文字有簡體也有繁體時, 這個轉換就會有問題 (不過還好我們之前的案子, 還沒碰到這個問題, 系統把兩種編碼分開來用, 並沒有衝突的情形發生). 後來, 有人改了一個 unicode 版本的 FPDF, 雖然有支援 UTF-8 了, 但是... 作法是把字型檔也整個編入 pdf 檔案中, 結果.... 是可以使用沒錯, 但是... 原本幾 KB 的 pdf 檔案, 變成幾 MB, 根本沒有實用性. (閱讀全文)

Del.icio.us Furl HEMiDEMi Technorati MyShare
Dialogic 使用 ISDN 心得
post by tommy @ 26 六月, 2007 15:29

幾年前曾在 Dialogic 中使用 ISDN 寫過一些程式, 不過... 最近公司有使用 E1 與 Avaya 交換機連線的一些需求. 原本我們只是用一般的 E1 的處理, 所以在內部, 都是直接撥那個 E1 trunk 的 TAC (Trunk Access Code) 就會經由該 E1 的線路進到 Dialogic 的語音卡中. 不過... 我們有些需求, 是要針對每一個 channel 都指定一個分機號碼, 或者是要能夠知道電話是由那一個分機所撥過來的, 這點, 運用單純的 E1 來處理, 試了很久, 一直無法正常使用. (閱讀全文)

Del.icio.us Furl HEMiDEMi Technorati MyShare
在 PHP 中使用 TLS 與 OpenLDAP 連線
post by tommy @ 20 六月, 2007 19:55

首先, TLS 是在 Protocol Version 3 才有提供, 所以必須在 ldap_connect() 之後, 使用 ldap_set_option() 設定使用 protocol version 3 才可以. 如果這樣子處理, 並沒有辦法正確的執行 ldap_bind(), 則必須在你 client 端的 ldap.conf 中, 加上 TLS_REQCERT 這個參數, 其值為 nerver 或 allow 才可以. 如果沒有 ldap.conf, 也可以利用環境變數 LDAPTLS_REQCERT 來設定, 或直接使用 putenv() 來設定這個變數. (閱讀全文)

Del.icio.us Furl HEMiDEMi Technorati MyShare
phpmsnclass v1.7
post by tommy @ 17 六月, 2007 16:08
更新 phpmsnclass 版本為 1.7. (閱讀全文)
Del.icio.us Furl HEMiDEMi Technorati MyShare
phpmsnclass v1.6
post by tommy @ 07 六月, 2007 16:04

更新 phpmsnclass 版本為 1.6. (閱讀全文)

Del.icio.us Furl HEMiDEMi Technorati MyShare
msn.class.php v1.5, fix some small bug
post by tommy @ 06 四月, 2007 18:54

修改之前發送 MSN 的 php calss. 修正一些 bug. (閱讀全文)

Del.icio.us Furl HEMiDEMi Technorati MyShare
msn.class.php v1.4, We can talk to Yahoo now!
post by tommy @ 02 四月, 2007 09:24

修改之前發送 MSN 的 php calss. 修正一些 bug, 並加上與 Yahoo 即時通互傳的功能. (閱讀全文)

Del.icio.us Furl HEMiDEMi Technorati MyShare
想知道別人的程式是怎麼運作的嗎? 試試 oSpy 吧!
post by tommy @ 02 四月, 2007 08:36

前一陣子寫了一個 msn.class.php, 所以研究了一下 MSN 所使用的通訊協定, 主要的資訊, 當然都來自於這個網站上頭. 不過... 上頭對於 MSNP15 的說明有點不太詳細, 有些在 MSNP13 之後所使用的 SOAP 功能, 在我自己的實作上頭, 並不如網站所說的那麼順利, 有些指令怎麼送就是不會成功. 後來, 看到該網站提到的 oSpy 這個軟體, 就抓回來自己試了一下, 結果, 效果實在驚人. (閱讀全文)

Del.icio.us Furl HEMiDEMi Technorati MyShare
msn.class.php v1.3a, a simple msnbot
post by tommy @ 29 三月, 2007 11:08

修改之前發送 MSN 的 php calss. 加入一些小功能, 可以做成簡單的 msnbot. (閱讀全文)

Del.icio.us Furl HEMiDEMi Technorati MyShare
msn.class.php v1.2 (修正 32 位元機器 OIM 問題)
post by tommy @ 13 三月, 2007 18:31
修改之前發送 MSN 的 php calss. 修正在 32 位元的機器上, 無法計算出正確的 challenge code, 因此無法正確發送離線訊息的問題. (閱讀全文)
Del.icio.us Furl HEMiDEMi Technorati MyShare
msn.class.php v1.1
post by tommy @ 13 三月, 2007 11:37
修改之前發送 MSN 的 php calss . 主要是加上 timeout 的設計, 以避免在 MSN protocol 修改之後, 程式可能會有無法結束的情形. (閱讀全文)
Del.icio.us Furl HEMiDEMi Technorati MyShare
使用 PHP 發送 MSN 訊息
post by tommy @ 11 三月, 2007 10:55
最近有個自動發送 MSN 訊息的需求, 是在系統有異常時, 希望可以發送 MSN 訊息通知相關人員 (一般還是發 email, 只是, 多數人並不是隨時都在檢查並讀取 email, 並沒有 IM 的即時效果). 我記得在 Study Area 有看過類似的作法, 找到了這一篇文章 , 打算照著做就可以了, 可惜... 怎麼試都不成功. (閱讀全文)
Del.icio.us Furl HEMiDEMi Technorati MyShare
PostgreSQL ODBC 連線的 client encoding mismatch 錯誤
post by tommy @ 01 二月, 2007 00:01
前天把公司某台主機的 PostgreSQL 由 8.0.3 升級到 8.2.1. 原本以為一切都正常, 不過後來發現, 在另外一台 Windows 的機器上頭, 使用 php 寫的一些透過 ODBC 連線的程式都無法正常執行. (閱讀全文)
Del.icio.us Furl HEMiDEMi Technorati MyShare
避免 PostgreSQL 使用 Full Table Scan
post by tommy @ 04 十一月, 2006 11:07
前不久, 我們公司某個系統, 突然在跑某些報表時, 會使用很久的時間 (數分鐘) 才得到結果, 以往, 同一份報表, 應該幾秒不到就會出來. 查了一下原因, 發現程式並沒有修改, 所使用的 SQL 語法也與以前是一樣的. 嘗試查了一下發生問題之前的資料, 發現很快就得到結果, 但是如果查詢的資料在某一天之後, 就會需要數分鐘才有結果. 看來與程式語法應該沒有什麼關係, 畢竟同一個 SQL 指令, 只是其中某個日期欄位的範圍不同, 結果就不同了. 難道 PostgreSQL 對於這樣應該算是一樣的 SQL 指令, 是使用不同的 plan 才查詢嗎? (閱讀全文)
Del.icio.us Furl HEMiDEMi Technorati MyShare
php odbc 抓不到處理過的 select 欄位?
post by tommy @ 02 十一月, 2006 15:15
我們公司所使用的交換機, 有提供一個軟體可以抓取交換機的資料出來, 這個軟體, 只能在 windows 下頭執行, 且可以定時把我們要的資料, export 到檔案出來. 我們利用 php 寫了幾個小程式, 用來讀取這些檔案, 然後把資料塞回我們使用的 postgresql 資料庫中, 方便我們後頭的分析處理. 而在 windows 下存取 linux 上的 postgresql, 我們是利用 ODBC 來處理. 幾年下來, 一切運作都還算正常. (閱讀全文)
Del.icio.us Furl HEMiDEMi Technorati MyShare
在 PostgreSQL 中轉換 timezone
post by tommy @ 02 三月, 2006 17:25
我們客戶的公司在 Irvine, 使用的時區是 PST, 所以雖然我們目前所在的位置使用的時區是 GMT+8, 不過為了方便起見, 我們幾乎所有的系統都是使用 PST 時區, 當然包括我們使用的交換機. (閱讀全文)
Del.icio.us Furl HEMiDEMi Technorati MyShare
Bad Behavior 已經阻擋了 1045 個過去 7 天試圖闖關的垃圾迴響與引用。
Power by LifeType. Template design by JamesHuang. Valid XHTML and CSS