跳至主要内容

我是如何在兩週內打造 iOS 及 Android 應用程式

· 閱讀時間約 13 分鐘
Vincent Chi
Software Enineer, Backend

所有故事的起因,應該是源於一篇 Threads 上的文。

身為富邦證券多年的奈米投資戶,一直以來都對富邦 APPs 有著許多遺憾:

  1. 富邦 e 點通:估且不提那個超 ㄅㄧㄤˋ 的 APP 名稱,APP 本身也處處充滿著只有我們這類 7、8 年級生才能理解千禧年 dreamcore,再加上我只想簡單查看未實現損益也都要點四個按鈕再滑動一下,確實也是前無古人後無來者的神奇體驗。
  2. 富邦 Online:可能他們也曉得富邦 e 點通各種陳舊的 UI 實在不行,於是後來推出了「富邦 Online」,UI 是改進了但 UX 是一點沒改(個人評價是甚至還倒退了),並且隨著下面的「富邦 AI Pro」 的出現,它也算是完成了階段性的使命。
  3. 富邦 AI Pro:UI/UX 有非常大的進步,但是一點進去廣告就糊在臉上的體驗確實算不上好事。其實我挺好奇,到底為什麼有些開發者這麼喜歡把廣告塞在 APP 的各角落,又不是那些不在乎名聲的中國開發者;如果說是免費 APP 也就算了,富邦證券又不缺那點廣告費,何必把自己的使用體驗與名聲賠進去呢?

魔力寶貝檔案結構分析

· 閱讀時間約 11 分鐘
Vincent Chi
Software Enineer, Backend

對我個人而言,魔力寶貝是一款意義深遠的 MMORPG。在楓之谷還未進入台灣之前,我有幸在當時國小同班同學的推薦下接觸到了這款遊戲。對於一名小學生而言,那是個相當令人著迷的中世紀奇幻冒險世界,在廣闊的地圖上冒險,甚至在初次進遊戲時就在靈堂迷路了數小時。

然而月費制的遊戲模式也注定了與小學生沒什麼關係,因此從家裡發現我拿著壓歲錢買了樂園之卵的典藏限定包(外加一頓竹筍炒肉絲的粗飽)之後,我就帶著遺憾地離開了那個世界。轉而投向楓之谷的懷抱

直到 2020 年初,當時我正在學習 Rust,而我一直堅定地相信唯有自己做出點東西才叫做學會某項技能;當時的我不自量力地根據散落在各個角落的資料,漸漸拼湊出魔力寶貝檔案結構的具體實作。即便當時以失敗告終,這篇文就再也沒能推出續集,但是這個想法一直在我心中縈繞不止。

今天,我認為是那個好日子。

macOS 環境設定

· 閱讀時間約 2 分鐘
Vincent Chi
Software Enineer, Backend

目前主力工作環境仍是 macOS,用這篇文章記錄一下從購入新機或重置後設定整個 macOS 的流程。

以下軟體與工作流程僅能代表我個人使用習慣,如果你有其它想法請隨意依照你的習慣進行更改。

以 Godot 匯入 RPG Maker MV 加密格式

· 閱讀時間約 6 分鐘
Vincent Chi
Software Enineer, Backend

最近在學習如何使用 Godot,並且想說嘗試著復刻一些曾經玩過的 RPG Maker 製作的遊戲作為練習。

註:在未獲得原始遊戲的版權所有者同意之前,請不要這麼做。

RPG Maker MV 的加密

在 RPG Maker MV 的遊戲發佈時,開發者可以選擇用內建功能加密遊戲素材,以避免遭第三方竊取。

很遺憾地,內建的加密功能其實保護力並不高,有一些現成的工具能夠快速將其解密。

以 devcontainer 設計開發環境

· 閱讀時間約 4 分鐘
Vincent Chi
Software Enineer, Backend

因應近期在開發 Side Project 時與前端工程師有協作上的需求,原本想要沿用 Laravel 環境設定 中提到的 Local 與 Develop 環境,不過喜新厭舊的我在觀望了一陣子的 devcontainer 之後,決定來嘗試一下。

註:devcontainer 在 VSCode 上的支援性較好,在 JetBrains IDEs 上會有一些奇奇怪怪的小問題(但是我個人仍然是偏好使用 Jetbrains IDE,Jetbrains 該給業配了吧

PHP 的過去、現在與未來

· 閱讀時間約 7 分鐘
Vincent Chi
Software Enineer, Backend

這原本是我打算作為 PHP 教學系列的序章,既然該教學已經胎死腹中,不如就移花接木一下把我當年的想法記錄下來。

這個標題中的「過去」、「現在」與「未來」,其實並沒有一個明確的時間點、甚至定義也會隨時間與環境而有所變化。

In Memory SQLite 的備份與還原

· 閱讀時間約 3 分鐘
Vincent Chi
Software Enineer, Backend

近期在研究一個相對有趣的問題:如何讓 In-Memory SQLite 能夠在程式結束時進行自動備份,並且在程式啟動時自動套用最新的備份。

如果想要備份 SQLite,有幾種方式:

  1. 使用 .dump 將指定表中資料匯出為 SQL
    • 優點:將資料轉存為 SQL,如果需要跨資料庫(例如 sqlite to mysql)的話相當方便
    • 缺點:檔案為 UTF-8 純文字檔案,所需容量較大且需要轉換 SQL 故執行時間會較長
  2. 使用 VACUUM INTO 指令,將 DB 檔案轉存為獨立的檔案
    • 優點:執行後會將資料碎片彙整,進一步降低所需容量;且生成的檔案可以直接被 sqlite 客戶端讀取
    • 缺點:寫入時在極端情況下(例如當機或停電),並不保證資料能夠被完整寫入
  3. 使用 Online Backup API
    • 優點:直接鏡像備份兩個 SQLite 連線;效率較 VACUUM 來得高
    • 缺點:沒有直接的指令,需使用 SQLite API 達成;因為是鏡像備份,所以包括源資料庫的資料碎片等亦會被保留

家用雙路由器內網設定

· 閱讀時間約 4 分鐘
Vincent Chi
Software Enineer, Backend

因為家中多了一台 Synology DS224+,趁著過年前把房間整理一下的機會,順帶重新設計家裡的網路。

需求

  • 在家使用的設備(無論走有線網路的電腦、WiFi 的手機與平板)皆為 IPv6
  • 能夠從網際網路直接連線到 NAS 及 HomeLab 上的某些服務
  • 能夠從網際網路提供一個 VPN 給外出時使用
  • 家用設備必須能夠以內網的方式連線到 NAS 與 HomeLab