一個 NPC 的故事 - Case Study of Promise

May 25, 2014

昨天在某固定會逛的 Facebook 社群看到有人問了 JavaScript 的問題,需求大致上是:

想要建立一個 NPC 的物件,對外提供幾個 API 來使用

  1. OnTrigger() - 讓 NPC 出現在畫面上
  2. OnDialog() - NPC 秀出對話框,對話框內有一個確認鈕
  3. OnWalk() - 若對話框曾經開啟並關閉之後,將 NPC 移動至某特定位置

希望的執行方法是(連續動作):

  1. OnTrigger();
  2. OnDialog();
  3. OnWalk();

很明顯的主要的困難處在於

OnDialog()OnWalk()是照順序執行,要如何能夠讓實際的OnWalk()內容在OnDialog()有了某種結果之後才執行?

Read on 

angular-highlightjs v0.3.0 released!

May 25, 2014

https://github.com/pc035860/angular-highlightjs/releases/tag/v0.3.0

  • 新增 compile directive 選項
  • 更新 bower.json 裡的 dependency

這好像是我第一次發 angular-highlightjs 的更新文吼? 畢竟它一直都沒有被視為主力(?)

這版新增的 compile 功能本來我是偏向讓它保持獨立的,但加上最近一個 PR,已經有兩三個人發出類似的需求,所以我就順著 merge 這次的 PR,讓這個功能正式以 opt-in 的形式加進來。

Live example 請看 http://pc035860.github.io/angular-highlightjs/example/#/hljs-compile

Travis CI build status badge on GitHub

April 05, 2014

如果這一年來你有比較常在各個 GitHub repo 裡亂逛的話,應該蠻常看到像下面這樣的一個畫面

jYNy8Sr1ROSBptqgccWK

在 repo 標題的右側有著一個小小的圖示(badge),上面寫著 “build passing” 或是 “build failing” 之類的字樣,它們是做什麼用的呢?

Continuous Intergration (CI)

Wikipedia: Continuous integration http://en.wikipedia.org/wiki/Continuous_integration

[軟體工程]持續整合 (Continuous integration, CI) 簡介 http://www.dotblogs.com.tw/hatelove/archive/2011/12/25/introducing-continuous-integration.aspx

Travis CI

Travis CI 就是人家架好的 CI server,目前跟 GitHub 有做相當好的整合,只要動動手指就可以讓你享受 CI 帶來的便利!

對於 open source project,Travis CI 免費給你用;有需要在 private 的 repo 使用的話才需要付錢。

Read on 

angular-easyfb v1.0.0 released!

March 29, 2014

https://github.com/pc035860/angular-easyfb/releases/tag/v1.0.0

  • $FB service 改名為 ezfb

  • 一些 local 的 DI 也都改名了

    • $fbInitParams -> ezfbInitParams
    • $fbAsyncInit -> ezfbAsyncInit
    • $fbLocale -> ezfbLocale

就在前天,出現了一條 issue: Best practice: don’t $-prefix this service

一看發現竟然是 Angular team 的 Brian Ford 大大

原來是兩個多月以前有一個好心的路人覺得這 module 不錯用,經過自己的一番比較與研究之後(也有寫了自己的 FB service),似乎覺得可以把這個 module 擺到 Angular docs 裡面某處推薦的連結裡,於是他就發了一個 PR

Brian Ford 終於有一天審到這個 PR,就來 angular-easyfb 這邊逛了一下,發現我的 service 叫做 $FB,如果要擺入docs 推薦的連結似乎不妥,因為 Angular team 方面認為 $-prefixed 的 service 基本上是保留給 Angular native 的。

我以前不知道這回事,也看很多別的非 native module 用 $-prefixed 的 service 用得很過癮(例如 angularFireui-router),所以當年才會取了 $FB 這個直覺上跟原本的 FB 很搭的名字。

總之既然知道有 best practice 可以 follow,我就改一下好了。說不定還有機會擺進官方 docs 推薦連結 ㄆㄆ

另外因為是個 breaking change,版號直上 1.0.0 了。

angularFire v0.7.0 閒聊

March 16, 2014
afire-logo.png

第一次聽說到 Firebase 的時候,angularFire 已經是 v0.3.0 版了。基於 Firebase 的特性,與 AngularJS 結合之後撰寫起來會有非常的 Magic! 的感覺,也因此 angularFire 的出現,讓當時剛開始學習 AngularJS 不久的我也感到躍躍欲試。

大概四個月以前,我需要製作某個神秘的小 project,而這個 project 需要 backend 的支持來存一些資料,於是我決定來試一下 Firebase + AngularJS 這組合。經過一番努力完成小專案之後,深深覺得 angularFire 雖然看來神奇,但神奇得不是很好用。

之後大概又過了一個月,angularFire 迎來了首次的重大 API 更動(看來官方應該也是有聽到大家的聲音),這次更動讓 Firebase 需要完全重寫 angularFire 的文件,根本是個不一樣的 module 了。

而我自從聽說大改版之後一直沒有抽時間出來試一下新的 API,我非常期待它是好用的。 好不容易上週終於百忙之中(是有多忙)抽出時間來升級之前小專案使用的 module 到最新版(v0.3.0 直上 v0.7.0),感覺新版確實是有了長足的進步,比之前好用了很多,但還是有些有點雞樂的地方需要注意與克服。

Read on