Linux C++-開發環境與Hello程式

實作目標:在 Ubuntu 與 Raspbian 建立 C++ 開發環境。
副目標:撰寫並執行 Hello 程式,以測試開發與編譯環境。

實作:

  • 關於 Code::Blocks IDE
    Linux C++ 老手普遍僅以 vim 為程式碼開發平台,並以 g++ 與 Makefile 工具達成自動化編譯的目的;不過對新手尤其習慣 Windows-based 具有整合開發環境的開發人員來說,只用上述命令列模式指令來編輯與撰寫 scripts 難度高了些。

    Code::Blocks 是一個開源、跨平台的 IDE 開發工具,可以撰寫 C/C++, Fortran 等程式語言;除了提供視覺化的開發環境外,也可以透過其 plugin framework 擴展功能,例如得以增強在程式編譯與除錯方面的功能。

  • 安裝 Code::Block & gcc/g++
    Code:Block 安裝非常容易。Ubuntu 可以透過 XWindows 下的「軟體中心」搜尋「Code Block」找到安裝即可;Raspbian 則在 Pi Store 以同樣關鍵字搜尋安裝。

    至於 gcc/g++,先釐清這是兩種不同的 compiler。gcc = gnu compiler collection,可以編譯多種語言;g++ 則只可以編譯 C++ 程式。關於兩者的區別,可參考-gcc和g++的區別

    Ubuntu 14.04 只需另行安裝 g++ 編譯器即可 (同上安裝方式);而 Raspbian 則已預行安裝。只要在 terminal 下打:

    # gcc (or g++) - v

    即可查知是否已安裝及其版本訊息。

  • 閱讀全文 »

ASP.NET MVC 框架學習心得註記

這幾天利用撰寫一個 Web.NET 小專案的機會,打算使用 ASP.NET MVC 5,藉此順便學習下 Web MVC 的框架技術。

花了快兩天的時間研讀一些文章,總算對 ASP.NET MVC 框架有了全貌的認識;先註記下基本的心得:

  • ASP.NET 源自於 Java Struts MVC,本質完全沒變。
  • ASP.NET MVC 僅是位於系統 3層(3-tier)架構的 Presentation 層,完全沒有涵蓋系統的控制 (Control)與邏輯 (Logic, or Model)層。
    {P.S. 關於這個觀念,個人已在課堂上論述許久;後續再撰寫該篇專文討論。}
  • ASP.NET 的 MVC 中的 Model,係指 Data Model,也就是屬於資料傳遞類型的物件 (DTO, Data Transfer Object),並未涉及到邏輯運算。
  • 微軟的企圖心,利用 EF (Entity Framework) O-R (Object-Relation) Mapping 技術,實現 Model (Data Model)與資料庫的無縫式對應,讓開發人員對於撈取資料庫的程序更是簡化不少。
  • ASP.NET Model 透過 EF 直接對應資料庫,本質上就是 Client/Server 架構;好像重回到 10 年來前 Windows Form 的 4GL,雖然實作變得更簡單 (不需自行控制 Web 表單的狀態與資料庫連結問題),但會導致系統本質上的混亂-沒有確實隔離問題領域 (problem domain) 的功能控制 (functional control)與業務邏輯 (business logic)層。
  • ASP.NET MVC 的頁面 (Page)係以所謂的 Razor 語法 (把它想成 PHP 就好了),以 "@" 為語法的頭尾標記,來實現 UI 邏輯控制的部位。
  • 至於 Web Page 的呈現,則係利用最為普遍的開源專案-Bootstrap,綜合了 HTML/CSS/Javascript 框架技術,來呈現 Web Page 的動態呈現與彈性 Layout 控制 (有些意外,微軟竟然也採用了開源專案)。

{書稿} 建置 Android 開發環境-02

安裝與設定 Eclipse EGit

什麼是 EGit?

EGit 是 Eclipse 的一個團隊提供者 (team provider)套件,它可以讓開發人員直接在 Eclipse IDE 環境內使用 Git 版本控制系統。

EGit 是基於 JGit 套件 (library)所發展,而 JGit 係以 Java 來實現 Git 完整功能的輕量級 (lighweight)套件庫。

安裝 EGit

自 Eclipse 4.2 以後版本,EGit 已成為核心組件,並不需要另行安裝;而若使用 Eclipse 較舊版本,則 EGit 是被視為外掛 (plug-in),可以透過 Eclipse 安裝管理員 (installation manager)安裝。

在 Eclipse 選單上點選【Help】→【Install New Software...】,在出現的對話框內,輸入下列 URL 位址: http://download.eclipse.org/egit/updates

然後按照對話框提示的訊息完成安裝。

圖、安裝 EGit 外掛

圖、安裝 EGit 外掛

閱讀全文 »

{書稿} 建置 Android 開發環境-01

安裝 Android 開發工具

Android App 開發環境只要設置下列兩個開發套件即可:

  • Java SE (Standard Edition)。
  • ADT (Android Development Tools) Bundle。

Java SE

Android App 是以 Java 語言撰寫的,自然需先下載 JDK (Java Development Kit) 的編譯環境。

請至 https://developer.android.com/sdk/index.html 下載 JDK 最新版本;注意下所對應的作業系統、以及 32或64 位元的版本檔案,然後下載直接執行安裝即可。

本書為 Windows 7 x64 的開發環境,最新的穩定版本為 JDK 7,所下載的參考檔案名稱為 jdk-7u51-windows-x64.exe

ADT Bundle

Google 已為 Android 開發人員準備了一套完整的開發套件-ADT Bundle,可讓開發人員不用再各別安裝與設定開發環境,降低 App 開發的門檻。

關於 Android 開發工具,可參考其開發人員首頁 https://developer.android.com/sdk/index.html 獲取更多相關資訊。

ADT Bundle 包含了下列幾個開發套件:

  • Eclipse + ADT plugin。
  • Android SDK Tools。
  • Android Platform-tools。
  • The latest Android platform。
  • The latest Android system image for the emulator。
下載與設定 ADT Bundle

在上述的網頁,點選【Download】下載取得 SDK ADT Bundle for Windows (32/64 位元)。

將所下載的壓縮檔 (檔名為 adt-bundle-.zip) 解壓縮至合適的位置內並可更名較簡短的資料夾名稱 (e.g. C:\adt-bundle-windows)。

開啟資料夾內 /eclipse/ 目錄並執行 eclipse.exe,設定工作區 (workspace)專案儲存目錄 (e.g. C:\Projects\workspace),如此即完成 ADT 的初始配置。

{書稿} 安裝與設定 Git for Windows

安裝與設定 Git

Note:
本書關於 Git 與 Android 開環環境是假設建基在 Windows-based (e.g. Windows 7/8)的系統下;如為 Linux (e.g. Ununtu/Fedora)、Mac 等其它系統,則可參考該系統相關的安裝指引。

在 Windows 環境下使用 Git,必須先安裝核心組件-msysGit。安裝完成後即可在命令列模式輸入 Git 指令,或是利用它內建的圖形界面操作 Git。

本書所有案例操作會同時以命令列 (command promprt)與圖形使用者界面 (GUI, Graphic User Interface)兩種模式,來說明如何執行 Git 操作。

命令列模式即是開啟「命令提示字元」視窗,並輸入 Git 指令;而圖形界面則以整合在 Eclipse 內的 eGit[1] 來執行 Git 。

Note:
雖然安裝完 msysGit 即有圖形界面,但是它作得很粗糙;所以若不是開發 Eclipse 並使用 eGit 的 Windows 使用者,會選擇另一套更友善的圖形使用界面-TortoiseGit。

不過要注意,TortoiseGit 只是 Git 的一種圖形前導 (frontend)界面,所以仍須先安裝完 msysGit 才能執行 Git 指令。

無論 msysGit、TortoiseGit、eGit,甚或其它第三方 Git Client,彼此之間並不會有任何衝突,都可以對同一 Git 儲庫執行 Git 指令。與其它版本控制系統不一樣的就是,所有的 Git Client 其實僅是 Git 原生組件 (component)的「包裹 (wrapper)」而以,它們其實都是操作同樣的 Git 核心組件。

[1] eGit 是已內建於 Eclipse 的 Git 套件,它可以透過 Eclipse 的界面直接操作 Git 指令。下一節會說明如何設定 eGit 組態。

閱讀全文 »

論學習歷程的三階段-守破離《2》

相當驚訝軟體業界的大師 Martin Fowler (UML Distilled, Refactoriing, NoSQL Distilled 等作者),早已於 2006 年在他的 blog 內已發表了以「守、破、離」為題-ShuHaRi,說明在從事所謂的軟體技術與開發方法論上,所歷經的三個學習階段。

這裡特別把這一段的原文摘錄下來:

The idea is that a person passes through three stages of gaining knowledge:

Shu: In this beginning stage the student follows the teachings of one master precisely. He concentrates on how to do the task, without worrying too much about the underlying theory. If there are multiple variations on how to do the task, he concentrates on just the one way his master teaches him.

Ha: At this point the student begins to branch out. With the basic practices working he now starts to learn the underlying principles and theory behind the technique. He also starts learning from other masters and integrates that learning into his practice.

Ri: Now the student isn't learning from other people, but from his own practice. He creates his own approaches and adapts what he's learned to his own particular circumstances.

  • 「守」的階段:Martin 認為學生主要遵循一位導師所教授並務求精確即可。這個階段不用太過探索理論基礎,而是在「如何做 (How to do)」上下功夫;也不要三心二意追求多種方法(論),專注在導師所要求的主軸,把它做精就是了。

    個人所認知的關鍵字為:學習、How-to、專注

  • 「破」的階段:有了基礎實務的經驗,學習者會開始來思索原來所學關於理論基礎與原則,並會逐漸整合其他大師的論述,帶入自己的實務工作上。

    主要的關鍵字為:反思、整合、驗證

  • 「離」的階段:學習者已不全然由他人(導師)所學習而來,更多是從自身的實踐階段過程中,創造出自己所領悟的方法 (論),並應用在現狀的工作環境中。

    主要的關鍵字為:實踐、創造、驗證

閱讀全文 »

軟體思維顧問

專職軟體輔導與教育訓練的獨立顧問。輔導企業資訊單位如何有效組織系統開發與維護;輔導開發人員達成有效的專業分工。傳授如何把軟體作軟 (Keeping Software Soft)的技能,得以提昇系統的彈性/延展,並進而創造系統的再利用價值。

Personal