Hello World
CodeTengu Weekly 碼天狗週刊
CodeTengu Weekly 會在 GMT+8 時區的每個禮拜一早上 10:00 出刊,每一期會從目前的 curator 名單中選出三位來負責當期的內容,每個 curator 各自負責不同的領域。如果你在這一期沒有看到自已感興趣的東西,說不定下一期就會有了。你也可以瀏覽一下前幾期的內容。
以下是目前的 curator 陣容:
- @vinta - I failed the Turing Test - 科幻迷。最近在讀 We Are Legion (We Are Bob)
- @saiday - Imnotyourson - 買了文明帝國 6
- @tzangms - Oceanic / 人生海海 - 衝動型購物
- @fukuball - ImFukuball - 婚後生活
- @mingderwang - Ethereum enthusiast
- @kako0507 - 熱愛嘗試新事物的前端工程師
- @chiahsien - 我們在找 iOS 工程師與其它人才,歡迎來跟我當同事
- @hiroshiyui - 沒有人是一座孤島
- @uranusjr - Smaller Things - 不愛談技術的技術人,最近對做菜很有興趣
- @kkdai - 態度萬歲 - 喜歡 Golang 的略懂工程師
- @yhsiang
大家也可以關注我們的 Facebook、Twitter、GitHub 或微博,有很多 Weekly 看不到的內容。有任何建議或疑問也可以來 Gitter 聊聊,歡迎亂入 👺
@vinta
open-guides/og-aws: Amazon Web Services — a practical guide
這是一份非常全面的 AWS 使用指南,如果你正在用或打算用 AWS,必須好好讀一讀。
What's the difference between utf8_general_ci and utf8_unicode_ci?
上禮拜遇到一個 MySQL 的 Cannot add foreign key constraint 的問題,但是兩邊明明都有 index 而且 column type 也都一樣。後來突然想到我好像在哪裡看過一篇在說因為 collation 不同導致 index 失效的文章(雖然我其實只看了標題,根本沒點進去看內文),一查發現果然是這個原因:因為從正式環境 dump 出來的資料是用 utf8_general_ci,但是我在開發環境建立的 table 卻用了 utf8_unicode_ci。
問題解決之後忍不住研究了一下這兩個 collation 有什麼不同,順便跟大家分享一下。
然後雖然可能沒有人想知道,但是這些 utf8_xxx_ci 的 ci 其實是 case insensitive 的意思啊。
延伸閱讀:
Upgrading Django
因為前陣子也才升級了 StreetVoice 的 Django 版本,這就看到有人整理了從 Django 1.3 到 Django 1.10 各個版本的升級注意事項,雖然大部分內容都可以在官網的 Release notes 找到,但是有人幫你畫了重點整理成冊還是挺不錯的。
Machine Learning: An In-Depth, Non-Technical Guide - Part 2
最近在研究 Machine Learning,一邊上 MOOC,一邊自己讀書(這時候 Safari Books Online 的優點就體現出來啦:某個概念搞不懂,可以隨時找其他書來看)。對初學者來說,機器學習除了多得嚇人的演算法之外,最煩的就是那些層出不窮的專有名詞了(雖然任何學問都是這樣),這個系列的文章就(概略地)解釋了不少常見的 Machine Learning 專有名詞和概念,讓你有個粗淺的理解,不至於在閱讀相關文章的時候寸步難行。
然後,忍不住要提一下,Kaggle 的 Kernels 真的不錯啊,會有很多人分享他們對 Kaggle 上的比賽題目的解題過程,例如 Titanic: Machine Learning from Disaster。
10 Minutes to Pandas
對 Pandas 的第一印象就是它的 API 實在是太他媽魔術了(雖然後來發現其實真正魔術的是 Numpy)。總之一開始完全看不懂,後來才發現官網上的這篇入門指南,雖然標題說只要 10 分鐘,但是那是騙你的,讀完 Indexing and Selecting Data 就不止了。
延伸閱讀:
@hiroshiyui
Docker in Production: A History of Failure
對 Docker 滿滿的血淚控訴,事實上裡頭列的坑,我也幾乎都遇過,所以讀了特別地感同身受:
- 每次大更版,都隨著亮眼的新功能夾帶了小臭蟲,以及一些不向前相容的坑。
- 無法對 image 儲存空間做有效管理,為了這類小而惱人的問題,甚至要自己 call Docker API 寫個輔助程式處理。
- 類似上一點,至今若要自架 Docker Registry (v2) 依舊很難做 image 的空間管理。最後若不是轉到付費的解決方案 (Docker Trusted Registry, AWS ECR...),就是放棄使用 Docker Registry,改以 save & load 另走自己的一套 image 派送流程、迂迴曲折地 shipping。
- 莫衷一是的 storage drivers,選了任一個,就代表你被強制同梱了那一個 storage driver 適用的、特定版本的 Linux distribution。
- 資料庫之類仰賴 permanent disk storage 的應用,在 production 場合尤其不適合使用 Docker,無論哪種 workaround 都用起來綁手綁腳。
如果要做 immutable infrastructure,現在的我會比較偏好用 Packer 做 VM image,仍以 VM 為應用程式的主要宿主,但是一些適用 container 的應用,我也不排斥使用 container。綜合考量適用場合、資源調度整合的便利性等因素,分別給予最合適的部署方式,而非一味地追逐酷炫潮夯、人云亦云、通通上 Docker。
Lita: ChatOps for Ruby
前陣子,我們單位終於把先前在此介紹過的 Cog 架了起來,感受到它設計上的一些強大之處,譬如完善的權限系統、不同用途的 command bundles 可部署在特定的 relay groups 區隔開來等。但是過沒幾天,就被一些毛邊給刮得滿手傷痕,誠實地說,我覺得 Cog 在目前(2016 年末)還沒成熟到可以運用在 production 環境中。
於是我們又回頭去用雖然不那麼酷炫潮夯、但是掌握度高的 Lita。透過我們熟悉親切的老朋友 Ruby,無論是從頭撰寫,還是將之前既有的 DevOps 相關工作的 scripts 改寫為 Lita plug-in,相比之下真是無痛,且權限分野之類的需求,除了 Lita 基本的支援,我們還是能夠自行運用 Ruby 實作出更細緻、切合自身所需的管理邏輯。
如果您的單位也想導入 ChatOps,我很誠心推薦您參考看看 Lita。
Developer interview: How Haiku is building a better BeOS
BeOS 曾經是 Apple 公司次世代作業系統的可能選項之一,但是後來的歷史如各位所見,Steve Jobs 帶著 NeXTSTEP 回鍋,包著 Mac OS 皮、骨子裡是 NeXTSTEP 的 Mac OS X 最後上了位,技術優異卻時不我與的 BeOS 黯然退場。
不過因為 Haiku 專案出現、延續了它的靈魂,於是我們有了這麼一個 open source 版本的 BeOS。
這篇採訪長文介紹了 Haiku 專案的緣起、設計決策、組織文化,雖然是一篇四年前的舊文,但是我還是覺得值得推薦給大家,此後還是會找一些類似的開源專案專訪文與大家分享,體會別人在程式碼以外,執行專案時是如何處理其他各種面向的議題。
Introducing Changelog 2.0
Changelog 這個 Podcast 很有趣,我也是訂戶之一。這篇文章介紹了他們使用 Elixir/Phoenix 製作的新網站(還預定會把這個 CMS 開源!)、以及新節目,包括 Go Time 這個針對 Go 語言的主題節目。大家感受一下。
@kkdai
Golang Taipei 2016/10 第十七次聚會的投影片與錄影鏈結
各位好,編輯只好自肥一下.身為 Golang.tw 的共同主辦人之一,在這裡告訴各位我們十月地的聚會投影片與影片已經出現了.
可以來這裡查看相關的投影片與影片內容,之後相關的聚會也會在這裡顯示出來.
本月份的聚會有提到 GRPC 也有講到 gomobile ,內容相當的精彩.
十一月的聚會將會定在 11/29 號,歡迎大家來報名講者與協辦攝影師.請各位踴躍來報名啊
Why you should not use iris for your Go projects
Iris 是一個號稱地表上最快的 Web Framework,擁有 5000+ star 的專案,但是想要申請 Awesome-Go 卻被 ban 掉的整個故事. 這篇文章,從多個角度建議你不應該把 Iris 當作你的專案中,故事精彩就直接看內文吧.
懶人包:
- Iris 被 Awesome-Go 移除
- Iris 的 Kataras 申請重新加入.
- 被人發現把 PR 改掉,License 亂寫
- 被 Awesome-Go 拒絕並且 Ban 掉
- Kataras 把 Iris commit 改成只有兩個 (哪招?)
- Kataras 修改自己在 git issue 裡面的發言
參考 : Awesome-Go Github PR
rekihattori/awesome-programmers: A list of history's greatest
傑出程序員(捲舌音) 清單
裡面有四個人跟 Golang 有關係
在作業系統分類中:
- Ken Thompson: Go 創始人之一,也是 C 語言的共同發明者.
- Rob Pike: Go 創始人之一,主要管理整體架構與之後發展.
- Russ Cox: 許多好用的 Go 工具都是他起頭撰寫,不論是 gofmt 還是 goimport .
- Brian Kernighan: 賣最好的 Go book作者 . 書本的鏈結
還有一個在資料庫的分類:
- Brad Fitzpatrick: LiveJournal 的創辦人,並且是 OpenID 制定協定的人.目前主要負責 Golang
net/http的相關開發.
Learn Kubernetes the Hard Way (the Easy and Cheap Way) – Medium
Kelsey Hightower (Google Kubernetes 的傳教士) 的文件 kubernetes-the-hard-way (透過硬派方式來安裝 Kubernetes) 一直都是了解與安裝 Kubernetes 最基本的安裝手冊.但是由於真的太困難而變成許多人望而卻步.(不然就是透過 minikube 或是直接使用 GKE)
這篇文章,透過相同的方式來安裝.但是卻幫你透過 Vagrant 來安裝的方式幫你把 Kubernetes 安裝起來.不僅僅可以一鍵可以輕鬆完成,還可以在中間了解如何安裝並且一步步指導你相關步驟,實在相當的方便啊.
chain/chain: Chain Core Developer Edition
Chain 是一個 BlockChain 服務的公司,提供透過 blockchain 技術的金流與安全的資訊服務.
相關訊息之前有板友貼過, 不過在這裡增加一些其他資訊:
Chain 公司內部人員有一位是 Keith Rarick 是之前是 Heroku 做出 Go official buildpack 的大大 KR Github
根據 Reddit 上面的討論,如果你使用這個服務而沒有 AGPL 的話,你就得付企業的 License 費用 Reddit link
工作機會
Python Web Developer at StreetVoice
開發與維護 StreetVoice 旗下相關網站,開發流程包含 Code Review、CI 與自動化部署,團隊內有專職的 DevOps 和前端工程師。主要技術棧:Python、Django、MySQL、Redis、Elasticsearch、Ansible 和 AWS。
意者歡迎來信:tzangms@streetvoice.com。
Frontend / Backend Developer at KKTIX
負責開發與維護 KKTIX 服務,可自由遠端工作。團隊採行 Scrumban 敏捷開發流程,並實踐 Pair Programing、Code Review、整合 CI 作自動測試與佈署。讓你可以參與產品開發,並且能專注程式實作。團隊使用的技術包括但不限於 Golang / Ruby on Rails / JavaScript / ReactJS / AngularJS / AWS / PostgreSQL / Redis / Elasticsearch 歡迎自主管理能力強大的你,一起加入 KKTIX,開發更好用的售票報名服務。
意者請將履歷寄到 [email protected] 或到 https://jobs.kktix.cc 報名。