2011年9月30日 星期五

少一行程式…

最近在看幾個剛入程式領域,還在新手老手間打轉同事的程式碼,讓我有一些感觸。現代程式真的很難「教」,學習的心態和態度都和從前自學程式的自己差別很大。

突然有些懷念早期命令列進到圖形介面的時代,自己就是在這個時期開始我的程式學習。當時自己能寫出來的程式,頂多就是改改書上的範例,試著把程式碼少寫一行,或是換一個更簡捷演算法。因為沒有書籍教導如何撰寫註解,所以也不斷修改變數、函數的命名方式,好讓幾個星期後的自己,還能看懂程式的功用。不知不覺之間,學到了程式寫作中兩個重要的態度,一個是「同樣的功能儘可能用更少的程式完成」,另一個則是「程式碼寫得有意義」。

很可惜的,最近看到的程式人員後輩,都沒有看到這種態度。也許和這個環境有關,也可能身為帶領者的我,需要負擔一部分的責任吧!

2011年9月28日 星期三

Flex Compiler 學習筆記 - 3

再次回顧一次編譯的語法…
mxmlc [要編譯的檔案]
如果帶有參數的話,最好在參數和檔案中間加上「--」分隔比較保險。
mxmlc [參數] -- [要編譯的檔案]

一些個人覺得重要的編譯參數…(因為我是一面看文件一面打的,所以應該會少掉一些還沒看到的參數)

2011年9月22日 星期四

物件導向開發感想…

這陣子給自己比較高的學習功課,由早上的 Java/JSP,公司上班時抽空看 FLEX mxmlc 的文件,到回家翻翻 Linux 的書,一開始覺得吃力,但是多少有些進步。但是最終打亂整個節驟的依然是工作上的事情。

因為人力不足,再加上我不放心別人去作最核心的規劃,所以就變成大方向和最前線工作都要同時面對,又再一次讓我感受到「心力交悴」。和以往不同,這次沒有什麼退路可以說休息一下,硬撑個一兩周的就讓我的腦袋有種「轉不過來」以及「常常空轉」的感覺。

當然直接導致本來開始變多的文章想法,又停了下來。

2011年9月14日 星期三

Flex compiler 學習筆記 - 2

# 設定檔 #
老是要輸入一堆設定值才能開始編譯,是一件很煩人的事情,因此可以將設定包覆在設定檔中,在編譯的時候載入。
Flex 預設的設定值存放在「[安裝目錄]/frameworks/flex-config.xml」裡,可以去修改它或是自己 copy 一份再進行調整。
在 Flash Builder 中,會將設定檔複製一份到「[安裝目錄]/sdks/[sdk 版本]/frameworks」下,因此如果要修改 Flash Builder 的設定,要到這個地方,光是修改 flex sdk 的預設值是沒有用的。

可以利用
mxmlc -dump-config [目標檔案名稱]
將目前的預設值 copy 出來存成複本,個人在使用這個指令的時候,會出現「錯誤: 必須指定目標檔案」的錯誤訊息,不過在「mxmlc -help」卻找不到這個指令的相關資訊,可能被隱藏起來了。
不過檔案倒是被建立出來,看到裡面的註解是中文的,又再次感受到 flex 開發團隊的用心。

2011年9月9日 星期五

Flex 學習筆記︰對介面撰碼

記得第一次看到程式設計模式的教學書中提到「對介面撰碼」這個概念時,花了我好長的時間才有些了解。

其中讓我疑惑的地方在於「為什麼要說對『介面』,而不是父類別」,在似懂非懂的狀況下,我自行對這個概念作修改,成為「對介面或父類別撰碼」。
雖然現在證明這個修改是不佳的,不過得和大家分享的是,這種思考「概念是否正確,為什麼要這麼說」的想法,幫助我在程式領域的學習成長很大。

實際上我的修改,如果是在 Java 程式語言,也許沒有太大的問題。由於教導物件導向與設計原則的書大多是以 java 作為示範的對象,而 Java 這個對於物件思考有著大幅規劃的語言,很顯然在規劃的時候就試著去避免一些物件導向可能的問題。(註)

所以一直到我要面對我工作使用的 Flex ,而非書上範例的 Java 時,我才了解為什麼只能對「介面」而不是「父類別」寫程式。

2011年9月8日 星期四

Arch Linux 筆記:使用網芳名稱(NetBIOS Name)

工作中常常需要的建立一個又一個服務,許多只用個兩三天,有些則是常常要搬家到更好(或更差)的主機上。雖然說在區域網路裡的 IP 用不完,但是 IP 總歸是不容易記住的東西,每次建立主機、服務就要替這台主機設定 IP ,並且時常要告訴自己︰「我現在將要測試某某服務,所以我應該去找…呃…好像是 XX IP 的那台主機」。

猜猜看的遊戲真的不怎麼有趣,尤其是當自己好不容易記住主機之間的對應,但是身邊的同事卻老是偷懶不記,一直問我。我又不是 Domain Name Server,提供主機 IP 查詢不是我應該提供的服?務!

說到 DNS ,其實大約半年前公司的 MIS 的架了一個讓我玩過,玩過之後的感想是︰「那個名字真是夭壽長…」,因為不能和網際網路上的 domain 重複(不然就變成屏蔽),所以得先定義一個網域,而每一個名稱後都得把網域名稱輸入進去。

記是記得住,但是設定有點複雜,而且打起來覺得很煩。之後因為這台 DNS 出了一些問題(不是被我玩壞的,是架構的問題),就被 MIS 收了起來。在收起來之前我和 MIS 找到一個不錯的方式,利用 Windows 網路芳鄰的機制。

2011年9月7日 星期三

Flex compiler 學習筆記 - 1

# 概要 #
以命名列編譯 ActionScript(*.as) 或 MXML (*.mxml)檔案,可以使用 mxmlc 和 compc
mxmlc 是用來編譯主程式的,也就是說編譯的結果可以直接由 flashplayer 或是用來打包成 AIR 程式。
而 compc (component compiler)則是用來編譯函數庫、版型、動態函數庫。
(函數庫是在編譯的時候作為資源引入,而動態函數庫則和版型一樣是在執行期動態被載入使用)

# 基礎語法 #
mxmlc [參數…] 目標檔案
其相關的參數列表可以使用指令
mxmlc -help [選項]
或是…
mxmlc -help 參數名稱 [選項]
進行查詢

讓人意外的是…查詢出來的結果中文化程度頗高,令人興奮。
至於提示是否足夠,就要練習和實作後才能評斷了。

Flex Compiler 學習筆記 - 0

緣起… 沒有筆記內容喔~~

由於我想導入測試驅動開發專案開發上,所以希望能夠讓 Flex 這個目前大量使用的技術也能夠納入,因此列出幾個需求…

  1. 每個可以撰寫測試程式的項目都要撰寫類別進行測試
  2. 測試類別需要能簡單執行,簡單到不是開發這個功能的人,也能在沒有文件的情形下執行測試
  3. 測試需要能夠達到由系統定時執行,在沒有人特別維護的狀況下,也能對既有及新加入的測試項目進行處理

為了達到第 3 點,我認為應該得找台沒有人在用的主機,插上電接上公司的區網就能夠放著給它跑。如果發現分析的結果是有問題,在上頭寫個通知的機制,寄封信給我,達到「No news is good news」的原則,讓我可以不用擔心手上的事情一多,就忙到忘記要對程式作檢查。至少有寫測試類別的部分,可以以每天一到數次的頻率持續作檢查。

在 Arch Linux 裝 FreeMind

不得不說 Arch Linux 除了沒有一個很美觀的 UI 介面讓挑選軟體,他的套件管理工具 pacman 及 yaourt 倒是滿方便的。套件多而且安裝也滿方便的,只是有些時候得費點心去找適合自己的版本。

為了討論需要,安裝了 FreeMind 之後,程式開啟卻看到一堆方框。原來是文字無法顯示,猜了許久也沒有找到可以修改字型的方式。而且 Java 似乎不理會我的 KDE 環境設定,使用和 X Window 一樣的字型。到網路上去爬一會兒文,發現一些奇怪的解法。說是把字型檔案 copy 到 /usr/lib/jre…的目錄下,通常在 Linux 會使用檔案 link 來節省硬碟空間,搞不懂為什麼它還是滿容易找到的作法,都沒看到誰去推翻它。

雖然作法很怪,但至少給我一個提示,FreeMind 是使用 Java 作出來的,而它的字型則是使用 Java 所預設的,也就是說只要能夠滿足 Java 設定中,將字型連結放到指定的位置,或是修改設定使其指向到我希望的字型,就可以解決 FreeMind 中文字都是以 方框 顯示的問題。