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

How to use Python GroupBy Data (List+Dict)

用 Python 處理資料時,對資料的某個 Key 進行 GroupBy 是很常見的需求,例如分析 Email Log 時,想知道某個標題的發送統計數,或是列出每個標題的 Email Provider 前五名之類,就會需要對標題進行 GroupBy 的動作,在資料庫裡這是十分簡單的事情,但如果你不想丟資料庫的話呢?

除了 Pandas 這套超強的資料處理函式庫可以幫你之外,其實 Python 本身也有 GroupBy 可以使用哦!

閱讀全文 How to use Python GroupBy Data (List+Dict)

Tips for Upload Large File to Google Cloud Storage

因為我有定期備份資料的習慣,會把 Google、Facebook、Evernote、相簿等等資料都定期備份到 Google Cloud Storage 上面,每次用瀏覽器上傳都會很煩惱上傳速度慢的問題,而且如果網路斷線還要重新傳送那 10 GB 的大檔案,後來研究了官方文件,找到一些關於上傳大檔案到 Google Cloud Storage 時很好用的小技巧分享給大家。

包含:

  • 如何讓 GCP Storage 幫你驗證檔案的 MD5 Checksum
  • 如何啟動續傳功能,斷線沒關係可以繼續傳送
  • 如何透過平行化傳輸把上傳速率榨到極限

閱讀全文 Tips for Upload Large File to Google Cloud Storage

Enable Cross-Origin Resource Sharing (CORS) for Phaser.js

當你用 Phaser JS 載入不同網域的資源、素材時,就會遇到瀏覽器同源政策的阻擋,並冒出一堆錯誤訊息,例如:

XMLHttpRequest cannot load http://s.ntustcoding.club/scroll-game-workshop/map.json. No ‘Access-Control-Allow-Origin’ header is present on the requested resource. Origin ‘http://s.codepen.io’ is therefore not allowed access.

實際上,Phaser 本身是有支援 跨來源資源共享 CORS 的,只要透過一行簡單的語法就可以解決囉,當然前提是你所使用的網路空間也有支援 CORS 才行。 閱讀全文 Enable Cross-Origin Resource Sharing (CORS) for Phaser.js

Set Cross-Origin Resource Sharing (CORS) Enable on Google Cloud Storage

最近因為社課教大家用 Phaser 開發小遊戲,有許多素材需要讓學員在 Codepen 上使用,所以需要一個支援 CORS 的網路空間來放置素材,腦筋動著動著就想到便宜大碗又可以綁定自己 Domain 的 Google Cloud Storage 去啦!

其實 Google Cloud Storage 預設是不支援 Cross-Origin Resource Sharing (CORS) 的,但只要透過 gsutil (Google Cloud Storage Cli Tool) 就可以幫指定的 Bucket 啟用 CORS 功能!

閱讀全文 Set Cross-Origin Resource Sharing (CORS) Enable on Google Cloud Storage

Facebook Graph API 部分用戶無法取得 Email 欄位的解決方法

最近遇到一個很有趣的小問題,我們開發的一個競賽投票系統遇到零星使用者無法投票的問題,該系統以 Laravel 開發,讓使用者可以透過 Facebook 登入後,投票給指定的作品,每日一票,只取得最基本的 Email、Name 資料以供抽獎用,在測試時一切安好沒問題,可是上線後卻有零星的使用者抱怨投票完顯示錯誤訊息「whoops looks like something went wrong」而大部分使用者是可以正常投票的。

閱讀全文 Facebook Graph API 部分用戶無法取得 Email 欄位的解決方法

端午連假,跟塞車說掰掰 – 宜蘭篇

維睽將近一年之久,終於又發表新文章啦。2016 端午連假,相信許多台北朋友的首選肯定是宜蘭吧!不管是開車或搭客運,經國道五號雪隧到宜蘭順利的話只要 40 分鐘,當然大家都知道,端午連假這種時候肯定不那麼順利的… 今天小弟就要來跟大家分析一下雪隧的塞車模式,讓大家可以避開車潮順利抵達宜蘭! 下面會有簡單的技術說明,以及分析過程,非技術的朋友可以直接看結論! 附帶一提,小弟今天人就在宜蘭,這篇文章其實是撰寫於金車伯朗咖啡城堡。

閱讀全文 端午連假,跟塞車說掰掰 – 宜蘭篇

uWSGI

介紹

uWSGI 是一種協議,同時它也是一個程式。

為什麼這麼複雜?從程式講起吧,uWSGI 這個程式最初是為了讓 Python 所撰寫的 Web Application 能夠跟 Nginx、Apache 等等的 Web Server 溝通而設計的,他採用自己設計的 uwsgi 通訊協議,此外他也支援 cgi、fastcgi、socket 等多種協議,所以除了服務 Python 之外,他也可以跟 PHP、Go 等等的程式語言整合。

閱讀全文 uWSGI

Macbook Air 2013開箱文,號稱世界最長12小時續航力

P1040216

因為要升上大學,剛好最近Apple又推出新一代的Macbook Air,所以小弟就忍不住敗了一台,今年的Macbook Air最大亮點就是12小時續航力,當我在發表會看到這行字時還以為他在開玩笑,但後來國外廠商的評測證實這是真的,這就是讓我最心動,想要買它的原因,有了超長的續航力,出門就不用帶變壓器,也不用擔心用到一半沒電的問題了! 對於我這種常出門的人來說十分方便。除了超長續航力之外它還有許多更新,比如802.11ac的無線網路、超快速的SSD、新一代Intel Haswell 處理器等等。

閱讀全文 Macbook Air 2013開箱文,號稱世界最長12小時續航力