2016年12月31日 星期六

書評: 黑殼(Husk)

寫多了冷硬的程式設計與悲慘的職場現實也該換換口味,2016 年最後一天就來寫寫小弟的休閒之一「科幻小說」

2016年12月25日 星期日

LeetCode#8 String to Integer (atoi)

分析

原題連結

這題歷史悠久,早在 30 年前 K&R C 語言 習題裡就出現過了,但小弟 submit n 次才成功。因為這題有個陷阱是解題系統會傳入超過 INT_MAX(2147483647),小於 INT_MIN(-2147483648) 的數值字串,系統希望「參數 > INT_MAX」 時傳回 INT_MAX,「參數 < INT_MIN」時傳回 INT_MIN,如果傻傻的照抄 K&C 習題解答,得到的是 overflow 的結果,當然就被 reject 了。

2016年11月30日 星期三

C++ 沉思錄: 遲來的較大嬰兒奶粉

C++ 進階讀物裡,最有名的大概就是 Scott Meyers 寫的那本 Effective C++,光是前公司辦公室裡大概就有 5、6 本。小弟也翻閱了很多次。

Effective C++ 比較偏向原則性的說明,什麼該做,什麼不該做,什麼做了必死無疑。書中的範例都很片段,總有些讓人意猶未盡。

今天推薦的這本 C++ 沉思錄,改從另外一種角度出發,先從一個很小的雛型開始,逐步添枝加葉,過程中告訴你為什麼要這樣做,會面臨哪些設計決策,最後完成一個完整的範例。

這樣的寫作方式,小弟一讀就上癮了,因為這更貼近程式員的實際工作狀況:「寫出一些 classes,拼湊他們,卡住了,回到上一步...」

作者 Andrew Koenig、 Barbara Moo 是 C++ 元老級人物,後者與 Stanley Lippman 寫了很有名的教科書 C++ Primer(印象中 Moo 為 Lippman  的研究所導師),Andrew Koenig  更是被 Scott Meyers 列為 C++ 史上影響力前五大人物,本書可看性可想而知。

以下就來談談這本書我認為最精華的部份

2016年11月7日 星期一

沒有事情是簡單的

最近很多人認為只要把原有產品隨便改一改,就可以當成 IoT 產品來賣了,但這些產品要不是連網路設定界面都做的 5566,要不就這些人連用 wireshark 看懂 TCP three-way handshake 的能力都不知道有沒有,若不是台灣工程師很好混,要不就是把做產品想的太簡單了!

如果這樣就能賺錢,那某幸福企業一年做個 7,80 億真是太沒天良,小弟不找幾個人開公司爽賺幾億豈不是太對不起自己?事情真有憨人想的那麼簡單?這邊就來舉幾個過去碰到的例子,讓大家了解一下魔鬼就在細節裡...

2016年11月5日 星期六

你也賈伯斯上身了嗎?

這些年台灣人很愛談創新,不光是企業要創新,政府施政也要創新,彷彿一切沒有創新就沒有價值,你不創新就是造成台灣沒有進步的罪人

乾脆說便秘是因為蹲馬桶的姿勢沒有創新,老婆沒有高潮是因為體位沒有創新好了

這邊就要來公開創新失敗的親身經歷,下次如果你看到某人一副賈伯斯上身的模樣,要你跟他一起改變世界,在掏出血汗錢一頭栽入前,請先回想一下本文的慘痛經驗

2016年10月24日 星期一

C++: Prototype Pattern 應用

以前在幸福企業 M 社時,對流程、產品編碼的管理可說到了走火入魔的程度,還為此建立了專業部門。還記得該部門的女同事在教育訓練中狂電台下負責開發產品的男工程師,這些產品編碼搞得比工程師的程式還複雜,也真是強強強~

很不幸的這些編碼也流竄到產品的程式碼中,當年小弟只能照虎畫貓,最近終於找到一種比較好的作法,相信很多人也被這樣的問題困擾,讓我們繼續往下看。

2016年10月19日 星期三

實例研討: 從 C++ 學習 C 高級技巧

很多人聲稱:
  • function pointer 是 C 高級技巧
  • 學習 C++ 讓我變成更好的 C 程式員。
這中間的因果關係,有沒有一個實際案例可以說明?筆者最近研究 libmodbus 發現這是一個極佳案例,很適合用來解釋上面這兩句話。專案規模不大,易於說明,無論你是 C or C++ fans 相信都能從中獲益。