2014年11月24日 星期一

[AngularJS] Directive Matching (屬性名稱辨識)



正規化處理程序

1. 把 element 或者 attribute 開頭的 x- 和 data- 都去掉。
2. 把用「:」、「-」、「_」隔開的名稱合在一起變成 camelCase 的形式。

範例

<div ng-controller="Controller">
  Hello <input ng-model='name'> <hr/>
  <span ng-bind="name"></span> <br/>
  <span ng:bind="name"></span> <br/>
  <span ng_bind="name"></span> <br/>
  <span data-ng-bind="name"></span> <br/>
  <span x-ng-bind="name"></span> <br/>
</div>
上面的每一行同樣都是使用 ngBind 的意思。


2014年10月27日 星期一

[Coffeescript] Difference between with and without question mark in condition statements (判斷式中變數加不加問號的差別)



一般問號使用的時機為,如果有某物件則判斷某物件屬性 ... 等,像是
if obj?.value
  console.log "obj exists, obj.value exists, obj.value isn't 0 and obj.value isn't ''"


這邊則討論較為特別的使用情況:

console.log "obj.value? is true" if obj.value?
console.log "obj.value is true" if obj.value

以上兩行敘述,主要的差別在 obj.value 為 0 或者 "" 時會表現不一樣,

也就是情況一和二:

### Condition 1
obj =
  name: "aaa"
  value: 0

# obj.value? is true
### Condition 2
obj =
  name: "aaa"
  value: ""

# obj.value? is true

以下是兩者表現相同的情況:

### Condition 3
obj =
  name: "aaa"

# NO OUTPUT.
### Condition 4
obj =
  name: "aaa"
  value: null

# NO OUTPUT.
### Condition 5
obj =
  name: "aaa"
  value: {}

## obj.value? is true
## obj.value is true
### Condition 6
obj =
  name: "aaa"
  value: []

## obj.value? is true
## obj.value is true

轉成 Javascript 後比較清楚,分別為:

// if obj.value?
if(typeof value !== "undefined" && obj.value !== null) {
    console.log("obj.value? is true");
}

// if obj.value
if(obj.value) {
  console.log("obj.value is true");
}

2014年10月21日 星期二

[宏觀] 談產品發展


在一個資源不充裕的情況下,產品有了開頭,之後開發中,還是必須持續地發想、持續地剖析、持續地詢問自己——當初的方向可行嗎?有沒有更好的路?這樣的東西是不是自己要的?夠好嗎?目前盡力了嗎?我把它當做什麼?是孩子、維生的工具甚或搖錢樹?階段怎麼定?考核點、成果可以量化嗎?

2014年10月17日 星期五

[Javascript] Best way to store key-value array (存 key-value 陣列的最佳方法) / Object v.s. Array tips (物件 v.s. 陣列 小撇步)


資料型態簡單釋義

物件 (Object)

可以存放屬性和函式的容器。

陣列 (Array)

可以存放多個不一定要相同資料型態變數的容器。

當兩種型態皆可使用時,如何選擇?

2014年10月13日 星期一

[Mac] Terminal - Split Pane (分割同一個分頁)

原先只知道 Command + T 是開新分頁,
剛剛想按 Command + F 搜尋時,
手太粗,按到 Command + D,不小心發現這個功能!

分享分享分享 =)

當 Terminal 同一個分頁訊息太多太長卻又需要上下內容的比對時,
就可以使用 Split Pane (Command + D),可以一直增加,
按 Shift + Command + D 取消分割。

實際情況:


2014年10月11日 星期六

[Android] L - Wireless & Connectivity (無線網路和連線)



多重網路連線

Android L 新增了多重網路連線 API,可以讓應用程式搜尋可用的特定網路並建立連線,特定的網路像是 SUPL、MMS、Carrier-Billing 網路,或者特殊的傳輸協定 (Transport Protocol)。

從應用程式選擇網路、建立連線的步驟如下:

1. 新建一個 ConnectivityManager。
2. 新建一個 android.net.NetworkRequest 來指定應用程式想要連接的網路連線型態。
3. 將設定好的 NetworkRequest 物件和 ConnectivityManager.NetworkCallbackListener 的實作當參數,呼叫 ConnectivityManager.requestNetwork() 或者 ConnectivityManager.registerNetworkCallback() 來搜尋適合的網路。
4. 當偵測到適合的網路,系統會自動連線並呼叫 NetworkCallbackListener.onAvailable(),開發者可以透過這個函式裡面的 android.net.Network 物件取得這個網路的資訊,或者把流量引導到這個網路上。

[Javascript] MapReduce 用法 (MapReduece Usage)



[].map(callback [, thisArg])

把 A 型態陣列 map 成 B 型態陣列,
回傳的 B 型態陣列長度相同,B 有可能等同於 A。
var callback = function(element, index, context) { /* omitted */ }
第二個參數 thisArg 用來指定 callback 中 this 指到的物件。

2014年10月3日 星期五

[Android] L - Important Behavior Changes (重大改變) (2)


上一篇


RemoteControlClient

鎖屏時,應用程式可以自行在通知裡增加媒體播放的控制元件,而不再有以往的透明控制面板,好讓應用程式在無論鎖屏與否的控制體驗相同。
程式中新增了一些方法、類別,像是:


  • android.app.Notification.MediaStyle :可以用來調整媒體播放通知上面的樣式;
  • android.media.session.MediaSession 、 MediaStyle.setMediaToken() :可以用來告知系統,哪個通知是用來控制正在播放的媒體。
  • Notification.Builder.setVisibility(Notification.VISIBILITY_PUBLIC) :可以用來標示,哪個通知是要顯示在所有頁面上層的,就算鎖屏也一樣。

2014年10月2日 星期四

[Android] L - Important Behavior Changes (重大改變) (1)


新的 Android Runtime —— ART 

4.4 版本以前,預設的 runtime 為 Dalvik;從 L 開始,預設的 runtime 變更為 ART。ART 改進了一些功能包括編譯方式垃圾回收 (Garbage Collection) 機制除錯 (Debug) 的支援等,詳細的請參考 Introducing ART

2014年10月1日 星期三

[Android] L - Overview (新舊差異概論)



最近蘋果陣營,有最新 iPhone 6 和 6 Plus 的發表,
往前追溯,Google 陣營六月的 Google I/O 也有發表 Android 最新版本。

有別於以往,Android 這次的版本名稱不再以甜食點心們為主,
而是一個簡單的 L,目前尚未得知由來。

2014年9月18日 星期四

[AngularJS] Scope issues when using custom directive (用客製 directive 的 scope 注意事項)



當使用 AngularJS 客製化的 HTML 標籤 (Directive) 時,
要特別注意 Scope,下面敘述五種不同設定下的 Scope 差別。

預備知識

scope 和 transclude 的預設值皆為 false。

2014年9月17日 星期三

[HTML] The reason of using "for" attribute in "label" (label 內的 for 屬性用處)



用意是跟某 element 綁在一起。

比較常使用的方式是和 input 綁在一起,
點 label 時,就會讓 input 獲得 focus 。

2014年8月19日 星期二

[Javascript] Q (promise, defer) usage (Q 用法)



整理分享簡單用法。

可以參考 q 原始碼網頁 。

[NodeJs] npm package.json dependencies version (npm package 版本寫法整理)

version       Must match version exactly
>version     Must be greater than version
>=version   etc
<version
<=version
~version     "Approximately equivalent to version"
^version     "Compatible with version"
1.2.x           1.2.0, 1.2.1, etc., but not 1.3.0
http://...       See 'URLs as Dependencies' below
*                 Matches any version
""               (just an empty string) Same as *
version1 - version2         Same as >=version1 <=version2.
range1 || range2              Passes if either range1 or range2 are satisfied
git...            See 'Git URLs as Dependencies' below
user/repo    See 'GitHub URLs' below


[Tool] Markdown Syntax (Markdown 常用語法)



這篇最原始版本是三月多用Trello時整理的,
有些blog,像是Logdown

來分享給大家~

 Header 

ABC
===

ABC
---

#一級字
##二級字
###h3
######h6

2014年6月10日 星期二

[Android] 照相

官方範例檔:PhotoIntentActivity.zip

一、設定權限

<manifest ... >
    <uses-feature android:name="android.hardware.camera" />
    ...
</manifest>

如果也要限制有相機的手機才能下載這個 App ,
則改寫成下面這樣:
<manifest ... >
    <uses-feature android:name="android.hardware.camera"
                  android:required="true" />
    ...
</manifest>


[Android] 分享/寄送訊息到其他的 App ( Line 、 Facebook Messenger 等)

加入下面這個function,
然後要用的地方呼叫它就行囉~

private void sendTextToOtherApp(String text) {
    Intent sendIntent = new Intent();
    sendIntent.setAction(Intent.ACTION_SEND);
    sendIntent.putExtra(Intent.EXTRA_TEXT, text);
    sendIntent.setType("text/plain");
    startActivity(Intent.createChooser(sendIntent, "Send text to..."));
}



例如:


2014年5月20日 星期二

[Android] 廣告 - Google Mobile Ads SDK - AdMob

要在 Android App 放廣告拿些收入,
廣告商有一些選擇,
包括 AdMob 、 DFP 等,
這邊介紹的是 AdMob ,並且以橫幅廣告(Banner)做範例。


[Android] 安裝與設定 Google Play Services 的 SDK

1. 在 Android SDK Manager 中下載 Google Play services SDK。



2. 複製一份 Google Play services 的 library project 到你的 project 的所在資料夾下。

Google Play services library project 原始位置在
[android-sdk 資料夾]/extras/google/google_play_services/libproject/google-play-services_lib/
Ex:
workspace/
    MyAndroidAppProject/
    copied-google-play-services_lib/


2014年4月30日 星期三

[Android] 地圖 - Google Maps Android API v2

注意

Google Maps Android API v1 的 MapView 無法在 API v2 繼續使用!別把 MapView 套過來使用!


環境

ADT(Eclipse)、使用 fragment。




[食記] 台北 中山區 柯芬園咖啡館Covent Garden 下午茶 (中山捷運站一號出口附近)

這天,星期三,在市立圖書館長安分館,
肚子餓想吃下午茶,但要繼續使用電腦,
要有插座,要能久坐,
就查到這家。

一來幸運地位置旁就有插座,
另外,發現一件完蛋的事情...
沒有Wifi!!!

幸好有人有吃到飽~

櫃檯兼料理食物區


整間店有很多有趣的小玩意兒~