就是愛分享
Spring最初是Rod Johnson在2002年由其著作Expert One-on-One: J2EE Design and Development中提出的,另外一本書Expert One-on-One J2EE Development without EJB更進一步闡述了在不使用EJB(Enterprise JavaBean)開發J2EE企業級應用的一些設計思想和具體的作法(題外話:EJB是sun的伺服器端元件Model,最大的用處是部署分散式應用程式,類似微軟的.com技術。Sun在2006年5月2日發布了JSR 220定義,也就是EJB3.0,企圖減輕EJB以往開發過於複雜以及不必要的負擔。參見-伺服器端元件Model-EJB3.0(Enterprise JavaBean 3.0)論述)。

Spring在2004年初發佈1.0版本,到2006年10月3日發佈了2.0版本,基本上維持著每半年就會有一次大的更新,可到http://www.springsource.org/下載最新版本的Spring。

Spring是一個應用於J2EE領域的輕量應用程式框架,其核心是一個IoC(Inversion of Control)以及AOP(Aspect-oriented programming)。在核心上面的一個主要部份是資料存取DAO框架,包括一個自己的JDBC資料存取封裝以及對眾多ORM框架的工具集支持。Spring內置了一個功能強大、靈活的Web MVC框架Spring MVC框架,以提供快速的Java Web應用程式開發,在程式開發中,程式開發者可以直接使用Spring框架內建的Spring MVC框架。除此之外,對於現在比較流行的各種層面上的框架(如Hibernate、JSF、Struts等),Spring也提供了與它們相互整合的方案。

Spring框架系統架構如圖,從圖中看出Spring提供了很多J2EE應用的基礎設施及解決方案,便於開發J2EE應用。



其中Core是框架的最基礎部分,提供IoC(Inversion of Control,控制反轉)和DI(Dependency Injection,依賴注入)特性。所謂的控制反轉是指控制權由程式改到Spring Container(容器),控制權的移轉,是所謂的反轉;或可說是依賴注入,將原先程式間的耦合降到最低,改由Spring容器注入程式間的關連。使用IoC通常會使得程式碼非常清晰,更為重要的是,IoC可以使得程式碼之間、類別與類別之間有很好的解耦性。DI有三種形式:Setter-based、Constructor-based、Getter-based,Spring推薦使用第一種方式,Setter-based類似典型的JavaBean,帶有一個無參數的構造函數和setter方法。

BeanFactor代表了Spring的心臟,可以配置和管理幾乎所有的Java類別,在存取和操作IoC的初期充當了IoC容器的作用。然而在大多數的情況之下,不會直接使用BeanFactor而是使用ApplicationContext,因為ApplicationContext具有更多的企業級特性如多國語言支援、資源存取、事件傳播和多實例載入等等。

Bean在Spring容器中大致要經歷以下四個階段:Bean定義、初始化、準備狀態以及銷毀。

Spring的AOP是OOP(物件導向程式設計)的延續,提供了符合AOP Alliance規範的層面導向程式設計(Aspect-Oriented Programming)的具體實現,讓使用者可以定義,像方法攔截器(method-interceptors)和切入點(PointCuts),從軟體設計上看,通過這樣的方式可以降低耦合性(coupling),提高內聚性(cohesion),從而在軟體結構上得到改善。

DAO模式是一種資料存取物件模式,它通過抽象方法來提供資料存取的介面,這樣便消除了冗長乏味的JDBC編碼,並且通過這樣的封裝方式更容易為程式設計提供介面,而且對所有的POJO適用。

ORM封裝提供了物件關係對應的API介面,使用ORM工具集的產品除了提到過的Hibernate,還包括了如JDO等產品。
<未完 待補充更新>

閱讀全文...
標籤: 0 意見 | | edit post
就是愛分享

↑光榮的傳說

今年專題製作觀摩競賽
入圍的每一個隊伍絕對都是強勁對手
尤其將「程式設計班」和「網際網路資料庫設計班」分在「程式設計類」一起比
另外還特別加入「遊戲軟體程式設計班」
所以能夠得到冠軍...
特別感到意外和驚喜!
也慶幸能夠為文化大學再續光榮的傳說!

在參加競賽之前
就已經聽說活動會場全館雖然有提供無線網路
但因網路品質不佳
所以主辦單位建議作品展示時儘量不要連結上網
以免影響簡報成果
可是我們專題首頁的一部份就是Google MAP
根本無法不能連上網路
所以我就特別製作了五個單元的錄影檔

幸運的是評審委員來到我們攤位展示作品時,網路都很順暢;
簡報時,利用錄影檔也很順利地完成評審委員的提問和展示。
另外在簡報時評審委員對於我們的文件製作之完整
以及認真學習的態度特別讚許!
尤其是文獻調查、系統測試、部署和上線文件更是其他隊伍少有的
或許這是我們脫穎而出的關鍵吧!

最後要謝謝每個夥伴們盡心盡力地完成我們當初設定的目標
也要感謝老師的指導
才能創造光榮的傳說!

----- 學長、學姊們的分享 -----
2007 場地王
2008 KA DA CHA新風潮 - 車由自組

閱讀全文...
標籤: 0 意見 | | edit post
就是愛分享
Struts框架最早是作為Apache Jakarta專案的組成部分問世運作,專案的創立者希望通過對該專案的研究,改進和提高JAVA Server Pages、Servlet、標籤庫(tag library)以及物件導向的技術水準,它的目的是為了減少在運用MVC設計模型來開發Web應用的時間。

建立基於Struts框架的web應用程式最快捷的方式就是利用Struts框架發佈包中包含的struts-blank.war文件。該檔不僅定義了struts web應用程式的標準的目錄結構而且還包含了開發struts web應用程式所必需的包。

如果使用Eclipse IDE作為開發工具,並部署在應用伺服器Tomcat 5.0中執行,然後再import struts-blank.war進來。由於struts框架本身就是基於servlet,因此需要將tomcat目錄下common\lib中的servlet-api.jar拷到strutsSample\WebContent\WEB-INF\lib中。

在探討Struts MVC運作架構之前我們先來看看基本的MVC運作模式,如圖所示:



所有進入到系統中的Request都會導給一個Controller程式,由Controller來判斷目前這個Request必須交由哪一個程式處理(那一個Request必須交由哪一個程式處理可能是設定在另外一個地方),接著便會呼叫執行該處理程式,並將收到的Request當作參數傳給該程式。在處理過程中需要進行商業邏輯處理的部分就會呼叫執行Model中的程式,Model處理完之後再將結果回傳給Controller,Controller再將結果傳給指定的View來進行畫面呈現。在這個架構中Controller是所有Request的唯一進入點,Model的部分只負責處理系統中的商業邏輯,畫面呈現則全部都由View來負責。

Struts的運作模式是採用MVC的架構,整個運作方式大致如圖所示。當Request進入到Struts時會導給一個ActionServlet來處理,這個程式會根據設定檔struts-config.xml中的設定呼叫執行我們所撰寫的Action處理程式,並將Request當作參數傳給這個Action處理。Action在處理過程中會呼叫一些商業邏輯物件(Business Objectc)中的程式存取後端的資料庫;當Action處理完之後會將結果回傳給ActionServlet,最後ActionServlet再將這個結果可以在struts-config.xml中設定一些JavaBean(ActionForm)來接收Request中的資料,此時Struts便會幫我們將資料塞到JavaBean中,讓我們可以在Action中直接取用,讓我們可以在Action中直接取用,在使用上會比較方便。



我們在使用Struts開發系統時,必須撰寫流程控制程式(Action)、商業邏輯處理程式(Business Object)、畫面呈現程式(JSP)並在設定檔(struts-config.xml)中設定這幾個元件之間的運作關係。當然,如果在流程控制與商業邏輯處理程式之間有使用到一些物件來當作資料傳遞的參數(DTO,Data Transfer Object),那麼這些傳遞資料的物件也必須由我們自行撰寫。

閱讀全文...
標籤: 1 意見 | | edit post
就是愛分享
在SQL Server中,我們可以使用二種方法來設定自動化的資料處理規則:

1.條件約束(Constraint)可以直接設定於資料表內,通常不需另外撰寫程式。但此方法只能進行比較單純的運作,包括自動填入預設值(DEFAULT),確保欄位資料不得重複(PRIMARY KEY/UNIQUE KEY)、限制輸入值在某個範圍內(CHECK)、維護資料表間的參考完整性(FOREIGN KEY)...等。

2.觸發程序(Trigger)是針對單一資料表所撰寫的特殊預存程序,當該資料表發生INSERT、UPDATE或DELETE時會自動被觸發(執行),以進行各項必要的處理工作。由於是撰寫程式,因此無論是單純或複雜的工作都可一手包辦。

當然,如果只是單純的自動化工作,我們應儘量利用條件約束來完成,因為這樣做一方面容易設定及維護,另一方面執行效率也會比較好。只有當條件約束無法滿足實際需求時,才應考慮使用觸發程序來處理。

那麼,觸發程序到底有什麼特異功能呢?底下來看幾個例子:

檢查所做的更改是否允許:
雖然我們可以用資料表的條件約束來維護資料完整性,例如CHECK、PRIMARY KEY/UNIQUE KEY、FOREIGN KEY等,但觸發程序可以做更多樣、更複雜的檢查。例如同時檢查許多個資料表,或使用IF...ELSE等來做更有彈性的檢查。

‧進行其他相關資料的更改動作:
例如當某筆訂單被取消時,我們可以利用觸發程序去自動刪除相關的送貨單資料,並將業務員的獎金扣一半;或是在更改員工的薪資時,將更改的日期及原薪資存入另一個薪資異動資料表中。

‧發出更改或預警的通知:
例如當有新進員工的資料被輸入時,觸發程序可以自動發Mail通知該部門的所有人員;或是當庫存量小於安全量時,即發Mail通知倉庫管理員要趕快進貨。

‧自訂錯誤訊息:
當操作不符合條件約束時,所回應給前端應用程式的錯誤訊息都是固定的內容。利用觸發程序,則可以回應我們自訂的錯誤訊息。

‧更改原來所要進行的資料操作:
利用SQL Server 2005的INSTEAD OF觸發程序,我們可以撰寫程式來取代原本應該進行的資料操作。例如當新增一筆記錄時,我們可以將該記錄的資料另做處理,而不存入資料表中。

‧檢視表也可以有觸發程序:
檢視表中的計算欄位通常是不允許更改的,但同樣是利用INSTEAD OF觸發程序,我們可以打破這個限制,將預備要更改的資料欄截出來另外處理。例如可將使用者輸入的地址先分解成縣市與街道二部份,再分別存入縣市與街道欄位。

其實觸發程序就像是倉庫的管理員一樣,當有貨物要進出時,管理員即會出面做查核或協調,以維護整個倉庫的正常運作。因此,如果您是資料庫的管理者(DBA,DataBase Administrator),那麼就應該好好利用觸發程序的功能,為每個重要的資料表都設計一個最佳的倉庫管理員,這樣就不用擔心使用者胡作非為,或是不按照牌理出牌了。

觸發程序的種類與觸發時機

觸發程序可分為2種:
‧AFTER觸發程序:這類的觸發程序要在資料已變動完成之後(AFTER),才會被啟動並進行必要的善後處理或檢查。若發現有錯誤,則可用ROLLBACK TRANSATION敘述將此次操作所更動的資料全部回復。

‧INSTEAD OF觸發程序:INSTEAD OF是"取代"的意思,就是這類觸發程序會取代原本要進行的操作(例如新增或更改資料的動作),因此會在資料變動之前就發生,而且資料要如何變動也完全取決於觸發程序。

INSTEAD OF觸發程序能夠適用於資料表及檢視表(View)上;而AFTER觸發程序則只能使用於資料表。

另外,當我們在建立觸發程序時,還必須指定程序要被觸發的操作時機:INSERT、UPDATE或DELETE,至少要指定一種,當然一個觸發程序也可同時指定二種或三種時機。在同一個資料表中,我們可以建立許多的AFTER觸發程序,但INSTEAD OF觸發程序針對每種操作(INSERT、UPDATE、DELETE)最多只能各有一個。

如果針對某操作同時設定了INSTEAD OF及AFTER觸發程序,那麼只有前者會被觸發,後者未必會被觸發。

觸發程序的建立與修改
用SQL建立觸發程序的簡易語法如下:

CREATE TRIGGER trigger_name
ON {table | view}
[WITH ENCRYPTION]
{FOR | AFTER | INSTEAD OF} { [DELETE] [,] [INSERT] [,] [UPDATE]}
AS
sql_statements


閱讀全文...
就是愛分享
當我們在撰寫SQL程式時,多少都會用到一些系統內建的函數,例如GETDATE()、CAST(...)等。而SQL Server 2005的「使用者自訂函數」功能,則讓我們也可以自己來建立函數,然後直接應用於SQL敘述或運算式中。

自訂函數其實和預存程序是很類似的,都是由多行T-SQL敘述所組成的程式單元。不過它們之間還是有一些明顯的差異:

1.預存程序只能傳回一個整數值;而自訂函數則可傳回各種資料型別的值(但text、ntext、image、timestamp、cursor及rowversion除外),甚至包括了sql_variant及table型別。

2.預存程序可以經由參數來傳資料(將參數設為OUTPUT);但自訂函數則只能接收參數,不可由參數傳回資料。

3.在預存程序中可以做任何的資料異動,例如新增或修改資料、更改資料庫的設定...等;但自訂函數則不允許更改資料庫的狀態或內容。

4.預存程序必須以EXECUTE來執行,因此不能使用在運算式之中,例如myProc會傳回2,那麼「SET @var=myProc」或「SELECT * FROM myProc」都會造成錯誤。而自訂函數則除了可用EXECUTE來執行外,也可用於運算式中,並以傳回值來取代其名稱,例如假設myFun(3)會傳回"Good",則「SET @var=myFun(3)+'!'」就相當於「SET @var='Good'+'!'」。

一般來說,預存程序比較適合做一些對資料庫的操作或設定,其執行結果通常不必傳回,或將結果傳回到執行該程序的應用程式中(例如將SELECT敘述的結果傳回到SQL查詢或前端應用程式中);而自訂函數則適用於計算或擷取資料,然後將結果傳回給呼叫它的運算式或SQL敘述(例如SELECT或FROM子句)中使用。

自訂函數的建立

您可以在SQL Server Management Studio中建立自訂函數,其操作方法也和預存程序差不多,只是SQL語法有所不同而已:



自訂函數依傳回值及函數內容可分為兩大類:

1.純量值函數(Scalar-valued function):這類函數會傳回單一的資料值,而資料值的型別可以是除了text、ntext、image、cursor及rowversion(timestamp)之外的任何型別。若是傳回table型別的資料,則歸屬於下列二類函數。

2.傳回資料集(Rowset)的自訂函數:這類函數可傳回一個table型別的資料集,依其定義語法的不同,又分為2小類:

‧嵌入資料表值函數(Inline table-valued function):或稱為「行內資料集函數」。函數的內容僅有一個SELECT敘述,而傳回值即是該SELECT的查詢結果。

‧多重陳述式資料表值函數(Multistatement table-valued function):或稱為「多敘述資料集函數」。函數內容包含許多的敘述,而最後也會傳回一個table型別的資料集。

閱讀全文...
就是愛分享
在預存程序中使用敘述時,需注意以下的限制:

1.在預存程序中,有些敘述不可使用,包括:


而除了上表以外的其他敘述則可以使用,甚至我們可以在預存程序中建立物件(例如CREATE TABLE)並進行存取;也就是說,在編譯預存程序時,其內所參照到的物件可以不存在,只要在該敘述實際執行時,所參照的物件已經存在即可。

2.在同一個資料庫中,只要使用不同的結構描述,便可以建立相同名稱的物件。因此不管執行者是誰,只要預存程序中未指明物件的結構描述,都會先找以預存程序所屬的結構描述來尋找物件,找不到的話再換用"dbo.物件",若都找不到則產生錯誤訊息。

3.有些指令在執行時若未指定結構描述,會固定以目前使用者的預存結構描述來尋找或建立物件,這些指令包括:

因此在預存程序中使用這些敘述時,最好要同時指明結構描述,以免其他使用者在執行時發生預期之外的結果。

參數傳遞的技巧

當我們執行預存程序時,若未指明參數名稱,則必須依照預存程序所需的參數依序傳過去;而且除非該參數有指定預存程序並且是在最後面,否則不可以省略。

預存程序的3種傳回值
1.在程序中以"RETURN n"傳回整數值。
2.在參數中指定OUTPUT選項的參數。
3.預存程序中執行敘述(例如SELECT)所傳回的資料集(RecordSet)及通知訊息。

閱讀全文...
就是愛分享
「預存程序」(Stored Procedure)就是將常用的或很複雜的工作,預先以SQL程式寫好,然後指定一個程序名稱儲存起來,那麼以後只要使用EXECUTE敘述來執行這個程序,即可自動完成該項工作。

預存程序的優點

預存程序中可以包含資料存取敘述、流程控制敘述、錯誤處理敘述...等在使用上非常有彈性。其優點有:

執行效率高:SQL Server會預先將預存程序編譯成一個執行計劃並儲存起來,因此每次執行預存程序時都不需要再重新編譯,如此可以加快執行速度。由此可知,我們應該將經常使用的一些操作寫成預存程序,來提高SQL Server的運作效率。

統一的操作流程:我們可以將複雜的工作製做成預存程序,如此除了節省人力操作的時間外,對於一般使用者來說,也可以維持一致的資料操作流程,並避免使用者不小心的操作錯誤。例如當某項資料變更時,必須更動到5個資料表的內容,那麼將更新步驟寫成預存程序來執行,不但省事,而且也不怕漏掉任何一個資料表。

重複使用:預存程序還可模組化(將大的程序分解成許多較小而且可以獨立運作的程序),以方便除錯、維護、或重複使用於不同的地方。例如當我們要將「地址」資料分解成「市、街、號、樓」4個字串時,可寫一個預存程序來處理,那麼以後在任何地方只要執行此預存程序,即可完成分解地址的工作。

安全性:當資料表需要保密時,我們可以利用預存程序來作為資料存取的管道。例如當使用者沒有某資料表的存取權限時,我們可以設計一個預存程序供其執行,以存取該資料表中的某些資料,或進行特定的資料處理工作。此外,預存程序的內容還可以加密編碼,這樣別人就看不到預存程序中的程式了。

預存程序的種類

預存程序可分為3類:

系統預存程序(System stored procedures)
系統預存程序一律以sp_開頭,例如"sp_dboption"。此類預存程序為SQL Server內建的預存程序,通常是用來進行系統的各項設定、取得資訊或相關管理工作。

延伸預存程序(Extended stored procedures)
延伸預存程序通常是以xp_開頭,例如"xp_logininfo"。此類程序大多是以傳統的程式語言(例如C++)撰寫而成,其內容並不是儲存在SQL Server中,而是以DLL的形式單獨存在。

我們可以把延伸預存程序看成是SQL Server的外掛程式,它可以擴充SQL Server的功能,例如SQL Server沒有從網頁中萃取資料的能力,則我們可以撰寫一個DLL的延伸預存程序,以供SQL Server將之載入並執行。

使用者自訂的預存程序(User-defined stored procedures)
就是我們自己設計的預存程序,其名稱可以任意取,但最好不要以sp_或xp_開頭,以免造成混淆。自訂的預存程序會被加入所屬資料庫的預存程序項目中,並以物件的形式儲存。

用SQL語言建立預存程序
建立預存程序是使用CREATE PROCEDURE敘述,其語法如下:

CREATE PROC[EDURE] procedure_name [;number]
[@parameter data_type [VARYING] [= default] [OUTPUT]]
[,...n]
[WITH {RECOMPILE | ENCRYPTION | RECOMPILE, ENCRYPTION }]
[FOR REPLICATION]
AS sql_statement [...n]


閱讀全文...
就是愛分享
在存取資料庫時,我們所下的SQL敘述不一定要一個一個地執行,也可以利用批次(Batch)的方式,將一個或多個SQL敘述打包,一起送到SQL Server去處理。SQL Server會將一個批次中所包含的數個SQL敘述當做一個執行單元(Unit),一起編譯成為執行計畫(Execution plan),然後再加以執行。

不過請注意,並非所有SQL敘述皆可放在同一個批次內執行,例如CREATE VIEW、CREATE DEFAULT、CREATE RULE、CREATE PROCESURE及CREATE TRIGGER敘述只能單獨放在一個批次中執行,不能與其他敘述合併執行。

用GO分隔不同的批次

因為不是所有SQL敘述都可以放再同一個批次,或是有些情況下,您可以會希望讓某些敘述分開執行。假設您有三個敘述需要執行,如果三個敘述全部放再同一批次,則當第1個敘述失敗時,批次就會停止,而不會繼續執行第2、3個敘述,若是能夠將第1與第2、3個敘述隔開,就可以確保後面敘述可以順利執行。

所以SQL Server提供了一個GO指令,讓您可以隔開SQL敘述,將之分為多個批次。下面是一個簡單的範例:

USE 練習02 <-------第1個批次
GO
SELECT * -----
FROM 客戶 |
SELECT * |---第2個批次
FROM 訂單 ----|
GO

當SQL Server遇到GO指令時,會將GO當作傳送批次的訊號,例如遇到第1個GO的時候,會將GO前面的敘述傳送給伺服器進行處理(編譯成執行計劃並加以執行)。而遇到第2個GO指令時,再將兩個SELECT敘述傳送給伺服器處理,如此就產生兩個批次。

請注意,GO只有SQL Server Management Studio提供的工具程式才能辦識並處理。意即GO指令只能使用在SQL Server Management Studio中執行,若是您撰寫應用程式(例如用Visual Basic撰寫)時使用GO指令,那麼SQL Server將會因不認得而產生錯誤訊息。

閱讀全文...
就是愛分享
在ASP.NET中,網頁是由「視覺」與「程式邏輯」兩個部分所組成的,視覺就是指圖片、靜態文字、HTML標籤...等掌控網頁外觀的部分,而程式邏輯就是Visual Basic或是其他程式語言的程式碼,用來控制網頁的邏輯運作。

這兩個部分可以依照您的需求,合在一起放在同一個檔案內,稱為「單一檔案模式」,也可以分開放置在不同檔案,稱為「程式碼後置模式」(Code-Behind);



雖然程式碼後置模式將程式分開成為兩個檔案,但是ASP.NET載入該程式時,仍然會自動將兩個檔案合併執行。

兩種模式的比較

一般來說,單一檔案模式的優點如下:
1.如果程式碼不多,放置於單一檔案內,對於學習、撰寫與維護較為方便。
2.因為只有一個檔案,所以容易部署至伺服器,傳送給其他人的時候也較為方便。
3.只有單一檔案,所以需要更改名稱時直接更改即可。若是程式碼後置模式,更改aspx.cs檔案的名稱之後,還必須開啟aspx檔案修改CodeFile屬性,所以比較麻煩。

而下面則是程式碼後置模式的優點:
1.將視覺與程式邏輯分開之後,美工與程式設計人員便能獨立作業,可以各自修改檔案,不會互相影響。
2.因為程式羅輯分開為另一個檔案,所以可以方便地讓多個網頁共用同一個程式邏輯檔案。

兩種模式各有其優缺點,您可以依照環境與需求,選擇合適的模式來設計。

閱讀全文...
就是愛分享
Visual Studio 2008是微軟公司為.NET程式設計者所提供的IDE軟體,其支援多種程式語言,而且具備統一的開發介面,不論開發桌面應用程式、ASP.NET網頁程式。XML Web Service或是行動裝置應用程式,都可以在相同的環境與介面下完成。

依照功能的不同,Visual Studio 2008分成許多版本,其中Visual Web Developer(簡稱VWD)便是特別為了開發ASP.NET網站所推出。

在VWD內可以使用C#與Visual Basic設計ASP.NET網頁,而且還隨附SQL Server Express資料庫伺服器,可以開發較為複雜、以資料庫為資料後端的網站。

網站種類

在VWD中開發ASP.NET網頁,必須先建立網站專案,一個專案便代表一個網站。VWD支援的網站類型可分為以下幾種:

HTTP、FTP:這2種網站都是指實際運作中的Web伺服器(通常都是IIS伺服器),在開發網頁的過程中,VWD會透過HTTP或FTP通訊協定存取伺服器上的網頁檔案,載入到VWD的工作環境中供我們進行開發,修改的結果也都會直接存回伺服器上。

檔案系統:顧名思義,這是將我們開發的網頁直接存於本機的資料夾中,不過VWD有一項特別的「虛擬網站」功能,可在電腦上啟動模擬的Web伺服器,以供ASP.NET網頁。此功能讓我們可在開發過程中,不必架設實際的Web伺服器,也可測試ASP.NET網頁在伺服器上執行的效果。由瀏覽器經由虛擬網站來瀏覽開發中的ASP.NET網頁時,即是模擬使用者實際經由網路存取網站伺服器網頁的情形。

剛建好的新網站,其中即會含有1個資料夾及3個檔案(展開右邊方案總管窗格中的加號,可看到另一個檔案)。這些資料夾和檔案雖暫時用不到,但還是先來認識一下:

App_Data:這個資料夾是用來存放ASP.NET所要用到的資料檔,可以是SQL Server的資料庫檔或XML檔案。

Default.aspx:aspx是預設的ASP.NET網頁副檔名;Default則是預設的首頁名稱。當我們在VWD中建立新的ASP.NET網頁時,預設也都是以Default為主檔名,並會依序加上數字編號,不過我們可自行設定新的檔案名稱。

Default.aspx.cs:按Default.aspx前的加號按鈕時才會看到,此為Default.aspx網頁的ASP.NET程式碼所在的檔案,副檔名為cs表示其為C#程式。此種將程式碼與網頁內容分開的方法,稱為程式碼後置(Code-Behined)。

web.config:這是ASP.NET的網站設定檔,當我們希望ASP.NET的行為與預設不同時,即需在web.config寫入新的設定值。

閱讀全文...
就是愛分享
無論使用C#或是VB.NET,當你要透過ADO.NET連接SQL Server資料庫的時候,必須指定連接字串,因此我們來看一下相關連線字串的彙總。

最簡單的連線字串,是以信任連線的方式連接 SQL Server 資料庫,字串如下:

Server=ServerAddress;Database=DataBaseName;Trusted_Connection=True;

ServerAddress是資料庫伺服器的名稱,DataBaseName則是所要連接的資料庫名稱,Trusted_Connection設為True,表示直接透過信任連線連接,因此不需要指定帳號密碼資料。

底下是非信任連線的狀況,其中的Trusted_Connection設定為flase,因此必須再指定ID與Password兩個屬性值給他,這兩個值分別代表開啟資料庫所需的帳號與密碼:

Server=ServerAddress;Database=DataBaseName;User ID=Username;Password=Password;Trusted_Connection=False;

除了上述的語法,你也可以利用以下的替代語法:

Data Source=ServerAddress;Initial Catalog=DataBaseName;Integrated Security=SSPI;
Data Source=ServerAddress;Initial Catalog=DataBaseName;User Id=myUsername;Password=myPassword;

「Integrated Security=SSPI」的意義與「Trusted_Connection=True」的相同,其他的幾個項目則對應至相同的屬性。

另外,你也可以透過指定 IP Address 的方式,連接逺端資料庫,字串如下,要特別注意的是,其中的Data Source除了IP位址,最後一個數字「1433」,是SQL Server的預設連接埠:

Data Source=192.168.100.100,1433;Network Library=DBMSSOCN;
Initial Catalog=DataBaseName;User ID=Username;Password=PasswordName;

如果你使用的是SQL Server Express版本,則連線字串是相同的,差別只在於Server名稱必須加上一個SQLEXPRESS ,如下式:

Server=ServerAddress\SQLEXPRESS ;Database=DataBaseName;Trusted_Connection=True;

閱讀全文...
就是愛分享
資料庫定義到char類型的欄位時,不知道大家是否會猶豫一下,到底選char、nchar、varchar、nvarchar、text、ntext中哪一種呢?結果很可能是兩種,一種是節儉人士的選擇:最好是用定長的,感覺比變長能省些空間,而且處理起來會快些,無法定長只好選用定長,並且將長度設置盡可能地小;另一種是則是覺得無所謂,儘量用可變類型的,長度儘量放大些。

鑒於現在硬體像蘿蔔一樣便宜的大好形勢,糾纏這樣的小問題實在是沒多大意義,不過如果不弄清它,總覺得對不起勞累過度的CPU和硬碟。

下面開始了(以下說明只針對SqlServer有效):

1、當使用非unicode時慎用以下這種查詢:
select f from t where f = N'xx'

原因:無法利用到索引,因為資料庫會將f先轉換到unicode再和N'xx'比較

2、char 和相同長度的varchar處理速度差不多(後面還有說明)

3、varchar的長度不會影響處理速度!!!(看後面解釋)

4、索引中列總長度最多支援總為900位元組,所以長度大於900的varchar、char和大於450的nvarchar,nchar將無法創建索引。

5、text、ntext上是無法創建索引的。

6、O/R Mapping中對應實體的屬性類型一般是以string居多,用char[]的非常少,所以如果按mapping的合理性來說,可變長度的類型更加吻合。

7、一般基礎資料表中的name在實際查詢中基本上全部是使用like '%xx%'這種方式,而這種方式是無法利用索引的,所以如果對於此種欄位,索引建了也白建。

8、其他一些像remark的欄位則是根本不需要查詢的,所以不需要索引。

9、varchar的存放和string是一樣原理的,即length {block}這種方式,所以varchar的長度和它實際佔用空間是無關的。

10、對於固定長度的欄位,是需要額外空間來存放NULL標識的,所以如果一個char欄位中出現非常多的NULL,那麼很不幸,你的佔用空間比沒有NULL的大(但這個大並不是大太多,因為NULL標識是用bit存放的,可是如果你一行中只有你一個NULL需要標識,那麼你就白白浪費1byte空間了,罪過罪過!),這時候,你可以使用特殊標識來存放,如:'NV'。

11、同上,所以對於這種NULL查詢,索引是無法生效的,假如你使用了NULL標識替代的話,那麼恭喜你,你可以利用到索引了。

12、char和varchar的比較成本是一樣的,現在關鍵就看它們的索引查找的成本了,因為查找策略都一樣,因此應該比較誰佔用空間小。在存放相同數量的字元情況下,如果數量小,那麼char佔用長度是小於varchar的,但如果數量稍大,則varchar完全可能小於char,而且要看實際填充數值的充實度,比如說varchar(3)和char(3),那麼理論上應該是char快了,但如果是char(10)和varchar(10),充實度只有30%的情況下,理論上就應該是varchar快了。因為varchar需要額外空間存放塊長度,所以只要length(1-fillfactor)大於這個存放空間(好像是2位元組),那麼它就會比相同長度的char快了。

13、nvarchar比varchar要慢上一些,而且對於非unicode字元它會佔用雙倍的空間,那麼這麼一種類型推出來是為什麼呢?對,就是為了國際化,對於unicode類型的資料,排序規則對它們是不起作用的,而非unicode字元在處理不同語言的資料時,必須指定排序規則才能正常工作,所以n類型就這麼一點好處。

總結陳詞:
1、如果資料量非常大,又能100%確定長度且保存只是ansi字元,那麼char。
2、能確定長度又不一定是ansi字元或者,那麼用nchar;
3、不確定長度,要查詢且希望利用索引的話,用nvarchar類型吧,將它們設到400;
4、不查詢的話沒什麼好說的,用nvarchar(4000)。
5、性格豪爽的可以只用3和4,偶爾用用1,畢竟這是一種額外說明,等於告訴別人說,我一定需要長度為X位元的數據。

閱讀全文...
就是愛分享
「.NET Framework類別函式庫」(.NET Framework Class Library)提供很多功能強大的類別,我們可以直接在C#程式使用這個類別函式庫來輕鬆擴充程式的功能。

.NET Framework類別函式庫是一個龐大且良好組織架構的函式庫,各種.NET Framework支援的程式語言都可以使用相同的.NET Framework類別函式庫,例如C#或Visual Basic 2005程式語言。

.NET Framework類別函式庫的類別架構是使用稱為「名稱空間」(Namespaces,也稱為命名空間)的階層類別架構,每一個名稱空間能夠擁有多個類別,如下圖所示:

上述圖例的System是最基礎的名稱空間,其下擁有基本資料型態的System.Int32(每一階層的名稱空間是使用「.」運算子連接)、System.Byte、System.Single和System.String等名稱空間。這些名稱空間的類別是對應C#語言的內建資料型態。換句話說,C#資料型態都擁有對應的.NET Framework類別物件。

System.Windows.Forms是表單控制項的父名稱空間,其下的名稱空間就是各種控制項的類別:System.IO是基本輸出與輸入和檔案處理的名稱空間。

閱讀全文...
就是愛分享
由於微軟希望將.NET做為未來開發所有不同類型專案的平台,也就是專案應用的底層。

在此一底層中,設計人員應常會看到Windows Form及Web Form等兩個名詞。這兩個名詞分別表示開發在Windows及Web中執行的應用程式,由於執行環境不同,故.NET為這兩種環境的介面,區分為Windows Form及Web Form。若以內容而言,Windows Form及Web Form提供的內容就是各種控制項。

換言之,Web Form就是以ASP.NET開發的網頁,在網頁內就只能使用各種Web Form提供的功能,也就是控制項。

若使用Visual Studio.NET,會在分別使用Windows應用程式及Web應用程式等不同專案時,自動顯示可使用的控制項。

所以若要在SDK輔助說明中尋找有關控制項的說明,請先了解型態,如.aspx網頁必須使用Web Form提供的控制項。

閱讀全文...
就是愛分享
什麼是.NET?一言以敝之,就是「可提供多種語言,進行開發的技術平台」,至於使用的語言種類、開發的應用系統在何處執行等,微軟都希望可做到多語言及多平台。換言之,不論開發人員擅長的語言為何、應用系統完成後的執行位置為何等,都可使用.NET進行開發,這就是.NET的目的。

.NET如何做到此點,首先由其內容觀之,共包括如下四個組成:

Common Language Runtime(CLR):元件的開發過程中,它扮演著如同runtime的角色,執行測試。當元件在執行時,runtime負責管理記憶體的分配,啟動以及結束執行緒與程序,強制執行安全原則,並滿足所有元件與其他元件間可能具有的相依性。

.NET Framework Class Library:其內容是所有可重複使用的類別庫(或程式庫),並可與CLR緊密結合。它包含了數個命名空間(Namespace),而各Namespace之下就是可用的程式庫。

ADO.NET:就是名為System.Data的Namespace,其內就是ADO.NET所有物件模組的類別,目的是「在記憶體內處理資料庫」。

ASP.NET:ASP.NET是一個建構在CLR上,可供撰寫程式的平台,並可在伺服器上使用,以建構強力的Web應用程式。重點是Web Forms(即.aspx檔案),提供簡易的設計方式,可供建置動態的Web使用者介面。並提供建構分散式Web基礎應用程式所需的建構區塊,即以XML資料為傳輸標準的Web Services。

以上就是.NET的四項組成,其中CLR是.NET引擎的作業,與設計人員及使用者較無直接關係,後三者皆會在設計時,依不同目的而予以引用。

閱讀全文...
就是愛分享
C#語言是一種物件導向程式語言,其精神是物件,但支援物件的程式語言並不一定就是一種物件導向程式語言,它可能只是物件基礎程式語言(Object-based Languages),只提供資料抽象化和物件觀念。例如:Visual Basic 6.0。

物件的基本觀念

物件可以視為提供特定功能的元件或黑盒子,我們不用考慮元件內部詳細的資料或程式碼,只需知道物件提供哪些方法和屬性,以及如何使用它,一樣可以使用物件來建立所需的應用程式。

事實上,物件導向程式設計的目的就是讓設計者自行定義物件或擴充存在的物件功能,簡單的說,就是使用物件基礎程式設計來建立應用程式。

物件

物件(objects)是物件導向程式的基礎,簡單的說,物件是資料(Data)和包含處理此資料程式碼(稱為方法Method)的綜合體。

「類別」(Class)是定義物件內容的模子,透過模子可以建立屬於同一個類別的多個物件,例如:Label控制項是一個類別,當我們在表單上新增多個標籤控制項後,就是使用類別建立名為label1和label2等多個物件。

當程式碼使用類別建立物件後,我們並不用考慮物件內部的處理方式,只需知道它提供的屬性和方法與如何使用它,就可以使用這些物件來建立程式。

事實上,Windows應用程式的組成元件都是物件,在表單中的控制項,例如:文字方塊、清單方塊、標籤和按鈕等都是一個個物件。

屬性

物件的屬性(Properties)是物件的性質和狀態,例如:文字方塊控制項提供MaxLength屬性設定輸入字串的長度,標籤物件的BackColor可以指定背景色彩,如下所示:

label1.BackColor;
textBox1.MaxLength;

PS:句點「‧」是物件運算子,在程式碼中的物件是使用句點來存取物件屬性值和呼叫物件的方法。

方法

方法(Methods)是物件的處理函數,也就是執行物件提供的功能。例如:Graphics繪圖物件g提供方法可以繪出字串和畫線,如下所示:

g.DrawString();
g.DrawLine();

上述程式碼使用Graphics物件的方法。事實上,我們並不需要知道繪出字串和畫線的程式碼是什麼?只需知道物件提供的方法需要如何用,指定參數後,就可以繪出指定的圖形。

事件

事件(Events)本身是一個物件,它代表使用者按下滑鼠按鍵或鍵盤按鍵等操作後,所觸發的動作進而造成控制項狀態的改變,當這些改變發生時,就會觸發對應的事件物件。我們可以針對事件來作進一步處理。

物件可以建立事件處理程序來處理事件,這種以事件設計程式的方式,稱為「事件驅動程式設計」(Event-driven Programming)。例如:Button控制項button1觸發的Click事件,其事件處理程序如下所示:

private void button1_Click(object sender, EventArgs e)
{
... ...
}

上述事件處理程序擁有2個參數。其說明如下所示:
‧object物件:觸發事件的來源物件,也就是哪一個物件產生此事件。
‧Eventargs物件:事件物件本身,包含事件的相關資訊。

閱讀全文...
就是愛分享
程式語言的「開發環境」(Development Environment)是一組工具程式用來幫助程式設計者建立、編譯和維護程式語言建立的應用程式。

目前大部分高階程式語言都擁有整合開發環境,稱為「IDE」(Integrated Development Environment),只需再同一個應用程式就可以編輯、編譯和執行特定語言的應用程式。

微軟的Visual Studio

微軟C#語言的整合開發環境是Visual Studio,它是微軟公司開發的整合開發環境,能夠再同一套應用程式編輯、編譯、除錯和測試C#等.NET語言的應用程式。

Visual Studio 2005/2008是一套支援.NET Framework的整合開發環境,可以使用C#、Visual basic、C++和J#等語言來建立Windows、ASP.NET、主控台和Web Services等各種不同的應用程式。

Visual Studio整合開發環境

在Visual Studio 2005/2008整合開發環境建立的應用程式是在.NET Framework的CLR平台上執行,如下圖所示:



上述圖例在Windows作業系統安裝.NET Framework 2.0/3.5版後,就可以使用Visual Studio 2005/2008,以.NET語言來建立WindowsForms、ASP.NET、ADO.NET和XML應用程式。

Visual Studio 2005/2008是.NET平台的整合開發環境,提供Express版本讓初學者和學生能夠快速建立.NET應用程式。

閱讀全文...
就是愛分享
微軟C#語言是一種支援.NET Framework平台的程式語言,它可以說是C/C++語言的進化版本,一種由微軟公司所獨立發展的物件導向程式語言。

.NET Framework的基礎

.NET Framework是微軟新世代的程式開發平台,它是由CLR(Common Language Runtime)和.NET Framework類別所組成。我們可以使用.NET Framework支援的程式語言,例如C#、Visual Basic和C++等來建立.NET應用程式。

.NET Framework程式檔案在使用.NET編譯程式編譯時,並不是直接編譯成CPU的機器語言,而是一種中間程式語言稱為「MSIL」(Microsoft Intermediate Language)。等到執行程式時,CLR使用「JIT」(Just In Time)編譯程式將MSIL轉換成機器語言來執行,其架構如下圖所示:



上述圖例不論使用C#、Visual Basic或C++語言建立的原始程式碼,在編譯成MSIL後,就可以在不同Windows作業系統安裝CLR,撰寫的程式碼就可以跨平台在不同Windows作業系統上來執行。

.NET Framework類別函式庫是一個龐大的類別函式庫,只需支援.NET Framework的程式語言,都可以使用此類別函式庫的類別和方法。

微軟的C#語言

C#語言是一種簡單的程式語言,因為它刪除Java和C++語言的複雜語法和一些常造成程式設計困擾的缺點,例如:指標、含括(Include)、巨集、範本(Templates)、多重繼承和虛擬繼承等,再加上大部分語法都源於C和C++語言,也和Java語言十分相似。

C#語言也是一種非常現代化的程式語言,因為C#語言支援現代程式語言所擁有的例外處理(Exception Handling)、垃圾收集(Garbage Collection)、擴充資料型態和程式碼安全。而且C#語言是一種真正的物件導向程式語言,完全支援對策、繼承和多型的物件導向程式語言特性。

閱讀全文...
就是愛分享
Facebook成長如此迅速,很大的原因在於它提供了源源不絕的應用程式與小遊戲,讓人身不由己地黏在上面無法自拔。對開發者來說,Facebook也提供了十分親和的開發環境,能夠快速上手。只要具備基本程式能力,照著後面所介紹的步驟就能建立第一個Facebook應用程式!

事前準備
1.PHP開發環境
2.應用程式的Hosting環境

Facebook API目前有三個Libraries可以用來開發Facebook應用程式:PHP、Javascript、AS3。如果開發純html的應用程式就要用Javascript跟PHP,即使是AS3開發,可能還是會遇到需要server端跟Facebook溝通的情形,所以PHP Libraries可能也少不了。

AS3的Libraries叫做ActionScript 3.0 Client Library for Facebook Platform API。

建立新的Fackbook應用程式

1.開啟Facebook的開發者網頁http://www.facebook.com/developers/,登入後點選右上角的[Set Up New Application],建立一個新的Facebook應用程式。



2.替應用程式取一個名稱,同意使用條款後[儲存變更]。



3.成功建立新的應用程式後,您會取得一組獨一無二的API金鑰與Application Secret。找到並點選下方的example code超連結,稍後我們將使用這段程式碼為例,建立第一個應用程式。





4.複製範例程式碼並存檔為index.php。其中,特別注意下列兩行程式碼是否為自己的API金鑰與Application Secret:

$appapikey = 'YOUR APP API KEY';
$appsecret = 'YOUR APP SECRET';



5.下載並解壓縮官方的PHP client 函式庫後,將index.php放到[your_location]\facebook-platform\php目錄中,如下圖:



註:熟悉PHP語法的開發者也可以修改require_once,自行更改目錄結構。

6.將整個php資料夾deploy至您的伺服器。此時,若您在瀏覽器中直接開啟網址[your_hosting_location]/index.php,出現的竟然不是程式內容,而是導向Facebook並出現開發中的訊息,就表示您已正確地完成了上面的步驟,剩下幾個簡單設定,就可以完成我們的第一個Facebook應用程式了!

我們已經在伺服器上deploy了範例程式,接下來的步驟就是讓Facebook知道這支程式的所在位置。

編輯應用程式設定

1.在[我的應用程式] –> [編輯設定]頁面左邊欄,點選[畫布(Canvas)]。找到並輸入畫布頁面網址以及Canvas Callback URL兩欄。這裡要注意的是,畫布頁面網址欄位只能輸入小寫英文字母、'_'及'-'字元,不接受數字。Canvas Callback URL則是您程式所在位置的網址,例如:http://[yourdomain]/index.php,完成後[儲存變更]。



2.若設定正確,則出現成功訊息:



3.再次連結應用程式所在的網址,映入眼簾的是如此熟悉的畫面:



大功告成!

用力地按下[同意]後,畫面上出現了我們的第一支範例程式執行結果 ─ 列出使用者的25個朋友id。當然,Facebook應用程式的能耐可不僅止於此,更多的功能都寫在API裡,您可以在這個範例基礎上繼續補強並完成您的第一支Facebook應用程式。



雖然Facebook官方主要支援PHP版本的API,但對其他程式語言較拿手的開發者也可以到這裡尋找適合的非官方API。對Google App Engine情有獨鍾的開發者請使用支援Python的PyFacebook或其他Java APIs,經實做證明,GAE是可以拿來host Facebook應用程式的。另外提供一個實用的GAE小技巧:開發過程中,將[編輯設定]的Canvas Callback URL欄位中改為http://127.0.0.1:8080,直接連至自己的本機測試;待程式完成後再改為正確的網址即可,如此可大幅縮短開發時間喔!

閱讀全文...
就是愛分享
內容管理系統(Content Management System,簡稱CMS),組織和協助共同合作的內容的結果,是指用於管理及方便數字內容的系統。

內容管理系統的定義可以很狹窄,通常是指門戶或商業網站的發布和管理系統;定義也可以很寬泛,個人網站系統也可歸入其中。Wiki也是一種內容管理系統,Blog也算是一種內容管理系統。

現在流行的開源CMS系統有:

Dede CMS,免費、開源(非GPL,無版權)
HB cms,免費、開源
Joomla,免費、開源
Drupal,免費、開源
Xoops,免費、開源
Phpnuke,免費、開源

其中Xoops是一個功能強大的架站系統,而且是免費的軟體,再加上是目前全球最多人使用的網站系統,所以外掛模組眾多,你想的到都有,如常見的「新聞」、「常見問答集」、「檔案下載」、「投票機」等等種類繁多不勝枚舉。

另外Joomla!可以在Linux、Windows、MacOSX等各種不同的平台上執行。目前是由Open Source Matters (www.opensourcematters.org)這個開放源碼組織進行開發與支援,這個組織的成員來自全世界各地,小組成員約有150人,包含了開發者、設計者、系統管理者、文件撰寫者,以及超過9萬名(2007.3)的參與會員 。

以上兩者都是使用PHP程式語言加上MySQL資料庫所開發的軟體系統。

閱讀全文...
就是愛分享




1.GIFTS個性禮品網 - 網際網路資料庫設計班(Linux)
針對送禮需求,我們製作的專題能滿足與使用者互動的個性化禮品服務網。



2.[Your Time Map]有攤嗎? - 程式設計班
本組主題是製作一個網站,提供大家能方便的在線上地圖中發佈、搜尋及分享各個活動的功能。將活動加上分類、地理位置及活動時間的資訊、提供活動的發佈平台,並利用多種不同的搜尋方式、方便訂閱及檢索有興趣的活動。



3.雲龍數位網路服務 - 創業整合平台
雲端技術從廣義上來說,代表了一種現在的網路使用者對於網路的使用方法,主要是利用分散式系統架構因應企業巨量資料處理需求。雲端技術的主要架構概念,是藉由一個分散式的檔案系統架構、程式設計方法,以及低硬體等級的環境來達成高容錯,高延展的計算環境。企業在建置資訊基礎架構時,經常會因為企業規模改變而需要更動資訊基礎架構規模,嘗試提出一個企業運用雲端運算解決此類問題之解決方案。

4.Joise就愛洗 - 網路洗衣媒合平台 - 網際網路資料庫設計班(Linux)
Joise為Web網站平台,提供一個店家和消費者之間的媒合平台。提供消費者簡單、快速的得到充分的店家資訊;提供即時訊息通知,讓衣服送洗流程易於掌握;而店家透過本系統,除可增加曝光度,也將有助於客戶的管理,期望能在網際網路日益發達的今天,讓傳統的洗衣產業,利用網路來媒合洗衣店家和消費者,e化網路平台導入,讓洗衣店的資訊充分提供,消費者也能快速得到想要的資訊,透過本系統,讓洗衣店、消費者雙方的連繫溝通更為方便、快速讓消費者困擾者困擾的衣服送洗流程,能夠透明化,也能夠充分的掌握。



5.[KADACHA]單車適乘零件網 - 程式設計班
單車熱持續,零組件市場方興未艾,有鑒於相關資訊多為外國網站甚為不便,本組為一打造單車零組件本土化之交易網站。另外不當的騎乘姿勢固然讓使用者受傷,經深入研究,不合適的零組件更是主要的原因,因此本專案著重於量身訂製之客製化零組件,DIY資訊及科技技術之教學,希望以此為賣點,結合單車零組件市場進行開發。

6.康熙電子書文化網路 - 網路工程師班
接受康熙電子書文化集團有限公司委託以來,一組負責的同仁即兢兢業業努力進行各相關課題的研究,為了為委託者創造最佳的規畫和營造!除了研究委託公司的產業相關課題,以便和本公司的技術特質達成最佳的整合外;也針對委託者的公司體質做深度瞭解。

7.FunPet瘋寵物地圖網誌 - 網際網路資料庫設計班(Linux)
結合時下最夯的微網誌與google map功能,整合出一個可以讓飼養寵物的同好們彼此交流與分享經驗的溝通平台。



8.排行王 - 程式設計班
請想想,生活週遭是否常聽到排行資訊呢?排行資訊分散在不同網站、雜誌中,是否造成困擾呢?是否想要擁有自己的排行呢?以上問題,延伸「排行王」創意,主要功能:
‧集中排行資訊
‧減少搜尋時間
‧建立個人排行
‧結合網路工具,使用無時無刻、無所不在。

9.企業網路系統建置 - 機房架構暨資訊管理專案規劃 - 網路工程師班
專為龍捲風遊戲公司網路所設計的網路企劃案,本專案分為遊戲機房與總公司網路系統,遊戲機房架構有穩定備援機制。Cisco防火牆與路由功能、網段分離、伺服器認證與升級、經由認證後送到遊戲分流的伺服器。總公司部分,簡單的分為四個網路架構,維護與研發遊戲的功能,滿足網路上線需求,適合一般辦公需求,網管部與研發部可以透過專線,進行遊戲機房端與總公司的直接安全連線。

10.e修居久屋 - 家居修繕客製化媒合系統
以往新屋裝潢設計或舊屋改造裝修,除了少數的大型裝潢設計公司有行銷廣告讓人較易找到外,大多是找親朋好友詢問或自行由黃頁電話簿隨意查詢,如此就無法有效而廣泛的比較,找到符合自己想要的設計風格或施工方式的公司或個人來承作。

11.Show Girl媒合平台 - 程式設計班
主要是提供無經紀公司、個人或素人與廠商活動媒合配對的平台,並提供Model資料搜尋、照片展示。

12.NET科技股份有限公司 - 網路工程師班
構想是一間中型公司,因為業務拓展的需要,開設新的分公司,藉此機會規劃新的網路架構,以及採購新的網路設備,以符合網路備援、資訊安全、資源共享、未來擴充的需求。

13.鈺康網路藥局 - 網際網路資料庫設計班(Linux)
‧一個提供專業藥品資訊的專業形象網站
‧提供簡訊通知功能解決建置基本CRM功能達取得想要的經營效果
提升一般消費者對本藥局的信任並提供一個全新聯繫管道



14.美食精靈王 - 程式設計班
這是一個加入以精靈模式搜尋的美食部落格網站,其中除了一般網站熟析的功能外,讓會員分享資訊、收集資訊的功能,是我們主要的目標,希望藉此使網站的活動性增加,會員的參予度提高,而延續美食網站的生命。

閱讀全文...
標籤: 0 意見 | | edit post
就是愛分享
Hibernate 是「物件/關係對應」(Object/Relational Mapping)的解決方案,簡寫為 ORM,簡單的說就是將 Java 中的物件與物件關係,映射至關聯式資料庫中的表格與表格之間的關係, Hibernate 提供了這個過程中自動對應轉換的方案。

2001 年未 Hibernate 第一個版本發表,2003年6月8日 Hibernate 2 發表,並於年未獲得 Jolt 2004 大獎,後被 JBOSS 收納而成為其子項目之一,2005年3月 Hibernate 3 正式發表,當中有了一些重大的改變,這份文件將以之前 Hibernate 2 時撰寫的文件為基礎,針對 Hibernate 3 作重新整理的動作,所使用的版本為 Hibernate 3.2。

在撰寫 Hibernate 程式的過程中,我們可以粗分四大步驟(1~4) 與二大檔案(5、6),依序是 :

1. Configuration:

1.1. 透過 Configuration File (hibernate.cfg.xml) 設定與 Database 連線的方式與設定要匯入哪些 Mapping File。

1.2 (JavaEE 環境) 透過 JNDI Service 來註冊 org.hibernate.SessionFactory 成為 Global 物件。

1.3 (JavaEE 環境) 設定 AP Server 所提供的 Transaction 的功能。

1.4. 透過 org.hibernate.cfg.Configuration 的 configure() mathod 來讀取 Configuration File。

1.5 透過 org.hibernate.cfg.Configuration 的 buildSessionFactory() 來產生 下一步驟要用到的 org.hibernate.SessionFactory 。

2. SessionFactory:

2.1 一個 org.hibernate.SessionFactory 只對應到一個 Database

2.2 必須在程式要使用之前就必須建立好 SessionFactory,因為需要一點時間才能建立,所以最好是在網站或程式初始化時就去建立,至少必須在程式開始接觸 Database 之前就要建立。

2.3 必須放在所有程式都可以取用到地方 ( 有 JNDI 就註冊到 JNDI 中, 如果沒有 JNDI, 且是Web Apps, 也可以註冊在 ServletContext)。

2.4 org.hibernate.SessionFactory 會 catch 執行 Hibernate 所產生的 SQL statement 和 Database 的 metadata。

2.5 org.hibernate.SessionFactory 是 thread-safe 物件,會自己處理 multi-thread。

2.6 透過 org.hibernate.SessionFactory 的 openSession() 或是 getSession() 來 產生/取得 下一步驟要用到的 org.hibernate.Session。

3. Session:

3.1 org.hibernate.Session 包含了 JDBC 的 Connection object。

3.2 所以可以視為 Hibernate 與 Database 之間溝通的橋樑、過程。

3.3 org.hibernate.Session 可以提供 org.hibernate.Transaction object

3.4 所以存取 Persistent Class 都需要透過 org.hibernate.Session 。

4. Transaction:

4.1 org.hibernate.Transaction 將真正在底層執行 Transaction service包裝起來,

在 J2EE 中使用 JTA 的 UserTransaction 服務多個 Database (ex: 轉帳);或利用 J2SE 中 JDBC 的 Transaction 來服務一個 Databae。

4.2 在 Hibernate 3.x 中,存取 Persistent Class 的動作一定要包在 org.hibernate.Transaction 的可視範圍之中。

例如:Transaction transaction = session.beginTransaction();

存取 Persistent Class ...
......

transaction.commit();

5. Persistance Class:

5.1 最好是 JavaBeans 的架構。

5.2 使用 Hibernate 來處理的 Table 一定要有 primary key,且對應到 Java Class 中的 欄位與 setter,為了避免誤改,所以都應該宣告為 private 屬性。primary key 是獨一無二的 id,所以在選定時最好避免與目前專案相關性太高的欄位,應儘量使用流水號。

5.3 不要使用 final。Hibernte 會自動為每個 Persistent Class 產生各自的 proxy,但 proxy 會繼承 Persistent Class,所以一旦設為 final,將會限制 proxy 所提供的功能。

5.4 要小心處理 Persistent Class 的三種狀態:
transient : 尚未跟 Persistent Context 接觸。( 與 Session 沒有關係的狀態 )
persistent : 正在跟 Persistent Context 接觸。
detached : 以前曾經跟 Persistent Context 接觸,但現在分開了。

6. Hibernate Mapping File:

6.1 每一個 Persistent Class 都會有自己的 Mapping File,以維護 Table 與 Persistent Class 的對應關係。

6.2 Mapping File 的副檔名為 .hbm.xml。

6.3 Mapping File 的存放位置必須跟所對應的 Persistent Class 的目錄相同。

6.4 在使用 Mapping File 之前必須註冊到 Configuration file 中,通常使用靜態的方法,直接寫入 hibernate.cfg.xml 中。

閱讀全文...
標籤: 0 意見 | | edit post
就是愛分享








在還沒看<皮克斯動畫20年>之前
早就聽說參觀人潮非常踴躍
所以特別挑了一個非假日的時間去看

<皮克斯動畫20年>完整呈現皮克斯工作室20年來結合藝術與科技的動畫藝術
展覽內容包括繪畫手稿、3D模型、故事板、彩繪腳本、短片、多媒體影像及幕後製作影片等將近600件展品
讓看熱鬧的門外漢、看門道的內行人都有很大的收穫



一部動畫電影的一切都始於故事
故事板中一張張的分鏡圖
就是未來電影每一個鏡頭的簡化版
從原始構想到畫出故事板
也就是將文字轉化為視覺
透過轉化,讓電影中每個鏡頭都隨著故事板脈絡而被賦予了意義

當故事產生了
角色的創造必是不可或缺
有深度的角色,可以抓緊觀眾
讓他們在角色中看到自己,而進入電影情境
例如汽車、昆蟲、魚等角色都擬人化

也因此電影對皮克斯而言就是讓虛擬世界變得活靈活現
皮克斯渴望創造一個讓人信服的世界
這樣的世界不僅僅是複製真實
也在於做出令觀眾信服的陳述
就連不真實的假象
觀眾也深信不疑

彩繪腳本是根據劇情演變
做出整體的色彩、光線、氛圍的視覺作品
早在電腦問世之前
彩繪腳本就是皮克斯賴以預覽完整故事最佳途徑
而最高境界的劇情是沒有任何一句對白也能感動人心

總而言之,皮克斯的動畫藝術之所以成功
包含了「角色」、「故事」與「世界」三大要素的整合
在每一部動畫片中
創造出充滿令人驚嘆的世界
引人入勝的角色
以及感同深受和超具想像力的故事
在沒有定型化的電影世界
貼近人們內在的渴望
引發內心的共鳴
也滿足了我們的感知能力

展覽內容還包括令人嘆為觀止的「幻影箱」
在電影發明之前
「幻影箱」就展現出動畫的基本原理
此次展覽皮克斯將「玩具總動員」的角色製作成立體公仔固定在一個大圓盤上
並以每秒18格的頻率轉動
以LED燈的裝置取代傷眼的閃光燈
並應用電腦程式來安排公仔的位置
呈現精準的動作
觀者的大腦將暫留的影像連成一氣
從而產生他們正在連續動作的錯覺
巧妙的帶出動畫形成的原理

這個幻影箱的靈感來自於日本吉卜力工作室的"Bouncing Totoro"
不過「玩具總動員幻影箱」考慮到要讓觀者能夠理解靜止的人物如何動起來
這個大型的幻影箱是從靜止到動態再回到靜態的循環
讓人能夠深刻體會到3D幻影箱的神奇之處

皮克斯工作室的靈魂人物約翰‧萊斯特:「藝術挑戰科技,科技激發藝術」
皮克斯將電腦動畫當成藝術來創作
從展覽中可以看出其「用心」...
創作「海底總動員」時,還特別去學潛水
創作「料理鼠王」時,還特別去法國高級餐廳學料理
創作「超人特攻隊」時,還特別到夏威夷島實地觀察
用心越深,越能感動人心...

------------------------------------------------------------

展覽之外,還特別去看「台灣3D動畫精選」影片賞析會
發現台灣近幾年的電腦動畫進步許多
不過還是卡在一般國片面臨的困境:經費的問題
還好現在已經有很多大專院校都有開這方面的課程
讓培育電腦動畫人才,看到台灣電腦動畫的未來

另外北美館的圖書室有著非常豐富的圖書、期刊
對於美術、廣告、建築等有興趣的人
這裡可以找到一些創作靈感的資料

參觀的那天
雖然是非假日
還是可以看到很多學生來參觀
包括幼稚園的小朋友
比較特別的是還看到有「網拍名模」在外拍
真是充滿藝術美的一日遊啊!!






閱讀全文...
標籤: 1 意見 | | edit post
就是愛分享


GWT(Google Web Toolkit)是一個屬於Open Source的Java軟體開發架構,它可以讓使用者很容易的撰寫像是Google Maps或是Gmail的AJAX應用程式。通常撰寫Dynamic Web Applications是一個冗長乏味又很容易出錯的工作,使用者通常幾乎有90%的時間是花在處理Web Browser跟Platform之間一些不一致的問題,且因為JavaScript的關係,使得使用者在分享,測試,以及重複利用AJAX元件等都會覺得不方便。

GWT可讓使用者避免掉這些頭痛的問題,使用者可用Java程式語言來撰寫Front End程式,然後GWT Compiler會將此Java Class檔轉換為可在Browser上執行的JavaScript和HTML。

Installing Google Web Toolkit

(1) 安裝Java SDK。
(2) 下載Google Web Toolkit。
(3) 將下載之Google Web Toolkit package解壓縮
(4) 開始使用Google Web Toolkit

GWT並沒有安裝程式,所有你執行GWT所需的檔案都放在指定的目錄中,你執行GWT時最主要的應用程式為applicationCreator。

閱讀全文...
標籤: 0 意見 | | edit post
就是愛分享
JSP 2.0最重要的變革之一,便是將Expression Language(以下簡稱EL)整合進JSP標準規格,EL並非全新的語言,最早出現於JSTL 1.0當中,被用來簡化資料存取的相關作業。

由於EL已是JSP的標準,因此你可以選擇直接在JSP網頁當中使用EL替代Java進行資料的存取操作。

EL有其專屬的一套語法,包含了兩項基本要素:變數與運算子。變數用來儲存各種型態的資料,運算子則是資料運算符號。儘管EL是為了特定目的而發展出來的一個特殊語法,然而相較於其他的程式語言的變數與運算子,它們的意義是相同的。對於EL而言,變數是一個儲存了特定資料的符號,EL可以直接對其作存取,或是結合運算子進行必要的運算之後作輸出。

EL另外還有一組內建的預先定義隱含物件(implict variables),它們以Java集合物件的型態出現,其中儲存了網頁的各種資訊,包含session、cookie以及網頁傳輸過程當中所使用的參數值。EL的語法相當簡潔,為了與其他的網頁元素作區隔,EL必須以一個金錢表示符號加上左大括弧${開始,並且以右大括弧}作結束。

閱讀全文...
標籤: 0 意見 | | edit post
就是愛分享
網際網路的普及讓我們對於新技術與新資訊的取得比起以往更為快速,甚至,目前還有研究透過網路搜尋引擎來進行病歷的判斷等,電子郵件與網頁服務是網際網路快速成長的兩大應用推手,一個是讓我們節省了許多書信往返的時間便可以即時和遠方的朋友或是客戶進行聯繫,一個是讓我們可以將訊息快速的散播到世界各地去。而Apache網頁伺服器是目前最受歡迎的網頁伺服器之一,他有著低成本與高穩定的特性讓許多網管人員都十分的喜愛。

透過openSUSE Linux 11中的YaST控制中心來組態網頁伺服器,是一件十分輕鬆的工作。點選[電腦]->[YaST]->[網路服務]->[HTTP伺服器]來啟動[HTTP伺服器]模組。

步驟一:
先選擇那些網路設備介面要提供網頁伺服器的服務,預設系統會將所有的網路設備介面勾選,並以80埠作為主要的服務埠號。

步驟二:
接著可以針對HTTP伺服器欲支援的額外模組進行設定,預設在組態精靈介面中僅提供四種模組共讀者選擇,其它的模組可以於完成精靈組態程式後再進行設定:
1.啟用PHP5程序檔支援:開啟HTTP伺服器支援執行透過PHP5所撰寫的檔案。
2.啟用Perl程序檔支援:開啟HTTP伺服器支援執行透過Perl所撰寫的檔案。
3.啟用Python程序檔支援:開啟HTTP伺服器支援執行透過Python所撰寫的檔案。
4.啟用Ruby程序檔支援:開啟HTTP伺服器支援執行透過Ruby所撰寫的檔案。

步驟三:
接著,HTTP伺服器組態精靈將會建立一個預設主機組態檔。

步驟四:
剛才所產生的基本功能組態檔案,對於目前的操作過程中已經足夠我們使用了,在第四步驟中將會進入虛擬主機的建置畫面。

步驟五:
HTTP伺服器組態精靈會將剛才的設定再進行條列檢視,記得將HTTP伺服器設定於每次啟動主機時一併啟動。確認無誤後請點選[完成]來結束HTTP伺服器的基本組態。

閱讀全文...
標籤: 0 意見 | | edit post
就是愛分享
基本上一個電子郵件的傳遞需要透過幾個必要的元件程式才能夠完成,包含:

郵件使用者代理程式(Mail User Agent,MUA) - 意指一種可以供使用者撰寫郵件、回覆郵件、讀取郵件與處理郵件的程式。通常於Linux作業系統上會提供兩種型態的MUA程式,分別為:
圖形介面的MUA,例如:Thunderbird等。
命令列型態的MUA,例如:透過Linux作業系統內的指令工具來完成郵件的處理工作,例如:/usr/bin/mutt或是/usr/bin/mail。

郵件傳輸代理程式(Mail Transfer Agent,MTA) - 則是一種專門用來傳遞郵件的程式,就像傳統郵電傳遞中的郵局角色一樣負責郵件的傳遞。通常在單一台電子郵件伺服器上僅可以使用一種MTA程式,MTA程式在收到電子郵件時,會先讀取郵件中收件者的欄位資訊,並且確定收件者的位址是否存在。然後再透過通訊埠與收件者的郵件伺服器進行連線,如果這個連線可以建立時,則會透過簡易電子郵件傳輸通訊協定(Simple Mail Transfer Protocol,SMTP)將郵件傳遞到收件者的MTA。

郵件傳遞代理程式(Mail Delivery Agent,MDA) - 便是將從MTA收到的郵件,將這些郵件依據使用者名稱來識別放置於每個使用者的郵件信箱檔案(Mailbox)中。或者是透過MDA再將郵件傳遞到其它的MTA,除了分派郵件的功能之外,MDA程式還可以具備郵件過濾等功能。

常見電子郵件通訊協定介紹

簡易電子郵件傳輸通訊協定(Simple Mail Transfer Protocol,SMTP) - 用於傳遞電子郵件訊息時所使用的一種TCP/IP協定,使用TCP埠25作為主要的通訊埠號,透過這個傳輸協定可以讓電子郵件於MTA之間移動。雖然SMTP本身不支援非ASCII文字的傳輸,但是我們可以透過多用途網際網路郵件延伸(Multipurpose Internet mail Extension,MIME)這個通訊協定來協助處理非ASCII文字的傳輸。

郵局通訊協定第三版(Post Office Protocol Version 3,POP3) - 會在網路連線時不斷的檢查是否有新的郵件進入,並且將這些郵件儲存於伺服器上,並且使用TCP埠110作為主要的通訊埠號。另外,POP3也有提供另一個支援SSL加密的版本稱之為POP3S。

網際網路訊息存取通訊協定第四版(Internet Message Access Protocol Version 4,IMAP4) - IMAP4與POP3通訊協定都是提供用戶端存取存放於伺服器上郵件最常使用的協定之一,但是IMAP4提供更多功能來協助使用者透過協定來存取郵件。其中,這兩者間最大差異在於,POP3通訊協定會於MUA存取郵件訊息時便將郵件下載至本地端上,並且刪除伺服器端上儲存的郵件,且每次僅允許一個使用者進行存取。而IMAP4則允許電子郵件可以永久儲存於遠端伺服器上,並且可以從任何地方來讀取這些郵件,且支持多個用戶同時連接到一個郵件信箱上。

閱讀全文...
標籤: 0 意見 | | edit post
就是愛分享
SQL Server的安全管理可分為兩階段:
驗證(Authentication):驗證使用者是否有權利登入SQL Server伺服器,使用SQL Server提供的服務。

授權(Authorization):也就是設定使用者登入後,可對伺服器做哪些動作、使用哪些資料庫、存取哪些資料表等存取權限。

登入帳戶
在SQL Server中,將用來驗證使用者身份的帳戶稱為登入(Login)。SQL Server提供兩種驗證方式:Windows驗證 - 在SQL Server中建立對應到現有Windows 2000/2003本機或網域帳戶的「登入」,當使用者已用合法的帳戶登入Windows後,要存取SQL Server時,只要他目前所用的Windows帳戶已在SQL Server中有對應的登入,SQL Server就會允許他連線。

SQL Server驗證 - 指由SQL Server自己負責驗證使用者的身份,因此使用這種驗證方式時,管理員需事先y在SQL Server中建好所需的登入及密碼,使用者在連線伺服器時,則必須輸入登入名稱及密碼。通過驗證後才能連上伺服器,使用其資源。

存取權限
在SQL Server中,可被設定存取權限給使用者的物件或動作稱為安全性實體(Securable),安全性實體的種類相當多,可概分為三個層次:
伺服器層級 - 例如登入、資料庫、連結伺服器、端點(Endpoint)等屬於整個SQL Server執行個體的安全性實體都是屬於這個層級,這類安全性實體的存取權限,也都要以登入為授與對象,而一般為方便設定,都是直接透過內建的伺服器腳色(Server Role)來設定登入對伺服器安全性實體的存取權限;當然SQL Server也允許不透過伺服器角色,而個別設定某安全性實體的存取權限。

資料庫層級 - 舉凡屬於某資料庫本身的安全性實體都屬此類,像是資料庫使用者、資料庫角色、結構描述、全文檢索目錄等,原則上,這類安全性實體都需授與給資料庫使用者。

結構描述層級 - 這類安全性實體包括資料表、檢視表、預存程序、函數等等,這個層級的存取權限自然也是以資料庫使用者為主要授與對象。

使用者
使用者(user)這個資料庫物件,就是用來設定登入帳戶對資料庫是否有存取權。由於每個資料庫所允許使用的人都不同,所以每個資料庫都有它自己的使用者物件,假設我們想使用SQL Server中所有的資料庫,那麼在每個資料庫中,都要有以我們的登入帳戶所建立的使用者物件才行。

角色
角色(role)是用來指定存取權限的資料庫物件,而且每個資料庫都有它自己的角色物件,每個角色也都有其獨立的存取權限設定。例如我們可指定某些角色只可查詢資料表資料、有些角色則可更改或刪除資料。設定好角色之後,我們只需再指定每一個使用者可以扮演哪些角色,就可讓使用者取得與角色相同的存取權限。

閱讀全文...
就是愛分享
在網際網路上的主機通常會透過完整格式的網域名稱(Fully Qualified Domain Name,FQDN)來做為辦識主機的所在位置,而一個完整格式的網域名稱包含了兩個部份,分別為主機名稱(host name)與網域名稱(domain name)。為了確保每台主機的完整格式網域名稱不會產生重複的現象,在網域名稱系統的架構中,位於同一層的節點標籤必須是彼此相異,而我們稱這些在同一階層的節點為同輩節點(sibling node)。

在網域名稱系統中,最頂端的root節點是作為整個網域架構頂層管理,而這個樹狀階層架構中為了方便管理不同領域所使用的域名類型,因此在root節點下一層制定一個頂層網域(Top Level Domain,TLD)架構,在最早的時候,頂層網域架構共制定了七個不同的類型:

.com 商業機構或是公司行號
.edu 教育機構或是研究單位使用
.gov 美國政府的機構使用
.int 國際性組織機構使用
.mil 美國的軍事機構使用
.net 最初是給管理網路基礎設施的機構使用,自1996年開始已經開放給其它機構申請
.org 這個類別是給非商業的機構使用,於1996年後就沒有這個限制了

由於早期的發展與制定的規範都是針對美國本土所進行設計的,因此我們會發現在最初規範出來的七個頂層網域並無讓其它國家使用。為了解決這樣的設計謬誤,掌管這些域名架構的網際網路名稱與位址管理機構(International Corporation for Assigned Names and Numbers,ICANN)便將原先的七個頂層網域改稱為通用頂層網域(Generic Top Level Domain,gTLDs)。而為了因應網際網路的快速發展與調解國際網域分配的爭議,除了現存的gTLDs之外,另外也針對不同的國家與地區增加了新的網域命名空間,而這些新定義的網域命名空間以每個國家的國碼來進行定義,因此稱為國碼頂層網域(Country Code Top Level Domain,ccTLDs)。例如:台灣的國碼頂層網域為.tw,日本的國碼頂層網域為.jp等。除了這些定義之外,像近幾年來頗為熱門的.biz與.info這類的網域名稱也於2000年被新增到通用頂層網域中。除了通用頂層網域是由網際網路名稱與位址管理機構來進行管理之外,區域性的國碼頂層網域則是由該國的管理機構來負責,例如:台灣是透過財團法人台灣網路資訊中心(Taiwan Network Information Center,TWNIC)來進行處理.tw國碼頂層網域的管理。

閱讀全文...
標籤: 0 意見 | | edit post
就是愛分享
SQL Server的資料庫可分為系統資料庫和使用者資料庫兩種,其中系統資料庫就是SQL Server自己所使用的資料庫,至於使用者資料庫就是由我們自己建立的資料庫。

系統資料庫是在SQL Server安裝好時就會被建立的,分別有master、msdb、model、tempdb這四個基本的系統資料庫,而且不能刪除這些資料庫。除此之外,還有一個隱藏的Resource資料庫,但在Management Studio中看不到它。以下簡單說明這幾個系統資料庫的用途:

master
master資料庫記錄的是有關SQL Server的資訊,包括所有的登入帳戶、系統的組態、各資料的初始資訊等各類重要資料。SQL Server 2005基於安全性的考量,已不再讓我們直接瀏覽、修改各資料庫中的系統資料表,而是必須透過系統檢視(system view)來瀏覽。我們可用"select * from sysobjects where type ='S'"來查看master資料庫中有多少隱藏起來的資料表。

由於master資料庫的內容對整個資料庫系統的關係重大,因此最好要定時備份此資料庫的內容。

msdb
msdb是另一個供系統使用的資料庫,其主要用途是供SQL Server Agent做各類排程作業(job)所用的資料庫。除了SQL Server Agent的資料外,有關備份和還原的記錄、複寫和資料維護計劃等資訊也都是放在這個資料庫中。

model
model是個較特殊的系統資料庫,或許應稱它為「樣板」資料庫。當我們在SQL Server中建立新的資料庫時,SQL Server會以model資料庫為藍本,將其內容複製到我們的新資料庫,因此在所有新建的資料庫中,都會有和model資料庫內容一樣的系統資料表和檢視表等資料庫物件。

tempdb
由名稱就可看出,tempdb是用來存放暫時性資料用的,像是使用者在進行各種查詢或排序時,SQL Server就會在此建立這些暫時性的工作資料表。由於是"暫時性"的,所以tempdb中的資料沒有什麼保存的價值,因此每次SQL Server重新啟動時,都會重建一份新的tempdb資料庫。

Resource
雖然在Management Studio中根本看不到這個資料庫,但只要用檔案總管進入SQL Server的資料庫檔資料夾(例如Program Files\Microsoft SQL Server\MSSQL.l\MSSQL\Data),就可以看到Resource資料庫的資料檔及交易記錄檔mssqlsystemresource.mdf、mssqlsystemresource.ldf,此資料庫檔還不算小,因為它存放了許多與SQL Server 2005本身相關的系統物件,使用者物件都不會存放Resource資料庫中。

SQL Server 2005採用Resource資料庫的目的之ㄧ,就是讓系統資源集中存放管理,日後將可透過升級Resource資料庫的方式,即可升級SQL Server 2005的功能。

以上簡單介紹了SQl Server中內建的系統資料庫,除了這些系統資料庫外,在每個使用者資料庫中,也會有一些系統內建的物件,其中最重要的就是系統資料表和檢視表。

閱讀全文...
就是愛分享
JSP Standard Tag Library(簡稱JSTL),是一套預先定義好、協助程式設計人員簡化JSP網頁製作的標籤函式庫,包含了各種網頁運作所需的功能,例如迴圈、流程控制、輸出入、文字格式化,甚至XML文件處理以及資料庫存取操作均為其涵蓋範圍。

JSTL雖然是JSP網頁技術的一環,但是與JSP不同的是,JSTL本身並非由SUN公司所開發出來,相反的,SUN制定其規格之後,便直接開放讓外界進行實作,而目前提供相關規格實作成品的最主要的組織為Apache的Jakarta Project。

我們並沒有辦法直接使用JSTL,還必須先至Jakarta Project網站下載並且安裝JSTL。依其功能面作分類,JSTL提供了五種形式的標籤函式庫,列舉如下表:



閱讀全文...
標籤: 0 意見 | | edit post
就是愛分享
在Linux作業系統中當我們執行一個程式來取得所需要的資源時,此時Linux作業系統便會為這個執行動作建立一個行程(process),以便管理整個程式執行過程中所需要的狀態應變。然而從我們啟動Linux作業系統時,系統便會開始產生很多不同的行程,而如何針對這些行程來進行管理將會是系統管理員一個十分重要的基本工作。

行程的產生代表程式已經被載入記憶體中,並且可以透過CPU來進行執行。然而每一個行程裡面都會儲存程式執行時所需要的重要資訊,包括含有執行緒(thread)位置、行程識別碼(Process ID)、行程優先權、記憶體脈絡等。依據行程的執行啟動方式的不同將其區分為兩種類別,分別為:

使用者行程(User Process):這類型的行程於啟動時通常是由使用者於終端機介面或是圖形介面來啟用。

Daemon行程(Daemon Process):這類型的行程通常無法透過終端機或是圖形化介面中來啟動,它通常需要搭配其它的程式或是行程的執行才可以被啟用運作,通常這類型的行程多為網路服務為主的行程。

每一個行程都會擁有一個獨立的識別碼資訊,我們稱之為行程識別碼,行程間基本上也是透過這組識別碼資訊來辦別雙方的關係。通常我們可以依據行程間的關係利用下列名詞來進行解釋:

子行程(Child Process):由其它行程所產生出來的行程,稱之為子行程。

父行程(Parent Process):為行程的一個名稱,通常可以產生一個或是多個以上的子行程。

父行程識別碼(Parent Process ID,PPID):用來表示某一行程的父行程的行程識別碼資訊。

服務
在Linux作業系統中通常我們可以依據服務的功能,將其區分為系統服務(System Service)與網路服務(Network Service)兩個類別。

系統服務:針對Linux作業系統本身所提供的服務,例如boot.quota、quotad等。

網路服務:針對網路中的其他用戶端所提供的服務,例如APACHE、SAMBA伺服器等。

Linux作業系統中所提供的服務通常會在啟動後就會持續的提供服務給所需要的對象,不論是針對Linux作業系統本身或是針對網路中的其他用戶端,一般我們針對這些服務的分類以執行的功能差異來進行區分之外,通常也會依據服務的啟動方式不同而再把這些服務進行不同的分類。通常會區分為:

獨立式服務:一般又稱之為SysV服務,執行於背景,除非被管理者將服務終止,或是系統關閉,否則服務會一直持續於背景提供服務。

短暫式服務:平時不會啟動於背景中等待存取要求,而是當使用者有所需求時才會啟動提供服務進行存取。

閱讀全文...
標籤: 0 意見 | | edit post
就是愛分享


由於Internet的快速發展,網際網路上的應用服務也跟著日新月異,從以往最初的資訊流通共享,時至今日,各式各樣更多的需求和服務為消費者及開發廠商提供更多選擇和機會。如今,單純的網頁早已不敷使用,使用者需要更個人化、更多元化的「服務」。Java因為具跨平台能力,其共通性讓更多開發者投入它的懷抱,也不斷發展出更多應用,而其觸角也理所當然伸向網際網路領域。在1997年所提出的Servlet產生了網路服務的另一波新革命,結合了使用者直接接觸的JSP和後端連結資料庫的JDBC應用,Java相關應用在網路服務上創造了難以想像的衝擊和便利。Struts的目的便是要結合這些功能強大的元件,架構出一個兼具功能性及開發便利性的框架。

MVC Model

要想理解Struts的架構,必須先了解何謂MVC model(Model 2)。

字面上來說,MVC所代表的分別是Model、View以及Controller。這是一種將設計工作分層處理的概念,我們可以將一項網路服務的流程區隔為三個部分,每個部分由個別元件處理,只要製訂好各元件間如何聯絡的合作方法,就可以讓一個大型服務切割成數個較簡單的工作。

MVC-model將會有三個不同的元件,也就是模型元件(Model_Component)、視圖元件(View_Component)和控制器元件(Controller_Component)等,模型元件負責商業邏輯(Business_Logic),視圖元件作為使用者介面,負責服務主體中和使用者的互動,而控制器元件則是接收使用者發出的需求,介接到相對應的商業邏輯,並取得結果後回應使用者,負責前二者的連結。如同一所大公司一樣,將工作區分做到專業化,讓開發人員各司其職,分別做好三個部分的設計,也讓一個大型服務開發過程能夠變得更加明確而清晰。MVC架構起始於一個GUI(Graphocal_user_interface_design_patter,圖型使用者介面設計原型)原型,早期是使用在Smalltalk這個語言,而今隨著網路服務的快速發展,MVC架構已經成為一個流行且成功的網路服務設計方法。

閱讀全文...
標籤: 0 意見 | | edit post
就是愛分享
電腦科技日益進步,但經過數十年的發展,電腦軟硬體的穩定性仍未達多數人能滿意的水準,電腦中的資料還是有喪失或毀損的情況發生,若再加上天災人禍等意外狀況,存於電腦中的資料實在是不太安全了。就算使用的是具有容錯能力的RAID磁碟陣列,也是難以保證資料庫是百分之百的安全。

雖然電腦軟硬體設備的費用可能不便宜,但大多數的人都認同經過長時間所累積的電腦資料才是更珍貴的資產,因此為了防止在各種意外發生時,仍能保有資料庫的完整性,管理者就必需花額外的時間和資源來備份SQL Server中的資料庫。SQL Server本身當然也提供了不少備份的功能:

資料庫備份
也就是備份整個資料庫內容。如果要將SQL Server中所有資料庫都備份下來,可能需要相當龐大的儲存空間來存放備份資料。但其好處是在還原資料庫時,也只需將整個資料庫從一份資料庫備份還原到SQL Server就可以了。另外,就算要是使用下述的差異式備份或交易紀錄備份,也必須是在做過完整的資料庫備份後才能進行。

差異式(Differential)備份
只備份從上一次執行完整資料庫備份後有更動過的資料,因此所需的備份時間和儲存空間,通常會比資料庫備份少很多,所以適合還原,然後再用最近一次所做的差異式備份還原到SQL Server,就可讀資料庫的內容回復到最近一次差異式備份時的同樣內容。

交易記錄(Transaction Log)備份
只備份交易記錄檔的內容,由於交易記錄檔只會紀錄我們在前一次資料庫備份或交易記錄備份之後,對資料庫所做的異動過程,也就是只記錄某一段時間的資料庫異動情形,因此在做交易記錄備份之前,一定需做過一次完整的資料庫備份才行。交易記錄備份所需的時間和儲存空間應該不多,不過在做還原時,除了要先將資料庫備份還原外,還需再依序還原各個交易記錄備份中的內容。

檔案及檔案群組備份
如果資料庫的內容分散存於多個檔案或檔案群組,而且資料庫已非常龐大,大到進行一次完整的資料庫備份會有時間和儲存空間上的問題,就可使用這種方式來備份資料庫中部分檔案或檔案群組。由於每次只備份部分的檔案或檔案群組,因此需做數次不同的備份才能完成整個資料庫的備份,但資料庫大到不方便做完整備份時也只好如此。而且檔案及檔案群組備份也也另一個好處,就是當損毀的資料只是資料庫中的某個檔案或檔案群組時,也只要還原毀損的檔案或檔案群組備份就可以了,比起只有整個資料庫的備份時,要還原整個資料庫方便許多。

由於資料庫的備份有多種不同的方法,很自然地,還原資料庫時也需依照當初備份資料庫的方式,及還原作業的時間點,以對應的步驟將備份下來的資料還原到伺服器中,以使資料庫的內容能回復到您所希望的時間點(通常是越接近資料庫出問題的時間越好)。以下介紹各種備份的還原方式:

資料庫備份的還原
不管之前只進行完整的資料庫備份,或是資料庫備份、差異式、和交易記錄備份交錯使用,遇到需要還原資料庫時,都需先還原完整的資料庫備份。

若是只做完整的資料庫備份,只需還原最新的備份資料,就算是完成還原的工作了。但若是搭配差異式或交易記錄備份的話,則此處的還原完整的資料庫備份,應該就只是整個還原作業中的第一個動作而已,在將最近一次的資料庫備份還原到伺服器後,可能還得繼續還原後續的差異式或交易記錄備份資料。

差異式備份的還原
還原差異式備份,其步驟並不複雜,只需先還原最近一次的完整資料庫備份,然後再還原最近一次差異式備份即可。例如採取每週六做一次資料庫備份,每天清晨做一次差異式備份者,在星期三遇到要做還原的情況時,需先還原上週六的資料庫備份,然後再還原當天清晨所做的差異式備份,即可完成整個還原的工作。

如果在做完這兩個還原動作後,您還有後續的交易記錄備份,則可再取出這些備份資料,依序以稍後介紹的方法將它們還原。

交易記錄備份的還原
還原交易記錄備份會比較麻煩,但由於通常我們都會以較頻繁的頻率進行交易記錄備份,所以使用交易記錄備份時,也意味著我們能將資料庫的內容回復到較接近目前的狀態。

閱讀全文...
就是愛分享
電子商務(Electronic Commerce,EC),即利用資訊網路進行的商務活動,例如電子報(ET-Today)、網路書店(Amazon)、網路花店、網路銀行、網路下單、網路電視、虛擬商店、網路人力仲介(104)…等等。

常見的電子商務模式

B2B(Business to Business):企業對企業間的往來關係,透過電腦網路來進行,以加速企業間資訊的流通。例如:文件傳遞、商品採購、收付帳款、資金移轉、等等…

B2C(Business to Consumer):企業與顧客間的往來,也是透過電腦網路來進行。例如:Amazon網路書店,可瀏覽商品、訂購商品、以及付款等活動 。

C2B(Consumer to Business):顧客對企業,消費者因為彼此共同的需求而形成社群,然後透過社群運作,對廠商進行集體議價。

C2C (Consumer to Consumer):顧客對顧客,網站經營者提供一個交易環境、交易資訊、公平的信用評等制度,讓買賣雙方有機會互相接觸各取所需。例如:露天市集、Yahoo!拍賣。

B2 (Business to Government):企業與政府之間的電子商務交易,例如政府採購案,承包商可在線上競標、發展及傳遞產品等。

G2C (Government to Consumer):政府的線上交易對象,擴展到對一般民眾的G2C,如繳交稅金、停車場帳單或註冊車輛等,可透過網路進行。 (監理站)

一般商業活動分為四個層面
商流:商品購買交易活動,如:接受訂單、購買、售後服務等。

物流:指商品的配送。

金流:指資金移轉的過程,包括付款、與金融機構連線、信用查詢、付款指示明細、進帳通知明細等。

資訊流:包括商品資訊、行銷活動等。

電子商務活動
商流和資訊流,是一般電子商務活動數位化最為成熟的部分。例如:可以連上電子商務網站,瀏覽各種商品(資訊流),接著將所要商品放入訂購車中,然後結帳(商流)。

付款(金流)和交貨(物流),是電子商務活動最重要的部分,仍然有改進的空間。

建立一套安全完善的付款機制,以及便捷快速的物流系統,將是電子商務成功的關鍵因素。

電子商務的商品種類實體商品:在網路上販賣實體化的商品,例如:電腦與週邊硬體、電腦軟體、圖書、鮮花…

資訊與媒體商品:最適合在網路上行銷的商品,莫過於數位化商品,例如:電子報、電子書、影音資料、圖片、研究報告、資料庫檢索…等等。

線上服務:使用網路提供線上服務的商品,例如:金融服務、股市行情分析、醫藥查詢、訂票、飯店訂房、醫院掛號 。

電子商務的付款方式
發展電子商務的重要層面之一:「金流」。

現行的電子商務活動,通常會提供多種付款方式:
包括信用卡付款
ATM轉帳
郵政劃撥付款
銀行匯款付款
現金付款等方式

閱讀全文...
就是愛分享
SEO(Search engine optimization,搜尋引擎最佳化),經過SEO的網頁可以在搜尋引擎中自然獲得極佳的名次,被點選的機率必然大增,業務量及訪客也將大幅的增加。

當在Yahoo以及Google搜尋引擎打上要搜尋的關鍵字時,搜尋引擎就會在第一頁當中列出大約十個的搜尋結果,以及在上方及右邊剩餘空間內打上付費的網路行銷廣告。

以下列出SEO的變項,如果能一一的加以最佳化,必定能夠大幅提升您網站針對某個關鍵字的排名:

網頁內容出現關鍵字
在實際執行最佳化的時候要注意,關鍵字出現的次數確實會影響排名的順序,整個網頁出現的關鍵字次數愈多者的排名有高過低者的趨勢,但要注意關鍵字出現以自然語文的頻率為佳。若過度人造關鍵字的插入,有可能被歸類為作弊。

網頁標頭(HEAD)內出現關鍵字
網頁的原始碼中最前的一段就是HEAD,其中有多個項目內可以出現想要SEO攻略的關鍵字。我們直接列出原始碼供您抄襲,是您最佳化成功最快速的好工具。

html
head
title SEO - 搜尋引擎SEO排名不能說的秘密 /title
meta name="description" content="SEO"
meta name="keywords" content="SEO"

上面的title是網頁的標題,這裡一定要出現您的關鍵字。
上面的meta name="description".. 是網頁的說明,這裡一定要出現您的關鍵字。
上面的meta name="keywords".. 是網頁的關鍵字宣告,這裡一定要出現您的關鍵字,可以用,分隔多個關鍵字。

這三個項目還有一個奧秘的可能性,凡是做字串的比對,我們要知道,在句子的一開頭就比對正確,那通常是高相關性,因此例如在title當中,我們建議把您要最佳化的關鍵字放在最先頭

網頁的語言宣告
您的網路生意的市場在哪裡?台灣還是大陸?在台灣,你就要用繁體中文的網頁,在大陸你就要用簡體中文的網頁,一個繁體中文的網頁還是一個簡體中文的網頁擺在你面前,你大概也可看得出來,但你要知道,搜尋引擎的索引程式 (Spider) 只不過是一支人寫的程式,他是看不懂你在寫什麼語言的,因此你的網頁到底是什麼語言,這是非常重要的一件事情,一定要告訴搜尋引擎知道,這是搜尋引擎SEO常被人忽略的一塊。

如果搜尋引擎誤判你的網頁語言,將會有很嚴重的後果,例如你的網頁是繁體中文但被誤判為別的語言,當繁體中文用戶的搜尋要求被處理的時候。您的網頁將會被降低優先權,因為語言不合。

因此若要SEO我們絕對不能讓搜尋引擎來”猜”我們的網頁語言是什麼,我們一定要明確的告訴搜尋引擎這個網頁使用的語言為何,以下是宣告網頁語言的原始碼。您可直接抄襲來使用。

html
head
meta http-equiv="Content-Type" content="text/html; charset=big5"
/head

charset的部分為big5表示為繁體中文,gb2312為簡體中文,utf8為萬國語言。這邊又來了一個重點,許多人說認為big5是一種不良的編碼方式,因此在設計網頁的時候喜歡用utf8萬國語言,這是對搜尋引擎SEO極為不利的一種做法,因為萬一搜尋引擎判斷不出你的網頁主要語言是什麼的時候,你就別想在該種語言的搜尋結果內出現了。

網頁原始碼的HTML標籤 - 與搜尋引擎SEO具有關聯性
仔細檢視HTML原始碼其中幾個與SEO相關的:
1. HEADINGS: 這是所謂的標頭,就好像報紙頭版的標題,這裡出現關鍵字絕對與提升你的關鍵字相關度。原理就是通常人們再撰寫文章的時候會以這個段落的主題為標題,因此這個段落的文字自然語該標題呈現相關狀態。
範例:

SEO


SEO



2. PARAGRAPH: 這是所謂的段落,段落在原始HTML的設計當中就是用來包括文章段落用的。因此我們在設計網頁的時候要千萬注意別亂用 P 於沒有語意的地方,有些時候你的網頁原始碼從上面算起好幾千個字元了都還沒出現具有語意的文章,那搜尋引擎又要如何判斷哪些文字具有語意呢,就是靠 P。

範例:

SEO is good


3. 粗體字及斜體字,為您的關鍵字加上一兩個粗體或斜體也能增加一點與關鍵字的關聯性,不過應該也只能增加一點點。

網域名稱Domain Name - 搜尋引擎優化的捷徑
網域名稱對於關鍵字搜尋的排名具有相當大的優勢,原因是通常網域名稱與該網站內容呈現高度的相關性,例如www.ibm.com就是IBM公司的官方網站。網域名稱具有獨一無二的特性,一旦被某人搶先使用就沒有第二個人能使用。幾乎所有的商業組織公司行號都早已把自己公司的商標搶先註冊起來,在搜尋引擎搜尋該商標名稱也通常會找到正確的該公司網站。這是一種自然而然的情形,一個公司一定會盡力把自己的公司商標的網址搶下來,這也是Goodgle與Yahoo能大膽的提高網域名稱與關鍵字比對的相關性的原因。

如果要SEO的關鍵字是英文的,那能夠取得一個SEO的捷徑!趕緊去申請一個帶有你的關鍵字的網域名稱吧!甚至若是真的找不到,在關鍵字前後加一個字也算數,例如ibooks.com.tw,但是這就不算百分之一百吻合了。

另外,還有一個跟網域相關的變項存在,但目前尚無關查到其與SEO的關聯性,在此提供參考,就是網域的whois資訊,因為whois資訊中,是實上是有登記該網址位於哪一個國家或地區中,因此有助於搜尋引擎判斷該網頁的地理位置。有些人網站明明就放在台灣,但whois資訊確寫著美國,也許有一天這個變項納入了,也會影響到網站於該區域的排名喔。

網頁檔案存放目錄(資料夾)及檔案名稱
理論基礎就是一般人資料夾分類的方式本來就是表示這個資料夾下的文件具有該資料夾名稱的共通性,而檔案名稱的命名方式更是直接了當的表示了這份文件的內容屬性。

因此如果你要SEO的關鍵字是英文的,那就很簡單,如果你要最佳化SEO這個字,那就把這個檔案的URL訂為:

http://www.seo.com/seo/seo.html

但是很抱歉,目前Google與Yahoo也似乎只承認英文關鍵字的部分,中文的關鍵字要用這種方法,也許也是要等到將來。

網站主機的地理位置 - 一個與內容無關卻搜尋引擎排名的重要因素
稍微好奇一點的網友就會發現,當你打上www.google.com與www.google.com.tw的時候出現的是兩套東西,一套是針對全世界(美國為主)的google,而另一套是針對台灣地區用戶的google,在台灣的google與美國的google搜尋同樣的關鍵字,出來的搜尋引擎排名結果是完全不一樣的。

基本上,在美國google(全球搜尋引擎排名)搜尋的結果具有以下特性,英文的網頁被提高了優先出現的機會,網站放置在美國的虛擬主機的網頁具有更高的優先性。

在台灣的google搜尋的結果具有以下特性,中文(繁體)的網頁最優先出來,且網站主機放置在台灣的IP者提高了優先度,甚至還有一種選項”台灣的網頁”完全提升了台灣IP的優先性。

因此這邊提供一個很簡單的原則,如果你要在台灣做生意,千萬別貪便宜跑去美國租GoDaddy,如果你要做德國的外銷生意,就請到德國租一個虛擬主機。最好的方法就是自己架站!保證在你當地經營,不然用到什麼國內的虛擬主機廠商,但實際上機房在美國,那就慘了。

真實的時光機器 - 搜尋引擎
人有分男女老少,網頁也有分新舊,到底是新的網頁好還是舊的網頁好,這個實際上除了用人工,很難去判斷,但是單純以資訊的角度來說,新的常常比舊的好,試想當您在搜尋一組關鍵字的時候,您希望是找到最新的網頁資訊,還是八年前,八年沒更新過的網頁資訊呢?

因此網頁的最後修改日期,也有可能成為搜尋引擎排名的關鍵因素之一,聰明的站長們,要記得時時更新您的網頁喔,就算不更新,最少也要動個日期,隨便加幾個字更動一下內容,好讓搜尋引擎知道這個網頁又更新了。

究竟搜尋引擎是如何知道網頁的日期呢?答案很簡單,就是透過所謂的HTTP Header,Web Server回應的HTTP Header當中包括了這個網頁的最後修改日期,而這個資料通常是由Web Server在讀取該檔案的時候一併取得的。

網站的PR等級:一級好站還是無名小站(Google搜尋引擎專用)
所謂網站的等級,一般指的是google的PR值,也就是PageRank,PR值愈高,搜尋引擎排名愈容易名列前茅,只要安裝google免費提供的google toolbar軟體並授權它使用PR值資訊,就可以輕鬆的查詢你拜訪的每一個網站的PR值,就算內容完全相同的兩個網址,擁有不同的PR值,在搜尋結果呈現的時候,高PR值的網站具有優先性。

PR值最低為0,最高為10,愈高愈好,它確實影響了搜尋引擎排名的順序,提升PR值的方法眾說紛紜,但基本上有著兩個原則,一是開了愈久的網站普遍較高,二是愈多人連結及拜訪的網站PR值愈高,基本上PR值的設計不就是為了要評鑑網路上所謂重要的網站,好站嗎?因此你只要把你的網站經營好,讓他成為網路上重要的網站,那久了PR值自然就高起來了!

PR值雖然愈高愈好,但可以確定的是低PR值的網站一樣可以排在高PR值的網站前面,因此SEO的原理就是了解所有變項,針對所有變項做最佳化,必能獲得成功。

在Yahoo上並無相對應的工具可以評鑑一個網站在Yahoo中是否為重要的網站。

網頁的連入連結(Linking IN)
你的網頁上說你是”良心商店”,網友說你是”黑心商店”,那在google及yahoo的心目中你到底是良心商店還是黑心商店呢?答案就是網頁的連入連結。

所謂的連入連結就是在別人的網站中,有加入你的網站的連結時,那個連結上面帶著的關鍵字。以下是一個範例:

這裡有一間黑心商店

在這個連結當中,連結本身的文字以及title也就是說明這個連結的文字都出現了黑心商店的關鍵字,因此你的網址已經與黑心商店扯上關係了。即便你一直在你的網站上強調良心商店的關鍵字,還是沒法消掉黑心商店的關聯性。

因此正確的連入連結方式應該為

這裡有一間良心商店

另外我們常常看有人寫什麼 點我 這樣子的連結,這樣子就讓你的網頁與”點我”這兩個字扯上關係啦。因此當有機會登錄你的網址到別的網站,或是要求別人加入連到你的網站的連結的時候,一定要正確的指定連入連結的格式。才不會把你的網站關連到錯誤的關鍵字。例如你公司叫做”xx公司”主要的商品是”電磁爐”,如果你要主打電磁爐的關鍵字SEO,甚至在要求別人加入連結的時候就直接只打 電磁爐 了,這樣才有最強的SEO效果。

網頁的連出連結(Linking OUT)
所謂的連出連結,就是你自己在你網站上加入連結到別人的網站的連結,為什麼這樣的連結也能增加你網站SEO與某個關鍵字的關聯性呢進而又能提升搜尋引擎排名?其理論基礎就在於,有許多介紹形的網站,他就是介紹某種類別的東西,而在介紹的同時,他又必需增加連出的連結,然而若是輕易的增加連出連結就能增加本網站與某關鍵字的關聯性,那不是很容易做弊嗎?

搜尋引擎可不怕這個,因為他也知道如果您的網站是在做生意的,你怎麼可能會加入連結到同類型競爭對手的連結呢,這也抑制這種評量機制被做弊的可能性,這也是我們常常看到在做同類型產品比較,或是介紹的網址,常常於搜尋結果中名列前茅的原因。

但是這個連出連結要怎麼加才不會加錯?很簡單,使用google toolbar的PR功能,可以看到一個網址的相關網站,要被你連結的網站本身就一定要關連於正確的關鍵字,你在去加這個連結才有效果。

網頁關鍵字的同義字
所謂的同義字。通常發生在縮寫上面,什麼是SEO呢?上Google一查,發現原來是Search engine optimization,但是重點來了,我們看看Google搜尋的結果,我們明明只是搜尋SEO但它卻把Search engine optimization一併標示為紅字了。

影像檔案的奧秘
說明:影像檔就是像是jpeg這樣的檔案,對搜尋引擎最佳化SEO有什麼影響呢?我們假設一個網頁中如果包含了跟目前正在搜尋的關鍵字相關的影像檔,能夠增加這個網頁與該關鍵字的關聯度好了,那麼要如何讓Google搜尋引擎知道這個網頁中的圖檔與該關鍵字相關呢?以下有幾種方法,哪一種有用,哪一種重要,這我們不曉得,但聰明的人一定是全部把它標示清楚。

方法一
圖形檔名的命名: 這個再簡單不過了,一張圖片就叫做 關鍵字.jpg 例如 seo.jpg 大辣辣的放在你網頁上,這個是一定要的。

方法二
HTML標籤的ALT屬性: 這個ALT的意思就是替代文字的意思,他的原始用途是說在那些無法顯示圖片的瀏覽器當中,可以顯示出替代的文字。但後來漸漸被運用到成為圖形檔的說明文字之上。

閱讀全文...
就是愛分享
開發JSP網頁程式的過程中,如果需要的應用程式功能已經存在其他網頁,最快的方法便是重複使用相同的程式碼,將內容複製到新的網頁,或是直接將其載入。

當應用程式的規模越來越大,複製程式碼的做法很容易就會導致程式碼維護上的困難,為了維持不同版本之間功能的完整與一致性,每次修改原始版本的程式碼,其複本的程式碼必須一併作更動,當一份程式碼同時被數十甚至數百個網頁使用的時候,你所開發的JSP網頁系統將會變成一場災難。

解決程式碼重複使用的問題有很多種方式,其中一種比較簡單的作法便是將其寫成副程式網頁,其他的程式設計人員只需引用這個網頁即可獲得相同的功能而不需重新開發,當相同的功能需要調整的時候,只需修改幅程式即可將所做的改變,直接反應到使用此副程式的所有網頁。

JSP網頁取得外部檔案,並且將其嵌入目前的網頁中,由於顯露在外的程式碼非常容易被更改,因此很快的便導致各種不同的版本產生,如下圖:



為了徹底解決程式碼重複使用的問題,同時建立強固的商業及應用程式,元件化的程式技術被發展出來,提供這一方面相關問題的最佳解決方案。

JavaBean是一種可跨平台且重複使用的Java標準元件,通常用來設計一些特定功能的小程式,簡單的說就是可在JSP網頁中執行的Java程式,我們可把JavaBean想像為功能特定且可重複使用的副程式,當應用程式需要提供相同的特定功能,只需直接引用編譯好的JavaBean元件,而不需撰寫重複的程式碼。



以上為JavaBean運作的示意圖,JavaBean經過編譯成為類別檔,它由原始程式碼產生,然後由網頁所引用,這個過程是單向的,使用JavaBean的網頁並不能修改已編譯後的類別檔,也因此可以保證所有的網頁使用的都是同一個版本,同時由於類別檔是編譯過的元件,因此非常容易被其他的應用程式所引用。

大型的JSP應用系統非常依賴JavaBean元件,它們用來封裝所有包含運算邏輯的程式碼,畫面資料的輸出與展示的部份則交由網頁程式,如此一來,當JSP網頁需要JavaBean元件的功能,只需於網頁中直接引用此元件即可,除了達到簡化JSP程式架構、程式碼重複使用的目的之外,同時提供應用程式擴充與修改更大的彈性。

閱讀全文...
標籤: 0 意見 | | edit post
就是愛分享
在一般的區域網路中 (LAN) 如果都是 Windows 電腦,那麼使用『網路上的芳鄰』這個功能,就可以讓不同的 Windows 電腦分享彼此的檔案囉!但萬一這個 LAN 裡面有個 Linux 主機時,要怎麼讓 Linux 也加入這個 Windows 電腦當中的『網路上的芳鄰』呢?也就是說,讓 Windows 電腦可以透過『網路上的芳鄰』來存取 Linux 主機上面的檔案!呵呵!那就是 SAMBA 這個伺服器的主要目的了!SAMBA 是很有用的一個伺服器,可以讓您的 Linux 剎那間成為一個檔案伺服器 (File Server),並提供整個 LAN 裡面的 Windows 很簡單的就可以對 Linux 主機進行檔案的存取動作。不僅如此, SAMBA 也可以讓 Linux 上面的印表機成為印表機伺服器 (Printer Server) 。

在早期的網路世界當中,檔案資料在不同主機之間的傳輸大多是使用 FTP 這個好用的伺服器軟體來進行傳送。不過使用 FTP 傳輸檔案卻有個小小的問題, 那就是無法直接修改主機上面的檔案資料!也就是說,想要更改 Linux 主機上面的某個檔案時,必須要將該檔案自伺服器上下載下來後才能修改。也因此該檔案在伺服器與用戶端都會存在。這個時候,萬一如果有一天修改了某個檔案, 卻忘記將資料上傳回主機,那麼等過了一陣子之後,將如何知道那個檔案才是最新的呢?

讓檔案在兩部主機之間直接修改
既然有這樣的問題,那麼好吧,我可不可以在用戶端的機器上面直接取用 server 上面的檔案, 如果可以在用戶端直接進行 Server 端檔案的存取,那麼我在用戶端就不需要存在該檔案資料囉,也就是說, 我只要有 Server 上面的檔案資料存在就可以啦!有沒有這樣的檔案系統啊 (File System)! 很高興的是,前面我們已經提過的 Network File System, NFS 就是這樣的檔案系統之一啦!我只要在用戶端將 Server 所提供分享的目錄掛載進來, 那麼在用戶端的機器上面就可以直接取用 Server 上的檔案資料囉,而且, 該資料就像是我用戶端上面的 partition 一般,真是好用!

而除了可以讓 Unix Like 的機器互相分享檔案的 NFS 伺服器之外,在微軟 (Microsoft) 作業系統上面也有類似的檔案系統,那就是 Common Internet File System, CIFS 這個咚咚啦!CIFS 最簡單的想法就是目前常見的『網路上的芳鄰』咯! Windows 系統的電腦可以透過桌面上『網路上的芳鄰』來分享別人所提供的檔案資料哩!真是方便。 不過,NFS 僅能讓 Unix 機器溝通, CIFS 只能讓 Windows 機器溝通。傷腦筋,那麼有沒有讓 Windows 與 Unix-Like 這兩個不同的平台相互分享檔案資料的檔案系統呢?

利用封包偵測逆向工程發展的 SMB Server
在 1991 年一個名叫 Andrew Tridgwell 的大學生就有這樣的困擾,他手上有三部機器,分別是跑 DOS 的個人電腦、DEC公司的 Digital Unix 系統以及 Sun 的 Unix 系統。在當時, DEC 公司有發展出一套稱為 PATHWORKS 的軟體,這套軟體可以用來分享 DEC 的 Unix 與個人電腦的 DOS 這兩個作業系統的檔案資料,可惜讓 Tridgwell 覺得較困擾的是,Sun 的 Unix 無法藉由這個軟體來達到資料分享的目的。

這個時候 Tridgwell 就想說:『咦!既然這兩部系統可以相互溝通,沒道理 Sun 就必需這麼苦命吧?可不可以將這兩部系統的運作原理找出來,然後讓 Sun 這部機器也能夠分享檔案資料呢?』, 為了解決這樣的的問題,他老兄就自行寫了個 program 去偵測當 DOS 與 DEC 的 Unix 系統在進行資料分享傳送時所使用到的通訊協定資訊,然後將這些重要的資訊擷取下來, 並且基於上述所找到的通訊協定而開發出Server Message Block (SMB) 這個檔案系統,而就是這套 SMB 軟體就能夠讓 Unix 與 DOS 互相的分享資料囉!

SAMBA 常見的應用
分享檔案與印表機服務;
可以提供使用者登入 SAMBA 主機時的身份認證,以提供不同身份者的個別資料;
可以進行 Windows 網路上的主機名稱解析 (NetBIOS name)
可以進行裝置的分享 (例如 Zip, CDROM...)

閱讀全文...
標籤: 0 意見 | | edit post
就是愛分享
JSP與Java Servlet皆是在伺服端執行程式,同樣也是用來設計互動式網頁上的技術,既然這二者之間有著這些共通處,那它們兩者之間又有何不同呢?

Java servlet(底下通稱為servlet)本身就是一種Java程式,主要是應用在網頁上的一種伺服端技術,與JSP有著相當密切的關係,底下就其特性與架構進行基礎的說明。

servlet的特性
servlet出現之前,程式設計人員使用一種簡稱為CGI(Common Gateway Interface)的技術設計伺服端執行的動態網頁,達到與web使用者雙向動態溝通的目的。由於CGI程式每執行一次便會產生一個新的行程(Process),一定數量的連線人數便會輕易的佔用掉Server端龐大的系統資源,快速降低系統的執行效率。

CGI另一項致命的缺陷同樣與其所產生的行程有關,由於各行程本身獨立且彼此無法溝通,導致連線過程當中,各種資訊的傳遞難以被處理。

servlet透過多執行緒機制解決行程所衍生的諸多問題,相較於行程,執行緒所耗用的資源相當輕,同時一個行程可執行多個執行緒而不會有效能上的問題,同時由於連線狀態均由同一個行程作處理,因此可以輕易的讓各階段的連線進行溝通。

servlet程式執行之前必須經過編譯,而產生的class檔案則存放在伺服端電腦的固定資料夾下,當客戶端使用者對伺服器提出請求時,則會自動執行被請求的servlet程式,最後再回應給客戶端所需的資料。

除了傳統CGI所面臨的問題,servlet另一項優勢在於由標準的Java所寫成,而Java語言的特性之一就是跨平台,也因此servlet自然的擁有跨平台的能力。只要支援servlet語言的網頁伺服器都能順利的執行servlet程式。

servlet的架構
雖然說servlet本身就是個Java程式,但它在架構上卻和Java程式有所不同。servlet程式中並沒有main()這個方法,此為它和Java程式主要的不同處。此外,設計servlet程式必須使用javax.servlet及javax.servlet.http這二個套件下的類別及介面。

下面讓我們概略地解說這兩個套件在設計伺服器端程式上的用途:
javax.servlet:在這個套件底下所定義的是一些和FTP協定無關的類別及介面,主要是用來協助servlet程式處理客戶端送來地請求或將servlet執行的結果傳給客戶端。
javax.http.servlet:這個套件則是繼承自上一個Javax.servlet套件,並增加了與HTTP協定有關的類別及介面,例如處理SMTP或HTTP協定之類別或介面。

除了上述支援servlet的專屬套件,servlet程式事實上同樣可以存取Java本身所提供的眾多類別API,這也大大的提升了servlet應用程式的強度與擴充能力,透過Java的結合,servlet可以在網頁上完成幾乎傳統應用程式才能達到的功能。

閱讀全文...
標籤: 0 意見 | | edit post
就是愛分享
申請放置網站的空間
若要架設網站,需要一部24小時不停運作的主機來放置網站檔案,為節省成本,通常我們是向有提供網站空間服務的公司(例如:中華電信、Sonet...)租用伺服器上的網站空間來放置網站。在比較時可依你網站的需求,朝下列幾個方向進行評估:

1.網站主機在國內或國外
2.網站空間的費用與容量
3.是否支援程式或資料庫
4.檔案的上傳方式
5.免費廣告的干擾
6.安全性與流量

無論申請哪一家業者的網站空間,都會附帶專屬的網站,例如"http://www.你的帳號+主機名稱.com",經常是又臭又長,很難記憶。你可以考慮向財團法人台灣網路資源中心TWNIC(http://www.twnic.net)這個機構付費購買一個正式的網址(例如http://www.flag.com.tw),再透過轉址的設定,就能讓網址和你的網站產生連結。

上傳網站
網站空間申請好以後,接着就要將電腦裡的網站上傳到Web伺服器了。Dreamweaver已經內建FTP功能,若要使用此功能,務必申請支援FTP上傳功能的網站空間(例如http://ihost.tw/),取得上傳時必須的FTP帳號、登入密碼等資訊。

定義本地與遠端網站
為了讓Dreamweaver知道檔案要上傳到哪裡,首先要讓定義好本地與遠端網站,「本地」就是我們自己的電腦,而「遠端」指的就是要上傳的電腦。

與遠端伺服器連結
設定好遠端網站之後,按下連線至遠端主機鈕,才會連結到遠端伺服器並登入。若連接失敗,請檢查帳號、密碼或FTP位址有無輸入錯誤,有時也可能是網路太慢造成連結錯誤,你可以稍等一下連結看看。

上傳整個網站
經過前面的設定後,終於可以開始上傳檔案了,由於這是我們第一次上傳,所以要將所有的檔案都上傳到遠端網站上。檔案上傳完畢後,只要在瀏覽器輸入申請的網址,就能瀏覽和測試自己的網站了。以後若要再將網站上傳到同樣的遠端主機,就不必再重新設定FTP主機位址了,只要在按一次「連線至遠端主機」鈕,就可以立即連結到遠端網站並傳輸檔案。

閱讀全文...
就是愛分享
JSP從標籤FORM所構成的表單區塊中,取得使用者於其中特定欄位輸入的資料內容,進行的邏輯運算之後,產生符合條件需求的網頁內容,重新將結果回傳給瀏覽器,整個過程如下圖所示:


圖中左半部為瀏覽器解譯網頁的部份,右半部則是Tomcat伺服器,當使用者於提供JSP網頁的內容填入資料之後,重新回傳至Tomcat啟動資料處理網頁,其中的JSP程式碼進行資料的處理運算,同時輸出結果網頁,重新傳送至瀏覽器。

整個過程中,處理資料網頁、原始資料網頁以及結果輸出網頁,可以是同一份JSP網頁檔案或是不同的JSP檔案,端視JSP程式開發人員的設計而定。

JSP網頁透過HTML表單欄位,取得使用者輸入的資料內容,依據使用者的需求與特定運算邏輯,於同一份JSP檔案展現不同的網頁結果,達到與使用者互動的目的,因此HTML表單欄位標籤對JSP而言,相當的重要,沒有視窗物件的輔助,動態網頁的技術將成為空談。

閱讀全文...
標籤: 0 意見 | | edit post
就是愛分享
網際網路資訊服務(Internet Onformation Services,IIS)基本上是一組以TCP/IP為主的服務所組成的,它們都在同一個系統上執行。雖然其中有些服務需要依賴他們之間的共用元件,但是整體而言,它們彼此之間的功能是相互獨立的。就像電匠針對不同的工具來應付。IIS對於不同的需求也有不同的Internet功能來負責。Windows Server 2003內附的IIS是第6版,接下來我們要開始說明IIS 6中內含的某些標準功能。

Web(HTTP)伺服器
IIS中含一個HTTP伺服器,讓你可以快速容易地將資料公佈(publish)到全球資訊網(World Wide Web,WWW)上。IIS的Web服務很容易設定,而且很可靠,另外它還支援安全性與加密功能,以保護機密資料。

你可以使用IIS的Web服務,在你自己的網域或多重網域,甚至是企業內部網路(intranet)或Internet上架一個網站,還能允許使用者穿過IIS Web伺服器,來存取在公司內電腦裡的HTML文件。

假如你曾經使用過Windows 2000 Server和IIS,應該知道Windows 2000 Server的預設安裝也會一起自動安裝IIS 5,包括幾乎所有的選用元件也都一起安裝了。不過Windows Server 2003重視安全性勝過便利性,因此Windows Server 2003預設並未安裝IIS 6;而且IIS 6的預設安裝功能只服務靜態內容,也就是說預設的服務組態設定並不處理網頁內嵌入的任何指令檔或程式碼。而支援Active Server Pages、Server Side Includes,以及FrontPage伺服器擴充功能(它可以讓用戶端使用Microsoft FrontPage來公佈和管理網站)的元件,預設並不安裝。基本上,所有可能會有安全上顧慮的東西都必須另外指定安裝或啟用才能使用。

檔案傳輸(FTP)伺服器
雖然File Transfer Protocol並不是傳送檔案的唯一方式,但是它是Internet最早也最廣泛使用的應用之一,遠在有圖形化的瀏覽器、HTTP或網站這些東西之前,就有這個通訊協定了。正由於它的歷史悠久且使用廣泛,因此幾乎任何平台都支援它,甚至是許多沒有支援HTTP的中型電腦或大型主機也是。

在IIS 6裡的FTP服務,現在多支援了個別使用者目錄的能力。這個功能是讓使用者只能存取私用的目錄,避免看到或寫入不是他自己的目錄。

網路新聞(NNTP)伺服器
Network News Transport Protocol(NNTP)有時候被稱為Usenet,由於它是根據Internet標準RFC 977,因此NNTP服務可以被用來維護IIS伺服器上的threaded交談(conversation)資料庫,就像在Internet上的Usenet群組一樣。用戶端如果有設定適當的新聞讀取程式,就可以瀏覽與參加這些交談資料庫。

雖然最近如Google Groups(http://groups.google.com)廣為宣傳Usenet,但是它還是不如HTTP那麼使用廣泛。這是很可惜的現象,因為NNTP是個很棒的跨平台通訊協定,用來管理threaded交談資料庫。希望在NNTP開始納入IIS後,會有越來越多人使用這個功能。

電子郵件服務
Microsoft是在IIS 5的時候內建了SMTP服務,不過它的功能不足以勝任企業內的電子郵件伺服器。IIS 5內建SMTP服務最主要是為了支援在IIS中的其他服務,也就是HTTP和NNTP。IIS 5內建的SMTP服務缺乏一個最重要的元件:一個POP3或IMAP服務。POP3或IMAP正是用戶端自電子郵件伺服器的信箱中擷取特定訊息所使用的方法。SMTP提供針對郵件的「儲存和轉寄」(store-and-forward)方面的服務,但是並不支援個人使用者信箱,也沒有提供擷取郵件的方法。假如你需要一個架構在Windows 2000之上的郵件伺服器,就必須另外使用包含有POP3或IMAP功能的產品,或是使用如EMWACS SMTP/POP3這一類的免費伺服器產品。

現在Windows Server 2003有內建POP3服務,它可以與SMTP服務搭配一起提供一個非常簡單但是可以運作的郵件伺服器平台。雖然在技術上它不是IIS服務的一部分,而且一定要分開安裝,但是對於一些只需要基本的電子郵件功能的企業而言,它的確提供了一個比Exchange或其他市售郵件伺服器產品更簡單(也更便宜)的解決方案。

閱讀全文...
就是愛分享
加入FLASH動畫
我們常在網頁上看到Flash動畫(副檔名為*.swf,因此也可稱為SWF動畫),檔案小且不易失真,可以說是目前最廣泛用於網頁的動畫格式。

加入Flash動畫之前的準備工作:
1.安裝Flash Player,以便用瀏覽器觀看動畫。
2.解除瀏覽器對ActiveX元件的封鎖。
3.下載與安裝Firefox相容的Flash Player。

加入Flash動畫的方法
方法1:從「插入」面板加入Flash動畫。
方法2:從「檔案」面板加入Flash動畫。
方法3:從「資源」面板加入Flash動畫。

加入FLV視訊影片
許多人會把影片放到網頁中和親友分享,然而視訊檔案的體積通常很大,常讓瀏覽者耗費時間等待下載。如果你要加入網頁的影片還不是FLV格式(副檔名為*.flv),請先透過FLV影片轉檔軟體來轉換格式。只要安裝Flash CS3以上的版本,即可使用隨附的Flash Video Encoder來轉檔,或者也可上網以"FLV Encoder"等關鍵字來搜尋及下載其它免費的FLV轉檔軟體來轉換格式。

加入背景音樂
在網頁中除了豐富的圖文內容,如果再配上好聽的音樂,會更吸引人喔!目前可運用在網頁中的音樂格式有wav、midi、au、mp3...等,不過考量到檔案的大小及瀏覽器的支援度等因素,大多採用mp3格式做為網頁的背景音樂。當我們要在網頁中瀏覽多媒體檔案,必須先在瀏覽器中安裝可播放該格式的外掛程式才能順利瀏覽。

閱讀全文...
就是愛分享
公用程式中的 Telnet 和遠端控制程式中的 Symantec PC Anywhere,都可以讓您在遠端系統上執行程式,但是設定起來很麻煩,而且您必須在要存取的遠端系統上安裝用戶端 軟體。PsExec 是一種輕量的 Telnet 替代品,讓您能夠在其他系統上執行處理程序,並且不需要手動安裝用戶端軟體,就可以使用主控台應用程式的完整互動功能。PsExec 最強大的功能包含啟動遠端系統上的互動式命令提示,還有 IpConfig 這類的遠端啟用工具,否則無法顯示遠端系統的相關資訊。

附註:部分掃毒程式會報告一或多個工具受到 remote admin 病毒的感染。PsTools 本身並未包含任何病毒,它們只是受到病毒利用,因此才會觸發病毒通知。

安裝
只要將 PsExec 複製到可執行路徑 (c:\windows\system32),然後輸入 "psexec",就會顯示它的使用語法。

使用方法
psexec [\\computer[,computer2[,...]| @file][-u user [-p psswd]][-n s][-l][-s|-e][-x][-i [session]][-c [-f|-v]][-w directory][-d][-][-a n,n,...] cmd [arguments]

computer
引導 PsExec 在指定的一或多部電腦上執行應用程式。如果省略電腦名稱,則 PsExec 會在本機系統執行應用程式;如果輸入電腦名稱 "\\*",則 PsExec 會在目前網域中的所有電腦執行應用程式。

@file
引導 PsExec 在指定文字檔列出的每部電腦上執行命令。

-a
以逗號隔開可以執行應用程式的處理器,其中 CPU 的最小編號是 1。例如,若要在 CPU 2 和 CPU 4 執行應用程式,請輸入:"-a 2,4"

-c
將指定的程式複製到遠端系統以便執行。如果省略這個選項,則該應用程式必須位於遠端系統的系統路徑。

-d
不等候應用程式終止。只有針對非互動式應用程式,才需使用這個選項。

-e
不載入指定的帳戶設定檔。

-f
將指定的程式複製到遠端系統 (即使檔案已經存在於遠端系統)。

-i
執行程式,讓它可以跟遠端系統上指定之工作階段的桌面互動。如果未指定工作階段,則處理程序會在主控台工作階段中執行。

-l
以限制使用者的身分執行處理程序 (卸除 Administrators 群組,而且只允許指派給 Users 群組的權限)。在 Windows Vista 中,會使用低整合性來執行處理程序。

-n
指定連線至遠端的電腦逾時 (秒)。

-p
指定選擇性使用者名稱密碼。如果省略這個動作,則會出現輸入隱藏密碼的提示。

-s
使用 System 帳戶執行遠端處理程序。

-u
指定用來登入遠端電腦的選擇性使用者名稱。

-v
當指定的檔案具有較新的版本號碼,或是比遠端系統中的版本還要新時,才複製指定的檔案。

-w
設定處理程序的工作目錄 (相對於遠端電腦)。

-x
顯示 Winlogon 桌面的 UI (僅限本機系統)。

-priority
指定 -low、-belownormal、-abovenormal、-high 或 -realtime,依不同的優先順序來執行處理程序。使用 -background,可以在 Vista 上用很少的記憶體和較低的 I/O 優先順序來執行

program
要執行的程式名稱。

arguments
要傳遞的引數 (請注意,檔案路徑必須是目標系統上的絕對路徑)。

您可以用引號括住名稱中有空格的應用程式,例如,psexec \\marklap "c:\long name\app.exe"。只有在按下 Enter 鍵時,才會將輸入傳遞給遠端系統,而輸入 Ctrl-C 則會終止遠端處理程序。

如果您省略使用者名稱,則會使用執行 PsExec 的相同帳戶來執行遠端處理程序,但是因為遠端處理程序正在進行模擬,所以它並無法存取遠端系統上的網路資源。當您指定使用者名稱時, 就會使用指定的帳戶來執行遠端處理程序,而且會存取該帳戶可以存取的任何網路資源。請注意,密碼會以純文字形式傳輸給遠端系統。

因為 PsExec 不需要使用系統管理員身分就可以執行,所以將本機系統當做目標時,可以將目前的 PsExec 版本當成 Runas 的替代品。

範例:
c:\>psexec \\140.137.215.118 -u bar -p 1234 cmd.exe
C:\>shutdown /s

閱讀全文...
就是愛分享
網頁是由HTML所構成,但是HTML標籤的變化有限,例如開啟一個新網頁,背景一定是白色,輸入的文字都是黑色、設定超連結的文字則會變成藍色並帶有底線...等。若要做出精美的網頁,就必須依網站風格做視覺上的調整。有鑒於此,W3C協會頒布了一套CSS規則,用來擴展HTML的功能,使設計者可以更彈性地編排網頁。

CSS的全名為Cascading Style Sheets,中文稱為串接樣式表,是一種用來描述網頁外觀樣式的語法,可說是網頁設計的精隨。不僅可重新定義HTML標籤原有的樣式,還能自行定義規則並套用在HTML標籤上,讓相同的HTML標籤擁有不同的樣式效果;透過CSS豐富靈活的設定,我們就能跳脫傳統HTML的束缚,設計出更有變化的網頁。

使用Dreamweaver設計網頁的過程中,經常需要運用CSS來改變版面的視覺呈現,例如控制文字的字體、字級、顏色、粗體、底線...等;除了文字之外,其他各類網頁元素亦可用CSS來控制,像是設定邊框或背景色、決定元素的位置...等,全部交給CSS也沒問題!

閱讀全文...
就是愛分享
簡單來說,VMWare Workstation 是一套虛擬機器軟體,它可以讓一部電腦同時執行數個作業系統,假設需要同時執行 Windows Server 和 Red Hat Linux,利用 VMWare 就不需要兩部電腦,只要利用一部電腦就能達到目的。請注意「同時執行」與「多重開機」的差異,後者只是能在開機時選擇硬碟中的某一個作業系統來執行,但還是只能執行一個作業系統。

虛擬機器(Virtual Machine)是可以模擬硬體裝置的軟體。例如 VMWare 就是一套能夠模擬 PC 硬體架構的虛擬機器。安裝了 VMWare 的電腦,便能依照使用者的操作而「產生」出虛擬機器,而使用者便能在這些 VMWare 虛擬機器,安裝其他的作業系統,因此,電腦便能同時執行數個作業系統。

在邏輯上,VMWare 虛擬機器是完整的 PC 硬體架構的電腦,但實際上,VMWare 虛擬機器上面的硬體、周邊,部分是 VMWare 自行模擬產生,部分是 VMWare 根據安裝所在的電腦硬體模擬而來的。因此,大可以將 VMWare 虛擬機器視為另一部新的電腦,將其他的作業系統安裝到這部新的電腦,也可以裝入其他相關的軟體,以執行或測試某些工作。

VMWare的網路設定技巧
VMWare 提供了相當完整的網路功能,讓 Guest 系統可以相當輕易、方便的透過網路連接 Host 系統,甚至連上外部的網路—尤其是網際網路。

虛擬網路卡
VMnet 的網路功能是透過許多虛擬網路卡所完成,包括在 Host 系統的 VMware Network Adapter VMnet1、VMware Network Adapter VMnet8,以及 Guest 系統的 AMD PCNET Family PCI Ethernet Adapter。由於虛擬機器並沒有安裝實體網路卡,但如果從 Host 系統模擬網路卡不免增加 VMWare 的複雜度(因為可能會遇到各式各樣的網路卡),因此統一虛擬機器的網路卡,是最好的作法。

請注意,每一部虛擬機器可以同時安裝數張 AMD PCNET Family PCI Ethernet Adapter 虛擬網路卡(您可以透過 Add Hardware Wizard 新增虛擬網路卡),但是上限是每部虛擬網路最多三張。雖然每部虛擬機器最多只能安裝三張虛擬網路卡,但是連接 Host 系統的虛擬網路裝置總和數量卻是無限(Windows Host 系統,Linux Host 系統則是 32 個),這是因為一部實體電腦可以同時執行數個 Guest 系統。

VMWare 的效能以及網路模擬的功能確實相當優異,可以利用一部實體電腦,便創造出同時執行數部電腦的環境,除了省下購買多部實體電腦的金錢之外,更節省放置實體電腦的空間。當然,以軟體模擬硬體的執行效能,尚不及真正硬體的效能,而且當作 Host 系統的實體電腦配備,也必須高出許多,才能讓 Guest 系統和 Host 系統有不錯的執行效能,尤其是 CPU 速度以及記憶體數量更是關鍵。但如果是要在 Guest 系統測試某些網路或應用程式的執行狀況,VMWare 也足敷使用;而且 VMWare 還有 Linux 版本,可以將 Linux 當作 Host 系統。

閱讀全文...
就是愛分享
在編排網頁時,並不是將元素通通塞進網頁就好了,而是採用「分區置入」的方式,先分析網頁版面而大概可以劃分成幾個區塊(block),例如「標題區」、「選單區」...,然後就開啟網頁編輯軟體,建立出這些區塊。剛建立好的區塊還是空的,分別在每個空區塊填入內容後,才會產生我們理想中的緊密版面。

再劃分區塊時要注意的是,請粗略地劃分出「大」區塊就好,不要將網頁劃分得太細、太複雜,因為本階段是要規畫網頁「架構」,而不是製作網頁的「細節」。

網頁區塊劃分好以後,接著可以先為各區塊命名。在規劃的過程中你可能已經決定某區塊是標題區、某區塊是內容區...,但是為了方便後續的操作,必須使用CSS可以控制的ID名稱,因此請不要使用空格、特殊符號或中文字命名。此外,第1個字元務必使用英文字,第2個字元開始用英文或數字皆可。

以Dreamweaver編排網頁的第一步,就是要建立出我們規劃好的區塊,這裡要使用HTML中的Div標籤來完成。Div標籤看起來只是一個扁平的長條形空白方框,可別小看他哦!只要透過CSS樣式為Div標籤指定寬、高度,扁平的Div標籤就搖身一變成指定大小的空白區塊。

在設定各區塊的樣式前,首先要設定整體頁面的屬性,這樣一來假如有各區塊共通的設定,例如字型、邊框等樣式,都可以先行設定完畢。為了將樣式套用到整體頁面,我們要將CSS套用在body標籤上。當版面規劃完成後,就可以開始將各種網頁元素加入到區塊中囉!

而在實務上,我們通常會將網站中每頁共同的CSS樣式彙整再同一個CSS檔案內,再將各網頁連結到該CSS檔案(稱為外部樣式表)。這樣做的好處是,將來要修改CSS樣式定義時,只需修改一個CSS檔,不必把每個網頁都打開來修改,省時又有效率。

閱讀全文...
就是愛分享
開始著手設計網頁時,一般流程分為四項:

1.收集資料
著手設計網站之前,總是千頭萬緒,總是很多資料都想呈現,一時之間也摸不著頭緒,建議您把所有想放的圖片、文字、甚至音樂等素材,以及曾經收集的一些喜歡的參考網站,及參考資料,分門別類整理好,它們都將是您網站的一部份,把資料收集齊全,才不至於做到了最後,才發現一堆重要資料根本沒地方擺。

2.網站規劃
資料收集後,要分門別類整理好,才不會導致之後的網頁項目複雜,瀏覽者逛半天都逛不出所以然,資料雜亂無章,讓瀏覽者想好好看都會看到頭疼,把一些相關的擺放在一起,例如「公司簡介」裡可以有一些子項目,如公司沿革、公司展望、公司地理位置、公司環境簡介。「產品介紹」裡頭就把公司要置放的產品,整理規劃成一類一類,產品再多都不至於看到眼花。這些分項跟項目,就可以稱之為網站架構,也可以做成網站地圖方便人家點選。

3.設計製作
架構規劃好後,就要思考網站希望呈現的方式。例如科技感、時尚感、舒服清爽風、還是熱情洋溢、鮮豔大膽?決定好風格,可以想一下網站的呈現手法,是只要一般簡單的靜態網頁,還是要做有Flash動畫的網站,或者是需要資料庫有後台可以更新資料的程式型網站。
程式資料庫的網站可以找個專業的程式設計師協助,或是更猛的可以買書來學學看要怎麼寫,這都是不錯的辦法。不過,據經驗來講,如果是很強大的功能或是急著要的網站,尋求專業會比自己摸索來的輕鬆而且省時。

4.網站完成以及經營維護
網站做好之後,當然不是放在自己的電腦孤芳自賞,一定是要找個空間置放,不管你找了一個免費的網頁空間,還是租了一個付費的虛擬空間,勇敢上傳,通知親朋好友上線批評指教,即使上線幫你挑挑錯字,都是不錯的。重點是,上傳之後才可以讓更多的人去參觀你做出來的網站作品。
事實上,網站的數目多到沒有一個可靠的數據,數量也會不停地成長,因為會上網的人越來越多,有網站已經不再是什麼特別的事情了,可以稱得上是基本配備。因為網站多,瀏覽者的選擇就多,所以一定要經營維護,定期更新資料,訪客才不會只來一次就再也不來,除此之外,做好網站行銷,就可以讓你的網站保持一定的收視率,像不時地注意自己網站的流量、瀏覽者的瀏覽路徑以及停留時間(這個需要安裝一些特別程式或是軟體),重點是網站跟小孩一樣,需要呵護與關心才會成長茁壯囉!

閱讀全文...
就是愛分享
在探討資料庫安全之前,必須嘹解「資訊安全」(Information Security)所包括的範圍,或許在一般對安全的認知為資料的保密,但這僅僅是資訊安全的其中一項,以下列出資訊安全的六項基本認識。

保密性或私密性(Confidentiality):保密性或稱之為私密性,主要目的在確保資料不外洩,也就是不讓未被授權之使用者獲得該資料。

完整性或真確性(Integrity):完整性或稱為真確性,主要的目的在確保資料的完整性和原始性,也就是保證資料在傳送的過程中不被竄改。所謂的「原始性」是指資料保有資料來源的最原始狀態,不會因為傳遞過程而被他人竄改資料。

鑑別性或認證性(Authenticity):鑑別性是指鑑別使用者的真正身份,避免被他人冒用或偽裝身份而進行交易。

不可否認性(Non-repudiation):所謂的不可否認性,主要是針對使用者所進行過的任何操作(operation)和行為(action),在事後不可否認自己未曾做過這些操作和行為。

可用性(Availability):所謂的可用性是讓合法使用者,得以正常使用。

存取控制(Access Control):用以管理與控制使用者對資源的存取範圍,避免未被授權的使用者濫用資源。

對於一般的資料庫系統的使用,必須先經過身份的「鑑別性」(Authenticity)驗證,當驗證通過之後,會依據不同的存取規則訂定該使用者可存取得範圍和權限(讀取、寫入),並且必須紀錄使用者登入後的所有交易行為,可以確保該使用者在交易後不可否認自己的所有操作,也就是不可否認性(Non-repudiation),而所有進行的操作必須建構在一個安全通道(Secure Tunnel)中,也就是經過加密處理,不被竊取的通道,不被竊取的通道,以達到保密性(Confidentiality)。

閱讀全文...
就是愛分享
JavaScript是由Netscape公司開發並隨Navigator導航者一起發佈的、介於Java與HTML之間、基於物件事件驅動的編程語言,不需要Java編譯器,而是直接運行在Web流覽器中,它的前身是Live Script。

而JScript是一種類似JavaScript的語言,這兩者的區別就相當於英國英語和美國英語的區別。

1.最開始web上只有靜態的html。
2.為了滿足更好的交互需求,netscape開發了在Navigator中使用的LiveScript語言,後改名為avaScript。
3.Microsoft發行jscript用於internet explorer。
4.最初的jscript和javascript差異過大,web程式師不得不痛苦的為兩種流覽器編寫兩種腳本。於是誕生了ECMAScript,是一種國際標準化的javascript版本。現在的主流流覽器都支持這種版本。
5.我們寫程式的時候最好寫 script language="javascript" 而不是 script language="jscript" 因為javascript是一個通用的名稱,所有流覽器都認識,而jscript只有IE認識。
6.其他語言細節上的區別,不是一兩下能說完的。不過編程時最好遵循ECMAscript標準。這樣可以保證相容性。
7.順便說一下,javascript原來叫Livescript,後來Sun的java風頭正盛的時候netscape就把名字改成javascript。

閱讀全文...
標籤: 0 意見 | | edit post
就是愛分享
資料庫管理系統必須能保證和保障使用者進行的每一筆交易都能達到完整性,尤其是要能符合前述的單元性(Atomicity)、一致性的保留(Consistency Preservation)、獨立性(Isolation)以及永久性(Durability or Permanency)等ACID四個交易特性,若要達成此四個交易特性所需要的技術各不相同。

單元性(Atomicity):所講究的是一筆交易在開始進行之後,倘若發生任何不可預期的意外而未能完成,便要能恢復到最原始狀況,也就是「完全做完或是完全不做」(All-or-Nothing Change),要能達成這個特性就必須具備「可回復性」(Recoverability),也就是當此交易在進行之中,發生任何情形之下,此交易都必須能依據「系統日誌」(System Log)內的完整操作資訊,將所有的異動取消。

一致性的保留(Consistency Preservation):資料庫在一開始由系統分析師與客戶之間的需求分析,再藉由塑模(Modeling)的過程,產生出概念式實體關聯圖(Conceptual Entity Relationship Diagram),以及轉換成程式設計人員所看的實際實體關聯圖(Physical Entity Relationship Diagram),在此時就必須要注意到資料庫內的一致性限制(Consistency Constraint)的設計,使得使用者在異動資料時能受到完整性的限制(Integrity Constraint),讓資料庫內的資料彼此之間都能保持一致性,但因為某種情形下,可能無法藉由資料庫管理系統來限制使用者異動資料的一致性,而需藉由應用程式來檢查交易的一致性,此時必須藉由「單元性」(Atomicity)來達到多資料表更新時的一致性,或是藉由回復技術將所有異動回復到原始狀態。

獨立性(Isolation):此項特性來自於資料庫管理系統對於多個並行交易的排程,雖然多個交易並行處理,但每一個交易的執行應該不能互相影響彼此執行的結果,也就是要具備可序列化的特性,方能保證交易的執行結果是正確的,在前面已探討過數種技術來保證交易之間達到獨立性的技術,諸如「衝突可序列化性的排程技術」(Scheduling)、「兩階段鎖定協定」(Two-Phase Lock Protocol,2PL)、「時戳」(Timestamp)以及「多版本技術」(Multiversion)來保證交易的可序列化性,亦就是保證了交易之間的獨立性(Isolation),讓並行的交易在交錯執行的情形下所得的結果,彷彿序列性(Serial)的依序一一執行交易。

永久性(Durability or Permanency):一個交易成功完成之後,該筆所異動的資料應該是永久有效,不可因為任何因素導致該交易的資料所有改變,除非下一個交易硬體設備並不能永久地儲存於資料庫內。但是,資料庫管理系統所在的硬體設備並不能永久保證不損壞,而可能發生硬體損壞、停電或其他外力導致資料庫系統無法正確運作,所以要如何達到資料「永久性」(Durability or Permanency),就必須透過不同的回復技術。

由此可見,資料庫管理系統要能保持交易的ACID四個特性,回復技術是一種相當重要的議題。

閱讀全文...
就是愛分享
交易在進行中,同一時間會有很多交易並行處理(Concurrency),也由於並行且交錯處理結果,有可能導致交易之間彼此影響的執行結果,所以採用交錯式排程的方式,並透過測試該排程是否符合可序列化的排程原則,讓該排程可以合理且具有等價序列排程的結果。在並行控制的技術,除了可以利用控制排程的「序列性」(Serializzbility)之外,還有另一種普遍被使用的鎖定協定(Lock Protocol)來達到排程的序列性,也就是達到並行控制的一種技術,其他還包括時戳(Timestamp)、多版本(Multiversion)和樂觀/悲觀(Optimistic/Pessimistic)之技術來達成並行控制之相關技術之探討。

首先要介紹何謂「鎖定協定」(Lock Protocol),一個基本鎖定協定(Lock Protocol)的操作至少有兩個,一個為「鎖定」(Lock),一個為「解除鎖定」(Unlock);例如,當一個交易要對資料項目X進行讀取或寫入操作之前,必須要使用「鎖定」操作(Lock Operation),如同將該資源鎖住後,此資源就僅會提供給這一個交易使用,其他交易的操作就不可以再同時使用該資料項目X,換言之,其他未取得此資源使用權的交易必須要「等待」,直到該資源被釋放;反之,在進行操作之後,可以將該資料項目X立即或延遲釋放讓其他交易可以順利取得該資源進行操作,此釋放動作即稱之為「解除鎖定」(Unlock),得以讓其他交易的操作能順利往下執行交易。

以類別而言,鎖定可以區分為「獨佔模式」和「分享模式」兩種類型,獨佔模式的鎖定有如「二元鎖定」(Binary Locks),分享模式則為「共享/互斥鎖定」(Shared/Exclusive Locks)或稱為「獨/寫鎖定」(Read/Write Locks)。鎖定與解除鎖定的時機,例如兩階段鎖定協定(Two-Phase Locking Protocol,2PL)。

所謂的「兩階段鎖定協定」,也就是在一個交易的進行中,不論任何的鎖定,包括讀取鎖定或寫入鎖定,都必須在第一個解除鎖定之前執行,即稱為遵循「兩階段鎖定協定」。也就是將所有的鎖定(Locks)和所有的解除鎖定(unlocks)完全分為兩階段,第一階段為鎖定階段,稱為「擴增階段」(Expanding Phase)或「成長階段」(Growing Phase),在此階段只能執行鎖定指令,不可有任何解除鎖定穿插其中;第二階段為解除鎖定階段,稱為「削滅階段」(Shrinking Phase),在此階段只能有解除鎖定指令,不可有任何的鎖定指令穿插其中。

閱讀全文...
就是愛分享
今天"資料庫系統管理與設計"沒上啥內容
主要是在討論專題製作的事情
大致上各組的專題製作題目如下:

第1組:[里長]
1.內部組織圖細項-先討論-定義作多大
定義好要做多少東西.
現在需求是自己提的.這樣的開發方式.你是可以天馬行空的思考你有哪些功能做.
再做出一個基礎架構圖出來.
------------------------------------------
第2組:[寵物交友][泛舟]兩個方向
◎泛舟-偏向靜態網站.介紹.教學.注意事項.影片.照片.網路購物.偏向內容管理
缺點:現有的免費網站軟體.套一套出來.

◎寵物交友-日記功能.微網誌140個字.結合地圖功能.揪團功能.強的點是原創性夠.
------------------------------------------
第3組:媒合[洗衣店]
收送服務-線上預約-簡訊服務-呈現出地圖樣子-
------------------------------------------
第4組:媒合[裝潢] 在上面找客戶.設計師.分享與討論.
→ 統一送貨.統一收穫.
→ 負責他一切電子物流機制.電子市集.(真正運作)物流費用太高
------------------------------------------
第5組:[藥局藥裝]
線上購物-藥品-藥品的資料庫.網路藥點.
缺點跟第2組一樣沒有原創性:現有的免費網站軟體.套一套出來.
------------------------------------------
第6組:[立體紙雕]-下載賀年卡-可以上網下載紙板-

希望今年一樣有很不錯的成績表現!!

閱讀全文...
就是愛分享
Java程式的功能主要是由Java套件下的各個類別,於執行期所產生的物件所提供,JSP基本上還是一種Java程式,只是它簡化了撰寫Java伺服端應用程式的過程。Java提供了9種預設的物件,我們將其稱為隱含物件,這些物件內建於JSP網頁環境之下,因此我們不需引用這些物件所屬的套件,便可以直接在JSP網頁中使用這些物件。

下表列出了這9種JSP的預設物件,以及各個物件是從何種類別衍生而成,並作一簡略的說明:



上表簡述衍生的基礎類別與物件功能,根據物件的特性,底下進一步說明這些物件之間的關聯。

out
JSP是一種動態的網頁,與HTML這一類靜態文件最大的差異,在於同一份網頁經過程式運算之後,根據各種條件狀況呈現不同的內容,伺服端利用out物件將所要輸出的內容,於傳送網頁的時候動態寫入用戶端。

request與response
JSP網頁能夠具備與使用者互動的功能,主要的關鍵在於request物件與response物件所提供的功能,request讓伺服器取得使用者於網頁表單所輸入的資料內容,response則提供伺服端程式回應用戶端訊息所需的功能。

request與response物件,是學習建構JSP網頁互動式功能最重要的兩個隱含物件,它們與HTML表單標籤有着相當密切的關聯。

application與session
application以及session這兩個物件,基本上被使用於記錄以及處理JSP網頁之間的共用資料。

由於網際網路本身是一種無連線線狀態的應用程式,當一份網頁文件從網站伺服器傳送至用戶端的瀏覽器之後,用戶端以及伺服端之間,就沒有任何連線狀態存在,這個先天的缺陷,讓網頁無法儲存應用程式執行期間所需的共用資料,application與session物件被設計用以解決這樣的問題。

config、pageContext以及page
這三個物件使用於存取JSP網頁程式執行階段的各種資訊內容,其中config包含JSP網頁檔案編譯成為Servlet之後的相關資訊、pageContext則是提供系統執行期間,各種資訊內容的存取作業功能,page代表目前正在執行的JSP網頁物件。

JSP伺服端應用程式可以運用這三種物件,存取網頁執行期間各種環境資訊,同時將目前網頁當作物件進行操作。

exception
exception為JSP提供用於處理程式執行錯誤的例外物件,此物件搭配功能強大的例外處理機制,運用於JSP網頁的程式除錯與例外處理。

閱讀全文...
標籤: 0 意見 | | edit post
就是愛分享
JSP嚴格說來是一種整合技術,以Java平台為基礎,提供一種簡便的方式,讓Java技術能夠輕易的運用於建構動態網頁內容。

Java為了產生與使用者互動的動態網頁,發展出一種名稱為servlet的應用技術,servlet是一種純粹以Java語言編寫,符合標準規格的Java應用程式,於網站伺服器運行的時候被載入,針對客戶端瀏覽器提出的要求,作出動態回應。

儘管servlet應用程式產生動態網頁的功能相當強大,但是卻不容易開發,JSP即是為了克服這個障礙而發展出來的一種伺服端網頁技術,其本身是一個內容混雜HTML標籤與Java程式碼的純文字檔,當瀏覽器要求JSP網頁,文字檔於網站伺服器被編譯成為servlet載入,然後產生動態的網頁內容。

由於JSP本身被設計的非常容易學習使用,因此Java動態網頁技術得以快速的發展而且被廣泛的接受,程式開發人員只需學習基礎Java語法以及相關的JSP物件,便可以輕易完成動態網頁的建構設計。

JSP與JavaBean
讓JSP如此出色的原因,除了servlet之外,另外一點便是其運用JavaBean的能力,JavaBean是一種元件技術,提供Java應用程式一種極為彈性的設計模型,它將程式依功能切開,包裝成為一種稱之為JavaBean的程式元件,可以被外部JSP網頁重覆使用以提供所需的功能,同時藉以擴充JSP網頁的功能,維持簡潔易於維護的JSP網頁程式碼。

使用JSP設計動態網頁並不困難,然而當網站的複雜度開始增加,我們還是必需面對如何有效管理與切割程式內容的課題,於提供強大功能的同時,保有網頁程式設計的彈性、以及容易維護的程式碼。

JavaBean本身是一種包含特定功能的Java程式元件,當一個JSP網頁需要此項功能,只需直接引用相關的JavaBean元件即可;而JavaBean最重要的概念在於將程式邏輯與建構網頁介面的程式碼分開,網頁只負責資料的收集以及畫面擺設的處理,而JavaBean元件則是包含重要的程式邏輯運算,如此一來JSP網頁將更容易維護與建構,JavaBean同時也是建構商業級JSP網頁程式最為重要的核心。

閱讀全文...
標籤: 0 意見 | | edit post
就是愛分享
一個交易的基本定義,必須是將交易內的所有操作一次全部執行完畢,或是全部都不執行;而且在電腦系統中,所有的交易又都是交錯地執行,在執行中總會有互相影響的問題,並藉由「遺失更新問題」(Lost Update Problem),「不正確讀取」(Dirty Read Problem)或稱為「暫時更新問題」(The Temporary Update Problem)以及「不正確的總和問題」(The Incorrect Summary Problem)三個問題點出了交錯執行上必須注意的並行控制問題,所以對一個交易很明顯的定義出,必須具備四個基本特性 ACID,也就是單元性(Atomicity)、一致性的保留(Consistency Preservation)、獨立性(Isolation)以及永久性(Durability or Permanency)四個特性。

當交易正在進行期間,電腦系統有可能遇到非預期的各種類型失敗,所以交易必須具備有回復(Recovery)的功能,此功能可透過系統日誌(System Log)的全程記錄方式來追蹤所有交易進行的情形,並且在適當時機可將失敗且未完成的交易恢復到最原始的情形。

另外電腦排程可分為「序列的」(Serial)和「非序列的」(Non-Serial)排程,以序列的排程執行結果是最理想和最正確的排程,但在實際的電腦系統下是不太可能存在的,但是對於「非序列的」排程卻有可能會出現正常和不正常的執行結果,必須透過衝突且可序列化的測試演算法來判斷出該排程是否能正確執行出結果。

閱讀全文...
就是愛分享
「關聯式代數」與「關聯式計算」為關聯式資料庫系統操作的基礎概念;兩者之間的最大差異在於一個著重於如何取得,一個著重於取得什麼。關聯式代數就是著重於如何取得資料的過程,也就是重視「How」;而關聯式計算則著重於要取得什麼資料,也就是重視「What」,而不是在於過程要如何取得。

關聯式代數可依性質分類為四種:

1.一元關聯操作- 針對一個關聯的操作,主要都是針對關聯的屬性與職組的篩選動作,例如「選取操作」、「投影操作」、「更名操作」。

2.二元關聯操作- 針對兩個關聯進行的操作,主要重點則是在於關聯與關聯之間的合併(Join)動作。

3.集合論操作- 利用集合理論來對關聯進行不同的操作,這些操作包括交集操作、聯集操作以及差集操作等三種基本操作。

4.聚合函數計算- 針對關聯中某些屬性進行群組之後的計算,包括計算加總的Sum()函數'計算平均的Average()函數、計算筆數之Count()函數。選擇最大值的Max()函數和最小值的Min()函數...等等皆為聚合函數。

閱讀全文...
就是愛分享
Subversion,簡稱 SVN,是一個開放原始碼的版本控制系統,可以智慧化更新客戶端檔案的程式。使用 SVN 可以自動比對您腳本資料夾內的檔案以及 SVN 伺服器上的檔案,做出刪除檔案、更新檔案、比對檔案、加入檔案等等...功能,讓使用者能在第一時間上取得最新腳本。

SVN 是一個檔案伺服器,就跟你使用 FTP 一樣,只是你在使用 SVN 的時候...您沒有上傳檔案的權限,沒有權限的帳號,SVN 只能幫你做到更新(下載)腳本而有權限的帳號,則可以上傳腳本,幫腳本做更新,基於安全面,怕人搗亂,所以普通使用者都沒有上傳的權限。

SVN 是個檔案伺服器,這點剛剛有提到,它就像是一個"在網路上的腳本包"它隨時會因為我、或者其他有權限的人的上傳腳本,而得到更新。換言之,一般使用者也可以隨時透過 SVN 系統,取得最新被更新的腳本這就是使用 SVN 能取得最新腳本包的原因。

閱讀全文...
標籤: 0 意見 | | edit post
就是愛分享

Linux因為本身設計的架構特性,讓它在各個不同領域的應用上都可以委以重任,常見的運用範圍有:

  • 網路伺服器(Network Server):這是目前Linux作業系統最常被運用的領域之一,大部分的使用者在需要一個網頁伺服器、郵件伺服器等應用時,多會先想到Linux作業系統。
  • 個人工作站與桌面環境(Workstation and Desktop Environment):這幾年Linux作業系統不斷的被推廣在桌面環境上的運用,例如做為平日的收發郵件或是文書處理機器,另外在一些較為簡易的電腦系統中,甚至直接搭配Linux作業系統來做為主要的操作系統環境。像是前陣子剛上市的HP M2310系列簡易型電腦或是IBM ThinkPad T60系列主機等都是以Linux作業系統作為主要操作環境的實例。
  • 內嵌式安裝(Embedded System):內嵌式系統的運用可以讓Linux縮小到成為一個晶片,將其放在某一個設備中,便可以讓這個設備裝置擁有某些特定的功能。目前在國內其實有許多廠商都有再針對Linux內嵌式系統的運用進行研發與實作。
  • 資訊家電與智能手機(Information Appliance and Smart Phone):資訊家電與智能手機的應用都是屬於較為貼近你我生活週遭的實際應用範圍,例如:目前大部分的手機系統功能越來越多,除了原本的通話功能之外,還會增設額外的記事、多媒體播放、遊戲等功能,這種類型的手機便是所謂的智能手機,通常裡面會需要一個小型的作業系統來協助處理這些複雜的工作,而Linux作業系統當然就是不二人選了。另外,資訊家電的應用其實便是內嵌式系統的延伸使用,將具備特殊功能的內嵌式系統晶片放置在普通家電上,讓家電可以具備特殊功能,這便是資訊家電的運作方式。
  • 叢集系統(Cluster):叢集系統架構通常可以區分為兩種模式來探討,一個是將多個微處理器計算資源透過高速網路連結起來後,所產生的高可靠性與運算能力強大的超級系統,利用群策群力的方式達到計算加速的目的,以滿足目前眾多需要複雜計算的應用程式。另外一種運用便是將應用程式或是服務達成負載平衡(Load Balance)等功能,讓多個伺服器可以一同提供服務,讓用戶端存取時可以妥善獲得足夠的存取頻寬與資源能力。叢集系統的運用範圍十分廣泛,例如:生物科技、科學模擬計算、氣象、人工智慧等都是常見的領域,目前在國內也有許多企業與政府單位透過Linux作業系統來進行從集系統架構的運用。


閱讀全文...
標籤: 0 意見 | | edit post
就是愛分享
2003年中,Novell公司大手筆將德國SUSE Linux併購成為旗下產品之一,投入眾多人力與金錢等資源致力於SUSE Linux的開發,並且大量的整合許多以企業為主的企業級解決方案,例如:iFolder、iChain、GroupWise與eDirectory等。並且為了改變以往大家對於SUSE Linux的刻版印象,Novell公司大力贊助openSUSE社群計劃,以推廣Linux為主要的宗旨,設計出一套可以讓每個人都可以輕易操作與使用的Linux發行套件。也因為這個計畫宗旨,讓SUSE Linux在短短的幾年間順利成為多數開發人員與Linux愛好者選擇的最佳發行套件版本,也為Linux社群注入了一股活水。

SUSE Linux Enterprise Server
SUSE Linux Enterprise 11針對企業的各個層面帶來很多創新應用,除了SUSE Linux Enterprise Server 與SUSE Linux Enterprise Desktop中各項加強功能外,另外也推出SUSE Linux Enterprise Mono® Extension和SUSE Linux Enterprise High Availability Extension兩項全新的延伸應用軟體。SUSE Linux Enterprise Mono® Extension是唯一能讓客戶在Linux作業環境中執行各項Microsoft*.NET應用方案並取得完整支援的產品;另外,SUSE Linux Enterprise High Availability Extension是叢集運算產品,不僅確保各種關鍵任務應用程式的正常運作時間,並可大幅降低因高可用性產生的總持有成本。SUSE Linux Enterprise 11是新一代IT架構之作業系統,其設計秉持三個核心要素:普及性、互通性、以及關鍵任務運算。

先進的Linux管理功能
Novell的Novell ZENworks® Linux Management 7.3版本,為客戶的Linux系統提供強勁的管理方案,並將政策式導向的自動化功能延伸至SUSE Linux Enterprise 11。在桌面與伺服器系統管理方面,ZENworks Linux Management能夠為桌上型電腦和伺服器系統提供先進的政策,帶來簡易的安裝、管理和維護Linux資源的方法。當搭配 SUSE Linux Enterprise 11一起使用時,ZENworks Linux Management可讓客戶降低管理IT架構所需的時間與成本。

普及性:Linux隨時隨地滿足企業用戶需求
客戶要求可提供高度彈性的作業系統。SUSE Linux Enterprise 11能在x86 32位元、x86 64位元、Itanium*、IBM* POWER*和IBM System z*等各大硬體平台上順利運作。此外,SUSE Linux Enterprise 11已針對VMware* ESX、Microsoft Hyper-V以及Xen*等所有主要虛擬管理軟體進行最佳化,因而可提供接近原生型支援的效能。

在雲端運算建置Linux系統方面,SUSE Linux Enterprise 11將通過Amazon Elastic Compute Cloud (EC2)之認證並獲得支援。Novell目前正與IBM合作提供包括IBM DB2*、Informix* Dynamic Server、WebSphere* sMash、IBM Lotus*網頁內容管理、以及IBM WebSphere*入口網站應用等SUSE Linux Enterprise 11在雲端運算環境下的虛擬化應用實例。對於已著手建置Linux桌面系統的客戶,目前更可從惠普等各大硬體廠商購得預載的SUSE Linux Enterprise Desktop產品。Novell將透過SUSE Linux Enterprise Desktop 11,持續把Linux桌面系統的普及率擴展到桌上型電腦、筆記型電腦、低價筆電、桌上型易網機及各種精簡型客戶端系統等廣泛的設置上。

互通性: 充分運用現有的IT投資
Novell透過SUSE Linux Enterprise 11持續提供最具互通性的Linux解決方案,以充份發揮客戶既有的IT設備。Novell和微軟簽訂了具突破性的五年合作協議,讓Novell設計可與 Microsoft Windows*作業系統互通的SUSE Linux Enterprise 11,兩者相容的範圍包括跨平台虛擬化方案、系統管理、身份/目錄登入、文件格式相容性、MoonlightTM (Linux版本的Microsoft Silverlight)、以及協助殘障人士使用桌面系統的功能。除了新增的Silverlight支援功能外,SUSE Linux Enterprise Desktop 11更可播放多種Windows多媒體檔案格式,以及使用支援各種Microsoft Office檔案格式的最新Novell版OpenOffice.org。

關鍵任務運算功能:支援您最重要的商務需求
SUSE Linux Enterprise 11可確保客戶將作業負載由UNIX移轉至Linux平台,藉以建置低成本、高靈活度的IT架構。SUSE Linux Enterprise High Availability Extension解決方案提供一個創新的開放原始碼叢集技術整合套件,不僅能協助客戶降低意外停機的時間,更可提供一個可取代昂貴專利授權產品的最佳替代方案。一個全新的支援架構提供強化的問題解決功能,以協助客戶快速且精準地解決各種大小疑問。

SUSE Linux Enterprise Server 11對swap空間的支持已包括NFS (網路檔案系統)協定,可運用遠端儲存資源來支援伺服器主機的需求,同時可避免代價昂貴的應用程式停擺問題。此外,SUSE Linux Enterprise 11具備自動化和加速安裝、移除、升級和配置軟體封包的全新技術,可提供最快的封包更新堆疊,其速度勝過所有企業級Linux解決方案。SUSE Linux Enterprise Server 11提供全新的Xen 3.3 虛擬管理軟體,持續為開放原始碼虛擬化方案樹立新標準,帶來更優異的擴充能力、效能與安全性,並加強電源管理和提升繪圖功能。

閱讀全文...
標籤: 0 意見 | | edit post
就是愛分享


程式設計師撰寫程式時會在陣列中存放一大群數值資料或物件,但陣列的長度是預先給定且無法變更的,所以在執行時期程式卻無法變動陣列長度以動態產生所需要的物件。

針對這類的問題,java.util套件提供了各種classes(The Collection API)讓程式開發者使用,如今程式設計師不再為動態資料存取而煩惱,只要會使用這些功能強大的classes即可。

被置入集合的物件,其原本的資料型別將不存在,而是以Object的型態存入集合中。不過,當不同資料型別的物件置入同一個集合,日後再取出時,必須先將此元素轉換成原始(放入集合前)的資料型別,否則將會出現執行時期錯誤(runtime error)。

集合(Collection)
1. 集合(Collection)
集合(Collection)是描繪或存放一群物件(a group of objects)的觀念,又可稱之為物件群組,物件群組中的物件便是集合中所謂的集合元素(collection element)。



2. 列舉(Enumeration)
實作Enumeration介面可將指定集合物件中所有元素序列化,並透過nextElement()方法逐次存取元素內容值。Enumeration適用在Collection、Hashtable與Voctor集合等集合物件中。

3. 迭代器(Iterator)
Iterator定位在Collection介面上,只要是Collection就會有Iterator,也就是所有的Collection都會產生Iterator。Iterator除了可以存取集合內的元素資料,利用remove()方法亦可移除Iterator中最新(即最近增加)的元素。

4. ListIterator
在宣告上,ListIterator介面是繼承Iterator介面。ListIterator可幫助開發人員直接對指定的集合元素做新增、修改與刪除的動作,並取得目前元素在list集合中的位置(iterator's current position in the list),同時可上下移動的讀取集合中元素的內容,而Enumeration與Iterator只能往下讀取下一個集合元素資料。

在ListIterator集合中每一個元素之間都有一個cursor position(Index),使ListIterator可以利用Index值來取得下一個元素(next()方法)與上一個元素(previous()方法),如圖所示:



若指定元素不存在,系統將傳回UnsupportedOperationException例外,而每一個元素的前後都會有一個Index。

Set介面
Set介面實作了Collection介面,因此也包含了Collection中所有的方法。Set中所放置的元素是無順序性的(unordered),並且元素與元素之間不得重複(no duplicates)。Set的擺放位置是根據hashCode而決定,不允許擺放相同的資料,所以我們可以說Set是資料具唯一性但無順序性的集合。



SortedSet interface
由於SortedSet繼承了Set,因此SortedSet中也會包含在Set類別所定義的方法。利用SortedSet可以將儲存在Set中的元素內容做自然排序(遞增),不過各元素的內容是不可以重複的。SortedSet集合中的每一個元素都必須實作Comparable介面,所以只要在SortedSet物件中加入一個新的元素則SortedSet就會起自動去比較該元素內容是否已出現在原有的SortedSet集合中。

List介面
List實作了Collection介面,並包含了Collectin中所有的方法。List中的元素有順序性且資料可以重複(duplicates are permitted),此外也可以利用List介面,插入或移除指定的集合元素。



Map介面
Map並沒有繼承集合介面(Collection Interface),它被歸類為集合架構(Collection architecture)的一部份是因Hashtable與HashMap這二個集合類別分別都實作了Map介面,廣義來說Map便成了集合架構中的一環。

Map中利用指定的鍵值(key)來決定元素擺放位置,鍵值不得重複,每一個鍵值最多只能對應一個元素,雖鍵值不得重複,不同的鍵值卻允許儲存重複的物件。



閱讀全文...
標籤: 0 意見 | | edit post