Hello World
CodeTengu Weekly 碼天狗週刊
CodeTengu Weekly 會在 GMT+8 時區的每個禮拜一 AM 10:00 出刊,每期會由三位不同的 curator 負責當期的內容,每個 curator 有各自擅長的領域,如果你在這一期沒有看到自已感興趣的東西,可能下一期就會有了。你也可以瀏覽一下前幾期的內容。
目前的 curator 陣容:
- @vinta - I failed the Turing Test - 科幻迷,最近在讀 The Quantum Thief
- @saiday - Imnotyourson
- @tzangms - Oceanic / 人生海海 - 衝動型購物
- @fukuball - ImFukuball - 有新工作了,但歡迎直接挖角
- @mingderwang - Ethereum enthusiast
- @kako0507 - 熱愛嘗試新事物的前端工程師
- @chiahsien - 徵有經驗的 Objecitve-C 工程師,意者請來 Twitter 私訊我
- @hiroshiyui - 歧路亡羊與中年危機的典範
- @uranusjr - Smaller Things - 邊緣人拉到 conference 還是邊緣人
- @kkdai - 態度萬歲 - 總算把 Gopher Day 辦完了..
- @yhsiang
- @johnlinvc - 在 KSP 內登陸月球中
你也可以關注我們的 Facebook、Twitter、GitHub 或 Open Source 專案,有很多 weekly 看不到的內容。有任何建議或疑問也歡迎來 Gitter 聊聊。
致力於解決開發者之間的資訊不對稱
@fukuball
Beginner’s guide to Ethereum (1) — Build a smart contract on a private network
Blockchain:初級
雖然 @mingderwang 一直都有在 CodeTengu 推廣 Ethereum 相關技術開發,但我一直沒能好好靜下心來好好學習,這近看到這篇遊港正妹工程師李婷婷的教學文章之後,我終於寫出了我人生第一個 Smart Contract 了!難道正妹寫的教學文效果比較好嗎?
Beginner’s guide to Ethereum 系列文章:
- Beginners guide to Ethereum (2) — run multiple nodes on a private network in 5 lines
- Beginners guide to Ethereum (3) — explain the genesis file and use it to customize your blockchain
Kaggle 心得分享
Kaggle、Machine Learning:初級
這是 Kaggle 上數海獅競賽第一名 Kaggler 的心得分享,參加比賽直接練習解 ML 問題真的是學習 ML 最快的方法,而且如果得了前幾名還會有優渥的競賽獎金!比如這個數海獅競賽的總獎金就有 25000 美金,第一名可以獨得 12000 美金,真的超爽,我應該也要來找時間比 Kaggle 來賺賺外快啊!
延伸閱讀:
- Machine Learning and having it deep and structured
- CS231n: Convolutional Neural Networks for Visual Recognition
KKBOX Data Game - 17.06 1st place Solution
Kaggle、Machine Learning:初級
最近 KKBOX 集團新服務 - KKTV 在 Kaggle 上第一次對外舉辦了資料分析競賽,比賽內容是這樣的:「以前四個月的資料為分析基石,推測用戶在接下來一個月花最長時間觀看的是哪部劇」,希望藉由 Kaggler 的競爭中來找出增進推薦系統預測準確度的方法。本篇文章是這個比賽第一名 Kaggler 的分享,雖然只是將準確度從 0.27 提升到 0.28,但寶貴的分析過程很值得參考。
不過,忍不住要說一下,前三名的獎勵只有精緻米其林主廚料理體驗暨交流餐敘跟 KKTV 6 個月免費看序號卡好像真的有點虛啊~
Startup SaaS Stack
Business:初級
想要創業開一下公司(網路、軟體開發相關)都會面臨一些共同的問題,像是公司要如何發工資、要怎麼記帳、怎麼報稅等等問題,這篇文章分享了公司處在各種規模時可以考慮使用的 SaaS 工具服務來解決上述的問題,雖然在台灣不一定能用,但還是可以參考一下,或者是自己創業做一個在台灣可以運作的相同服務出來(推坑)。
@uranusjr
Checklist for Python libraries APIs
源自 Flávio Juvenal 在 PyCon 2017 的演講 How to make a good library API。這個 talk 探討了一些好 library 值得學習的特點,包括簡易性、一致性、彈性、安全性四個大項,並提供了一些該注意的細節與實例。為了讓大家在每次設計 API 時不要漏掉東西,作者把他提到的項目整理成一個清單,並用 checklist 方便逐項確認。
雖然是 PyCon 的演講,但這些項目只要稍微調整一下,在其他語言也適用,而且我覺得不只是 library,很多設計上的重點在跨元件 interface 設計上也同樣需要注意。網頁用了 LocalStorage 儲存狀態。
我還沒機會用,不過感覺很方便,應該會把它加入下一個專案的檢查項目裡。如果下次有什麼需要設計介面的狀況,也絕對要試試看。
Flávio 目前任職於 Vinta Software,一家巴西軟體公司,與 Vinta 沒有任何關聯。
pydantic: Data validation using Python 3.6 type hinting
Python 3.6 在 PEP 3107 Function Annotation 基礎上發展的 typing
module 受到不少關注。可以指定型態在很多時候確實很有用,尤其對沒辦法精確掌握維護狀況的大型團隊裡,可以把 code review 部份標準化(例如 Guido 共同開發、Dropbox 大量使用的 mypy)就特別方便。但 dynamic typing 也有它的好處,如果只是把 type annotation 像 static typing system 那樣用,總是感覺不太痛快。
幸好強大的 Python 社群馬上開始發揮創意。就我所知的第一槍是 Django REST Framework 作者 Tom Christie 開發的 API Star。這是一個 web API framework,讓你可以用很少量的宣告做出 web API。「如果 Django REST Framework 的作者覺得有需要開發新工具,那它肯定是好東西。」我忘了是從哪裡聽到這句話,但 API Star 確實很酷。這是另一個獨立題材了,有機會再另外分享。
回到 pydantic。Data validation 最重要的 interface 就是要能方便宣告怎樣的資料才合法。我之前也用過不少工具,例如 Django 的 Forms API、WTForms(主要用來與 HTML forms 互動)和 Voluptuous 等等,不過 pydantic 的宣告方法感覺特別舒服。Type annotation 提供型態、assignment 提供 default,這比傳統的 declarative API 要漂亮太多啦!大家也來用用看吧,然後我覺得更重要的是,不要掉入 static vs dynamic typing 的陷阱啊,一起想想 type hints 有什麼創意用法才是正途。
5 ways to make Django Admin safer
我常常嘴 Django Admin 其實就是個比較好看客製化程度比較高的 phpMyAdmin,所以也有很多同樣的問題。這篇列出了五個能讓它安全一點的方法,其實都是老生常談,不過因為太重要,還是值得提醒:
- 不要用預設的
/admin/
路徑。 - 覆寫設定與 template,讓每個環境的 admin 外觀有差異。
- 為你的 admin 取名字,不要用預設的 Django Administration。
- 不要開放 admin 給任意來源。
- 強化 authentication 機制(文中的例子是 2FA)。
其實我也不能說我都有做到,尤其第四個雖然很想這麼做,但實務上還是很不方便啊。倒是文中提供的 2FA solution 感覺頗值得。
Antisocial Coding: My Year At GitHub
Coraline Ada Ehmke 回顧了他加入 GitHub 一年多一點,最後被開除的經歷。這個故事與技術無關,而是描述他如何被其他人批評具有攻擊性,最後在各種事件交織下離開公司。
最近覺得建立團體文化實在是條非常非常細的鋼索。一方面我們需要找到適合的同伴,才能在舒服的環境發揮出能力,但當團體裡無可避免地發生衝突,要如何正確處理各種議題,這個價值觀無比重要,也無比難拿捏。前陣子有個朋友分享並贊同 Mark Zuckerberg 的用人哲學,簡單來講就是「如果角色交換,我願不願意為他工作」。我完全不同意。這個想法在初衷上可能不差,但對於一個本來就在公司文化內、又身為主管的優勢位置,實在太容易否定別人。老闆挑員工比起員工挑老闆,應該用更絕對的對錯標準來判斷。你自己想不想為他工作根本不重要,這是你的責任;真正重要的,是你的員工們能不能合作,以及如果不能,該讓誰離開,或者該怎麼讓他們不會互相影響。
這篇文章本身也只是一面之詞,我其實不覺得你應該用這篇文章支持 Coraline 或者否定 GitHub —— 有很多證據指出 GitHub 需要受到批評,不過這是另一碼事。但這個故事裡透露的衝突點,以及主角們面對衝突的方式,還是透露了許多事情,能讓人反思。
Two sql developers walk into a bar & then walk straight out...
來自最近發現的 subreddit /r/ProgrammerDadJokes。
Dad joke 是英文俚語,用來稱呼那種長輩裝年輕講的,一點也不好笑的笑話,通常是雙關語或音相似的字,就像你爸沒話題的時候會跟你講的那種。寬鬆翻譯成日文就是ダジャレ,中文好像沒有類似的,反正就是廢到笑的那種。我很喜歡這類笑話 初老症狀,連結這個是我看到最好(最廢?)的,分享給大家。
@kkdai
十年磨一劍: etpan 的故事
工作生涯也過了 10年,經歷了不少公司和團隊,遇過許許多多的人,在這麼多人之中,只有一個人跟我說過『基礎的重要性、很多東西的關鍵要願意捲起袖子鑽進去,像是 RFC 或是各種 Spec,就會獲得答案』。大部分遇到的人都是喜歡玩新技術、新語言,快速的做出一個有趣的專案,而這種求快的想法,也造成了一堆公司都是用 open source 組一組,然後想趕快賣錢、結案。這種形式的軟體公司在台灣是多數,但想想其實也頗合理,我想這就是所謂的製造業的血液吧,總認為輪子買來裝一裝,可以動就可以賣錢了。
下面連結這個人,他只做了兩個 open source 的 project,第一個 libetpan - 用 C 語言實作郵件收發功能的組件。第二個是 mailcore,一樣是郵件收發的組件,屬於比較高階抽象化的組件。簡單說,他就是利用這兩個 project 做完所有郵件收發的功能。也就是實作了郵件相關的 RFC。
libetpan 從 2001年開始,mailcore 是 2013 年開始,一直到現在仍持續在維護。他在 2010 年推出了一款 Mac 郵件軟體 Sparrow,評價很好,然後 2012 年被 Google 買走。在很多領域或許都有類似的現象,沒有中心思想哲學的人,就像草一樣隨處蔓延,吹不死也長不大。期待在島上的人們,可以把自己當作一個種子,往土裡深深地種下去,然後可以茁壯成大樹,進而成為一片森林。
[本文引用自臉書陳信邦]
開發人員的面試指南 - A developer’s guide to interviewing
如何面試一家公司 (開發人員的面試指南 – A developer’s guide to interviewing)
最近面試不少人,也有一些工讀生.發現學生不知道要問公司什麼.. 於是把這一篇貼上來分享給大家. 老生常談的是,大家都說不僅僅是公司面試你.你同時也在面試公司的.你應該要把握任何一個跟面試官交流的問題,來問出來自己究竟適不適合(或是喜不喜歡)這一間公司.
歡迎大家來看看這一篇文章.. 也歡迎大家丟履歷來敝公司..
- Data Scientist (senior)
- Frontend (senior)
快來丟履歷... 大家快來面試我.... (鞠躬..)
Rob Pike 在 Twitter 分享了一個笑話
Go 大神 Rob Pike 講的笑話一則 :
當初在做 Java 與 Go 發現 Go 竟然比 Jave 慢了十倍,不過再細看之後才發現. 測量 Go 的速度單位原來是 micros 而不是 millis .
[編按: 由於看錯,其實該測量結果 Go 比起 Java 快上了一百倍]
mattn/sudo: sudo for windows
在 Windows 下要切換 administrator 的 console 來執行某些指令其實很麻煩, mattn 弄了一個 windows 的 sudo 版本.
當你跑 sudo 需要權限的指令,就會跳出 UAC
意外的實用說... 總覺得稍微修改,可以給 drag and drop
Golang Jobs in Taiwan
你的公司想要找台灣的 Golang 人才嗎?
你不知道到底一個好的 Golang 工程師到底應該值多少錢?
不妨來這個 Github issue 看看吧,裡面有包括來自 Blockchain, 直撥產業的各種職缺.
而且薪水都超過 80K 以上喔,快來應徵吧 (?
This RSS feed is published on https://weekly.codetengu.com/. You can also subscribe via email.