[TIL] 2016/03/06 Today I learn from (Go/VC)

Golang Program to prints out the visible surface of a go package? Godex is the program to print APIs and package Info. How to use godex go get golang.org/x/tools/cmd/godex How to use godex godex math godex github.com/kkdai/photomgr VC(Visual Studido How To Use RPC Callback Functions IBM KM: RPC Callback Procedures Example
繼續閱讀

程式設計週記[2016/03/04]: 猴年開始:買了一堆電腦原文書,要開始K書

這是什麼? 程式週記主要內容如下: Gihub project 介紹: 主要會貼一些github,但是會盡量寫上一些有用的評語(或是我容易想到的關鍵詞)幫助以後查詢 網路文章心得: 會寫些心得,強迫自己閱讀. “程式週記”並且定期週期性更新. 大部分內容在我的twitter都會有,這邊只是將一些簡單的心得與感想註解一下. 本週摘要 最近有在歐萊禮買了一本電子書,也找了不少有趣的電子書要看.得花更多時間來看,也想花點時間來看Coursera,時間真的要好好想想. 本週專案部分,最近實在花太多時間在看NSQ的內部構造.反而比較少花時間去寫Code.這其中的取捨變得困難不少,可能也跟我了解得不夠紮實有關.這部分要努力學習. Go A complete, reliable, ircd written in Go. 用 go 寫的 ircd xo is a command line tool to generate Go code based on a PostgreSQL, MySQL, SQLite, or Oracle, or Microsoft SQL Server database 只要給SQL的Schema,就可以長出Golang的model Youtube: Comparing Erlang and Go Concurrency 可以參考看看一個session介紹關於Erlang跟Go的Concurrency. licenses lists Go packages dependencies licenses 可以列出所有用到的Go project的License,算是很有用的工具. [Go projects and the BSD license ](http://misfra.me/2016/02/28/go-projects-bsd-license/) 從來沒有仔細思考過Go project 的license,只是簡單的把自己的專案都用MIT.看完才知道其中的關連… One HTTP Request From Stardom: How Alan Shreve Built ngrok Using Go ngrok是一個可以讓你在防火牆內部的Server可以直接被存取的技術,這邊介紹如何透過Go來build ngrok. Python Android/JAVA/NODE.JS Pretty unicode tables for the CLI with Node.JS 可以畫出很漂亮的unicode table在console mode. Docker iOS/Swift 奇点机智,用深度链接让 app 不再孤单 Deep Link 在iOS9獲得了不少的加強功能,而在App的設計上其實Deep Link 已經佔有一定的地位.這邊有談到說一家公司奇点机智如何透過幫忙控制Deep Link來讓App更好而且更多人使用. Swift @ LinkedIn LinkedIn裡面透過Swift開發的經驗,巔峰的時候有50人工程師參與開發.透過Swift開發App最大的瓶頸還是開發機器的能力.灣區日報有很精彩的評論. 網站文章 學術論文解放!將近五萬篇論文可透過Sci-Hub免費下載 當初Aaron Swartz 因從JSTOR 的學術期刊下載約400萬篇文章被停的Sci-Hub復活了.超過五萬篇論文可以下載. Github: January 28th Incident Report 引用: IngramChen from kaif: Github 內部發生了類似 不小心踢掉電源線 這種意外,然後 25% 的 server reboot,reboot 過程中 redis cluster 爛掉,造成 application server 啟動失敗。他們無奈只好先救 redis cluster,直到 redis 救好後,才重啟...
繼續閱讀

Paxos 發明者 Leslie Lamport 的採訪的 Podcast

線上收聽的鏈結 起源: 最近有在聽Podcast的習慣,加上我一直有學習分散式系統的部分(尤其是Paxos跟Raft).於是試著上去iTune來搜尋,竟然有找到Paxos作者Leslie Lamport受訪的podcast. 為何會做Paxos 裡面相當的有趣,除了有講到當初會做Paxos是因為一開始Lamport在做他的Time Clock論文的時候,正個論文的架構是在討論如何避免失敗.但是一個有趣的問題來了,如果真正的遇到失敗要如何去恢復與處理.當初在研究Time Clock也是主要專注在分散式資料庫的方面,但是Lamport發現其實可以適用到任何的分散式系統,於是就慢慢演化成Paxos. Paxos發表經過 就如大家所熟知的,由於Lamport在當時相當喜歡透過哲學的方式來敘述事情.也就是大家所熟知的Paxos議會故事,以至於Paxos論文一出來,大家完全看不懂也就不注意,就這樣被擱置了好幾年(據說十年).根據Lamport說,他認識的人也只有一個人聽得懂Paxos並且有幫助他宣傳,所以他又出了另外一篇廣為人知的Paxos Make Simple 最近的談話”Thinging For Programmer” 後來主持人又跟Lamport提到2014在MSFT Build “Thinking For Programmers的演說.裡面重要的概念就是每個程式設計師應該要先將你要寫的系統在腦中整個思考過,這邊講的思考建議是透過數學的方式來思考,因為這樣是最嚴謹的.透過嚴謹的思考,才能夠將整個系統的瓶頸跟問題找出來並且可以再發現之前來解決. Lamport也提出一個範例,假設你要寫一個排序的程式.如果你沒有仔細思考要用哪種排序的方式而使用了Bubble Sort,不論你使用哪種程式語言,你使用哪種framework,你所建置的系統都不會快.因為他有先天性的限制,侷限了你的最佳速度,而這個是透過程式語言本身無法解決的.所以Lamport建議我們應該要先專注於”How should you do” 而不是 “What should you do”. 這邊提的”How” 代表你要用哪些方式,使用哪些演算法來解決問題. “What”才是你要用哪些語言來實現它. 最後也有提到UML或是透過繪圖方式來思考,不是不好.但是Lamport認為那些方式不容易清楚(precisely)而嚴謹的描述,容易造成混淆的區域.這樣就無法清楚的表達而思考整個系統的來龍去脈. 主持人提到會不會有人數學不好.而改用繪圖來思考? Lamport認為身為程式設計師,要清楚的頭腦來思考是絕對的重要.而透過清楚而精準的表達方式來呈現自己的思考脈絡更是一個程式設計師基本的學習.他很建議使用數學得方式來表達. 心得 想不到Leslie Lamport接受訪問的時候用字遣詞很容易了解.讓我們可以很了解這位大師的整個思考脈絡.這篇採訪實在相當的精彩,不論對於思考問題與解決問題的方法論.都有相當的建議. 相關鏈結 第一版的Paxos Paxos Make Simple Leslie Lamport在2014的MSFT Build “Thinking For Programmers 之前寫的Paxos學習心得
繼續閱讀

[TIL] Migrate MySQL to PostgreSQL in Docker

Run Docker Postgres docker run --name some-postgres -p 5432:5432 -v $PWD/psql-data:/var/lib/postgresql/data -e POSTGRES_PASSWORD=mysecretpassword -d postgres Find docker IP docker inspect <CONTAINER_ID> | grep -w "IPAddress" | awk '{ print $2 }' | head -n 1 | cut -d "," -f1 PSQL commands Check here Useful commands here. \q quit psql \d list all instances \dt list all tables \connect Db_NAME \dl list all databases psql connect to DB psql -U postgres -h <IP> Dump MySQL to SQL first mysqldump --compatible=postgresql --default-character-set=utf8 -r DB.mysql -u root -p DB Migragte from sql -> psql by mysql-postgresql-converter git clone https://github.com/lanyrd/mysql-postgresql-converter cd mysql-postgresql-converter python db_converter.py databasename.mysql databasename.psql Create DB in psql first CREATE DATABASE DB; Refine PSQL remove all “COMMENT ‘KB’” in PSQL remove all default timestamp ‘“0000-00-00 00:00:00”’ modify “mediumint” to int4 About phpPgAdmin Check php path on config /etc/apache2/conf-enabled add one here refer phpmyadmin restart apache2 service apache2 restart However it still...
繼續閱讀

關於Github issue 當作blog的優缺點與感想..

搜集一堆China 技術團隊使用Github issue當作blog 不論是熟知的阿里前端: 還是fouber都有,挺值得follow 來看看有沒有更多更新的… 其實有研究過用 github issue來做blog : TL;DR: 懶得架站就用 github issue,不過記得多一份在md檔案中. 優點: 易使用(不用搞jekyll/hugo),highlight support,高互動(可以跟人討論) 缺點: Google search 找不到 (不少團隊會複製一份到 github 當md來給google search) 備份也是一樣. github issue 無法備份,需要另存檔案 無法透過RSS來訂閱,對於我這種feedly高度用戶很麻煩. 其實像是fouber這樣兩份(一個放issue給討論,一份放檔案github 來搜尋) 也不錯.只是好像就有點太麻煩… 所以除非真的不想搞jekyll/hugo 不然還是乖乖弄blog方便點.
繼續閱讀

程式設計週記[2016/02/26]: 心血來潮整理部落格,一弄又是改Hugo又是修Jekyll

這是什麼? 程式週記主要內容如下: Gihub project 介紹: 主要會貼一些github,但是會盡量寫上一些有用的評語(或是我容易想到的關鍵詞)幫助以後查詢 網路文章心得: 會寫些心得,強迫自己閱讀. “程式週記”並且定期週期性更新. 大部分內容在我的twitter都會有,這邊只是將一些簡單的心得與感想註解一下. 本週摘要 這個禮拜花了太多的時間再弄自己的jekyll blog.本來想migrate到hugo去,但是因為hugo import jekyll有太多的問題(即便已經改了一些)還是有不少部分需要改. 後來還是把jekyll 3.0產生的樣板相關問題修復,也另外換了一個主題來使用. 好像jekyll又可以再戰十年? 本週持續NSQ的學習,先透過上週的Disk queue來改寫之前寫過的PubSub. Go Introduction Go 1.6 Go 1.6剛在02/17正式release,Brad Fitzpatrick馬上在GopherCon India發表了這篇.裡面不僅僅有介紹了Go 1.6的功能也有順便預告了Go 1.7 ~ 1.10的產品規劃.當然也有一些笑話很有趣. PlanB: a distributed HTTP and websocket proxy inspired by Hipache 透過Redis來架設的HTTP websocket proxy,可以拿來好好學習其中的作法與應用方式. Google Cloud Vision API on Golang 在上週Google 總算開放Cloud Vision API給一般人申請使用,這篇文章有講解該怎麼做,當然也有提供他寫好的Golang Package GOPHERCON INDIA 2016 Summary 2016最早開始的Gopher Con 有不少關於Go 1.6的相關議題. nsq的使用與一部份介紹 最近幾週都在學習NSQ,這篇文章有不少的探討從技術層面跟他的設計理念都有提到. Open-Source Phishing Toolkit 網路釣魚的工具給企業做測試與訓練用的. Handling Database Migrations in Go 由gophish網路釣魚的package公司發的DB migration 介紹文.裡面使用的是goose,但是比較多人推薦migrate goose: A database migration tool DB migration tool,可以在無痛的狀況下變更你得資料庫schema.並且查看有無任何問題也可以快速的rollback. A Go library for carefully refactoring critical paths and code. lightweight port from github scientist 精簡版的scientist用在golang上面. gago is a genetic algorithm written in Golang 基因演算法的golang套件,會隨機產生數個解法,評估後挑選最適解法. Building binary executables for Android in Go 在Android系統上面跑go的excution,由於Go 1.6支援x86的Android系統,這篇文章的應用又更多了. HOW WE BUILT UBER ENGINEERING’S HIGHEST QUERY PER SECOND SERVICE USING GO Uber 如何透過Go來打造高效率的查詢系統.不少架構與內容的討論. Python gRPC Practical Tutorial — Magic That Generates Code 這篇主要講解如何使用grpc.很詳細地講解從protobuf開始,到一些簡單的應用. Ruby scientist: A Ruby library for carefully refactoring...
繼續閱讀