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

CodeTengu Weekly 碼天狗週刊 - Issue 100 The net is vast and infinite - Sep 25th 2017

$
0
0

Hello World

CodeTengu Weekly 碼天狗週刊

CodeTengu Weekly 會在 GMT+8 時區的每個禮拜一 AM 10:00 出刊,每期會由三位不同的 curator 負責當期的內容,每個 curator 有各自擅長的領域,如果你在這一期沒有看到自已感興趣的東西,可能下一期就有了。你也可以瀏覽一下前幾期的內容

目前的 curator 陣容:

你也可以關注我們的 FacebookTwitterGitHubOpen Source 專案,有很多 weekly 看不到的內容。有任何建議也歡迎來 Gitter 聊聊。

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

@vinta

Big Data Analysis with Scala and Spark

因為前陣子辭職了(想放個長假吶~),突然多了不少時間,所以決定在打電動之餘,花點時間上幾門 Coursera 的課。然後花了一個禮拜終於完成這門課啦!主題是 Scala 和 Spark,是 Functional Programming in Scala 系列課程的最後一門課(這個系列有一門課的老師就是 Scala 的發明者 Martin Odersky)。之前學東西都習慣看書,這次第一次在 Coursera 完整地上完一門課,老實說是個很棒的體驗啊。尤其是在寫第一個程式作業的時候,上面標註說大概要花 3 小時,結果我寫了一個下午哈哈哈。雖然上手之後,後來的作業其實很快就做完了。但是還是忍不住想抱怨一下:Spark 的 Dataset typed API 寫起來也太麻煩,而且效能還沒有比較好。

題外話,雖然還沒那麼快要開始找工作,不過因為很閒,這陣子新認識了不少工程師同業,交流了很多技術經驗(和業界八卦 XD),感覺挺不錯的啊,所以想說如果各位朋友或公司有興趣,歡迎聯絡我,咱們可以約個時間吃個飯 👍

題外話之二,說到打電動,跟大家分享一下,12 月的時候 PC/PS4/Xbox One 會出「大神 絕景版」,這款遊戲可是 PS2 時代不朽的名作之一啊,如果你還沒有玩過,拜託玩一下。然!後!登登!小島秀夫的傑作之一 Anubis: Z.O.E. 也要重製啦!

coursera.org

Rules of Machine Learning: Best Practices for ML Engineering

不得了啊,這份文件,有在搞機器學習的人,這禮拜讀這篇就夠啦。這份文件的作者是 Google 的 Research Scientist,歸納了 43 條搭建一個 Machine Learning 系統的最佳實踐,而且很多都是從實務和軟體工程角度的經驗總結,這種知識特別寶貴啊。老實說我覺得這也是軟體工程師在這一波 AI 浪潮中可以施力的點,因為任何的機器學習系統或產品,宏觀一點來看,它就是一個軟體工程問題。

Most of the problems you will face are, in fact, engineering problems.

延伸閱讀(RecsysChina 的前輩對這篇文章的評註):

zinkevich.org

Feature Engineering - Getting most out of data for predictive models

這份簡報很豐富,除了幾乎把我前陣子才讀完的 Mastering Feature Engineering 書裡的內容都講完了之外,也提到很多特別的作法。而且看到最後一頁才發現,原來簡報的作者也讀過這本書啊。

是說我這一陣子實際搗鼓了一番 Feature Engineering 之後的感想,特徵工程根本就是手藝活,講求的其實是創造力啊。

延伸閱讀:

slideshare.net

What happens when your application cannot open yet another connection to MySQL

之前工作的時候,要把 Spark 運算完的推薦系統的結果寫回 MySQL 資料庫,結果卻遇到了 ERROR 2003 (HY000): Can't connect to MySQL server on '192.168.x.x' (99) 的錯誤,很多人應該都見過類似的錯誤訊息,不過括號裡的數字可能不一樣。在這個例子中,單看文字的描述很容易讓人誤會是 MySQL server 出了什麼差錯,但是其實關鍵在於最後那個括號裡的 OS error code。這篇文章把造成這個錯誤的前因後果說得非常清楚,值得一讀。

簡單說,用 perror 99 可以查到這個 error code 是 Cannot assign requested address 的意思,原來是因為我在寫 Spark 的時候太放肆,不小心在短時間內開了太多的 connection,把 local 的 port 用完了(需要 TIME_WAIT 冷卻時間),所以沒有辦法分配 port 給新的 MySQL connection。解決的辦法:在程式裡重用 MySQL connection 或是限制一下 concurrent 數,再不然就是修改 net.ipv4.tcp_tw_reuse = 1 系統設定。

忍不住提一下,其實 master/slave 架構的 MySQL 還是很罩啊,當初ㄙㄨㄚˋ地一下在幾分鐘內寫了四十幾億筆資料進去,MySQL 跟沒事一樣。原本還ㄏㄧㄠˊ咖稱想用 Cassandra,結果發現在現階段用 MySQL 就頂得住啦。

延伸閱讀:

percona.com

@saiday

saiday/JonSnow: App Store/Google Play review watcher, deliver new reviews to slack channel

在休刊的這段期間曾經偉大的 LaunchKit 收攤了,也因此當初因為找不到 LaunchKit 在 Google Play 的替代品索性自己搞的 JonSnow 也新增了 App Store 的支援。

本來有用 Review Monitor 的朋友可以參考一下,或也可以自己架開源版本的 LaunchKit

github.com

fatih/vim-go-tutorial: Tutorial for vim-go

我最一開始是用 Atom 裝 go-plus 寫 Go,設定起來真的是快。

但我的工作主要還是寫 iOS 跟 Android,很少有機會用 Atom,容易忘記快速鍵是我個人的問題我坦然接受,只不過 Atom 身為 Electron 陣營的知名代言人,當然也提供了那令人絕望的啟動速度跟大量資源使用。

總之,目前是改用 Go 社群都很推崇的 vim-go,這篇是 vim-go 作者寫的教學,寫得真的好,除了基本的設定,還涵蓋了很多 Go tools 的介紹。

註:升級了 Vim 8,這個版本有官方自帶的 package manager,終於!

github.com

Exploring Background Execution Limits on Android Oreo

Android 8.0 (API level 26) 加入了一個新特性,Background Execution Limits 值得大家注意,限縮 app 背景執行的能力。

這個限制主要是 Service 超過一定時間會被強制關掉、不能再註冊一些系統 Broadcast。

也就是說,target SDK > 26 之後,你不能有把握那些需要花時間的 Service 可以活著把事情做完。 這篇分析了替代的方案的使用情境:

  • Job Scheduler
  • FCM High Priority Notification
  • Foreground Service

至於系統的 Broadcast 我沒在用沒有很熟,但看起來是寫在 Manifest 的 implicit broadcasts 有許多會失效,必須改用動態註冊。

medium.com

Supporting iPhone X

有一台上有 notch、下有 home indicator 的機子要在 11 月上市了,曾幾何時多裝置的 layout 配適也成為 iOS 開發生態的重要部分了。

這篇很完整的介紹了 layout 要調整的地方,該注意的設計。

註:開發者對 iPhone X 的特殊造型分成兩派意見,第一派很有愛的要完美適應 iPhone X、另一派打算當作沒看到這件事 NotchKit

useyourloaf.com

@fukuball

写给妹子的深度学习教程

之前聽了李弘毅老師的 DL 課程,覺得真的是淺顯易懂又生動有趣,上網想再搜搜有沒有更多的線上資源,沒想到胡亂找到了一系列有趣的文章 - 写给妹子的深度学习教程,作者使用對話式的方式、細心的口吻寫下教妹子的深度學習課程,我也好想要有人這麼細心的教我呢!

zhihu.com

@mingderwang

不要猶豫了

yeoman 用煩了嗎,可以試試 saonpm 太慢了嗎,可以改用 yarn

Docker 不再是 buzzword 了,開始進一步使用 Docker Compose 或直接跳 production 等級的 k8sdocker playground,免費的 Docker pools 可以拿來建 Docker Swarmkubernetes playground 免費的 k8s 學習環境,但不知道還能免費用多久。

RESTful 也有點過時,新的 project 開始使用 GraphQL 吧。連 Github API v4 都改用 graphQL,不要猶豫了。

Monolithic 的程式不合時宜了,建議開始研究 Microservices

CodeTengu Weekly

Deprecated Linux networking commands and their replacements

你還在用 ifconfig 跟 netstat 等 Linux 網路指令嗎?iproute2 收集了一些新的指令將用來取代掉他們。例如 ifconfig 將用 ip a 來取代,netstat 將被 ss 所取代。這篇文章做了很詳細的介紹且提供對照表供大家參考。

wordpress.com

Oops: Why DevOps efforts fail

雖然我不是完全贊同他的講法,但分析 DevOps 的失敗原因,的確可以當成我們的借鏡。其實大部分公司都還在摸索中,自動化也可能只做一半,文化也還無法ㄧ下轉變過來,現在應該還不是評估成敗的時候。我反而覺得整個過程中,只要軟體開發流程能更自動化,軟體品質能更提升,工作得更愉快,DevOps 所做的所有努力,都是是值得的。

sdtimes.com

以太坊下一階段硬分叉內容簡介

EIP 是 Ethereum Improvement Proposals 的縮寫。本文章作者 NIC Lin,對以太坊分岔鎖所包含的改進建議項目,做了非常詳細的比對和說明。對 Ethereum 核心代碼有興趣的朋友,應該很喜歡這篇文章。

medium.com

Coding for Kids

寫程式一定要用螢幕嗎?未來真的都只剩機器人,連教小孩寫程式也用 bot 了。在這紀念專輯裡,跟大家介紹一種跟樂高相容的程式機器人叫 gobot。還可以先填寫預購意願問卷喔!

stoneware.tech

@kako0507

JavaScript : The Curious Case of Null >= 0

在 JavaScript 的世界有很多奇特的行爲:

  • null > 0 --> false
  • null == 0 --> false
  • null >= 0 --> true

好奇為什麼會造成這樣的結果的朋友可以翻閱 ECMAScript Spec : The Abstract Relational Comparison Algorithm

campvanilla.com

Coding Tip: Try to Code Without If-statements

這篇文章並不是要教大家不要去使用 if statement ,可以用這樣的模式嘗試 Code as data ,讓 code 更有可讀性外,也能讓程式邏輯在執行時更新。

medium.com

How JavaScript works: inside the V8 engine

JavaScript V8 engine 在 v5.8 以前, Compiler 的運作流程以及最佳化方式:

  • 分為兩種 Compiler - full-codegen (負責較快速的編譯成 machine code) 以及 Crankshaft (JIT compiler , 負責最佳化)
  • 不同的 threads 分別負責編譯執行、最佳化、 profiling 及 GC

文內會依照 V8 的最佳化流程來解說如何寫較佳的程式碼。

sessionstack.com

@hiroshiyui

Is Ruby Too Slow For Web-Scale?

現在講 Web 開發時若提到 Ruby,不同人會有不同的印象,而且幾乎很極端。有些人會說它語法優美,有些人則說它動態特性下的黑魔法殺人一萬,自損三千;有些人說它語法表現能力強、開發效率高,有些人說以它為基礎的某些框架太笨重、以致執行效能低。其中「效能」似乎是 Ruby 的最大一宗罪,如過街老鼠般人人喊打,但是當我們談到「效能」時,我們以為的「效能」是什麼?

這篇文並不全然是為 Ruby (& Rails) 辯解、護航文,其中帶過很多關於「效能」、關於「效能評測的設計」、關於「人對『快慢』的體驗感受」的探討,作者提醒讀者,當您們看了(卻未加深究的)某篇評測文,就想把手上的 Rails 專案砍掉重練,用個號稱更快、更有效率的語言、框架重寫的時候,請先評估這幾點:

  1. 換得的效能有實際意義嗎?
  2. 真的有打對痛處嗎?
  3. 換個陌生的新語言、框架,您們開發起來會更有生產力、更快樂嗎?

speedshop.co

Richard Clayton - Speaking Intelligently about "Java vs Node" Performance

另一篇「效能」文。主要講的觀念是「Java 與 Node 的運作方式不同,請不要用無法公平比較兩者能力的評測方式,斷然給予任一方正面或負面評價」、「對『效能』的計較,在產品開發過程中,並不是至高無上的最優先項目,當效能並非痛點時,還有很多像是『開發效率』等面向值得關注」與前一篇文在觀念上有些重疊之處,針對 Java 與 Node 處理多工的技術探討、掃盲之處,也值得一讀。

silvrback.com

State of the art in deploying Elixir / Phoenix applications

作者處理部署 Elixir / Phoenix 應用的心得,看的出來是歷經很多次踩雷而累積下來的寶貴實務經驗,很值得參考。

hackernoon.com

@uranusjr

The Python You Don’t Know

其實停刊一個月我都在打混怎麼辦,只好用自己的東西填版面趁機自肥。上一期結束後就跑去馬來西亞參加了 PyCon APAC 2017,講了這樣的一個 talk。

大家都說 Python 很簡單很容易學,身為 Python developers 覺得競爭對手到處都是怎麼辦市場要供過於求,需要趕快證明一下自己還是有點優勢,懂一些別人不知道的,你看看 Python 其實還是不簡單啊請給我黃金

「可是這樣大家不就都會了你哪來的優勢。」啊糟糕⋯⋯。

speakerdeck.com

@kkdai

深入討論 Bloom Filter

Bloom Filter 是在許多資料庫裡面與作為資料快速索引的時候,會使用到的資料結構。但是究竟為什麼要使用,還有使用了 Bloom Filter 會有哪些好處與需要取捨的部分。並且為何有些人會使用 Counting Filter?

最近在讀 Quotient Filter 於是乎把 Cuckoo Filter 跟之前的 Bloom Filter 都複習一下.. 順便把整個優缺點稍微整理一下。

evanlin.com

台灣使用 Go 語言的公司

在台灣使用 Go 的公司沒有很多,希望有一篇可以整理有在使用 Go 語言的新創或者是學校,也是希望給想找 Go 語言工作的開發者一些求職方向。

同場加映,如果要貼 Golang 職缺的話,歡迎在這裡張貼喔。

github.com

Golang 二进制文件混淆保护

Go 最大的好處就是沒有太多相依性可以很方便的部屬你的應用程式,但是如果應用程式沒有處理好,就會在 Panic 的時候洩漏你的 call stack。

該如何解決這個問題,這篇文章介紹了可以透過 go build parameter 與一些手法來做一些防範喔。

zhihu.com

@johnlinvc

每分鐘 450 個字的程式開發

這裡的速度不是輸出,而是輸入。芬蘭的一位視障開發者分享了用螢幕閱讀器在每分鐘 450 個單字的速度下讀程式碼的心得。文內有附範例聲音檔,大家可以挑戰看看能聽懂多少。

vincit.fi

iOSDC Japan 2017

上週去參加了日本社群辦的 iOSDC 。有很多有趣的內容,想看投影片的話可以去每個 speaker 的 Twitter 找找。台灣的 iOSDC 也正在籌備中,預計 2018 一月舉辦 。

iosdc.jp

RubyKaigi 2017

上週也去了 2017 年的 RubyKaigi ,是 Ruby 界比較特別的研討會。比起怎麼用 Ruby,更專注於怎麼樣 Ruby 變得更好。去年也有在那分享過在 Erlang 上跑的實驗版 Ruby, ErRuby

rubykaigi.org

研討會的小精靈法則

去了一些國內外的研討會,深深體會到在研討會除了學新東西之外,交新朋友也是很重要的。@ericholscher 提出了很實用的聊天原則,圍成一圈聊天的時候,永遠留一個開口,就像小精靈(Pac-Man) 一樣。這樣可以很明顯的讓其他人知道這邊的討論是歡迎任何人參加的。

ericholscher.com

@drumrick

CodeTengu 第 100 期,前 99 期總回顧!

首期參加 CodeTengu Weekly 就遇到 100 期這樣吉利的數字,自己內心興奮不已。所以就用一篇網誌,說說自己,說說碼天狗週刊。未來在週刊中我主要會分享機器學習以及 Kaggle 相關的文章,希望會有幫助,也歡迎指教。

medium.com

Learning by Hacking 網誌

這是我個人近年來,在機器學習領域,最喜愛的繁中網誌了。不走長篇大論的風格,也是以分享為主,用簡短的摘要說出文章重點,搭配收集好的相關資源。

另一個重點是很跟得上時代,基本上外國研究出來沒多久,只要主題是在他們關注的範圍,很快就發文了。尤其在重要研討會前後,天天都很熱鬧。

data-sci.info

Kaggle 官方網誌 No Free Hunch

提到 Kaggle 相關資源,第一個要推薦的就是官方網誌了。

有參加 Kaggle 經驗的人都知道,由於社群特色以及 Kaggle 官方的鼓勵,從競賽的 Kernels 以及討論區,能夠學到很多東西。其實競賽類型滿常重複的,譬如說房價預測就出現過很多次,廣告點擊的競賽也出現過很多次,圖像方面競賽關於物件的偵測或辨認也是常有,regression 或是 classification 就更多了。

Kaggle 官方網誌會從競賽中挑選出優質的 Kernels,也會定期發表對於優勝選手的採訪,大家可以從中去挖掘過去類似競賽優勝的訪談,相信對參加各種類型的競賽都會有一定的幫助。

kaggle.com

浅析 Hinton 最近提出的 Capsule 计划

zhuanlan.zhihu.com

Hinton 的 Capsule Theory 最早在 Transforming Auto-encoders 這篇論文出現,近半年 Hinton 在多倫多大學、麻省理工學院的演講,也都還會用到這篇論文裡面的圖。 2013 年 Hinton 進了 Google,直到 2014 年在 reddit 的 AMA (ask me anything)系列中依舊表示自己在 Google Brain 主要還是研究 Capsule Theory,還沒有發表的原因是因為,他自己還不滿意。而前一陣子,Andrew Ng 離開百度以後,弄了個 deeplearning.ai,在 Coursera 上面的課程裡,有一部份就是採訪深度學習的大神們,當然其中也包含 Hinton,Hinton 在採訪中也談到了 Capsule,還表示投稿被拒絕過。而最近顯然有了好消息,Research@Google 的網頁已經刊登 Hinton 關於 Capsule Theory 最新的論文:「Dynamic Routing between Capsules」即將在 NIPS2017 發表。

最近不知道是因為論文被接受了,還是因為 Hinton 被採訪了,還是因為李飛飛教授聲援了。這件事在中國機器學習界整個火了,各大網路科技媒體都有人在提,由於機器之心的文章破圖了,所以推薦了這篇。

這篇前段先講講 NN 的發展史,從 Gradient Descent 講到 RBM,再到 unsupervised learning,再回頭說 NN 近年來研究的停滯以及 BP 的優勢。中段開始解釋 Capsule Theory 相關知識,拿 CNN 不足的地方對比 Capsule 的概念。

zhihu.com

@wancw

Serverless Event Sourcing at Nordstrom

雖然 KKTV 的 API 踩過一些 AWS API Gateway + Lambda 的坑,最後選擇改回自己管理 server;但當時和同事們也想過:放棄慣用的架構、調整為 event driven 或許會更適合。

這篇文章給了這種方式的基礎情境範例和初期會遇到的挑戰,滿適合做為嘗試這種新架構時的開胃菜。

acloud.guru

[SCRUM] 那些年我們一起搞的回顧會議

近來開始覺得 Scrum 是心法大於招式的開發流程方法,每個團隊都會有各自的招式變化。

先不論到底是不是「正規的」Scrum,能夠趨向敏捷、持續改進才是真正要緊的。有時參考別的團隊的作法來截長補短也是蠻有幫助的。

blogspot.tw


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


Viewing all articles
Browse latest Browse all 109

Trending Articles



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