Stark Wong 的個人開發網站
 



 此頁面:更新於 2014 年 3 月 4 日 18 時 55 分 15 秒,頁面處理需時 0.0099 秒
 網站內容版權所有(C)Stark Wong。頁面(不包括檔案)可自由連結。網站系統版本 1.21 (2014/3/4)

暫停流動巴士版圖NG版資料庫更新

由於這個網站空間目前服務極不穩定,故暫時停止流動巴士版圖NG版的下載數天以判斷造成不穩定的原因。服務預計於2014/8/5暫時恢復。


撰寫於:2014/8/31 00:49:42 / 回應:0
實戰克服 HP 筆記本的 WLAN 白名單封鎖

昨天遇到了一個個案,一台 HP 的舊筆記本要將原配的無線網路卡換成新的 Intel AC 7260 mPCIe 網路卡,不過由於 HP 的 BIOS 有 WLAN 白名單導致開始時出現 104-Unsupported wireless network device detected. 錯誤,以下是解決問題的過程:

機種:hp DM3-1107TX
原網路卡:Atheros AR9285
BIOS:InsydeH2O EFI (無 RSA 加密)

經網上搜尋後,此問題基本有兩個可能的解決方法:
1. 將白名單檢測停用
2. 把白名單的原有項目換成新的項目

看起來似乎第一個方法更一勞永逸,於是依照 http://goo.gl/NanzAv 的方法將 BiosLockPcie 模組的程式碼改成永遠檢測成功,結果是能成功開機,而且也能檢測裝置並安裝驅動程式,只不過安裝驅動程式後發現網路卡永遠處於關閉狀態,而且在連線工具中試圖開啟硬體時也提示需要先用硬體開關來開啟,但筆記本的無線開關現在只能控制藍芽開關,即使是亮藍燈時網路卡仍然是處理硬體關閉狀態,也就是這修改結果失敗。

於是只能從第二個方法著手,由於網上搜不出成功的教學 (此 EFI 用 ADCCC 無法正常解壓),所以只能自行測試出來。

所需工具:
1. Andy 的 PhoenixTool (http://goo.gl/LEXuJi)
2. 帶 16 進制多檔搜尋功能的 16 進制編輯器 (我使用 MadEdit)
3. WinRAR 或 7-zip

步驟:
1. 用 WinRAR 或 7-zip 開啟下載回來的更新程式 (例如 SP51603 中的 142EF19.exe),將所有檔案解壓到任意目錄備用
2. 解壓的檔案可能有超過一個 bin 檔案,請進入 EFI 設定檢查 Board ID 決定哪個 bin 是正確的
3. 用 PhoenixTool 開啟該 bin 檔案 (例如 142E.bin),遇到幾個提示全部按確定
4. 在 Manufacturer 選擇 HP,然後按 Advanced,再按是
5. 勾選 Allow user modification of modules, Always allow user modification of modules, Allow user to modify other modules 及 No SLIC,然後按 Done
6. 按 Go,然後會顯示可手動修改的提示,請勿按 OK
7. 進入 bin 檔案所在目錄,現在會多了一個 DUMP 目錄
8. 用 MadEdit 開啟任何一個 ROM 檔案
9. 先組合現有網路卡的搜尋字串,例如 PCI\VEN_168C&DEV_002B&SUBSYS_3040103C&REV_01 的16進制搜尋字串為 8C162B003C104030 (其實就是把前3個部份每個部份以反序填上,即 Little Endian)
10. 在 MadEdit 的多重搜尋功能搜尋該字串,如無意外應該會找到 4 個結果
11. 將那些部份換成新卡的搜尋字串 (例如 AC 7260 是 8680B10886807040)
12. 修改後儲存,然後關閉 MadEdit
13. 回到 PhoenixTool,然後按 OK 重新合成新的 ROM 影像
14. 完成後在 bin 目錄找出附加了 _SLIC 的 bin 檔案,然後複製到第 1 部解壓的目錄並改回原檔案,即可使用 InsydeFlash 進行更新,完成後系統會自動關機,再開機後就會發現網路卡可以使用,而且無線切換開關也能控制該卡了!

關於那 4 個檔案:
那 4 個檔案根據檔案名稱,其實每個模組都由 3 個檔案組成,其中第 2 個就是程式碼本身,第 3 個是模組名稱,其中包括 SetupUtility,BiosLockPcie,PostKeyFnDrv 和 MiscSubclass。SetupUtility 的只是用來在系統資訊中顯示網路卡 FCC ID 的對應,應該不修改也沒問題 (反正我是一起改了);BiosLockPcie 是主要檢測白名單的部份,錯誤 104 就是出自這個模組;PostKeyFnDrv 是開機畫面的模組;MiscSubclass 是提供給其他模組使用的資料。

無線網路卡現在是好了,那麼藍芽呢?
如果你的 Intel (Motorola) 藍芽也能成功偵測出來那就恭喜了,但如果沒有偵測出來的話是什麼問題呢?問題是出在板載的 HP Integrated Module with Bluetooth Wireless Technology,這個 USB 裝置是焊在機板上不能更換的,而 mPCIe 無線網路卡上的藍芽模組同是 USB 裝置,HP 似乎是把 mPCIe 上的 USB 線路改接到那藍芽芯片,所以那個 mPCIe 是沒有 USB 線路的。據網上的說法,由於 WWAN 的匯流排有 USB 線路,所以若要恢復那個功能,只能從 WWAN 插座飛線過去,這個我就沒嘗試了,反正板載的藍芽還能用。


撰寫於:2014/8/24 22:13:58 / 回應:0
有關 Samsung Galaxy Tab Pro/S 8.4 無法安裝小熊來電通知

自從 6 月底開始,我就開始收到有用戶發現在 Play Store 中無法安裝小熊來電通知,理由是與裝置不相容。剛開始我以為是裝置太新導致 Play Store 未能支援,但到了現在仍然有用戶表示同樣情況。

小熊來電通知並未對任何小米以外裝置進行 Play Store 排除 (也沒有任何理由要進行排除),所以問題是出在 Google 或三星,建議受影響的用戶向三星投訴,讓他們正視有關問題 (因為據我所知,受影響的程式不僅是小熊來電通知,也有其他程式有相同情況)。

對於上列裝置,目前唯一的方法是透過第三方網站下載程式進行安裝,惟注意從第三方網站下載軟件安裝會有風險,並需自行承擔。


撰寫於:2014/8/7 22:22:38 / 回應:1
暫時停用傳統版流動巴士版圖的更新功能

由於本網站最近突然繁密出現流量過多的錯誤,在查明原因前現在暫時關閉傳統版流動巴士版圖的更新功能,程式更新會回到未有更新功能前的模式,流動巴士版圖NG則不受影響。


撰寫於:2014/8/4 23:23:03 / 回應:0
小熊來電通知不對任何小米裝置進行支援

由今天開始,所有使用小米手機(任何型號)的使用者均不會再在 Google Play 商店中找到小熊來電通知,我這樣做的目的是要維護 Android 系統生態平衡而對小米 MIUI 進行抵制的措施。

Android 系統本身含有一系列廣播事件讓各種應用程式可以視需要要求接收所需的事件,而對系統或私隱比較重要的廣播事件需要定義使用相關權限,也會在安裝時提示使用者需要相應的權限,由使用者決定是否繼續進行安裝。可能有人會覺得安裝時確認並不足夠,所以就有權限管理程式的出現。在 目前版本的 CyanogenMod 也有權限管理程式,而且是以 Opt-In 方式運行,也就是使用者要拒絕特定程式權限是使用者本身是清楚知道他在做什麼。但是,小米在 MIUI 中所引入的權限管理程式則是以 Opt-Out 方式運行,也就是預設所有第三方軟件都不允許使用權限管理程式所指定的權限,然而小米並沒有清楚告訴使用者有「權限管理程式」的存在,也沒有在第三方程式使用並拒絕操作時提示使用者,導致使用者向程式開發者投訴程式沒有效用,這就是目前小熊來電通知在 MIUI 系統所遇到的問題。

我在這裡非常堅決認為責任在於小米而並非開發者,而開發者亦無責任由於 MIUI 的問題而去買一部小米電話去看看如果把那個權限管理程式關閉,所以除非小米願意改善這方面的問題:
1) 初始安裝時詢問使用者是否開啟權限管理員並明確提示使用者如何在較後時間修改權限管理設定 2) 當第三方程式第一次被拒絕權限時需以清楚的方法通知使用者並提供方式讓使用者允許操作

在小米能做到這兩點之前,小熊來電通知會無限期將所有 (包括以後推出的) 使用 MIUI 的小米裝置剔出 Google Play 商店的支援清單,而對手動刷入 MIUI 到非小米手機的使用者的支援電郵也不會進行任何回應。

對於富經驗的 MIUI 使用者,你只需把 Build.prop 的機型改成非小米即可再次找到軟件並下載,當然你仍然要在權限管理程式將小熊來電通知加到白名單被啟用相關權限。

對於純因為便宜而購買了小米手機的一般使用者,你可以選擇不使用小熊來電通知或將小米手機賣掉再去買回一部使用真正 Android 系統的手機。

2013/12/17 補充:

有網友發現某些版本的 MIUI 在安裝時有一個名為 “Trust This App” 的選項,只要把它開啟就有可能給予完整權限,但還是同一個問題:預設是關閉的,在沒人告訴你那個選項有什麼用的情況下誰會去在安裝軟件前特別把那個選項開啟?如果是預設開啟的話使用者特意去嘗試新軟件時倒是有可能知道有危險而把那個選項關閉再繼續安裝。也有其他網友表示那個選項並沒有作用。

我把支援清單的句子劃掉並非指我取消了這項動作,而是因為某些原因 Google Play 商店中所列出的小米裝置似乎均不是目前流通的型號,所以事實上是我無法進行剔除,但我對此事的態度不變,仍然不會對無法使用而求助的小米用戶提供任何支援。

2014/4/21 補充:

更多補充見 http://www.studiokuma.com/skcf/xiaomi.html


撰寫於:2013/12/15 19:53:03 / 回應已關閉
流動巴士版圖(原版)終止開發通知

由於「流動巴士版圖NG」已進行測試一段相當長的時間,現在是時候原版退出歷史任務了,因為兩個版本同時存在除了令維護時增加工作量,亦限制了進行結構更改的可能性,所以原版流動巴士版圖將會於3月31日後停止操作並強制使用者使用NG版本。曾經進行捐款的使用者可直接在NG版本確認裝置以移除廣告。

至於流動巴士版圖NG將來的發展目前其實並不樂觀,因為程式目前主要依賴巴士公司所提供的路線資料,然而最近無論是九巴還是新巴都不斷在路線資料更新當天產生各種問題,導致我在更新路線資料時需要花上更多的時候進行手動修正,他們繼續這樣下去有朝一天可能會迫使我放棄整個專案,不過我可以保證至少在2014年6月10日前(這是接收最後一宗捐款往後計算一年)仍會繼續更新,至於若此日期後兩間巴士公司在資料準確性更加下降或更改網站主要佈局時我將無法保證我會繼續更新。如果我最終決定放棄專案,我會在一個月以前透過部落格宣佈,而程式 (Android 及 iOS 版本) 將於正式放棄日期當天立即下架,所有與此專案有關的程式、程式碼、資料及工具均不會考慮轉讓。


撰寫於:2013/12/15 19:29:18 / 回應:4
注意!請勿在 Samsung Apps 下載本工作室軟件

我是迫於無奈才寫出這個通知,請各位不要在 Samsung Apps 下載本工作室的任何軟件,因為都是已不再維護的舊版本,而我亦不會再更新該站的版本。

Q: 為什麼不再更新?
A: 因為 Samsung Apps 的發佈手續非常麻煩,而且有很多不利於同時在 Play Store 發佈時的限制

Q: 為什麼不直接把軟件下架?
A: 因為我無法把軟件下架!那是多麼爛的網站系統。我嘗試下架時網站提示我的軟件都在 Channel Promotion 無法下架,但卻不提供任何方法停止進行 Channel Promotion。我也嘗試直接刪除開發者帳號,可惜開發者帳號只能在所有軟件都已下架的情況下才能刪除。

Q: 你可以在軟件說明裡讓用戶不要下載嗎?
A: Samsung Apps 限制了必須在更新軟件時才能修改軟件描述,我也相信如果我更新軟件時在描述裡讓用戶不要下載的話,根本沒機會通過審核 (這裡在 Samsung Apps 留下的就一直會是上一個版本)

所以我在 Samsung Apps 裡現在的狀態基本上是失去控制,能做的就只有在這裡發通知而已…


撰寫於:2013/10/9 19:39:54 / 回應:7
如何讓 Java 的 GCM 接受更多全型字元

只要用 Java 傳送 GCM 的多語訊息時都一定遇到過一個問題:直接把中文寫進訊息裡送出,接收時會發現所有全型字元都消失了,網上一般找到的方法都是讓你以 URL Encode 把字元轉換後再加到訊息中,不過我最近嘗試用 php 送出 GCM 訊息時發現一個現象:

- 若使用 Java 傳送中文訊息,客戶端接收到的訊息是經 URL 編碼的 (例如「字」會收到 %E5%AD%97)
- 若使用 php 傳訊中文訊息,客戶端接收到的訊息直接是中文字!

顯然用 php 傳送的訊息才是正確的,因為不需要再經過 URLDecode 就可以直接使用了,那麼問題究竟出現在哪裡?GCM 的伺服器端程式碼是沒問題的,但問題是在於它用來製作 JSON 的 json simple 1.1,json simple 1.1 在遇到全型文字時並沒有依照 JSON 的標準將文字變成 \uXXXX 而是直接寫出去,這樣就令 Google 的 GCM 伺服器把全型文字全部丟掉。

要解決這個問題並不困難,只需要借助 Apache Commons 的 Lang 套件就可以解決,把它的 escape() 換成 StringEscapeUtils.escapeEcmaScript() 就可以解決一切問題。

不過,這樣改有什麼好處?只要知道 URL Encode 與 JSON Encode 對一個中文字的轉換就知道了,拿剛才的「字」為例,以 URL Encode 轉換後是 %E5%AD%97 (9個位元組),而 JSON Enocde 後則是 \u5B57 (6個位元組),每個字能節省 1/3 空間佔用對限制 4KB 的 GCM 訊息是相當有用的,更不用說一般符號會由佔用 3 位元組變成只用 1 位元組!

我在這裡提供已經修改好的 json_simple 1.1 的 jar 及原始碼,可於 http://d.pr/f/FLje 下載。


撰寫於:2013/10/9 19:28:30 / 回應:0
小熊來電通知 GCM 裝置資料庫轉移完成

小熊來電通知的 GCM 功能其實已經測試了好幾個月,但還是未能作為正式功能,最大的原因是壓力測試時發現 GAE (Google Apps Engine) 的資料庫儲存部份無法很有效率地儲存裝置 ID,導致儲存/載入超過100000宗資料時速度慢和很容易超過免費使用的資料庫讀寫次數。

現在藉由將資料庫部份轉移到獨立的 PHP+MySQL 空間,基本上可解決資料庫的問題,至於是否將整個 GAE 的 GCM 前台部份都進行轉移則需進行測試再決定。

但現在解決 GCM 用戶數的問題,就可以將 GCM 功能正式應用,預定只要啟動自動更新功能 (無論是選擇即時安裝還是特定時間安裝) 都會啟動 GCM 功能並使用極速攔截清單改進清單的即時性 (若系統不支援 GCM 時則會沿用現有方法定時檢查資料庫)。

相關修改會在未來幾次更新時逐一完成。若有任何意見歡迎發推或以電郵提出。


撰寫於:2013/9/29 23:41:44 / 回應:3
有關小熊來電通知的私隱聲明

因應私隱專員公署發表的報告,現作出如下聲明:

  1. 小熊來電通知是與攔截電話及短訊有關的軟件,相關的權限是必需的
  2. 小熊來電通知含有忽略手機聯絡人及檢查回報的號碼是否聯絡人,故需要讀取聯絡人的權限
  3. 小熊來電通知需要下載資料庫及網上回報功能,需要網路權限
  4. 小熊來電通知可以選擇從來電記錄中刪除剛被過濾的號碼,需要讀取及寫入來電記錄權限

其他的權限在 Play Store 的軟件介紹中已詳述

至於某電視台強調的讀取 IMEI 情況,今天更新的軟件版本已修改這個情況,最新版本的軟件並不會以 IMEI 作為裝置 ID。

總而言之,我還是那句話。我自己保證軟件本身不會讀取及上傳任何個人資料,所有權限都是因為你們所要求有的功能所以才需要的。你不相信的可以不用而找另一個軟件來用,我並沒有要脅任何人必須使用。


撰寫於:2013/8/13 23:37:59 / 回應:9
其他較舊內容請移步至舊部落格版面