2014-02-21

2014-02-14

[讀書筆記] Clean Code Part 1 (Ch1 to Ch3)

Chapter 1 : Clean Code

(1) 童子軍規則 - 讓營地比你來時更乾淨!!
     儘管Legacy code很多 但每一次比每一次乾淨也是件好事

Chapter 2 : Meaningful Names

(1) 名副其實
       Bad : int d;
       Good : int elapsedTimeInDays;

(2) 避免誤導
       如果你的變數型態不是List
       Bad : accountList
       Good : accountGroup or accounts

(3) 做有意義的區分
       不使用意義含混的廢話(Info, Data, a, an, the)
       ex. ProfuctInfo, aProduct

(4) 避免把類型或者變數範圍編碼進名稱    
      如果未來類別改變 還要記得改變數會很麻煩
      如果變數未改 又會造成誤導
      ex. 原本宣告 PhoneString phoneString
           後來改類別 PhoneNumber phoneString
           phoneString這變數名稱會誤導下一個開發者

(5) Interface
      不對介面類別名稱作編碼
        IShapreFactory
      寧可針對實作類別名稱作編碼
        ShapreFactory
ShapreFactoryImp

(6) Class
      類別名稱應該是名詞或名詞短語

(7) Function or Method
      函式名稱應該是動詞或動詞短語

Chapter 3 : Functions

(1) Small & Do one thing
       函數應該做一件事情,做好這件事情,只做這一件事情
       所以Function應該要短

(2) Function Arguments
       參數數量越少越好
       如果參數數量無法降低 那代表你必須要開始封裝參數
       ex.
       Circle makeCircle(double x, double y, double radius)
       Circle makeCircle(Point center, double radius)

(3) Boolean Arguments
       如果你想要用一個Boolean值去當開關
       Ex. SetJugService(true) // Start Jug Service
             SetJugService(false) // Stop Jug Service

       上面作法的缺點在於:
       1. 參數僵化成2選1
       2. Function內必須有if邏輯

       你倒不如設計成
       StartJugService()
       StopJugService()

(4) Command Query Separation
       The real solution is to separate the command from the query so that the ambiguity cannot occur.

       if( set("username","jug"))...
       Function 應該一次做一件事 要嘛回答問題 要嘛執行動作
       上述 function 會讓reader混淆
     
      有些人會將 set 改成 setAndCheckIfExists
      但是對於閱讀仍舊沒有幫助
 
      比較適合的作法是 :
      if(attributeExists(“username”))
          setAttribute(“username”, “jug”);

(5) Don’t Repeat Yourself
        Duplication may be the root of all evil in software.
       如果code一再重複 表示你可以將code抽出來處理

2014-02-11

[收藏] 15 hot programming trends -- and 15 going cold

Peter Wayner 近日在InfoWorld寫了一篇
15 hot programming trends -- and 15 going cold

原文

Javeworld上有比較方便閱讀的版面

InfoQ 翻譯版

15个热门的编程趋势及15个逐步走向衰落的编程方向(上)


15个热门的编程趋势及15个逐步走向衰落的编程方向(下)


[重點筆記]
1. Hot: JavaScript MV* frameworks
    Not: JavaScript files
    請利用JavaScript Framework幫你做事
    Ex. Kendo, Sencha, jQuery Mobile, AngularJS, Ember, Backbone, Meteor JS

2. Hot: SVG + JavaScript on Canvas
    Not: Flash
    Flash封閉且退燒了 請改用SVG + JavaScript on Canvas

3. Hot: Mobile Web apps
    Not: Native mobile apps
    優點 : 跨平台 (不需每個平台都得投入開發)
    PS. HTML運行的速度不輸Native apps
       
    我個人蠻質疑這一點的 記得當初Facebook就是想走Web apps模式行不通才轉為Native應用 不過Startup team的話 在資源不足的初期也許適用

4. Hot: GitHub
    Not: Résumés
    身為一個programmer 沒有比真的有作品更有代表性了

5. Hot: Renting
    Not: Buying
    這就是AWS紅的原因 Startup team可以考慮
 
6. Hot: Node.js
    Not: JavaEE, Ruby on Rails, PHP
    不了解Node.js 要研究看看


2014-02-10

2014-02-09

2013 NABU Business Trip in San Francisco (景點篇) Part 2

[封面故事]
個人最愛的一張照片 富有生命力
千飛萬鳥 攝於 舊金山Crissy Field 2013.12.04 — at Crissy Field.

日期: 2013.11.29 to 2013.12.04

[2013.12.03]
今天的計畫是衝到需要一小時車程的Great Mall 去購買老婆的禮物Coach包包 一早我先去Boudin Sourdough Bakery & Cafe 吃著名的Sourdough bread clam chowder 這濃湯是倒在麵包裡面 我個人是覺得還好 吃完濃湯之後 便搭了Bart前往Green Line的最後一站Fremont 其實老實說SF的Bart路線眾多 車廂裡也不會告訴你這台車往哪裡 唯一的線索是月台上的電子佈告 所以要先確定一下是哪條線再上車比較保險 到了Fremont之後 出站前記得去按一下轉乘優惠券 這樣搭180公車才有$2優惠 公車有固定時間 所以建議去回都要先盯一下時間 免得沒搭到車又得等一陣子 Great Mall 是眾多Outlet 聚集的地方 個人認為這地方是我出差以來 最值得來shopping的地方 商品真的都便宜非常多 就拿Coach來說吧 大概打了4折多的價格 來美國不帶一個回去真的說不過去 好便宜阿 晚上則是去Oracle Arena去看NBA 也是在同一條Bart路線上 所以相當方便 

這是我第一次進場看NBA 昨天工作結束之後 查了一下官網售價 超級貴 還好找到Stubhub這個網站 讓我用$35就買到下層的座位 勇士隊的主場是Oracle Arena 下了Bart Station沿著天橋走就能走到球場 進入球場前球場檢查人員會要求你先寄放包包 只能帶隨身包包進場 相機鏡頭太長也不能帶 進場之後 在外圍地區隨便繞繞 有賣吃的 喝的 球隊商品 你也可以跟Warriors Girl 拍照 進場找到座位坐下之後 發現後方一大堆小朋友 問了一下原來是勇士隊的慈善活動 招待他們來球場看球 他們雖然是小朋友 比賽時還是超級High 一直在又吼又叫的 賽前還有小朋友的籃球表演賽 不要小看小朋友們 他們動作還蠻扎實的 其實整場比賽看下來 前半段勇士打得很差 當地酸民也是毫不留情地狂噓 到了第四節勇士才瘋狂大逆轉 三分雨一直下 全場超HIGH 看NBA真的很爽阿阿阿阿~~~~

[2013.12.04]
今天的計畫是前往Alcatraz Island 原本上星期六就要去的 才知道惡魔島的票要先上網買 所以只好買12/4的門票 一個成人要價$30美元 早上我們搭著F line bus 前往PIER33 這裡是搭乘渡輪前往Alcatraz Island的地方 渡輪有三層 你可以選擇坐在室內 或是頂層露天 當然是選頂層 View比較好啊 不過吹著太平洋的海風 超~級~冷~ 到了惡魔島之後 就開始島上觀光 島上有許多廢棄的建築 或是改裝成觀光客可以瀏覽的博物館 進入主監獄之後 可以選擇聲音導覽 每個點都會有介紹 不過比較不方便的是 導覽不能用點的 所以只能按下暫停 到了下個點之後再繼續聽 老實說主監獄真的蠻陰森的 Kiko很喜歡進到牢獄裡面拍照 我可是敬謝不敏 中午Kiko帶我到傳說中的螃蟹路邊攤 原來是在PIER42 難怪星期六我們在PIER39找半天找不到 我選了一隻清蒸螃蟹 $13 就在小販前面嗑了起來 味道很不錯 就是麻煩了點 吃完飯Kiko心血來潮 想要騎腳踏車去金門大橋 雖然我已經去了兩次了 不過在港區這邊騎腳踏車 好像也不賴 所以就捨命陪君子再去一趟囉 我們租了腳踏車 沿著港灣一路騎去金門大橋 吹著海風 沿路看到美麗的景點就停下來拍照 中間經過Crissy Field 這裡有一大片草皮跟大型藝術裝置 你也能看到有許多人溜著一大堆狗 也很多人選擇在這裡慢跑 總之這裡真的很悠閒 這也是旅遊有趣的地方 下午還車的時候 我們超過了10分鐘 但這邊老美實在很一板一眼 超過10分鐘算我們一小時 我跟老闆講了很久 都沒辦法妥協 不過幸好沒跟他撕破臉 因為當我們返回市區時 我才熊熊發現我的相機還放在腳踏車的前袋裡 趕快搭了公車回去請老闆幫我拿回相機 老闆的店跟租車處有段差距 不過他還是騎著腳踏車去幫我拿回相機 幸好最後相機還是有拿回來 晚上要搭飛機回台灣了 我拉著很重的行李去Bart Station搭車到SFO機場 結果刷卡進去月台時 發現他們唯一一台電扶梯壞了 所以我得很吃力的提著兩個行李下樓 就在這個時刻 有個墨西哥女生很熱情的來幫我拿另一件行李 到了月台我直向她道謝 她就向我問路 沒想到我在SF6天 也是能幫別人指路阿 不過很剛好的是 我們的目的地都是機場 所以我就叫她跟我走就是 我們在車廂裡聊著聊著 話題不外乎就是台灣是不是中國的 我想大部分的老外都會這麼認為>< 突然旁邊的老美 就跟我說 Hi 我媽也是台灣人 我會說一點中文(這句是用國語說) 有沒有這麼剛好阿?

2013 NABU Business Trip in San Francisco (景點篇) Part 1


[封面故事]
這組情侶來自澳洲 今天第一天到舊金山 他們像我一樣被破地圖所害 不過最後還是順利抵達Golden Gate Bridge 後來我們又一起去了Golden Gate Park 在那邊他們看到松鼠很興奮 直說它們這是第一次看到松鼠 問我有沒有看過 我說台灣公園裡很多松鼠 就像澳洲袋鼠一樣多 — feeling funny at Golden Gate Bridge.

日期: 2013.11.29 to 2013.12.04

[2013.11.29]
下午抵達SFO 一如往常我們叫了Taxi前往Hotel 我原本有先查好 從機場出發到飯店大概20分鐘左右
結果沒想到在沒塞車的情況之下司機還開了30幾分鐘 而且要價45鎂 不曉得他有沒有偷繞路
我們住的hotel就在市區 離Union Square很近 所以晚上就晃過去逛逛 廣場剛好有演唱活動 聚集大量人潮
廣場中間有棵大型聖誕樹大家爭相合照 旁邊有個溜冰場 看得我心癢癢也想去溜一下 不過太多人排隊了 當場是客滿
下個session要等到晚上10點 只好放棄了 廣場附近則是一堆知名品牌店面 這裡真的是個購物天堂阿
我真的覺得女生一定超愛這裡的

[2013.11.30]
今天跟在美國工作的人生勝利組 Tom Chih-Chung Liu來個SF一日遊 坐著他的新車 我們暢遊了 AT&T Park, 漁人碼頭, 藝術宮跟金門大橋
早上第一個點是AT&T Park 雖然現在休季 不過球場還是維護的很漂亮 而且可以免費進場 我們從外野進入 拍了球場著名的可樂跟大手套 意外發現外野居然還有一個縮小版兒童小球場 小朋友們是真的可以進去打球的 下一個點是漁人碼頭 在這裡我們犯了一個錯誤 明明PIER39停車場只有兩台車在排隊 我們卻繞過去停更遠一點的停車場 重點是在PIER39停車 如果有用餐的話可以抵兩個小時 而我們後來停的停車場每15分鐘3美元 只能說花錢買個經驗 我們在漁人碼頭想要找同事口中的便宜大螃蟹 結果都找不著(後來發現我們找錯區域) 所以就挑一個好像還蠻多人排隊的餐廳去吃飯 我點了SF經典的Cioppino 簡單來說就是海鮮大雜燴Pasta 新鮮又好吃 用餐完我們便前往金門大橋 沒想到今天下午的金門大橋大霧瀰漫 什麼都拍不到 晚點繞去附近的藝術宮 沒想到晚上的藝術宮挺有氣氛的

[2013.12.01]
昨天去Golden Gate Bridge時充滿神祕的大霧 所以固執的我 今天還是決定再去一次 從Union Square附近搭上MUNI公車38號 再轉28號 就到了Golden Gate Bridge 我在橋上充當好多遊客的攝影師 看來遊客們對這個景點是特別興奮阿 我徒步走上橋面 只完成了2/3就往回走了 因為實在太遠了 我還想撥點時間去其他地方 下一個景點是Golden Gate Park 這點是一組澳洲情侶推薦我一定要去看看的地方 這公園真的是超~ 級 ~ 大 ~ 我都覺得我快把台北市走完了一圈了

[2013.12.02]
工作日 今天的客戶藏身在郊外工廠中 我們一度還懷疑司機有沒有走錯路 工作結束之後 其中一位女客戶邀請我們跟她一起坐電車回家=.= 也不錯啦 一路上聊著聊著就搭著公車轉Bart 回到Hotel

2014-02-05

2013 NABU Business Trip in Salt Lake City (景點篇)


[封面故事]
11/28 Thanksgiving 下午騎著腳踏車在Salt Lake City Downtown亂騎亂晃亂拍照 在神聖的Temple Square的見證下 這位男子請我幫他跟女友拍照 私底下卻偷偷跟我講 他等下要跟他女友求婚 請我幫他錄影跟拍照 這是我第一次幫人家求婚 哈哈 感覺很特別 也恭喜他們了 — feeling special at Temple Square.

日期: 2013.11.26 to 2013.11.29
Salt Lake City in Utah
SLC 是個方便的城市 有摩門教莊嚴的大教堂 有免費的電車可以載你趴趴走 也有腳踏車可以讓你運動一下 雖然outlet在很遠的地方 不過這邊的Mall也不賴 我們剛好趕上Thanksgiving 在傳說中的Black Friday 確實也不少折扣
但這邊讓我最感到特別的 就是靜電 我們外地三人組在SLC最常講的話 就是Oh~ Shit了 因為又被電了

2013.11.26
今天的午餐在Market Grill Street 是個有肉有海鮮的地方 我們點了Chesapeake的oyster以及推薦的fresh fish 重點是便宜又好吃
Salt Lake City 這邊有免費的電車可以搭乘 相當方便 我晚上就搭著電車前往City Creek Mall 跟Gateway Mall 採買老婆需要的禮物 City Creek Mall 據說是摩門教建立的商場 比Gateway好逛多了 Gateway是在戶外 頂著寒風在外面逛是很冷的

2013.11.27
今天的客戶是End user 他們本身也是間Security的公司 這就是所謂的Security中的Security
總經理是Richard 南韓人 非常年輕 才32歲 非常精實且有企圖心的人 一般Thanksgiving 老美都不想工作 在家陪家人看足球 他卻是自己跑來上班 親自測試我們家產品 甚至還想變成我們的reseller 一個超級積極的人
中午我們跑去吃best pie in America 當天點餐都能免費得到一小塊Pie 晚餐Richard招待我們去吃日本料理 這家壽司都附上濃濃的美奶滋 甜甜的 跟台灣吃的日本料理有點差別 吃飯不開車就能啤酒喝到爽啦 司機們還真是滴酒不沾因為他們酒駕罰很重

2013.11.28
Thanksgiving的一天 大部分的店家都沒營業 我原本預計要搭著電車去The University of Utah 但是連電車都休息是要怎麼去 所以我只好在飯店附近繞繞拍拍 這邊街道都整理的很乾淨整齊 隨便拍都很有fu 中午返回飯店的餐廳吃thanksgiving特餐 要價$45 不便宜 不過難得碰上感恩節 就給他吃下去吧 下午騎著腳踏車 前往摩門教的大本營 Temple Square 碰巧見證了一對情侶求婚的經過 傍晚騎著騎著突然看到山丘上有個漂亮的建築 念頭一轉 立馬騎車上山 汗流浹背地騎到山頭上之後 終於見到了這漂亮的建築 - Utah State Capitol

2013.11.29
Black Friday , 到處都在打折 所以我就趁早上去City Creek Mall 採買一番 中午就要跟Utah說掰掰了

2014-02-03

2013 NABU Business Trip in Toronto (景點篇)


[封面故事]
晚上9:30走在下雪的街頭 就是為了拍攝他 CN Tower — at CN Tower / La Tour CN.

日期: 2013.11.24 to 2013.11.26

Toronto 是出差行程裡面最緊的一個城市 加上飛機誤點 抵達Toronto之後已經下午5點多 當天是星期天 所以晚上任何店家幾乎都不營業了 所以我選擇在隔天的晚上前往Downtown 這裡交通算便利 只是繁複了些 先要從Hotel搭shuttle至TTC Station, TTC是類似地鐵或是捷運的玩意 然後就搭著TTC到Union Station 沒想到走在Toronto的街頭 竟飄著小雪 我頂著寒風 就是為了今天的重點行程 ~ CN Tower ~

2014-02-01

2013 NABU Business Trip in Virginia (景點篇)

[封面故事]
USS Wisconsin BB-64 超級戰艦 真的超壯觀— at USS Wisconsin (BB-64).

日期: 2013.11.21 to 2013.11.24


[2013.11.21]

吃完KFC之後 便從LOUISVILLE出發 中間行經CHARLOTTE再到Virginia的NORFOLK INTERNATIONAL Airport 這段航程是搭乘US Airways 的小飛機 非常幸運地 這是我第一次坐在第一排的座位 到了 NORFOLK機場之後 這邊有很多裝置藝術可以拍攝 今晚又是入住Norfolk Marriott Chesapeake


[2013.11.22]

今天拜訪一家在Chesapeake的客戶 離我們飯店非常的近 但他們還是派車過來接送 老闆娘是德國人 可以感覺得出來她相當嚴謹 中午出來一起吃飯時 接待的客戶推薦我們吃一家當地有名的餐廳 Cotton Southern Bistro (2012 Best Winner) 我本著來Virginia就要吃海鮮的精神 點了Riverwalk Shrimp 份量超級十足 根本就吃不完 回到客戶公司之後 下午老闆娘休假了 所以Doug開始輕鬆了起來 介紹我們它們公司賣的其他產品 其中一個是小小的bluetooth speaker 聲音聽起來確實還蠻不錯的 晚上回到飯店 Lounge星期五晚上不開 所以我們只好在Hotel的餐廳吃飯 至少比Room Dining 便宜多了


[2013.11.23]

Virginia 一日遊 景點
Virginia Beach -> The MacArthur Memorial -> Norfolk Fire-Rescue Museum -> Moses Myers House

-> Saint Paul's Episcopal Church -> USS Wisconsin -> Grand Illumination and Parade


今日休兵 所以我們在Virginia一日遊 早上先去Virginia Beach 中午到Norfolk觀光 看博物館 看教堂 看海軍 Phil一直要找在Saint Paul's Church的cannonball 這邊的教堂實在太漂亮了 每個都很像很有名的樣子 所以我們共走錯了兩次 中午在當地相當著名的Freemason Abbey吃龍蝦配白酒 雖然有點貴 但是值得一嘗阿 晚上聽計程車司機說有聖誕節遊行 就跑去參加了 遊行7:00才開始 我們5:00就到那邊搶第一排的位子 果然早到是值得的 不僅有位子可以坐下 遊行也看得很清楚 這遊行相當盛大 幾乎當地學校 公司都有組隊參加 參加者跟觀眾熱情狂歡 我身旁的黑人媽媽整場又叫又跳的 超嗨



[2013.11.24]

這間Marriott的早餐是點餐式的 可以吃到飽 品質也不賴 我們用完早餐之後便前往機場 我們下個點要去加拿大囉

劉栩安的日常生活 - Birth to 3M

劉栩安的日常生活 - Birth to 3M

2013.09.10 PM11:00
隨著老婆宮縮越來越頻繁 所以我們直奔馬偕
在產房外等待

因為還沒開到兩指又不讓我們回家 所以我們從晚上11點散步到隔天早上5點


2013.09.11 AM 11:27 安安以迅雷不及掩耳之勢誕生了  at 馬偕紀念醫院 Mackay Memorial Hospital.