JUCE

All about JUCE, the cross-platform C++ toolkit.

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

[175] 印度軟體外包經驗

幾個月前因應專案需求,將部分工作外包給印度的工程師。花點時間反思,並紀錄下來。 上半年由於承接的軟體專案時程較趕,在台灣短時間內找不到熟悉 JUCE 的開發人員,幾經思量後,決定到 JUCE 官方論壇 尋找外包人力。 題外話。論知名度,JUCE 與 Qt 相差甚遠,與 wxWidgets 也有不小差距,這種情況在台灣尤其明顯。現在(2017)詢問一百個資深的 C++ 工程師,大概不到一個聽過 JUCE。

  • Sam Tsai
    Sam Tsai
[153] JUCE Diary #14:Catch Test Framework
C++

[153] JUCE Diary #14:Catch Test Framework

Catch 在 C++ 單元測試、自動化測試領域算是新兵。由於設計優良,使用簡便,近來頗受好評。JUCE 內建了單元測試機制,雖然大部分情況下比夠用還多,不過,為了避免落入「固步自封」的工程師死亡陷阱,偶爾還是要看看窗外的世界,弄髒手,動動腦。 JUCE 論壇經常出現高手分享自己的作品,昨天就看到 varx 這個把 Reactive-Extension, RxCpp 導入到 JUCE 的專案,太有才,改天一定要試試。

  • Sam Tsai
    Sam Tsai
[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::。這麼做純粹是為了節省打字時間,

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

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

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

  • Sam Tsai
    Sam Tsai
[102] JUCE Diary #12 : 答客問:InterprocessConnectionServer
JUCE

[102] JUCE Diary #12 : 答客問:InterprocessConnectionServer

網友在這篇文章問到 InterprocessConnectionServer 與 InterprocessConnection 的使用方式。本文以一簡易程式來說明如何使用這兩個類別。範例程式做的事情如下: 啟動一個 Server 程式監聽網路 Port 52713 啟動一個 Client 程式連接到本機(localhost) Port 52713 連線成功後,Client 會傳送資料到 Server Server 收到資料進行處理 Client 與 Server 皆為 JUCE Console

  • Sam Tsai
    Sam Tsai
[066] JUCE Diary #11: Inter-process Communication
JUCE

[066] JUCE Diary #11: Inter-process Communication

IPC (Inter-process Communication) 指的是兩支程式透過某種方式進行單向或雙向資料傳輸。不同平台有不同的資料傳輸技術,Windows 上使用的是 Named Pipe ,Mac & Linux 則使用 socket。 土法鍊鋼打造 IPC 需要寫不少程式碼,因此,許多有規模的專案都會將其包裝成函式庫,把大量苦工碼藏起來,開放出簡單易用的介面給客人用。有心觀察其內部設計,除 JUCE 外,Chromium 也是不錯的選項。 JUCE 除了有 InterprocessConnection

  • Sam Tsai
    Sam Tsai
[062] JUCE Diary #10: JUCE and Xamarin
JUCE

[062] JUCE Diary #10: JUCE and Xamarin

即時處理音訊需要較高的效能,若是要運作在手持裝置上,最好能充份運用其有限的運算資源。撰寫高效能的應用程式,C++ 最適合。正式專案用過 JUCE 後就愛上了她。 最近在評估 Xamarin,想到如果能在 Xamarin 上使用 JUCE 處理效能導向的功能,就太美妙了。 輕輕一搜,果然找到了。底下影片展示了 Xamarin 開發的 Android, iOS app 如何整合 JUCE 寫的 Library,值得一看:

  • Sam Tsai
    Sam Tsai
[059] JUCE Has New Forum (Finally!)
JUCE

[059] JUCE Has New Forum (Finally!)

自從接觸 JUCE 以來,其 Forum 的使用體驗真的很差。所幸,一切在昨天結束了。 JUCE 新的論壇使用 Discourse 開源碼專案。Discourse 是 Stack Overflow 那個 Jeff Atwood 與其他人的傑作,目標是讓傳統論壇站台消失進化,讓世界更文明。 JUCE 新論壇的反應時間更快,瀏覽體驗更好,光這一點就加了一千分不只。不過,「無法取稅每一個人」確實是不變的定理,還是有人對新論壇系統表示強烈不滿(

  • Sam Tsai
    Sam Tsai
[049] JUCE Diary #8: Memory Might Leak
JUCE

[049] JUCE Diary #8: Memory Might Leak

先前提到 JUCE 應用程式的初始化區塊之一為 initialise method。程式執行時,在初始化階段有一常見的情境: 一旦某一條件成立或某些條件不成立時需停止執行。 若在 initialise 發現程式必須終止,最直覺的作法是呼叫 systemRequestedQuit。不過,這麼做在 Windows 上會出現 Memory Leak,如下圖: 解決方法是離開 initialise 後再想辦法停止執行,但 initialise 無回傳值(void),故無法以回傳值停止。MessageManager::callAsync

  • Sam Tsai
    Sam Tsai