思元的開發筆記

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

多人網路連線遊戲程式開發之讀書筆記:同步遊戲資料,資料序列化與物件複製,處理網路延遲與伺服器安全性

Multi-Player Game Programming ,這是一本介紹如何建置多人網路遊戲程式的書,提到許多關於網路遊戲傳輸的重要概念,例如如何同步遊戲世界資料,如何讓遊戲玩起順順不卡頓 (lag)等等,以及多人遊戲會遇到的困難與挑戰,有志朝網路遊戲程式設計可以閱...

LeetCode #42 Trapping Rain Water

Given n non-negative integers representing an elevation map where the width of each bar is 1, compute how much water it is able to ...

LeetCode #37 Sudoku Solver

Write a program to solve a Sudoku puzzle by filling the empty cells. Empty cells are indicated by the character ‘.’. You may assume ...

LeetCode #32 Longest Valid Parentheses

Given a string containing just the characters '(' and ')' , find the length of the longest valid (well-formed) pare...

LeetCode #25 Reverse Nodes in k-Group

Given a linked list, reverse the nodes of a linked list k at a time and return its modified list.

LeetCode #23 Merge k Sorted Lists

Merge k sorted linked lists and return it as one sorted list. Analyze and describe its complexity. 在這次問題中,嘗試使用 Go 來實作三種不同的解題方式,總結其複雜...

AWS Beanstalk: Go WebApp 部署筆記

記錄前陣子將使用 Go 所寫的網路服務 (Restful API server),部署到 AWS Beanstalk 的筆記記錄,讓未來部署除了官方文件外,還有一個參考筆記。

LeetCode #10 Regular Expression Matching

'.' Matches any single character. '*' Matches zero or more of the preceding element. The matching should cover the e...

Unity AssetBundle 資料列表載入以及打包架構思考,使用 Pokémon 作為範例

最近社群有看到有人詢問,關於如何在 Unity 中,設計敵人列表的 AssetBundle 資源加載架構設計,例如之前釋出一版本包含敵人 A, B, 以及 C 種類,在之後又追加敵人 D 以及 E 的資料,要如何處理這多出來的資源載入,使得原先的資源可以不用重新下載,只需要...

OpenSSL 建立 CSR 找不到 openssl.cnf 錯誤處理

在處理申請 SSL 用的憑證 (Certificate) 所遇到的問題,向憑證簽發商 (Certificate authority, CA) 申請憑證前,需要先建立準備 CSR (Certificate Signing Request),而透過 openssl 指...

LeetCode #6 ZigZag Conversion

記錄 LeetCode #6 ZigZag 思考解法的過程筆記,並使用 Go 來實作。

Unity 根據美術需求客製化 Sprite shader,基於官方 shader 開始改起

在社群中看到有人詢問 2D 遊戲上的特殊效果如何製作,從需求中得知這種要求,能直接改 shader 是最快了,畢竟 shader 可以決定每一個 Pixel 最終呈現顏色的可程式化著色器 (Programmable shader) 呢。因此就好奇跟作者 Leo Wang...

LeetCode #1 #167 #653 Two Sum

最近再嘗試使用 Go 來解 LeetCode 上的題目,剛好解完這三個非常相似的簡單題目,因此寫下筆記紀錄。

Golang Iterator Channel Implementation

這是一個關於 Go 的程式研究紀錄筆記,原先設計一個迭代器的操作模式 (Iterator pattern):

MariaDB (MySQL) UUID 優化之儲存方式 (storage)

最近專案的資料庫調整,由於有使用到 UUID,再煩惱怎麼要儲存減少資料量,讓之後的索引建置能夠更有效率,原先的儲存方式為 char(36) 想必是超級浪費空間的作法。

Unity AssetBundle 快取機制與載入範例

前陣子看到有人詢問關於 AssetBundle 載入以及其快取機制 (caching) 的處理問題,因此整理這篇筆記,供之後給團隊解說與教學之用。

TCP 連線狀態機制與流程

在開發基於 HTTP 的網路應用服務時,當有大量連線要求,或是與長連線 (Persistent connection) 要求時,常常遇到底層 TCP 的連線斷線錯誤,導致服務不穩定。因此研究了解 TCP 的連線狀態機制,並嘗試用自己的方式整理筆記,希望能從基礎知識中找到...

由 Golang 程式碼產生 Restful API 文件,使用 Swagger 規範 (OpenAPI 2.0)

Swagger 是一套 RESTful API 描敘語法,近期發展改名成 OpenAPI 規範 ,其生態系統工具也發展相當強大,不僅能從 Swagger 轉換成可互動式的網頁說明文件,產生特定的程式語言的用戶端實作 (client implementation),也可以...

Unity Prefabs 之使用方式筆記

Prefab (預製物件) 是在 Unity 中經常被使用的機制之一,能將 GameObject 以及其 Components 的屬性狀態儲存為單一個 Asset。當 Prefab 屬性調整時,Unity 能夠自動更新放置在場景 (Scenes) 中的實體物件 (Prefa...

Unity 載入外部檔案機制之整理筆記

最近看到社團一些詢問 Unity 載入外部設定檔的問題,因此整理若要在 Unity 中實作外部載入的功能,有哪些機制可以使用以及比較。

COSCUP 2017 議程筆記微感想

之前參與 COSCUP 2017 的小筆記與感想 (2017-08-06),記得當初為了搶這票券,也是費了一番苦心。但計畫總是趕不上變化,這次只有參加第二天的議程,除了外面的攤位有去走了一圈逛逛外,大部分都在 Golang 社群議程場內活動。

使用 xcode 取得 iOS 設備的即時 log

記錄如何取得 iOS 設備的即時 log (runtime logs) 筆記,有 log 才有辦法拿到錯誤訊息,而錯誤訊息 (error message) 可用來分析為什麼會造成 crash,才能進一步去修正其錯誤。 對於較熟悉 Android 自己來說,這功能比較...

Accupass 瀏覽擴充功能,使用 Javascript + TamperMonkey 自製自動加載頁面

提示:發佈文章前發現其網站改版,以下腳本是針對 舊版本的活動瀏覽 Accupass 活動通,是一個集結各式活動並販售活動票券網站(亦可參考另一個同類型的網站 KKTIX ),自己蠻常在活動通上瀏覽活動,讓自己的下班生活能夠多點變化,接觸職場沒機會接觸的議題與活動。

Evernote to Blogger,第一次在 Golang 聚會中分享個人專案

What is this Evernote to Blogger 是一個自己的個人專案,主要是要解決自己的發佈文章的痛點,串接 Evernote 以及 Blogger APIs,使得發佈文章流程更能簡化的專案。

使用 Golang 串接 Google Blogger API,張貼文章與上傳圖片

個人專案需求,建置較容易發佈文章到部落格的流程服務,使用 golang 串接 Google Blogger API,將文章文字以及其圖片上傳到 Blogger 平台。Google 已經在 Github 上發布專為 golang 所準備的 SDK 實作,其中包含管理部落...

建置 Unity iOS xcode 專案遇到的錯誤與解決方案 (Linker error)

建置 xcode 專案丟出的錯誤訊息:Undefined symbols 最近要在 Unity 建置 iOS 專案遇到的錯誤問題,第一次跑整個建置流程,先在 Unity 執行遊戲建置產生 xcode 專案,再開啟 xcode 專案進行 app 打包建置,但卻遇到以下 li...

台北開發者論壇 (TGDF 2017, Taipei Game Developers Forum) 會後感想雜談

想要從論壇中獲得些什麼 這次是第一次參加 台北遊戲開發者論壇 ,想看看論壇中到底有什麼,事前也沒有特別查看議程以及講者,就報名了這場遊戲論壇,結束後的反省是,應該要意識自己想從論壇中獲得些什麼,在報名前就應該先查清楚論壇的目標受眾是哪些人,想清楚想從議程中獲得些什麼,...

Blogger 使用 jQuery jScroll 實作無限捲頁,自動載入更多文章 (Infinite scrolling)

無限捲頁 (infinite scrolling),或是被稱為其他名字,自動換頁 (auto pagination),無限滾動 (endless scrolling),無限頁面(endless pages) ,或是懶加載 (lazy loading) 等等…。主要目的是...

Evernote SDK for Golang 自行建置、使用範例以及開放授權流程 (OAuth)

由於個人需求需要能從 Evernote 下載筆記以及資源,但官方網站沒有能看到 SDK for Golang,且官方 Github 帳號中也沒有看到,想必目前是現在還沒有正式支援吧,也可能是 Golang 開發者還不常接 Evernote……。

Unity 開發者大會筆記 2017,優化x優化x優化

紀錄這次參加 Unity 開發者論壇,比較有印象的場次筆記。因為是開發者大會,所以大多是聽技術專場,而很大一部分都是在討論遊戲優化的議題。如何讓遊戲效能能夠穩定 FPS 60 以上,讓玩家擁有較好的遊戲體驗,而不是玩起來卡卡的,這是一個相當重要的議題。 而遊戲優化議...

學習 Unity 自製編輯器需要知道的三個管道 (Custom editor programming in Unity)

Unity 現在算是台灣業界常用的遊戲引擎之一,其功能不僅協助開發人員快速開發遊戲外,還提供讓開發人員自訂專案所需要的編輯器 (Editor)。 一位資深的程式設計師不僅得學習如何使用 Unity,撰寫架在 Unity 上的專案程式碼,甚至還需要學習如何開發 Unity ...

Unity 專案中 *.meta 做什麼用

最近團隊有人詢問 Unity 的 GUID 機制,在思考回答的過程中,順便把它整理成這篇筆記。如果要尋找能夠與工程團隊合作的 Unity 工程師,我想這一題應該會列在考題之中,meta 檔是做什麼用的?如果能回答出 Unity GUID 追蹤資源的機制,相信已經能夠滿足團隊...

There are inconsistent line endings in the 'SomeScript.cs' script. Some are Mac OS X (UNIX) and some are Windows. 的處理方法

Unity 使用上常常遇到的警告,經常從 Unity Project 點選程式碼,使用預設的 IDE - Visual Studio 編輯程式碼後,回到 Unity 等待編譯完成後,會遇到丟出來的警告訊息:

Unity Coroutine 使用筆記

最近有人問為什麼 Nested coroutine 的機制與問題,為什麼會是需要 yield return StartCoroutine(...) ,而不能省略 StartCoroutine ?在久遠的 Unity3.x 時代,印象中得呼叫該函數才能夠正常運作。...

Golang HTTP Request 遇到的坑:An operation on a socket could not be performed because the system lacked sufficient buffer space or because a queue was full.

之前服務要上線前,開始跑內部測試發現的問題,從 Event log 留意到服務會自動關閉,從中找到錯誤訊息如下:

Unity AssetBundle Variants 機制研究筆記

最近使用 AssetBundle Variants 機制來打包遊戲專案,紀錄打包遇到的問題以及解決筆記。關於 AssetBnudles 機制可以參考 系列文章 。

如何在 Unity 中實作場景資源參照 (SceneAsset Reference)

社團中看到有人問如何建立場景參照 (Scene Reference),當改變場景檔案名稱時 (*.unity),其 Reference 不會消失的功能,激起一點好奇心研究。查看 Unity 本身沒有提供該功能,Unity 場景管理 (SceneManager) 都是靠場景...

在 Unity 使用 AssetBundles 實作進階的遊戲資源打包以及更新機制

在 前篇文章 中,我們僅是將所有遊戲資源(Assets) 包在同一包 AssetBundle,這會造成小量的資源更新,玩家得重新下載這一大包的 AssetBundle 才行,造成遊戲體驗變得很糟,且也會造成伺服器流量負擔。 在這篇文章裡,我們將考慮開發者所設定的 Ass...

在 Unity 使用 AssetBundles 實作簡易的遊戲資源打包以及更新機制

Unity 官方之前在 Asset Store 上有分享 AssetBundle Manager ,並提供官方教學文章介紹 AssetBundle 載入機制,我們參考該教學以及範例,因應遊戲設計考量,自己使用 Unity 提供的底層 AssetBundle API,製作...

Unity AssetBundle 載入後,出現粉紅色區塊的問題與解決

Model is Unity Chan . 之前遇到的問題,當遊戲採用 AssetBundles 機制加載場景資源後,會發現有些場景問題變成粉紅色的,記錄問題以及解決方案。 Note: 使用版本 Unity5.5.x 粉紅色的色塊 遊戲因為動態更新以及手機平台上架...

Calculate file's chunk MD5 checksum using Golang

由於工作需求,需要將檔案先分塊 (chunk),計算每塊的 MD5 checksum,而大部分的 tools 都是算整個檔案的 MD5 checksum,想說這樣的功能應該不會很困難,因此使用 Golang 寫一小段 CLI (Command line interfac...