設計樣式實務與應用 by Java/Spring and UML (06/27, 30 Hrs)

線上報名: 設計樣式實務與應用 by Java/Spring and UML (06/27 星期六, 30 Hrs)

* 線上報名並預繳 NT$1,000 報名費用者,贈送「物件導向設計模式 Design Patterns (精裝典藏版)」。
  http://www.tenlong.com.tw/items/9572054112?item_id=10815
  (* 請注意,只確定已線上報名且預繳報名費者,才有贈送該書(如已有該書者,可折抵 NT$450)。)

 o 日期:2015/06/27 起,每週六白天。
  每次上課為六個小時(AM 9:30~PM 4:30),共五個星期。
 o 預定上課日期:06/27, 07/04, 07/11, 07/18, 07/25
 o 上課地點:上課前一週以電郵/電話通知學員。
 o 特價優惠:NT$11,800, 含稅。舊生或三人同行再折扣為: NT$10,600。
  (同等課程原價學費為 $25,000 以上)
 o 附贈完整程式碼與執行檔,以及歷屆技術研討會簡報 DVD 光碟
 o 同課程可保留再旁聽乙次的權利 (.NET/Java 設計模式課程均可。報名時註明舊生旁聽即可)。
 o 修習課程完成的學員均有結業證書 (諸多公司已認同本單位所傳授的課程與理念)。
 o 附免費茶點 (最後一日結業時附外訂精緻下午蛋糕咖啡等茶點)。
 o 中午休息時間,學員可與講師們自由提問、小組討論或休息等。

** 為確實掌握上課學員人數與保留上課位置,煩請先以 ATM 轉帳預約費用($1000,當然也可一次繳清)。
   並請於報名表備註欄位內,註明您的轉帳帳號末 5 碼與轉帳金額。
   o ATM 轉帳帳號: 新光銀行 (103) 帳號: 0772-50-100979-9  **
============================================================================
§ 課程介紹:

** 所有設計樣式案例均有 Java 程式碼可執行,並透過 Spring Web 來呈現執行的結果;另我們也同時附贈一片 Ubuntu Linux 光碟,內已安裝 Java/Eclipse 等整合開發環境並提供專案開發範本,學員們帶回去即可直接執行與練習所提供所有的設計樣式案例,學習效果絕佳。

Java 所提出 Spring-Web MVC (Model-View-Control) 係為 Web 端的解決方案,但並非對整個 Enterprise 系統架構的 MVC 方案-如何設計 具高度彈性具延展性的結構,來解決多變複雜 (包括實體系統的變動與業務邏輯的頻繁變更)的議題。

回歸到軟體人員應具有的基礎功-軟性的設計能力。而這能力的培養,並非由現實對 Web, 資料庫等存取實務技術就可以理解;而是需要研讀大量設計性書籍並具獨立思考的能力,方能設計出某個解決方案 (solution)的結構並應用於實務系統的運作上。

繼續閱讀 »

簡單開箱-Acer Chromebook 11 (CB3-111-C3VG)入手

上個星期玩轉 USB 多系統開機碟挺有心得的。大致上已能作到在任一 PC 開機 (只要有支持 USB 開機),就可以啟動與執行包括 Puppy/Arch Linux 系統。

突然想到,出去還是要有台輕巧的筆電,這樣方便在外利用上述 Linux 系統作些爬網瀏覽、文書處理、甚至較輕量化的程式開發環境。

我把預算定在一萬元之內,體積12吋以內;然後要有長效性電源,如此就不需要帶變壓器;另如能擴充記憶體那就更棒。

找了找,發現到宏碁這款主打 Chrombook 系列的 11.6 吋筆電規格相當不錯。PC家網售價格 NT$8,290 還附送羅技紅色無線小滑鼠。筆電的基本規格如下:
 o 型號:CB3-111-C3VG
 o 處理器:Celeron-N2940(1.83GHz/2.25GHz,四核心)
 o 記憶體:4G DDR3*1
 o 硬碟:32G eMMC
 o 螢幕:11.6" 霧面(LED背光)
 o 週邊:USB 2/3 各x1;SD卡插槽;HDMI埠;藍芽、Webcam 等。
 o 網路:802.11ac
 o 系統:Chrome OS
 o 特性:8.5hr超長效∥1.1kg輕薄可攜

Acer Chromebook 11

星期五晚上訂,隔天早上就送來了。
Acer Chromebook 11

繼續閱讀 »

建構USB 多系統開機碟-01_使用 Grub2

其實去年初就曾利用過年期間玩了下在 USB 隨身碟安裝與設定多系統啟動。不過當時都是在 Windows 7 環境下設定的,且偏以可驅動的 Live OS ISO 檔 (如 WinPE、Puppy Linux),以及工具碟為主。(當時研究心得可參考文後「延伸閱讀」的鏈結。)

因為今年我設定了要利用閒暇時間學習 Linux 的底層架構,也包括了學習使用 C++ 的程式撰寫@Linux 的目標;同時我也希望出外時可以只帶 USB 碟,內裝了我可以上網瀏覽、文書處理、開發環境等的行動平台,所以安裝套較輕量如 Puppy Linux,並可以把變動永續 (persistent)寫入到 USB 隨身碟內,而不僅只是 Live 那種唯讀而已。

經過兩三天的實作設定,終於可以作到:

  • 在 USB 碟切割多個磁區 (partition)。
  • 安裝 Arch Linux 於某一磁區,且可以啟動與寫入變動等。
  • 可驅動 Puppy Linux ISO 檔,並且可以將所有操作的變動寫回 USB 磁區內。
  • 可利用 Grub2 驅動各磁區的系統,包括上述 Arch Linux、Puppy Linux、各類 Live ISO 檔 OS等。

我想就對上述的列表,個別整理成主題,來分享下關於實作的心得與個人的註記備忘。本篇就先針對如何安裝 Grub2 於 USB MBR 以及基本的 grub.cfg 設定。同時注意下以下的設定僅先針對 Legacy BIOS 環境下,而並針對 EFI 環境,不過設定仍為類似的步驟。

準備 USB 隨身碟

最好使用 32G 以上空間的隨身碟,USB 2.0 or 3.0 均可。我自己是使用這款 Super Talent USB3.0 64GB 讀速130M隨身碟(終保),當時是買來要玩暗黑3,但現在已不玩該遊戲。
USB 3 隨身碟

準備 Grub2 安裝與設定環境所使用的 Host 系統

使用 Grub2 的原因是現今主流 Linux OS 均支持新一代的開機管理程式,而且它可以支持從 MBR (Legacy) 或 EFI (Advance) 開機啟動,且可以驅動多種檔案系統與多類型的 OS,彈性極大。

要將 Grub2 寫入到 USB 開機區,需要準備已安裝有 Grub2 程式的主機 (Host)環境。以前我是使用 Windows 7 環境,不過後來發現到使用 Linux 系統並使用命令列模式來設定,反而較簡單。

關於如何在 Windows 環境下建置 Grub2,可以參考這一篇:
 o [分享] Windows定製Grub2(包括BIOS和UEFI、自定義Grub2路徑)

而個人所使用的作業環境則為 Arch Linux,因為它的 Grub2 設定文件整理得很好,容易找到相關的參考文件。

我是安裝 Arch Linux 於 Vmware 虛擬機上,如此相對方便設定與測試。關於如何安裝 Arch Linux 於 Vmware/Virtual Box 等虛擬機器內,有太多文章可以參考,例如底下這篇就寫得相當好:
 o A Guide to Installing Arch in VirtualBox。

繼續閱讀 »

關於 PTT Soft_Job 對於 OOP 的一些回應

沒想到 PTT 的 Soft_Job 看版有人在聊 OOP 的觀念,忍不住作了一些回應。

  1. 早期把物件化的分析/設計思維歸為 OOA/OOD (Object-Oriented Analysis/Design);實現物件化思維的程式語言則稱之為 OOP (OO Programming)。
  2. 實現 OO 思維主要有兩個機制:介面 (interface)、多型 (polymorphism)。包括 .NET/Java 等主流語言,早已支持 OOP,甚至連 php/python 等原來屬於 script-based 的程式語言,也朝向 OO 化的實現機制。
  3. 從 OOP 的角度來看到物件化的設計思維是不妥的;原因在於絕大數開發人員並不知道 Why OO Thinking!其實採用 OO 設計化思維是必然會增加開發成本的。因為它並非為了解決某一局部的邏輯性問題,而是考量全局,從系統整體來看待「變動 (Change)」的議題,進而提出如何擁抱改變 (embrace changing)的解決方案。
  4. 再則從實作上,OO 化的特徵是分散式的 (因為基於類別 (class)的責任分派 (responsibility assign)原則)。所以為了實現 OOP 的分散式架構,程式碼必然大量分散於各類別內,如此會造成實作與偵錯的難度;因而一個必要的配套措施:TDD (Test Driven Development),測試先行是一定要養成的好習慣。
  5. 越是大型變動頻繁、高度維護,或者期待包裝為產品,增加其再利用性價值的系統,採以 OO 的設計/實現 (當然,前提要有這樣實在技能的軟體架構師/Developer)才能感受到其好處:每一次只改變一點點;每一次的變動可以侷限在可控制的變動範圍內。
  6. OO 的特徵是將 程序/資料 封裝至某一類別內,其實在抽象層次,程序稱之為「行為 (behavior)」、資料稱之為「屬性 (attribute)」,兩者均為物件必然會有的特徵 (features),是非常自然不致分離的。但因現實仍沒有一種有效的機制能把物件的狀態 (state)儲存起來,所以實作技術上是把物件與資料分離,資料儲存於資料庫系統內、待執行期間 (run-time)才透過如 OR Mapping (如 .NET ER Framework、Java Hibernate 等),將物件與資料合而為一。
  7. 實業界很有趣的一個現象:重視 MIS (Management Infomation System)系統的公司,幾採以資料導向的開發模式;重視 Web 框架如網路行銷公司,大都採以程序導向的開發模式。至於所謂的 OO 化,實現的程度其實還蠻微小的。
  8. 順待提下重構 (refactor)的觀念:重構是屬於事後 (Coding 後)的設計,一般與事前 (Coding 前,如典型的 SA/SD)設計可能存在著 3:7 或 4:6 (事前:事後)的比重。而且往往寫完程式才是另一段故事的開始:持續重構 (continous refactoring)。
  9. 重構的要件:不會影響到已經上線系統的所有功能。 衡量重構的指標:每一個 method 不會超過 10 行、最長不得超過 20 行。
  10. 如今重視 Web 相關技術、快速實現商業創意的年代,其實已少人有人談及 OO 更遑論具體實踐了。西元2000年以前,包括 UML 三大師 (Booch、Rumbaugh、Jacobson)、Martin Fowler (重構一書即為他的著作)、Kent Beck (XP/Agile 的始祖)、Bob (Clean Code 作者)均為支持物件思維的軟體大家。國外除了這些大師外,實現 OO 的專家其實也不多,一般是會落在如開發底層框架 (如 .NET Framework)的關鍵架構師。
  11. 繼續閱讀 »

程式設計的招式對打練習方案-Kata

「The Clean Coder (有中譯版)」一書內所提及的「程式設計柔道場 (Coding Dojo)」的理念很有意思:

「把每一段可用來模擬程式設計問題內的解決過程案例 (case study)稱為 Kata (對打),其最終目標就是在不斷的練習當中以達純熟的直覺反應式寫碼動作。」

每一個 Kata 都必須伴隨著 TDD (Test Driven Development)、亦即測試先行的反覆測試建置。

有個 Uncle Bob (Clean Coder 原作者)提供最經典的範例:「保齡球 (The Bowling Game)」,這個練習約約要 30 分鐘 (我是不太相信這麼短 !^^),在測試階段會經歷衝突,而後在建置階段達到高潮。

我這裡提供下所查詢到的一些討論 Kata 的文章與範例:
o http://katas.softwarecraftsmanship.org/
o http://butunclebob.com/ArticleS.UncleBob.TheBowlingGameKata
o http://www.peterprovost.org/blog/2012/05/02/kata-the-only-way-to-learn-tdd/

爾後個人的實戰案例,例如「烏龜販售系統」,也打算以開源 (open-source)、簡單設計 (simple design)並整理成 Kata 的範例供學員們練習。藉此從其中學習到 Enterprise MVC、Service-Oriented、TDDRe-factoring 等觀念,透過草稿式的設計與直接程式寫碼階段來理解與應用。

[魔獸世界] 我總是喜愛惡作劇敲昏部落頭@納葛蘭

因為越來越熟悉我那新買的羅技G700s無線遊戲滑鼠的操作,所以也比較常參加魔獸世界 PVP 戰場;然後也更比較放心在「納葛蘭」晃來晃去,不怕部落來挑釁。

不過在「納葛蘭」廣大的草原伐木與挖礦實在挺無聊的,所以讓我興起了惡作劇的念頭-那就是用我聖騎的「制裁之拳」技能敲昏路經過部落種族的頭。>_<
魔獸世界

敲昏後會有幾秒鐘的時刻可以逃離現場;而且因為我在納葛蘭的要塞技能是選擇可以做任務、戰鬥期間,都可以騎乘「塔巴克 (坐騎羊)」,所以基本上都可以很充裕悠哉的離開事故現場。 :)

不過有次我敲昏了部落獵人,結果他在背後射了我一箭,讓我速度變得超緩慢;就在生命量被打了一半的危機時刻,我趕緊跳下懸崖,然後...,背上我工程學製做的哥布林滑翔翼翱翔飛到對面山壁上,面對面的望著對我無可奈何的獵人。 >_<
魔獸世界

Page 1 of 221123456789101112...203040...Last »