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國碼頂層網域的管理。
閱讀全文...
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提供了五種形式的標籤函式庫,列舉如下表:
閱讀全文...
在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服務,執行於背景,除非被管理者將服務終止,或是系統關閉,否則服務會一直持續於背景提供服務。
短暫式服務:平時不會啟動於背景中等待存取要求,而是當使用者有所需求時才會啟動提供服務進行存取。
閱讀全文...
由於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架構已經成為一個流行且成功的網路服務設計方法。
閱讀全文...
電腦科技日益進步,但經過數十年的發展,電腦軟硬體的穩定性仍未達多數人能滿意的水準,電腦中的資料還是有喪失或毀損的情況發生,若再加上天災人禍等意外狀況,存於電腦中的資料實在是不太安全了。就算使用的是具有容錯能力的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程式架構、程式碼重複使用的目的之外,同時提供應用程式擴充與修改更大的彈性。
閱讀全文...
在一般的區域網路中 (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...)
閱讀全文...
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可以在網頁上完成幾乎傳統應用程式才能達到的功能。
閱讀全文...
申請放置網站的空間若要架設網站,需要一部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而言,相當的重要,沒有視窗物件的輔助,動態網頁的技術將成為空談。
閱讀全文...