bookmark_borderAdvent of Code 2024

一年一度的 Advent of Code 又來了,應該不需要多說了吧。

這裡就來順便更新一下我的近況好了。最近工作上遇到了一些狀況,比較不怎麼有心力去做之前計畫好的事;去年這時說到的 AoC 相關的東西的收尾結果一丁半點都沒動還是卡在那裡,然後接下來有一個我想丟出來的東西會要趕快先搞定。因此就變成了連續兩年空轉的部落格……

11 月時倒是因為這樣跑去做了另一個人的算是熱身賽 (?) 的站叫 Everybody Codes (有他的參賽者貼去 Advent of Code reddit 版我才知道的),照這站長的計畫好像未來應該都會在 11 月時出新題,而今年他的題目雖然有一點偏 (最後這兩週我沒引入我的 BFS/A* 函式庫的次數好像屈指可數),不過確實算是滿用心在做的。期待未來有沒有更有趣的東西。

那麼照例文章押 12/1 發出,但接下來每天都會更新當天的題目心得;以及一直都有的 github repo 連結

Continue reading “Advent of Code 2024”

bookmark_border站台更新

台灣時間 7/9 晚上到 7/10 晚上,連到本站來的人可能會有連線不一定連得上的問題。這篇文章發出時應該已經解決了,放個一兩天看還有沒有什麼狀況吧。

事情是這樣的:7/7 一早我收到信說我這個域名 *.cruciferslab.net 的 wildcard HTTPS 憑證快過期了。想說我應該早在域名剛拿到那陣子就設好自動更新的 (對,看上面憑證可以看到我是用最容易拿到的 Let’s Encrypt 憑證,我收到的這信就是他們發給我的) 所以在上班前快速連進了放那個憑證的機器1看了一下狀況。

問題其實很簡單:我這個域名當初是從 Google Domains 註冊的,不過他們前陣子被 Squarespace 買下來了,所以設定就轉到了 Squarespace 上去。Wildcard 憑證會需要進行 DNS challenge 表示你真的是這個域名的擁有者;之前好像 Google Domain 的 DNS 還能用所以還能更新,但現在似乎不行了的樣子。於是自然想說看能不能在給 Squarespace 管的狀況下來做更新,但找了半天的結論是:Squarespace 似乎因為主力在網站建置的關係,把 HTTPS 憑證這回事給綁定在你要用他們家的建置網站裡,有的話就會自動幫你弄;要手動弄不是不行,但 DNS 他們限定在你只能用網頁介面進行更新,所以如果申請效期比較久憑證的話久久做一次是不會太麻煩,但 Let’s Encrypt 基本上是兩個月更新一次2,不給我自動化這實在很討厭……

然後找到了 reddit 上另一篇在 r/nginxproxymanager 的文章,該文章的原 PO 看起來跟我的狀況很類似,也是從 Google Domain 移到 Squarespace 然後在找方法自動設定憑證更新,不過看起來他在沒找到解決方法之下搬家到 Cloudflare 了。稍微研究了一下 Cloudflare 的設定,看起來只要把 DNS 給 Cloudflare 管理,就能用這個 plugin 設定自動更新憑證了,所以就決定這兩天把 DNS 搬進 Cloudflare 了。

開頭說的這段時間就是我把 Squarespace 的 DNS 設定解除 (主要是 DNSSEC),把 DNS 解析主機設定成 Cloudflare,等它傳播更新完成,再在 Cloudflare 這邊把 DNSSEC 開回來的時間。中間還因為在 Cloudflare 當中的設定讓站點吃了無限重導向迴圈……3 當然在那之後憑證更新就順利完成了。

不過這讓我在考慮一件事:Cloudflare 本身也是域名註冊商,既然 Squarespace 以網站建置為主,其他相關服務為輔,那我好像把網域註冊也搬進 Cloudflare 來能做的事會更多的樣子?(順便像現在這樣直接用他們的快取服務,這樣我不用煩一堆人一直來攻擊這裡……) 只是搬家好像一般要跟著展期一年,我這次續購還剩下半年有點不太確定要不要就這樣提前展期,還是等到年底再來搬家……?

(說起來,要說需要更新的東西,最近因為 regreSSHion 檢查了一下,發現跑這個站的這台 VM 用的映像檔的作業系統 LTS 剛到期,大概需要找個時間來升級了……預期一下這個站在近期的某個週末會停機個幾個小時吧。)

註腳

  1. 不是放這個站的這台:這台用的是單一域名憑證,只需要我表示 blog.cruciferslab.net 這個域名所在機器是我的,這可以用網址回應解決;這裡出問題的是另一台機器,上面預計是要放我的其他這個域名的東西,雖然現在仍然還是施工中就是了 (倒) 既然是其他 *.cruciferslab.net 的所有網域,要的憑證就需要是 wildcard 憑證了。 ↩︎
  2. Let’s Encrypt 發的憑證效期是有名的短,只有 90 天,這是他們故意設計的,要讓我們這些使用者去設定 certbot 自動更新;certbot 預設在剩 30 天時會更新,所以基本上就會是兩個月要更新一次。 ↩︎
  3. 原因是 Cloudflare 他們的快取服務的 SSL 設定,預設是 Flexible 會在連向來源伺服器時用未加密 HTTP 連線,但我的這兩台機器都有設定未加密 HTTP 會自動重導向到加密 HTTPS,所以就掉進無限迴圈了。把它的設定改成 Full 以上就能解決。 ↩︎

bookmark_border換了一個註腳外掛(X) 改用 WP 原生註腳了

WordPress 6.3 有原生註腳了,試用了一陣子還不錯,然後一年前這篇文章發表時我換了的另一個註腳外掛現在也撤下來了,所以稍微花了點時間來把原先用 fn 標籤寫的註腳改成 WP 的原生註腳。好在我的文章量不多所以改動量也不是很大就是了。

以下是一年前(2022/12/12)的原文:

先前用的註腳外掛結果是個一兩年沒人維護的外掛,然後原開發者因為這樣所以從 WP 外掛庫裡撤下來了。雖然不是不能用啦,但過時的外掛程式碼有沒有什麼問題確實不知道,所以決定換一個最近好像有更新維護的註腳外掛。樣式我盡量做到跟先前差不多了,不過從註腳跳回來的連結從在前面的 ↑ 變成在後面的⬆️了;這個外掛好像沒有把它放到前面的選項所以就先這樣好了。1就用一陣子看看吧。

  1. 原本的預設值是↩️,我有點覺得還是上箭頭比較對。它長得像這樣→ ↩︎

bookmark_borderAdvent of Code 2023

又到了年末 Advent of Code 的時間了。關於這個活動還請參照去年的文章;不過鑑於去年前幾天發生的事情,今年新增了一條「禁止使用 AI 去登入全站排行榜」的規則——並沒有全面禁止 AI,只有不允許使用 AI 讓自己登入全站前百名的排行榜而已。算是個滿合理的限制就是了。

話說這一年來還真的沒多少文章貼出來過……在檯面下做的東西一直有在轉,但範圍稍微大了一點(有一個跟 Advent of Code 相關的東西差了最後那 5% 還沒完成,結果今年的又來了),工作又相對忙了一些(忙到連 GMTK Game Jam 2023 都沒能參加……那個週末整個累壞了),所以一直沒能貼些東西。

那麼照例繼續閱讀之後就是各題的簡要心得 (於是自然有各題的雷),然後也是照例文章押 12/1 發出,但之後每天題目做完都會來更新。原始碼整理在同一個 github repo 上了。

Continue reading “Advent of Code 2023”

bookmark_border西瓜遊戲得分裡的數學

最近這一兩週爆紅的西瓜遊戲,應該大家都玩得不亦樂乎吧?

西瓜遊戲在遊戲本質上來說,其實跟九年前也爆紅過的 2048 是一樣類型的遊戲:在一個相對小的限定空間當中進行物件合併的遊戲。這個「相對小的限定空間」還滿重要的,這也是它跟 Merge-three 類型的休閒遊戲的最大差別:因為限定空間小,填滿的時間相對很快,因此可以快速地在十數分鐘內完成一局再行挑戰,形成一個自然的遊戲迴圈;但 Merge-three 類遊戲的盤面相對大,填滿反而不是主要目的,因此它的遊戲迴圈會建立在多樣化的物件互動上。

不過今天我們不是來談遊戲類型的。大家是否想過,為什麼這個遊戲會有這樣一個天然的 2000、3000、3200、3400 等等的得分門檻在?在玩的過程中應該很少人會去注意到遊戲的得分結構,而大家也只是聽說「達成三千分就算強了」之類的話。這篇文章就來和大家分析一下到底為什麼有這樣的階級出現。

Continue reading “西瓜遊戲得分裡的數學”

bookmark_borderGCJ 2023 Farewell Round C

沒想到今年就是最後一年的 GCJ 了……

這最後一年也不是一個完整的賽事年,而是就簡單地在 4/15 平行開四個難度各有不同的回合做為 Farewell Round,就此告別大家了。根據 FAQ,這四個回合的難度分配是這樣子的:

考慮到我這幾年的 GCJ 大約都在 R2 落馬,Round B 若是約 GCJ R1 難度的話我應該相對輕鬆,所以決定這最後一次就以 Round C 作結吧。

……然後就發現好像咬太多了,最終成績是 24/100。那麼,這句話也是最後一次用在 GCJ:成績截圖以下有雷。

Continue reading “GCJ 2023 Farewell Round C”

bookmark_borderAdvent of Code 2022

一年一度的 AoC 又要開始了。

為還不知道 AoC 是什麼的人簡單介紹一下:Advent of Code,名字取自聖誕日曆 Advent Calendar,是每年 12 月時開始的程式設計解題挑戰。和聖誕日曆一樣,從 12 月 1 日開始每天都有新題目,一直到 12 月 25 日聖誕節為止。每天更新的時間是美東時間的換日,換算台灣時間是下午一點。

題目的故事主題當然就是聖誕節,基本上就是那種「聖誕節快完啦,幫忙寫些程式救救聖誕節」之類的故事;但題目本身則包羅萬象,從簡單的練習題到複雜的微組合語言模擬程式都有,很適合各種不同程度的程式設計練習。就我看來,初階的程式設計學習者應該至少前五到十天不會有問題,有學了一些資料結構演算法的應該可以做到 15 到 20 日,而全通雖然是點挑戰,但也不需要到我這種打過比賽或寫過一堆程式的人,大概資工系大二到大三左右的程度應該就行了吧?

我自己其實曾經在 2018 年時做過一次,不過那年因為各種原因停在半途,一直到去年看到一個我加的 Discord 群裡有要做就又把它撿回來了。去年因為比較閒一點,除了去年當年的題目之外,一路回頭到把 2018 年之後的題目也做完了;今年則是在約一個月前把最早的三年 (2015~2017) 也清掉加入 350 星俱樂部。

這篇文章預計會是動態更新,發表時間是押 12 月 1 日,但會隨著我每天做題目新增當天的簡評。不過鑑於文章更新也要時間,當天的題目可能要到晚上或隔天才會更新。原始碼整理在 github 上了。

繼續閱讀以下就是各天的題目了。

Continue reading “Advent of Code 2022”

bookmark_border經過二十年,終於又被打越擺了一道了--AI: The Somnium Files -nirvanA Initiative- 全雷(且帶打越舊作品的核彈雷)的心得

AI: The Somnium Files 系列經過三年之後的第二作,劇本還是我們熟悉的那個打越鋼太郎。標題那一句話是我剛全破之後的簡短感想,不過仔細想想還真有必要來好好寫篇文來講一下到底這是什麼意思。

跟前作一樣,這作的主劇情是離奇殺人事件的調查;前作是左眼被挖出來,這作則是被縱剖成兩半的屍體。比起前作誇張的設定是,一個人的兩半屍體竟然相隔六年在兩個地方被發現:六年前,在前作結束後的三個月後,很多我們很熟悉的前作角色加上本作的新主角龍木來斗在攝影棚中目睹憑空出現的右半身;六年後,當年的小鬼瑞希也成為了 ABIS 的搜查員,在體育場正中間發現了同一個人的左半身。我們就是操作這兩個主角 (龍木跟瑞希) 來解開這個被稱做 Half Body 連續殺人事件的離奇案件。

雙主角已經不是打越第一次寫了;《Ever17》、《Remember11》、《12Riven》都是雙主角的故事,但在過了這麼久之後再度回來寫雙主角果然還是很有野心。也是因為隔了這麼久,才會完全沒注意到一件事……不過這就後面再說了。

這篇會跟前面那篇 DDLC 心得一樣,繼續閱讀之後會先有一段比較沒捏的東西,在要進入核心之前會有再一層防雷;不一樣的是前面那篇只有捏 DDLC 系列而已,這篇的後半會把打越鋼太郎的許多知名作品爆梗爆光光。還請多加注意。

Continue reading “經過二十年,終於又被打越擺了一道了--AI: The Somnium Files -nirvanA Initiative- 全雷(且帶打越舊作品的核彈雷)的心得”

bookmark_borderGKS 2022 Round C

結果晚七其實也不是什麼好時間。還好 GKS 的難度一般來說偏低,所以中間跑去邊做事邊想題目還是可以的。

破台時間是比賽終了前 15 分鐘,排名 188 名;不過如果不計滿分魔王 Q4 大測資的話,到 Q4 小通過的時間是 1 小時 23 分鐘,大約才用去一半時間而已。

照例分數截圖以下有雷。

Continue reading “GKS 2022 Round C”