2014/12/22

找工作該如何選擇?

以前我認為找工作最重要的是薪水高不高,上班時間有沒有被壓榨。

現在我認為選擇工作,是在選擇自己的人生方向,應該選擇有前景的領域,因為機會是留給準備好的人。


關聯在哪?


如果你的工作不能讓你學習有前景的領域知識,那麼你就不可能成為【準備好的人】。

那接下來所有的好機會都輪不到你...

所以選擇工作很重要。

2014/12/11

【問題】 MVC的網站架構中 Model 的最佳實作

我認知中的MVC,是在看完 Stanford University 的 Developing iOS 7 Apps 這堂課之後才完整建立的。
http://youtu.be/ZqKbN_C4Yvg?t=14m20s
從14分到30分講MVC架構。


假設我有三個畫面,要顯示同一個 Table 的內容
第一個畫面需要 Table join A1 才能拿到足夠多的資訊
第二個畫面需要 Table join A2
第三個畫面需要 join A1 跟 A2

如果我要用一個 Model 層把 view 跟 DB 隔開,那我該提供哪些函數?

方法1:
只寫一個取出所有欄位的函數
Model.GetData   (WithA1 And A2)
缺點是會取到多餘的欄位

方法2:
為了解決方法1的問題,分別寫3個不同的SQL
Model.GetData
Model.GetA1
Model.GetA2
好處是我不會取到多餘的欄位
缺點是DB request 的次數會變多

方法3:
為了解決方法2的問題,分別寫3個不同的SQL
Model.GetDataWithA1
Model.GetDataWithA2
Model.GetDataWithA1AndA2
好處是我不會取到多餘的欄位,每次要取資料的時候只會產生1次DB request
缺點是,每當View 需要不同的欄位數的時候,我就要多作一個函數,會造成函數數量爆炸和管理困難,其實這樣寫的結果就等於是在View層上面寫SQL


問題是,一般情況下遇到這個問題會用什麼方法來解?為什麼選擇這個方法?

我問了幾個人答案都是採用方法1,是不是我想太多了?

2014/12/4

Swift 泛型繼承



class A{}

class A2:A{}

class B<T:A>{}

class B2<T:A2>:B<T>{}


Class A2 繼承 Class A
Class B 有一個泛型T,T繼承 Class A
Class B2 繼承 Class B、B2 有一個泛型T, T 繼承 Class A2

冒號前面的泛型是宣告泛型變數,冒號後面的是使用泛型變數
舉例來說 class B2<T:A2> 講的是 宣告一個泛型T 繼承 A2
:B<T> 這裡的 T 講的是使用剛剛宣告的 T