某人的寶貝女兒設定檔 (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

Python

Go

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
  • 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第一個參數無法詳細定義名稱.這個可能要討論.
  • 推薦每個軟體工程師最具影響力的書籍
    • .每本都是經典, 推薦給大家. 也記得要有空拿出來複習一下…
  • “为什么有些大公司技术弱爆了?”
    • 來自知乎的整理,裡面有著初生之犢與職場老將的對話.充分顯示出軟體工程上理想與現實的天人交戰.
    • 在職場工作十多年後,真的能夠瞭解一個在持續出貨與營利的公司是很難有著”完美”的軟體建置.不過並不是代表建置有問題,是因為每一個流程,每一段程式碼都有著他的故事.不論是已經出貨在舊的機器(或是產品)導致無法修改,或是其實有許多過渡性的問題.
    • 蠻建議大家看看.. 工作有一定資歷的一定都心有戚戚焉
  • Algorithms in the Real World: Host Matching
    • 大家都說演算法,但是卻很少在現實生活中會用到.作者透過協辦聚會所衍生出來的遊客住宿問題.(主辦方提供當地願意提供住宿的民眾登記類似沙發衝浪機制,而提供住宿的人可以獲得協會贈與的充氣床墊一個)
    • 由於需要住宿的人有他的需求,提供房間的人有他的條件.兩者的配對就成了兩兩配對的問題類似(biclustering).
    • 最後作者參考了Edmonds-KarpHopcroft-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具有以下特點:

  1. 支援三種Difference Option (INSERT, MOVE, REMOVE)
  2. 達到O(n)的時間複雜度.
  3. 支援Graphviz繪圖輸出樹狀結構

Evan

Attitude is everything