Quantcast
Channel: CodeTengu Weekly 碼天狗週刊
Viewing all articles
Browse latest Browse all 109

CodeTengu Weekly 碼天狗週刊 - Issue 63 雙十特刊:♫ PPAP! I have a China~ I have a Taiwan~ Ahhh, Republic-of-China-Taiwan-Chinese-Taipei! - Oct 10th 2016

$
0
0

Hello World

CodeTengu Weekly 碼天狗週刊

CodeTengu Weekly 會在 GMT+8 時區的每個禮拜一早上 10:00 出刊,每一期會從目前的 curator 名單中選出三位來負責當期的內容,每個 curator 各自負責不同的領域。如果你在這一期沒有看到自已感興趣的東西,說不定下一期就會有了。你也可以瀏覽一下前幾期的內容

以下是目前的 curator 陣容:

大家也可以關注我們的 FacebookTwitterGitHub微博,有很多 Weekly 看不到的內容。有任何建議或疑問也可以來 Gitter 聊聊,歡迎亂入 👺

致力於解決開發者之間的資訊不對稱

@vinta

Basic Housekeeping for MySQL Indexes

Percona Database Performance Blog 科普了幾個找出 MySQL 中無用的、重複的或欄位順序有問題的 indexes 的方法。除了透過 MySQL 的 sys schema 之外,還有大家的好朋友 Percona Toolkit,不只 pt-duplicate-key-checker,還有其他像是 pt-query-digestpt-online-schema-changept-archiver 都是好東西啊。

percona.com

Speed up Python and Node.js builds on Travis CI

因為前陣子都在重構公司的專案,清理了不少陳年老碼和前朝遺表,也順道補了不少測試(目前測試覆蓋率達到 83% 啦)。這時候就覺得跑 CI 的速度不夠快了,後來想到其實可以在 Travis CI 上把整個 site-packagesnode_modules 目錄都 cache 起來,這樣一來,跑 pip installnpm install 的時間加起來從一百多秒變成只要 5 秒,開心。

另外再跟大家分享一個好東西:django-slow-tests。把這個 Django app 設為 test runner,它就會在跑完所有的 test cases 之後自動幫你列出前 n 個最慢的測試。正所謂射人先射馬、擒賊先擒王、罵人先罵娘,要改善測試的執行速度,當然是從最慢的測試下手啦!

延伸閱讀:

vinta.ws

HTML5 Form Validation Examples

只要有使用者輸入的地方,就少不了要驗證資料。這篇文章就介紹了不少 HTML5 新增的有關 validation 的 <input> 屬性和 CSS pseudo-classes。除了大家應該都已經在用的 required 和各種新的 <input> 類型之外,還有可以直接指定 regular expression 的 pattern 屬性。也示範了如何透過 CSS 做到簡單的 valid 和 invalid 效果,畢竟能使用 HTML/CSS 解决的问题就不要使用 JavaScript。當然前提是瀏覽器有支援,比如說 Safari,它雖然支援 pattern 屬性,但是如果輸入的資料不符合指定的格式,它還是會讓使用者提交表單... OK,好。

不過,當你需要更複雜的 validation 時,就可以試試所謂的 Object Schema Validation 了。例如 Joi,它的 API 用起來真的舒服,可惜目前只支援 Node.js。至於瀏覽器環境可能可以用 Yup 擋一擋,雖然我還沒用過 Yup。

延伸閱讀:

the-art-of-web.com

Tuning AWS SQS Job Queues

StreetVoice 我們有好幾個專案都是用 Amazon SQS 來當 Celery 的 broker,用了很長一段時間都沒出過什麼大問題(不過當然也是有在某個我們都沒發現的地方其實出了錯的可能性,也或許在立下了「XXX 已經很久都沒發生過問題了」這樣的死亡 flag 之後常常那個 XXX 就會很神奇地壞掉),所以一直沒什麼機會仔細研究 Amazon SQS 的各項配置和使用情境(慚愧),剛好看到這篇作者在講他們針對 Amazon SQS 的 debug 過程,應該是挺有參考價值的。

simontaranto.com

Founder's Guide to Automation

雖然 CodeTengu 基本上是個越多人訂閱就越虧錢的 project(超過 5000 人訂閱的話每個月要噴 129 美金,而現在已經四千多人啦),不過因為虛榮心作祟,三不五時也是會想著還可以怎麼推廣。正好就看到這篇文章,忍不住想知道國外的 startup 是如何自動化 Marketing、Social Media 和 Sales 等任務,不過讀完才發現,他們竟然把買廣告和 SEO 也稱為自動化(雖然也不能說不對啦),果然所謂的 founder 講的話都不能盡信啊。不過裡頭提到的幾個服務我恰巧也有在用,例如目前 CodeTengu 在各個社交平台上的貼文就是透過 Buffer 發佈的。

說到自動化,我上禮拜為了把豆瓣上多餘的電影標籤刪掉,還特地用 CasperJS 寫了一支 script 還開了 remote debugging mode 用來輸入 captcha,完美體現了工程師的浪漫與過剩的生產力 ── 畢竟所謂的自動化就是花比手動操作還要多一倍的時間寫一支你這輩子可能只會跑一次的程式。

P.S. CasperJS 封裝了 PhantomJS 並加了一層更友善的 API,可以讓你用 JavaScript 操作一個 headless 的瀏覽器環境。有興趣的人可以看一下 Integrate with webpages using CasperJS。靠北的是,我寫完這個 script 之後就發現了另一套類似的工具叫 Nightmare,是用 Electron 寫成,還附帶了一個 Chrome 外掛可以「直接把你在 Chrome 裡的操作錄製下來變成 script」,幹。

P.S.2 雖然跟主題無關,但是看到 FundersClub 這個名字,就讓我想到以前讀過的伍迪艾倫的散文集「门萨的娼妓」(門薩 Mensa 是一個只有各地人口中智商最高的前百分之二的人才可以加入的同好會)裡面的一段話,大家感受一下。

fundersclub.com

@tzangms

How to successfully grow a code review culture

這份投影片是一份非常、非常好的 Code Review 指南啊!!!!

裡面提到的許多的建議, 都是我這幾年在 StreetVoice 推行 Code Review 幾年後所體認到的心得, 只是沒能把這些心得給寫下並分享出來, 不過看完這篇之後也強化了我先前對 Code Review 應該要怎麼做才好的認知。

例如, 下面這幾點是這幾年在 StreetVoice 推行 Code Review 這件事, 在這篇投影片也提到, 讓我最有感觸的事:

  • 要盡快 Review, 因為隔太久的話, 原本的發起人可能會因為時間太久而遺忘, 需要比較久的時間回想, 再來就是, 因為這功能被擺太久都沒上線, 久了就越不想去看, 發起人也會覺得氣餒。
  • 大的 PR 做到一半之前 ( 30% ~ 50% ) 就得先送 PR, 這樣除了可以讓 reviewer 知道你在做什麼, 如果方向、架構對不對, 可以提早修正, 然後把 PR 的 title prefix 一下 [WIP]
  • push commit 之前自己先 diff review 過, 自己也是 reviewer, 不要因為有人會做 Code Review 就把找問題的責任丟到別人身上
  • PR 來回討論太多次, 就離開電腦, 直接當面溝通

看來得趕快找時間把這份投影片寫一篇中文手冊讓內部使用才行啊 ...

slideshare.net

pre-commit by Yelp

這個 pre-commit 是 Yelp 所開放出來的「可維護的 pre-commit 框架」 簡單來說就是用 yaml 寫設定檔, 就可以方便地維護 pre commit hooks, 讓你的 team member 也可以透過簡單幾個指令便可以快速安裝、使用同一份 pre-commit hooks。

兩個禮拜前看到這個, 當時就很想試試, 後來則是因為發現一些 team member 還是會有一些基本的 coding style 的問題, 所以才認真開始研究 pre-commit 這個工具。

目前覺得真的很方便, 下禮拜要來正式強迫開發人員們開始採用。 只要格式不對, 便會沒辦法 commit, 需要把有問題的地方修正才能真正 commit, 從最根源的方式處理起, 我們的 code base 應該又會更棒了吧! 特別是用上了 autopep8-wrapper 這個外掛來自動修正格式了 (笑)

pre-commit.com

@hiroshiyui

Interview with Jim Hall of FreeDOS

這篇專訪了 FreeDOS 專案創始人 Jim Hall。對,是 FreeDOS 不是 FreeBSD,不要眼花看錯了,就是那個 DOS,已經成了某些不明究理的人對「提示字元」、「命令列介面」慣稱的那個 DOS。

即使到了 2016 年,仍有不少人透過 FreeDOS 或 DOSBox 運行那些換不掉的、捨不得丟掉的應用程式與遊戲(但是已經看不到有人還在用 OS/2 了…)。這篇專訪讓我覺得最發人深省的一點,就是他人說服了 Jim 讓 FreeDOS 保持「就是那個 DOS」,而不是引入各種酷炫夯的新特性,讓它成為一個「現代」的 OS。聽得進去這種「不冒進」意見的 Jim 也是不簡單。

畢竟,大家都看多了那種不斷想要給用戶帶來新意、證明自己還活躍著的產品團隊,不知不覺間把產品邯鄲學步弄得四不像,或是功能變得無比繁複、眼花撩亂。

opensource.com

Using GPG with Smart Cards

日前終於收到了千里迢迢、過鹹水而來的 Yubikey Neo,除了是因為在 COSCUP 2016 聽了「深入淺出 Google/Dropbox/GitHub 都採用的 FIDO U2F」這場啟發的興趣之外,另外就是看中這款可以當成 OpenPGP card 的緣故,算是目前最好買的 OpenPGP card 吧?我一直很想要有個 OpenPGP card,方便我跨環境使用 OpenPGP/GnuPG。

這篇就是講解如何設定、使用 OpenPGP card,寫得很清楚。

同場加映:Yubikey NEO 入手小计

jfry.me

Everything You Should Know About Progressive Web Apps

Progressive Web Apps (PWA) 讓網站(頁)長得像一個原生應用程式、用起來像一個原生應用程式,這篇文章算是 PWA 的懶人包,闡釋了 PWA 的特性。對用戶而言,PWA 增進了 UX,對開發者而言,PWA 減低了因為不同平台間的技術 stacks 差異,導致需多重投入開發資源的各種成本問題。

說實在的,很多行動 Apps 被使用的頻率極少,但是要用到時你又希望它隨傳隨到,總而言之,最好是「呼之即來,揮之即去」不要佔去手機寶貴的空間,這類的 Apps 其實更適合以 PWA 的形式滿足供需。

同場加映:Progressive Web App 會是未來趨勢嗎?

tutorialzine.com

Adaptive Layout

前陣子因為某電子書平台在台灣設點開業,於是我去下載了一本書嘗鮮,在 Twitter 上訐譙感嘆這本又是 PDF 原封不動直接搬上來,不知何時這些出版業者才會意識到「電子顯示設備不是一張有著固定大小的紙」這件事?中間還跟其他人有些爭執意見交換,我在意的點是「現有科技、技術就是要你們(出版業者)適應 box model, RWD 與 Adaptive Layout,而你們卻是貪圖自己方便、因循苟且、輕忽讀者的閱讀體驗!」

這個網站就是在講解 EPUB 規格當中的 Adaptive Layout

sorotokin.com

Rise From the Ashes — Incremental APIs With Phoenix

這篇講解了如何使用 terraform 讓 Phoenix 可以整合既有的 API,達成漸次過渡,是想要導入 Phoenix、又有不少 legacy code 包袱的產品團隊可以借鑒的一篇好文。

medium.com

Welcome, adventurer! — BEAM VM Wisdoms 1.0 documentation

這個網站整理了 BEAM VM 的相關知識,對於想要瞭解 BEAM 工作原理的人來說是很好的指引文件。

clau.se

Languages, and about languages, on the BEAM

除了 Erlang 以及近來能見度愈來愈受矚目的 Elixir 之外,其實還有一些基於 BEAM 的語言,這篇整理、羅列出這些語言。

github.com

Elixir Maze

一個以 Elixir 移植自 ruby-maze 的迷宮產生器。

一個有效(有解)的迷宮,需符合「不論效率,沿著單邊牆壁走,要能夠走到出口」的設計原理,觀察這個程式的算法設計(溫馨提示:從 lib/maze/maze.ex 這裡開始看),蠻有趣的。

同場加映:如果身处一个迷宫,且看不到出口和入口,且不可翻越迷宫墙。那么,怎样快速的离开迷宫? - 数学建模 - 知乎

github.com

工作機會

Python Web Developer at StreetVoice (台北、北京、上海)

開發及維護 StreetVoice 旗下相關網站。

意者歡迎來信:tzangms@streetvoice.com

streetvoice.com


This RSS feed is published on http://weekly.codetengu.com/. You can also subscribe via email.


Viewing all articles
Browse latest Browse all 109

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>