網頁

搜尋此網誌

2009年4月19日 星期日

Apache Tomcat應用程式伺服器

Apache Tomcat(湯姆貓...還有傑利鼠?)是一個web container,所謂的container是一個提供程式執行的環境(可以想像成是個平台),因為這樣稱之為容器嗎?(我不知道),Tomcat實現兩個技術的執行,一個是Java Servlet,另一個是JavaServer Pages(JSP)

這篇是要說明如何將Apache HTTP Server(簡稱Apache)和Apache Tomcat(簡稱Tomcat)結合,這樣做的目的,可以讓Tomcat專心執行動態網頁JSP,而Apache就提供靜態網頁,或是做負載平衡的動作。

要怎麼讓這兩個server軟體結合?要用一個所謂的connector(連結器),這個連接器要安裝在Apache這端,因為Tomcat已經提供這個介面,但是Apache沒有,所以Apache需要額外安裝!

除了連接器之外,另一個方法是用proxy代理的方式,將HTTP request由Apache轉給Tomcat,這種方式是說效率比較差,實際上到底是不是這樣,需要進一步研究!

要讓Apache可以和Tomcat溝通,首先需要安裝mod_jk這個模組,請至Apache Tomcat Connector網站上下載,選擇binary的檔案格式(寫這篇blog時是1.2.28),因為我們是要安裝在Apache上面,所以請挑選binaries/win32/jk-1.2.28/mod_jk-1.2.28-httpd-2.2.3.so。我要安裝的Apache是2.2.x的版本,所以挑選這個檔案,如果是其他版本的Apache請注意網站說明挑選。

將mod_jk-1.2.28-httpd-2.2.3.so複製到C:\Program Files\Apache Software Foundation\Apache2.2\modules路徑下面,這是預設的module模組路徑。(說明文件建議將檔名改成mod_jk.so,但我們先保留吧!以便後續的識別。)

接下來需要更改設定檔,路徑如下:
  • Apache HTTP Server的設定檔
    C:\Program Files\Apache Software Foundation\Apache2.2\conf\httpd.conf
  • Apache Tomcat的設定檔(不會變更到,只是提醒這是Tomcat的設定檔)
    C:\Program Files\Apache Software Foundation\Tomcat 6.0\conf\server.xml
在C:\Program Files\Apache Software Foundation\Apache2.2\conf\目錄中,新增workers.properties.conf的檔案,這是用來設定connector的設定檔。(說明文件建議檔名為workers.properties ,不是用conf的副檔名,我們統一使用conf來操作)

workers.properties.conf內容為:(共6列,#符號開始為註解,設定資訊http://tomcat.apache.org/connectors-doc/reference/workers.html)

# Define 1 real worker using ajp13
worker.list=worker1
# Set properties for worker1 (ajp13)
worker.worker1.type=ajp13
worker.worker1.host=localhost
worker.worker1.port=8009

之後打開Apache的設定檔httpd.conf,在最下面加入:(設定資訊http://tomcat.apache.org/connectors-doc/reference/apache.html)

# Load mod_jk module
LoadModule jk_module modules/mod_jk-1.2.28-httpd-2.2.3.so
# Where to find workers.properties
JkWorkersFile conf/workers.properties.conf
# Where to put jk shared memory
JkShmFile logs/mod_jk.shm
# Where to put jk logs
JkLogFile logs/mod_jk.log
# Set the jk log level [debug/error/info]
JkLogLevel info
# Select the timestamp log format
JkLogStampFormat "[%a %b %d %H:%M:%S %Y] "
# Send everything for context /examples to worker named worker1 (ajp13)
JkMount  /examples/* worker1

另外順便提一下Apache的log檔設定,ErrorLog是記錄錯誤,而CustomLog是記錄請求狀況,這裡使用bin/rotatelogs.exe這個程式,並依照時間或是大小更換檔案,頗有用的,避免檔案太大不易查詢!
  • ErrorLog "|bin/rotatelogs.exe logs/error_%Y%m%d.log 10M"
  • CustomLog "|bin/rotatelogs.exe logs/access_%Y%m%d.log 86400 480" combined

2009年4月17日 星期五

Web Server網站伺服器

今天跟大家介紹網站伺服器(web server)的安裝,伺服器可以分為軟體和硬體兩大部分,事實上,伺服器就是電腦(computer),大家不要把伺服器當成很特別的一項裝置。這篇文章主要介紹軟體安裝這個部分,而我也將軟體的安裝過程記錄下來,提供給各位當作參考。另外,要感謝ycwang老師的指導,他教導我在網際網路、電信網路上的知識,希望這些文章能夠幫助更多想學習的人,就像ycwang上課一樣!

同一台電腦,裝上不同軟體,就具有不同功能,也就成為不同的伺服器。
  • 裝上Apache HTTP Server軟體(大多稱為Apache,由Apache Software Foundation (ASF)所開發),電腦就成為網站伺服器(web server),意思是說:Apache HTTP Server是網站伺服器軟體,提供HTTP通訊協定服務。
  • 裝上Apache Tomcat軟體,電腦就成為應用伺服器(application server),可以執行Servlet, JSP的應用程式。
  • 裝上MySQL軟體(資料庫管理系統,DBMS),電腦就成為資料庫伺服器(database server),可以存放與管理資料。

Apache HTTP Server


Apache Tomcat


MySQL


2009年4月15日 星期三

Thesis 碩士論文

論文撰寫工作開始,這是以前上大學的時候,周錦惠老師所告訴我們的,現在跟大家分享,希望不要再做出同樣的錯誤,也祝各位撰寫論文與研究順利。

碩士期間最重要的大概就是完成碩士論文(thesis),論文還有另一個字是dissertation,dissertation通常用在博士論文,根據維基百科"The word "thesis" comes from the Greek θέσις, meaning "position", and refers to an intellectual proposition. "Dissertation" comes from the Latin dissertātiō, meaning "discourse.",意思是說dissertation在學術上是個論述,thesis在學術上是個位置,是這樣嗎?...

以學位來看,其關係為:
  • Bachelor's degree(B.S. degree, 學士學位),大學畢業,大學生(undergraduate)。
  • Master's degree(M.S. degree, 碩士學位),研究所畢業,研究生(postgraduate ,或是稱graduate)。
  • Doctorate, Doctoral degree(博士學位),博士班畢業,博士(Doctor of Philosophy,簡稱Ph.D)。


周文賢、吳金潮(1996),碩士論文撰寫方法,台北:華泰。

這本書主要是講述論文撰寫注意事項,包括選教授與訂定題目,以及最後的論文口試注意事項,都在此書中有提及。我是在北科大的文具部買的,定價是台幣380元(有打折但忘了多少)。

介紹論文結構,大致上為五大部分,其內容如下:
  • 緒論
    • 研究動機
    • 研究目的
    • 章節結構
    • 研究範圍
    • 操作性定義
    • 研究流程
  • 文獻回顧
    • 選取高學術價值者
    • 避免批評
    • 忠實表達
    • 整理與比較
    • 依序排列
  • 研究方法
    • 理論基礎
    • 研究架構
    • 理論架構
    • 研究設計
  • 實證分析
    • 資料分析
    • 統計分析
    • 實驗設計
    • 個案分析
    • 模擬分析
    • 臨床實驗
  • 結論與建議
    • 研究發現
    • 策略涵義
    • 研究貢獻
    • 研究限制
    • 後續研究建議
總共5大部分,其子項目為該部分的撰寫重點。

當你看到這篇的時候,如果你是研究生,下面的內容可以省略。以下的內容給準研究生參考,也是書中所提及的事情。

指導教授的類型,此書有精闢的指南(當然不是老師排名),提供各位參考,如下圖。我自己認為,右半平面的類型不宜選擇(控制系統右半平面不穩定!),還是以指導程度高的挑選為宜,指導程度不足者不如不要念,重考(研究所多到氾濫啊...)

      高
      ↑
1優先考慮群|2名師導向群
高←----|----→低
3良師導向群|4避免考慮群
      ↓
      低

y軸表示名氣,x軸表示指導程度。數字為書中建議的挑選順序。除此分類之外,還可依照指導原則來區分四類:
  1. 緊迫盯人型
  2. 放牛吃草型
  3. 利用學生型
  4. 一石二鳥型
當然,上述只是理論基礎,距離實務應用還有段距離,讀過研究所的就會知道了!


2009年4月14日 星期二

C#進階討論

這篇紀錄一些C#中比較難懂的觀念。

Delegate(委派)

參考MSDN:http://msdn.microsoft.com/zh-tw/library/ms173171.aspx

先來看看幾個說明:
  • A delegate is a type that enables you to store references to function.
  • A delagate is a variable type that enables you to use functions indirectly.
  • A delagate can be used to call any function that matches the return type and parameters defined by delegate, giving you the ability to choose between several functions at runtime.
Delegate主要是用在事件(Event)處理函式(EventHandler)上面,之後可以注意其使用方式。

Delegate的使用方式需要宣告函式(function)的回傳值型別(return type)和參數列表(parameter list),用起來就好像宣告變數一樣。像是這樣:

delegate double ProcessDelegate(double param1, double param2);

宣告(declaration)完之後,可以把這個delegate當作型態來宣告一個變數(variable),也可以將delegate設定為具有相同回傳值型別(return type)和參數列表(parameter list)的函式,設定方式必須用關鍵字new的方式,和變數指定給值的方式不太一樣。太神了吧!把函式當變數來使用...(以前學C++好像沒這種觀念),像是這樣:

double RefernceFunction(double param1, double param2)
{
//程式碼
}


ProcessDelegate p;//宣告delegate變數p

p=new ProcessDelegate(RefernceFunction);//指定p的值

p(argu1,argu2);//呼叫RefernceFunction執行,其引數為argu1,argu2。


一旦上述設定完成,你就可以設定delegate的變數(因為delegate是function,需要傳入引數(argument),其實觀念是相同的),這時候所對映的function就會自動被呼叫執行。

2009年4月12日 星期日

How To Read A Book如何閱讀一本書

如何閱讀一本書」是一本書,這本書是翻譯書,原著是Mortimer J. Adler和Charles Van Doren,由郝明義與朱衣翻譯,由台灣商務印書館出版,定價新台幣420元。

我買的是第一版,後來有出二版,價錢也一樣。(最近去商務逛逛,發現第一版特價299元,有機會可以去買。等等,沒講第一版和第二版差在哪裡?第二版的字印得比較大,內容我不清楚,應該沒變吧!第二版封面有李家同推薦,李家同是誰?...)

郝明義與朱衣譯(2003),如何閱讀一本書,初版,台北:台灣商務,譯自Mortimer J. Adler and Charles VanDoren(1972)。

這本書我買了很久,買了之後有看過,但之後就放在書架上了。最近,因為壓力很大(撰寫論文),開始亂看書(書架上隨便拿一本),於是挑了這本「如何閱讀一本書」。開始亂看之前,先看「如何閱讀一本書」是比較符合程序!

推薦!推薦要多看幾遍!

這本書主要是討論「閱讀」這件活動,閱讀是分層次的!最下面是第一層,最上面是第四層,具有階層式(hierarchical)架構與物件導向(Object-Oriented)性質,你也可視為樹狀結構!(這裡不是討論程式設計啊)
  1. 第一層:基礎閱讀(Elementary Reading)
  2. 第二層:檢視閱讀(Inflectional Reading)
  3. 第三層:分析閱讀(Analytical Reading)
  4. 第四層:主題閱讀(Syntopical Reading)
至於詳細內容,還是請大家去買書來看,讀書這件事只能靠自己,別人可沒辦法幫你讀懂。

我寫這篇文章的目的是:希望看到的人你可以去看看這本書,真的去看看啊!因為很多人讀了幾十年的書,你說他真的搞清楚讀書(閱讀)這件事嗎?我不知道,以我來說到目前才開始慢慢了解。

真希望有個人(是神也可以),在你一開始懂事的時候,就開始給你一些啟發或引導,這麼一來也許就不會跌跌撞撞,也許就會順利一點,也許就會省一些時間,少一點努力...,就像「如何閱讀一本書」一樣。話是這麼說,可是當你那麼順利的時候,反而體會不會那麼深刻,甚至認為理所當然。就好像你開始念書的時候,遇到不懂的地方,會開始思考,可是當你都看懂內容的時候,你不會去思考。人生也是一樣,很奇妙,當你追尋人生的時候,你不會有所懷疑,只有當你停下來的時候,才開始懷疑這是我要的嗎?

為什麼學校沒有教你如何看一本書呢?如果學校沒教,你的父母會教你如何看書嗎?還是只""你看書?或者父母認為學校會教閱讀這件事?還是說,知道的人不會教,會教的人不知道,知道的人不肯教...,我不知道,我只是提出這樣的一個疑問。

現在,我們希望這件事讓大家都知道(包含看到這篇文章的你),盡你可能告訴大家,在每個人開始念書之前,是不是應該有個課程教導你念書?有些人念書靠天分,有些人念書靠運氣,我們這種人就需要依靠教導,我們平凡人嘛!又沒顯赫家世關係,也不是教育世家,哪懂得這些東西,只祈禱哪一天開竅,叮咚,我懂了...

除了「如何閱讀一本書」之外,我認為應該也要有一系列的書籍,是關於如何XXX的,而且是要有系統性的整理,坊間有那種如何一次...就怎樣的書,我說的不是那種,而是一種類似聖經的書,是對你的人生有助益的。

比方說「如何研究一個題目」、「如何學習一件事」、「如何完成一個夢想」、「如何做為一個人」...等,像是研究生就需要「如何研究一個題目」,是不是又層次差異呢?內容需要做全盤性的探討,並有系統的來撰寫這類書籍。

難嗎?我不知道,好像不難,只是你我要不要去做而已,即使困難也是可以完成的,不是嗎?天底下有完成不了的事情嗎?就算困難,做過就知道困難的結果,這也是結果之一。

2009年4月9日 星期四

C# 程式語言

C#(念做 c sharp)此篇記錄一些常遺忘的語法,藉由此文章記憶,順便提供大家參考,我的參考書籍是:Beginning Visual C# 2005 ,Wrox (Wiley Publishing Inc.),那時候買好像1400台幣,但是Wrox的書都滿不錯,有寫到程式設計的精神,不只是參考書,更是學習用書。加上最近在研究"大話設計模式",也需要好好review一下這個語言!

此外,也可以參考MSDN的「C# 程式設計手冊」:http://msdn.microsoft.com/zh-tw/library/67ef8sbd.aspx

C#本身是OOP的語言,何謂物件(object)呢?簡單來說,物件也是一種資料型態。那什麼是資料型態呢?資料型態就是"資料的型態"(有講跟沒講一樣...這樣下去說不完啊!),物件的製作藍圖則是類別(class),程式中所使用的則是物件的實體(instance)

C#的程式是大小寫區分(case-sensitive),所以命名跟使用要注意!命名慣例可以參考「命名方針http://msdn.microsoft.com/zh-tw/library/ms229002.aspx,命名規範有兩種,一個是PascalCase,另一個是camelCase,差別在於首字有沒有大寫,相同處為字與字之間都是大寫的,書中建議變數用camelCase。(如果去Google一下,可以發現這定義可能不太一樣!camelCase還有分upper camel case和lower camel case兩種...)

成員定義(member definition)

先介紹存取修飾詞(Access Modifiers),有四個關鍵字:(再加上一個 static,但static和四個意義不同,另外獨立出來說明),參考MSDN:http://msdn.microsoft.com/zh-tw/library/wxh6fsc7.aspx
  • public
  • private
  • internal
  • protected
  • 混合用法protected internal
定義類別(class)、欄位(field)屬性(property)方法(method),這裡注意欄位和屬性的差異,使用上感覺他們很類似,其實之中有差異!

public class MyClass//類別
{
public int MyInt;//欄位
private int myint;
public int MyIntPro//屬性
{
get{ return myint; }
set{ myint=value; }
}

public void MyMethod//方法
{
//方法的程式碼...
}
}

命名規範(MSDN都是建議PascalCase)
  • 類別=PascalCase
  • 欄位=PascalCase
  • 屬性=PascalCase
  • 方法=PascalCase

靜態(static):可以用在兩個地方,靜態類別靜態類別成員(包含欄位、屬性、方法)。靜態類別不需實體化就能使用,而靜態類別成員則是"共用"的概念,不管實體物建有多少個,只會有一個成員存在,另外,使用靜態類別成員可以不需要有實體類別。

其他OOP的技術,上述為基礎的OOP程式語法,如果需要更進一步的使用OO,可以利用下列關鍵字搜尋MSDN獲得資訊:
  • Interfaces介面
  • Inheritance繼承
  • Polymorphism多型
  • Relationships between objects物件之間的關係
  • Operator overloading運算子多載
  • Events事件
  • Reference versus value types參考與值
其他注意事項:
  • 字串(string)是用雙引號「"」(double quotation),字元是用單引號「'」(single quotation)。如果字串不加入逸出字元「\",\',\\之類的」(escape sequence)的話,可以使用逐字翻譯字元「@」(verbatim)。
  • 函式(function)當中,如果需要傳址(reference)的方式,使用關鍵字「ref」,或者使用關鍵字「out」,皆可達到功能,為使用實有些許差異。
  • 參數(parameter)引數(argument)是不一樣的意義。函式定義時所使用稱為參數(parameter),當我們寫程式的時候,會去呼叫一個函式或方法,這時候稱為引數(argument)。

National Taipei University of Technology台北科技大學

故事是這樣開始的...

在我大二下學期(92學年度第2學期)的時候,不小心去在學校裡做了網頁這份工作,打工的地方是通識教育中心,在這種科技大學裡面,通識教育(General Education, core curriculum)這部分大概是不太受到重視的。主要是要跟大家說,這類學科要好好認真學習,因為到我現在這個時候,反而覺得這類科目受益最多(故稱為核心課程嗎?),多說無益,痛過就知道...

前後大概做了快6年,主要工作是在網頁製作方面,還有專案計畫協助的部分。有工作就有學習,當然也有收入維持生計,感謝台北科技大學(曾經幫助過教導我的人)給的機會。當然也許有人不認同這間學校,批評這間學校的不好,但我認為事在人為,你可能遇到不好的人(遇過就知道...)。

現在有機會可以回饋了,主要是因為賴桑(Prof. Lai)提供的工作,自己有剩一點閒錢可以利用,我心想:人生的際遇真是無法預測,當初若沒有接任網頁的工作,抱著戒慎恐懼的心態打工和學習,現在能有這樣的機會嗎?更幸運的是遇到對的人,才能有目前的能力。於是,我想是不是該做點什麼事情?想到ycwang所教導我的,我現在應該可以回饋給其他人吧!

怎麼回饋呢?俗語說「食果子,拜樹頭;食米飯,敬鋤頭」,我可以做的大概有兩件事,第一件事:花錢買書捐給學校;第二件事:撰寫文章教學相長,一起提升同學的能力。這麼做的用意有什麼?希望用最少力量達到最大效益。書在圖書館,每個人都有機會借閱到,我也挑選一些網頁相關的好書籍,從哪裡出發,就回饋哪裡(網頁webpage)。撰寫文章教學相長,也是同樣的道理,因為一路闖蕩學習,摸過許多技術,期望提供一些資訊給想學習的人使用,Blog就是一個平台,跟一個人說,不如寫給千萬人看,我做的事都是一樣的。

再說一下為什麼要寫這篇呢?會不會太招搖了!俗話為善不欲人知。我想過這個問題,首先,我想以後我都會持續捐,一直持續盡自己的力量,口說無憑,寫在這裡難道會不捐嗎...(做人講誠信)。再來,希望能達到拋磚引玉的作用,有沒有用我也不曉得,反正做個試驗看看(以後做研究報告)。重要的是,這些書籍都是最新的(半年內,有些剛出而已),學校這類的書比較少,而且新書又搶手,新的好的都被預約光了,當你臨時要K一項技術,只好去買書看(預約要等很久),多捐一點,借到的機會應該就多一點!

效益有多少?我不知道。做我能做的,改變我能改變的。試試看才知道...,而且ycwang常告訴我們,社會和你我是有相關的,如果能改變一些人(變好),這些人又能改善一些人(變好),如此下去大家勢必都會變好(一個正向循環)。舉例來說:有時候google一些資訊的時候,會搜到沒用的資料,這對我來說是浪費時間(你可以說google不好啊!),但另外個角度來看,如果有用的資訊多了,大家都受益了啊!

對不對,我不曉得。盡力做自己認為對的事,並且時時刻刻自我反省。

圖:捐贈書籍一覽(20本)

書籍清單:(受贈者:國立台北科技大學的圖書館)
書名 作者 出版社
設計好網站的黃金準則 Jakob Nielsen
Hoa Loranger
悅知文化
CSS Web設計的關鍵法則-
晉升專業設計師的極致之道
Charles Wyke-Smith悅知文化
Learning jQuery中文版 Jonathan Chaffer‧Karl Swedberg悅知文化
ppk on JavaScript中文版 - 從實例學JavaScriptPeter-Paul Koch悅知文化
HTML範例辭典(第六版)林欣蔚 基峯
最新 PHP + MySQL + Ajax 網頁程式設計 施威銘研究室 旗標
Flash ActionScript 3殿堂之路 孫穎 松崗文魁
挑戰PHP5/MySQL程式設計樂活學 鄧文淵 基峯
Flash 資料庫應用即戰力 楊東昱 旗標
大話設計模式 程杰 悅知文化

順便打廣告一下,書籍是在全友書局買的,吳經理(女士)老闆人很好很客氣,我想大概是台北僅存有人情味的書局之一,價格大概都打8折,地址是台北市重慶南路一段49號7樓(黎明文化大樓),地點在七樓,要坐電梯上去(難道走樓梯...嗎)。

2009/04/08捐書記錄‧位於台北

2009年4月6日 星期一

Object-Oriented Programming物件導向程式設計

物件導向程式設計(Object-Oriented Programming, OOP)的特性,我們開宗明義來說。(教育部成語典:孝經首章篇名。說明全書宗旨義理。孝經˙開宗明義章˙邢昺˙疏:開,張也;宗,本也;明,顯也;義,理也。言此章開張一經之宗本,顯明五孝之義理,故曰開宗明義章也。引申指說話或寫文章一開始就揭明主旨綱要。如:請開宗明義的說明你的來意,不要拐彎抹角。)

OOP三大特性:(背起來!背起來!)
  • 封裝encapsulation
  • 繼承inheritance
  • 多型polymorphism(也有稱為"同名異式")
我覺得要把這三個特性記起來,常常學東西學到最後,都會忘了一些精神,沒有辦法列舉,不是我們不會,而是沒有辦法系統性的來說明,得靠一些書籍或資料來輔助,這表示缺乏組織歸納的能力。

另外,根據大話設計模式(作者:程杰)一書,OOP還有四大好處,分別是:可維護、可複用、可擴展、靈活性好。再重複一次:可維護、可複用、可擴展、靈活性好。(背起來!背起來!)

雖然還沒看完"大話設計模式",但越看越有心得,越看越有味!寫過程式的人應該都會有這種感覺,發出"對!就是這樣!"的讚嘆。這是難得一見的好書,好在於這本書是寫一般人(不是程式天才)看的,並且用許多生活實例來解釋映射!能夠使我們對於抽象的OOP有所體會。推崇...

來講一下書裡提到的物件導向設計觀念,總共有三個原則、一個法則,(原則跟法則差在哪裡...?)
  • 單一職責原則(Single-Responsibility Principle, SRP)
  • 開放封閉原則(Open-Closed Principle, OCP)
  • 依賴倒轉原則(Dependency-Inversion Principle, DIP)
  • 迪米特法則(Law of Demeter, LoD)
其實還有其他原則,不過在這本書(大話設計模式)裡面沒有提到,需要Google和查閱參考書籍。請參考"Agile Software Development, Principles, Patterns, and Practices "一書。


<僅供參考,這不是推銷>

2009年4月5日 星期日

3 Elements of A Web Page 網頁三元素

今天談談網頁(web page)的技術,提供給想要接觸網頁設計的人參考,你會知道你要學什麼,以及可能會接觸的其他技術。

好的文章要先鋪陳,所以我也要先聊聊一些東西(真是藉口...),之所以會接觸「網頁」這項東西,必須要感謝母校(國立台北科技大學,NTUT),因為藉由在學校打工的機會,慢慢從不熟到現在有點能力,而且因為工作所以有收入,利用這點微薄的薪水再去充實自我,也接下更多工作,進而學習到更多東西(雖然不是用錢滾錢,我都花光光了,但我很開心)。要感謝的人太多了!通識教育中心李主任、洪主任,還有我的老師(ycwang)的指導,ycwang在理論與學養上讓我學習到很多。

網頁三元素

什麼是「網頁三元素」?網頁的技術面上,我認為有三大項目(是我認為,你也可以有自己的看法,提出自己的看法,你將會學到更多),這三項是:(以下說明)
  • HTML
    全名HyperText Markup Language,這部分式網頁的基本功夫,初學者建議不要先學,因為已經有很好用的工具讓你不需要寫,這種工具稱為所見即所得(What You See Is What You Get, WYSIWYG),先用這些工具來做網頁看看。之後想學在學,什麼時候學呢?時候到了就知道。(大概是你要開始寫程式的時候,像是JavaScript,PHP、JSP、ASP...)
  • CSS
    全名Cascading Style Sheets,這部分是用來控制網頁的樣式,白話一點就是外觀、如何呈現的部分,而且具有統一管理的優點。做網頁要有個觀念,網頁=內容+樣式,內容就是HTML的部分,樣式就是CSS的部分。
  • JavaScript
    這是程式的部分,可以讓你更進一步控制一些東西,比方說用JavaScript動態調整顏色或大小、做動畫、下拉式選單...等等(基本上會"動"的,大概都是JavaScript搞的!)。像是這幾年流行的AJAX(Asynchronous JavaScript and XML),其中就廣泛利用JavaScript這語言。注意:JavaScript不是Java,之所以取JavaScript是因為當時流行Java,所以才...想紅嘛
問題來了,到底要先學哪一個?我的建議是這樣HTML最先,其次是CSS,最後才是JavaScript,CSS控制HTML,而JavaScript控制CSS和HTML,所以理論上HTML要先會。

學習的時間要多長呢?我的建議跟上面一樣,HTML最短,CSS中等,要花多點時間的是JavaScript,其實跟複雜度有關。HTML最簡單,約略看過有概念就好,而且做網頁的工具都會幫你產生;CSS多了一些Class、Selector的東西,要花點時間了解。最後,JavaScript因為可以做的事最多,相對也較複雜,當然要花多點時間,也絕對有必要花時間。

工具

做網頁的工具第一推薦Adobe® Dreamweaver,網頁設計製作第一選擇。也有其他的可以用,像是Aptana Studio、Visual Web Developer 2008 Express、NetBeans(好像要外掛)之類的,至於FrontPage到2003版已經終結,好像改成Microsoft® Office SharePoint® Designer 2007 和 Microsoft® Expression™ Web Designer。有興趣的人Google吧!

真希望Adobe也出個Express版的Dreamweaver啊!推出Dreamweaver免費的版本,少點功能沒關係!我們來幫你推廣,學校教學很需要這種東西...

參考書籍

最後推薦一下自己看過還不錯的書,我自己也有買啦,對於想學網頁的人可以參考。

HTML範例辭典(第6版),基峯資訊,訂價台幣420元
(株)アンク 著,林欣蔚譯,HTML範例辭典,台北:碁峰資訊,2008。譯自:HTMLタグ辞典 第6版 XHTML対応。

CSS Web設計的關鍵法則,悅知文化,訂價台幣490元
Charles Wyke-Smith著,徐熒慧譯,CSS Web設計的關鍵法則,台北:精誠資訊,2008。譯自:Stylin' with CSS: A Designer's Guide, 2nd Edition.

ppk on JavaScript中文版-從真實案例學JavaScript,悅知文化,訂價台幣580元
Peter-Paul Koch著,淘寶UED譯,ppk on JavaScript中文版-從真實案例學JavaScript,台北:精誠資訊,2008。


推薦上述這三本,也涵蓋網頁三元素的內容,不過全部買起來要不少錢,哪家出版社出個「三合一網頁技術經典」的書啊!幫我們省點錢。

另外,當年(2003年)的時候,要找網頁設計、網頁程式(HTML、CSS、JavaScript)的""書,那時候還不算多,不然就是一些爛書,但隨著網路的熱門發展,網頁逐漸成為顯學之一,慶幸現在能有一堆優質的書籍供參考,所以現在學網頁會比當年更容易一些!因為資料越來越多了。

學習網站

英文的,但很齊全,幾乎所有技術都有教你,
http://www.w3schools.com/



這篇文章只有提到瀏覽器、使用者這端的技術,因為網頁是Server-Client的技術架構,除了使用者這端外,還有伺服器(server)端的技術、通訊協定的技術...等等,我想這部分後續再談吧,因為編輯Blog是很花時間的。希望此篇文章有用,祝大家學習順利愉快~

有關於伺服端(Server-Side)的程式語言,請參閱「Web Programming Language網頁程式語言」這篇文章。

2009年4月3日 星期五

Philosophy哲學一談

最近研究一些東西,往往到最後會抵達哲學(philosophy)的部分,因此先就哲學和大家分享。

引述林火旺教授在「道德」一書中的一段話:「大多數人都不知道哲學家在做些什麼,其實哲學是一切學問的起源,大部分研究學科的最高學位都稱為哲學博士哲學的原意是愛智,所以古希臘時其,哲學研究的對象無所不包,雖然當代許多研究領域都從哲學脫離,自成一個學科,但是每一 個學科的基本問題,仍然屬於哲學研究的範圍。」

這講的太好了,「基本問題」(the most fundamental questions)就是哲學所要討論研究的議題。那要到多基本呢?

傳統哲學四大主題:
  1. 知識論(Epistemology):什麼是知識?知識的要素是什麼?人們所知道的是什麼?我們如何知道我們所知的知識?我們為什麼會知道我們所知的?大概就是討論這種問題。其中都會討論相信(belief)真實(truth)的觀念,知識有趣的地方在於:知識既是真的,又被相信是真的,是相信和真實的交集。
  2. 形上學(Metaphysics):從維基百科中查到,Metaphysics被視為「第一哲學」、哲學的基本問題。哲學中的哲學!基本問題中的基本問題,基本到極致了!其中探討自由意志(free will),這部分因為有上過課,故稍微有涉略,至於其他討論項目後續再好好瀏覽。
  3. 邏輯(Logic):謬論、悖(ㄅㄟˋ)論、因果論...
  4. 倫理學(Ethics):或稱道德哲學...
上述大概是西方哲學的範疇,至於東方哲學方面,我先就中國哲學來研究,目前閱讀的書籍是「中國哲學史大綱」,台灣商務出版,作者胡適。關於此書內容,另外寫Blog來說明。



待續...

2009年4月2日 星期四

Be A Blogger成為一個部落客

今天寫一下當一個部落客(Blogger)的心得,到底什麼樣才能稱為部落客?好像是把部落格當成事業的人,這種人才稱為Blogger。不管,我們不是在做學術探討,還不需要嚴謹的定義,不然討論會沒完沒了。因為自己已經寫了不少東西,對於寫部落格有點心得,跟大家分享自己的觀點。

A.寫部落格很花時間

以前總以為寫部落格就只是寫寫東西而已,結果自己真的開始寫之後,靠!真是花時間,也一定要花時間。一旦開始寫的時候,不知道為什麼,越寫越多,越來越有想法,欲罷不能。看別人的Blog真的是很快、很輕鬆的,但換成自己寫的時候感覺就不一樣,現在開始覺得那些成功的Blogger很厲害(如果他是一個人的話),我相信當一位成功的Blogger是很累的。所以,之前跟建德兄討論,其實Blog的經營應該是一個團隊(Team),有共同的目標跟方向,一起寫有用的內容,這樣比較有機會成功。

B.部落格是寫給自己看的

這是我的觀點,當然每個人寫Blog的動機都不一樣。我認為Blog是要寫給自己看的,而且一定是寫爽的,寫高興的。誰管你寫什麼內容,會看的人就是會看,但至少有個人一定會看...那就是你自己,想我是把Blog當作學習記錄來使用,記錄自己學習的心得,順便提供給那些需要的人,我也沒有特別寫給誰看,也沒有特別想寫什麼,只是想藉由寫的動作來自我思考,所以一定是自己寫高興的。高興就好!

我的觀點,寫部落格不管有沒有成功(怎樣叫成功?),都是一種自我反省思考的活動,如果你有興趣的話,一定要試試看!

2009年4月1日 星期三

The Origin軟體與電力電子的關係

大家好,因為自己在學習上涉及兩個領域,和北科大的同學、學長討論有一點心得!用以下觀點和大家分享,提供此一學習模式(pattern)做為參考,其實這兩個領域都是一樣的,基於「萬終歸一,理一分殊」的道理,看看有沒有機會用更高層次的視野(view)來觀看!




















軟體領域Computer Software
電力電子領域Power Electronics
軟體架構Software Architecture,設計模式Design Pattern電路拓樸Topology
通量(吞吐量)Throughput,效能Performance轉換效率Efficiency
演算法Algorithm,資料結構Data Structure
控制策略Control Strategy

先這麼說好了,學習東西最好是能夠用比較(comparing)或是映射(mapping)的方式,這樣學起來會比較有感覺、也比較容易,我和同學們討論是這樣覺得!提供大家做為參考。就像<易經>:是故易有太極,是生兩儀。兩儀生四相。四相生八卦。八卦相激而萬物成。

上表的方式也是基於「比較與映射」原理,相信不管任何學科都應該有這種對應方式。舉例來說:

電力電子中會有電路拓墣(Topology),像是buck, boost, buck-boost這樣的電路架構,這屬於高層次、大方向的設計概念;同樣的,軟體裡面也有這種觀念,分層式(multi-layer)架構、MVC(model-view-controller)架構、SOA(service-oriented architecture)服務導向架構等等,這也是屬於高層次、大方向的設計概念。(這樣講好像軟體是模仿電力電子!我不是這個意思啦,你也可以反過來講。)

軟體上會講通量(吞吐量)Throughput,效能Performance,輸入與輸出之間的一個關係;同樣的電力電子當中,效率的概念也是輸入與輸出之間的一個關係!

最後一個,「控制策略Control Strategy」和「演算法Algorithm,資料結構Data Structure」的部分,其實我也還沒搞清楚(那還寫在這裡...!),其實希望你看到也可以提供點意見,畢竟我半路學起軟體程式這塊領域,不知道的地方太多了!尤其感謝同學建德兄的指導,使我對於編程(programming)有更進一步的認識,他的經驗相當豐富,而且具有獨特的觀點。

這裡要感謝柏元(byc.chern)的協助討論,因為他提供目前電力電子大概做些什麼的發展,並感謝北科大「數位信號處理器專題研究室」(314-1室)的學長同學們協助。目前主要著力點有三項:電路拓樸Topology的發展、轉換效率Efficiency的提高、控制策略Control Strategy的發展,大致上是這三個方向。

順便廣告一下:台灣電力電子的入口「中華民國電力電子協會http://www.taipea.org.tw/有興趣的人可以去看看。

熱門文章