這是什麼?

程式週記主要內容如下:

Gihub project 介紹:

  • 主要會貼一些github,但是會盡量寫上一些有用的評語(或是我容易想到的關鍵詞)幫助以後查詢

網路文章心得:

  • 會寫些心得,強迫自己閱讀.

“程式週記”並且定期週期性更新.

本週摘要

明天(2016/01/16)就要舉行台灣的總統與立委選舉,大家別忘記投票.

下週要有Google Golang Gala也就是Golang的分散式駭客松.也就是可以在全世界各地舉行駭客松.這次希望能來的及寫完一些點子也來試試看. 大家有興趣也來參加看看..

本週工作大部分都在看網路文章,還有玩一下Golang本身buildin的net UDP相關操作,希望能準備好一些東西下週參加比賽.

Go

Gopher Gala

  • 01/22~01/24就要開始distributed hackathon,可以在任何地方參加.大家一起來參加.唯一的限制就是必須要使用Golang
Difference Erlang and Golang concurrency
  • 有人詢問關於Erlang與Golang在Concurrency上面處理的不同,有人就回答如果就Programming Model上來說:
    • Elixir/Erlang 就像是Goroutine/Go.不同的是Goroutine是system thread而Elixir是Main Entity.所以如果你產生了一個Elixir,你會拿到PID.
    • 但是Go特有Channel可以讓不同processese間的溝通更加透明化.
  • 有興趣想要學習Erlang的Go Programmer,可以看這裡 Elixir concepts for Go developers

lukasmartinelli/pipecat: Connect UNIX pipes and message queues

  • 這個套件提供透過UNIX pipes的指令來處理message queues(AMQP).
# Publish sequence of numbers to a job queue.
seq 1 1000 | pipecat publish numbers

# Multiply each number with 10 and store results in a different queue.
pipecat consume numbers --autoack | xargs -n 1 expr 10 '*' | pipecat publish results

# Aggregate the results and calculate the sum
pipecat consume results --autoack --non-blocking \
  | python -cu 'import sys; print(sum(map(int, sys.stdin)))'

Writing AWS Lambda Functions in Go

  • AWS Lambda是Amazone 開放的一個Service可以讓用戶上傳自己的程式或是服務.讓該程式會在Scale的時候自動執行.
  • 那麼想要在AWS Lambda上使用Go? 雖然官方還沒有開放正式的方式來使用.這篇文章透過cross compiling的方式來將Go編譯成Linux Library的方式來透過node.JS或是Python來使用.

CSharp

####

網路文章

【 雜湊函式生命週期表 】

  • 紅色表示已糟破解,橘色表示已找到嚴重弱點,黃色表示已找到輕微的弱點,只有綠色是可接受的。所以實務上現在還能用的只剩下 SHA-2 及 SHA-3,其他諸如 MD5、SHA-1 都陣亡了。 (from ANT FB)
  • 2004有大量的破解MD5是因為有大陸學者王小雲教授發現MD5破解法

架构师(2016年1月)

  • 本期提到很有趣的是CAPTCHA與圖像辨識的演變.這個主題蠻有趣的而且很多詳細的介紹都有提到.

A few thoughts on the role of software architects

  • 一篇2008的舊文章,由微軟的Platform Group的Director撰寫的.如果你想當Software Architect裡面有許多至理名言.
  • 主要是提到(0)適時的授權讓底下的人發揮(1)千萬不要微觀管理(2)測試很難評估效用,但是他是無價的(3)親自下來寫code(4)瞭解自身的缺點(5)任何架構都是為了客戶,不是為了你自己(6)遇到錯誤,承認他並且快速修復它.

程序员的黄金时代:下載軟體的時代眼淚

  • 網路螞蟻,快播,迅雷,網際快車與暴風影音你有用過幾個?文章中敘述這些檔案續傳與加速軟體都是大眾拿來作為毛片(也就是A片)的下載軟體. 不過每一家的背後技術其實都相當的深厚,不論是多點續傳,線上觀看,哈希碼分享都是相當先進的技術.但是迅雷扶正而快速的集資上市,暴風影音更是股王,而快播的開發者堅持做原本的部分持續進步,但是卻落得被政府”嚴打”下被判刑的人. 這些時代的眼淚,可以好好的看看這篇文章.

The Easy Way To Learn Hard Stuff: 簡單地學習困難的事物

  • 這篇介紹了如何去學習一個困難的事物(範例拿Django舉例),這邊列出一個方法可以讓你更容易上手.以下依序介紹:
    1. 先使用它:
      • 這邊提到,摒棄難懂的spec/RFC,建議你先開始使用它.不論是從簡單的sample code,hello world或是一些tutorial開始.開始去建立一些東西.隨著一些使用,你慢慢會體會到一些系統的架構,一些基本的原理..
    2. 解決你的困惑:
      • 隨著使用它,你逐漸會遇到一些不瞭解與困惑的地方.當你開始遇到困惑與阻礙的時候,試著去解決他並且了解相關的原理.
    3. 建立一些東西:
      • 這時候tutorial再也無法吸引你了,你可以開始建立一些你的應用或是你想要使用這個來建立的服務.或是是一些更進階的應用.
  • 就是這麼簡單.開始學習新事物吧..

有聲書/影片心得

TED 中英字幕: 怎麼尋找你熱愛的工作?

  • 如何尋找你熱愛的工作,講者提出一個Living your Legend的裡面並且建議以下的步驟:
    • 瞭解你得長處:
      • 你是全世界唯一能夠真正瞭解你自己的人.認真地去瞭解自己得長處與缺點.
    • 制定你人生的價值(先後順序):
      • 你必須要整理對於你而言最重要的是什麼?家人?健康?事業?財富? 這樣的整理有助於你可以更專注的去追求你人生想要的事物,不會失去了焦點.
    • 透過經驗來反省與思考:
      • 別讓每一個失敗變得沒有意義.必須要思考你哪裡做錯,哪裡沒有做好.也別忘記去記錄從每個人身上學習的部分.
    • 定義你人生的”成功”:
      • 透過自己得長處與經驗並且追求人生的價值途中,定義一個清楚的成功.
  • 此外,講者也建議你必須要選對你周遭的人:選擇能讓你成長的朋友,遠離帶給你負面的朋友.因為周遭的人會不斷地刺激你的努力,帶給你正面的影響,讓你了解成功不是遙不可及.
  • 最後,甘地的這番話相當激勵人心:
First they ignore you, 
then they laugh at you, 
then they fight you, 
then you win.
 - Mahatma Gandhi
  • Youtube: Google Developer - Getting started with Brillo & Weave:
    • 重點整理:
      1. Weave是protocol 介於手機,雲端跟裝置,Brillo 是相容於Android 的IoT OS
      2. 所有可以使用Android的設備都可以使用Brillo,不過都需要註冊Google Account,Weave也是依據Google雲端相關服務.
      3. 最重要的是 Brillo/Weave 公開是下一季,相容裝置是年底 整段影片有點長,建議跳著看slide跟最後的Q&A
    • 看來…繼續來看看CoAP跟IoTivity…

IT公論#186-「越来越不觉得 2016 年是虚拟现实元年了。」

  • 這一期沒有其他來賓,主要討論2015年底發生的一些事情.
  • 恥辱柱: 就是大公司們控訴被電信服務商的流量綁架,也就是使用某些電信商來瀏覽網站,第一個到達的不是該網站,而是電信商希望你看的廣告.(這是哪招?不過台灣免費WiFi也有類似狀況).
  • 本集主要討論一些CES的新產品,不論是VR的 Oculus Rift或是聯想的筆電.一些新產品的想法.
  • 也有討論到最近很熱門的Netflix開放了138國(包含台灣)
  • 當然也有提到快播審訊,我在網路文章裡面也有提到.

投影片心得

簡單易懂的 OAuth 2.0 by Yu-Cheng Chuang

  • 相當清楚而詳細介紹OAuth2你該了解的流程,資料的走向與資料格式.除了會使用之外,我們需要更加了解之中的一些小細節.

網站介紹

“The evolution of massive-scale data processing”

  • 介紹各種Big Data處理的幾個方案: Map Reduce, Hadoop, Flume, Storm, Spark… 速度與使用語言與效能比較.

一個可以讓你比對JSON資料的網站

  • 丟上變動前與變動後的JSON資料,透過生動的圖形來瞭解哪些有變動.

Ubiquity Dev Summit 2016

  • 2016/01/11~2016/01/12在美國舊金山舉辦的Ubiquity Dev Summit是Google針對IoT與一些行動的研發專案開的研討會.有不少關於Beacon Platform或是IoT (Brillo與Weave)的介紹.
  • 全部影片可以在Youtube: Google Developer找到

本週專案

這邊會寫一些我的Project 52的成果.

week30: UDP client/server to get Public and Private IP and Port for hole punching

先寫好抓取網路資訊的服務,下週應該就要準備參加比賽的題目.想整合MQTT + CoAP做個東西(client/server) 不知道做不做得完…. 趕緊來偷做…

這個專案可以幫你抓取網路資料包含ipv4, ipv6 port, network mask,透過與一部外在server的連接你可以抓取到external ipv4/port資訊.


Evan

Attitude is everything