Programming

A collection of 60 posts
[219] 《大機車報》第七期已出刊
C++

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

《大山姆的機機車車™》電子報第七期 [https://news.samtsai.org/issues/7-101617]已經上線。本期人物「落腮T」 Jason Turner [https://twitter.com/lefticus?lang=en] 近年來為各大 C++ Conference 常客,除了共同主持 CppCast 外,還有每週一集的 C++ Weekly 錄影,在圈內頗為活躍。 電子報第七期漏掉了他整理好的《C++ Best Practices》 [https://github.com/lefticus/cppbestpractices/blob/master/00-Table_of_Contents.md] ,除了有 Coding Style 外,
1 min read
[208] 該死的範例碼之爭,卷一
rant

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

往下讀之前,請先回答這個提問:「文件上的範例碼該不該設計成適合『複製貼上』至真實專案?」 前篇 [https://samtsai.org/2018/03/01/207-my-way-to-argue-online/] 是我對網路爭論的處理態度。這一篇認真來看 「該死的範例碼之爭」 [https://www.facebook.com/groups/616369245163622/permalink/1263968053737068/] 。起因是底下這篇公開文章: > 覺得我對MS有偏見的人,請按下去看看MSDN官方的sample source code吧....誰在公司真的這麼寫,我一定會砍死他... (出處 [https://www.facebook.com/groups/616369245163622/permalink/1263968053737068/]) 批評的對象是微軟 MSDN 上的範例碼 [https://goo.gl/HvTY1a],被批的原因是使用了 Nested-if,
7 min read
[205] Video Intro to ViEmu for Visual Studio
Programming

[205] Video Intro to ViEmu for Visual Studio

這部影片簡單介紹一個 Visual Studio 外掛(Extension)— ViEmu [http://www.viemu.com/] 。這個好用的工具我一直用了十多年,其售價是單一平台授權的售價為 $99 鎂 [http://www.viemu.com/store.html],可另外添購 $49 鎂獲得一年的免費版本升級: 不囉嗦,看影片先。 這個外掛我從 Visual Studio 2008 時期開始使用,那時候是把另一套外掛——Visual Assist [https://www.wholetomato.com/] 擠下來,成為我的主要輔具。兩者之所以較難並存,是因為不少快速鍵重覆了,而且早期有相容性問題,因此放棄同時使用這兩支外掛。 -------------------------------------------------------------------------------- 《大山姆的機機車車》電子報 哈囉,我是山姆。今年初我發行了個人電子報,提供軟體開發資訊與學習資源,
1 min read
[196] Casey Muratori and 《Handmade Hero》
Programming

[196] Casey Muratori and 《Handmade Hero》

《Handmade Hero》 [http://handmadehero.org]是一款在 2014 年底開始開發的遊戲。其特色是從頭到腳,不使用任何遊戲引擎,如 Unity [https://unity3d.com/],Unreal Engine [https://www.unrealengine.com/en-US/what-is-unreal-engine-4],由 Casey Muratori 一人獨立開發。 蛋,其實遊戲本身不是重點,Casey Muratori 認為這款遊戲的精華在其開發過程,開發此遊戲的主要目的是將開發過程全部公開,影片 [https://hero.handmade.network/episode/code]在 YouTube 上供有興趣的人觀摩以深入了解遊戲與遊戲引擎的開發奧妙。因此,除了用 Emacs 猛敲鍵盤外,Casey 更進一步解釋遊戲開發會用到的技術,而且詳細盡解說技術難題。
2 min read
[195] 笨蛋!重點從來不在打字速度
rant

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

每隔一段時日,我就會重提打字(鍵盤敲擊技)之於碼農的重要性。速度快又平穩的敲打鍵盤,把腦中的想法於電腦中實現,「盲打」是專業碼農的基本技能: > 前線碼農必備戰技—鍵盤敲擊技。別說我沒提醒你,英打每分低於五十字真的有些低,寫到履歷裡,很難讓人相信你的實力。一天半小時,敲鍵盤當遊戲,碼農職涯絕對有戲。 https://t.co/9hpD4I3ETc — Sam Tsai (@mhtx) December 20, 2017 [https://twitter.com/mhtx/status/943336157110325249?ref_src=twsrc%5Etfw] 除非有殘疾,否則沒理由不把打字速度與準確度提昇到水準之上。 一個宣稱有五年以上軟體開發經歷的程式設計師,大方承認自己的英打速度每分鐘五十字以下。以下是我的解讀: 1. 愛滑鼠更勝鍵盤。偏愛「拖拉式」的軟體開發工具,排斥需要大量文字輸入的開發方法 2.
4 min read
[175] 印度軟體外包經驗
JUCE

[175] 印度軟體外包經驗

幾個月前因應專案需求,將部分工作外包給印度的工程師。花點時間反思,並紀錄下來。 上半年由於承接的軟體專案時程較趕,在台灣短時間內找不到熟悉 JUCE [https://juce.com/] 的開發人員,幾經思量後,決定到 JUCE 官方論壇 [https://forum.juce.com/c/juce-jobs] 尋找外包人力。 [https://imgur.com/E8DMvax]題外話。論知名度,JUCE [https://juce.com/] 與 Qt [https://www.qt.io/] 相差甚遠,與 wxWidgets [https://www.wxwidgets.org/] 也有不小差距,這種情況在台灣尤其明顯。現在(2017)詢問一百個資深的
5 min read
[161] Pluralsight C++ 課程精選
C++

[161] Pluralsight C++ 課程精選

前面提到三個月免費享用 Pluralsight 海量學習資源的方法 [https://samtsai.org/2017/09/15/160-visual-studio-essentials-pluralsight-free/] ,這一篇列出幾個 Pluralsight 上,我認為不錯的 C++ 課程。 入門 Pluralsight 的 C++ 入門課由凱特大嬸(Kate Gregory) [https://twitter.com/gregcons?ref_src=twsrc%5Egoogle%7Ctwcamp%5Eserp%7Ctwgr%5Eauthor] 操刀,有兩集,皆以 C++11 為教授範圍: * C++ Fundamentals [https://app.pluralsight.com/library/courses/cpp-fundamentals]
3 min read
[160] 免費取得 Pluralsight 線上學習資源(無限暢飲三個月)
Learning

[160] 免費取得 Pluralsight 線上學習資源(無限暢飲三個月)

Pluralsight 主要提供軟體工程相關的線上學習資源,以影片為主,其課程內容與講師素質高。這幾年陸續併購 [https://www.crunchbase.com/organization/pluralsight/acquisitions]了幾間線上學習公司,如 PeepCode, Tekpub, Code School,成了領域頭目之一。許多公司併購後即關閉原站,但 Code School [https://www.codeschool.com/] 例外,目前依然維持獨立運作。 Pluralsight 的 C++ 課程有許多知名人物,如 Kenny Kerr [https://twitter.com/kennykerr?lang=en] (現任職 Microsoft,負責 C++/WinRT 專案 [https://github.
3 min read
[157] 調整 Visual Studio 工具列控制項的寬度
Programming

[157] 調整 Visual Studio 工具列控制項的寬度

任務是調整下圖箭頭所指處的控制項寬度: ![](http://i.imgur.com/j4hWfXR.png)這個 Build Configuration 的寬度預設值很窄,窄到多幾個字元就爆了。很痛苦,以前每次安裝新環境都要改一次,然後每次都忘記怎麼改。這種情況呢,記下來就對了。步驟如下: 1. 控制項上按滑鼠右鍵,點選 Customize... 2. 點選 Toolbar 3. 選擇 Standard 1. 點選 Solution Configurations 2. 右邊點選 Modify Selection 3. 在 Width 那一欄輸入寬度 影片示例:
1 min read
[156] 函數或類別
C++

[156] 函數或類別

先前寫過 C++ 類別的設計手法 [https://goo.gl/kJRPcK],其中一個是「滿足條件才能生成物件」。其實,需求若只是產生 TheTea ,使用函數(Function)即可滿足,有需要寫成類別嗎?本文以此例探討:To class, or not to class. 以函數實作 把先前的 TeaMaker 類別實作貼過來: class TeaMaker { TeaMaker(Tea, Sugar, Ice); TheTea Make(); }; 相應的函數可實作成: TheTea MakeTea(Tea, Sugar, Ice); 同樣是接收三個輸入參數,產生輸出(TheTea),上述函數實作滿足了「當前」的需求。一般來說,呼叫函數不需要先建物件,再呼叫其成員函數,
6 min read
[139] JUCE Diary #13:C++ namespace 的必要
JUCE

[139] JUCE Diary #13:C++ namespace 的必要

前言 C++ namespace [http://en.cppreference.com/w/cpp/language/namespace] 的用意是減少名稱衝突,Objective-C 則是以「加上前贅詞」(「贅」者,多餘、沒有用處。)的方式處理,老實說有點不牢靠。 JUCE 的公開類別置放於 juce:: 命名空間裡。不過,預設情況下由於 JuceHeader.h 引入了 using namespace juce;,因此使用 JUCE 類別不需要加上 juce:: 。這麼做純粹是為了節省打字時間,並試圖讓「版面」更乾淨,但不應視為「最佳實務」。這個預設行為可以透過定義 DONT_SET_USING_JUCE_NAMESPACE=1
3 min read
[138] Visual Studio 2017, 寫在安裝前...
Visual Studio

[138] Visual Studio 2017, 寫在安裝前...

每當有新版本的 Visual Studio [https://blogs.msdn.microsoft.com/vcblog/2017/03/07/visual-studio-2017-for-c-developers-you-will-love-it/] 推出,我會盡量過濾不必要的「雜訊」,把焦點放在 C++ 以及 IDE 增強的功能。「地表最強」前些天釋出正式版,無法在第一時間安裝,原因是: > Visual Studio 2017 推出正式版,嗯... pic.twitter.com/gIN72Zxri8 [https://t.co/gIN72Zxri8] — sam (@mhtx) March 8, 2017 [https://twitter.com/mhtx/status/839360038141587456]
3 min read
[127] 開始玩 Livecoding.tv:JUCE #1
Programming

[127] 開始玩 Livecoding.tv:JUCE #1

今年的新任務是在 Livecoding.tv 上直播「寫程式」。Handmade Hero [https://www.youtube.com/channel/UCaTznQhurW5AaiYPbhEA-KA] 是我的偶像,他的撰碼技巧以及「邊講話邊寫程式」的技能讓我佩服萬分。 初期的規劃是以 JUCE/C++ 為主要內容,最好是能帶到一些 Design Pattern 實務應用。不會特別區分難度,應該是以入門為主。時間長度控制在半小時,試著用三十分鐘講一個主題。Live Coding 的挑戰是沒有辦法後製,遇到問題立即解決,處理不來當機立斷,下回再解。 藉由 Live Coding 來練習口條,同時尋找未來課程的靈感。這對我是全新的體驗,前途不明,期許至少撐個十集。
1 min read