2016年12月31日 星期六
2016年12月25日 星期日
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++ 史上影響力前五大人物,本書可看性可想而知。
以下就來談談這本書我認為最精華的部份
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 億真是太沒天良,小弟不找幾個人開公司爽賺幾億豈不是太對不起自己?事情真有憨人想的那麼簡單?這邊就來舉幾個過去碰到的例子,讓大家了解一下魔鬼就在細節裡...
如果這樣就能賺錢,那某幸福企業一年做個 7,80 億真是太沒天良,小弟不找幾個人開公司爽賺幾億豈不是太對不起自己?事情真有憨人想的那麼簡單?這邊就來舉幾個過去碰到的例子,讓大家了解一下魔鬼就在細節裡...
2016年11月5日 星期六
你也賈伯斯上身了嗎?
這些年台灣人很愛談創新,不光是企業要創新,政府施政也要創新,彷彿一切沒有創新就沒有價值,你不創新就是造成台灣沒有進步的罪人
乾脆說便秘是因為蹲馬桶的姿勢沒有創新,老婆沒有高潮是因為體位沒有創新好了
這邊就要來公開創新失敗的親身經歷,下次如果你看到某人一副賈伯斯上身的模樣,要你跟他一起改變世界,在掏出血汗錢一頭栽入前,請先回想一下本文的慘痛經驗
乾脆說便秘是因為蹲馬桶的姿勢沒有創新,老婆沒有高潮是因為體位沒有創新好了
這邊就要來公開創新失敗的親身經歷,下次如果你看到某人一副賈伯斯上身的模樣,要你跟他一起改變世界,在掏出血汗錢一頭栽入前,請先回想一下本文的慘痛經驗
2016年10月24日 星期一
C++: Prototype Pattern 應用
以前在幸福企業 M 社時,對流程、產品編碼的管理可說到了走火入魔的程度,還為此建立了專業部門。還記得該部門的女同事在教育訓練中狂電台下負責開發產品的男工程師,這些產品編碼搞得比工程師的程式還複雜,也真是強強強~
很不幸的這些編碼也流竄到產品的程式碼中,當年小弟只能照虎畫貓,最近終於找到一種比較好的作法,相信很多人也被這樣的問題困擾,讓我們繼續往下看。
很不幸的這些編碼也流竄到產品的程式碼中,當年小弟只能照虎畫貓,最近終於找到一種比較好的作法,相信很多人也被這樣的問題困擾,讓我們繼續往下看。
2016年10月19日 星期三
實例研討: 從 C++ 學習 C 高級技巧
很多人聲稱:
- function pointer 是 C 高級技巧
- 學習 C++ 讓我變成更好的 C 程式員。
2016年10月15日 星期六
為何 Google 禁止工程師使用 C++ static object?
網路流傳的 Google C++ Style Guide 裡提到:Google 禁止旗下工程師使用 static object,僅允許使用 static Plain Old Data(ints, chars, floats, pointers),或 POD array/struct。可惜的是文中缺少實際範例指出這樣做的危害,剛好小弟最近踩到這個地雷,來跟大家分享一下心得 :)
2016年10月6日 星期四
為什麼硬體公司軟體做不起來?
最近與一位資深硬體 RD 聊天(有 20 年以上設計經驗),言談之中他不斷跟我強調很多 IPC 廠想入門 SCADA/HMI 軟體,但不知道怎麼入門 blah~blah~
小弟在工控界搞了 7 年 HMI 軟體,3 年 Remote IO,也算略有經驗。現在就從個人角度來分析,為何硬體公司要入門軟體這麼難?
小弟在工控界搞了 7 年 HMI 軟體,3 年 Remote IO,也算略有經驗。現在就從個人角度來分析,為何硬體公司要入門軟體這麼難?
2016年9月21日 星期三
2016年9月18日 星期日
Embedded Linux: 如何使用現成的 C code?
前面的文章開頭提到,FAE 說要盡量使用現成的 C code,但卻沒提到要怎麼做。這裡就來分享一下個人心得(該公司應該聘請小弟當 FAE 才對 XDDD)
2016年9月16日 星期五
Q&A: sleep 與 system call
Hi 大家好,小弟之前有去某一家嵌入式晶片供應商公司上課,令人印象深刻時候有個重點。
-> 不要使用太多sleep(),但是他沒講說為什麼不能使用sleep(),有其他代替方案嗎?
-> 不要使用太多system call(),會需要fork而消耗系統資源,
有專門的C code就優先使用。
有專門的C code就優先使用。
請問先進們針對這兩個問題有什麼特別要注意的地方 or 見解嗎?
因為不是很清楚為什麼要避免使用這樣的情境,謝謝大家。
2016年9月6日 星期二
運用 gprof + graphviz 學習 Open Source (續)
如果您照著前面的文章按圖索驥,您會發現有些情況或某些類型的程式會卡住無法進行下去。比方說如果您按 Ctrl+C 中斷 process,或者是用 kill 殺掉某些 background process, daemon,您會發現目錄下找不到 gmon.out,少了 gmon.out,就無法產生 call graph 與最終的 svg 圖檔。
2016年9月3日 星期六
運用 gprof + graphviz 學習 Open Source
有時我們想了解一個 Open Source 軟體是如何運作的,可能是為了除錯,也可能是想了解心中的一些議題在這個軟體中是如何運作的。舉例來說,如果你正在用 socket 開發軟體,想要知道如何正確使用 socket API,找一個很受歡迎,很多人使用的 Open Source 軟體打開研究,比起只看文檔或書上的範例,抓頭騷耳老半天要來的快速有效。
2016年8月30日 星期二
IT 考古: 什麼是 CGI?
某天有位朋友跟小弟討論起 PHP,因為他的裝置運算能力有限,無法負擔解譯 PHP script 的成本,於是他想出一個方法,把 *.php 丟給 Browser 去解譯,我跟他這樣講不行,Browser 只能解譯 HTML & JavaScript(當然,如果裝了什麼特殊 plug-in 有可能,但這裡指一般情況)。
2016年7月19日 星期二
2016年7月17日 星期日
2016年6月21日 星期二
2016年6月14日 星期二
管理者的遠見
有一天大科學家 Richard Hamming (Hamming 碼發明者,1968 Turing Award 得主) 問他的老闆 Bode:
「為什麼你要當這個部門的頭呢?為什麼你不去當一名大科學家呢?」
「為什麼你要當這個部門的頭呢?為什麼你不去當一名大科學家呢?」
2016年6月5日 星期日
書評: Wireshark 網路分析就這麼簡單
大部分講 TCP/IP 的書有如字典,啃起來乾巴巴的沒什麼味道,食之無味棄之可惜。偏偏網路是個很講究實戰的領域,這些偏向學術性的著作往往很難提供工程師需要的即戰力。
2016年5月16日 星期一
書評: 致命 Bug - 軟件缺陷的災難與啟示
新聞報導民國 107 年將把程式設計列為國中必修課程,這個訊息透漏出在不久的將來、不懂軟體的人將成為另一種文盲。不懂軟體的大人也別以為那是小孩子的事,反正以後送補習班就好,事實上軟體已經跟我們的生命財產密不可分
2016年5月2日 星期一
RS232/422/485 Anaylzer DIY PART3
2016年5月1日 星期日
2016年4月30日 星期六
2016年4月29日 星期五
2016年4月28日 星期四
2016年4月26日 星期二
2016年4月25日 星期一
2016年4月24日 星期日
RS232/422/485 Anaylzer DIY PART2
1. Embedded Lua to C/C++
最後小弟選擇了 Lua,因為他本來就是被設計成嵌入其他應用程式,而且 100% ANSI C 無雜質不需要安裝其他有得沒得,我們的開發工具就定調為 C/C++ mix Lua。順帶一提,在 RTOS 界知名度極高的 WindRiver 最近新推出的 IoT 平台也支援了 Lua(WindRiver 現為 Intel 子公司)。
2016年4月22日 星期五
RS232/422/485 Anaylzer DIY PART1
動機
工作上常常需要分析 RS232/422/485 通訊,為了除錯或是了解通訊協議。幾經思索下,發現最好的方式就是在一個正常通訊的線路上觀察通訊行為,然而通訊的兩端不一定是 PC,所以不一定有機會安裝 sniffer 之類的軟體,再說盡量不要介入通訊的實際過程以免影響通訊行為。這時候用硬體的方式是最穩當的,以 RS232 為例:
2016年4月21日 星期四
JavaScript Note: prototype 更新釋疑
最常跟小弟交流的網友,大部分來自工控界。其實小弟也作過一陣子時下流行的「全棧工程師(Full Stack Developer)」,寫過 PHP + MySQL + jQuery + Google Map API,下面是小弟過去的作品截圖:
2016年4月20日 星期三
2016年4月19日 星期二
書評: 數學教你不犯錯(上)
這是一本「掃盲」的書
怎麼說?比方說,「靠O工程師」裡一堆「工程師」堅持放「乖乖」可以使伺服器不當機,請問這個方法是否具有「統計顯著性(Statistical significance)」能否通過「虛無假設(null hypothesis)」?
2016年4月7日 星期四
debug 的奧秘(2): ISR Debug 方法蒐集
哪種類型程式最難除錯?ISR(Interrupt Service Routine)絕對可以排進前三名
因為 ISR 對 timing 非常要求,程式必須短小精幹,於是即使花了大筆鈔票買 ICE,也很難用傳統設定中斷點、單步執行等方式進行除錯。
但 ISR 又是 firmware 必須面對的一環,沒有他絕大多數的週邊無法正常工作!
妙的是這樣重要的東西,居然很少有書本/網站提到(或許是站長孤陋寡聞,還請各方先進指正),於是站長興起一個念頭,何不把多年來蒐集到的各種 ISR 除錯技巧分享給大家,也算功德一件 :)
因為 ISR 對 timing 非常要求,程式必須短小精幹,於是即使花了大筆鈔票買 ICE,也很難用傳統設定中斷點、單步執行等方式進行除錯。
但 ISR 又是 firmware 必須面對的一環,沒有他絕大多數的週邊無法正常工作!
妙的是這樣重要的東西,居然很少有書本/網站提到(或許是站長孤陋寡聞,還請各方先進指正),於是站長興起一個念頭,何不把多年來蒐集到的各種 ISR 除錯技巧分享給大家,也算功德一件 :)
2016年3月29日 星期二
2016年3月9日 星期三
2016年2月14日 星期日
2016年2月12日 星期五
師父: 一本工程師必讀的書
對於已經出社會一陣子的工程師來說,最困難的不是技術,而是這間公司是否值得投注所有的心力?
過去的作法是到各處有名的宮廟求神問卜,希望超自然力量來改善自己的工作運。
忘掉那種不科學的作法吧(如果對你有效,請跳過這篇文章),畢竟義和團已經幫忙證明了效果實在不怎麼樣。
過去的作法是到各處有名的宮廟求神問卜,希望超自然力量來改善自己的工作運。
忘掉那種不科學的作法吧(如果對你有效,請跳過這篇文章),畢竟義和團已經幫忙證明了效果實在不怎麼樣。
2016年2月3日 星期三
淺談 Maker 運動與文化
2016/02/12 update
Maker (自造者) 運動大概是近幾年最夯的活動了,這讓很多老人大惑不解(3D 印表機?又慢精密度又差)。
甚至很多人覺得這只是高級嗜好而已(從 Maker Faire 參訪的民眾不少都是家長帶小孩可知)。
以下是小弟的見解...
Maker (自造者) 運動大概是近幾年最夯的活動了,這讓很多老人大惑不解(3D 印表機?又慢精密度又差)。
甚至很多人覺得這只是高級嗜好而已(從 Maker Faire 參訪的民眾不少都是家長帶小孩可知)。
以下是小弟的見解...
2016年1月21日 星期四
2016年1月16日 星期六
2016年1月11日 星期一
C++: 善用 PIMPL 技巧
PIMPL (Pointer to Implementation ) 技巧已經出現十幾年了,可是小弟的職業生涯中卻很少看到有人使用,決定來寫篇文章推廣一下。這個手法可以解決/改善 C++ coding 常碰到的 2 大問題:
- class 增加 private/protected member,使用此 class 的相關 .cpp(s) 需要重新編譯
- 定義衝突與跨平台編譯問題
2016年1月3日 星期日
From C++ Builder to Qt > From TThread to QThread
C++ Builder: TThread
C++ Builder(簡稱 BCB)是十幾年前頗流行的 Windows C++ IDE,現在大概只剩站長這種老人記得。早年若是不肯花苦工去學 MFC 又堅持要用 C++,那剩下的選擇就只有它了。BCB 易學難精,一開始覺得很容易上手,但直到需求增加、專案規模變大變複雜,馬上就會碰到「撞牆期」,multi-threading 就是一例。
訂閱:
文章 (Atom)