COSCUP 2022

Your locale preferences have been saved. We like to think that we have excellent support for English in pretalx, but if you encounter issues or errors, please contact us!

從零開始用 Go 語言開發網頁桌面系統!
2022-07-31 , TR209
Language: English

你有想過用 Go 語言自幹雲端桌面作業系統嗎?

從 2016 年開始,我因為個人需要開發了一個名為 ArozOS 的開源網頁桌面作業及雲端硬碟系統,不僅持續不斷地更新至今,使用者人數也在不斷地增加。在這 30分鐘的議程中,我會跟您分享在開發及維護上的種種趣事與挑戰,包含:

  • ArozOS 系統的設計流程
  • 從 PHP 轉移到 Go 的原因
  • 重寫的過程和得到的改善
  • 如何設計可熱插拔的模組
  • 在 Go 內執行 JavaScript Interpreter 讓用戶進行 scripting

等等多種意想不到的開發技巧與實作方法!


如果你剛好有一片閒置的派(Raspberry Pi),想要建置一套個人用的雲端硬碟系統,你會選用甚麼方案?

ArozOS 是一套開源網頁桌面作業及雲端硬碟系統,誕生於 2016 年春天並在 2018 年時於 GitHub 上開源。最初是以 Raspberry Pi 為主要平台,不過也相容於 x64 的 Linux 伺服器、arm64 / armv7+ 的開發板,甚至相容 Windows、 Mac 及 OpenWRT 等平台。除此之外,ArozOS 在設計上參考了很多不同的商用及開源系統,包括 OS.js、Synology DSM 及 Google Drive 等,讓使用者可以很簡單的部署和存取到放在伺服器上的各種不同檔案。

隨著系統及使用者人數的成長,我們在效能和功能實現上逐漸遭遇到瓶頸,最終決定將整套系統由原本的 PHP 7 改用 Go 1.14 重寫。但不可避免的我們也在過程中遇上了很多問題,比如不知道如何正確的處理 Error、沒辦法進行模組的熱插拔、如何自己設計 sandbox 執行 ArozOS 的 WebApp 等等。

本次議程的內容大綱如下:
- ArozOS 系統及其作者簡介
- 從 PHP 轉移到 Go 的原因與痛點
- 基於 Reverse Proxy 的高相容性模組熱插拔架構
- Otto - Go 語言寫的 ECMA5 intepreter 與 ArozOS WebApp 的連接架構
- 透過 Go 語言進行系統 OTA 更新的方法分享與實作

Github:https://github.com/tobychui/arozos


Difficulty

Skilled

Target Audience

想學 Go 的 PHP 開發者、對雲端硬碟 / NAS 有興趣的開發者

Toby Chui - 在台留學的香港人。香港理工大學電子計算學系畢業生,現為成功大學資訊工程系碩士生,同時也是開源軟體及硬體開發者,主要使用語言為 Go 及 Vanilla JS。