跳至主要内容

以 devcontainer 設計開發環境

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

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

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

PHP 的過去、現在與未來

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

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

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

In Memory SQLite 的備份與還原

· 閱讀時間約 4 分鐘
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 達成;因為是鏡像備份,所以包括源資料庫的資料碎片等亦會被保留

macOS 環境設定

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

目前主力工作環境是 macOS,用這篇文章記錄一下從無到有設定整個 macOS 的流程。

家用雙路由器內網設定

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

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

需求

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

PHP 容器化應用

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

容器化(Containerization),這是一個由 Docker 公司所發揚光大的一種技術,它能夠很好地封裝應用程式與所需函式庫,而且通常有著比 虛擬化(Virtualization) 更高的效能。

一般來說,編譯式語言都很容易被容器化,例如 C/C++ 或 Golang,這是因為只需要在容器中設定好相依函式庫(通常是指動態函式庫),其編譯出的執行檔就可以直接在容器中運行。

這對 PHP 這類直譯式語就不是個好消息,其運行環境往往受制於 Apache PHP Module 或 PHP-FPM,再加上現代 PHP 往往會整合 Composer 進行相依性套件管理,這使得其處境更加雪上加霜。

備註

Python 或 Nodejs 這類直譯式語言,往往也會藉助一些協定(例如 Python 依賴的 WSGIASGI)或工具(例如 PM2Forever)來佈署。

Rosetta.ai PHP 面試實作題解析

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

七月中旬,我離開了 Rosetta.ai

作為最後幾份工作,我與同事們一起設計了一系列的 PHP 軟體工程師(後端)的題目。其中,實作題的設計是由我所主導,而我個人認為它是我設計過最優秀的題目。

因為該題目已獲公司主管同意已經公佈在 PTT 的 Soft_job 版上,所以這邊寫下當時我設計題目的理念與解析。

備註

註:雖然 PTT 的討論串到最後演變成薪資之爭模糊焦點有些可惜,不過這並不妨礙這份題目本身的設計。

在 VSeeFace 中使用 VRChat 模型

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

最近有嘗試著在 Twitch 上開直播,想說如果能夠讓 Zeffie(我在 VRChat 中所使用的角色形象)在直播時使用就好了。

經過一番搜索,我鎖定了 VSeeFace 這套軟體,並且搭配 iFacialMocap 做到表情捕捉。

也就是說,需要解決的問題就是:如何讓 VSeeFace 使用 VRChat 相容的 3D 模型