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

CodeTengu Weekly 碼天狗週刊 - Issue 139 他們在 release 的前一天爆炸 - Aug 27th 2018

$
0
0

Hello World

CodeTengu Weekly 碼天狗週刊

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

目前的 curator 陣容:

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

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

@fukuball

8 resources to learn about SOLID design principles

PHP:中級 / Design Pattern:初級

有人曾經問過 Laravel 的作者 Taylor Otwell:如果想成為更棒的 PHP 工程師,你會怎麼建議?

學習出色的 Design Pattern。這不只適用在 PHP。你可以在任何程式語言使用這些 pattern。尤其是 SOLID。把這五個徹底學好,它會把你帶到新的境界,我每次寫 code 幾乎都在想這 5 點。

的確 Design Pattern 的重點心法即是在 SOLID(Single Responsibility Principle、Open Closed Principle、Least Knowledge Principle、 Interface Segregation Principle、Dependency Inversion Principle),每隔一段時間應該都要回頭檢視看看自己是否有將 SOLID 放在心中去寫 code,雖然有時趕產品開發常常會忽略掉而留下技術債,但就從回顧中去勉勵自己多看、多想、多練習。本篇文章羅列了一些平實易讀的資源,分享給大家。

barryvanveen.nl

More code comments

PHP:中級 / Programming:初級

這是作者在 Twitter 上看到一篇討論程式註解的 tweet 之後寫下的文章,重點就是在討論註解這件事,當寫下註解的時候,可以去思考如何用一個概念來說明要註解的內容,如此可能就可以不必寫下註解,例如:

if ($date->hour < 9 || $date->hour > 17) { //Off-hours?
}

可以改成

if ($this->isAnOffHour($date->hour)) {
}

如此不僅不需要註解,甚至程式碼也變得更容易閱讀了。作者基本上贊成這個 tweet,不過他也提出了自己雖然也常遵循這樣的原則,不過卻也還是常寫下程式註解,當然我想這都是不可避免的(不然幹嘛有註解這樣的設計呢?),雖然我們要遵循好的設計原則,但卻也不是就完全不能寫註解,當真的需要寫下註解的時候,還是放心地寫吧!

matthiasnoback.nl

Building a PHP Framework: Part 1 – Why? Seriously, Why?

PHP:中級 / Web Application:中級

這一系列文章作者帶著讀者一步一步搭建一個 Web Framework,或許有人會問:為何要學做一個 Web Framework 呢?直接用現成的就好了啊!

其實在搭建的過程當中可以學習到許多有關 Web Application 的知識及 Design Pattern,這可以讓自己對於 Web Application 的技術的掌握更扎實。像之前被批評的量產炮灰型 XXX Framework 工程師課程所產出的工程師其實就是少了這些基本知識,以至於只能學其一二,不能舉一反三。

個人覺得這一系列文章寫得還蠻淺顯易懂的,雖然還沒完全完成,不過可以期待後續,回想起自己以前也幹過自幹 Framework 的傻事,的確很有成就感也能學到許多,不過要用到 production 還是三思啊!

developmentmatt.com

@johnlinvc

Introduction to Terraform

應該有些人聽過 Terraform,可能也有些人用過。敝公司也正在導入。不過這玩意到底是什麼呢? 簡單來說就是用宣告式的方法來設定雲端系統 (像是 AWS, GCP, Azure 等等)。

好處是整個系統都是用程式碼定義 (Infrastructure as Code) 。並且強制使用不可修改的 instance,讓系統的可重現性大幅提高。可以減少在 staging 會動,到 production 就升天的窘境。在這種伺服器會被關掉重開的情況下,也會讓大家在設計的時候就考慮到高可用性,減少水平擴展的困難度。

terraform.io

Terratest: 雲端系統也能寫 unit test

把雲端的的設定都寫成 Code 了,再來呢?有 Code 的地方就一定會有 Bug,這是無法改變的宿命。抓 Bug 並且讓它不再出現的最好方法就是寫 Test。不過設定要怎麼寫 Test 呢?

Terratest 來拯救咧!

這個 Gruntwork 開發的開源測試工具可以把你的雲端系統整個 deploy 到一個全新的環境,再自動跑我們寫的 test case ,像是 API test, ssh 連線等等。測完之後再自動把整個測試系統砍掉。讓改 infra code 不再心驚膽顫。

github.com

Terragrunt: 把 Terraform 的設定抽到乾 (DRY)

Infra code 寫好測滿之後,再來就要開始一層一層 deploy 出去,先是寫 dev 的設定,再來寫 staging 的設定,再來寫 alpha 的設定,差不多寫到 beta 的設定就崩潰了,連 production 都還沒到。每個環境都有點像,又都有點不像。好一點的只有 scale 不一樣,慘一點的要和一大堆 legacy 奮戰。

Terragrunt 可以幫我們省很多複製貼上的工,讓每個環境都只需要訂參數,沿用一樣的設定,減少複製貼上產生錯誤的機率。也強制降低每個環境間的差異。

github.com

Why Do Keynote Speakers Keep Suggesting That Improving Security Is Possible?

一個娛樂性非常高的 talk。讓我們能夠好好想想在 Hype Driven Development 下對電腦安全造成的影響。

usenix.org

工商服務

iPlayground 2018

想聽 iOS 的最新開發技術?想聽和 Apple 奮戰的血淚談?想尋找新的工作機會?10/20 - 10/21 在台大管理學院舉辦的 iPlayground 2018 讓你三個願望一次滿足。

目前熱烈徵稿售票中。快來參與吧。

kktix.cc

工作機會

Senior Backend Engineer at Swag

必備

  • In-depth knowledge of Python, NodeJS 
  • Experience with Python web frameworks ie. Flask/Django/Tornado 
  • Utilized work queues for background processing 
  • In-depth knowledge of MongoDB and Redis 
  • Excellent understanding of HTTP 
  • Experience developing REST APIs 
  • Designed for modular systems 
  • Cloud environment experience
  • Excellent communication and organizational skills

加分

  • Worked with Python asyncio
  • Experience developing in Go 
  • Event-driven architecture 
  • Experience working with cluster environments and/or containers. ie. Kubernetes, Docker 
  • Development flow utilizing CI/CD 
  • Experience working with distributed systems 
  • Experience working with real-time APIs 

薪資範圍

  • 年薪 100 萬新台幣以上。

github.com


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>