December 25th, 2015
某人的寶貝女兒設定檔 (Daughter YAML refer from Ansible)
(pic from: https://twitter.com/chrisnuber/status/679069190377066497)
這是什麼?
程式週記主要內容如下:
- Gihub project 介紹:
- 主要會貼一些github,但是會盡量寫上一些有用的評語(或是我容易想到的關鍵詞)幫助以後查詢
- 網路文章心得:
- 會寫些心得,強迫自己閱讀.
“程式週記”並且定期週期性更新.
本週摘要
Go 出了1.6 beta 1,讓大家在聖誕節感受到HTTP/2的威力.Swift持續在熱頭上,到處都是Swift的討論文章.程式語言的討論第一名也不是開玩笑的.本週開始想一些演算法與現實社會的應用,希望可以把之前寫過的專案來想想有沒有實作可以弄.
iOS/MacOSX
- facebook/AsyncDisplayKit: Smooth asynchronous user interfaces for iOS apps.
- Facebook 出的可以讓你的App順暢的讀取一些遠端(或是比較需要時間的資料).由於是非同步,讀取到資料後會再回頭更新UI.
Python
- 理解python中的装饰器(decorators)
- 介紹什麼是Python decorators與怎麼使用它,可以看看原文.
- An AI That Can Mimic Any Artist”
- 想不到機器學習引擎TensorFlow可以拿來做圖片的濾鏡效果.(內有Python Github)
Go
-
NYTimes/gizmo:A Microservice Toolkit from The New York Times
- gizmo 是什麼? gizmo是一個類似go-kit的微型服務的工具包.這一篇文章有解釋為何紐約時報需要建立自己的microservices的toolkit而不是使用go-kit.
- 稍微解釋一下go-kit,他提供了許多的小工具不論是斷路器(Circuit breaker)還是Rate limiter. 可以幫助你建立與管理Microserivces.
- “PHP7+Swoole比Nginx/Golang性能高75%”
- 測試方式挺受爭議,不過可以看看結果.
- RobotsAndPencils/buford: A push notification delivery engine for the new HTTP/2 APNS service.
- Go 1.6 beta 1 剛放上了 HTTP/2 馬上有人寫出搭配Apple更新的APNS services.
- RobotsAndPencils/marvin: Slack bot written in Go
- 用Go寫出的Slat bot,主要功能是列出Github上面的所有issue跟相關進度.如果用github來做專案管理或是開源專案的一定不要放過.還提供Heroku Deploy.
- ory-am/hydra: Run your own AWS-like identity & access management (IAM) service in less than 2 minutes. Written in Go. Backed by PostgreSQL. Built cloud native.
- 一個套件可以幫助你快速的建置出類似AWS的Identy & Access Services(IAM).資料庫使用PostgresSQL.
- 這是一個遠遠比起AWS IAM更輕量的服務,而且可以快速地部署出去.可以管理帳號與權限控管.對於網路服務提供商(SaaS or API Services provider)有著相當好的切入點.
Java
- GovernmentCommunicationsHeadquarters/Gaffer: A large-scale graph database
- Gaffer是用Java寫出來的大型圖學資料庫(Graph Database),可用來分析不同資料之間的內部關係,相較於圖學處理系統(Graph Processing System),Gaffer特別優化了在特定節點上的資料檢索能力。使用者可以將資料整批上傳或是持續地將資料匯入,這個軟體有能力識別出大批電話記錄中的一組通話者是誰,或針對單一對象進行資料蒐集與分析,也可以透過API來進一步檢索或篩選出所需的資料。(摘自: IThome)
- A-Frame: Building blocks for the
virtual reality web
- Mozilla出的framework,主要針對WebGL跟WebVR的部分.可以讓你的網站在瀏覽器上馬上看到3D效果(當然是指Firefox).
- SECCON 2015 CTF精选:一道400分的Android APK逆向题.
- 學一下如何逆向android.幾個流程快速紀錄一下:
- 拿到APK後,使用dex2jar反組譯
- 如此一來可以看到大部分的source code如果要Hack就必須要製造假的server來傳遞資料.
- 由於溝通有AES加密,這個範例要加上了製造假的AES key
- 學一下如何逆向android.幾個流程快速紀錄一下:
- Youtube: 15 tricks to master Chrome Developer Tools Console
- 前端相關的programming一直是我的罩門,尤其是JS跟jquery.只知道怎麼用卻沒有一個好方式來debug.這一篇教學可以直接使用Chrome Web Console來debug. 果真是前端深似海….
網路文章
- IBM Focused on 3 Major Languages: Java, Node.js and Swift
- Apple將Swift開源之後,就跟IBM合作.讓IBM將Swift使用在商業應用上.這是一個很棒的開始.
- Semantic method naming
- 這一篇主要是探討在method命名上的討論,主要的建議如下.
- 少使用”Get”
- 不要每個都加上”do”
- 當是回傳boolean的時候,不一定要使用
isXXX
或是hasXXX
當命名. - 根據物件來推導出你的method名稱.
- 回過頭來Method跟Function的不同是什麼? Method 是物件(Object)可以執行的方法.而Function不綁訂於任何物件.
- 所以,如果Message物件的Method不要使用
sendMessage
而直接使用send
.
- 不要將命名套用在參數上.
- 個人認為這段值得討論,因為objc 的method很長使用
initWithNib
或是initWithFormat
由於objc第一個參數無法詳細定義名稱.這個可能要討論.
- 個人認為這段值得討論,因為objc 的method很長使用
- 這一篇主要是探討在method命名上的討論,主要的建議如下.
- 推薦每個軟體工程師最具影響力的書籍
- .每本都是經典, 推薦給大家. 也記得要有空拿出來複習一下…
- “为什么有些大公司技术弱爆了?”
- 來自知乎的整理,裡面有著初生之犢與職場老將的對話.充分顯示出軟體工程上理想與現實的天人交戰.
- 在職場工作十多年後,真的能夠瞭解一個在持續出貨與營利的公司是很難有著”完美”的軟體建置.不過並不是代表建置有問題,是因為每一個流程,每一段程式碼都有著他的故事.不論是已經出貨在舊的機器(或是產品)導致無法修改,或是其實有許多過渡性的問題.
- 蠻建議大家看看.. 工作有一定資歷的一定都心有戚戚焉
- Algorithms in the Real World: Host Matching
- 大家都說演算法,但是卻很少在現實生活中會用到.作者透過協辦聚會所衍生出來的遊客住宿問題.(主辦方提供當地願意提供住宿的民眾登記類似沙發衝浪機制,而提供住宿的人可以獲得協會贈與的充氣床墊一個)
- 由於需要住宿的人有他的需求,提供房間的人有他的條件.兩者的配對就成了兩兩配對的問題類似(biclustering).
- 最後作者參考了Edmonds-Karp跟Hopcroft-Karp兩個演算法來解決問題,不過這很可惜的並沒有解釋太多其中的方法論.
- CI 怎樣帶你遠離平庸?
- William Yeh大大的好文,主要是因為他身為Ansible推動者.寫了幾個Role受到官方的推薦.受到許多注目,也收到許多人送來的PR跟issue.要能夠快速檢驗每隔PR的是否會損害程式本身,就是得要透過CI.透過CI可以讓許多PR跨平台的驗證變得更簡單.
有聲書心得
- IT公論: 巴西封禁 WhatsApp 背后的故事
- 這一集還挺有趣的,因為有請到在巴西當地的華人贾儒來講講為何WhatApp在巴西被官方封閉.這段訪談也聽到了巴西本地的WhatApp主要是一般民眾與黑幫在使用,以及巴西官方雖然封閉但是封鎖WhatApp前還是會有官方公告,並且也在政壇掀起波瀾. 這個訪談也能了解一些巴西當地支付與對於網路通訊的一些特例.
- 這集也討論到Apple Pay即將進入China的觀點.當然China已經不缺任何行動支付方案,但是二維條碼的安全性令人質疑(偷刷),但是行動支付所帶來的方便性就相當令人期待,當然台灣Apple Pay還是得等,不過等到行動支付都來了,接下來就是各家行動支付所帶來的優惠與折扣大戰.
網站介紹
這邊會寫一些我的Project 52的成果.
本週專案React-Diff,主要是透過React Element Diff的原理,將他實現在Binary Tree的Diff上面.
React-Diff具有以下特點:
- 支援三種Difference Option (INSERT, MOVE, REMOVE)
- 達到
O(n)
的時間複雜度. - 支援Graphviz繪圖輸出樹狀結構