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

CodeTengu Weekly 碼天狗週刊 - Issue 23 為了讓公司的開發流程正常化,有人提議要導入 DevOps,但是因為有部分工程師反對,主管決定讓大家投票表決,有三個選項 1. 導入 2. 不導入 3. 維持現狀 - Jan 4th 2016

$
0
0

Hello World

CodeTengu Weekly 碼天狗週刊

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

你也可以瀏覽一下前幾期的內容,有價值的東西是不會過時的。

以下是目前的 curator 陣容:

大家也可以 follow 一下 CodeTengu 的 FacebookTwitterGitHub,有很多 Weekly 看不到的內容。有任何建議或疑問也可以來 Gitter 聊一聊,歡迎亂入 👺

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

@saiday

How I Start. Go RESTful API backend

身為一個職業的 Mobile app developer 在工作之餘做自己的 side projects 常常會需要 backend service 的輔助,許多人選擇 Parse 當作 app 依賴的後端,Parse 很好,高效又快速還提供很多實用工具。

不過像我這樣的閒人,我是選擇學 Go 自己寫 backend,會做這個選擇是因為反正 side project 也賺不了錢,那不如利用實際專案來學點東西,而且 Go 用來寫一個 API backend 建置上非常簡單能犯的錯誤也相對少,因為是靜態語言 deploy 到 server 上也是簡單粗暴。

這篇教學簡單且算是詳細,有許多一個 Go 新手透過 net/http package 寫 API backend 應該知道的資訊。

如果你還沒寫過 Go,對岸有一位網友整理了他的學習筆記 《Go 学习笔记》,裡面完全沒有廢話,只要熟練一個以上程式語言的人看起來應該都沒有問題。最近又有人將 《Go 学习笔记》 整合 wide [1] 整理成可以直接在 web 上編寫執行的版本 Go 边看边练 -《Go 学习笔记》

註:wide 是中國開發者開發的 Web-based IDE,超秋的

howistart.org

Higher-order functions in Swift

當一個 function 傳入的參數也是 function 時我們就可以說它是 higher-order function,這篇文介紹 Swift 的標準庫中最常被使用的 higher-order functions: reduce, filter, map, flatMap

Swift 引入了不少 Functional Programming 的理念,說到這個,Functional Swift 在近期已經將內容更新到 Swift 2 了。

ijoshsmith.com

Server-side Swift - Perfect

One language to rule them all.

終於出現啦!在 Swift 宣布開源的那天,就開始幻想用 Swift 寫 backend 並且跑在 linux 機器上。 而現在 Perfect framework 已經支持跑在 ubuntu 15.10 上面了,看了一下他們的 samples 目前還在超早期的階段,比較完整的專案是 Tap Tracker,可以看出 server-side 設計的方式。

這是一個值得關注的專案。

perfect.org

Android’s multidex slows down app startup

因為 Android 開發上有 65k 方法數上限,如果 code base 大到這個程度的話,最終我們得在 Gradle 設置啟動 multidex 來解決,但這篇文指出開啟了 multidex 的 app 啟動時間會變慢並提供了作者的解決方案:在 app 結束前掃一次 main dex 以外的 dex file,手動把在啟動時期需要的 class 搬到 main dex,實在是很土炮很聰明!

中文翻譯版本:Android的multidex帶來的性能問題-減慢app啟動速度

medium.com

The build.gradle ubiquity

Genymotion 的技術部落格介紹了他們內部專案使用 Gradle 的方式,在 build.gradleapply from: 來整理跟採用對應的 Gradle scripts、在開發機器上使用 local.properties 存敏感資訊、在 CI server 上透過設定 gradle.properties 來存敏感資訊。

genymobile.com

@mingderwang

A 101 Noob Intro to Programming Smart Contracts on Ethereum

這篇介紹新手寫 Ethereum 的應用程式, 可以說幾乎是一個完整的入門介紹。

它從基本概念, 什麼是 cryptocurrency, 什麼是 Proof of Work 教起, 到介紹所有 Ethereum 的專有名詞, 包括 Ether, Wei, Gas, DApp 等。進而教你如何利用 go-ethereum (geth), python (pyethereum), 或 C++ (cpp-ethereum) 等版本的 client 端程式, 在你的電腦上開一個 node 來與整個 ethereum 網串連起來。開始可以寫 code...

之所以類似 Ethereum 的網路能得以運作, 要靠一些人願意用 Proof of Work, 也就是所謂的 "挖礦" (mining) 的方式, 來保持運作所需要的動能。因此在每個 Ethereum 虛擬主機 (也就是 node) 上執行每一個儲存或指令, 都會消耗掉一些能量, 也就是要付出一些代價, 我們可以用 Gas 之類的東西來支付。這個網路就會不斷的幫我們執行這些交易或所謂的 Smart Contract, 也就是一種 DApp。

文章中, 也完整的介紹了如何用一種類似 JavaScript 的語言 "Solidity", 來開發 DApp 程式, 進而用 solc 編譯器, 先把程式編譯成二進位碼, 再透由 web3.js API 也就是 geth 的 JavaScipt Console 裡執行 Web3 指令, 送至網路中, 讓別人使用。

如果你只想測試你的程式, 也可以用 testrpc 自成一網, 就不需要花 Gas 或真的 Ether (虛擬幣) 來執行。最終, 你也能將 Ethereum 網路程式應用整合到你網頁裡, 讓使用者更容易使用你的 Smart Contracts。

medium.com

Introducing a generic dynamic mapping template for ElasticSearch

天龍書局終於看到介紹 ELK 的書了, 雖然是簡體版, 但可以看出它在國外已經大量被使用了, 才有人開始出書。這裡介紹一篇使用 Elasticsearch 的小技巧, 也就是如何使用 dynamic mapping template 來改變 Elasticsearch 自動 mapping 的規則。

如果還沒裝 ELK 的人, 可以參考 DO 的 安裝 ELK 教學 先安裝好 ELK, 再做 mapping template 的測試。如果想了解爲何要學 ELK, 可以看 Building for Production: Web Applications — Centralized Logging

saskia-vola.com

Kubernetes 如何使用 NFS Volume 之範例

2015 年你已經學會了最夯的 docker, 2016 年你一定想如何管理你的 dockers, 如何跨平臺使用你建好的 dockerized projects, 甚至於如何應用到 production 上。

替自己或公司蓋一個 kubernetes 1.1 的環境, 應該是最好的開始。但你第一個會碰到的問題就是 docker 的 volumes 在 kubernetes 跨主機的環境該如何使用? 這 kubernetes 手冊介紹最簡單的方法, 就是用一個 NFS 來讓目錄可以共享。

當然, NFS 不是唯一的解, 還有 Persistent Volumes, Ceph Volumes, GlusterFS, iSCSI , hostPath, downloadAPI 等, 當然使用雲端 container engine, 各家所提供自家的儲存方式就各有不同 volumes。但最基本的 Persistent Volume 或 NFS 應該都有。切記, 你 containers 可能跨到別臺主機, 所以最好不要用 hostPath, 因爲當 containers 被自動分配到別臺主機執行時, 就看不到原來那臺主機的目錄了。

kubernetes.io

@kako0507

React Components, Elements, and Instances

相信很多有玩過 React 的朋友可能會對 Components, Elements 與 Instances 有些混淆,這篇文章詳細介紹了它們之間的關係:

  • Component: 分為 function 和 class 兩種方式,不過目前使用 class 實作才可以簡單享有 React 強大的 lifecycle 。
  • Element: 是用來告知 React 如何來畫畫面,必須帶入 element 的 type 與 properties ,是輕量的 Object, 可以很容易的 traverse,一旦被創建,將不可更改。
  • Instances: 最後產生的 DOM element,撰寫 React 並不需要處理 Instance,所以文章內並沒有探討太多。

medium.com

Flexibility: 在 IE 8 也可以使用 CSS3 flexbox

在做 CSS 排版的時候, flexbox 在處理同樣的問題時可以更簡單的呈現 Layout , 但因為是 CSS3 的特性, 如果需要處理 IE 相容性,可能就需要放棄這強大的功能, Flexibility 是一個 CSS polyfill ,利用 IE 的 currentStyle 實作,讓開發者可以簡單的在 IE 上使用 flexbox 。

github.com

Introducing Background Sync

Background Sync 是一個新的 Web API,用來延遲使用者行為,直到網絡連線穩定。這樣可以保證實際發送的資料就是用戶想要發送的。

使用者在瀏覽網頁時,常常浪費時間再等待 Request ,不佳的網路環境常常會影響使用者體驗,如果手機與平板的使用者發送 Request , 就必須要停留在瀏覽器等待 Server 回應,這時候有了 Background Sync ,就可以解決需要再同個頁面等待的問題。

Background sync demo in Chrome

google.com

Lebab: Transpile ES5 code into ES6 live!

最近很多前端人都喜歡使用 Babel 把 ES6 code compile 到 ES5 版本以提高瀏覽器的支援度, Lebab 則是個有趣的工具,剛好像反,它會將舊的 code compile 到 ES6 ,這裡有線上版本

lebab.io

JavaScript block scope 變數宣告: let 與 const

JavaScript 在 ECMAScript 5 之前並不支援 block scope ,若想得到類似 block scope 的效果, 常常都需要透過 Immediately-invoked function 來達成,且因為 hoisting 的特性,會讓程式的順序產生混淆,所以在 ECMAScript 6 版本,除了 global variable 外,都建議改為 let 與 const 宣告。

eventbrite.com

Two Legs Bad

立委投票指南

1 月 16 日就要選舉啦,我相信大家對於要投給哪一組總統候選人,心裡都應該已經有個底了。不過,如果你是那種「完全不想投給民進黨,卻又覺得想投給國民黨的自己似乎有點可恥,所以乾脆把票投給宋楚瑜好了(可是心裡還是有點掙扎)」的人,這裡告訴你一個解套的辦法:那你就投廢票啊。

至於立委選舉,如果你也還沒決定要投給誰,你可以參考看看這一份由 g0v 製作的「立委投票指南」。你可以在上面看到每一位立委對於各個法案的表決,哪些人反對、哪些人贊成。例如底下的這兩項表決,大家可以點進去感受一下:

g0v.tw

2016 各政黨重視勞工權益評分表

這一次的選舉你會有三張選票,一張投總統、一張投立委、一張投政黨。如果你還沒決定要把政黨票投給哪一個政黨,你可以看看這一份「前三大政黨資產比較表」和「2016 各政黨重視勞工權益評分表」,然後深切地感受一下自己無產階級的身份、每個加班但是沒有加班費的夜晚和那些你知道你這輩子都不可能買得起的房子,再來好好地決定你要投給哪一個政黨。

以上來自 @vinta 的分享。

facebook.com


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


CodeTengu Weekly 碼天狗週刊 - Issue 24 國民黨不倒,台灣不會好 - Jan 11th 2016

$
0
0

Hello World

CodeTengu Weekly 碼天狗週刊

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

你也可以瀏覽一下前幾期的內容,有價值的東西是不會過時的。

以下是目前的 curator 陣容:

大家也可以 follow 一下 CodeTengu 的 FacebookTwitterGitHub,有很多 Weekly 看不到的內容。有任何建議或疑問也可以來 Gitter 聊一聊,歡迎亂入 👺

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

@tzangms

Growth Hacking 不只是 Creative Marketing,別忽略背後的資料科學與方法論

最近 Growth Hacking 鬧的沸沸揚揚的, Cubie 創辦人 @tempofeng 的這篇文章, 我覺得非常有見地, 不愧是 tempo 哥。

tempo.tw

Mature Developers - 成熟的開發者

成熟的開發者有哪些特質? 我個人覺得這篇值得一看, 特別是 Tech Lead 這個角色, 或是正在準備成為 Tech Lead 的人, 看看自己是否滿分? 或是還有哪些點得加強一下。

squeakyvessel.com

Learnings from Building reread.io

這是 reread.io 的作者 @winstonyw 寫的文章, reread.io 是一個 Pocket 的工具。 因為很多人都跟作者一樣, 存了很多文章進 Pocket, 但是也不會去讀, 或是忘記。 而 reread.io 則是可以每天寄一封 email 給你自己, 幫助你可以讀完先前存下來的東西。

我先前雖然已經從 Pocket 跳槽到 Instapaper 了, 不過因為 Pocket 還是有很多書籤, 所以一直有用 reread.io 來閱讀以及清理先前存下來的文章。

reread.io 是作者的 weekend project, 這篇則是在紀錄他從開發後, 開始作一些行銷的東做紀錄, 甚至被 Pocket 聯絡, 邀請他去講 reread.io。

雖然 reread.io 沒有爆發式的成長, 或是很漂亮的數據, 不過我覺得 side project 就是要拿來這樣玩, 可以從中學到很多東西, 驗證你的想法, 學習如何行銷自己的作品。

最後 reread.io 居然 Open Source 了! 大家去看看文章吧!

medium.com

‘Give Away Your Legos’ and Other Commandments for Scaling Startups

Molly Graham, 現任 Quip 的 COO, 之前待過 Google, Facebook, 都經歷過公司員工人數快速成長爆發的時期。

If you personally want to grow as fast as your company, you have to give away your job every couple months.

公司人數成長太快, 快到每幾個月, 你就得放掉手上的工作, 交給別人, 往更高更宏觀的工作方向走, 如果放不掉手上的工作, 沒跟著公司成長的速度, 很容易就會變成公司瓶頸。

文章裡面也提到很多關於招人以及公司文化, 我覺得挺有趣的, 要是在這種爆發的公司一定會很焦慮, 但是也會很有挑戰性吧 (笑)

其中也提到一個會讓人會心一笑的點:

A week ago, someone might have told you they hate their Legos and want to get rid of them. But as soon as you hire someone else, they suddenly want to hang on to all of them.

firstround.com

本週 IG: @90_allie

因為這電子報系統好像沒辦法放動態 gif 檔, 只好直接貼連結了:

http://cdn.koreaboo.com/wp-content/uploads/2016/01/loi.gif

上面這個是最近韓國網民瘋傳的棒球啦啦隊的動態 GIF, 一看就覺得戀愛了, 所以就去找了一下她的資料, 跟大家分享一下。

instagram.com

@adamp33

台灣真的有這麼多公司使用 React.js?

一篇面試文在台灣前端圈引起討論,這位牛人面試了 22 家公司的前端職位,從過程中不難看出技術走向,同時也對於台灣網路公司普遍對於前端知識的缺乏,能有一個前端團隊的公司相當稀少,更遑論面試時能夠評估一個前端工程師的能力。

另外也從中看到技術趨勢的轉變之快,React.js 公開後約一年多的時間,在前端圈子中幾乎成為「新潮」的代名詞,許多公司紛紛採用,連 Yahoo! 也不例外。這幾年追逐 framework 的情況越來越盛,backbone.js、angularJS 到 React.js,更迭速度之快,更讓人覺得投資在語言本身,打好基礎才是不變應萬變之道。

ptt.cc

用純 CSS 實現滾動視差(Parallax Scrolling)

一般的滾動視差網頁都是以 JavaScript 來處理畫面元素移動速度,但你有想過用 CSS 的 3D 視角來做嗎?這一篇教你如何用 translate3d 和 perspective 屬性達到滾動式差的效果,相當神奇!

keithclark.co.uk

colorfilter.css

Spotify 的音樂清單中,多以雙色的照片來呈現風格,一個開源專案利用 CSS 的 mix-blend-modefilter 屬性做出類似的效果,內建多種組合,而且相當好上手。

demo

github.io

@chiahsien

DVTPlugInCompatibilityUUIDifier

Xcode 絕對是大多數 Mac / iOS 開發者的首選 IDE,但不可否認的它真的很陽春。還好有許多熱心的開發者貢獻了一大堆 plugins,幫 Xcode 加上了許多實用的功能。只是由於先天架構的限制,只要 Xcode 版本更新,原有的 plugins 就會失效。不過再也不用擔心了,只要安裝了這個 plugin(它其實是一隻看門狗),就會自動升級所有 plugins 的相容性!

延伸閱讀:

github.com

Difference between nullable, __nullable and _Nullable in Objective-C

前幾天在跟同事討論要統一程式碼風格,就聊到了要使用 nullable__nullable、還是 __Nullable。StackOverflow 上的這篇文章講解的很清楚,值得把它記錄下來以便隨時參考。

stackoverflow.com

Upgrading to RxSwift - Artsy Engineering

任職於 Artsy 的 Ash Furrow 是一位 Functional Reactive Programming 的愛好者,他寫了一本 Functional Reactive Programming on iOS 教大家如何用 ReactiveCocoa 寫 FRP。

不過在 Swift 推出之後,雖然 ReactiveCocoa 也有跟著推出 Swift 版本,他卻棄而改用 RxSwift,這篇文章解釋了他這麼做的理由。

延伸閱讀:

github.io

Open source Swift: weekly brief

Swift 不愧是最受矚目的程式語言,打從它開放原始碼之後,建議與修改就源源不絕襲來,一般人很難跟得上它更新的進度。還好國外有位熱心工程師,幫我們整理了 Swift 社群的每週更新摘要,只要看一下就可以大致瞭解該週又有什麼變化。

jessesquires.com

解耦神器 —— 统跳协议和 Rewrite 引擎

中國大陸的天貓 app 是一個龐然大物,它們的流量規模已達千萬等級,並且至少有十個團隊在直接維護天貓 app。當團隊跟產品長到這麼大之後,整個架構的好壞將直接影響團隊們是否能夠順利合作、功能是否能夠輕易修改。這篇文章分享了天貓如何設計架構讓界面解耦,以及如何在任意頁面之間跳轉。

延伸閱讀:

pingguohe.net

Two Legs Bad

立委投票「超級」指南:真正重要的事,你為什麼還不關心?

這個禮拜六 1 月 16 日就是選舉日啦,大家記得一定要去投票吶!

thenewslens.com

立委投票指南

我相信大家對於要投給哪一組總統候選人,心裡都應該已經有個底了。不過,如果你是那種「完全不想投給民進黨,卻又覺得想投給國民黨的自己似乎有點可恥,所以乾脆把票投給宋楚瑜好了(可是心裡還是有點掙扎)」的人,在這裡告訴你一個解套的辦法:其實你可以不要去投票。

至於立委選舉,如果你也還沒決定要投給誰,你可以參考看看這一份由 g0v 製作的「立委投票指南」。你可以在上面看到每一位立委對於各個法案的表決,哪些人反對、哪些人贊成。例如底下的這兩項表決,大家可以點進去感受一下:

g0v.tw

2016 各政黨重視勞工權益評分表

如果你也還沒決定要把政黨票投給哪一個政黨,你可以看看這一份「前三大政黨資產比較表」和「2016 各政黨重視勞工權益評分表」,然後感受一下自己無產階級的身份、那些加班卻沒有加班費的夜晚和這社會上的貧富差距,再來好好地決定你要投給哪一個政黨。

以上來自 @vinta 的分享。

facebook.com

Otaku is the New Sexy

要去哪裡搭訕一個不愛出門的好女人?

答案就是 1 月 16 日的投票所!

可是要怎麼跟她搭話呢?身為一個不愛出門的好女人,讓我告訴你吧少年,在投票所當監票人員就是你的正解了!而且成為志工選填自己要去監票的投票所,還會馬上得到任務夥伴的資料呢!試想如果真的發生停電這種鳥事,馬上打開手電筒的你豈不是既帥氣又冷靜,再說,平常像個叛逆之子 (主圖漫畫) 但認真起來主持正義的少年可是很有魅力的。

新井英樹的《叛逆之子》,描寫一名孤兒小學生重返社會後,積極反抗各種僵化的社會體制,是一部讓人看了既熱血又不停捏著冷汗放不開的作品,在這特別的時刻,推薦給叛逆的你。

前進吧!少年,今年,你的桃花開在投票所啊!

但是如果她特別關心 KMT 的票數就算再正都要忍住啊!

以上來自 @autisticcat 的分享!

hsfideas.tw


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

CodeTengu Weekly 碼天狗週刊 - Issue 25 echo "國民黨過橋喔~" && sudo killall -9 kmt && sudo su - citizen watch -n 1 dpp - Jan 18th 2016

$
0
0

Hello World

CodeTengu Weekly 碼天狗週刊

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

你也可以瀏覽一下前幾期的內容,有價值的東西是不會過時的。

以下是目前的 curator 陣容:

大家也可以 follow 一下 CodeTengu 的 FacebookTwitterGitHub,有很多 Weekly 看不到的內容。有任何建議或疑問也可以來 Gitter 聊一聊,歡迎亂入 👺

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

@vinta

What is a metaclass in Python?

這個 Stack Overflow 上的回答非常清楚明瞭地解說了什麼是 Python 裡的 metaclass。他提到 type() 就是一個 metaclass,是的,就是那個你平常用來做類型檢查的 type(),雖然其實你應該用 isinstance()

像是 Django Models 就用了不少 metaclass 的技巧,如果你想知道 metaclass 還有哪些使用情境的話,可以看看 What are your (concrete) use-cases for metaclasses in Python?

stackoverflow.com

Celery: Designing Workflows

使用 Python 從事 web 開發的人,對 Celery 這個用來做 asynchronous task queue 的工具一定都不陌生,在公司的和我自己的大大小小的專案裡幾乎都有用到 Celery。

不過除了最基本的 @task() 的用法之外,Celery 其實還有一些非常實用的 methods,例如 chord() 可以在一批 celery task 通通都執行完之後再呼叫某個 callback function,而 chunks() 能夠方便地把一個很大的 list 切成一段一段再餵進 celery task。

延伸閱讀:

readthedocs.org

vinta/pangu.js

我上禮拜把我的一個原本只能在瀏覽器執行的 JavaScript library 用 ES6 改寫,變成能夠同時支援 Node.js 和 Browser 兩種環境(就是所謂的 Isomorphic JavaScript,最近的熱詞),順便摸了一圈目前 JavaScript 生態系裡主流的工具鏈,包括:

  • Tern - a code-analysis engine (intelligent code completion)
  • ESLint - a linter
  • Babel - a source-to-source compiler (transpiler)
  • Webpack - a module bundler
  • Karma - a test runner
  • Mocha - a test framework
  • Chai - a test assertion library

也捨棄了 Grunt,直接用 npm run 來當 task runner。

作為一個 Web backend developer(還恬不知恥地自稱 DevOps),好一陣子沒有認真寫 JavaScript 了,雖然之前一直有耳聞寫 JS 的人都是一些喪心病狂的傢伙,但是等到自己跳下去寫了才發現,原來傳聞都是真的啊幹,單單要 init 一個專案就不知道要搞多少東西,對新手非常不友善啊!這真的不是好現象。

我要說的是,因為 pangu.js 整個專案的架構相對單純。除了上面提到的東西之外,也整合了 Travis CI 和發布到 npm,甚至還提交到 cdnjs 了。以一個「現代的 JavaScript 專案」來說,該有的東西都有了。所以,如果你跟我一樣也是最近才開始接觸 ECMAScript 6 和 Node.js,需要一個簡潔但是完整的 starter kit 的話,或許可以參考一下這個專案:pangu.js

github.com

Airbnb JavaScript Style Guide

所有的 JavaScript Style Guide 裡面,Airbnb 的這一份應該是最權威的了,除了有 ES5 和 ES6 兩個版本之外,更棒的是他們還特地寫了一個 ESLint 的外掛:eslint-config-airbnb,不需要自己配置 .eslintrc 了,非常建議大家試試。

延伸閱讀:

github.com

Short read: How is HTTP/2 different? Should we still minify and concatenate?

前陣子在我們 team 的 SysAdmin 的努力之下,StreetVoice 終於加上了 Varnish Cache 還順便全站 HTTPS 了,下一步就是 HTTP/2 啦!畢竟 NGINXCloudFlare 也都已經正式支援 HTTP/2 了啊。

前幾天正好看到這篇文章,簡單扼要地說明了 HTTP/2 跟現在主流的 HTTP/1.1 有什麼不同,大家可以看一下。

P.S. 值得一提的是 Scale Your Code 這個網站,上面有很多作者訪問一些業界大神的 podcast 節目可以聽。

scaleyourcode.com

@fukuball

Evaluation of Deep Learning Toolkits

Deep Learning 大概是目前最火紅的機器學習演算法,舉凡 Siri 的語音辨識、Google 的自動駕駛技術都有使用到 Deep Learning。要學習一項技術最好的方法就是先跳下去用它,除非學這項技術會有生命危險,還好寫程式不會有生命危險(過勞死除外)。所以就讓我們直接跳下去使用 Deep Learning 吧!

結果一跳下去找 Deep Learning 的相關資源,就發現有 CaffeCNTKTensorFlowTheanoTorch 等深度學習框架可以使用,到底要挑哪個呢?本篇作者為每個深度學習框架各方面的優勢做了一些評析,挑個喜歡的來玩玩看吧!

github.com

Python Numpy Tutorial - Python Numpy 快速上手

自從脫離研究所之後,就沒有再碰 Numpy,一直到 Google 開源了 TensorFlow 這個深度學習框架,才再去找了些相關資源來溫習一下 Numpy。

這個來自史丹佛大學的類神經網絡機器課程提供了一個 Python Numpy Tutorial,非常適合沒有寫過 Numpy 的人作為一個快速上手的學習資源,這個學習資源作者 Justin Johnson 的 Project 也都蠻有可看性的,提供給大家參考看看。

github.io

林軒田教授機器學習基石 Machine Learning Foundations 第九講學習筆記

前八講自從介紹了 PLA 這個演算法來解二元分類的問題之後,林軒田教授很詳細地講解了機器學習流程中每個部份的數學理論,讓我們了解到只要讓演算法在取樣資料裡面能夠得到好的效果,在未來做預測時也能夠得到差不多相近的結果,這就是機器學習。

第九講便開始介紹新的機器學習演算法,一樣使用核發信用卡這個例子,當我們想讓機器自動預測核發信用卡額度時,要讓機器從資料中學習回答出一個實數解,這樣的問題就是迴歸問題,我們可以用統計學上的迴歸運算來做到機器學習。迴歸這個機器學習演算法非常簡單,如果你會 numpy 的話,只要兩行程式就寫完了~

fukuball.com

Child’s Play - Computers should stop trying to act like grown-ups

Alan Turing 曾經提出過,要做到真正的人工智慧,就要設計出像小孩一樣學習能力的機器。機器學習演算法發展至今一直是使用大量人為產生的資料來達到學習效果,也因為有了一點成效,所以目前的研究方向都是朝著這個方向走。這樣的機器學習方法跟小孩學習模式有什麼不同呢?我們可以用這個例子來說明:從一張沒看過的照片辨識這張照片是不是忍者龜的照片,使用 Deep Learning 可能需要透過大量人為產生的資料來做訓練,而小孩只要透過幾張樣本照片就可以快速學習了,小孩學習速度可見一斑!

在 Deep Learning 當道的機器學習研究領域,若有研究者可以讓機器有跟小孩一樣的學習速度的話,也許會對人工智慧帶來很大的變革吧!

technologyreview.com

PHP Development Evolution - PHP 變革史

PHP 7 與之前的 PHP 版本相比起來是一個非常大的變革,效能也因為這些變革而帶來了巨大的提升。本篇文章回顧了 PHP 語言從誕生至今的變革史,透過清楚明瞭的時間軸版面可以對 PHP 發展的過程一目了然,他們甚至把語言變革的過程視覺化做成影片了,大家可以感受一下。

line.do

@wancw

本週 IG: 王梓如 (@ayuuubb)

instagram.com

Top 20 Amazon and Google Programming Interview Questions

如同前幾期 Weekly 的刊頭文,我最近正好在物色新的工作機會。自然也就特別注意這類面試考題。剛好農曆年前後也是個換工作的常見時機,分享給有需要的人參考。

另外,編寫這篇時正好從 Twitter 看到《Python 工程师面试题集合》,一併附上。


(工商服務) 我寫過 2 年 Android app、 5 年 Web backend 和 API,使用語言包含 Java、Python、Go、JavaScript、C++。如果您的公司正在徵求 backend developer 也歡迎跟我聯絡:contact@wancw.idv.tw。 :)

blogspot.com

Please. Don't Patch Like An Idiot

不知道各位在設計 RESTful API 時,都怎麼處理 PATCH 這個 HTTP method 呢?作者認為 PATCH 的 request 內容應該是 描述變化 而不是 更新後的內容。(後者應該用在 PUT 上)

RFC 裡有兩種用來描述 JSON 變化(patch)的規範:

  1. RFC 6902 - JSON Patch 以一串操作來描述 JSON 內容的變化,
  2. RFC 7396 - JSON Merge Patch 則是只記錄有變化的部分。

他們也各自有對應的標準 MIME type (application/json-patch+jsonapplication/merge-patch+json) ,之後不妨試著使用看看吧。

williamdurand.fr

2015 年十大熱門 Android 開源新專案

碼農網整理了 GitHub 上 2015 年的十大熱門新專案,不少是 Material Design 的 UI 套件。

偵測 memory leak 的 LeakCanary 和透過 Chrome Dev Tools 除錯 Android App 的 Stetho 是值得一試的工具。

Plaid 是不錯的 Material Design App 參考範例。也可以進一步參考 Refactoring Plaid App - A Reactive MVP Approach (Part 1, Part 2) 系列文章,看看 Hannes Dorfmann 如何把 Plaid 改寫成 Reactive MVP 架構。

名單上其他的 App 或是 library 就讓各位自己研究看看囉。

codeceo.com

How To Be A Programmer: Community Version

Robert L. Read 這本 How to be a Programmer 涵蓋範圍很廣,從除錯、效能量測、優化、測試、文件撰寫到團隊合作、自我管理、自我成長等等……。

我才剛開始看,無法做太具體的建議或評論;但我想它涵蓋這麼大範圍的主題,當作一個起點應該是不錯的。

github.com

Random Cool Stuff

Talk Python To Me

這是一個以 Python 為主題的 podcast 節目,每一集都會邀請一個 Python developer 上節目,可能是某個知名的 framework、library 的開發者或是某一本 Python 書籍的作者,喜歡聽 podcast 的人可以試試。

然後,重點來了,這個節目的開場音樂是由一位來自加拿大的饒舌歌手(同時也是個 JavaScript developer)所創作的,歌名叫做 Developers, Developers, Developers, Developers (feat. Steve Ballmer)歌詞在此,大家感受一下。

噢,差點忘了說,Steve Ballmer 就是微軟的前 CEO,人稱瘋子老鮑

@vinta 分享。

talkpython.fm

Otaku is the New Sexy

嘛,你也不能因為我的腦補就逮捕我啊~ (捻鬚)

妄想高校教員森下。

這是我這陣子覺得最值得推薦的漫畫了,首先是他長腿叔叔 (透露年齡) 一般的外型有點萌,而內在完全是個萌豚這個反差萌又再度萌到我,以上短短三句話就出現了三次萌,不如我就直接承認我是個大叔控好了。

是的,森下是個愛妄想的大叔,也是一個被女高中生圍繞的教師,而且堅守著「YES 妄想,NO TOUCH!!!」的最高指導原則不停的腦補,雖然每次都帥氣的出糗了,但一點都不氣餒唷,推薦給喜歡《在下坂本,有何貴幹?》這種 YY 路線的漫迷。據我所知台灣目前還沒有代理,但日本的單行本已經出到第三集了唷!

以上來自被愛碎唸的處女座 @vinta 說沒好好介紹過漫畫的 @autisticcat 的分享!

CodeTengu Weekly


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

CodeTengu Weekly 碼天狗週刊 - Issue 26 自從注意到更新 Xcode 需要先關閉 iTunes 之後,我對於模組解耦合這件事已經沒有追求 - Jan 25th 2016

$
0
0

Hello World

CodeTengu Weekly 碼天狗週刊

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

你也可以瀏覽一下前幾期的內容,有價值的東西是不會過時的。

以下是目前的 curator 陣容:

大家也可以 follow 一下 CodeTengu 的 FacebookTwitterGitHub,有很多 Weekly 看不到的內容。有任何建議或疑問也可以來 Gitter 聊一聊,歡迎亂入 👺

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

@saiday

git add -p: The most powerful git feature you're not using yet

上個月才發現 git add -p 這個指令,git add patch mode 可以讓你選擇要 stage 哪些 hunk。 以前都會克制自己寫 code 的時候盡量只做一件事情,看到髒東西或怪東西的時候留一個 TODO 的註解就閃人下次再來改。但在知道 patch mode 之後現在就都順手把它改掉了。

同場加映 interactive mode (中文版),是包含 patch mode 的強化版,強大到自己帶了選單,對象是整個 repository,可以操作多個 file,一次搞定。

johnkary.net

CoreData VS Realm

在 iOS 上要做本地儲存的選擇有不少。這篇文記錄了作者從 Core Data 轉移到 Realm 的心得。

Core Data 資源豐富但學習曲線陡峭是眾所皆知 (剛學 iOS 開發的時候在書店看到 Core Data 的書比 iOS SDK 的書還厚,我心都涼了),而且不透過第三方工具的輔助還真的不太好用。我跟這篇文的作者一樣有用 mogenerator 來建 Entity、MagicalRecord 來輔助操作,此外我的 API Client 是 RESTKit 透過 object mapping 直接塞到 DB 裡,很方便。

通常在做技術選擇的時候第一個問題都是「到底要不要用 Core Data」,而 Realm 是現在較熱門的其他選擇,但老實說如果不用 Core Data 的話我可能會直接採用 FMDB 就是了。

註:我個人非常喜歡 Core Data Framework 提供的這個 NSFetchedResultsController,呈現一個上癮狀態。

iiiyu.com

Hipster Swift: Demystifying the Mysterious

像我這種只用 Swift 來寫過小項目,還沒在每天工作項目上使用 Swift 的人來說,難免覺得 Swift 提供的語法糖(syntactic sugar)好像也太多了點,有時會看到一些覺得「你是誰啊?」的用法。
這篇文章整理了 Swift 新潮的語法特性,是居家防身兩相宜。
包含了 @noescape, @autoclosure, @lazy, parameter with ..., dynamic, built-in identifiers (__FILE__, __FUNCTION__ ..), loop labels (break, continue)。

學習了。

Swift 是一個快速發展中的語言,也因為它提供了各式各樣實作的可能性,建議在團隊使用時得訂出並遵循一份 Coding Guidelines,可以參考 GitHubRayWenderlich

krakendev.io

RxJava's Side Effect Methods

在不斷地導入 Functional Reactive Programming 進行開發的過程中發現,怎麼設計你的 stream 是最重要的,我自己的標準是這個 stream 到結束之前可以做完哪些事情。 透過 side effect method 的巧妙利用,讓很多原本以為沒有辦法在這個 stream 做的事情變得可能了。

這篇文主要是在介紹 RxJava 的 side effect methods,並以利用 doOnNext() 做 debugging, caching 及 doOnError() 做 error handling 來舉例。

grokkingandroid.com

Android Application Architecture (Android Dev Summit 2015) - YouTube

這大概是近期 Android 界最熱門的 talk 了,針對 Android 實際開發上會遇到的各種問題跟選擇給出建議,建議大家可以看一下,我是覺得含金量很高。
從前端架構、Best Practices 講到 API Design 然後忽然開始寫後端,他們的 backend solution 是 rails。

他的 Source code 在這 ,文件寫得超用心,而且 Android Client 跟 Server code 都放上來了!

youtube.com

@mingderwang

Linux Kernel Zero Day 漏洞 CVE-2016-0728 [ 19/Jan/2016 ] 你補了沒?

不管 32 或 64 位元 Kernel 版本 3.8+ 以上的 Linux 都有這 zero-day 漏洞 CVE-2016-0728, 不要再往下看了, 還沒修補的人, 請趕快先去修補您的 Linux OS。如果您電腦已經沒問題, 看看你 Android 手機 OS 版本, 只要是 Android KitKat 4.4 以上都中獎了, 如果你手機原廠不提供 OS 更新, 可以有藉口換一支新手機了。

cyberciti.biz

一個跨平臺的聲音特效程式庫

如果你想在 Android 或 iOS 上使用聲音特效開發軟體, 不管是遊戲, 樂器, 音樂特效, 聲音互動軟體, superpowered 是一個不錯的選擇。它除了提供手機語音 IO 的處理方法以外, 還提供各種 DSP 功能, 例如 FFT 轉換, 讓你軟體的聲音變得非常生動有趣, 而且比其他家好的地方是 CPU 使用率低, 延遲少, 且跨平臺。

github.com

如何安裝 Topbeat, 幫你收集系統 metrics 到 ELK

好久沒介紹 Elasticsearch 了, 最近 Elastic 公司推出新產品 Topbeat 1.0.1, 可以收集系統的 metrics, 而且相當容易安裝。Elastic 公司也貼心的幫你把 Kibana 的 dashboard 都做好了, 只要照 這幾個步驟 就可以完成, 馬上就能看到結果。

elastic.co

@kako0507

從 source code 來看 Redux 更新 state 的運行機制

Facebook 提出 Flux 架構後, Redux 似乎是目前最夯的實作了!官方文件用一句話簡單描述 Redux : "Redux is a predictable state container for JavaScript apps" ,單一方向的資料流可以使得架構更清楚簡單,每個 unit 各司其職,容易預測跟測試組件的行為。

Redux 的資料遵從 single source of truth 的概念,資料只放在同一個地方,減少散落在各處的資料相互溝通所造成的複雜度。

文中會介紹 redux 裡會帶大家簡單理解 state, middleware, 以及 bindActionCreator 的運作方式。

medium.com

React.js pure render performance anti-pattern

在撰寫 react component 時,為了減少不必要的 re-render ,有時會加入 PureRenderMixin 或者實作 shouldComponentUpdate 來檢查資料是否改變,是否需要 re-render 。

在做這些 optimize 時,必須要注意有沒有從 props 帶入新的 object , 避免在 data 沒改變的情況下重畫 child component :

  • 避免帶入 {} 或 [] 產生新的 object
  • 避免在帶入 function 時 使用 bind(this) 產生新的 function

medium.com

Javascript is a prototypal language. What do I mean by this?

在 JavaScript 的世界裡,當宣告一個 function ,就會自動產生連結到 prototype , 而該 function 就是此 prototype 的 contructor , 成為一個互相循環的關係。 本文將探討 new 這個動作的實作 , 以及產生之 object 與 prototype 的關聯 , 讓大家更了解 prototype 的運作方式。

medium.com

Danger of using async/await in ES7

使用 ES7 的 async function 時,如有多個 await 指令,則會互相等待依序執行,假設要同時執行兩個以上的 await 指令,還是必須要配合 ES6 的 Promise.all 使用,不過因為搭配 await , error 就不能直接透過 Promise.all 的 catch 來 trace 了。

文章內提供三種解法:

  • try/catch - 適用於循序執行的 await 指令
  • 在 call async function 時加入 .catch
  • 使用 bluebird 做為 Promise

medium.com

Offline installation of npm packages

在使用 npm 安裝 package 時,會保存兩份在 local 端,一份在 ~/.npm ,一份在 node_moudles 下,不過每次 npm install 時,都只會檢查 node_moudles 裡是否已有該版本的 package ,所以常常會重新抓同樣 package 耗費很多時間,為了解決這樣的問題,可以使用 --cache-min 參數,或者 local-npm

addyosmani.com

Otaku is the New Sexy

將中二進行到底的美好世界。

浅野一二〇

記得曾經在文章中讀到某大師說「如果所有的漫畫都像《晚安,布布》的話就太 @%#^& 了啊!!!」忘記原文了總之是負評 XD。那時候心裡讚了一聲好,這個評論完全切中核心,因為打從一開始浅野就沒有要創作讓大家自我感覺良好的作品嘛!

千萬不要天真的以為迎來布布的 13 卷完結之後 (X 販我們永遠等待你),我們就能從浅野迷霧中脫身,中二爆破的這部新作《デッドデッドデーモンズデデデデデストラクション》,就算硬是暴力破譯成中文也是 "死死魔鬼毀毀毀毀毀滅" 這麼中二,所以網路上都簡稱 "滅世"。

在這個粗眉毛當女主角的世界,像 EVA 一樣有莫名襲來的外星機體,於是所有的地球人卯起來進行了一場國際對空打怪競賽,飛來就打,日本想當然很厲害。我們的女主角是個講十句話只聽得懂三句、而這三句還都沒什麼連貫性的雙馬尾粗眉毛高三生,一貫的浅野風格,一貫的青臭。

最後用小学館編輯的推文精華、用現代詩一般的破碎感來綜合我所有的心得:「夢中的女子、崩壞的女子、戰爭遊戲、死黨的帥哥肥宅哥哥、泡泡一樣的初戀、永遠的 8 月 31 日、覆蓋天空的絕望。」有浅野陪伴的世界總是中二得令人很舒爽,對吧!但我實在不敢期待有人會代理中文版,嗯。

以上來自 @autisticcat 的分享!

CodeTengu Weekly


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

CodeTengu Weekly 碼天狗週刊 - Issue 27 密碼:ppnn13%dkstFeb.1st 密碼提示:娉娉裊裊十三餘 豆蔻梢頭二月初 - Feb 1st 2016

$
0
0

Hello World

CodeTengu Weekly 碼天狗週刊

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

你也可以瀏覽一下前幾期的內容,有價值的東西是不會過時的。

以下是目前的 curator 陣容:

大家也可以 follow 一下 CodeTengu 的 FacebookTwitterGitHub,有很多 Weekly 看不到的內容。有任何建議或疑問也可以來 Gitter 聊一聊,歡迎亂入 👺

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

@vinta

Python 3 Module of the Week

如果你曾經 google 過任何一個 Python standard library,十之八九你都會被導去 Python Module of the Week,這個網站專門在介紹 Python 的每個標準函式庫(标准库)的用途和用法,畢竟 standard library 可是每個程式語言的精髓啊。

這裡順便推薦幾個在 Python 江湖上走跳不能不知道的 modules:

PyMOTW 原本是針對 Python 2.7 的,而這個 PyMOTW 3 則是作者最近才開始為 Python 3.5 寫的全新的版本(還沒寫完,會每週更新),新增了諸如 asyncio 等條目。

P.S. 說到 Module of the Week,我前陣子也才發現一個 Node.js Module of the Week,跟大家分享一下。

pymotw.com

MySQL 優化.pdf

這是 iMySQL.com 的站長前陣子在台灣分享的關於 MySQL 效能優化的簡報,言簡意駭啊!關於 MySQL 的文章,在之前幾期的 CodeTengu Weekly 也分享過不少,有興趣的朋友可以回味一下

google.com

A Guide to Caching with NGINX

說到 cache,大家可能都會想到 Memcached 或 Redis,再不然就是 Varnish 和 Squid,有些人可能不知道,其實 NGINX 也有 cache 的功能,而且完全不依賴額外的 data storage。從這篇文章還可以發現,它非常容易配置(望向 Varnish,唉)。有趣的是,作者還提到了幾個特別的參數:

這個所謂的 "stale-while-revalidate" 的功能,Varnish 似乎也有

P.S. NGINX 的 blog 上面還有很多文章都不錯,大家不要錯過。

nginx.com

Examples of using Walrus, a lightweight Redis Toolkit

Walrus 是 @coleifer 寫的一個 Python library,能夠讓你用更 Pythonic 的方式操作 Redis 的各種 data type,例如可以像操作 dictionary 和 set 那樣操作 Redis 的 Hash 和 Set;除此之外,Walrus 還封裝了一些大家常用 Redis 來做的功能,比如說 counter、cache、rate limit、autocomplete 等,可以直接用一個 decorator 就解決。

延伸閱讀:

charlesleifer.com

The Art of Readable Code

關於程式碼的最重要的元素,有些人可能會說是架構、擴展性、效能或是它到底能不能動,但是老實說其實最重要的就是「可讀性」嘛!因為即使你寫的是完全無法執行的 pseudo code 或是效能很糟的程式碼,只要可讀性足夠好,完全沒有歧義,在 code review 或是別人接手你的程式的時候,其他人至少能夠知道你的思路,然後可以給你意見(甚至是直接幫你改啊)。

所以說 Readability 才是關鍵,而這本 The Art of Readable Code 就是專門在談論這個主題的書,第二、三章在講 naming 的部分是整本書的精華,第五章以後的章節讀起來其實有點像是簡單版的「重構」,總之就是這本書非常值得一讀,而且是越早讀越好。

這本書有出繁體中文版,書名叫「易讀程式之美學 - 提升程式碼可讀性的簡單法則」。

最後,雖然跟主題無關,但是我還是要說:Torment: Tides of Numenera(異域鎮魂曲的精神續作)已經可以在 Steam 上面玩到了(雖然只有第一章)!沒玩過異域鎮魂曲的人,推薦你看一下這篇文章,感受一下。

amazon.com

@tzangms

本週 IG: @gojoonhee

不知道有沒有人有看韓劇?

Anyway, 韓劇「她很漂亮」當中的女二「高俊熙」真的不得了了, 誰看的都會愛上她的, 雖然 IG 上面沒有強的照片就是了。

然後要跟各位讀者說聲抱歉了, 本週我只能送上這則了, 最近工作上實在是太忙, 完全沒時間讀新文章, 所以沒有好東西跟大家分享, 期待哪天我 solo 放送一期, 謝謝各位!

instagram.com

@chiahsien

Zen and the Art of the Objective-C Craftsmanship

前一陣子剛好需要為公司制定程式碼規範,無意間找到這篇 Objective-C 程式開發的禪意與藝術,發現裡面所提倡的東西都很符合我的想法。這一篇文章所規範的作法可以:

  1. 避免許多低級與非預期的程式錯誤
  2. 提高程式碼的可讀性與一致性

如果你剛接觸 Objective-C 不久,或是你們團隊還沒有程式碼規範的話,我強烈推薦你們就先將這篇文章提到的做法照單全收,絕對大有幫助。

github.com

Parse 要關閉了

曾經是所有獨立開發者與小公司的最愛,曾經我們以為被 Facebook 買走之後會很穩的 Parse 在前幾天放出了一顆重磅炸彈:它們要收起來了!你這樣叫那些開班授課的人該怎麼辦?

還好 Parse 的人很有良心,它們提供了一年的緩衝時間,讓開發者可以慢慢找替代方案。如果你懶得去慢慢找的話,網路上也已經有人整理出一份替代方案懶人包了。

parse.com

Swift 台灣

隨著 Swift 開源之後,學習 Swift 的人也越來越多了。前一陣子就有人幫忙把官方網站翻譯成繁體中文版本,希望能幫助到其他人,降低進入 Swift 世界的門檻。 除此之外,這位維護者也發起了一個 Swift Meetup,目前才剛起步,希望能吸引到更多人參與分享,讓這個 meetup 變得越來越好。

swiftlang.tw

It's Coming: the Great Swift API Transformation

Swift 剛出來的時候,還有很多 API 的命名有濃濃的 Cocoa 味,但隨著 Swift 不斷地快速演進,原有的一些命名規則開始顯得格格不入。於是他們打算要為 Swift API 命名來個大變動,讓這些 API 用起來更像是 Swift。雖然一切都還沒定案,但改變已經是勢在必行,可以想見這波改變將會影響到許多人。如果你願意的話,也可以一同加入討論,說不定就能影響 Swift 未來的發展!

swift.org

Xcode 7 闹心一次的升级

蘋果曾經在 WWDC 2015 的某個 talk 分享了一個設置中斷點的小技巧:你可以設定中斷點的 Debugger Command 為 po $arg1,就可以在中斷的時候印出詳細的訊息。通常我們都會用在 Exception Breakpoint,這樣當我們遇到 exception 而當掉的時候,就可以看到相關訊息而知道發生什麼問題。

可是這麼一個好用的功能,在 Xcode 7 卻失效了!這位作者經過一陣嘗試之後終於找到解法:改成 po $eax 就可以了。

eiko.me

Random Cool Stuff

第一屆 CodeTengu 一句話笑話比賽

開放投稿!

大家都知道咱們 CodeTengu Weekly 每一期的標題都是一句玩笑話,但是因為最近已經快把庫存的笑話用完了,地方的 CodeTengu 需要幫助,遂決定舉辦「第一屆 CodeTengu 一句話笑話比賽」!不然哪天笑話用完了,CodeTengu Weekly 就要停刊了。

延伸閱讀:

@vinta 分享。

github.com

Otaku is the New Sexy

我的活性只存在於氣溫 19 度以上。

最近溫差很大。

一下北極震盪(增進了一點常識)、一下飄雨、一下出太陽,不管在哪都有被病毒感染的人類 (陳上進就在回暖的那一天中了),不禁讓我想起,最近有一部因為醫學專業用語太多而嚴重影響漢化進度的漫畫 - 《はたらく細胞》 (漢化組關鍵字:身體細胞)。好啦我知道從天氣開始聊起的開場白都很爛嘛!!!

這部作品是將身體裡的細胞擬人化的醫療 BL 漫畫 (?),主角是搬運氧氣的紅血球妹子,穿著工作服在血管中不停的迷路然後遇難,每次都遇上非同小可的病毒或是細菌,然後每次都讓同一隻白血球給救了,一個很正統的展開。大家都知道,紅色一向都是砲灰,這次也不例外,因為她就是腐女眼中的一粒威~塵 (神仙語調),希望她的戲份可以少一點 (壞)。

其實我真正想說的只是:

  • 給我 T 細胞啊!!!
  • 白血球好萌 (長得好像銀)!!!
  • 想看以T細胞的更衣室為主題的本!!!
  • 巨噬細胞和血小板的巨乳配蘿莉好像也很棒~~

以上來自 @autisticcat 的分享!


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

CodeTengu Weekly 碼天狗週刊 - Issue 28 新年特刊:♫ 每條大街小巷,每個工程師的嘴裡,見面第一句話,就是不要 Deploy ♫ - Feb 4th 2016

$
0
0

Hello World

CodeTengu Weekly 碼天狗週刊

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

你也可以瀏覽一下前幾期的內容,有價值的東西是不會過時的。

以下是目前的 curator 陣容:

大家也可以 follow 一下 CodeTengu 的 FacebookTwitterGitHub,有很多 Weekly 看不到的內容。有任何建議或疑問也可以來 Gitter 聊一聊,歡迎亂入 👺

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

@vinta

Doing Terrible Things To Your Code

這篇文章講的是寫出一支健壯的程式的最好辦法:毫無懸念地,就是「測試」,尤其是針對「邊界值」、「特殊值」的測試。如果你覺得所謂的邊界值就只是 0、-1、9999999999999 或是最大最小值加一減一之類的數值的話,那就太天真了。

大家可以讀讀底下的這幾篇文章,好好地感受一下真實世界的邊界值:

P.S. 本文的作者是 Jeff Atwood,就是跟 Joel Spolsky 一起創立 Stack Overflow 的人,是個很幽默的程序員啊~

codinghorror.com

Kubernetes 架构浅析

最近在研究 Kubeunetes,看到這篇文章把 Kubeunetes 的各個元件解釋得挺清楚的,跟大家分享一下。

不過那個 kube-proxy 的性能問題看起來有點慘吶,雖然好像是聽說這個問題會在 1.1 改善。

jolestar.com

@saiday

Design Patterns & Refactoring

這個網站真的不得了,有點像 GoF 的 Design patterns 跟 Martin Fowler 的 Refactoring 這兩本書的集合。 網站設計的很好,一節的內容量不多很適合零散閱讀,且範例充足。 最令人激賞的是他章節的編排,從 Design Patterns 開始講起,接著是 Anti Patterns,再來是 Refactoring,有沒有一種很濃烈的既視感。

如果對這些 Topic 還沒有很有把握的,我想這個網站會是一個很棒的入口吧。對有經驗的人來說,這個網站的資源來當作索引也是再適合不過了。

題外話:有些人在問問題或是在解說自己程式的時候其他人不容易進入他的 context 裡,可能是他還沒有掌握到那些對應的專門詞彙,如果是這樣的話 Design Patterns 的介紹中都有那些常見的詞彙可以趁機多看多感受,當然啦,也有可能是個人的抽象化能力真的太差了。

sourcemaking.com

@tzangms

創下單月 45TB 流量紀錄的個人專案: MyAudioCast

MyAudioCast 是我在五年前開始的 side project, 雖然今年年初決定收攤了, 不過寫了一篇當初做 Podcast hosting 的紀錄和一些心得, 對於想做個人專案、或是創業的人, 也許可以有一些東西可以參考或是討論。

tzangms.com

On code review

可能因為最近太忙, 我其實有點脫離 Code review 這件事, 對我的團隊們實在感到抱歉, 不過也因為感到抱歉, 也一直有在思考 Code review 這件事如何改進, 或是思考因為我的延遲所造成的問題。

對於這篇文章說的事情, 正好寫出的我的一些想法, 也針對了 Reviewer 跟 Submitter 兩方都給了建議, 我覺得應該列進公司內部的 Guideline。

我以下簡單針對兩方列出最重要的一點

給 Reviewer

儘快 Code Review! 否則拖了一天之後就又會一直拖, 特別是對於有拖延症的人, 像是我 (笑), 太晚做 Code Review 有什麼問題? Submitter 會容易忘記先前的內容, 重新進入狀況也會造成 context-switch。

給 Submitter

送出前好好看過自己的 Code, 不管是在 commit 或是開 Pull Request, 後續又持續修改送 commit 上去時, Reviewer 不知道到底是否可以 review 了沒, 可能還得問一聲, 這在我團隊有時也會發生, 所以時間就會拉長, 減少產出。

最後, 對於我的團隊們, 我得致上最高的歉意, 請原諒我最近這麼忙 (哭)

glen.nu

The Phoenix Project

這是我最近在聽的一本書, 應該是我聽過最有趣,也最切身的一本有聲書了, 好聽到不能自己! 非常想推薦給大家, 不習慣聽有聲書的朋友們也可以看看 Kindle 版本, 不過我得說一下, 有聲書實在是生動、有趣多了!

這本書是在說一個在一家大公司的中階的技術主管 Bill, 有一天接到 CEO 秘書打來一聽電話, 要他去見 CEO。 沒想到 CEO 希望他可以接下工程副總的職位, 只是原本職缺的人卻不知道為何突然消失了, 除此之外, Bill 根本不想接, 因為他很滿意他現在的工作, 特別是不知道原本的人是因為被炒魷魚還是自行離職的。 總之太突然, 但是還是被強迫的接下來這個工作。

Bill 接下這個工作後, 就開始一堆狗屁倒灶的事情席捲而來, 故事就由此展開, 什麼系統故障, 安全性問題都一起發生。 不過除了一堆狗屁事情之外, 裡面也持續提到軟體開發、流程、敏捷、架構、部署, 還有目標以及價值 ... 等等, 真心推薦 IT 從業人員, 特別是目前已經在管理階級的人可以讀一下, 搞不好也會有切身體會 XD

總結來說, 這本書就是在說, 很多公司把 IT 就只當作是個部門, 而且是非常獨立的部門來對待, 要做什麼就交代下去, 也不聽取 IT 意見, 不把 IT 當作企業命脈的一部份, 現在哪家具有一定規模的公司不需要 IT 呢?

由於這本書的內容, 實在是跟我現在的狀況太過相像, 所以聽起來特別有感覺, 哈哈哈。

當然, 我避免讓我的團隊們有同樣的感受, 讓他們專注開發、學習新技術。 而我也希望我可以像故事中主角, 最後克服了一堆問題, 克服萬難啊!

amzn.to

Django StackOverflow Trace

這是我最近看到一個對 Django 非常實用的一個套件, 準備來用上 StreetVoice, 我覺得不管是對自己開發或是團隊來說都是很棒的一個工具。

舉例來說, 應該很多 Developer 寫程式碰到錯誤時, 完全沒有一點線索的時候, 可能都會直接複製錯誤訊息、或是 Exception 直接到 Google 搜尋, 而且最常出現的都是 StackOverflow 的結果頁面, 對吧?

這個工具再讓你開發發生錯誤的時候, 直接幫你用錯誤訊息, 直接找 StackOverflow 的搜尋結果給你 XD

我的天啊 ~ 各位! 我們生產力要大增了啊!!!

github.com

Python Warehouse - 新世代的 PyPI 上線

有用 Python 的人應該都知道 PyPI, 就在上禮拜, 下一個世代的的 PyPI - Python Warehouse 終於上線了, 新的界面實在是很漂亮啊, 非常的清爽。

根據我先前在的 Pocket 書籤, 似乎是在 4 年前就開始這個計畫了, 雖然翻回去已經找不到了, 不過 Warehouse 也 open source 在 github 上了 , 看了一下是用 Pyramid 作為開發框架。

另外想提一下, 看了下 github 上面的原始碼, 除了 Python 的東西之外, 還有看到 Gulpfile.js, bower.js, package.json, Dockerfile, 還有 Heroku 用的 Procfile, runtime.txt, 想感嘆一聲, 現在的專案真的越來越複雜了啊。

更別說還要弄個 .travis.yml 甚至 coverage 設定, 不過 StreetVoice 網站本身其實也差不多狀態了 ...

python.org

@fukuball

"A Neural Algorithm of Artistic Style" by TensorFlow - TensorFlow 火力展示

最近台北市公佈主燈福祿猴的廬山真面目之後,引起了各界的撻伐,這個美感喪失、極具爭議性的作品卻引起了台灣各界英雄好漢的無限創意,紛紛將自己改編的福祿猴延伸創作貼上了「野生福祿猴」粉絲專頁供大家點評。

其中一個「梵谷星空福祿猴」讓我眼睛一亮,因為這個作品是用機器學習創作的!作者 Mark Chang 使用了 TensorFlow 實作了 A Neural Algorithm of Artistic Style 這篇論文,讓機器可以學習訓練資料的繪畫風格重新創作,就展示圖片看起來效果的確蠻好的~

其實 A Neural Algorithm of Artistic Style 論文發表後,GitHub 上就有不少實作這篇論文的 Repo(我都列在延伸閱讀了),而這個 Repo 的特別之處在於它是使用 TensorFlow 實作的,充分展現了 TensorFlow 的火力,而且還是台灣人寫的,不推不行啊!

延伸閱讀:

  1. NeuralArt 電腦作畫
  2. 20151221 MLDM Monday --- Neural Art 電腦作畫
  3. Torch implementation of neural style algorithm
  4. An implementation of the paper 'A Neural Algorithm of Artistic Style'
  5. Neural Artistic Style in Python

github.com

類別建構子設計之道

使用物件導向開發方式開發時,當 code base 一大,常常會有類別髒掉(與其他類別相依性太高或是類別的 property 在 run time 時被非預期地修改),要避免這樣的問題除了用 Design Pattern 重構之外,程序員本身的經驗也會是一個關鍵。

在這個問題上,@c9s 提供了一個簡易的原則方法讓大家開發時可以朝著這個方向思考與設計,多少能夠避免類別髒掉的問題,大家參考一下。

medium.com

@chiahsien

A simple tip to reduce App Store rejections

除了幫變數取名字之外,最困擾 iOS 開發者的大概就是送審的 app 常會莫名其妙被退件,而且蘋果的審核又是有名的慢,這樣來回個兩三次,大概一個月就過去了 Orz

這篇文章告訴你如何善用審核資料表單,盡可能的提供足夠的資訊給審核人員,讓他們能在充分理解你的 app 的情況下審核,藉此降低審核人員的疑慮。

launchkit.io

Introducing Freddy, an Open-Source Framework for Parsing JSON in Swift

不像在 Objective-C 底下的 JSON parser 只有少數幾個 library 被廣為人知,Swift 的 JSON parser 目前正處於百花爭鳴、群雄割據的階段。The Big Nerd Ranch 的人經過一番研究之後,發現市面上的 JSON parser 都還無法滿足他們的需求,所以他們就自己寫了一個,主要目標有以下三點:

  1. 盡可能的安全
  2. 符合 Swift 語言習慣
  3. 速度快(現在很多 Swift 實作的 JSON parser 速度都不怎麼樣)

有需要的人可以參考看看!

bignerdranch.com

Random Cool Stuff

年会上的程序员们……

這是一個最近在網路上瘋傳的漫畫,出自於中國設計師西乔的作品《神秘的程序员们》,如同她丈夫霍炬所說的,關於程序員管理及工程的書籍汗牛充棟,但關於程序員的漫畫幾乎沒有,也因此他們有了將程序員的日常改編成漫畫的想法。

目前這部漫畫已經連載五年多了吧,隨著這部漫畫的讀者範圍擴大,內容也開始不僅侷限在單純好玩的故事,像是管理問題、常見陷阱、公司困境及一些感情生活等等也都成了漫畫的題材,讓更多和程序員打交道的非程序員也能願意看這部漫畫。也許透過這部漫畫也能讓更多和程序員打交道的人能理解這群既傲慢又謙虛、既開放又封閉、性格滿是缺陷卻又神秘的程序員們吧!

底下附上了《神秘的程序员们》各期漫畫搜集的傳送門,大家前往感受一下吧!

延伸閱讀:

  1. 《神秘的程序员们》傳送門
  2. 西乔部落格
  3. 霍炬部落格

@fukuball 分享。

chuansong.me


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

CodeTengu Weekly 碼天狗週刊 - Issue 29 如何靠寫 Java 快速致富?繼承 - Feb 8th 2016

$
0
0

Hello World

CodeTengu Weekly 碼天狗週刊

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

你也可以瀏覽一下前幾期的內容,有價值的東西是不會過時的。

以下是目前的 curator 陣容:

大家也可以 follow 一下 CodeTengu 的 FacebookTwitterGitHub,有很多 Weekly 看不到的內容。有任何建議或疑問也可以來 Gitter 聊一聊,歡迎亂入 👺

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

@saiday

A Serverless REST API in Minutes with Serverless Framework

Serverless Framework 透過 AWS LambdaAPI Gateway 的組合讓大家不需要再開機器來跑 backend。這是在 AWS Lambda 跟 API Gateway 推出之後就很多人在試的方式,現在有一套相對成熟的 framework 推出來,馬上獲得了大量的關注。

舉出一些特色: AWS Lambda 是 Event-driven 的資源,所以只有在你的 lambda 執行的時候才算錢、不需要去處理 scale 的事情、部署應用超容易。

Serverless framework 提供必要的框架來管理 AWS lambda 跟 API Gateway 讓開發的體驗更好,這個 framework 值得大家的關注。尤其是要從 Parse 出走的人。

codeship.com

Diffable and mergeable Localizable.strings

不曉得各位 iOS 的開發者都是怎樣處理 Localizable.strings UTF-16 編碼的 git diff 跟 merge 問題的?

上禮拜工作 merge 時一個不小心整包 Localizable.strings 被另一個衝突的 branch 蓋掉,才開始覺得這樣下去真的不行。 會有這樣的問題是因為 Git 預設不認 UTF-16 的編碼,會視為 binary file,然後 Apple 堅持 .strings 要用 UTF-16 編碼。所以在它身上 git diff, merge 就變得非常難用,也沒辦法在 GitHub 上面看 diff 實在很煩。

最後發現在 build settings 有兩個神奇的屬性,Set Convert Copied FilesSet Strings file Output Encoding,設好之後以後 Localizable.strings 用 UTF-8 就好勒,功能全解放!

imnotyourson.com

Constructor Injection to TDD Networking: Is It That Easy?

這是 OCMokito 的作者寫的 Test Driven Development (TDD) 教學。超入門、初學等級,以 TDD 的方式來介紹寫 Testing 的流程。

有些人可能會覺得之前不是才在吵 TDD is dead. Long live testing.,大過年的,不要起爭議啦。

但我覺得啦,說起 TDD:與其說是在寫測試,TDD 的重點反而是設計。而雖然我現在也沒在用 TDD 開發,但學 TDD 時得來的那些設計觀念到現在還是很受用。

qualitycoding.org

Improving UX with RxJava

Reactive Programming 很適合拿來處理一些不可預測的狀態,這也就是為什麼都是 Frontend 在紅 Reactive Programming 了。Netflix 應該是少數在 backend 也實作 Reactive Programming 的吧?(Reactive Programming at Netflix)

扯遠啦,總之 UI 操作介面跟喜怒無常的網路狀態都是很適合讓 Reactive Programming 發揮優勢的場合,這篇文章針對這兩個主題提了例子跟解法。

medium.com

APK 瘦身实践

Android APK 瘦身的經驗談,最有效果的果然還是圖片的壓縮跟取捨,雖然有些還蠻極限操作的,但整體來說很實用!

我是寫程式打工的,而我寫程式的原則是:

「幹你娘 code 爆」

沒錯,就是幹你娘 code 爆,老子才不管甚麼設計輸出圖檔三小的,每次寫的 UI code 就是姬芭一大包。顏色效果用程式寫,動畫用程式寫。所有的元件建構式都要帶 style 屬性,跟把「所見即所得」這四個字當作沒聽過一樣。

我還記得,我刻第 25 個 UI 元件那時候,經理跑來跟我說,app 上有 26 個地方跟設計畫的不一樣,你有頭緒嗎?

我他媽的怎麼會知道。

jayfeng.com

@fukuball

How an AI Algorithm Learned to Write Political Speeches

美國已故總統甘乃迪的經典名言:

Ask not what your country can do for you; ask what you can do for your country.

這句話著實有點迷惑人,但其他大部份的政治演說都有既定的形式與詞彙,我們有辦法讓機器學習寫出政治演說,做成一個政治演說產生器嗎?本篇文章就是在討論這個問題,也分享了相關程式碼在 GitHub 上,大家可以照著 iPython Notebook 做做看,也許使用了這個程式,總統在備詢時就可以隨時照稿子念了吧!

technologyreview.com

Analyzing 50k fonts using deep neural networks

本篇文章是 @Erik Bernhardsson 一時無聊做的,首先使用 Scrapy 從網路上抓取了約莫 5 萬個字形,最後再試圖跑 deep learning 讓機器學會創造新的字型,相關的程式碼作者也有分享出來,不過跑一次要幾週的時間,大家可以斟酌一下。

其實關於字型相關的 Machine Learning 應用,我最近有發現一個還蠻有趣的 Project - Recurrent Net Dreams Up Fake Chinese Characters in Vector Format with TensorFlow,可以用機器來創造無意義的中文假字,想出這個計劃的人真的很天才(還是很無聊?)!

erikbern.com

林軒田教授機器學習基石 Machine Learning Foundations 第 11 講學習筆記

在上一講中我們了解了 Logistic Regression 演算法並了解了如何使用 Logistic Regression 來預測心臟病發病機率這樣的問題,這一講中將延伸之前學過的演算法,在理論上說明 Linear Regression 以及 Logistic Regression 都可以用來解 Binary Classification 的問題。學會了 Binary Classification 之後,我們也可以用這樣的技巧來解 Multi-Classification 的問題。

fukuball.com

WordPress and Laravel

WordPress 目前還是世界上最受歡迎的部落格平台,很多人習慣使用 WordPress 來發佈文章、管理內容或是照片等等,雖然許多程序員近幾年來積極推廣使用 Markdown 寫作平台,但真正的文字工作者還是離不開 WordPress。因此漸漸發展出了後台管理介面使用 WordPress ,但前台使用其他 Framework 如 Laravel 等來呈現,以方便程序員開發功能。

本篇文章就介紹了如何快速地建立後台 WordPress 前台 Laravel 的架構,據說 StreetVoice 也有一些網站是使用這樣的架構,只是前台採用的 Framework 是 Django。

laravel-news.com

tooling 让你从 jQuery 中解脱出来

最近前端相關工具的發展已經複雜到讓人覺得噁心的地步,常常會讓人懷念起以前用 jQuery 寫前端那種隨插即用的暢快感。

tooling 便是一個這樣工具,標題雖然寫「tooling 让你从 jQuery 中解脱出来」,但這標題只是個引子,tooling 想解決的問題就是要讓開發者可以回到那不用建構工具那種「顯得很方便」的開發方式。使用了 tooling 之後,不需要什麼複雜的設置,馬上就可以快速建構好 ES6、Webpack、Babel 6、React with JSX、Vue、PostCSS with PreCSS 等等前端開發環境,前端開發就是要這樣才對嘛!

github.io

@adamp33

使用 Sketch 改善網頁前端與設計的標註與合作方式

你有跟設計師合作的經驗嗎?一定常常遇到規格標示不清、太多細節導致漏看,設計師標好標滿各種距離、顏色等等也是曠日費時。若是有一個好工具來解決這樣的溝通模式,肯定讓開發時間更能有效利用。

投影片版

patw.me

一行做出離線功能的 upup.js

如果你做的是內容型網站,提供離線閱讀是個不錯的功能,還可以利用 cache 提升載入。upup.js 將 service worker API 包裝成讓你只要一行就可以輕鬆館理 offline resource,有需要的不妨試試。

註:iOS Safari 目前還不支援 service worker

talater.com

DevTools Author 為開發者工具換張臉

DevTools Author 利用 Google Chrome 的實驗功能,可以調整 Dev tool 的配色,讓你的開發工具不再一成不變!

mikeking.io

Random Cool Stuff

Software Development Methods Explained With Cars (Infographic)

大家感受一下。

@vinta 分享。

toggl.com


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

CodeTengu Weekly 碼天狗週刊 - Issue 30 聽我說,我有一個獨家的點子,只缺幾個工程師來實現它:「設計一套可以付費下載更多 RAM 的 APP」 - Feb 15th 2016

$
0
0

Hello World

CodeTengu Weekly 碼天狗週刊

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

你也可以瀏覽一下前幾期的內容,有價值的東西是不會過時的。

以下是目前的 curator 陣容:

大家也可以 follow 一下 CodeTengu 的 FacebookTwitterGitHub,有很多 Weekly 看不到的內容。有任何建議或疑問也可以來 Gitter 聊一聊,歡迎亂入 👺

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

@tzangms

Orator - An ActiveRecord ORM for Python

最近出現的 ORM, 看起來挺好用的, 其實一直都有在尋找 Python 有沒有這類獨立的 ORM, 平常都用 Django 的 ORM, 綁著 Django 不好抽出來, 可是也不太喜歡 SQLAlchemy :p

特別是最近流行 Serverless, 像是 AWS Lambda, 就很需要一個好用 ORM 來開發一些小東西。 看了 Orator 的設定文件, 簡單明暸, 覺得就是它了!

orator-orm.com

Announcing Zappa - Serverless Python Web Applications

因為 AWS Lambda 開始支援 Python 之後, 就開始看到一些 AWS Lambda 相關的 Python 專案出現了, 直接支援 Django 的就是 Zappa 了, 可以直接透過 ./manage.py 來直接上傳、更新 AWS Lambda 的程式, 很容易就可以把 Django 變成 Serverless。

雖然說我目前還是覺得在 Lambda 上面跑 Django 似乎 cost 有點高, 不過整個 zappa 把整個 API Gateway 跟 Lambda 的概念都包好了, 我覺得可以參考一下。

文章中的 影片 說明得滿清楚的, 不過比較好笑的是影片的第一個留言:

This is ridiculous. How is this even possible? I mean, I'm lost for words. How do you live with an unregistered copy of Sublime Text?

不得不說, 老兄, 這樣真的不行啊 LOL

gun.io

Three Common Mistakes of the First Time Tech Lead

三個新手 Tech Lead 最常犯的錯誤。

  1. Coding Full-Time
  2. Making all the Technical Decisions
  3. Forgetting about Cultivating Team Culture

我得承認我都犯過, 不過這幾年學習下來, 我想應該都有修正了吧 :p

不過其實因為手上專案太多, 自己太容易變成瓶頸, 為了避免變成瓶頸, 其實就得朝這方向發展, 這幾年我也是讀了很多這方面的書跟文章。不過這篇確實寫得不錯, 除了收藏之外也跟大家分享一下。

thoughtworks.com

本週 IG: @yua_mikami

跟大家推薦, 三上悠亞, 不得了

instagram.com

@wancw

The Reference Data Pattern: Extensible and Flexible

一項關聯在資料庫裡通常直接用一個 table 表示,但是這樣 table 數量就會隨著資料模型複雜而變多。通常這些關聯屬性也會出現在標題、下拉選單、或其他 UI 元件上,手動維護 table 與程式碼間的對應也非常沒有效率又容易出錯。這篇文章說明另一種方式:僅以一個 table 來記錄各種不同的關聯。

這不算新穎的概念,例如我在 StreetVoice 時用了 Django 的 contenttypes framework 來同時處理一個人的歌曲、專輯、圖片、文章等不同類型作品的情況,它底層就是相同概念。

如果下次發現你的系統中 relation table 開始多到難以維護、或是需要同時處理跨不同關聯的資料時,試試看改成這種架構吧。

vertabelo.com

一些常见的重置密码漏洞分析总汇

只要有帳號的系統勢必就有重設密碼(reset password)的功能。看看前人留下了什麼樣的洞,避免自己重蹈覆轍吧。

qxzxp.com

程序员到底是一个什么职业?

程序员首先是雇员、然后是工程师;比起创造力,工程能力对这个职位更为重要。

雖然很多人(我以前也是)認為編寫程式是一件充滿創意、需要天份的事情;但是在工作職位上把事情做好更重要。與其追求新奇的技術並套用在公司的專案上,替程式加上測試、讓部署可以自動化還來得更有助益些。

當然學習新的技術、發揮創意還是很重要的,所以在工作之餘做做小專案吧!

weibo.cn

人人都能做产品经理吗?

我聽過不少工程師朋友因為不擅長或不熱愛技術,所以考慮轉職為 PM。問題是 PM 難道是技術人員的避風港或養老中心,不需要特別的能力嗎?

這篇文章可以跟 Pinkoi 前陣子的徵才文章搭配著看。雖然一個說的是專案經理、一個是產品經理,但在很多場合其實這兩者是交疊的。

顏君庭(Pinkoi共同創辦人暨執行長):打造不需 PM,就能溝通順暢的跨部門合作文化

我是比較偏向微信這篇的看法,PM 需要經驗與專門能力。如果一個好的 PM 不容易找,那要讓整個團隊都具備等效的工作方式勢必更難了。換個職務類想一下:一個軟體團隊可不可以都是 developer 沒有 architect,靠 developer 互相協調出良好的架構?同理,其實 DevOps 也是類似的取捨。


延伸閱讀:你要 Coding 多久呢?

常看到很多開發人員就會說他想要去做 SD, SA 或是 PM,好像這些職務就是程式開發人員所謂的「往上」發展之路。 PG, SD, SA, PM,這樣的職涯發展看起來好像煞有其事也相當合理,但是一個寫了兩三年甚至四五年的程式開發人員就適合去當 SD, SA 嗎?

qq.com

How a Password Changed my Life

這篇內容無關技術,但我覺得是很有趣的想法:作者遇到一個需要常常更換密碼而且不能重複的系統,所以他決定把生活目標設為密碼、於是每次輸入密碼時就像唸咒語般不斷提醒自己目標為何。他靠這種方式戒菸、調整作息、約女孩約會、求婚!感覺滿酷的。

medium.com

@mingderwang

How to build stable systems.

如何做好 CI, 這是初學 DevOps 的人最常問的問題。但我始終認為, CI 要從程式架構的設計與專案的準備就開始, 而且整個團隊要有建構一個穩定系統的完整概念才行。然而建構一個穩定系統, 又談何容易, Jesper L. Andersen, How to build stable systems 這篇文章, 已略述一二。這裡我只要強調一個重點, "If you only ever run on windows, you are screwed." (是這篇文章說的, 不是我說的)

medium.com

Finding The Most Lucrative Technology Jobs In 2016

每天忙碌地 coding, 有沒有發現你的一行 code 在美國值多少錢? 看到 2016 年美國最有價值的 IT 工作, 我忍不住想介紹這分析給正在埋頭寫 code 的人看。參考這些數據, 讓你決定用哪一種語言, 寫哪一行業的應用, 選擇哪個工作角色對你未來的工作生涯最有利。我覺得, 現在在軟體業的年輕人, 明明就相當於以前台灣所謂的"科技新貴", 為何沒有相對的待遇, 令人百思不解。

forbes.com

How to setup Docker Monitoring

當你越用越多 docker containers 時, 監控 docker 變成必要的工作之一。除了用 New Relic 公司所提供的 360度 docker visibility 以外, 你也可以利用 Google 的 cAdvisor, 配合 InfluxDB 資料庫引擎, 與 Grafana 的 Metrics Dashboard 自己架設 docker 監控環境。如果你已經裝 docker, 依照本篇文章的步驟, 就能快速架設完成。

brianchristner.io

Otaku is the New Sexy

成為貓奴的那一刻起每天都是歲末大掃除

自從家裡進駐了兩位貓殿下之後,每天回家第一件事就是開除濕機和空氣清淨機,即便如此,只要身上有黑色的衣服、褲子或包包,還是可以在兩秒鐘之內親身體驗被貓毛覆蓋的驚人效果,所以今年我也沒有大掃除 (挖鼻)。

講是這樣講,可是貓奴其實每天都被迫維持環境清潔(就連那個陳上進都得乖乖鏟屎了),不然要不是貓生病就是我生病啊!!!(過敏體質),但工作很累的時候還真希望周圍出現個潔癖重症患者,譬如說今天要講的這部:「潔癖男子!青山くん」(以一個慢速滑球切入主題),推薦給喜歡坂本君或尼采大師的朋友,很適合開工第一天有點慵懶、有點煩躁的心情噢~

接著來簡單介紹一下我們的青山君:

  • 是個為了潔淨而存在的謎樣生物
  • 是個為了不碰到別人而發展出高超過人技巧的天才足球選手 (蛤?)
  • 選擇理想球隊的標準是球衣的顏色
  • 選擇理想高中的標準是馬桶的種類
  • 練習前要洗澡、練習結束後要洗澡
  • 在比賽的最後五分鐘可以弄髒身體 (因為就快可以去洗澡了)
  • 毛巾非常香

最後說一個題外話,今年動漫節從初三開始,所以其實我早就開工了 (哭),在這邊跟各位分享兩個本屆的機密情報:

  • 平坂読(輕小說《如果有妹妹就好了。》作者)本人長得有一點點像阿部サダヲ
  • 鈴木央(漫畫《七大罪》作者)每週準時交 20 頁稿子而且沒有助手,為了要來台灣簽名甚至還提早交稿。

以上來自 @autisticcat 的分享!

CodeTengu Weekly


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


CodeTengu Weekly 碼天狗週刊 - Issue 31「我是個壞女孩,我需要被懲罰」她咬著嘴唇說著,「很好」他邊說邊開始在她的筆電安裝 Windows 10 #阿宅的五十道陰影 - Feb 22nd 2016

$
0
0

Hello World

CodeTengu Weekly 碼天狗週刊

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

你也可以瀏覽一下前幾期的內容,有價值的東西是不會過時的。

以下是目前的 curator 陣容:

大家也可以 follow 一下 CodeTengu 的 FacebookTwitterGitHub,有很多 Weekly 看不到的內容。有任何建議或疑問也可以來 Gitter 聊一聊,歡迎亂入 👺

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

@vinta

React 入门实例教程

雖然團隊裡有專職的前端工程師,但是為了讓 co-work 和 code review 能夠更順利,看樣子終究還是躲不了得學一下 React.js 吶,不然人活得好好的,為什麼要去寫 JavaScript 呢?總之就是這個禮拜正在入門 React,看了幾篇文章,剛好跟大家分享一下。太久沒有寫前端,有超多知識要補的啊。

忍不住要說一下,第一次看到那個 Hot Module Replacement 的功能時,差點都要尿褲子了。

延伸閱讀:

ruanyifeng.com

channels: Developer-friendly asynchrony for Django

Django Channels 是 @andrewgodwin(Django 的核心開發者之一,也是 South 的作者)的新專案,目的是讓 Django 能夠原生地支援 WebSocket 和 HTTP/2 server push,看起來有點令人期待啊。

延伸閱讀:

github.com

HTTP/2 For Web Developers

雖然之前就分享過 Short read: How is HTTP/2 different? Should we still minify and concatenate?,但是這一篇 CloudFlare blog 上的文章寫得更完整。

cloudflare.com

Defensive Programming 防禦性程式設計

Defensive Programming 簡單說就是指你為了確保程式在各種可預期和不可預期的情況下都不會出錯,額外做的那些檢查或處理。很多時候,Defensive Programming 是有必要的,尤其是在面對(惡意的)使用者輸入時。但是重點是你不應該濫用它(把所有的錯誤都隱藏起來),有些時候你就是得 Fail Fast,讓錯誤及早地暴露出來。

就我自己的經驗,如果你的 API(廣義的 API,可以是 RESTful API、library 或 public methods 等)是要給其他的 developers 使用,當你在輸入的參數裡檢測到錯誤時,你應該要丟出一個 exception 告訴調用的人錯在哪裡,而不是偷偷地幫他 fall back 成某個默認值。

如果你寫的那些 code 的唯一使用者就是你自己和你的同事,而且也不會牽涉到一般使用者的輸入,那我會說你乾脆也不用檢查了,調用的人如果輸入了非預期的參數,他自己在執行的時候就會遇到問題。而且因為他就看得到 source code 啊幹,所以他當然也應該自己找出正確的參數應該是什麼。不過,如果你的程式老是讓別人誤用,那你其實應該要考慮一下重構啦。

最後跟大家分享一下所謂的 Conway's law(康威定律),感受一下:

Any organization that designs a system will produce a design whose structure is a copy of the organization's communication structure.

延伸閱讀:

ihower.tw

zsh-autosuggestions: Fish-like autosuggestions for zsh

是一個 zsh 的指令自動補完外掛,特別的是它會在你正在輸入的游標之後直接顯示建議的指令(根據你以前輸入過的指令),用起來很爽啊!雖然剛開始用的時候,會覺得怎麼一直有東西在那邊閃來閃去。

延伸閱讀:

github.com

@kako0507

ReactJS lifecycle chart

React 有良好的 lifecycle methods, 在需要手動處理 DOM 時非常方便,可以保證 DOM 一定存在,或是在資料更新時做對應的處理,透過這個 lifecycle chart 可以更清楚的了解 lifecycle 運作流程。

twitter.com

Using Webworkers to make React faster

這篇文章探討將 React 的 DOM reconciliations (資料改變後自動運算 DOM 變化的過程,使得 API 非常的簡單,用起來就像是每次都重新 render 整個 Component 。) 過程放到 Web worker 上執行的結果,在資料較少的狀態下,因為需要在 UI thread 和 worker thread 傳輸的原因,在速度上並沒有什麼好處,但在需要 render 足夠大量的資訊時會有較快的效能。

DEMO

nparashuram.com

Functional Refactoring in JavaScript

在撰寫 JavaScript 時,可以利用一些 functional programing 的概念來增加 readability 或減少需要重複書寫的 code ,本篇文章會利用包裝紙盒的例子來做 Functional 重構,不過筆者一開始就先說明在這個例子裡這樣做是矯枉過正的,這個例子是為了盡可能的轉換成 functional pure expression ,並不會看到 readability 的好處。

medium.com

CSS Variables: Why Should You Care?

CSS4 非正式標準 - CSS Variables 終於在 Chrome 49 支援了, Developer 也可以在原生 css 裡寫出類似 LESS, SASS 的效果,不過還是有很多功能需要改進,像是 nesting 和 mixins 就尚未支援,且在意瀏覽器支援度的開發者,可能就要再等上幾年了。

google.com

Why I Left Gulp and Grunt for npm Scripts

Gulp 用較簡單的 streaming 方式管理 Node.js task ,因而取代 Grunt 的地位,不過因為 Gulp 和 Grunt 這類的 task 管理上有以下幾個缺點,建議使用 npm 的 script 取代即可。

  • 必須依賴 Plugin 的作者,很可能無法即時跟上 Library 更新
  • 因為 Gulp 與 Grunt plugin 屬於另外附加的一層 code ,比較難去檢查是哪個環節出錯了
  • 讀懂所需 tool 的文件是不夠的,常常還需要了解 Gulp 和 Grunt plugin 的設定方式

medium.com

@chiahsien

iOS 憑證顯示 "無效的簽發者" 解決方案

在情人節的時候,有一張 Apple 的憑證過期了,因為是突如其來的,所以很多開發者一時之間被搞得焦頭爛額。這篇文章是一個開發者解決憑證問題的心 (ㄒㄧㄝ ˇ) 得 (ㄌㄟˋ),值得參考。

dotblogs.com.tw

Issue and Pull Request templates

前一陣子一群人寫了一封公開信給 GitHub,最近 GitHub 對其中的一些問題做出了回應,這就是他們的答案:幫 issue 跟 pull request 設計樣板

  1. 它的命名必須是 ISSUE_TEMPLATEPULL_REQUEST_TEMPLATE
  2. 它不需要有副檔名,不過它支援 Markdown (.md) 語法
  3. 如果你覺得把檔案放在根目錄很亂的話,你可以在根目錄建立一個 .github 資料夾,然後放在這裡面

我覺得這個功能超棒的,這樣一來在公司內部就可以統一 pull request 的格式了!更多詳細資料可以參考官方文件

github.com

Swift Algorithm Club

喜歡演算法嗎?正在學 Swift 嗎?這裡有人用 Swift 實作了許多經典且實用的演算法,值得花時間好好學習!

github.com

The Right Way To Write a Singleton

Singleton 其實就是一種全域變數,雖然大家都知道全域變數是不好的,應該盡可能避免,但有的時候就是無可避免會用到它。Objective-C 發展那麼久了,早就有一套公認最佳的創建 singleton 的寫法,那 Swift 呢?這篇文章列出了多組常見的寫法,並且說明哪個寫法最好。

krakendev.io

Transitioning From Objective C to Swift in 4 Steps – Without Rewriting The Existing Code

就算 Swift 還在快速變動中,還是阻擋不了一堆工程師前仆後繼的投入這個新語言的懷抱,誰叫工程師都是喜歡新玩具的呢~ Skyscanner 的工程師們跟大家分享了如何透過四個循序漸進的步驟,在使用 Objective-C 寫的專案裡頭一步步的加入 Swift,並分享轉成 Swift 之後所帶來的好處。

codevoyagers.com

Otaku is the New Sexy

「巷弄間的謎走大叔」三次元系列總整理

我發現長久以來,大家都誤用了「大叔」這個詞,好像只要超過三十歲、有鬍子或長得老、喜歡軟妹子、穿 POLO 衫會立領、有玩過紅白機、使用有刻字的陶杯、周身有股老人臭的男性都被泛稱為「大叔」。身為「熟成男生產履歷」(雖然很久沒更新了) 的編撰者,我必須在這邊提出鄭重的抗議,「大叔」可不是躺在那裡長肉就可以當的!「大叔」,是對一個男人熟成後的恭維,是為個性獨樹一格的男人頒發的勳章,除此之外的三十歲以上男性就只是三十歲以上的男性而已,請不要稱之為「大叔」,從今天起請稱他們為 "搭載 Y 染色體的容器"。今天我們就來介紹五個在日本各地謎走的大叔,然後首圖的北野 武其實沒有在裡面,我只是拿來當門神用用而已 XD。

/// 日劇篇

  • 謎走式壹-孤傲的胃袋疾走 《孤獨的美食家》

    松重 豐主演,漫畫改編,獨身主義的饕客,行走距離不到五百公尺就必須餵食的 SOHO 族如果是模擬市民豈不是被煩死,用豪邁的吃相抓住 "專枯" (以大叔為食的人) 的心。

  • 謎走式貮-自宅花草保育區巡警 《植物男子陽台星人》

    田口 智朗主演,獨身主義的自宅警備隊,老實說我覺得這傢伙很麻煩,是那種讓人不想深交的文青大叔,尤其是那件翻領針織衫、黑框眼鏡和永澤頭的搭配彷彿強調一種不願意服從歲月的叛逆,大叔就穿得像大叔就好了嘛!

  • 謎走式叁- 萬年備胎之一路被甩到掛《東京傷情故事》

    吉田 鋼太郎主演,常看日劇的人應該認識他,幾乎都演大魔王或幕後黑手之類的角色,但在這齣東京景點置入性行銷的日劇中一直不停地被甩,而且每集客串的都是段數很高的熟女,老是讓他請客,再給他嚐一點甜頭之後就提出自己的要求然後閃人 XD,腦海裡一直浮現龐克馬莎告白失敗的那一次軟式 globe 啊哈哈!

  • 謎走式肆- 刑警辦案式料理偵探《鴨川食堂》

    萩原 健一主演,小說改編,場地在京都,前刑警兼主廚幫您找出記憶中的味道順便給你講一個加洋蔥的故事,聽說京都人特別喜歡午間偵探劇,這部片怎麼看都有一種說不出來的玫瑰瞳鈴眼氣息,然後萩原桑實在很有魄力。

/// 日劇 SP 篇

  • 謎走式伍- 泥棒 (小偷) 式尋貓怪客《貓和凶相大叔》

    田中 要次主演,有沒有發現這些在田野間謎走的大叔都要掛一臺徠卡在身上,據說這樣可以用來區別可疑人士和時尚雅痞,但田中桑怎麼掛都。很。可。疑!即使抱著喵星人,還。是。很。可。疑!

/// 大叔的胚胎特別推薦

  • 走鐘王-真的在人生的道路上謎走了《山田孝之の東京都北區赤羽》

    山田 孝之主演,相關作品是清野 徹的紀實漫畫《東京都北区赤羽》,這個故事就是說呢,山田桑他有一天在拍戲的時候發現必須真的殺了自己,否則無法演下去,劇組發現阻止不了他,於是乎全體休兵讓他回家休息,而喜歡漫畫的他突然發現自己很嚮往清野先生筆下的生活,於是毅然決然的搬去赤羽,跟漫畫裡的其他人物生活在一起然後被罵來罵去這麼中二當然會被罵阿,最後發現自己果然還是最喜歡演戲溜~ 結果和赤羽的大家用一場幼稚園程度的話劇展現回鍋的決心邀請了許多業界人士來看然後大家都很關心他的精神狀態,本劇終。

最後推薦一個我很喜歡的日劇評論家豬大劇評可以毒舌,待人必要親和。

以上來自 @autisticcat 的分享!

CodeTengu Weekly


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

CodeTengu Weekly 碼天狗週刊 - Issue 32 維護舊系統的正確心態要像在海水浴場游泳,因為每個人都會在裡面尿尿 - Feb 29th 2016

$
0
0

Hello World

CodeTengu Weekly 碼天狗週刊

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

你也可以瀏覽一下前幾期的內容,有價值的東西是不會過時的。

以下是目前的 curator 陣容:

大家也可以 follow 一下 CodeTengu 的 FacebookTwitterGitHub,有很多 Weekly 看不到的內容。有任何建議或疑問也可以來 Gitter 聊一聊,歡迎亂入 👺

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

@saiday

What every iOS Developer should be doing with Instruments

Xcode 帶的 Instruments 是一個強大的 Profiling 工具,我認為資深的 iOS 工程師是能科學的利用 Instruments 找到程式效能瓶頸及 Memory leak,如果打開之後只會用肉眼看那是不行的!

這篇文章很像是 Ray Wenderlich 上面 How to Use Instruments in Xcode[1] 的濃縮版,篇幅很小,重點都有講到,適合還沒有經驗的人。
更詳細的介紹可以參考 Ray Wenderlich 新寫的教學 Instruments Tutorial with Swift: Getting StartedFinding iOS Memory Leaks with Xcode’s Instruments

[1] How to Use Instruments in Xcode

medium.com

NSUserDefaults In Practice

這是 Apple 的工程師寫的 NSUserDefaults 介紹跟 best practice。
列一些我覺得重要的:

  • StandardUserDefaults 裡面存的內容可以用 KVO 來觀察
  • 不需要從 NSUserDefaults 做 cache,因為它已經很快了
  • 除非你有其他 process 要用這個 defautls 或馬上要結束現在的 process,否則不需要自己執行 synchronize method
  • UserDefaults 第一次被讀取的時候會把整包加載到記憶體,因此裡面放了超大的東西,那你就哭哭囉

dscoder.com

Building Android Apps — 30 things that experience made me learn the hard way

Android 開發最佳實踐清單!

Retrofit, RxJava, Dagger2Retrolambda 儼然是現代 Android app 的四大天王了。

他提到 Package by features, not layers ,不要用 Activities 跟 Fragments 來分 package,而是用功能或頁面來分,蠻有趣的,貌似有點道理。
至於 Gradle 加速,我覺得這個更詳細些 Making Gradle builds faster

medium.com

Help developers with custom Lint rules

原來 Lint 是可以自己寫條件擴展的! 如果沒有額外做排除的話,在每次 gradle build 的時候都會跑 lint,因此很適合做自己的 coding style linter。

作者提到兩個不同的情境:

  1. 為你的 library / framework 寫 lint rules
  2. 團隊用的 coding style rules

參考:googlesamples/android-custom-lint-rules

jeremie-martinez.com

@adamp33

Google AMP 專案正式上線

Google 為手機瀏覽網頁所推出的加速計畫在本週上線,只要照著教學做,你的內容網頁也能夠在 Chrome 手機瀏覽器獲得類似 Facebook Instant Article 的效果,而且在搜尋結果時看到支援 AMP 的圖示。

目前 Google 表示是否採用 AMP 目前還不是 SEO 的指標項目,不過以顯示方式來看,的確比一般連結更容易被點擊。

searchengineland.com

線上預覽 RWD 網頁工具

Google 的 Resizer 工具可以讓你同時在三種不同尺寸解析度下觀看網頁(桌面、平板和手機),還可以做互動,比起只有截圖的工具實用許多。

Chrome Dev Tool 也有同樣功能的工具,缺點則是無法一次預覽三種尺寸。

google.com

使用 calc() 來實作 Responsive Email

Rémi Parmentie 使用 CSS 的 calc() 計算屬性,搭配 max-widthmin-width,可以在支援 calc 的 e-mail client 上實現自適應版型,相當神奇。解決令人頭痛的 e-mail 在不同解析度和瀏覽器的排版問題。

而且 Gmail 的 web 版和 app、Apple Mail 和 Outlook.com 都支援,而且就算不支援還是能透過 min-widthmax-width 做到優雅降級。

freecodecamp.com

@mingderwang

XG Boost

在各種指導式機械學習 (supervised machine learning) 模型當中, 目前看來, 可以說 XGBoost 速度最快而且正確。在 Kaggle 的預測競賽裡, 有些問題利用 XGBoost 方法常常得到第一, 之前只有 R 版本, 後來又有 Python, Java, C++ 版本可以使用。 有興趣瞭解 boosting trees 原理的人, 可以參考 Tianqi Chen 的 Introduction to Boosted Trees (複雜的公式可以跳過, 只看圖解的部分, 保證你看的懂)。 而想要實做的人可以參考 Michaël Benesty 的 Understanding XGBoost Model on Otto Dataset 教學。

CodeTengu Weekly

Financial Inclusion

這個專有名詞我也是第一次聽到, 但在 fintech 世界裡, 確是佔 20% 最大的一片市場。在這份 2015 年 fintech 問卷調查 裡可以發現, 它從前年 30% 跌到 20%, 這意味着 fintech 轉移重點到其他區隔 (這是好事, 因爲其他區隔現有的銀行就比較有意願參與)。但反觀 financial inclusion 是想要解決地球上還有 20 憶人口沒有能力或無法借款的人財務上的問題, 畢竟印度跟中國還有很大的市場可以開發。 那跟我們寫程式的人有什麼關係呢? 還找不到新創題目的公司或個人, 可以想想在 fintech 流行之際, 我們能寫什麼程式, 能用什麼技術來讓財金界使用。(這些不包含電子商務喔), 例如 "財務管理", "支付", "區塊鏈" (Blockchain as a Service), "保險" 等等, 如果這些現有銀行或保險公司不做或不趕快做, ApplePay, "小米", "支付寶" 之類的公司, 會很快把客戶搶光, 因爲世界就這麼點大...

CodeTengu Weekly

Microservices in Go using Go-kit

分散式程式開發技術已經成爲寫 microservices 架構必要的技能, 而針對 go 語言, heroku 的 go-kit 提供了程式設計師寫分散式程式一些必要的工具, 例如創造 endpoints, services, transport, circuit break, ratelimit, logging, metrics, request tracking, 以及 service discovery 和 load balancing 等。如果想了解這些專有名詞是什麼, 你可以看 Peter Bourgon 的 Go Kit: A Standard Library for Distributed Programming。 看完上述的 youtube, 你可以照着 Go-kit 101 以及它所提供的範例實做。學會如何使用 go-kit, 你就可以開始寫 microservices 架構的程式了。

heroku.com

Random Cool Stuff

Judging the Stupidity of GitHub Projects by Stars and Forks

這個還蠻好笑的,這個作者宣稱他在 GitHub 上找到笨蛋指標:亂用 Fork 。
Fork 數減掉有發 pull request 的人數當成分子 star 數當成分母,是這個 GitHub repo 的笨蛋率。

@saiday 提供。

ericgreer.info


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

CodeTengu Weekly 碼天狗週刊 - Issue 33 軟體開發領域的五大反人類的發明:JavaScript、Regular Expression、XML、Git 和 PM - Mar 7th 2016

$
0
0

Hello World

CodeTengu Weekly 碼天狗週刊

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

你也可以瀏覽一下前幾期的內容,有價值的東西是不會過時的。

以下是目前的 curator 陣容:

大家也可以 follow 一下 CodeTengu 的 FacebookTwitterGitHub,有很多 Weekly 看不到的內容。有任何建議或疑問也可以來 Gitter 聊一聊,歡迎亂入 👺

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

@vinta

Python 101: All about imports

不管是學習任何一種程式語言,該語言的 package / module / import 機制可能都是我們在學完那些基本的資料型態和語法之後,首先需要掌握的知識。這篇文章就 Python 的幾種常見的 import 方式做了一個簡單的梳理,然後,你就可以接著看一下 Related Reading 裡提到的那三篇文章,非常值得一讀,例如 __init__.py 的作用、__name__ 屬性以及 script 和 module 的分別。

延伸閱讀:

pythonlibrary.org

Celery - Best Practices

這篇文章提到了以下幾個在使用 Celery 和 Django 時的最佳實踐,例如:

  • Don't use the database as your AMQP Broker
  • Use more Queues (ie. not just the default one)
  • Use priority workers
  • Use Celery's error handling mechanisms
  • Keep track of results only if you really need them
  • Don't pass Database/ORM objects to tasks

除此之外,關於 transaction 的部分也常常是個坑啊,而且其實官方的 User Guide 真的就講了很多重點啦。

延伸閱讀:

denibertovic.com

React.js cheatsheet

上禮拜幾乎都在寫 React,在胡亂 google 的過程中找到了一篇寫得非常不錯的速查表,建議再搭配 Execution sequence of a React component’s lifecycle methods,這樣上手 React 基本上就妥當啦。

P.S. 作者的網站上還有超多其他主題的 cheatsheet,媽的這個人到底有多閒!

延伸閱讀:

ricostacruz.com

HTTPS 科普扫盲帖

現在大家一天到晚都在講 HTTPS,如果你的網站沒有全站 HTTPS 似乎還會被人瞧不起,但是說到底,為什麼 HTTPS 跟 HTTP 相比會更安全呢?

看完這篇文章你就懂了!

segmentfault.com

Cache Control 與 ETag

這篇文章專門在講 HTTP 的 cache 相關的 headers,作者是 @othree,他是我看過寫技術文章寫得最好的工程師了啊。而且他的 blog 上還有很多關於 JavaScript 的文章。

我覺得他可能就是台灣 Web 界的管仁健。

延伸閱讀:

othree.net

@tzangms

The Anatomy of the Perfect Technical Interview from a Former Amazon VP

前 Amazon 技術副總 Neil Roseman 分享的技術面試剖析。

幾個月前因為覺得自己面試技巧非常不足, 所以一口氣讀了 6, 7 本面試相關的書籍, 我發現這篇文章其實也用上了許多書中看到的技巧。

例如:

  • 一開始先介紹自己、閒聊,讓面試者放鬆

並不是每個人都很善於表達, 特別是內向的人, 面試也容易緊張, 讓面試者放鬆是非常必要的

  • 發問的技巧: Probe, Dig

不要只聽到表面的答案, 繼續挖深

  • 問模糊、開放性的問題, 看面試者會怎麼發問

我覺得這點算是面試技巧中的 "Visualize", 像是: 如果要完成 XX 任務, 得知道哪些條件、限制, 看面試者如何發問, 問出重點, 剖析問題

另外, 文中提到, Neil 特別喜歡聊產品設計,因為好的工程師並不單只接受指令進行開發, 而是主動參與產品的整個發展。

最後, 「找到對的人」真的是管理工作中最重要的事, 不免再提一句名言叫:「Hire smart or manage tough」

firstround.com

Minimal Django

一隻 .py 就可以跑的 Django 專案範例, 提供了一個 Django 可以跟 Flask 一樣小的概念, 不過其實 url router 還可以簡化成像是 flask 那樣的 decorator, 如果再補上個 wsgi 應該會更完整了。

github.com

Nagi - Leaderboard system that helps you rank million user data.

用 Python 基於 MySQL 開發的遊戲排行榜系統, 還提供了 中文文件 做詳細的算法以及技術效能說明啊, 學習了!

github.com

本週 IG: @linzy_minji

Fiestar 主唱, 但 Fiestar 我還是最愛 Jei 了 ~

instagram.com

@fukuball

Google Unveils Neural Network with “Superhuman” Ability to Determine the Location of Almost Any Image - Google 發表辨識照片拍照地點演算法 PlaNet 準確度擊敗人類

Machine Learning:中級

這是一篇 Google 剛在 2016 二月發表的一篇論文,Tobias Weyand 等人提出了一個基於 Neural Network 的機器學習演算法 PlaNet,這個演算法可以分析照片然後正確辨識照片的地點。

其實這個問題非常難,如果拍照的地點沒有任何眾所皆知的地標,例如自由女神像、艾菲爾鐵塔、101 大樓等等,那就很難辨識拍照的地點。PlaNet 可以做到給定一個街景照片,然後相對精準(比起人類)的辨識拍照地點。

其中的核心原理就像是很有經驗的旅人,可以透過建築的樣式、招牌的文字或是道路左駕右駕來辨識地點,PlaNet 透過大量的照片作為學習資料,確實比人類更有優勢可以辨識街景照片辨識地點,畢竟一個人類一生可以去旅行的地方是有限的。

如果大家有興趣,也可以看一下本篇論文做更深入的了解。

延伸閱讀:

  • GeoGuessr - 用來實驗人類辨識街景照片地點的應用

technologyreview.com

林軒田教授機器學習基石 Machine Learning Foundations 第 12 講學習筆記

Machine Learning:初級

經過了 10 講的課程我們才在上一講學會了如何讓機器學習做多元分類,在這一講我們又要讓技能快速進化了!(希望大家跟我一樣感到興奮)在之前的問題中,我們只能夠讓機器笨笨地學習用直線來分類,在這短短的一講,我們將能夠學到透過非線性轉換的方式讓機器學習到如何使用非線性方程式來做分類,可能是圓圈、橢圓、雙曲線或是任何奇形怪狀的曲線,機器可以從中挑出一個最好的結果。學會了這個方法就如同打開了潘多拉的盒子啊!

fukuball.com

簡單聊一下 one-way data flow、two-way data binding 與前端框架

JavaScript:中級

前端框架在這短短幾年的時間改變了非常多,JavaScript 新手在接觸這些框架時,往往也是在一知半解的情況下隨著時代往前,從 jQuery、Backbone.js、Angular 到現在最紅的 React,究竟這些框架為自己帶來多少開發上的益處?其實值得好好思考。

本篇文章從 one-way data flow 以及 two-way data binding 兩個名詞及觀念上的混淆出發,慢慢闡述每個框架如何做到 one-way data flow 及 two-way data binding,清楚陳述了面對這兩個名詞時應有的觀念是什麼,這樣思考一個問題的思路正是新手邁入進階者可以學習、訓練的方向。

turn.tw

Master PHP Array Functions - 我要成為 PHP Array 大師!

PHP:初級

寫程式時缺少不了使用 Array 作為資料結構來進行一些簡單的運算,但 PHP 因為發展的早,早期不成熟的範例程式碼充斥在網路上,也因此 PHP 新手在使用 PHP Array 時常常會使用到舊的寫法,而沒有使用 PHP 新內建的 PHP Array 操作方法,這反而有可能造成程式的效能低落。

舉例來說,假設現在我們有許多書本的書名 String 資料存在 Array 中,當我們現在想要從書本書名含有 "Design" 這個字串的書本移出 Array,那 PHP 新手可能會這樣寫:

for ($i = 0; $i < count($books); $i++) {
    if (false !== strpos($books[$i], 'Design')) {
        unset($books[$i]);
    }
}

但其實 PHP 有內建 array_filter 這個 function 可以使用,寫法就可以改成:

$books = array_filter($books, function($book) {
    return (false === strpos($book, 'Design'));
});

還在新手村的 PHP 朋友們可以進去看一下還有沒有什麼好用的 Array 操作方法吧!

startutorial.com

9 Development Workflow Upgrades You Should Know About - PHP 進階開發者需要知道的 9 個開發工具

PHP:中級

當 PHP 新手脫離新手村之後,就要開始慢慢學習讓自己工作得更快更好。這是 Bruno Skvorc 分享的一些好用開發工具,其中 git-freshgit-extras快速切換 PHP 版本環境套件 phpv 以及 Composer 同步下載套件 prestissimo 都很好用!

至於後面勸敗的 拆分鍵盤跑步機工作桌 大家可以參考看看就好了~

sitepoint.com

Random Cool Stuff

The most useful under-used feature of email

這是個神奇的 Gmail 秘技,就是其實你可以在你的 Gmail 的 username 的部分加上 + 和任意的 . 組成新的 email 地址,而寄到這些 email 的信通通都會寄到你原本的 Gmail,簡單說就是 alias 啦。

@vinta 分享。

github.io

Otaku is the New Sexy

一團美好的混濁稀泥 - 異獸魔都

在我心中有一部漫畫超越『獵人』的存在,它的名字叫做『異獸魔都』(ドロヘドロ)。

老實說要寫這篇的時候我想了很久,因為林田球的作品不是三言兩語可以說盡的,如果說『獵人』具備鬼才式的開創性和世界觀,那『異獸魔都』即是擁有惡魔般的創造力和不屬於這個世界的世界觀,這樣說也許有點抽象,但就想像你在看《瘋狂麥斯》那種感官衝擊。

medium.com


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

CodeTengu Weekly 碼天狗週刊 - Issue 34 阿嬤從小就告誡我:不要跟那些電腦裡有安裝 Axure RP 的人當朋友,他們都不是好東西 - Mar 14th 2016

$
0
0

Hello World

CodeTengu Weekly 碼天狗週刊

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

你也可以瀏覽一下前幾期的內容,有價值的東西是不會過時的。

以下是目前的 curator 陣容:

大家也可以 follow 一下 CodeTengu 的 FacebookTwitterGitHub,有很多 Weekly 看不到的內容。有任何建議或疑問也可以來 Gitter 聊一聊,歡迎亂入 👺

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

@wancw

本週 IG - PANTIPA (@pantipa.a)

沒這麼泰國的泰國妹子

instagram.com

Dev.Opera — An introduction to the Web Bluetooth API

最近正好在幫忙建置一套藍牙 BLE 裝置的 SDK,除了收集廣播(advertising)訊息,免不了要跟透過 GATT 跟裝置溝通、交換資訊。對於一直在 Web/App 等純軟體領域發展的我來跟天書一樣。

本來以為這大概是 mobile App 才會遇上的事情,沒想到現在連 browser 都要提供藍牙 API 了……但回頭想想,如果物聯網真的如預期中的發展起來,這也是不可避免的趨勢吧。

如果你也跟我一樣在 Android 上面開發自己的藍牙應用,千萬不要錯過 Android Beacon Library

另外補充一篇我前陣子用來補充基礎知識的 GATT protocol 簡介,如果你跟我一樣是新手的話,可以參考一下。

opera.com

云风的 BLOG: 可靠 UDP 传输

前陣子因緣際會又回去用 C/C++ 寫了個 TCP/UDP server,發現自己已經把底層的東西忘得差不多了。我想現在除非要開發 framework/library,大概沒多少人會用到 socket()bind()send() ……這些 function 了吧?更別說還在搞自己的 protocol 了。

如果你不幸(?)地也是這個領域的開發者,可能或多或少也嘗試過用 UDP 硬幹出一套可靠的傳輸協定。看一下別人是怎麼做的吧。

codingnow.com

How I manage tasks and projects with Todoist

Todoist 是我目前用過最滿意的 To-do list 服務,但我沒嘗試過用來管理軟體開發。大家一起來感受一下。

bellebethcooper.com

The Deadlock Empire

Multithreading 是所有 developer 的惡夢,有沒有想過反過來扮演 scheduler 讓 multithreading 城市陷入死結(dead lock)是什麼感覺? XD

The Deadlock Empire 就是一個這樣的遊戲,從中能比較具體地了解到多緒程式有多少容易出錯的地方、又該怎麼的避免。

github.io

@kako0507

React.js Conf: The Good Parts

Facebook 2013 年才將 React.js 開源,但在這短短的兩年多已經成為擁有龐大生態系的 library ,在加上 React Native - Learn Once, Write Everywere. 的概念,讓網頁前端開發者也可以快速的開發 native mobile app ,最近官方將 React.js Conf 2016 的影片 放上 youtube ,沒有時間看的朋友,可以先看看這篇,筆者整理了一些關於 React 的議題與資源。

medium.com

Choosing Vanilla JavaScript in 2016

JavaScript 在近幾年的變化非常大,ECMAScript 6 的各個新特性讓很多情況下,不需要透過 third party library 就可以輕易開發,本篇文章列出幾個實用的實作方式,不過目前還是建議透過 Babel 轉換成較舊的語法,來保證瀏覽器相容性。

medium.com

react-makes-you-sad

在使用 React 時如果不是很了解其特性,Redux 的作者 @gaearon 將 React實作的一些建議製作成 Flow Diagram ,希望就此幫助所有利用 React 的開發者可以重新找到正確的方式。

github.com

Functional Programming for JavaScript People

在撰寫 JavaScript 時,非常建議了解 functional programming 的概念,因為 function 的 independent 特性,使得程式更不容易出錯,在很多時候也可以較容易的增加可讀性。這篇文章將很多 functional 實用的概念都點出來了,值得前端開發者詳細研讀。

medium.com

Arrow functions vs. bind()

ECMAScript 6 的 arrow function 和一般的 function 不同,會自動綁定 this,在撰寫時就不用像過去使用 bind 來帶入 this ,也可以用更簡單易懂的表示法來實作 Partial evaluation。

2ality.com

@chiahsien

Issues Cloning Spec repo - GitHub taking a very long time to download changes to the Specs Repo

有在使用 CocoaPods 的人應該有發現在上個星期,下載或設定 pods 的速度會異常的慢。原因是因為 CocoaPods 太熱門(吞吐量是 Github 網站前五大),然後它的檔案又超級多(一個目錄裡頭有 16k+ 個子目錄),加上它又用了比較不適當的方法去 fetch,種種原因加起來造成 Github 整個網站的效率變差。因此 Github 就自動對它執行流量管制,CocoaPods 的使用者就悲劇了。

在這個 Issue 裡頭有很多人都跳出來討論,包括 Github 員工、Homebrew 維護者、Travis CI 維護者,還有 CocoaPods 維護者。Github 的員工講到了一些 Git 比較細節的部份,也提到 CocoaPods 的設計不適合使用 Git,最後也提供了不少修改建議給 CocoaPods。

github.com

Oddities of UIStackView

UIStackView 實在是超級好用,有在使用 AutoLayout 建立畫面的工程師一定有深刻的體會(是說這個年頭還有人不用 AutoLayout 的嗎?)。但好用歸好用,它還是有一些細節需要注意,一個不小心就會踩到坑。本篇文章雖然不長,但它列出一些平時很容易忽略的問題,值得一讀。

angelolloqui.com

MLeaksFinder:精准 iOS 内存泄露检测工具

記憶體管理絕對是每個工程師都得重視的議題,也絕對是大家都遇過的痛。在 Mac/iOS 的開發世界,最常用來檢查 memory leak 的方式,不外乎就是使用 Instruments 工具,或者很土砲的在每個 dealloc 裡頭印 log,藉此來找到哪個物件沒有被正確釋放。但不論是使用哪個方法,步驟都很繁雜,讓人感覺不是那麼愉快。

MLeaksFinder 這一款工具提供了一個更為簡單,並且更直觀的方式來找到 memory leak。雖然它目前只支援 UIViewControllerUIView,但你可以透過很簡單的設定讓它也支援其他 objects。簡單易用好上手,絕對值得一試。

github.io

#8 VIPER to be or not to be? – swifting.io

目前比較常聽到、同時也是比較多人使用的架構,不外乎就是 MVC、MVP、MVVM,相對來說 VIPER 獲得的關愛真的少了許多。這篇文章的作者詳細的說明了他們團隊為何使用 VIPER、如何實作、以及獲得哪些好處。

這篇文章很棒的點在於,他們真的寫得很詳細:有程式碼、架構圖、相關工具、以及大量的參考資料。還在思考要選擇什麼架構,或是想要 refactor 的人,都應該看一下這篇!

swifting.io

View controller lifecycle behaviors

在很久以前蘋果就開放讓大家都可以輕易的新增或移除 child view controller,這讓我們可以把一個很複雜的 view controller 切割成多個 sub-view controller,除了降低程式碼複雜度之外,也讓程式碼更容易重複使用。但 view controller 真的只能拿來處理畫面嗎?當然不是,我的 VC 超肥的,什麼事都放在裡面處理!

由於 view controller 可透過 child view controller 合成的特性,再加上 parent / child view controller 的 life cycle 是一致的,所以就有人想到可以在 child view controller 的 life cycle 裡頭放入額外的行為,藉此實現 AOP

沒有畫面的 view controller?一開始聽起來或許有點奇怪,但仔細想想之後會覺得這種作法很酷!

irace.me

Otaku is the New Sexy

唸作落語,讀作腐女。

落語,是一門逐漸式微、歷史悠久的日式傳統娛樂,在昭和全盛時期,名門的寄席下一位難求是常有的事情,落語的表演方式有點像是相聲,票房全看表演者的魅力,在一個大家越來越少跨入劇場的時代,逐漸演變成需要被傳承、需要被保護的一門傳統技藝。作為一門專業技藝,必然會演化出許多門派及繁文褥節,要成為一名演出家,首先必須是「男性」,至今也是如此,以日本來說許多傳統技藝都有性別的門檻,當然在追求兩性平等的現代會引來許多爭議,但在腐女興起的現代,所有女性禁止的地方就是新的天堂啊!為了推廣這門傳統技藝,請放心把一切都交給腐女吧!嗯! read more

以上來自 @autisticcat


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

CodeTengu Weekly 碼天狗週刊 - Issue 35 不要試著去人格化人工智慧!他們討厭那樣子! - Mar 21st 2016

$
0
0

Hello World

CodeTengu Weekly 碼天狗週刊

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

你也可以瀏覽一下前幾期的內容,有價值的東西是不會過時的。

以下是目前的 curator 陣容:

大家也可以 follow 一下 CodeTengu 的 FacebookTwitterGitHub,有很多 Weekly 看不到的內容。有任何建議或疑問也可以來 Gitter 聊一聊,歡迎亂入 👺

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

@saiday

Approaches to Testing: A Survey

文章裡分析了常見的四種 Testing 的途徑:

  1. DHH (RoR 作者) style
  2. Classical TDD
  3. Mockist TDD
  4. Discovery Testing

用同樣的七個問題去檢驗這四種測試方法,並附上該方法常被議論的批評。

我覺得重點就是我們採用的測試方法會感染跟影響程式架構設計,同樣地,如果我們想採用一個跟目前 codebase 風格不符合的測試方法,會在一開始就遭遇巨大的障礙,巨大到不知道怎麼進行下去,很多人就是在這種情況下放棄 Testing 的。(這時候就可以考慮要不要先從 Acceptance testIntegration test 開始寫起)
但無論你是採用哪種方法,其實到最後大家因為 Testing 延伸出來有價值的討論都是 Testability 跟架構設計。

我還有一個深刻的體會是團隊中導入大家都同意的測試方法其實對統一大家的架構設計有很大幫助。

雖然沒有人想知道,但我自己看完他的介紹覺得我是偏向 Mockist 流派的,也確實我的程式碼風格已經長成這個流派的形狀了,大量的小型元件、大量的 Dependency Injection

codingitwrong.com

GitDo: Designing the app infrastructure

GitDo 是一個做 GitHub iOS Client 的團隊,這是他們寫的開發經驗談。
分享了選擇 Swift 為開發語言的好壞處、Entity, Model 遇到的問題跟建議、API Client 的設計方向、將商業邏輯抽成 Frameworks 的好處、 Carthage & CocoaPods、VIPER 架構、Realm or CoreData、Reactive Programming 經驗。

整體談得比較廣而淺,還在摸索中的人看起來也不會有問題,特別適合近期有新 project 要啟動的朋友,很多技術上的選擇都有包含到。

掰惹威,最近我也要開始一個新的 Swift 專案,而我跟他們技術選擇上的分歧有:

  • 採用 RxSwift 而不是 ReactiveCocoa
  • 採用 Core Data 或 pure SQLite 而不採用 Realm

medium.com

Creating your first iOS Framework

前一篇提到將自己的商業邏輯以 Frameworks 的方式獨立出來有可以跨平台、製作 Extensions 的好處,其實值得投資。
這篇就是以 Swift 為開發語言建立 Framework 的教程,包含了 CarthageCocoaPods 的整合。

thoughtbot.com

DevOps on Android: From one Git push to production

在 Android 的生態裡面要建立 CI, CD 因為有 Gradle 跟 Google Play Developer API 的加持是相對簡單的。
我甚至都在想當在 GitHub 上面有人開 Pull Request 的時候,就 build 一個 beta 版本送到 slack 或是夾帶到 Pull Request comment。

這一篇關於 continuous delivery 的教學講得算是鉅細彌遺,大家可以參考一下。甚至我們還可以直接用 gradle-play-publisher 這個 Gradle plugin 來幫助你操作上傳到 Google Play 的這個過程。

jeremie-martinez.com

Continous integration on Android with travis CI

既然上一篇是在介紹 Android 的 CD,那麼沒有一個 CI 還是不行的。

現在 CI 的服務我想最熱門的還是 Travis CI,他對於 Open Source 是免費的。還有另一個選擇是 Circle CI,但我對於他的 outputs 分 section 這件事情實在是無法接受。

這篇文章除了介紹 Android 怎麼使用 Travis CI 之外,也有提到在 CI 上你除了 build APK 之外還應該要跑什麼。(CodeTengu 32 期 也有提到 Help developers with custom Lint rules,串上 CI,一切都很美好!)

panavtec.me

@adamp33

瀏覽器通知還可以加按鈕?

Google Chrome v50 將會為 Notification API 加上按鈕,讓使用者能在通知做特定動作,類似瀏覽器的 confirm,相當實用。

google.com

一年不用 jQuery

jQuery 自從 2006 年釋出後,可說是前端界最重要的函式庫,也促使制定許多 HTML5、新版 ECMAScript 的 API。但隨著瀏覽器原生的功能與 ECMAScript 越來越強大,對於 jQuery 的需求已經漸漸減少,一名叫做 Patrick Kunka 的工程師分享他和團隊一年不用 jQuery 的心得,相當值得前端工程師們思考。

wearecolony.com

用 em 和 rem 搭配來做 RWD 字體大小

一般前端工程師在指定網頁字體大小時,多用 px 來處理。但對於不同尺寸螢幕的瀏覽體驗做 Responsive Web Design 時,字體大小應該更為彈性,使用 remem 來當作字體大小的單位可以讓程式更為簡潔,也易於維護。

css-tricks.com

@mingderwang

星際大戰

放下你手中的程式, 教教身旁的親戚朋友或小孩子們寫 code, 也許是一件再快樂不過的事了。

相信嗎, 從 6 歲到 106 歲都可以學, 用程式積木來玩 星際大戰 遊戲。如果都過關了, 這裡還有更多遊戲可以玩, 讓你知道寫程式跟玩遊戲一樣簡單。記得第一次進入時, 要選 "繁體字" 喔!

code.org

I like this NEW way to learn code

學程式最好玩的地方, 就是這群人永遠對現有的東西不滿足。寫 GUI 或前端的人, 一開始堅持一種最完美的架構 MVC (Model-View-Controller); 之後陸續出現 MVP, MVVM (最典型的是 knockout.js, 直到之前很紅的 Angular.js 的 MVW (已經沒什麼好說了, 就說 Model-View-Whatever...)。重點是, 今天要學一種最新的 whatever, 叫 FRP (Functional Reactive Programming), 以 Cycle.js 為例, 我喜歡右下角的 "OPEN CHAT", 有問題, 直接提問...

CodeTengu Weekly

The future of drones is apps

我想這已經不是第一次我介紹四軸飛行器 drones 了, 那麼 drones 跟程式有什麼關係? 目前至少已經有兩家公司提供 drones 的 SDK, 一家是大陸公司叫 "大疆" DJI, 它的 SDK 叫 Onboard-SDK; 另一家是 3D Robotics (3DR), 開發工具叫 DroneKit, 它們主推開源 ArduPilot, 特點是也能用 python 開發。

想想看, 再過幾年 drone 程式的開發工具更方便了, 跟 Android 或 iOS 程式開發沒什麼兩樣, 它只是一個長了翅膀的 smartphone 罷了。

qz.com

Random Cool Stuff

可能是你看過最酷的 responsive 效果

看了就知道!

@adamp33 提供

essenmitsosse.de

Michael Tsai - Blog - Facebook Tests Users’ Reaction to Crashes

Facebook 在他們的 Android 用戶之間秘密進行一個測試,製造一些人工的 crash 讓用戶在一段時間內幾乎無法使用 Facebook native app。而即便如此,用戶還是會透過瀏覽器去上 Facebook。

哇塞,狂!

@saiday 提供

mjtsai.com

Otaku is the New Sexy

作為一個凡人,還是不要刺探深井冰的極限比較好。

就算追究下去迷霧也只會越來越濃,那個,聽我說,放手吧,不要研究大武 政夫的腦啊!read more

@autisticcat


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

CodeTengu Weekly 碼天狗週刊 - Issue 36 Hi, I'd like to add you to my professional network on LinkedIn - Mar 28th 2016

$
0
0

Hello World

CodeTengu Weekly 碼天狗週刊

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

你也可以瀏覽一下前幾期的內容,有價值的東西是不會過時的。

以下是目前的 curator 陣容:

大家也可以 follow 一下 CodeTengu 的 FacebookTwitterGitHub,有很多 Weekly 看不到的內容。有任何建議或疑問也可以來 Gitter 聊一聊,歡迎亂入 👺

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

@vinta

10 Easy Steps to a Complete Understanding of SQL

作者用 SELECT 語句的各種子句組合為題,一步一步地講解了很多 SQL 的重要概念、細節(以及那些你從來沒有搞懂過的規則),非常值得一讀,推薦給被 ORM 養大、從來沒有好好學過 SQL 的你(指)。但是老實說,SQL 真的太深邃了啊,簡直就是 DSL 界的草薙素子(這是什麼爛比喻)。

延伸閱讀:

jooq.org

Easy PJAX for Django

最近 StreetVoice 又在緊鑼密鼓地改版中,因為網站有音樂播放的功能,為了讓切換頁面不會中斷播放,勢必得做成 Single Page Application (SPA),但是完全在前端處理 URL routing 和所有的資料呈現實在是太阿雜了(而且其實沒有必要,至少對我們的產品來說),所以這個時候就輪到 PJAX 出場啦!

PJAX 是 History.pushState() + AJAX 的意思,效果就是你的每個頁面都可以繼續用後端 web framework 的 template rendering 的老方法,只是額外載入一個 jquery.pjax.js 和簡單的配置,你的整個網站馬上就變成一個 SPA,所有換頁(包含表單提交)之後的內容都會自動以 AJAX 的方式載入,你甚至不需要自己寫任何一行的 $.ajax(),讓大家從 JavaScript 的修羅道之中解脫了。

不過,如果是一些相對獨立的元件(例如 Player、Modal、Search Bar、留言列表)或是有大量 UI 操作的頁面,其實還是會直接用 React 啦。

github.com

Docker thumbor and remotecv

這個 Docker image 封裝了一個配置好的 thumbor server,thumbor 其實就是一個專門負責「縮圖」的 microservice(而且還有人臉辨識的功能!),真的是個好東西吶!

本機開發環境的配置不談(因為實在太簡單,一個 docker-compose.yml 就打死);線上的正式環境的話,通常的使用情境會是:在你的 thumbor server(可以有很多台,然後用 nginx 做個 load balancer)之前擋一個 CDN,因為 CDN 就會把圖片 cache 住,所以你其實可以不用自己把縮圖存下來,如果還是會怕,那就 pre-warm 一下 CDN 好了。

另外再跟大家分享一個新聞:

Docker for Mac and Windows Beta: the simplest way to use Docker on your laptop

解決了很多在 Mac 上使用 Docker 會遇到的機八問題(尤其是 file change notification!),很讓人期待啊~

docker.com

Building Simple Recommender Systems for Elasticsearch

用 Elasticsearch 來做一個簡單的推薦系統(更準確的說法應該是一個個人化的搜尋引擎)!對於一個技術棧本來就包含 ES 的我們來說,這個點子似乎不錯,畢竟 Elasticsearch 其實也就是一個 query 和 aggregation 功能特別強大的 NoSQL 資料庫。

雖然它的 Query DSL 在「可讀性」這件事情上就是一個徹底的悲劇。

延伸閱讀:

qbox.io

Vimium

雖然平常不太用 Vim,但是這個可以在 Chrome 裡面用 Vim 快速鍵的外掛實在很方便,就算你不是 Vim 的使用者也應該試試。

google.com

@tzangms

How to Hire a Product Manager

時常聽到 PM 跟工程師某種程度上, 似乎是死對頭的傳聞, 兩邊互相咒罵, 但我一直覺得, 如果你找到一個「對的」 PM 的話, 事情不應該是這樣的才對。

因為我在"類"新創的公司裡工作, 也算是身兼 PM, 不過最近因為剛好有一些關於 PM 的疑問, 所以找了許多書跟文章來看, 想知道到底什麽才能叫做是一位好的 PM? 也方便我對照現況, 甚至可以指導 PM、給 PM 方向, 讓工程師工作的更順利。

在讀這篇之前, 我先看了另一篇寫給 PM 的文章 "What to Do in Your First 30 Days", 畢竟 PM 剛加入的初期是最重要的一段時間, 這篇文章裡面提到了一句我覺得不錯:

Ask everyone this question: “What can I do to make your life easier?”

我覺這句話給了 PM 一個很好的起點。

kennorton.com

Finally, Real-Time Django Is Here: Get Started with Django Channels

大概一年前就看到 Django channels 了, 不過一直到最近看到 Heroku 這篇文章才決定就是它了, 而且看來 Django channels 將會正式整進下一版的 Django。

這篇文章提供了清楚的範例跟圖來說明即時聊天如何運作, 也可以直接部署到 Heroku 測試。 另外作者也有另外一個放 channels 範例的 repo, 說明也都寫的滿完整的, 非常值得一試啊!

heroku.com

前英特尔 CEO 安迪 · 格鲁夫辞世,“偏执狂” 和 “经理人的导师” 永存

上禮拜聽到 Andy Grove 去世的, 應該是僅次於 Steve Jobs 去世最令我難過的消息消息了吧, 畢竟我才剛讀完他寫的 High Output Management 沒多久, 應該在前幾期的 CodeTengu 也有跟大家推薦過這本書了, 是一本讀完之後還想在讀第二遍、第三遍的書。

而這篇文章是從微信上看到的, 找了台灣的新聞網站, 都是比較隨便帶過這件事, 所以還是分享給各位在微信的這篇了, 雖然裡面部分內容直接出自於 High Output Management 這本書的序。

我後來看了這篇: 今天,乔布斯崇拜的那个偏执狂离世了才知道, 原來 Andy Grove 被 Steve Jobs 視為偶像啊。

知道 Andy Grove 去世後, 我就馬上又買了他寫的另一本書 Only the Paranoid Survive, 又要再來拜讀大作了。

qq.com

No Stack Startups

所謂的 No stack startups 就是根本不需要開發人員也可以開始透過網路做生意的新創公司。 十年前是做生意得自己要有網站, 後來得要有 Facebook, 現在得有 IG, 而在中國得有微信。

現在這個時代, 通通都不需要自己開發, 就透過可以 FB, 微信直接接觸到客戶, 甚至可以快速的跟客戶收款、做生意了, 而且大家其實也不在意流量是到哪邊去, 只要傳達出訊息, 或是收得到錢就可以了。

更重要的一點就是, 你的網站、或是 App, 會比得上 Facebook 或是微信更普及嗎? 直接使用客戶已經安裝好, 而且熟悉的介面跟軟體, 是不是更快達成交易? 這時候是否還要自己開發網站跟 App 嗎? 特別又是在這個 Mobile only 的時代。

另外, 關於這個概念我覺得可以跟這篇一起看, Destination: Everywhere, 裡面提到 New York Times 的首頁的流量以驚人的速度往下降, 畢竟現在大家都透過各式各樣的 SNS 在分享、閱讀新聞, 首頁似乎已經不再重要, 甚至 BuzzFeed 有專人在製作完全不會出現在 BuzzFeed 的網站上的內容。

是不是某種程度上, 開發人員的價值越來越薄弱了? 最近剛聽完 Rise of the Robots 有感啊, 求生存真的越來越難了。

aweissman.com

@fukuball

淺談 AlphaGo 所涉及的深度學習技術

Machine Learning:中級

日前 Google AlphaGo 擊敗了李世乭九段,成為了圍棋世界排名第二的 AlphoGo 九段,無知的人類一片啞然,甚至有人開始擔心人工智慧統治人類的一天到來,碼農們更是人人口中 Machine Learning、Deep Learning,網路上也充斥著各種討論 AlphaGo 相關技術的文章。但這些討論 AlphoGo 的文章裡,科普的文章有的錯誤百出,技術文章有的太過艱澀,這篇文章算是比較一篇比較深入潛出的文章,能夠對 AlphoGo 整體的原理有個概觀。

若大家對 AlphaGo 整體的原理了解了,可以再搭配 AlphaGo in Depth 這個投影片更深入地了解其中的演算法,相信看完後大家就能夠知道說 AlphaGo 是暴力解是多麼無知的說法了!

dotblogs.com.tw

林軒田教授機器學習基石 Machine Learning Foundations 第 13 講學習筆記

Machine Learning:初級

再上一講中我們學會了讓原本的線性假設模型可以經過非線性轉換得以訓練更複雜的學習模型,理論上我們要做幾千次或幾萬次的轉換都是可行的,也可以讓我們在訓練的過程中得到非常好的效果,使用了這個方法永遠都可以讓訓練的錯誤率達到完美的 0!

但複雜的模型卻可能會在測試時反而得到更差的結果,讓我們的學習模型無法進行準確的預測,這究竟是為什麼呢?這一講就是在探討這個問題。

fukuball.com

Introduction to Scikit Flow - A Simplified Interface to TensorFlow

Machine Learning:中級

2015 年 11 月 Google 開源了 TensorFlow 這個 Machine Learning Framework,讓研究者可以很容易地撰寫一些機器學習演算法。但在 TensorFlow 問世以前,大家要寫機器學習相關的應用幾乎都是使用 Scikit-Learn 這個套件,對習慣使用 Scikit-Learn 的人來說,TensorFlow 的介面是非常奇怪難懂的。Scikit Flow 提供了一些簡單的介面,讓習慣 Scikit-Learn 的人可以透過這些介面來使用 TensorFlow,裡面有幾個簡單的範例,大家可以進去感受一下~

github.io

批評 Active Record 的 13 個論點:最好用也最危險的 Anti-Pattern

PHP、Programming:中級

現今的 Web Framework 幾乎都與資料庫脫離不了關係,自然幾乎都會實作到 Active Record。本篇文章提出了幾個 Active Record 可能會違反 OOP Design Pattern 的情況,有時幾乎是無可避免的,但不可諱言的是 Active Record 真的在開發資料庫相關的應用程式上帶來了很大的助益。本篇文章不是在反對使用 Active Record,提出這些注意事項反而可以讓我們知道在未來開發上會因為 Active Record 而造成什麼影響,至於要如何避免這些影響則沒有一定的答案,大家可以在開發中去取捨一個最好的做法。

turn.tw

Two Legs Bad

階級世代:窮小孩與富小孩的機會不平等

感受一下,各位無產階級(難不成你以為你是中產階級嗎?)。

雖然說起來,軟體工程師其實是掌握著生產工具的啊。

books.com.tw

Random Cool Stuff

BallR: Interactive NBA Shot Charts with R and Shiny

這個 Project 使用了 NBA 提供的 API 製作了一個呈現 NBA 球員射籃位置的互動介面,可以瀏覽 1996 年以來每一個 NBA 球員的射籃位置數據,範例圖片是 Stephen Curry 在非禁區的射籃位置 Hot Zone,的確與實際情況相符啊!大家有興趣做一些 Hack 的話,可以去找 Source Code 來玩玩看。

@fukuball 分享

toddwschneider.com


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

CodeTengu Weekly 碼天狗週刊 - Issue 37 除錯的難度幾乎是寫程式的兩倍,如果你把程式寫得太精巧,那你多半沒有聰明到可以解決你的程式的錯誤 - Apr 4th 2016

$
0
0

Hello World

CodeTengu Weekly 碼天狗週刊

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

你也可以瀏覽一下前幾期的內容,有價值的東西是不會過時的。

以下是目前的 curator 陣容:

大家也可以 follow 一下 CodeTengu 的 FacebookTwitterGitHub,有很多 Weekly 看不到的內容。有任何建議或疑問也可以來 Gitter 聊一聊,歡迎亂入 👺

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

@wancw

Writing modern C++ servers using Wangle

各位開發 backend server 的讀者都是用什麼語言呢?我猜主流應該是 Python、PHP 或 Ruby (on Rails);新潮一點的大概是 Go、Node.js。

因為常常變換工作用的語言(笑),所以我還蠻愛關注如何用其他語言或工具怎麼開發類似的功能。看到這篇 Wangle 入門才知道原來現在 C++ 的 framework 這麼好用。

看看那個精美的分層 pipeline 設計,就算你不用 C++ 開發伺服器也是可以做為參考的。(畢竟 Wangle 可是 Facebook 推出的啊)。知乎上也有段小問答可以瞭解一下 Wangle 的定位。

另外,順便推薦一下 @vanillashu 的 Elixir 推坑文:

  1. 為什麼要用 elixir 呢?
  2. 安裝 erlang + elixir + phoenix framework

medium.com

Flux is the new WndProc

不知道有多少讀者用純 C/C++ 寫過 Windows 上的應用,沒有的話可以看看微軟自家的 Hello World 範例,特別是 WindowProc 這個函式。會不會覺得 Flux 架構很像呢?這可是 80 年代的東西啊。

現在 Web 前端技術五花八門,但似乎是在瀏覽器上重現一次 Desktop 上的發展歷程(想想 Canvas、Service Worker、WebRTC、……)。沒想到 IT 領域已經可以用上「鑑古知今」這句話了,參考前人的經驗或許可以作為評估新技術的參考依據。不然…… 當作趣味看看也好? :p

bitquabit.com

回歸測試 (Regression Testing) | 科科和測試

身為一個曾以軟體測試為研究主題的 CS 本科生,對於回歸測試卻一直是霧裡看花、摸不著頭緒。前陣子找到這篇簡要的基礎文章,跟大家分享一下。

不過壞人學長 曾說過:「在你的系統夠大之前都不需要煩惱這些問題」。我想不少讀者參與的系統應該直接把全部的測試都跑過一遍就好了吧?反正也花不了太多時間,何苦花時間去研究回歸測試呢? :p

wordpress.com

台雲資訊 - 徵夥伴

雲端時代,Hadoop, Spark, OpenStack, MongoDB, ElasticSearch, Redis, NodeJS, Ruby on Rails, Python, R.... 一堆很紅的系統,但沒有一個 MIT 的,我們的政府倒是花了百億級的經費,而更讓人憂心的是,不管是學界或是產業界很少團隊進行此類平台系統的研發計畫。

這是吳昇教授的團隊,目前正在徵求志同道合的夥伴。吳教授開發過台灣第一套搜尋引擎、提出過 Web 3.0 ,他一向很堅持基礎技術應該掌握在自己手裡。我覺得這是很偉大的理想,有能力、有興趣的人不妨試試看吧。

(這篇應該算是工商服務文章,但 CodeTengu 團隊並沒有獲得什麼好處就是了。 :p)

nuweb.cc

本週 IG 女孩 - Jessica (@jessicababyfat)

這次推薦的比較是個人偏好的類型。 但主要是因為較少看到台灣或亞洲女孩追求這種健美、豐腴路線,覺得應該鼓勵一下。 :)

instagram.com

@kako0507

How is JavaScript asynchronous AND single threaded?

JavaScript 是一個 asynchronous 的語言,不過在執行時是透過 single thread 來達成,文內會用簡單的圖解介紹 parallel programming 和 asynchronous programming 的差別。

sohamkamani.com

Experimental support for WebAssembly in V8

WebAssembly 的概念才在去年被提出,V8 引擎上已經有實驗性的實作了, WebAssembly 因為是 binary format ,所以可以提升到接近 native 的速度,又因為基於 LLVM , 可以使用各種語言編譯,或許再過個幾年,可以像當年的 Flash 一樣,改變前端的生態。

blogspot.tw

All JS libraries should be authored in TypeScript

Cycle.js 的作者 André Staltz 提出了幾個理由說明為何需要用 Typescript 撰寫 libraries :

  • Better Documentation
    • 加入 type 能讓 API 更清楚明瞭
  • Better Autocomplete
    • 在一些編輯器像是 Visual Studio Code 與 Sublime 目前都有不錯的整合
  • Better Reliability

staltz.com

How to reduce the cognitive load of your code

這篇文章主要探討如何寫出 good readibility code :

  • Keep your personal quirks out of it
    • 盡量遵照 coding standards ,不要用太多自己的方式。
  • Divide and conquer it
    • 把大的問題分解成各個小問題
  • Make it discrete and processable
    • 避免使用 magic string 造成 IDE 整合上的困難
  • Make it readable
  • Make it easy to digest

chrismm.com

npm 更改了 unpublish 的政策

上禮拜 npm 的 package 貢獻者 Azer Koçulu 刪除了所有他在 npm 上的 packages ,而此舉造成了很多依賴 left-pad 的 package 安裝出錯, npm 為了此次事件更改了政策,修改版本超過 24 小時就無法再 unpublish。

npmjs.org

@chiahsien

RKTagsView

有不少 app 的畫面都會需要用到 tag view 來呈現資料,例如幫文章新增刪除標籤或是發訊息給多個聯絡人等等。之前我也曾找過有沒有不錯的套件可以拿來直接用,是有找到不少,但都覺得少了一些自訂的彈性。這兩天不經意看到這一個新套件,看起來可自訂的東西還不少,推薦給需要的人參考!

github.com

Swift 2.2 的新特性

Swift 2.2 已經正式推出好幾天了,不意外的又有許多「會讓工程師開心,卻又得修改程式碼」的變動,如果你還不知道發生什麼改變的話,可以看看這篇文章,已經幫你把重點都列出來了。

chengway.in

RxSwift 学习指导索引

FRP (Functional Reactive Programming) 在這幾年逐漸成為 app 開發的顯學,以前在 Objective-C 時代只有 ReactiveCocoa 獨領風騷,幾乎是要使用 FRP 的唯一選擇。到了 Swift 之後倒是百家爭鳴,但目前最受眾人喜愛的應該還是 ReactiveCocoa 跟 RxSwift

兩者在使用上雖然有一些差異,概念卻是非常相似,中國的網友整理了一系列的 RxSwift 的學習指引,很適合剛接觸的人作為入門磚。

swift.gg

Adapting Auto Layout Without Interface Builder

為了解決螢幕大小(直立、橫向、iPhone、iPad、Split View)越來越多的問題,使用 Auto Layout 來設計畫面已經是勢在必行,蘋果為了讓開發者輕鬆一點,在這方面也付出不少努力,例如推出了 StackView 跟越來越方便的 Interface Builder。

儘管 Interface Builder 讓人詬病的地方很多,但不得不承認的是,用它來設定不同 Size classes 的 Auto Layout constraints 實在很方便。如果我們想要用純程式碼的作法,不使用 Interface Builder 來拉介面,該怎麼做呢?看完這篇文章你就懂了。

useyourloaf.com

App 架构经验总结

架構這種東西,每個人的看法跟作法都不一樣,不同的語言跟不同的專案規模也會影響架構的設計。有句老話說得很對:「沒有正確的架構,只有適合的架構」。

我自己是習慣看到討論架構的文章就會看一看,反正這種東西現在用不到,可能過一陣子就會用到。主要就是得多看多動多思考,即使不懂也要留個印象,慢慢的積累下來,時機到了就會體現出功用了。

延伸閱讀:

keeganlee.me

Otaku is the New Sexy

2016 書店店員漫畫大賞 aka 就是要選出那些漏網之魚。

2008 年開始的書店店員大賞,選出的作品通常比較重視編輯面和內容,用白話說就是不以人氣、銷售量、動畫化等指標做為考量,而是用業界人士的專業角度評鑑的一個大賞。簡單說,這個賞其實是業界人的自 high,用來背書的力道稍嫌弱了點,但對我個人來說,這個賞的確是有質量擔保的評鑑,而且不將作品分類、貼標籤,一視同仁的選出真心推薦的作品,這一點非常不錯。這次選上的作品有一半以上還沒看過,所以就跟大家介紹一下我有看過的~ 沒看過的也先放上來,大家有興趣可以找來看。read more

來自 @autisticcat


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


CodeTengu Weekly 碼天狗週刊 - Issue 38 我一直相信,只要打字速度足夠快,寂寞就追不上我 - Apr 11th 2016

$
0
0

Hello World

CodeTengu Weekly 碼天狗週刊

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

你也可以瀏覽一下前幾期的內容,有價值的東西是不會過時的。

以下是目前的 curator 陣容:

大家也可以 follow 一下 CodeTengu 的 FacebookTwitterGitHub,有很多 Weekly 看不到的內容。有任何建議或疑問也可以來 Gitter 聊一聊,歡迎亂入 👺

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

@saiday

23 Best Productivity Hacks of the Year

作者整理了 23 種生產力促進方法,其中有一些讓我感到興奮:

  • 關掉手機的 Push Notifications
  • To-do lists 是邪惡的,你應該把你想做的事情全部排程
  • 先做你最不想做的事情
  • 如果有一件事兩分鐘內就可以解決,馬上做它

生產力這件事我一路走來試過用 wakatime 來記錄我寫 code 的時間、蕃茄鐘工作法、便條紙 tasks 工作法,甚至試過 SelfControl 斷網大法 ..

目前還持續中的是跟別人說「我什麼時候會把什麼東西做完」羞恥心導向工作法及每日的工作排程,覺得應該試一下這篇文章有提到, @tzangms 好像也一直都這樣做的把自己所有的事情 (包含休息、娛樂) 都排程的方法。

medium.com

Coordinators Redux

在 iOS 開發上 UIViewController 的重要性是不言可諭的,重要到甚至我們偶爾會被 UIViewController 給牽制,變成所謂的 UIViewController oriented programming。而作者根據 Patterns of Enterprise Application Architecture 中的 Application Controller 提出了 iOS 版本的 Coordinator。

我感覺像是 MVP 的 Presenter + navigation flow,引入 Coordinator 之後會弱化 UIViewController 本來的責任,不再自己決定下一個 UIViewController 以及要怎麼導向、只能讀資料不能新增修改資料 (無論是 client 或 remote)。

Coordinator 這個概念特別適合不只是顯示從 API 拿到的資料自己也有能力做一些加工修改的 app。

khanlou.com

How to Start Android Development with an iOS Background

這篇文是寫給那些已經瞭解 iOS 並想跨足到 Android 的開發者。
而我的經驗是,掌握了 iOS 或 Android 其中一個平台,要跨足雙棲其實是很簡單的事情,行動裝置的開發概念上當然是相似的,差異的就是實作上的細節,當然啦,可以開發只是最基本的,要在第二個平台成為好的開發者你還得像對第一個平台的態度一樣,對該程式語言有更深入的研究、對該平台的適當體驗有追求才行。

作者整理了語言關鍵字跟平台元件平行宇宙對應的參考表、適應螢幕尺寸的異同處、到底要用哪個 Android SDK 版本。

savvyapps.com

Android Development Culture. The Document. #qualitymatters

作者身為一個 Android 開發者對這個社群及 Google 做出血淚控訴,他認為 Android 開發歷經七年了社群的開發質量仍然沒有顯著的成長,多數的 Android 專案沒有做測試、一大堆警告、一堆 義大利麵式碼 (但他沒有提出數據),並且作者認為 Google 是始作俑者。

他認為一個有品質的 Android app 要有版本控制、透過 Pull Request 做 code review、整合 CI、不寫義大利麵式碼、做靜態分析、做單元測試、UI 測試、整合測試、使用開發期輔助工具。

不只是空口說白話,他舉出 Jake Wharton 的 U2020 跟他自己維護的 qualitymatters app 是大家可以參考的起點。

這讓我想到 Joel Test 喬爾測試,每個開發者都應該盡力讓自己工作的環境跟專案變得更好,這樣對大家都是好事,在 What Makes Developers Happy? 裡有數據顯示,在符合 Joel Test 的環境下工作會讓開發者更快樂。

artemzin.com

Making loading data on Android lifecycle aware

這篇是 Android Development Patterns 系列文章,我覺得這系列都很棒!
Android 提供的 Loader 可以很好地跟 Activity 及 Fragment 整合,當 Loader 綁定的 Activity 或 Fragment 被 destroyed 時它也會自動被結束,因此把關於 data 的處理放到 Loader 除了更有組織之外,你也不會因為螢幕旋轉遺失你處理中的 data。

這篇文章提供了好幾個使用範例,不管你有沒有用過 Loader 都可以看一下,質量蠻高的。

medium.com

@hiroshiyui

Erlang 生父之一 Joe Armstrong 的博士論文〈因應軟體錯誤建構可靠的分散式系統〉

提到 Erlang 界名人,最能聯想到的便是 Joe Armstrong 先生,而這篇博士論文便是他藉由論述如何處理軟體錯誤,來揭櫫 Erlang 語言的設計與特性,可說是從觀念到語法操作、一步步帶您認識容錯軟體設計與 Erlang 語言的現成教本。

段先德先生曾將這大作譯為簡體中文版《面对软件错误构建可靠的分布式系统》,原始連結已失效,但大家搜尋一下還是可以載到它站的拷貝。無論是英文原版還是中文譯版,我都誠心推薦關心軟體架構設計、特別是 microservices 的您花時間啃一啃。

erlang.org

Elixir School - 學習 Elixir 的線上教材

初見 Elixir,寫 Ruby 的開發者或許會覺得「有點像 Ruby,可是更多地方又毋寧說是披著 Ruby 皮的 Erlang」,若對 Erlang 的設計哲學沒有基本認知,恐怕光是憑著 Ruby 的經驗來學、寫 Elixir,很多地方會混淆、丈二金剛摸不著頭腦。(延伸閱讀:Elixir is not Ruby

我個人的 Elixir 入門途徑,是先讀過上述的《面对软件错误构建可靠的分布式系统》與蔡學鏞先生譯著《Erlang 程式設計》,先瞭解 Erlang 的核心精神後,再來看 Programming Elixir 這本書。而最近發現 Elixir School 這份線上教材編得蠻不錯的,與 Programming Elixir 的豐富程度不相上下,您可以試試用這份教材自學 Elixir。

elixirschool.com

Erlang VM 的調校參數

雖然 Erlang 與 Elixir 幾近無副作用、獨立 process 的特性設計,使得 concurrency, scale-out 實作相對簡單,但效能並不會憑空而來,不能單純以為換了一種語言就能讓您從殺豬公瞬間上太空,以為「一台不夠力,我就開十台去扛」若遇到別人調校得宜,也許兩台就能打你十個,多開一台可能還只是為了容錯備援,如此豈不是很不堪嗎?

除了 kernel 的 sysctl 調校基本功,Erlang VM (BEAM) 本身也像 JVM 一樣有些參數 (Emulator Flags) 可以微調其行為模式,可以在 vm.args 檔案裡指定。具體的例子可以參考 RiakErlang MQTT Broker……等各種已經發展了經年累月的 Erlang 專案文件資源。

erlang.org

Cog - 基於 Elixir/Phoenix 的 ChatOps 平台

前陣子在公司研究 ChatOps 解決方案時,看到 Cog 這個很有趣的專案。沒想到從 GitHub clone 下來後,發現竟是使用 Phoenix 寫的,頓時覺得倍感親切,同時也立即明白它 pipeline 的命令串接設計是其來有自,乃出於 Elixir & Unix 的設計思維。

即使工作中沒有碰到 ChatOps,把這個專案複製下來觀摩、學習 Elixir & Phoenix 也是不錯的材料。

operable.io

@uranusjr

26110: Speedup method calls 1.2x - Python tracker

應該不少人知道 CPython 的 function 與 method calls 效能不太好。問題的根本原因是 CPython 實作用一個 dict 放這些東西——和你平常用的那個一模一樣。這個實作讓 Python 非常動態,可以在 runtime 隨時增加、覆寫、甚至刪除任何 members,但也讓直譯器無法預測一個 instance 在 runtime 是否有某個 property,也無法知道 property 指向的東西是否改變。

Python core developers 過去也嘗試過優化,但因為(應該是 Guido 任性)希望保留 .__dict__ 回傳普通的 dict,最後都沒有成功。這次由 Yury Selivanov 提出的解決方案比較不同。他假設使用者不會在 runtime 頻繁進行 monkey-patching(畢竟這本來就不是好 practice),在 dict 中加上一個於 insert 與 update 時增加的 version number。這代表原本的 dict 功能只會多一個 CPU 指令,影響可以忽略,但在絕大多數狀況保證 cache hit。這個優化基於 Victor Stinner PEP 509,並衍生出一系列類似的優化,預計可以改善 Python 3.6 程式 5–10% 效能,且幾乎不會有負面影響。

另外,如果我沒記錯,這個想法也和微軟基於 .NET runtime 的新 Python JIT 實作 Pyjion 相關。這個專案也頗有趣,未來或許可以再介紹。

python.org

Episode 50 - Transcrypt with Jacques de Hooge | Podcast.__init__

Jacques de Hooge 創造的 Transcrypt 是個 Python 3 to JavaScript transpolar。最近嘗試在瀏覽器裡跑 Python 的專案其實很多,最潮的應該是後面有 Mozilla 裡面的人撐腰的 PyPy.js。不過我覺得這個專案有趣的點是,它不是在瀏覽器裡跑一個 Python interpreter,而是有點類似 CoffeeScript 的位置,讓你用 Python 語法寫 JavaScript。我附的連結是主要作者在 Podcast.__init__ 的訪問,裡面提到不少很特別的 design choices,值得一聽。另外他對於怎麼維護專案 community 的看法也十分有趣。

podcastinit.com

How Steph Curry Broke The Way Basketball Video Games Are Being Built

NBA 2K 系列的製作總監 Mike Wang 說 Stephen Curry 在現實生活的表現過於離奇,遊戲難以呈現。我從小牛拿冠軍之後就不看 NBA 了,2K 系列也幾乎沒玩,但你知道男生總是有幾個每天用運動影片洗你 Facebook timeline 的朋友,所以還是感覺這個消息頗有趣。

我是在想,這類軟體在本質上就是不斷 reverse engineering 自然定律,聽說近幾代的 2K 系列擬真評價都很好,感覺好像真的找到規律了。然後就出了一個反例,把我們自以為走對路的公式掃進垃圾桶。前陣子 AlphaGo 也有這種感覺不是嗎,感覺我們好像成功接近人腦的抽象邏輯概念了,但仔細一看又發現根本不是那麼一回事。究竟電腦的終極目標是要像科幻小說那樣往人腦接近,還是應該另闢蹊徑呢,這種有點 meta 的題目好像也很適合拿來當思考練習。

forbes.com

Every project should have a decisions making file

作者推薦大家在每個專案中都包含一個 decision making file,紀錄專案中決定事情的原因、其他方案、以及風險。MacDown 也接近兩週年了,想起無數次在 GitHub Issues 中解釋為什麼我不做 tab support、為什麼沒有 tree sidebar、為什麼不支援 Evernote 整合等等,看到這篇文章打從心底覺得是個好主意。

其實專案做到一定程度,好像就會開始發明類似的解決方案,工作的時候也會用各種方案整理文件啊 spec 啊討論紀錄等等。但做組織性比較弱的開源專案時,就比較容易忽略這些東西。最近很多專案流行 enhancement proposal,或者有些組織會寫 dev blog,也是類似的概念。但有些專案用這些方案反而浪費時間(我之前也想過寫 blog,但很懶⋯⋯),值得考慮這個解法。

akazlou.com

くまみこ(熊巫女)

吉元ますめ的作品,講一個鄉下中學生巫女まち與會講話的熊ナツ的故事。聽起來很超現實,內容卻完全是家常(只要忽略ナツ是熊這件事)。之前朋友推薦時我看了一話就堅定追了因為まち好可愛喔喔喔喔喔喔喔喔喔喔喔喔喔喔喔喔喔喔喔喔喔喔喔喔喔喔喔我先去外面跑兩圈等等。

最近動畫化啦會動的まち也是好可愛喔喔喔喔喔呃呃我是要說還原度滿高的,趁機推薦一下。如果看得懂日文,ComicWalker 每兩個月會更新(原作是月刊連載,一次兩話)。當然有點 delay 不過免費就別嫌啦。從中間看可能會搞不太懂人際關係(其實也沒幾個人),不過我想動畫進度應該很快就會追上了。尤其響找了喜多村英梨,應該會早點讓他出場吧。

其實東立有代理不過我沒看過,而且日本上個月都出第六集了,中文只有兩本。也太慢。

comic-walker.com

Random Cool Stuff

The Codeless Code

一個工程師將自己在軟體開發上學習到的體悟以一個古老寺廟為故事背景,透過 公案 的形式記錄下來。 莫名地有哲理,大家感受一下。

這個網站當然是他做的、故事是他寫的、連圖也是他自己畫的,太浪漫了吧!

@saiday 提供

thecodelesscode.com

Otaku is the New Sexy

傳說中的原創神作-道子與哈金

原創動畫,以動畫作為媒介的創作作品,不是改編自漫畫、小說、遊戲、vocaloid等創作的原創作品,換句話說,沒有「原作的劇透」之下,播映期間沒有人知道下禮拜會發生什麼事,所有觀眾的期待和猜想在同一個時間噴發,劇情轉折帶來的衝擊感之強烈,想像《EVA》或是《魔法少女小圓》當年帶來的衝擊,就能夠明白原創動畫特有的爆發力。read more

@autisticcat


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

CodeTengu Weekly 碼天狗週刊 - Issue 39 SQL 原教旨主義者每 9.5 個月就會對使用 ORM 的族群發起一次聖戰 - Apr 18th 2016

$
0
0

Hello World

CodeTengu Weekly 碼天狗週刊

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

你也可以瀏覽一下前幾期的內容,有價值的東西是不會過時的。

以下是目前的 curator 陣容:

大家也可以 follow 一下 CodeTengu 的 FacebookTwitterGitHub,有很多 Weekly 看不到的內容。有任何建議或疑問也可以來 Gitter 聊一聊,歡迎亂入 👺

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

@fukuball

Deep3D: Automatic 2D-to-3D Video Conversion with CNNs - 親愛的!我把 2D 影片變成 3D 影片了!

Machine Learning:中級

Deep3D 這篇論文很有趣,它使用了 Deep Convolutional Neural Networks 這個深度學習演算法來將一個 2D 的圖片轉換成 3D 的視覺感,如此就可以將一個 2D 影片自動轉成 3D 影片!原理就是利用機器學習來偵測每一幀圖片中物件的景深,如此就可以為不同景深的物件微調產生左右眼觀看這些物件在圖片中的位置,進而產生立體感(其實有些用 2D 攝影機拍攝的電影也是用這樣的原理,使用人工的方式調成 3D 的)。很有趣吧!我個人是覺得很有趣啦!大家可以去找他們的原始碼來玩玩看~

dmlc.ml

林軒田教授機器學習基石 Machine Learning Foundations 第 14 講學習筆記

Machine Learning:初級

上一講我們介紹了非線性轉換這個方法來將資料特徵值轉換到更高維的空間,如此我們就可以在高維空間做最訓練及最佳化,但在高維的空間卻會讓演算法有模擬到雜訊的可能,因此造成 Overfitting 的現象,除了用一些簡易的原則來避免 Overfitting,我們還可以使用正規化(Regularization)這個方法來限縮演算法最佳化的自由度,某種程度就可以避免 Overfitting 發生,就來看一下怎麼做到正規化吧~

fukuball.com

Add Laravel Unit Tests Directly From Chrome - 用 Chrome 來寫 Laravel Unit Test !?

Laravel、PHP:初級

你能想像過用 Chrome 來寫單元測試(Unit Test)嗎?這個 Laravel 單元測試工具 Chrome Extension 可以用來幫助你快速寫好單元測試,只要裝了這個工具,它就可以錄下你在網頁的動作,並轉譯成 Laravel 的單元測試語法,很神奇吧!更好的是這個工具還有開源出來,如果想加什麼功能都可以自己加上去喔~

laravel-news.com

給網站初學者的建議:用 Ruby On Rails 非常辛苦,用 PHP 非常舒服

Web Programming、PHP:初級

有一陣子台灣開發者社群非常熱衷於 Rails,甚至推坑一些初學者去學 Rails,把寫程式說得跟變魔術一樣,實在是有一點不道德。這篇文章提供了幾個觀點,如果你是程式新手,對於別人推坑學習 Rails(或是其他網頁框架) 半信半疑,甚至去上了一些 Rails 的訓練課程還是有點一知半解的感覺,或許你可以考慮一下從心開始、重新出發,慢慢摸索 HTML、CSS 和 PHP,慢慢讓自己的技術踏實了再回頭碰這些網頁框架,也許就會豁然開朗了~

turn.tw

@adamp33

Google AMP 範例集

Google 在今年推出了手機版網頁加速計畫(Accelerated Mobile Pages, AMP)提供內容網站更佳的瀏覽速度。只要在 markup 上增加一些特殊用法(例如 <amp-img>),就可以套用。Google 的開發者傳教士 Sebastian Benz 整理出常見的一些 AMP 模組讓有需要的工程師能更輕鬆套用。

對於 SEO 也相當有幫助,能夠在搜尋結果中卡片式的樣式被突顯出來

ampbyexample.com

用圖片主色作為底色,讓延遲載入圖片感覺更快

Pinterest 在載入圖片前,會先用圖片的主色作為底色,讓使用者有提前載入的感覺,同時也讓頁面不致於單調。這樣的做法往往用後端來儲存圖片主色,現在純的做法可以做到,主要就是透過 CSS 的 filter:blur 來處理。

krasimirtsonev.com

瀏覽器幾乎知道你的一切

隨著網路服務越來越普及,許多個人資訊也透過瀏覽器被間接公開。你知道瀏覽器握有多少少關於你的資訊嗎?可以點這裡看看(無病毒,不用害怕)

robinlinus.com

@kkdai

Golang 1.6.0 1.5.3 重大安全漏洞:CVE request - Go - DLL loading, Big int

一個安全報告指出,目前的 Golang 1.6.0 與 1.5.3 有著以下兩個漏洞:

  1. 在 Windows 方面,呼叫 DLLs 是透過 "名稱"來 LoadLibrary.這使得 Golang 在呼叫 DLLs 有相當程度的危險,尤其如果 Golang App 如果放在"下載"的資料夾下.有可能會使用到惡意的DLL ,而不是預期的DLL.詳細的修改可以參考這裡 21428

  2. 使用 HTTPS client 或是 Go SSH server 都有可能遇到無窮迴圈而使系統陷入攻擊的危險.詳細的修改可以參考這裡 21533

以上兩個問題已經被修復了,Golang PM - Jason Buberel 決定會提供更新 Go 1.6.1 跟 Go 1.5.4 來給使用者更新.

目前 Golang 已經釋出了 1.6.1 跟 1.5.4 記得要更新.

seclists.org

Filippo Valsorda: 我只用四行程式碼卻讓 go-github 速度增加四倍

Filippo Valsorda @FiloSottile 在 Google 工具裡面中 go-github 發送了一個 fixed. 這個 fixed 只有四行的修改,卻可以把整個連線速度大大的提升了四倍以上.他是怎麼做到的?

原來 http.response.body 在做關閉的時候,如果發現裡面還有資料(使用 json.Decoder 會殘留 \n 在裡面). 為了把資料清乾淨,就會把整個 HTTP 連線關閉重開.這樣就造成每次的 HTTP 連線無法重複使用,造就效能上的影響.經過了許多的討論過後, Bradfitz 也就是 Go net/http 的作者就跳出來說要把這個問題修回去 Golang 裡面,避免以後其他部分的影響.不過這部分的修改,已經趕不上 Go 1.6 之中了,大家要稍微注意一下.

如果必須使用 json.Decoder 該如何避免連線重開的效能消耗呢?

  • 根據 mattn這篇文章json.Unmarshal 並不會有類似問題.當然兩者使用情境不同,請自己多加考慮.
  • 如果你一定得使用 json.Decoder 的話,可以使用 mattn 提供的小工具 go-drainclose , 來將資料清乾淨使得連線不會被強制關閉.

延伸閱讀 :

twitter.com

Writing a very fast cache service with millions of entries in Go

這篇文章的出發點是想要幫團隊裡面架設高效與高吞吐的 cache service ,透過研究之後決定使用 Go 來開發,以下是他提出的一些小訣竅:

  • 同步處理:
    • 透過 goroutine 可以讓你的 cache service 有更高的效能,這邊也有建議透過 hash key 的方式來建立索引值,來存放 cache 的資料.
  • 過期的暫存資料移除:
    • 每筆資料需要有建立的時間標籤,透過時間標籤可以將過期的資料加以移除.
  • 減少 GC(Garbage Collection)的產生:
    • 如果有使用到 map , GC 會去接觸到裡面的每一個元素. 這就造成效能上的消耗. 最建議的方式就是在需要高效率處理的部份不要使用 map
  • 一個儲存大量資料的暫存區:
    • 除了這篇文章,這家公司 Allegro 也發佈他們的套件 BigCache 可以暫存 GB 等級的資料並且避免 GC 不斷地存取造成效能的低落.

接下來介紹幾個好的 Golang 套件(取代原先內建的部分):

  • HTTP 文章建議使用 fasthttp 據說比原生的 net/http 快上十倍.
  • JSON 處理方面,文章建議使用 ffjson 比起原生的 json 快上二到三倍.

大家可以參考一下

allegro.tech

針對 Leftpad 的事件,在 Go 語言中有工具可以幫忙嗎?

前一段時間 Node.JS 社群發生了一個讓整個軟體業鬧哄哄的事件,就是熟知的 LeftPad 事件 ( 想知道詳細事件可以看 保哥懶人包 ) . 當然,在 Go 裡面可以透過一些 Package Management Tool 來將一些重要的 Dependency Package 透過 Vendor 的方式複製起來.本篇討論到的是另外一個方向:

A little copying is better than a little dependency.

也就是如果你使用到的套件比較小,其實作者是比較建議你自己寫一套放著.那麼要如何去找出這樣的小套件呢? 作者就發表了他開發的小工具: Depscheck . 一個可以查詢所有的相依套件,並且找出比較小的相依套件來建議你是否考慮要自己寫.

裡面用的邏輯也相當有趣: 如果使用到其它套件 ,或是你使用的被套件參考超過 3 次以上,或是程式行數超過 42宇宙的最終解答作為參考數 XD ).就會被當作是不可移除的套件.

當然,這個工具也可以當作 Dependency Walker 的工具來使用.可以清楚地瞭解你寫的套件中相依套件的關係.推薦給大家.

github.io

微軟推出機器人架構 Bot Framework

微軟在這次 Build 2016 程式開發者大會上推出的機器人架構 ( Bot Framework ), 透過官方提供的範例程式 ( 目前僅支援 C# 與 Node.Js ) 可以在 30 分鐘內建立出一個 Slack 機器人.

接下來稍微解釋一下, Bot Framework 本身究竟提供了哪些功能:

  • 透過 Bot Connector 連接各種 IM:
    • 提供與各種 IM 的連接方式,其中包括了 ( Slack, Skype, Telegram, Email, SMS, Email )
  • 建立對話( Dialog)來處理不同的指令:
    • 透過建立對話的方式,可以相當容易讓你的機器人處理多個指令.每一種指令都被視為是一個對話,並且可以針對每個對話處理他的邏輯與流程.
  • 透過自然語言的處理方式建立更口語化的對話:
    • 透過微軟提供的 LUIS ( Language Understanding Intelligent Service ) 可以讓你跟機器人的對話變得自然.也讓機器人處理各種語句的能力能夠更強. 比如說: 排定會議可以說成 「幫我預約明天三點的會議」,當然也可已訓練之後說成「幫我排定明天三點會議」. 簡單的說,就是透過自己建立的 LUIS 模型,你可以不用修改程式碼,就可以擴充你的機器人對各種語言的處理能力.

透過這三個主要的架構,雖然你還無法直接建立類似 Siri 一樣的小幫手,但是你可以很輕易地建立「訂披薩小幫手」,「客服小幫手」類似的機器人.

此外,臉書也在 F8 公布了他們之前收購的語音與文字自然語言平台 wit.ai 將要支援 FB Messanger .大家可以看看.

botframework.com

Two Legs Bad

Stack Overflow Developer Survey Results 2016 - 開發者身家調查

今年 Stack Overflow 對大約 56000 名開發者進行了一個有趣的問券調查,包含了他們的職位、性別、教育程度、使用的技術、薪資等等... 大致上讓我們可以了解這個世界的開發者大概的樣貌(抽象的樣貌啦),至於為何我會把這篇放在 Two Legs Bad,等你看到薪資這個部份就知道了。中國的開發者平均年薪有 54000 鎂,中位數位於 45000 鎂!台灣的開發者應該兩個數值都遠低於這個數字吧!大家好好感受一下身為無產階級碼農的感覺吧~

stackoverflow.com

Otaku is the New Sexy

被冠上閱覽注意的動物作品

ヤスミーン (茉莉)

看起來極凶惡的這部「YASUMIN」,網上暫時翻成「茉莉」(Jasmin)。目前在ニコニコ上有完整的連載。

和封閉的人類社會不同,動物社會的種族階級明確且僵固,建立在食物鏈的鐵則之上,作為「食物」的草食動物沒有任何翻轉階級的機會,只能盡可能的用數量來延續基因的存亡,這部作品描述一個由獅群建立的封建王國,極盡所能的奴役階級比自己低下的動物,草食動物以勞力換取「不被當做食物」的資格,而小型的肉食動物也可以付出勞力換取固定的食物配給。被奴役的草食動物地位比奴隸還卑賤,即使不被獵食,也有可能因為好玩、礙事等各種原因,被肉食動物隨意的殺死。read more ...

@autisticcat


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

CodeTengu Weekly 碼天狗週刊 - Issue 40 // Do not remove this comment or code will break - Apr 25th 2016

$
0
0

Hello World

CodeTengu Weekly 碼天狗週刊

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

你也可以瀏覽一下前幾期的內容,有價值的東西是不會過時的。

以下是目前的 curator 陣容:

大家也可以 follow 一下 CodeTengu 的 FacebookTwitterGitHub,有很多 Weekly 看不到的內容。有任何建議或疑問也可以來 Gitter 聊一聊,歡迎亂入 👺

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

@wancw

OrmHate

上期的副標讓我想起這篇文章,ORM 派與(半)手刻 SQL 派的爭論一直是 IT 界不停歇的週期性熱門話題。但到底為什麼 SQL/ORM 這麼難用?不如讓我們重溫一下大師的看法。

Martin Fowler 認為 Database(Relational) ↔ Memory(Object) 間的雙向對映本身就是一個非常複雜的問題。當你希望一套工具可以適用各種狀況時,自然會得到一個龐大肥腫的 ORM 工具。例如同樣解決雙向同步的 MVC 框架亦常有類似問題;更何況因為跨越系統邊界而更複雜難解的 object-realtional 問題。

關於要不要用 ORM,大師的建議如下:

  1. 原則上 不要自己刻 ORM。畢竟這問題太複雜,沒必要讓自己再深陷泥沼。
  2. 或是分離資料庫讀/寫,把雙向同步問題轉成單向資料流、需要的時候直接使用 SQL。這部分可以參考 Command Query Responsibility Segregation 模式。 (是否覺得把 雙向同步問題 轉成 單向資料流 這方法有點熟悉?這正是 Flux 的特點)

衍伸閱讀:

martinfowler.com

Java 8 in Android N Preview

各位,我們終於可以在 Android 上用 Java 8 啦!

這篇是實際在 Android N Preview 上使用 Java 8 的心得文。
不多說,各位自己看吧。

medium.com

Valve/fingerprintjs2: Modern & flexible browser fingerprinting library

從本期開始我想介紹一些個人覺得有趣的專案。
(順便清一下自己的 study list)

fingerprintJS 根據瀏覽器特性(User-Agent、螢幕解析度、安裝的 plug-in 等等)算出 hash 值,不透過 cookie 就可以識別不同的使用者。(但由於手機瀏覽器的特性,很容易得到接近的 fingerprint 值)

P.S. 本來要介紹的是 Fingerprintjs,剛剛才發現已經被 Fingerprintjs2 取代了。

github.com

Head Hunter不會告訴你的事情!

工作一段時間之後,工作機會的來源幾乎都是靠朋友跟 Head Hunter 介紹。不像朋友介紹,Head Hunter 其實只是在商言商的仲介,先搞清楚這點才不至於吃虧。

作者建議如下:

對 Head Hunter 的認知:

  1. 別把 Head Hunter 當媽,先清楚他們的服務內容
  2. 顧問費用是建立在年薪的計算基準
  3. 在他們與公司的合作契約中,大多不會討論勞動條件

透過 Head Hunter 找工作時,仍應:

  1. 個人對這公司先做研究
  2. 列一份勞動條件問題表:工作時間、加班補休、請假規則、賠償條款、合約終止注意事項

(其實這些是去任何公司面試時都該做的事前準備)

延伸閱讀:

blogspot.tw

本期 IG - GUNDAMSTAGRAM (@gundamstagram)

雖然食色性也,但也不能一直貼美女照片。這次分享一下不同調性的 Instagram 帳號。

這個帳號專門貼鋼彈模型照片,造一台鋼彈應該是每個工程師的夢想吧?!(握拳)

instagram.com

@mingderwang

21st-century cowrie shells - 21世紀的"貝"幣

智能合約 (smart contract) 與數位代幣 (token) 的應用, 會從少數人開始使用, 比如說是開發者, 進而在公司內部開始應用, 例如年終獎金, 只發比特幣, 不再發現金了, 最後還是會變成每個人都能發行自己的 tokens; 就像網站一樣, 一開始政府與研究單位先有, 再來才是各行各業, 最後演進到部落格, 每個人都可以很簡單的架設自己的網頁。

但網頁是在 1993 NCSA 發明了 Mosaic 瀏覽器之後, 才讓一般人開始對 Internet 覺得好用而感到興趣, 也才有今天所有的一切, smart phones, web apps 等等, 但卻花了 20 年以上的時間才被所有人類接受。不過智能合約或許不必那麼久, 大概只要兩三年的時間, 就會被廣泛應用。所以當年 web 瀏覽器可以說是 killer app, 改變了人類的生活; 而 2016 的今天, 下一個 killer app 是什麼?我覺得是 Wallet ” 電子錢包“, 它是你跟未來數位生活的介面, 就跟瀏覽器是你跟 Internet 的介面一樣, 你可以研發一個萬用的“電子錢包", 可以跟當年 Netscape 公司一樣, 再一次改變世界!

但切記, 當有了 smart contracts 的應用, 你的錢包就不只是錢包, 就像 web 瀏覽器不再只是拿來瀏覽網頁。

CodeTengu Weekly

Using 2 factor authentication for SSH

想讓你的 servers 更安全一些嗎? 最有效果的方法是把 ssh login 再增加一個 2FA (two-factor authentication) 認證 。本連結教你如何利用 Android 或 iOS 手機上的 Google Authenticator 軟體幫你每一分鐘產生一次新密碼, 再加上你原本 ssh 的 password 就更加安全了。

同樣這個 2FA 方法也可以用在 Amazon AWS 帳號認證 , 還有常被用來當 數位錢包的身份確認, 當然 Google 的帳號也可以用 Google Authenticator 來做 2 - 步確認。所以同一個 2FA 軟體, 到處都可以使用。

arm-blog.com

什麼是 DC/OS ?

全名是 Datacenter Operating System, 也就是 "資料中心的作業系統"。雖然名稱好像是用在 Datacenter, 但我們也可以套用在自己的公司裡, 來執行 docker containers, big data 或傳統的應用程式。它其實就是 Mesos + Dockers + GUI + CLI, 就像我以前用 Vagrant 玩 Hadoop, 或 Mesos + Marathon (用 Playa Mesos), 我們也可以用 Vagrant 來安裝 DC/OS, 瞭解它的原理之後, 再考慮是否可以導入公司資訊中心。

mesosphere.com

@kako0507

React Native: A year in review

Facebook 在今年的 F8 - Facebook Developer Conference 上宣布 Microsoft 正將 React Native 加入 Windows 生態系,讓開發者可以使用 React Native 開發 Windows PC 、 Windows Phone 、 Xbox 軟體,也會提供一些開源的工具如 Visual Studio Code 和 Code Push 上的 React Native extension ,另外, Samsung 也在實作自家平台 Tizen 的 React Native porting。

React Native 雖然是新的一套開發方式,但在短短一年內已累積龐大的生態系與許多實際上架 App。

不同於以往 "Write Once, Run Everywere" 的概念,React Native 並不是真的跨平台, 而是希望能在維持 native code 的效能下,使用同一套開發方式去實作不同平台的 App,達到 "Learn Once, Write Everywere" 的精神,而因為程式邏輯方面可以利用 JavaScript 實作,在實際開發時,iOS 與 Android App 都可以達到蠻高程度的 code sharing 。

facebook.com

Webpack — The Confusing Parts

自從 Webpack 出現後,Gulp 和 Grunt 漸漸地被 Npm + Webpack 取代,因為 Webpack 功能強大,本篇文章探討幾個容易讓開發者混淆的點:

  1. Development Vs Production

    • Webpack 有很多功能,有些屬於 Development ,有些屬於 Production ,有些則是共用,所以在實作上通常會分成兩個 config 檔,透過 npm 的 scripts 來 run webpack 。
  2. webpack CLI Vs webpack-dev-server

    • webpack CLI 較適合 production build
    • webpack-dev-server 為 Node.js server ,支援一些方便開發的功能,如: Hot Module Replacement (HMR)
  3. “entry” — String Vs Array Vs Object

    • 光是 app 的 entry point ,就有很多種設定方式,因為支援多個 bundle file,所以可以透過 array 與 object 來指定 entry。
  4. output — “path” Vs “publicPath”

    • path 表示儲存 result 的路徑
    • publicPath 用於讓 Webpack’s plugins update CSS, HTML 檔案內的 URL 。
  5. Loaders And Chaining Loaders

    • 各種不同的 loaders 使 webpack 可以 import 各個相對應格式的 file ,有些 file 需要透過多個 loader 來多次轉換才能 import 。
  6. Loaders Themselves Can Be Configured

    • loader 可以透過 queryset 的方式來設定參數
  7. The .babelrc file

    • 當 babel-loader 需要設定較多參數時,可以另外寫個 .babelrc , babel-loader 會自動讀取來設定參數。
  8. Plugins

    • Plugin 可以對產出的 bundle file 再做進一步的處理。
  9. Loaders Vs Plugins

    • Loaders 在 bundle 產生之前運作
    • Plugin 則在 bundle 產生過程後運作
  10. Resolving File Extensions

    • 在 resolve extensions 加入空字串,是為了可以 import 沒有 extension 的 file 。

medium.com

Functional Reactive Game Programming – RxJS Breakout

越來越多人利用 Reactive Programming 概念來撰寫 UI 程式, 本篇作者利用 Reactive Extension 實作出類似 Atari Breakout 的遊戲。

Reactive Programming 可以將任何 Event 視為 Stream 從而簡單的做操作,如果對這個領域還不熟悉,可以看看 André Staltz介紹

manu.ninja

Introducing React Storybook

在開發 React 時常會將一個大的 Component 分割成許多小的 Component , React Storybook 可以讓開發者不需執行 App 獨立開發各個 Component ,直接顯示在 Storybook 上,只要簡單的步驟就可以將 Component 設定好並執行,且不會污染原有的環境,有簡潔風格的 UI 介面,支援 Hot Module Reloading ,可在各種 React App 下執行。

kadira.io

Random Cool Stuff

Uptime Funk - (Uptown Funk parody) - YouTube

Don’t reboot it just patch!

@saiday 提供

youtube.com


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

CodeTengu Weekly 碼天狗週刊 - Issue 41 一邊喊著找不到人才,一邊要求租稅優惠,聽到調高基本工資就說不利產業發展、企業恐外移,全台灣最沒有競爭力的就是這些老闆了 - May 2nd 2016

$
0
0

Hello World

CodeTengu Weekly 碼天狗週刊

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

你也可以瀏覽一下前幾期的內容,有價值的東西是不會過時的。

以下是目前的 curator 陣容:

大家也可以 follow 一下 CodeTengu 的 FacebookTwitterGitHub,有很多 Weekly 看不到的內容。有任何建議或疑問也可以來 Gitter 聊一聊,歡迎亂入 👺

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

@vinta

SQL Exercises

"Real World" 的 SQL 練習題,前陣子在複習 SQL 的時候有拿來練練手,是個不錯的教材,推薦給同樣被 ORM 慣壞的你(誒,這句話好像前幾期就說過了?)。

P.S. 雖然跟主題無關,但是忍不住跟大家分享一下,我這禮拜都在玩 BioShock Infinite,幹你娘真的超好玩,大家有空可以感受感受,這才叫做數位藝術吶。

wikibooks.org

Best practices working with Django models in Python

這篇文章列出了 25 個 Django ModelModelForm 的 best practices,雖然多到有點瑣碎,但是每一項確實都是值得遵循的做法。

延伸閱讀:

steelkiwi.com

React 最佳实践 —— 那些 React 没告诉你但很重要的事

這篇文章(和延伸閱讀裡的第一篇)特別提到了「在 React 裡怎麼處理跟後端要資料」這件事的幾個做法。

延伸閱讀:

segmentfault.com

Help!ful Things YOU Can Do for New Developers

因為公司前陣子來了幾位新同事,有 PMs 也有 developers,為了讓新人能夠更快上手、讓彼此的合作更加順暢,似乎也是需要一點小技巧的啊。正好就看到這篇文章,作者列出了一份「你可以為 junior 工程師做的事」的清單,以她當初還是新手時所受到的幫助為例,真的都是很務實的建議啊,例如:

  • Explain jargon that new developers might not know or understand.
  • Walk new engineers through the code base.
  • Give them read access to your database in a way that they know what data is available to them.
  • Let new engineers watch you debug, and explain what you’re doing.
  • Don’t give them lines to copy/paste into the code.
  • Explain your expectations and time estimations for projects clearly.

eventbrite.com

Being A Developer After 40

作者是一個 42 歲的軟體工程師,以一個見證了無數技術的更迭與炒作的過來人身份,給了很多中肯的建議。這篇文章寫得真的好。

freecodecamp.com

@saiday

JonSnow: Google Play review watcher, delivering to your slack channel

在 iOS 社群裡有一個 LaunchKit 的 Review Monitor 服務,精美而且免費,我用它將 App Store 上的新評論都接到公司的 slack channel 裡面。Android 社群中是有一些類似的服務沒錯,但是全部都要收費,而且功能還沒有很齊全,所以後來也就沒有使用了。

上禮拜我們公司上線了新版的 Android app (StreetVoice),我覺得大家一定會稱讚我們,急著想要把 Google Play 上的評論接進 Slack 裡面,而既然市面上沒有好的 review monitor 的選擇,就只好自己做一個。

功能很簡單,就是爬一下 Google Play 的 reviews,而我將這個工具做了 Heroku button 的整合 (@tzangms 介紹的!),只要按一個按鈕,填入要 monitor 的 app_id 跟 slack channel incoming hook,你就自己 host 這個服務了,完全不需要寫 code。使用的方式都在 Heroku 免費的條件內,所以也不需要付費。

PS. CodeTengu 一直都有幫大家推廣 Open Source Project 的計畫,但是好像太少提而沒什麼人知道,如果你有自己的 Open Source Project 想要透過 CodeTengu 做推廣,你可以透過各種管道 (gitter, GitHub ..) 讓我們知道。

github.com

The Trouble with Manager Objects

你的 codebase 裡面有充斥著大量 Manager 或是 Utils 物件嗎?

Single responsibility principle (A class should have only one reason to change) 是一個很玄的東西,聽起來像廢話但是大家總是做不好。遵照 SRP 的理念,我們可以問自己這些 ManagerUtils 的責任到底是什麼,它負責了超過一件事情嗎?它可以拆得更精確嗎?

作者有提到一點我很同意,在 OO 的概念裡面,應該是對該 model object 做操作,而不是把被操作的物件跟動作都丟給所謂的 Manager 來處理,畢竟這樣的話,你很可能把你的 model 弱化成 entity 了。

另外,Manager 這個詞代表什麼都可能做,其實也就是光從名字上是很難理解它到底在做什麼的,在這裡推薦大家這個經典的 stackoverflow 問題 Naming Classes - How to avoid calling everything a “<WhatEver>Manager”?,裡面有很多名詞可以挑選,雖然說有些真的是太偏門了。

sandofsky.com

Automatic memory leak detection on iOS

Facebook 針對 iOS 的 memory leaks 開源了三個項目 FBRetainCycleDetectorFBAllocationTrackerFBMemoryProfiler

前兩個是這套工具的基石,透過 objC 強大的 runtimeframework,不斷的在記憶體中檢查 retain cycles。Facebook 說他們利用這兩個項目建造了一個自動化檢測 memory leaks 並發修復通知給引入 retain cycle 的工程師的系統。

而 FBMemoryProfiler 也是利用前兩個項目做到了基本上可以取代 Xcode 提供的 Instrument allocation 的工具,裝在你的 debug build 上,可以隨時做快速地檢測。

其實偶爾會聽到人家說,現在記憶體都那麼大,不用怕啦。我覺得不是這樣子的,memory leaks 除了字面上的該釋放而未釋放之外,他還會有一些可怕的 side effects 呀,比方說透過 Notification、KVO 或 FRP tools 引入的 observer 它 leak 了,那它還是有可能會被觸發一直做事情,就可能會有可怕的事情發生。

facebook.com

Avoiding cold starts on Android

code start: 你的 app 不在記憶體裡的啟動,是花最多時間的啟動情況。

作者再一次宣稱 Android app 不應該在 code start 的時候使用像 iOS 一樣的 splash screens,因為這樣做會拖慢開啟的時間、增加 app 的大小。

我們可以透過 android:windowBackground<layer-list> 搭配的技巧合理地在我們的 app 載入到記憶體的這段期間做點事情,在 Material design guides 提到的兩種啟動畫面: placeholder、 branded 都可以透過這個技巧來實作。

github.io

Meaningful Motion with Shared Element Transition and Circular Reveal Animation

Material Design 真的是很不錯,其中的 circular reveal animation 不只看起來舒服,而且對使用者的認知體驗也是加分的。

這是一個關於 circular reveal animation 的教學,而關於 transitions 你也可以輔助官方的教程 使用。

thedroidsonroids.com

@hiroshiyui

What's coming in Elixir 1.3

這篇介紹了 Elixir 1.3 的新特性,其中很多語法上的更動讓 Elixir 程式得以撰寫的更精鍊易讀,有些輔助工具的更動則讓程式碼測試、建置變得更方便,我個人讀來是非常喜孜孜,期待 1.3 版正式釋出。

文章作者 Daniel Perez 另外做了一份簡報版發表在 tokyo.ex 聚會上,再追了一下才知道日本有 beam-lang.tokyo 這樣一個社群,頭一次看到對基於 BEAM VM 的程式語言統稱為 beam-lang,我這個愛用文字哏的人覺得還蠻有意思的。

tuvistavie.com

Comparing Elixir and Erlang variables

在 Erlang 裡,變數只能被賦值一次,是不可變的 (immutable)。但是在 Elixir 裡,我們卻彷彿可以像是用 C, Ruby 之類的語言,對變數「重新賦值」,而這也是從 Erlang 跳過來 Elixir 的人最可能會覺得離經叛道、一時無法接受的地方。事實上,Elixir 是對變數「重新綁定」(rebinding) 而非「重新賦值」,變數先前被賦予的資料仍舊存在記憶體的某個位置,重新綁定後的變數只是指向了另一份不同位置的新資料。

這篇文章,是 Elixir 之父 José Valim 談論 Elixir 與 Erlang 對變數處理設計的相異點。我推薦搭配 Immutability in Elixir - Self Recursion 這篇,以及 Elixir RAM and the Template of Doom 這篇一起看。

plataformatec.com.br

Unicode and Elixir

早期因為讀了蔡學鏞的文章開始接觸 Erlang 時,看到「而且 Erlang 居然還不支援 Unicode,這是個相當大的缺點」這句,心就涼了半截。以我主修的圖書資訊學來說,拿程式來處理文字資料,是最基本的功夫,這當中對於 character set, character encoding 的處理自然是不可免的,尤其在臺灣這個至今還會遇到活化石 Big5 的地方,程式語言的內建機制若沒有現成的字元編碼處理能力,用起來就會顯得綁手綁腳,自然會影響使用意願。

事實上,Erlang 對 Unicode 與 UTF-* 的支援,隨著歷次更版漸漸在改進,所以情況已經與早先大不同了。回頭看 Elixir,可能是因為後起之秀的關係,對 Unicode 與 UTF-8 的支援已經很完善,官網對此也有專門的一份文件 Binaries, strings and char lists 說明。那麼,Elixir 針對 Unicode 支援的內部實作又是如何呢?標題這系列文有不錯的探討,截自本期出刊,已經寫到第三篇:

  1. Unicode and Elixir, part 1: Introduction
  2. Unicode and Elixir part 2: Where Elixir defines and uses Unicode
  3. Unicode and Elixir part 3: Elixir's Unicode source

github.io

Erlang 程式開發原則:該錯的放它錯

從講求防禦式程式設計的 paradigm 轉來學習 Erlang 與 Elixir 時,相信很多人,包括我在內,一開始也不習慣「放乎去」這樣的思維。但是就因為函數式語言追求函式求值結果的單純,所以對於 business logic 上的可能複數狀況,則應該反思在函數規劃上是否還不夠「純粹」,至於各種外部因素的錯誤,則應交給 supervisor, BEAM 與 OS 去處理,函數就只應負責如實求值就好。

在 Stack Overflow 上頭這則 Non-defensive programming in Erlang 問答,講得很清楚,也值得大家一讀。

wordpress.com

How Etsy Formats Currency

對,就是那個文創商品的電商平台 Etsy。文中介紹了他們在幾個處理貨幣顯示格式上的常見問題處理,相信會對處理電子商務的開發者很有幫助。

codeascraft.com

工作機會

Sudo_ 前端工程師 / Web Front-end Engineer

年薪 NT$ 520,000 至 NT$ 780,000

sudo.com.tw

Two Legs Bad

五一勞工運動誕生之日 1886 芝加哥乾草市場悲劇記事

本期碼天狗出刊,適逢勞動節補假日,選輯這篇苦勞網文章,算是應景歷史故事,可瞭解勞動節的由來。

同時也有一點小感慨,最近每次讀到 PTT 的 Soft_Job 看板出現勞動條件、環境太誇張的文,都不免省思自己對勞動法規、權益等議題還不夠瞭解、不夠關注。要改善 IT 業的環境,這其實也是很重要的一環。

@hiroshiyui 分享。

coolloud.org.tw


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

CodeTengu Weekly 碼天狗週刊 - Issue 42 所有人都在說互联网,沒有人在說網際網路了 - May 9th 2016

$
0
0

Hello World

CodeTengu Weekly 碼天狗週刊

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

你也可以瀏覽一下前幾期的內容,有價值的東西是不會過時的。

以下是目前的 curator 陣容:

大家也可以 follow 一下 CodeTengu 的 FacebookTwitterGitHub,有很多 Weekly 看不到的內容。有任何建議或疑問也可以來 Gitter 聊一聊,歡迎亂入 👺

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

@tzangms

What does Unsplash cost?

Unsplash 是一個提供高質量照片而且可以免費使用 (do whatever you want) 的網站, 一直以來, 我的部落格 每發一篇文章就都會從這個網站找一張圖片搭配。

其實我一直以為這網站似乎不太需要花錢, 一直到看了這篇文章才覺得實在太驚訝了, 這樣一個簡單的網站, 每個月居然要花上高達快 60萬台幣 :o

不過當然得說一下, 他們的架構是朝著省時、省力的方向走, 這也是一種方式。

crew.co

The Internet Economy

作者畫了一張圖來表達現在的 (美國) 網路經濟流向, 以及現在網路經濟被五大公司 (Google, Apple, Facebook, Amazon, and Microsoft) 所掌握。

我覺得當中比較有趣的是這一點, 提到 Amazon 是 Google 的主要威脅

it might seem counterintuitive that Amazon is a major threat to Google’s core search business.

論點大致上是這樣: 人們使用 Google 搜尋產品來進行購物, Google 透過搜尋來賣廣告, 而廣告通常是賣東西的人下廣告比較多, 不過 Amazon 的購物體驗比起其他商城好, 所以人們開始傾向直接上 Amazon, 跳過 Google 搜尋... 挺有道理的啊...

medium.com

滲透 Facebook 的思路與發現

上個月火紅的一篇 Hack 進 FB 的技術文章, 沿著作者的思路一路走, 的確是很有趣

devco.re

Unintuitive Things I’ve Learned about Management (Part 1)

雖然管理的文章看多了, 似乎就是那樣, 不過這篇我覺得寫的還是不錯, 還是推薦大家看看。其中印象比較深刻的是這一點

To evaluate the strength of a manager, look at the strength of their team.

也記得看 Part 2

medium.com

本週 IG: @qbee7582

華航空姐, 已經是一位媽媽, 雖然穿搭的廣告有點多, 但是還是很棒

instagram.com

@uranusjr

The one thing every programmer should do to succeed in the tech industry

如果想在科技界成功,記得做一件事:寫作。這能讓你表達自己的意見——尤其如果你不擅長在公開場合說話。

學習寫作可以讓工程師更容易向管理階層、甚至客戶解釋自己的工作。當你完成一個系統後,會需要用人類的語言解釋它;好的說明文章也會成為現成的廣告,一來提高作品能見度,二來提升使用者的使用慾——更多使用者代表更多找到問題的機會,對軟體本身的品質也有很大幫助。

當然,軟體工程師本職還是寫程式,所以當不成文豪什麼的也沒關係。但千萬記得保留一些技能點給它。

businessinsider.com

Programming by Poking: Why MIT Stopped Teaching SICP

最近幾年 MIT 放棄使用經典《電腦程式的構造和解釋》(Structure and Interpretation of Computer Programs,通稱 SICP)作為計算機概論的教科書,開始用 Python 取代 SICP 使用的 Scheme,當作 CS 學生的入門語言。Yarden Katz 在這篇文章中稍微解釋了原因:Sussman 和 Abelson(SICP 的作者)不想繼續教,以及 SICP 的內容不再適合現代的工程概念,無法讓學生獲得成為當代軟體工程師所需的技能。

根據 Gerry Sussman(SICP 作者與授課教授之一)的說法,SICP 成書時的軟體工程需要從頭開始打造一個系統,但今天的工程師絕大時間都花在自己不了解(也不可能了解)的軟硬體技術上。Sussman 觀察到他的學生把大量時間花在閱讀文件,好把不同的現成元件接合在一起,讓它們能一起運作。用他的話講:

[現在的程式設計] 更像科學。你拿到一個程式庫,然後擺弄它。你寫一個程式,然後擺弄它,觀察它的運作結果。然後你就能問『我能不能調整它達成我的需求?』

SICP 的方法開始與當代的工程需求脫節,所以他們決定拋棄它。Python 因為擁有包山包海的函式庫,能夠適應講師希望教授的各種應用,而被選為新的教材。

不過即使不再是入門的最佳方法,SICP 本身仍然是經典,值得一看(我承認我沒讀過)。書的內容完全公開,Sussman 和 Abelson 的授課也有錄影

posteriorscience.net

Makefile Assignments are Turing-Complete

這年頭好像沒什麼人自己手寫 Makefile 了,一般程式 project 會因為平台支援轉用 meta-make system 例如 CMake 與 SCons,即使原本 Makefile 的 niche——單一 target platform 的 build dependency management——也被更潮的工具取代,例如什麼 Grunt 啊這不潮了是 Gulp 啊這也不潮我是說 Webpack。是說好像前年 COSCUP 吧,我聽了個介紹當時很夯的 build system 的 talk,聽到一半就忍不住跟隔壁的人說『啊這就是 Makefile 啊』。

真的,Makefile 很厲害。而且它是 Turing-complete,也就是說你能想得 build tool 該辦到的事情,它都辦得到——甚至你覺得它不該辦到的也可以,例如用來實作康威生命遊戲!?

當然「辦得到」和「你該用它辦到」是兩件事,特定的狀況還是該用特定的工具(文章裡也舉了個著名的 x86 mov 是 Turing-complete 例子),一切都視情況而定。但為了一個簡單的任務,與其費盡千辛萬苦裝 node 裝 npm 再裝那個你心愛的 build system,用一個幾乎所有 Linux distributions 都預裝、OS X 和 Windows 也只要裝任何開發工具就會送你的東西,好像還更方便呢。

nullprogram.com

Classic Programmer Paintings

《償還技術債》

這個 Tumblr 收集了許多經典畫作,並為它們加上一個 programmer 取向的標題。其他我特別喜歡的還有像《Haskell meetup》、《第一次 code review》、《Sysadmin 確認 RFC2822 是否確實允許向所有收件人發佈 BCC 欄位》等等。

classicprogrammerpaintings.com

@kkdai

讓你 Go 程式碼變得更好的工具集 (Tools to Help you Go)

Golang 讓人喜歡的許多原因之一,就是有著許多好用的工具可以讓你在撰寫 Go 的時候更加的輕鬆而方便. 舉個最間單的例子,就是 coding style tool goimport 他可以讓你在存在之後,自動把 coding style 改成 Golang community 所習慣的範例. 當然還有好用到不行的 guru 可以幫助你查詢 caller 與 callee.除了這兩個之外,這一篇有介紹更多的工具:

  • Golint : 可以自動幫你檢查所有程式碼中潛在的語法問題.
  • Gocyclo : 可以幫你計算你程式碼中的循環複雜度(Cyclomatic complexity)避免有過多的迴圈運算.
  • Depscheck : 可以幫你產生相依性的報表,讓你可以思考有多少小套套件是相依其他人的.經過了 NPM 的 LeftPad 事件之後.其實不少人建議如果相依的套件太小,不仿自己寫過來吧.
  • errcheck : 這個套件可以幫你檢查你的程式碼有沒有對於每個錯誤都有相對應的檢查與處理.避免明明有 error 卻沒有檢查的潛在問題.
  • safesql : SQL Injection 是每個人在撰寫後端與資料庫橋接程式的時候最擔心的問題.這個工具可以幫你檢查看看有沒有危險的語法存在.

雖然 Golang 社群提供了許多的工具來幫助你,其實 Golang 本身的 Compiler 已經相當的強勢.會幫你檢查出許多潛在的問題.除了這些工具之外,當然相信自己與撰寫單元測試的好習慣都是可以幫助讓你的程式變得更好的不二法門.

serifandsemaphore.io

[Golang] 深入研究 Visual Studio Code for Golang

筆者要推薦自己的一篇文章.主要就是推薦最近剛剛成為 1.0 正式版的 Visual Studio Code ,如果你有開發 Windows 應用程式的經驗,那麼你可能使用過 Visual Studio 而 Visual Studio Code 是基於 Visual Studio 類似的使用者習慣並且基於 atom.io 的編譯器原始碼所開發而成.

本篇文章不僅僅介紹了該如何開始使用 VS Code for Golang ,更將筆者比較常使用的一些熱鍵與設定檔分享出來.希望能讓習慣於使用其他編輯器開發 Golang 的使用者可以更快速上手.

如果你目前的開發編輯器是 Sublime-Text ,那麼你切換到 VS Code 會相當的順利並且快速.如果你目前的 atom.io 那麼你也可以試試看,不少開發者都說切換過去後的開發速度整個變快了不少. 如果你目前開發編輯器是 VIM ,也建議你試試看他的 debugger .透過 delve 並且與 VS 相似的除錯介面,可以讓你解決問題更快上手.

evanlin.com

Dan Grover: "Bots won't replace apps. Better apps will replace apps."

這裡有官方中文版可以看: "Bot 不会取代 app,更好的 app 才会" ,作者是微信的 PM (美國人 !!)

作者認為不論 Bot 多麼的具有智慧, 相對於 App的圖形介面,跟 Bot 對話就像是 以前時代的 DOS 命令列一樣,需要不斷地下指令. 而操作 App 就像是後來出的 Windows 視窗介面 (GUI) .後者永遠不會被前者取代,但是如何讓使用者更容易與有效的使用你的服務才是重點.

小編這幾週將一些的 Bot Framework 都玩了一下,包含微軟的 Bot Framework,臉書的 Messenger Platform 還是 Line Bot API .其實聊天機器人並不是新的概念,從 IM 軟體出來的第一天就有了.但是透過現今不少的自然語音系統的輔助 (不論是微軟的 LUIS 或是被臉書收購的 wit.ai 都可以讓你的聊天機器人變得更加 "有人性".更快能在最少的交談中去了解每個使用者的需求.

最後,要開發 IM 的機器人不難,但是你希望它能幫你做些什麼? 要簡單的資料檢索,還是要複雜一點的 ChatOps ? 端看每個開發者的創造力.

最後,列出一些 Bot 相關的 Go 專案:

dangrover.com

NYTimes/openapi2proto: A tool for generating Protobuf v3 schemas and gRPC service definitions from OpenAPI specifications

NYTimes!!! 恩,你沒有看錯.是 1851 年創立的紐約時報. 其實紐約時報發佈了相當多好用的 Golang 專案,不論是 Microservice Kit "gizmo" 或是 Zip 的 middle wrapper "gziphandler" . 讓我又為了這家公司而驚艷!

最近他們發佈了 openapi2proto 可以將 OpenAPI 或是 Swagger 的定義檔轉換成 Protobuf v3 給 GRPC 使用.

github.com

[G0V][Pet Need Me] 透過 Line 來查看動物收容所流浪動物的資料,並且來領養這些動物吧

收容所的狗,每一隻其實都曾經是你我的寶貝.他們透過不同的原因進了收容所,卻因為得不到適當得收容得要走向安樂死的路.

這就是我寫這個 Line 機器人的原因,希望大家有事沒事可以滑滑 Line 看看有沒有你喜歡的朋友,一起帶他回家好嗎?

整個機器人架構主要是透過 Golang 來寫,並且架設在 Heroku 上面.如果你也想要架設自己的 Line 機器人,不仿看看我的另外一篇教學文章

主要功能:

目前僅僅支援顯示台北市流浪動物資料,並且顯示該動物圖片.打入任何文字就會依序顯示.

資料來源:

「臺北市開放認養動物」API存取

evanlin.com

Random Cool Stuff

Commanding a Tesla Model S with the Amazon Echo "透過語音控制你的電動車 Tesla S 駛出車庫"

"Tesla 電動車" 加上 "語音控制" 加上 "AWS" 加上 "Golang" 有沒有搞頭?

沒錯,就是像撒尿牛丸一樣新奇又好玩. 這篇介紹了幾個新的玩具:

  • Amzon Echo : 不僅僅可以當你的喇叭, Echo 更可以讓你使用語音來與世界溝通.不論是訂披薩,買東西,叫 Uber,到現在這個例子:啟動你的車子.
  • AWS Lambda : Amazon 的雲端服務也就是近來大家再提的 Serverless Computing ,似乎不該說是玩具.可能不少讀者上班都得每天追著他跑.
  • Golang : 程式設計師的好工具,剛成立滿六年的 Golang 已經是不少網路服務的主要構成語言.(大家一起來玩)
  • Tesla S : 男人的大玩具,特斯拉的 S 款電動車.

這一篇文章透過一個非正式的 Tesla API 來控制車子的行動.並且透過 Amazon Echo 與相關的 AWS Lambda 溝通後來呼叫 Golang Tesla API,並且透過該 API 來跟自己的 Tesla S 車款溝通.並且讓車子自己開出車庫.

不少朋友表示: 是說寫個 Open Source 有必要那麼炫富嗎? XDDD

@kkdai 分享。

medium.com


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

Viewing all 109 articles
Browse latest View live


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