Tagged

Programming

A collection of 60 posts

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

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

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

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

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

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

[205] Video Intro to ViEmu for Visual Studio
Programming

[205] Video Intro to ViEmu for Visual Studio

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

[196] Casey Muratori and 《Handmade Hero》
Programming

[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] 笨蛋!重點從來不在打字速度
rant

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

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

[175] 印度軟體外包經驗
JUCE

[175] 印度軟體外包經驗

幾個月前因應專案需求,將部分工作外包給印度的工程師。花點時間反思,並紀錄下來。 上半年由於承接的軟體專案時程較趕,在台灣短時間內找不到熟悉 JUCE 的開發人員,幾經思量後,決定到 JUCE 官方論壇 尋找外包人力。 題外話。論知名度,JUCE 與 Qt 相差甚遠,與 wxWidgets 也有不小差距,這種情況在台灣尤其明顯。現在(2017)詢問一百個資深的 C++ 工程師,大概不到一個聽過 JUCE。希望過兩年情況有所改善... 「徵工訊息」發出約兩天後,有一位印度人主動來信詢問細節,並提供使用 JUCE 開發的軟體應用及個人簡歷。我回信進一步詢問: 計費模式(以小時計) 付款方式 幣別 是否願意先簽 NDA 再談細節 能否接受先以一或兩天內即能完成的小型任務(我們會支付費用)來評估其技術能力 任務完成的條件需包含原始碼 對方表示通通沒問題。

[161] Pluralsight C++ 課程精選
C++

[161] Pluralsight C++ 課程精選

前面提到三個月免費享用 Pluralsight 海量學習資源的方法,這一篇列出幾個 Pluralsight 上,我認為不錯的 C++ 課程。 入門 Pluralsight 的 C++ 入門課由凱特大嬸(Kate Gregory)操刀,有兩集,皆以 C++11 為教授範圍: C++ Fundamentals C++ Fundamentals - Part 2 此課程從工具安裝開始教起,慢慢建立基本觀念如變數(Variables),流程控制(Flow of Control),迴圈(Loop)。一路教到運算元(Operator),模板(Tempalte),指標(Pointer)與繼承(Interitance)。第二部分介紹標準函式庫(STL),Lambda(這個我不會翻)

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

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

Pluralsight 主要提供軟體工程相關的線上學習資源,以影片為主,其課程內容與講師素質高。這幾年陸續併購了幾間線上學習公司,如 PeepCode, Tekpub, Code School,成了領域頭目之一。許多公司併購後即關閉原站,但 Code School 例外,目前依然維持獨立運作。 Pluralsight 的 C++ 課程有許多知名人物,如 Kenny Kerr(現任職 Microsoft,負責 C++/WinRT 專案), Kate Gregory, Dmitri Nesteruk。 Pluralsight 的 C++ 課程由入門、中階至高階,一應俱全。現在,只要簡單幾個步驟就可以三個月免費暢遊 Pluralsight 豐富的學習資源,挑自己喜愛的課程,認真上三堂課,應有不少收穫。怎麼做呢?很簡單,只要申請

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

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

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

[156] 函數或類別
C++

[156] 函數或類別

先前寫過 C++ 類別的設計手法,其中一個是「滿足條件才能生成物件」。其實,需求若只是產生 TheTea,使用函數(Function)即可滿足,有需要寫成類別嗎?本文以此例探討:To class, or not to class. 以函數實作 把先前的 TeaMaker 類別實作貼過來: class TeaMaker { TeaMaker(Tea, Sugar, Ice); TheTea Make(); }; 相應的函數可實作成: TheTea MakeTea(Tea, Sugar, Ice); 同樣是接收三個輸入參數,產生輸出(TheTea),上述函數實作滿足了「當前」的需求。一般來說,呼叫函數不需要先建物件,再呼叫其成員函數,比使用類別來得輕鬆。那麼,有必要設計成類別嗎? 跟許多軟體開發問題的答案一樣:

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

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

前言 C++ namespace 的用意是減少名稱衝突,Objective-C 則是以「加上前贅詞」(「贅」者,多餘、沒有用處。)的方式處理,老實說有點不牢靠。 JUCE 的公開類別置放於 juce:: 命名空間裡。不過,預設情況下由於 JuceHeader.h 引入了 using namespace juce;,因此使用 JUCE 類別不需要加上 juce::。這麼做純粹是為了節省打字時間,並試圖讓「版面」更乾淨,但不應視為「最佳實務」。這個預設行為可以透過定義 DONT_SET_USING_JUCE_NAMESPACE=1 來改變。不過,經驗顯示加上後反而是自找麻煩... 那些年,我們一起經歷的不美好... C++ namespace 的美意如前述,

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

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

每當有新版本的 Visual Studio 推出,我會盡量過濾不必要的「雜訊」,把焦點放在 C++ 以及 IDE 增強的功能。「地表最強」前些天釋出正式版,無法在第一時間安裝,原因是: Visual Studio 2017 推出正式版,嗯... pic.twitter.com/gIN72Zxri8 — sam (@mhtx) March 8, 2017 是滴,硬碟空間不夠吶。雖然新的 Visual Studio Installer 把各大功能切開了,但是光裝 C++ 功能也是硬碟空間不夠吶。我討厭 Electron 的原因之一——它是一個不尊重使用者硬碟空間資源的惡質開發套件: 這種時候對 Electron 的「恨意」特別高。 pic.

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

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

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