跳到主要內容

發表文章

Mac版 Java 7 取得檔案 MIME type 的方式

現行 Java 取得檔案 MIME type的標準方式是透過 Files.probeContentType(Path path) 取得 最近處理同事回報的問題才發現這個方式在Mac版的 Java 7 有bug 官方錯誤列表: http://bugs.java.com/bugdatabase/view_bug.do?bug_id=7133484 而且應該只會修正Java 8以後的版本 目前測試改用 URLConnection.guessContentTypeFromName(String fileNmae) 也是一種可行的方式 如果MIME type相關的程式有可能部署在 Mac環境的 Java 7的話,需要注意這個問題

Java Nashorn Engine 的 setTimeout 使用方式

之前想透過 Java 的 Nashron 執行 setTimeout 這個定時執行的 JavaScript 函式碰到問題 看起來 Nashorn 並沒有實作關於非同步的 JavaScript 機制 我並沒有花太多時間查閱相關規格,只能猜想也許他鼓勵設計者使用 Java 的 async 機制 不過有時候需要執行的JavaScript Code 沒辦法排除 setTimeout 而改寫成 Java code 查到的相容寫法如下: var setTimeout, clearTimeout, setInterval, clearInterval; (function () {     var timer = new java.util.Timer();     var counter = 1;     var ids = {};     setTimeout = function (fn,delay) {         var id = counter++;         ids[id] = new JavaAdapter(java.util.TimerTask,{run: fn});         timer.schedule(ids[id],delay);         return id;     }     clearTimeout = function (id) {         ids[id].cancel();         timer.purge();         delete ids[id];     }     setInterval = function (fn,delay) {         var id =...

從 Android device 取得App crash log

參考資料: https://wiki.cyanogenmod.org/w/Doc:_debugging_with_logcat Android developer 大概都會有協助測試 app 執行狀況的需求 不過如果不是用 Android Studio build 的話,crash report 只能從 device本身拿出來才看的到 以 Windows 為例的取得方式如下: 1.Win+R 叫出執行後,輸入 cmd 啟用命令提示字元 2.切換到 Android SDK 底下的 platform-tools 目錄 C:\Users\vencil>D: D:\SubPrograms\AndroidSDK\tools>cd D:\SubPrograms\AndroidSDK\platform-tools 3. 下指令 adb logcat *:E > [destination] 就可以將log輸出到目的檔案裡了 D:\SubPrograms\AndroidSDK\platform-tools>adb logcat *:E > D:\errlog.log 如果想在不移除app的狀況下清除累積的log,可以用 logcat  指令帶 -c flag D:\SubPrograms\AndroidSDK\platform-tools>adb logcat -c

Java make SOAP call

參考文章 https://docs.oracle.com/cd/E19879-01/819-3669/bnbhw/index.html SOAP的定義請參考 wiki 雖然目前已經是過時的資料交換技術 不過像是在台灣只會 Microsoft (舊)技術的廠商還是不少 有時候還是只能跟著用這些方式配合 這次 sample code 的 github連結 會寫這篇是因為Java的SOAP相關的 library 體積都滿龐大的 不過若工作上用不到太複雜的設定,靠 Java 本身的支援也能避免 library 的依賴及帶來的麻煩 因為跟SOAP搭配的回傳資訊大多是XML格式,所以下面的code示範將結果當成XML的處理方式

工具庫 - 自訂 Java BBCode Parser

BBCode 是常在論壇還是一些輕量級應用使用的標籤 他在實際執行時會從 [b]test[/b] 這樣的標籤轉譯成 HTML 標籤 <b>test</b> 開放讓使用者自行撰寫 HTML 內容時,容易有撰寫錯誤或XSS安全性問題 所以使用這種限定規格的標籤,對使用者來說是比較容易的,對網站方也是相對好處理的 不過在搜尋既有的 Solutions 時發現多數都是 JavaScript 用的 Library Java使用者最常被推薦的可能是  kefirbb ,只是查看了規格後我是不太想使用 因為我不需要其他的標籤轉換功能,例如 Markdown 之類的 我也不想維護一個並不是一目瞭然的格式轉換用的 XML,需要加入或修改標籤時會有困難 滿多人會選擇自行寫簡單的 regular expression 轉換 不過幾乎網路上查到的 pattern 都沒法處理好巢狀(nested) BBCode 結構 以及新的標籤要對應不同的 regular expression,我也覺得是一種負擔 後來我看到了 Extendible-BBCode-Parser  這個JavaScript Library 結構上我覺得不錯 能有彈性的新增、修改標籤行為,也能確實處理好 nested BBCode 所以動手改寫了個 Java 的版本 目前調整到我覺得還可以的程度 改寫時我就只專注在我需要的部分,一些錯誤偵測我覺得沒必要就拿掉了 程式碼的長度覺得不適合整個貼上來,所以不貼code改貼 程式碼 Github 連結 跟參考的library一樣開放隨意修改、發佈 之前我對於 regular expression 大概就是基礎使用的程度 程式裡的那些 pattern 我也沒懂到可以說出什麼詳細教學 一些處理細節也是邊刻邊體會,從這次經驗學到了些東西,感謝原 Project 提供的各種想法