2004年12月14日星期二

【转】Oracle函数大全(@tom blog)

转自:http://blog.csdn.net/austinlei/archive/2004/11/08/172955.aspx

SQL中的单记录函数
1.ASCII
返回与指定的字符对应的十进制数;
SQL> select ascii('A') A,ascii('a') a,ascii('0') zero,ascii(' ') space from dual;

A A ZERO SPACE
--------- --------- --------- ---------
65 97 48 32


2.CHR
给出整数,返回对应的字符;
SQL> select chr(54740) zhao,chr(65) chr65 from dual;

ZH C
-- -
赵 A

3.CONCAT
连接两个字符串;
SQL> select concat('010-','88888888')||'转23' 高乾竞电话 from dual;

高乾竞电话
----------------
010-88888888转23

4.INITCAP
返回字符串并将字符串的第一个字母变为大写;
SQL> select initcap('smith') upp from dual;

UPP
-----
Smith


5.INSTR(C1,C2,I,J)
在一个字符串中搜索指定的字符,返回发现指定的字符的位置;
C1 被搜索的字符串
C2 希望搜索的字符串
I 搜索的开始位置,默认为1
J 出现的位置,默认为1
SQL> select instr('oracle traning','ra',1,2) instring from dual;

INSTRING
---------
9


6.LENGTH
返回字符串的长度;
SQL> select name,length(name),addr,length(addr),sal,length(to_char(sal)) from gao.nchar_tst;

NAME LENGTH(NAME) ADDR LENGTH(ADDR) SAL LENGTH(TO_CHAR(SAL))
------ ------------ ---------------- ------------ --------- --------------------
高乾竞 3 北京市海锭区 6 9999.99 7



7.LOWER
返回字符串,并将所有的字符小写
SQL> select lower('AaBbCcDd')AaBbCcDd from dual;

AABBCCDD
--------
aabbccdd


8.UPPER
返回字符串,并将所有的字符大写
SQL> select upper('AaBbCcDd') upper from dual;

UPPER
--------
AABBCCDD



9.RPAD和LPAD(粘贴字符)
RPAD 在列的右边粘贴字符
LPAD 在列的左边粘贴字符
SQL> select lpad(rpad('gao',10,'*'),17,'*')from dual;

LPAD(RPAD('GAO',1
-----------------
*******gao*******
不够字符则用*来填满


10.LTRIM和RTRIM
LTRIM 删除左边出现的字符串
RTRIM 删除右边出现的字符串
SQL> select ltrim(rtrim(' gao qian jing ',' '),' ') from dual;

LTRIM(RTRIM('
-------------
gao qian jing


11.SUBSTR(string,start,count)
取子字符串,从start开始,取count个
SQL> select substr('13088888888',3,8) from dual;

SUBSTR('
--------
08888888


12.REPLACE('string','s1','s2')
string 希望被替换的字符或变量
s1 被替换的字符串
s2 要替换的字符串
SQL> select replace('he love you','he','i') from dual;

REPLACE('H
----------
i love you


13.SOUNDEX
返回一个与给定的字符串读音相同的字符串
SQL> create table table1(xm varchar(8));
SQL> insert into table1 values('weather');
SQL> insert into table1 values('wether');
SQL> insert into table1 values('gao');

SQL> select xm from table1 where soundex(xm)=soundex('weather');

XM
--------
weather
wether


14.TRIM('s' from 'string')
LEADING 剪掉前面的字符
TRAILING 剪掉后面的字符
如果不指定,默认为空格符

15.ABS
返回指定值的绝对值
SQL> select abs(100),abs(-100) from dual;

ABS(100) ABS(-100)
--------- ---------
100 100


16.ACOS
给出反余弦的值
SQL> select acos(-1) from dual;

ACOS(-1)
---------
3.1415927


17.ASIN
给出反正弦的值
SQL> select asin(0.5) from dual;

ASIN(0.5)
---------
.52359878


18.ATAN
返回一个数字的反正切值
SQL> select atan(1) from dual;

ATAN(1)
---------
.78539816


19.CEIL
返回大于或等于给出数字的最小整数
SQL> select ceil(3.1415927) from dual;

CEIL(3.1415927)
---------------
4


20.COS
返回一个给定数字的余弦
SQL> select cos(-3.1415927) from dual;

COS(-3.1415927)
---------------
-1


21.COSH
返回一个数字反余弦值
SQL> select cosh(20) from dual;

COSH(20)
---------
242582598


22.EXP
返回一个数字e的n次方根
SQL> select exp(2),exp(1) from dual;

EXP(2) EXP(1)
--------- ---------
7.3890561 2.7182818


23.FLOOR
对给定的数字取整数
SQL> select floor(2345.67) from dual;

FLOOR(2345.67)
--------------
2345


24.LN
返回一个数字的对数值
SQL> select ln(1),ln(2),ln(2.7182818) from dual;

LN(1) LN(2) LN(2.7182818)
--------- --------- -------------
0 .69314718 .99999999


25.LOG(n1,n2)
返回一个以n1为底n2的对数
SQL> select log(2,1),log(2,4) from dual;

LOG(2,1) LOG(2,4)
--------- ---------
0 2


26.MOD(n1,n2)
返回一个n1除以n2的余数
SQL> select mod(10,3),mod(3,3),mod(2,3) from dual;

MOD(10,3) MOD(3,3) MOD(2,3)
--------- --------- ---------
1 0 2


27.POWER
返回n1的n2次方根
SQL> select power(2,10),power(3,3) from dual;

POWER(2,10) POWER(3,3)
----------- ----------
1024 27


28.ROUND和TRUNC
按照指定的精度进行舍入
SQL> select round(55.5),round(-55.4),trunc(55.5),trunc(-55.5) from dual;

ROUND(55.5) ROUND(-55.4) TRUNC(55.5) TRUNC(-55.5)
----------- ------------ ----------- ------------
56 -55 55 -55


29.SIGN
取数字n的符号,大于0返回1,小于0返回-1,等于0返回0
SQL> select sign(123),sign(-100),sign(0) from dual;

SIGN(123) SIGN(-100) SIGN(0)
--------- ---------- ---------
1 -1 0


30.SIN
返回一个数字的正弦值
SQL> select sin(1.57079) from dual;

SIN(1.57079)
------------
1


31.SIGH
返回双曲正弦的值
SQL> select sin(20),sinh(20) from dual;

SIN(20) SINH(20)
--------- ---------
.91294525 242582598


32.SQRT
返回数字n的根
SQL> select sqrt(64),sqrt(10) from dual;

SQRT(64) SQRT(10)
--------- ---------
8 3.1622777


33.TAN
返回数字的正切值
SQL> select tan(20),tan(10) from dual;

TAN(20) TAN(10)
--------- ---------
2.2371609 .64836083


34.TANH
返回数字n的双曲正切值
SQL> select tanh(20),tan(20) from dual;

TANH(20) TAN(20)
--------- ---------
1 2.2371609



35.TRUNC
按照指定的精度截取一个数
SQL> select trunc(124.1666,-2) trunc1,trunc(124.16666,2) from dual;

TRUNC1 TRUNC(124.16666,2)
--------- ------------------
100 124.16



36.ADD_MONTHS
增加或减去月份
SQL> select to_char(add_months(to_date('199912','yyyymm'),2),'yyyymm') from dual;

TO_CHA
------
200002
SQL> select to_char(add_months(to_date('199912','yyyymm'),-2),'yyyymm') from dual;

TO_CHA
------
199910


37.LAST_DAY
返回日期的最后一天
SQL> select to_char(sysdate,'yyyy.mm.dd'),to_char((sysdate)+1,'yyyy.mm.dd') from dual;

TO_CHAR(SY TO_CHAR((S
---------- ----------
2004.05.09 2004.05.10
SQL> select last_day(sysdate) from dual;

LAST_DAY(S
----------
31-5月 -04


38.MONTHS_BETWEEN(date2,date1)
给出date2-date1的月份
SQL> select months_between('19-12月-1999','19-3月-1999') mon_between from dual;

MON_BETWEEN
-----------
9
SQL>selectmonths_between(to_date('2000.05.20','yyyy.mm.dd'),to_date('2005.05.20','yyyy.mm.dd')) mon_betw from dual;

MON_BETW
---------
-60


39.NEW_TIME(date,'this','that')
给出在this时区=other时区的日期和时间
SQL> select to_char(sysdate,'yyyy.mm.dd hh24:mi:ss') bj_time,to_char(new_time
2 (sysdate,'PDT','GMT'),'yyyy.mm.dd hh24:mi:ss') los_angles from dual;

BJ_TIME LOS_ANGLES
------------------- -------------------
2004.05.09 11:05:32 2004.05.09 18:05:32


40.NEXT_DAY(date,'day')
给出日期date和星期x之后计算下一个星期的日期
SQL> select next_day('18-5月-2001','星期五') next_day from dual;

NEXT_DAY
----------
25-5月 -01



41.SYSDATE
用来得到系统的当前日期
SQL> select to_char(sysdate,'dd-mm-yyyy day') from dual;

TO_CHAR(SYSDATE,'
-----------------
09-05-2004 星期日
trunc(date,fmt)按照给出的要求将日期截断,如果fmt='mi'表示保留分,截断秒
SQL> select to_char(trunc(sysdate,'hh'),'yyyy.mm.dd hh24:mi:ss') hh,
2 to_char(trunc(sysdate,'mi'),'yyyy.mm.dd hh24:mi:ss') hhmm from dual;

HH HHMM
------------------- -------------------
2004.05.09 11:00:00 2004.05.09 11:17:00



42.CHARTOROWID
将字符数据类型转换为ROWID类型
SQL> select rowid,rowidtochar(rowid),ename from scott.emp;

ROWID ROWIDTOCHAR(ROWID) ENAME
------------------ ------------------ ----------
AAAAfKAACAAAAEqAAA AAAAfKAACAAAAEqAAA SMITH
AAAAfKAACAAAAEqAAB AAAAfKAACAAAAEqAAB ALLEN
AAAAfKAACAAAAEqAAC AAAAfKAACAAAAEqAAC WARD
AAAAfKAACAAAAEqAAD AAAAfKAACAAAAEqAAD JONES


43.CONVERT(c,dset,sset)
将源字符串 sset从一个语言字符集转换到另一个目的dset字符集
SQL> select convert('strutz','we8hp','f7dec') "conversion" from dual;

conver
------
strutz


44.HEXTORAW
将一个十六进制构成的字符串转换为二进制


45.RAWTOHEXT
将一个二进制构成的字符串转换为十六进制



46.ROWIDTOCHAR
将ROWID数据类型转换为字符类型



47.TO_CHAR(date,'format')
SQL> select to_char(sysdate,'yyyy/mm/dd hh24:mi:ss') from dual;

TO_CHAR(SYSDATE,'YY
-------------------
2004/05/09 21:14:41



48.TO_DATE(string,'format')
将字符串转化为ORACLE中的一个日期


49.TO_MULTI_BYTE
将字符串中的单字节字符转化为多字节字符
SQL> select to_multi_byte('高') from dual;

TO
--



50.TO_NUMBER
将给出的字符转换为数字
SQL> select to_number('1999') year from dual;

YEAR
---------
1999


51.BFILENAME(dir,file)
指定一个外部二进制文件
SQL>insert into file_tb1 values(bfilename('lob_dir1','image1.gif'));


52.CONVERT('x','desc','source')
将x字段或变量的源source转换为desc
SQL> select sid,serial#,username,decode(command,
2 0,'none',
3 2,'insert',
4 3,
5 'select',
6 6,'update',
7 7,'delete',
8 8,'drop',
9 'other') cmd from v$session where type!='background';

SID SERIAL# USERNAME CMD
--------- --------- ------------------------------ ------
1 1 none
2 1 none
3 1 none
4 1 none
5 1 none
6 1 none
7 1275 none
8 1275 none
9 20 GAO select
10 40 GAO none


53.DUMP(s,fmt,start,length)
DUMP函数以fmt指定的内部数字格式返回一个VARCHAR2类型的值
SQL> col global_name for a30
SQL> col dump_string for a50
SQL> set lin 200
SQL> select global_name,dump(global_name,1017,8,5) dump_string from global_name;

GLOBAL_NAME DUMP_STRING
------------------------------ --------------------------------------------------
ORACLE.WORLD Typ=1 Len=12 CharacterSet=ZHS16GBK: W,O,R,L,D


54.EMPTY_BLOB()和EMPTY_CLOB()
这两个函数都是用来对大数据类型字段进行初始化操作的函数


55.GREATEST
返回一组表达式中的最大值,即比较字符的编码大小.
SQL> select greatest('AA','AB','AC') from dual;

GR
--
AC
SQL> select greatest('啊','安','天') from dual;

GR
--



56.LEAST
返回一组表达式中的最小值
SQL> select least('啊','安','天') from dual;

LE
--



57.UID
返回标识当前用户的唯一整数
SQL> show user
USER 为"GAO"
SQL> select username,user_id from dba_users where user_id=uid;

USERNAME USER_ID
------------------------------ ---------
GAO 25



58.USER
返回当前用户的名字
SQL> select user from dual;

USER
------------------------------
GAO


59.USEREVN
返回当前用户环境的信息,opt可以是:
ENTRYID,SESSIONID,TERMINAL,ISDBA,LABLE,LANGUAGE,CLIENT_INFO,LANG,VSIZE
ISDBA 查看当前用户是否是DBA如果是则返回true
SQL> select userenv('isdba') from dual;

USEREN
------
FALSE
SQL> select userenv('isdba') from dual;

USEREN
------
TRUE
SESSION
返回会话标志
SQL> select userenv('sessionid') from dual;

USERENV('SESSIONID')
--------------------
152
ENTRYID
返回会话人口标志
SQL> select userenv('entryid') from dual;

USERENV('ENTRYID')
------------------
0
INSTANCE
返回当前INSTANCE的标志
SQL> select userenv('instance') from dual;

USERENV('INSTANCE')
-------------------
1
LANGUAGE
返回当前环境变量
SQL> select userenv('language') from dual;

USERENV('LANGUAGE')
----------------------------------------------------
SIMPLIFIED CHINESE_CHINA.ZHS16GBK
LANG
返回当前环境的语言的缩写
SQL> select userenv('lang') from dual;

USERENV('LANG')
----------------------------------------------------
ZHS
TERMINAL
返回用户的终端或机器的标志
SQL> select userenv('terminal') from dual;

USERENV('TERMINA
----------------
GAO
VSIZE(X)
返回X的大小(字节)数
SQL> select vsize(user),user from dual;

VSIZE(USER) USER
----------- ------------------------------
6 SYSTEM



60.AVG(DISTINCT|ALL)
all表示对所有的值求平均值,distinct只对不同的值求平均值
SQLWKS> create table table3(xm varchar(8),sal number(7,2));
语句已处理。
SQLWKS> insert into table3 values('gao',1111.11);
SQLWKS> insert into table3 values('gao',1111.11);
SQLWKS> insert into table3 values('zhu',5555.55);
SQLWKS> commit;

SQL> select avg(distinct sal) from gao.table3;

AVG(DISTINCTSAL)
----------------
3333.33

SQL> select avg(all sal) from gao.table3;

AVG(ALLSAL)
-----------
2592.59


61.MAX(DISTINCT|ALL)
求最大值,ALL表示对所有的值求最大值,DISTINCT表示对不同的值求最大值,相同的只取一次
SQL> select max(distinct sal) from scott.emp;

MAX(DISTINCTSAL)
----------------
5000


62.MIN(DISTINCT|ALL)
求最小值,ALL表示对所有的值求最小值,DISTINCT表示对不同的值求最小值,相同的只取一次
SQL> select min(all sal) from gao.table3;

MIN(ALLSAL)
-----------
1111.11


63.STDDEV(distinct|all)
求标准差,ALL表示对所有的值求标准差,DISTINCT表示只对不同的值求标准差
SQL> select stddev(sal) from scott.emp;

STDDEV(SAL)
-----------
1182.5032

SQL> select stddev(distinct sal) from scott.emp;

STDDEV(DISTINCTSAL)
-------------------
1229.951



64.VARIANCE(DISTINCT|ALL)
求协方差

SQL> select variance(sal) from scott.emp;

VARIANCE(SAL)
-------------
1398313.9


65.GROUP BY
主要用来对一组数进行统计
SQL> select deptno,count(*),sum(sal) from scott.emp group by deptno;

DEPTNO COUNT(*) SUM(SAL)
--------- --------- ---------
10 3 8750
20 5 10875
30 6 9400



66.HAVING
对分组统计再加限制条件
SQL> select deptno,count(*),sum(sal) from scott.emp group by deptno having count(*)>=5;

DEPTNO COUNT(*) SUM(SAL)
--------- --------- ---------
20 5 10875
30 6 9400
SQL> select deptno,count(*),sum(sal) from scott.emp having count(*)>=5 group by deptno ;

DEPTNO COUNT(*) SUM(SAL)
--------- --------- ---------
20 5 10875
30 6 9400


67.ORDER BY
用于对查询到的结果进行排序输出
SQL> select deptno,ename,sal from scott.emp order by deptno,sal desc;

DEPTNO ENAME SAL
--------- ---------- ---------
10 KING 5000
10 CLARK 2450
10 MILLER 1300
20 SCOTT 3000
20 FORD 3000
20 JONES 2975
20 ADAMS 1100
20 SMITH 800
30 BLAKE 2850
30 ALLEN 1600
30 TURNER 1500
30 WARD 1250
30 MARTIN 1250
30 JAMES 950




2004-12-14 11:03:16 Tue

2004年12月8日星期三

阿森纳,重整旗鼓(@tom blog)

自从那场比赛比较窝囊的输给了曼联之后,阿森纳就像一个被打晕头的巨人,跌跌撞撞,失去了往日的自信,也失去了对比赛的掌握。在这个黑色的11月中,以往被连续的胜利所压制的种种问题都暴露了出来,一时间,人们都在哀叹,阿森纳到底怎么啦?
好了,在渡过了尴尬的11月之后,阿森纳终于找到了自己的轨道,重新开始了新的征程。在失去了联赛杯,在联赛落后切儿西5分的情况,阿森纳面临着在冠军联 赛中的背水一战,对手是身体强悍的罗森博格,这是阿森纳比较讨厌的对手类型,好在,枪手们顶住了压力,干净漂亮的赢得了比赛,避免了再被淘汰出冠军杯的尴 嘛。也为周末与切尔西的北伦敦德比战打下了一个好的心理基础。
然而,我们也应该看到,在过去的11月中,温格教练还是暴露了不少的问题,过于依赖主力阵容,给年轻人的机会太少,导致主力过于疲劳,是其中一个重要的问 题。也许,温格是想给年轻人一个循序渐进的成长过程,但是,一直不给年轻人压力,他们又怎么能快速成长那?事实证明,阿森纳的年轻人是能够依赖的。
愿枪手们在新的征程中更强悍!

2004-12-08 11:39:22 Wed

2004年11月22日星期一

【转】Wiki 簡介(@tom blog)

转自:http://ccca.nctu.edu.tw/~hlb/articles/archives/000662.php

前言

我 家 wiki 順利運作超過一個月了,這段期間也看到不少朋友們開始玩起 wiki。我跟朋友們( Schee, ilya, zonble)都寫過一些關於 wiki 的文章,不過我猜大概不少人還是搞不懂這是什麼玩意、可以怎麼玩,而且也沒時間去讀文件。所以我決定寫篇文章介紹一下,讓更多朋友來玩 wiki。
什麼是 wiki?

根 據 wiki 社群的定義,wiki 是一種提供「共同創作(collaborative)」環境的網站,也就是說,每個人都可以任意修改網站上的頁面資料。這聽起來挺瘋狂的,萬一有陌生人來 網站上亂搞怎麼辦?別擔心,所有的 wiki 都有「版本控制(Version Control)」的概念,你隨時都可以找回之前的正確版本;更何況你可不是單打獨鬥,社群的力量是非常驚人的。就在這種相信人性本善的概念下,整個 wiki 社群迅速地成長茁壯。如果你還是很擔心,更可以幫 wiki 加入權限管理(Access Control)的機制,保證萬無一失。除了版本控制之外,值得一題的是「格式化語法(Formating Rule)」。因為對一般人來說,HTML 語法實在是個惡夢,所以 wiki 創造了一套更簡單的寫作語法,讓大家可以專注在寫作上。

wiki 這個字到底是什麼意思呢?根據 FAQ 的說法,wiki-wiki 是夏威夷語裡「快(quick)」的意思。實際上 wiki 也真的是既簡單又快速,你可以看到 wiki 每天都在成長。
wiki 可以怎麼玩?

首 先會想到的當然是共筆系統(例如 FreeBSD 共筆 )、讀書會、專案開發、寫書、翻譯、資料整理(例如網站設計資源)、常見問題整理等等,這些本來就非常適合一群人來做。其次你可以想想怎麼樣來利用版本控 制的功能,例如拿來整理想法(可以時常比對舊版本)、寫作業、記上課筆記等等。甚至有人用 wiki 寫百科全書喔!如果你還想到可以怎麼玩,歡迎告訴我 :)
怎麼安裝 wiki?

現在已經有不少中文資源,可以參考我之前寫的「wiki 經驗談」,你也該先去逛逛 wiki 討論區 的資料。相關資源已經很多了,我在這裡就不多談。
臺灣發展現況

前 些天在聊天室(#elixus)裡跟 clsung 、 hcchien 討論過之後,決定把我這邊大部分資料都轉到 Wikilla 去。雖然也許只是名義上的差別,但是我相信由團體共同維護的 wiki 一定會比「我的後花園」吸引更多人參與。目前我們正在聊天室及 wiki 上討論搬家事宜,也歡迎你參與 :)

另外 evi1c 也剛用 JSPWiki 幫 #bsdchat 聊天室頻道架了個 wiki ,看起來很讚唷!

除此之外,已經有些人開始採用 wiki、或正計劃要採用 wiki 作為公司或組織內部的討論區囉!別再等了,一起來吧! :)
結語

這只是一份簡單的入門指南,別忘了去 Wiki Wiki Web 看看,相信你會因此對 wiki 瞭解得更透徹。
我看 wiki

根 據 Tim Berners-Lie 原本的構想,瀏覽器應該同時具備所見即所得的編輯功能,讓人們透過全球資訊網分享資訊,並直接共同合作。據他所說,W3C 內部很早就使用 Amaya 配上 Jigsaw 來共同維護文件了。我覺得 wiki 就是在這種理念下的妥協性產物,不過 wiki 的作者當時似乎不知道這一點。

延伸閱讀:

* 我的 wiki 觀察報告 ,提供了一些數據資料以及大事記。
* The Wiki Way Review ,再次感謝 Schee 借我這本書。
* wiki 討論區 。關於 wiki 的討論會移到 Wikilla 去,希望大家多多提供資料。
* 一千零一網(原名:Weaving The Web)
* W3C Annotea 專案

2004-11-22 22:27:59 Mon

【转】WIKI呼唤网络时代的共创分享(@tom blog)

互联网络的发展,不仅为知识的互换分享提供了跨越时空的得天独厚的场所,而且近来社会软件的发展,还为知识的共创分享提供了前所未有的协同作业平台,这就是wiki。


WIKI呼唤网络时代的共创分享
作者:庄秀丽 北京师范大学现代化教育技术研究所 博士生

互 联网络信息技术飞速发展所带来的社会变革,不仅体现在我们生活工作方式的改变上,还体现在我们学习认知方式的变化上。社会的发展步伐要求我们必须更加关注 学会学习,而要学会学习,就首先要学会分享,只有在分享的环境和氛围中,学会学习的能力才能更加有效地得到培养和提高。基于知识经济的信息社会,分享互换 知识跟工业社会的物质互换孑然不同。在工业社会,A与B互换某件物品,就意味着A不再拥有这件物品。而当知识进行分享互换时,互换分享的双方不再是失去的 关系,而是分享双方知识的叠加、递增关系,甚至是集思广益碰撞产生火花的突破创新关系。互联网络的发展,不仅为知识的互换分享提供了跨越时空的得天独厚的 场所,而且近来社会软件的发展,还为知识的共创分享提供了前所未有的协同作业平台,这就是wiki。


一.Wiki概述

Wiki 的历史并不很长,早在1995年,在PUCC(Purdue University Computing Center)工作的Ward Cunningham为了方便模式社群的交流建而建立了一个工具叫波特兰模式知识库(Portland Pattern Repository)。在建立这个系统的过程中,Ward Cunningham创造了Wiki的概念和名称(WikiWiki一词来源于夏威夷语的 "wee kee wee kee" ,英文就是“quick”,中文就是“迅速”的意思。),并且实现了支持这些概念的服务系统,这就是最早的Wiki系统。
从1996年至2000年间,波特兰模式知识库围绕着面向社群的协作式写作,不断发展出一些支持这种写作的辅助工具,从而使Wiki的概念不断得到丰富和传播,并在网络空间出现了许多类似的网站和软件系统,其中最有名的就是Wikipedia(中文版为“维基百科”)。
作 为面向社群的协作创作系统,wiki提供了基于web的形式超链结构,可以对编辑内容进行浏览、创建、更改。wiki通过对不同版本内容的有效控制管理, 来支持网络的面向社群的协作式共同创作活动,wiki简单易用,有效打破了网络上信息技术人员垄断信息管理的更新维护发布工作的局面,使得基于wiki创 作的自组织社群更容易形成和发展。
基于wiki的共创分享的应用非常多,下面重点介绍最出名的Wikipedia(维基百科)后,再集中给出其它的多种应用情境。

二.wikipedia / 维基百科

台 湾著名的资讯作家邹景平女士2003年4月在其“elearning心法102讲——Wikipedia揭示知识协作的新里程碑”中写道“最近网络上让我 大为叹服的一件事,就是Wikipedia(http://en.wikipedia.org/),它是由一群热心网友合写的百科全书,目前还在成长中, 它鼓励所有人参与,它最宝贵的精神是平等,没有人有特权,任何人都有权利修改其中内容,只要你觉得可把内容润饰得更好,马上就可动手修改,当然若有人觉得 不妥,也可再把它改回来,Wikipedia不怕别人修改,因为所有的修改纪录都保存下来,不但可事后查验,也能追踪、回复至本来面目。”
Wikipedia 是一个正在进行中的国际性的内容开放的百科全书协作计划,这个协作计划的特点是人人都可以参与。Wikipedia最初的构想是Larry Sanger(以前Nupedia电子百科全书计划的主编)于2001年1月2日在和电脑程序员Ben Kovitz一次谈话中产生,当Ben Kovitz在晚餐中向Sanger解释wiki的概念时,Sanger立即发现wiki可能是创建一个更开放的百科全书计划的技术。 于是英文版本Wikipedia(http://en.wikipedia.org/)最初就于2001年1月15日开始了,而中文版Wikipedia (http://zh.wikipedia.org/)则开始于2002年10月底。到2003年1月22日,英语Wikipedia达到了 100,000条条目的里程碑,而到 2003年11月21日中文维基百科突破了3000条条目。整个Wikipedia/维基百科全计划中没有所谓的主编,Wikipedia/维基百科完全 由全球无数志愿学者、玩家、学生等等有知识的人共同建筑。
由于Wikipedia/维基百科良好发展和迅速成长,2002年12月,兄弟计划 Wiktionary也正式开始,它的宗旨是建立一个所有语言的词典。它与维基百科在同一个服务器上运行,使用同样的软件。 在后来的发展中还启动了维基教科书计划(http://wikibooks.org/),维基资源计划(http: //sources.wikipedia.org/),维基语录计划(http://quote.wikipedia.org/)。所有这一切的蓬勃发展 说明了wiki——共创分享的强大生命力。
Wikipedia/维基百科本身作为开放共创分享的百科全书的创作,有着与传统百科全书不同的地方, 它力图通过大众的参与,创设一个包含人类所有知识领域的百科全书,它还是一部内容开放的百科全书,其内容开放的材料允许任何第三方不受限制地复制、修改及 再发布材料的任何部分或全部。

三.Wiki案例

关于wiki的应用案例非常多,而且涉及到各种各样的应用情境,除最常用 的主题知识拓展创作共享,还有应用于作为共创资源的目录索引,进行学术课题研究,拓展传统会议研讨主题,另外wiki还被用在编写个人简历,产品的FAQ 文档等等。关于wiki的应用案例,在此只是列举几个以起抛砖引玉作用。
1.基于主题的协作共创
基于主题的协作共创是wiki最常见的一种应用情境,比如“中文weblog百科全书”(http://www.cnblog.org/wiki/)就是非常典型的网络社群共同参与的共享创作,只有善于分享,才能习得更多。
Social Software Alliance Wiki(http://www.socialtext.net/ssa/index.cgi)是国外的一个基于主题的协作共创wiki,其探讨主题就是 关于社会性软件(social software)发展,wiki本身也属于社会软件的一种。
2.共建资源的目录索引
BlogLink( http://blogs.51.net/pmwiki/pmwiki.php/Main/BlogLink)是用wiki创作的一个关于blog的链接 目录索引。其页面写道“中文Blog日益增多,和我相互链接的Blog的数目也在见涨,看着首页面上越来越长的Blog列表,心里想找个好的链接解决方 式。在观察了众多Blogger的链接方案之后,最终决定采用这个Wiki页面。一来链接的数目不受限制,二来,可以让有意者自己动手添加链接”。由此可 见应用wiki的价值所在。
3.学术课题研究
上海中医药大学针灸推拿学院文献室暨教育技术研究室主任徐平教授的“针灸研究和教学 ”(http://61.129.75.54/zhenjiu/grass/wiki/default.asp?p=针灸研究和教学)是我国率先利用 wiki师生一起进行国家课题的研究和内容共创。
中国科学院国家科学数字图书馆也利用wiki作为课题研究共创分享信息的一个平台,见http://159.226.100.132/pmwiki/pmwiki.php。
4.传统会议的内容拓展
2003 年10月上旬,由美国国防部高级分布式学习实验室(Academic ADL Co-Lab)组织举行了关于“学习对象“的高峰会(http: //www.academiccolab.org/events/oct78.html),有别于传统会议的组织及会议电子文稿的共享,这次会议特别利用 wiki来对会议主题进行了内容的拓展(http: //www.academiccolab.org/projects/repositories/community/wiki/index.php?page =LearningRepositoryCommunity)。
同样在国内,中国科学院文献情报中心在2003年11月份的学术研讨会,也采用了 wiki来进行会议内容的共享和主题的拓展(http://mylibrary.csdl.ac.cn/oddmuse/wiki.pl)。所有这些应用 和尝试,大大提升了传统会议的效果和价值。

四.Wiki行动

参与wiki的内容共创分享的方式有多种,可以选择自己感兴 趣的网站主题,在学习分享知识的过程中,将自己了解的知识添加进去。Wiki的使用非常简单,只要在页面上找到类似“编辑本页”的字眼,点击就可以进行编 辑书写,写完按保存就完成了一次知识共创分享的活动。另外还有一种方式,可以自己架设wiki服务平台系统,创设主题,然后再逐步形成一个虚拟社群,进行 知识的共创分享。
有关wiki的安装软件有多种,常用见的有使用perl语言开发无需另外安装数据库的Oddmuse;还有用php语言开发,可 以进行页面存取权限控制的pmwiki;另外在线教育资讯网(http://www.online-edu.org/)秦宇站长的个人网站(http: //www.qinyu.net/)上提供了将Blog和Wiki整合在一起的汉化的安装包。

五.小结

Wiki的迅速发 展跟其使用方便、自组织、开放等特性密切相关。另一方面,在wiki这样共创分享的数字化协同作业内容创作模式刚刚起步之后,有很多问题值得我们进一步深 思和研究,如网络资源内容的数字版权问题,内容创作过程的人的品格问题。由于wiki是一种完全开发的共同创作共享的协同环境,使得每一个人都能参与共享 的创作过程中,那么丰满的数字内容也有可能毁于那些恶作剧的人之手。当我们生活在网络空间时,我们需要随时反省自我的行为,因为我们时刻在与别人互动。
wiki不仅是一个内容共创平台,wiki还呼唤着培育网络空间奉献分享的精神和优秀的数字人生品格的形成。

参考文献
1. http://blogbus.com/blogbus/blog/diary.php?diaryid=8968
2. http://zh.wikipedia.org/
3. http://wiki.3382.net/
4. http://c2.com/cgi/wiki?WikiWikiWeb
5. http://zh.wikipedia.org/
6. http://wiki.newzilla.org/
7. http://www.cnic.org/
8. http://www.artima.com/intv/wiki.html
9. http://www.online-edu.org/member/article/538.html


2004-11-22 18:30:02 Mon

【转】测试跟踪工具Bugzilla介绍(@tom blog)

转自:http://221.4.148.118/testmanager/testmanager_pro/testmanager_24.htm

测试跟踪工具Bugzilla介绍

徐异婕
   也许你还没有看到一个错误管理系统所具有的价值;也许你正被大量的测试数据所淹没,而迫切的需要一个产品缺陷的记录及跟踪的好帮手;也许你正在通过如: 电子表格、数据库等各种方式来不断的开发和完善一个错误跟踪系统。Mozilla公司向我们提供了一个共享的免费工具Buzilla.作为一个产品缺陷的 记录及跟踪工具,它能够为你建立一个完善的Bug跟踪体系,包括报告Bug、查询Bug记录并产生报表、处理解决、管理员系统初始化和设置四部分。并具有 如下特点:
  1。基于Web方式,安装简单、运行方便快捷、管理安全。
  2。有利于缺陷的清楚传达。本系统使用数据库进行管理,提供 全面详尽的报告输入项,产生标准化的Bug报告。 提供大量的分析选项和强大的查询匹配能力,能根据各种条件组合进行Bug统计。当错误在它的生命周期中变化时,开发人员、测试人员、及管理人员将及时获得 动态的变化信息,允许你获取历史纪录,并在检查错误的状态时参考这一记录。
  3。系统灵活,强大的可配置能力。Buzilla工具可以对软件产 品设定不同的模块,并针对不同的模块设定制定的开发人员和测试人员;这样可以实现提交报告时自动发给指定的责任人;并可设定不同的小组,权限也可划分。设 定不同的用户对Bug记录的操作权限不同,可有效控制进行管理。允许设定不同的严重程度和优先级可以在错误的生命其中管理错误,从最初的报告到最后的解 决,确保了错误不会被忽略,同时可以使注意力集中在优先级和严重程度高的错误上。
  4。自动发送Email,通知相关人员。根据设定的不同责任人,自动发送最新的动态信息,有效的帮助测试人员和开发人员进行沟通。
  下面我们将按照Bugzilla的操作说明、 Bugzilla管理员的操作指南两部分来说明这个工具的具体使用。本文有不少观点来自个人使用心得,有不妥之处,敬请斧正。
Bugzilla操作说明
1、 用户登录及设置
1.1用户登录
  1. 用户输入服务器地址http://192.168.1.6/bugzilla/。
  2. 进入主页面后,点击【Forget the currently stored login】,再点击【login in】进入。
  3. 进入注册页面,输入用户名和密码即可登录。用户名为Email 地址,初始密码为用户名缩写。
  4. 如忘记密码,输入用户名,点击【submit request】,根据收到的邮件进行重新设置。
1.2、修改密码及设置
  1.Login登录后,【Edit prefs】->【accout settings】 进行密码修改。
  2.【Edit prefs】->【email settings】 进行邮件设置。
  3.【Edit prefs】-> 【permissions】 进行权限查询
2、Bug的处理过程
2.1、报告Bug
2.1.1测试人员报告Bug
  1. 请先进行查询,确认要提交的bug报告不会在原有纪录中存在,若已经存在,不要提交,若有什么建议,可在原有纪录中增加注释,告知其属主,让bug的属主看到这个而自己去修改。
  2. 若Bug不存在,创建一份有效的bug报告后进行提交。
  3. 操作:点击New,选择产品后,填写下表。
  4. 填表注意:Assigned to: 为空则默认为设定的 owner, 也可手工制定。CC: 可为多人,需用","隔开。Desription中要详细说明下列情况:
  1) 发现问题的步骤
  2) 执行上述步骤后出现的情况。
  3) 期望应出现的正确结果。
  选择group设置限定此bug对组的权限,若为空,则为公开。
  5. 操作结果:Bug状态(status)可以选择Initial state 为New或Unconfirmed.
  系统将自动通过Email通知项目组长或直接通知开发者。
  6.帮助: Bug writing guidelines
2.1.2 开发人员报告Bug.
  1. 具体方法同测试人员报告。
  2. 区别: Bug初始状态将自动设为Unconfirmed,待测试人员确定后变为“New".
2.2、Bug的不同处理情况
2.2.1 Bug的属主 (owner) 处理问题后,提出解决意见及方法。
  1 . 给出解决方法并填写Additional Comments,还可创建附件(如:更改提交单)
  2.具体操作(填表项如下)
  3 . 填表注意:
  FIXED 描述的问题已经修改
  INVALID 描述的问题不是一个bug (输入错误后,通过此项来取消)
  WONTFIX 描述的问题将永远不会被修复。
  LATER 描述的问题将不会在产品的这个版本中解决.
  DUPLICATE 描述的问题是一个存在的bug的复件。
  WORKSFORME 所有要重新产生这个bug的企图是无效的。如果有更多的信息出现,请重新分配这个bug,而现在只把它归档。
2.2.2 项目组长或开发者重新指定Bug的属主。(owner)
  1. 为此bug不属于自己的范围,可置为 Assigned,等待测试人员重新指定。
  2. 为此bug不属于自己的范围,但知道谁应该负责,直接输入被指定人的Email, 进行Ressigned。
  3. 操作:(可选项如下)
  * Accept bug (change status to ASSIGNED)
  * Reassign bug to
  * Reassign bug to owner and QA contact of selected component
  4. 操作结果:此时bug状态又变为New,此bug的owner变为被指定的人。
2.2.3测试人员验证已修改的 Bug.
  1. 测试人员查询开发者已修改的bug,即Status为"Resolved",Resolution为"Fixed".进行重新测试。(可创建test case附件)
  2. 经验证无误后,修改Resolution为VERIFIED。待整个产品发布后,修改为CLOSED。
  若还有问题,REOPENED,状态重新变为“New",并发邮件通知。
  3. 具体操作(可选择项)
   1. Leave as RESOLVED FIXED
   2. Reopen bug
   3. Mark bug as VERIFIED
   4. Mark bug as CLOSED
2.2.4 Bug报告者(reporter)或其他有权限的用户修改及补充Bug
  1. 可以修改Bug的各项内容。
  2. 可以增加建立附件,增加了相关性, 并加一些评论来解释你正在做些什么和你为什么做。
  3. 操作结果:每当一些人修改了bug报告或加了一个评论,他们将会被加到CC列表中,bug报告中的改变会显在要发给属主、写报告者和CC列表中的人的电子邮件中。
2.2.5测试人员确认开发人员报告的Bug是否存在.
  1. 查询状态为“Unconfirmed"的Bug,
  2. 测试人员对开发人员提交的Bug进行确认,确认Bug存在。
  3. 具体操作:选中“Confirm bug(change status to New)"后,进行commit.
  4. 操作结果:状态变为“New".
2.3、查询Bug
  1.直接输入Bug Id,点击find 查询。可以查看Bug的活动纪录。
  2.点击Query,输入条件进行查询。
  3.查询Bug活动的历史
  4.产生报表。
  5.帮助:点击Clue.
3、关于权限的说明
  1. 组内成员对bug具有查询的权利,但不能进行修改。
  2. Bug的owner 和 reporter 具有修改的权利。
  3. 具有特殊权限的用户具有修改的权利。
4、 BUG处理流程
  1. 测试人员或开发人员发现bug后,判断属于哪个模块的问题,填写bug报告后,通过Email通知项目组长或直接通知开发者。
  2. 项目组长根据具体情况,重新reassigned分配给bug所属的开发者。
  3. 开发者收到Email信息后,判断是否为自己的修改范围.
  1) 若不是,重新reassigned分配给项目组长或应该分配的开发者。
  2) 若是,进行处理,resolved并给出解决方法。(可创建补丁附件及补充说明)
  4. 测试人员查询开发者已修改的bug,进行重新测试。(可创建test case附件)
  1) 经验证无误后,修改状态为VERIFIED。待整个产品发布后,修改为CLOSED。
  2) 还有问题,REOPENED,状态重新变为“New",并发邮件通知。
  5. 如果这个BUG一周内一直没被处理过。Bugzilla就会一直用email骚扰它的属主,直到采取行动。
5、一个Bug的生存周期

Bugzilla管理员操作指南
1、主要工作内容:
1. 1产品(Product)、版本号(versions)和模块(Components)的定义,同时指定模块相应的开发者(owner)和测试人员(QA Contact)。
1.2小组的定义和划分
1.3测试中Bug严重程度、优先级的定义
1. 4增加用户,并分别设定全部用户的分组、权限。
1. 5主要参数(parameters)的设置
  1) urlbase: 输入bugzilla 工具所在的服务器IP地址。
  2) usebuggroupsentry: 设为ON,可以分组。
  3) whinedays:Bug在whinedays设定的期限内若未被处理,将自动重发mail,默认为7天。
  4) defaultpriority:设定默认的优先级
  5) commentonresolve:设为ON,系统将强制要求开发者处理完Bug 后,必须填写修改的内容。
2、基本操作:
2.1创建默认的管理员用户。
  运行checksetup.pl。若不小心删除管理员,重新运行checksetup.pl.
2.2 管理用户
2.1 增加新用户
  点击页面右下角【users】,submit后,出现【Add new user】页面。输入相应输入即可。Login name: 一般为邮件地址,可以设为其他标识。
2.2 禁止一个用户
  填写Disabled text 输入框即可。
2.3 修改用户
  可以修改用户注册名、密码。
  设置权限
  QA的权限一般设为: Canconfirm, editbugs
  Developer的权限设为: none
  分组控制:group
3、管理group
3.1.增加group
  edit groupàadd groups (New User Regexp可不填/active 选择则可选)->add
3.2修改group ,submit 即可。
  4、管理Product 和 component
  a)增加Product
  b) Component 对应一个owner(进行fixed),QA Contact(确保已fixed)
  c) Component Number of Unconfirmed =10000,此产品将选择bug的初始状态(Unconfirmed,New)

2004-11-22 18:20:45 Mon

2004年11月16日星期二

Eclipse及其插件主要网址(@tom blog)

说明:资料收集,感谢网上众多同仁的奉献

Eclipse官方网站:
http://www.eclipse.org/
不用过多说明,要看Eclipse的最新发展,就到这里吧。

插件网站:
http://www.eclipse-plugins.info/eclipse/index.jsp
Eclipse 正牌插件专门网站,有插件分类,top rated统计,以及用户反馈信息。 这些足够你少走弯路,最快地找到最好胜的插件了。(说明引用自网上)

Lomboz:
http://forge.objectweb.org/projects/lomboz
J2EE 开发中用得最火的插件,关键是更新速度很快,基本上 eclipse IDE 有新版本,几天之内他就可以 release 版本。新版本功能也改进不少,现在也可以直接在 JSP 中显示标签的提示了,甚至语法错误提示。(我一直用这个)
随 着eclipse的发展,现在的LOMBOZ插件越来越大了。但是速度成了主要的问题。和Myeclipse、IBM的Eclipse Web Tools Platform相比,LOMBOZ的技术有点落后了。Myeclipse是把整个项目的JSP先编译了,而IBM也是第一次把所有的JSP加入索引。虽 然每次打开的时候,也慢一些,但是并不随着工程的变大,而出现速度成反比的现象。现在用lomboz 打开一个大的项目中的JSP文件的话,一般人已经受不了它的速度了。(说明引用自网上)

Struts Console:
http://www.jamesholmes.com/struts/console/
最 老牌的 Struts 插件了,支持的平台很多。同时支持eclipse2.1和3.0!!!而且一直在维护更新。我还是认为它是最好用的 Struts 插件。新版本也支持 Eclipse IDE 的最新版本。其实对于 Struts 关键是完善地支持配置文件地图形化就够了,其他关系不大。这个东东对Struts配置文件支持得很完善。另外他也可以相对独立地作为一个程序运行,我现在 是这种方式在用它。


2004-11-16 22:55:49 Tue

2004年11月2日星期二

【转】中国四大神兽的由来!(@lilybbs blog)

中国四大神兽的由来!

我国古代的天文学家位了观测天象,而去了解日月星辰在天空中運行的情況,在黃道赤道附近,先后选择了二十八个星宿做为观测点。   這二十八個星宿,被称为「二十八星宿」,也是古代划分天区的标准。

二十八星宿按照東、西、南、北四個方位,分为四组 

(1)東方苍龙七宿

(2)北方玄武七宿

(3)西方白虎七宿

(4)南方朱雀七宿

这四方神在古代曾被利用与军队阵列,战国时代便有「前朱雀后玄武,左青龍右白虎」的说法,道教兴起之后,青龍、朱雀、白虎、玄武成为道教的守护神。

东方青龙

关于龙的传说有很多,龙的出处也有很多的说法,有的说是由印度传入的、有的说是中国星宿变成。印度本身是在龙神的说法的,但龙在印度的地位是不高的,也是有实物的-蟒蛇。
在五行学说盛行的年代里,慢慢的也开始流传着有关青龙的故事;五行家们照着阴阳五行给东南西北中配上五种颜色,而每种颜色又配上一个神兽与一个神灵;东为青色,配龙,西为白色,配虎,南为朱色,配雀,北为黑色,配武,黄为中央正色。
   在四方的神灵中,根据山海经的说法,「南方祝融,兽身人面,乘两龙。」;「西方蓐收,左耳有蛇,乘两龙。」;「东方有句芒,身鸟人面,乘两龙。」; 「北方禺疆,黑身手足,乘两龙。」,比较有趣的一点是,在山海经中的龙都是用骑乘的,而跟他同类的蛇则都是被或握或操或绕颈,显示出两者的不同来;不过在 五方的五神却跟四方的四神不大一样,这里就不再详述了。朱雀、玄武(黑色的龟蛇,武是龟蛇之意)、青龙、白虎又分别代表了四方的二十八宿,龙是东方的七宿 ﹣﹣角、亢、氐、房、心、尾、箕,而这七宿的形状又极似龙形,从他们的字义上就可以看出来,角是龙的角,亢是颈项,氐是本,而是颈根,房是膀,是胁,心是 心脏,尾是尾,箕是尾末。
还有在龙心的部分,有人称之为「大火」的,跟晴雨有关,又因为青龙属木,所以也是木星当年的年太岁。而在道教兴起之后, 这些四灵也被冠上了人名,便于人类 称呼,青龙叫「孟章」,白虎叫「监兵」,朱雀称「陵光」,玄武为「执明」,而在众多的朝代中也有一些君主取青龙来做自己的年号,如三国的魏明帝就是一例, 而史记中也有关于夏朝是属于木德的朝代,所以他有「青龙生于郊」的祥瑞之兆的记载。
在古时后的中国,头有角的为公龙;双角的称为龙,单角的称蛟;无角的为螭,古时玉佩常有大小双龙,仍称母子螭;龙的地位远高于印度。因在中国龙是神物、是至高无上的,也是皇帝的象征。也是东方的代表、五行中是属木的,也因青色是属木的,故此有左青龙、右白虎的说法。
星宿的是用廿八星宿中,东方七宿-角、亢、氐、房、心、尾、箕,古人把它们想象成为龙的形象,因位于东方,按阴阳五行给五方配色之说,东方色青,故名「青龙」。  

而民间又有龙性淫旳说法,和牛交时生麒麟、和猪交时生象。
又有龙生九子,都不像龙的说法,是这样的:  
大儿是叫囚牛:它平身喜爱音乐,故常立在琴头上。如汉族的胡琴,白族的三弦琴等。而蒙古的马头琴也可能是囚牛的变种。  
二儿子是睚毗:它平身爱杀所以多被安在兵器上,用以威摄敌军。同时又用在仪仗上,以显得更加威严。  
三儿是嘲风:是只兽形龙,样子有点像狗,它善于瞭望,故多安在殿角上。据说可以威摄妖魔、消灭灾祸。 
第四儿是蒲牢:喜欢吼叫,人们就把它安在钟上,大多是蒲牢的形象。据说它是住在海滨的,但却十分怕鲸鱼,一但鲸鱼发起攻击,它就会吓得乱叫。故人们把木杵造成鲸的形状,以令铜钟格外

北方玄武
玄武是一种由龟和蛇组合成的一种灵物。玄武的本意就是玄冥,武、冥古音是相通的。武,是黑的意思;冥,就是阴的意思。玄冥起初是对龟卜的形容:龟背是黑色 的,龟卜就是请龟到冥间去诣问袓先,将答案带回来,以卜兆的形式显给世人。因此,最早的玄武就是乌龟。以后,玄冥的含义不断地扩大。龟生活在江河湖海(包 括海龟),因而玄冥成了水神;乌龟长寿,玄冥成了长生不老的象征;最初的冥间在北方,殷商的甲骨占卜即「其卜必北向」,所以玄冥又成了北方神。
  它和其它三灵一样,玄武也由天下二十八星宿变成的:斗、牛、女、虚、危、室、壁。
  而古时后的人对玄武牠的解释有以下的数种,「玄武」即龟。《礼记.曲礼上》云:「行,前朱鸟而后玄武...」「玄武」乃龟蛇。《楚辞.远游》洪兴祖补注:「玄武,谓龟蛇。位在北方,故曰玄。身有鳞甲,故曰武。「玄武」为蛇合体、龟与蛇交。
  《文选》卷十五张衡《思玄赋》曰:「玄武宿于壳中兮,腾蛇蜿蜒而自纠。」李善注云:「龟与蛇交曰玄武。」《后汉书.王梁传》:「《赤伏符》曰:「王梁 主衡作玄武。」」李贤注云:「亡武,北方之神,龟蛇合体。」「玄武」为水神、北方之神。《后汉书.王梁传》:「玄武,水神之名。」《重修纬书集成》卷六 <河图帝览嬉>:「北方玄武所生,...镇北方,主风雨。」
  但玄武被后世的道士们升级做北方的大帝﹁真武大帝﹂。有别于其它三灵。其它的青龙和白虎,只做了山庙的门神,而朱鸟就成了又天玄女。
  玄武在宋代身价培增,并被人格化。这与宋代各帝推波助澜分不开。宋初太祖时,即有真武、天蓬等为天之大将的传说。未真宗天禧元年,在军营中发生了一件 事。在《事物纪原》卷七载:「营卒有见蛇者,军士因其建真武堂。二年闰四月,泉涌堂侧,汲不竭,民疾疫者,饮之多愈。」真宗听说此事,下诏就地建观,赐名 「祥源」。这大约是中国最早的真武庙。
  真武大帝的身世,后人多说是在隋炀帝时,玉帝将自己的三魂之一,化身投胎于挣乐国皇后,厌恶尘世,舍位入武当山上修行,成功飞升,镇守北方,号曰:玄武。

西方白虎
在中国四圣兽中,另外一个常常跟龙相提并论的就是「白虎」;虎,为百兽之长,牠的威猛和传说中降服鬼物的能力,使得牠也变成了属阳的神兽,常常跟着龙一起出动,「云从龙,风从虎」成为降服鬼物的一对最佳拍档。
  而白虎也是战神、杀伐之神。白虎具有避邪、禳灾、祈丰及惩恶的扬善、发财致富、喜结良缘等多种神力。而它是四灵之一,当然也是由星宿变成的。是由二十 八星宿之中,位西方七宿:奎、娄、胃、昂、毕、觜、参。所以是西方的代表,而它的白,是因是西方,西方在五行中属金,色是白的。所以它叫白虎不是因它是白 色,而是从五行中说的了。

  除了道教中的四灵包括了青龙白虎之外,连在风水师探勘墓地时,在地形前方左右两边突起的地形,可以当作墓穴的地方,都有独特的称号,称之左青龙、右白 虎,取其护卫之意,而在公堂中也有相同的装饰,在左右堂柱上绘有青龙百虎,以其镇压邪灵。而在道教兴起之后,龙虎被借用为道家炼丹的术语,就是指"铅汞、 坎离、水火、阴阳",等的同意词。而道家炼丹分内外(内丹炼气,外丹炼丹药,笔者才疏学浅不敢十分确定),内丹是就阴阳五行而言,龙阳,生于离,离属火, 故云「龙从火里出」,虎阴,生于坎,坎属水,故云「虎向水边生」,两者结合之后,一阴一阳,互相调和,称为道本,都是元神、元精的代表。而另外一种说法 是,性属木,木代表东方,于卦为震,故比为青龙;情属金,金代表西方,于卦为兑,金白色,故喻为白虎。金能够克木,故情多损性,而用二八之真精气,使之交 合为一,则金木无间,龙虎自伏而成丹,在人体中则以肝为龙、肾为虎,而外丹则仍取阴阳之意,以龙为铅,虎为汞。
  在古人心目中,老虎是可怕的东西,又是可敬的东西。可怕的是,它会食人畜。而可敬的是因其威猛无比,能够避邪。而在一些古书中,如东汉.应劭的《风俗 通义.祀典》:「画虎于门,鬼不敢入」,「虎者,阳物,百兽之长也。能执抟挫锐,噬食鬼魅。今人卒得恶遇,烧虎皮饮之。击其爪,亦能辟恶。此其验也。」古 人还认为白虎是一种祥瑞:「德至鸟兽。」
  最初的西天星神是熊和猫头鹰,但后因古羌族的图腾在由熊变为龙的时候。而又到黄帝的向东发展时,龙的图腾被带到东方,跟「东方苍龙星座」合而为一,朱 鸟则成了统一南方时凤图腾在天国的新居,因两大部族融合而终于成「龙凤呈祥」。作为古代图腾是东凤而西龙,作为星象则是东苍龙而西朱鸟。到周朝以后,封建 制度正式确立,五行思想也成熟,把天像重新划分,朱鸟放到了南方,和祝融火神一起崇拜了。而西方的就崇拜白虎。在部族斗争及迁移,西北方的龙向东移,东方 的凤向南移,南方的虎向北移,全国显示一个大周转的观念运动。到汉代五行观念成了统一的思想,再补出玄武完成「四方之神」的配套。
  在古时《史记.天宫书》「东宫苍龙、南方朱鸟、西宫咸池、北宫玄武。」在这里的不是白虎,而是咸池。而咸池是主五谷的星,主秋季,因五谷是在秋天有收 成的,所以就把它放在秋季,但它不是动物,如何能和龙、鸟、龟配成四灵呢?在《正义》:「咸池三星在五车中,天演南,鱼鸟所扥也。」所以在宋代己提出质 疑:「苍龙、朱鸟、玄武、各总七宿而言之。至于咸池,则别一星,自在二十八宿之外。咸池还有一个解释,就是太阳洗浴之所。在《淮南子.天文篇》:「日出于 旸谷,浴于咸池,拂于扶桑,是谓晨明」。
可见咸池原是羌人视为日出之处,咸池也就是咸水湖,应是岷山地区的芋个湖泊,或是青海。由此可证明原始人所崇拜的星宫天象尚没有青龙白虎的观念。在《礼记.礼运》所谓:「麟凤龟龙,谓之四灵。」把不属于动物的咸池换成麒麟。后世有四灵有麟、四象有虎的习惯。
  又由于白虎是战伐之神,所以有多位的猛将被说成为白虎星充扥世的,如:唐代大将罗成、薛仁贵父子等人。除此之外,白虎又被道教吸放,被神化起来,成为了各庙宇的门神。

南方朱雀
朱雀又可说是凤凰或玄鸟。朱雀是四灵之一,也和其它三种一样,它是出自星宿的,是南方七宿的总称:井、鬼、柳、星、张、翼、轸。联想起来就是朱雀了。朱为赤色,像火,南方属火,故名凤凰。它也有从火里重身的特性,和西方的不死鸟一样,故又叫火凤凰。
在古籍的记载中凤是一种美丽的鸟类,而以牠的歌声与仪态为百鸟之王,牠能给人间带来祥瑞,同时也拥有「非梧桐不栖,非竹实不食,非醴泉不饮」的特殊灵性, 而由于牠是「羽虫」之长,所以和「鳞虫」之长的龙在传说中就渐渐成了一对,一个变化多端,一个德性美好,就成了民俗中相辅相成的一对,更由于龙象征着至 阳,而原来也有阴阳之分的凤(凤为雄,雌为凰)在跟龙相对之后就渐渐的成为纯阴的代表了。
而凤凰它的原形有很多种。如锦鸡、孔雀、鹰鹫、鹄、玄鸟(燕子)等等...又有说是佛教大鹏金翅鸟变成的。凤凰神话中说的凤凰是有鸡的脑袋、燕子的下巴、蛇的颈、鱼的尾、有五色纹。又请凤是有五种品种,以颜色来分的:红是凤、青则是鸾鸟、白是天鹅、另有黄和紫的。
而玄鸟的说法就是从《诗经.商颂.玄鸟》说:「天命玄鸟、降而生商、它殷土芒芒。古帝命武汤、正域彼四方。」中,就是殷商说的后代说自己的先袓-契是由玄 鸟生下来的,建立强大的商朝。因此玄鸟就成了商人的始袓了。《史记.殷本记》也记了这段历史:「殷契、母曰简狄,有绒氐之女,为帝喾次妃......三人 行浴,见玄鸟随其卵,简狄取而吞之,因孕生契。」
除了殷商之外,战国时的秦,满清的始袓和朝鲜新罗的始袓也是和仙女吞食玄鸟卵有关的。
不论玄鸟或是凤凰,都是随道教的发展,而把它由一只雀鸟,或孔雀或山鸡等等...先变成一个半人半禽的、传人兵法的仙女到完全是人的仙女,都是随道教的发展的。


Nov 2 18:23:04 2004

2004年10月25日星期一

阿森纳输了,sigh(@lilybbs blog)

虽然知道迟早会有这么一天的,但是以这样的一种方式输球,的确还是有所不甘。

应该说,今天阿森纳的状态的确不是很好,维埃拉、亨利、冰王子、永贝里等人的状态都不甚好,加上大雨之中似乎不大利于阿森纳的发挥,总体发挥不好也在情理 之中,毕竟周三的冠军杯比赛也耗费了球队的一定的精力。总之,一段历史的结束,同时也是另外一段历史的开始,希望阿森纳再放下不败的包袱之后,能开始一段 新的传奇。

不想评价曼联球员的表现,不过估计有位新星会成为流星,场内假摔,场外嫖妓。

不得不说说裁判,时松时紧的表现,关键性点球的判罚,毁掉了一场本应该精彩的比赛。

愿上帝保佑枪手!

Oct 25 01:11:31 2004

2004年10月17日星期日

今天看到地铁试车了(@lilybbs blog)

中华门外的高架上,刚好坐公交路过的时候看到了。

Oct 17 17:08:48 2004

九华山行忆(1)(@lilybbs blog)

到九华山的汽车出发的很早,大概7:30左右就从中央大厦出站了。本来以为汽车是到青阳的呢,结果,在颠簸了4个小时左右之后,汽车直接停在九华山下,看来我又被原来的印象误导了。

下车,问好回去的乘车地点后,就直奔入口处而去。买好票(多少钱忘记了,好像是60吧)之后,进入景区,一问,这边离真正的山脚还有一段距离呢,还要坐车过去,于是找到车,上车买票,终于来到了九华山下。

在山脚下,入口处是一道牌坊,牌坊里面要收费,牌坊外面不需要,这就是入口了。从入口进去,门票的副卷被撕走,正卷是一张明星片,那种邮票印在上面的。这 样的设计我当时是第一次看到,觉得颇有意义,当年去黄山的时候就没有这这样的门票。更合理的是,入口旁边就是一个邮筒,让你能够很方便的邮寄。话不多说, aha马上开始写地址,寄出了他的门票。我无人可寄,只好仍在包里,现在估计还能找到。

办完这些小事,就要开始考虑大事了。什么是大事?当然是吃饭问题。从早上到现在,已经快5个小时了,得赶快补充食物。

Oct 17 11:50:04 2004