2019/08/19

如何在 AppVeyor 建置 golang 的 repository

最近因為工作關係開始學習 golang
同時也要練習寫 golang 的 unit test
所以想起了之前寫過兩篇文章
這篇文章就記錄一下怎麼用 AppVeyor 建置 golang 的 repository 吧

其實比想像中的簡單
一開始也是從 NEW PROJECT 的按鈕
把你用 golang 寫的 repository 加進來

AppVeyor 主畫面 [截圖自www.appveyor.com]

然後 AppVeyor 的官網文件有教你怎麼寫 yaml 來 build golang repository
照抄就可以了

# appveyor.yml
build: off

clone_folder: c:\gopath\src\github.com\$username\$project

environment:
  GOPATH: c:\gopath

stack: go 1.10

before_test:
  - go vet ./...

test_script:
  - go test ./...

這次也是第一次用 AppVeyor 的 yaml 檔
其實比想像中容易很多
而且網頁上的 Settings 裡面
也有 Export YAML 的功能
你可以利用網頁 UI 設定好一些內容後
透過 Export YAML 輸出 appveyor.yml
再放入你自己的 repository 內

Export YAML 畫面 [截圖自www.appveyor.com]

接下來就是測試看看 build 的結果啦

成功的 build 好與執行 unit tests [截圖自www.appveyor.com]

不過 golang 的 unit tests 輸出並非是 AppVeyor 支援的格式
所以我們得透過一個工具 go-junit-report 來做轉換
我查了一下
最後是在我的 appveyor.yml 檔加了兩個部分
一個是 install 的地方先抓下 go-junit-report
接著在執行 unit tests 的地方透過參數把輸出開成 verbose
然後利用 pipe 傳給 go-junit-report
當然最後要用到之前文章學到的
把 report 透過 API 傳到 AppVeyor 上

build: off

clone_folder: c:\gopath\src\github.com\LaurenceCheng\testutils

environment:
  GOPATH: c:\gopath

stack: go 1.12

install:
  - go get -u -v github.com/jstemmer/go-junit-report

before_test:
  - go vet ./...

test_script:
  - go test -v ./... 2>&1 | c:\gopath\bin\go-junit-report > tests_report.xml

on_finish:
- ps: (new-object net.webclient).UploadFile("https://ci.appveyor.com/api/testresults/junit/$($env:APPVEYOR_JOB_ID)", (Resolve-Path .\tests_report.xml))

之後就能成功在 Tests 頁面看到失敗與成功的案例了

unit test 成功與失敗的 report [截圖自www.appveyor.com]


2019/07/17

眼前的黑不是黑,你說的 I 是哪個 i

[蕭煌奇的經典歌曲]

基於這個案例實在太經典了
除了前公司,現在的公司也有遇到過
本來想請前公司的同事幫忙
把我在內部分享的文章轉寄給我,然後重貼在這裡
但是據說該 forum 已經暫停服務
所以乾脆重新再寫一次吧

一個土耳其客戶回報某個功能失效


記得從 log 檔分析
是類似找不到某個 database table 的錯誤
研究了半天發現是大小寫不一致造成的
假設有一張 table 名字叫作 CustomerInfo
在建立 database 時寫成全小寫的 customerinfo
但是在程式裡面使用 SQL statement 時是寫成 CustomerInfo
在英文語系的時候很正常
可是在土耳其語系的時候就不行了
原因是土耳其語有兩個意料之外的字母

大寫字母 小寫字母
Iı
İi

所以 CustomerInfo 與 customerinfo 是不一樣的字母組成

其實字母數都不一樣的匈牙利語


又有一次遇到了類似的問題
也是找不到某個 database table 的錯誤
這次大腦的迴路就響起了警鈴
難道又是跟大小寫有關
假設有個 table 叫做 BasicSet
一樣建立的時候用全小寫
使用的時候寫成了 camel case
原因是匈牙利語中有特殊的字母

大寫字母 小寫字母
Cscs
Dzdz

所以 B-a-s-i-c-S-e-t 跟 b-a-s-i-cs-e-t 根本連字母數都不一樣

結論


就是大小寫使用的時候一定要一致
Windows 不是 case sensitive 的環境
所以導致測試的時候可能會忽略了這一點
這次公司遇到的就與 database 無關
而是在執行指令的時候踩到了這個雷

參考
土耳其语 - Wikipedia
匈牙利语 - Wikipedia

2019/03/19

Scrum Drawing Game by Juggernaut



前言


今天在公司內部上到了 Diro 哥非常推薦的一門課
Scrum Drawing Game [參考: Scrum Drawing Game 1.2 四小時豪華版]
講課的人是發想出這個遊戲的作者 Juggernaut
第一次與賈格的一面之緣是在新竹的敏捷活動
當天也是第一次參與 91 哥的 workshop
非常感謝我待的 Group 特地安排一個專班
請賈格來帶這一個 workshop
即使過去在前公司 VIVOTEK 跑了三年多的 scrum
還是可以從這樣的 workshop 學習到很多東西

客戶想的跟說的跟你認為的永遠不一樣 [圖片來源 : knowyourmeme.com]


產品探索的重要性


因為 Scrum 的精神與流程還算有點經驗
所以敏捷開發與 Scrum 的部分只是再次透過賈格的說明
重新驗證自己的理解有沒有問題
不過倒是對於產品探索本身有了一些新的學習
今天我們不是得分最高的組別
我後來覺得在唯一一次 stakeholder 到團隊來說明需求的時候
有一些地方做得不好以及應該可以做得更好

  1. 團隊說了太多話
  2. 大家可能急著把想做的事情列出來,卻不知不覺說了太多假設的事情。
    例如:客戶列了很多跟隱私有關的需求,我們就以為他一定很重視隱私。
    結果我們先把整個房子對外窗都做單面玻璃,還在大門做了指紋跟虹膜辨識。
    客戶驗收了,但是這項需求的 value 卻是 0... Orz

  3. 團隊應該要只問問題
  4. 回家的路上跟洗澡的時候,我想想,團隊應該只能問問題。
    因為很難得可以直接接觸客戶,應該要放下所有腦補,直接以很多的問題來確認客戶到底在想甚麼。
    甚至應該問客戶最重要最在乎的是甚麼,因為那通常是對方認為對他價值最高的事情。
    所以「聽」跟「問」是很重要的。
    這點也呼應了 91 哥說的,需求是問出來的,以前我們會抓著 PO 把事情問清楚。
    很有趣的,離開了那樣的情境,反而卻忘了要做到一樣的事情。
    看來是還不夠融入自己的靈魂啊 XD

2019/02/01

三六.一十八.回不去的十八歲

好久沒有寫生日感言了
上一篇已經是三年前三十三歲的時候
轉眼間已經到了四捨五入就不惑之年的年紀
不禁令人感嘆時光飛逝

2018 年最大的改變就是換工作



去年離開了從畢業服國防役
一路待了十年的公司晶睿通訊
這大概是目前人生中最大一次的轉變吧
依現況看來離換工作想達成的目的仍有一些落差
但是也因此學習到了很多事情
只能說離開舒適圈還是有其必要性
以前在晶睿學習到的軟實力跟軟體開發的技能
也對我在新公司重新建立 credits 上很有幫助
再次感謝讓我待了十年的這間公司

兩個十八歲的分水嶺



2018 是建中第一百二十周年校慶
當天我還有到學校去拜訪我的國中導師
為什麼不是高中老師?
因為依據現任台大資工系助理教授高中同學大屁股說
現在只剩下英文老師 SM 莎還在教
其他的各科老師都已經退休了
在建中的三年
是第一個十八歲最重要的那段期間
試著在一堆優秀的人中尋找自己的定位
經歷了一場失戀
還有最青春最自由最無拘無束的時光
記得在高中同學維揚的婚禮上
深深感受到曾經有過這群人一起度過高中三年
然後在十八年後仍然能聚在一起是多麼珍貴的情誼
Some things change, but some things never do.

第二個十八年
經歷了大學,出社會工作,成家到生小孩
大概是每四到五年會發現自己有不一樣的轉變
第一階段是學會怎麼跟自己相處
第二階段是學會怎麼發揮自己的社交能力
第三階段是學習怎麼作一個還可以的伴侶跟家長
相信未來還會有更多轉變
希望自己能朝向越來越好的方向繼續努力

依然幼稚的射手座性格


每次我跟著家裡兩個小鬼頭一起幹些蠢事時
老婆總是用很受不了的表情翻著白眼說你三十幾歲了怎麼跟三歲一樣
我想,也許未來會有一個階段是跟內心裡幼稚的那個自己道別吧
在那個時間到來之前
還請我周圍的各位親朋好友多多忍受我這三十六歲的幼稚射手座