發表文章

目前顯示的是 十二月, 2015的文章

2015 Summary,每年最後一篇網誌,總是一些流水帳....

圖片
心情
2015 年的心情算是中下吧,總結一句話就是燒錢的一年,忙忙碌碌,最後好像也搞得自己一場空?! 也許是短時間內看不出成果吧 反正都過去了,也差不多迎接新的開始,要認命一點。


(攝於成都 天府廣場站)

旅行
今年去了三個國家,都不敢說自己是出去開拓視野,因為真的是出去玩 XD
* 美國-舊金山
* 日本-北九州
* 中國-成都 (現在想起來遊記還沒發佈,晚點再來整理 :P)

出國玩還蠻開心的,越來越能夠獨立的做一些事情,不過三次出國還好有都朋友幫忙,不然我可不敢一個人出國 XD  2016 年我還想要再去 1-2 個國家玩玩 :P 現在最想去的是英國吧(但是要存很多很多錢...)...


戰果
2015 在公司做些什麼我就不多說了XD,我也不能說 :D 科科。
在公司學到最多的應該是測試,接觸到 travis 的感覺很新鮮,剛開始動不動就會想要去等結果 XD,但是我寫得很爛啦 XD 很不熟其實...,還是要感謝公司同事的包容跟教學相長 XD (天吶我好官腔!!!)


2015 年的閒暇時間,總共完成 14 個專案,其中 1 個是跟新加坡人合作 UI 設計,3-4 個主要以前端切版與 RWD 為主,剩下的則為 Full Stack 狀態,開發主要還是以 PHP 為主,有些專案是我 standalone,有些是跟別人一起,coding 的對象都是比我強的人,覺得小有成就感~,只有一個案子很可惜,我跟一個很棒的 team 合作,但是成果最後 fail 了 :'(。

前端常用的整合工具,目前還是離不開 gulp 的生態,還有我也沒有追上 react,倒是 PHP 經歷 laravel 4 -> Laravel 5 的過程學到很多,對 class, interface, trait 的用法比較懂了。

說不上離開前端這個領域很遠,只是在實作上,真正應用在可以客戶所追求的地方上,我確實也無法用這些這麼潮的框架...(時間上也沒有這麼閒可以一直追新東西),客戶多半要的是穩定,可以好找到人接手的環境跟技術。當然,有一種夥伴也會要求我用新的東西,通常那種就不是普通的合作對象,而是對方自己就是 coder XD,不過這種合作以我的狀況我是不太愛接觸(既然是閒暇時間就想做一些有把握的事)。

我現在覺得在 blog 上寫的好像很簡單似的,可是想起一些過程還算是歷歷在目的,有些情況…

我終於看完大話重構了...

圖片
之前一直看到朋友在 FB 牆上推薦這本書,買了 2-3 個月,這週終於把他看完了,適合有 coding 經驗的人,有一定的工作經驗,書本的範例讀起來會更有感覺,而且會默默地(也沒有真的到多默默啦... 畢竟目錄也有寫 :P)大概瞭解到幾種設計模式,像是 SRP, OCP, AOP, DIP, 橋接, 策略, 命令, 裝飾者模式~

最有感觸的段落是:
* 如何解決繼承氾濫
* 減少使用 if else 的幾個方法


封面講的重構七步驟其實就是:
1. 拆分大函數 (大函數是罪惡根源 XD) (Extract Method)
2. Extract Class
3. 提高程式的復用率 (DRY, 抽方法, 抽類別, 封裝, 抽取父類別)
4. 找出可擴展點 (幾個方法: OCP, hooks, AOP)
5. 降低程式依賴度 (工廠, 依賴反轉, 橋接, 策略, 命令, 組合, 裝飾者)
6. 分層 (比方說 web 是有幾種層次, MVC 層, BUS 層, DAO層等等)
7. 領域驅動設計

老實說,第9章我自己是看得很吃力,講的那幾個模式 (橋接, 策略, 命令, 裝飾者),我有點不知道如果是 php 會怎麼實作(也許我應該去讀一下 PHP設計模式那本書)... 然後書中的範例主要都是用 java 的 Spring 框架,用了一堆 <Bean>  也是開始會有點亂掉 ><。然後 OCP 本來覺得沒有這麼複雜,看了第九章之後,慢慢 fadeOut 了~ 可能我要再過一段時間再回來看這本書吧... 等級沒這麼高,還需要時間培養一下...


最終的重點就也是那些網路上大神的常談:
1. 有時候無招勝有招,學了 Design Pattern 不一定要急著用在自己的專案上,主要還是要考量情況
2. 沒有人可以一次重構就到位,小碎步前進
3. 重構是一種習慣,重點在於你有沒有這樣的意識


看完之後,確實手癢癢,可是主要是如果有人帶你學這些,會更快,我也希望我早點遇到一個可以教我 refactor 我的程式碼的人。以重構七步驟來說,1-3 step 都曾經在工作上有前人的教導我才慢慢起步。

(我是很想學重構,也算有興趣,只是時程有壓力的話,我承認還是拋開我的羞恥心了...,客戶是我的老大)



Meteor 安裝 jQuery validation

圖片
用 meteor 指令安裝 jQuery Validation(套件網址)

指令:
meteor add themeteorchef:jquery-validation


用法:
一樣參考套件網址,主要有兩種做法,一個是把驗證的設定寫在 input 的 attribute 裡面,像是 <input type="text" name="name" class="required"> ,但是一樣要用 js 去呼叫 validation 執行($("XXXX").validate())。

另一做法是把驗證的規則寫在 validate 的 options 裡面。像是:

基本上做法一,二都會在 onRender 的地方呼叫。
記得也要把 submit 那顆按鈕的預設行為取消 (submit preventDefault 那一段),不然也許邊驗證時也早就 redirect 到 action 出去的頁面了 XD。

樣式改寫 for Bootstrap:
因為 jQuery Validation 在驗證到錯誤或是未填的 input 時,會在 input 附近塞入 error message,但是預設的樣式並不符合 bootstrap 的樣式,像是:

為了讓錯誤的樣式符合 bootstrap 的樣子,要改寫一下 jQuery Validation 的 setDefault 的一些 method,像是 highlight, unhightlight...,但是因為整個網站下,有很多頁面只要有用到 jquery validation 的地方都必須要改寫驗證,為了節省一直複製貼上這一段到每一個頁面/template 的 onRender 去,所以我把這段改寫放到 Meteor.startup 的 function 去(我在根目錄下新增一個 startup.js 來擺這段 code):

改寫後,暫時符合預期:


其實在網路上有找到兩個解法,這個是我用起來比較順的,只是寫出來分享一下而已,也不知道好不好~自己斟酌摟 :P。

參考:
http://jsfiddle.net/m2o6c2vj/3/
http://stackoverflow.com/questions/18754020/bootstrap-3-with…

讓 Meteor 在換頁時頁面定位到最上方

最近在用 meteor 搭配 iron-router 做一個 web 後台的雛形出來,但因為 meteor 的設計還蠻特別的,所以有些行為跟一般做換頁的網頁效果不太一樣,主要是比較像是 Single Page Application,你在換頁的時候感受不到瀏覽器有在重新 loading 的感覺,所以換頁時,你的 viewport 可能會停留在上一頁的看到的地方,為了不讓 user 感到困擾(<- 視頁面情況..),在 github issue 上面找到一個解法,要在 iron-router 的 filter 加上一個方法,這個方法用來讓頁面捲到最上方,然後把這個方法掛在 Router 的 onAfterAction。


(* 我的 meteor 版本是 Meteor 1.2.1)

那一串 github issue 有很多討論,但是我是用這個方法
有成功拉,好險好險 :)

2015 年末的小認真之 Coursera 上上課

圖片
人生啊...
課程

(1) Courser 的延世大學 - Big Data, Cloud Computing, & CDN Emerging Technologies


12 月最先開跑的學習是關於 IoT 的一些基本觀念,首先上的課程是 Coursera 延世大學的 Big Data, Cloud Computing, & CDN Emerging Technologies,這真是一門基礎到不能再基礎,而且濃縮所有基本觀念的課程,w1 真的就是在講一些 big data,w2 是 Hadoop 的基本觀念,是有稍微提到 YARN, 還有一點點 RDBMS,w3 就是 CDN 的觀念跟這個產業的幾個公司,大概知道一下那個市場範圍在哪裡,但是光看課程是感受不出技術上的難度跟落實的難度有多複雜啦,anyway 我只是有時間的時候當作影集在看,題目也蠻簡單的,有認真上一定 pass. 雖然我最後只拿80分結業,汗顏 XD

哦對了老師好像是韓國人?!,雖然我覺的老師的英文腔調很特別,不過聽到 w2 就習慣了啦 :D
老實說這種基礎觀念的課程不拿專項課程真的很可惜,不過就看我時間,其實我是很想整個專項都拿下來。哎,循序漸進嘛... 資質卑劣.. 太難的我也不懂啊

(2) Coursera 杜克大學 Java Programming: Solving Problems with Software

Duke 大學的 Java 課程很有條理,我覺得蠻推薦的,而且這門課超級不太 web,但很有新鮮感。Duke 設計這門課程還寫了一個叫做 BlueJ 的工具,上課講 code 都是用這個工具,我是覺得蠻適合 Java 新手,是還蠻厲害的!

week1 教你用 java 去選取圖片,然後針對圖片做簡單的影像處理,像是灰階, 或是 RGB 中間兩個色系互換之類的,聽起來很難但真的... 不難 QQ w2 開始就有點複雜了..。

w2 課程是要教你在 DNA 的 String 找出基因,但其實就是在教 String 的操作啦! 但我覺得上起來相對蠻悶的 XD 有點難,w2 後面段是要教你爬網頁的 html 的內容,像是找出幾個 link,哪些 link 是 https 結尾等等。

w3 是 CSV 檔案的處理,上這堂課才知道 CSV 是一個 standard XD (IETF R…

Mac 安裝 Eclipse

最近開始在看一些 Java 的書,比較尷尬的是現在最新的 Java 是 8,但是很多書都還是 Java 7。

要寫 Java 就要先安裝 JDK (Java Development Kit),也不是第一次學程式了,這些基本的 SOP 上網 google 一下 XD

IDE(編輯器)的話,你可以選擇裝 Eclipse 或是 NetBeans IDE, 或是 IntelliJ IDEA。

因為還是 Java 新手,圖書館的書隨手一拿,我看書的是歐萊禮的 Learning Java Foutth Edition (<- 但我並不覺得這是本很好的入門書 XD 需要有寫過一點程式的經驗再看比較適合),書上的範例用 Eclipse。 在 mac 上推薦裝 Eclipse IDE for Eclipse Committers X.X.X (我是裝 4.5.1)但是檔案非常大(約 243 MB),如果你跟我一樣在星巴克而且手機沒有吃到飽請你先別衝動。

另外安裝 Eclipse 也要先安裝 Java Runtime Environment (JRE)。
基本上,缺什麼就裝什麼,警告訊息會帶你到正確的路。