發表文章

目前顯示的是 2016的文章

hazelcast EntryUpdatedListener oldValue

用了好一陣子的hazelcast EntryUpdatedListener, 突然發現到偶爾會有取不到oldValue的狀況。 這下子當需要舊值來判斷狀態變動程式碼全部完蛋,只好乖乖的檢查問題在哪裡。 慘案 EX EntryEvent{ entryEventType=UPDATED , member=Member[192.168.31.22]:2901 , name='Device' , key=xxzz, oldValue=null, value=yyyy , mergingValue=null } 一開始檢查的範圍   找到邏輯上是否有會移除資料或是將資料設為NULL的程式碼   結果當然是沒有   看看沒有先觸發其他種類的Listener ,ex:entryAdded  結果還是沒有  檢查是不是因為tryLock導致資料更新過程被省略  試過兩隻主程式一直互相執行trylock更新IMap,  但只會出現 tryLock failed,不會出現oldValue=null的狀況 後來發現問題出在有些程式碼更新map的資料使用效能較好的 void com.hazelcast.core.IMap.set(String key, DeviceStatus value) 根據api doc說明 Warning: This method breaks the contract of EntryListener. When an entry is updated by set(), it fires an EntryEvent with a null oldValue. 實際測試程式碼 用set的方式的確不會取到oldValue ,所以改回get就修(?)好了 ,最後改code的也不是我XD 雖然是從來沒有使用過set方法, 但看code的時候完全沒發現使用的方法不同, 只聚焦在是不是有做過刪除或是set null... 不太了解邏輯為什麼要這樣設計, 但是人家都寫在api doc上了 只好承認用api時很少把全方法跟api doc看完。

與 object argument 的 溝通?

圖片
看來不只專案上溝通有落差,常常對程式的溝通上也常常有落差 本來在想怎麼避免夜晚寫code容易碰上的低級錯誤。 像是當遇上 object argument 要怎麼確認兩邊的型別對等之類的

基隆的小攤販

去年開始發現一些記憶裡的味道慢慢消失, 像是新福牛肉大王、 燒邁大王,郭家水餃都歇業了, 這個時候才發現自己的年紀大了,也已經好幾年沒有建立新的回憶。 回訪記憶中的好滋味 雖然有時候會遇到一些店家口味跟態度改變,相見不如不見。 但是這些與親朋好友一起享受的回憶點消失後, 就很難拼湊出以往生活完整的印象, 也再也沒辦法回想起那些記憶。 有些基隆的小攤販路過就會想買,而且總覺得有一天會默默地消失。 南榮路 花圃 豆漿香腸 通常是晚上遇到的機會比較多,偶爾會下午開業。 常常在周五晚上讓我提前在三坑下車,就是為了走去喝一杯紅茶豆漿, 來消除天氣的悶熱跟上班的疲勞,但在這個減糖保健康的年代是種巨大的誘惑。 歐吉桑負責豆漿、紅茶、烏梅汁,歐巴桑負責烤香腸。看著人們在烤網前等著香腸烤熟,一邊聊天還順手剝幾個大蒜。 即使步調有點緩慢,大家還是耐心等著老闆伸手勺起裝在鐵桶裡的飲料。 是種現在很難找到不會因為排隊而不耐煩的時光,讓心情放鬆了下來。不過如果是使用打開水龍頭的方式裝飲料,大概就會讓我回想到國軍生活了。 不只是經營方式,飲料的口味也很傳統紅茶、比起淡淡的香氣更搶戲的是甜味。 豆漿有著燒焦味、 烏梅汁喝起來酸鹹甜。飲料由於保存方式的緣故,有時喝起來還會帶點碎冰。但我每次去幾乎都喝紅茶加豆漿。另外,攤販斜對面的桂豐食品行的麻荖也不錯。 信五路義二路轉角 騎樓 綠豆湯 楊桃汁 只賣夏季,營業時間從下午開到晚上的樣子。 由歐吉桑一個人負責楊桃汁跟綠豆湯以及打瞌睡, 所以有時候去會不好意思叫醒老人家。 綠豆湯的濃稠度可以說是在喝綠豆沙,小碎冰更是增加了口感。 帶點鹹味的傳統楊桃汁,在夏日很能提振精神。 還有兩種濃縮汁可以買回家使用,聽說其中一種是拿來治感冒的。 另外,攤販旁邊的大腸圈口感很好| 義二路信三路轉角 騎樓 壽司攤 似乎只有平日晚上才會出來擺攤,大概八點左右就賣完了。 歐吉桑負責味增湯,歐巴桑負責包豆皮壽司跟海苔壽司。 豆皮吃起來有淡淡的甜味,米飯的口感也不錯。 小小顆的壽司常常讓人不知不覺地吃完一整盒。 這幾年下來有些老店或攤販漸漸有年輕人回來幫忙做事, 但也有很多店家檯面上沒看到有下一代的回來幫忙, 不知道接下來的基隆會是什麼樣貌。

Find bugs Call to equals() comparing different types

開始用findbugs跟 Code Coverage 以後, 我最忘不了的就是那些愚蠢的bug, 而且他們特別會出現在那些晚上寫的程式碼裡。 每當commit 前沒跑findbugs跟測試 , 通常都會學到新的findbugs 錯誤訊息... 低級到不好意思記錄下來,以下就是其中的一個例子

hazelcast predicate

老實說我對 jpa 的 criteria 跟 specification 查詢方式一直用起來很不順手,理解上也有問題。 使用上一直get來get去就算了,竟然使用字串來做查詢條件。 只要一改屬性名稱,就完全沒辦法用IDE 無痛 REFACTOR。 而且在做關聯性的查詢使用,簡直是不知道自己在做什麼。 最近使用IMDG的解決方案hazelcast。 平常在對MAP做操作時,也免不了要寫一堆predicate

編碼傳輸

老實講問題蠻低等的,但以前也從來沒用心了解過相關問題,有過就好... 問題: 發生瀏覽器端編輯新造字內容,透過server side 下載到終端設備的字元編碼有問題。 因為規範上設備接受的編碼是big5 ,所以做了ex:"wtf:編碼".getBytes(Charset.forName("big5"))的處理 理論上最後一個字應該要解成fa42 卻變成3f,也就是變成?而不是方塊字。

生日

圖片
HAPPY BIRTHDAY!!!  My Friend

汐科定便當記錄 (完)

圖片
在汐科待了兩年,感受最多的就是競爭力。 像是美食街裡幾家認為菜色有競爭力的商家相繼結束營業,攤位超過半年以上租不出去。 部門裡面好幾個有競爭力的同事先後離職,整區空位多到看起來跟旁邊的業務區渾然一體。 有競爭力的外送店家也不喜歡送汐科,外送金額從350一路漲到1000,不爽不要定。 以下是這一年多來於辦公室便當團的心得

Surface 3 使用近一年的心得 (ㄧ)

圖片
當初會買Surface 3是為了改進當時生活上遇到的各種瓶頸, 加上喜歡他的外型而買的。 所以買得時候還蠻果斷的,在使用起來也大致上如同預期的好用。

2016-紅淡山計畫

本次選擇路線 :寶明寺登山口至銘傳國中下山 路線歡樂等級 :加班到9點,隔天也能去爬。 路況 :全程步道或階梯,幾乎沒有泥土路。 路線主線總行程時間 :約一個半小時 各休息(景)點間隔 :10分鐘左右 裝備 :雨具必備