Google Prettify

2012-03-16

保留系統的彈性

設計系統時,預留彈性是很好的事。但需要注意,應該預留完整的彈性。


假設說我們今天開發的是一個POS系統。在開發的時候,我們針對POS產品類別,保留了一個彈性:「可以很輕意的增加產品類別」。所以未來我們可以很簡單的新增一個產品類別。不過這裡有一個地方要注意。

這裡有一個前提假設: 「每個產品類別,其他的流程是一樣的」。如果接下來一些銷售流程不儘相同,或是相關的擴充彈性沒有一起保留下來,倒不如在未來真的增加產品類別時,再一併增加,以免在目前的架構下,多了許多無意義或是令人困惑的程式碼。

其實不只是這個假設;你需要brain storm看看是否還有其他隱含假設。這些隱含假設來自於每個人不同的經驗。當然,需要保留多少彈性,這永遠是一個tradeoff 的問題。你需要考慮時間成本、研發人力、系統複雜度blabla。需要保留什麼樣的彈性這是一個經驗的問題。像上面所舉的「增加產品類別」,需要看系統中,所謂的「類別」是怎麼定義法。舉例來說,書店增加一類書是很容易的,但是增加書以外的產品類別比方說滑鼠,可能就沒那麼隨隨便便可以增加(雖然說最近有越來越多的書局開始兼賣滑鼠是怎樣…?),因此像這類的彈性,如果在成本、人力都很吃緊的情況下,可以選擇性放棄這樣的彈性。

2011-09-22

匯入Oracle高版本資料庫的資料到低版本的資料庫

我嘗試著將oracle高本版資料庫裡的資料移到低版本的oracle 資料庫。



會這麼做的原因為我的系統裡只有低版本的oracle資料庫(Oracle 9),而測試環境測卻是高版本的oracle(Oracle 10)。為了得以順利進行開發,因此需要將測試環境裡的oracle資料轉移到我的開發環境,包含table、view、stored procedure等等;要在開發環境─也就是低版本的oracle─再建了一份相同、或類似的資料庫,以便於我開發。

方法很簡單,步驟卻很瑣碎。

瑣碎的起因於下:

一、Oracle本身所附的import/export是為了將資料轉換到其他平台或場所,限定、指定、忽略tablespace或是其他我不相要的東西,是一個很高的技術頩頸,那需要嵌import/export這個工具摸透透。

二、import/export本身並不支援向下相容。其實這是最主要的限制。oracle import/export工具不可以將高版本的dump檔import到低版本oracle 資料庫。

三、我不想單一sql的insert、create。尤其測試環境的資料量還真的蠻大的,SQL create的部份也就算了,insert的部份,量並不小,可能一張table就是 3-500M的 .sql檔。這種.sql/.txt檔讀到任何一個IDE都是個問題。

我所採用的步驟如下:

2011-03-12

心想事成

我向來是篤信所謂的心想事成。


想是指「想要」,不是指「想著」。我「想著」天上掉下黃金,通常天上只會掉下其他的東西….。很多時候其實我一直「想要有錢」。不過以科學的角度來看,這樣的答案只是表象。在說明如何導致這樣的結論以前,先來聊聊科學。
科學的一個特色就是追根究柢。凡事問「為什麼」。
好,科學討論到處結束。接下來我們回到「心想事成」這個主題。

剛才提到「想要有錢」這只是個表象。科學說:為什麼要有錢? 我的答案可能會是:可以過好生活、住好房子、吃好東西。這個答案因人而異。就我的答案來說,其實我想要的應該是:過好生活、住好房子、吃好東西,而不是想要有錢。我想這也就是為什麼有些人有了錢卻不快樂的原因。因為他得到並不是他想要的。他弄錯目標了。得到的東西不是自己想要的當然開心不起來。

好!接下來是延申閱讀:如何知道自己想要什麼?

299美元的工作

有一間工廠的機器出了問題,工廠內的員工修了2個月都修不好,最後只好委外找顧問來看。

人如果沒有夢想, 那跟鹹魚有什麼兩樣?

下列程式碼說明了: 人如果沒有夢想, 那跟鹹魚有什麼兩樣?
public Class 人{
  private 夢想 dream;
  public String to String(){
   if(dream == null){
      return new 鹹魚().toString();
    }else{
     return dream.toString();
   }
  }
  public void setDream(夢想 dream){
    this.dream =dream;
 }
}
public Class 人生{
  public static main(String[] args){
    人 i =  new 人();
    System.out.println(i);
  }
}

純屬搞笑~

我上輩子應該是個教師

最近發現我時常有機會就會想對人說說自己的看法、想法。用另外一種方式來說叫"說教"。

就好像父母親千叮萬嚀的都是他們的想法認知與看法;希望子女不要這樣、應該那樣;就好像老師的碎碎唸,只希望學生懂得一切的真理、成就一切正義...。 根據來生學理論,我上輩子就應該是個教師。也許上輩子曾誤人子弟,所以這輩才來當工程師...(好像沒什麼關係)。

唸了好幾次才發覺(反應好慢),勸人為善是一種拆炸彈的過程。其實這個理論,高中時劉墉已經教過我,只可惜那時的我體會不了,甚至一度懷疑是不是排版錯誤。如今終於因為平常碎碎唸的習慣而嘗到被炸的滋味了。這證明了3件事:

第一,[勸人為善]是[影響別人]的一個實例,[影響別人]是[勸人為善]的抽象化。2者皆是一種藝術,過程皆要小心與耐心。(X的,我真的是標準的工程師...)
第二,我拆炸彈的技術還不夠好。
第三,那本書沒有排版錯誤,只是講得不夠清楚..。

您或許對這些有興趣

最後

謝謝您的閱讀,希望您可以有豐富的收獲。