自行透過 Docker 建立 WordPress 網站

Heresy 自己使用 wordpress.com 提供的 WordPress 系統已經超過十年了,用的還算滿習慣的;但是由於都是使用別人架好的系統,所以其實對於要怎麼架設,並沒有很認真地研究過。

而這篇則是紀錄一下,Heresy 在工作的地方,自己在 Ubuntu Server 上,透過 Docker 架設 WordPress 的紀錄。

首先,這邊參考的是《使用 Docker Compose 架設 WordPress 環境》這篇文章,他的專案放在 GitHub 上(連結)、可以直接使用。

在他的架構下,實際上是透過三個 docker 的容器來建立一個 WordPress 的服務:

  • db:資料庫、使用 mysql:8.0.20
  • wordpress:PHP FPM 服務、使用 wordpress:php7.4-fpm-alpine
  • webserver:網頁伺服器、使用 nginx:latest

閱讀更多»

在自架 GitLab 使用 Kroki 來繪圖

自己架設的 GitLab Server 上,管理者其實有相當多的設定可以調整,也有相當多的外部服務可以整合來一起用。

其中一類,就是讓使用者可以在 Markdown 的文件(包含 wiki)中,使用特殊的語法來繪圖。

比如說,當單純用文字比較難說明的時候,就可以透過簡單的語法來描述,系統會自動把這些描述轉換成圖像,幫助其他人來了解。

GitLab 在這部分,提供了 PlantUML(官網) 和 Kroki!(官網) 這兩套服務可以整合,讓使用者可以自行設定要使用的服務網址。

像右圖就是一個用 PlantUML 的語法畫出來的圖;要畫這樣一張圖,他的語法如下:

閱讀更多»

GitLab 切換到 https 的紀錄

Heresy 之前自己架的 GitLab Server 的時候,由於是純對內的服務、沒有對外連線,所以要使用 GitLab 內建的 Let’s Encrypt(官網)來取得 SSL 憑證有點難度,所以當時就決定先用 http 來跑、而沒有用 https 了。

後來,手邊其實也有對應網域的 SSL 的憑證了,GitLab 的 SSL 設定也研究得差不多了(官方文件),所以就決定花點時間、把他從走 8080 port 的 http 轉換到標準的 443 port https 了。

而這篇,就是轉換的一些紀錄。

閱讀更多»

刀劍神域記憶重組 公告變更記錄產生器

之前有說過了,Heresy 為了自己在玩的手機遊戲《刀劍神域-記憶重組》另外弄了一個部落格來做紀錄(網址)。

而實際上,之前由於覺得遊戲內的公告由於不是照著更新時間排序、要找到哪個公告是新的實在很麻煩,所以就火大,自己試著想辦法去做公告的變更紀錄了。

搞了老半天,弄出了一個使用了兩個 Git repository 的奇怪架構系統,算是勉強做到堪用的程度了~

目前的成品是:https://kheresy.github.io/SAOMD-AA/changelog.html
而實際在運作的專案則是 https://gitlab.com/kheresy/saomd-announcement

閱讀更多»

PHP 奇怪的 session_start 失敗問題:UTF-8 BOM

最近在弄新的系統的時候,同事在 Windows 上寫的 PHP 程式在要搬到 PHP Apache Docker 的時候,出現了一個奇怪的問題;那就是它會出現下面的錯誤:

Warning: session_start(): Cannot start session when headers already sent in 
XXX.php on line X

這個錯誤還算滿明確的,基本上就是在呼叫 session_start() 這個 PHP 的函式之前,就先粗出了其他的內容所造成的。

但是仔細檢查過檔案後,卻發現其實根本沒有輸出任何東西啊?

閱讀更多»

Boost ASIO WebSocket Server 網站憑證設定

Heresy 這邊很早之前,就有開始使用 WebSocket++ 來開發自己的 WebSocket Server;而後來其實也有改用 Boost.Beast 來做同樣的工作。而這兩套函式庫的底層,其實都是 Boost::asio(官網),所以其實在某些地方還滿接近的。

而之前用起來都還算很正常,不管是老老的 IE 還是 Chrome 都可以使用,在有申請 SSL 憑證的情況下,就算建立加密的 WSS 也是可以正確使用的。

但是,前陣子當想使用 node.js(官網)來進行 WebSocket 的連線的時候,卻發現會出現「unable to verify the first certificate」的錯誤。

閱讀更多»

檢查網頁的表單資料的方法紀錄

這篇算是自己在幫不是自己寫的網站找 Bug 的時候,找的一些方法的紀錄。

基本上,主要是從前一陣子開始有在用某些政府單位的網站系統,結果被告知送出的表單內容出了一堆錯誤,結果搞到自己火大,只好自己開始找錯誤是怎麼發生的了。

由於網頁不是自己寫的,後台也沒有權限看,也沒有系統可以查詢,所以只好靠瀏覽器來找看看表單送出的狀況了。

由於操作系統時是使用 Google Chrome,所以接下來要找問題,當然也就是使用 Chrome 了;而基本上的操作,都是按下 F12 叫出 DevTools 後再開始的~

閱讀更多»

在 JavaScript 用 SIMD 來計算,讓網頁的程式更快

大家覺得現在 JavaScript 的程式效率怎麼樣呢?如果對於計算速度不是很滿意的話,那這個消息對你可能就很重要了~

這邊主要是 Intel 和 Google 和 Mozilla 這兩家瀏覽器開發廠商合作、試著要讓瀏覽器上面執行 JavaScript 程式的時候,也可以透過 SIMD(Single Instruction, Multiple Data、單一指令流多資料流)的形式、來使用 CPU 上的指令集進行向量化的計算、藉此來加速。而在目前的測試結果裡面,效能是可以增加到本來的 2.7 – 11.8 倍的!

閱讀更多»

瀏覽器的統一指標事件:Pointer Event

在早期的瀏覽器,輸入的事件其實相對單純,只有考慮到滑鼠和鍵盤兩種;而當時的滑鼠事件,其實就是 clickmousedownmouseup 等等的事件(Mouse Event、參考)。但是當手機、平板開始流行時候,再行動裝置上的主要操作介面,已經從滑鼠變成是觸控了~

由於觸控和滑鼠的操作邏輯,算是有根本上的差異的,再加上大部分的裝置又支援多點觸控,所以雖然瀏覽器大多會把觸控的事件對應回傳統的滑鼠事件,但是如果希望能有更細緻的操作,傳統的滑鼠事件是不夠用的。

而目前 W3C 針對觸控操作的部分,則有兩種事件模型可以使用,其中一個是專門為了觸控設計的 Touch Event(W3C),這應該算是目前大部分行動瀏覽器所支援的事件架構;而另一種,則是由微軟所提出的、試圖統一所有指標裝置的事件架構、Pointer Event(W3C)。

閱讀更多»