Just My Life & My Work

Archive for the ‘教學’ Category

[C/C++] SDL 與 FFMEPG 播放影片

SDL (Simple DirectMedia Layer)FFmpeg (Fast Forward mepg) 是兩個獨立的函式庫,可以結合使用以實現視訊播放。

(繼續閱讀…)

Flutter 例外處理

透過 Flutter 框架開發的 App (含 iOS 與 Android) 已經上線,開始要追蹤用戶使用時,是否有發生不預期的狀況。

如同開發原生 iOS App 那樣,我將 Firebase Crashlytics 導入 Flutter App 中,一旦有任何崩潰、例外狀況,就會被記錄且上傳到 Firebase,讓我每天能明確掌握 App 使用狀況,並在適當時機修正並釋出新版本。🙃

這是我開啟記錄「例外」事件功能後,在 Firebase 上所搜集統計的資料。在沒有開啟此功能前是一片祥和,幾乎沒有「崩潰」事件。然而我為了優化 App 各種不預期的使用狀況,便有需要去了解會有哪些「例外」事件。🤔

(繼續閱讀…)

[C/C++] SDL 非同步執行任務

想要實現 SDL 和 FFmpeg 非同步方式播放影片,涉及到在一個單獨的線程中解碼影片幀,並在主線程中更新 SDL 視窗。之後做到同時播放影片,還能偵測滑鼠點擊事件。

(繼續閱讀…)

[C/C++] 取得本機硬碟容量

因為要儲存持續錄製的影音檔,本機容量的使用量會很快耗盡,於是需要知道本機硬碟容量可用空間剩多少。

(繼續閱讀…)

extern “C" 的作用為何?

有時候在寫 C/C++ 程式,引用了某些 Library,編譯會出現錯誤,後來查找原因

FFmpeg 編譯: undefined reference to ‘av_frame_alloc()’

原來該 Library 是以純 C 寫的,需要以 extern "C"來讓編譯器識別。

看來我真的對 C/C++ 不熟呢~😜

(繼續閱讀…)

[C/C++] 回調函式 (Callback Function)

最近有個任務是寫回調函式 (Callback Function)。在寫 App 已經用過類似的機制,被包裝得相當容易使用。這次就來實現比較底層的作法。

日常生活中,回調函式就像一個「代理人」。當你需要某人幫忙做一件事情,但你自己又不能做的時候,你就可以請一個「代理人」來幫你。

例如,你想去一個地方,但你不知道路。你可以請一個朋友來幫你帶路。在這個例子中,你的朋友就是你的「代理人」。

程式設計中,回調函式也是一樣。當你需要某個函式在完成某些工作後通知你,但你自己又不能做的時候,你可以使用回調函式。

例如,你想下載一個文件。你可以使用一個函式來下載文件,並在下載完成後通知你。在這個例子中,下載文件的函式就是你的「代理人」。

以下是一些日常生活中的回調函式的例子:

  • 你在餐廳點餐,服務生會在餐點做好後通知你。
  • 你在網上購物,商家會在商品發貨後通知你。
  • 你在銀行存款,銀行會在存款成功後通知你。

在這些例子中,服務生、商家和銀行都扮演著「代理人」的角色。他們在完成某些工作後通知你。

(繼續閱讀…)

[圖解] git merge 和 git rebase 差異

Git 版本控制是軟體開發非常重要的工具,而 git 指令有非常多妙用,可根據自身需求來使用。其中 git merge 和 git rebase 差異會是我想要了解的地方。因為有同事和老闆(會寫程式)比較偏好 git rebase 來合併分支,讓我覺得有必要了解其原因。🤔

(繼續閱讀…)

[圖解] Git 指令

我個人喜好將複雜的技術簡單化,所以若能有圖解的方式來呈現,肯定會讓我學習的更輕鬆愉快。

每隔一段時間,我會想回顧我正在使用的技能,是否能有優化的空間。Git 指令是我平常開發時,一定會用到的版本控制工具。

(繼續閱讀…)

[Flutter] 本機 WebView 載入網頁檔案並與 App 互動

網頁已有的功能,想要完整移植到 App,可以怎麼做呢?刻一個原生的,會是個較佳的選項,因為使用者體驗可以很棒!然而就是得花時間去實現。🤪

我們想到可以在 App 載入網頁檔案,省去從頭刻畫面的時間,再來實現 WebView 與 App 互動的部分。

(繼續閱讀…)

[Flutter] 問號纇運算符

善用運算符號,可以減少寫些程式碼。在使用之前,必須了解它是怎麼運作,之後就能得心應手囉~

我目前只會 IF ELSE 來使用問號運算符,趁這時候多學點語法糖,讓我可少寫幾行程式碼,也可達到些成就感。🙃

Flutter 是以 Dart 程式語言來運行,線上可以直接測試程式碼:https://dartpad.dartlang.org/

(繼續閱讀…)

標籤雲