2018年3月14日 星期三

在 eclipse 使用 AutoValue

AutoValue 是個可以方便用來產生 POJO 程式碼的套件
網路上有蠻多教學文的~這裡暫時先不紀錄 XD

在 eclipse 上使用 AutoValue 時,會遇到本來應該自動產生的 AutoValue_<CLASS_NAME> 一直說找不到
而原因是在 eclipse 上預設是不會自動進行 annotation processing
因此要讓 AutoValue 可以正常在 eclipse 上運作的話,必須先在 eclipse 安裝 m2e-apt 套件 [2]。

具體來說,就是在 eclipse 上打開 Eclipse MarketPlace(Help –> Eclipse MarketPlace…),然後搜尋 m2e-apt 來安裝。
安裝完以後,在 Window –> Preferences –> Maven –> Annotation Processing 裡的最上面那個區塊
改成選擇 Automatically configure JDT APT 的選項。

之後再做一次 Maven Update 讓專案重新編譯就可以了。

參考資料
  1. Maven AutoValue Errors
  2. m2e-apt

2018年3月9日 星期五

(書籤) Java 繁體與簡體轉換

雖然繁體和簡體的轉換有一些開源專案了,但他們大多都加了一個額外的功能:詞彙代換
例如「database」臺灣稱為「資料庫」,中國則稱為「数据库」
在有些狀況,自動做這個轉換很好,但有時候其實我不想要它幫我轉換……Orz

於是就找了點資料,大體上好像都是自己實作,可能也是因為這問題難度太低,不值得做成一個開源專案…..??
不過在 CSDN 上看到有人 [1] 很好心地做了看起來比較可靠的文字比對,並整理出共 2,579 個繁體和簡體不同字的對照。

裡面有完整的程式碼,有需要的人可以直接參閱 [1]。

當然 [1] 的實作方法很土法煉鋼,依據需求是能夠做些調校的,不過那就看各自的需求自己解決吧!XD

不過需要注意的是,因為這個實作單純只看每個字而已,所以如果是繁轉簡後再簡轉繁,跑出來的結果有可能跟原始字串不同
例如「限制」轉成簡體會是「限制」,但再轉回繁體會變成「限製」。
這是因為繁體對簡體有多對一的問題,實際上得依照詞彙決定該用哪個字,才能更精準一點地轉換。

題外話,[1] 整理出來的數據蠻有意思的:

  1. 全部的漢字有 20,881 個。
  2. 繁簡不同字的有 2,579 個。
  3. 繁轉簡有多對一現象的只有 44 個。
  4. 另外有 3 個簡轉繁時有多對一現象。
參考資料
  1. Java 汉字繁体转简体

2018年3月6日 星期二

使用 Jest 搜尋 Elasticsearch

Elasticsearch 官方本來是有提供官方的 SDK 可以用來操作 Elasticsearch
不過…官方版的 SDK 在存取 Elasticsearch 時,是把自己當作 Elasticsearch Cluster 的一員來看待
因此會有包括 heartbeat 等行為在 SDK 裡自動發生。
理論上這麼做的好處是,SDK 可以看見整個 Cluster 的狀態,因此可以比較妥善地選擇存取的節點
不過代價就是維持 Elasticsearch 連線所需要的資源更多、連線速度感覺好像變慢
此外,對於跑在 AWS Lambda 的程式來說,有不少潛在的缺點。
在 Elasticsearch 官方的描述 [1] 中,有建議了可以考慮使用 Jest [2],因此就來試試它了。