golang crawler demo

最近有個面試的回家作業,做了一個簡單的爬蟲

單純只有爬一下,家樂福,還有大潤發的網站,一家是用 HTML 不斷的翻頁下去,爬完休息
另一家,直接找他的 json api ,直接抓 api 的結果就可以了

目前整個 code base 挑出來的毛病,或是說,用一個微小的專案,來看軟體開發這件事,需要具備的東西
也是一個不錯的自我成長方式,可以一步一步看,目前用 golang 來實作一些,像是後端服務的一些處理模式

會寫出來,主要是也許會對剛好有機會碰到,這些問題的人有幫助

code reference https://github.com/terryh/honestman

我先列一些一般來說用 golang 來寫一些像是 api 服務的問題,或是比較像是軟體的架構模式來討論

1) crawler (爬蟲) 的 go routine 模式

2) 要用 ORM 來抽象化 SQL 的操作好,還是不用 ORM 來操作

3) 你需要用 framework 嗎?

4) simple test case and benchmark ?


由於,這其實是一個可大可小的題目,但是,我還是來簡單說一下,目前,一般用 golang 做 web service ,或是給手遊用的
後端服務介面,或是手機應用程式的 api 介面,大概會用哪一些函式庫

如果,開發團隊人員不多,對整個 http/s 或是網路服務認識不多,會選,既有的框架
目前,比較受歡迎的有

https://github.com/gin-gonic/gin

https://github.com/astaxie/beego

https://github.com/labstack/echo

我個人比較推薦是相容於 golang http library http.HandlerFunc 的 framework

如果不要框架,選擇更多,但是,這種人必須比較專業,也要更了解要處理的問題,還有 golang standard library ,因為,要有能力可以判斷,
像大家建議的 COMPOSITION 方式 https://www.youtube.com/watch?v=194blNHDdd0

自己組建比較多,就是選用一個 http router dispacher
這個則是有很多的參考,或是選擇 https://github.com/julienschmidt/go-http-routing-benchmark

剩下的大概就是組建自己的服務了

需要 HTML, JSON render 的,或是需要驗證身份,或是希望引用 ORM 來達到和 DB 層的抽象化,這些每一種都一個選擇,伴
隨著也都是取捨的問題

未完待續,接下來,上面列出的點,會做作小筆記,也希望對需要的人有幫助 ;-)

牧田 Makita 充電式吸塵器

一直對 Dyson 一台充電的吸塵器在台灣可以賣到兩萬塊,感覺不可思議 再怎麼說,他就是用吸力來完成任務,真的不覺得,這樣的東西,放大數十倍 它的功能,還就是要取代掃把,他們本質價值很低的呀

我的舊機型 Makita CL107FDSY

Ansible

更新,這一篇,是一段時間前寫的,居然發現,有沒發的文
現在小弟,也跳過 ansible 了,改用容器化的方案 (真不專情)

Ansible 簡單的系統部屬工具,是用 Python 撰寫的佈署工具,有點像是 puppet , chef , salt 的工具

主要原理,就是透過 ssh 的方式,算是非常單純簡單的方式,比起 puppet 或是 chef 來說


這一篇,我想筆記的是對 Google Cloud Engine 上面 VM 的佈署,安裝就用 python 的 pip 就可以了,因為對 GCE 的支援,是透過 libcloud 的套件做的
所以,你除了要安裝 ansible 外,也是裝 libcloud ,用 pip 的話,安裝像是這樣,看你的系統需不要加 sudo ,因為,我是在 Mac 上面,整個 /usr/local
都是我在用,所以我不用加,實際依自己的系統情形


一年的奇幻漂流故事

這裡分享一位很好朋友的親身經歷

我們以下就稱這為故事主角為 “阿狗” 阿狗的英文名字叫 Shit 好了

在去年的大約農曆過年的時候,阿狗有接到,一個非常特別的邀約,正值,那時候
待的公司,剛好把美國的分公司結束,北京,香港,台北三地分公司的矛盾,這又是另一個很長的故事了,

離開的時候,阿狗大約年薪算是一般外商的水準,也算是還可以,養家活口應該夠,阿狗算是不太加班的
(做軟體,千萬要記得,你上位的人,只看得到你的工作時間的地方,看不出,你具體貢獻的地方,一定要離開)

算是一般軟體業裡面一個開發 team 裡面的小 leader
(就是整個 team 人都閃光了,剩下,有小孩要養,一時走不了的,常常就變成 leader 了)

阿狗基本的工作,就是除了日常開發外,多了一些,要跟高層交待的會議,或是跟高層,及夥伴,
一起走 scrum 的流程,基本上,就是跟著某PM 或是某主管,或是某位 scrum master 走他自己的流程
或是跟隨長官 scrum 獨到的見解,另外就是照顧夥伴,看有沒有心裡受委屈,或是夥伴,薪資實在不到位,比其他嘴砲的
開發或是 PM 少的可憐,每次到評估的時候,可以代為伸張一下正義,寫加薪報告,再跟 HR 鬥法一下
最後才是解決技術的問題,或是
趕一下進度之類的事情
(一不小心,故事鋪梗太長)

阿狗就因為這個機會,誤打誤撞,進入博弈軟體的開發世界
畢竟,還是受不了金錢的誘惑,當時,在台灣的老闆跟阿狗打包票,說了大約是當時外商兩倍的薪水,外加分紅,
一週,一開始兩天remote , 其他三天來公司,幫忙帶同事,上軌道後
不管你要幾天 remote,在幾杯迷湯灌下肚後,阿狗果然還是太嫩,就答應要一起去打拼了

接下來,就是密集,又密集的開發,強度,保持在高峰,當時他加入的時間點,已經有一定的市場佔有率,
落在他們這一個新成立團隊的難題,變成,先頂營運高峰的一些問題,說得難聽一點,就是善後的工作,
寫的程式就是要調效能,或是改善流程,當初開發的老闆,沒有想到,流量會這麼大,所以很多東西都是先有再說,
反正,沒有人看得懂,底層

也就是這樣大的流量,幾乎,每一位股東,都買了超跑,還有一位主要的股東,撞壞了一輛瑪莎拉蒂,壞的賣了,再買一輛

也是阿狗第一次見識到什麼是紙醉金迷的日子~~~~

新加坡自由行

聖陶沙,魚尾獅

難得被老婆拖出門,不能在家裡當阿宅,要出門長知識

不去則已 一去驚人

不再給民進黨機會

很久以前我為了不讓國民黨有傷害台灣的機會,
我選擇民進黨

今後為了不讓民進黨有傷害勞工的機會
不能在選民進黨

不知道還有沒有好的選擇

福隆海水浴場之福容飯店

今天騎到龍門,福隆海水浴場,66公里,真的是山也 BOT 海也 BOT

整個海水浴場,門口說是現在由福容飯店管理,門票 40 元,幹恁公務人員,海岸線,是你們隨便賣的喔



海邊的福容飯店,幹恁飯店,蓋到快比海水浴場大







核四 OUT 單車 IN



金沙彎,沙子都快沒了

蝙蝠洞

今天有老婆陪騎,散散步,只走了 21 公里

侯硐

來回也是 22 公里左右,沒什麼長進
前天走海岸線,東北風強大,今天溜溜山徑,秋冬往山裡騎還不錯






台灣 number one,只要是我們的國旗,不管長成什麼樣子,我都支持