程式設計週記[2017/03/17]: 想要學習一件技術最好的方式,就是先去報名分享的研討會(誤)

這是什麼? 程式週記主要內容如下: Gihub project 介紹: 主要會貼一些github,但是會盡量寫上一些有用的評語(或是我容易想到的關鍵詞)幫助以後查詢 網路文章心得: 會寫些心得,強迫自己閱讀. “程式週記”並且定期週期性更新. 大部分內容在我的twitter都會有,這邊只是將一些簡單的心得與感想註解一下. 本週摘要 最近聽到同事 J 的名言 : “先去報名分享,就會學習到這門新的技術” 挺好的.. 所以我也去報名了一些研討會,於是又欠一堆 slide 要準備.最近加緊在學習 Tensorflow 中. 最後,很久沒有寫小專案了.於是手會癢(剁手) 就跑去刷 HackerRank 的題目(因為裡面有 Go ).很好玩,裡面 easy 的真的太 easy .. 不小心刷到 Hard 的還會要求時間複雜度,真有趣啊. Go Fission: Serverless Functions for Kubernetes fission 是一個透過 Golang 完成的 kubernetes serverless function 的伺服器. 目前 serverless 支援的語言有: dotnet python nodejs php7 Giving dep a try: Using the new Go dependency tool with piladb Dep 已經越來越重要了,甚至被考慮當成官方套件之一。這篇文章透過使用 dep 來開發 piladb 一個堆疊式資料庫。整個流程可以學習使用 dep. 來看看吧。 Go doesn’t support exception, in syntax. Go has many exceptions, in syntax. 覺得 Go 有很多語法限制嗎? 其實他也是有很多語法例外,來看看這篇的介紹,很多沒想過的語法例外。 Linux, Netlink, and Go — Part 1: netlink 這篇文章看了好幾天,終於看完. 透過 #Golang 來介紹 Linux 中與 Kernel 溝通的另外一種方式 “Netlink” 本文的作者原來是在看 Prometheus 的一個工具 node_exporter 的時候發現一個跟 WiFi 的有關的 issue ,看了幾個禮拜後發現是 ioctl 太慢了… 於是就決定要換成 Netlink [科普] Netlink Socket 是一種在透過 kernel 來傳遞訊息的方式,但是跟一般常用的 ioctl 不同的是 Netlink 透過 udp 來傳遞,不需要像 ioctl 一樣需要有透過 response ,所以他的速度比較快. Netlink Socket 優點: 透過 UDP 沒有 ioctl 的 kernel round trip time 可以一次發給同一個 group...
繼續閱讀

程式設計週記[2017/03/03]: 到新加坡出差,努力學習 Tensorflow

這是什麼? 程式週記主要內容如下: Gihub project 介紹: 主要會貼一些github,但是會盡量寫上一些有用的評語(或是我容易想到的關鍵詞)幫助以後查詢 網路文章心得: 會寫些心得,強迫自己閱讀. “程式週記”並且定期週期性更新. 大部分內容在我的twitter都會有,這邊只是將一些簡單的心得與感想註解一下. 本週摘要 本週很榮幸地收到邀請到新加坡去參加 Machine Learning Expert Day 並且跟來自世界的其他學習 Machine Learning 的人一起討論.看到世界各國的人熱心的在社群裡指導著人們學習 Machine Learning 與 Deep Learning 就讓人感受到他們的熱情. Go Flogo - A Golang-powered Open Source IoT Integration Framework (Gophercon) 今年有一個廠商 [GoherCon India 2017] 挺有趣的, TIBCO 這家公司作出了一個類似 Node-RED 但是完全使用 Go 改寫的 IOT 平台 “Flogo” 這一篇官方部落格有 demo 並且指導如何跟 Flogo 來對接.. IDE 用的是 LiteIDE Github 在這裡 第三届GopherChina大会 GopherChina 2017 的報名網頁,講者很不錯. 除了大家熟知的 Francesc and Dave Cheaney 還有很多大陸的 Gopher .挺值得報名的 lucas-clemente/quic-go: A QUIC implementation in pure go QUIC 全名是 (Quick UDP Internet Connection) 是 Google 基於 UDP 上面建置的傳輸協定,一開始只有在 Chrome 上面有,並且要透過 chromium 專案才能編譯的出來(並不好準備編譯環境) . 現在不需要那麼痛苦了.. 因為全部都使用 Go 做出來了,你可以全程在 Go 裡面編譯並且試試看 QUIC 這個傳輸協定. rook/rook: Open, Cloud Native, and Universal Distributed Storage https://rook.io Rook 是一個倡導是 Cloud Native 開發概念的儲存工具,開發概念完全基於 ceph (一個大型儲存伺服軟體) . 當然完全都是透過 Go Python Android/JAVA/NODE.JS Docker iOS/Swift 其他程式語言 論文收集 Kubernetes Autoscaling in Kubernetes Rule: Auto-Scale node is support by setup min/max node in Kubernetes It will auto-scale node when there...
繼續閱讀

[Tensorflow] Google APAC Machine Learning Expert Day

Tensorflow Dev Summit Recap Keynote: TF Goal: to introduce ML to everyone TF feature: Scalable Performance Widely usage for TF Multiple device for TF TPU ASIC 10x faster TF for everyone TF for form Fried Chicken Nugget Server TensorKart Generative Arts with TensorFlow TV popstar face generator with DCGAN TF for qualcomm’s Hexagon DSP Konpeki https://aucnet-ibs.com/konpeki/2016/09/29/konpeki.html TF 1.0 Feature: Fast Flexible Product-Ready More ML K-means SVM Random Forest XLA What is XLA (Accelerated Linear Algebra) JIT Complication JIT Program built at runtime Low-Overhead complication TF-Level Block Diagram Why excited about XLA Server-side speedups XLA’s JIT compilation and specialization Model-shaped benchmark wins up to 60% SyntaxNet from 200us —> 5 us Mobile footprint reduction Cross-compile for AMR, PPC, x86 LSTM model for mobile: 2.6 MB —> 600 KB (4x reduction) XLA’s high-leve optimizer Caveats: Not all Ops compile Not everything is faster JIT : Improvement lot in GPU But still WIP...
繼續閱讀

程式設計週記[2017/02/24]: GopherCon India 2017 眾星雲集

這是什麼? 程式週記主要內容如下: Gihub project 介紹: 主要會貼一些github,但是會盡量寫上一些有用的評語(或是我容易想到的關鍵詞)幫助以後查詢 網路文章心得: 會寫些心得,強迫自己閱讀. “程式週記”並且定期週期性更新. 大部分內容在我的twitter都會有,這邊只是將一些簡單的心得與感想註解一下. 本週摘要 下週就是 MWC 2017 公司有參加聚會,並且有兩個攤位. 為了要準備這一連串的攤位展示,同事們忙了很久的產品也可以來展示一下. 這兩週小孩子的身體都不太好,好像也感染給大人.連我都不小心得了重感冒,後來才了解重感冒嚴重的時候,其實就跟喝醉酒一樣啊.整個頭根本一整個暈到個不行. Go 谢孟军:The State of Go | ECUG Con 精粹系列 Beego 的作者分享 The state of Go ,同時他也是 Gopher China 的的創辦人. FiloSottile/HeartbleedA checker (site and tool) for CVE-2014-0160 http://filippo.io/Heartbleed Filippo Valsorda 是一個在 Cloudflare (恩.. 最近很出名的公司 XD) 從事加密工作的,他經常發表很多跟資訊安全與加解密有關的專案. 這是一個透過 Golang 來檢查是否有 Heartbleed 也就是檢查系統是否有 OpenSSL Leak 的套件. You, latency and profiling @ GopherCon India 2017 by Filippo Valsorda Filippo Valsorda 在 GopherCon India 2017 的講題: 如何透過 pprof 針對減少 latency 的方面來提升你的 golang app 效能. 並且針對這個 talk 他臨時還寫了一個小工作 在這裡 GopherCon India 2017 這兩天跟舉辦完的 GopherCon India 2017 可以說是眾星雲集: Francesc Campoy Flores (也有來過台灣的 Francesc 身為 GCP 的 podcast 主持人也是 Golang 的 Advocator) Daniel Whitenack: Go for Data Science 的作者,不斷地倡導使用 Golang 來做 Machine Learning 的作者 Filippo Valsorda: Cloudflare 的加密部門 (話說最近這間公司很紅喔) 他有很多使用 Golang 的資訊安全工具都很方便. Ian Lewis : 另一個 Google Advocate 在台灣算很常看到,因為他都來推廣 Kubernetes 跟 Google Cloud Matthew Campbell: “Microservices in Go” 的作者 (這本書我從 beta...
繼續閱讀

[TIL][Go][System] 閱讀心得: 扛住100亿次请求?我们来试一试

這兩天最紅的 Golang github 大概就是這篇 “扛住100亿次请求?我们来试一试” 裡面主要就是根據 2015 春晚上使用的微信要紅包與發紅包的系統裡面提到 “扛住100亿次请求——如何做一个“有把握”的春晚红包系统?” 其實系統要求很低,有興趣可以玩玩看: Server 端: 這篇文章使用相當低的電腦來接受這樣的壓力測試 Dell R2950, 8 Core, 16G RAM. Client 端: 透過 esxi 來分成 17 台電腦來發送需求 代碼部分並沒有太多複雜的部分,主要是觀念上把所有的需求切割成數個 goroutine 來服務. 主要的代碼可以參考 github 或是最基本的 gobyexample 提供的 non-blocking channel operation 回過頭來,並不是一般人都有機會來試試看 10 billion 的連線機會.不過比較多的問題都會是怎麼我的電腦連幾萬個 (c1000k) 都撐不住了. 可以參考一下作者另外一篇基本文章: “c1000K 實踐報告” 裡面有提到基本系統設定: 由於連線的時候其實系統本地都會開啟一個檔案來寫,所以需要修改文件開啟上限 /etc/security/limits.conf /etc/sysctl.conf TCP/IP 的網路優化,可以修改 net.core.somaxconn net.core.tcp_max_syn_backlog 關於 tcp/ip 在 web connection 這邊有關的可以參考 nginx 的優化指南 有些其他跟 tcp 接收有關的如下: tcp_syncookies tcp_max_tw_buckets tcp_tw_recycle timestamps tcp_tw_reuse tcp_fin_timeout tcp_synack_retries tcp_keepalive_time tcp_keepalive_intvl tcp_keepalive_probes 其實一路上要優化的部分還有很多,找時間慢慢紀錄一下. 參考鏈結: http://marcio.io/2015/07/handling-1-million-requests-per-minute-with-golang/ http://www.cnblogs.com/ghj1976/p/3763866.html http://www.csdn.net/article/2013-05-16/2815317-The-Secret-to-10M-Concurrent-Connections http://c10m.robertgraham.com/p/manifesto.html http://blog.golang.org/qihoo https://github.com/gopherchina/docs/blob/master/zh-CN/slides/1-5%20Go%20%E8%AF%AD%E8%A8%80%E6%9E%84%E5%BB%BA%E9%AB%98%E5%B9%B6%E5%8F%91%E5%88%86%E5%B8%83%E5%BC%8F%E7%B3%BB%E7%BB%9F%E5%AE%9E%E8%B7%B5.pdf
繼續閱讀

程式設計週記[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...
繼續閱讀