2017 年的春天過年剛結束沒多久的 2/17,在一個天氣很涼爽的早晨,我早上八點就在前往好想的路上。
那一天,天空很藍,雲很白,也因為 Howard 跟我說早上十點之後才有人,那時再來。
還有兩個小時的時間,才開始我的 Training 第一天....
那時的我,已經從學校畢業七年。
學校最後的時光,是用 C 語言做演算法,再使用 Verilog 寫在 FPGA 實現演算法的碩論
在這期間,對於 Verilog 的學習,除了到 CIC 上課學之外,我自己的習慣也是買一本 Verilog HDL 回來 K,所以後來有了一篇心得[心得] verilog code 語法心分享 Sun Apr 17 16:48:37 2011
第一份工作,在光電代工的工廠工作,擔任 EE 的 RD。
主要的工作就是每一年到中國出差做明年即將上市的電視機種,代工的品牌是全球知名的電視機品牌。
除此之外,還有負責一項軟體相關的工作,配合彩色分析議 CA-210 開發 OQC 使用的量測軟體,在每批出貨的電視模組,要抽檢幾台起來檢驗它的亮色度..等。
這個作品做了兩次 (《人月神話》提到的二次系統效應,就是麼回事)
第一代有留程式碼
第二代有作品 blog和程式碼
第一代熟悉標準 C++ 語法,並且亂用框架將想法盡可能的寫成了標準 C++ 。
第二代就將 MFC 這套微軟的古老 C++ 框架,用正確的使用方式與界面設計彙,將軟體再重新打造一次。
這份工作,我做了四年,也是我自學寫程式的開始。
當時我不會寫 C++ ,也沒有人告訴我要怎麼學,所以就照著傳說中的「先學 C,再學 C++ 」的路線走。
一開始,也不知道要買什麼書,只是我覺得買書的錢不可以亂花,所以對於挑書就很注重。(果然買書的錢也是要小心使用的呀),就在 ptt 的 C_Cpp 版的精華區,看到的這一個書單
先買一本 K&R2 的中文本 (C 語言聖經本),從第一個字看到最後一個字。
有記錄的是
2011年3月19日 星期六 K&R2心得//C語言概述 ~ 2011年5月13日 星期五 K&R2心得//小筆記
這之間插播一段,我買書的瘋狂行徑 2011年3月22日 星期二 絕版書~入手!
買了一本 Windows 程式設計,還有它的姊妹作 MFC 篇。
Windows 程式設計 是 C 語言的書,教你用 C 語言呼叫 Win32API
我記得還有一篇 Win32 api看視窗運作 的分享
為了多了解 C 語言的前置處理器,再去看 C 程式設計藝術 (C How To Program) 這本教科書等級的工具書回來 K
之中的前置處理器章節就介紹了很多不常見,但是存在的語法。也算是 K&R 之後才有的吧?(我猜)
看完之後就看 Primer C++ 4 (C++ 語言聖經本)
這期間只有練習書裡的 sample code ,當時並不會 git,所以沒有上傳到 github,而且後來在整理電腦時,也沒有留下來。
文章記錄
[分享] 書籍分享 2011/04/23 18:41:32
[閒聊] C++ Primer 4/e 讀到ch8的心得 Wed May 18 23:13:42 2011
2011年5月29日 星期日 .RAW的Smooth
這個文章應該是基本的語法掌握得差不多了,包含引用都已經改成 C++ style 了。
而學了的語言就要寫一些熟悉的題目,來練練語法。
這是一個不錯的驗證學習的方式哦!
在這,要提醒想學 C++ 的朋友們
要學 C++ 直接學就好了,和 C 語言無關。
「將 C 和 C++ 視為兩種語言,才是正確的認識」
Brad J. Cox 倡導 軟體也應該設計成一個個模組式的軟體IC
-- 物件導向程式設計 從 C 到 C++ 物件導向革命 丁德榮 彰化師大 資訊工程系
老實說,我自學「物件導向」,看了三本書
看完還是沒有很懂,一直到有一天,我試著把 C++ 的 class 當作 Verilog 寫 IC (它是一種用於設計 IC 的硬體描述語言,我的碩論使用這個語言實現某個演算法)
寫一次,我就懂了!體會到「物件導向」是在物件什麼了!
那種神奇的感覺,真的很神奇!
然後就開始領悟物件導向的路
2012年2月20日 星期一 物件導向之回傳this
已經學習了較建立 Class
虛擬函數+動態連結 這個東西,已經算是物件導向的奧義了。
要懂這個,才能了解 Design Pattern 在語言操作上的精巧之處。
由於部門是 EE 部門,而主管都不懂軟體,所以看了這麼多書用了這麼多的技術,還是要報告給主管知道,我到底在做什麼,所以研究了一下怎麼把圖形化程式複雜度,給不懂軟體的人看
這本書讓我在圖形化理解 class 上非常有幫助,使用 sequence diagram 更能理解物件導向風格的程式語言運作。
這一段時間,除了一些語法書之外,也看了影響我很深的經典之作。
在工作離職之前,我與同事分享了如何寫好程式,希望有在寫程式的同事可以一起進步。而沒有辦法分享太多的語言技術細節
2014年6月23日 星期一 C++之可怕,在於它可以反映人心
[心得] 幾本讓我成長很多的書 Sat Sep 20 00:32:49 2014
[心得] 幾本讓我成長很多的書(MFC篇) Sat Sep 20 11:18:48 2014
到軟體公司上班,還是不忘之前工作用到的技術要先把它們整理一下,做個收尾。讓之後遇到類似決定的人,參考看看是不是要踏上相同的路,或者也許我的選書會有幫助
到第二份工作,原本是要學 C# 的,但是因為 C++ team 負責的軟體(用來寫後端) 需要開發一個新的 Server ,臨時找不到人,找來我們 team (前端 team),我看了一下同事們,我最熟 C++ ,不如就我來吧!保證可以最快歸隊!
結果後端 team 炸了!
因為我花了三週除了邊做邊學 ORM、資料庫串接和公司提供的 component,也完成一個完整服務的 API 開發,還把整個 server 的架構重新翻新成 MVC 架構,解決了之前 Server 架構中的種種問題,包含超過 128 個 if-else
會編譯不過、使用無數個 MACRO 的問題......通通在這三週之內解決掉了。(回想起來,真是不可思議)
在這個公司導入各種系統工具,包含 git、bug tracker、jenkins
用於知識管理的 wiki
用 jenkins 實戰 CD/CI
最後,我成為公司產品開發部門的主力後端。
一份四十幾萬行的程式碼,加入了單元測試與 Mock 之後,變成了八十幾萬行。
但是,編譯時間卻大幅降低,從原本的 40 分鐘左右,變成了 15 分鐘左右。
推薦看這一本 C++ API 設計
書中有提到執行效能與編譯效能上的提昇方式
還有許多專為「開 API」討論的議題。
在 CD/CI 的支持之下,將 UnitTest 導入 C++ 後端專案中。
2014年7月26日 星期六 C++單元測試(1) - 下載CppUnit
2015年12月4日 星期五 C++單元測試(11) - OpenCppCoverage可視化單元測試的覆蓋率, Jenkins顯示Report
這段期間,對於敏捷開發法很好奇,就看了一本國內大神的大作笑談軟體工程:敏捷開發法的逆襲,還有他的 blog 相當的營養很有料。
這本書相當的厲害,精準而詳盡的記載了 Scrum 的步驟與注意事項。
而且還有詳盡的介紹 Kanban 方法,因為過去待在工廠的關係,所以完全明白這一套的管理方法在管什麼。
最重要的是了解了 Story,以及程式碼就是文件的觀念,以此為出發點了解敏捷開發如何面對「需求變更」提出更適合的管理方法
整理先前工作的內容,將能分享的技術辦了一場在好想工作室
不過也因為技術不同的關係,這一場沒有人來聽!XDDD
當時還是全台南有在跑社群,並且有在寫 C++ 的其它兩位朋友來捧場。
Cppunit下載、編譯、使用與困難排除 Published on Jan 9, 2016
之後選擇 JavaScript ,其實是這幾年都有參加 MOPCON,看著主流技術的進步與討論
也在工作上,遇見 C# 和 C++ 遇到的非同步問題遲遲無法解決,而主流技術早已解決的問題
總是想著,走在這一條非主流技術,不如換成主流技術,會是較不寂寞的道路
而且,C++ 能運用的就業市場,總覺得是 JavaScript 較大,至少前端的就業市場很好找。
要安全,也有 Rust
要體積小,也有 C 語言
就在這樣對網路技術不熟,並且對 HTML/CSS 很陌生也不知道 JavaScript 為何物的情況,問 Howard
「我過年之後,去你那 Training 可以嗎?」
他說「好哇」
2017/2/17 Training 第一天......
這個在台南發生的故事,才有了後續
鮮蝦挺!
恭喜已經超完美的 chris 正式開賽~ ✧*。٩(ˊᗜˋ*)و✧*。
全面搬家到 github 上的 hexo 囉