到底什麼是 "Component(元件)"?

前陣子看到討論區有人提問,元件與類別有何不同?
直覺上,覺得蠻奇怪的,怎麼會拿這兩者來比較?因為這兩者是不同等位的:類別是虛的;元件是實的。

類別,即是種類上的區別。簡單的說,即是「物以類聚」。自然而然,我們會把較同性質的事物擺在一起,以別於其他的事物。
所以,分類是一種本能(不一定單指人類才有這種本能),是一種從抽象的角度來區別事物在行為或特徵上的不同點。
為了作比較,我們會區分為動物類、植物類;再更進一步的觀察,又會再把動物類更細分為哺乳類、爬蟲類...等。在更深入,會再將哺乳類細分為人類、狗、貓、猩猩、猴子等各種類別...。
以此推知,元件也會分門別類,諸如,UI(User Interface)元件、企業元件(Business Component)、功能性元件(Functional Component)等。

在軟體設計上,如何分類,是一門相當深入的功夫。這又是另外一篇重要的主題了。
回到本標題,真要作比較,可能是元件(Component)與物件(Object)來作比較說明會來得恰當。

學習軟體設計多年,我個人覺得有兩個專業的字彙,是最難最難解釋的了:一個是 "架構(Architecture)";另外一個就是 "元件" 了。因為,這兩個字太容易太容易被濫用及泛用了。
針對上述兩個字彙,我個人也思考多年,或多或少有些自己的見解(至現在為止,除了高煥堂大師有這種能耐可以解釋這兩個字彙,我還沒有看過有人可以說出此兩個字彙真正的意涵)。
因為是我個人的見解來解釋什麼是 "元件"。並無所謂絕對的「對」與「錯」,只能說:僅供參考!

繼續閱讀 »

【反思】忘記了吃該吃的那隻青蛙?

從購買新電腦、安裝作業系統、改裝書房、改換 Blog 系統、研究 PHP,修改 Blog 頁面及功能...一連串忙下來,所耗費的時間,約一個餘月。

突然,我發現到,我到底在忙什麼?這些事情對我是最重要的嗎?

早已訂好目標,半年內該吃的最大隻青蛙是 "create my software-design education system" and "book publishing" Plan。

上述所提及包括買電腦、安裝系統、設置 Blog 等,均是為了達成我的 "教育系統" 與 "出版計畫" 的 "手段"。
結果,這一個餘月,我卻沈浸在這些 "小道" 上(不得不承認,買硬體設備、改Blog系統…還挺有樂趣的),而完全停滯了主要目標的進行。

雖說,完成上述這些工作是為了能更進一步地推進至主要目標上,但是,我在規劃上卻犯了蠻嚴重的問題:
從 "週計畫(Weekly Plan)" 的角度來看,我作那些工作是合理的;但我卻沒有規劃 "月計畫(Monthly Plan)"。結果就發生了處理好了局部的工作,但從整體來看時,我對工作上的安排,大大的有問題(主要目標沒有進展)。

這是很大的茫點。若我把視野從以 "週" 擴展為 "月" 時,那麼,我很有可能會把時間安排的比例上會改為 6:4 or 7:3(Tasks vs. 主目標),在同時作上述的這些工作時,仍會抽一定比例的時間在我的 "教育系統" 與 "出版計畫" 上。
當然,相對地,上述的這些工作勢必完成時間也會拉長。但,這些事情本來就不是那麼地重要,充其量,他們只是 "蝌蚪" 而已,我可是還有更大隻的青蛙要吃呢。

那麼,我的 "教育系統" 與 "出版事業" 是不是就是我這幾年最大隻的青蛙呢?
又不然了,這是我半年至一年內所規劃的目標,但,我仍有二年、三年、五年、十年、一輩子等,在各階段所該設計及完成的目標。
此時,我的半年至一年的短期目標又成為是為了完成我中期至長期目標的一種 "手段" 了。

從此次的事件我的心得是什麼呢?

1. 若對自己短、中期的目標很明確的話,那麼,就定下為了完成該目標的短、中期計畫。(我的經驗是,越長久的目標越困難制訂,若能訂出一年以內的話,已經是很了不起的了)。
2. 若以一年的主目標來看時,為了完成該主要目標,就必須在每個階段(以月為單位)制訂月計畫,來完成數個階段的子目標。
3. 而為了完成階段子目標,又必須制訂該階段子目標的 "週計畫",分配該子目標所該作的 "工作(Task)"。
4. 好了,應該就清楚每個星期要完成該項工作時,每天的時間安排就是要 "一口一口地把那隻青蛙吃掉"!!

每天檢視,是否有預定作完該作的事?若沒有,反思,問題在哪裡,該如何修正。
每週檢視,是否有完成該週預定完成的工作事項?若沒有,反思,問題在哪裡,該如何修正。
每月檢視,是否有完成該月預定該完成的階段子目標?若沒有,反思,問題在那裡,並且該意識到,未來計畫的推動,風險已很高了,該考慮重新檢視並修正原訂計畫了(再不修正,原來那些計畫就可變為 "紙上談兵" 了)。

完成了數個階段的子目標,是否照預期達成年度的目標呢?
沒有達成?持續的再檢視及調整你的月、週計畫吧,逐漸地,應該會越來越習慣及有經驗於時間的安排控管上。
還是,就此放棄原來所堅持的目標?也有可能,發現到,那不是你所要的...
如此,就重新再來過吧!

重點是,完成個人所設定的目標,是為了什麼呢?到底,你真正想要的是什麼?到底,個人存在的價值何在?到底,個人生命的意義為何?
這才是個人所需要瞭解及探索的吧?

【新增】訪客留言版

除了 Blog 主題外可以留言迴響外,我想還是新增個「訪客留言版」,如此不限各種話題均可以留言。
甚而,若網友們有問題要討論的,也可以主動在在留言版上留言,若我所能知道的,我會盡可能地回覆 ;)

矇矇的訪客留言版

【修正】最新文章列表改為目前頁面文章列表

再次修正 _lastposts.php,將其原本功能為列出最新文章列表改成為列出本頁文章列表。

如此方便很多,等於是右邊的 sidebar 提供的是文章的"索引(Index)";左邊所提供的是文章的"本文(Content)"。
另,關於每頁所列出文章(post)的數目是在 b2 的管理介面內所設定的。我個人預設是每頁面列出 10 則文章。(每月匯整(Archives)除外,會列出該月所有的文章)

_lastposts.php->目前頁面文章列表

【新增】b2主頁面模組:「列出最新文章」資訊

在 b2evolution主頁面的 "sidebar" 上新增「列出最新文章」資訊(原有模組並未提供)。

在 ./skinbase/your-choose-skin/ 目錄下新增 _lastposts.php

_lastposts.php

修改 ./skinbase/your-choosed-skin/_main.php,插入下列所示的程式碼:
插入所示的程式碼至 _main.php

矇矇的基地改建了!

花了約一星期的時間,把原來是 MT 的系統改為 b2evolution

不喜歡 MT 的 CGI 架構,況且 3.0版之後又要收費。

尋尋覓覓了許久,光是評估其他 Blog 系統,就花了我兩天時間!
原本屬意的是 wordpress ,發現它對中文支援似乎不佳。

b2為 php-based、opensource、GPL的 blog 系統,客製化的彈性大的太多了!
雖然程式內部的結構有點亂,不過,還好,script-language 的 php 並不會太難學,花了兩天的時間,已經大致上可以掌握它的框架了。所以,逐漸的,我會陸續加上或修改一些功能。

爾後會把修改的心得公布在我的 blog 內。

P.S. 國內架設 b2 的似乎不多?建站期間,透過 Jimmy’s blog 諸多的建議,感謝!!