程式設計週記[2017/02/17]: 情人節最幸福的就是跟家人一起

這是什麼? 程式週記主要內容如下: Gihub project 介紹: 主要會貼一些github,但是會盡量寫上一些有用的評語(或是我容易想到的關鍵詞)幫助以後查詢 網路文章心得: 會寫些心得,強迫自己閱讀. “程式週記”並且定期週期性更新. 大部分內容在我的twitter都會有,這邊只是將一些簡單的心得與感想註解一下. 本週摘要 情人節左右似乎是雲端大廠的新產品發表會,先有 Google 的 Cloud Spanner 又有 HTTPS LB ,之後 AWS 又出了 Amazon EBS . 更別說深度學習最重要的平台(之一) Tensorflow 也在 02/16 正式發表了 1.0 的版本. 情人節最幸福的大概就是跟老婆(這輩子情人)跟女兒(相傳是上輩子情人) 一起度過了. Go muesli/beehive: A flexible event and agent system with lots of bees 透過 Golang 實作類似 IFTTT 的東西. Top 10 Most Imported Golang Packages — Some Insights 有人分析了某個禮拜中最常被 imported 的 Golang 套件。 選出了十大套件,裡面有不少都是測試與 logging 用的。大家可以看看那些套件你們有沒有用過。 Building a Performant API using Go and Cassandra 使用 Golang 來建置高效能可以跟 Cassandra 互動的 API 很基礎的教學。 想學學怎麼透過 Golang 存取 Cassandra 並且從頭開始的教學文章可以看看這篇。 Exploring shared objects in Go C 裡面使用 dynamic loading 是很平常的事情,但是在 Golang 裡面要怎麼用呢? 這篇文章詳細的介紹,並且有稍微比較與 C 語言不同的地方。 vim-go: New tool “GoAddTag” vim-go 出了一個更好的工具,就是 GoAddTags 可以幫你直接在資料內加上 Structure Tag (json, xml, bson) 可以很快速地增加,減少或是更改內容. 再也不會不小心打錯 structure tag 了 Python Android/JAVA/NODE.JS/Scala Docker Kubernetes Highly Available Kubernetes Clusters [Inside JD.com’s Shift to Kubernetes from OpenStack ](http://blog.kubernetes.io/2017/02/inside-jd-com-shift-to-kubernetes-from-openstack.html) JD.com 分享他們從 OpenStack 轉換到 K8S 的經驗,主要原因是: [TIL] How to to setup GPU experimental tag with...
繼續閱讀

[Coursera] Illinois: Cloud Computing Concept Part 1 : Week 4

課程鏈結: 這裡 學習鏈結: Week 1-2 Week 3 Week4 Week5 Mini Project (Gossip Protocol) 課程內容: 這裡先簡單的介紹整系列的課程內容,希望能讓大家了解這個課程想做什麼. 這整堂課主要是圍繞著 Cloud Computing 經常會使用到的技術與相關的概念. 整堂課其實只有一個程式語言作業: 使用 C++ 寫 Gossip Protocol 雖然課程裡面程式語言的作業不多,但是整體上的內容還算不少. 除了有談到一些雲端技術的基本概念: Map Reduce Multicasting and Gossip Protocol P2P Protocol and System K/V DB, NOSQL, and Cassandra (畢竟都談了 Gossip) Consensus Algorithm - Paxos, FLP Proof 其實課程內容很有料,也可以學到很多的東西. 前提: 總算到了第四個禮拜了,本週的內容相當的充實.主要就是討論 Cassandra, HBase 之外,就是討論 Cloud Computing 裡面關於時間順序的問題. 時間的對應對於 Cloud Computing 一直都是一個很難解的問題,因為多個主機間的時間必定不相同.如何確保訊息間的因果關係 (Causal) 關係是不變的,這裡介紹了兩個方式: Leslie Lamport 的 Lamport Timestamps 還有 Vector Timestamps . 看完這個,也能了解為何 Leslie Lamport 會為了解決 timestamps 的問題造就他寫出 Paxos 了. Week4 - Key-Value Stores, Time, and Ordering Cassandra Replica Strategy (備份的策略) Simple Strategy: 就是簡單地透過 Partition 來在同個地方備份多份資料. 這邊有兩種方式: Random Partition: 類似 Chord 的 Hashing (Consistent Hashing Ring) ByteOrderedPartitioner: 直接給予一個範圍的來做切割 Network Topology Strategy: 如果你的 Cassandra 是跨多個 DC(Data Center) 的話,你就必須要參考這樣的備份方式. 可能是一個資料中心 (DC) 有 2~3 份的備份. NetworkTopologyStrategy: 會不斷的尋找 replica 直到不同 rack 為止. 舉例: Clockwise N1 ~ N6. N1, N2 in Rack1. N3 N4 in Rack2.. N5, N6 in Rack 3. 如果第一個 Replica...
繼續閱讀

程式設計週記[2017/02/10]: 雞年要開始努力了

這是什麼? 程式週記主要內容如下: Gihub project 介紹: 主要會貼一些github,但是會盡量寫上一些有用的評語(或是我容易想到的關鍵詞)幫助以後查詢 網路文章心得: 會寫些心得,強迫自己閱讀. “程式週記”並且定期週期性更新. 大部分內容在我的twitter都會有,這邊只是將一些簡單的心得與感想註解一下. 本週摘要 過年的時候帶了家人去峇里島旅遊,事隔上次全家人出國也過了二十年了.家人永遠都是最重要的. Go travisjeffery/jocko: Kafka implemented in Golang with built-in coordination (No ZK dep, single binary install) 透過 Golang 將 Kafka 做出類似的功能.不需要依賴 ZooKeeper 並且是 single binary. Go vs. Swift: The Languages of The Modern Tech Giants 一份文件比對 Swift 與 Golang 在各個方面的比較. My Go Resolutions for 2017 Golang 大神 Russ Cox 把他 2017 的目標訂立出來,有不少的項目,其中有一個就是 Package Management.令人期待 golang/dep: Go dependency tool golang/dep Google 官方的 #golang dependency tool ,會不會之後整合進去呢?可以好好觀察看看 講解 #Golang 的 selectors ,淺顯易懂 講解 Golang 的 selectors ,淺顯易懂 Python Android/JAVA/NODE.JS/Scala Docker Kubernetes iOS/Swift 其他程式語言 論文收集 網站文章 [若渴計畫] Studying Concurrency 關於 concurrency 的學習整理文章,很值得好好深讀. RethinkDB: why we failed RethinkDB 在去年的十月宣布要關閉,那時候就說會找個時間來把失敗的原因檢討一下. 現在這份檢討報告出來了,來看看身為 DBAAS (Database As A Service) 公司創業失敗的檢討報告. Machine Learning CS565500 Large-Scale Machine Learning 清大課程學 Machine Learning 聽說老師也太有型了,講中文的課程,使用 python https://cloud.google.com/blog/big-data/2017/01/learn-tensorflow-and-deep-learning-without-a-phd 用一系列的課程來教導你如何使用 Tensorflow 就算你不是 Data Scientist 的 Phd. Google Data Engineer 的認證: Google Certified Professional (Beta) GCP 認證的 Data Engineer arxiv: Outrageously Large Neural Networks: The...
繼續閱讀

程式設計週記[2017/01/20]: 我也只有毅力這個優點

這是什麼? 程式週記主要內容如下: Gihub project 介紹: 主要會貼一些github,但是會盡量寫上一些有用的評語(或是我容易想到的關鍵詞)幫助以後查詢 網路文章心得: 會寫些心得,強迫自己閱讀. “程式週記”並且定期週期性更新. 大部分內容在我的twitter都會有,這邊只是將一些簡單的心得與感想註解一下. 本週摘要 本週是認真做事週,可以好好的把許多事情規劃並且處理一下.也更有時間可以把過去一些東西拿回來學學. 把 MOOC 繳費開始要學習,並且也要認真學習看一些機器學習的論文,看不懂就可以跟強者同事們討論看看. Go xtaci/kcptun: A Simple UDP Tunnel Based On KCP kcptun 是一個透過 KCP (A Fast and Reliable ARQ Protocol) 來達成的 tunnel 的方式. 會注意到這個專案是因為以前的公司曾經為了 firewall penetration 而使用 UDT ( http://udt.sourceforge.net/ ) .但是 UDT 這個專案已經多年沒人維護,並且支援的程式語言相當的少 (C++) 要跟其他語言來結合就很麻煩. 快速整理: 在做 firewall penetration 由於封包特性,不使用 ICE protocol 下,最簡單方式就是將 TCP 封包改成 UDP 來做到資料傳遞到 stub. 但是 UDP 又沒有 TCP 的相關優點,所以有 UDT 這個將 TCP 的機制做在 UDP protocol 上面的專案. KCP 看起來有不少優點: (https://github.com/skywind3000/kcp) 支援語言比較多 (Go, C#, Lua…) 沒有修改 socket 部分,完全透過演算法來用 (所以封包會大 10~20%) Header file 24 byte include control and data sync 近幾個月都還有在維護 UDT 比較麻煩點: (http://udt.sourceforge.net/) 只有 C++ 一套完整的 UDP 解決方式,但是有不少雷可以踩 Header file 16 byte, separate control and data sync KCP 畢竟是強國人開發,中文文件不少可能是一個優點. 相關鏈結: 帧同步~传输协议 UDP UDT协议-基于UDP的可靠数据传输协议 Ross Cox:My Go Resolutions for 2017 Python Android/JAVA/NODE.JS/Scala Building the TensorFlow android example app on Mac OS 讓 Tensorflow 跑在你的 Android 手機上面直接做 prediction .透過這樣的方式,就算你沒有網路也能讓手機跑已經學習好的機器學習模型. 不過這個範例需要的手機配備還蠻高規的, Docker Kubernetes iOS/Swift 其他程式語言 論文收集 網站文章...
繼續閱讀

[Coursera] Illinois: Cloud Computing Concept Part 1 : Week 3

課程鏈結: 這裡 學習鏈結: Week 1-2 Week 3 Week4 Week5 Mini Project (Gossip Protocol) 課程內容: 這裡先簡單的介紹整系列的課程內容,希望能讓大家了解這個課程想做什麼. 這整堂課主要是圍繞著 Cloud Computing 經常會使用到的技術與相關的概念. 整堂課其實只有一個程式語言作業: 使用 C++ 寫 Gossip Protocol 雖然課程裡面程式語言的作業不多,但是整體上的內容還算不少. 除了有談到一些雲端技術的基本概念: Map Reduce Multicasting and Gossip Protocol P2P Protocol and System K/V DB, NOSQL, and Cassandra (畢竟都談了 Gossip) Consensus Algorithm - Paxos, FLP Proof 其實課程內容很有料,也可以學到很多的東西. 前提: 最近決定要把這堂課學完,於是付錢並且開始從 week3 繼續我的學習進度. Week3 卡住相當久,由於裡面有許多東西需要好好的計算.往往就很難靜得下心來算.加上內容相當充實,介紹了許多種 P2P 軟體的運作方式,不僅僅有 Napster 還有 Bittorent 的運作方式,更有 Gnutella 與具有 Consistent Hashing 架構的 Chord Week3 P2P (Peer-To-Peer) System 這一週主要講到 P2P (Peer To Peer) 不僅僅有提到基本的概論外,也有將各種 P2P 軟體的傳輸方式做一個簡單的整理. Napster 伺服器不存檔案,但是存每個節點的資料與檔案清單.並且也存放節點網路狀況. Server maintain <file, ip_address> tuple How client search: Send key word to server Server search tuple list, return ip list Client ping each node to find transfer rate. Client fetch file from best host. Using TCP Problem: Centralize server Server cannot fixed SPOF No security (plaintext) Gnutella 下一代的 Napster ,主要針對 Napster 集中式伺服器的問題來解決.Client act as server call Servents Gnutella 有五種訊息種類: Query (Search) QueryHit (Reponse for Search) Ping (Hearbit)...
繼續閱讀

程式設計週記[2017/01/13]: 他人看來的成功或失敗都是一時的,只要不認輸都不是失敗

這是什麼? 程式週記主要內容如下: Gihub project 介紹: 主要會貼一些github,但是會盡量寫上一些有用的評語(或是我容易想到的關鍵詞)幫助以後查詢 網路文章心得: 會寫些心得,強迫自己閱讀. “程式週記”並且定期週期性更新. 大部分內容在我的twitter都會有,這邊只是將一些簡單的心得與感想註解一下. 本週摘要 真是一個瘋狂的禮拜,每天都是滿滿的會議.見識了很多特別的人,也了解了許多商場上的策略.很開心能有這樣的機會了解與參與公司在擴張與尋找合作夥伴的機會. 在學習上,也開始能夠參加公司內部 Macine Learning 的讀書會. 希望能花上更多時間來好好學習. Go uber/cherami-server: Distributed, scalable, durable, and highly available message queue system. Uber 將他們的 Task Queue - Cherami 開源. 原本 Uber 是使用 Celery (Python) 作為他們的 task queue . 由於業務的增加,對於 HA 的需求增加,於是用 #Golang 重寫成過, 並且與 Uber 許多好用的套件 TChannel (管 RPC) 與 RingPop (負責 Health Checking 與 Membership ) 結合在一起. 成為一個具有 Distributed, scalable, durable, 跟 highly available 的 task/message queue 系統 說明的部落格在這裡 Goroutine leak Goroutine leak #golang 這篇文章敘述了再使用 goroutine 的時候經常呼叫了卻沒有跑完而造成 memory leak Go 1.8 development stats Golang 二月將要發行的 1.8 目前開發的狀況!! Go 1.8 Performance improvements on ARM (RasPi) 有人在 reddit 上面丟出 #Golang 1.8 針對 RPI (Raspberry Pi) 跟 1.7.4 來比較,平均效能能高出一倍左右. Dataman-Cloud/swan: A Distributed, Highly Available Mesos Scheduler, Inspired by the design of Google Borg Swan 是一個用 Golang 寫出的 mesos 資源管理器套件. 參考了 Borg 裡面的精神. 作者並且在 Reddit 上面寫了兩篇來介紹了如何透過 Golang 來寫另外一套類似 Mesos 的資料管理器,文章不僅僅有介紹了身為”資源管理器”所需要的功能與面向,也介紹了該如何透過 Golang 來實作 Mesos 資料管理器. 主要推廣的 Golang Package...
繼續閱讀