转载

CodeTengu Weekly 碼天狗週刊 - Issue 40 // Do not remove this comment or code will break - A...

Hello World

CodeTengu Weekly 碼天狗週刊

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

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

以下是目前的 curator 陣容:

  • @vinta - I failed the Turing Test - 喜歡科幻小說,最近在讀「平面國」
  • @saiday -Imnotyourson - 捷運飲食推廣委員會
  • @tzangms -Oceanic / 人生海海 - 衝動型購物
  • @fukuball -ImFukuball - 徵 Android 工程師,意者內洽
  • @wancw - 繼續寫 LeetCode 可能會生出一套 Unit Test 框架
  • @adamp33 -看棒球才是正職,副業是前端工程師
  • @mingderwang
  • @kako0507 - 熱愛嘗試新事物的前端工程師
  • @chiahsien -Nelson
  • @hiroshiyui - 非典型司書
  • @uranusjr -Smaller Things - 聽說這是技術週刊,可是我不愛談技術怎麼辦
  • @kkdai -態度萬歲 - 喜歡 Golang 的略懂工程師

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

致力於解決開發者之間的資訊不對稱   CodeTengu Weekly 碼天狗週刊 - Issue 40 // Do not remove this comment or code will break - A...

@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 的特點)

衍伸閱讀:

  • 批評 ACTIVE RECORD 的13個論點:最好用也最危險的 ANTI-PATTERN

martinfowler.com CodeTengu Weekly 碼天狗週刊 - Issue 40 // Do not remove this comment or code will break - A...

Java 8 in Android N Preview

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

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

medium.com CodeTengu Weekly 碼天狗週刊 - Issue 40 // Do not remove this comment or code will break - A...

Valve/fingerprintjs2: Modern & flexible browser fingerprinting library

從本期開始我想介紹一些個人覺得有趣的專案。

(順便清一下自己的 study list)

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

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

github.com CodeTengu Weekly 碼天狗週刊 - Issue 40 // Do not remove this comment or code will break - A...

Head Hunter不會告訴你的事情!

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

作者建議如下:

對 Head Hunter 的認知:

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

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

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

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

延伸閱讀:

  • 不是有期限的合約就是定期契約喔,不要被呼攏了。請看 一年一簽很無聊,懂嗎?那統統叫不定期契約啦!

blogspot.tw CodeTengu Weekly 碼天狗週刊 - Issue 40 // Do not remove this comment or code will break - A...

CodeTengu Weekly 碼天狗週刊 - Issue 40 // Do not remove this comment or code will break - A...

本期 IG - GUNDAMSTAGRAM (@gundamstagram)

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

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

instagram.com CodeTengu Weekly 碼天狗週刊 - Issue 40 // Do not remove this comment or code will break - A...

@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   CodeTengu Weekly 碼天狗週刊 - Issue 40 // Do not remove this comment or code will break - A...

Using 2 factor authentication for SSH

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

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

arm-blog.com CodeTengu Weekly 碼天狗週刊 - Issue 40 // Do not remove this comment or code will break - A...

什麼是 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   CodeTengu Weekly 碼天狗週刊 - Issue 40 // Do not remove this comment or code will break - A...

@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 CodeTengu Weekly 碼天狗週刊 - Issue 40 // Do not remove this comment or code will break - A...

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 CodeTengu Weekly 碼天狗週刊 - Issue 40 // Do not remove this comment or code will break - A...

Functional Reactive Game Programming – RxJS Breakout

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

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

manu.ninja   CodeTengu Weekly 碼天狗週刊 - Issue 40 // Do not remove this comment or code will break - A...

Introducing React Storybook

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

kadira.io CodeTengu Weekly 碼天狗週刊 - Issue 40 // Do not remove this comment or code will break - A...

原文  http://weekly.codetengu.com/issues/40
正文到此结束
Loading...