[180] Google's Abseil Project, Part 1

Google 在今年的 CppCon 推出重量級的 C++ Library — Abseil。官網上的自我介紹: Abseil is an open-source collection of C++ library code designed to augment the C++ standard library. The Abseil library code is collected from Google’s own C++ code base, has been extensively tested and used in production, and is the same code…

[175] 印度軟體外包經驗

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

[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 線上學習資源(無限暢飲三個月)

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

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

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

[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 的必要

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