思元的開發筆記

關於 web service, unity, blogger 等軟體工程筆記

Github SSH 連線設定,確保 Mac SourceTree 正常運作

前陣子在 Mac 上使用 SourceTree 這套 GUI 工具來管理 Github repositories,但由於帳號因安全性考量改用 2FA (Two-factor authentication) 認證後,原先在 SourceTree 採用 HTTPS 利用帳...

Senior Unity Developer 面試題目分享

分享前陣子尋找新機會所遇到的 Unity 考題 ,十分有水準與微難度,事後回想並整理成此問題筆記。關於該機會的綜合心得放置在文章頁尾。

Go Reader Pattern 設計與實作

最近在寫小專案所遇到的設計問題,其中一個目標是從檔案中讀取英文單字 (word),並且將其轉換成英文小寫,因此記錄如何在 Golang 設計此機制,並且不斷改進寫了三個版本,並撰寫額外的測試程式碼 (testing code) 進行驗證。

Unity 遊戲存檔機制淺談,加密 (Encryption) 保護遊戲存檔防作弊

延續在 前一篇文章 中的議題。 前題,任何的加密機制只是增加破解難度,單機遊戲存檔若沒有特殊硬體的保護,幾乎都可以被破解,光是程式碼反編譯 (decompiling) 並且分析程式碼,便能知道該遊戲如何處理存檔加密,甚至能直接拿到加密用的金鑰 (key)。

Unity 遊戲存檔機制淺談,關於壓縮 (Compression) 的三兩事

延續在 前一篇文章 中的議題,在遊戲存檔進行壓縮 (compress) 後儲存,可減少其儲存所需空間,之後讀取先經過解壓縮 (decompress) 後,再反序列化 (deserialize) 還原成遊戲狀態物件來使用。

Unity 遊戲存檔機制淺談,從序列化 (Serialization) 到儲存裝置 (Storage)

之前在社團看到的有趣問題,因此綜合以前的開發經驗,整理成這份筆記。

Unity rendering order 整理筆記

自從上次 GameJam 體驗在 Unity 中,使用 SpriteRenderer 可直接調整 Sorting layer 來決定 render 順序後,便一直很好奇其背後實作到底是什麼,為什麼改變一個數值便能調整 sprites 在 render 結果的先後順序,而不...

AWS Beanstalk: 日誌 Logs 推送到 CloudWatch 之設定筆記

參考 Reference 章節的 AWS 文件,紀錄如何將部署 在 AWS Beanstalk 的服務所產生的日誌 (logs),設定 CloudWatch Logs agent 來自動推送至 CloudWatch,而不用每次發生問題得自己花時間去撈 logs……。 ...

CentOS 7 環境安裝筆記,GUI/gcc/g++/Code::blocks/Go 完整的 Go/Cgo 開發環境

整理之前在 Linux 建立 Go/Cgo 開發環境的安裝筆記。

HTTP TimeoutHandler 所踩到的雷與解決方式,需要額外判斷 Request.Context() 的狀態

最近遇到在 HTTP 伺服器壓力測試時遇到棘手的問題,從 nginx logs 發現伺服器回應許多 HTTP 503 service unavailable 的錯誤,一路追蹤最終發現是程式碼實作錯誤,記錄其筆記提醒自己不要忘記這個雷。

Go build 建置時加入時間 (build time) 與版本號 (git commit id)

因應合作廠商需求,希望我們這邊提供網路服務 (web service) 的執行檔 (executable),能透過某些方法知道其版本號或是建置時間等資訊,以協助其 IT 人員部署 (deployment) 時使用。

Go with Cgo 靜態連結 (static linking) 函式庫建置範例與筆記

延續上一篇 Go with Cgo 動態連結 的文章,由於部署 (deployment) 需求的改變,合作廠商 IT 運維技術人員 (Ops) 對於 Linux 的不熟悉,期望部署不需要管理那些動態連結 (dynamic linking) 函式庫,因而開始研究改用靜態連...

Go with Cgo 動態連結 (dynamic linking) 函式庫建置範例與筆記

在 上一篇文章 中,已經知道如何在 Windows 中,利用 gcc/g++ 建置動態連結函式庫 (dynamic-link library),本篇文章筆記如何在 Go (Golang) 中,利用 cgo 來動態連結函式庫,呼叫使用其函式。

在 Windows 環境建置動態連結函式庫 (Dynamic-link library),使用 MinGW gcc/g++ 以及 CodeBlock

整理在 Windows 環境下,編譯 C/C++ 產出動態連結函式庫 (Dynamic-link library) 給其他專案使用的筆記。 大部分的情況下,在 Windows 作業系統中,通常都使用 Microsoft 所推出的 Vistual Studio IDE 來...

開發 Blog 文字雲工具,統計部落格字詞出現次數

空閒時間開發的小工具,能夠統計部落格 (Blog) 文章字詞數量,然後根據字詞出現頻率,組合畫在一張圖片上的功能。 建議使用桌機電腦 (desktop),以避免繪製文字雲效能的低落 這功能記得從 2017 下半年就想嘗試,然後一直拖拖...

Heroku with Golang,如何部署第一個 WebApp

Heroku 是一套支援多程式個語言的雲平台即服務 (platform as a service, PaaS),只要將程式碼上傳到該服務中,便可上頭自動編譯執行,建造自己的網路應用程式,且該服務提供免費試用方案 (有限制的),又有支援 SSL (https)。

Linux CentOS Network unreachable 處理解決方式

最近在 VMware VMPlayer 的虛擬機器上安裝 CentOS 7,準備進行需 Docker 環境測試與研究,但卻發現沒有網路……跟以前安裝 CentOS 6 情況不同,當時可是直接有網路的,花點時間整理啟用網路的筆記,對 Linux 不熟悉就得花上許多時間研究...

使用 Lighthouse 來檢查網站設定,為了更好的 SEO 以及瀏覽體驗

從新聞得知有這個工具,GoogleChrome Lighthouse 是一套開源自動化工具,用來協助檢查網站 (Website) 或是網路應用程式 (Web App) 的質量 (quality),從讀取效能 (performance)、網頁親和力 (accessibil...

C# 回傳內部資料集合的幾種方式,考慮封裝與設計需求

Game Jam 活動 上遇到的有趣問題,如何設計回傳資料集合 (data collection) 的函式 (function)?筆記以下幾種方式,範例採用背包類別 (ItemBag class),要將其類別的內部道具資料,暴露給其他類別使用。 附註:System.Co...

LeetCode #84 Largest Rectangle in Histogram

Given n non-negative integers representing the histogram's bar height where the width of each bar is 1, find the area of larges...