针对有网友说看不见文章内容, 现提示如下: 点击每一个标题行任一地方都会展开和隐藏此文章内容(不要点击标题). 目前展开隐藏功能只支持IE浏览器,虽然可以改成支持FF浏览器,不过现在一直没时间去弄,等有时间再修改了。 |
blog名称:乱闪Blog 日志总数:267 评论数量:1618 留言数量:-26 访问次数:2542321 建立时间:2005年1月1日 |
|

| |
吴宗宪2007最新最经典对白
|
Maximun allowable direct current potential between any two accessible electrical points is 24v nominal.
吴宗宪:唷!欢迎收看我猜我猜我猜猜猜!掌声鼓励。 阿 雅:Hello ! everyone , I Come back ! 吴宗宪:啊!丞琳,几天不见,你变鬼了! 众人笑 阿 雅:全世界爱阿雅的观众朋友们,我阿雅回来了! 吴宗宪:好好好,阿雅,你走的时候,我是送一首歌给你,你回来,我也以一首歌 欢迎你。阿咪老师,麻烦来首费翔的《故乡的云》(唱)鬼来了,鬼来哟,鬼来了, 鬼来哟!(一直重复) 众人笑 阿 雅:宪哥,我去美国的这几个月,你一点没变哦!还这么坏! 吴宗宪:你那两点也没变(指胸部),还是“不想长大”。 众人笑 阿 雅:宪哥,我在美国真的想死你了。 吴宗宪:我是真的想你死了,想我?想你个大头鬼啊! 阿 雅:对!(靠上宪哥)你就是我的大头鬼(宪哥头大)。 观众起哄鼓掌 吴宗宪:好了好了,在美国有没有养黑人小白脸啊! 阿 雅:人家心里只有你嘛! 吴宗宪:好,你也会永远活在我的心中好不好。 阿 雅:什么东西啊! 众人笑 吴宗宪:各位观众,今天是我们我猜内地版的第二期,因为出于对内地观众的考虑,丞琳没有过来主持,所以我们被迫把阿雅从土里挖了出来。今天我们同样请来了几位内地当红的明星,首先欢迎徐静蕾小姐。 徐静蕾:大家好,宪哥好,阿雅好! 吴宗宪:徐静蕾又是演员,又是导演,还出唱片,出书,真的是才女,该称呼你什么? 徐静蕾:叫我老徐吧! 吴宗宪:那王朔是不是该叫老王吧(老王八)? 众人笑 吴宗宪:你跟王朔到底有没有同居? 徐静蕾:没有,我们是属于忘年交 吴宗宪:你们有书信交往吗? 徐静蕾:有啊! 吴宗宪:那就是性…… 众人笑 阿 雅:说出来啊!性什么? 吴宗宪:不不不,等金钟奖过了再说!(宪哥刚得到金钟奖提名) 众人笑
吴宗宪:徐静蕾,新歌要不要唱一下 徐静蕾:其实不算新歌啦,我就唱一小段吧!(唱《梦想照进现实》) 吴宗宪:啊!我先前还不知道徐静蕾是算歌手还是演员,听完她的歌,我知道了, 她是一个演员。 众人笑 阿 雅:不会啊!我觉得她唱得不错啊! 吴宗宪:对,在演员中,她歌唱得最好,在歌手里呢,她戏演得最好! 众人笑 吴宗宪:好,接下来欢迎的这位是宋祖德…… 阿 雅:是先生还是小姐? 吴宗宪:什么先生小姐?这还要问吗?让我一起欢迎宋祖德人妖。 众人笑 宋祖德:大家好,宪哥好,阿雅好。 吴宗宪:宋祖德今天牺牲很大,听说他是带病来的。 宋祖德:对对对。 吴宗宪:他是带着神经病来的。 众人笑 宋祖德:宪哥!我还没做手术啊! 吴宗宪:你真的有准备做变性手术吗? 宋祖德:是有这个想法,因为朋友说我如果是个女的的话,还蛮漂亮的! 吴宗宪:你这位朋友是瞎子阿炳吗? 众人笑 宋祖德:是真的啊!宪哥,你看我这样是不是很性感?(摆姿势) 吴宗宪:(吐)你这样是很勇敢!那怎么现在还不去做呢? 宋祖德:因为后来我想,要是把我的小鸡鸡剪掉了…… 吴宗宪:(插话)哦,怪不得你想剪掉,原来只是根“小”鸡鸡哦! 众人笑 宋祖德:不是啦!宪哥,我的鸡鸡还是很长的。 吴宗宪:你是指包皮的部分吗? 全场暴笑 阿 雅:宪哥,金钟奖啊,不要聊那个了。 吴宗宪:我说哪个了? 阿 雅:就那个啊! 吴宗宪:好!我问你,肉包子里包的是什么? 阿 雅:问我什么啊?包肉啊! 吴宗宪:好,那菜包子呢? 阿 雅:包菜啊!你很烦哪! 吴宗宪:好,那皮包呢? 阿 雅:包皮啊! 全场暴笑 阿 雅:你陷害我! 吴宗宪:宋祖德,你继续圆你的谎! 宋祖德:我没有说谎啊!宪哥,后来我是想,如果真的剪掉我的鸡鸡的话 吴宗宪:请注意用词,是小鸡鸡。 众人笑 宋祖德:对,如果真的剪掉我的小鸡鸡的话,那以后我上厕所都要蹲着,会很不方便啊! 吴宗宪:你可以不蹲着嘛!你劈叉啊!(一字步) 众人笑 宋祖德:而且做变性手术的话,以后每个月还会出血,会很麻烦 阿 雅:变性的也会有吗? 吴宗宪:你误会了,宋祖德是说如果他变性的话,以后每个月可能都会被人打到出 血。听说你还打算让章子怡动刀啊! 宋祖德:我是有这个想法,我想让恨我的人解一回气。 吴宗宪:如果是那样的话,那恐怕你浑身长满小鸡鸡也不够人剪的。 众人笑 阿 雅:那你要是真的剪掉的话,岂不是可以练那本什么典的武功了! 吴宗宪:对!是武林秘籍《新华字典》 众人笑 徐静蕾:宪哥,好像是《葵花宝典》吧? 吴宗宪:对对对!练成后跟东方不败齐名,江湖人称:洞房必败! 众人笑
宋祖德:宪哥,其实我变性主要是为了孝顺我的母亲。 吴宗宪:是吗?是为了孝顺你的父亲吧?(坏笑) 众人笑 阿 雅:你好恶哦! 宋祖德:因为我很长时间没有陪在母亲身边,变成女的后,我就能陪母亲睡觉聊天了。 阿 雅:不变性你也可以啊! 宋祖德:几十岁的人了,还跟母亲睡会很怪啊! 吴宗宪:不会啊!我国中三年级还在喝母乳。 众人笑 阿 雅:那也太怪了吧! 吴宗宪:刚开始是为了民生问题,后来纯粹是兴趣了。 全场暴笑 吴宗宪:徐静蕾跟母亲怎么样? 徐静蕾:还不错啊!不过小时侯因为偷看日记的事跟我妈吵过架。 吴宗宪:对!偷看日记是母女间吵架很大的原因。静蕾,你为什么要偷看妈妈的日记呢? 众人笑 徐静蕾:不是,是我妈偷看我的日记啦 吴宗宪:那后来法院判妈妈几年有期徒刑? 徐静蕾:没那么严重啦! 吴宗宪:那**有给你递辞职信说她不喂你了吗? 众人笑 徐静蕾:妈妈有道歉。 吴宗宪:哦,好,那我们现场采访一下徐静蕾的母亲——黄健翔,请问你为什么说你 递了辞职信? 众人笑
黄健翔:宪哥好,阿雅好,大家好!宪哥,不是同一件事了!我是从央视辞职。 阿 雅:为什么啊!央视很厉害啊! 吴宗宪:对啊!“中央一套”啊! 阿 雅:宪哥,他好象是在中央五套吧? 吴宗宪:你误会了,我们讨论的是“套”的问题。 众人笑 黄健翔:宪哥,你是说有人把中央一套注册成避孕套商标的事吗? 阿 雅:真的吗?好有创意哦! 吴宗宪:听说还有人把宋祖德注册为养猪厂品牌的,叫“送猪的” 众人笑 宋祖德:真的吗?谁啊? 吴宗宪:就是黄健翔啊!他今天还带来了一本他自己写的新书《像男人一样去养猪》 众人笑 黄健翔:宪哥,我的书是叫《像男人一样去战斗》 吴宗宪:哦,那是跟《妇女之友》是同一类型的书。 阿 雅:有什么关系啊?它们? 吴宗宪:像男人一样,很明显是给女人看的书嘛!当然,我也是《妇女之友》的忠实读者。 黄健翔:宪哥,其实这本书更适合男士看,因为有的男的看上去是男的,但骨子里却一点也不像个男人。 吴宗宪:你这话是在说宋祖德吗? 众人笑 宋祖德:不是我啦!宪哥,他的意思…… 黄健翔:是,我就是说你! 吴宗宪:哦,杠上了!(大声地)剪掉!剪掉!剪掉!宋祖德变公公了!不要给宋祖德任何的鸡鸡,嘴大的娱乐圈的变性人,他继承了变性人的光荣的传统,东方不败,岳不群,林平芝在这一刻灵魂附体,宋祖德一个人,他代表了中国太监们的悠久的历史传统,在这一刻,他不是一个人在变性,他不是一个男人!子怡,子怡面对这个混球,她面对的是全世界变性迷的目光和期待。阉掉了,手术结束了,宋祖德变性胜利,淘汰了他的小鸡鸡。嘴大的宋祖德,嘴大的宋祖德的鸡鸡,嘴大的宋小姐今后被日快乐,宋祖德万岁。他不辜负变性人的期望,这个阉割是一个绝对理论上的绝杀,绝对的死鸟。宋祖德进入了变性人行列!胜利属于章子怡,属于李宇春,属于李亚鹏,属于刘亦菲,属于冯小刚,属于郭德刚,属于所有恨宋祖德的人。让他没蛋吧……宋祖德也许会后悔的,他在有鸟的情况下,他做得太开放了,太变态了,他不用再回到肮脏的男厕所了,因为他现在是女人啦,再见! 全场暴笑鼓掌,宪哥狂喘气 阿 雅:很喘哦! 吴宗宪:健翔,我终于明白你为什么要辞职了,这是一个体力活啊!我差点叫出海豚音,健翔,说实话,你当时的本意是不是就是想在比赛的时候发出海豚音向张靓颖告白。 众人笑 黄健翔:不是了,宪哥。 吴宗宪:在欢迎下面这一位嘉宾之前,我先出一个谜语,谜面是李厚霖,请猜周杰伦的一首歌曲。 阿 雅:《七里香》? 吴宗宪:是《妻李湘》还是《骑李湘》? 众人笑 宋祖德:宪哥,都一样了。 吴宗宪:好,掌声欢迎李湘。 吴宗宪:好,掌声欢迎李湘。 李 湘:大家好,宪哥好,阿雅好! 吴宗宪:李湘,上期节目怎么没有过来? 李 湘:宪哥,上次真的是有事,我刚和老公离婚,所以…… 吴宗宪:所以答案只能是《骑李湘》了! 众人笑 李 湘:宪哥! 吴宗宪:李湘,介意透露一下你的三围吗? 李 湘:秘密。 吴宗宪:(故意地)对,就是“咪咪”那部分 众人笑 导播来了个李湘胸部的特写~~~ 吴宗宪:(假意骂导播)没礼貌,个人兴趣啊!象话吗?太过分了,还拍胸部特写,麻烦拷一卷带子给我,我带回家自己私藏 众人笑 阿 雅:导播,为了以示公平,不然观众会抗议说怎么欺负一个内地的女明星,麻烦连我的胸部一起拍!给我个特写,ok? 吴宗宪:不要,不行,我们在拼收视率,不要这么冒险。 众人笑 李 湘:宪哥,其实我的胸部跟阿雅差不多。 吴宗宪:你这是侮辱阿雅,还是侮辱自己,小心今天晚上你的胸部会流泪哦!你是“胸有成竹”,阿雅是“胸有不足”。到底是多少? 李 湘:胸围,32C 吴宗宪:哦,那是跟阿雅差不多,阿雅是32凹。 众人笑 阿 雅:(打宪哥)李湘就是那种人很瘦,但是胸部又很大的。 吴宗宪:对,阿雅你也是人很瘦,但是……也很瘦……… 众人笑 李 湘:不会啊!从我这里看还蛮大的。 吴宗宪:是吗?你的隐形眼镜是放大镜吗?从我这看是一马平川 阿 雅:好好好,我的胸部是一个大,一个小好不好 吴宗宪:不不,不要这样,你的胸部是一个小,另一个更小。 众人笑 阿 雅:你的头还一个大,另一个更大呢! 观众起哄大笑鼓掌 吴宗宪:你是指哪个头?手指头、脚趾头、鼻头、才下眉头又上心头、(边说边把手在下半身指来指去)大肠头、黑头粉刺、膝盖头、舌头……还有一个部分,你们都不敢讲,我来讲——两个字的…… 阿 雅:讲啊! 吴宗宪:喉头! 众人笑 阿 雅:还好你想到一个,不然金钟奖就完了(假装放心的拍胸脯) 吴宗宪:(凑到阿雅胸前)听!有回音! 众人笑 吴宗宪:李湘,离婚不要紧,美女不愁嫁嘛? 阿 雅:对! 吴宗宪:阿雅,你是真的嫁不了! 众人笑 阿 雅:我还假得不能真呢! 吴宗宪:一起进入今天的阿雅真的嫁不了!! |
|
C# 2.0新特性探究之模拟泛型和内置算法
|
在C#2.0中,匿名方法、IEnumerable接口和匿名方法的合作,使很多的编程任务变得非常的简单,而且写出来的程序非常的优美。
比如,我们可以写出如下的代码:
List<Book> thelib = Library.getbooks();
List<Book> found = thelib.FindAll(delegate(Book curbook)
{
if (curbook.isbn.StartsWith("..."))
return true;
return false;
});
foreach (Book b in found)
Console.WriteLine(b.isbn);
这段程序非常简单的展示给我们需要查找的信息,代码也非常的直接易懂。内置的数据结构给了我们强大的算法支持,不过,能不能够为自定义的类定义类似的算法呢?
比如,如果我有一个自定义的Library类并没有使用List<Book>存储数据,而是使用某种自定义的数据结构,我能不能也让用户使用类似的语法,忽略存储细节的使用匿名委托来实现特定的算法呢?
答案当然是肯定的,而且在C#中实现这样的功能是非常的简单。
首先让我们看看FindAll中用到的匿名委托的原型
public delegate bool Predicate<T>(T obj);
很明显的,上面的代码等于注册了一个搜索的回调,而在List内部定义了某种遍历的机制,从而实现了一个漂亮的算法结构Closure。
看到了这些,我们就可以定义自己的算法结构了,首先,我定义了一个如下的类
public class MyVec<T>
{
public static MyVec<T> operator +(MyVec<T> a, T b)
{
a._list.Add(b);
return a;
}
public override string ToString()
{
StringBuilder builder = new StringBuilder();
foreach (T a in _list)
{
builder.Append(a.ToString());
builder.Append(",");
}
string ret = builder.Remove(builder.Length - 1, 1).ToString();
return ret;
}
public MyVec<T<>findAll(Predicate<T> act)
{
MyVec<T:>t2 = new MyVec<T>();
foreach(T i in _list)
{
if (act(i))
t2._list.Add(i);
}
return t2;
}
// this is the inner object
private List<T> _list = new List<T>();
}
这个类中包含了一个的List<T>结构,主要是为了证实我们的想法是否可行,事实上,任何一个可以支持foreach遍历的结构都可以作为内置的数据存储对象,我们会在后面的例子中给出一个更加复杂的实现。
下面是用于测试这个实验类的代码:
static void Main(string[] args)
{
MyVec<int> a = new MyVec<int>();
a += 12;
a += 15;
a += 32;
MyVec<int> b = a.findAll(delegate(int x)
{
if (x < 20) return true; return false;
}
);
Console.WriteLine("vection original");
Console.WriteLine(a.ToString());
Console.WriteLine("vection found");
Console.WriteLine(b.ToString());
Console.ReadLine();
}
编译,执行,程序输出:
vection original
12,15,32
vection found
32
和我们预期的完全相同。很明显的,List内部的算法与我们预期的基本相同。
Predicate<T>仅仅是为了仿照系统的实现而采用的一个委托,事实上可以使用自己定义的任何委托作为回调的函数体。
通过使用IEnumberable接口,可以实现对任意结构的遍历,从而对任何数据结构定义强大的算法支持。 |
|
C#中用API实现MP3等音频文件的播放类
|
C#没有提供播放MP3等音频文件的类,要编写播放MP3等音频文件程序,必须使用第三方控件或类。本文使用API函数mciSendString,编写一个播放MP3等音频文件的类。
具体源码如下:
一、使用API函数mciSendString构成的媒体播放类。
using System;
using System.Runtime.InteropServices;
using System.Text;
using System.IO ;
namespace clsMCIPlay
{
/// <summary>
/// clsMci 的摘要说明。
/// </summary>
public class clsMCI
{
public clsMCI()
{
//
// TODO: 在此处添加构造函数逻辑
//
}
//定义API函数使用的字符串变量
[MarshalAs(UnmanagedType.ByValTStr,SizeConst=260)]
private string Name = "" ;
[MarshalAs(UnmanagedType.ByValTStr,SizeConst=128)]
private string durLength = "" ;
[MarshalAs(UnmanagedType.LPTStr,SizeConst=128)]
private string TemStr ="";
int ilong;
//定义播放状态枚举变量
public enum State
{
mPlaying = 1,
mPuase = 2,
mStop = 3
};
//结构变量
public struct structMCI
{
public bool bMut;
public int iDur;
public int iPos;
public int iVol;
public int iBal;
public string iName;
public State state;
};
public structMCI mc =new structMCI() ;
//取得播放文件属性
public string FileName
{
get
{
return mc.iName;
}
set
{
//ASCIIEncoding asc = new ASCIIEncoding();
try
{
TemStr ="";
TemStr = TemStr.PadLeft(127,Convert.ToChar(" "));
Name = Name.PadLeft(260,Convert.ToChar(" ")) ;
mc.iName = value;
ilong = APIClass.GetShortPathName(mc.iName,Name, Name.Length);
Name = GetCurrPath(Name);
//Name = "open " + Convert.ToChar(34) + Name + Convert.ToChar(34) + " alias media";
Name = "open " + Convert.ToChar(34) + Name + Convert.ToChar(34) + " alias media";
ilong = APIClass.mciSendString("close all", TemStr, TemStr.Length , 0);
ilong = APIClass.mciSendString( Name, TemStr, TemStr.Length, 0);
ilong = APIClass.mciSendString("set media time format milliseconds", TemStr, TemStr.Length , 0);
mc.state = State.mStop;
}
catch
{
MessageBox.Show("出错错误!");
}
}
}
//播放
public void play()
{
TemStr = "";
TemStr = TemStr.PadLeft(127,Convert.ToChar(" "));
APIClass.mciSendString("play media", TemStr, TemStr.Length , 0);
mc.state = State.mPlaying ;
}
//停止
public void StopT()
{
TemStr = "";
TemStr = TemStr.PadLeft(128,Convert.ToChar(" "));
ilong = APIClass.mciSendString("close media", TemStr, 128, 0);
ilong = APIClass.mciSendString("close all", TemStr, 128, 0);
mc.state = State.mStop ;
}
public void Puase()
{
TemStr = "";
TemStr = TemStr.PadLeft(128,Convert.ToChar(" "));
ilong = APIClass.mciSendString("pause media", TemStr, TemStr.Length, 0);
mc.state = State.mPuase ;
}
private string GetCurrPath(string name)
{
if(name.Length <1) return "";
name = name.Trim();
name = name.Substring(0,name.Length-1);
return name;
}
//总时间
public int Duration
{
get
{
durLength = "";
durLength = durLength.PadLeft(128,Convert.ToChar(" ")) ;
APIClass.mciSendString("status media length", durLength, durLength.Length, 0);
durLength = durLength.Trim();
if(durLength == "") return 0;
return (int)(Convert.ToDouble(durLength) / 1000f);
}
}
//当前时间
public int CurrentPosition
{
get
{
durLength = "";
durLength = durLength.PadLeft(128,Convert.ToChar(" ")) ;
APIClass.mciSendString("status media position", durLength, durLength.Length, 0);
mc.iPos = (int)(Convert.ToDouble(durLength) / 1000f);
return mc.iPos;
}
}
}
public class APIClass
{
[DllImport("kernel32.dll", CharSet = CharSet.Auto)]
public static extern int GetShortPathName (
string lpszLongPath,
string shortFile,
int cchBuffer
);
[DllImport("winmm.dll", EntryPoint="mciSendString", CharSet = CharSet.Auto)]
public static extern int mciSendString (
string lpstrCommand,
string lpstrReturnString,
int uReturnLength,
int hwndCallback
);
}
}
二、用于测试媒体播放类的简单代码:
using System;
using System.Drawing;
using System.Collections;
using System.ComponentModel;
using System.Windows.Forms;
using System.Data;
using System.Runtime.InteropServices;
using System.Text;
using System.IO ;
using clsMCIPlay;
namespace MCIPlay
{
/// <summary>
/// Form1 的摘要说明。
/// </summary>
public class Form1 : System.Windows.Forms.Form
{
private System.ComponentModel.IContainer components;
private System.Windows.Forms.Timer timer1;
private System.Windows.Forms.Button Play;
private System.Windows.Forms.Button Stop;
private System.Windows.Forms.Button Puase;
private System.Windows.Forms.Label PlayFileName;
private System.Windows.Forms.Label Duration;
private System.Windows.Forms.Label CurrentPosition;
private System.Windows.Forms.OpenFileDialog openFileDialog1;
private System.Windows.Forms.Button BrowserFile;
clsMCI mp = new clsMCI();
public Form1()
{
//
// Windows 窗体设计器支持所必需的
//
InitializeComponent();
//
// TODO: 在 InitializeComponent 调用后添加任何构造函数代码
//
}
/// <summary>
/// 清理所有正在使用的资源。
/// </summary>
protected override void Dispose( bool disposing )
{
if( disposing )
{
if (components != null)
{
components.Dispose();
}
}
base.Dispose( disposing );
}
#region Windows 窗体设计器生成的代码
/// <summary>
/// 设计器支持所需的方法 - 不要使用代码编辑器修改
/// 此方法的内容。
/// </summary>
private void InitializeComponent()
{
this.components = new System.ComponentModel.Container();
this.Play = new System.Windows.Forms.Button();
this.PlayFileName = new System.Windows.Forms.Label();
this.Duration = new System.Windows.Forms.Label();
this.Stop = new System.Windows.Forms.Button();
this.Puase = new System.Windows.Forms.Button();
this.CurrentPosition = new System.Windows.Forms.Label();
this.timer1 = new System.Windows.Forms.Timer(this.components);
this.openFileDialog1 = new System.Windows.Forms.OpenFileDialog();
this.BrowserFile = new System.Windows.Forms.Button();
this.SuspendLayout();
//
// Play
//
this.Play.Location = new System.Drawing.Point(102, 243);
this.Play.Name = "Play";
this.Play.Size = new System.Drawing.Size(78, 24);
this.Play.TabIndex = 0;
this.Play.Text = "Play";
this.Play.Click += new System.EventHandler(this.Play_Click);
//
// PlayFileName
//
this.PlayFileName.AutoSize = true;
this.PlayFileName.Location = new System.Drawing.Point(12, 15);
this.PlayFileName.Name = "PlayFileName";
this.PlayFileName.Size = new System.Drawing.Size(0, 17);
this.PlayFileName.TabIndex = 1;
//
// Duration
//
this.Duration.AutoSize = true;
this.Duration.Location = new System.Drawing.Point(15, 51);
this.Duration.Name = "Duration";
this.Duration.Size = new System.Drawing.Size(0, 17);
this.Duration.TabIndex = 2;
//
// Stop
//
this.Stop.Location = new System.Drawing.Point(282, 243);
this.Stop.Name = "Stop";
this.Stop.Size = new System.Drawing.Size(81, 24);
this.Stop.TabIndex = 3;
this.Stop.Text = "Stop";
this.Stop.Click += new System.EventHandler(this.Stop_Click);
//
// Puase
//
this.Puase.Location = new System.Drawing.Point(198, 243);
this.Puase.Name = "Puase";
this.Puase.Size = new System.Drawing.Size(72, 24);
this.Puase.TabIndex = 4;
this.Puase.Text = "Puase";
this.Puase.Click += new System.EventHandler(this.Puase_Click);
//
// CurrentPosition
//
this.CurrentPosition.AutoSize = true;
this.CurrentPosition.Location = new System.Drawing.Point(15, 87);
this.CurrentPosition.Name = "CurrentPosition";
this.CurrentPosition.Size = new System.Drawing.Size(0, 17);
this.CurrentPosition.TabIndex = 5;
//
// timer1
//
this.timer1.Enabled = true;
this.timer1.Interval = 1000;
this.timer1.Tick += new System.EventHandler(this.timer1_Tick);
//
// BrowserFile
//
this.BrowserFile.Location = new System.Drawing.Point(312, 165);
this.BrowserFile.Name = "BrowserFile";
this.BrowserFile.Size = new System.Drawing.Size(87, 24);
this.BrowserFile.TabIndex = 6;
this.BrowserFile.Text = "SelectFile";
this.BrowserFile.Click += new System.EventHandler(this.BrowserFile_Click);
//
// Form1
//
this.AutoScaleBaseSize = new System.Drawing.Size(6, 14);
this.ClientSize = new System.Drawing.Size(433, 287);
this.Controls.Add(this.BrowserFile);
this.Controls.Add(this.CurrentPosition);
this.Controls.Add(this.Puase);
this.Controls.Add(this.Stop);
this.Controls.Add(this.Duration);
this.Controls.Add(this.PlayFileName);
this.Controls.Add(this.Play);
this.Name = "Form1";
this.Text = "Form1";
this.ResumeLayout(false);
}
#endregion
/// <summary>
/// 应用程序的主入口点。
/// </summary>
[STAThread]
static void Main()
{
Application.Run(new Form1());
}
//选择MP3文件播放
private void Play_Click(object sender, System.EventArgs e)
{
try
{
mp.play();
}
catch
{
MessageBox.Show("出错错误!");
}
}
//暂停播放
private void Puase_Click(object sender, System.EventArgs e)
{
try
{
mp.Puase();
}
catch
{
MessageBox.Show("出错错误!");
}
}
//停止播放
private void Stop_Click(object sender, System.EventArgs e)
{
try
{
mp.StopT();
}
catch
{
MessageBox.Show("出错错误!");
}
}
//每秒显示一次播放进度
private void timer1_Tick(object sender, System.EventArgs e)
{
CurrentPosition.Text = mp.CurrentPosition.ToString();
}
//浏览文件
private void BrowserFile_Click(object sender, System.EventArgs e)
{
try
{
openFileDialog1.Filter = "*.mp3|*.mp3";
openFileDialog1.FileName = "";
if(openFileDialog1.ShowDialog() == DialogResult.OK)
{
mp.FileName = openFileDialog1.FileName ;
PlayFileName.Text = openFileDialog1.FileName ;
Duration.Text = mp.Duration.ToString() ;
}
}
catch
{
MessageBox.Show("出错错误!");
}
}
}
}
本程序在.net 2003 、win XP SP1下编译通过。 |
|
ASP.NET 2.0无刷新页面新境界
|
“无刷新页面”,只是一种不确切的效果描述(其实还有其他各种方法来实现这个效果),更确切的说法是:在页面上用JavaScript调用服务器端的一个方法,然后处理返回的数据。实现它最标准的方法当然是XMLHTTP。但是,程序员都是懒惰的家伙,每个人都希望能有更方便的方法,或者,更佳的包装。比如,Lostinet的Rane就是对XMLHTTP的一个很好的包装。
终于,在ASP.NET 2.0里面,我们可以轻松的来做到这点了。服务器端任何实现了System.Web.UI.ICallbackEventHandler接口的控件,都可以通过RaiseCallbackEvent()方法来处理从页面上的JS脚本传递过来的请求和数据,处理后,再将结果传回给页面。这项能力的底层仍然是XMLHTTP。
下面是一个简单的演示:
在页面上,我们放上两个文本框和一个按钮:
<INPUT id="txtMessage">
<INPUT onclick="callToServer();" type="button" value="Call to Server">
Result : <INPUT id="txtResult" >
当点击按钮的时候,将调用JS脚本方法callToServer(),JS脚本如下:
function callToServer()
{
var param = document.getElementById("txtUsername").value;
var context = "";
<% = ClientScript %>
}
function handleResultFromServer(result, context)
{
document.getElementById("txtResult").value = result;
}
handleResultFromServer()方法则负责将从服务器传回的数据写到txtResult这个文本框里面。
再看看服务器端的代码:
public partial class Default_aspx : System.Web.UI.ICallbackEventHandler
{
private String ClientScript
{
get
{
return this.GetCallbackEventReference(this, "param", "handleResultFromServer", "context");
}
}
public string RaiseCallbackEvent(string eventArgument)
{
return "客户端在[" + DateTime.Now.ToString() + "]传送来 [" + eventArgument + "].";
}
}
我们让页面直接实现ICallbackEventHandler接口,然后接口定义的RaiseCallbackEvent()方法中将服务器的时间和传来的数据一起返回回去。
ClientScript属性的作用是,它调用了页面的GetCallbackEventReference()方法,获得了让客户端有能力调用服务器端方法的JS脚本,并输出到页面的callToServer()方法中,这样,点击页面按钮时,就开始执行页面上包含了调用服务器方法的的callToServer()方法。
注意GetCallbackEventReference()方法的参数,在参数中,我们定义了客户端的哪个变量包含了要传递给服务器,服务器方法执行后,调用客户端的哪个方法等信息。GetCallbackEventReference()的详细参看请看这里。
最后,我们这个页面的执行效果就是:
560)this.style.width=560;"> |
|
ASP实现文件直接下载
|
在IE进行文档链接时,如果遇到OLE支持的文档,IE会自动调用相应程序打开它,有时候这种功能并不是我们所需的,虽然我们可以提醒用户用鼠标右键-->"目标另存为...."命令来下载文档,但这样毕竟不太友好,本文描述了利用FSO及Stream方法实现IE直接下载文档.
<%@ language=vbscript codepage=65001%>
<% ''Filename must be input if Request("Filename")="" then response.write "<h1>Error:</h1>Filename is empty!<p>" else call downloadFile(replace(replace(Request("Filename"),"\",""),"/",""))
Function downloadFile(strFile) '' make sure you are on the latest MDAC version for this to work '' get full path of specified file strFilename = server.MapPath(strFile)
'' clear the buffer Response.Buffer = True Response.Clear
'' create stream Set s = Server.CreateObject("ADODB.Stream") s.Open
'' Set as binary s.Type = 1
'' load in the file on error resume next
'' check the file exists Set fso = Server.CreateObject("Scripting.FileSystemObject") if not fso.FileExists(strFilename) then Response.Write("<h1>Error:</h1>"&strFilename&" does not exists!<p>") Response.End end if
'' get length of file Set f = fso.GetFile(strFilename) intFilelength = f.size
s.LoadFromFile(strFilename) if err then Response.Write("<h1>Error: </h1>Unknown Error!<p>") Response.End end if
'' send the headers to the users Browse Response.AddHeader "Content-Disposition","attachment; filename="&f.name Response.AddHeader "Content-Length",intFilelength Response.CharSet = "UTF-8" Response.ContentType = "application/octet-stream"
'' output the file to the browser Response.BinaryWrite s.Read Response.Flush
'' tidy up s.Close Set s = Nothing
End Function end if %> |
|
ASP如何获取客户端真实IP地址
|
要想透过代理服务器取得客户端的真实IP地址,就要使用 Request.ServerVariables("HTTP_X_FORWARDED_FOR") 来读取。不过要注意的事,并不是每个代理服务器都能用 Request.ServerVariables("HTTP_X_FORWARDED_FOR") 来读取客户端的真实 IP,有些用此方法读取到的仍然是代理服务器的IP。还有一点需要注意的是:如果客户端没有通过代理服务器来访问,那么用 Request.ServerVariables ("HTTP_X_FORWARDED_FOR") 取到的值将是空的。因此,如果要在程序中使用此方法,可以这样处理:
......
userip = Request.ServerVariables("HTTP_X_FORWARDED_FOR")
If userip = "" Then userip = Request.ServerVariables("REMOTE_ADDR")
......
即:如果客户端通过代理服务器,则取 HTTP_X_FORWARDED_FOR 的值,如果没通过代理服务器,就取 REMOTE_ADDR 的值。
'通用函数:如果不能取客户端真实IP,就会取客户端的代理IP
Private Function getIP()
Dim strIPAddr
If Request.ServerVariables("HTTP_X_FORWARDED_FOR") = "" OR InStr(Request.ServerVariables("HTTP_X_FORWARDED_FOR"), "unknown") > 0 Then
strIPAddr = Request.ServerVariables("REMOTE_ADDR")
ElseIf InStr(Request.ServerVariables("HTTP_X_FORWARDED_FOR"), ",") > 0 Then
strIPAddr = Mid(Request.ServerVariables("HTTP_X_FORWARDED_FOR"), 1, InStr(Request.ServerVariables("HTTP_X_FORWARDED_FOR"), ",")-1)
ElseIf InStr(Request.ServerVariables("HTTP_X_FORWARDED_FOR"), ";") > 0 Then
strIPAddr = Mid(Request.ServerVariables("HTTP_X_FORWARDED_FOR"), 1, InStr(Request.ServerVariables("HTTP_X_FORWARDED_FOR"), ";")-1)
Else
strIPAddr = Request.ServerVariables("HTTP_X_FORWARDED_FOR")
End If
getIP = Trim(Mid(strIPAddr, 1, 30))
End Function
|
|
用ASP打开远端MDB文件的方法
|
如果你用ODBC connection (DSN or DSN-less)来访问远端的(UNC path)数据库, OLEDB会出现以下错误信息:
Microsoft OLE DB Provider for ODBC Drivers error ’80004005’
[Microsoft][ODBC Microsoft Access Driver] The Microsoft Jet database engine cannot open the file ’(unknown)’. It is already opened exclusively by another user, or you need permission to view its data.
你完全可以避免这种错误--ASP和ActiveX支持两种方式打开MDB文件的DSN-less连接,或由其它机器访问MDB文件。
1. DAO database (only for small load)
Dim File, Conn, RS
Const ReadOnly = False
File = "\\server\share\file.mdb"
Set Conn = CreateObject("DAO.DBEngine.35").Workspaces(0).OpenDatabase(File,,ReadOnly)
Set RS = Conn.OpenRecordset(SQL)
2. ADO + Jet OLE DB provider
Dim Conn, RS
Set Conn = CreateObject("ADODB.Connection")
Conn.Provider = "Microsoft.Jet.OLEDB.4.0"
Conn.Open "\\server\share\file.mdb"
Set RS = Conn.Execute(SQL)
你得确定使用ASP的用户有NT的数据库及共享访问权限。
假定有权限的话,你亦可访问其它机器中的开放数据连接:
http://www.pstruh.cz/
Set UM = CreateObject("UserManager.Server")
UM.LogonUser "Login with the rights", "Password", "Domain"
...
open database
...
UM.RevertToSelf |
|
中国特产 强悍的假冒品牌
|
昨天买了出差的时候瓶洗发水,用来洗头发现头皮很痒,仔细一看: 是瓢柔!! 记得小时候还吃过:大白免 奶糖!! 汗了!
中萃香烟抽过没有? 吃过康帅博方便面吗? 金康的小说你看过吗? 古尢的小说看过没? 惊瑶的呢? SQNY,ADIDOS,FUMA,PAMA,HIKE,TOCHIFA~~呵呵 沙宜,不是宣哦 我現在就用1BM的筆記本看l1ba呢 大家都知道洽洽瓜子吧,上次我买了包 吃完才发现是 治治牌瓜子 操 有一次在车站买到唐师傅的方便面......... 看过全庸的小说 喝过碧雪 用过夏仕莲 雕牌大家都知道,有次买了一袋,快用完偶然仔细一看才发现是"周佳 牌"!!,周佳两个字挨的非常近,用雕牌那种字体,几乎看不出来...晕了 我说为啥怎么洗也没沫.... 雲碧 芳达 都喝过没? 终于找到知音了,有一次在山东某城市的火车站广场小店买了一瓶“脉动”饮料,上车喝了才发现味道不对,仔细看了半天,没发现包装上有什么异样,再仔细看,靠,竟然是“脉劫”!!本来脉动的字体就是那样有尖尖的棱角的,劫字多出的一竖用很短的三角形尖尖代替,太难分辨了。 有一次买到杰土邦的TT......... 我家还买到了丑粮液的呢 我喝过芬远和雲碧 毓停用过没? 小说看过有本金庸新著,后来才知道作者叫金庸新! 我同学踢足球,去买了双双星球鞋,回来一看,商标是双星球! 司口司乐喝过没? 全兴大曲 全舆大曲 兴的繁体和舆(论)的舆 基本分不出来 以前看过金童的小说 喝過娃娃哈的水沒? 据说贵州的茅合酒也挺出名 我还吃过金桑子喉宝 可乐,就写着可乐,杭州火车站买的 三粮液……故意把三写的跟五似的,不过没有那个“丑粮液”强悍啊` 可日可乐 吃过下好佳的薯片吗? 我也差点买到 正常可乐 天黑啊 姓啥啥矿泉水喝过吗? 呵呵,喝过牙百氏的水! 运气不好~看着包装一样就买了一瓶(红茶),喝了一口觉得不对,看了一眼才知道,是 允一牌 小时侯买过吉龙的书 derux.... 我买过同佳牌洗衣粉,看过LIHING运动服 记得以前有种饮料叫"旭日升" 吗? 有次喝完发现包装不对劲,仔细一看"九日开" 我操 有一次看5块钱一大瓶沙宣洗发水,二话不说就买了,回来一打开全是酒精味,仔细一看是 沙宜 我汗.... microseft的鼠标见过,现在到处都有 阿迪都斯 呵呵,我用过“海乙丝” 貌似上次买个瓶脉劲 我们这里有个----华朕超市 吃过牛拉面吗?没有肉,不是牛肉面,是牛师傅拉面~~~~~~~ 据听说浙江某镇上,单单做鳄鱼这个牌子的服装,就是二十七家!~而且每家商标大差不离却都不样,有张嘴的,有闭嘴的,有头在左边的,有头在右边的,有尾巴向上的,有尾巴向下的.......所以浙江人都暴发啊!~ 我同学买到过大嘴帅帅,包装和鬼脸嘟嘟一样一样的 买过花生油,金龙油(假)--金龙鱼油(真) 我现在身上穿的是件印有“like”的T血 还有旺子牛奶,健力霸 回九运动鞋你穿过吗?我在深圳华侨城沃尔玛看到过 用过夏仕莲 终于找到知音了,有一次在山东某城市的火车站广场小店买了一瓶“脉动”饮料,上车喝了才发现味道不对,仔细看了半天,没发现包装上有什么异样,再仔细看,靠,竟然是“脉劫”!!本来脉动的字体就是那样有尖尖的棱角的,劫字多出的一竖用很短的三角形尖尖代替,太难分辨了。 我同学踢足球,去买了双双星球鞋,回来一看,商标是双星球! 用过力白. 记得买过一只巧巧兹雪糕,外观和巧乐兹一模一样 不小心买过一个panasonie的mp3 吃了才知道奥利弗不是奥利奥,包装都一样,只是便宜得多 我用过康老师冰红茶的牙膏,注意,是牙膏~~我姐买的 健力霸, 哈哈 七龙珠结束以后的假冒漫画...作者是鸟山明著 老买到心想印的餐巾纸 万事可乐 墨汁兑的。 青鸟啤酒喝过吗????????? 大学刚开学时,一室友买了一瓶拉芳洗发水!洗完感觉不爽,一看瓶!我靠! 拉芬! 有大白免奶糖,还有一种叫太白兔的.... 去楼下买雪碧,喝完觉得味道不对,咋一看才知道,是雪宝 冠生圈 方便面~~~~~(冠生园的牌子很老了) 曾经吃过一根特别难吃的雪糕。“尹利”的。还见过,醒月 饮料。呵呵。还是丑粮液和茅合酒比较逗。 CASIQ的计算器,用过么,是Q不是O abibas 偶在火车上买过均鱼扑克牌,玩了几圈发现掉纸屑才去看牌盒子的,汗~~~~~~ 恰恰,哈哈瓜子,姓啥啥矿泉水都在超市买过~~~~ 丑粮液,偶到没喝过!不过有一次在一个小县城的饭店里见过一瓶包装和五粮液一样的,仔细一看,名字是"五娘液"....我寒 蒙友奶喝过吗? 我吃过绿剑口香糖 喝过娃乐乐的矿泉水(包装一样) 都是火车站买的! 一次去秦皇岛的列车上,有服务员卖冰棍,看了一下好像有四个圈,就买了俩根,吃到嘴里感觉味道不正宗,一看包装纸,巨汗...----三个半圈!!!包装纸除了名字不一样,和四个圈的包装纸一摸一样的... 我买过 高露浩 上次我同事去厦门玩,买的铁观音回家仔细一看,远来是钱观音 钱和铁的繁体字很难分辨 北方正大 有谁吃过奥利粤的饼干?还有 德笑的巧克力? 唐师傅方便面还好吧,至少听着有点甜。你吃过庚师傅方便面吗?真不知道和八国联军又没有关系。 旺子雪饼 农失山泉.... 我靠,治治牌!
上身MIKE运动衫,下身asidadi运动裤,足蹬LIMING运动鞋,还有一双FUMA运动袜,不要太帅噢 饿了吃康帅傅方便面,渴了喝雲碧,闲了嗑治治牌瓜子,无聊了用LBM笔记本上网,脏了用瓢柔洗发水,闷了就抽中萃香烟,烦了就灌丑粮液。哇噻,多完美的生活,向往ING。。。
|
|
史上最NB的程序员自述
|
俺是一名程序员。三年前,当俺在麻绳理工学院读博士时,一公司聘俺完成一个项目。当俺完成学业离开美国后,该公司需要对程序进行修改,于是聘请了另一名程序员来完成这项工作。
谦虚的说(俺一向很谦虚的),想要理解俺编的程序,不是一般人能做到的。在俺的程序里,使用了大量的独特算法,富有个性的变量、函数的命名方式,同时,俺没有时间给程序作注释!
这名程序员在耗费了60余磅体重(三个月没有吃东西,一吃就吐),14英寸身高(在计算机屏幕前弓着背坐了三个月)后,终于......(尽管他的绰号叫“开心的汤姆”)死掉了。
据现场目击者介绍,在他生命的最后一刻,跪倒在电脑台前,双手高举跪地膜拜,表情安详的对着屏幕说:“英雄! I服了YOU!”
尸体解剖时医生发现,此人大脑呈海绵状,但他从出生就从没吃过任何与肉(牛肉、羊肉、猪肉、鱼肉、鸡肉......以及人肉)有关的食物。为此,该医生发表了一篇论文《后天性用脑过度缺损综合症》。据悉,凭借该论文,该医生已被内定为下届诺被儿医学奖得主。
微硬公司总裁听说后,利用三个星期的时间,读懂了俺的系统中的一个模块,大喜过望,从中领会到软件设计的精髓,决定推出“.not”计划以对抗“.net”。公司股票在消息发布的两分钟内,暴涨10(此处省略三百二十万字)0%。预计到2100年国际贸易将全部放弃货币,改为采用微硬的股票,各国央行全部以微硬的股票作为外汇储备。
一位不知名的物理学家躺在浴缸中读懂俺的用户需求分析、系统设计书后,突然跳起来,光着身子跑到大街上,欣喜若狂地喊道:“俺找到了!俺找到了!”。他成为全世界第十三名真正理解“量子力学”的人。其发表的论文《程序设计与用户需求的测不准原理》成为程序员的圣经,并被世界计算机联合会指定为系统分析员考试用教材。
一位气象学家浏览了俺的程序界面后,茅塞顿开。完成了基于“混沌”理论的“北极蝴蝶飞行轨迹影响好望角飓风”的数学模型,并在成功地预报了2002年全球各主要股市的走势(不包括深、沪两市)后,被索洛死指定为量子基金会的接班人(写入量子基金会会章)。
消息传开,俺的有关程序设计的各种资料以各种形式广为流传。由于这些信息在网络上频繁交换,全球共有300万台服务器的CPU被烧毁,鹰的耳公司被迫赔偿4948(死就死吧)亿股微硬股票。
一名建筑师通过俺的源程序获得灵感,建造了一个迷宫主题公园。对于走出迷宫的游客奖赏10000亿股微硬股票。“截至目前为止,据不完全统计,已经有十二亿三千余万游客在一年时间里陆陆续续进入迷宫,尚无有关领取奖品的报道”。
在阅读俺的用户手册后,一名音乐家成功地复原了著名钢琴曲《黑色的星期五》。当第100万个在阅读俺的用户手册时听钢琴曲《黑色的星期五》的跳楼者诞生后,该音乐家被以“恐怖分子”的罪名逮捕,现被关押在纽约世贸大楼南楼的地下室。
当听完俺当初与公司经理进行交涉的谈话录音后,小不死为“倒沙”战争制定了计策:命令全国各媒体公开猜测军事计划,并冠之以“据军方高层透露”。以便将沙打亩彻底搞晕。
IBM公司为良好运行俺的程序,决定斥巨资进行超超超级计算机的研制。预期性能:采用PX 50.8G阵列(4294967296个),内存10000000G,1000000000000000000000G容量的硬盘。
经过细致研究俺当年的投标书和俺所完成的程序功能,一名大导演以超豪华的阵容拍摄了一部巨片(巨烂片的简称)《英雌》,并进行了空前的炒作。
而这家公司的老板将俺与他合作的全部过程写成了回忆录,题目叫作《企业要倒闭,就作ERP》。凭其版权收入的税收,使得美国的所得税增幅高达1000%。
俱往已。尽管俺为世界做出了如此警世骇俗的贡献,但俺毅然回国,在一个只有5台电脑的小网吧里工作,并因在一个月里为电脑全部安装完网络协议而赢得广大网友的尊敬。 |
|
中国和国际接轨的真相
|
震惊的答案: 中国银行和国际接轨,跨行查询收费, 接轨的那个国家你绝对想不到。 今天, 听到在看电视上专家对备受关注的ATM跨行查询收费的讨论, 才知道, 美国绝大多数的银行根本不存在什么所谓的跨行查询收费。 美国的绝大多数银行是股份制银行, 这种自己突然规定跨行查询收费的只有在垄断银行才会发生。 专家说, 如果国外只要有一个银行实行了跨行查询收费, 中国就会以和国际接轨为理由, 采用这种方式。 然后他们查阅了很多资料发现, 我们周围这些国家, 只有唯一一个巴基斯坦是跨行查询收费的。 看到这里我彻底晕了, 原来中国几家银行跨行查询收费的所谓和国际接轨, 居然是和巴基斯坦接轨啊。 中国政府制定政策的2大法宝: 有些决策者在制定政策的时候, 手里有两套法宝, 一套是“中国国情”, 一套是“与国际接轨”, 当制定不利于人民的政策时, 如房改,要求大家自己掏钱购买商品房, 就说是和“国际接轨”, 理由是, 人家外国都是自己买房子, 没有福利分房的说法, 但与此同时, 他们却恰恰忽略了人家外国土地私有这个关键因素, 中国人并不拥有土地的所有权, 土地都属于国家, 却要被迫付出昂贵的价钱购买一套只有使用权的商品房, 而当人们对此提出质疑的时候, 他们又会说这是中国特殊国情决定的。 又比如医改,教改,人家其他国家是免费医疗, 免费义务教育,但这一点他们又不与国际接轨了, 又强调中国国情了, 什么财力不堪重负啦之类, 结果导致大家看不起病, 上不起学。 又比如所谓“高薪养廉”, 据说是新加坡、香港的成功经验, 所以要和“国际接轨”, 所以五次三番地给公务员加薪。 但人家严格的监督制度, 对公务员近乎苛刻的约束, 廉政公署等等, 他们又不和国际接轨了,又强调中国国情了。 韩国首都汉城(现名首尔)只有14辆公务车, 这点他们就不愿意接轨, 中国现在一个乡镇政府14辆公车都不算多吧? 这就是中国国情。 美国有个燃油税,他们就要和“国际接轨”, 也要征燃油税, 但美国高速公路、大桥绝大多数是不收费的, 在美国养一辆车除汽油费外每年仅需170多美元, 这点他们又不和国际接轨了, 不仅养路费、车船税等等一大堆,而且到处设置关卡, 几乎路路收费。 全世界总共只有14万公里收费公路, 但就有10万公里在中国! 这就又是中国国情了. 美国格林斯潘加息了, 他们就要和“国际接轨”, 但美国购房享受退税, 购买第一套住房享受低利率, 对出租房屋屋主进行补贴以降低租金, 这些他们又不和国际接轨了, 又强调中国国情了, 不仅不对出租房屋进行补贴, 反而变本加厉地对出租屋提高税收, 导致这部分成本转嫁给租客,租金上涨。 世界绝大多数国家都是土地私有的, 人民买房的同时就买了地皮,具有永久所有权。 当然,他们在这一点上就不和国际接轨了, 因为中国国情特殊啊! 但是,当他们发现香港的使用权制度对自己比较有利后, 就立即和香港接轨了! 订了个70年使用权制度, 迫使人民祖祖辈辈不断花巨资购买有限使用权, 但香港是什么情况? 香港原先是殖民地啊! 英国只租用了99年啊,它搞个使用权无可厚非, 因为土地本不是它的,时间到了就要归还的, 你搞使用权到底是什么意思? 不是说中国是公有制吗? 不是全国人民拥有对一切生产资料的所有权吗? 但落实到的最后怎么变成绝大多数人都一无所有了呢? 怎么就变成必须购买本属于自己的土地使用权呢? 不懂吧! 但他们不管, 就因为对自己比较有利, 所以在这方面就和香港这个“殖民地”接轨, 就不和其他的国际接轨。 又比如, 油价要涨、电价要涨、水价要涨,理由还是和国际接轨, 说什么人家的都很贵,中国的油价水价电价便宜的很, 所以就该涨, 但说到人民的工资水平、福利水平、劳动保障制度, 就又不和国际接轨了, 就又强调中国的特殊国情了, 人家的工会都是工人选举产生, 实实在在代表工人权益, 这一点咱们就是不和人家接轨, 咱就是要让工会成为资本家压迫工人的帮凶, 原因还是:中国国情。 所以, 不要拿什么美国、英国的加息说事, 什么时候中国成为完全市场经济国家了, 国家官员民选产生了, 权力部门受公众严格监督了, 再说这些不迟!
|
|
孙悟空大闹天宫失败的主要原因
|
话说当年孙悟空大闹天宫,观世音菩萨举荐二郎神带兵降妖,天兵天将在花果山群猴大战。正斗间,大圣忽见本营中妖猴惊散,自觉心慌,抽身就走,众天将慌慌张张,前后寻觅不见,一齐吆喝道:“走了这猴精也!走了这猴精也!” 二郎神圆睁天目观看,却见下界人烟繁华之处,那大圣变做一个老头,推着一辆三轮车,抖抖索索地,正在街边卖烤白薯。二郎心中冷笑,正待发标打他,忽然见一伙城管,手持锤剪棍棒,吆吆喝喝,不由分说,便将三轮车砸得稀烂。大圣一惊,以为是天兵到来,连忙转过街角,又摇身一变,变做一个小姐,描眉画眼,在那里袅袅婷婷走路。却又被二郎看个真切,二度意欲发标,迎面却又来了几个公安,劈面揪住大圣道:“定是一个野鸡,随我局子里走一趟!”大圣心慌,忙道:“我不是野鸡,我还是处女!”公安狂笑道:“处女怎地?处女便不能卖淫么?”手铐一抖,便要拿人。大圣见事不谐,忙将腰一扭,腾空而去,眼见前方一个山凹,便滚下山崖,伏在那里又变,变一座小学,大张着口,似个校门,牙齿变做门扇,眼睛变做窗棂,抖几个猴虱下来变做学生咿咿呀呀念书。只有尾巴不好收拾,竖在后面,变做一根旗竿,悬起一条大标语:“百年大计,教育为本;义务教育,免费入学。”二郎两番被抢了先手,心中正在烦闷,眼看得这条标语,不由笑道:“是这猢狲了!他今又在那里哄我。殊不知中国号称义务教育,那里有得免费?我也曾见过学校千万,更不见一个不把学生做摇钱树的,看我打杀这个猴子!”大圣听得心惊,扑的一个虎跳,又冒在空中不见。 半空中天庭妇联主任观音菩萨与炼丹部长太上老君正在观战。菩萨对老君道:“老君哥哥,贫僧所举二郎神如何?果有神通,已经把那大圣围困,只是未得擒拿。我如今助他一功,拿下猴头。”老君道:“观音妹子?你将何兵器助他?”观音回身唤过坐骑:“看我开宝马撞他一下。”老君道:“你那宝马价格甚为昂贵,若撞坏了多有不便。”观音道:“横竖也是公款,撞了就撞了吧。”老君又道:“那修理起来也甚为麻烦,还是让我来替妹子助他吧。”观音曰:“坏了就不要了,我正想换辆凯迪拉客。”正拉拉扯扯间,老君身后转过一名仙娥,乃是有名的张惟英教授,献与老君一件宝物,嘴里喃喃说着什么 “总不能让所有人都来天庭吧……我至今都不认为我错了……”转身而去。老君定睛看时,那宝物却是一件“天庭人口准入制度”,不由大喜:“此物一出,凡间九亿农民都得发抖.正可用来对付山野村猴,等我丢下去打他一下。 只见老君将那法宝自天门上往下一掼,滴溜溜,可可砸着猴王头上一下,将大圣打翻在地,众天庭公安一拥而上,将大圣捆个结实,再也不能变化。一公安怒道:“这厮令我等吃了不少苦头,今日一发还了他罢!饶你个孙悟空,今日要将你变做第二个孙志刚!”正待把出手段,却有另一公安叫道:“且慢,我等老手段土得掉渣,如今时兴与国际接轨,那驻伊美军虐囚,手段千变万化,何不学得一二,今日做个新鲜耍子?”众公安一听,齐声称妙,便将大圣押去斩妖台,电击火烧,刀砍斧剁,却伤不得大圣分毫。 玉帝见状,不由踌躇:“这厮这等,这等……如何处治?”老君奏道:“不若与老君领去,放在八卦炉中,炼出我的丹来,何如?”玉帝闻听大喜,便将大圣赐与老君锻炼。殊不知大圣神通广大,拔下一根毫毛,变做美钞,贿赂了扇火童子,得知那巽位下有风无火,前往躲避,未曾受得重伤。 七七四十九日满,老君开炉取丹,却见大圣飞身而出,使金箍棒大杀四方,打得天宫中九曜星闭门闭户,四天王无影无踪。直打到通明殿前,玉帝见状大惊,忙叫道:“快,关门,放协警!”原来那协警之徒,比正规警察更凶恶十倍,只见一个个奋勇争先,踊跃咆哮,将大圣围在垓心,眼看就要拿下。 玉帝正在庆幸,忽见协警们全做了鸟兽散,原来此辈性贪,眼中只有金银,大圣之黄金锁子甲在炉子中烤得甲环松脱,被众协警一口一撕,顷刻间个个嘴里有片黄金,纷纷跑回后院掩埋收藏不提。 正没奈何间,忽见西方如来相助,要与大圣赌赛。如来曰:“我有一样法宝,你若能飞出我这法宝管辖,便让你做了玉帝之位;若飞不出,便缴械投降如何?”说罢自怀中掏出法宝,悟空定睛看时,却是一个小小本子,上书三个大字:暂住证。便笑道:“一个小小本子,有何灵能,我去也!”一个跟头飞出,自天空降落北京地界,脚步刚落,便见几名警察前来:“那个谁,说你呢!暂住证拿出来看看!”悟空一惊,将腰一扭,又一个跟头飞到广州,正在观望,忽见一群联防冲来:“这个好像没有暂住证,快抓住他!”七手八脚要拿下大圣,大圣忙分开众手,复又飞起,急切间难辨方向,却又飞回如来面前。如来微笑道:“我的宝贝何如?”大圣道:“不算!不算!闻听西方有国,不设暂住证,待我去来!”正要纵身跳出,却被如来手掌一翻,将暂住证变做一座五行山,将大圣牢牢压住。 玉帝见擒了大圣,心中大喜,便邀请如来及有功群臣,开了一个庆功大会,盛世联欢。正行乐间,忽有五行山居委会老太来报:“那大圣伸出头来了,说他要挣脱出去赶招聘会,投简历发名片,谋个职位,以图东山再起哩!”如来道:“不妨,不妨。”袖中只取出一张帖子,上有六个金字:“此人农村户口。”递与手下,让贴在那五行山顶上。又向天再借五百年,使那帖子牢牢置顶不得脱落,那座山即生根合缝,大圣再也无法爬出,自此一压就是五百年不得翻身也。 |
|
出租司机给我上的MBA课 
|
我要从徐家汇赶去机场,于是匆匆结束了一个会议,在美罗大厦前搜索出租车。一辆大众发现了我,非常专业的、径直的停在我的面前。这一停,于是有了后面的这个让我深感震撼的故事,象上了一堂生动的MBA案例课。为了忠实于这名出租车司机的原意,我凭记忆尽量重复他原来的话。
“去哪里……好的,机场。我在徐家汇就喜欢做美罗大厦的生意。这里我只做两个地方。美罗大厦,均瑶大厦。你知道吗?接到你之前,我在美罗大厦门口兜了两圈,终于被我看到你了!从写字楼里出来的,肯定去的不近~~~”
“哦?你很有方法嘛!”我附和了一下。
“做出租车司机,也要用科学的方法。”他说。我一愣,顿时很有些兴趣“什么科学的方法?”
“要懂得统计。我做过精确的计算。我说给你听啊。我每天开17个小时的车,每小时成本34.5元……”
“怎么算出来的?”我追问。
“你算啊,我每天要交380元,油费大概210元左右。一天17小时,平均每小时固定成本22元,交给公司,平均每小时12.5元油费。这是不是就是34.5元?”,我有些惊讶。我打了10年的车,第一次听到有出租车司机这么计算成本。以前的司机都和我说,每公里成本0.3元,另外每天交多少钱之类的。
“成本是不能按公里算的,只能按时间算。你看,计价器有一个“检查”功能。你可以看到一天的详细记录。我做过数据分析,每次载客之间的空驶时间平均为7分钟。如果上来一个起步价,10元,大概要开10分钟。也就是每一个10元的客人要花17分钟的成本,就是9.8元。不赚钱啊!如果说做浦东、杭州、青浦的客人是吃饭,做10元的客人连吃菜都算不上,只能算是撒了些味精。”
强!这位师傅听上去真不象出租车司机,到象是一位成本核算师。“那你怎么办呢?”我更感兴趣了,继续问。看来去机场的路上还能学到新东西。
“千万不能被客户拉了满街跑。而是通过选择停车的地点,时间,和客户,主动地决定你要去的地方。”我非常惊讶,这听上去很有意思。“有人说做出租车司机是靠运气吃饭的职业。我以为不是。你要站在客户的位置上,从客户的角度去思考。”这句话听上去很专业,有点象很多商业管理培训老师说的“put yourself into others' shoes.”
“给你举个例子,医院门口,一个拿着药的,一个拿着脸盆的,你带哪一个。”我想了想,说不知道。
“你要带那个拿脸盆的。一般人病小痛的到医院看一看,拿点药,不一定会去很远的医院。拿着脸盆打车的,那是出院的。住院哪有不死人的?今天二楼的谁死了,明天三楼又死了一个。从医院出来的人通常会有一种重获新生的感觉,重新认识生命的意义,健康才最重要。那天这个说:走,去青浦。眼睛都不眨一下。你说他会打车到人民广场,再去做青浦线吗?绝对不会!”
我不由得开始佩服。
“再给你举个例子。那天人民广场,三个人在前面招手。一个年轻女子,拿着小包,刚买完东西。还有一对青年男女,一看就是逛街的。第三个是个里面穿绒衬衫的,外面羽绒服的男子,拿着笔记本包。我看一个人只要3秒钟。我毫不犹豫地停在这个男子面前。这个男的上车后说:延安高架、南北高架~~~还没说后面就忍不住问,为什么你毫不犹豫地开到我面前?前面还有两个人,他们要是想上车,我也不好意思和他们抢。我回答说,中午的时候,还有十几分钟就1点了。那个女孩子是中午溜出来买东西的,估计公司很近;那对男女是游客,没拿什么东西,不会去很远;你是出去办事的,拿着笔记本包,一看就是公务。而且这个时候出去,估计应该不会近。那个男的就说,你说对了,去宝山。”
“那些在超市门口,地铁口打车,穿着睡衣的人可能去很远吗?可能去机场吗?机场也不会让她进啊。”
有道理!我越听越有意思。
“很多司机都抱怨,生意不好做啊,油价又涨了啊,都从别人身上找原因。我说,你永远从别人身上找原因,你永远不能提高。从自己身上找找看,问题出在哪里。”这话听起来好熟,好像是“如果你不能改变世界,就改变你自己”,或者Steven Corvey的“影响圈和关注圈”的翻版。“有一次,在南丹路一个人拦车,去田林。后来又有一次,一个人在南丹路拦车,还是去田林。我就问了,怎么你们从南丹路出来的人,很多都是去田林呢?人家说,在南丹路有一个公共汽车总站,我们都是坐公共汽车从浦东到这里,然后搭车去田林的。我恍然大悟。比如你看我们开过的这条路,没有写字楼,没有酒店,什么都没有,只有公共汽车站,站在这里拦车的多半都是刚下公共汽车的,再选择一条最短路经打车。在这里拦车的客户通常不会高于15元。”
“所以我说,态度决定一切!”我听十几个总裁讲过这句话,第一次听出租车司机这么说。
“要用科学的方法,统计学来做生意。天天等在地铁站口排队,怎么能赚到钱?每个月就赚500块钱怎么养活老婆孩子?这就是在谋杀啊!慢性谋杀你的全家。要用知识武装自己。学习知识可以把一个人变成聪明的人,一个聪明的人学习知识可以变成很聪明的人。一个很聪明的人学习知识,可以变成天才。”
“有一次一个人打车去火车站,问怎么走。他说这么这么走。我说慢,上高架,再这么这么走。他说,这就绕远了。我说,没关系,你经常走你有经验,你那么走50块,你按我的走法,等里程表50块了,我就翻表。你只给50快就好了,多的算我的。按你说的那么走要50分钟,我带你这么走只要25分钟。最后,按我的路走,多走了4公里,快了25分钟,我只收了50块。乘客很高兴,省了10元钱左右。这4公里对我来说就是1块多钱的油钱。我相当于用1元多钱买了25分钟。我刚才说了,我一小时的成本34.5块,我多合算啊!”
“在大众公司,一般一个司机3、4千,拿回家。做的好的大概5千左右。顶级的司机大概每月能有7000。全大众2万个司机,大概只有2-3个司机,万里挑一,每月能拿到8000以上。我就是这2-3个人中间的一个。而且很稳定,基本不会大的波动。”
太强了!到此为止,我越来越佩服这个出租车司机。
“我常常说我是一个快乐的车夫。有人说,你是因为赚的钱多,所以当然快乐。我对他们说,你们正好错了。是因为我有快乐、积极的心态,所以赚的钱多。”
说的多好啊!
“要懂得体味工作带给你的美。堵在人民广场的时候,很多司机抱怨,又堵车了!真是倒霉。千万不要这样,用心体会一下这个城市的美,外面有很多漂亮的女孩子经过,非常现代的高楼大厦,虽然买不起,但是却可以用欣赏的眼光去享受。开车去机场,看着两边的绿色,冬天是白色的,多美啊。再看看里程表,100多了,就更美了!每一样工作都有她美丽的地方,我们要懂得从工作中体会这种美丽。”
“我10年前是强生公司的总教练。8年前在公司作过三个不同部门的部门经理。后来我不干了,一个月就3、5千块,没意思。就主动来做司机。我愿意做一个快乐的车夫。哈哈哈哈。”
到了机场,我给他留了一张名片,说:“你有没有兴趣这个星期五,到我办公室,给微软的员工讲一讲你怎么开出租车的?你就当打着表,60公里一小时,你讲多久,我就付你多少钱。给我电话。”
我迫不及待的在飞机上记录下他这堂生动的MBA课。 |
|
小偷写给失主的信
|
哥们(习惯了,你不同意拉倒),你好:
见字如面(还是不见的好)
首先,向你道个歉,没经过你同意,就把你家的门给整开了,不过,与同行相比,我还是挺讲究的,在开锁的时候,没有用电钻、斧子等破坏性工具,如不介意的话,从经济角度上讲,你还是可以用原先那把锁的,我用人格保证,我是不偷回头客的,一来,你小门小户的也不容易,二来,从我的战利品来看,你家也不值得我来第二次。
哥们,谈一下我的进门感受吧,不用瞒我啦,你现在刚结婚,不是我能掐会算,是屋里的摆设告诉我的,我也是马上要结婚的人,为此,在工作中虽然我很匆忙,也很紧张,但我始终心存爱心,没有对此进行大规模的破坏活动。
非常喜欢你新房的格局设计,高雅的吊灯,美丽温馨的窗纱,还有床头你老婆迷人的艺术照,看得出来,哥们你的艳福不浅呀。总之,一切看来都是那么令人羡慕不已,啥时,哥们也能混成这样,也就不干这行了。
哥们,说一下我的工作程序吧,这样有利于你清点整理战场。
客厅,那有一个小保险柜,我费了不少力气,打开了一看,让我相当失望,那里居然只有十封信,拆开一封看了几眼,竟然是你多年前写给一个小丫头的情书,要不是时间紧,任务重,我非得细看不可,我这人,除了这行呀,就爱好个文学啥的,一来为了你的隐私不被你老婆发现,二来也防止信封里夹带美元等贵重物品啥的,我全拿走了,后来拆封一看,美元是没有,但我发现哥们你呀,还真挺有才呢,写的情书文采还真不错,酸不筋儿的,字里行间净是些勾人的词儿,怪不得你老婆那么漂亮呢。另外,冰箱里的果汁我喝了一瓶,挺好喝的,啥牌的还真忘了。
南屋,也就是你的卧房,是我重点关照的地方,因为工作匆忙,床罩、被单扔在地板上了,不过,你放心,我是穿着你的新袜子才来回走的,所以没有弄脏那些东西,电视、音响挺好的,大重太沉,我没有带走,也没破坏(就凭这点,你就应该谢谢我,我们这行有些人带不走的是要统统砸坏的),但是你夹在床垫子里的36700块钱我拿走了,想来,你也不太缺钱吧,要不,那么多钱,怎么会放在家里呢?
北屋的抽屉我全翻过了,只找到一只钻戒,可能是你送给你老婆的结婚信物吧,本来不想带走,但兄弟我也实在是结婚需要,没办法,拿走了,其余的东西,如牙刷呀、钥匙串呀,我都没动。
东屋是你的书柜,以为你是爱书的人,可是一翻全是道具书,光有皮和盒,没有真书,挺让我失望的,不过书柜下边的DVD《天下无贼》我拿走了,一来早就听说这个电影好看,我还没来得及看呢,正好拿回家看看,二来也想向同行学学新技术,啥年代了,知识 ,更新的太快了,不学习哪成呀,劝你呀,早点把道具书换成真的吧,还是古人说得好,书中自有黄金屋哇。
本来我的工作还可以细致一些,可是因为外边不停有人走动,使我无心恋战,所以就草草收场了,本次收获(当然也是你的损失)如下:
现金:36700元
钻戒一枚
DVD一张
果汁一瓶
情书十封
总价款因有情书在内,无法估计。
虽然想多给你写点,安慰一下你无助的心灵,但因有新任务在身,不便多谈,情长纸更短,思伊夜难眠,后会有期(不好意思,抄你情书里的一句做结尾吧)!!
恕不留名
X年X月X日于灯下急就
|
|
2005经典话语古人版
|
1、孔子路过泰山脚下,有一个妇女在墓前哀伤地哭泣。孔子手扶车沿听她哭诉, 并让弟子黑色传奇问她缘由,妇女说:“以前我的公公被老虎咬死,我的丈夫跟着被老 虎咬死,现在我的儿子也被老虎咬死了;” 孔子说:“事情都过去了,又何必伤心?” 妇女说:“不仅如此,这里还有繁重的苛捐杂税”; 孔子道:“那为什么不离开这里呢?” 妇女说:“我怕失去低收入者作为纳税人的荣誉!” 孔子于是对黑色传奇道:“小子识之,苛政虽猛于虎,然纳税人的荣誉牛B于苛政 也!”
2、汉朝的淮南王刘安派人进山访仙,从仙翁手里得到了一张仙方。他把自己关进 暗房里,炼起仙丹来。八卦炉里炼出一些圆滚滚的仙丹,他一口气吞下5颗,飘飘悠悠 飞上天去了!门外的鸡犬一看,也跟着大吃起来,不一会,空中一阵鸡鸣狗叫,原来它 们也飞上天了!黑色传奇问道:“刘安,你家的鸡犬怎么也跟着成仙了?” 刘安说:“为了防止拉登发动恐怖袭击、撞击天庭,我特意实行“一人得道,鸡犬 升天”制,在任何紧急情况下,都能及时帮助疏散与救援,这是一个安全上的举措,并 不是专门把成仙作为福利”。
3、秦始皇修筑万里长城时死了许多人,孟姜女的丈夫万喜良也在其中。听到这个 消息,孟姜女只觉得天昏地暗,一下子昏倒在地,醒来后,她伤心地痛哭起来,只哭得 天愁地惨,日月无光。不知哭了多久,忽听得天摇地动般地一声巨响,长城崩塌了几十 里,露出了数不清的尸骨。孟姜女咬破手指,把血滴在一具具的尸骨上,她心里暗暗祷 告:如果是丈夫的尸骨,血就会渗进骨头,如果不是,血就会流向四方。终于,孟姜女 用这种方法找到了万喜良的尸骨。她抱着这堆白骨,哭着说道:“老万,你的死跟你鸭 本人素质不高有关啊!”
4、三国演义里,诸葛亮造木牛流马,用来运送粮草,以此大败曹军。但后来木牛 流马却失传了,即便是诸葛亮的得意弟子姜维也不会造。诸葛军师临终前众将问他: “军师,木牛流马这般好用,为何您再也不造了?” 孔明长叹一声曰:“某交通学大学士、大教授的研究结果表明,木牛流马的污染比 汽车飞机大,为了子孙后代的幸福,你们还是等着坐汽车吧!”
5、老栓也向那边看,却只见一堆人的后背;颈项都伸得很长,仿佛许多鸭,被无 形的手捏住了的,向上提着。静了一会,似乎有点声音,便又动摇起来,轰的一声,都 向后退;一直散到老栓立着的地方,几乎将他挤倒了。 “喂!一手交钱,一手交货!”一个浑身黑色的人,站在老栓面前,眼光正像两把 刀,刺得老栓缩小了一半。那人一只大手,向他摊着;一只手却撮着一个鲜红的馒头, 那红的还是一点一点的往下滴。 老栓慌忙摸出洋钱,抖抖的想交给他,却又不敢去接他的东西。那人便焦急起来, 嚷道,“怎么?嫌贵?舍不得银子?” 老栓还踌躇着,黑的人便抢过灯笼,一把扯下 纸罩,裹了馒头,塞与老栓;一手抓过洋钱,捏一捏,转身去了。嘴里哼着说:“这血 馒头是药,怎么能当馒头卖!价格不贵,不同意降价!”
6、宋代穷儒陈世美,进京考中状元,被招为驸马。其发妻秦香莲带二子上京寻 亲,陈世美翻脸不认人;秦香莲悲痛欲绝,发誓要讨还情债。陈世美勃然大怒,上表朝 廷奏曰:“臣以为,开封自古就是神圣之地,岂容外地人随便进入?应该建立人口准入 制度!同时,对那些恶意讨情之人,应坚决打击!”
7、武松醉打蒋门神、替施恩夺了快活林之后,中了张都监、张团练的计,几乎命 丧飞云浦。武松杀了张都监的几名爪牙,寻思了半晌,怨恨冲天:“不杀得张都监,如 何出得这口恨气!”便去死尸身边解下腰刀,选好的取把将来跨了,拣条好朴刀提着, 直奔孟州城张都监的后花园。 张都监、张团练、蒋门神正在鸳鸯楼吃酒,冷不防武松闯了进来,噗噗几刀砍死蒋 门神、张团练。武松踏着张都监的脑袋喝道:“你们这帮贼子,为何黑道白道勾结、串 通一气害我?” 张都监颤颤巍巍地答道:“说句实话,官匪勾结的重要原因,是我们的待遇过低了 !”
8、有一日,窦娥碰到苏三、杨乃武、小白菜等人,就问他们:“你们都平反昭雪 了吗?”众人说:“都昭雪了”;窦娥便道:“我说什么来着,咱们的司法就是公正! 那么多案件从错的纠成正的,这难道不是司法公正的体现吗?”
9、一天,周扒皮去找刘文彩,“刘大哥,我们村那些穷棒子们发牢骚,说他们活 得太苦、活得没意思”; 刘文彩说:“他们是我国巨大的财富,没有他们的辛苦哪有咱们少数人的享乐,他 们的存在和维持现在的状态是很有必要的。” 周扒皮说:“有的长工说他想读书!” 刘文彩道:“咱们的教育改革已经成功了,他还嚷嚷个屁!” 周扒皮说:“他们说收租院放高利贷是暴利”; 刘文彩道:“放高利贷就该暴利,谁让他们不幸生在X国了?我们就是要把暴利进 行底!” 周扒皮说:“他们还说现在收入差距过大,存在两极分化”; 刘文彩道:“纯属放屁!大家都在同一个经纬度上,又不是一个在南极、一个在北 极,哪来的两极分化?!”
10、董存瑞牺牲后到了天堂,上帝问他:“你是怎么死的?”董存瑞说:“为了炸 敌人的碉堡,被炸药包炸死的”; 上帝听后勃然大怒,说道:“胡说!你胆敢骗我?” 董存瑞说:“我没骗您啊!” 上帝说:“你以为我不懂科学吗?谁不知道,爆炸只会产生水和二氧化碳,你不是 被水淹死的、就是被二氧化碳薰死的,怎么可能是被炸死的呢?!” |
|
黑客反击战
|
作者:不长叶子的树
“在未来的时代里,只有黑客能改变这个世界的所有秩序,无论是经济秩序,还是军事秩序。” ——德国《快捷报》
我在这个圈子里小有名气,人们称我为天王。 这本来是一个独一无二的称呼,但后来这个圈子的影响越来越大,人也越来越多,一些高手也被称为天王,不过他们的天王后面总要带名字,比如说,天王肥猫。他是我唯一看得起的少数几个圈内人之一。但圈内人只称他为天王肥猫,或者肥猫,从没有简称为天王,因为圈内人都知道,也都公认为,真正的天王只有一个,那就是我。
在这个圈子中,我是个傲慢的侠客。从小我看着金庸古龙的书长大,在我小时候的梦里,除了面目不清的女人身体外,就是古树栈道,落英缤纷,铁马金戈。而我,仗剑走天涯,笑傲江湖。我时常想象我在寂静的荒山,忽明忽暗的磷光,仰望无穷星空,梦想自己是万能的圣者。
我当然没办法成为武功盖世的高手,我拼命地锻炼身体,但除了在体育课上拿90分外,还是没能飞檐走壁。于是我把我的梦想寄托在网络。 忘记说了,这个圈子里的人,被称为网络入侵者,简称黑客。英文是HACKER或者CRACKER.当然,真正的黑客只说自己是HACKER,他们看不起那些到处破坏攻击的CRACKER.这是个奇妙的世界,在这个世界里,你可以随心所欲,从另一个角度来说,人能成为万能的主宰。你想象不到0和1组成的世界是如此奇妙。我也想象不到,所以,当5年前我第一次接触网络时,我就知道我失去了自己——我将从此迷失在现实和虚幻之间,寻找梦想中的国度。
每一个沉迷网络的人都是在寻找自己的精神家园,他们的愿望,他们的忧伤,他们的欢乐,只有在网络中才能找到,也只有在网络中才有充实。他们把网络看成自己的伴侣,他们想象冷冰冰的机器后面是如火的热情,可以把人完全吞噬的热情。
我也曾经如此投入过。当有一天我从昏睡中醒来,看见女友含着泪水的眼睛,一步步退后,打开门,然后轻轻的关上。在门即将闭上的一刹那,我分明看见了一颗晶莹的泪珠,滑过空气,滑过网络与现实的夹缝,清脆的落在房门口尘积的地板上。
然后门关上了,我再也看不到现实,再也听不到车来车往人来人去,再也闻不到女人悠悠甜甜的体香。我努力的从床上坐起,越过闪烁的屏幕和嗡嗡的蜂鸣,走到卫生间的镜子前,我看见了一个面目狰狞眼眶浮肿头发凌乱的怪物,奇怪的是,我似乎看到了怪物的头上闪烁着绚丽的光环。
那天晚上,第一次有人称我为天王。
我不知道肥猫是个什么样的人,他似乎比我还神秘。我第一次遇到他是在一所大学的系统里,我花了几分钟进入了主机,找到了几个后门,很轻易的获得了管理员的权限。那时我还只是大三的学生,我只是把网络作为消遣的手段,我从来不认为网络能让我得到性爱的高潮。我在系统里闲逛,体验着偷偷摸摸的快感,就象第一次在女朋友的家里,手忙脚乱地脱下她的衣服一样。我没有对系统做任何修改,我严格地遵守黑客第一准则:不对入侵的系统做任何破坏,除非万不得已。我顺手看了几封信,没有发现刺激的东西,正想走时,我发现了一个志同道合的人。很明显,这是一个刚入门的菜鸟。他可能是这个系统的一个普通用户,这让他有很多便利去验证刚学到的知识。他在密码文件里翻看,试图找到没有被shadow的密码。我注视着他的动作,考虑要不要和他打招呼。毕竟,能找到一个可以讨论问题的人不容易。而现实中,我遵守着黑客第二准则:不对任何人谈论自己是黑客,和所破解的系统。
我显然是小看了他,他很快注意到有人在记录他的动作,于是立刻掉线走了。我查了一下他的IP,发现被隐藏了。我笑了笑,点燃一根烟。 第二次,我知道了他叫肥猫,其他我没有问。黑客的准则三:不要询问其他黑客私人问题。肥猫也只知道我叫不长叶子的树。这个名字只被叫了一年,在我大学毕业后的某一天,在谈了三年的女朋友离开的那个晚上,我被称为天王。
我知道肥猫不服气,虽然他基本上是向我学的,但他的水平,说实在话,不在我之下。也许是我的孤独,让我有一种凌驾众人之上的超越感。圈子里的人都知道,我并不经常上网,但只要一上,无论多严密的系统我都能长驱直入。我知道肥猫也可以,但也许是他太频繁的侵入,使得他失去了尊重。
我的被人尊重源于我对网络的超越,而我对网络的超越源于那一颗晶莹的眼泪。在网络与爱情失去平衡时,我选择了两者都逃避。 我知道,逃避不是永远的,但我没想到这么快,我就被卷入了一场战争。是的,战争,属于黑客的战争。
我走进办公室,一切都和往常一样,同事们坐在属于自己的小隔间里,面对着计算机紧张的忙碌。大学毕业后我就来到了深圳这家大型的IT企业工作,我之所以选择一个大型的公司,是因为大公司可以轻松的打发时间。我没有想过发财创业,我的热情已经奉献给了其他的爱好。我也构想过将来,和女朋友吃饭睡觉上网是唯一的内容。现在这个内容发生了一点点变化。
我坐在属于自己的小隔间。3平方米,只少不多。有时我很惊讶一个人怎么能一整天坐在这么一个狭小的空间。我通常是从早上8点到晚上9点。计算一下就知道这个3平方米的空间消耗了人生命中的百分之六十。如果把睡觉的时间和床的空间加上,就可以得出一个令我吃惊的数据。人一生百分之九十五以上的时间局限在五平方米的空间。
幸好人的思想是自由的。有一个无限的空间让我们去想象。 我打开机子,一阵熟悉的嗡嗡声。还有熟悉的WIN98欢迎界面。我不喜欢把开机画面改变,从多年前我从DOS3.3第一次转到WIN3.1,我就爱上了这个“窗口”。WIN2000早就出来了,但我没有装。里面的漏洞太多,从我的眼光看,简直是千疮百孔。当然,另一个原因是,我的机子是公司统一购买的戴尔机,操作系统是预装的。这和两年前微软大规模查处盗版有关。对于我所处的大型IT公司来说,是很好检查目标。原因很简单,公司有钱赔。
WIN98消失,出来一个小小的绿色窗口。这是我自己编的一个小软件,用来记录我所在网络的异常情况。公司有自己的局域网,对员工的上网做了严格的限制,很多站点都不能去,尤其是免费邮箱。从保护商业机密的角度,无可厚非。虽然这对我来说不算任何障碍,但我并没有改变它。我不想在公司引人注意。公司也有不少网络高手。网络管理员小茜就是一个。我很欣赏她,作为一个非科班出身的女孩子来说,水平很不容易了。据说她去年刚毕业来公司的时候,被主任打发去做文员,完全是凭借自己的努力成为网管。
虽然我没有改变局域网的设置,但我终究还是装了一个自己写的特洛衣木马,通过服务器的后门检测网络。我这么做没什么目的,只是本性使然。虽然公司研究开发的项目是国内领先的技术,有不少公司窥视,但我并认为真会有什么网络间谍。那只是小说电影里的情节罢了。
我看了看绿色的窗口,立刻注意到一个不寻常的情况。报告显示,昨天服务器有人作为超级用户登陆了,而据我所知超级用户只有两个,就是主任和小茜。小茜昨天已经出差了,主任几乎从来不登陆服务器,他每天的会太多了。
会是谁呢?我想查一下,但有点犹豫。这不是我的分内事。停了片刻,我还是想看一下。查阅的结果让我吸了一口冷气。 公司向国家申报的863课题的机密资料,也就是目前国内的第三代移动通讯的一种密码算法的资料,被人下载过,而要命的是,下载的地址是公司外部。我稍微一看就知道,可以不用去查IP了,这绝对是个天王级人物,也不知道中转过多少次才登陆,查也没用。
我有点兴奋。这在圈内绝对是大事件,如此近在咫尺! 我当然没想到,这看起来只是公司的商业机密被窃取的事情,到最后由于政府与政府之间的摩擦,变的完全不受控制。
我不知道该不该对主任说。很明显,我没有证据说服主任,就算能说服主任,恐怕我在这家公司也干不长久了。公司对商业机密的事情很敏感,每一个员工进公司的第一天,被灌输的就是保密。计算机的光驱和软驱都卸了。不准看的不看,不该问的不问,不该说的不说,不该传的不传。就算是一个部门,不同项目组间也严禁传阅资料。我并不是密码算法组的人,如果我说密码算法的资料被窃取了,那么今后我在领导的眼里恐怕就成了一块心病了。犹豫了很久,我决定先找小茜。
打通小茜的手机时,她正在北京。我简单的说了一下。当然不会说自己监控网络,只是说自己作为普通用户登陆后觉得服务器里的文件好象有点凌乱。小茜没很在意,说明天回来后看一下。这种反应在我的意料中。我决定今晚监控一下。我知道与密码算法配套的还有一个说明文件,看起来并没有下载过。
今晚等着你,我自言自语说。 晚上我很早就回到宿舍。我一个人住一室一厅,和所有单身汉的家一样,衣服裤子袜子满地都是。宽大的双人床一年多没有睡过两个人了。没有什么家具,除了桌子和电脑。还有乱七八糟的光碟,大部分是各种工具,当然还有黄片。这是每一个单身的电脑用户所必备的。没有什么游戏碟。很奇怪,我对游戏不感兴趣。我只喜欢在网络里游荡,从一个城市到另一个城市,一个人,没有影子。是的,网络中没有影子。留下影子的不能称为黑客。
我拨号上网。公司的内部服务器只对内部局域网开放端口21和23,也就是TELENT和FTP功能。有专门的对外的服务器。内外服务器之间有专门的网关相连。我先输入公司的网址,进入外部服务器,然后通过TCP/IP的漏洞进入内部局域网。其实公司的防火墙做的非常出色,如果我不是公司员工,要突破估计也要几个小时。只是,怎么说呢,家贼难防。
家贼难防?我忽然心里一动。对了,除了公司内部人员,有谁可以轻易地进入系统?又有谁知道公司有这么一份资料?我立刻想到了一个人。刘民。在我的印象中,计算机水平能达到黑客级的,也只有他了。更巧的是,他上个月辞职了,去了一家同行业的美资公司。那家公司和我所在的公司是竞争对手。
我守侯着,这时ICQ的图标闪动起来。是肥猫。 忙啥呢? 瞎忙。 绿色兵团没跟你联系? 没有。 他们叫我帮忙,黑他美国佬一把。 为什么? 还不是飞机的事。 我记起来了,前几天美国的飞机在中国的领海上空,把一架中国飞机撞毁了,自己也降落在海南。现在网络上群情激昂。政府的态度也还算坚决。 我笑了笑。当然肥猫看不到,我从来不用微笑符。我就是我,网络孤独的侠者。 好好干,把老美修理一下。 没问题,不过这狗日的美国网站还真有点不好对付。我们正准备五一来一次大行动。红客联盟和飞鹰都参加。 我吃了一惊,如果这样的话,可真是黑客世界的大联手。 肥猫说了几句话就下线了。这么多年的交往了,他知道我喜欢独来独往。而我陷入了沉思。我知道我是想用网络逃避,一年了,我不知道自己是对是错,因为从来没有和人深入地交谈,我的宿舍好象已经很久没有人来过了。我似乎闻到了一个人的躯体腐烂发霉的味道。它回荡在房间,侵入到我的毛孔,透过机器的外壳渗透到我的心灵家园。
也许,我该改变一点。 沉思中,机子突然发出尖锐的鸣叫。有人进入公司内部服务器了。 我的血液开始沸腾起来。每一个要上战场的将军,他的眼里只有敌人的鲜血。他渴望听到敌人垂死的呻吟,还有扭曲的痛苦。 我对屏幕残酷的笑了。他走不了。我已经在服务器上加了下载限制,文件的速度只能是几百字节,我会有很多的时间追踪敌人的藏身之处。 我用嗅探器开始搜索。看得出来,对手完全没有防备,在等待文件下载的过程中,他悠闲的在服务器中漫步,熟悉的打开一个又一个文件。我越发坚信,他是,或者曾经是一个内部人员。
快成功了,还有十秒钟,我就能知道这个太岁头上动土的家伙躲在那里了。我轻松的靠着椅子,吹了一声口哨。 我没想到事情变化得这么快,那一瞬间我根本没有反应。作为一个天王,这是无比耻辱的事。我可笑的建立了多年的自信在几秒内完全崩溃。 因为,这个时候,我的屏幕蓝光一闪,音箱里发出一声长长的叹息,或者说,放了一个很舒服的屁,之后便完全沉静了。 我呆若木鸡。
我走进办公室的时候整个脑袋都是无数个旋转的黑洞。昨天晚上彻夜未眠,为了把我的系统恢复过来。当然我可以重新格式化,重装系统。但一个真正的黑客永远不会这样做。这意味着什么?耻辱!就象一个鲜红的十字挂在胸前,虽然除了自己没人能看见。真正可悲的是,我不会象很多人那样给自己找逃脱的借口。所以我彻夜的分析检查。CMOS没有被摧毁,硬盘的数据基本上都在,看来攻击我的病毒并不是恶意的破坏,但无论如何我就是无法重启。我狠很咒骂着那个该死的同行,咬牙切齿的敲打着键盘。在凌晨六点多钟,终于在系统启动文件中发现了一个奇怪的不应该存在的文件路径。打开这个文件浏览后,我哭笑不得。
一个恶作剧而已。这个程序的作用是让我的系统在24小时内不能启动。24小时后,该程序自动删除,系统就会恢复正常。 我咒骂着走进办公室,我昏昏沉沉的脑袋立刻感受到了不寻常的气氛。当一个人走进工作了三年的办公室,哪怕是地上多了一只蚂蚁你都会感觉到有所不同。当然这不是蚂蚁的问题。每一个同事的脸色都很不正常,可以说是面如死灰。大部分人对着计算机发呆。
我知道我错了。我错怪了昨晚的黑客同行。因为整个公司的系统全部被攻击了。每一台计算机,只要和服务器一连接,立刻被感染恶作剧病毒。 很明显,不是昨晚的黑客所为。如果是他的话,他只会对我的机子攻击。而现在,没有目标全盘进攻,这种病毒只能是预先放置在服务器中,在某个特定的时刻发作。黑客没有办法在连接服务器的同时就启动程序,如果那样的话,他自己的系统也会被影响。
一声巨响,门被撞开了,主任冲了进来。在我为公司工作的三年里,我从来没有见过他跑这么快,也没有见过他的脸色这么惨白。主任不过三十多,也是做技术出身,因此在他的领导下,我们其乐融融——做技术出身的领导,一般是没有办法严格起来的,当然管理上就有点混乱。
立刻就有同事上前请示怎么办。有人说要重装系统。我刚想出声反对,主任气喘嘘嘘,但是态度坚决的说,我已经通知了公司领导,而且叫小茜赶回来,她现在已经在飞机上,大家等等。
就这一句话,我就发现平时看不起主任,实在是错怪他了。一个领导,永远不会匆忙下结论或做一件没有把握的事。我在考虑是不是告诉他怎样解决这个问题。昨天找到症结所在后,我已经顺利的恢复了系统。
在等待小茜从北京赶回来的几个小时里,同事们聚集在一起热烈的讨论。平静如水的科技工作者的生活难得有点波澜。如果你是做开发的同行,你就会知道上班下班吃饭睡觉的枯燥了。除了办公室的人,你见不到任何新面孔,单身小伙子们闻不到任何女性的气息——仅有的几个女孩子,也是不敢恭维,或者说,天天见面,已经可以不必把她们当女孩看待了。男士们过着快乐孤独的生活,女士们恨恨的咬牙——兔子为什么不吃窝边草?
我估计小茜就这么想的。按道理来说小茜属于不算漂亮也不算丑的一类,这类女孩构成了这个社会的主体。只不过技术上出色的女孩总是失去了被关注的女性一面,特别是泼辣的小茜。用泼辣这个词我觉得有点对不住,但想必也没什么人反对——每一个同事都受过了她的训示:要帐号?找主任签字去找我干嘛!签完了我自然会给你分配你急啥急?要用光驱?又想拷什么黄色图片吧?装软件?服务器什么软件都有,想要什么我给你装!三级还是A级?
得,不算丑陋的小茜在其他几位更丑的女士顺利外卖后仍旧独来独往,北方的卷舌音响彻在办公室的上空,成为一道不算迷人的风景。 胡思乱想之际,主任走了进来,拍了拍手,做了一个大家安静的手势。 各位,主任脸色凝重的说,我刚才和市安全局网络安全科联系过了,这不是一个孤立的事件,昨天夜里,市里有好几家公司受到了攻击,还有政府的网站。据说,攻击来自美国。
我知道是谁了。PoisonBOx,一个激进的美国黑客组织。自从中美飞机相撞事件以来,该组织不断在网上扬言要攻击中国网站。前几天已经有几家政府网站被入侵,被修改了主页,当时看了新闻也没往心里去,没想到居然发生在我身边了。但,我心中升起一丝疑虑,这和民间的科技公司有什么关联?
我立刻想到了答案。公司的产品有一些卖到了被美国贸易制裁的国家,比如说,伊拉克的光纤骨干网。美国经常指责中国政府不顾国际禁令,支持一些大公司卖产品,其中就有我们公司的名字,当然政府和公司对外都是否认的。私下和同事交谈,都把美国骂的狗血临头,什么玩意,在那里指手画脚,12亿中国人民是被吓大的?
其实我本人对美国并没有什么坏感,当然也没什么好感,我最讨厌的是日本。美国毕竟还标榜着自己的民主,而日本,不折不扣就是虚伪狡诈贪婪的民族。从学校出来后,我已经没有热血沸腾的激情了,对什么事情都是无所谓,不过在一年前攻击日本的行动中还是和肥猫合作过。我懒散的态度在女朋友离开之后达到了颠峰。用肥猫前几天对我说的一句话概括:我看你现在,就算有一个女人躺在你床上,恐怕你都懒得脱她的衣服了。我记得回了一句话:如果她主动脱的话我可以考虑。
日子就象流水,永不停息,永不回头。
小茜走进办公室的态度很从容,这令我对她刮目相看。谁说的来着?真正遇到危险时,女人永远比男人镇静。 小茜打开机子开始检查,我知道她几个小时之内是不会有什么结果的,她的水平我很清楚。 五分钟之后,小茜站起来,对守侯在一旁的主任说了两个字。虽然这两个字是平时听到最多上口率最高的词,但打死我也没想到这两个字可以如此轻易的说出来。 小茜说,搞定。 我再次目登口呆。 若干日子后,我问起小茜这个问题。当时我们全身赤裸汗水淋淋,在我那张双人床上战斗了很长一段时间。小茜在我怀里眨了半天眼睛,才从亢奋的边缘回过神来。你说这事啊,这有什么,我在飞机上想了很久了,安全局的人都告诉我是PoisonBOx干的,他们的风格你也知道啊。
我无话可说。一个天大的误会。如果不是小茜说出那句话后在我心目中的形象急剧变高大,我就不会更加注意她,就不会发现她泼辣里温柔的女性一面,也就不会掉入陷阱了。当然,我对掉入这种陷阱没什么后悔的,甚至还有点满意。
小茜说了搞定后主任的脸色变得红润起来。他亲切的拍了拍小茜的肩膀,这通常是领导的专利,也是表示友好的手势。基本上来说,被主任拍过肩膀的人,下个月有百分之八十的可能加一级工资。小茜可能也知道这一点,因为她的脸色也跟着红润起来。也许我更乐意把这理解为女孩的羞涩。
一切恢复平静,同事们带着一点可以被称为遗憾的表情开始了工作。我理解这种表情,我也希望世界偶尔乱一下套,中规中矩的生活太久了。可惜这乱套的时间太短了,才半天。
下班时,小茜走到我面前。有空吗?她不动声色的说。 我不知道她为什么找我,在我记忆中,小茜到公司的一年里我和她说过的话屈指可数。我从来不喜欢事业心这么强的女孩,何况以前的女朋友在学校被称为系花。 有空,什么事? 我们去老莫餐吧,我有点事和你说。 我带着一点好奇与奇异的感觉和她走在路上。我甚至在想,她不会是看上我了吧?不排除这种可能,在部门的光棍中我不算太差,重要的是,我看起来老实。有不少同事,泡吧喝酒出入娱乐场所是常事。在以事业为主要生活目标的深圳,没有时间去寻找另一半,对于科技人员来说更是如此。生理的需要只有靠非正常途径解决,大家心知肚明。
在餐吧里,小茜根本没有给我自以为是的想象机会。 你昨天进入过服务器? 我吓了一跳,我立刻想起来了。我对自己屡犯低级错误后悔不已。昨天的突然事件让我根本没有机会消除我在服务器里的登陆记录!!而发生了这件事后,小茜自然会彻底清查服务器里的程序,我的后门监控软件不可避免的显形了。
如此致命的错误居然出现在天王身上!! 我想我的脸色很难看,面对着小茜不动神色的脸,我实在不知道说什么好。大家都是圈中人,骗是骗不到的。虽然空调很冷,我的额头上却出现了汗滴。 我决定装傻,顶多承认装了个监控软件,一个部门的人,在服务器上装个程序也没什么。 也许看穿了我在想什么,小茜严肃地说,主任对这件事很重视,认为有内部人员泄密,要彻底清查。 我沉默。臭丫头想蒙我?我出道的时候你还在用小霸王呢。 万一,主任要动真的……?我对主任不感冒,主任对我也不感冒。我们这些早来公司的员工从来就没把从另一个部门调来的主任放眼里,主任也对我们无可奈何。 正在沉思着,小茜忽然不可仰止的大笑起来。她捂着肚子,笑得花枝招展妩媚娇艳。花枝招展,妩媚娇艳,这两个形容词是我后来加上去的。当时我楞了好几分钟才反应过来。臭丫头原来是耍我的!
说是这么说,我呆了几秒钟也笑了。周围的客人看着我们忽然毫无征兆的大笑起来,都莫名其妙。 从那一刻起我对小茜有一种特别的感觉了。
我对小茜详细的说明了事件的经过。我没有告诉她我在黑客世界里的显赫身份,我只是说,我通过那个后门监控软件查到了有人侵入服务器,于是我回去后继续追踪,就要查到对方的IP时忽然发生了系统崩溃的事。
小茜很用心的听着,她的睫毛一颤一颤让我时不时想入非非。我对自己很失望,也许真是很久没有接触女人了,对女人的品位越来越低了? 小茜不会想到我在想什么,要知道的话她说不定会把眼前的热茶泼到我脸上。我只是推测,后来证明我的推测比较正确。因为若干日子后我和她正在亲热时,一不小心说出了现在的想法,小茜很不客气的一脚把我从床上揣了下去。
你认为是刘民吗?小茜说。 很有可能。 我们需要合作,找出那个窃取资料的人。 我注意她并没有说刘民的名字。 我想不出有什么必要和一个女孩合作,但我也想不出在这种情况如何才能拒绝她的合作请求。我只能说,没问题,还请你多指点。 看起来小茜很受用这句话。从一个女孩的表情可以看出她的喜怒哀乐的话,说明这是个纯洁的女孩,当然也能说肤浅。我相信是纯洁。 小茜的宿舍很近,我建议去她那里。我不想带她到我的狗窝,我在公司的形象一直是整洁斯文。何况,我的机子里有很多的儿童不宜的东西,我相信小茜看到之后会脸红的。也许,还因为我的桌面是前任女友的照片。从她离开后,我保留一切东西,什么都没改变。这是否意味着我想挽回过去和逃避现实?
小茜犹豫了一会儿同意了我的建议,我把这犹豫理解为女孩的矜持。到了小茜的宿舍后我知道错了。 这纯粹是另一个狗窝,我目瞪口呆的看着小茜收拾着四处散乱的东西,花花绿绿的女性用品让我大开眼界。 看什么看!!小茜没好气的说。 我说没看,谁想看这,又不是没看过。 我看你的眼睛瞪得比牛还大! 我懒得和她吵,和一个正在气极败坏的女人吵是最愚蠢的事情。好在小茜很快就将一堆的内衣扔到衣柜里去了,并且打开了计算机。 你相信那个窃贼今天还会来吗? 我觉得他会来。 为什么? 不为什么,直觉。 又是直觉,女人的直觉啊!我无话可说。 事实证明女人的直觉不一定正确。我和小茜守侯了几个小时仍没有等到窃贼的出现。我和小茜都使用了窃贼这个词,含着对黑客世界的败类的蔑称。 我强打着精神。我可是昨晚整夜未眠。到了十一点,我说要回去了。为了一个女人可笑的直觉,我可不想奉陪。 看得出,小茜是准备耗上了,从她送我出门时那兴致高昂的表情就能看出来。我想起了肥猫,如果他在的话,应该是个很好的帮手。 走啦,还想什么?小茜不耐烦的说。她巴不得赶快回到机子前吧。 我说,没想什么。 我转身离开。 走下了楼,我抬头看了看小茜的窗户。寂静的黑夜中,一点昏黄的灯光透出,一个模糊的影子晃动着。我呆立了片刻,终于走了。
回到宿舍后我照例打开机子,收到了肥猫的留言。他告诉我美国黑客组织PoisonBOx的行动升级了,已经开始大肆攻击中国网站,并由政府网站扩散到民间网站。他知道我在一家大公司上班,因此警告我要小心防范。他当然不知道我的公司已经被攻击了。我们一直严格遵守着黑客第三准则。他除了知道我是在一家大公司上班外其他一无所知,甚至连我在深圳都不知道。而我,除了想象他是一个肥佬或者养着一只懒散的肥猫外,也是一无所知。这也许构成了我们能长久交往下去的前提。
肥猫最后还说,由于美国黑客的行动升级,中国的黑客组织决定组织大规模反击。一个由中国红客联盟,中华黑客联盟和中国飞鹰组织为发起人的临时指挥部已经成立。作为逍遥派的杰出代表之一,肥猫被邀请为其中的一员。
我们将在最近举行一次协调大会,部署五一大反攻的计划,肥猫说。 我知道肥猫想叫我参加,否则他不会告诉我这么多机密。我不知道怎么办。我痛恨自以为是指手画脚的美国,但我实在太累了。 网络与现实之门开开合合,有时我分不清我到底是在虚拟世界,还是现实世界。也许唯一真实的,是我桌面的那张照片,还有很久很久以前留下的晶莹的眼泪。 从那时起,我告诉自己,要远离网络。 我在思索中睡着了。我做了一个梦,,梦里有一个女人在晃动,有点熟悉,但看不清脸。背景是无数色彩绚丽的数字,迎面飞驶而来,让我有一种晕旋的感觉。 我陶醉在这种晕旋的感觉里,就象喝了一杯沉酿的酒。
我精神抖擞的走进办公室。一进门就看到小茜无精打采的趴在桌上。我知道这个直觉的女孩白辛苦了一晚上。我上前问候了一句,小茜恨恨的说,我就不信他不出现,今天晚上我们再等着。
我注意到她很自然地用了一个词:我们。我张嘴想说,我可没同意和一起。但我张了张嘴,终于没有反对。 这是个好机会。有一个女人总比没有强,说不定,晚上还能发生一点故事。 我不是小人,但也不是君子。我就是抱着这种龌龊的思想再次来到小茜的房间。 明亮,整洁,温馨。 我傻傻的看着这个和昨天截然不同的房间,半天没想明白。看来女人是善于创造奇迹的。 小茜红着脸说,你坐,你坐。 我浑身不舒服。我宁愿是在昨天那狗窝里,没有什么男女的区别,那样我会更自然一点。在这个突然女性化的地方,我无所适从。 我紧张的坐在计算机旁,我闻到了小茜的香水味。在我印象中小茜从来没有撒过香水。 看来今天又是一个不寻常的夜晚。 小茜表情很奇特的看着我。我专心致志地看着屏幕,目不转睛。 我想和你说件事,小茜说。 我的心一阵急跳。在这种情况下,一个女孩用一种很犹豫很羞涩的口气对我说,我想和你说件事!!! 我装做很平静地说,什么事? 其实,昨天你走后,我并没有监控那个网络窃贼,我花了几个小时把屋子里彻底打扫了一遍。 我哦了一声,没有说话。在这种情况下,不做任何反应是最正确的选择。但我没想到,小茜要说的话如此令我吃惊。 因为我知道,我是抓不到那个网络窃贼的。 我又哦了一声,我还没反应过来。 因为,我就是那个下载文件的人。 也许是太吃惊了,我的脑袋一片空白。 小茜很同情的望着我,就象看一条快死的鱼。 从外地下载保密资料的文件,实际上就是一个局。由主任布置下来的。 为什么?我发现我的喉咙有点发干。 因为我很早就发现了你装的那个监控软件,但我不知道是谁装的,于是我向主任做了汇报。主任和我商量了一下,认为这事关重大,决定设一个局,把这个人引出来。 我有气无力的说,那你为什么告诉我?这不正好,人赃并获。还等啥,通知公安局啊,安全局也行。要不要现在就把我绑起来? 我为什么要通知公安局?小茜吃惊地睁大眼睛。一开始我以为有商业间谍呢,所以才向主任汇报的。现在真相大白了,你只不过是为了公司的利益而已,我还应该感谢你呢,让我省了好多事。
我傻乎乎的听着。这几天我经历的事情太多了,老是出乎我的意料,这让我的思维有点迟钝。我这个可笑可怜可悲的天王啊,被人玩弄于股掌之间都不自知。我决定,以后谁再叫我天王我和谁急!
我反应过来后,忽然想到一件事。我说,你昨天就知道是我做的了,为什么不告诉我? 我说这话的时候带着明显的气愤的语气。我在想,这他妈的不是玩我吗? 小茜的脸色阴晴不定,也不知道在想什么。我想她是不是在找什么借口?不管你找什么理由我也决定摔门就走了。 你以为,我昨天花了几个小时收拾房间,是为了什么? 为,为了什么?我忽然之间又不会说话了。 小茜直瞪瞪的看着我,不说话。 我也不说话。房间的气氛很微妙。似乎在发生一种奇妙的变化——由原来的尴尬僵持,变得暧昧起来。 这是很要人命的变化。我决定不走了。看谁先出声!这么做确实有点有失君子风度,但管不了那么多了。 你可以走了。小茜忽然说,我看到她的眼眶有点红。 我楞了片刻。站了起来。靠,走就走,谁怕谁啊。 在我站起来的一瞬间,小茜转过身去了。我没理她,走到了门口。把手放到门扭上。我觉得那门扭似乎有千斤重。我的手有点颤抖,我知道门开后,将会是一个世界,一个我所熟悉的旧世界。我在那个世界里寂寞孤独的行走了一年多。
我该走出去吗? 我决定回头和小茜说声再见。我要保持风度。 回过头,发现小茜趴在桌上,肩头在颤动。我张了张嘴,发现说不出一句话来。 小茜,一个普通,好强,不美丽的女孩,这和我的理想差太远了。她的皮肤不光滑,她的个子不高挑,她的声音不甜美。 可我为什么还站在这里? 一年前,我曾经放弃过那一滴晶莹的眼泪。我把它做为我过去岁月的墓志铭。我时刻在想,如果那一刻我追出去了,那我的现在将是另一个样子。 但我没有,所以我只能在这里犹豫着。我不知道爱情是什么,也许,爱情就是感动和心乱如麻? 我走了回去,把手放在小茜的肩上。不管怎么说,我已经错过了一次,我不想再次错过。 小茜的肩头逐渐停止了颤动。我们就这样一动不动。时间在这一刻似乎凝固。我知道我要做什么了。 在这一段时间里,我不再对世界冷淡了,我久违的充实感又回到了心中。一种温暖的感觉将我包围,逐渐点点滴滴渗透我的全身,每一个细胞。 我从背后将小茜抱住。我感觉小茜的身体忽然僵硬了,然后点点滴滴融化,最后,她全身乏力的躺倒在我怀里。 我们这么坐着。很久。
回到宿舍,我打开机子。我发现肥猫并没有打开ICQ.我破天荒的按下写消息按纽,弹出一个小窗口。我敲打着键盘,写了三个字——我参加!! 让该死的美帝国主义尝尝无产阶级铁拳的厉害!!!!
肥猫很快上了线。他告诉我说,正在和几个负责人开会,协调五一反击的事情。我的消息转到了他的手机上,所以他临时出来了。在他的带领下,我也进入了一个网站的秘密聊天室。这里云集着中国黑客界的精英。我发现了很多大名鼎鼎的人物,当然我也是其中之一。当我进聊天室时,受到了热烈的掌声欢迎。
由于美国政府已经觉察到了五一的这次行动,因此他们决定提前防范,在五一那天将白宫、五角大楼、中央情报局、美国联邦调查局、美国航空航天局、美国国会、《纽约时报》、等重要的网站安全保密级别提高,由允许普通用户访问改为只容许权限用户访问,因此,临时指挥部决定提前一天发动进攻,也就是三天后的四月三十号,开始第六次网络卫国战争。之所以称为第六次,是有前几次的台湾民进党上台后进攻台湾网站,日本攻击站,南斯拉夫中国使馆被炸引发的攻击战等等。
临时指挥部决定分为几个小组进行攻击。三大黑客组织的负责人,肥猫,我,以及其他几个天王级人物,分别为小组负责人,下设高手级和新手级。由高手级带领新手级进攻一般性的网站,由天王级负责对重要网站的进攻,并负责协调组员。攻击方式将主要采用拒绝服务式登陆方式,也称潮水登陆,也就是说,在同一个时间,向同一个IP地址发送大量的数据,将导致网络的严重阻塞!
毫无疑问,这是最大的一次黑客反击战! 我从没有感受如此的激动。也许,当一个人融入到一个伟大民族中时,能为这个民族做出一点哪怕是微薄的贡献时,也是自豪的!! 我期待着。 我根本没有预想到一场危险正在靠近,它足以把我摧毁。
期待是一种美丽,也是一种痛苦。我在心神恍惚中度过了一天,幸好主任看起来也有点心神不宁,可能还没从昨天的打击中恢复过来。所以我用来打发时间的最好办法就是看小茜。我颇有兴趣的观察着这个我以前没有注意过的女孩。小茜很严肃的在办公室进进出出,我看得出来她时不时会脸红一下。也许是我的错觉。我在考虑要不要把小茜吸收进五一的战役中来。
在我为公司工作的三年里,我第一次觉得,公司除了工资和奖金外,还有值得我关注的东西。 但我没有机会和小茜说这些。下班后我走出办公室,下楼,我想在路口等她。我不想在公司张扬。 有几个陌生人坐在一楼的会客厅里。套用古龙的话来说,这几个人无论坐在那里,都是最不起眼的。他们就和你在街上遇到的成千上万人一样普通,可是,千万人中只要有他们在,你就会立刻注意到他们。
我从来没有什么直觉,也不相信什么直觉,我对古大侠的话不屑一顾。可在大厅的来来往往的人中,我一眼就看到了坐在大厅一角的沙发上的这几个人。这几个人让我觉得有一种危险的感觉——就象老鼠闻到了猫的气味。
在看到我的同时,他们站了起来。很沉稳的朝我走了过来。我有紧张,我不知道发生了什么。 你好,天王。其中一个领头的中年人对我说。 我吃了一惊。在几秒的时间里,我一片空白。 也许看出了我的惊讶,中年人笑了笑,说,先自我介绍,我叫杨成,市安全局网络安全科的。 如果一个黑客遇到网络警察,最好的办法就是闭上嘴。没有充分的证据他们根本就不可能来找你。 别紧张,我们只是想找你谈谈。请和我来好吗? 杨成说话很客气,却带着不容拒绝的表情。我注意到旁边已经有同事看着我们。我只有和他们走出门。门口停着一辆小轿车,是警车牌照。 在我坐进车的那一刻,我看到小茜从门口出来,她也看到了我。可惜我没有时间和她说话,就被推上了车。 在车开的瞬间,我看到小茜在后面追跑了几步,然后车帘被拉上了,我陷入了阴暗之中。
在一间小会客室里,我和杨成面对面坐着。杨成没有说话,我也没有说话。我看过不少推理小说,我知道警察一般都会在审问之前沉默很久,让罪犯先胡思乱想,然后自己崩溃。
但我不会。我相信自己并没有做什么坏事。就算是入侵过计算机的系统,我也没做什么破坏。我一直遵守着黑客第一准则。 在我意料之中,杨成先开口了。 我们请你来,是想和你谈一谈。这不是审问,只是私下的交谈,如果你想走的话,我可以马上安排车。 我在心里笑了一下。把我当傻瓜了?不过我听到这话,心里也稍微安定了一点。 我知道你们正在策划一个五一攻击战。我想了解一下具体情况。 我不吭声。政府知道这件事我并不感到意外,网络本就没有任何秘密。我只是奇怪,他们怎么会找到我的。要知道,和肥猫这一类人比起来,我入侵系统的次数并不太多。 奸细?我脑袋中忽然冒出了一个词。我出了一身冷汗。 你们是怎么找到我的? 杨成笑了笑,说,在党的领导下,在广大人民群众的积极配合下,不要说找个人,就算是找只蚂蚁也没问题。 我暗暗的骂了一句,老狐狸! 也许是怜悯,杨成叹了口气,说,你们这些小毛孩啊,不知天高地厚,以为学到一点网络知识,下载几个木马或密码字典之类的黑客工具就以为自己是黑客了。我们是干嘛吃的?我们每天就坐在计算机面前分析黑客工具,追踪病毒行踪。我们科里哪个人拿出去不算一个天王?不要说你,稍微有点名气的黑客,什么肥猫啊,飞鹰啊,不都在我们的控制之下?
你们每天上几次厕所我都一清二楚。杨成最后下结论似的说。 我目瞪口呆地听着。 我伟大的祖国啊,强大的人民民主专政啊!我还能说什么?? 那,那,你们为什么不阻止我们?我半天才挤出一句话。 杨成笑了笑,说,因为你们没有破坏,你们是真正的黑客,不是破坏者。只要你们一旦违反了网络安全法,我就会毫不客气的把你们抓起来。其实,只要你们未经许可进入他人的系统,就算不做破坏,也已经违法了,我只不过不想这么做而已。
我也年轻过,也希望过啊,杨成的眼神掠过一丝惆怅。 我傻傻的听着,象听故事一样。 算了,我看你也不会透露五一计划的详情。你不愿说,我们也不勉强,反正我们也知道得差不多了。你可以走了。 我呆呆的站起来。我不知道回去怎么办。是告诉肥猫他们,还是退出五一反击战? 也许是看出了我的想法,杨成在送我出门时,似乎很随意的说了一句。 其实,美国这次做得太过分了,适当给他们一点教训也是应该的。我想,政府也会原谅你们的。有张盘,你拿回去看看。 我在车上才把这话回味过来。我看了看手上的磁盘。我已经猜到了里面是什么了。 果然,当我回到宿舍后,打开磁盘,我看到了一个威力巨大的攻击软件。不同于儒虫,不同于邮件炸弹,这是一个做得精致可以说是完美的程序。它可以截取远程系统的序列号。要知道,每一个用户请求登陆时,系统会对登陆名和密码进行确认,这一切都是经过数据链路层进行的。一般的黑客工具都是试图截取数据链路层的数据以获得权限。可这个程序,可以通过物理层的特性来取得权限!!
我几乎是嫉妒地看着这个软件,我宁愿用全部的积蓄换取它的源代码! 我恨恨地骂了一句。因为,这个软件的有效期是五月七号。我想都没想到要破解有效期,我有一堆的将试用版转为完全版的软件,可我根本就不用去试。 能写出这样的程序的人,你就别指望能破解。 我不是轻易被打击的人,可我的确很佩服他。我不知道是不是杨成写的,不管是谁,我都感到了自己的浅薄无知。我曾经在井底望着天,现在想起来,有太多的东西值得我去学。我知道中国的黑客水平,我算顶尖高手了,却也是拿着老外写的工具去攻击老外。就算偶尔自己写了一两个程序,也顶多是做做小修改,从来没有从系统的角度改善它。我真有点怀疑这次的攻击行动能有什么意义了。靠人海战术让老美的网站瘫痪几个小时有意义吗?是显示中国人民的技术实力,还是显示中国有十二亿人?
我长久的思索着。 电话响了,我抓起电话,是小茜。 你怎么把手机关了?知不知道我找你找得好辛苦!! 小茜的声音似乎有点快哭出来了。我记起来了,在车上我被要求把手机关上。一回来我就忙着看程序去了。 我有点愧疚的说,对不起,让你着急了。 我看你被几个人带上了一辆警车牌照的车,出什么事了? 没事,没事,这不已经回来了吗? 我不想告诉小茜这件事,一是不想让她为我着急,二也是觉得女孩的口风不紧,说不定过几天全公司都知道我的底细了。 我过来看你。小茜在话筒那边说。 不用了不用了,我急忙说。我还要花点时间研究一下那个程序,另外也要和肥猫通个气。 真不用了? 真不用了,我挺累的,想早点休息。 那,好吧。 小茜挂断了,我听出来,她似乎很失望。我把话筒拿在手上,半天也没放下。 我也很失望。真希望小茜能坚持一下。 虚伪的男人啊!
我无精打采地走进办公室。昨天晚上等了很久都没有等到肥猫,这让我很惊讶。在我的印象中,这是很少出现的情况。按肥猫自己的话来说,一天让他不上网,比杀了他还难受。
早知还不如把小茜叫来,我想入非非。 迎面而来的小茜和我打了个招呼,我向她笑了笑。小茜仔细地看了看我,发现我身上没有被警察虐待的痕迹,放心的走了过去。我感觉她有意无意地撞了一下我的肩。我对此很受用。
主任匆匆地走出去。我看到他慌张的神色。就算是前几天公司系统被黑也没见他这么慌张过。我心里一动。跟着他走了出去。 在一楼的大厅里,我看到主任和几个人正在交谈着。而那几个人,赫然站着杨成! 我的脑袋里闪过一个词——奸细!! 难怪,难怪,我自言自语。我都说不出我现在的心情了,没有一点愤怒,只是平静。我看着主任和杨成一起,走出大厅,上了那辆黑色小轿车。 我木木的站着。我的愤怒开始一点一滴回来,凝聚成火焰。 等着瞧!!我咬着牙。 主任一个小时后就回来了。他进门我就拦住他。主任吃惊的望着,我看出他的脸色很不好,几乎是雪白的。我认为这是心虚的表现。我说,我要和你谈谈。我虽然仰制怒气,但傻子都能听出我的口气不善。主任盯着我看了好一会,似乎不明白我的意思。
最终我和主任面对面坐在主任的小办公室里。 有什么话快说吧,主任似乎很不耐烦。 你是怎么知道的?我说。 什么?主任没听明白。 我是说,你怎么知道我是天王? 我看出主任的嘴突然张得很大,他盯着我看,好象不认识一样。 你说,哪个天王? 我的怒火越来越盛,居然还在装模做样! 除了网络里的黑客天王,还有谁?我竭力让自己冷静下来,说。 主任长久地看着我,然后说了一句让我无法冷静下来的话。 我不知道你是天王。 你和杨成的说话我都看到了,还想骗我?我四处找杯子或烟灰缸一类的硬物。 杨成来找我谈话,因为,主任长长地吸了口气。 因为,我是肥猫。 一个天大的笑话,我的耳边一片轰鸣,只看到主任的嘴唇在动,听不清说什么。 我想过会和肥猫见面,但打死我也想不到在这种情况下。
这是一个奇妙的社会。人和人之间的关系微妙、复杂、单纯。 我不了解主任就象我不了解大街上的一个陌生人。我了解肥猫就象我了解我自己。我知道肥猫的喜怒哀乐,就象知道自己一个人在夜晚关机之前那种似乎失去一切的悲哀。看着屏幕的一闪,陷入死寂,我的心便也空荡起来。然后我只有在黑暗中,让自己尽快的睡去。睡去不是为了本能,而是我们明天不得不工作。
肥猫和我讨论这个话题时,我和他都有一种世界末日似的感觉。 我看着眼前的主任。白白胖胖,肚子发福,带着习惯的微笑,有点浮肿的眼睛。此刻,他的微笑有点凝固,变得很怪异。你可以想象当一个人笑容出来了一半是什么表情。浮肿的眼睛是夜生活的象征,这和我是一致的。除此之外,我在主任身上找不到任何我在网络中所熟悉的特征。
我和主任就这么面对面坐着。若干时间后,我起身,走出房间。
我实在没法说什么。房门关闭时,我眼角的余光看到主任重重的往椅子上一靠,似乎失去了全身力量。
我和小茜在小区的花园中行走。傍晚的太阳有一种灿烂的旋目,两人无语。我想我越来越欣赏小茜了。一个真正的女人应该在他身边的男人重重心思时,陪着他静静地走一走。我不喜欢自作聪明说得太多的女孩。
你觉得主任怎样?我忽然问了一句。 小茜好象早就知道我要问这一句。也许是我早上从主任房间出来时就看到我的表情怪异了。 在这个社会上,人都在保护自己,都在隐藏自己,小茜似乎在自言自语,这不是一种错误,只是一种本能,就象动物的保护色。我们没有方法指责,尤其是女孩。小茜别有深意地看了我一眼。你太追求完美了,你不再改变的话,注定是遗憾中孤独地生存。
现在不是在校园中了。小茜说。 我重复了一句——不是在校园中了。 一种久违的感动出现在心底。不是为了那句话,而是为了有这么一个人对我说出了那句话。 我对小茜说,我知道。 我本来就知道。但有人以朋友的身份,以一种温暖的语气说出这句话,我不免对这个社会产生了一点信心。 我对小茜说,今晚,去我那里,好吗? 小茜好象会错意了,红着脸说,我才不去了,才几天,就想…… 我笑了。我用一种很温柔的口气说,今晚你一定要去。 剩下的一句话我没有说。今晚是确定明天总攻的最后一次战前讨论会。我宁愿让小茜红着脸想偏了。 这让我有一种大战前的紧张与刺激。
看到桌面出现的一个美丽女孩的照片,小茜的脸色很不好看。我也没指望她兴高采烈。让我惊讶的是,小茜没有问我这个女孩是谁,我还希望她能问一下,我可以告诉她我以前的情感。那个世界已经封闭很久,是需要人进去打扫一下的时候了。
我在聊天室的登陆名中敲入不长叶子的树。小茜张大着嘴看着我,作为一个网络中的自由者,当然知道这个名字代表什么意思。 是的,代表天王。 如果说,以前的天王是一个消极面对的人,那从现在起,我逃出了给自己设下的牢狱。我知道,当我再往镜子中看时,我将不再看到面目狰狞。我会看到平和,宁静,充满希望和斗志的我。
也许,是因为小茜的存在,或者准确的说,是因为偶然的机会让小茜进入了我的生活。 人基本上都在,包括肥猫。我和往常一样先和肥猫打招呼,他也和往常一样和我打招呼。我忽然觉得上午的一切似乎都没有发生过。那种熟悉亲切的感觉又回到了我身上。我相信肥猫也是如此。如果他不和我一样,那我也就不会和他交往这么多年了。
红客的领袖作为临时指挥中心的牵头人,先发表了讲话。我们就称他为RED吧。黑客联盟的组织者——BLACK.飞鹰——EAGLE. RED的口气中带有一丝沉重和不安,但愿只是我的感觉。如果我和肥猫在政府的监控下,他能例外吗? 谁也不知道RED是谁,在中国的网络中,这是一个神秘的名字——似乎在网络诞生的那一刻起,这个名字就已经存在,而且将永远成为网络史中的一个传奇。就象中国大多数黑客在入门时看着台湾软体蛀虫的教材一样。
RED告诉我们,不要在美国人的网页上留下过于激进的话。这立刻遭到了EAGLE的反对。EAGLE对美国,对日本,对印度等等非友好国家的态度从来就是一句话——灭了这帮狗日的!用政治术语来说,属于左派。
我要在美国情报局的网页留下几个字:I WILL KILL ALL AMERICANS! EAGLE敲出一个愤怒的符号。在上一次的会议中,将美国情报局分配给了他。 这不代表任何意义!RED说。 至少代表了中国还有一群有血性的男人! 我看着两人的争吵。作为独来独往的逍遥派,我不好说话,虽然我比较赞成RED.但存在的总是合理的。 小茜默默的看着,我惊讶她的态度。我想起了平时风风火火的她。我说,他们总是这样,知道吗,一山不容二虎。 其实这是鸽派和鹰派之争。这话我没说,女孩一般不关心政治,我也只想和女孩讨论生活。 我对小茜说,我们出去走走。 我希望在战前能轻松一下。他们的争吵我已经习惯了。吵到最后一般是以EAGLE的妥协告终。肥猫告诉过我,一旦做出决议后,EAGLE不会再说什么。用一句话来解释,这是人民内部矛盾。
这是一个温暖的夜晚,夜晚中有一只温暖的手,还有分布在九百六十万平方公里的一起奋斗的人。有争吵,也有欢笑,有共同的信念,有共同的敌人。
不知从什么时候起,我开始恐惧死亡。我记得在我很小的时候,我想到死亡就象面临着无边无际的黑暗。在青春发育的那几年里,对死亡的恐惧和对女人的向往同时左右着我的身体。我清晰的记得家后面的小山。那里堆砌着坟墓。豪华气派的,落魄凋零的。我时常可以看到腐烂的木材,倾倒的石碑,残破的瓦罐。为了克服对死亡的恐惧,我每天早上跑到山坡上。那里有一座气派的水泥墓。我坐在台阶前,大声朗读着英语。不知道是不是我的训练起了作用,在高中毕业后,我已经忘记了什么叫死亡。
然而,此刻,这种恐惧又回到了我的身上。当我面对着黑色的屏幕,我竟然没有勇气打开它。我怔怔地看着表。还有一个小时,攻击就要开始了,而我,却在颤抖。是害怕?是激动?
我忽然怀念没有网络的生活。没有网络的生活中,充满了朋友愤世嫉俗的指责,充满了瓶瓶罐罐的撞击,清脆响彻在大学校园的操场上。 我仍清晰的记得老师的声音:我们现在要讲的DOS操作系统,估计就要被淘汰。微软公司最近推出了一种叫WINDOWS的窗口式操作系统…… 我在声音的回荡中,按下了POWER键。 我无法确定死亡和我目前的行动有什么内在的联系,有时候我会在毫不相干的物体间联想。我穿越物体空间,就象穿越时空。 恍惚之中,无数闪烁的星星飞过,无数的数字在变换,扭曲,伸缩。我就象星孩中的大卫,知道自己要回到出生的地方。 一切静止了。我站在美国的自由女神的火炬下。上面写着:欢迎一切渴望自由的人。这里是你们的家。 我说,这里不是我们的家。我们的文化不需要侵略。 我相信这个世界终将统一,这个地球终将没有战争,没有冲突。但不是现在。 现在,我们要用自己的方式维护我们的民族尊严。
这是一个坚固的城堡。我先连接到德国柏林大学的校园网,然后转登到韩国,再转到俄罗斯,最后来到了五角大楼和航空航天局门前。这两个该死的系统连个帐号都不给我。我为这两个系统编写了两个不同的密码档。在为五角大楼的密码档中,包括了所有我能查阅到的美国军人的名字。巴顿,艾森豪威尔,鲍威尔……。我把他们的名字正着敲,反着敲,加上一个美国人对名字的昵称,加上他们的生日,他们的入伍日期,加上五角大楼的建成日期,加上美国建国年份,加上国庆日。在NASA的密码档中,则是所有宇航员的名字和历次飞船升空的日期。我满脸仇恨眼框布满血丝,孜孜不倦的守侯在机子前。看着进度缓慢的增加。三个小时过去了,我已经攻破了好几个一般的网站,可这两个系统的破解进度已经百分之五十,仍然没有猜对一个帐号和密码。
已经传来消息,白宫网站被潮水般登陆的中国人堵塞了。系统已经关闭。十分钟后开启,又再次堵塞,于是再次关闭。 这不算什么胜利,没有侵入到内部。倒是飞鹰已经侵入了中央情报局,在主页上留下了一面红旗,和中国失踪飞行员的照片。正如肥猫所说的,他没有留下过激的话。 RED也已经进入了时代周刊和纽约时报的网站,贴了一篇中国黑客声明。 我狠狠地砸了一下显示器。显示器闪烁了一下,不动声色的继续运行。 我准备向RED求助。这不是什么羞耻的事。入侵系统只有靠猜密码,有时试几次就出来了,有时好几天。我曾经试过一个星期才找到帐号和密码的。当然那时处在摸索阶段。后来总结出来了一点规律——对军事网站的帐号,就不用去试什么SU,ROOT,SYSTEM等等,根本没用。对一般的网站,用这些帐号十拿九稳。我就入侵过帐号是ROOT,密码是123456的系统。
忽然之间机子发出五佰的歌声——那里湖面总是澄清,那里空气充满宁静……。 那里当然没有澄清的湖面,也没有宁静的空气。我喜欢这首歌,因为对我来说,一个系统的内部就是一片挪威的森林! 是五角大楼!我进去了!我看了一下帐号,吃惊的发现是CHINARUSSIA,密码是STARWAR.真是侥幸。我把与美国不友好的国家名字,和与战争相关的词输入,让他们自由组合测试。看来五角大楼的程序员们也患了一个通常的致命错误——用单词作为密码。甚至连大小写都不分。
我怀着复杂的心情,开始了五角大楼内部的搜寻工作。看来,这个帐号的主人权限不小,可以修改或创建用户组。其实我也该知道的,权限大的人,除了系统管理员,一般都是官僚。越是官僚就越没有保密本能。
我轻松地打开VI,运行我编写的解密码SHADOW的程序。接下来的事情就顺理成章了。我在主页上放了一幅漫画:布什拿着导弹发射器,对着地球说,我要给你民主。 我讨厌强加的民主。 NASA的系统仍没有攻破。我决定把密码文件修改一下。漫长的假期,要做的工作多了。
我在荒原行走,饥渴。天上的九个太阳温柔地抚摩我干涸的肌肤。我把鲜血涂抹在身上,我感到一丝清凉,我知道这是死亡前的清凉,但我无法抗拒。我在手腕上割出一道深深的口子,让涌出的鲜血流进我的嘴里。我的牙齿越来越长,我的头发也越来越长,我发现变成了狼,一头荒原上独自行走的狼。
我仰天长啸,声音凄厉的穿过干燥的空气,壮烈地冲向太阳。 有一只猫怜悯的看着我,用历经沧桑的眼睛。我从它的眼里读到了它的过去,它前几次生命的历程。我问它,你现在是第几命了?猫说,第九命了。 我说,于是你隐藏起来,把你锋利的爪子折断,把你的爱恨喜怒放在心里。你的身体越来越肥,你终于成功的修道,变成了一只肥猫。 猫说,你还有其他的办法吗?它的身体颤动,悲哀。 我无言以答。 是啊,我们还有别的路走吗? 看看天上的太阳吧,猫说。有时我向往那里,我知道在那里我将没有任何躯体,也许我还到不了那里,但我仍然渴望着。 我渴望轰轰烈烈的过程,猫悲哀的说,但我只能是渴望。 从黄土上散发出的热浪让我的眼睛一片模糊。我说,我连渴望都没有。 有时这是一种幸福。猫说。知道吗,悲观的人总是看到红灯,乐观的人总是看到绿灯,在我的眼里,真正开心的人是色盲。 我和这只肥胖的猫面对面坐着,我发现自己的身体逐渐变胖。我恐惧。肥胖的猫可以在人群中生活,肥胖的狼却将在自然中灭亡。 但我无法阻止,我看着自己的身体象气球一样膨胀,我的皮肤逐渐变薄,变透明,我可以清晰地看到里面的血肉。千万条血管欢快的奔腾,为即将冲出牢狱而欢呼雀跃。 我的身体在一声巨响中粉碎,块块的碎片,毛发,混合着血水,滴落在干裂的土地上。 我在此时醒来。我觉得后面会发生一些变化,也许有乌云,有暴雨,有彩虹。可是我醒来了。我茫然地看着手机上的时间显示。我不再想梦中有什么。我只想到,中午吃什么呢?
我拿起快餐店的菜单,拨了几个号码,门铃响了。我放下电话,拿起门上的对讲机。一个声音说,起来了?我说,起来了。那个声音说,吃过饭了吗?我说,正打算叫快餐呢。那个声音说,我给你带了,开门吧。
我按下开门按纽,我想起这个声音是小茜的。想起这一点费了我很大的努力。以至于我在吃着鸡腿时有点惭愧。 幸好小茜不知道。她坐在一旁,专心致志地看着我吃,眼睛眨啊眨,让我觉得鸡腿里是不是放了香水。否则为什么我的嘴里我的气息里都是小茜身上淡淡的清香? 吃完了,我发现自己的思维正常了。看来熬夜和饥饿很容易让人的精神出现问题。在我考虑吃饱了后要做点什么的时候,古人已经替我安排好了。 饱暖思淫欲。 这是我第一次吻小茜。我觉得我的唇干燥,就象梦里的荒野。小茜的唇湿润,一点一滴滋润着我。我就象久旱的植物,用我所有的根系贪婪地吸取大地的甘露。我闭上眼睛,黑暗中宁静温馨潮水般涌来,我在潮水中呼吸,自由。
我感到了我身体的活力,我在小茜温暖的气息中感受到了一种称为幸福的感觉。 还有渴望。 我不知道现在的渴望和梦中的渴望有什么相同之处。人都是在极度的情绪中渴望。渴望朋友,渴望爱情,渴望充实,渴望快乐。 我的手指在小茜的身体内滑行。小茜在颤动。我没有体会到拒绝,只有羞涩。 我忽然觉得悲哀。我的羞涩在哪里?在许多年前的记忆里? 在光滑的背上,我的手停滞下来。我不知道我在想什么。我只知道我的心中一片空白。小茜一动不动地伏在我怀里。我知道她在想什么。 你有没有体会过,忘记自己的时候看到了对方的内心世界? 电话尖锐地响起。实际上,电话铃很悦耳。我不知道是气愤还是解脱,拿起了电话。 杨成的声音。 恭喜。他说。昨天你们攻破了231个美国网站。其中190个是拒绝访问式,30个是链接错误式,11个是侵入修改式。231个中,防范级为C的有210个,为B的有15个,为A的有6个。你占据A中的一席,所以祝贺你。
停了停,他说,中国的网站有25个被攻破。全是侵入修改。防范等级为A的有5个,为B的有20个。 我沉默,我知道杨成要说明什么。但我只能说,我不明白你的意思。 杨成说,我没对你说过任何话,我也不需要你明白我的意思。攻破的六个防范登记为A的系统中,有两个是俄罗斯的同行帮忙。 那有什么关系?我说,俄罗斯也是在帮自己。 杨成说,你为什么不用我给你的工具? 我沉默。 我不想解释。我的自尊,身为天王的荣誉,让我无法接受杨成的馈赠,特别是处在杨成这样的身份。 我反问一句,你为什么不自己去用? 电话那头一片寂静,然后传来一声叹息。 “嘟嘟”的忙音响起。 我回头看了看小茜,她一直在看着我。 我说,我们继续好吗? 这是一句很无聊的话。在不恰当的时候,在不恰当的地点。我说出这话就后悔了。我觉得自己是越来越白痴了。说这话我能指望女孩做什么反应?点头说OK吗? 让我惊讶的是,小茜很恰当地回答了我的话。她什么都没说,只是又闭上了眼。 我越来越觉得小茜是个可爱的女孩了。 在这后面的一段时间里,我把网络,把黑客都忘记了。我不是什么黑客天王,不是什么网络中的孤独的侠客。我也不叫不长叶子的树。我只是一个普通人,渴望爱情,渴望女人的身体,渴望现实中的正常生活。
我在快乐中忘记过去。我在快乐中憧憬未来。我在快乐中享受现在。
这是一个温馨的夜晚。小茜在台灯下看书。我在计算机前努力工作。小茜在台灯上罩了一个红色的塑料袋,于是整个房间笼罩在迷离的气氛中。我坐立不安地敲打着键盘。终于,我回头说,小茜,能不能把那个该死的塑料袋拿走?小茜说,为什么?
我说,这玩意让我无法安心。总让我想干点别的事。 小茜莫名其妙地看着我。我不怀好意地看着她。小茜似乎明白了什么,红着脸把塑料袋扯下。也许没有红脸,只是灯光的错觉。 我安心了,看着眼前的屏幕。我正和几个天王总结昨天的战况。我把杨成告诉我的数据说了一下,网上一片沉默。技术上的落后是一个永远的痛。我们有什么办法?操作系统,不管是WINDOWS,UNIX/LINUX,都是老外的。有一段时间,把微软在WINDOWS上安装后门的事情抄得火热,到后面还能怎么样?该买的不都要买?不用WINDOWS,用什么?
只有靠我们这一代努力了。肥猫说。 我似乎能看到主任胖胖的脸上闪动着无可奈何。从知道肥猫的身份起,我对他的第一反映由一只肥肥胖胖懒懒散散,老打哈欠的猫,换成了主任的严肃表情。很奇怪,这两者已经完美的结合在一起了。我想象两者时没有任何的别扭。
RED通报了一下攻击纽约时报和时代周刊的情况。他在上面发表的黑客宣言是经过我们一致通过的。 EAGLE说了一下中央情报局的情况。我感觉他也费了很大的力气,这从他的口气中就猜得出。EAGLE把中央情报局的系统骂得狗血临头,对RED不让他贴过激言语还在耿耿于怀。
下次还不知道有没有这么好的运气能进去了,EAGLE说。 肥猫的任务是一些美国的政府部门,他负责的美国能源部的系统,是最早侵入的,被国内外的媒体广泛报道。我有点怀疑肥猫是不是用了杨成提供的工具。但我只是怀疑,我不会问。这是黑客之间的守则,除非自愿,任何一个黑客不能询问另一个黑客是如何侵入系统的。当然,现在我和肥猫的关系有些特殊。
我说,我想邀请一个人参加我们下一步的行动。RED,BLACK和EAGLE说没问题,我介绍的人肯定可靠。肥猫却反对。 我觉得这个圈子还是控制得严一点好,现在政府对这个事件的很敏感,人多了会出问题,肥猫说。 我当然知道肥猫为什么反对。他知道我想推荐谁,他的反对也是为了小茜。 是啊,谁知道这个事件后,杨成会怎么对待我们?利用完了,是不是就消灭掉?在杨成的心里,想必也是把我们这几个当做心头刺吧? 但,我还是宁愿相信杨成。也许是他在电话那头传来的那一声叹息。我知道自己还是显得幼稚,按肥猫后来对我说的,你啊,还是年轻了点。我回答说,不管怎么样,现在的结局不是很好吗?
虽然肥猫的反对,我还是坚持。这个一个松散的组织,每个人凭自己对祖国的热情和信念在做出没有任何报酬的牺牲。何况,在这个圈子里,我拥有比肥猫更崇高的声望,RED,BLACK和EAGLE也支持我。
我把小茜叫到机子前,让她看上面大家对她的欢迎词。小茜笑了笑。 我看得出她是比较开心的,可是,在我想象中,她应该比这更开心的。也许,在几天前,如果告诉她这个消息,她会激动得手足无措,可是现在,她只是高兴的笑了笑。 我真不明白女孩。是不是得到爱情和家庭后,对事业的追求就会变淡了? 不管怎么说,我很高兴,能和小茜一起并肩战斗。 起码不用自己叫快餐了,我偷偷地想。
战争已经进行了四天。没有硝烟,没有鲜血。除了NASA的系统外,我已经完成了分配给我的所有任务。面对着NASA坚固的防线,我几乎要放弃自己的固执。为什么不用杨成给的软件?我面对着系统的一次次错误提示,恼怒地想。
我打了个电话给肥猫。不管怎样,我还是习惯称他为肥猫。 你用的什么工具?我问。 肥猫知道我的意思。他沉默了好久,然后一字一句地对我说,那只不过是工具罢了。 我没听明白。 肥猫说,我一开始就没想过不用。重要的是结果而不是过程。 人追求的不是过程中的美丽吗?我说。 没有结果的完美,过程有什么意义?肥猫说,人总是这样,局限在自己的天地里,为了自尊和虚荣,错过了很多东西。 我忽然想起自己的过去。我的过去有一颗晶莹的眼泪。 你说不用他的工具,那你能不能不用所有软件?你可以自己去编一个,我相信你也能编出来,可你用的语言,你的软件工程的思想,是你自己的吗? 在我这个年龄,肥猫说,是怎么方便怎么用。我没有时间也没有精力和自己斗气。 我没有办法回答。毫无疑问,这是对我的人生观念的一次挑战。 我握着话筒。很久。 我说,是社会改变了人,还是人改变了社会? 没有回答。肥猫已经挂线了。 我默默地挂上电话。 取出那张磁盘,我深深地看了一眼。我知道,一旦用了它,我就将失去了一些珍贵的东西。我曾经追求过完美,但理想还是不能改变现实。 在软驱前停留了一下,我用力一推。我听到弹簧清脆的声音,如此美妙,在我的理想世界中滑过,就象飞鸟掠过天空的痕迹。 是的,有一道看不见的痕迹。
三天后,五月七号。中华黑客联盟、中国红客组织、中国飞鹰三大组织发表联合声明,宣布停止对美国网站的攻击。历时七天的中美黑客大战结束。
我和小茜、主任面对面坐着。餐厅的气氛很好,有轻音乐,有人低低地细语。主任总是用一种审视的眼光看我,想发现一些不寻常的地方。 你大概发现了,我叙述这个故事的时候,一会儿用肥猫,一会儿用主任。这说明我已经能分清现实和网络了。现实中只有主任,网络中才有肥猫。能分辨这一点让我很惊讶。我记得以前都在这两个世界的边缘。
我面带微笑。应该说是幸福的微笑。我的手和小茜的手握着,这让小茜感觉很羞涩,也让主任感觉很难受。 活该。我想。虽然几天前发的工资条上显示,我的工资级别加了一级,我还是没有对主任表现出友善来。我发现这段时间来,主任几乎是在讨好似的对我微笑。 你真的决定了?主任说。 我说,是。 主任很羡慕的看着我。此刻他的眼神不只是是作为领导的。当我昨天把辞职信交到他手里时,他只看了一眼标题就做出了一个领导的反应——遗憾,惋惜,好象说你怎么能这样公司待你不薄等等。
我相信作为一个朋友的立场,他会理解我的。我们都清楚的知道做为一个科技人员的辛苦。我们整天喊着创造价值,却忘记了找到自己。我记得以前我有很多理想的。当年我在校园中满怀柔情地对女朋友说,毕业后我要带你去天涯海角。
毕业后的几年里除了过年回家我没有离开过深圳。我在匆匆中忘记了诺言,忽略了最珍贵的。 找好了工作没有?主任说。 我犹豫了一下,还是决定说实话。 杨成告诉我,他那里有个空缺。 主任吃惊地看着我。呆了半天,不知道对自己还是对我说,那也好,那也好。 不过,我不会很快去上班的,我说,我要休息一下。我看了看小茜,她也在看着我。 有时候,人是需要改变的。主任说。 对,就看有没有改变的勇气。 对了,RED和BLACK他们问我,上次开总结大会的时候,是不是你在捣乱? 我笑了,你说呢? 挽着小茜的手,我出了餐厅的门。回头看了看主任。 网上见,肥猫。我说。以后我是猫你是老鼠了。见到我可要小心一点。 主任笑了笑。网上见,天王。我会更放心大胆了。
走出了很久。阳光刺眼,我把眼睛眨了眨。 怎么了,小茜说。 我说没事,你想去哪玩? 随便你啦。 那就离开深圳。 这座飞速的城市,每天接纳着无数理想和热情的年轻人。他们在这里创业,恋爱,生活。每天有许多的故事,也会有人很多人离开。 这是一个普通的故事,发生在虚拟世界,也发生在现实世界。有很多人关注过它,然后又慢慢遗忘。只有在若干日子的又一次网络卫国站中,它才会被作为历史偶尔写上一句。对我来说,这一切并不重要。
重要的是,它发生了。而且改变了我。 |
|
中国RSS现状调查
|
引言
新闻出版行业在互联网方兴未艾的今天面临着众多的机遇和挑战。层出不穷的新技术使稳定、高效、实时、安全、低成本的新闻信息发布、接收、和使用越来越成为可能,而这些技术的实施和使用成本也在不断降低,越来越成为信息发布者和使用者日常生活、工作的一部分。
RSS技术就是互联网上最新技术的杰出代表,是新闻出版、信息发布、互动交流领域新技术的奇葩。
本文旨在介绍RSS技术的成长历史、国内外现状、和未来发展预测。此外,在文章后半部,我们介绍了看天下,国内最大的中文RSS技术和服务提供商,其服务体系架构,以及其针对新闻出版业的RSS电子出版解决方案。
RSS技术简介RSS技术的发展历程
RSS是“Rich Site Summary”或“Really Simple Syndication”的英文首字母缩写,中文称作“简易信息聚合”。RSS是一种基于XML标准,在互联网上被广泛采用的内容包装和投递协议。
RSS技术诞生于1999年的网景公司(Netscape)。当时网景公司定义了一套描述新闻频道的语言,RSS,用于将网站内容投递到Netscape Navigator互联网浏览器中。但由于公司内部商务决策、当时互联网内容匮乏等诸多原因,网景最终只发布了一个0.9版本的规范。微软当时也推出了类似的数据规格,与RSS非常接近,试图利用新闻频道的架构把“推”(Push)技术变成一个应用主流,捆绑在IE浏览器中与Netscape Navigator抗衡。不过无奈的是,由于当时互联网访问速度慢、内容缺乏、用户不熟悉等原因,这个“推”技术自始至终没有得到市场的广泛支持。
但是随着时间的推移,RSS技术随着XML技术的发展和博客群体的快速增长,逐渐被人们广泛地接受,其应用范围也已经跳出单纯的博客圈,成为新闻传媒、电子商务、企业知识管理等众多领域的不可缺少的新技术。2001年,RSS技术标准的发展工作被戴夫·温那(Dave Winer)的公司UserLand所接手,继续开发新的版本,以适应新的网络应用需要。通过戴夫·温那的努力,RSS升级到了0.91版,然后达到了0.92版,并随后被众多的专业新闻站点所接受和支持。在广泛的应用过程中,众多的专业人士认识到需要组织起来,把RSS发展成为一个通用的规范,并进一步标准化。一个联合小组根据W3C新一代的语义网技术RDF对RSS进行了重新定义,发布了RSS 1.0版,并把RSS定义为“RDF Site
Summary”。这项工作并没有与戴夫·温那进行有效的沟通,而戴夫则坚持在自己设想的方向上进一步开发RSS的后续版本2.0,同时也并不承认RSS 1.0的有效性。RSS由此开始分化形成了RSS 0.9x/2.0和RSS 1.0两个阵营。
戴夫·温那在2002年9月独自把RSS升级到了2.0版本,并交由哈佛大学法学院Berkman互联网和社会学中心进行维护。而RSS 1.0版则仍然由W3C联合小组维护。
最近,著名的互联网搜索引擎公司GOOGLE收购了美国大型的博客服务网站www.blogger.com, 使这个网站一直采用的一种近似于RSS的技术衍生版Atom一夜之间成为RSS领域标准之争的新的有力竞争对手。目前,这三个技术标准阵营(RSS 0.9x/2.0,RSS 1.0,Atom 0.3) 正在展开相互兼容的对话,相信在不久的将来会有积极的结果。
尽管技术标准有差异,但是目前市场上的RSS内容阅读软件,包括唯一专业的中文RSS阅读器 - 看天下 - 都是支持所有这三种技术标准的。也就是说,无论RSS内容提供者决定采用哪一种标准来包装自己的内容,对看天下阅读器软件的用户是透明的,无影响的。
RSS技术的特点
RSS通过XML标准定义内容的包装和发布格式,使内容提供者和接收者都能从中获益。对内容提供者来说,RSS技术提供了一个实时、高效、安全、低成本的信息发布渠道;对内容接收者来说,RSS技术提供了一个崭新的阅读体验。RSS技术几大显著特性简述如下:
l 来源多样的个性化“聚合”特性
因为RSS是一种被广泛采用的内容包装定义格式,所以任何内容源都可以采用这种方式来发布信息,包括专业新闻站点、电子商务站点、企业站点、甚至个人站点等。而在用户端,RSS阅读器软件的作用就是按照用户的喜好,有选择性地将用户感兴趣的内容来源“聚合” 到该软件的界面中,为用户提供多来源信息的“一站式” 服务。
l 信息发布的时效、低成本特性
RSS技术秉承“推”信息的概念,当新内容在服务器数据库中出现时第一时间被“推”到用户端阅读器中,极大地提高了信息的时效性和价值。此外,服务器端内容的RSS包装在技术实现上极为简单,而且是一次性的工作,使长期的信息发布边际成本几乎降为零,完全是传统的电子邮件、卫星传输、互联网浏览等发布方式所无法比拟的。
l 无“垃圾”信息、便利的本地内容管理特性
RSS用户端阅读器软件的特点是完全由用户根据自身喜好以“频道”的形式订阅值得信任的内容来源,如“新华网国际新闻”、“中国汽车网市场行情”、“天极网IT产品资讯”等。RSS阅读器软件完全屏蔽掉其他所有用户没有订阅的内容以及弹出广告、垃圾邮件等令人困扰的噪音内容。此外,对下载到阅读器软件本地的订阅RSS内容,用户可以进行离线阅读、存档保留、搜索排序、相关分类等多种管理操作,使阅读器软件不仅是一个“阅读”器,更是一个用户随身的“资料库”。
RSS技术在国外的发展现状市场统计
RSS技术在西方发达国家,尤其是美国,已经达到了相当大的规模。据不完全统计,美国提供RSS内容的网站数目从2001年9月的1千余家激增至2004年9月的19万5千余家,短短的三年中增长了近150倍,市场的飞速发展令人嘱目。
美国RSS市场内容提供商数
在这些RSS内容提供商中,固然有许多是博客网站和个人,但更多的是认识到RSS技术的先进性、优越性的商业网站,把对RSS技术的支持当作增加网站流量、推广网站品牌、更好地为用户服务的重要手段。随着RSS内容数量的激增,RSS用户数也取得了飞速的发展(从2001年8月的10万用户激增到2004年8月的近9百万,见下图)。
美国RSS市场用户数
典型案例分析
在众多支持和运用RSS技术的商业网站中,最具代表性的是华尔街日报电子版、纽约时报电子版、和迪斯尼公司的企业内部知识管理平台。
华尔街日报电子版
<<华尔街日报>>是道琼斯麾下美国最权威的金融业出版媒体。其网站电子版(www.wsj.com)以年费79美金的价格向社会公众出售内容服务。在该站支持RSS之前,用户获取内容的方式为:1)直接访问该站站点;2)电子邮件新闻提示。
认识到以上两种内容发布方式的缺点,华尔街日报电子版于2004年初推出了RSS服务,一共推出了包括美国新闻、欧洲新闻、亚洲新闻、科技新闻、商业新闻、股市传真、专家评论、个人技术等8个频道。详细情况请参见其官方网站:http://online.wsj.com/public/page/0,,0_0813,00.html
RSS服务的推出为华尔街日报电子版带来了以下收获(引用项目经理Mike Jones的话):
l RSS技术的实时性使订户能够更及时、更便捷地得到第一手新闻信息资讯,从而提高华尔街日报电子版的服务质量和客户满意度;
l 向公众提供免费的RSS新闻标题,让更多的人了解华尔街日报内容的精彩和高质量,有助于提高订阅用户数以及推广华尔街日报电子版的品牌和市场。
纽约时报电子版
<<纽约时报>>历来是美国新闻业的领头羊。面对来自其他众多媒体的竞争,她在2004年初也选择了RSS作为提高用户服务水平、推广内容及品牌、增加订阅用户的重要手段。
纽约时报的RSS频道划分比华尔街日报更加详细,一共提供了包括商业新闻、汽车新闻、艺术新闻、时尚资讯、科技新闻、旅游资讯、体育新闻、2004大选等28个频道供用户选择。详细情况请参见其官方网站:http://www.nytimes.com/services/xml/rss/
纽约时报电子版(www.NYTimes.com) 的技术负责人 Christine Mohan 总结了支持RSS的三大优点:
l 将新闻资讯更快、更及时地送到用户手中,增加了内容的价值和用户满意度;
l 以RSS新闻标题和摘要为“诱饵”,吸引了更多的眼球,增加了网站流量;
l 使更多的潜在用户了解纽约时报的质量和价值,促进了订阅量的增长。
迪斯尼知识管理平台
RSS技术不仅在对外新闻信息发布领域有独特的优势,而且在企业内部知识管理、信息共享方面也有着广阔的应用空间。迪斯尼就是最好的例子。
迪斯尼是全球最负盛名的娱乐产品、资讯提供商。无论是电影、卡通产品的制作,还是体育、娱乐资讯的采编都需要大量不同专长的人员的协作。因此,平滑高效的知识管理和信息共享是迪斯尼公司的头等大事。
尽管拥有市场上常见的几乎所有知识管理软件,迪斯尼还是无法尽善尽美地实现多对多的、个性化的、实时的、支持本地内容管理的信息共享目标。于是他们求助于RSS技术和与之共生的博客技术,来搭建新一代的信息共享平台。具体做法是:参与项目的专家和管理者各自拥有其个人博客站点(当然是依托在迪斯尼企业内网上,受其企业防火墙保护的),每个人把新想法、新内容、消息、计划、讨论等内容都写在自己的博客站点中并通过RSS对外发布,而其他成员利用RSS阅读器订阅这些RSS发布,获取最新资讯,并利用RSS阅读器中的回复发布功能达到与该成员交流、共享的目的。
迪斯尼主管新技术研究的付总裁 Mike Pusateri 是如此评论用RSS和博客技术搭建的新一代知识管理、信息共享平台的:
l 该平台使信息的交互变得非常及时,大大提高了参与者的工作效率和积极性;
l 该平台使每一个参与者更方便、更有效地管理其接收和发布的内容;
l 鼓励多对多的交流,并促进大家就某一话题展开深入的讨论。
RSS技术在国内的发展现状现状概述
在国内,RSS技术的普及和市场的发展正处于启蒙时期。据看天下不完全推算,目前国内的RSS用户数大约在20万左右(其中看天下RSS阅读器占据相当的市场份额,其余除新浪点点通外主要为国外RSS阅读器的汉化产品)。此外,国内的RSS内容提供商数目也还不是很多,目前由看天下整理的中文RSS地址目录中显示大约有500家网站提供了RSS内容。
然而,中国RSS市场发展的趋势是非常令人振奋的。最近一批著名的有影响力的网站先后推出了RSS内容服务,对RSS市场的发展起到了很好的促进作用,他们包括:
l 新浪网
l 新华网
l 百度新闻
l 计世网
l 天极网
l 阿里巴巴
l 中国汽车网
l 天一证券
还有相当数量的网站已经在对RSS技术作深入的研究,并计划在未来的一段时间内推出RSS服务。
未来展望大众互联网
RSS技术在中国大众互联网中的普及是有其基础和必然性的。首先,大量新网站和内容源的不断涌现和用户获取信息口味的多样化使RSS作为个性化聚合内容的最佳手段得到越来越多的用户的重视和钟爱。其次,越来越多的内容提供者为推广自身品牌,获得更大客户群而纷纷推出RSS服务,以期为他们的内容带来更大的流量和知名度。再其次,目前的商业门户网站出于自身商业利益的考虑,把用户信息获取的环境搞得日益恶劣,弹出广告、垃圾邮件、不健康内容等充斥屏幕,而真正有价值的信息却无从寻觅。这些都迫使广大用户呼唤一种新的互联网阅读体验,一种他们可以控制、自己作主的新型“门户”体验,从而为RSS的普及奠定了良好的基础。
新闻出版业
在新闻出版领域,RSS技术作为电子出版的一个新型渠道(象华尔街日报电子版这样的案例)已经在新华社等新闻机构得到了有益的尝试,并逐渐成熟走向商业化。相信在不久的未来,RSS技术会成为新闻出版业的一项主流成熟技术被广泛应用。
企业知识管理领域
目前尚处于萌芽时期,象迪斯尼这样的经典案例还没有出现。但随着企业管理者对博客概念观念的转变和对其技术的更深刻理解,利用这项新技术来为企业知识管理、信息共享服务的浪潮相信会很快地到来。 |
|
RSS技术
|
摘要:RSS(简单信息聚合)已被广泛接受应用,RSS站点资源的丰富正影响着互联网内容的浏览利用。本文综合性分析介绍RSS概念、特性、实现方式、标准规范、联合聚合及在中国科学院网站的初步应用。 关键词:RSS、信息聚合、网站建设 RSS的概念 RSS是一种用于共享新闻和其他Web内容的数据交换规范,起源于网景的推技术,是一种基于XML标准的Syndication技术和在互联网上被广泛采用的内容包装和投递协议,可以是Really Simple Syndication(真正简单的整合)、RDF Site Summary (RDF站点摘要) 、Rich Site Summary(丰富站点摘要)三个解释的其中一个。
RSS的应用与特性
RSS通过XML标准定义内容的包装和发布格式,为内容提供者提供实时、高效、安全、低成本的信息发布渠道,是一种增加网站流量、推广网站品牌、更好为用户服务的重要手段;为内容接收者提供崭新阅读体验,不用一个个去开页面即能很快地知道所关注网络内容是否更新。
RSS目前广泛用于blog(Web Log)、wiki和网上新闻频道,世界多数知名新闻社网站都提供RSS订阅支持。国外运用RSS技术的商业网站中最具代表性的是华尔街日报电子版、纽约时报电子版、和迪斯尼公司的企业内部知识管理平台[1]。国内最早有新华网于2004年8月提供此服务[2],目前新浪网、百度新闻、计世网、天极网、阿里巴巴、中国汽车网、天一证券、blogchina.com、大洋网、一些大型论坛等均支持。日后将会在大众互联网、新闻出版业、企业知识管理等领域有更深入应用。其优点主要是:
(1) 信息来源多样、聚合个性化。专业新闻站点、电子商务站点、企业站点、个人站点等任何内容源都可以发布信息,用户可按照自已喜好将感兴趣内容来源“聚合”,类似阅读电子邮件一样享受多来源信息的“一站式” 服务。
(2) 技术难度低、信息发布时效强。RSS是一种简单和成功的XML应用,实现容易,且在新内容包装后的第一时间能被用户阅读。
(3) 信息无干扰、资料可管理。读者具有对订阅内容的控制筛选权,没有广告或者图片来影响标题与概要的阅读,并可通过阅读器对下载内容进行离线阅读、存档保留、搜索排序、分类等操作。
RSS的实现方式
RSS作为 Web 上散布新闻的机制和站点间共享内容的方式,实现方法是内容提供商封装输出RSS Feed(提要),内容订阅者通过RSS聚合器读取RSS提要并显示新闻项
RSS 提要是一个定期更新的 XML 格式文档,一般以rss,xml或者rdf作为扩展名,可以通过URL获得,其中包含有关新闻源和其中内容的元数据。一个 RSS 提要至少应包含一个代表新闻源的 channel,channel 包含一个标题、链接和描述新闻源的说明。此外,一个 RSS 提要通常会包含一个或多个代表单个新闻项的 item 元素,其中每个元素都应包含一个标题、链接或说明。
网络用户在客户端借助于支持RSS新闻聚合工具软件,一般需要下载和安装一个RSS新闻阅读器,然后从网站提供的聚合新闻目录列表中订阅您感兴趣的栏目内容。订阅后,可在不打开网站内容页面的情况下及时获得所订阅新闻频道的最新内容。
用户以“频道”的形式订阅,增加单个频道时为输入RSS的URL地址,订阅多个频道时可通过OPML实现“导入”“导出”。OPML(Outline Processor Markup Language)为建立在XML基础上的“大纲处理标记语言”[3],用于描述资料的结构和存储提要列表信息,主要由<head>项的<title>和<body>项的<outline ... />组成,outline中有text、title、type、version、htmlUrl、xmlUrl等属性,其格式标准可参见http://www.opml.org/spec 。
RSS的标准规范
RSS规范有多个版本。最初版本0.9在1999年诞生于网景公司(Netscape),Userland Software2001年接手后发展 出RSS 的简化版本0.91、0.92、0.93 和 0.94,并于2002年9月推出后续版本2.0,全称定为“Really Simple Syndication”。其间有联合小组根据W3C新一代语义网技术把RSS定义为“RDF(Resource Description Framework) Site Summary”,发布RSS 1.0版。0.9x版和2.0版一脉相承,1.0版与其完全不同,双方互不认可。 另有小组为解决以上混乱与不足,创建着希望能不依赖于供货商、任何人都可以对之进行自由扩展的Atom(原子)标准[4]。互联网搜索引擎公司GOOGLE等目前支持Atom。因此RSS实际分化为三个技术标准阵营(RSS 0.9x/2.0,RSS 1.0,Atom 0.3) 。
RSS规范的多个版本中,主要使用的是RSS0.92、RSS 2.0和RSS 1.0。提要中Rss0.92/2.0根节点为<rss …></rss>,RSS1.0根节点为<rdf …></rdf>,Atom0.3根节点为<feed …></feed>,频道<channel>项属性一般为<title><link><description>,Atom0.3的标记名略有不同,并引入最后发布日期<modified>属性,各版本中主体<item>项均为<title> <description> <link> <author> <pubDate>等属性,具体参考相关标准[5][6][7]。尽管技术标准有差异,但是目前RSS内容阅读软件大都同时支持,即无论RSS内容提供者采用哪一种标准来包装推送,对用户是透明和无影响的。
RSS的联合与聚合
互联网上发布的RSS Feed中信息均能直接被其他站点调用和在其他的终端和服务中使用,如PDA、手机、邮件列表等。RSS的联合(Syndication)指网站联盟(专门网站)能通过互相调用彼此的RSS Feed,自动显示联盟中其他站点的最新信息。这种联合加强了信息共享,能形成站点内容更新与知名度高的良性循环,同时也发展出大量基于RSS的专业门户、聚合站点和更精确的搜索引擎。目前中文RSS搜索引擎有:中文RSS搜索引擎http://www.feedss.com、FeedSearch Blog搜索 http://www.FeedSearch.net、RSS聚网 http://www.rssnet.cn/;八方-中文Blog/RSS/ATOM/博客搜索引擎 http://www.8fang.net/
文章收藏, 电脑与网络 乱闪 发表于 2005/11/19 12:36:55 |
| | |
我的故事(曾经的特种兵)1
|
我的故事(曾经的特种兵)
作者:杀手的契约
1995年,16岁,被老爸强行应征入伍(当时还真没想过去当兵)就这样,到了云南,做了一名小小的士兵,新兵生涯很辛苦,想家,想妈妈,最受不了就是部队的伙食,而且还受老兵的欺负,慢慢的,新兵变成老兵,开始喜欢上部队,战友情是最真挚的感情,2年兵(原来服役3年)碰上部队选拔侦察兵,就去了,没想到我的一技之长(射击很好,没办法,从小在部队长大,枪我熟悉得很)帮助我顺利的进入了侦察连,开始了魔鬼般的生活,半夜三点,紧急集合,一团忙乱之后冲到门口,迎接我们的是一根水柱,全身湿透之后,教官说:没事了,你们回去睡吧-_-!!
每天枯燥的训练单兵动作,教官只教一遍,做不好,等着被踹吧,每天,动不动就15公里武装越野,跑得我们口吐白沫,要死不活,做不好,重来,还要忍受教官那不堪入耳的骂声!直到你做好为止,那时候,晚上我的眼泪哗啦哗啦的往下流,要退出很简单,说一声,我就可以回普通部队,呆到退伍的时间,可我又不愿这样放弃,侦察兵啊,就是特种部队,多少士兵梦寐的,3个月后,终于熬过了第一关,后面的训练似乎没那么可怕,之后就是小组训练和专业训练了,在火辣辣的太阳下练习瞄准,中暑过多少次我都不记得了,只记得每次中暑,只听到教官一句:医务员~之后灌藿香正气水,醒来之后是教官铁板的面孔:还撑得住吗?我能说不撑得住吗?那么好,继续,没有命令不许起来!
终于,可以执行任务了,我们的任务很简单,打击毒贩,一般是抓,但也有消灭的,而且常常是越境执行,当然,我们的越境是秘密的,我的一个战友就这样牺牲在缅甸的丛林里,再也没有回来,刚开始,心情还比较兴奋,我终于成为个合格的特种战士,一个合格的狙击手,让人闻风丧胆的杀手,一次有一次的任务之后,我开始思考,曾经一个个鲜活的生命就如此脆弱,任务是任务,可是,每次我们执行任务的时候,基本不留活口,难道异乡的人就不是人?他们和我们一样的黄皮肤黑眼珠,他们贩毒甚至养不活一家几口,毒品虽然让我痛恨,但这些人却让我同情.
距离:860 风速偏东1-2级,建议纠偏0.2度,温度合适,上下偏差适中,副射手建议,目标全身暴露,我选了个完美的狙杀阵位,三秒钟后,随着我的85式一声闷响,目标的胸口绽出一团血雾,目标终结,我简单的说了一句,眼睛依然在在瞄准镜上,他的孩子,一个全身一丝不挂的6 ,7岁的女孩,在不知所措的嚎啕大哭,或许,他生前是个慈祥的父亲,是女孩眼中的神,然而,在我的任务简报里,他只是个代号,没有名字,一个没有任何感情色彩的数字,在我的眼里,他只是个"目标",我和副射手带着复杂的心情爬出了阵位,回到集结地,在那里,直升机会把我带回国,我的任务完成了.
一次又一次,我们小组执行了许多次任务,如果说其他任务也让我们良心有些不安,但这次,却让我们愤怒,简报上说,一个官员出境被挟持,他带有机密材料,我们的任务就是把他解救出来,并将材料带回来,一共三个人,两男一女,依然是晚上,渗透小组已经爬到了脚楼下,情报显示,我们的目标就在脚楼上,这是一个村庄,一个热闹的村庄,确切点说,是个边境赌场,为了不惊动任何一个人,甚至一条狗,渗透小组从晚上9点爬到了凌晨3点,突击组和狙击组,支援组已经就位,但是该死的村庄却依然那么热闹,凌晨5点,还没有散会的迹象,不能再等了,天一亮,任务就失败了,突击组也进入了村庄,在必要的条件下,他们会配合渗透组将人强行带出来,跟以前一样,干净利落,没有惊动任何人,不,除了几个看守,不过他们再也不能告诉别人发生了什么事情,人带出来了,但是,我们也愤怒了,什么重要官员,什么机密材料,原来是个贪官带着小秘出境赌博,输钱被扣,他竟然还要求我们将带出去的钱给抢回来,结果,回答他的是我的一枪托!
我们是什么??我们只是机器,但我们不只是机器,更不是杀人的机器,上级从来不告诉我们为什么要执行任务,抓回来的人我们从来不知道他们会去哪里,我们只是执行,我开始思考这个问题,然而,我们只是士兵,我们要永远服从上级的指示,哪怕他们要我们去死!
01年,我5年的特种士兵生涯还有一年就要完结了,依然是越境任务,任务简报上依然是个毫无感情色彩的数字,在我们眼里,依然是"目标","河马"式直升机剧烈的抖动,我们已经习惯了,而且还开玩笑说,中国的军事装备真好,出任务还一路有按摩椅!速降的时候,突然一阵侧风,"河马"几乎失去了控制,我摔下来了,速降的半途,我带着20多公斤的装备摔了下来,我的右腿骨折,严重错位,就这样,我在部队医院躺了半年,感谢部队医院的医术高明,要不,我将终生残疾,现在,我的右腿依然比左腿短那么一点点,平衡感也没那么好了,医生说,我很幸运,因为这么严重的错位能拉成这样已经是个奇迹了,我再也不能训练了,再也不能出任务了,我的位置,由另一名狙击手补充,对于部队来说,我已经没有任何价值,我再也不是那个最优秀的狙击手,我只是个躺在病床上的废人,出院后,我就这样无所事事的呆到了退伍,领了8万元的退伍费(包含了伤残补贴)和一张退伍证,回到了社会,这个我隔绝了7年的社会.
社会我已不再熟悉,我努力的学习,可是,朋友都说我落伍,我不会应酬,不会见风使舵,不会拍马屁,甚至,不会追女孩子,爱情对我来说,似乎是个我永远打不中的目标,我不知道,我在部队里学到了什么,有时候,我想,我学到了杀人,狙击,爆破,抢劫??部队就这样将我放到了社会,7年的青春,一条几乎伤残的腿,8万元钱,就这样画上了等号,值得吗?我不知道,我只知道,我在部队献出了我的青春,我为祖国奉献了,无所谓后不后悔,现在,虽然我落伍,但我在努力的学习,部队给我的不只是8万元钱,还有坚强的意志和永不妥协的精神.这就是我,一个曾经的特种部队的士兵的故事.
待续。。。 |
|
Apache指南:服务器端包含入门
|
服务器端包含提供了一种对现有HTML文档增加动态内容的方法。
概要
什么是SSI?
配置服务器以允许SSI
基本SSI指令
附加的例子
其他的设置
执行命令
高级SSI技术
总结
概要
相关模块
相关指令
mod_include
mod_cgi
mod_expires
Options
XBitHack
AddType
SetOutputFilter
BrowserMatchNoCase
本文针对服务器端包含(Server Side Includes),通常简称为SSI,讨论如何配置服务器以允许SSI,并介绍一些对现有HTML页面增加动态内容的基本SSI技术。
本文后部将讨论用SSI做一些应该算比较高级的事情,比如SSI指令中的条件语句。
什么是SSI?
SSI (Server Side Includes)是HTML页面中的指令,在页面被提供时由服务器进行运算,以对现有HTML页面增加动态生成的内容,而无须通过CGI程序提供其整个页面,或者使用其他动态技术。
对什么时候用SSI,而什么时候用某些程序生成整个页面的权衡,取决于页面中有多少内容是静态,有多少内容需要在每次页面被提供时重新计算。SSI是一种增加小段信息的好方法,诸如当前时间。如果你的页面大部分是在被提供时生成的,那就要另找方案了。
配置服务器以允许SSI
要使服务器允许SSI,必须在httpd.conf文件或.htaccess文件中有如下配置:
Options +Includes
告诉服务器以允许解析文件中的SSI指令。注意,在多数配置中,多个Options指令会互相覆盖,所以,可能必须对需要SSI的特定目录使用Options,以确保位于最后并起作用。
并不是所有文件中的SSI指令都会被解析,所以,必须告诉Apache应该解析哪些文件。有两种方法,使Apache解析带有特定文件后缀的任何文件,比如.shtml, 配置如下:
AddType text/html .shtml AddOutputFilter INCLUDES .shtml
这种方法的缺点之一是,为了使文件名有.shtml后缀从而执行其中的指令,可能需要改变加入SSI指令的现有的文件,以及所有指向此页面的连接。
另一种方法是,使用XBitHack指令:
XBitHack on
XBitHack告诉Apache解析有执行权限的文件中的SSI指令。如此,只要用chmod使文件变成可执行的,就可以对现有的页面增加SSI指令。
chmod +x pagename.html
这里简要说明一点:偶然会有人向你推荐,无须用带.shtml的文件名,使Apache解析所有.html文件的SSI就可以了。那些人可能没听说过XBitHack。要知道,这样做会使Apache在发送文件到客户端之前通读此文件,即使其中并没有任何SSI指令,从而对速度有不小影响,所以这并不是好办法。
当然,在Windows上,没有对应的执行权限可以设置,但还是应该谨慎选择。
按缺省配置,Apache不会为SSI页面发送最后修改日期或者内容长度的HTTP头,因为这些值对动态页面来说难以计算。这样会阻止页面被缓冲,导致客户端性能有能够感觉到的下降。有两种解决方法:
使用XBitHack Full配置。它告诉Apache判断最后修改日期时,只查看被请求的文件本身的日期,而忽略其中包含的任何文件的修改日期。
使用mod_expires提供的指令为文件设置一个明确的过期时间,并告诉浏览器和代理这个文件可以被缓冲。
基本SSI指令
SSI指令有如下语法:
<!--#element attribute=value attribute=value ... -->
其格式很象HTML的注释,因此如果没有正确配置SSI,它会被浏览器忽略,但在HTML代码中仍然可见。而如果正确配置了SSI,则此指令会被其结果替代。
其中的元素可以有许多,我们会在下一个版本的文档中讨论其中的大多数,而在这里,仅举几个SSI的例子。
今天的日期
<!--#echo var="DATE_LOCAL" -->
echo元素仅仅是反馈一个变量的值。标准变量有许多,其中包含对CGI程序有效的所有的环境变量。另外,你也可以用set元素定义你的专用变量。
如果你不喜欢日期的这种打印格式,可以用config元素的timefmt属性,改变其格式。
<!--#config timefmt="%A %B %d, %Y" --> Today is <!--#echo var="DATE_LOCAL" -->
文件的修改日期
This document last modified <!--#flastmod file="index.html" -->
这个元素也是使用timefmt的格式配置。
包含一个CGI程序的输出
这是SSI的很常见的一个用途-包含一个CGI程序的输出,比如人人喜欢的``点击计数器''。
<!--#include virtual="/cgi-bin/counter.pl" -->
附加的例子
以下是一些对HTML文档使用SSI的特殊例子。
文档是什么时候被修改的?
此前,我们提到过可以用SSI通知用户文档是什么时候被修改的,但是其具体实施方法却基本上是个问题。以下代码,放在HTML文档中,会在页面中产生一个时间戳,当然,首先,你必须按上述方法使SSI有效。
<!--#config timefmt="%A %B %d, %Y" --> This file last modified <!--#flastmod file="ssi.shtml" -->
不用说,你应该用你实际引用的文件名来替换ssi.shtml,所以,如果你想简单地在任何文件中粘贴一段通用代码以达到这个目的,这个方法就并不方便,如此,就会用到LAST_MODIFIED变量:
<!--#config timefmt="%D" --> This file last modified <!--#echo var="LAST_MODIFIED" -->
有关timefmt格式的细节,可以到搜索站点查找strftime,其语法是相同的。
包含一个标准注脚
如果你管理一个拥有许多页面的站点,你会发现对所有页面做改动是很痛苦的,尤其是在试图对所有页面维持某种标准观感的时候。
使用包含一个页眉和/或注脚的方法,可以减轻修改的负担。你只要制作一个注脚文件,并用includeSSI命令包含到每个页面,即可。include元素能按file属性或者virtual属性判断应该包含的文件。file属性是一个相对于当前目录的文件路径,即不能是一个绝对文件路径(以/开头)。virtual属性可能更有用,它是一个相对于被提供文档的URL,可以以/开头,但必须与被提供文档在同一个服务器。
<!--#include virtual="/footer.html" -->
SSI指令和注脚文件相结合使用是很有用的,比如在注脚文件中使用LAST_MODIFIED指令。SSI指令可以出现在包含文件中,而include可以嵌套,即一个包含文件可以包含另一个。
其他的设置
config除了能设置时间格式,还有两种用途。
当SSI指令发生错误时,会产生如下消息:
[an error occurred while processing this directive]
为了改变消息的形式,可以使用config元素的errmsg属性:
<!--#config errmsg="[It appears that you don't know how to use SSI]" -->
当然,最终用户永远也不会看到这个消息,因为在网站投入运行之前你已经把这些问题都解决了(是吗?)。
还可以使用config的sizefmt属性设置返回的文件大小的格式,或者是以字节为单位,或者是以Kb或Mb为单位的简写。
执行命令
我期望未来几个月内能再写一篇小型CGI程序使用SSI的文章,而这里,仅介绍exec的使用。SSI确实可以利用shell(/bin/sh,精确地说,还可以是Win32中的DOS shell)来执行命令。下例产生一个目录列表:
<pre> <!--#exec cmd="ls" --> </pre>
在Windows中:
<pre> <!--#exec cmd="dir" --> </pre>
你可能会发现,在Windows中这个指令的结果有些奇怪,dir的输出中包含有字串``<dir>'',它会使浏览器产生混淆。
注意,这个功能是极度危险的,因为它会执行任何包含在exec标记中的命令。如果用户有可能修改你的网页内容,比如“留言本”,那么你一定要关闭这个功能。在Options指令中加上IncludesNOEXEC参数,以关闭exec功能,同时又保留SSI。
高级SSI技术
除了分离内容,Apache SSI还可以设置用以比较和条件表达式的变量。
警告
本文中讨论的大多数功能仅在Apache 1.2及更新版本中有效。如果你运行的不是Apache 1.2及更新版本,请立刻或者尽快升级,现在就动手,我们会等你弄好了再继续往下讲。
设置变量
使用set指令可以设置变量以备后用,其语法是:
<!--#set var="name" value="Rich" -->
除了设置文字变量以外,还可以设置其他任何变量,比如环境变量和此前提到过的一些变量(如LAST_MODIFIED),作为你的专用变量。在变量名前面缀以$,表示它是一个变量,而不是一个文字性字串。
<!--#set var="modified" value="$LAST_MODIFIED" -->
在文字性字串中使用$,必须使用转义符号\
<!--#set var="cost" value="\$100" -->
最后,如果要在较长的字串中,可以用花括号把变量名括起来,以免变量名与其他字符之间冲突而产生混淆(要对这种情况举例说明有点难度,但还是希望你能领会)。
<!--#set var="date" value="${DATE_LOCAL}_${DATE_GMT}" -->
条件表达式
有了变量,就可以设置和比较它们的值以表示条件,SSI也因此成为一种简洁的编程语言。mod_include提供了if, elif, else和endif等结构以构造条件语句,从而对一个实在的页面高效地生成多个逻辑的页面。
条件的结构如下:
<!--#if expr="test_condition" --> <!--#elif expr="test_condition" --> <!--#else --> <!--#endif -->
test_condition可以是任何逻辑比较 - 可以是一个值和另一个值比较,也可以是测试一个特定的值是否为“真”(一个给定的字串如果非空则为真)。完整的比较操作符列表,见mod_include。以下是可能会用到的一些例子。
在配置文件中,可以这样设置:
BrowserMatchNoCase macintosh Mac BrowserMatchNoCase MSIE InternetExplorer
如果客户端在Macintosh上运行Internet Explorer,则上例设置环境变量``Mac'' 和``InternetExplorer''为真。
然后,在允许SSI的文档中,可以这样设置:
<!--#if expr="${Mac} && ${InternetExplorer}" --> Apologetic text goes here <!--#else --> Cool JavaScript code goes here <!--#endif -->
我一点也不反对在Mac上运行IE - 只是上个星期我花了好几个小时试图在Mac上的IE中使用JavaScript,而它在其他地方都能正常运作,以上只是一个临时的妥协方案。
任何其他变量(或者是你定义的,或者是标准的环境变量)都可以用于条件语句。利用Apache的SetEnvIf以及其他相关指令设置环境变量,此功能可以很好地实现动态页面而无须借助于CGI。
总结
SSI固然不能替代CGI或者其他动态页面技术,但它是在页面中插入众多小型的动态片段的优秀方法,而无须大量额外的操作。 |
|
SHTML - SSI技术
|
概要:
什么是shtml SHTML语法 SHTML教程 格式 编写 技术
使用SSI (Server Side Include)技术
想要找到既富有创意的平面设计人员,又有脚本开发经验的人员,实在是太难了。而如果一个百分之百的页面都是php脚本的网站,将为页面维护带来非常大的困难。而且使用了php的自动加头和加尾的方法,使得几乎所有页面都是语义不完整的,不能借助任何一款页面设计工具工作,是另一个弊病。
利用SSI技术,可以有效的将HTML网页和CGI脚本逻辑上分开,也可以将重复的HTML元素抽象和独立出来,减轻维护负担。
SSI (Server Side Includes) are directives that are placed in HTML pages, and evaluated on the server while the pages are being served. They let you add dynamically generated content to an existing HTML page, without having to serve the entire page via a CGI program, or other dynamic technology.
全文:
配置Apache,支持SSI
# This tells Apache that you want to permit files to # be parsed for SSI directives.
Options +Includes# At linux or unix can use # Options +Includes -IncludesNOEXEC # win32 not use it
# You have to tell Apache which files should be parsed.
AddType text/html .shtml
AddHandler server-parsed .shtml
SSI语法
Basic SSI directives Syntax
<!--#element attribute=value attribute=value ... -->
Today's date
<!--#config timefmt="%Y/%m/%d %a %H:%M:%S" -->
Today is <!--#echo var="DATE_LOCAL" -->
Modification date of the file
This document last modified <!--#flastmod file="index.html" -->
Including the results of a CGI program
<!--#include virtual="/cgi-bin/counter.pl" -->
<!--#include virtual="/cgi-bin/example.cgi?argument=value" -->
You can use "#exec cgi=" directive, but it can be disabled using the IncludesNOEXEC Option.
Including a standard footer
<!--#include virtual="/footer.html" -->
Executing commands
<!--#exec cmd="ls" -->
This feature is dangerous. You can allow SSI, but not the exec feature, with the IncludesNOEXEC argument to the Options directive.
Setting variables
<!--#set var="modified" value="$LAST_MODIFIED" -->
<!--#set var="date" value="${DATE_LOCAL}_${DATE_GMT}" -->
Conditional expressions
<!--#if expr="test_condition" -->
<!--#elif expr="test_condition" -->
<!--#else -->
<!--#endif -->
1、Config命令
Config命令主要用于修改SSI的默认设置。其中:
Errmsg:设置默认错误信息。为了能够正常的返回用户设定的错误信息,在HTML文件中Errmsg参数必须被放置在其它SSI命令的前面,否则客户端只能显示默认的错误信息,而不是由用户设定的自定义信息。
<!--#config errmsg="Error! Please email webmaster@mydomain.com -->
Timefmt:定义日期和时间的使用格式。Timefmt参数必须在echo命令之前使用。
<!--#config timefmt="%A, %B %d, %Y"--> <!--#echo var="LAST_MODIFIED" -->
显示结果为: Wednesday, April 12, 2000
也许用户对上例中所使用的%A %B %d感到很陌生,下面我们就以表格的形式总结一下SSI中较为常用的一些日期和时间格式。 www.domain.com
Sizefmt:决定文件大小是以字节、千字节还是兆字节为单位表示。如果以字节为单位,参数值为"bytes";对于千字节和兆字节可以使用缩写形式。同样,sizefmt参数必须放在fsize命令的前面才能使用。
<!--#config sizefmt="bytes" --> <!--#fsize file="index.html" -->
2、Include命令
Include命令可以把其它文档中的文字或图片插入到当前被解析的文档中,这是整个SSI的关键所在。通过Include命令只需要改动一个文件就可以瞬间更新整个站点!
Include命令具有两个不同的参数:
Virtual:给出到服务器端某个文档的虚拟路径。例如:
<!--#include virtual="/includes/header.html" -->
File:给出到当前目录的相对路径,其中不能使用"../",也不能使用绝对路径。例如:
<!--#include file="header.html" -->
这就要求每一个目录中都包含一个header.html文件。
3、Echo命令
Echo命令可以显示以下各环境变量:
DOCUMENT_NAME:显示当前文档的名称。
<!--#echo var="DOCUMENT_NAME" -->
显示结果为:
index.html
DOCUMENT_URI:显示当前文档的虚拟路径。例如:
<!--#echo var="DOCUMENT_URI" -->
显示结果为:
/YourDirectory/YourFilename.html
随着网站的不断发展,那些越来越长的URL地址肯定会让人头疼。如果使用SSI,一切就会迎刃而解。 |
|
|