Roost Laptop Stand 方便攜帶筆電架開箱文

前陣子椎間盤突出後著實被嚇到,對於使用電腦的姿勢花了不少時間去研究,才發現原來過去我的姿勢大多是錯誤的,像這次是因為久坐導致椎間盤突出,但不光是久坐,還有低頭滑手機、低頭使用筆電或是電腦螢幕高度不正確,都可能導致更難處理的頸部椎間盤突出! 特別是筆電,大多數人都沒有注意到平常使用筆電的姿勢不正確,因為筆電較小台,放在桌上使用時需要低頭,這時候會對頸部造成壓力,長時間使用就可能造成頸部椎間盤突出或其他問題。 除了頸部椎間盤突出,相信大家在低頭使用筆電時也覺得肩頸十分不舒服吧,其實只需要選擇一款合適的、高度適中的筆電架,讓你在使用筆電時可以不用低頭看螢幕,對於這些問題就會有很大的幫助。 ...

December 20, 2016 · 1 分鐘

String Split in Elasticsearch Script Field (Painless)

看到這篇文章,相信你一定尋找怎麼在 Elasticsearch (或是 Kibana)的 Script Field 使用 Split 很久了吧! 這邊我可是特意把所有你會想到的關鍵字都用上了,就是為了讓跟我一樣苦命的工程師不要浪費太多人生在這件事情上… 很快的先講結論,雖然 Painless 號稱支援 Java Native API,但恰恰有幾個不支援,其中一個就是 split,據說是因為 Elasticsearch 開發團隊覺得 split 時間複雜度太差,所以把它割掉了,而我一開始不知道這件事情,嘗試了各種方式,從語法是否正確一路懷疑到是否需要寫什麼特殊的語法來 Import Java API,最後在 Elasticsearch 的 Issue 上看到這篇 【Painless - Request for native String split function】,當下我的心情…… ...

December 14, 2016 · 1 分鐘

Mac OS 在 Terminal 快速移動游標位置

因為睡意深沉,今天就選一個簡單的小東西來分享吧! 每次在操作 vim、terminal 時,遇到那種超長的一行指令(文字)都覺得很麻煩,要按方向鍵按到天荒地老才能移動到你要的位置,今天來分享三種方式,可以讓你快速的移動游標到指定位置。 ...

December 14, 2016 · 1 分鐘

Python Join with Lambda - 更客製化的 Join

寫程式的人對 split()、join() 兩個東西肯定不陌生,在 Python 裡面我們可以透過 String.join(list) 把 List 合併成字串,例如 “,".join([“A”, “B”, “C”]) 會回傳 “A,B,C” 字串,或是反過來透過 “A,B,C”.split(”,") 來拆成 List,但你一定有過這樣的需求卻無法解決吧: 把字串合併但首字大寫 List 裡面存的是數字,但 join 需要是字串才可以處理 這些問題可以透過 List Comprehension 解決,例如型態處理的部份可以像這樣撰寫語法: nums = [1,2,3,4,5] nums_str = [str(num) for num in nums] print(",".join(nums_str)) 但除了 List Comprehension 以外還有其他解法嗎? 你肯定也想過像 sort 那樣傳送 lambda function 給 join 吧!...

December 13, 2016 · 1 分鐘

Laravel Artisan Migrate "Table Already Exists" or "Foreign Key" Error

在部署半年前用 Laravel 5.2 開發的專案時遇到不少問題,其中一個就是執行 php artisan migrate 之後卻遇到 Table Already Exists 的錯誤,但在這之前我從未建立過該 Table,後來深入研究發現該 Table 確實存在但 project_migrations Table 裡面卻沒有建立紀錄,於是我將 Table 手動刪除後在直接執行一次 php artisan migrate,果然,這次出現了真正的錯誤訊息:「General error: 1005 Can’t create table ‘dbname.#sql-fbc1_15e6’ (errno: 121) (SQL: alter table karl_project add constraint project_user_id_foreign foreign key (user_id) references karl_user (id))」 ...

December 12, 2016 · 1 分鐘

Get File MD5, SHA1 Checksum on Mac OS

之前在 Windows 習慣做任何事情都要另外安裝程式,檢視圖片要另外裝、瀏覽 PDF 要另外裝,計算檔案 MD5、SHA1 也要另外裝程式,但實際上在 Mac OS X 不用這麼麻煩! 如果你要計算檔案的 MD5 或 SHA1 Checksum,其實就有內建的小工具可以使用囉! ...

December 11, 2016 · 1 分鐘

使用 JavaScript 操作剪貼簿複製文字

在過去想要用 JavaScript 操作剪貼簿進行複製、貼上的動作十分麻煩,之前在開發 NTUST.ME 臺科短網址時,為了方便大家複製縮短後的網址,特別研究了 JavaScript 對剪貼簿操作的 API,發現在較新版的瀏覽器,其實有一個 execCommand 可以進行許多方便的文字操作,例如複製、全選等等,以下就讓我來介紹一下吧! ...

December 10, 2016 · 1 分鐘

Python 漢語拼音處理(姓名中翻英、地址中翻英)

今天幫同事處理大量的姓名、地址中翻英需求,研究了 Python 在漢語拼音方面的作法,畢竟你總不能一筆一筆複製到郵局或是網站上吧(笑),結果出乎意料的簡單,地址翻譯的部分透過各家的 Geocoder API 即可處理,漢語拼音則是有第三方的 Library 可以使用,而且翻譯效果還不錯,不能說盡善盡美,但搭配工人智慧足以彌補那小小的缺陷,畢竟如果要解決最後的小缺陷,可能要投入大量的資源、技術,導入機器學習的方法來處理(其實之後會有興趣做看看,畢竟在華文圈裡面好用的工具真的太少了)。 ...

December 9, 2016 · 1 分鐘

How to make elasticsearch.py Fast (Bulk Operate)

用 Python 操作 Elasticsearch 時不免俗的肯定會安裝官方推出的 elasticsearch.py,最近在用 Python 接收 Email Log 並寫入 Elasticsearch 時有蠻多心得可以分享的,大家都知道 AWS lambda 是用執行時間算錢的,所以在撰寫 AWS Lambda 時我可說是分秒必爭,看到執行超過 0.5 秒就各種吐血,所以從最開始的 .index 一筆一筆插入資料到 Elasticsearch,到後來用 streaming_bulk 處理,最後受不了用 parallel_bulk 混合 streaming_bulk 操作,以下就來聊聊這幾種方式的差異以及地雷吧! ...

December 8, 2016 · 2 分鐘

Python Convert String to Boolean

今天在撰寫 AWS Lambda 時因為從環境變數讀取設定的關係,需要把字串轉成布林來做判斷,一般的想法不外乎 Python 會幫你轉換,或是用 bool(“True”) 轉換就可以,首先其實 Python 是不會幫你轉換的,這點很重要! Python 在形態方面其實是不會做自動轉換的,他只會很阿莎力的報錯,不過大家肯定想說用 bool() 轉換就沒問題了吧!? 事實上,這個地雷害我今天搞了半小時才解決… ...

December 8, 2016 · 1 分鐘