發表文章

從Evernote轉換到OneNote (一) 匯入與Web Clipper(卡關)

圖片
前幾天發生 台灣Evernote App登入預設導向中國版「印象筆記」的問題, 加上今天又傳出中國版的印象筆記正式從Evernote 獨立出來, 這下子不認真找備案也不行了。 不過畢竟付費了好幾年的Evernote 專業版,也使用他拿來當知識庫了好一陣子, 沒辦法找隨時可能會消失的替代品,轉換前還必須仔細檢視各個功能的替代方案。 一般會跟Evernote 的強大功能拿出來比較的,就屬微軟的OneNote了。 所以第一目標就是重新檢視OneNote。 其實在2016 微軟剛要認真推onenote時 就出了一個 匯入程式 , 但這玩意兒大概從2016剛出來的時候就沒改版過...,到現在還在英文預覽版。 而且微軟自己也把onenote2016終結了,改成 Windows 10 版 OneNote (僅標示為 "OneNote")。  所以這匯入程式用起來問題很多,當年沒換過去也是因為它太難用... 舉個例子 Evernote 平常的資料夾結構如下: 最上面 是記事本堆疊(Stack),下一層是記事本,記事本裡面存放筆記。 最外層還有個記事本(notebooks)。 而onenote的結構是 筆記本 、節群組、節、頁面(筆記)、子頁面。 Onenote的好處是一個帳號可以建立多個筆記本跟設定開關, 如果分類精準的話應該可以提升操作上的效能。 使用匯出工具時,會幫evernote的資料建立一個新的記事本 Ex:Evernote (Evernote import on 2018-06-04T17-55-32) 但是 記事本堆疊直接消失不會對應到節群組。 筆記本名稱不會對應到 onenote裡的節的名稱,而是用Pages 1-100 之類的做命名及分組。 筆記直接對應到頁面,名稱保留。 結果會直接變成下圖那樣 雖然原本evernote標籤會被轉換成onenote #Tag的形式,但基本上只會儲存一個tag 而且轉換完以後我發現有標記多個tag的筆記都不見了,明明轉換完成時沒看到錯誤訊息。 匯入時有個選項是使用tag組織記事本,它會把記事依照tag的方式存放。 使用

寫給大忙人看的Java SE 8 讀書心得筆記與習題-第二章 Steam API

圖片
Collection API本來就很常用,多了Stream 更是讓人不用管實作的完成很多演算工作。 不過實際用起來還是要花非常多時間,用法實在太多了,配上lambda更是眼花撩亂 第二章要點 你可以從集合 陣列 Generator或是iterator中創建Stream 使用filter來選擇元素,使用map來改變元素 要從Stream中獲得結果,請使用reduction操作符,例如count、max、min 、findFirst 或findAny,其中一些方法會獲得一個Optional值 你可以收集(collect) 集合 陣列 字符串或是map中的Stream結果 Collectors 類的groupBy和partitionBy允許你對Stream中的內容分組,並獲取每個組的結果 Java 對 基本型別 int long和double提供了專門的Stream 練習題與自己版本的解答 編寫一個2.1節中for循環的並型版本,獲取處理器的數量,創造出多個獨立的執行緒(線程),每個都只處理列表的一個片段,然後將他們各自的結果彙總起來(我們不希望這些執行緒都更新一個計數器,為什麼?) public class Exercise2_1 { public static void main(String[] args) throws IOException, InterruptedException, ExecutionException { String contents = new String( Files.readAllBytes(Paths.get("src/exercises/alice.txt")), StandardCharsets.UTF_8); // 邏輯直接使用範例程式碼 List words = Arrays.asList(contents.split("[\\P{L}]+")); long count = 0; for (String w : words) {

寫給大忙人看的Java SE 8 讀書心得筆記與習題-第一章 lambda 表示式

圖片
此書英文原名是: java se 8 for the really impatient 就算假裝忽略即將要正式發行的java 9,這也是一本2015就出版的簡中翻譯版。 java這幾年已經算是更新慢的主流語言,卻還有一堆東西要補阿....

基隆早餐 乾麵與那些湯類

每次有親朋好友在早上來基隆時, 他們自己總是會選擇去排炭烤三明治或是吃蔥油餅。 不管吃個名氣也好,體驗一下生活也好,反正不難吃。 不過如果是要我自己帶他們去吃早餐就頭痛了, 到底要不要帶去吃那些自己平常不吃的店呢? 也許是自己的生活圈比較狹小, 印象中小時候如果不吃西式早餐店的話, 通常會看到大家有這幾種選擇: 鹹粥配炸物, 乾麵蔥油餅餛飩湯 , 米粉炒、大麵炒配魷魚羹湯或豆干包湯, 米苔目 米粉湯 粿仔湯。 鹹粥這派已經式微,只剩遠東戲院跟孝三路跟廟口的四家店。 至於豆干包就剩魚丸伯跟火車站那邊的店比較知名,口味也比較重。 個人會買安樂菜市場底的豆干包跟魷魚羹。 特色就是豆干包的肉餡不加沙茶比較清淡,魷魚羹就是花枝丸的魷魚版(魚漿加魷魚腳)。 米苔目、米粉湯、粿仔湯,手工作的人越來越少,甚至著名的沙茶粿仔直接變成沙茶乾麵店。 只剩下乾麵、餛飩湯倒是遍地開花: 蔥油餅與大餛飩 以前市區最知名的知味園跟周家雖然吃了很多次, 但是基隆特色烤過煎過乾乾脆脆的蔥油餅個人實在不愛,就愛那乾麵與大餛飩湯。 乾麵會附上幾片肉片,一點榨菜跟蔥花,再加上油跟祕方,就是一碗蔥油餅店的乾麵。 老實說帶人去蔥油餅店而自己不吃蔥油餅的事也不是沒幹過,但是就覺得有點不好意思,而且容易讓人預設那餅不好吃XD。 個人比較常吃同一家人開的東家館或今日蔥油餅,反正不吃蔥油餅就不用管餅的口感差異。 孝三路周邊 乾麵配上小餛飩湯 大概是靠近火車站與客運站的關係,成為一級戰區,連小巷子裡都一堆店家。 每家都會賣乾麵配上小餛飩湯。 基隆的乾麵標準就是廣東(仔)麵,一種相對扁薄的白麵, 就算是因為個人口味換成細麵(小條)也決不會是油麵。 乾麵上桌看起來大多是乾乾淨淨,不會有醬油膏, 再看客人自己要加上特調甜辣醬。 湯頭幾乎都是大骨為底,但是湯頭都算是清爽,一定會灑上芹菜株。 每家餛飩都可以買生的回去,但是沒那個湯頭就少一味。 比較常吃的幾間 遠東戲院教會對面麵店,特色是老板娘記憶力超好, 還有他的調味特別適合蛋黃拌麵,自從禽流感後我只敢加甜辣醬就少去了。 長腳麵店 有店面以後乾淨很多,營業時間很長。 麻醬很有特色,魯油豆腐跟豬腳也不錯 比較矮的老板以前麵煮得很有彈性,麵中間會像煮義大利麵留一點芯增加口感, 但是搬家以後吃了幾次都

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 要怎麼確認兩邊的型別對等之類的

基隆的小攤販

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