為什麼不能用 Google Apps Script 直接開啟連結?

如果是透過 Google 搜尋點進來這一頁,大概也已經翻遍 Stack Overflow 了吧。

翻到的所有教學都會告訴你,從 Google Docs 或 Sheets 透過 Google Apps Script 取得連結或是 HTML 後,要多使用一層 HTML 製作連結給使用者點擊(通常是透過 Ui 物件)。

到底是為什麼非得要多這一層呢?不能直接叫瀏覽器重新導向嗎?

原因是 Apps Script 會使用 HTML5 的 IFRAME 沙盒功能,導致在 Google Docs、Sheets、Forms 中,自訂指令碼不會呼叫瀏覽器重新導向至回傳的 HTML,用意是避免使用者接觸惡意的 HTML 或是 JavaScript。

當然也還是有特別手段,就是在多出來的那一層 HTML 自動幫使用者點擊,也就是呼叫 click()。雖然功能上是有到位,只是我覺得這不算真正解決啦。
https://stackoverflow.com/a/47098533

參考資料:
https://developers.google.com/apps-script/guides/html/restrictions

如何在 Visual Studio 的起始外部程式設定使用相對路徑?

最近在研究 Photon Server,跟著官方的建議,偵錯的時候啟動外部程式,來執行剛建置好的 dll,但設定完竟然顯示「找不到外部程式,請輸入有效的可執行檔」……。

嗯?為啥?路徑沒錯啊?

閱讀全文〈如何在 Visual Studio 的起始外部程式設定使用相對路徑?〉

給遊戲業新人的找工作建議 履歷篇

如果你符合下列任一條件:
● 就讀相關科系,準備要找第一份工作的新人
● 不是相關科系,想要轉職到遊戲業,但不知該注意什麼
● 你覺得你需要這篇文章

再加上:如果你的角色定位是軟體工程師,那麼這篇文章就是為了你而存在的。
如果是美術人員、設計師、專案管理……等等,雖然我在這些專業領域實在沒有立場給什麼好建議,不過我相信概念都是相通的。

為什麼要寫這篇文章?

最近幾個月幫忙看履歷跟面試,覺得太多新人的履歷沒有好好調整,面試沒有好好準備,甚至根本不知道該怎麼準備,所以有感而發覺得好像該寫篇文章。雖然我覺得這個主題應該已經爛大街了,這些資訊應該都 google 的到啊!

閱讀全文〈給遊戲業新人的找工作建議 履歷篇〉

[Unity] 如何重設執行檔的解析度?

由於教學目的寫了個小遊戲,打算建置出來確認適合的解析度。(我在Game視窗確認過了,不過還是得調整Player Settings的設定,通常都會建置出來再三確認)

原本設定成800 * 1280太大了,打算調成500 * 800,結果重新建置後發現解析度沒有變小……。於是我(又)想起來Unity執行檔在執行的時候,會在系統內寫相關的設定檔,而且不會覆寫,所以怎麼重新建置都沒有用……。
閱讀全文〈[Unity] 如何重設執行檔的解析度?〉

MVP Pattern: Part 3 黑白棋範例 之一

我們要實做的是黑白棋(Othello),做為一個簡單的棋盤回合制遊戲,加上使用者需要透過介面來進行操作,因此適合做為MVP的使用範例。

基於篇幅,範例分成2篇來編寫,本篇Part3與下一篇Part4。
Part3描述如何利用MVP來實現棋盤邏輯。Part4接著講解如何加入玩法邏輯,以及MVP區塊如何與其它程式邏輯來溝通。
閱讀全文〈MVP Pattern: Part 3 黑白棋範例 之一〉

MVP Pattern: Part 2 Supervising Controller

Supervising Controller與Passive View的不同點在於,它允許View直接獲取Model的資料,獲取的手段可以透過事件附帶的參數,或是透過事件通知後,再自行獲取資料。

雖然講是這樣講,但對於還不認識MVP的人來說,應該還沒理解到Supervising Controller的模糊地帶。
閱讀全文〈MVP Pattern: Part 2 Supervising Controller〉

Git For Beginners: Part 2 基本操作

在介紹基本指令之前,先來簡單的解釋一下Git的基本概念

實際上,除了Git的遠端數據庫有一份資料之外,每個專案成員的這份專案,實際上都是一份複製品。因此,我們使用Git的基本概念,實際上就是把自己在複製品上的資料改動,同步給遠端數據庫。
閱讀全文〈Git For Beginners: Part 2 基本操作〉