發表文章

目前顯示的是 2012的文章

AS3 Class Enumeration

筆記筆記..

一般在 AS3 要列舉 Object 的 properties 時,通常會用下面這種寫法:

不過在處理 VO (Value Object) 時則會出問題,因為它是 Class,後來在這篇文章找到解法:

讀書心得 半路叛逃

要在台灣看到遊戲開發的相關書籍其實不容易,其中獨立遊戲開發者的心路歷程更是少之又少。
難得最近書店上出現了一本程式出身的遊戲制作人 半路(猴子靈藥站長)大 的甘苦談,二話不說就買回家看了~

從小就喜歡玩遊戲的我,一直認為遊戲制作人是一個很夢幻的工作,如果我會一直待在遊戲業的話,也希望未來能成為一位獨立遊戲開發者,做自己想做的遊戲!

獨立遊戲開發者 最近還蠻受注目的,尤其前陣子 Indie Game: The Movie 這部紀錄片的播出,真的令人熱血沸騰。

花了兩天中秋假期,把這本《半路叛逃 App遊戲制作人的1000告白》啃完,收獲良多,因此上來寫一篇簡單的書摘。


“1980年代前是經歷過經濟成長起飛的父母長輩,1980後是成長於物質與資訊不虞匱乏的我們”

上一代眼裡認為我們是早熟的一群,因為一切的成長來得太快,但其實隨著學歷要求提高,新鮮人起薪越來越低的情況,延後了我們踏入社會的時間,事實上心理狀態相對起來是晚熟的。
這點台灣跟日本很像,反觀大陸和韓國比較像前者,他們還在衝,還在拼,所以無論是政府還是我們真的都必須在加把勁努力。
其它像30歲焦慮症,工作責任制等...半路在書中也有一些見解。

“早期國產單機遊戲的輝煌年代不在,如今的遊戲業如同製造業工廠般,都在把寶貴的研發能量投注於尋求「可複製的成功模式」,將遊戲「產線化」”。

為什麼台灣做不出百萬銷量的遊戲呢?
只鎖定台灣市場,三國,武俠,博弈,這些都是用到不能再爛的老梗了,別白白浪費iOS,Android 平台為我們開發者鋪好的通路,全球超過一億台智慧裝置的使用者在等著你,“世界從來沒有離我們這麼近過!”只想複製別人的成功模式,緊盯著排行版前10名,然後致敬一款。以為做App是低成本的事,魔鬼藏在細節,這裡有一句話我很喜歡,“會寫程式跟畫圖的人滿街都是,真正能夠做到磨亮細節的才是人才”,學習了。想以量取勝,因為現在的遊戲價格低廉,為了賺錢以數量取勝,亂槍打鳥而失去了品質,其中提到一個概念,「最小可行產品」,不過這在製作遊戲原型可行,用在市場會有問題。只是大遊戲的濃縮版,應該回到最初玩遊戲的感動,而不是將大團隊的開發方式原封不動的搬過來。工廠化思維,只想找低風險的遊戲做。為什麼你不該離職創業搞App 以為日常習慣不需要改變,需要過著沒有收入的苦日子,必須放棄過去奢侈的享受。以為擁有百萬價值的創意,遊戲業中最不缺的就…

COSCUP 2012

今年很幸運的有搶到入場資格,這也是小弟第一次參加 COSCUP,趁現在剛結束滿腔熱血的狀態下來寫篇心得文。

今年 COSCUP 一共有兩天的行程,在中研院人文館舉辦,每個時段都有 3~4 場的分享,不過常常碰到某個時段三場都想聽,也常常碰到某個時段的題目都沒興趣...orz

Day1
第一天忘了做筆記,只好憑記憶跟拿些圖來湊一湊

我的專屬識別證唷>.^
早上第一場是微軟傳教士分享的 Windows Azure 感覺還不錯,而且有繁體中文的介面。
第二場我去聽了 Fred 的 Nodee.js OS,不過我覺得他自己改的 Linux 比較炫。

第三場請到 Penk 大大來 demo 他的平板 UI,印象深刻的一句話是
科技業是唯一比女行時尚還追求時尚的行業我的解讀是幹這行每天都在學新技術 囧..

第四場超讚,講者 demo 他用 javascript 寫的超任模擬器,眼淚都快飆出來了,而且老師很幽默:
目前國外有人正在研究如何用 javascript 寫出一個超任模擬器,如果他成功,那會是全世界第三個,因為前面兩個被我寫出來了XDDD接下來的下午場雖然都有去聽,可是比較沒有什麼印象的點,只記得最後閃電秀的大大們XD,你們實在太讚了!

Day2

難得有位置,明明很晚到...
第一場請到廣達的Ted 先生,本來以為會很無聊,但從頭聽到尾,學到蠻多東西的:
研發的目的 1.不想被外界surprise 2.想給外界surprise不相信外星人就無法創造飛行車要把複雜的東西變簡單其實是最不簡單的設計一個你最討厭的東西 試著把它做好第二場去聽 Tool Objects in jQuery,主要重點:
用 Queue 取代巢狀 Callback
Deferred 可以看做是 Call by future 
$.when 可以用來管理複數非同步的結果 
pipe 跟 when 的關係可以看作串聯與並聯
一些 Callback 常用的 function: add fire once memory unique stopOnFalse differed

第三場的場次是我最掙扎的,有Heroku,有Emacs,有Twitter Bootstrap,還有手機控制家電,都是我好想聽的主題呀呀呀呀,最後選了Bootstrap,因為最近想玩它,主要重點:
Grid system
nav bar fixed top inner
B…

Development Tools

圖片
不知不覺,這個月的文章還沒想好要寫什麼,七月就過了...
這一篇我打算分享一些最近在關注的玩意兒。

Trello Trello 是 Joel 團隊開發,一個專案管理的工具,當然,他是雲端網頁,所以在任何地方都可以掌握團隊的專案進度。
Trello 可以使用 Google 的帳號登入,登入後可以根據專案的開發流程自訂專屬的 Board ,每個 Board 內可以貼上各個項目的 Card,並且可以和專案成員即時協作。
自己本身大概用過兩三套這種PMS的產品,Trello 簡單易用,一個人獨立開發使用也很方便,算是敏捷式開發上不可或缺的好工具。

影片介紹:

另外,Trello 也有提供 iPhone 的版本:
Sublime Sublime 是一個很棒的程式碼編輯器,前一陣子在這篇 Which is the Best Code Editor? 得到很高的分數。
我用過之後也是愛不釋手,漂亮的配色,安裝容易的眾多外掛,不錯的開啟速度,總而言之,大力推薦!!


一些必不可少的Sublime Text 2插件Sublime Text 2 实用快捷键
Cloud9 IDE C9 也是一個寫程式的好工具,可是跟 Sublime 不同的地方,它是雲端網頁版的編輯器。
C9 支援的語言也不少,甚至可以直接跑 Node.js ,並且也支援 Github 的 Repository clone。
不過這幾天用下來發現速度不理想,常常會進入 Offline 狀態。


HerokuHeroku 是一個雲端應用的 host 平台,支援的語言有 PHP Ruby Python Node.js。
Heroku 和 Facebook 合作,讓開發者開發 Facebook 應用程式的時候可以直接連結 Heroku 的空間,並且支援 Git ,目前初步試用下來感覺很不錯。

Travis CI Travis CI,顧名思義,是提供持續整合(Continuous Integration)和每日建構的服務。
不過目前還沒機會使用,所以還不是很清楚它的詳細內容。
Travis CI 可以結合 Github,讓你隨時知道專案的測試狀況。

讀書心得 約耳趣談軟體

圖片
以下是節錄一些這本書覺得還不錯的點
激勵是有害的, 主要是說考績制度對程式設計師是不通的工作切換有害無益, 讓程式設計師只專注一件事情絕對不能把程式碼重寫(這裡不是指重構)冰山一角理論, 冰山有90%是在水面下, 大部分的軟體, 那些漂亮的使用者介面通常只占10%的工作, 而背後90%的程式設是看不到的, 如果再考慮一半時間都在抓蟲, 那使用者介面就只剩5%, 如果只計算介面中的視覺部分, 那客戶真正看到的, 只有1%......, 這並不是秘密, 真正的秘密是非程式人員根本不知道這件事......約耳測試: 你有使用原始碼控制系統嗎? 
SVN, CVS, Git, Mercurial...你能用一個步驟建出所有結果嗎?
準備一個Script擋, 只要執行這個腳本, 就能一次搞定從最新原始碼快照到自動建立釋出產品的過程
你有進行每日編譯嗎?
提交原始碼到版本控制系統前, 一定要編譯並且沒有出現錯誤, 因為別人也想下班你有沒有問題資料庫?
記錄已知的Bug清單, 每筆Bug需記錄:
1.重現問題的完整步驟
2.應該看到的結果
3.實際看到的結果
4.被指派的負責人你會先把問題都修好之後,才寫新的程式嗎?
愈晚修正問題, 之後付出的代價成本愈高你有一份最新的時程表嗎?
程式設計師討厭排時程, 但牽扯到業務人員的決策規劃, 擁有時程可以強迫自己決定要作哪些功能, 並剔除不重要的功能, 以避免過度膨脹
1.使用一些PMS工具
2.時程表簡單就好
3.每個功能應該包含多項任務(Task)
4.只有實際要寫該程式的程式設計人員,才能排出該項目的時程
5.要把任務分的很細(以小時為單位)
6.紀錄最初和目前的估計
7.每天更新已消耗時間
8.把休假時間算進去
9.把除錯時間算進去
10.把整合時間算進去
11.把緩衝時間算進去
12.絕對不讓經理縮短估計時間你有寫規格嗎?例如: GDD TDD
又是一件程式設計師討厭的事情, 設計初期的階段還看不出來, 愈後期程式碼一多修正的代價就愈高, 應貫徹沒有規格就不寫程式的原則程式設計人員有沒有安靜的工作環境?
需要讓程式設計師進入沈浸狀態(in the zone), 因為這時候是最能全神貫注, 生產力最高的狀態, 所以, 要有安靜的環境!!!你有沒有用市面上最好的工具?
你需要兩個以上的螢幕, 以及編譯程式不會讓你抓狂的電腦配備你有沒有測試人員?
省下測試人員的錢並不是真正的節省, 因為你…

App Center Tutorial

本篇翻譯自 Facebook 開發者頁面 的 App Center Tutorial
Facebook App Center 是一個大型的社交應用程式中心。App Center 是協助你的 Facebook Apps、手機 apps 和使用 Facebook Login 的網站 的管道。Facebook 鼓勵所有開發人員在這個 App Center 建立您的 app 細節內容頁面。
這篇文章將引導開發者配置 apps 的過程: 建立一個 App 細節頁面上傳圖片網站和手機網頁的特別注意事項提交您的 app 到 App Center 如果你還沒有在 Facebook 平台上建立一個應用程序,你應該參考 Apps on FacebookFacebook MobileFacebook for Websites 開發指南。
本篇假定您已經熟悉 Facebook App Dashboard 的操作及基本設置,並且已閱讀 App Center Guidelines。以確保 App Center 審查上市後,用戶在使用上有一個良好的體驗。

How to list the properties of a javascript object

筆記 本篇參考stackoverflowHow to list the properties of a javascript object

要如何知道Javascript物件擁有哪些proerty? ex:
var dog ={ name: 'Lucky', age:3, breeds:'Shiba Inu' };
上面是一個小狗的物件,裡面有一些自訂的屬性'name','age','breeds' 等等...
那要怎麼在程式中知道這些屬性呢?
比較新的瀏覽器(IE9, FireFox, Chrome...)可直接使用Object.keys這個方法
var keys =Object.keys(dog); 或者自己寫
var getKeys =function(obj){var keys =[];for(var key in

Javascript and this

筆記一個 javascript 的特性。

通常在使用一些 method 的時候參數都帶有 Callback Function,
ex: click(callbackFunction)

如果在這個 Callback Function 裡面直接使用 this 是沒有辦法的,
ex:
callbackFunction = function() {
  this.doSomethiing(); // undefined
}

必須先在在外層定義 this 為一個變數才可以,
ex:
var self = this;

callbackFunction = function() {
   self.doSomethiing(); // OK!!
}


參考文章 :
Javascript - 淺談this與Closure

Use getPixelRatio for HTML5 on retina

如果用 HTML5 配 WebView 來作 App 的話,
在 iPhone4 跟一些 Android 手機會碰到的解析度問題 ,

iPhone4 的 Retina 是 960 x 640,
但是在 WebView 底下會以 480 x 320 來顯示,

所以須要利用到 javascript 的 getPixelRatio() 來作調整,

/** * Return current device resolution pixel ratio, Default is 1. * @return {number} */ function getDevicePixelRatio() { if (window.devicePixelRatio === undefined) { return 1; } return window.devicePixelRatio; }
這裡寫一支 function 來取得裝置的 PixelRatio,一般通常都 return 1,
解析度較大的手機才會回傳其他數值,例如 iPhone4 則回傳 2,

最後寫一支 initDeviceViewport 的 function 來塞值給 viewport metadata tag,
例如這裡 iPhone4 會將 viewport 的 scale 全部縮放為 0.5 倍。

/** * Initialize device viewport meta tag to full screen size. * @author http://jsway.se/?p=150 */ function initDeviceViewport() { var scale = 1; var ratio = getDevicePixelRatio(); if (ratio !== 1) { scale = 1 / ratio; scale = scale.toFixed(1); } var viewport = document.getElementById("viewport"); var vp_width …

Javascript message on Facebook post feed

之前在使用Facebook API的時候碰到的問題,,筆記一下。

如果在沒有登入Facebook的情況下開啟 Feed Dialog 發佈訊息,
會被導到一個莫名其妙的頁面,上面只有一串 javascript 如下

<script type="text/javascript">
window.location.href="fbconnect:\/\/success?
post_id=XXXXXX;
</script>

這個問題我碰到兩次,
一次是在網頁版直接使用 Graph API call 的方式開啟 Feed Dialog,
一次是在 iOS Facebook SDK 中使用 Feed Dialog,

iOS好像是在4.0以下才會發生,不太確定,

解決方法:
找到呼叫 Graph API 的地方 ( iOS SDK 應該在 Dialog 相關的檔案裡)
將 https://m.facebbok.com/dialog/feed?xxxxxx
的 m 改成 www
還是不行的話就把 https 改成 http 試試,應該可以解決~

參考:
Javascript message on Facebook Connect post to feed in iPhone/iPad app
undefined

這個網誌中的熱門文章

DevOps:持續整合&持續交付(Docker、CircleCI、AWS)

Factory pattern 工廠模式

Mock Server&契約測試