2004年05月27日

RSS 是一种“轻量级、多用途、可扩展的元数据描述及联合推广格式”,也可以理解为一种规范。它本身是一种 XML 格式,用于为内容整合客户端提供选择性的、汇总过的 Web 内容。如今,许多站点都开

始通过创建 RSS feed 向浏览者提供内容整合服务,提供新闻、站点内容的更新等等。浏览者可以通过一些客户端软件方便地得到这些组织、汇总了的信息。


    那么,怎么在我们自己的网站上创建 RSS feed 呢?下面我以 Asp+Access 为例介绍一下。


    既然 RSS 是一种 XML 格式的文档,那么我们就应当可以对后台数据库中的数据按照条件进行筛选、组织,然后通过 ASP 生成 XML 格式的数据流,最后发送到客户端进行浏览。


    数据的选取、汇集是 Asp 的拿手好戏,关键在于怎么生成 XML 格式的数据流。其实 Asp 也已经有自己的解决办法,就是在写数据前对 response 对象的 ContentType 属性进行定义。如果 response.ContentType 的取值为 “text/xml”,就会向浏览者发送 XML 格式的数据流。


    在 IE 浏览器中调用 RSS 源的方法和普通的链接没有什么区别,格式是:
    <a type=”application/rss+xml” href=”RssFeed.asp”>RSS说明</a>
其中 type=”application/rss+xml” 加不加好象没有什么区别。


    以下程序段是创建我的网站“十万个为什么”(www.why100000.com)上的“技术新闻”栏目的 RSS feed 的源代码,文件名为 RssFeed_news.asp。
    其中,变量 sXmlClear 用于声明产生的文档是一段 XML 格式的文档,该声明是可选的,以保持与旧版本 XML 的向后兼容性。
    sRssHead 定义 Rss 的基本元素。RSS feed 通常由 4 个主要元素构成:<channel>,<image>,<item> 和 <textinput>。其中,<channel> 元素是必需的,<item> 元素至少要出现一次。<textinput> 和 <image> 元素是可选的,是否使用要视具体情况而定。
    <channel> 元素包含 Channel(RSS feed 的来源)的一个简单描述。<title> 是频道的名称/标题;<link> 是与频道内容对应的包含了完整内容的那个网页的 URL;<description> 是与 <channel> 的内容有关的简单描述;<language> 代表语言。还有一些别的属性,不是太常用。
    <item> 元素用于对数据库中的记录进行描述。<item> 一般有若干项,对应了一个 Rss feed 的数据集合。


<!-Filename:RssFeed_news.asp:–>
<% Option explicit %>
<!– #include file=”./conn.inc” –>


<%
  Dim sSQL, rs, sCrLf, sXmlClear, sRssHead, sRssEnd
  sCrLf = chr(13) & chr(10)  ‘回车+换行


  sXmlClear = “<?xml version=’1.0′ encoding=’gb2312′?>” & sCrLf


  sRssHead = “<rss version=’2.0′>” & sCrLf
  sRssHead = sRssHead & “<channel>” & sCrLf
  sRssHead = sRssHead & “<title> Why100000 </title>” & sCrLf
  sRssHead = sRssHead & “<description> Why100000 </description>” & sCrLf
  sRssHead = sRssHead & “<link>http://news.why100000.com/</link>” & sCrLf
  sRssHead = sRssHead & “<language>zh-cn</language>” & sCrLf
  sRssHead = sRssHead & “<docs>Why100000.COM News Center</docs>” & sCrLf
  sRssHead = sRssHead & “<generator>Rss Generator By WWW.Why100000.COM</generator>” & sCrLf


  sRssEnd = “</channel></rss>”


  Response.CharSet=”gb2312″  ‘数据集
  Response.ContentType=”text/xml”  ‘数据流格式定义


  ‘输出:
  Response.write sXmlClear
  Response.write sRssHead


  sSQL=”select top 15 * from news order by sortid desc”
  Set rs = Server.CreateObject(“ADODB.Recordset”)
  rs.Open sSQL, s_Conn, 1, 1
  if not (rs.eof and rs.bof) then
    do while not rs.eof
      response.write “<item>” & sCrLf
      response.write “<title> ” & rs(“f_topic”) & ” </title>” & sCrLf
      response.write “<link> ” & “http://www.why100000.com/_news/show_a_new.asp?autoid=” &


rs(“f_i_autoid”) & ” </link>” & sCrLf
      response.write “<author> ” & rs(“f_author”) & ” </author>” & sCrLf
      response.write “<pubDate> ” & rs(“f_datetime”) & ” </pubDate>” & sCrLf
      response.write “</item>” & sCrLf & sCrLf
      rs.movenext
    loop
  end if
  rs.close
  set rs=nothing


  Response.write sRssEnd
%>


    IE 中的调用格式是:<a href=”http://www.why100000.com/_news/RssFeed_news.asp“>技术新闻


RSS</a>。如果用一些客户端软件订阅该 RSS,订阅的 Url 就是


http://www.why100000.com/_news/RssFeed_news.asp

我的收藏文章里面简单的介绍了在线编辑器的做法。这里详细介绍一下用得上的对象和属性
document.designMode
它表示当前的文档设计模式,黩认为”Off”,表示文档不可编辑,但当您将其设置为”On”,即可成为可编辑的,因此您便像在FrontPage中使用它一样。

selection
一旦用户在文档中做了selection,您便可以使用下列的代码来访问它(selection.createRange()方法:从当前选择区中创建一个TextRange对象)。
  下面代码表示建立了一个selection
  edit = EditorID.document.selection.createRange();

  那么:RangeType = Editor.document.selection.type; 即可表示用户选中的对象类别,如Text,Control等。如果您想在用户选择的区域为设计字体大小,字体色彩等功能,您还需要用到该对象的execCommand()方法,它表示在给定选择区或上条命令:

语 法:
  bSucces=object.execCommand(sCommand[,bUserInterface][,vVlaue])
 
参 数:
  sCommand:必选项,表示要执行的命令。它可以是任何有效的命令标识符。更多的信息请参阅:
http://msdn.microsoft.com/workshop/author/dhtml/reference/commandids.asp

bUseInterface 可选项。表明是否显示用户界面的值 ,如果支持的话。此值可为True或者fasle,黪认为false.

vValue 可选项,可分配的字符串、数值或者其它值 ,可能的值取决于sCommand.
 
返回值:
 布尔值,若成功,返回true,否则返回false
 
注 释:
 等待调用execCommand方法,直到而被加载之后。
 
因此如果您想加入将用户当前的选择的字体设置为”黑体”,那么您需要做的工作如下:

edit = EditorID.document.selection.createRange();
edit.execCommande(“FontName”,false,”黑体”);

  而加入居中方式则为:

edit = EditorID.document.selection.createRange();
edit.execCommande(“JustifyCenter”)即可。

  但如果您想直接插入HTML代码,则需要用到pasteHTML()方法,比如您想插入一张图片http://3http.com/logo.gif,则需要如下:

edit = EditorID.document.selection.createRange();
edit.pasteHTML(“<img src=’http://3http.com/logo.gif‘>”);

当前如果你只想插入一段文字(比如:<img src=’http://3http.com/logo.gif‘>),则可直接使用text属性,如:
edit = EditorID.document.selection.createRange();
edit.text=”<img src=’http://3http.com/logo.gif‘>”;

大多数的计算机用户都非常熟悉Windows的图形用户界面(GUI),都通过使用Word或微软的电子邮件客户端软件了解了按钮、工具条、标签,但与客户端软件都拥有几乎一致的界面截然不同的是,我们可以发现,每个网站的界面都各不相同。用户需要学会如何使用每一种互联网应用程序。尽管大多数的互联网应用程序都不是太复杂,但一个用户需要不断地去学习应用程序界面,时时感觉自己象个新手,这对于用户而言,毕竟不是一件令人愉快的事。
   通过利用JavaScript和CSS建立互联网应用程序或网站的标准化的客户端界面组件,可以使用户一眼就看出来他们可以进行的操作以及如何完成自己的任务。用户就会对自己的操作更有信心,也不会轻易出现误操作。

  或许你还不知道JavaScript还有这样的功能,或曾经在其他网站上看到过工具栏,但不知道它是如何完成的。在本篇文章中,我们将讨论如何建立一个简单的、格式化工具栏(就象Word中的那样),该工具栏可以为任意的网站添加让用户通过<textarea>区进行反馈的功能。本篇文章介绍的技巧需要读者具备有HTML、CSS和JavaScript方面的知识。

一点不足之处

  下面的代码使用了selection对象的createRange()方法,不幸的是,只有Windows平台上的IE4+用户才能够使用selection对象,相似的功能通过文档对象模型(DOM)才能实现,但Mozilla中的document.createRange()会发生问题,主要是在input或textarea元素中不能处理文本数据。如果这一bug解决了,就可以使下面的代码运行在Mozilla、Netscape 6+或其他任何运行Gecko的浏览器平台上。

建立一个简单的工具栏


我们首先来创建一个拥有三个按钮的简单工具条:一个粗体按钮,一个斜体按钮,一个连接按钮。该工具栏是向一个现有的文本域添加功能的好方法,它可以让用户在无需了解HTML的情况下对输入的文本进行简单的控制。任何让用户参与或进行反馈的网站都可以利用这一工具栏进行加强。

  我们的工具栏在功能上可以分为下面4个部分:

  封装选定文本附件HTML标记的JavaScript函数
  定制工具栏、按钮的外观和风格的样式表
  响应鼠标事件的JavaScript函数
  包含工具栏代码、图像、表格元素的HTML

  我们首先来研究一下二个处理向<textarea>插入HTML代码的函数:

利用JavaScript处理文本集

function format_sel(v) {
  var str = document.selection.createRange().text;
  document.my_form.my_textarea.focus();
  var sel = document.selection.createRange();
  sel.text = “<” + v + “>” + str + “<” + v + “>”;
  return;
  }

  format_sel()只接受一个参数,即表示作用于选定文本的HTML标记的字符串。在这个工具栏中,我们用这个函数来控制<b>和<i>之间的文本。当然,如果愿意,我们可以使用<strong>和<em>替换<b>和<i>,或者使用这个函数控制一段选定的文本,或者在选择的标记中限定指定文本。

  我们可以使用selection对象的createRange()方法方便地创建当前文本的TextRange对象。通过访问其text属性,我们可以得到<textarea>中选定的文本。text属性将被赋给一个局部变量。在下一行中,我们对<textarea>调用了focus(),这一行代码非常重要,否则,我们对文本的改变可能会被写到网页的其他部分去。最后,我们创建了指定文本的另一个引用,并赋给它一个新值:即位于适当的HTML标记中的原来的selection的地址。

function insert_link() {
  var str = document.selection.createRange().text;
  document.my_form.my_textarea.focus();
  var my_link = prompt(“Enter URL:”,”http://”);
  if (my_link != null) {
  var sel = document.selection.createRange();
  sel.text = “<a href=\”" + my_link + “\”>” + str + “</a>”;
  }
  return;
  }

  第二个函数insert_link()与format_sel()是相同的,加上prompt(),它们可以使用户输入一个超文本链接的值。使用prompt()的结果,我们可以将选定的文本和代码组合起来,创建一个连接。有了这些函数,我们就可以为用户创建所有类型的界面。下面我们来看一个例子。

在CSS中使用系统颜色

  在网站上使用上面函数的最简单的方法就是在“bold”、“italic”、和“link”按钮的onclick事件处理程序中调用这些函数,但这不够刺激。由于我们使用了selection对象,把自己限定在了IE/Win平台上,我们就应该充分利用IE的特性,在CSS中使用用户定义的系统颜色,创建象我们在其他软件中看到的那样的动态按钮。下面我们首先来看看定义了工具栏、按钮、升起和按下二种按钮的状态的样式表。

#toolbar {
  margin: 0;
  padding: 0;
  width: 262px;
  background: buttonface;
  border-top: 1px solid buttonhighlight;
  border-left: 1px solid buttonhighlight;
  border-bottom: 1px solid buttonshadow;
  border-right: 1px solid buttonshadow;
  text-align:right;
  }

.button {
  background: buttonface;
  border: 1px solid buttonface;
  margin: 1;
  }

.raised {
  border-top: 1px solid buttonhighlight;
  border-left: 1px solid buttonhighlight;
  border-bottom: 1px solid buttonshadow;
  border-right: 1px solid buttonshadow;
  background: buttonface;
  margin: 1;
  }

.pressed {
  border-top: 1px solid buttonshadow;
  border-left: 1px solid buttonshadow;
  border-bottom: 1px solid buttonhighlight;
  border-right: 1px solid buttonhighlight;
  background: buttonface;
  margin: 1;
  }

  读者可能已经注意到,我们在样式表中使用了三种系统颜色引用:buttonface、buttonshadow和buttonhighlight。通过将buttonface作为工具栏和按钮的背景色,我们可以使用用户得到与其他应用软件相同的界面外观。用buttonshadow和buttonhighlight色创建边界,通过编写简单的JavaScript函数,就能使按钮具有3D效果。当然,如果想使该GUI更与网站而不是用户的浏览器匹配,可以更换适当的颜色。

  能够改变按钮样式的JavaScript下面的四个函数供事件处理程序在改变鼠标事件图像的类名时使用。尽管可以把JavaScript代码编写成嵌入式的,但我们把它们组织进一个函数中,方便以后添加其他功能。

function mouseover(el) {
  el.className = “raised”;
  }

function mouseout(el) {
  el.className = “button”;
  }

function mousedown(el) {
  el.className = “pressed”;
  }

function mouseup(el) {
  el.className = “raised”;
  }

与HTML进行整合

  现在剩下的工作就是将这些函数与包含工具栏、图像、文本域的HTML代码组合在一起:

<img class=”button”
  onmouseover=”mouseover(this);”
  onmouseout=”mouseout(this);”
  onmousedown=”mousedown(this);”
  onmouseup=”mouseup(this);”
  onclick=”format_sel(‘b’);”
  src=”bold.gif”
  width=”16″ height=”16″
  align=”middle”
  alt=”click to make your selection bold”>
  <img class=”button”
  onmouseover=”mouseover(this);”
  onmouseout=”mouseout(this);”
  onmousedown=”mousedown(this);”
  onmouseup=”mouseup(this);”
  onclick=”format_sel(‘i’);”
  src=”italic.gif”
  width=”16″ height=”16″
  align=”middle”
  alt=”click to make your selection italic”>
  <img class=”button”
  onmouseover=”mouseover(this);”
  onmouseout=”mouseout(this);”
  onmousedown=”mousedown(this);”
  onmouseup=”mouseup(this);”
  onclick=”insert_link();”
  src=”link.gif”
  width=”32″ height=”16″
  align=”middle”
  alt=”click to add a link”>
  <textarea cols=”30″ rows=”6″ name=”my_textarea”></textarea>

  一个div中包含了三个按钮的图像,这样会使代码显得简洁。函数调用在<img>标记的事件处理程序中,我们向格式化函数传递一个将被改变样式的元素的引用,根据希望使用的格式(b表示粗体,i表示斜体),我们向format_sel()函数传递一个合适的参数。

结束语

  当然,这只是创建工具栏的一种方法,还有许多其他方法也可以创建工具栏。读者创建的工具栏的功能也不必局限于本篇文章中涉及的功能,利用W3C DOM,可以很方便地改变一个文档的样式。

  利用DOM操作,我们可以建立一个Word风格的工具栏,让用户定制显示卡的所有方面:改变字体的大小、文档的字体、改变栏目的宽度。结合使用CSS、JavaScript和DOM,我们能够创建与标准浏览器兼容的功能强大的应用软件GUI。


<html><head>
<meta http-equiv=”Content-Type” content=”text/html; charset=gb2312″>
<title>js</title>
<style>
#toolbar {
margin: 0;
padding: 0;
width: 262px;
background: buttonface;
border-top: 1px solid buttonhighlight;
border-left: 1px solid buttonhighlight;
border-bottom: 1px solid buttonshadow;
border-right: 1px solid buttonshadow;
text-align:right;
}


.button {
background: buttonface;
border: 1px solid buttonface;
margin: 1;
}


.raised {
border-top: 1px solid buttonhighlight;
border-left: 1px solid buttonhighlight;
border-bottom: 1px solid buttonshadow;
border-right: 1px solid buttonshadow;
background: buttonface;
margin: 1;
}


.pressed {
border-top: 1px solid buttonshadow;
border-left: 1px solid buttonshadow;
border-bottom: 1px solid buttonhighlight;
border-right: 1px solid buttonhighlight;
background: buttonface;
margin: 1;
}
</style></head>
<body>


<script>


function insert_link() {
var str = document.selection.createRange().text;
document.my_form.my_textarea.focus();
var my_link = prompt(“Enter URL:”,”http://“);
if (my_link != null) {
var sel = document.selection.createRange();
sel.text = “<a href=\”" + my_link + “\”>” + str + “</a>”;
}
return;
}



function format_sel(v) {
var str = document.selection.createRange().text;
document.my_form.my_textarea.focus();
var sel = document.selection.createRange();
sel.text = “<” + v + “>” + str + “<” + v + “>”;
return;
}



function mouseover(el) {
el.className = “raised”;
}


function mouseout(el) {
el.className = “button”;
}


function mousedown(el) {
el.className = “pressed”;
}


function mouseup(el) {
el.className = “raised”;
}
</script>



<img class=”button”
onmouseover=”mouseover(this);”
onmouseout=”mouseout(this);”
onmousedown=”mousedown(this);”
onmouseup=”mouseup(this);”
onclick=”format_sel(‘b’);”
src=”theme/img/face/f163.gif”
width=”16″ height=”16″
align=”middle”
alt=”click to make your selection bold”>
<img class=”button”
onmouseover=”mouseover(this);”
onmouseout=”mouseout(this);”
onmousedown=”mousedown(this);”
onmouseup=”mouseup(this);”
onclick=”format_sel(‘i’);”
src=”theme/img/face/f162.gif”
width=”16″ height=”16″
align=”middle”
alt=”click to make your selection italic”>
<img class=”button”
onmouseover=”mouseover(this);”
onmouseout=”mouseout(this);”
onmousedown=”mousedown(this);”
onmouseup=”mouseup(this);”
onclick=”insert_link();”
src=”theme/img/face/f161.gif”
width=”32″ height=”16″
align=”middle”
alt=”click to add a link”>
<form name=my_form>
<textarea cols=”30″ rows=”6″ name=”my_textarea”></textarea>
</form>

虽然离毕业还远,但是,看到学长们的伤感,自己也受感染了,在学校的ftp下载了这个特别专辑。大家也招来听听吧


01. 01.罗大佑——《恋曲1990》.mp3 [5:17]
02. 02.崔健——《假行僧》.MP3 [4:35]
03. 王菲 – [http://come.to/boxup] 红豆 [4:16]
04. Westlife – [Westlife] Seasons In The Sun [4:08]
05. 黑豹 – Take Care [6:01]
06. 沈庆 – 青春 [4:29]
07. 陈升 – [魔鬼情诗II] 把悲伤留给自己 [4:30]
08. 姜育恒 – [心歌I #01] 我的心没有回程 [4:26]
09. 13.心的祈祷.mp3 [5:03]
10. 范晓萱 – [好想谈恋爱 #01] 雪人 [4:41]
11. 赵传 – [我是一只小小鸟 #01] 我是一只小小鸟 [4:41]
12. 周华健 – [忘忧草 #01] 忘忧草 [3:46]
13. Black Box Recorder – [England Made Me] Seasons in the Sun [2:42]

2004年05月23日

因为还是个学生,在实验室做的项目也都不是很大,所以对mvc中的c总是感觉迷惑。实在不知道意义何在,今天看看.net怎么实现的吧,具体的应用好处以后才知道。
http://www.csdn.net/develop/article/28/28063.shtm

老婆要买pda了,我也的了解一下现在流行的东东:)


http://article.pchome.net/2004/04/27/19432.htm

2004年05月22日

其实里面有很多实用的代码片断,只是大家都不去看而以。看看这个快速实现的特效实现方法
http://www.blueidea.com/articleimg/2004/03/1710/index.htm

2004年05月18日


http://wwww.aaaaaaaaa.com/bbb.asp?id=888
的地址形式改为
http://wwww.aaaaaaaaa.com/888.htm
或者
http://wwww.aaaaaaaaa.com/yourname/888.htm
当然可以按照你的要求随便变.
APACHE的 MOD_rewrite模块.
大家可以看一个演示的一个 PHP学习论坛
http://www.phpx.com/happy/
这个论坛的版面和帖子,就是运用了这个技术,地址静态化.但是是假的.
这个技术哪里好?
可以让baidu, google等收入你的站点所有页面.
收入地址就是你的假静态地址.当然别人看不出你是假的.而且这个技术隐藏了你背后执行的程序.
你可以把
/soft/1234.html 重写传递给 soft.php?id=1234
当然你改一下名 换成 softxfewafew.php?id=1234
表面还是 soft/1234.html但是你 APACHE内部执行了你重写的文件.
从根本上可以防止别人从程序本身入侵.

下面我写怎么样重写.分为 WINDOWS和LIUNX2种
都是操作
APACHE安装文件夹内的 CONF文件夹里面的httpd.conf
打开以后,找到
#LoadModule rewrite_module “modules/mod_rewrite.so”
把#去掉.
然后找到虚拟主机配置
在虚拟主机中加入
RewriteEngine On
RewriteRule ^/soft/([0-9]+).html$ /soft.php?id=$1
//解释
//WWW.玉米.COM/SOFT/1234.HTML
//重写为
//WWW.玉米.COM/soft.php?id=1234
//这里ID是可以变的 你给它 1 就是传递1
RewriteRule ^/([0-9]+).html$ /soft.php?id=$1
//解释
//WWW.玉米.COM/1234.HTML
//重写为
//WWW.玉米.COM/soft.php?id=1234
RewriteRule ^/([0-9]+)_([0-9]+).html$ /soft.php?id=$1&catid=$2
//解释
//WWW.玉米.COM/1234_2222.HTML
//重写为
//WWW.玉米.COM/soft.php?id=1234&catid=2222
当然随便你怎么换!
这就是 WIN下的.
LIUNX下是一样的 但是要加
<IfModule mod_rewrite.c>开始
</IfModule>结束
重写都加在虚拟主机设置中.
如果没有虚拟主机,那加在最后!

2004年05月16日

http://www.skype.com/download.zh.html
哈哈,上当了吧。其实也不是啥稀奇的东西:)

2004年05月14日

有个人爬墙出校
  被校长抓到了~校长问他为什么不从校门走?
  他说美特斯邦威,不走寻常路。
  校长又问他这么高的墙怎么翻过去的啊?
  他指了指裤子说:李宁 一切皆有可能
  校长又问他翻墙是什么感觉/?
  他指了指鞋子说特步 飞一般的感觉
  第2天他从正门进学校 校长问他 怎么不翻墙了
  他说:安踏:我选择,我喜欢
  第3天他穿混混装 校长说他 不能穿混混装
  他说穿什么就什么 森玛服饰
  第4天他穿背心上学校长说 不能穿背心上学
  他说男人简单就好 爱蹬堡服饰
  校长说我要记你大过
  他说为什么?
  校长说动感地带 我的地盘我做主