[219] 《大機車報》第七期已出刊

《大山姆的機機車車™》電子報第七期已經上線。本期人物「落腮T」 Jason Turner 近年來為各大 C++ Conference 常客,除了共同主持 CppCast 外,還有每週一集的 C++ Weekly 錄影,在圈內頗為活躍。 電子報第七期漏掉了他整理好的《C++ Best Practices》,除了有 Coding Style 外,還有一些撰寫 C++ 程式碼的最佳實務,是不錯的學習教材。該書可於 GitHub 免費下載。 每月兩期,著重在 C++ 與軟體開發議題的《大山姆的機機車車》電子報。資訊充滿,垃圾沒有,歡迎訂閱: http://thecpp.news…

[215] 感謝分享《大機車報》到我不愛的批踢踢

前同事捎來信息,說《大機車報》被分享到 PTT CandCPP 版。上禮拜陸續有人訂閱,三天多了近四十人,莫非來自於此? 仔細看下面的「推」(這麼說沒錯吧?),發現許多「外行人」說幹話,又手癢了。鄉民急著發表意見,也不管對或不對,推就是了。我的忠告:這種現象批踢踢比臉書還嚴重,當一個資訊來源的雜訊遠多於資訊本身,戒了吧。還沒碰的,能閃多遠就閃多遠。 近年C++的資源真的是越來越少 17也才幾本新書內容不深而且一堆錯誤 其實,英文的 C++ 資源相當多,新標準的資源相對較少,但隨著時間推移,會有越來越多學習資源冒出來。換個角度想,如果自己就是資源的提供者,不也是美事一椿?C++ Reference 資源豐富,最新的標準一個不漏,主動學習新功能然後分享學習心得,咱圈子不就又多一個學習資源。 我給開發人員的另一個忠告:「成為專業程式設計師的第零步:學好英文」 在可見的未來,英文的資源一定比中文要多,…

[213] 該死的範例碼之爭,卷二

卷一說明範例碼之所以被稱為範例碼是有原因的。然後「複製貼上」範例碼到專案用的傢伙,首犯警告,再犯永不錄用。 再舉個例子。底下影片旨在說明 std::thread 的基本用法。影片裡用了全域變數來控制執行緒結束的時機。實務上,全域變數會讓程式碼變得難改、難測,應盡量避免。那麼以這支主要目的是介紹 std::thread 的影片來提問: 你會因為用了全域變數就說這是作者平常的撰碼習慣嗎? 你會因此認定作者頻道上所有影片的示例都是糟糕的嗎? 你會因為用了全域變數而認定該影片是錯誤示範嗎? 上述提問,我的回答都是:不會。你呢? 其實這篇原稿有許多沉不住氣的反諷最後改掉了。沉不住氣的原因是看了一些令人不知該哭還是笑的留言。一起來瞧瞧。 後山小門處有大便一坨 這佛寺裡肯定大便滿窩 有人說: 不是 legacy code 問題,而是 多層 if then else, 連一個 example 都寫這樣,可想他們內部必然是這種 Style... 這麼肯定?以微軟這種規模的軟體公司每個人的能力都會在同一個水平?Windows…

[208] 該死的範例碼之爭,卷一

往下讀之前,請先回答這個提問:「文件上的範例碼該不該設計成適合『複製貼上』至真實專案?」 前篇 是我對網路爭論的處理態度。這一篇認真來看「該死的範例碼之爭」。起因是底下這篇公開文章: 覺得我對MS有偏見的人,請按下去看看MSDN官方的sample source code吧....誰在公司真的這麼寫,我一定會砍死他... (出處) 批評的對象是微軟 MSDN 上的範例碼,被批的原因是使用了 Nested-if,而且多達九層甚至十一層。 扣掉那句「砍死他」,我同意原 Po 對使用該範例碼者的批評,若是在真實專案這麼寫,我也不能接受。不過,留言處歪得太厲害,有些觀念糟糕到讓人看不下去。手癢、頭皮癢,開始對牛彈琴。首先提問: 那是不是範例碼?是。 原 Po 知不知道那是範例碼?知道。 該範例碼是否有改進空間?有。 該範例碼是否達成任務?八成。 該範例碼是否有誘人直接用於真實專案的意圖?我認為沒有。 能不能把該範例碼複製貼上到公司的專案裡直接套用?…

[205] Video Intro to ViEmu for Visual Studio

這部影片簡單介紹一個 Visual Studio 外掛(Extension)— ViEmu。這個好用的工具我一直用了十多年,其售價是單一平台授權的售價為 $99 鎂,可另外添購 $49 鎂獲得一年的免費版本升級: 不囉嗦,看影片先。 這個外掛我從 Visual Studio 2008 時期開始使用,那時候是把另一套外掛——Visual Assist 擠下來,成為我的主要輔具。兩者之所以較難並存,是因為不少快速鍵重覆了,而且早期有相容性問題,因此放棄同時使用這兩支外掛。 《大山姆的機機車車》電子報 哈囉,我是山姆。今年初我發行了個人電子報,提供軟體開發資訊與學習資源,還有軟體工具介紹及使用技巧,其中包含了我在 WorkFlowy Tips 上發佈的最新文章。 如果你跟我一樣求知若渴,又不想花太多時間「過濾」資料,趕快訂閱《大山姆的機機車車》電子報,每月兩期,精挑細選的資訊直接送進你的郵箱,讓你輕鬆「…

[204] Text Processing Using juce::String class

前陣子公司內部的工具需要用到 Windows 內建的 Pnputil 工具程式。該工具可用來安裝以及移除驅動程式(Device Driver)。 其中一個需求是取得 Pnputil 的輸出結果後,從中獲得安裝至系統的驅動程式 INF 檔名,例:oem93.inf。Pnputil 的輸出結果如下: Adding driver package: filter.inf Driver package added successfully. Published Name: oem93.inf Total driver packages: 1 Added driver packages: 1 底下影片利用 juce::String 來處理文字。除此之外,同時示範 Catch Unit Test framework…

[196] Casey Muratori and 《Handmade Hero》

《Handmade Hero》是一款在 2014 年底開始開發的遊戲。其特色是從頭到腳,不使用任何遊戲引擎,如 Unity,Unreal Engine,由 Casey Muratori 一人獨立開發。 蛋,其實遊戲本身不是重點,Casey Muratori 認為這款遊戲的精華在其開發過程,開發此遊戲的主要目的是將開發過程全部公開,影片在 YouTube 上供有興趣的人觀摩以深入了解遊戲與遊戲引擎的開發奧妙。因此,除了用 Emacs 猛敲鍵盤外,Casey 更進一步解釋遊戲開發會用到的技術,而且詳細盡解說技術難題。這也是最令我配服的地方。 Casey Muratori 從七歲開始寫程式一直到現在,屬於老派碼農。最知名的作品是 The Granny Animation SDK 這個在 1999 年問世的 3D 動畫引擎,17 年了,還有不少大型遊戲使用這套引擎。另外,…

[195] 笨蛋!重點從來不在打字速度

每隔一段時日,我就會重提打字(鍵盤敲擊技)之於碼農的重要性。速度快又平穩的敲打鍵盤,把腦中的想法於電腦中實現,「盲打」是專業碼農的基本技能: 前線碼農必備戰技—鍵盤敲擊技。別說我沒提醒你,英打每分低於五十字真的有些低,寫到履歷裡,很難讓人相信你的實力。一天半小時,敲鍵盤當遊戲,碼農職涯絕對有戲。 https://t.co/9hpD4I3ETc— Sam Tsai (@mhtx) December 20, 2017 除非有殘疾,否則沒理由不把打字速度與準確度提昇到水準之上。 一個宣稱有五年以上軟體開發經歷的程式設計師,大方承認自己的英打速度每分鐘五十字以下。以下是我的解讀: 愛滑鼠更勝鍵盤。偏愛「拖拉式」的軟體開發工具,排斥需要大量文字輸入的開發方法 不愛文字形式的溝通,比如電郵、通訊軟體 用嘴巴寫程式的能力遠高於實際動手 對於軟體開發有不切實際的幻想 這樣的話,我建議不要填這個欄位比較好。 pic.twitter.com/MoW7bbWRGf—…