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

前陣子椎間盤突出後著實被嚇到,對於使用電腦的姿勢花了不少時間去研究,才發現原來過去我的姿勢大多是錯誤的,像這次是因為久坐導致椎間盤突出,但不光是久坐,還有低頭滑手機、低頭使用筆電或是電腦螢幕高度不正確,都可能導致更難處理的頸部椎間盤突出! 特別是筆電,大多數人都沒有注意到平常使用筆電的姿勢不正確,因為筆電較小台,放在桌上使用時需要低頭,這時候會對頸部造成壓力,長時間使用就可能造成頸部椎間盤突出或其他問題。

除了頸部椎間盤突出,相信大家在低頭使用筆電時也覺得肩頸十分不舒服吧,其實只需要選擇一款合適的、高度適中的筆電架,讓你在使用筆電時可以不用低頭看螢幕,對於這些問題就會有很大的幫助。

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

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】,當下我的心情……

閱讀全文 String Split in Elasticsearch Script Field (Painless)

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

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

閱讀全文 Mac OS 在 Terminal 快速移動游標位置

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 吧!

閱讀全文 Python Join with Lambda – 更客製化的 Join

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`))」

閱讀全文 Laravel Artisan Migrate “Table Already Exists” or “Foreign Key” Error

Get File MD5, SHA1 Checksum on Mac OS

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

閱讀全文 Get File MD5, SHA1 Checksum on Mac OS

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

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

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

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

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

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

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 操作,以下就來聊聊這幾種方式的差異以及地雷吧!

閱讀全文 How to make elasticsearch.py Fast (Bulk Operate)

Python Convert String to Boolean

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

閱讀全文 Python Convert String to Boolean