發表文章

筆記:此"巿"非彼"市"

最近處理資料遇到一個問題,明明看起來很像的兩個中文字串,範例如下: 高雄巿鼓山區河西一路1437號 高雄市鼓山區河西一路1437號 但是搜尋比對就是搜尋比對不到 用出絕招(HEXDUMP)之後才知道這兩個字不一樣。 上面的"巿" UNICODE編碼是 5dff (T2-213D) 上面的"市" UNICODE編碼是 5e02 (T1-464B) 上 http://unicode.org/charts/ 查了一下,兩的字顯示出來都是類似。 繼續追查下去,在詳記說明文件 http://www.unicode.org/charts/PDF/U4E00.pdf 看到幾個關鍵字:CJK,在 WIKI  中日韓統一表意文字  知道了 CJK是中日韓,還有引伸的CJKV,加上越南這四個有用到中文的國家。 往下翻,提到T1 T2的說明: T1:  CNS 11643-1986第一字面,約八千字 T2:  CNS 11643-1986第二字面,約八千字 到這裡終於水落石出,某個資料來源用了比較罕見、上面那點垂直的"巿",所以電腦把他們當作不同字,但是人眼不特別看還看不出來。 所以在字串處理上又多一個對應字置換的環節,來處理相似字的問題。 順帶一提,之前看雨狗的網誌  http://raindog.pixnet.net/blog/post/33734339 提到類似的問題,雨狗的專業跟觀察力也非一般人啊! 參考資料: Unicode官方: http://unicode.org/charts/ http://www.unicode.org/charts/PDF/U4E00.pdf http://www.unicode.org/cgi-bin/GetUnihanData.pl?codepoint=5DFF&useutf8=true WIKI: https://zh.wikipedia.org/wiki/%E4%B8%AD%E6%97%A5%E9%9F%93%E7%B5%B1%E4%B8%80%E8%A1%A8%E6%84%8F%E6%96%87%E5%AD%97 https://zh.wikip

[密技] 利用 Google Drive 簡單架網站

參考來源: http://www.wfublog.com/2014/11/google-drive-html-page-skill-editey.html 步驟: 1. 本地端把網站資料程式(HTML/CSS/JS)設計好 2. 把整個網站的目錄拖曳上傳到 Google Drive 3. 取得主機位址。例如本來 Google Drive 的目錄網址為 https://drive.google.com/drive/folders/FOLDER_ID 改成 https://drive.google.com/drive/folders/FOLDER_ID/xxx.html 開啟上述網址就可以開啟由Google Drive的網站

[自由網路] 如何取得 Google Drive (真實)外連位址 (Direct Link)

方法1: 付費( 多謝站長指正 ) 成為以下網站的會員,就可以享有站長自製的外連產生器 http://www.wfublog.com/2015/05/google-drive-direct-link-widget-v2.html 方法2:透過 gdocs2direct 把分享連結轉換城真實外連網址 https://sites.google.com/site/gdocs2direct/ 使用時遇到大檔,Google 會跳檔案太大的提示,這時候需要略為修改一下網址列的參數,例如: 原來網址  https://drive.google.com/uc?export=download&id=FILE_ID 要改成 https://drive.google.com/uc?export=download& confirm=YzWC &id=FILE_ID 就可以繞過提示直接下載了 方法3:土砲DIY無敵 A FOLDER_ID + 檔案名稱 1 假設 Google Drive顯示的目錄網址為: https://drive.google.com/drive/folders/0123456abcdef 後面的0123456abcdef就是FOLDER_ID 2 代入以下公式就可以得到外連網址 https://googledrive.com/host/FOLDER_ID/檔案名稱 備註:外連網址也可以用來架站 B FILE_ID 下載 1 透過共用連結取得FILE_ID 例如共用連結為 https://drive.google.com/file/d/0123456abcdef/view?usp=sharing 中間的0123456abcdef就是FILE_ID 2 代入以下公式就可以得到下載網址 https://drive.google.com/uc?export=download&id=FILE_ID 相關連結: http://stackoverflow.com/questions/14728038/disabling-the-large-file-notification-from-google-drive http://www.broculos.net/2013/04/how-to-u

Darkstat DB parser patch

Here is the note to parse the Darkstat DB. Phil's original post:  http://phil.lavin.me.uk/2011/11/parsing-a-darkstat-database-with-php/#comment-207432 Darkstat's official DB format doc:  https://unix4lyfe.org/gitweb/darkstat/blob_plain/98907547c4c1b4b4dda1dc10d20643e2b680b352:/export-format.txt I tried to parse the Darkstat DB by Phil's code and found issues. However the blogger is not update since 2014 so let's hack this by myself. There are two bugs in the PHP source code: IPv6 address reader: IPv6 address is 128 bit long but the "readaddr_ipv6" function read 512 bits (8x8 bytes) hence the code stopped once IPv6 header is shown. function readaddr_ipv6($db) { $ip = array(); for($i = 0; $i < 8; $i++) { $ip[] = bin2hex(fread($db, 2)); //$ip[] = bin2hex(fread($db, 8)); //scott marked } return implode(':', $ip); } IP family decoder Raw data is "0x04" and "0x06" but PHP

Android 4.1.2 FB 無法室內定位解法

症狀: 我的新手機有個狀況是 Google 自己的 地圖室內室外都可以定位,但是需要定位資訊的程式如FB、InstaWeather都無法室內定位,一定要有GPS鎖定才有位置。打開FB等老久之後,卻但到許久之前的位置。 系統版本: Android 4.1.2 解決方法: Android 跟定位有關的設定有幾處: 系統設定->位置存取->存取我的位置 系統設定->位置存取->GPS 衛星 系統設定->位置存取->Wi-Fi 與行動網路位置 系統設定->帳號與同步->Google->位置設定->允許Google 應用程式存取您的位置資訊 遇到問題時,以上幾處檢查是否有開啟,另外可以嘗試重新關掉打開的動作。 以我的狀況為例,帳號與同步那項本來就是打開狀態,然後重新把帳號與同步那項關掉打開,室內定位功能就恢復了,跟大家分享

Defy 刷機筆紀

Jetter原創教學 (mobile01) http://www.mobile01.com/topicdetail.php?f=567&t=2139005&last=28380177   全圖案補充版 http://jack089452.pixnet.net/blog/post/30323098-moto-defy-(mb525)-%E5%88%B7%E6%A9%9F%E6%95%99%E5%AD%B8-(2012-2-7%E6%9B%B4%E6%96%B0)  

Linux serial port programming: read always success but no vaild data

在非標準的輸入程序模式下, 輸入的資料不會被組合成一行而輸入後的處理功能 (清除, 殺掉, 刪除, 等等.) 都不能使用. 這個模式有兩個功能控制參數: c_cc[VTIME] 設定字元輸入時間計時器, 及 c_cc[VMIN] 設定滿足讀取功能的最低字元接收個數. 如果 MIN > 0 且 TIME = 0, MIN 設定為滿足讀取功能的最低字元接收個數. 由於 TIME 是 零, 所以計時器將不被使用. >>>block and wait for data 如果 MIN = 0 且 TIME > 0, TIME 將被當做逾時設定值. 滿足讀取功能的情況為讀取到單一字元, 或者超過 TIME 所定義的時間 (t = TIME *0.1 s). 如果超過 TIME 所定義的時間, 則不會傳回任何字元. 如果 MIN > 0 且 TIME > 0, TIME 將被當做一個分割字元組的計時器. 滿足讀取功能的條件為 接收到 MIN 個數的字元, 或兩個字元的間隔時間超過 TIME 所定義的值. 計時器會在每讀到一個字元後重新計時, 且只會在第一個字元收到後才會啟動. 如果 MIN = 0 且 TIME = 0, 讀取功能就馬上被滿足. 目前所存在的字元組個數, 或者 將回傳的字元組個數. 根據 Antonino (參考 貢獻) 所說, 你可以用 fcntl(fd, F_SETFL, FNDELAY); 在讀取前得到相同的結果. >>>default setting and result the read always return success without vaild data Reference: http://www.linux.org.tw/CLDP/OLD/Serial-Programming-HOWTO-3.html