[js step] 都是物件

JavaScript 的變數都有物件的型態跟特性,什麼型態都可以當成物件來用。物件是指?可以擁有資料跟方法的變數。

例如這個 obj 物件。

var obj = {};
obj.data = 1;
obj.method = function() { console.log("data = " + this.data); }
obj.method();
//print 1

而其他也是物件的型態有

陣列

var arr = [1, 2, 3];
arr.data = 1;
arr.method = function() { console.log("data = " + this.data); }
arr.method();
//data = 1
console.log(arr);
//[1, 2, 3]
console.log(arr[0]);
//1
console.log((null, arr));
//[1, 2, 3, data: 1, method: function]
 1

函式

var fn = function() { return "hello"; };
fn.data = 1;
fn.method = function() { console.log("data = " + this.data); }
fn.method();
//data = 1
console.log(fn);
//function () { console.log("hello"); }
console.log(fn());
//hello

陣列跟函式都有他原本的功能,但是也帶有物件的特性。就連原生型態數字、布林、字串也都有物件的版本,可以用物件的方式處理。

var n = new Number(100);
n.data = 1;
n.method = function() { console.log("data = " + this.data); }
n.method();
//data = 1
console.log(n);
//Number {data: 1, method: function}
console.log(n+1);
//101

如果沒看到建構 n 的方法,會不會把 n 認作一個物件勒~所以有一些函式可以用來判別變數的型態

n instanceof Number
//true
typeof n
// object
type of 1
// number
n.valueOf();
//100
n.toString();
//"100"

所以複寫 valueOf 跟 toString 可以讓一般物件運作起來像是數字或字串,js 會在執行運算時轉型來決定呼叫哪個函式。

var what = {valueOf: function() { return 100;}};
console.log(what+50);
//150

what = {toString: function() { return "I am what"; }}
console.log("Who are you. "+ what); 
//Who are you. I am whatwha

MacBook Air – OSX 初體驗

觸碰版手勢
兩指 捲軸滾動
兩指+ctrl = 放大
三指 拖曳 選字
四指 左右 切換視窗 上下視窗管理
三指+拇指 分離 顯示桌面 合併恢復
三指點選:中鍵 可以用來點連結開分頁 http://clement.beffa.org/labs/projects/middleclick/ 需要裝軟體

BTT Better Touch Tool 可以自訂手勢跟事件

注音輸入法

xcode and xcode cli
OSX 開發編譯的環境,舊版要註冊 apple.com 才能下載安裝,因為我系統還在 10.7.5 不能裝 XCODE 5 只能裝 XCODE 4.6.x。

要做開發的工作沒裝幾乎就要幹嘛都不行,連 homebrew 都不能裝,類似 linux GCC,CLI 是另外一個套件,可以透過指令列來編譯程式。

homebrew
homebrew 是 OSX 套件管理工具,類似 apt-get or yum ,只是要先安裝 XCODE CLI 以後才能裝。去官方跑個 ruby script 就可以了。

# 安裝
$ ruby -e "$(curl -fsSL https://raw.github.com/mxcl/homebrew/go)"
# 裝套件
$ brew install git
$ brew install node
$ brew install coreutils

 multiuser setup

如果有多個使用者要共用,他在設計上沒有像 linux 一樣都用 root 裝,也沒有像 npm 可以切割多個使用者很完整,只好透過設定群組權限來讓使用者都能存取安裝資料夾囉,小缺陷,可能是普通筆電不常用在多個使用者環境。

NTFS-3g MAC-fuse
NTFS 的隨身碟沒辦法直接寫入,需要透過這兩個套件裝好代替原本的驅動才可以

系統偏好設定
觸碰版的功能設定
鍵盤快捷建 關閉 fn+arrow fn+f1~12

快捷鍵
fn+arrow =page down/up start/end

fn+back = Delete
option+back = Delete word

官方快捷鍵文件

Command + Shift+3 = screen captrue
Command + Shift+4 = range captrue
Command + Shift+4 + space = window captrue

TextWrangler setup

Keyboard > allow tab key to indent text blocks 打開 允許區塊縮排
Keyboard > enable shift-delete for forward delete 關閉 shift-delete 會刪除字

Editor default > auto-expand tabs + tab width

 

shell(https://github.com/mlwmlw/mac-config)螢幕快照 2013-10-06 下午4.09.56

  • oh-my-zsh+ theme agnoster:zsh 跟 prompt 狀態 + solarize 樣式
  • vim: bundle 管理套件, pathogen 讓套件依資料夾管理
  • iTerm2:代替內建的Terminal
  • solarize : vim 的樣式跟 ls(先裝coreutils)的樣式

VirtualBox
跑 windows 跟 linux 效果都不錯喔~切割一個螢幕出來
搭配 vagrant 可以有很多玩法

spaces
桌面管理的功能,學習怎麼切割多個螢幕

dashboard
關掉用不太到的 dashboard widget 頁
To turn Dashboard off:
defaults write com.apple.dashboard mcx-disabled -boolean YES
To turn Dashboard on:
defaults write com.apple.dashboard mcx-disabled -boolean NO
You have to restart the Dock after making either change for it to take effect:
killall Dock

電池保養
http://appleuser.com/2013/08/22/how-to-extend-macbook-battery-life/

不要常用到幾乎沒電才充,也不要一直都沒讓電池放電(100%)。

充電到100%以後把插頭拔掉,讓他放電到~96%再插插頭,這時候不會充電,電池也不會保持再飽飽的。

PHP 設計模式 學習手冊

91VpVH3-64L._AA1500_[1]

上個禮拜在 HITCON 的天瓏書局攤位,看到這本七月剛出的 PHP 設計模式學習手冊,心中燃起一絲對 PHP 的小火,心想已經荒廢那麼久的 PHP 該是時候補充一下彈藥的時候啦~,尤其是最近剛看完 JavaScript 設計模式,應該能對比一下兩個語言實作上的差異,來更深入的理解這些設計模式應用的場景。

Continue reading…