[153] JUCE Diary #14:Catch Test Framework

Catch 在 C++ 單元測試、自動化測試領域算是新兵。由於設計優良,使用簡便,近來頗受好評。JUCE 內建了單元測試機制,雖然大部分情況下比夠用還多,不過,為了避免落入「固步自封」的工程師死亡陷阱,偶爾還是要看看窗外的世界,弄髒手,動動腦。 JUCE 論壇經常出現高手分享自己的作品,昨天就看到 varx 這個把 Reactive-Extension, RxCpp 導入到 JUCE 的專案,太有才,改天一定要試試。不過,今天的重點不在該專案,原因是我挖了專案原始碼來看,發現作者用了 Catch 做單元測試,而不是用 JUCE 內建的機制。然後,使用 Catch 來做測試真的很簡單。底下說明使用方式(程式碼參考 varx 專案)。 首先,使用 Projucer…

[142] JUCE 5 以及新授權模式

昨天收到 JUCE 5(目前的版本是 4.3.1) 即將於下月推出的通知信,同時公佈新的授權模式。下表是第二個版本,JUCE team 在第一個版本發出後收到不少使用者回饋,並「順應民意」在 24 小時內做出了修改: JUCE Indie 變便宜但加上營收上限 原本的 JUCE 4 授權分兩個層級:JUCE Indie , JUCE Pro。兩者的授權費用一模一樣(月繳 $49 鎂),但 JUCE Pro 可用來開發 Mobile app(Android/iOS)。新的授權把 JUCE Indie 的費用降至月繳 $35 鎂,或是一次付清 $700 鎂。…

[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 的美意如前述,…

[135] Livecoding.tv: JUCE #6

應觀眾要求改用破英文面對。 這集示範如何使用 juce::DrawableButton class 來顯示圖文合併的按鈕。另外用到了 juce::Array 來實作載入 SVG 圖檔的函數。…

[134] Livecoding.tv: JUCE #5

在 Facebook Live 直播幾集,發覺受眾跟 Livecoding.tv 上的差很多。依我少得可憐的朋友來看,臉書直播的對象多為台灣人,而且多為圈外人。而 Livecoding.tv 的屬性很明確就是技術類,出沒人士多以英語系為主。 接下來我希望 Facebook Live 以及 Livecoding.tv 做不同的主題,看看反應如何。…

[132] Livecoding.tv: JUCE #4

前天直播時犯了新手錯誤,加上沒注意到 Livecoding.tv 站務人員的大聲呼喊,五十分鐘的直播報銷了。昨天針對同一個主題(JUCE Unit Test Framework)又做了一次。 沒想到直播中途有人提問,最後應觀眾要求改用「破英文」說明 JUCE Unit Test Framework... (事後聽發現紅軸機械鍵盤的聲音太大了)…

[129] Livecoding.tv: JUCE #3

這一集腦袋空空,講得不好。果然要把話講好,把事情說清楚不是一件容易的事。…

[128] Livecoding.tv: JUCE #2

上一集講到一半有人亂入,只好匆匆告一段落。…