跳至主要内容

Redis 字串研究

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

Redis 在處理字串資料時,另外實現了一個名為 SDS (Simple Dynamic String)的資料結構。

在 Sabaki 上使用 GNU Go 及 Katago

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

作為休閒活動,我偶爾會在 OGS 上跟人下棋。不過前陣子因為家裡網路不太穩定,所以索性就自己弄了一套單機的下棋環境。

儘管這幾年因為 AlphaGo 的關係,圍棋這項歷久不衰的競技又再一次被推向話題討論的浪尖,然而實際上它的 Open Source 資源是相對稀缺的。

註:圍棋其實有不少付費軟體,但實際用起來很多都效果不佳,有些 AI 對奕的實力甚至比數十年前的 GNU Go 還差。

為 Laravel 整合 Google reCAPTCHA Enterprise

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

Google reCAPTCHA 是一個人類行為驗證機制,用於阻止爬蟲或類似的機器行為。

  • v1 (2007):基於驗證碼
  • v2 (2014):I'm not a robot 勾選框
  • v3 (2018):對當前用戶進行評分
  • Enterprise (2020):與 v3 類似,但加入更多功能(如密碼洩露檢測)

就目前為止,除了 Google 官方的 SDK 之外,幾乎找不到針對 reCAPTCHA enterprise 實作的 PHP 套件(大多都是 reCAPTCHA v2 及 v3)。

Versioned JSON Schema

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

隨著 MySQL 5.7 加入對 JSON 格式的原生支援,開始有許多開發團隊把 RDBMS 當 NoSQL 使用。本篇文章對於效能議題暫且擱置,顯而易見地,越自由的格式往往會帶來更沉重的維護成本。

舉例來說,目前資料庫中可能存在以下型式的資料

{
"age": 16,
"avatar": "avatars/avatar.png"
}

然而可能因為系統改版,需要更精準地計算用戶年齡,所以將 age 欄位改為 birth

{
"birth": "2002-01-01",
"avatar": "avatars/avatar.png"
}

在 Raspberry Pi 上構建 Portaler Zone

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

Portaler Zone 是一款為 Albion Online 打造的社群工具,其目的是共享社群間的地圖資訊。

註:事實上我也不知道這到底是啥,這次單純是因為有個人委託我去幫他建構這個開源專案。因為前前後後遇到的坑有點多,所以這邊做個筆記。說明上主要以自己理解為主,可能會有不正確的地方,還請各位玩家多多包涵。

FF14 中文化、UI 優化與第三方登入

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

注意:本文章所述之內容可能違反 FFXIV 官方使用條款而導致帳號被封鎖,請在確認自己瞭解風險的前提下再操作。

國際服中文化

對於 FFXIV 這類劇本量龐大的 MMORPG,如果看不懂故事內容的話相當可惜。雖然有盛大遊戲代理的中國服可選擇,但是連線問題一直是海外玩家揮之不去的夢魘。

目前大部份的國際服中文化都是依賴中國服的資源--中國服雖然爛線,但對於翻譯的品質仍是相當頂尖的:

Laravel 佈署指南

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

相較於比較現代的程式語言(如 Golang 或 Nodejs),PHP 的佈署是相對麻煩許多的--這主要是因為 PHP 的執行環境需要綁定一個網頁伺服器。

PHP 官方主要支援兩種佈署方式:

  • Apache + PHP Module:較簡單,由 Apache 統一管理 PHP 的生命周期
  • PHP-FPM:能夠搭配大部份支援 FastCGI 協定的 Web Server

註:在大部份應用情境下,Apache + PHP Module 會比 Apache + PHP-FPM 慢上一些,尤其是當 Apache + PHP-FPM 時可以啟用 Event MPM,相較於傳統的 prefork MPM 而言可以快上 50%