2008年1月24日星期四

IPV9 : 中國擺脫美國IPV6, 自訂互聯網標準

根據新華網消息指出 : 中國於2008.1.23宣布基于十進制技術構建的互聯網投入使用。十進制互聯網技術形成的IPV9協議,是中國在互聯網技術上取得的重大自主創新成果,為擺脫美國對現有互聯網的控制和壟斷,建設中國自主掌控並可向世界推廣的新一代互聯網,提供了技術支持和發展機遇。

IPV9最早出現在2000年左右, 當時被當做笑話與神話, 普遍認為中國只是無所不用其極的想擺脫美國獨大的情形, 並且認為IPV4, IPV6都已經是國際標準, IPV9根本不可能真正實現

在老美都還搞不清楚中國到底在搞什麼的時候, 中國十進制網路安全監督管理局、資訊產業部於昨天宣佈技術已經成熟, 但目前尚未被IETF接受

這個IPV9到底是什麼? 對整體網際網路有何影響?

(1)IPV9所提供的位址是IPV6的4倍
(2)IPV9位址可以由中國自主分配,同時還可以重新分配IPV4和IPV6的位址
(3)IPV9為十進制, 不同於IPV4/IPV6的十六進制
(4)IPV9將域名與IP地址合為一體,解決了數字域名的解析難題

根據中國專利局(Chinese Central Patents Office)於2002年的專利"THE SOLUTION FOR ASSIGNING ADDRESSES TO ONLINE COMPUTER FULL DIGITAL CODE", IPV9主要是要解決IP不足的問題, 如果IPV9被接受的話, IPV6的重要性將會降低, 並且中國將成為互聯網的主宰者

IPV9的網域由state code+area code+smart terminal code組成

如 00353(state code) 1(area code) 4023000(smart terminal code), 數字網址就是 35314023000, 14023000, 4023000, 完全看你住在哪個區域而決定打入哪個網址, 概念跟電話一模一樣

因此會造成什麼影響呢?

(1)當然最重大影響就是中國在互聯網會取代美國, 至少擺脫了美國的束縛
(2)網域除了原先架構外, 又多了數字域名的選擇
(3)所有電腦與網路設備, 又必須要IPV9 compatible

如果美國要讓IPV9胎死腹中, 可不可能? 中國大可關起門來玩, 凡是要進中國的廠商全部要依照IPV9, 以中國的市場規模來看, 大有可能一堆廠商必須彎腰低頭去接受一個非國際標準的IPV9, 等大家都接受了, IETF可能也沒有多少能力阻撓了

好玩了, 網際網路又有一波角力戰了, 台灣呢? 只能跟著大家的屁股跟進的份而已 ...

相關資料: http://www.dns.com.tw/modules/news/article.php?item_id=573

標籤: ,

繼續閱讀:台灣搜尋引擎優化與行銷研究院

2008年1月15日星期二

PC與隨身碟檔案安全防護 : TrueCrypt

在之前文章提到過PGP Key 的使用與管理 , 可以將檔案安全加密或使用PGP DISK來建立加密volume, 不過由於PGP軟體自8.0以後已經不是免費軟體(除非你還能取得PGP 8.0軟體), 因此在此再介紹另外一款加密檔案的免費軟體: TrueCrypt, 這裡介紹的內容將有一般正常的作法, 與隨身可攜而且簡便的使用方式

一、安裝與中文化方式如下

(1)首先去下載TrueCrypt檔案

下載連結: http://www.truecrypt.org/downloads.php

裡面有windows的zip檔案及Linux的tar.gz檔案, 看您自己環境去選擇

再來下載中文化檔案: http://www.truecrypt.org/downloads/thirdparty/localizations/langpack-zh-tw-1.0.0-for-truecrypt-4.3a.zip

(2)把TrueCrypt zip檔案解壓縮後, 去執行安裝 (執行TrueCrypt Setup.exe)

(3)安裝完成後, 把中文化檔案解壓縮後, 把Language.zh-tw.xml放到您安裝TrueCrypt的目錄下 (預設是 C:\Program Files\TrueCrypt)

(4)開始執行TrueCrypt, 選擇Settings->Language->選擇繁體中文 (如下圖)



(5)這樣你就看到了TrueCrypt的中文畫面了 (如下圖)




二、TrueCrypt的使用

再來介紹TrueCrypt的使用, 基本上TrueCrypt在您的硬碟中以加密方式(密碼或加上金鑰檔)建立一個檔案, 您可以把這個檔案載入變成電腦的一個獨立邏輯單元, 這個獨立邏輯單元就如同一個硬碟, 但是要打開這個硬碟必須有正確的密碼或者加上金鑰檔

(1)如下圖選擇建立一個加密區 (一個檔案型態,可以在PC或隨身碟)




(2)選擇標準TrueCrypt加密區, 或隱藏的TrueCrypt加密區, 按下一步
(其實沒有必要選隱藏, 不然到時候反而找半天 ...)



(3)選擇加密區的檔案名稱
例如我建立在G:\TrueCrypt\mycrypt.dat
不打附檔名也可以, 但是打一個自己習慣的附檔名, 讓自己以後知道這是TrueCrypt的加密區檔案, 比較不會搞亂




(4)加密選項 (不熟悉加密演算法的話, 就直接下一步吧...)
等使用很熟悉之後, 再來改變加密方式




(5)設定這個加密區的空間大小




(6)設定您的密碼 (千萬要記得密碼喔!)



(7)將加密區格式化 (僅把您設定的檔案格式化, 不要擔心整個硬碟會不見)




(8)建立完成囉, 就按下結束離開







現在開始來使用這個加密區 :

(1)如下圖先選要建立成哪個代號(也就是磁碟代號)
然後選您之前建立的加密檔案, 如剛剛我建的 G:\TrueCrypt\mycrypt.dat
然後按下載入 (當你不需使用時記得卸載下來)




(2)再去看看我的電腦, 就多出H:磁碟機了 ...
放在H:這裡面的檔案就會加密, 沒有密碼或金鑰檔就進不來啦




三、讓TrueCrypt變成可攜式

最後, 也許有人會問 ... 那如果我把隨身碟當成加密區
使用另外一台電腦沒安裝TrueCrypt怎麼辦? 還要再安裝一次嗎?

根本不需要, TrueCrypt幫你想好了

如何讓TrueCrypt跟著隨身碟跑呢?

(1)如下圖, 只需選擇工具->可攜版設定




(2)選擇隨身碟放置TrueCrypt的位置, 按下建立 ... TrueCrypt就在你的隨身碟上了



但是, 如果使用攜帶式的方式還要每次載入與卸載 ...未免太麻煩了

因此您可以在"隨身碟放置TrueCrypt的目錄"下, 建立兩個檔案 (只適用windows環境):

將以下程式碼以小作家編寫, 存成 mount.wsf


<job id="mount">
<script language="jscript">
var oShell = WScript.CreateObject('WScript.Shell');
oShell.Run('\\TrueCrypt\\TrueCrypt.exe /q /a /b /m rm /v "mycrypt.dat"',1,true);
</script>
</job>


將以下程式碼以小作家編寫, 存成 unmount.wsf


<job id="mount">
<script language="jscript">
var oShell = WScript.CreateObject('WScript.Shell');
oShell.Run('\\TrueCrypt\\TrueCrypt.exe /q /d /b',1,true);
</script>
</job>


在以上mount.wsf中的紅色部分就是您的加密檔案, 依您習慣來修改即可
把mount.wsf, unmount.wsf, mycrypt.dat, TrueCrypt.exe, Language.zh-tw.xml 等檔案都放置在隨身碟同一個目錄

如此, 隨身碟插上各不同PC, 只需執行mount.wsf ->輸入密碼

不使用時只需執行unmount.wsf即可

這樣就不需每次都要出現TrueCrypt複雜的界面了...容易吧 !

標籤: , ,

繼續閱讀:台灣搜尋引擎優化與行銷研究院

2008年1月8日星期二

如何使用MS SQL的Stored Procedure與Trigger

上篇大致說明了MySQL的Stored Procedure與Trigger, 現在來談談Microsoft的SQL server (以SQL 2000為例, 2003/2005則大同小異)

雖然都是database的stored procedure與trigger,但是語法卻不同,另人頗為頭痛

Microsoft SQL的stored procedure主要以Transaction SQL語法 (T-SQL),除了procedure語法差異外, SQL語法本身也略有不同 ...


MS SQL使用 SELECT TOP 20 * FROM MY_TABLE

MySQL使用 SELECT * FROM MY_TABLE LIMIT 0,20

以上都是挑選資料中的前20筆資料

MS SQL使用LCASE,UCASE,INSTR,MID等函數來處理字串, 但MySQL與Oracle則使用LOWER, UPPER, LOCATE, SUBSTRING ... (MySQL string function reference, MySQL 5.0 reference)

Microsft走的路線以T-SQL及VB語法的方式, 因此只要T-SQL/VB熟悉, SQL server就易如反掌了 ... 因此筆者都以ANSI-SQL, T-SQL, VB, PHP這些概念將MySQL, Oracle, MS SQL一次通通學習起來

(1)Stored Procedure

建立SQL Server的stored procedure首先打開SQL Server Enterprise Manager, 選取預存程序, 按下滑鼠右鑑 ->新增預存程序 (畫面如下)



我們來建立一個簡單的例子:

CREATE PROCEDURE TEST_ADD
@emp_no varchar(10)

AS

SET NOCOUNT ON

BEGIN TRAN
INSERT testtable (emp_no) VALUES (@emp_no);
COMMIT TRAN
GO

以上紅色的字是依需要修改

有了這個stored procedure後就可以執行
EXEC TEST_ADD('0000000001')

SET NOCOUNT ON主要是希望不需回覆筆數
也就是"停止在部份結果集中傳回顯示Transact-SQL 陳述式或預存程序所影響之資料列數的訊息"

但是如果你希望執行本機stored procedure去操作遠端機器database

就必須改成

CREATE PROCEDURE TEST_ADD
@emp_no varchar(10)

AS

SET NOCOUNT ON
SET ANSI_NULLS ON
SET ANSI_WARNINGS ON
SET XACT_ABORT ON

BEGIN TRAN
INSERT LinkedServerName.master.dbo.testtable (emp_no) VALUES (@emp_no);
COMMIT TRAN
GO

並且不能在SQL Server Enterprise Manager下去新增stored Procedured
而要在Query Analyzer (前文提過)

以下是使用到Linked Server必須宣告的:

SET ANSI_NULLS ON
SET ANSI_WARNINGS ON
SET XACT_ABORT ON

(2)Trigger

建立SQL Server的Trigger首先打開SQL Server Enterprise Manager, 選取要建立trigger的table, 按下滑鼠右鑑 ->所有工作 -> 管理觸發程序 (畫面如下)



然後鍵入

CREATE TRIGGER trigger_name ON tableName
FOR INSERT

AS

SET NOCOUNT ON
DECLARE @newSeq_id VARCHAR(10)
SELECT @newSeq_id = (SELECT seq_id FROM Inserted)
UPDATE TableName2 set counter=counter+1 where seq_id = @newSeq_id

以上就是做: 當表格有任何資料插入, 則去另一表格對應欄位去累加

如果如同上面說的, 要運作到遠端的Linked Server, 除了要建立linked server外, 程序要改成:

CREATE TRIGGER trigger_name ON tableName
FOR INSERT

AS


SET ANSI_NULLS ON
SET ANSI_WARNINGS ON
SET NOCOUNT ON
SET XACT_ABORT ON

DECLARE @newSeq_id VARCHAR(10)
SELECT @newSeq_id = (SELECT seq_id FROM Inserted)
UPDATE LinkedServerName.master.dbo.TableName2 set counter=counter+1 where seq_id = @newSeq_id

以上只是大略敘述使用方式, 至於UPDATE/INSERT/DELETE以及更深的T-SQL就要自己再研究啦 ...


標籤: ,

繼續閱讀:台灣搜尋引擎優化與行銷研究院

如何使用MySQL的Stored Procedure與Trigger

MySQL在5.0版後增強了資料庫stored procedure(5.0)與trigger(5.0.2)的功能, 根據MySQL自己的定義:

A stored procedure is a procedure (like a subprogram in a regular computing language) that is stored (in the database).

Correctly speaking, MySQL supports "routines" and there are two kinds of routines: stored procedures or functions.

也就是MySQL支援routines: stored procedure與functions, 而針對table的INSERT/UPDATE/DELETE動作,更加入了trigger


這幾個更新功能讓MySQL更具備大型資料庫的架勢, 以下就來談談如何測試這幾個功能:

(1)Stored Procedure

使用MySQL的stored procedure有幾個方式:

dos command/phpmyadmin/EMS的MySQL Manager

首先以DOS command進入MySQL



接著可以打入 show procedure status; 來看看有無既存的stored procedures



現在我們進入使用test這個database (MySQL預設已經有的資料庫)

use test;
show tables;
desc tbl;

看到了tbl這個表格的結構 ...



現在我們建一個stored procedure

先使用宣告 delimiter 來告訴MySQL結束字元是 //

然後打入以下

Create procedure mytest1()
update tbl set f3=concat(f1,f2);



這樣去呼叫mytest1後, 就把f1,f2兩個字串串起來存到f3了 !

再來建立一個傳變數的stored procedure



(2)Trigger

首先看看表格結構: tbl與tbl2



再來建立trigger, 並看看效果
當有資料插入tbl時, 把f1欄位也插入到tbl2的f1欄位



看看我們剛建入的trigger




因此只要對於SQL有認識, 使用stored procedure與trigger應該不成問題...
但是頭痛的是...MySQL與MS SQL的語法又略有差異, 因此下次也來談談MS SQL, 以及為何要使用stored procedure及trigger ... 待續了

標籤: ,

繼續閱讀:台灣搜尋引擎優化與行銷研究院