[碼天狗#42] 讓你 Go 程式碼變得更好的工具集 (Tools to Help you Go)

本文刊登於 碼天狗#42 有興趣追蹤相關文章讀者,最快的方式就是訂閱碼天狗 . 文章鏈結 https://serifandsemaphore.io/tools-to-help-you-go-d6f782055ce7#.1iex1ex8l Golang 讓人喜歡的許多原因之一,就是有著許多好用的工具可以讓你在撰寫 Go 的時候更加的輕鬆而方便. 舉個最間單的例子,就是 coding style tool goimport 他可以讓你在存在之後,自動把 coding style 改成 Golang community 所習慣的範例. 當然還有好用到不行的 guru 可以幫助你查詢 caller 與 callee.除了這兩個之外,這一篇有介紹更多的工具: Golint : 可以自動幫你檢查所有程式碼中潛在的語法問題. Gocyclo : 可以幫你計算你程式碼中的循環複雜度(Cyclomatic complexity)避免有過多的迴圈運算. Depscheck : 可以幫你產生相依性的報表,讓你可以思考有多少小套套件是相依其他人的.經過了 NPM 的 LeftPad 事件之後.其實不少人建議如果相依的套件太小,不仿自己寫過來吧. errcheck : 這個套件可以幫你檢查你的程式碼有沒有對於每個錯誤都有相對應的檢查與處理.避免明明有 error 卻沒有檢查的潛在問題. safesql : SQL Injection 是每個人在撰寫後端與資料庫橋接程式的時候最擔心的問題.這個工具可以幫你檢查看看有沒有危險的語法存在. 雖然 Golang 社群提供了許多的工具來幫助你,其實 Golang 本身的 Compiler 已經相當的強勢.會幫你檢查出許多潛在的問題.除了這些工具之外,當然相信自己與撰寫單元測試的好習慣都是可以幫助讓你的程式變得更好的不二法門.
繼續閱讀

程式設計週記[2016/05/06]: NBA 季後賽開打好久,今年都還沒好好看完幾場比賽

這是什麼? 程式週記主要內容如下: Gihub project 介紹: 主要會貼一些github,但是會盡量寫上一些有用的評語(或是我容易想到的關鍵詞)幫助以後查詢 網路文章心得: 會寫些心得,強迫自己閱讀. “程式週記”並且定期週期性更新. 大部分內容在我的twitter都會有,這邊只是將一些簡單的心得與感想註解一下. 本週摘要 這個禮拜看了不少有意義的網路文章- “如何在四十歲後繼續從事軟體開發“ ,剩下的時間就拿來做一些有意義的專案.流浪動物領養的 Line 機器人.希望能夠幫助到一些流浪動物. Go Go best practices, six years in 作者分享學習 Golang 六年後(喔!一開始就學) 的一些實際演練上的好範例. hashicorp/raft: Golang implementation of the Raft consensus protocol 其實不少使用 Raft 的套件,不一定都是使用 etcd/raft 可能都是使用這套. A lightweight web toolkit 不少人一直都在詢問有沒有好的 #‎Golang Web toolkit ,這個 goserv 看起來還不錯.剛剛在 05/03 達到 1.0 正式版的 goserv 提供以下的功能: Fast & Lightweight Flexible Routing Centralized Error handling 跟原生 net/http 是相容的 並且可以很快速的架設 File Server,也可以很快速地透過 MongoDB 架設 REST Server 大家可以看看有沒有符合需求 Go and Quasar: a comparison of style and performance Go Channel與 Java Quasar 的執行效率比較. 看起來 Go chennal 還是好上不少. Solving ring-shaped problems with Go’s container/ring 想要解決環狀鏈結的相關問題需要自己實現相關的資料結構嗎? 其實 Golang 本身就有提供 container/ring (鏈結) 可以幫助你解決類似的問題. dgryski/go-tsz: Time series compression algorithm from Facebook’s Gorilla paper 從 Facebook 的 Gorilla 論文中找出的時間序列比對演算法. 值得找時間好好學習. 更多細節在這裡可以看. Go Testing Technique: Testing JSON HTTP Requests The Micro Bot - ChatOps for microservices jsgoecke/tesla: Provides a wrapper around the API to easily query and command a...
繼續閱讀

[G0V][Pet Need Me]透過 Line 來查看動物收容所流浪動物的資料,並且來領養這些動物吧

關於小黃(狗) (圖片摘自: 癡心的小黃狗) 我家以前是開雜貨店的緊鄰著一個傳統市場.祖母與我妹非常喜歡小狗,常常在逛市場的時候就會帶著一隻流浪狗回來說:” 這隻狗一直跟著我,我們就來養他吧” 就這樣,前前後後我家的雜貨店也收養了接近 10 隻狗 (不包括後來生的送人).裡面最讓我記憶的就是小黃這隻小土狗. 他很壞,每個進來我家的人都會被他兇過.不過他一離開家裡面就乖乖的不敢亂叫. 他很黏,不論去哪都要跟.常常小時候要出去坐公車得要先把他綁好好,不然就跟你到公車站台(當然他不敢上車). 那個年代,我們都將他放在店面的旁邊讓他亂跑.他也都很乖的不會亂下客人,並且乖乖的店門口當招牌. 有一天,小黃忽然不見了.我們四處尋找都找不到,就在大概第十天左右得時候.祖母懷疑可能被抓狗隊的人抓走,我們到收容所的時候.他已經嚇到沒有力氣癱坐在那邊.大概就差一兩天就變成十二夜的主角. 他回家之後不知道是不是心理的陰影,就再也不敢亂跑了.只敢乖乖的在家裡面.直到他走了之前. 收容所的狗,每一隻其實都曾經是你我的寶貝.他們透過不同的原因進了收容所,卻因為得不到適當得收容得要走向安樂死的路. 這就是我寫這個 Line 機器人的原因,希望大家有事沒事可以滑滑 Line 看看有沒有你喜歡的朋友,一起帶他回家好嗎? Line Bot - Pet Need Me Github: https://github.com/kkdai/LineBotPetNeedMe 透過 Line 來查看台北市目前有哪些流浪動物需要領養? 請用你的 QR Code 掃描並且加入為好友. 主要功能: 目前僅僅支援顯示台北市流浪動物資料,並且顯示該動物圖片.打入任何自就會依序顯示. 歡迎各位建議任何新的功能. 使用方式: 就掃描上面的 QR Code ,加入好友之後.隨便傳任何文字給他就會回傳一個動物資料給你.你不斷傳,他就會一個個動物給你看. 資料來源: 「臺北市開放認養動物」API存取 致謝 感謝g0v的許多人不斷地提起這個專案,讓我可以注意到並且能夠一起幫忙.
繼續閱讀

[好文共賞] Being A Developer After 40 (如何在四十歲後繼續從事軟體開發)

摘自: https://twitter.com/SciencePorn/status/578075637274955776/photo/1?ref_src=twsrc%5Etfw 我很喜歡這張圖,因為 NERDS (喜歡鑽研知識的人) 生活的滿意度只會隨著年齡越來越高. 關於本文 這是一篇好文章,所以我決定將他整理一些重點出來希望能做一些簡單的導讀. 也順便把自己的心得寫出來. 全文 全部文章在這裡 https://goo.gl/ZuglAs 投影片 導讀: TL;DR 這是一個 42 歲的開發者所寫經驗分享文章.並且列出一些他 18 年多身為軟體開發者的經驗談.許多部分看完後都會希望自己當時就能夠了解,所以很推薦不論是新手或是老手都要好好閱讀這一篇文章. 故事很長,一切從 1997 年開始講起.那是一個令人懷念的年代 (FF7 發售,微軟入股蘋果,鐵達尼號上映),那是作者第一年身為軟體開發者的年份. 當時他的第一份工作是從事 ASP 並且使用 EditPlus 在微軟的平台上面.十八年過去,作者一共做過六份工作其中被炒魷魚兩次,出過兩本書,從事過不少演講. 他整理了他的一些心得,希望年輕的開發者(或是有志將軟體開發作為終生志業的人)一些建議,其中條列如下: 1. Forget The Hype (忘記各種程式語言與架構的炒作與熱潮) 不少的新的語言與技術來來去去,作者不是要你不要去學習新事物.而是不要因為有太多的新事物而恐慌或是自我放棄.持續鑽研你目前在學習的,並且可以每年挑一些你有興趣的項目深入了解. [反觀我自己]: 各種後端與前端語言來來去去,我將我的時間學習了 Python (會持續) , Ruby, Scala (會持續) 與 Golang (會持續).但是透過使用 Golang 可以有更多的時間去了解系統架構與直接面對問題,讓寫程式變得更有趣. 2. Choose Your Galaxy Wisely (慎選你的星系) 為了維持原文,我還是使用星系這個字.這邊指的是你學習跟從事的技術要慎選.舉例而言微軟星系(泛指: .Net, C# ….) 或是 Apple 星系 (Objective C++ , Swift …) .慎選你喜歡的星系,因為那會影響你未來的發展. [反觀我自己]: 過去十年主要針對微軟星系,目前主要就是後端的 Ubuntu 星系 ,各種後端程式語言都是我目前主要針對的.當然還有 Docker 相關技術. 3. Learn About Software History (了解各種軟體的歷史) 作者認為如果你喜歡一種程式語言,一種架構你就需要好好的了解他的由來與故事. [反觀我自己]: 比如說:我喜歡 Golang ,我就應該要了解以下的一些問題: Golang 是誰發明的? Ans: 由 Google 內部的三位大神 Robert Griesemer,Ken Thompson( C 語言的共同發明者) 與 Rob Pike ( UTF-8 的共同發明者).在 2007年於 Google 內部共同起草發明. 他主要解決什麼問題? 為何以前做不到? Ans: 根據第一份 Golang Talk 原因為: Go fast! Make programming fun again. 世界在變,但是系統語言卻已經十年沒變. 系統語言往往編譯過久 為何以前做不到: (在舊的程式語言上做不到) 新增函式庫不是一個正確的方向. 需要從新思考整個架構來開發新的程式語言. 目前這個技術的最新狀況如何? Ans: Golang 目前是 1.6.2 (2016/05/03) ,並且支援 HTTP2 並且可以透過 gomobile 在手機上也可以使用相關套件. 4. Keep on Learning (持續學習!!) 不論你喜歡哪些新的技術或是新的程式語言.你都應該持續的學習.裡面並且建議: 每年學習一個新的程式語言. 每年讀六本書. (作者推薦 Peopleware , The Psychology...
繼續閱讀

程式設計週記[2016/04/29]: Silicon Valley 第三季上了!!

這是什麼? 程式週記主要內容如下: Gihub project 介紹: 主要會貼一些github,但是會盡量寫上一些有用的評語(或是我容易想到的關鍵詞)幫助以後查詢 網路文章心得: 會寫些心得,強迫自己閱讀. “程式週記”並且定期週期性更新. 大部分內容在我的twitter都會有,這邊只是將一些簡單的心得與感想註解一下. 本週摘要 雖然第一天就把本週的專案(Golang Line Bot 建置在 Heroku) 寫好了,但是其他時間都在玩自然語言的引擎 Language Understanding Intelligent Service (LUIS) .也稍微想了一下到底需要 Bot 來做些什麼事情. Go HOWTO: CROSS-COMPILE A GO APP FOR WINDOWS FROM LINUX 原本 Go 要做 cross-compile 其實不難,但是如果在 Go 有使用到 C 的部分 ,可能就要參考一下這一篇文章. Replicating SQLite using the Raft consensus protocol 將原先的 SQLite 透過 Raft Consensus 的演算法轉身一變成為具有etcd能力的 RDB. 找尋Golang Libs 的地方 分門別類可以找,根據你想找的類別來看看. Convert pictures to ascii art use golang 將圖形轉換成ASCII,應該可以貼在 PTT? XD Building the simplest Go static analysis tool Line Bot 官方 Go SDK 蠻方便的,可以很輕易的傳送圖片跟訊息.不過寫法實在有一點像是 Java XDDD http://dave.cheney.net/2016/04/27/dont-just-check-errors-handle-them-gracefully DFC 認為除了只是簡單的檢查 error 之外,你更需要的應該是要根據 error 的不同好好的處理他,衍伸閱讀: Errors are values A slides collection for Go Conference 2016 Spring Announcing Apex Software Inc 大神 TJ Holowaychuk 離開 Node.JS 之後轉陣營到了 Go之後的創業作 - Apex 裡面也同時開源了不少的 Go 的套件. Python Android/JAVA/NODE.JS Docker iOS/Swift 網站文章 Bots won’t replace apps. Better apps will replace apps. 這裡有中文版 (Bot不会取代app,更好的app才会) 基本上作者就是覺得,不論 Bot 多麼的具有智慧,跟 Bot 對話就像是 以前時代的 DOS Console 一樣,需要不斷地下指令.但是 App 就像是後來出的 Windows...
繼續閱讀

[Golang][教學] 在 Heroku 建立你自己的 LINE 機器人 (LINE Bot API)[更新: 2020/05/07]

更新: 由於 GitHub.com/line/line-bot-go/line-bot 底層更新,相關 vendor 也更新了. 前提 LINE 推出了機器人 API ,並且透過(幾乎不審核) 的方式來開放機器人的功能. 大家可以來試試看. 如何建立自己的 LINE Bot 機器人 1. 先去 LINE 官方網站申請機器人帳號 (LINE Bot ) 請先確認有在 LINE Developer Console 開啟帳號 然後建立一個 Messaging API Channel 在 “Basic Setting” 頁面,取得 Channel Secret 在 “Messaging API” 頁面,去申請 Channel Access Token 在 “Basic Setting” 頁面,將 LINE 官方帳號管理介面打開 到回覆設定的選項中,選擇啟動 “webhook” 2. Deploy LINE Bot template 記得到 https://github.com/kkdai/LineBotTemplate 然後點選下方的 Deploy 按鈕,將基本的程式碼 Deploy 到你的 heroku 之中. 輸入剛剛取得的 Channel Access Token跟 Channel Secret 。 請記住你設定的 Heroku App ID ,稍後會使用到。 3. 回到 LINE Bot Dashboard 設定基本資料 到你的 “Basic account information” 來設定,以下一些資料需要填好: Callback URL: https://{YOUR_HEROKU_SERVER_ID}.herokuapp.com/callback 好了… 加入你的機器人.開始跟他講話吧. 這份程式碼是最簡單的範例,設定好之後他只會重複你打的文字.更多的功能會放在另外一份. 影片教學 可以根據以下影片的教學來看如何在五分鐘之內部署自己的 LINE Bot 想要修改代碼嗎?參考以下的影片教學吧 還有任何問題? 在這裡留下你的問題,或是在 github 上面開啟 issue 詢問 參考鏈結: Golang (heroku) で LINE Bot 作ってみる LINE BOT をとりあえずタダで Heroku で動かす 阿美語萌典 BOT
繼續閱讀