<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Michael`s blog &#187; C / Erlang / Lua</title>
	<atom:link href="http://www.toplee.com/blog/category/%e6%8a%80%e6%9c%af/%e4%ba%92%e8%81%94%e7%bd%91%e5%85%b6%e4%bb%96/feed" rel="self" type="application/rss+xml" />
	<link>http://www.toplee.com/blog</link>
	<description>活到老，学到老 ...   @ IT，业界，互联网</description>
	<lastBuildDate>Mon, 19 Jul 2010 05:38:59 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0</generator>
		<item>
		<title>CN Erlounge III归来，收获颇丰</title>
		<link>http://www.toplee.com/blog/758.html</link>
		<comments>http://www.toplee.com/blog/758.html#comments</comments>
		<pubDate>Thu, 25 Dec 2008 15:47:23 +0000</pubDate>
		<dc:creator>Michael</dc:creator>
				<category><![CDATA[C / Erlang / Lua]]></category>
		<category><![CDATA[erlounge]]></category>

		<guid isPermaLink="false">http://www.toplee.com/blog/?p=758</guid>
		<description><![CDATA[上周末去上海参加了CN Erlounge III的会，收获颇丰，见识了几位业内低调的高人，佩服佩服！ 更让让我深知自己学识之浅薄，学海无涯，路漫漫！ 继续学习和实践提高中，希望能尽快出些有价值的成果来！ 此次上海之行，恰逢鄙人之生日，与几位老朋友相聚一堂，甚是欢心，加上Apple的生日也在这期间，可谓喜事连连，皆大欢喜，虽然天气冷了点儿，心里还是很热乎的！]]></description>
			<content:encoded><![CDATA[<p>上周末去上海参加了CN Erlounge III的会，收获颇丰，见识了几位业内低调的高人，佩服佩服！ 更让让我深知自己学识之浅薄，学海无涯，路漫漫！</p>
<p>继续学习和实践提高中，希望能尽快出些有价值的成果来！</p>
<p>此次上海之行，恰逢鄙人之生日，与几位老朋友相聚一堂，甚是欢心，加上Apple的生日也在这期间，可谓喜事连连，皆大欢喜，虽然天气冷了点儿，心里还是很热乎的！</p>
]]></content:encoded>
			<wfw:commentRss>http://www.toplee.com/blog/758.html/feed</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>Joe Armstrong真的是天才</title>
		<link>http://www.toplee.com/blog/607.html</link>
		<comments>http://www.toplee.com/blog/607.html#comments</comments>
		<pubDate>Fri, 15 Aug 2008 17:58:40 +0000</pubDate>
		<dc:creator>Michael</dc:creator>
				<category><![CDATA[C / Erlang / Lua]]></category>

		<guid isPermaLink="false">http://www.toplee.com/blog/?p=607</guid>
		<description><![CDATA[这么简洁漂亮的语法都能创造出来，真的服了，着迷啊着迷！ double([H&#124;T]) -&#62; [2*H&#124;double(T)];double([])&#160; &#160; -&#62; [].&#62; double([1,2,3,4]).[2,4,6,8]add_one([H&#124;T]) -&#62; [H+1&#124;add_one(T)];add_one([])&#160; &#160; -&#62; [].map(F, [H&#124;T]) -&#62; [F(H)&#124;map(F, T)];map(F, [])&#160; &#160; -&#62; [].double(L)&#160; -&#62; map(fun(X) -&#62; 2*X end, L).add_one(L) -&#62; map(fun(X) -&#62; 1 + X end, L).]]></description>
			<content:encoded><![CDATA[<p>这么简洁漂亮的语法都能创造出来，真的服了，着迷啊着迷！</p>
<div class="hl-surround"><div class="hl-main">double([H|T]) -&gt; [2*H|double(T)];<br />double([])&nbsp; &nbsp; -&gt; [].<br /><br />&gt; double([1,2,3,4]).<br />[2,4,6,8]<br /><br />add_one([H|T]) -&gt; [H+1|add_one(T)];<br />add_one([])&nbsp; &nbsp; -&gt; [].<br /><br />map(F, [H|T]) -&gt; [F(H)|map(F, T)];<br />map(F, [])&nbsp; &nbsp; -&gt; [].<br /><br />double(L)&nbsp; -&gt; map(fun(X) -&gt; 2*X end, L).<br />add_one(L) -&gt; map(fun(X) -&gt; 1 + X end, L).</div></div>
]]></content:encoded>
			<wfw:commentRss>http://www.toplee.com/blog/607.html/feed</wfw:commentRss>
		<slash:comments>9</slash:comments>
		</item>
		<item>
		<title>闭关修炼</title>
		<link>http://www.toplee.com/blog/598.html</link>
		<comments>http://www.toplee.com/blog/598.html#comments</comments>
		<pubDate>Thu, 31 Jul 2008 05:00:02 +0000</pubDate>
		<dc:creator>Michael</dc:creator>
				<category><![CDATA[C / Erlang / Lua]]></category>
		<category><![CDATA[心情 / 生活]]></category>
		<category><![CDATA[Erlang]]></category>
		<category><![CDATA[Mochiweb]]></category>

		<guid isPermaLink="false">http://www.toplee.com/blog/?p=598</guid>
		<description><![CDATA[受到mryufeng/coderplay等牛人影响，痛下决心闭关修炼面向未来的 FP 技术， 无一中文书籍&#038;文档，顺便考验考验自己的大学英语水平。 活到老、学到老！]]></description>
			<content:encoded><![CDATA[<p>受到mryufeng/coderplay等牛人影响，痛下决心闭关修炼面向未来的 FP 技术， 无一中文书籍&#038;文档，顺便考验考验自己的大学英语水平。</p>
<p>活到老、学到老！</p>
]]></content:encoded>
			<wfw:commentRss>http://www.toplee.com/blog/598.html/feed</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>用C语言操作MySQL数据库，进行连接、插入、修改、删除等操作</title>
		<link>http://www.toplee.com/blog/329.html</link>
		<comments>http://www.toplee.com/blog/329.html#comments</comments>
		<pubDate>Thu, 23 Nov 2006 03:17:43 +0000</pubDate>
		<dc:creator>Michael</dc:creator>
				<category><![CDATA[C / Erlang / Lua]]></category>

		<guid isPermaLink="false">http://www.toplee.com/blog/archives/329.html</guid>
		<description><![CDATA[　　很多人用到MySQL来开发一些项目，有时为了性能，我们会直接用C语言来开发相关的模块，尤其在我们的web应用中，虽然PHP、JSP等脚本均提供了MySQL的接口，但是显然直接使用C语言具有更好的安全性和性能，Michael以前用PHP开发的多个项目中就使用了C语言编写的这类接口，然后再编译到php里面，供php脚本直接使用,这方面的话题就不多说了，下面主要说一下在Linux下如何用C语言连接MySQL数据库，并且读取里面的数据返回，同时如何进行编译。 　　这里的大部分代码参考了MySQL发行包里面的.c源文件，大家也可以去里面找找相关的代码，下面这段代码实现了连接到本地MySQL服务器上9tmd_bbs_utf8数据库，从数据表tbb_user中根据输入的userid取得该用户的用户名并打印输出到终端。 #if defined(_WIN32) &#124;&#124; defined(_WIN64)&#160; //为了支持windows平台上的编译#include &#60;windows.h&#62;#endif#include &#60;stdio.h&#62;#include &#60;stdlib.h&#62;#include &#34;mysql.h&#34;&#160; //我的机器上该文件在/usr/local/include/mysql下&#160;//定义数据库操作的宏，也可以不定义留着后面直接写进代码#define SELECT_QUERY &#34;select username from tbb_user where userid = %d&#34;&#160;int main(int argc, char **argv) //char **argv 相当于 char *argv[]{&#160;&#160; &#160;MYSQL mysql,*sock;&#160; &#160; //定义数据库连接的句柄，它被用于几乎所有的MySQL函数&#160;&#160; &#160;MYSQL_RES *res;&#160; &#160; &#160; &#160;//查询结果集，结构类型&#160;&#160; &#160;MYSQL_FIELD *fd ;&#160; &#160; &#160;//包含字段信息的结构&#160;&#160; &#160;MYSQL_ROW row ;&#160; &#160; &#160; &#160;//存放一行查询结果的字符串数组&#160;&#160; &#160;char&#160; qbuf[160];&#160; &#160; &#160; //存放查询sql语句字符串&#160;&#160; [...]]]></description>
			<content:encoded><![CDATA[<p>　　很多人用到MySQL来开发一些项目，有时为了性能，我们会直接用C语言来开发相关的模块，尤其在我们的web应用中，虽然PHP、JSP等脚本均提供了MySQL的接口，但是显然直接使用C语言具有更好的安全性和性能，Michael以前用PHP开发的多个项目中就使用了C语言编写的这类接口，然后再编译到php里面，供php脚本直接使用,这方面的话题就不多说了，下面主要说一下在Linux下如何用C语言连接MySQL数据库，并且读取里面的数据返回，同时如何进行编译。</p>
<p>　　这里的大部分代码参考了MySQL发行包里面的.c源文件，大家也可以去里面找找相关的代码，下面这段代码实现了连接到本地MySQL服务器上9tmd_bbs_utf8数据库，从数据表tbb_user中根据输入的userid取得该用户的用户名并打印输出到终端。</p>
<div class="hl-surround"><div class="hl-main"><span class="hl-prepro">#if</span><span style="color: Gray;"> </span><span style="color: Blue;">defined</span><span style="color: Olive;">(</span><span style="color: Blue;">_WIN32</span><span style="color: Olive;">)</span><span style="color: Gray;"> || </span><span style="color: Blue;">defined</span><span style="color: Olive;">(</span><span style="color: Blue;">_WIN64</span><span style="color: Olive;">)</span><span style="color: Gray;">&nbsp; </span><span style="color: #ffa500;">//为了支持windows平台上的编译</span><span class="hl-prepro"></span><span style="color: Gray;"><br /></span><span class="hl-prepro">#include </span><span style="color: #8b0000;">&lt;</span><span style="color: Red;">windows.h</span><span style="color: #8b0000;">&gt;</span><span class="hl-prepro"></span><span style="color: Gray;"><br /></span><span class="hl-prepro">#endif</span><span style="color: Gray;"><br /></span><span class="hl-prepro">#include </span><span style="color: #8b0000;">&lt;</span><span style="color: Red;">stdio.h</span><span style="color: #8b0000;">&gt;</span><span class="hl-prepro"></span><span style="color: Gray;"><br /></span><span class="hl-prepro">#include </span><span style="color: #8b0000;">&lt;</span><span style="color: Red;">stdlib.h</span><span style="color: #8b0000;">&gt;</span><span class="hl-prepro"></span><span style="color: Gray;"><br /></span><span class="hl-prepro">#include </span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">mysql.h</span><span style="color: #8b0000;">&quot;</span><span class="hl-prepro">&nbsp; //我的机器上该文件在/usr/local/include/mysql下</span><span style="color: Gray;"><br />&nbsp;<br /></span><span style="color: #ffa500;">//定义数据库操作的宏，也可以不定义留着后面直接写进代码</span><span style="color: Gray;"><br /></span><span class="hl-prepro">#define</span><span style="color: Gray;"> </span><span style="color: Blue;">SELECT_QUERY</span><span style="color: Gray;"> </span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">select username from tbb_user where userid = %d</span><span style="color: #8b0000;">&quot;</span><span class="hl-prepro"></span><span style="color: Gray;"><br />&nbsp;<br /></span><span class="hl-types">int</span><span style="color: Gray;"> </span><span style="color: Blue;">main</span><span style="color: Olive;">(</span><span class="hl-types">int</span><span style="color: Gray;"> </span><span style="color: Blue;">argc</span><span style="color: Gray;">, </span><span class="hl-types">char</span><span style="color: Gray;"> **</span><span style="color: Blue;">argv</span><span style="color: Olive;">)</span><span style="color: Gray;"> </span><span style="color: #ffa500;">//char **argv 相当于 char *argv[]</span><span style="color: Gray;"><br /></span><span style="color: Olive;">{</span><span style="color: Gray;"><br />&nbsp;&nbsp; &nbsp;</span><span style="color: Blue;">MYSQL</span><span style="color: Gray;"> </span><span style="color: Blue;">mysql</span><span style="color: Gray;">,*</span><span style="color: Blue;">sock</span><span style="color: Gray;">;&nbsp; &nbsp; </span><span style="color: #ffa500;">//定义数据库连接的句柄，它被用于几乎所有的MySQL函数</span><span style="color: Gray;"><br />&nbsp;&nbsp; &nbsp;</span><span style="color: Blue;">MYSQL_RES</span><span style="color: Gray;"> *</span><span style="color: Blue;">res</span><span style="color: Gray;">;&nbsp; &nbsp; &nbsp; &nbsp;</span><span style="color: #ffa500;">//查询结果集，结构类型</span><span style="color: Gray;"><br />&nbsp;&nbsp; &nbsp;</span><span style="color: Blue;">MYSQL_FIELD</span><span style="color: Gray;"> *</span><span style="color: Blue;">fd</span><span style="color: Gray;"> ;&nbsp; &nbsp; &nbsp;</span><span style="color: #ffa500;">//包含字段信息的结构</span><span style="color: Gray;"><br />&nbsp;&nbsp; &nbsp;</span><span style="color: Blue;">MYSQL_ROW</span><span style="color: Gray;"> </span><span style="color: Blue;">row</span><span style="color: Gray;"> ;&nbsp; &nbsp; &nbsp; &nbsp;</span><span style="color: #ffa500;">//存放一行查询结果的字符串数组</span><span style="color: Gray;"><br />&nbsp;&nbsp; &nbsp;</span><span class="hl-types">char</span><span style="color: Gray;">&nbsp; </span><span style="color: Blue;">qbuf</span><span style="color: Olive;">[</span><span style="color: Maroon;">160</span><span style="color: Olive;">]</span><span style="color: Gray;">;&nbsp; &nbsp; &nbsp; </span><span style="color: #ffa500;">//存放查询sql语句字符串</span><span style="color: Gray;"><br />&nbsp;&nbsp; &nbsp;<br />&nbsp;&nbsp; &nbsp;</span><span style="color: Green;">if</span><span style="color: Gray;"> </span><span style="color: Olive;">(</span><span style="color: Blue;">argc</span><span style="color: Gray;"> != </span><span style="color: Maroon;">2</span><span style="color: Olive;">)</span><span style="color: Gray;"> </span><span style="color: Olive;">{</span><span style="color: Gray;">&nbsp; </span><span style="color: #ffa500;">//检查输入参数</span><span style="color: Gray;"><br />&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;</span><span style="color: Blue;">fprintf</span><span style="color: Olive;">(</span><span style="color: Blue;">stderr</span><span style="color: Gray;">,</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">usage : mysql_select &lt;userid&gt;</span><span style="color: Navy;">\</span><span style="color: Red;">n</span><span style="color: Navy;">\</span><span style="color: Red;">n</span><span style="color: #8b0000;">&quot;</span><span style="color: Olive;">)</span><span style="color: Gray;">;<br />&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;</span><span style="color: Blue;">exit</span><span style="color: Olive;">(</span><span style="color: Maroon;">1</span><span style="color: Olive;">)</span><span style="color: Gray;">;<br />&nbsp;&nbsp; &nbsp;</span><span style="color: Olive;">}</span><span style="color: Gray;"><br />&nbsp;&nbsp; &nbsp;<br />&nbsp;&nbsp; &nbsp;</span><span style="color: Blue;">mysql_init</span><span style="color: Olive;">(</span><span style="color: Gray;">&amp;</span><span style="color: Blue;">mysql</span><span style="color: Olive;">)</span><span style="color: Gray;">;<br />&nbsp;&nbsp; &nbsp;</span><span style="color: Green;">if</span><span style="color: Gray;"> </span><span style="color: Olive;">(</span><span style="color: Gray;">!</span><span style="color: Olive;">(</span><span style="color: Blue;">sock</span><span style="color: Gray;"> = </span><span style="color: Blue;">mysql_real_connect</span><span style="color: Olive;">(</span><span style="color: Gray;">&amp;</span><span style="color: Blue;">mysql</span><span style="color: Gray;">,</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">localhost</span><span style="color: #8b0000;">&quot;</span><span style="color: Gray;">,</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">dbuser</span><span style="color: #8b0000;">&quot;</span><span style="color: Gray;">,</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">dbpwd</span><span style="color: #8b0000;">&quot;</span><span style="color: Gray;">,</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">9tmd_bbs_utf8</span><span style="color: #8b0000;">&quot;</span><span style="color: Gray;">,</span><span style="color: Maroon;">0</span><span style="color: Gray;">,</span><span class="hl-prepro">NULL</span><span style="color: Gray;">,</span><span style="color: Maroon;">0</span><span style="color: Olive;">)))</span><span style="color: Gray;"> </span><span style="color: Olive;">{</span><span style="color: Gray;"><br />&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;</span><span style="color: Blue;">fprintf</span><span style="color: Olive;">(</span><span style="color: Blue;">stderr</span><span style="color: Gray;">,</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">Couldn't connect to engine!</span><span style="color: Navy;">\</span><span style="color: Red;">n%s</span><span style="color: Navy;">\</span><span style="color: Red;">n</span><span style="color: Navy;">\</span><span style="color: Red;">n</span><span style="color: #8b0000;">&quot;</span><span style="color: Gray;">,</span><span style="color: Blue;">mysql_error</span><span style="color: Olive;">(</span><span style="color: Gray;">&amp;</span><span style="color: Blue;">mysql</span><span style="color: Olive;">))</span><span style="color: Gray;">;<br />&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;</span><span style="color: Blue;">perror</span><span style="color: Olive;">(</span><span style="color: #8b0000;">&quot;&quot;</span><span style="color: Olive;">)</span><span style="color: Gray;">;<br />&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;</span><span style="color: Blue;">exit</span><span style="color: Olive;">(</span><span style="color: Maroon;">1</span><span style="color: Olive;">)</span><span style="color: Gray;">;<br />&nbsp;&nbsp; &nbsp;</span><span style="color: Olive;">}</span><span style="color: Gray;"><br />&nbsp;&nbsp; &nbsp;<br />&nbsp;&nbsp; &nbsp;</span><span style="color: Blue;">sprintf</span><span style="color: Olive;">(</span><span style="color: Blue;">qbuf</span><span style="color: Gray;">,</span><span style="color: Blue;">SELECT_QUERY</span><span style="color: Gray;">,</span><span style="color: Blue;">atoi</span><span style="color: Olive;">(</span><span style="color: Blue;">argv</span><span style="color: Olive;">[</span><span style="color: Maroon;">1</span><span style="color: Olive;">]))</span><span style="color: Gray;">;<br />&nbsp;&nbsp; &nbsp;</span><span style="color: Green;">if</span><span style="color: Olive;">(</span><span style="color: Blue;">mysql_query</span><span style="color: Olive;">(</span><span style="color: Blue;">sock</span><span style="color: Gray;">,</span><span style="color: Blue;">qbuf</span><span style="color: Olive;">))</span><span style="color: Gray;"> </span><span style="color: Olive;">{</span><span style="color: Gray;"><br />&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;</span><span style="color: Blue;">fprintf</span><span style="color: Olive;">(</span><span style="color: Blue;">stderr</span><span style="color: Gray;">,</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">Query failed (%s)</span><span style="color: Navy;">\</span><span style="color: Red;">n</span><span style="color: #8b0000;">&quot;</span><span style="color: Gray;">,</span><span style="color: Blue;">mysql_error</span><span style="color: Olive;">(</span><span style="color: Blue;">sock</span><span style="color: Olive;">))</span><span style="color: Gray;">;<br />&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;</span><span style="color: Blue;">exit</span><span style="color: Olive;">(</span><span style="color: Maroon;">1</span><span style="color: Olive;">)</span><span style="color: Gray;">;<br />&nbsp;&nbsp; &nbsp;</span><span style="color: Olive;">}</span><span style="color: Gray;"><br />&nbsp;&nbsp; &nbsp;<br />&nbsp;&nbsp; &nbsp;</span><span style="color: Green;">if</span><span style="color: Gray;"> </span><span style="color: Olive;">(</span><span style="color: Gray;">!</span><span style="color: Olive;">(</span><span style="color: Blue;">res</span><span style="color: Gray;">=</span><span style="color: Blue;">mysql_store_result</span><span style="color: Olive;">(</span><span style="color: Blue;">sock</span><span style="color: Olive;">)))</span><span style="color: Gray;"> </span><span style="color: Olive;">{</span><span style="color: Gray;"><br />&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;</span><span style="color: Blue;">fprintf</span><span style="color: Olive;">(</span><span style="color: Blue;">stderr</span><span style="color: Gray;">,</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">Couldn't get result from %s</span><span style="color: Navy;">\</span><span style="color: Red;">n</span><span style="color: #8b0000;">&quot;</span><span style="color: Gray;">, </span><span style="color: Blue;">mysql_error</span><span style="color: Olive;">(</span><span style="color: Blue;">sock</span><span style="color: Olive;">))</span><span style="color: Gray;">;<br />&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;</span><span style="color: Blue;">exit</span><span style="color: Olive;">(</span><span style="color: Maroon;">1</span><span style="color: Olive;">)</span><span style="color: Gray;">;<br />&nbsp;&nbsp; &nbsp;</span><span style="color: Olive;">}</span><span style="color: Gray;"><br />&nbsp;&nbsp; &nbsp;<br />&nbsp;&nbsp; &nbsp;</span><span style="color: Blue;">printf</span><span style="color: Olive;">(</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">number of fields returned: %d</span><span style="color: Navy;">\</span><span style="color: Red;">n</span><span style="color: #8b0000;">&quot;</span><span style="color: Gray;">,</span><span style="color: Blue;">mysql_num_fields</span><span style="color: Olive;">(</span><span style="color: Blue;">res</span><span style="color: Olive;">))</span><span style="color: Gray;">;<br />&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;<br />&nbsp;&nbsp; &nbsp;</span><span style="color: Green;">while</span><span style="color: Gray;"> </span><span style="color: Olive;">(</span><span style="color: Blue;">row</span><span style="color: Gray;"> = </span><span style="color: Blue;">mysql_fetch_row</span><span style="color: Olive;">(</span><span style="color: Blue;">res</span><span style="color: Olive;">))</span><span style="color: Gray;"> </span><span style="color: Olive;">{</span><span style="color: Gray;"><br />&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;</span><span style="color: Blue;">printf</span><span style="color: Olive;">(</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">Ther userid #%d 's username is: %s</span><span style="color: Navy;">\</span><span style="color: Red;">n</span><span style="color: #8b0000;">&quot;</span><span style="color: Gray;">, </span><span style="color: Blue;">atoi</span><span style="color: Olive;">(</span><span style="color: Blue;">argv</span><span style="color: Olive;">[</span><span style="color: Maroon;">1</span><span style="color: Olive;">])</span><span style="color: Gray;">,</span><span style="color: Olive;">(((</span><span style="color: Blue;">row</span><span style="color: Olive;">[</span><span style="color: Maroon;">0</span><span style="color: Olive;">]</span><span style="color: Gray;">==</span><span class="hl-prepro">NULL</span><span style="color: Olive;">)</span><span style="color: Gray;">&amp;&amp;</span><span style="color: Olive;">(</span><span style="color: Gray;">!</span><span style="color: Blue;">strlen</span><span style="color: Olive;">(</span><span style="color: Blue;">row</span><span style="color: Olive;">[</span><span style="color: Maroon;">0</span><span style="color: Olive;">])))</span><span style="color: Gray;"> ? </span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">NULL</span><span style="color: #8b0000;">&quot;</span><span style="color: Gray;"> : </span><span style="color: Blue;">row</span><span style="color: Olive;">[</span><span style="color: Maroon;">0</span><span style="color: Olive;">]))</span><span style="color: Gray;"> ; <br />&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;</span><span style="color: Blue;">puts</span><span style="color: Olive;">(</span><span style="color: Gray;"> </span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">query ok !</span><span style="color: Navy;">\</span><span style="color: Red;">n</span><span style="color: #8b0000;">&quot;</span><span style="color: Gray;"> </span><span style="color: Olive;">)</span><span style="color: Gray;"> ; <br />&nbsp;&nbsp; &nbsp;</span><span style="color: Olive;">}</span><span style="color: Gray;"> <br />&nbsp;&nbsp; &nbsp;<br />&nbsp;&nbsp; &nbsp;</span><span style="color: Blue;">mysql_free_result</span><span style="color: Olive;">(</span><span style="color: Blue;">res</span><span style="color: Olive;">)</span><span style="color: Gray;">;<br />&nbsp;&nbsp; &nbsp;</span><span style="color: Blue;">mysql_close</span><span style="color: Olive;">(</span><span style="color: Blue;">sock</span><span style="color: Olive;">)</span><span style="color: Gray;">;<br />&nbsp;&nbsp; &nbsp;</span><span style="color: Blue;">exit</span><span style="color: Olive;">(</span><span style="color: Maroon;">0</span><span style="color: Olive;">)</span><span style="color: Gray;">;<br />&nbsp;&nbsp; &nbsp;</span><span style="color: Green;">return</span><span style="color: Gray;"> </span><span style="color: Maroon;">0</span><span style="color: Gray;">;&nbsp; &nbsp;</span><span style="color: #ffa500;">//. 为了兼容大部分的编译器加入此行</span><span style="color: Gray;"><br /></span><span style="color: Olive;">}</span></div></div>
<p>编译的时候，使用下面的命令</p>
<div class="hl-surround"><div class="hl-main">gcc -o mysql_select ./mysql_select.c -I/usr/local/include/mysql -L/usr/local/lib/mysql -lmysqlclient (-lz) (-lm) 后面两个选项可选，根据您的环境情况</div></div>
<p>运行的时候，执行下面的命令</p>
<div class="hl-surround"><div class="hl-main">./mysql_select 1</div></div>
<p>将返回如下结果：</p>
<div class="hl-surround"><div class="hl-main">number of fields returned: 1<br />Ther userid #1 's username is: Michael<br />query ok !</div></div>
<p>上面的代码我想大部分都能看明白，不明白的可以参考一下MySQL提供的有关C语言API部分文档，各个函数都有详细说明，有时间我整理一份常用的API说明出来。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.toplee.com/blog/329.html/feed</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>C/C++中内存管理参考</title>
		<link>http://www.toplee.com/blog/328.html</link>
		<comments>http://www.toplee.com/blog/328.html#comments</comments>
		<pubDate>Tue, 21 Nov 2006 15:12:11 +0000</pubDate>
		<dc:creator>Michael</dc:creator>
				<category><![CDATA[C / Erlang / Lua]]></category>
		<category><![CDATA[西拉东扯]]></category>
		<category><![CDATA[c]]></category>
		<category><![CDATA[c语言]]></category>
		<category><![CDATA[内存管理]]></category>

		<guid isPermaLink="false">http://www.toplee.com/blog/archives/328.html</guid>
		<description><![CDATA[Show All &#160; 1 2 3 　　程序员们经常编写内存管理程序，往往提心吊胆。如果不想触雷，唯一的解决办法就是发现所有潜伏的地雷并且排除它们，躲是躲不了的。本文的内容比一般教科书的要深入得多，读者需细心阅读，做到真正地通晓内存管理。 1、内存分配方式 内存分配方式有三种： （1）从静态存储区域分配。内存在程序编译的时候就已经分配好，这块内存在程序的整个运行期间都存在。例如全局变量，static变量。 （2）在栈上创建。在执行函数时，函数内局部变量的存储单元都可以在栈上创建，函数执行结束时这些存储单元自动被释放。栈内存分配运算内置于处理器的指令集中，效率很高，但是分配的内存容量有限。 （3） 从堆上分配，亦称动态内存分配。程序在运行的时候用malloc或new申请任意多少的内存，程序员自己负责在何时用free或delete释放内存。动态内存的生存期由我们决定，使用非常灵活，但问题也最多。 2、常见的内存错误及其对策 　　发生内存错误是件非常麻烦的事情。编译器不能自动发现这些错误，通常是在程序运行时才能捕捉到。而这些错误大多没有明显的症状，时隐时现，增加了改错的难度。有时用户怒气冲冲地把你找来，程序却没有发生任何问题，你一走，错误又发作了。 常见的内存错误及其对策如下： * 内存分配未成功，却使用了它。 　　编程新手常犯这种错误，因为他们没有意识到内存分配会不成功。常用解决办法是，在使用内存之前检查指针是否为NULL。如果指针p是函数的参数，那么在函数的入口处用assert(p!=NULL)进行检查。如果是用malloc或new来申请内存，应该用if(p==NULL) 或if(p!=NULL)进行防错处理。 * 内存分配虽然成功，但是尚未初始化就引用它。 　　犯这种错误主要有两个起因：一是没有初始化的观念；二是误以为内存的缺省初值全为零，导致引用初值错误（例如数组）。内存的缺省初值究竟是什么并没有统一的标准，尽管有些时候为零值，我们宁可信其无不可信其有。所以无论用何种方式创建数组，都别忘了赋初值，即便是赋零值也不可省略，不要嫌麻烦。 * 内存分配成功并且已经初始化，但操作越过了内存的边界。 例如在使用数组时经常发生下标“多1”或者“少1”的操作。特别是在for循环语句中，循环次数很容易搞错，导致数组操作越界。 * 忘记了释放内存，造成内存泄露。 　　含有这种错误的函数每被调用一次就丢失一块内存。刚开始时系统的内存充足，你看不到错误。终有一次程序突然死掉，系统出现提示：内存耗尽。 　　动态内存的申请与释放必须配对，程序中malloc与free的使用次数一定要相同，否则肯定有错误（new/delete同理）。 * 释放了内存却继续使用它。 有三种情况： （1）程序中的对象调用关系过于复杂，实在难以搞清楚某个对象究竟是否已经释放了内存，此时应该重新设计数据结构，从根本上解决对象管理的混乱局面。 （2）函数的return语句写错了，注意不要返回指向“栈内存”的“指针”或者“引用”，因为该内存在函数体结束时被自动销毁。 （3）使用free或delete释放了内存后，没有将指针设置为NULL。导致产生“野指针”。 【规则1】用malloc或new申请内存之后，应该立即检查指针值是否为NULL。防止使用指针值为NULL的内存。 【规则2】不要忘记为数组和动态内存赋初值。防止将未被初始化的内存作为右值使用。 【规则3】避免数组或指针的下标越界，特别要当心发生“多1”或者“少1”操作。 【规则4】动态内存的申请与释放必须配对，防止内存泄漏。 【规则5】用free或delete释放了内存之后，立即将指针设置为NULL，防止产生“野指针”。 3、指针与数组的对比 　　C++/C程序中，指针和数组在不少地方可以相互替换着用，让人产生一种错觉，以为两者是等价的。 　　数组要么在静态存储区被创建（如全局数组），要么在栈上被创建。数组名对应着（而不是指向）一块内存，其地址与容量在生命期内保持不变，只有数组的内容可以改变。 　　指针可以随时指向任意类型的内存块，它的特征是“可变”，所以我们常用指针来操作动态内存。指针远比数组灵活，但也更危险。 下面以字符串为例比较指针与数组的特性。 3.1 修改内容 示例3-1中，字符数组a的容量是6个字符，其内容为hello。a的内容可以改变，如a[0]= ‘X’。指针p指向常量字符串“world”（位于静态存储区，内容为world），常量字符串的内容是不可以被修改的。从语法上看，编译器并不觉得语句 p[0]= ‘X’有什么不妥，但是该语句企图修改常量字符串的内容而导致运行错误。 char a[] = [...]]]></description>
			<content:encoded><![CDATA[<div id="pagepost_328" class="pagepost"><div id="pagebar_top_328" class="pagebar"><a name="pp0"></a><a name="pp1"></a><a name="pp2"></a><a name="pp3"></a><a href="#pp0" onclick="pagepost(328, 0);">Show All</a> &nbsp; <strong style="color: #1E90FF;" title="">1</strong> <a href="#pp2" title="" onclick="pagepost(328, 2);">2</a> <a href="#pp3" title="" onclick="pagepost(328, 3);">3</a> <strong id="pagebar_loading_328" style="color: green;"></strong></div><p>　　程序员们经常编写内存管理程序，往往提心吊胆。如果不想触雷，唯一的解决办法就是发现所有潜伏的地雷并且排除它们，躲是躲不了的。本文的内容比一般教科书的要深入得多，读者需细心阅读，做到真正地通晓内存管理。 </p>
<p>1、内存分配方式 </p>
<p>内存分配方式有三种： </p>
<p>（1）从静态存储区域分配。内存在程序编译的时候就已经分配好，这块内存在程序的整个运行期间都存在。例如全局变量，static变量。 </p>
<p>（2）在栈上创建。在执行函数时，函数内局部变量的存储单元都可以在栈上创建，函数执行结束时这些存储单元自动被释放。栈内存分配运算内置于处理器的指令集中，效率很高，但是分配的内存容量有限。 </p>
<p>（3） 从堆上分配，亦称动态内存分配。程序在运行的时候用malloc或new申请任意多少的内存，程序员自己负责在何时用free或delete释放内存。动态内存的生存期由我们决定，使用非常灵活，但问题也最多。 </p>
<p>2、常见的内存错误及其对策 </p>
<p>　　发生内存错误是件非常麻烦的事情。编译器不能自动发现这些错误，通常是在程序运行时才能捕捉到。而这些错误大多没有明显的症状，时隐时现，增加了改错的难度。有时用户怒气冲冲地把你找来，程序却没有发生任何问题，你一走，错误又发作了。 常见的内存错误及其对策如下： </p>
<p>* 内存分配未成功，却使用了它。 </p>
<p>　　编程新手常犯这种错误，因为他们没有意识到内存分配会不成功。常用解决办法是，在使用内存之前检查指针是否为NULL。如果指针p是函数的参数，那么在函数的入口处用assert(p!=NULL)进行检查。如果是用malloc或new来申请内存，应该用if(p==NULL) 或if(p!=NULL)进行防错处理。 </p>
<p>* 内存分配虽然成功，但是尚未初始化就引用它。 </p>
<p>　　犯这种错误主要有两个起因：一是没有初始化的观念；二是误以为内存的缺省初值全为零，导致引用初值错误（例如数组）。内存的缺省初值究竟是什么并没有统一的标准，尽管有些时候为零值，我们宁可信其无不可信其有。所以无论用何种方式创建数组，都别忘了赋初值，即便是赋零值也不可省略，不要嫌麻烦。 </p>
<p>* 内存分配成功并且已经初始化，但操作越过了内存的边界。 </p>
<p>例如在使用数组时经常发生下标“多1”或者“少1”的操作。特别是在for循环语句中，循环次数很容易搞错，导致数组操作越界。 </p>
<p>* 忘记了释放内存，造成内存泄露。 </p>
<p>　　含有这种错误的函数每被调用一次就丢失一块内存。刚开始时系统的内存充足，你看不到错误。终有一次程序突然死掉，系统出现提示：内存耗尽。 </p>
<p>　　动态内存的申请与释放必须配对，程序中malloc与free的使用次数一定要相同，否则肯定有错误（new/delete同理）。 </p>
<p>* 释放了内存却继续使用它。 </p>
<p>有三种情况： </p>
<p>（1）程序中的对象调用关系过于复杂，实在难以搞清楚某个对象究竟是否已经释放了内存，此时应该重新设计数据结构，从根本上解决对象管理的混乱局面。 </p>
<p>（2）函数的return语句写错了，注意不要返回指向“栈内存”的“指针”或者“引用”，因为该内存在函数体结束时被自动销毁。 </p>
<p>（3）使用free或delete释放了内存后，没有将指针设置为NULL。导致产生“野指针”。 </p>
<p>【规则1】用malloc或new申请内存之后，应该立即检查指针值是否为NULL。防止使用指针值为NULL的内存。 </p>
<p>【规则2】不要忘记为数组和动态内存赋初值。防止将未被初始化的内存作为右值使用。 </p>
<p>【规则3】避免数组或指针的下标越界，特别要当心发生“多1”或者“少1”操作。 </p>
<p>【规则4】动态内存的申请与释放必须配对，防止内存泄漏。 </p>
<p>【规则5】用free或delete释放了内存之后，立即将指针设置为NULL，防止产生“野指针”。 </p>
<p>3、指针与数组的对比 </p>
<p>　　C++/C程序中，指针和数组在不少地方可以相互替换着用，让人产生一种错觉，以为两者是等价的。 </p>
<p>　　数组要么在静态存储区被创建（如全局数组），要么在栈上被创建。数组名对应着（而不是指向）一块内存，其地址与容量在生命期内保持不变，只有数组的内容可以改变。 </p>
<p>　　指针可以随时指向任意类型的内存块，它的特征是“可变”，所以我们常用指针来操作动态内存。指针远比数组灵活，但也更危险。 </p>
<p>下面以字符串为例比较指针与数组的特性。 </p>
<p>3.1 修改内容 </p>
<p>示例3-1中，字符数组a的容量是6个字符，其内容为hello。a的内容可以改变，如a[0]= ‘X’。指针p指向常量字符串“world”（位于静态存储区，内容为world），常量字符串的内容是不可以被修改的。从语法上看，编译器并不觉得语句 p[0]= ‘X’有什么不妥，但是该语句企图修改常量字符串的内容而导致运行错误。 </p>
<div class="hl-surround"><div class="hl-main"><span class="hl-types">char</span><span style="color: Gray;"> </span><span style="color: Blue;">a</span><span style="color: Olive;">[]</span><span style="color: Gray;"> = “</span><span style="color: Blue;">hello</span><span style="color: Gray;">”;<br /></span><span style="color: Blue;">a</span><span style="color: Olive;">[</span><span style="color: Maroon;">0</span><span style="color: Olive;">]</span><span style="color: Gray;"> = ‘</span><span style="color: Blue;">X</span><span style="color: Gray;">’;<br /></span><span style="color: Blue;">cout</span><span style="color: Gray;"> &lt;&lt; </span><span style="color: Blue;">a</span><span style="color: Gray;"> &lt;&lt; </span><span style="color: Blue;">endl</span><span style="color: Gray;">;<br /></span><span class="hl-types">char</span><span style="color: Gray;"> *</span><span style="color: Blue;">p</span><span style="color: Gray;"> = “</span><span style="color: Blue;">world</span><span style="color: Gray;">”; </span><span style="color: #ffa500;">// 注意p指向常量字符串</span><span style="color: Gray;"><br /></span><span style="color: Blue;">p</span><span style="color: Olive;">[</span><span style="color: Maroon;">0</span><span style="color: Olive;">]</span><span style="color: Gray;"> = ‘</span><span style="color: Blue;">X</span><span style="color: Gray;">’; </span><span style="color: #ffa500;">// 编译器不能发现该错误</span><span style="color: Gray;"><br /></span><span style="color: Blue;">cout</span><span style="color: Gray;"> &lt;&lt; </span><span style="color: Blue;">p</span><span style="color: Gray;"> &lt;&lt; </span><span style="color: Blue;">endl</span><span style="color: Gray;">;</span></div></div>
<p>示例3.1 修改数组和指针的内容</p>
<p>3.2 内容复制与比较 </p>
<p>　　不能对数组名进行直接复制与比较。示例7-3-2中，若想把数组a的内容复制给数组b，不能用语句 b = a ，否则将产生编译错误。应该用标准库函数strcpy进行复制。同理，比较b和a的内容是否相同，不能用if(b==a) 来判断，应该用标准库函数strcmp进行比较。 </p>
<p>　　语句p = a 并不能把a的内容复制指针p，而是把a的地址赋给了p。要想复制a的内容，可以先用库函数malloc为p申请一块容量为strlen(a)+1个字符的内存，再用strcpy进行字符串复制。同理，语句if(p==a) 比较的不是内容而是地址，应该用库函数strcmp来比较。 </p>
<div class="hl-surround"><div class="hl-main"><span style="color: #ffa500;">// 数组…</span><span style="color: Gray;"><br /></span><span class="hl-types">char</span><span style="color: Gray;"> </span><span style="color: Blue;">a</span><span style="color: Olive;">[]</span><span style="color: Gray;"> = </span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">hello</span><span style="color: #8b0000;">&quot;</span><span style="color: Gray;">;<br /></span><span class="hl-types">char</span><span style="color: Gray;"> </span><span style="color: Blue;">b</span><span style="color: Olive;">[</span><span style="color: Maroon;">10</span><span style="color: Olive;">]</span><span style="color: Gray;">;<br /></span><span style="color: Blue;">strcpy</span><span style="color: Olive;">(</span><span style="color: Blue;">b</span><span style="color: Gray;">, </span><span style="color: Blue;">a</span><span style="color: Olive;">)</span><span style="color: Gray;">; </span><span style="color: #ffa500;">// 不能用 b = a;</span><span style="color: Gray;"><br /></span><span style="color: Green;">if</span><span style="color: Olive;">(</span><span style="color: Blue;">strcmp</span><span style="color: Olive;">(</span><span style="color: Blue;">b</span><span style="color: Gray;">, </span><span style="color: Blue;">a</span><span style="color: Olive;">)</span><span style="color: Gray;"> == </span><span style="color: Maroon;">0</span><span style="color: Olive;">)</span><span style="color: Gray;"> </span><span style="color: #ffa500;">// 不能用 if (b == a)</span><span style="color: Gray;"><br />…<br /></span><span style="color: #ffa500;">// 指针…</span><span style="color: Gray;"><br /></span><span class="hl-types">int</span><span style="color: Gray;"> </span><span style="color: Blue;">len</span><span style="color: Gray;"> = </span><span style="color: Blue;">strlen</span><span style="color: Olive;">(</span><span style="color: Blue;">a</span><span style="color: Olive;">)</span><span style="color: Gray;">;<br /></span><span class="hl-types">char</span><span style="color: Gray;"> *</span><span style="color: Blue;">p</span><span style="color: Gray;"> = </span><span style="color: Olive;">(</span><span class="hl-types">char</span><span style="color: Gray;"> *</span><span style="color: Olive;">)</span><span style="color: Blue;">malloc</span><span style="color: Olive;">(</span><span style="color: Green;">sizeof</span><span style="color: Olive;">(</span><span class="hl-types">char</span><span style="color: Olive;">)</span><span style="color: Gray;">*</span><span style="color: Olive;">(</span><span style="color: Blue;">len</span><span style="color: Gray;">+</span><span style="color: Maroon;">1</span><span style="color: Olive;">))</span><span style="color: Gray;">;<br /></span><span style="color: Blue;">strcpy</span><span style="color: Olive;">(</span><span style="color: Blue;">p</span><span style="color: Gray;">,</span><span style="color: Blue;">a</span><span style="color: Olive;">)</span><span style="color: Gray;">; </span><span style="color: #ffa500;">// 不要用 p = a;</span><span style="color: Gray;"><br /></span><span style="color: Green;">if</span><span style="color: Olive;">(</span><span style="color: Blue;">strcmp</span><span style="color: Olive;">(</span><span style="color: Blue;">p</span><span style="color: Gray;">, </span><span style="color: Blue;">a</span><span style="color: Olive;">)</span><span style="color: Gray;"> == </span><span style="color: Maroon;">0</span><span style="color: Olive;">)</span><span style="color: Gray;"> </span><span style="color: #ffa500;">// 不要用 if (p == a)</span><span style="color: Gray;"><br />…</span></div></div>
<p>示例3.2 数组和指针的内容复制与比较</p>
<p>3.3 计算内存容量 </p>
<p>　　用运算符sizeof可以计算出数组的容量（字节数）。示例7-3-3（a）中，sizeof(a)的值是12（注意别忘了’’）。指针p指向a，但是 sizeof(p)的值却是4。这是因为sizeof(p)得到的是一个指针变量的字节数，相当于sizeof(char*)，而不是p所指的内存容量。 C++/C语言没有办法知道指针所指的内存容量，除非在申请内存时记住它。注意当数组作为函数的参数进行传递时，该数组自动退化为同类型的指针。示例7-3-3（b）中，不论数组a的容量是多少，sizeof(a)始终等于sizeof(char *)。 </p>
<div class="hl-surround"><div class="hl-main"><span class="hl-types">char</span><span style="color: Gray;"> </span><span style="color: Blue;">a</span><span style="color: Olive;">[]</span><span style="color: Gray;"> = </span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">hello world</span><span style="color: #8b0000;">&quot;</span><span style="color: Gray;">;<br /></span><span class="hl-types">char</span><span style="color: Gray;"> *</span><span style="color: Blue;">p</span><span style="color: Gray;"> = </span><span style="color: Blue;">a</span><span style="color: Gray;">;<br /></span><span style="color: Blue;">cout</span><span style="color: Gray;">&lt;&lt; </span><span style="color: Green;">sizeof</span><span style="color: Olive;">(</span><span style="color: Blue;">a</span><span style="color: Olive;">)</span><span style="color: Gray;"> &lt;&lt; </span><span style="color: Blue;">endl</span><span style="color: Gray;">; </span><span style="color: #ffa500;">// 12字节</span><span style="color: Gray;"><br /></span><span style="color: Blue;">cout</span><span style="color: Gray;">&lt;&lt; </span><span style="color: Green;">sizeof</span><span style="color: Olive;">(</span><span style="color: Blue;">p</span><span style="color: Olive;">)</span><span style="color: Gray;"> &lt;&lt; </span><span style="color: Blue;">endl</span><span style="color: Gray;">; </span><span style="color: #ffa500;">// 4字节</span></div></div>
<p>示例3.3（a） 计算数组和指针的内存容量</p>
<div class="hl-surround"><div class="hl-main"><span class="hl-types">void</span><span style="color: Gray;"> </span><span style="color: Blue;">Func</span><span style="color: Olive;">(</span><span class="hl-types">char</span><span style="color: Gray;"> </span><span style="color: Blue;">a</span><span style="color: Olive;">[</span><span style="color: Maroon;">100</span><span style="color: Olive;">])</span><span style="color: Gray;"><br /></span><span style="color: Olive;">{</span><span style="color: Gray;"><br />　</span><span style="color: Blue;">cout</span><span style="color: Gray;">&lt;&lt; </span><span style="color: Green;">sizeof</span><span style="color: Olive;">(</span><span style="color: Blue;">a</span><span style="color: Olive;">)</span><span style="color: Gray;"> &lt;&lt; </span><span style="color: Blue;">endl</span><span style="color: Gray;">; </span><span style="color: #ffa500;">// 4字节而不是100字节</span><span style="color: Gray;"><br /></span><span style="color: Olive;">}</span></div></div>
<p>示例3.3（b） 数组退化为指针</p>
<div id="pagebar_bottom_328" class="pagebar"><a href="#pp0" onclick="pagepost(328, 0);">Show All</a> &nbsp; <strong style="color: #1E90FF;" title="">1</strong> <a href="#pp2" title="" onclick="pagepost(328, 2);">2</a> <a href="#pp3" title="" onclick="pagepost(328, 3);">3</a> </div></div>]]></content:encoded>
			<wfw:commentRss>http://www.toplee.com/blog/328.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>使用JScript.encode进行网页的加密与解密</title>
		<link>http://www.toplee.com/blog/149.html</link>
		<comments>http://www.toplee.com/blog/149.html#comments</comments>
		<pubDate>Sun, 18 Jun 2006 10:16:20 +0000</pubDate>
		<dc:creator>Michael</dc:creator>
				<category><![CDATA[C / Erlang / Lua]]></category>
		<category><![CDATA[技术交流]]></category>

		<guid isPermaLink="false">http://www.toplee.com/blog/?p=149</guid>
		<description><![CDATA[我们常常看到类似新浪上面的视频播放页面源文件是一堆乱码，实际上是经过JScript加密过的代码，这样可以防止普通用户轻易的找到视频源文件地址，从而盗链，下面把JScript加密解密的方法整理了一下： 申明：下面代码非本人原创，而是经过收集和整理的结果，由于原作者不祥，在此特说明。 JScript.encode实现加密解密的脚本代码如下： &#60;script language=&#34;JavaScript&#34;&#62;&#60;!--function screncode(s,l){enc=new ActiveXObject(&#34;Scripting.Encoder&#34;);return enc.EncodeScriptFile(&#34;.&#34;+l,s,0,l+&#34;cript&#34;);}&#160;var STATE_COPY_INPUT = 100var STATE_READLEN = 101var STATE_DECODE = 102var STATE_UNESCAPE = 103&#160;var pick_encoding = new Array(1, 2, 0, 1, 2, 0, 2, 0, 0, 2, 0, 2, 1, 0, 2, 0,1, 0, 2, 0, 1, 1, 2, 0, 0, 2, 1, 0, 2, 0, 0, 2,1, 1, [...]]]></description>
			<content:encoded><![CDATA[<p>我们常常看到类似新浪上面的视频播放页面源文件是一堆乱码，实际上是经过JScript加密过的代码，这样可以防止普通用户轻易的找到视频源文件地址，从而盗链，下面把JScript加密解密的方法整理了一下：</p>
<p><span id="more-149"></span><br />
申明：下面代码非本人原创，而是经过收集和整理的结果，由于原作者不祥，在此特说明。</p>
<p>JScript.encode实现加密解密的脚本代码如下：</p>
<div class="hl-surround"><div class="hl-main"><span style="color: Gray;">&lt;</span><span style="color: Blue;">script</span><span style="color: Gray;"> </span><span style="color: Blue;">language</span><span style="color: Gray;">=</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">JavaScript</span><span style="color: #8b0000;">&quot;</span><span style="color: Gray;">&gt;<br />&lt;!--<br /></span><span style="color: Green;">function</span><span style="color: Gray;"> </span><span style="color: Blue;">screncode</span><span style="color: Olive;">(</span><span style="color: Blue;">s</span><span style="color: Gray;">,</span><span style="color: Blue;">l</span><span style="color: Olive;">)</span><span style="color: Gray;"><br /></span><span style="color: Olive;">{</span><span style="color: Blue;">enc</span><span style="color: Gray;">=</span><span style="color: Green;">new</span><span style="color: Gray;"> </span><span style="color: Blue;">ActiveXObject</span><span style="color: Olive;">(</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">Scripting.Encoder</span><span style="color: #8b0000;">&quot;</span><span style="color: Olive;">)</span><span style="color: Gray;">;<br /></span><span style="color: Green;">return</span><span style="color: Gray;"> </span><span style="color: Blue;">enc</span><span style="color: Gray;">.</span><span style="color: Blue;">EncodeScriptFile</span><span style="color: Olive;">(</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">.</span><span style="color: #8b0000;">&quot;</span><span style="color: Gray;">+</span><span style="color: Blue;">l</span><span style="color: Gray;">,</span><span style="color: Blue;">s</span><span style="color: Gray;">,</span><span style="color: Maroon;">0</span><span style="color: Gray;">,</span><span style="color: Blue;">l</span><span style="color: Gray;">+</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">cript</span><span style="color: #8b0000;">&quot;</span><span style="color: Olive;">)</span><span style="color: Gray;">;<br /></span><span style="color: Olive;">}</span><span style="color: Gray;"><br />&nbsp;<br /></span><span style="color: Green;">var</span><span style="color: Gray;"> </span><span style="color: Blue;">STATE_COPY_INPUT</span><span style="color: Gray;"> = </span><span style="color: Maroon;">100</span><span style="color: Gray;"><br /></span><span style="color: Green;">var</span><span style="color: Gray;"> </span><span style="color: Blue;">STATE_READLEN</span><span style="color: Gray;"> = </span><span style="color: Maroon;">101</span><span style="color: Gray;"><br /></span><span style="color: Green;">var</span><span style="color: Gray;"> </span><span style="color: Blue;">STATE_DECODE</span><span style="color: Gray;"> = </span><span style="color: Maroon;">102</span><span style="color: Gray;"><br /></span><span style="color: Green;">var</span><span style="color: Gray;"> </span><span style="color: Blue;">STATE_UNESCAPE</span><span style="color: Gray;"> = </span><span style="color: Maroon;">103</span><span style="color: Gray;"><br />&nbsp;<br /></span><span style="color: Green;">var</span><span style="color: Gray;"> </span><span style="color: Blue;">pick_encoding</span><span style="color: Gray;"> = </span><span style="color: Green;">new</span><span style="color: Gray;"> </span><span style="color: Teal;">Array</span><span style="color: Olive;">(</span><span style="color: Gray;"><br /></span><span style="color: Maroon;">1</span><span style="color: Gray;">, </span><span style="color: Maroon;">2</span><span style="color: Gray;">, </span><span style="color: Maroon;">0</span><span style="color: Gray;">, </span><span style="color: Maroon;">1</span><span style="color: Gray;">, </span><span style="color: Maroon;">2</span><span style="color: Gray;">, </span><span style="color: Maroon;">0</span><span style="color: Gray;">, </span><span style="color: Maroon;">2</span><span style="color: Gray;">, </span><span style="color: Maroon;">0</span><span style="color: Gray;">, </span><span style="color: Maroon;">0</span><span style="color: Gray;">, </span><span style="color: Maroon;">2</span><span style="color: Gray;">, </span><span style="color: Maroon;">0</span><span style="color: Gray;">, </span><span style="color: Maroon;">2</span><span style="color: Gray;">, </span><span style="color: Maroon;">1</span><span style="color: Gray;">, </span><span style="color: Maroon;">0</span><span style="color: Gray;">, </span><span style="color: Maroon;">2</span><span style="color: Gray;">, </span><span style="color: Maroon;">0</span><span style="color: Gray;">,<br /></span><span style="color: Maroon;">1</span><span style="color: Gray;">, </span><span style="color: Maroon;">0</span><span style="color: Gray;">, </span><span style="color: Maroon;">2</span><span style="color: Gray;">, </span><span style="color: Maroon;">0</span><span style="color: Gray;">, </span><span style="color: Maroon;">1</span><span style="color: Gray;">, </span><span style="color: Maroon;">1</span><span style="color: Gray;">, </span><span style="color: Maroon;">2</span><span style="color: Gray;">, </span><span style="color: Maroon;">0</span><span style="color: Gray;">, </span><span style="color: Maroon;">0</span><span style="color: Gray;">, </span><span style="color: Maroon;">2</span><span style="color: Gray;">, </span><span style="color: Maroon;">1</span><span style="color: Gray;">, </span><span style="color: Maroon;">0</span><span style="color: Gray;">, </span><span style="color: Maroon;">2</span><span style="color: Gray;">, </span><span style="color: Maroon;">0</span><span style="color: Gray;">, </span><span style="color: Maroon;">0</span><span style="color: Gray;">, </span><span style="color: Maroon;">2</span><span style="color: Gray;">,<br /></span><span style="color: Maroon;">1</span><span style="color: Gray;">, </span><span style="color: Maroon;">1</span><span style="color: Gray;">, </span><span style="color: Maroon;">0</span><span style="color: Gray;">, </span><span style="color: Maroon;">2</span><span style="color: Gray;">, </span><span style="color: Maroon;">0</span><span style="color: Gray;">, </span><span style="color: Maroon;">2</span><span style="color: Gray;">, </span><span style="color: Maroon;">0</span><span style="color: Gray;">, </span><span style="color: Maroon;">1</span><span style="color: Gray;">, </span><span style="color: Maroon;">0</span><span style="color: Gray;">, </span><span style="color: Maroon;">1</span><span style="color: Gray;">, </span><span style="color: Maroon;">1</span><span style="color: Gray;">, </span><span style="color: Maroon;">2</span><span style="color: Gray;">, </span><span style="color: Maroon;">0</span><span style="color: Gray;">, </span><span style="color: Maroon;">1</span><span style="color: Gray;">, </span><span style="color: Maroon;">0</span><span style="color: Gray;">, </span><span style="color: Maroon;">2</span><span style="color: Gray;">,<br /></span><span style="color: Maroon;">1</span><span style="color: Gray;">, </span><span style="color: Maroon;">0</span><span style="color: Gray;">, </span><span style="color: Maroon;">2</span><span style="color: Gray;">, </span><span style="color: Maroon;">0</span><span style="color: Gray;">, </span><span style="color: Maroon;">1</span><span style="color: Gray;">, </span><span style="color: Maroon;">1</span><span style="color: Gray;">, </span><span style="color: Maroon;">2</span><span style="color: Gray;">, </span><span style="color: Maroon;">0</span><span style="color: Gray;">, </span><span style="color: Maroon;">0</span><span style="color: Gray;">, </span><span style="color: Maroon;">1</span><span style="color: Gray;">, </span><span style="color: Maroon;">1</span><span style="color: Gray;">, </span><span style="color: Maroon;">2</span><span style="color: Gray;">, </span><span style="color: Maroon;">0</span><span style="color: Gray;">, </span><span style="color: Maroon;">1</span><span style="color: Gray;">, </span><span style="color: Maroon;">0</span><span style="color: Gray;">, </span><span style="color: Maroon;">2</span><span style="color: Gray;"><br /></span><span style="color: Olive;">)</span><span style="color: Gray;"><br />&nbsp;<br /></span><span style="color: Green;">var</span><span style="color: Gray;"> </span><span style="color: Blue;">rawData</span><span style="color: Gray;"> = </span><span style="color: Green;">new</span><span style="color: Gray;"> </span><span style="color: Teal;">Array</span><span style="color: Olive;">(</span><span style="color: Gray;"><br /></span><span style="color: Maroon;">0</span><span style="color: Blue;">x64</span><span style="color: Gray;">,</span><span style="color: Maroon;">0</span><span style="color: Blue;">x37</span><span style="color: Gray;">,</span><span style="color: Maroon;">0</span><span style="color: Blue;">x69</span><span style="color: Gray;">, </span><span style="color: Maroon;">0</span><span style="color: Blue;">x50</span><span style="color: Gray;">,</span><span style="color: Maroon;">0</span><span style="color: Blue;">x7E</span><span style="color: Gray;">,</span><span style="color: Maroon;">0</span><span style="color: Blue;">x2C</span><span style="color: Gray;">, </span><span style="color: Maroon;">0</span><span style="color: Blue;">x22</span><span style="color: Gray;">,</span><span style="color: Maroon;">0</span><span style="color: Blue;">x5A</span><span style="color: Gray;">,</span><span style="color: Maroon;">0</span><span style="color: Blue;">x65</span><span style="color: Gray;">, </span><span style="color: Maroon;">0</span><span style="color: Blue;">x4A</span><span style="color: Gray;">,</span><span style="color: Maroon;">0</span><span style="color: Blue;">x45</span><span style="color: Gray;">,</span><span style="color: Maroon;">0</span><span style="color: Blue;">x72</span><span style="color: Gray;">,<br /></span><span style="color: Maroon;">0</span><span style="color: Blue;">x61</span><span style="color: Gray;">,</span><span style="color: Maroon;">0</span><span style="color: Blue;">x3A</span><span style="color: Gray;">,</span><span style="color: Maroon;">0</span><span style="color: Blue;">x5B</span><span style="color: Gray;">, </span><span style="color: Maroon;">0</span><span style="color: Blue;">x5E</span><span style="color: Gray;">,</span><span style="color: Maroon;">0</span><span style="color: Blue;">x79</span><span style="color: Gray;">,</span><span style="color: Maroon;">0</span><span style="color: Blue;">x66</span><span style="color: Gray;">, </span><span style="color: Maroon;">0</span><span style="color: Blue;">x5D</span><span style="color: Gray;">,</span><span style="color: Maroon;">0</span><span style="color: Blue;">x59</span><span style="color: Gray;">,</span><span style="color: Maroon;">0</span><span style="color: Blue;">x75</span><span style="color: Gray;">, </span><span style="color: Maroon;">0</span><span style="color: Blue;">x5B</span><span style="color: Gray;">,</span><span style="color: Maroon;">0</span><span style="color: Blue;">x27</span><span style="color: Gray;">,</span><span style="color: Maroon;">0</span><span style="color: Blue;">x4C</span><span style="color: Gray;">,<br /></span><span style="color: Maroon;">0</span><span style="color: Blue;">x42</span><span style="color: Gray;">,</span><span style="color: Maroon;">0</span><span style="color: Blue;">x76</span><span style="color: Gray;">,</span><span style="color: Maroon;">0</span><span style="color: Blue;">x45</span><span style="color: Gray;">, </span><span style="color: Maroon;">0</span><span style="color: Blue;">x60</span><span style="color: Gray;">,</span><span style="color: Maroon;">0</span><span style="color: Blue;">x63</span><span style="color: Gray;">,</span><span style="color: Maroon;">0</span><span style="color: Blue;">x76</span><span style="color: Gray;">, </span><span style="color: Maroon;">0</span><span style="color: Blue;">x23</span><span style="color: Gray;">,</span><span style="color: Maroon;">0</span><span style="color: Blue;">x62</span><span style="color: Gray;">,</span><span style="color: Maroon;">0</span><span style="color: Blue;">x2A</span><span style="color: Gray;">, </span><span style="color: Maroon;">0</span><span style="color: Blue;">x65</span><span style="color: Gray;">,</span><span style="color: Maroon;">0</span><span style="color: Blue;">x4D</span><span style="color: Gray;">,</span><span style="color: Maroon;">0</span><span style="color: Blue;">x43</span><span style="color: Gray;">,<br /></span><span style="color: Maroon;">0</span><span style="color: Blue;">x5F</span><span style="color: Gray;">,</span><span style="color: Maroon;">0</span><span style="color: Blue;">x51</span><span style="color: Gray;">,</span><span style="color: Maroon;">0</span><span style="color: Blue;">x33</span><span style="color: Gray;">, </span><span style="color: Maroon;">0</span><span style="color: Blue;">x7E</span><span style="color: Gray;">,</span><span style="color: Maroon;">0</span><span style="color: Blue;">x53</span><span style="color: Gray;">,</span><span style="color: Maroon;">0</span><span style="color: Blue;">x42</span><span style="color: Gray;">, </span><span style="color: Maroon;">0</span><span style="color: Blue;">x4F</span><span style="color: Gray;">,</span><span style="color: Maroon;">0</span><span style="color: Blue;">x52</span><span style="color: Gray;">,</span><span style="color: Maroon;">0</span><span style="color: Blue;">x20</span><span style="color: Gray;">, </span><span style="color: Maroon;">0</span><span style="color: Blue;">x52</span><span style="color: Gray;">,</span><span style="color: Maroon;">0</span><span style="color: Blue;">x20</span><span style="color: Gray;">,</span><span style="color: Maroon;">0</span><span style="color: Blue;">x63</span><span style="color: Gray;">,<br /></span><span style="color: Maroon;">0</span><span style="color: Blue;">x7A</span><span style="color: Gray;">,</span><span style="color: Maroon;">0</span><span style="color: Blue;">x26</span><span style="color: Gray;">,</span><span style="color: Maroon;">0</span><span style="color: Blue;">x4A</span><span style="color: Gray;">, </span><span style="color: Maroon;">0</span><span style="color: Blue;">x21</span><span style="color: Gray;">,</span><span style="color: Maroon;">0</span><span style="color: Blue;">x54</span><span style="color: Gray;">,</span><span style="color: Maroon;">0</span><span style="color: Blue;">x5A</span><span style="color: Gray;">, </span><span style="color: Maroon;">0</span><span style="color: Blue;">x46</span><span style="color: Gray;">,</span><span style="color: Maroon;">0</span><span style="color: Blue;">x71</span><span style="color: Gray;">,</span><span style="color: Maroon;">0</span><span style="color: Blue;">x38</span><span style="color: Gray;">, </span><span style="color: Maroon;">0</span><span style="color: Blue;">x20</span><span style="color: Gray;">,</span><span style="color: Maroon;">0</span><span style="color: Blue;">x2B</span><span style="color: Gray;">,</span><span style="color: Maroon;">0</span><span style="color: Blue;">x79</span><span style="color: Gray;">,<br /></span><span style="color: Maroon;">0</span><span style="color: Blue;">x26</span><span style="color: Gray;">,</span><span style="color: Maroon;">0</span><span style="color: Blue;">x66</span><span style="color: Gray;">,</span><span style="color: Maroon;">0</span><span style="color: Blue;">x32</span><span style="color: Gray;">, </span><span style="color: Maroon;">0</span><span style="color: Blue;">x63</span><span style="color: Gray;">,</span><span style="color: Maroon;">0</span><span style="color: Blue;">x2A</span><span style="color: Gray;">,</span><span style="color: Maroon;">0</span><span style="color: Blue;">x57</span><span style="color: Gray;">, </span><span style="color: Maroon;">0</span><span style="color: Blue;">x2A</span><span style="color: Gray;">,</span><span style="color: Maroon;">0</span><span style="color: Blue;">x58</span><span style="color: Gray;">,</span><span style="color: Maroon;">0</span><span style="color: Blue;">x6C</span><span style="color: Gray;">, </span><span style="color: Maroon;">0</span><span style="color: Blue;">x76</span><span style="color: Gray;">,</span><span style="color: Maroon;">0</span><span style="color: Blue;">x7F</span><span style="color: Gray;">,</span><span style="color: Maroon;">0</span><span style="color: Blue;">x2B</span><span style="color: Gray;">,<br /></span><span style="color: Maroon;">0</span><span style="color: Blue;">x47</span><span style="color: Gray;">,</span><span style="color: Maroon;">0</span><span style="color: Blue;">x7B</span><span style="color: Gray;">,</span><span style="color: Maroon;">0</span><span style="color: Blue;">x46</span><span style="color: Gray;">, </span><span style="color: Maroon;">0</span><span style="color: Blue;">x25</span><span style="color: Gray;">,</span><span style="color: Maroon;">0</span><span style="color: Blue;">x30</span><span style="color: Gray;">,</span><span style="color: Maroon;">0</span><span style="color: Blue;">x52</span><span style="color: Gray;">, </span><span style="color: Maroon;">0</span><span style="color: Blue;">x2C</span><span style="color: Gray;">,</span><span style="color: Maroon;">0</span><span style="color: Blue;">x31</span><span style="color: Gray;">,</span><span style="color: Maroon;">0</span><span style="color: Blue;">x4F</span><span style="color: Gray;">, </span><span style="color: Maroon;">0</span><span style="color: Blue;">x29</span><span style="color: Gray;">,</span><span style="color: Maroon;">0</span><span style="color: Blue;">x6C</span><span style="color: Gray;">,</span><span style="color: Maroon;">0</span><span style="color: Blue;">x3D</span><span style="color: Gray;">,<br /></span><span style="color: Maroon;">0</span><span style="color: Blue;">x69</span><span style="color: Gray;">,</span><span style="color: Maroon;">0</span><span style="color: Blue;">x49</span><span style="color: Gray;">,</span><span style="color: Maroon;">0</span><span style="color: Blue;">x70</span><span style="color: Gray;">, </span><span style="color: Maroon;">0</span><span style="color: Blue;">x3F</span><span style="color: Gray;">,</span><span style="color: Maroon;">0</span><span style="color: Blue;">x3F</span><span style="color: Gray;">,</span><span style="color: Maroon;">0</span><span style="color: Blue;">x3F</span><span style="color: Gray;">, </span><span style="color: Maroon;">0</span><span style="color: Blue;">x27</span><span style="color: Gray;">,</span><span style="color: Maroon;">0</span><span style="color: Blue;">x78</span><span style="color: Gray;">,</span><span style="color: Maroon;">0</span><span style="color: Blue;">x7B</span><span style="color: Gray;">, </span><span style="color: Maroon;">0</span><span style="color: Blue;">x3F</span><span style="color: Gray;">,</span><span style="color: Maroon;">0</span><span style="color: Blue;">x3F</span><span style="color: Gray;">,</span><span style="color: Maroon;">0</span><span style="color: Blue;">x3F</span><span style="color: Gray;">,<br /></span><span style="color: Maroon;">0</span><span style="color: Blue;">x67</span><span style="color: Gray;">,</span><span style="color: Maroon;">0</span><span style="color: Blue;">x5F</span><span style="color: Gray;">,</span><span style="color: Maroon;">0</span><span style="color: Blue;">x51</span><span style="color: Gray;">, </span><span style="color: Maroon;">0</span><span style="color: Blue;">x3F</span><span style="color: Gray;">,</span><span style="color: Maroon;">0</span><span style="color: Blue;">x3F</span><span style="color: Gray;">,</span><span style="color: Maroon;">0</span><span style="color: Blue;">x3F</span><span style="color: Gray;">, </span><span style="color: Maroon;">0</span><span style="color: Blue;">x62</span><span style="color: Gray;">,</span><span style="color: Maroon;">0</span><span style="color: Blue;">x29</span><span style="color: Gray;">,</span><span style="color: Maroon;">0</span><span style="color: Blue;">x7A</span><span style="color: Gray;">, </span><span style="color: Maroon;">0</span><span style="color: Blue;">x41</span><span style="color: Gray;">,</span><span style="color: Maroon;">0</span><span style="color: Blue;">x24</span><span style="color: Gray;">,</span><span style="color: Maroon;">0</span><span style="color: Blue;">x7E</span><span style="color: Gray;">,<br /></span><span style="color: Maroon;">0</span><span style="color: Blue;">x5A</span><span style="color: Gray;">,</span><span style="color: Maroon;">0</span><span style="color: Blue;">x2F</span><span style="color: Gray;">,</span><span style="color: Maroon;">0</span><span style="color: Blue;">x3B</span><span style="color: Gray;">, </span><span style="color: Maroon;">0</span><span style="color: Blue;">x66</span><span style="color: Gray;">,</span><span style="color: Maroon;">0</span><span style="color: Blue;">x39</span><span style="color: Gray;">,</span><span style="color: Maroon;">0</span><span style="color: Blue;">x47</span><span style="color: Gray;">, </span><span style="color: Maroon;">0</span><span style="color: Blue;">x32</span><span style="color: Gray;">,</span><span style="color: Maroon;">0</span><span style="color: Blue;">x33</span><span style="color: Gray;">,</span><span style="color: Maroon;">0</span><span style="color: Blue;">x41</span><span style="color: Gray;">, </span><span style="color: Maroon;">0</span><span style="color: Blue;">x73</span><span style="color: Gray;">,</span><span style="color: Maroon;">0</span><span style="color: Blue;">x6F</span><span style="color: Gray;">,</span><span style="color: Maroon;">0</span><span style="color: Blue;">x77</span><span style="color: Gray;">,<br /></span><span style="color: Maroon;">0</span><span style="color: Blue;">x4D</span><span style="color: Gray;">,</span><span style="color: Maroon;">0</span><span style="color: Blue;">x21</span><span style="color: Gray;">,</span><span style="color: Maroon;">0</span><span style="color: Blue;">x56</span><span style="color: Gray;">, </span><span style="color: Maroon;">0</span><span style="color: Blue;">x43</span><span style="color: Gray;">,</span><span style="color: Maroon;">0</span><span style="color: Blue;">x75</span><span style="color: Gray;">,</span><span style="color: Maroon;">0</span><span style="color: Blue;">x5F</span><span style="color: Gray;">, </span><span style="color: Maroon;">0</span><span style="color: Blue;">x71</span><span style="color: Gray;">,</span><span style="color: Maroon;">0</span><span style="color: Blue;">x28</span><span style="color: Gray;">,</span><span style="color: Maroon;">0</span><span style="color: Blue;">x26</span><span style="color: Gray;">, </span><span style="color: Maroon;">0</span><span style="color: Blue;">x39</span><span style="color: Gray;">,</span><span style="color: Maroon;">0</span><span style="color: Blue;">x42</span><span style="color: Gray;">,</span><span style="color: Maroon;">0</span><span style="color: Blue;">x78</span><span style="color: Gray;">,<br /></span><span style="color: Maroon;">0</span><span style="color: Blue;">x7C</span><span style="color: Gray;">,</span><span style="color: Maroon;">0</span><span style="color: Blue;">x46</span><span style="color: Gray;">,</span><span style="color: Maroon;">0</span><span style="color: Blue;">x6E</span><span style="color: Gray;">, </span><span style="color: Maroon;">0</span><span style="color: Blue;">x53</span><span style="color: Gray;">,</span><span style="color: Maroon;">0</span><span style="color: Blue;">x4A</span><span style="color: Gray;">,</span><span style="color: Maroon;">0</span><span style="color: Blue;">x64</span><span style="color: Gray;">, </span><span style="color: Maroon;">0</span><span style="color: Blue;">x48</span><span style="color: Gray;">,</span><span style="color: Maroon;">0</span><span style="color: Blue;">x5C</span><span style="color: Gray;">,</span><span style="color: Maroon;">0</span><span style="color: Blue;">x74</span><span style="color: Gray;">, </span><span style="color: Maroon;">0</span><span style="color: Blue;">x31</span><span style="color: Gray;">,</span><span style="color: Maroon;">0</span><span style="color: Blue;">x48</span><span style="color: Gray;">,</span><span style="color: Maroon;">0</span><span style="color: Blue;">x67</span><span style="color: Gray;">,<br /></span><span style="color: Maroon;">0</span><span style="color: Blue;">x72</span><span style="color: Gray;">,</span><span style="color: Maroon;">0</span><span style="color: Blue;">x36</span><span style="color: Gray;">,</span><span style="color: Maroon;">0</span><span style="color: Blue;">x7D</span><span style="color: Gray;">, </span><span style="color: Maroon;">0</span><span style="color: Blue;">x6E</span><span style="color: Gray;">,</span><span style="color: Maroon;">0</span><span style="color: Blue;">x4B</span><span style="color: Gray;">,</span><span style="color: Maroon;">0</span><span style="color: Blue;">x68</span><span style="color: Gray;">, </span><span style="color: Maroon;">0</span><span style="color: Blue;">x70</span><span style="color: Gray;">,</span><span style="color: Maroon;">0</span><span style="color: Blue;">x7D</span><span style="color: Gray;">,</span><span style="color: Maroon;">0</span><span style="color: Blue;">x35</span><span style="color: Gray;">, </span><span style="color: Maroon;">0</span><span style="color: Blue;">x49</span><span style="color: Gray;">,</span><span style="color: Maroon;">0</span><span style="color: Blue;">x5D</span><span style="color: Gray;">,</span><span style="color: Maroon;">0</span><span style="color: Blue;">x22</span><span style="color: Gray;">,<br /></span><span style="color: Maroon;">0</span><span style="color: Blue;">x3F</span><span style="color: Gray;">,</span><span style="color: Maroon;">0</span><span style="color: Blue;">x6A</span><span style="color: Gray;">,</span><span style="color: Maroon;">0</span><span style="color: Blue;">x55</span><span style="color: Gray;">, </span><span style="color: Maroon;">0</span><span style="color: Blue;">x4B</span><span style="color: Gray;">,</span><span style="color: Maroon;">0</span><span style="color: Blue;">x50</span><span style="color: Gray;">,</span><span style="color: Maroon;">0</span><span style="color: Blue;">x3A</span><span style="color: Gray;">, </span><span style="color: Maroon;">0</span><span style="color: Blue;">x6A</span><span style="color: Gray;">,</span><span style="color: Maroon;">0</span><span style="color: Blue;">x69</span><span style="color: Gray;">,</span><span style="color: Maroon;">0</span><span style="color: Blue;">x60</span><span style="color: Gray;">, </span><span style="color: Maroon;">0</span><span style="color: Blue;">x2E</span><span style="color: Gray;">,</span><span style="color: Maroon;">0</span><span style="color: Blue;">x23</span><span style="color: Gray;">,</span><span style="color: Maroon;">0</span><span style="color: Blue;">x6A</span><span style="color: Gray;">,<br /></span><span style="color: Maroon;">0</span><span style="color: Blue;">x7F</span><span style="color: Gray;">,</span><span style="color: Maroon;">0</span><span style="color: Blue;">x09</span><span style="color: Gray;">,</span><span style="color: Maroon;">0</span><span style="color: Blue;">x71</span><span style="color: Gray;">, </span><span style="color: Maroon;">0</span><span style="color: Blue;">x28</span><span style="color: Gray;">,</span><span style="color: Maroon;">0</span><span style="color: Blue;">x70</span><span style="color: Gray;">,</span><span style="color: Maroon;">0</span><span style="color: Blue;">x6F</span><span style="color: Gray;">, </span><span style="color: Maroon;">0</span><span style="color: Blue;">x35</span><span style="color: Gray;">,</span><span style="color: Maroon;">0</span><span style="color: Blue;">x65</span><span style="color: Gray;">,</span><span style="color: Maroon;">0</span><span style="color: Blue;">x49</span><span style="color: Gray;">, </span><span style="color: Maroon;">0</span><span style="color: Blue;">x7D</span><span style="color: Gray;">,</span><span style="color: Maroon;">0</span><span style="color: Blue;">x74</span><span style="color: Gray;">,</span><span style="color: Maroon;">0</span><span style="color: Blue;">x5C</span><span style="color: Gray;">,<br /></span><span style="color: Maroon;">0</span><span style="color: Blue;">x24</span><span style="color: Gray;">,</span><span style="color: Maroon;">0</span><span style="color: Blue;">x2C</span><span style="color: Gray;">,</span><span style="color: Maroon;">0</span><span style="color: Blue;">x5D</span><span style="color: Gray;">, </span><span style="color: Maroon;">0</span><span style="color: Blue;">x2D</span><span style="color: Gray;">,</span><span style="color: Maroon;">0</span><span style="color: Blue;">x77</span><span style="color: Gray;">,</span><span style="color: Maroon;">0</span><span style="color: Blue;">x27</span><span style="color: Gray;">, </span><span style="color: Maroon;">0</span><span style="color: Blue;">x54</span><span style="color: Gray;">,</span><span style="color: Maroon;">0</span><span style="color: Blue;">x44</span><span style="color: Gray;">,</span><span style="color: Maroon;">0</span><span style="color: Blue;">x59</span><span style="color: Gray;">, </span><span style="color: Maroon;">0</span><span style="color: Blue;">x37</span><span style="color: Gray;">,</span><span style="color: Maroon;">0</span><span style="color: Blue;">x3F</span><span style="color: Gray;">,</span><span style="color: Maroon;">0</span><span style="color: Blue;">x25</span><span style="color: Gray;">,<br /></span><span style="color: Maroon;">0</span><span style="color: Blue;">x7B</span><span style="color: Gray;">,</span><span style="color: Maroon;">0</span><span style="color: Blue;">x6D</span><span style="color: Gray;">,</span><span style="color: Maroon;">0</span><span style="color: Blue;">x7C</span><span style="color: Gray;">, </span><span style="color: Maroon;">0</span><span style="color: Blue;">x3D</span><span style="color: Gray;">,</span><span style="color: Maroon;">0</span><span style="color: Blue;">x7C</span><span style="color: Gray;">,</span><span style="color: Maroon;">0</span><span style="color: Blue;">x23</span><span style="color: Gray;">, </span><span style="color: Maroon;">0</span><span style="color: Blue;">x6C</span><span style="color: Gray;">,</span><span style="color: Maroon;">0</span><span style="color: Blue;">x43</span><span style="color: Gray;">,</span><span style="color: Maroon;">0</span><span style="color: Blue;">x6D</span><span style="color: Gray;">, </span><span style="color: Maroon;">0</span><span style="color: Blue;">x34</span><span style="color: Gray;">,</span><span style="color: Maroon;">0</span><span style="color: Blue;">x38</span><span style="color: Gray;">,</span><span style="color: Maroon;">0</span><span style="color: Blue;">x28</span><span style="color: Gray;">,<br /></span><span style="color: Maroon;">0</span><span style="color: Blue;">x6D</span><span style="color: Gray;">,</span><span style="color: Maroon;">0</span><span style="color: Blue;">x5E</span><span style="color: Gray;">,</span><span style="color: Maroon;">0</span><span style="color: Blue;">x31</span><span style="color: Gray;">, </span><span style="color: Maroon;">0</span><span style="color: Blue;">x4E</span><span style="color: Gray;">,</span><span style="color: Maroon;">0</span><span style="color: Blue;">x5B</span><span style="color: Gray;">,</span><span style="color: Maroon;">0</span><span style="color: Blue;">x39</span><span style="color: Gray;">, </span><span style="color: Maroon;">0</span><span style="color: Blue;">x2B</span><span style="color: Gray;">,</span><span style="color: Maroon;">0</span><span style="color: Blue;">x6E</span><span style="color: Gray;">,</span><span style="color: Maroon;">0</span><span style="color: Blue;">x7F</span><span style="color: Gray;">, </span><span style="color: Maroon;">0</span><span style="color: Blue;">x30</span><span style="color: Gray;">,</span><span style="color: Maroon;">0</span><span style="color: Blue;">x57</span><span style="color: Gray;">,</span><span style="color: Maroon;">0</span><span style="color: Blue;">x36</span><span style="color: Gray;">,<br /></span><span style="color: Maroon;">0</span><span style="color: Blue;">x6F</span><span style="color: Gray;">,</span><span style="color: Maroon;">0</span><span style="color: Blue;">x4C</span><span style="color: Gray;">,</span><span style="color: Maroon;">0</span><span style="color: Blue;">x54</span><span style="color: Gray;">, </span><span style="color: Maroon;">0</span><span style="color: Blue;">x74</span><span style="color: Gray;">,</span><span style="color: Maroon;">0</span><span style="color: Blue;">x34</span><span style="color: Gray;">,</span><span style="color: Maroon;">0</span><span style="color: Blue;">x34</span><span style="color: Gray;">, </span><span style="color: Maroon;">0</span><span style="color: Blue;">x6B</span><span style="color: Gray;">,</span><span style="color: Maroon;">0</span><span style="color: Blue;">x72</span><span style="color: Gray;">,</span><span style="color: Maroon;">0</span><span style="color: Blue;">x62</span><span style="color: Gray;">, </span><span style="color: Maroon;">0</span><span style="color: Blue;">x4C</span><span style="color: Gray;">,</span><span style="color: Maroon;">0</span><span style="color: Blue;">x25</span><span style="color: Gray;">,</span><span style="color: Maroon;">0</span><span style="color: Blue;">x4E</span><span style="color: Gray;">,<br /></span><span style="color: Maroon;">0</span><span style="color: Blue;">x33</span><span style="color: Gray;">,</span><span style="color: Maroon;">0</span><span style="color: Blue;">x56</span><span style="color: Gray;">,</span><span style="color: Maroon;">0</span><span style="color: Blue;">x30</span><span style="color: Gray;">, </span><span style="color: Maroon;">0</span><span style="color: Blue;">x56</span><span style="color: Gray;">,</span><span style="color: Maroon;">0</span><span style="color: Blue;">x73</span><span style="color: Gray;">,</span><span style="color: Maroon;">0</span><span style="color: Blue;">x5E</span><span style="color: Gray;">, </span><span style="color: Maroon;">0</span><span style="color: Blue;">x3A</span><span style="color: Gray;">,</span><span style="color: Maroon;">0</span><span style="color: Blue;">x68</span><span style="color: Gray;">,</span><span style="color: Maroon;">0</span><span style="color: Blue;">x73</span><span style="color: Gray;">, </span><span style="color: Maroon;">0</span><span style="color: Blue;">x78</span><span style="color: Gray;">,</span><span style="color: Maroon;">0</span><span style="color: Blue;">x55</span><span style="color: Gray;">,</span><span style="color: Maroon;">0</span><span style="color: Blue;">x09</span><span style="color: Gray;">,<br /></span><span style="color: Maroon;">0</span><span style="color: Blue;">x57</span><span style="color: Gray;">,</span><span style="color: Maroon;">0</span><span style="color: Blue;">x47</span><span style="color: Gray;">,</span><span style="color: Maroon;">0</span><span style="color: Blue;">x4B</span><span style="color: Gray;">, </span><span style="color: Maroon;">0</span><span style="color: Blue;">x77</span><span style="color: Gray;">,</span><span style="color: Maroon;">0</span><span style="color: Blue;">x32</span><span style="color: Gray;">,</span><span style="color: Maroon;">0</span><span style="color: Blue;">x61</span><span style="color: Gray;">, </span><span style="color: Maroon;">0</span><span style="color: Blue;">x3B</span><span style="color: Gray;">,</span><span style="color: Maroon;">0</span><span style="color: Blue;">x35</span><span style="color: Gray;">,</span><span style="color: Maroon;">0</span><span style="color: Blue;">x24</span><span style="color: Gray;">, </span><span style="color: Maroon;">0</span><span style="color: Blue;">x44</span><span style="color: Gray;">,</span><span style="color: Maroon;">0</span><span style="color: Blue;">x2E</span><span style="color: Gray;">,</span><span style="color: Maroon;">0</span><span style="color: Blue;">x4D</span><span style="color: Gray;">,<br /></span><span style="color: Maroon;">0</span><span style="color: Blue;">x2F</span><span style="color: Gray;">,</span><span style="color: Maroon;">0</span><span style="color: Blue;">x64</span><span style="color: Gray;">,</span><span style="color: Maroon;">0</span><span style="color: Blue;">x6B</span><span style="color: Gray;">, </span><span style="color: Maroon;">0</span><span style="color: Blue;">x59</span><span style="color: Gray;">,</span><span style="color: Maroon;">0</span><span style="color: Blue;">x4F</span><span style="color: Gray;">,</span><span style="color: Maroon;">0</span><span style="color: Blue;">x44</span><span style="color: Gray;">, </span><span style="color: Maroon;">0</span><span style="color: Blue;">x45</span><span style="color: Gray;">,</span><span style="color: Maroon;">0</span><span style="color: Blue;">x3B</span><span style="color: Gray;">,</span><span style="color: Maroon;">0</span><span style="color: Blue;">x21</span><span style="color: Gray;">, </span><span style="color: Maroon;">0</span><span style="color: Blue;">x5C</span><span style="color: Gray;">,</span><span style="color: Maroon;">0</span><span style="color: Blue;">x2D</span><span style="color: Gray;">,</span><span style="color: Maroon;">0</span><span style="color: Blue;">x37</span><span style="color: Gray;">,<br /></span><span style="color: Maroon;">0</span><span style="color: Blue;">x68</span><span style="color: Gray;">,</span><span style="color: Maroon;">0</span><span style="color: Blue;">x41</span><span style="color: Gray;">,</span><span style="color: Maroon;">0</span><span style="color: Blue;">x53</span><span style="color: Gray;">, </span><span style="color: Maroon;">0</span><span style="color: Blue;">x36</span><span style="color: Gray;">,</span><span style="color: Maroon;">0</span><span style="color: Blue;">x61</span><span style="color: Gray;">,</span><span style="color: Maroon;">0</span><span style="color: Blue;">x58</span><span style="color: Gray;">, </span><span style="color: Maroon;">0</span><span style="color: Blue;">x58</span><span style="color: Gray;">,</span><span style="color: Maroon;">0</span><span style="color: Blue;">x7A</span><span style="color: Gray;">,</span><span style="color: Maroon;">0</span><span style="color: Blue;">x48</span><span style="color: Gray;">, </span><span style="color: Maroon;">0</span><span style="color: Blue;">x79</span><span style="color: Gray;">,</span><span style="color: Maroon;">0</span><span style="color: Blue;">x22</span><span style="color: Gray;">,</span><span style="color: Maroon;">0</span><span style="color: Blue;">x2E</span><span style="color: Gray;">,<br /></span><span style="color: Maroon;">0</span><span style="color: Blue;">x09</span><span style="color: Gray;">,</span><span style="color: Maroon;">0</span><span style="color: Blue;">x60</span><span style="color: Gray;">,</span><span style="color: Maroon;">0</span><span style="color: Blue;">x50</span><span style="color: Gray;">, </span><span style="color: Maroon;">0</span><span style="color: Blue;">x75</span><span style="color: Gray;">,</span><span style="color: Maroon;">0</span><span style="color: Blue;">x6B</span><span style="color: Gray;">,</span><span style="color: Maroon;">0</span><span style="color: Blue;">x2D</span><span style="color: Gray;">, </span><span style="color: Maroon;">0</span><span style="color: Blue;">x38</span><span style="color: Gray;">,</span><span style="color: Maroon;">0</span><span style="color: Blue;">x4E</span><span style="color: Gray;">,</span><span style="color: Maroon;">0</span><span style="color: Blue;">x29</span><span style="color: Gray;">, </span><span style="color: Maroon;">0</span><span style="color: Blue;">x55</span><span style="color: Gray;">,</span><span style="color: Maroon;">0</span><span style="color: Blue;">x3D</span><span style="color: Gray;">,</span><span style="color: Maroon;">0</span><span style="color: Blue;">x3F</span><span style="color: Gray;"><br /></span><span style="color: Olive;">)</span><span style="color: Gray;"><br />&nbsp;<br /></span><span style="color: Green;">var</span><span style="color: Gray;"> </span><span style="color: Blue;">transformed</span><span style="color: Gray;"> = </span><span style="color: Green;">new</span><span style="color: Gray;"> </span><span style="color: Teal;">Array</span><span style="color: Olive;">()</span><span style="color: Gray;"><br /></span><span style="color: Green;">for</span><span style="color: Gray;"> </span><span style="color: Olive;">(</span><span style="color: Green;">var</span><span style="color: Gray;"> </span><span style="color: Blue;">i</span><span style="color: Gray;">=</span><span style="color: Maroon;">0</span><span style="color: Gray;">; </span><span style="color: Blue;">i</span><span style="color: Gray;">&lt;</span><span style="color: Maroon;">3</span><span style="color: Gray;">; </span><span style="color: Blue;">i</span><span style="color: Gray;">++</span><span style="color: Olive;">)</span><span style="color: Gray;"> </span><span style="color: Blue;">transformed</span><span style="color: Olive;">[</span><span style="color: Blue;">i</span><span style="color: Olive;">]</span><span style="color: Gray;"> = </span><span style="color: Green;">new</span><span style="color: Gray;"> </span><span style="color: Teal;">Array</span><span style="color: Olive;">()</span><span style="color: Gray;"><br /></span><span style="color: Green;">for</span><span style="color: Gray;"> </span><span style="color: Olive;">(</span><span style="color: Green;">var</span><span style="color: Gray;"> </span><span style="color: Blue;">i</span><span style="color: Gray;">=</span><span style="color: Maroon;">31</span><span style="color: Gray;">; </span><span style="color: Blue;">i</span><span style="color: Gray;">&lt;=</span><span style="color: Maroon;">126</span><span style="color: Gray;">; </span><span style="color: Blue;">i</span><span style="color: Gray;">++</span><span style="color: Olive;">)</span><span style="color: Gray;"> </span><span style="color: Green;">for</span><span style="color: Gray;"> </span><span style="color: Olive;">(</span><span style="color: Green;">var</span><span style="color: Gray;"> </span><span style="color: Blue;">j</span><span style="color: Gray;">=</span><span style="color: Maroon;">0</span><span style="color: Gray;">; </span><span style="color: Blue;">j</span><span style="color: Gray;">&lt;</span><span style="color: Maroon;">3</span><span style="color: Gray;">; </span><span style="color: Blue;">j</span><span style="color: Gray;">++</span><span style="color: Olive;">)</span><span style="color: Gray;"> </span><span style="color: Blue;">transformed</span><span style="color: Olive;">[</span><span style="color: Blue;">j</span><span style="color: Olive;">][</span><span style="color: Blue;">rawData</span><span style="color: Olive;">[(</span><span style="color: Blue;">i</span><span style="color: Gray;">-</span><span style="color: Maroon;">31</span><span style="color: Olive;">)</span><span style="color: Gray;"> * </span><span style="color: Maroon;">3</span><span style="color: Gray;"> + </span><span style="color: Blue;">j</span><span style="color: Olive;">]]</span><span style="color: Gray;"> = </span><span style="color: Olive;">(</span><span style="color: Blue;">i</span><span style="color: Gray;">==</span><span style="color: Maroon;">31</span><span style="color: Olive;">)</span><span style="color: Gray;"> ? </span><span style="color: Maroon;">9</span><span style="color: Gray;"> : </span><span style="color: Blue;">i</span><span style="color: Gray;"><br />&nbsp;<br /></span><span style="color: Green;">var</span><span style="color: Gray;"> </span><span style="color: Blue;">digits</span><span style="color: Gray;"> = </span><span style="color: Green;">new</span><span style="color: Gray;"> </span><span style="color: Teal;">Array</span><span style="color: Olive;">()</span><span style="color: Gray;"><br /></span><span style="color: Green;">for</span><span style="color: Gray;"> </span><span style="color: Olive;">(</span><span style="color: Green;">var</span><span style="color: Gray;"> </span><span style="color: Blue;">i</span><span style="color: Gray;">=</span><span style="color: Maroon;">0</span><span style="color: Gray;">; </span><span style="color: Blue;">i</span><span style="color: Gray;">&lt;</span><span style="color: Maroon;">26</span><span style="color: Gray;">; </span><span style="color: Blue;">i</span><span style="color: Gray;">++</span><span style="color: Olive;">)</span><span style="color: Gray;"><br /></span><span style="color: Olive;">{</span><span style="color: Gray;"><br /></span><span style="color: Blue;">digits</span><span style="color: Olive;">[</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">A</span><span style="color: #8b0000;">&quot;</span><span style="color: Gray;">.</span><span style="color: Blue;">charCodeAt</span><span style="color: Olive;">(</span><span style="color: Maroon;">0</span><span style="color: Olive;">)</span><span style="color: Gray;">+</span><span style="color: Blue;">i</span><span style="color: Olive;">]</span><span style="color: Gray;"> = </span><span style="color: Blue;">i</span><span style="color: Gray;"><br /></span><span style="color: Blue;">digits</span><span style="color: Olive;">[</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">a</span><span style="color: #8b0000;">&quot;</span><span style="color: Gray;">.</span><span style="color: Blue;">charCodeAt</span><span style="color: Olive;">(</span><span style="color: Maroon;">0</span><span style="color: Olive;">)</span><span style="color: Gray;">+</span><span style="color: Blue;">i</span><span style="color: Olive;">]</span><span style="color: Gray;"> = </span><span style="color: Blue;">i</span><span style="color: Gray;">+</span><span style="color: Maroon;">26</span><span style="color: Gray;"><br /></span><span style="color: Olive;">}</span><span style="color: Gray;"><br /></span><span style="color: Green;">for</span><span style="color: Gray;"> </span><span style="color: Olive;">(</span><span style="color: Green;">var</span><span style="color: Gray;"> </span><span style="color: Blue;">i</span><span style="color: Gray;">=</span><span style="color: Maroon;">0</span><span style="color: Gray;">; </span><span style="color: Blue;">i</span><span style="color: Gray;">&lt;</span><span style="color: Maroon;">10</span><span style="color: Gray;">; </span><span style="color: Blue;">i</span><span style="color: Gray;">++</span><span style="color: Olive;">)</span><span style="color: Gray;"> </span><span style="color: Blue;">digits</span><span style="color: Olive;">[</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">0</span><span style="color: #8b0000;">&quot;</span><span style="color: Gray;">.</span><span style="color: Blue;">charCodeAt</span><span style="color: Olive;">(</span><span style="color: Maroon;">0</span><span style="color: Olive;">)</span><span style="color: Gray;">+</span><span style="color: Blue;">i</span><span style="color: Olive;">]</span><span style="color: Gray;"> = </span><span style="color: Blue;">i</span><span style="color: Gray;">+</span><span style="color: Maroon;">52</span><span style="color: Gray;"><br /></span><span style="color: Blue;">digits</span><span style="color: Olive;">[</span><span style="color: Maroon;">0</span><span style="color: Blue;">x2b</span><span style="color: Olive;">]</span><span style="color: Gray;"> = </span><span style="color: Maroon;">62</span><span style="color: Gray;"><br /></span><span style="color: Blue;">digits</span><span style="color: Olive;">[</span><span style="color: Maroon;">0</span><span style="color: Blue;">x2f</span><span style="color: Olive;">]</span><span style="color: Gray;"> = </span><span style="color: Maroon;">63</span><span style="color: Gray;"><br />&nbsp;<br /></span><span style="color: Green;">function</span><span style="color: Gray;"> </span><span style="color: Blue;">unescape</span><span style="color: Olive;">(</span><span style="color: Green;">char</span><span style="color: Olive;">)</span><span style="color: Gray;"><br /></span><span style="color: Olive;">{</span><span style="color: Gray;"><br /></span><span style="color: Green;">var</span><span style="color: Gray;"> </span><span style="color: Blue;">escapes</span><span style="color: Gray;"> = </span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">#&amp;!*$</span><span style="color: #8b0000;">&quot;</span><span style="color: Gray;"><br /></span><span style="color: Green;">var</span><span style="color: Gray;"> </span><span style="color: Blue;">escaped</span><span style="color: Gray;"> = </span><span style="color: #8b0000;">&quot;</span><span style="color: Navy;">\r\n</span><span style="color: Red;">&lt;&gt;@</span><span style="color: #8b0000;">&quot;</span><span style="color: Gray;"><br />&nbsp;<br /></span><span style="color: Green;">if</span><span style="color: Gray;"> </span><span style="color: Olive;">(</span><span style="color: Green;">char</span><span style="color: Gray;">.</span><span style="color: Blue;">charCodeAt</span><span style="color: Olive;">(</span><span style="color: Maroon;">0</span><span style="color: Olive;">)</span><span style="color: Gray;"> &gt; </span><span style="color: Maroon;">126</span><span style="color: Olive;">)</span><span style="color: Gray;"> </span><span style="color: Green;">return</span><span style="color: Gray;"> </span><span style="color: Green;">char</span><span style="color: Gray;"><br /></span><span style="color: Green;">if</span><span style="color: Gray;"> </span><span style="color: Olive;">(</span><span style="color: Blue;">escapes</span><span style="color: Gray;">.</span><span style="color: Blue;">indexOf</span><span style="color: Olive;">(</span><span style="color: Green;">char</span><span style="color: Olive;">)</span><span style="color: Gray;"> != -</span><span style="color: Maroon;">1</span><span style="color: Olive;">)</span><span style="color: Gray;"> </span><span style="color: Green;">return</span><span style="color: Gray;"> </span><span style="color: Blue;">escaped</span><span style="color: Gray;">.</span><span style="color: Blue;">substr</span><span style="color: Olive;">(</span><span style="color: Blue;">escapes</span><span style="color: Gray;">.</span><span style="color: Blue;">indexOf</span><span style="color: Olive;">(</span><span style="color: Green;">char</span><span style="color: Olive;">)</span><span style="color: Gray;">, </span><span style="color: Maroon;">1</span><span style="color: Olive;">)</span><span style="color: Gray;"><br /></span><span style="color: Green;">return</span><span style="color: Gray;"> </span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">?</span><span style="color: #8b0000;">&quot;</span><span style="color: Gray;"><br /></span><span style="color: Olive;">}</span><span style="color: Gray;"><br />&nbsp;<br /></span><span style="color: Green;">function</span><span style="color: Gray;"> </span><span style="color: Blue;">decodeBase64</span><span style="color: Olive;">(</span><span style="color: Blue;">string</span><span style="color: Olive;">)</span><span style="color: Gray;"><br /></span><span style="color: Olive;">{</span><span style="color: Gray;"><br /></span><span style="color: Green;">var</span><span style="color: Gray;"> </span><span style="color: Blue;">val</span><span style="color: Gray;"> = </span><span style="color: Maroon;">0</span><span style="color: Gray;"><br /></span><span style="color: Blue;">val</span><span style="color: Gray;"> += </span><span style="color: Olive;">(</span><span style="color: Blue;">digits</span><span style="color: Olive;">[</span><span style="color: Blue;">string</span><span style="color: Gray;">.</span><span style="color: Blue;">substr</span><span style="color: Olive;">(</span><span style="color: Maroon;">0</span><span style="color: Gray;">,</span><span style="color: Maroon;">1</span><span style="color: Olive;">)</span><span style="color: Gray;">.</span><span style="color: Blue;">charCodeAt</span><span style="color: Olive;">(</span><span style="color: Maroon;">0</span><span style="color: Olive;">)]</span><span style="color: Gray;"> &lt;&lt; </span><span style="color: Maroon;">2</span><span style="color: Olive;">)</span><span style="color: Gray;"><br /></span><span style="color: Blue;">val</span><span style="color: Gray;"> += </span><span style="color: Olive;">(</span><span style="color: Blue;">digits</span><span style="color: Olive;">[</span><span style="color: Blue;">string</span><span style="color: Gray;">.</span><span style="color: Blue;">substr</span><span style="color: Olive;">(</span><span style="color: Maroon;">1</span><span style="color: Gray;">,</span><span style="color: Maroon;">1</span><span style="color: Olive;">)</span><span style="color: Gray;">.</span><span style="color: Blue;">charCodeAt</span><span style="color: Olive;">(</span><span style="color: Maroon;">0</span><span style="color: Olive;">)]</span><span style="color: Gray;"> &gt;&gt; </span><span style="color: Maroon;">4</span><span style="color: Olive;">)</span><span style="color: Gray;"><br /></span><span style="color: Blue;">val</span><span style="color: Gray;"> += </span><span style="color: Olive;">(</span><span style="color: Blue;">digits</span><span style="color: Olive;">[</span><span style="color: Blue;">string</span><span style="color: Gray;">.</span><span style="color: Blue;">substr</span><span style="color: Olive;">(</span><span style="color: Maroon;">1</span><span style="color: Gray;">,</span><span style="color: Maroon;">1</span><span style="color: Olive;">)</span><span style="color: Gray;">.</span><span style="color: Blue;">charCodeAt</span><span style="color: Olive;">(</span><span style="color: Maroon;">0</span><span style="color: Olive;">)]</span><span style="color: Gray;"> &amp; </span><span style="color: Maroon;">0</span><span style="color: Blue;">xf</span><span style="color: Olive;">)</span><span style="color: Gray;"> &lt;&lt; </span><span style="color: Maroon;">12</span><span style="color: Gray;"><br /></span><span style="color: Blue;">val</span><span style="color: Gray;"> += </span><span style="color: Olive;">((</span><span style="color: Blue;">digits</span><span style="color: Olive;">[</span><span style="color: Blue;">string</span><span style="color: Gray;">.</span><span style="color: Blue;">substr</span><span style="color: Olive;">(</span><span style="color: Maroon;">2</span><span style="color: Gray;">,</span><span style="color: Maroon;">1</span><span style="color: Olive;">)</span><span style="color: Gray;">.</span><span style="color: Blue;">charCodeAt</span><span style="color: Olive;">(</span><span style="color: Maroon;">0</span><span style="color: Olive;">)]</span><span style="color: Gray;"> &gt;&gt; </span><span style="color: Maroon;">2</span><span style="color: Olive;">)</span><span style="color: Gray;"> &lt;&lt; </span><span style="color: Maroon;">8</span><span style="color: Olive;">)</span><span style="color: Gray;"><br /></span><span style="color: Blue;">val</span><span style="color: Gray;"> += </span><span style="color: Olive;">((</span><span style="color: Blue;">digits</span><span style="color: Olive;">[</span><span style="color: Blue;">string</span><span style="color: Gray;">.</span><span style="color: Blue;">substr</span><span style="color: Olive;">(</span><span style="color: Maroon;">2</span><span style="color: Gray;">,</span><span style="color: Maroon;">1</span><span style="color: Olive;">)</span><span style="color: Gray;">.</span><span style="color: Blue;">charCodeAt</span><span style="color: Olive;">(</span><span style="color: Maroon;">0</span><span style="color: Olive;">)]</span><span style="color: Gray;"> &amp; </span><span style="color: Maroon;">0</span><span style="color: Blue;">x3</span><span style="color: Olive;">)</span><span style="color: Gray;"> &lt;&lt; </span><span style="color: Maroon;">22</span><span style="color: Olive;">)</span><span style="color: Gray;"><br /></span><span style="color: Blue;">val</span><span style="color: Gray;"> += </span><span style="color: Olive;">(</span><span style="color: Blue;">digits</span><span style="color: Olive;">[</span><span style="color: Blue;">string</span><span style="color: Gray;">.</span><span style="color: Blue;">substr</span><span style="color: Olive;">(</span><span style="color: Maroon;">3</span><span style="color: Gray;">,</span><span style="color: Maroon;">1</span><span style="color: Olive;">)</span><span style="color: Gray;">.</span><span style="color: Blue;">charCodeAt</span><span style="color: Olive;">(</span><span style="color: Maroon;">0</span><span style="color: Olive;">)]</span><span style="color: Gray;"> &lt;&lt; </span><span style="color: Maroon;">16</span><span style="color: Olive;">)</span><span style="color: Gray;"><br /></span><span style="color: Green;">return</span><span style="color: Gray;"> </span><span style="color: Blue;">val</span><span style="color: Gray;"><br /></span><span style="color: Olive;">}</span><span style="color: Gray;"><br />&nbsp;<br /></span><span style="color: Green;">function</span><span style="color: Gray;"> </span><span style="color: Blue;">strdec</span><span style="color: Olive;">(</span><span style="color: Blue;">encodingString</span><span style="color: Olive;">)</span><span style="color: Gray;"><br /></span><span style="color: Olive;">{</span><span style="color: Gray;"><br />&nbsp;<br /></span><span style="color: Green;">var</span><span style="color: Gray;"> </span><span style="color: Blue;">marker</span><span style="color: Gray;"> = </span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">#@~^</span><span style="color: #8b0000;">&quot;</span><span style="color: Gray;"><br /></span><span style="color: Green;">var</span><span style="color: Gray;"> </span><span style="color: Blue;">stringIndex</span><span style="color: Gray;"> = </span><span style="color: Maroon;">0</span><span style="color: Gray;"><br /></span><span style="color: Green;">var</span><span style="color: Gray;"> </span><span style="color: Blue;">scriptIndex</span><span style="color: Gray;"> = -</span><span style="color: Maroon;">1</span><span style="color: Gray;"><br /></span><span style="color: Green;">var</span><span style="color: Gray;"> </span><span style="color: Blue;">unEncodingIndex</span><span style="color: Gray;"> = </span><span style="color: Maroon;">0</span><span style="color: Gray;"><br /></span><span style="color: Green;">var</span><span style="color: Gray;"> </span><span style="color: Green;">char</span><span style="color: Gray;"> = </span><span style="color: Green;">null</span><span style="color: Gray;"><br /></span><span style="color: Green;">var</span><span style="color: Gray;"> </span><span style="color: Blue;">encodingLength</span><span style="color: Gray;"> = </span><span style="color: Blue;">unEncodinglength</span><span style="color: Gray;"> = </span><span style="color: Maroon;">0</span><span style="color: Gray;"><br /></span><span style="color: Green;">var</span><span style="color: Gray;"> </span><span style="color: Blue;">state</span><span style="color: Gray;"> = </span><span style="color: Blue;">STATE_COPY_INPUT</span><span style="color: Gray;"><br /></span><span style="color: Green;">var</span><span style="color: Gray;"> </span><span style="color: Blue;">unEncodingString</span><span style="color: Gray;"> = </span><span style="color: #8b0000;">&quot;&quot;</span><span style="color: Gray;"><br /></span><span style="color: Green;">var</span><span style="color: Gray;"> </span><span style="color: Blue;">re</span><span style="color: Gray;">, </span><span style="color: Blue;">arr</span><span style="color: Gray;"><br />&nbsp;<br /></span><span style="color: Green;">while</span><span style="color: Olive;">(</span><span style="color: Blue;">state</span><span style="color: Olive;">)</span><span style="color: Gray;"><br /></span><span style="color: Olive;">{</span><span style="color: Gray;"><br /></span><span style="color: Green;">switch</span><span style="color: Gray;"> </span><span style="color: Olive;">(</span><span style="color: Blue;">state</span><span style="color: Olive;">)</span><span style="color: Gray;"><br /></span><span style="color: Olive;">{</span><span style="color: Gray;"><br /></span><span style="color: Green;">case</span><span style="color: Gray;"> </span><span style="color: Olive;">(</span><span style="color: Blue;">STATE_COPY_INPUT</span><span style="color: Olive;">)</span><span style="color: Gray;"> :<br /></span><span style="color: Blue;">scriptIndex</span><span style="color: Gray;"> = </span><span style="color: Blue;">encodingString</span><span style="color: Gray;">.</span><span style="color: Blue;">indexOf</span><span style="color: Olive;">(</span><span style="color: Blue;">marker</span><span style="color: Gray;">, </span><span style="color: Blue;">stringIndex</span><span style="color: Olive;">)</span><span style="color: Gray;"><br /></span><span style="color: Green;">if</span><span style="color: Gray;"> </span><span style="color: Olive;">(</span><span style="color: Blue;">scriptIndex</span><span style="color: Gray;"> != -</span><span style="color: Maroon;">1</span><span style="color: Olive;">)</span><span style="color: Gray;"><br /></span><span style="color: Olive;">{</span><span style="color: Gray;"><br /></span><span style="color: Blue;">unEncodingString</span><span style="color: Gray;"> += </span><span style="color: Blue;">encodingString</span><span style="color: Gray;">.</span><span style="color: Blue;">substring</span><span style="color: Olive;">(</span><span style="color: Blue;">stringIndex</span><span style="color: Gray;">, </span><span style="color: Blue;">scriptIndex</span><span style="color: Olive;">)</span><span style="color: Gray;"><br /></span><span style="color: Blue;">scriptIndex</span><span style="color: Gray;"> += </span><span style="color: Blue;">marker</span><span style="color: Gray;">.</span><span style="color: Blue;">length</span><span style="color: Gray;"><br /></span><span style="color: Blue;">state</span><span style="color: Gray;"> = </span><span style="color: Blue;">STATE_READLEN</span><span style="color: Gray;"><br /></span><span style="color: Olive;">}</span><span style="color: Gray;"><br /></span><span style="color: Green;">else</span><span style="color: Gray;"><br /></span><span style="color: Olive;">{</span><span style="color: Gray;"><br /></span><span style="color: Blue;">stringIndex</span><span style="color: Gray;"> = </span><span style="color: Blue;">stringIndex</span><span style="color: Gray;">==</span><span style="color: Maroon;">0</span><span style="color: Gray;"> ? </span><span style="color: Maroon;">0</span><span style="color: Gray;"> : </span><span style="color: Blue;">stringIndex</span><span style="color: Gray;"><br /></span><span style="color: Blue;">unEncodingString</span><span style="color: Gray;"> += </span><span style="color: Blue;">encodingString</span><span style="color: Gray;">.</span><span style="color: Blue;">substr</span><span style="color: Olive;">(</span><span style="color: Blue;">stringIndex</span><span style="color: Gray;">, </span><span style="color: Blue;">encodingString</span><span style="color: Gray;">.</span><span style="color: Blue;">length</span><span style="color: Olive;">)</span><span style="color: Gray;"><br /></span><span style="color: Blue;">state</span><span style="color: Gray;"> = </span><span style="color: Maroon;">0</span><span style="color: Gray;"><br /></span><span style="color: Olive;">}</span><span style="color: Gray;"><br /></span><span style="color: Green;">break</span><span style="color: Gray;"><br />&nbsp;<br /></span><span style="color: Green;">case</span><span style="color: Gray;"> </span><span style="color: Olive;">(</span><span style="color: Blue;">STATE_READLEN</span><span style="color: Olive;">)</span><span style="color: Gray;"> :<br /></span><span style="color: Blue;">encodingLength</span><span style="color: Gray;"> = </span><span style="color: Blue;">encodingString</span><span style="color: Gray;">.</span><span style="color: Blue;">substr</span><span style="color: Olive;">(</span><span style="color: Blue;">scriptIndex</span><span style="color: Gray;">, </span><span style="color: Maroon;">6</span><span style="color: Olive;">)</span><span style="color: Gray;"><br /></span><span style="color: Blue;">unEncodinglength</span><span style="color: Gray;"> = </span><span style="color: Blue;">decodeBase64</span><span style="color: Olive;">(</span><span style="color: Blue;">encodingLength</span><span style="color: Olive;">)</span><span style="color: Gray;"><br /></span><span style="color: Blue;">scriptIndex</span><span style="color: Gray;"> += </span><span style="color: Olive;">(</span><span style="color: Maroon;">6</span><span style="color: Gray;"> + </span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">==</span><span style="color: #8b0000;">&quot;</span><span style="color: Gray;">.</span><span style="color: Blue;">length</span><span style="color: Olive;">)</span><span style="color: Gray;"><br /></span><span style="color: Blue;">state</span><span style="color: Gray;"> = </span><span style="color: Blue;">STATE_DECODE</span><span style="color: Gray;"><br /></span><span style="color: Green;">break</span><span style="color: Gray;"><br />&nbsp;<br /></span><span style="color: Green;">case</span><span style="color: Gray;"> </span><span style="color: Olive;">(</span><span style="color: Blue;">STATE_DECODE</span><span style="color: Olive;">)</span><span style="color: Gray;"> :<br /></span><span style="color: Green;">if</span><span style="color: Gray;"> </span><span style="color: Olive;">(</span><span style="color: Gray;">!</span><span style="color: Blue;">unEncodinglength</span><span style="color: Olive;">)</span><span style="color: Gray;"><br /></span><span style="color: Olive;">{</span><span style="color: Gray;"><br /></span><span style="color: Blue;">stringIndex</span><span style="color: Gray;"> = </span><span style="color: Blue;">scriptIndex</span><span style="color: Gray;"> + </span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">DQgAAA==^#~@</span><span style="color: #8b0000;">&quot;</span><span style="color: Gray;">.</span><span style="color: Blue;">length</span><span style="color: Gray;"><br /></span><span style="color: Blue;">unEncodingIndex</span><span style="color: Gray;"> = </span><span style="color: Maroon;">0</span><span style="color: Gray;"><br /></span><span style="color: Blue;">state</span><span style="color: Gray;"> = </span><span style="color: Blue;">STATE_COPY_INPUT</span><span style="color: Gray;"><br /></span><span style="color: Green;">break</span><span style="color: Gray;"><br /></span><span style="color: Olive;">}</span><span style="color: Gray;"><br /></span><span style="color: Green;">char</span><span style="color: Gray;"> = </span><span style="color: Blue;">encodingString</span><span style="color: Gray;">.</span><span style="color: Blue;">substr</span><span style="color: Olive;">(</span><span style="color: Blue;">scriptIndex</span><span style="color: Gray;">, </span><span style="color: Maroon;">1</span><span style="color: Olive;">)</span><span style="color: Gray;"><br /></span><span style="color: Green;">if</span><span style="color: Gray;"> </span><span style="color: Olive;">(</span><span style="color: Green;">char</span><span style="color: Gray;"> == </span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">@</span><span style="color: #8b0000;">&quot;</span><span style="color: Olive;">)</span><span style="color: Gray;"> </span><span style="color: Blue;">state</span><span style="color: Gray;"> = </span><span style="color: Blue;">STATE_UNESCAPE</span><span style="color: Gray;"><br /></span><span style="color: Green;">else</span><span style="color: Gray;"><br /></span><span style="color: Olive;">{</span><span style="color: Gray;"><br /></span><span style="color: Green;">if</span><span style="color: Gray;"> </span><span style="color: Olive;">(</span><span style="color: Green;">char</span><span style="color: Gray;">.</span><span style="color: Blue;">charCodeAt</span><span style="color: Olive;">(</span><span style="color: Maroon;">0</span><span style="color: Olive;">)</span><span style="color: Gray;"> &lt; </span><span style="color: Maroon;">0</span><span style="color: Blue;">xFF</span><span style="color: Olive;">)</span><span style="color: Gray;"><br /></span><span style="color: Olive;">{</span><span style="color: Gray;"><br /></span><span style="color: Blue;">unEncodingString</span><span style="color: Gray;"> += </span><span style="color: Teal;">String</span><span style="color: Gray;">.</span><span style="color: Blue;">fromCharCode</span><span style="color: Olive;">(</span><span style="color: Blue;">transformed</span><span style="color: Olive;">[</span><span style="color: Blue;">pick_encoding</span><span style="color: Olive;">[</span><span style="color: Blue;">unEncodingIndex</span><span style="color: Gray;">%</span><span style="color: Maroon;">64</span><span style="color: Olive;">]][</span><span style="color: Green;">char</span><span style="color: Gray;">.</span><span style="color: Blue;">charCodeAt</span><span style="color: Olive;">(</span><span style="color: Maroon;">0</span><span style="color: Olive;">)])</span><span style="color: Gray;"><br /></span><span style="color: Blue;">unEncodingIndex</span><span style="color: Gray;">++<br /></span><span style="color: Olive;">}</span><span style="color: Gray;"><br /></span><span style="color: Green;">else</span><span style="color: Gray;"><br /></span><span style="color: Olive;">{</span><span style="color: Gray;"><br /></span><span style="color: Blue;">unEncodingString</span><span style="color: Gray;"> += </span><span style="color: Green;">char</span><span style="color: Gray;"><br /></span><span style="color: Olive;">}</span><span style="color: Gray;"> <br /></span><span style="color: Blue;">scriptIndex</span><span style="color: Gray;">++<br /></span><span style="color: Blue;">unEncodinglength</span><span style="color: Gray;">--<br /></span><span style="color: Green;">break</span><span style="color: Gray;"><br /></span><span style="color: Olive;">}</span><span style="color: Gray;"><br />&nbsp;<br /></span><span style="color: Green;">case</span><span style="color: Gray;"> </span><span style="color: Blue;">STATE_UNESCAPE</span><span style="color: Gray;">:<br /></span><span style="color: Blue;">unEncodingString</span><span style="color: Gray;"> += </span><span style="color: Blue;">unescape</span><span style="color: Olive;">(</span><span style="color: Blue;">encodingString</span><span style="color: Gray;">.</span><span style="color: Blue;">substr</span><span style="color: Olive;">(</span><span style="color: Gray;">++</span><span style="color: Blue;">scriptIndex</span><span style="color: Gray;">, </span><span style="color: Maroon;">1</span><span style="color: Olive;">))</span><span style="color: Gray;"><br /></span><span style="color: Blue;">scriptIndex</span><span style="color: Gray;">++; </span><span style="color: Blue;">unEncodinglength</span><span style="color: Gray;"> -=</span><span style="color: Maroon;">2</span><span style="color: Gray;"><br /></span><span style="color: Blue;">unEncodingIndex</span><span style="color: Gray;">++<br /></span><span style="color: Blue;">state</span><span style="color: Gray;"> = </span><span style="color: Blue;">STATE_DECODE</span><span style="color: Gray;"><br /></span><span style="color: Green;">break</span><span style="color: Gray;"><br /></span><span style="color: Olive;">}</span><span style="color: Gray;"><br /></span><span style="color: Olive;">}</span><span style="color: Gray;"><br />&nbsp;<br /></span><span style="color: Blue;">re</span><span style="color: Gray;"> = </span><span style="color: Green;">new</span><span style="color: Gray;"> </span><span style="color: Teal;">RegExp</span><span style="color: Olive;">(</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">(JScript|VBscript).encode</span><span style="color: #8b0000;">&quot;</span><span style="color: Gray;">, </span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">gmi</span><span style="color: #8b0000;">&quot;</span><span style="color: Olive;">)</span><span style="color: Gray;"><br /></span><span style="color: Green;">while</span><span style="color: Olive;">(</span><span style="color: Blue;">arr</span><span style="color: Gray;"> = </span><span style="color: Blue;">re</span><span style="color: Gray;">.</span><span style="color: Blue;">exec</span><span style="color: Olive;">(</span><span style="color: Blue;">unEncodingString</span><span style="color: Olive;">))</span><span style="color: Gray;"> </span><span style="color: Blue;">unEncodingString</span><span style="color: Gray;"> = </span><span style="color: Teal;">RegExp</span><span style="color: Gray;">.</span><span style="color: Blue;">leftContext</span><span style="color: Gray;"> + </span><span style="color: Teal;">RegExp</span><span style="color: Gray;">.$</span><span style="color: Maroon;">1</span><span style="color: Gray;"> + </span><span style="color: Teal;">RegExp</span><span style="color: Gray;">.</span><span style="color: Blue;">rightContext</span><span style="color: Gray;"><br /></span><span style="color: Green;">return</span><span style="color: Gray;"> </span><span style="color: Blue;">unEncodingString</span><span style="color: Gray;"><br /></span><span style="color: Olive;">}</span><span style="color: Gray;"><br />&nbsp;<br /></span><span style="color: #ffa500;">//--&gt;</span><span style="color: Gray;"><br />&lt;</span><span style="color: #8b0000;">/</span><span style="color: Red;">script&gt;</span></div></div>
<p>上面代码的使用方法如下：<br />
1、建一个.htm的文件，加入上面的代码。<br />
2、再后面写上： </p>
<div class="hl-surround"><div class="hl-main"><span style="color: Olive;">&lt;</span><span style="color: Green;">form</span><span style="color: Gray;"> </span><span style="color: #00008b;">name</span><span style="color: Gray;">=</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">form</span><span style="color: #8b0000;">&quot;</span><span style="color: Olive;">&gt;</span><span style="color: Gray;"><br /></span><span style="color: Olive;">&lt;</span><span style="color: Green;">TEXTAREA</span><span style="color: Gray;"> </span><span style="color: #00008b;">NAME</span><span style="color: Gray;">=</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">code</span><span style="color: #8b0000;">&quot;</span><span style="color: Gray;"> </span><span style="color: #00008b;">ROWS</span><span style="color: Gray;">=</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">20</span><span style="color: #8b0000;">&quot;</span><span style="color: Gray;"> </span><span style="color: #00008b;">COLS</span><span style="color: Gray;">=</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">40</span><span style="color: #8b0000;">&quot;</span><span style="color: Gray;"> </span><span style="color: #00008b;">onfocus</span><span style="color: Gray;">=</span><span style="color: #00008b;">this</span><span style="color: Gray;">.</span><span style="color: #00008b;">select</span><span style="color: Gray;">()</span><span style="color: Olive;">&gt;</span><span style="color: Gray;">在这里写入你要加密或解密的内容。</span><span style="color: Olive;">&lt;/</span><span style="color: Green;">TEXTAREA</span><span style="color: Olive;">&gt;&lt;</span><span style="color: Green;">BR</span><span style="color: Olive;">&gt;</span><span style="color: Gray;"><br /></span><span style="color: Olive;">&lt;</span><span style="color: Green;">INPUT</span><span style="color: Gray;"> </span><span style="color: #00008b;">TYPE</span><span style="color: Gray;">=</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">button</span><span style="color: #8b0000;">&quot;</span><span style="color: Gray;"> </span><span style="color: #00008b;">value</span><span style="color: Gray;">=</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">/JScript.encode加密</span><span style="color: #8b0000;">&quot;</span><span style="color: Gray;"> </span><span style="color: #00008b;">onclick</span><span style="color: Gray;">=</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">this.form.code.value=</span><span style="color: #8b0000;">&quot;</span><span style="color: Gray;">/</span><span style="color: Green;">screncode</span><span style="color: Gray;">(</span><span style="color: #00008b;">this</span><span style="color: Gray;">.</span><span style="color: #00008b;">form</span><span style="color: Gray;">.</span><span style="color: #00008b;">code</span><span style="color: Gray;">.</span><span style="color: #00008b;">value</span><span style="color: Gray;">,</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">'JS')</span><span style="color: #8b0000;">&quot;</span><span style="color: Olive;">&gt;</span><span style="color: Gray;"><br /></span><span style="color: Olive;">&lt;</span><span style="color: Green;">INPUT</span><span style="color: Gray;"> </span><span style="color: #00008b;">TYPE</span><span style="color: Gray;">=</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">button</span><span style="color: #8b0000;">&quot;</span><span style="color: Gray;"> </span><span style="color: #00008b;">value</span><span style="color: Gray;">=</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">/JScript.encode解密</span><span style="color: #8b0000;">&quot;</span><span style="color: Gray;"> </span><span style="color: #00008b;">onclick</span><span style="color: Gray;">=</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">this.form.code.value=</span><span style="color: #8b0000;">&quot;</span><span style="color: Gray;">/</span><span style="color: Green;">strdec</span><span style="color: Gray;">(</span><span style="color: #00008b;">this</span><span style="color: Gray;">.</span><span style="color: #00008b;">form</span><span style="color: Gray;">.</span><span style="color: #00008b;">code</span><span style="color: Gray;">.</span><span style="color: #00008b;">value</span><span style="color: Gray;">)</span><span style="color: #8b0000;">&quot;&quot;</span><span style="color: Olive;">&gt;</span><span style="color: Gray;"><br /></span><span style="color: Olive;">&lt;/</span><span style="color: Green;">form</span><span style="color: Olive;">&gt;</span></div></div>
<p>3、保存该文件，用浏览器打开就可以进行加密和解密了。</p>
<p>下面有一个我做好的在线可以直接使用的页面，大家可以直接访问进行加密解密：<br />
<a href="http://www.toplee.com/blog/wp-content/pages/jsencode.html">http://www.toplee.com/blog/wp-content/pages/jsencode.html</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.toplee.com/blog/149.html/feed</wfw:commentRss>
		<slash:comments>8</slash:comments>
		</item>
		<item>
		<title>写给C语言初学者的话</title>
		<link>http://www.toplee.com/blog/143.html</link>
		<comments>http://www.toplee.com/blog/143.html#comments</comments>
		<pubDate>Wed, 14 Jun 2006 18:23:02 +0000</pubDate>
		<dc:creator>Michael</dc:creator>
				<category><![CDATA[C / Erlang / Lua]]></category>
		<category><![CDATA[技术交流]]></category>
		<category><![CDATA[c语言]]></category>
		<category><![CDATA[linux]]></category>

		<guid isPermaLink="false">http://www.toplee.com/blog/?p=143</guid>
		<description><![CDATA[我一个好朋友，Linux C方面的高手，有很多经验可以和大家分享，下面是他的一些经验，对于C语言初学者来说，应该会有不少帮助的。 学习C语言不要心急，要循序渐进，须知欲速则不达的道理。千万不要盲目的写大量的代码，这样做只会堆出大量的低档次代码，同时使你形成不好的代码习惯。先买本基础的教材来看看，使得对C语言有个初步的认识，其实我现在手头上还放着《The C Programming Language》和《C程序设计（第二版）》（大学教材）呢，有些时候我还会为了一些基本性的概念来翻翻看呢。 如果你的身边有高水平的开发人员，那么再好不过了，多多向别人请教。但是就我了解的情况来看，大部分的初学者并没有在进入IT行业后得到一个资深的软件工程师的指导，而恰恰是在入司后就被推向前线，替老板们骗取客户口袋里的钱，在这个过程中很多人都是在苦苦的堆代码，赚着可怜的薪资。尽管我也是在拿着可怜的钱，但是有一点我是幸运的，因为我在我的第一家公司里遇到了带领我走向Unix和C语言领域的导师，正是他的一句“Unix和C语言是你一生都要去学习的技术”让我狂热的爱上了它们，正是他的一句“你有root口令，并不是你有root口令这么简单，更多的是一种责任”（说这句话的前提是我用root口令进入SUN服务器后删除了别人的东西，因为我认为这些是无用的东西）使我对责任这两个字有一个非常具体的认识。所以在这里请广大读者允许我用一些篇幅来对我neusoft的导师yuhj表示深深的感谢。同时也对CU的朋友们表示深深的感谢，可以说，你们是我的第二导师，我已经离不开你们了。 希望大家都比我幸运，没有得到幸运之神垂青的朋友们也不要灰心，多上CU上来和大家交流交流，讨论讨论吧，但是注意在论坛上讨论的时候不要刨根问底，很多事情不是一句话就说的清楚的，别人只能给你一个指引，再具体的只有靠自己多研究研究、琢磨琢磨。闲暇的时候去精华区看看，你会有意外的收获的。 千万不要一看到英文就头大，尽管我也是这样，并不是看不懂（毕竟也接受过CET4、6级哑巴英语的教育，还是能看懂的）。man的帮助是最好的教材并且很多国外的论坛对技术的描述是很清楚的，也是很简单的，更重要的是，你会在上面看到些在国内论坛上看不到的东西（计算机的技术一直都是由西方向东方传递，希望有朝一日老外都到我们中国的论坛上来寻找技术资料）。 学习C语言有一件事情也是必须要学的，而且最好是同时学，有的朋友可能已经猜出来了，没错，是Unix。Unix和C语言可以说大家提的很多了，有Unix的地方就有C语言，同时也正是有了C语言，才有了Unix（我们还是先讨论讨论鸡生蛋还是蛋生鸡的哲学问题吧，谁拿西红柿打我），甚至有人说C语言就是为了Unix而设计的，可见Unix和C语言之间的非同寻常的关系。学习Unix现在容易多了，以前Unix都是运行在大型的服务器上的，可是现在有了Linux（按照GNU的意思，Linux就是Linux还不能叫Unix），大家可以在自己的PC上装一套Linux来学习，注意学习Linux不要拿Linux和Windows来比较，它们不可同日而语。Linux会让你知道什么是经典，永远让你在一个方向上大展宏图，Windows只会让你在别人的套子里耍上大刀，不时的还要换一个套子耍耍。下面罗列了一些我在学习Unix的一些经验： 1、学习Unix和C语言，先向大家推荐一本书《Unix高级环境编程》，这本书是学习Unix和C的经典之作，尽量把书中提到的系统调用都写个练习程序，先感性的认识一下Linux系统提供给用户的系统调用都是干什么的，怎么用。系统调用是内核提供给用户的功能用以申请内核服务，对于Linux内核的学习，从系统调用入手是个不错的办法。学习过程可以参看Linux的联机帮助，和网络上的资料。当你觉得差不多了的时候，那我给大家出一道联系题目吧：实现一个ftp服务器和客户端的功能，完全可以自己定义一些应用层的协议，只要能实现用简单的命令传输文件就可以了。 这个题目可以使你练习到TCP/IP的基本编程方法和文件操作的基本方法对于后面学习内核的文件系统会有帮助的。 2、当你对Unix系统有了些了解后，同时对于大部分的系统调用（关键是关于文件的系统调用，对于Linux系统的内核来说从文件系统入手相对容易一些）也有了清楚的认识后，再推荐你一本书《Linux内核情景分析》，该书是关于Linux内核的经典之作唯一美中不足的是没有关于网络子系统的详细介绍。你可以从文件系统的系统调用入手，慢慢的你就会对Linux有了一个更深入的认识。同时注意很多经典的方法和思想在Linux中的运用。你会认识到为什么Unix把所有的东西都看成文件，对什么东西操作都是对文件操作，你会慢慢体会到Unix的经典之处了。 3、当你对Linux内核有了些了解后，你就可以找个方向来专门发展了，如果你想对眼下流行的网络编程感兴趣，那么再推荐你一本书《TCP/IP详细解释》，这本书是关于TCP/IP协议的经典之作。你会学习到TCP/IP协议栈是如果实现的，为什么，各层协议之间是如何工作的。你看完了这本书后，你就可以自己写一个dos攻击程序和sniffer了。 我说的简单，其实我提到的每本书至少都够你研究很长时间的，所以希望初学者别着急不骄不躁，相信只要努力过，一定会成为高手的。 在写代码的时候大家要注意养成好的代码习惯和风格还有抽象能力。 下面给出大家在写代码的时候的20字方针： 函数要小 尽量的把函数弄的通用点，代码行少点，一个函数只完成一个简单的功能，一眼就能看出来此函数有没有代码错误，每个函数都是健壮的，那么你的程序就是健壮的。 代码要少 完成一个功能的时候在逻辑清楚的情况下代码越少越好，千万不要比代码谁写的多啊。 算法要好 在完成一个功能的时候要考虑效率，目前计算机的内存很大，所以内存已经不是首要考虑的因素了，但是在某些特殊的地方效率还是很重要的。有效率高的算法，就不用效率低的算法，看看本版有一篇精华贴子是关于把一个字符窜两边的空格去掉的帖子（trim），很多人都提出了算法，但是有一个算法是最好的，效率最高，代码最少，是算法要好的最好体现 命名要清 命名要清楚，最要用汉语中的谓宾结构如set_buffsize() 文件要多 尽量把一个大的程序安功能分成多个文件，一个文件尽量不要超作1000行，这样就很清楚的知道那个文件代码是健壮的，那个文件有可能有隐患，在代码检查的时候可以有针对性的检查某几个文件]]></description>
			<content:encoded><![CDATA[<p>   我一个好朋友，Linux C方面的高手，有很多经验可以和大家分享，下面是他的一些经验，对于C语言初学者来说，应该会有不少帮助的。</p>
<p>    学习C语言不要心急，要循序渐进，须知欲速则不达的道理。千万不要盲目的写大量的代码，这样做只会堆出大量的低档次代码，同时使你形成不好的代码习惯。先买本基础的教材来看看，使得对C语言有个初步的认识，其实我现在手头上还放着《The C Programming Language》和《C程序设计（第二版）》（大学教材）呢，有些时候我还会为了一些基本性的概念来翻翻看呢。<br />
<span id="more-143"></span><br />
    如果你的身边有高水平的开发人员，那么再好不过了，多多向别人请教。但是就我了解的情况来看，大部分的初学者并没有在进入IT行业后得到一个资深的软件工程师的指导，而恰恰是在入司后就被推向前线，替老板们骗取客户口袋里的钱，在这个过程中很多人都是在苦苦的堆代码，赚着可怜的薪资。尽管我也是在拿着可怜的钱，但是有一点我是幸运的，因为我在我的第一家公司里遇到了带领我走向Unix和C语言领域的导师，正是他的一句“Unix和C语言是你一生都要去学习的技术”让我狂热的爱上了它们，正是他的一句“你有root口令，并不是你有root口令这么简单，更多的是一种责任”（说这句话的前提是我用root口令进入SUN服务器后删除了别人的东西，因为我认为这些是无用的东西）使我对责任这两个字有一个非常具体的认识。所以在这里请广大读者允许我用一些篇幅来对我neusoft的导师yuhj表示深深的感谢。同时也对CU的朋友们表示深深的感谢，可以说，你们是我的第二导师，我已经离不开你们了。</p>
<p>    希望大家都比我幸运，没有得到幸运之神垂青的朋友们也不要灰心，多上CU上来和大家交流交流，讨论讨论吧，但是注意在论坛上讨论的时候不要刨根问底，很多事情不是一句话就说的清楚的，别人只能给你一个指引，再具体的只有靠自己多研究研究、琢磨琢磨。闲暇的时候去精华区看看，你会有意外的收获的。</p>
<p>    千万不要一看到英文就头大，尽管我也是这样，并不是看不懂（毕竟也接受过CET4、6级哑巴英语的教育，还是能看懂的）。man的帮助是最好的教材并且很多国外的论坛对技术的描述是很清楚的，也是很简单的，更重要的是，你会在上面看到些在国内论坛上看不到的东西（计算机的技术一直都是由西方向东方传递，希望有朝一日老外都到我们中国的论坛上来寻找技术资料）。</p>
<p>    学习C语言有一件事情也是必须要学的，而且最好是同时学，有的朋友可能已经猜出来了，没错，是Unix。Unix和C语言可以说大家提的很多了，有Unix的地方就有C语言，同时也正是有了C语言，才有了Unix（我们还是先讨论讨论鸡生蛋还是蛋生鸡的哲学问题吧，谁拿西红柿打我），甚至有人说C语言就是为了Unix而设计的，可见Unix和C语言之间的非同寻常的关系。学习Unix现在容易多了，以前Unix都是运行在大型的服务器上的，可是现在有了Linux（按照GNU的意思，Linux就是Linux还不能叫Unix），大家可以在自己的PC上装一套Linux来学习，注意学习Linux不要拿Linux和Windows来比较，它们不可同日而语。Linux会让你知道什么是经典，永远让你在一个方向上大展宏图，Windows只会让你在别人的套子里耍上大刀，不时的还要换一个套子耍耍。下面罗列了一些我在学习Unix的一些经验：</p>
<p>    1、学习Unix和C语言，先向大家推荐一本书《Unix高级环境编程》，这本书是学习Unix和C的经典之作，尽量把书中提到的系统调用都写个练习程序，先感性的认识一下Linux系统提供给用户的系统调用都是干什么的，怎么用。系统调用是内核提供给用户的功能用以申请内核服务，对于Linux内核的学习，从系统调用入手是个不错的办法。学习过程可以参看Linux的联机帮助，和网络上的资料。当你觉得差不多了的时候，那我给大家出一道联系题目吧：实现一个ftp服务器和客户端的功能，完全可以自己定义一些应用层的协议，只要能实现用简单的命令传输文件就可以了。</p>
<p>    这个题目可以使你练习到TCP/IP的基本编程方法和文件操作的基本方法对于后面学习内核的文件系统会有帮助的。</p>
<p>    2、当你对Unix系统有了些了解后，同时对于大部分的系统调用（关键是关于文件的系统调用，对于Linux系统的内核来说从文件系统入手相对容易一些）也有了清楚的认识后，再推荐你一本书《Linux内核情景分析》，该书是关于Linux内核的经典之作唯一美中不足的是没有关于网络子系统的详细介绍。你可以从文件系统的系统调用入手，慢慢的你就会对Linux有了一个更深入的认识。同时注意很多经典的方法和思想在Linux中的运用。你会认识到为什么Unix把所有的东西都看成文件，对什么东西操作都是对文件操作，你会慢慢体会到Unix的经典之处了。</p>
<p>    3、当你对Linux内核有了些了解后，你就可以找个方向来专门发展了，如果你想对眼下流行的网络编程感兴趣，那么再推荐你一本书《TCP/IP详细解释》，这本书是关于TCP/IP协议的经典之作。你会学习到TCP/IP协议栈是如果实现的，为什么，各层协议之间是如何工作的。你看完了这本书后，你就可以自己写一个dos攻击程序和sniffer了。</p>
<p>    我说的简单，其实我提到的每本书至少都够你研究很长时间的，所以希望初学者别着急不骄不躁，相信只要努力过，一定会成为高手的。</p>
<p>    在写代码的时候大家要注意养成好的代码习惯和风格还有抽象能力。</p>
<p>下面给出大家在写代码的时候的20字方针：</p>
<p>    函数要小<br />
    尽量的把函数弄的通用点，代码行少点，一个函数只完成一个简单的功能，一眼就能看出来此函数有没有代码错误，每个函数都是健壮的，那么你的程序就是健壮的。</p>
<p>    代码要少    完成一个功能的时候在逻辑清楚的情况下代码越少越好，千万不要比代码谁写的多啊。</p>
<p>    算法要好    在完成一个功能的时候要考虑效率，目前计算机的内存很大，所以内存已经不是首要考虑的因素了，但是在某些特殊的地方效率还是很重要的。有效率高的算法，就不用效率低的算法，看看本版有一篇精华贴子是关于把一个字符窜两边的空格去掉的帖子（trim），很多人都提出了算法，但是有一个算法是最好的，效率最高，代码最少，是算法要好的最好体现</p>
<p>    命名要清    命名要清楚，最要用汉语中的谓宾结构如set_buffsize()</p>
<p>     文件要多    尽量把一个大的程序安功能分成多个文件，一个文件尽量不要超作1000行，这样就很清楚的知道那个文件代码是健壮的，那个文件有可能有隐患，在代码检查的时候可以有针对性的检查某几个文件 </p>
]]></content:encoded>
			<wfw:commentRss>http://www.toplee.com/blog/143.html/feed</wfw:commentRss>
		<slash:comments>12</slash:comments>
		</item>
		<item>
		<title>在UltraEdit的查找和替换中使用正则表达式</title>
		<link>http://www.toplee.com/blog/129.html</link>
		<comments>http://www.toplee.com/blog/129.html#comments</comments>
		<pubDate>Tue, 13 Jun 2006 04:41:55 +0000</pubDate>
		<dc:creator>Michael</dc:creator>
				<category><![CDATA[C / Erlang / Lua]]></category>
		<category><![CDATA[技术交流]]></category>

		<guid isPermaLink="false">http://www.toplee.com/blog/?p=129</guid>
		<description><![CDATA[很多朋友都用过或者正在用UltraEdit，这个编辑器陪伴我也好几年了，从很多地方影响着我写代码的快捷键习惯，Ultraedit提供了非常丰富的编辑功能，其中非常重要的查找和替换功能一定大家都用过，Ultraedit提供的查找替换功能非常方便和强大，可以在单独文件里面查找替换，也可以在多个文件、多个目录里面进行查找替换。而我们在使用这些查找替换功能的时候，一般都是针对某个字符串进行，前两天我要对一个目录下（包含子目录）所有的html文件中某一段代码进行查找替换，一下子不知道怎么操作了，由于长期写程序用到正则表达式，于是猜想具备如此强大功能的Ultraedit一定也有这样类似的匹配功能，于是点击Help一看，果然不出所料，Ultraedit支持基本的正则表达式匹配查找和替换功能，这能满足我们几乎全部的需要了。 下面是对UltraEdit的Help中针对查找替换使用正则表达式部分的整理，最后还有我前两天用到的一个多行代码查找替换的例子。 Ultraedit在使用正则表达式进行查找替换时有两个可使用的语法集合。一个是 UltraEdit 的更早的版本被使用的原来的 UltraEdit 句法。另一个是&#8221;Unix&#8221;类型的正则表达式，这个集合在ultraedit的默认配置中是没有启用的，需要在配置中找到search项，启用Unix类型的正则表达式。 语法集合一： 符号&#160; 功能%&#160; &#160; &#160;匹配行的开始 - 显示搜索字符串必须在行的开始，但是在所选择的结果字符串中不包括任何行终止字符。$&#160; &#160; &#160;匹配行尾 - 显示搜索字符串必须在行尾，但是在所选择的结果字符串中不包括任何行终止字符。?&#160; &#160; &#160;除了换行符以外匹配任何单个的字符*&#160; &#160; &#160;除了换行符匹配任何数量的字符和数字+&#160; &#160; &#160;前一字符匹配一个或多个，但至少要出现一个++&#160; &#160; 前一字符匹配零个或多个，但至少要出现一个^b&#160; &#160; 匹配一个分页^p&#160; &#160; 匹配一个换行符(CR/LF)(段)(DOS文件)^r&#160; &#160; 匹配一个换行符(CR 仅仅)(段)(MAC 文件)^n&#160; &#160; 匹配一个换行符 ( LF 仅仅 )( 段 )( UNIX 文件 )^t&#160; &#160; 匹配一个标签字符TAB []&#160; &#160; 匹配任何单个的字符，或在方括号中的范围^{A^}^{ B^} 匹配表达式A或 B ^&#160; &#160; [...]]]></description>
			<content:encoded><![CDATA[<p>很多朋友都用过或者正在用UltraEdit，这个编辑器陪伴我也好几年了，从很多地方影响着我写代码的快捷键习惯，Ultraedit提供了非常丰富的编辑功能，其中非常重要的查找和替换功能一定大家都用过，Ultraedit提供的查找替换功能非常方便和强大，可以在单独文件里面查找替换，也可以在多个文件、多个目录里面进行查找替换。而我们在使用这些查找替换功能的时候，一般都是针对某个字符串进行，前两天我要对一个目录下（包含子目录）所有的html文件中某一段代码进行查找替换，一下子不知道怎么操作了，由于长期写程序用到正则表达式，于是猜想具备如此强大功能的Ultraedit一定也有这样类似的匹配功能，于是点击Help一看，果然不出所料，Ultraedit支持基本的正则表达式匹配查找和替换功能，这能满足我们几乎全部的需要了。<br />
<span id="more-129"></span></p>
<p>下面是对UltraEdit的Help中针对查找替换使用正则表达式部分的整理，最后还有我前两天用到的一个多行代码查找替换的例子。</p>
<p>Ultraedit在使用正则表达式进行查找替换时有两个可使用的语法集合。一个是 UltraEdit 的更早的版本被使用的原来的 UltraEdit 句法。另一个是&#8221;Unix&#8221;类型的正则表达式，这个集合在ultraedit的默认配置中是没有启用的，需要在配置中找到search项，启用Unix类型的正则表达式。</p>
<p>语法集合一：</p>
<div class="hl-surround"><div class="hl-main">符号&nbsp; 功能<br />%&nbsp; &nbsp; &nbsp;匹配行的开始 - 显示搜索字符串必须在行的开始，但是在所选择的结果字符串中不包括任何行终止字符。<br />$&nbsp; &nbsp; &nbsp;匹配行尾 - 显示搜索字符串必须在行尾，但是在所选择的结果字符串中不包括任何行终止字符。<br />?&nbsp; &nbsp; &nbsp;除了换行符以外匹配任何单个的字符<br />*&nbsp; &nbsp; &nbsp;除了换行符匹配任何数量的字符和数字<br />+&nbsp; &nbsp; &nbsp;前一字符匹配一个或多个，但至少要出现一个<br />++&nbsp; &nbsp; 前一字符匹配零个或多个，但至少要出现一个<br />^b&nbsp; &nbsp; 匹配一个分页<br />^p&nbsp; &nbsp; 匹配一个换行符(CR/LF)(段)(DOS文件)<br />^r&nbsp; &nbsp; 匹配一个换行符(CR 仅仅)(段)(MAC 文件)<br />^n&nbsp; &nbsp; 匹配一个换行符 ( LF 仅仅 )( 段 )( UNIX 文件 )<br />^t&nbsp; &nbsp; 匹配一个标签字符TAB <br />[]&nbsp; &nbsp; 匹配任何单个的字符，或在方括号中的范围<br />^{A^}^{ B^} 匹配表达式A或 B <br />^&nbsp; &nbsp; &nbsp;重载其后的正规表达式字符 <br />^(^)&nbsp; 括或标注为用于替换命令的表达式。</div></div>
<p>一个正则表达式最多可以有9个标注表达式, 按正规表达式的需要而定。<br />
相应的替换表达式是 ^x , 替换范围x是1-9。例如：<br />
If ^(h*o^) ^(f*s^) matches &#8220;hello folks&#8221;,<br />
^2 ^1 would replace it with &#8220;folks hello&#8221;.</p>
<p>（hello folks 将被替换成 folks hello。）</p>
<p>注： ^ 是实际字符 ^不是Ctl + 键值。</p>
<p>例如：<br />
m?n 匹配 &#8220;man&#8221;,&#8221;men&#8221;,&#8221;min&#8221; 但不匹配 &#8220;moon&#8221;.<br />
t*t 匹配 &#8220;test&#8221;,&#8221;tonight&#8221; 和 &#8220;tea time&#8221; (the &#8220;tea t&#8221; portion) 但不匹配 &#8220;tea<br />
time&#8221; (newline between &#8220;tea &#8221; and &#8220;time&#8221;).<br />
Te+st 匹配 &#8220;test&#8221;,&#8221;teest&#8221;,&#8221; teeeest &#8220;等等。但是不匹配 &#8220;tst&#8221;。<br />
[aeiou]  匹配每个小写元音。<br />
[,.?]  匹配一文字的 &#8220;,&#8221;，&#8221;.&#8221;或 &#8220;?&#8221;。<br />
[0-9, a-z] 匹配任何数位，或小写字母。<br />
[~0-9] 除了数字以外匹配任何字符 (~ 意味着&#8221;不&#8221;)</p>
<p>你按如下方式可以查找一个表达式A或 B ：</p>
<p>&#8220;^{John^}^{Tom^}&#8221;</p>
<p>这将在找John或Tom的出现。应该在 2 个表达式之间没有任何东西。</p>
<p>你可以在同一搜索中按如下方式组合A or B and C or D：</p>
<p>&#8220;^{John^}^{Tom^}^{Smith^}^{Jones^}&#8221;</p>
<p>这将在John or Tom 后面找 Smith or Jones。</p>
<p>语法二：&#8221;Unix&#8221;句法类型的正则表达式</p>
<div class="hl-surround"><div class="hl-main">符号&nbsp; &nbsp; &nbsp; &nbsp; 功能<br />\&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 标记下一个字符作为一个特殊的字符。<br />&quot;n&quot;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;匹配字符&quot;n&quot;。&quot;n&quot; 一个换行符或换行符字符。<br />^&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;匹配/定位行的开始。<br />$&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;匹配/定位行的尾。<br />*&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;匹配前面的字符零次或多次。例<br />+&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;匹配前面的字符一次或多次。例<br />.&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;匹配除了一个换行符字符匹配任何单个的字符。<br />(expression)标注用于替换命令的表达式。一个正则表达式根据需要，最多可以有9个标注表达式。相应的代替表达式是 x , x的范围是 1-9 。<br />例如：<br />If (h.*o) (f.*s) matches &quot;hello folks&quot;, <br />2 1 would replace it with &quot;folks hello&quot;.<br />（hello folks 将被替换成 folks hello。）<br /><br />[xyz]&nbsp; &nbsp; &nbsp; &nbsp;一个字符集。匹配在方括号之间的任何字符。<br />[^xyz]&nbsp; &nbsp; &nbsp; 一个否定的字符集。不匹配在方括号之间的任何字符。<br />\d&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 匹配一个数字字符。等价于[0-9]。<br />\D&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 匹配一个非数字字符。等价于[^0-9]。<br />\f&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 匹配一个换页字符。<br />\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 匹配一个换行字符。<br />\r&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 匹配一个回车符字符。<br />\s&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 匹配任何空白的空格, 标签, 换页, 包括空格等等，但不匹配换行符。<br />\S&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 匹配任何非空白的字符，但不匹配换行符。<br />\t&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 匹配一个标签TAB字符。<br />\v&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 匹配一个垂直的标签字符。<br />\w&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 匹配任何词语字符包括下划线。<br />\W&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 匹配任何非词语字符字符。</div></div>
<p>注： ^ 是实际字符 ^不是Ctl + 键值。</p>
<p>例如：<br />
m.n       匹配 &#8220;man&#8221;,&#8221;men&#8221;,&#8221;min&#8221; 但不匹配 &#8220;moon&#8221;.<br />
t+t       匹配 &#8220;test&#8221;,&#8221;tonight&#8221; 和 &#8220;tea time&#8221; (the &#8220;tea t&#8221; portion) 但不匹配 &#8220;tea<br />
time&#8221; (newline between &#8220;tea &#8221; and &#8220;time&#8221;).<br />
Te*st     匹配 &#8220;test&#8221;,&#8221;teest&#8221;,&#8221; teeeest &#8220;等等。但是不匹配 &#8220;tst&#8221;。<br />
[aeiou]   匹配每个小写元音。<br />
[,.?]     匹配一文字的 &#8220;,&#8221;，&#8221;.&#8221;或 &#8220;?&#8221;。<br />
[0-9,a-z] 匹配任何数位，或小写字母。<br />
[^0-9]    除了数字以外匹配任何字符 (~ 意味着&#8221;不&#8221;)</p>
<p>你按如下方式可以查找一个表达式A或 B ：</p>
<p>&#8220;(John)|(Tom)&#8221;</p>
<p>这将在找John或Tom的出现。应该在 2 个表达式之间没有任何东西。</p>
<p>你可以在同一搜索中按如下方式组合A or B and C or D：</p>
<p>&#8220;(John|Tom) (Smith|Jones)&#8221;</p>
<p>这将在John or Tom 后面找 Smith or Jones。</p>
<p>另外：</p>
<p>p        匹配 CR/LF ( 作为 rn 的一样 ) 作为DOS行结束符匹配</p>
<p>如果查找/替换功能中正则表达式没有选用，则替换字段中下列字符也是有效的：</p>
<p>符号   功能</p>
<p>^^          匹配一个 &#8220;^&#8221; 字符<br />
^s          替换为被选择 ( 加亮 ) 活跃的文件窗口的文章。<br />
^c          替换为剪贴板的内容<br />
^b          匹配一个页裂缝<br />
^p          匹配一个换行符 ( CR/LF )( 段 )( DOS 文件)<br />
^r          匹配一个换行符 ( CR 仅仅 )( 段 )( MAC 文件)<br />
^n          匹配一个换行符 ( LF 仅仅 )( 段 )( UNIX 文件)<br />
^t          匹配一个标签TAB字符</p>
<p>下面是我要实现的一段代码查询替换的举例<br />
有这样一段代码分布在各个html文件中</p>
<div class="hl-surround"><div class="hl-main"><span style="color: #ffa500;">&lt;!-- Copyright ?2005. toplee Ltd --&gt;</span><span style="color: Gray;"><br /></span><span style="color: Olive;">&lt;</span><span style="color: Green;">style</span><span style="color: Olive;">&gt;</span><span style="color: Gray;"><br />A.applink:hover {border: 2px dotted #DCE6F4;padding:2px;background-color:#ffff00;color:green;text-decoration:none}<br />A.applink&nbsp; &nbsp; &nbsp; &nbsp;{border: 2px dotted #DCE6F4;padding:2px;color:#2F5BFF;background:transparent;text-decoration:none}<br />A.info&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; {color:#2F5BFF;background:transparent;text-decoration:none}<br />A.info:hover&nbsp; &nbsp; {color:green;background:transparent;text-decoration:underline}<br /></span><span style="color: Olive;">&lt;/</span><span style="color: Green;">style</span><span style="color: Olive;">&gt;</span><span style="color: Gray;"><br /></span><span style="color: Olive;">&lt;</span><span style="color: Green;">div</span><span style="color: Gray;"> </span><span style="color: #00008b;">style</span><span style="color: Gray;">='</span><span style="color: #00008b;">BORDER:</span><span style="color: Gray;"> </span><span style="color: #00008b;">1px</span><span style="color: Gray;"> </span><span style="color: #00008b;">solid</span><span style="color: Gray;"> #</span><span style="color: #00008b;">DCE6F4</span><span style="color: Gray;">; </span><span style="color: #00008b;">MARGIN-TOP:</span><span style="color: Gray;"> </span><span style="color: #00008b;">20px</span><span style="color: Gray;">; </span><span style="color: #00008b;">MARGIN-BOTTOM:</span><span style="color: Gray;"> </span><span style="color: #00008b;">20px</span><span style="color: Gray;">; </span><span style="color: #00008b;">MARGIN-LEFT:</span><span style="color: Gray;"> </span><span style="color: #00008b;">5px</span><span style="color: Gray;">; <br />.... 省略若干行....<br />&lt;!</span><span style="color: #00008b;">--</span><span style="color: Gray;"> /</span><span style="color: Green;">Copyright</span><span style="color: Gray;"> ?</span><span style="color: Green;">2005</span><span style="color: Gray;">. </span><span style="color: #00008b;">toplee</span><span style="color: Gray;"> </span><span style="color: #00008b;">Ltd</span><span style="color: Gray;"> </span><span style="color: #00008b;">--</span><span style="color: Olive;">&gt;</span></div></div>
<p>我要把上面一段代码替换为空，于是编写下面的匹配规则</p>
<div class="hl-surround"><div class="hl-main">&lt;!-- Copyright[^!]*[^&gt;]*&gt;</div></div>
<p>即完成了全部替换。</p>
<p>大家可以在今后的编码中尝试一下Ultraedit的正则表达式查找替换功能，非常简单快捷！</p>
]]></content:encoded>
			<wfw:commentRss>http://www.toplee.com/blog/129.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>网页中插入视频播放代码全集</title>
		<link>http://www.toplee.com/blog/145.html</link>
		<comments>http://www.toplee.com/blog/145.html#comments</comments>
		<pubDate>Mon, 12 Jun 2006 08:49:17 +0000</pubDate>
		<dc:creator>Michael</dc:creator>
				<category><![CDATA[C / Erlang / Lua]]></category>
		<category><![CDATA[技术交流]]></category>

		<guid isPermaLink="false">http://www.toplee.com/blog/?p=145</guid>
		<description><![CDATA[我们经常要在网页中插入各种在线视频格式的播放器，可以让用户访问的时候直接欣赏视频，这里收集整理了大部分的视频格式播放代码。 1.avi格式 代码片断如下： &#60;object id=&#34;video&#34; width=&#34;400&#34; height=&#34;200&#34; border=&#34;0&#34; classid=&#34;clsid:CFCDAA03-8BE4-11cf-B84B-0020AFBBCCFA&#34;&#62;&#60;param name=&#34;ShowDisplay&#34; value=&#34;0&#34;&#62;&#60;param name=&#34;ShowControls&#34; value=&#34;1&#34;&#62;&#60;param name=&#34;AutoStart&#34; value=&#34;1&#34;&#62;&#60;param name=&#34;AutoRewind&#34; value=&#34;0&#34;&#62;&#60;param name=&#34;PlayCount&#34; value=&#34;0&#34;&#62;&#60;param name=&#34;Appearance value=&#34;0 value=&#34;&#34;&#34;&#62;&#60;param name=&#34;BorderStyle value=&#34;0 value=&#34;&#34;&#34;&#62;&#60;param name=&#34;MovieWindowHeight&#34; value=&#34;240&#34;&#62;&#60;param name=&#34;MovieWindowWidth&#34; value=&#34;320&#34;&#62;&#60;param name=&#34;FileName&#34; value=&#34;/Mbar.avi&#34;&#62;&#60;embed width=&#34;400&#34; height=&#34;200&#34; border=&#34;0&#34; showdisplay=&#34;0&#34; showcontrols=&#34;1&#34; autostart=&#34;1&#34; autorewind=&#34;0&#34; playcount=&#34;0&#34; moviewindowheight=&#34;240&#34; moviewindowwidth=&#34;320&#34; filename=&#34;/Mbar.avi&#34; src=&#34;Mbar.avi&#34;&#62;&#60;/embed&#62;&#60;/object&#62; 2.mpg格式 代码片断如下： &#60;object classid=&#34;clsid:05589FA1-C356-11CE-BF01-00AA0055595A&#34; id=&#34;ActiveMovie1&#34; width=&#34;239&#34; height=&#34;250&#34;&#62;&#60;param name=&#34;Appearance&#34; value=&#34;0&#34;&#62;&#60;param name=&#34;AutoStart&#34; value=&#34;-1&#34;&#62;&#60;param name=&#34;AllowChangeDisplayMode&#34; [...]]]></description>
			<content:encoded><![CDATA[<p>我们经常要在网页中插入各种在线视频格式的播放器，可以让用户访问的时候直接欣赏视频，这里收集整理了大部分的视频格式播放代码。</p>
<p>1.avi格式</p>
<p>代码片断如下：</p>
<div class="hl-surround"><div class="hl-main"><span style="color: Olive;">&lt;</span><span style="color: Green;">object</span><span style="color: Gray;"> </span><span style="color: #00008b;">id</span><span style="color: Gray;">=</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">video</span><span style="color: #8b0000;">&quot;</span><span style="color: Gray;"> </span><span style="color: #00008b;">width</span><span style="color: Gray;">=</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">400</span><span style="color: #8b0000;">&quot;</span><span style="color: Gray;"> </span><span style="color: #00008b;">height</span><span style="color: Gray;">=</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">200</span><span style="color: #8b0000;">&quot;</span><span style="color: Gray;"> </span><span style="color: #00008b;">border</span><span style="color: Gray;">=</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">0</span><span style="color: #8b0000;">&quot;</span><span style="color: Gray;"> </span><span style="color: #00008b;">classid</span><span style="color: Gray;">=</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">clsid:CFCDAA03-8BE4-11cf-B84B-0020AFBBCCFA</span><span style="color: #8b0000;">&quot;</span><span style="color: Olive;">&gt;</span><span style="color: Gray;"><br /></span><span style="color: Olive;">&lt;</span><span style="color: Green;">param</span><span style="color: Gray;"> </span><span style="color: #00008b;">name</span><span style="color: Gray;">=</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">ShowDisplay</span><span style="color: #8b0000;">&quot;</span><span style="color: Gray;"> </span><span style="color: #00008b;">value</span><span style="color: Gray;">=</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">0</span><span style="color: #8b0000;">&quot;</span><span style="color: Olive;">&gt;</span><span style="color: Gray;"><br /></span><span style="color: Olive;">&lt;</span><span style="color: Green;">param</span><span style="color: Gray;"> </span><span style="color: #00008b;">name</span><span style="color: Gray;">=</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">ShowControls</span><span style="color: #8b0000;">&quot;</span><span style="color: Gray;"> </span><span style="color: #00008b;">value</span><span style="color: Gray;">=</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">1</span><span style="color: #8b0000;">&quot;</span><span style="color: Olive;">&gt;</span><span style="color: Gray;"><br /></span><span style="color: Olive;">&lt;</span><span style="color: Green;">param</span><span style="color: Gray;"> </span><span style="color: #00008b;">name</span><span style="color: Gray;">=</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">AutoStart</span><span style="color: #8b0000;">&quot;</span><span style="color: Gray;"> </span><span style="color: #00008b;">value</span><span style="color: Gray;">=</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">1</span><span style="color: #8b0000;">&quot;</span><span style="color: Olive;">&gt;</span><span style="color: Gray;"><br /></span><span style="color: Olive;">&lt;</span><span style="color: Green;">param</span><span style="color: Gray;"> </span><span style="color: #00008b;">name</span><span style="color: Gray;">=</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">AutoRewind</span><span style="color: #8b0000;">&quot;</span><span style="color: Gray;"> </span><span style="color: #00008b;">value</span><span style="color: Gray;">=</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">0</span><span style="color: #8b0000;">&quot;</span><span style="color: Olive;">&gt;</span><span style="color: Gray;"><br /></span><span style="color: Olive;">&lt;</span><span style="color: Green;">param</span><span style="color: Gray;"> </span><span style="color: #00008b;">name</span><span style="color: Gray;">=</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">PlayCount</span><span style="color: #8b0000;">&quot;</span><span style="color: Gray;"> </span><span style="color: #00008b;">value</span><span style="color: Gray;">=</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">0</span><span style="color: #8b0000;">&quot;</span><span style="color: Olive;">&gt;</span><span style="color: Gray;"><br /></span><span style="color: Olive;">&lt;</span><span style="color: Green;">param</span><span style="color: Gray;"> </span><span style="color: #00008b;">name</span><span style="color: Gray;">=</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">Appearance value=</span><span style="color: #8b0000;">&quot;</span><span style="color: #00008b;">0</span><span style="color: Gray;"> </span><span style="color: #00008b;">value</span><span style="color: Gray;">=</span><span style="color: #8b0000;">&quot;&quot;&quot;</span><span style="color: Red;">&gt;<br />&lt;param name=</span><span style="color: #8b0000;">&quot;</span><span style="color: #00008b;">BorderStyle</span><span style="color: Gray;"> </span><span style="color: #00008b;">value</span><span style="color: Gray;">=</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">0 value=</span><span style="color: #8b0000;">&quot;&quot;&quot;</span><span style="color: Olive;">&gt;</span><span style="color: Gray;"><br /></span><span style="color: Olive;">&lt;</span><span style="color: Green;">param</span><span style="color: Gray;"> </span><span style="color: #00008b;">name</span><span style="color: Gray;">=</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">MovieWindowHeight</span><span style="color: #8b0000;">&quot;</span><span style="color: Gray;"> </span><span style="color: #00008b;">value</span><span style="color: Gray;">=</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">240</span><span style="color: #8b0000;">&quot;</span><span style="color: Olive;">&gt;</span><span style="color: Gray;"><br /></span><span style="color: Olive;">&lt;</span><span style="color: Green;">param</span><span style="color: Gray;"> </span><span style="color: #00008b;">name</span><span style="color: Gray;">=</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">MovieWindowWidth</span><span style="color: #8b0000;">&quot;</span><span style="color: Gray;"> </span><span style="color: #00008b;">value</span><span style="color: Gray;">=</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">320</span><span style="color: #8b0000;">&quot;</span><span style="color: Olive;">&gt;</span><span style="color: Gray;"><br /></span><span style="color: Olive;">&lt;</span><span style="color: Green;">param</span><span style="color: Gray;"> </span><span style="color: #00008b;">name</span><span style="color: Gray;">=</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">FileName</span><span style="color: #8b0000;">&quot;</span><span style="color: Gray;"> </span><span style="color: #00008b;">value</span><span style="color: Gray;">=</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">/Mbar.avi</span><span style="color: #8b0000;">&quot;</span><span style="color: Olive;">&gt;</span><span style="color: Gray;"><br /></span><span style="color: Olive;">&lt;</span><span style="color: Green;">embed</span><span style="color: Gray;"> </span><span style="color: #00008b;">width</span><span style="color: Gray;">=</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">400</span><span style="color: #8b0000;">&quot;</span><span style="color: Gray;"> </span><span style="color: #00008b;">height</span><span style="color: Gray;">=</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">200</span><span style="color: #8b0000;">&quot;</span><span style="color: Gray;"> </span><span style="color: #00008b;">border</span><span style="color: Gray;">=</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">0</span><span style="color: #8b0000;">&quot;</span><span style="color: Gray;"> </span><span style="color: #00008b;">showdisplay</span><span style="color: Gray;">=</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">0</span><span style="color: #8b0000;">&quot;</span><span style="color: Gray;"> </span><span style="color: #00008b;">showcontrols</span><span style="color: Gray;">=</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">1</span><span style="color: #8b0000;">&quot;</span><span style="color: Gray;"> </span><span style="color: #00008b;">autostart</span><span style="color: Gray;">=</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">1</span><span style="color: #8b0000;">&quot;</span><span style="color: Gray;"> </span><span style="color: #00008b;">autorewind</span><span style="color: Gray;">=</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">0</span><span style="color: #8b0000;">&quot;</span><span style="color: Gray;"> </span><span style="color: #00008b;">playcount</span><span style="color: Gray;">=</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">0</span><span style="color: #8b0000;">&quot;</span><span style="color: Gray;"> </span><span style="color: #00008b;">moviewindowheight</span><span style="color: Gray;">=</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">240</span><span style="color: #8b0000;">&quot;</span><span style="color: Gray;"> </span><span style="color: #00008b;">moviewindowwidth</span><span style="color: Gray;">=</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">320</span><span style="color: #8b0000;">&quot;</span><span style="color: Gray;"> </span><span style="color: #00008b;">filename</span><span style="color: Gray;">=</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">/Mbar.avi</span><span style="color: #8b0000;">&quot;</span><span style="color: Gray;"> </span><span style="color: #00008b;">src</span><span style="color: Gray;">=</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">Mbar.avi</span><span style="color: #8b0000;">&quot;</span><span style="color: Olive;">&gt;</span><span style="color: Gray;"><br /></span><span style="color: Olive;">&lt;/</span><span style="color: Green;">embed</span><span style="color: Olive;">&gt;</span><span style="color: Gray;"><br /></span><span style="color: Olive;">&lt;/</span><span style="color: Green;">object</span><span style="color: Olive;">&gt;</span></div></div>
<p><span id="more-145"></span></p>
<p>2.mpg格式</p>
<p>代码片断如下：</p>
<div class="hl-surround"><div class="hl-main"><span style="color: Olive;">&lt;</span><span style="color: Green;">object</span><span style="color: Gray;"> </span><span style="color: #00008b;">classid</span><span style="color: Gray;">=</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">clsid:05589FA1-C356-11CE-BF01-00AA0055595A</span><span style="color: #8b0000;">&quot;</span><span style="color: Gray;"> </span><span style="color: #00008b;">id</span><span style="color: Gray;">=</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">ActiveMovie1</span><span style="color: #8b0000;">&quot;</span><span style="color: Gray;"> </span><span style="color: #00008b;">width</span><span style="color: Gray;">=</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">239</span><span style="color: #8b0000;">&quot;</span><span style="color: Gray;"> </span><span style="color: #00008b;">height</span><span style="color: Gray;">=</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">250</span><span style="color: #8b0000;">&quot;</span><span style="color: Olive;">&gt;</span><span style="color: Gray;"><br /></span><span style="color: Olive;">&lt;</span><span style="color: Green;">param</span><span style="color: Gray;"> </span><span style="color: #00008b;">name</span><span style="color: Gray;">=</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">Appearance</span><span style="color: #8b0000;">&quot;</span><span style="color: Gray;"> </span><span style="color: #00008b;">value</span><span style="color: Gray;">=</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">0</span><span style="color: #8b0000;">&quot;</span><span style="color: Olive;">&gt;</span><span style="color: Gray;"><br /></span><span style="color: Olive;">&lt;</span><span style="color: Green;">param</span><span style="color: Gray;"> </span><span style="color: #00008b;">name</span><span style="color: Gray;">=</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">AutoStart</span><span style="color: #8b0000;">&quot;</span><span style="color: Gray;"> </span><span style="color: #00008b;">value</span><span style="color: Gray;">=</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">-1</span><span style="color: #8b0000;">&quot;</span><span style="color: Olive;">&gt;</span><span style="color: Gray;"><br /></span><span style="color: Olive;">&lt;</span><span style="color: Green;">param</span><span style="color: Gray;"> </span><span style="color: #00008b;">name</span><span style="color: Gray;">=</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">AllowChangeDisplayMode</span><span style="color: #8b0000;">&quot;</span><span style="color: Gray;"> </span><span style="color: #00008b;">value</span><span style="color: Gray;">=</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">-1</span><span style="color: #8b0000;">&quot;</span><span style="color: Olive;">&gt;</span><span style="color: Gray;"><br /></span><span style="color: Olive;">&lt;</span><span style="color: Green;">param</span><span style="color: Gray;"> </span><span style="color: #00008b;">name</span><span style="color: Gray;">=</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">AllowHideDisplay</span><span style="color: #8b0000;">&quot;</span><span style="color: Gray;"> </span><span style="color: #00008b;">value</span><span style="color: Gray;">=</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">0</span><span style="color: #8b0000;">&quot;</span><span style="color: Olive;">&gt;</span><span style="color: Gray;"><br /></span><span style="color: Olive;">&lt;</span><span style="color: Green;">param</span><span style="color: Gray;"> </span><span style="color: #00008b;">name</span><span style="color: Gray;">=</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">AllowHideControls</span><span style="color: #8b0000;">&quot;</span><span style="color: Gray;"> </span><span style="color: #00008b;">value</span><span style="color: Gray;">=</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">-1</span><span style="color: #8b0000;">&quot;</span><span style="color: Olive;">&gt;</span><span style="color: Gray;"><br /></span><span style="color: Olive;">&lt;</span><span style="color: Green;">param</span><span style="color: Gray;"> </span><span style="color: #00008b;">name</span><span style="color: Gray;">=</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">AutoRewind</span><span style="color: #8b0000;">&quot;</span><span style="color: Gray;"> </span><span style="color: #00008b;">value</span><span style="color: Gray;">=</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">-1</span><span style="color: #8b0000;">&quot;</span><span style="color: Olive;">&gt;</span><span style="color: Gray;"><br /></span><span style="color: Olive;">&lt;</span><span style="color: Green;">param</span><span style="color: Gray;"> </span><span style="color: #00008b;">name</span><span style="color: Gray;">=</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">Balance</span><span style="color: #8b0000;">&quot;</span><span style="color: Gray;"> </span><span style="color: #00008b;">value</span><span style="color: Gray;">=</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">0</span><span style="color: #8b0000;">&quot;</span><span style="color: Olive;">&gt;</span><span style="color: Gray;"><br /></span><span style="color: Olive;">&lt;</span><span style="color: Green;">param</span><span style="color: Gray;"> </span><span style="color: #00008b;">name</span><span style="color: Gray;">=</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">CurrentPosition</span><span style="color: #8b0000;">&quot;</span><span style="color: Gray;"> </span><span style="color: #00008b;">value</span><span style="color: Gray;">=</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">0</span><span style="color: #8b0000;">&quot;</span><span style="color: Olive;">&gt;</span><span style="color: Gray;"><br /></span><span style="color: Olive;">&lt;</span><span style="color: Green;">param</span><span style="color: Gray;"> </span><span style="color: #00008b;">name</span><span style="color: Gray;">=</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">DisplayBackColor</span><span style="color: #8b0000;">&quot;</span><span style="color: Gray;"> </span><span style="color: #00008b;">value</span><span style="color: Gray;">=</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">0</span><span style="color: #8b0000;">&quot;</span><span style="color: Olive;">&gt;</span><span style="color: Gray;"><br /></span><span style="color: Olive;">&lt;</span><span style="color: Green;">param</span><span style="color: Gray;"> </span><span style="color: #00008b;">name</span><span style="color: Gray;">=</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">DisplayForeColor</span><span style="color: #8b0000;">&quot;</span><span style="color: Gray;"> </span><span style="color: #00008b;">value</span><span style="color: Gray;">=</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">16777215</span><span style="color: #8b0000;">&quot;</span><span style="color: Olive;">&gt;</span><span style="color: Gray;"><br /></span><span style="color: Olive;">&lt;</span><span style="color: Green;">param</span><span style="color: Gray;"> </span><span style="color: #00008b;">name</span><span style="color: Gray;">=</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">DisplayMode</span><span style="color: #8b0000;">&quot;</span><span style="color: Gray;"> </span><span style="color: #00008b;">value</span><span style="color: Gray;">=</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">0</span><span style="color: #8b0000;">&quot;</span><span style="color: Olive;">&gt;</span><span style="color: Gray;"><br /></span><span style="color: Olive;">&lt;</span><span style="color: Green;">param</span><span style="color: Gray;"> </span><span style="color: #00008b;">name</span><span style="color: Gray;">=</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">Enabled</span><span style="color: #8b0000;">&quot;</span><span style="color: Gray;"> </span><span style="color: #00008b;">value</span><span style="color: Gray;">=</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">-1</span><span style="color: #8b0000;">&quot;</span><span style="color: Olive;">&gt;</span><span style="color: Gray;"><br /></span><span style="color: Olive;">&lt;</span><span style="color: Green;">param</span><span style="color: Gray;"> </span><span style="color: #00008b;">name</span><span style="color: Gray;">=</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">EnableContextMenu</span><span style="color: #8b0000;">&quot;</span><span style="color: Gray;"> </span><span style="color: #00008b;">value</span><span style="color: Gray;">=</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">-1</span><span style="color: #8b0000;">&quot;</span><span style="color: Olive;">&gt;</span><span style="color: Gray;"><br /></span><span style="color: Olive;">&lt;</span><span style="color: Green;">param</span><span style="color: Gray;"> </span><span style="color: #00008b;">name</span><span style="color: Gray;">=</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">EnablePositionControls</span><span style="color: #8b0000;">&quot;</span><span style="color: Gray;"> </span><span style="color: #00008b;">value</span><span style="color: Gray;">=</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">-1</span><span style="color: #8b0000;">&quot;</span><span style="color: Olive;">&gt;</span><span style="color: Gray;"><br /></span><span style="color: Olive;">&lt;</span><span style="color: Green;">param</span><span style="color: Gray;"> </span><span style="color: #00008b;">name</span><span style="color: Gray;">=</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">EnableSelectionControls</span><span style="color: #8b0000;">&quot;</span><span style="color: Gray;"> </span><span style="color: #00008b;">value</span><span style="color: Gray;">=</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">0</span><span style="color: #8b0000;">&quot;</span><span style="color: Olive;">&gt;</span><span style="color: Gray;"><br /></span><span style="color: Olive;">&lt;</span><span style="color: Green;">param</span><span style="color: Gray;"> </span><span style="color: #00008b;">name</span><span style="color: Gray;">=</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">EnableTracker</span><span style="color: #8b0000;">&quot;</span><span style="color: Gray;"> </span><span style="color: #00008b;">value</span><span style="color: Gray;">=</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">-1</span><span style="color: #8b0000;">&quot;</span><span style="color: Olive;">&gt;</span><span style="color: Gray;"><br /></span><span style="color: Olive;">&lt;</span><span style="color: Green;">param</span><span style="color: Gray;"> </span><span style="color: #00008b;">name</span><span style="color: Gray;">=</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">Filename</span><span style="color: #8b0000;">&quot;</span><span style="color: Gray;"> </span><span style="color: #00008b;">value</span><span style="color: Gray;">=</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">/mpeg/halali.mpg</span><span style="color: #8b0000;">&quot;</span><span style="color: Gray;"> </span><span style="color: #00008b;">valuetype</span><span style="color: Gray;">=</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">ref</span><span style="color: #8b0000;">&quot;</span><span style="color: Olive;">&gt;</span><span style="color: Gray;"><br /></span><span style="color: Olive;">&lt;</span><span style="color: Green;">param</span><span style="color: Gray;"> </span><span style="color: #00008b;">name</span><span style="color: Gray;">=</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">FullScreenMode</span><span style="color: #8b0000;">&quot;</span><span style="color: Gray;"> </span><span style="color: #00008b;">value</span><span style="color: Gray;">=</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">0</span><span style="color: #8b0000;">&quot;</span><span style="color: Olive;">&gt;</span><span style="color: Gray;"><br /></span><span style="color: Olive;">&lt;</span><span style="color: Green;">param</span><span style="color: Gray;"> </span><span style="color: #00008b;">name</span><span style="color: Gray;">=</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">MovieWindowSize</span><span style="color: #8b0000;">&quot;</span><span style="color: Gray;"> </span><span style="color: #00008b;">value</span><span style="color: Gray;">=</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">0</span><span style="color: #8b0000;">&quot;</span><span style="color: Olive;">&gt;</span><span style="color: Gray;"><br /></span><span style="color: Olive;">&lt;</span><span style="color: Green;">param</span><span style="color: Gray;"> </span><span style="color: #00008b;">name</span><span style="color: Gray;">=</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">PlayCount</span><span style="color: #8b0000;">&quot;</span><span style="color: Gray;"> </span><span style="color: #00008b;">value</span><span style="color: Gray;">=</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">1</span><span style="color: #8b0000;">&quot;</span><span style="color: Olive;">&gt;</span><span style="color: Gray;"><br /></span><span style="color: Olive;">&lt;</span><span style="color: Green;">param</span><span style="color: Gray;"> </span><span style="color: #00008b;">name</span><span style="color: Gray;">=</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">Rate</span><span style="color: #8b0000;">&quot;</span><span style="color: Gray;"> </span><span style="color: #00008b;">value</span><span style="color: Gray;">=</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">1</span><span style="color: #8b0000;">&quot;</span><span style="color: Olive;">&gt;</span><span style="color: Gray;"><br /></span><span style="color: Olive;">&lt;</span><span style="color: Green;">param</span><span style="color: Gray;"> </span><span style="color: #00008b;">name</span><span style="color: Gray;">=</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">SelectionStart</span><span style="color: #8b0000;">&quot;</span><span style="color: Gray;"> </span><span style="color: #00008b;">value</span><span style="color: Gray;">=</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">-1</span><span style="color: #8b0000;">&quot;</span><span style="color: Olive;">&gt;</span><span style="color: Gray;"><br /></span><span style="color: Olive;">&lt;</span><span style="color: Green;">param</span><span style="color: Gray;"> </span><span style="color: #00008b;">name</span><span style="color: Gray;">=</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">SelectionEnd</span><span style="color: #8b0000;">&quot;</span><span style="color: Gray;"> </span><span style="color: #00008b;">value</span><span style="color: Gray;">=</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">-1</span><span style="color: #8b0000;">&quot;</span><span style="color: Olive;">&gt;</span><span style="color: Gray;"><br /></span><span style="color: Olive;">&lt;</span><span style="color: Green;">param</span><span style="color: Gray;"> </span><span style="color: #00008b;">name</span><span style="color: Gray;">=</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">ShowControls</span><span style="color: #8b0000;">&quot;</span><span style="color: Gray;"> </span><span style="color: #00008b;">value</span><span style="color: Gray;">=</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">-1</span><span style="color: #8b0000;">&quot;</span><span style="color: Olive;">&gt;</span><span style="color: Gray;"><br /></span><span style="color: Olive;">&lt;</span><span style="color: Green;">param</span><span style="color: Gray;"> </span><span style="color: #00008b;">name</span><span style="color: Gray;">=</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">ShowDisplay</span><span style="color: #8b0000;">&quot;</span><span style="color: Gray;"> </span><span style="color: #00008b;">value</span><span style="color: Gray;">=</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">-1</span><span style="color: #8b0000;">&quot;</span><span style="color: Olive;">&gt;</span><span style="color: Gray;"><br /></span><span style="color: Olive;">&lt;</span><span style="color: Green;">param</span><span style="color: Gray;"> </span><span style="color: #00008b;">name</span><span style="color: Gray;">=</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">ShowPositionControls</span><span style="color: #8b0000;">&quot;</span><span style="color: Gray;"> </span><span style="color: #00008b;">value</span><span style="color: Gray;">=</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">0</span><span style="color: #8b0000;">&quot;</span><span style="color: Olive;">&gt;</span><span style="color: Gray;"><br /></span><span style="color: Olive;">&lt;</span><span style="color: Green;">param</span><span style="color: Gray;"> </span><span style="color: #00008b;">name</span><span style="color: Gray;">=</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">ShowTracker</span><span style="color: #8b0000;">&quot;</span><span style="color: Gray;"> </span><span style="color: #00008b;">value</span><span style="color: Gray;">=</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">-1</span><span style="color: #8b0000;">&quot;</span><span style="color: Olive;">&gt;</span><span style="color: Gray;"><br /></span><span style="color: Olive;">&lt;</span><span style="color: Green;">param</span><span style="color: Gray;"> </span><span style="color: #00008b;">name</span><span style="color: Gray;">=</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">Volume</span><span style="color: #8b0000;">&quot;</span><span style="color: Gray;"> </span><span style="color: #00008b;">value</span><span style="color: Gray;">=</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">-480</span><span style="color: #8b0000;">&quot;</span><span style="color: Olive;">&gt;</span><span style="color: Gray;"><br /></span><span style="color: Olive;">&lt;/</span><span style="color: Green;">object</span><span style="color: Olive;">&gt;</span></div></div>
<p>3.smi格式</p>
<p>代码片断如下：</p>
<div class="hl-surround"><div class="hl-main"><span style="color: Olive;">&lt;</span><span style="color: Green;">OBJECT</span><span style="color: Gray;"> </span><span style="color: #00008b;">id</span><span style="color: Gray;">=</span><span style="color: #00008b;">RVOCX</span><span style="color: Gray;"> </span><span style="color: #00008b;">classid</span><span style="color: Gray;">=</span><span style="color: #00008b;">clsid:CFCDAA03-8BE4-11cf-B84B-0020AFBBCCFA</span><span style="color: Gray;"> </span><span style="color: #00008b;">width</span><span style="color: Gray;">=</span><span style="color: #00008b;">240</span><span style="color: Gray;"> </span><span style="color: #00008b;">height</span><span style="color: Gray;">=</span><span style="color: #00008b;">180</span><span style="color: Olive;">&gt;</span><span style="color: Gray;"><br /></span><span style="color: Olive;">&lt;</span><span style="color: Green;">param</span><span style="color: Gray;"> </span><span style="color: #00008b;">name</span><span style="color: Gray;">=</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">_ExtentX</span><span style="color: #8b0000;">&quot;</span><span style="color: Gray;"> </span><span style="color: #00008b;">value</span><span style="color: Gray;">=</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">6350</span><span style="color: #8b0000;">&quot;</span><span style="color: Olive;">&gt;</span><span style="color: Gray;"><br /></span><span style="color: Olive;">&lt;</span><span style="color: Green;">param</span><span style="color: Gray;"> </span><span style="color: #00008b;">name</span><span style="color: Gray;">=</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">_ExtentY</span><span style="color: #8b0000;">&quot;</span><span style="color: Gray;"> </span><span style="color: #00008b;">value</span><span style="color: Gray;">=</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">4763</span><span style="color: #8b0000;">&quot;</span><span style="color: Olive;">&gt;</span><span style="color: Gray;"><br /></span><span style="color: Olive;">&lt;</span><span style="color: Green;">param</span><span style="color: Gray;"> </span><span style="color: #00008b;">name</span><span style="color: Gray;">=</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">AUTOSTART</span><span style="color: #8b0000;">&quot;</span><span style="color: Gray;"> </span><span style="color: #00008b;">value</span><span style="color: Gray;">=</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">-1</span><span style="color: #8b0000;">&quot;</span><span style="color: Olive;">&gt;</span><span style="color: Gray;"><br /></span><span style="color: Olive;">&lt;</span><span style="color: Green;">param</span><span style="color: Gray;"> </span><span style="color: #00008b;">name</span><span style="color: Gray;">=</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">SHUFFLE</span><span style="color: #8b0000;">&quot;</span><span style="color: Gray;"> </span><span style="color: #00008b;">value</span><span style="color: Gray;">=</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">0</span><span style="color: #8b0000;">&quot;</span><span style="color: Olive;">&gt;</span><span style="color: Gray;"><br /></span><span style="color: Olive;">&lt;</span><span style="color: Green;">param</span><span style="color: Gray;"> </span><span style="color: #00008b;">name</span><span style="color: Gray;">=</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">PREFETCH</span><span style="color: #8b0000;">&quot;</span><span style="color: Gray;"> </span><span style="color: #00008b;">value</span><span style="color: Gray;">=</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">0</span><span style="color: #8b0000;">&quot;</span><span style="color: Olive;">&gt;</span><span style="color: Gray;"><br /></span><span style="color: Olive;">&lt;</span><span style="color: Green;">param</span><span style="color: Gray;"> </span><span style="color: #00008b;">name</span><span style="color: Gray;">=</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">NOLABELS</span><span style="color: #8b0000;">&quot;</span><span style="color: Gray;"> </span><span style="color: #00008b;">value</span><span style="color: Gray;">=</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">-1</span><span style="color: #8b0000;">&quot;</span><span style="color: Olive;">&gt;</span><span style="color: Gray;"><br /></span><span style="color: Olive;">&lt;</span><span style="color: Green;">param</span><span style="color: Gray;"> </span><span style="color: #00008b;">name</span><span style="color: Gray;">=</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">SRC</span><span style="color: #8b0000;">&quot;</span><span style="color: Gray;"> </span><span style="color: #00008b;">value</span><span style="color: Gray;">=</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">rm.rm</span><span style="color: #8b0000;">&quot;</span><span style="color: Olive;">&gt;</span><span style="color: Gray;"><br /></span><span style="color: Olive;">&lt;</span><span style="color: Green;">param</span><span style="color: Gray;"> </span><span style="color: #00008b;">name</span><span style="color: Gray;">=</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">CONTROLS</span><span style="color: #8b0000;">&quot;</span><span style="color: Gray;"> </span><span style="color: #00008b;">value</span><span style="color: Gray;">=</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">ImageWindow</span><span style="color: #8b0000;">&quot;</span><span style="color: Olive;">&gt;</span><span style="color: Gray;"><br /></span><span style="color: Olive;">&lt;</span><span style="color: Green;">param</span><span style="color: Gray;"> </span><span style="color: #00008b;">name</span><span style="color: Gray;">=</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">CONSOLE</span><span style="color: #8b0000;">&quot;</span><span style="color: Gray;"> </span><span style="color: #00008b;">value</span><span style="color: Gray;">=</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">console1</span><span style="color: #8b0000;">&quot;</span><span style="color: Olive;">&gt;</span><span style="color: Gray;"><br /></span><span style="color: Olive;">&lt;</span><span style="color: Green;">param</span><span style="color: Gray;"> </span><span style="color: #00008b;">name</span><span style="color: Gray;">=</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">LOOP</span><span style="color: #8b0000;">&quot;</span><span style="color: Gray;"> </span><span style="color: #00008b;">value</span><span style="color: Gray;">=</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">0</span><span style="color: #8b0000;">&quot;</span><span style="color: Olive;">&gt;</span><span style="color: Gray;"><br /></span><span style="color: Olive;">&lt;</span><span style="color: Green;">param</span><span style="color: Gray;"> </span><span style="color: #00008b;">name</span><span style="color: Gray;">=</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">NUMLOOP</span><span style="color: #8b0000;">&quot;</span><span style="color: Gray;"> </span><span style="color: #00008b;">value</span><span style="color: Gray;">=</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">0</span><span style="color: #8b0000;">&quot;</span><span style="color: Olive;">&gt;</span><span style="color: Gray;"><br /></span><span style="color: Olive;">&lt;</span><span style="color: Green;">param</span><span style="color: Gray;"> </span><span style="color: #00008b;">name</span><span style="color: Gray;">=</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">CENTER</span><span style="color: #8b0000;">&quot;</span><span style="color: Gray;"> </span><span style="color: #00008b;">value</span><span style="color: Gray;">=</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">0</span><span style="color: #8b0000;">&quot;</span><span style="color: Olive;">&gt;</span><span style="color: Gray;"><br /></span><span style="color: Olive;">&lt;</span><span style="color: Green;">param</span><span style="color: Gray;"> </span><span style="color: #00008b;">name</span><span style="color: Gray;">=</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">MAINTAINASPECT</span><span style="color: #8b0000;">&quot;</span><span style="color: Gray;"> </span><span style="color: #00008b;">value</span><span style="color: Gray;">=</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">0</span><span style="color: #8b0000;">&quot;</span><span style="color: Olive;">&gt;</span><span style="color: Gray;"><br /></span><span style="color: Olive;">&lt;</span><span style="color: Green;">param</span><span style="color: Gray;"> </span><span style="color: #00008b;">name</span><span style="color: Gray;">=</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">BACKGROUNDCOLOR</span><span style="color: #8b0000;">&quot;</span><span style="color: Gray;"> </span><span style="color: #00008b;">value</span><span style="color: Gray;">=</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">#000000</span><span style="color: #8b0000;">&quot;</span><span style="color: Olive;">&gt;&lt;</span><span style="color: Green;">embed</span><span style="color: Gray;"> </span><span style="color: #00008b;">src</span><span style="color: Gray;">=</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">real.smi</span><span style="color: #8b0000;">&quot;</span><span style="color: Gray;"> </span><span style="color: #00008b;">type</span><span style="color: Gray;">=</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">audio/x-pn-realaudio-plugin</span><span style="color: #8b0000;">&quot;</span><span style="color: Gray;"> </span><span style="color: #00008b;">console</span><span style="color: Gray;">=</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">Console1</span><span style="color: #8b0000;">&quot;</span><span style="color: Gray;"> </span><span style="color: #00008b;">controls</span><span style="color: Gray;">=</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">ImageWindow</span><span style="color: #8b0000;">&quot;</span><span style="color: Gray;"> </span><span style="color: #00008b;">height</span><span style="color: Gray;">=</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">180</span><span style="color: #8b0000;">&quot;</span><span style="color: Gray;"> </span><span style="color: #00008b;">width</span><span style="color: Gray;">=</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">240</span><span style="color: #8b0000;">&quot;</span><span style="color: Gray;"> </span><span style="color: #00008b;">autostart</span><span style="color: Gray;">=</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">true</span><span style="color: #8b0000;">&quot;</span><span style="color: Olive;">&gt;&lt;/</span><span style="color: Green;">OBJECT</span><span style="color: Olive;">&gt;</span></div></div>
<p>4.rm格式</p>
<p>代码片断如下：</p>
<div class="hl-surround"><div class="hl-main"><span style="color: Olive;">&lt;</span><span style="color: Green;">OBJECT</span><span style="color: Gray;"> </span><span style="color: #00008b;">ID</span><span style="color: Gray;">=</span><span style="color: #00008b;">video1</span><span style="color: Gray;"> </span><span style="color: #00008b;">CLASSID</span><span style="color: Gray;">=</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">clsid:CFCDAA03-8BE4-11cf-B84B-0020AFBBCCFA</span><span style="color: #8b0000;">&quot;</span><span style="color: Gray;"> </span><span style="color: #00008b;">HEIGHT</span><span style="color: Gray;">=</span><span style="color: #00008b;">288</span><span style="color: Gray;"> </span><span style="color: #00008b;">WIDTH</span><span style="color: Gray;">=</span><span style="color: #00008b;">352</span><span style="color: Olive;">&gt;</span><span style="color: Gray;"><br /></span><span style="color: Olive;">&lt;</span><span style="color: Green;">param</span><span style="color: Gray;"> </span><span style="color: #00008b;">name</span><span style="color: Gray;">=</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">_ExtentX</span><span style="color: #8b0000;">&quot;</span><span style="color: Gray;"> </span><span style="color: #00008b;">value</span><span style="color: Gray;">=</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">9313</span><span style="color: #8b0000;">&quot;</span><span style="color: Olive;">&gt;</span><span style="color: Gray;"><br /></span><span style="color: Olive;">&lt;</span><span style="color: Green;">param</span><span style="color: Gray;"> </span><span style="color: #00008b;">name</span><span style="color: Gray;">=</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">_ExtentY</span><span style="color: #8b0000;">&quot;</span><span style="color: Gray;"> </span><span style="color: #00008b;">value</span><span style="color: Gray;">=</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">7620</span><span style="color: #8b0000;">&quot;</span><span style="color: Olive;">&gt;</span><span style="color: Gray;"><br /></span><span style="color: Olive;">&lt;</span><span style="color: Green;">param</span><span style="color: Gray;"> </span><span style="color: #00008b;">name</span><span style="color: Gray;">=</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">AUTOSTART</span><span style="color: #8b0000;">&quot;</span><span style="color: Gray;"> </span><span style="color: #00008b;">value</span><span style="color: Gray;">=</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">0</span><span style="color: #8b0000;">&quot;</span><span style="color: Olive;">&gt;</span><span style="color: Gray;"><br /></span><span style="color: Olive;">&lt;</span><span style="color: Green;">param</span><span style="color: Gray;"> </span><span style="color: #00008b;">name</span><span style="color: Gray;">=</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">SHUFFLE</span><span style="color: #8b0000;">&quot;</span><span style="color: Gray;"> </span><span style="color: #00008b;">value</span><span style="color: Gray;">=</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">0</span><span style="color: #8b0000;">&quot;</span><span style="color: Olive;">&gt;</span><span style="color: Gray;"><br /></span><span style="color: Olive;">&lt;</span><span style="color: Green;">param</span><span style="color: Gray;"> </span><span style="color: #00008b;">name</span><span style="color: Gray;">=</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">PREFETCH</span><span style="color: #8b0000;">&quot;</span><span style="color: Gray;"> </span><span style="color: #00008b;">value</span><span style="color: Gray;">=</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">0</span><span style="color: #8b0000;">&quot;</span><span style="color: Olive;">&gt;</span><span style="color: Gray;"><br /></span><span style="color: Olive;">&lt;</span><span style="color: Green;">param</span><span style="color: Gray;"> </span><span style="color: #00008b;">name</span><span style="color: Gray;">=</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">NOLABELS</span><span style="color: #8b0000;">&quot;</span><span style="color: Gray;"> </span><span style="color: #00008b;">value</span><span style="color: Gray;">=</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">0</span><span style="color: #8b0000;">&quot;</span><span style="color: Olive;">&gt;</span><span style="color: Gray;"><br /></span><span style="color: Olive;">&lt;</span><span style="color: Green;">param</span><span style="color: Gray;"> </span><span style="color: #00008b;">name</span><span style="color: Gray;">=</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">SRC</span><span style="color: #8b0000;">&quot;</span><span style="color: Gray;"> </span><span style="color: #00008b;">value</span><span style="color: Gray;">=</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">rtsp://203.*.*.35/vod/dawan-a.rm</span><span style="color: #8b0000;">&quot;</span><span style="color: Olive;">&gt;</span><span style="color: Gray;"><br /></span><span style="color: Olive;">&lt;</span><span style="color: Green;">param</span><span style="color: Gray;"> </span><span style="color: #00008b;">name</span><span style="color: Gray;">=</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">CONTROLS</span><span style="color: #8b0000;">&quot;</span><span style="color: Gray;"> </span><span style="color: #00008b;">value</span><span style="color: Gray;">=</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">ImageWindow</span><span style="color: #8b0000;">&quot;</span><span style="color: Olive;">&gt;</span><span style="color: Gray;"><br /></span><span style="color: Olive;">&lt;</span><span style="color: Green;">param</span><span style="color: Gray;"> </span><span style="color: #00008b;">name</span><span style="color: Gray;">=</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">CONSOLE</span><span style="color: #8b0000;">&quot;</span><span style="color: Gray;"> </span><span style="color: #00008b;">value</span><span style="color: Gray;">=</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">Clip1</span><span style="color: #8b0000;">&quot;</span><span style="color: Olive;">&gt;</span><span style="color: Gray;"><br /></span><span style="color: Olive;">&lt;</span><span style="color: Green;">param</span><span style="color: Gray;"> </span><span style="color: #00008b;">name</span><span style="color: Gray;">=</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">LOOP</span><span style="color: #8b0000;">&quot;</span><span style="color: Gray;"> </span><span style="color: #00008b;">value</span><span style="color: Gray;">=</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">0</span><span style="color: #8b0000;">&quot;</span><span style="color: Olive;">&gt;</span><span style="color: Gray;"><br /></span><span style="color: Olive;">&lt;</span><span style="color: Green;">param</span><span style="color: Gray;"> </span><span style="color: #00008b;">name</span><span style="color: Gray;">=</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">NUMLOOP</span><span style="color: #8b0000;">&quot;</span><span style="color: Gray;"> </span><span style="color: #00008b;">value</span><span style="color: Gray;">=</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">0</span><span style="color: #8b0000;">&quot;</span><span style="color: Olive;">&gt;</span><span style="color: Gray;"><br /></span><span style="color: Olive;">&lt;</span><span style="color: Green;">param</span><span style="color: Gray;"> </span><span style="color: #00008b;">name</span><span style="color: Gray;">=</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">CENTER</span><span style="color: #8b0000;">&quot;</span><span style="color: Gray;"> </span><span style="color: #00008b;">value</span><span style="color: Gray;">=</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">0</span><span style="color: #8b0000;">&quot;</span><span style="color: Olive;">&gt;</span><span style="color: Gray;"><br /></span><span style="color: Olive;">&lt;</span><span style="color: Green;">param</span><span style="color: Gray;"> </span><span style="color: #00008b;">name</span><span style="color: Gray;">=</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">MAINTAINASPECT</span><span style="color: #8b0000;">&quot;</span><span style="color: Gray;"> </span><span style="color: #00008b;">value</span><span style="color: Gray;">=</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">0</span><span style="color: #8b0000;">&quot;</span><span style="color: Olive;">&gt;</span><span style="color: Gray;"><br /></span><span style="color: Olive;">&lt;</span><span style="color: Green;">param</span><span style="color: Gray;"> </span><span style="color: #00008b;">name</span><span style="color: Gray;">=</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">BACKGROUNDCOLOR</span><span style="color: #8b0000;">&quot;</span><span style="color: Gray;"> </span><span style="color: #00008b;">value</span><span style="color: Gray;">=</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">#000000</span><span style="color: #8b0000;">&quot;</span><span style="color: Olive;">&gt;&lt;</span><span style="color: Green;">embed</span><span style="color: Gray;"> </span><span style="color: #00008b;">SRC</span><span style="color: Gray;"> </span><span style="color: #00008b;">type</span><span style="color: Gray;">=</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">audio/x-pn-realaudio-plugin</span><span style="color: #8b0000;">&quot;</span><span style="color: Gray;"> </span><span style="color: #00008b;">CONSOLE</span><span style="color: Gray;">=</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">Clip1</span><span style="color: #8b0000;">&quot;</span><span style="color: Gray;"> </span><span style="color: #00008b;">CONTROLS</span><span style="color: Gray;">=</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">ImageWindow</span><span style="color: #8b0000;">&quot;</span><span style="color: Gray;"> </span><span style="color: #00008b;">HEIGHT</span><span style="color: Gray;">=</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">288</span><span style="color: #8b0000;">&quot;</span><span style="color: Gray;"> </span><span style="color: #00008b;">WIDTH</span><span style="color: Gray;">=</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">352</span><span style="color: #8b0000;">&quot;</span><span style="color: Gray;"> </span><span style="color: #00008b;">AUTOSTART</span><span style="color: Gray;">=</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">false</span><span style="color: #8b0000;">&quot;</span><span style="color: Olive;">&gt;</span><span style="color: Gray;"><br /></span><span style="color: Olive;">&lt;/</span><span style="color: Green;">OBJECT</span><span style="color: Olive;">&gt;</span></div></div>
<p>5.wmv格式</p>
<p>代码片断如下：</p>
<div class="hl-surround"><div class="hl-main"><span style="color: Olive;">&lt;</span><span style="color: Green;">object</span><span style="color: Gray;"> </span><span style="color: #00008b;">id</span><span style="color: Gray;">=</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">NSPlay</span><span style="color: #8b0000;">&quot;</span><span style="color: Gray;"> </span><span style="color: #00008b;">width</span><span style="color: Gray;">=</span><span style="color: #00008b;">200</span><span style="color: Gray;"> </span><span style="color: #00008b;">height</span><span style="color: Gray;">=</span><span style="color: #00008b;">180</span><span style="color: Gray;"> </span><span style="color: #00008b;">classid</span><span style="color: Gray;">=</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">CLSID:22d6f312-b0f6-11d0-94ab-0080c74c7e95</span><span style="color: #8b0000;">&quot;</span><span style="color: Gray;"> </span><span style="color: #00008b;">codebase</span><span style="color: Gray;">=</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">http://activex.microsoft.com/activex/controls/mplayer/en<br />/nsmp2inf.cab#Version=6,4,5,715</span><span style="color: #8b0000;">&quot;</span><span style="color: Gray;"> </span><span style="color: #00008b;">standby</span><span style="color: Gray;">=</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">Loading Microsoft Windows Media Player components...</span><span style="color: #8b0000;">&quot;</span><span style="color: Gray;"> </span><span style="color: #00008b;">type</span><span style="color: Gray;">=</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">application/x-oleobject</span><span style="color: #8b0000;">&quot;</span><span style="color: Gray;"> </span><span style="color: #00008b;">align</span><span style="color: Gray;">=</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">right</span><span style="color: #8b0000;">&quot;</span><span style="color: Gray;"> </span><span style="color: #00008b;">hspace</span><span style="color: Gray;">=</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">5</span><span style="color: #8b0000;">&quot;</span><span style="color: Olive;">&gt;</span><span style="color: Gray;"><br /></span><span style="color: Olive;">&lt;</span><span style="color: Green;">param</span><span style="color: Gray;"> </span><span style="color: #00008b;">name</span><span style="color: Gray;">=</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">AutoRewind</span><span style="color: #8b0000;">&quot;</span><span style="color: Gray;"> </span><span style="color: #00008b;">value</span><span style="color: Gray;">=</span><span style="color: #00008b;">1</span><span style="color: Olive;">&gt;</span><span style="color: Gray;"><br /></span><span style="color: Olive;">&lt;</span><span style="color: Green;">param</span><span style="color: Gray;"> </span><span style="color: #00008b;">name</span><span style="color: Gray;">=</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">FileName</span><span style="color: #8b0000;">&quot;</span><span style="color: Gray;"> </span><span style="color: #00008b;">value</span><span style="color: Gray;">=</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">/blog/******.wmv</span><span style="color: #8b0000;">&quot;</span><span style="color: Olive;">&gt;</span><span style="color: Gray;"><br /></span><span style="color: Olive;">&lt;</span><span style="color: Green;">param</span><span style="color: Gray;"> </span><span style="color: #00008b;">name</span><span style="color: Gray;">=</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">ShowControls</span><span style="color: #8b0000;">&quot;</span><span style="color: Gray;"> </span><span style="color: #00008b;">value</span><span style="color: Gray;">=</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">1</span><span style="color: #8b0000;">&quot;</span><span style="color: Olive;">&gt;</span><span style="color: Gray;"><br /></span><span style="color: Olive;">&lt;</span><span style="color: Green;">param</span><span style="color: Gray;"> </span><span style="color: #00008b;">name</span><span style="color: Gray;">=</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">ShowPositionControls</span><span style="color: #8b0000;">&quot;</span><span style="color: Gray;"> </span><span style="color: #00008b;">value</span><span style="color: Gray;">=</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">0</span><span style="color: #8b0000;">&quot;</span><span style="color: Olive;">&gt;</span><span style="color: Gray;"><br /></span><span style="color: Olive;">&lt;</span><span style="color: Green;">param</span><span style="color: Gray;"> </span><span style="color: #00008b;">name</span><span style="color: Gray;">=</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">ShowAudioControls</span><span style="color: #8b0000;">&quot;</span><span style="color: Gray;"> </span><span style="color: #00008b;">value</span><span style="color: Gray;">=</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">1</span><span style="color: #8b0000;">&quot;</span><span style="color: Olive;">&gt;</span><span style="color: Gray;"><br /></span><span style="color: Olive;">&lt;</span><span style="color: Green;">param</span><span style="color: Gray;"> </span><span style="color: #00008b;">name</span><span style="color: Gray;">=</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">ShowTracker</span><span style="color: #8b0000;">&quot;</span><span style="color: Gray;"> </span><span style="color: #00008b;">value</span><span style="color: Gray;">=</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">0</span><span style="color: #8b0000;">&quot;</span><span style="color: Olive;">&gt;</span><span style="color: Gray;"><br /></span><span style="color: Olive;">&lt;</span><span style="color: Green;">param</span><span style="color: Gray;"> </span><span style="color: #00008b;">name</span><span style="color: Gray;">=</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">ShowDisplay</span><span style="color: #8b0000;">&quot;</span><span style="color: Gray;"> </span><span style="color: #00008b;">value</span><span style="color: Gray;">=</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">0</span><span style="color: #8b0000;">&quot;</span><span style="color: Olive;">&gt;</span><span style="color: Gray;"><br /></span><span style="color: Olive;">&lt;</span><span style="color: Green;">param</span><span style="color: Gray;"> </span><span style="color: #00008b;">name</span><span style="color: Gray;">=</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">ShowStatusBar</span><span style="color: #8b0000;">&quot;</span><span style="color: Gray;"> </span><span style="color: #00008b;">value</span><span style="color: Gray;">=</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">0</span><span style="color: #8b0000;">&quot;</span><span style="color: Olive;">&gt;</span><span style="color: Gray;"><br /></span><span style="color: Olive;">&lt;</span><span style="color: Green;">param</span><span style="color: Gray;"> </span><span style="color: #00008b;">name</span><span style="color: Gray;">=</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">ShowGotoBar</span><span style="color: #8b0000;">&quot;</span><span style="color: Gray;"> </span><span style="color: #00008b;">value</span><span style="color: Gray;">=</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">0</span><span style="color: #8b0000;">&quot;</span><span style="color: Olive;">&gt;</span><span style="color: Gray;"><br /></span><span style="color: Olive;">&lt;</span><span style="color: Green;">param</span><span style="color: Gray;"> </span><span style="color: #00008b;">name</span><span style="color: Gray;">=</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">ShowCaptioning</span><span style="color: #8b0000;">&quot;</span><span style="color: Gray;"> </span><span style="color: #00008b;">value</span><span style="color: Gray;">=</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">0</span><span style="color: #8b0000;">&quot;</span><span style="color: Olive;">&gt;</span><span style="color: Gray;"><br /></span><span style="color: Olive;">&lt;</span><span style="color: Green;">param</span><span style="color: Gray;"> </span><span style="color: #00008b;">name</span><span style="color: Gray;">=</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">AutoStart</span><span style="color: #8b0000;">&quot;</span><span style="color: Gray;"> </span><span style="color: #00008b;">value</span><span style="color: Gray;">=</span><span style="color: #00008b;">1</span><span style="color: Olive;">&gt;</span><span style="color: Gray;"><br /></span><span style="color: Olive;">&lt;</span><span style="color: Green;">param</span><span style="color: Gray;"> </span><span style="color: #00008b;">name</span><span style="color: Gray;">=</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">Volume</span><span style="color: #8b0000;">&quot;</span><span style="color: Gray;"> </span><span style="color: #00008b;">value</span><span style="color: Gray;">=</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">-2500</span><span style="color: #8b0000;">&quot;</span><span style="color: Olive;">&gt;</span><span style="color: Gray;"><br /></span><span style="color: Olive;">&lt;</span><span style="color: Green;">param</span><span style="color: Gray;"> </span><span style="color: #00008b;">name</span><span style="color: Gray;">=</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">AnimationAtStart</span><span style="color: #8b0000;">&quot;</span><span style="color: Gray;"> </span><span style="color: #00008b;">value</span><span style="color: Gray;">=</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">0</span><span style="color: #8b0000;">&quot;</span><span style="color: Olive;">&gt;</span><span style="color: Gray;"><br /></span><span style="color: Olive;">&lt;</span><span style="color: Green;">param</span><span style="color: Gray;"> </span><span style="color: #00008b;">name</span><span style="color: Gray;">=</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">TransparentAtStart</span><span style="color: #8b0000;">&quot;</span><span style="color: Gray;"> </span><span style="color: #00008b;">value</span><span style="color: Gray;">=</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">0</span><span style="color: #8b0000;">&quot;</span><span style="color: Olive;">&gt;</span><span style="color: Gray;"><br /></span><span style="color: Olive;">&lt;</span><span style="color: Green;">param</span><span style="color: Gray;"> </span><span style="color: #00008b;">name</span><span style="color: Gray;">=</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">AllowChangeDisplaySize</span><span style="color: #8b0000;">&quot;</span><span style="color: Gray;"> </span><span style="color: #00008b;">value</span><span style="color: Gray;">=</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">0</span><span style="color: #8b0000;">&quot;</span><span style="color: Olive;">&gt;</span><span style="color: Gray;"><br /></span><span style="color: Olive;">&lt;</span><span style="color: Green;">param</span><span style="color: Gray;"> </span><span style="color: #00008b;">name</span><span style="color: Gray;">=</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">AllowScan</span><span style="color: #8b0000;">&quot;</span><span style="color: Gray;"> </span><span style="color: #00008b;">value</span><span style="color: Gray;">=</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">0</span><span style="color: #8b0000;">&quot;</span><span style="color: Olive;">&gt;</span><span style="color: Gray;"><br /></span><span style="color: Olive;">&lt;</span><span style="color: Green;">param</span><span style="color: Gray;"> </span><span style="color: #00008b;">name</span><span style="color: Gray;">=</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">EnableContextMenu</span><span style="color: #8b0000;">&quot;</span><span style="color: Gray;"> </span><span style="color: #00008b;">value</span><span style="color: Gray;">=</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">0</span><span style="color: #8b0000;">&quot;</span><span style="color: Olive;">&gt;</span><span style="color: Gray;"><br /></span><span style="color: Olive;">&lt;</span><span style="color: Green;">param</span><span style="color: Gray;"> </span><span style="color: #00008b;">name</span><span style="color: Gray;">=</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">ClickToPlay</span><span style="color: #8b0000;">&quot;</span><span style="color: Gray;"> </span><span style="color: #00008b;">value</span><span style="color: Gray;">=</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">0</span><span style="color: #8b0000;">&quot;</span><span style="color: Olive;">&gt;</span><span style="color: Gray;"><br /></span><span style="color: Olive;">&lt;/</span><span style="color: Green;">object</span><span style="color: Olive;">&gt;</span></div></div>
<p>6.wma格式</p>
<p>放在 <body> 里面。下面是部分解释:</p>
<div class="hl-surround"><div class="hl-main"><span style="color: Olive;">&lt;</span><span style="color: Green;">object</span><span style="color: Gray;"> </span><span style="color: #00008b;">classid</span><span style="color: Gray;">=</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">clsid:22D6F312-B0F6-11D0-94AB-0080C74C7E95</span><span style="color: #8b0000;">&quot;</span><span style="color: Gray;"> </span><span style="color: #00008b;">id</span><span style="color: Gray;">=</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">MediaPlayer1</span><span style="color: #8b0000;">&quot;</span><span style="color: Gray;"> </span><span style="color: Olive;">&gt;</span><span style="color: Gray;"> </span><span style="color: Olive;">&lt;</span><span style="color: Green;">param</span><span style="color: Gray;"> </span><span style="color: #00008b;">name</span><span style="color: Gray;">=</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">Filename</span><span style="color: #8b0000;">&quot;</span><span style="color: Gray;"> </span><span style="color: #00008b;">value</span><span style="color: Gray;">=</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">/blog/1.Wma</span><span style="color: #8b0000;">&quot;</span><span style="color: Olive;">&gt;</span><span style="color: #ffa500;">&lt;!--你文件的位置--&gt;</span><span style="color: Gray;"><br /></span><span style="color: Olive;">&lt;</span><span style="color: Green;">param</span><span style="color: Gray;"> </span><span style="color: #00008b;">name</span><span style="color: Gray;">=</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">PlayCount</span><span style="color: #8b0000;">&quot;</span><span style="color: Gray;"> </span><span style="color: #00008b;">value</span><span style="color: Gray;">=</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">1</span><span style="color: #8b0000;">&quot;</span><span style="color: Olive;">&gt;</span><span style="color: #ffa500;">&lt;!--控制重复次数: “x”为几重复播放几次; x=0，无限循环。--&gt;</span><span style="color: Gray;"> <br /></span><span style="color: Olive;">&lt;</span><span style="color: Green;">param</span><span style="color: Gray;"> </span><span style="color: #00008b;">name</span><span style="color: Gray;">=</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">AutoStart</span><span style="color: #8b0000;">&quot;</span><span style="color: Gray;"> </span><span style="color: #00008b;">value</span><span style="color: Gray;">=</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">0</span><span style="color: #8b0000;">&quot;</span><span style="color: Olive;">&gt;</span><span style="color: #ffa500;">&lt;!--控制播放方式: x=1，打开网页自动播放; x=0，按播放键播放。--&gt;</span><span style="color: Gray;"> <br /></span><span style="color: Olive;">&lt;</span><span style="color: Green;">param</span><span style="color: Gray;"> </span><span style="color: #00008b;">name</span><span style="color: Gray;">=</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">ClickToPlay</span><span style="color: #8b0000;">&quot;</span><span style="color: Gray;"> </span><span style="color: #00008b;">value</span><span style="color: Gray;">=</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">1</span><span style="color: #8b0000;">&quot;</span><span style="color: Olive;">&gt;</span><span style="color: #ffa500;">&lt;!--控制播放开关: x=1，可鼠标点击控制播放或暂停状态; x=0，禁用此功能。--&gt;</span><span style="color: Gray;"><br /></span><span style="color: Olive;">&lt;</span><span style="color: Green;">param</span><span style="color: Gray;"> </span><span style="color: #00008b;">name</span><span style="color: Gray;">=</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">DisplaySize</span><span style="color: #8b0000;">&quot;</span><span style="color: Gray;"> </span><span style="color: #00008b;">value</span><span style="color: Gray;">=</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">0</span><span style="color: #8b0000;">&quot;</span><span style="color: Olive;">&gt;</span><span style="color: #ffa500;">&lt;!--控制播放画面: x=0，原始大小; x=1，一半大小; x=2，2倍大小。--&gt;</span><span style="color: Gray;"> <br /></span><span style="color: Olive;">&lt;</span><span style="color: Green;">param</span><span style="color: Gray;"> </span><span style="color: #00008b;">name</span><span style="color: Gray;">=</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">EnableFullScreen Controls</span><span style="color: #8b0000;">&quot;</span><span style="color: Gray;"> </span><span style="color: #00008b;">value</span><span style="color: Gray;">=</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">1</span><span style="color: #8b0000;">&quot;</span><span style="color: Olive;">&gt;</span><span style="color: #ffa500;">&lt;!--控制切换全屏: x=1，允许切换为全屏; x=0，禁用此功能。--&gt;</span><span style="color: Gray;"> <br /></span><span style="color: Olive;">&lt;</span><span style="color: Green;">param</span><span style="color: Gray;"> </span><span style="color: #00008b;">name</span><span style="color: Gray;">=</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">ShowAudio Controls</span><span style="color: #8b0000;">&quot;</span><span style="color: Gray;"> </span><span style="color: #00008b;">value</span><span style="color: Gray;">=</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">1</span><span style="color: #8b0000;">&quot;</span><span style="color: Olive;">&gt;</span><span style="color: #ffa500;">&lt;!--控制音量: x=1，允许调节音量; x=0，禁止音量调节。--&gt;</span><span style="color: Gray;"><br /></span><span style="color: Olive;">&lt;</span><span style="color: Green;">param</span><span style="color: Gray;"> </span><span style="color: #00008b;">name</span><span style="color: Gray;">=</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">EnableContext Menu</span><span style="color: #8b0000;">&quot;</span><span style="color: Gray;"> </span><span style="color: #00008b;">value</span><span style="color: Gray;">=</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">1</span><span style="color: #8b0000;">&quot;</span><span style="color: Olive;">&gt;</span><span style="color: #ffa500;">&lt;!--控制快捷菜单: x=1，允许使用右键菜单; x=0，禁用右键菜单。--&gt;</span><span style="color: Gray;"> <br /></span><span style="color: Olive;">&lt;</span><span style="color: Green;">param</span><span style="color: Gray;"> </span><span style="color: #00008b;">name</span><span style="color: Gray;">=</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">ShowDisplay</span><span style="color: #8b0000;">&quot;</span><span style="color: Gray;"> </span><span style="color: #00008b;">value</span><span style="color: Gray;">=</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">1</span><span style="color: #8b0000;">&quot;</span><span style="color: Olive;">&gt;</span><span style="color: #ffa500;">&lt;!--控制版权信息: x=1，显示电影及作者信息;x=0，不显示相关信息--&gt;</span><span style="color: Gray;"><br /></span><span style="color: Olive;">&lt;/</span><span style="color: Green;">object</span><span style="color: Olive;">&gt;</span></div></div>
<p>7.Windows Media Player 系列(不同面板样式)</p>
<p>综合型：</p>
<div class="hl-surround"><div class="hl-main"><span style="color: Olive;">&lt;</span><span style="color: Green;">object</span><span style="color: Gray;"> </span><span style="color: #00008b;">classid</span><span style="color: Gray;">=</span><span style="color: #00008b;">clsid:22D6F312-B0F6-11D0-94AB-0080C74C7E95</span><span style="color: Gray;"> </span><span style="color: #00008b;">codebase</span><span style="color: Gray;">=</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">http://activex.microsoft.com/activex/controls/mplayer<br />/en/nsmp2inf.cab#Version=6,1,5,217</span><span style="color: #8b0000;">&quot;</span><span style="color: Gray;"><br /></span><span style="color: #00008b;">id</span><span style="color: Gray;">=</span><span style="color: #00008b;">MediaPlayer</span><span style="color: Gray;"> </span><span style="color: #00008b;">type</span><span style="color: Gray;">=</span><span style="color: #00008b;">application</span><span style="color: Gray;">/</span><span style="color: Green;">x-oleobject</span><span style="color: Gray;"> </span><span style="color: #00008b;">width</span><span style="color: Gray;">=</span><span style="color: #00008b;">210</span><span style="color: Gray;"> </span><span style="color: #00008b;">height</span><span style="color: Gray;">=</span><span style="color: #00008b;">340</span><span style="color: Gray;"> </span><span style="color: #00008b;">standby</span><span style="color: Gray;">=</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">Loading Microsoft Windows Media Player components...</span><span style="color: #8b0000;">&quot;</span><span style="color: Gray;"> </span><span style="color: #00008b;">VIEWASTEXT</span><span style="color: Gray;"> </span><span style="color: #00008b;">align</span><span style="color: Gray;">=</span><span style="color: #00008b;">MIDDLE</span><span style="color: Olive;">&gt;</span><span style="color: Gray;"><br /></span><span style="color: Olive;">&lt;</span><span style="color: Green;">param</span><span style="color: Gray;"> </span><span style="color: #00008b;">name</span><span style="color: Gray;">=</span><span style="color: #00008b;">AudioStream</span><span style="color: Gray;"> </span><span style="color: #00008b;">value</span><span style="color: Gray;">=</span><span style="color: #00008b;">-1</span><span style="color: Olive;">&gt;</span><span style="color: Gray;"><br /></span><span style="color: Olive;">&lt;</span><span style="color: Green;">param</span><span style="color: Gray;"> </span><span style="color: #00008b;">name</span><span style="color: Gray;">=</span><span style="color: #00008b;">AutoSize</span><span style="color: Gray;"> </span><span style="color: #00008b;">value</span><span style="color: Gray;">=</span><span style="color: #00008b;">0</span><span style="color: Olive;">&gt;</span><span style="color: Gray;"><br /></span><span style="color: Olive;">&lt;</span><span style="color: Green;">param</span><span style="color: Gray;"> </span><span style="color: #00008b;">name</span><span style="color: Gray;">=</span><span style="color: #00008b;">AutoStart</span><span style="color: Gray;"> </span><span style="color: #00008b;">value</span><span style="color: Gray;">=</span><span style="color: #00008b;">1</span><span style="color: Olive;">&gt;</span><span style="color: Gray;"><br /></span><span style="color: Olive;">&lt;</span><span style="color: Green;">param</span><span style="color: Gray;"> </span><span style="color: #00008b;">name</span><span style="color: Gray;">=</span><span style="color: #00008b;">AnimationAtStart</span><span style="color: Gray;"> </span><span style="color: #00008b;">value</span><span style="color: Gray;">=</span><span style="color: #00008b;">0</span><span style="color: Olive;">&gt;</span><span style="color: Gray;"><br /></span><span style="color: Olive;">&lt;</span><span style="color: Green;">param</span><span style="color: Gray;"> </span><span style="color: #00008b;">name</span><span style="color: Gray;">=</span><span style="color: #00008b;">AllowScan</span><span style="color: Gray;"> </span><span style="color: #00008b;">value</span><span style="color: Gray;">=</span><span style="color: #00008b;">-1</span><span style="color: Olive;">&gt;</span><span style="color: Gray;"><br /></span><span style="color: Olive;">&lt;</span><span style="color: Green;">param</span><span style="color: Gray;"> </span><span style="color: #00008b;">name</span><span style="color: Gray;">=</span><span style="color: #00008b;">AllowChangeDisplaySize</span><span style="color: Gray;"> </span><span style="color: #00008b;">value</span><span style="color: Gray;">=</span><span style="color: #00008b;">0</span><span style="color: Olive;">&gt;</span><span style="color: Gray;"><br /></span><span style="color: Olive;">&lt;</span><span style="color: Green;">param</span><span style="color: Gray;"> </span><span style="color: #00008b;">name</span><span style="color: Gray;">=</span><span style="color: #00008b;">AutoRewind</span><span style="color: Gray;"> </span><span style="color: #00008b;">value</span><span style="color: Gray;">=</span><span style="color: #00008b;">0</span><span style="color: Olive;">&gt;</span><span style="color: Gray;"><br /></span><span style="color: Olive;">&lt;</span><span style="color: Green;">param</span><span style="color: Gray;"> </span><span style="color: #00008b;">name</span><span style="color: Gray;">=</span><span style="color: #00008b;">Balance</span><span style="color: Gray;"> </span><span style="color: #00008b;">value</span><span style="color: Gray;">=</span><span style="color: #00008b;">0</span><span style="color: Olive;">&gt;</span><span style="color: Gray;"><br /></span><span style="color: Olive;">&lt;</span><span style="color: Green;">param</span><span style="color: Gray;"> </span><span style="color: #00008b;">name</span><span style="color: Gray;">=</span><span style="color: #00008b;">BaseURL</span><span style="color: Gray;"> </span><span style="color: #00008b;">value</span><span style="color: Gray;">=</span><span style="color: #8b0000;">&quot;&quot;</span><span style="color: Olive;">&gt;</span><span style="color: Gray;"><br /></span><span style="color: Olive;">&lt;</span><span style="color: Green;">param</span><span style="color: Gray;"> </span><span style="color: #00008b;">name</span><span style="color: Gray;">=</span><span style="color: #00008b;">BufferingTime</span><span style="color: Gray;"> </span><span style="color: #00008b;">value</span><span style="color: Gray;">=</span><span style="color: #00008b;">5</span><span style="color: Olive;">&gt;</span><span style="color: Gray;"><br /></span><span style="color: Olive;">&lt;</span><span style="color: Green;">param</span><span style="color: Gray;"> </span><span style="color: #00008b;">name</span><span style="color: Gray;">=</span><span style="color: #00008b;">CaptioningID</span><span style="color: Gray;"> </span><span style="color: #00008b;">value</span><span style="color: Gray;">=</span><span style="color: #8b0000;">&quot;&quot;</span><span style="color: Olive;">&gt;</span><span style="color: Gray;"><br /></span><span style="color: Olive;">&lt;</span><span style="color: Green;">param</span><span style="color: Gray;"> </span><span style="color: #00008b;">name</span><span style="color: Gray;">=</span><span style="color: #00008b;">ClickToPlay</span><span style="color: Gray;"> </span><span style="color: #00008b;">value</span><span style="color: Gray;">=</span><span style="color: #00008b;">0</span><span style="color: Olive;">&gt;</span><span style="color: Gray;"><br /></span><span style="color: Olive;">&lt;</span><span style="color: Green;">param</span><span style="color: Gray;"> </span><span style="color: #00008b;">name</span><span style="color: Gray;">=</span><span style="color: #00008b;">CursorType</span><span style="color: Gray;"> </span><span style="color: #00008b;">value</span><span style="color: Gray;">=</span><span style="color: #00008b;">32512</span><span style="color: Olive;">&gt;</span><span style="color: Gray;"><br /></span><span style="color: Olive;">&lt;</span><span style="color: Green;">param</span><span style="color: Gray;"> </span><span style="color: #00008b;">name</span><span style="color: Gray;">=</span><span style="color: #00008b;">CurrentPosition</span><span style="color: Gray;"> </span><span style="color: #00008b;">value</span><span style="color: Gray;">=</span><span style="color: #00008b;">-1</span><span style="color: Olive;">&gt;</span><span style="color: Gray;"><br /></span><span style="color: Olive;">&lt;</span><span style="color: Green;">param</span><span style="color: Gray;"> </span><span style="color: #00008b;">name</span><span style="color: Gray;">=</span><span style="color: #00008b;">CurrentMarker</span><span style="color: Gray;"> </span><span style="color: #00008b;">value</span><span style="color: Gray;">=</span><span style="color: #00008b;">0</span><span style="color: Olive;">&gt;</span><span style="color: Gray;"><br /></span><span style="color: Olive;">&lt;</span><span style="color: Green;">param</span><span style="color: Gray;"> </span><span style="color: #00008b;">name</span><span style="color: Gray;">=</span><span style="color: #00008b;">DefaultFrame</span><span style="color: Gray;"> </span><span style="color: #00008b;">value</span><span style="color: Gray;">=</span><span style="color: #00008b;">1</span><span style="color: Olive;">&gt;</span><span style="color: Gray;"><br /></span><span style="color: Olive;">&lt;</span><span style="color: Green;">param</span><span style="color: Gray;"> </span><span style="color: #00008b;">name</span><span style="color: Gray;">=</span><span style="color: #00008b;">DisplayBackColor</span><span style="color: Gray;"> </span><span style="color: #00008b;">value</span><span style="color: Gray;">=</span><span style="color: #00008b;">0</span><span style="color: Olive;">&gt;</span><span style="color: Gray;"><br /></span><span style="color: Olive;">&lt;</span><span style="color: Green;">param</span><span style="color: Gray;"> </span><span style="color: #00008b;">name</span><span style="color: Gray;">=</span><span style="color: #00008b;">DisplayForeColor</span><span style="color: Gray;"> </span><span style="color: #00008b;">value</span><span style="color: Gray;">=</span><span style="color: #00008b;">16777215</span><span style="color: Olive;">&gt;</span><span style="color: Gray;"><br /></span><span style="color: Olive;">&lt;</span><span style="color: Green;">param</span><span style="color: Gray;"> </span><span style="color: #00008b;">name</span><span style="color: Gray;">=</span><span style="color: #00008b;">DisplayMode</span><span style="color: Gray;"> </span><span style="color: #00008b;">value</span><span style="color: Gray;">=</span><span style="color: #00008b;">0</span><span style="color: Olive;">&gt;</span><span style="color: Gray;"><br /></span><span style="color: Olive;">&lt;</span><span style="color: Green;">param</span><span style="color: Gray;"> </span><span style="color: #00008b;">name</span><span style="color: Gray;">=</span><span style="color: #00008b;">DisplaySize</span><span style="color: Gray;"> </span><span style="color: #00008b;">value</span><span style="color: Gray;">=</span><span style="color: #00008b;">0</span><span style="color: Olive;">&gt;</span><span style="color: Gray;"><br /></span><span style="color: Olive;">&lt;</span><span style="color: Green;">param</span><span style="color: Gray;"> </span><span style="color: #00008b;">name</span><span style="color: Gray;">=</span><span style="color: #00008b;">Enabled</span><span style="color: Gray;"> </span><span style="color: #00008b;">value</span><span style="color: Gray;">=</span><span style="color: #00008b;">-1</span><span style="color: Olive;">&gt;</span><span style="color: Gray;"><br /></span><span style="color: Olive;">&lt;</span><span style="color: Green;">param</span><span style="color: Gray;"> </span><span style="color: #00008b;">name</span><span style="color: Gray;">=</span><span style="color: #00008b;">EnableContextMenu</span><span style="color: Gray;"> </span><span style="color: #00008b;">value</span><span style="color: Gray;">=</span><span style="color: #00008b;">-1</span><span style="color: Olive;">&gt;</span><span style="color: Gray;"><br /></span><span style="color: Olive;">&lt;</span><span style="color: Green;">param</span><span style="color: Gray;"> </span><span style="color: #00008b;">name</span><span style="color: Gray;">=</span><span style="color: #00008b;">EnablePositionControls</span><span style="color: Gray;"> </span><span style="color: #00008b;">value</span><span style="color: Gray;">=</span><span style="color: #00008b;">0</span><span style="color: Olive;">&gt;</span><span style="color: Gray;"><br /></span><span style="color: Olive;">&lt;</span><span style="color: Green;">param</span><span style="color: Gray;"> </span><span style="color: #00008b;">name</span><span style="color: Gray;">=</span><span style="color: #00008b;">EnableFullScreenControls</span><span style="color: Gray;"> </span><span style="color: #00008b;">value</span><span style="color: Gray;">=</span><span style="color: #00008b;">0</span><span style="color: Olive;">&gt;</span><span style="color: Gray;"><br /></span><span style="color: Olive;">&lt;</span><span style="color: Green;">param</span><span style="color: Gray;"> </span><span style="color: #00008b;">name</span><span style="color: Gray;">=</span><span style="color: #00008b;">EnableTracker</span><span style="color: Gray;"> </span><span style="color: #00008b;">value</span><span style="color: Gray;">=</span><span style="color: #00008b;">1</span><span style="color: Olive;">&gt;</span><span style="color: Gray;"><br /></span><span style="color: Olive;">&lt;</span><span style="color: Green;">param</span><span style="color: Gray;"> </span><span style="color: #00008b;">name</span><span style="color: Gray;">=</span><span style="color: #00008b;">Filename</span><span style="color: Gray;"> </span><span style="color: #00008b;">value</span><span style="color: Gray;">=</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">http://202.102.*.*/flash/2/fff.swf</span><span style="color: #8b0000;">&quot;</span><span style="color: Olive;">&gt;</span><span style="color: Gray;"><br /></span><span style="color: Olive;">&lt;</span><span style="color: Green;">param</span><span style="color: Gray;"> </span><span style="color: #00008b;">name</span><span style="color: Gray;">=</span><span style="color: #00008b;">InvokeURLs</span><span style="color: Gray;"> </span><span style="color: #00008b;">value</span><span style="color: Gray;">=</span><span style="color: #00008b;">-1</span><span style="color: Olive;">&gt;</span><span style="color: Gray;"><br /></span><span style="color: Olive;">&lt;</span><span style="color: Green;">param</span><span style="color: Gray;"> </span><span style="color: #00008b;">name</span><span style="color: Gray;">=</span><span style="color: #00008b;">Language</span><span style="color: Gray;"> </span><span style="color: #00008b;">value</span><span style="color: Gray;">=</span><span style="color: #00008b;">-1</span><span style="color: Olive;">&gt;</span><span style="color: Gray;"><br /></span><span style="color: Olive;">&lt;</span><span style="color: Green;">param</span><span style="color: Gray;"> </span><span style="color: #00008b;">name</span><span style="color: Gray;">=</span><span style="color: #00008b;">Mute</span><span style="color: Gray;"> </span><span style="color: #00008b;">value</span><span style="color: Gray;">=</span><span style="color: #00008b;">0</span><span style="color: Olive;">&gt;</span><span style="color: Gray;"><br /></span><span style="color: Olive;">&lt;</span><span style="color: Green;">param</span><span style="color: Gray;"> </span><span style="color: #00008b;">name</span><span style="color: Gray;">=</span><span style="color: #00008b;">PlayCount</span><span style="color: Gray;"> </span><span style="color: #00008b;">value</span><span style="color: Gray;">=</span><span style="color: #00008b;">1</span><span style="color: Olive;">&gt;</span><span style="color: Gray;"><br /></span><span style="color: Olive;">&lt;</span><span style="color: Green;">param</span><span style="color: Gray;"> </span><span style="color: #00008b;">name</span><span style="color: Gray;">=</span><span style="color: #00008b;">PreviewMode</span><span style="color: Gray;"> </span><span style="color: #00008b;">value</span><span style="color: Gray;">=</span><span style="color: #00008b;">0</span><span style="color: Olive;">&gt;</span><span style="color: Gray;"><br /></span><span style="color: Olive;">&lt;</span><span style="color: Green;">param</span><span style="color: Gray;"> </span><span style="color: #00008b;">name</span><span style="color: Gray;">=</span><span style="color: #00008b;">Rate</span><span style="color: Gray;"> </span><span style="color: #00008b;">value</span><span style="color: Gray;">=</span><span style="color: #00008b;">1</span><span style="color: Olive;">&gt;</span><span style="color: Gray;"><br /></span><span style="color: Olive;">&lt;</span><span style="color: Green;">param</span><span style="color: Gray;"> </span><span style="color: #00008b;">name</span><span style="color: Gray;">=</span><span style="color: #00008b;">SAMILang</span><span style="color: Gray;"> </span><span style="color: #00008b;">value</span><span style="color: Gray;">=</span><span style="color: #8b0000;">&quot;&quot;</span><span style="color: Olive;">&gt;</span><span style="color: Gray;"><br /></span><span style="color: Olive;">&lt;</span><span style="color: Green;">param</span><span style="color: Gray;"> </span><span style="color: #00008b;">name</span><span style="color: Gray;">=</span><span style="color: #00008b;">SAMIStyle</span><span style="color: Gray;"> </span><span style="color: #00008b;">value</span><span style="color: Gray;">=</span><span style="color: #8b0000;">&quot;&quot;</span><span style="color: Olive;">&gt;</span><span style="color: Gray;"><br /></span><span style="color: Olive;">&lt;</span><span style="color: Green;">param</span><span style="color: Gray;"> </span><span style="color: #00008b;">name</span><span style="color: Gray;">=</span><span style="color: #00008b;">SAMIFileName</span><span style="color: Gray;"> </span><span style="color: #00008b;">value</span><span style="color: Gray;">=</span><span style="color: #8b0000;">&quot;&quot;</span><span style="color: Olive;">&gt;</span><span style="color: Gray;"><br /></span><span style="color: Olive;">&lt;</span><span style="color: Green;">param</span><span style="color: Gray;"> </span><span style="color: #00008b;">name</span><span style="color: Gray;">=</span><span style="color: #00008b;">SelectionStart</span><span style="color: Gray;"> </span><span style="color: #00008b;">value</span><span style="color: Gray;">=</span><span style="color: #00008b;">0</span><span style="color: Olive;">&gt;</span><span style="color: Gray;"><br /></span><span style="color: Olive;">&lt;</span><span style="color: Green;">param</span><span style="color: Gray;"> </span><span style="color: #00008b;">name</span><span style="color: Gray;">=</span><span style="color: #00008b;">SelectionEnd</span><span style="color: Gray;"> </span><span style="color: #00008b;">value</span><span style="color: Gray;">=</span><span style="color: #00008b;">true</span><span style="color: Olive;">&gt;</span><span style="color: Gray;"><br /></span><span style="color: Olive;">&lt;</span><span style="color: Green;">param</span><span style="color: Gray;"> </span><span style="color: #00008b;">name</span><span style="color: Gray;">=</span><span style="color: #00008b;">SendOpenStateChangeEvents</span><span style="color: Gray;"> </span><span style="color: #00008b;">value</span><span style="color: Gray;">=</span><span style="color: #00008b;">-1</span><span style="color: Olive;">&gt;</span><span style="color: Gray;"><br /></span><span style="color: Olive;">&lt;</span><span style="color: Green;">param</span><span style="color: Gray;"> </span><span style="color: #00008b;">name</span><span style="color: Gray;">=</span><span style="color: #00008b;">SendWarningEvents</span><span style="color: Gray;"> </span><span style="color: #00008b;">value</span><span style="color: Gray;">=</span><span style="color: #00008b;">-1</span><span style="color: Olive;">&gt;</span><span style="color: Gray;"><br /></span><span style="color: Olive;">&lt;</span><span style="color: Green;">param</span><span style="color: Gray;"> </span><span style="color: #00008b;">name</span><span style="color: Gray;">=</span><span style="color: #00008b;">SendErrorEvents</span><span style="color: Gray;"> </span><span style="color: #00008b;">value</span><span style="color: Gray;">=</span><span style="color: #00008b;">-1</span><span style="color: Olive;">&gt;</span><span style="color: Gray;"><br /></span><span style="color: Olive;">&lt;</span><span style="color: Green;">param</span><span style="color: Gray;"> </span><span style="color: #00008b;">name</span><span style="color: Gray;">=</span><span style="color: #00008b;">SendKeyboardEvents</span><span style="color: Gray;"> </span><span style="color: #00008b;">value</span><span style="color: Gray;">=</span><span style="color: #00008b;">0</span><span style="color: Olive;">&gt;</span><span style="color: Gray;"><br /></span><span style="color: Olive;">&lt;</span><span style="color: Green;">param</span><span style="color: Gray;"> </span><span style="color: #00008b;">name</span><span style="color: Gray;">=</span><span style="color: #00008b;">SendMouseClickEvents</span><span style="color: Gray;"> </span><span style="color: #00008b;">value</span><span style="color: Gray;">=</span><span style="color: #00008b;">0</span><span style="color: Olive;">&gt;</span><span style="color: Gray;"><br /></span><span style="color: Olive;">&lt;</span><span style="color: Green;">param</span><span style="color: Gray;"> </span><span style="color: #00008b;">name</span><span style="color: Gray;">=</span><span style="color: #00008b;">SendMouseMoveEvents</span><span style="color: Gray;"> </span><span style="color: #00008b;">value</span><span style="color: Gray;">=</span><span style="color: #00008b;">0</span><span style="color: Olive;">&gt;</span><span style="color: Gray;"><br /></span><span style="color: Olive;">&lt;</span><span style="color: Green;">param</span><span style="color: Gray;"> </span><span style="color: #00008b;">name</span><span style="color: Gray;">=</span><span style="color: #00008b;">SendPlayStateChangeEvents</span><span style="color: Gray;"> </span><span style="color: #00008b;">value</span><span style="color: Gray;">=</span><span style="color: #00008b;">-1</span><span style="color: Olive;">&gt;</span><span style="color: Gray;"><br /></span><span style="color: Olive;">&lt;</span><span style="color: Green;">param</span><span style="color: Gray;"> </span><span style="color: #00008b;">name</span><span style="color: Gray;">=</span><span style="color: #00008b;">ShowCaptioning</span><span style="color: Gray;"> </span><span style="color: #00008b;">value</span><span style="color: Gray;">=</span><span style="color: #00008b;">0</span><span style="color: Olive;">&gt;</span><span style="color: Gray;"><br /></span><span style="color: Olive;">&lt;</span><span style="color: Green;">param</span><span style="color: Gray;"> </span><span style="color: #00008b;">name</span><span style="color: Gray;">=</span><span style="color: #00008b;">ShowControls</span><span style="color: Gray;"> </span><span style="color: #00008b;">value</span><span style="color: Gray;">=</span><span style="color: #00008b;">1</span><span style="color: Olive;">&gt;</span><span style="color: Gray;"><br /></span><span style="color: Olive;">&lt;</span><span style="color: Green;">param</span><span style="color: Gray;"> </span><span style="color: #00008b;">name</span><span style="color: Gray;">=</span><span style="color: #00008b;">ShowAudioControls</span><span style="color: Gray;"> </span><span style="color: #00008b;">value</span><span style="color: Gray;">=</span><span style="color: #00008b;">1</span><span style="color: Olive;">&gt;</span><span style="color: Gray;"><br /></span><span style="color: Olive;">&lt;</span><span style="color: Green;">param</span><span style="color: Gray;"> </span><span style="color: #00008b;">name</span><span style="color: Gray;">=</span><span style="color: #00008b;">ShowDisplay</span><span style="color: Gray;"> </span><span style="color: #00008b;">value</span><span style="color: Gray;">=</span><span style="color: #00008b;">1</span><span style="color: Olive;">&gt;</span><span style="color: Gray;"><br /></span><span style="color: Olive;">&lt;</span><span style="color: Green;">param</span><span style="color: Gray;"> </span><span style="color: #00008b;">name</span><span style="color: Gray;">=</span><span style="color: #00008b;">ShowGotoBar</span><span style="color: Gray;"> </span><span style="color: #00008b;">value</span><span style="color: Gray;">=</span><span style="color: #00008b;">1</span><span style="color: Olive;">&gt;</span><span style="color: Gray;"><br /></span><span style="color: Olive;">&lt;</span><span style="color: Green;">param</span><span style="color: Gray;"> </span><span style="color: #00008b;">name</span><span style="color: Gray;">=</span><span style="color: #00008b;">ShowPositionControls</span><span style="color: Gray;"> </span><span style="color: #00008b;">value</span><span style="color: Gray;">=</span><span style="color: #00008b;">1</span><span style="color: Olive;">&gt;</span><span style="color: Gray;"><br /></span><span style="color: Olive;">&lt;</span><span style="color: Green;">param</span><span style="color: Gray;"> </span><span style="color: #00008b;">name</span><span style="color: Gray;">=</span><span style="color: #00008b;">ShowStatusBar</span><span style="color: Gray;"> </span><span style="color: #00008b;">value</span><span style="color: Gray;">=</span><span style="color: #00008b;">1</span><span style="color: Olive;">&gt;</span><span style="color: Gray;"><br /></span><span style="color: Olive;">&lt;</span><span style="color: Green;">param</span><span style="color: Gray;"> </span><span style="color: #00008b;">name</span><span style="color: Gray;">=</span><span style="color: #00008b;">ShowTracker</span><span style="color: Gray;"> </span><span style="color: #00008b;">value</span><span style="color: Gray;">=</span><span style="color: #00008b;">1</span><span style="color: Olive;">&gt;</span><span style="color: Gray;"><br /></span><span style="color: Olive;">&lt;</span><span style="color: Green;">param</span><span style="color: Gray;"> </span><span style="color: #00008b;">name</span><span style="color: Gray;">=</span><span style="color: #00008b;">TransparentAtStart</span><span style="color: Gray;"> </span><span style="color: #00008b;">value</span><span style="color: Gray;">=</span><span style="color: #00008b;">0</span><span style="color: Olive;">&gt;</span><span style="color: Gray;"><br /></span><span style="color: Olive;">&lt;</span><span style="color: Green;">param</span><span style="color: Gray;"> </span><span style="color: #00008b;">name</span><span style="color: Gray;">=</span><span style="color: #00008b;">VideoBorderWidth</span><span style="color: Gray;"> </span><span style="color: #00008b;">value</span><span style="color: Gray;">=</span><span style="color: #00008b;">0</span><span style="color: Olive;">&gt;</span><span style="color: Gray;"><br /></span><span style="color: Olive;">&lt;</span><span style="color: Green;">param</span><span style="color: Gray;"> </span><span style="color: #00008b;">name</span><span style="color: Gray;">=</span><span style="color: #00008b;">VideoBorderColor</span><span style="color: Gray;"> </span><span style="color: #00008b;">value</span><span style="color: Gray;">=</span><span style="color: #00008b;">0</span><span style="color: Olive;">&gt;</span><span style="color: Gray;"><br /></span><span style="color: Olive;">&lt;</span><span style="color: Green;">param</span><span style="color: Gray;"> </span><span style="color: #00008b;">name</span><span style="color: Gray;">=</span><span style="color: #00008b;">VideoBorder3D</span><span style="color: Gray;"> </span><span style="color: #00008b;">value</span><span style="color: Gray;">=</span><span style="color: #00008b;">0</span><span style="color: Olive;">&gt;</span><span style="color: Gray;"><br /></span><span style="color: Olive;">&lt;</span><span style="color: Green;">param</span><span style="color: Gray;"> </span><span style="color: #00008b;">name</span><span style="color: Gray;">=</span><span style="color: #00008b;">Volume</span><span style="color: Gray;"> </span><span style="color: #00008b;">value</span><span style="color: Gray;">=</span><span style="color: #00008b;">-1070</span><span style="color: Olive;">&gt;</span><span style="color: Gray;"><br /></span><span style="color: Olive;">&lt;</span><span style="color: Green;">param</span><span style="color: Gray;"> </span><span style="color: #00008b;">name</span><span style="color: Gray;">=</span><span style="color: #00008b;">WindowlessVideo</span><span style="color: Gray;"> </span><span style="color: #00008b;">value</span><span style="color: Gray;">=</span><span style="color: #00008b;">1</span><span style="color: Olive;">&gt;</span><span style="color: Gray;"><br /></span><span style="color: Olive;">&lt;/</span><span style="color: Green;">object</span><span style="color: Olive;">&gt;</span></div></div>
<p>简易型：</p>
<div class="hl-surround"><div class="hl-main"><span style="color: Olive;">&lt;</span><span style="color: Green;">EMBED</span><span style="color: Gray;"> </span><span style="color: #00008b;">src</span><span style="color: Gray;">=</span><span style="color: #00008b;">http:</span><span style="color: Gray;">//</span><span style="color: Green;">www</span><span style="color: Gray;">.*.</span><span style="color: #00008b;">com</span><span style="color: Gray;">/</span><span style="color: Green;">mediadate</span><span style="color: Gray;">/</span><span style="color: Green;">lxlhbcn</span><span style="color: Gray;">.</span><span style="color: #00008b;">asf</span><span style="color: Gray;"> </span><span style="color: #00008b;">style</span><span style="color: Gray;">=</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">HEIGHT: 45px; WIDTH: 190px</span><span style="color: #8b0000;">&quot;</span><span style="color: Gray;"> </span><span style="color: #00008b;">type</span><span style="color: Gray;">=</span><span style="color: #00008b;">audio</span><span style="color: Gray;">/</span><span style="color: Green;">mpeg</span><span style="color: Gray;"> </span><span style="color: #00008b;">AUTOSTART</span><span style="color: Gray;">=</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">1</span><span style="color: #8b0000;">&quot;</span><span style="color: Gray;"> </span><span style="color: #00008b;">loop</span><span style="color: Gray;">=</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">0</span><span style="color: #8b0000;">&quot;</span><span style="color: Olive;">&gt;</span><span style="color: Gray;"><br /></span><span style="color: Olive;">&lt;/</span><span style="color: Green;">EMBED</span><span style="color: Olive;">&gt;</span></div></div>
<p>标签型:</p>
<div class="hl-surround"><div class="hl-main"><span style="color: Olive;">&lt;</span><span style="color: Green;">embed</span><span style="color: Gray;"> </span><span style="color: #00008b;">width</span><span style="color: Gray;">=</span><span style="color: #00008b;">240</span><span style="color: Gray;"> </span><span style="color: #00008b;">height</span><span style="color: Gray;">=</span><span style="color: #00008b;">140</span><span style="color: Gray;"> </span><span style="color: #00008b;">transparentatstart</span><span style="color: Gray;">=</span><span style="color: #00008b;">true</span><span style="color: Gray;"> </span><span style="color: #00008b;">animationatstart</span><span style="color: Gray;">=</span><span style="color: #00008b;">false</span><span style="color: Gray;"> </span><span style="color: #00008b;">autostart</span><span style="color: Gray;">=</span><span style="color: #00008b;">true</span><span style="color: Gray;"> </span><span style="color: #00008b;">autosize</span><span style="color: Gray;">=</span><span style="color: #00008b;">false</span><span style="color: Gray;"> </span><span style="color: #00008b;">volume</span><span style="color: Gray;">=</span><span style="color: #00008b;">100</span><span style="color: Gray;"> </span><span style="color: #00008b;">displaysize</span><span style="color: Gray;">=</span><span style="color: #00008b;">0</span><span style="color: Gray;"> </span><span style="color: #00008b;">showdisplay</span><span style="color: Gray;">=</span><span style="color: #00008b;">true</span><span style="color: Gray;"> </span><span style="color: #00008b;">showstatusbar</span><span style="color: Gray;">=</span><span style="color: #00008b;">true</span><span style="color: Gray;"> </span><span style="color: #00008b;">showcontrols</span><span style="color: Gray;">=</span><span style="color: #00008b;">true</span><span style="color: Gray;"> </span><span style="color: #00008b;">showaudiocontrols</span><span style="color: Gray;">=</span><span style="color: #00008b;">true</span><span style="color: Gray;"> </span><span style="color: #00008b;">showtracker</span><span style="color: Gray;">=</span><span style="color: #00008b;">true</span><span style="color: Gray;"> </span><span style="color: #00008b;">showpositioncontrols</span><span style="color: Gray;">=</span><span style="color: #00008b;">true</span><span style="color: Gray;"> </span><span style="color: #00008b;">balance</span><span style="color: Gray;">=</span><span style="color: #00008b;">true</span><span style="color: Gray;"> </span><span style="color: #00008b;">src</span><span style="color: Gray;">=</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">http://www.*.com/mediadate/lxlhbcn.asf</span><span style="color: #8b0000;">&quot;</span><span style="color: Olive;">&gt;</span><span style="color: Gray;"><br /></span><span style="color: Olive;">&lt;/</span><span style="color: Green;">embed</span><span style="color: Olive;">&gt;</span></div></div>
<p>引用内容</p>
<p>媒体播放器的外观界面</p>
<p>在网页中，你可以通过相关属性来控制媒体播放器的哪些部分出现，哪些部分不出现。<br />
媒体播放器包括如下元素：<br />
Video Display Panel：视频显示面板；<br />
Video Border：视频边框；<br />
Closed Captioning Display Panel；字幕显示面板；<br />
Track Bar；搜索栏；<br />
Control Bar with Audio and Position Controls：带有声音和位置控制的控制栏；<br />
Go To Bar：转到栏；<br />
Display Panel：显示面板；<br />
Status Bar：状态栏；<br />
下面的属性用来决定显示哪一个元素：<br />
ShowControls 属性：是否显示控制栏（包括播放控件及可选的声音和位置控件）；<br />
ShowAudioControls 属性：是否在控制栏显示声音控件（静音按钮和音量滑块）；<br />
ShowPositionControls 属性：是否在控制栏显示位置控件（包括向后跳进、快退、快进、向前跳进、预览播放列表中的每个剪辑）；<br />
ShowTracker 属性：是否显示搜索栏；<br />
ShowDisplay 属性：是否显示显示面板（用来提供节目与剪辑的信息）；<br />
ShowCaptioning 属性：是否显示字幕显示面板；<br />
ShowGotoBar 属性：是否显示转到栏；<br />
ShowStatusBar 属性：是否显示状态栏；</p>
<p>播放列表</p>
<p>媒体播放器提供下面的方法来访问播放列表中的剪辑：<br />
Next 方法，跳到节目（播放列表）中的下一个剪辑；<br />
Previous 方法，跳回到节目中的上一个剪辑；<br />
媒体播放器的一个特性是能够预览节目中的每一个剪辑，使用如下属性：<br />
PreviewMode 属性，决定媒体播放器当前是否处于预览模式；<br />
CanPreview 属性，决定媒体播放器能否处于预览模式；<br />
在windows 媒体元文件中，可以为每一个剪辑指定预览时间——PREVIEWDURATION,如果没有指定，那么默认的预览时间是10秒钟。<br />
你也可以用Windows 媒体元文件来添加 watermarks 与 banners，元文件也支持插入广告时的无间隙流切换。</p>
<p>节目信息</p>
<p>使用 GetMediaInfoString 方法可以返回相关剪辑或节目的如下信息：<br />
文件名：File name<br />
标题：Title<br />
描述：Description<br />
作者：Author<br />
版权：Copyright<br />
级别：Rating<br />
URLs：logo icon、watermark、banner的地址<br />
剪辑信息可以放在媒体文件中，也可以放在Windows 媒体元文件中，或者两者都放。如果在元文件中指定了剪辑信息，那么用 GetMediaInfoString 方法返回的就是元文件中的信息，而不会返回剪辑中包含的信息。<br />
在元文件中，附加信息可以放置在每一个剪辑或节目的 PARAM标签中。你可以为每个剪辑添加任意多个 PARAM 标签，用来存储自定义的信息或链接到相关站点。在 PARAM 标签中的信息可以通过 GetMediaParameter 方法来访问。<br />
下面的属性返回有关大小和时间的信息：<br />
ImageSourceHeight、ImageSourceWidth：返回图像窗口的显示尺寸；<br />
Duration 属性，返回剪辑的长度(秒)， 要检测这个属性是否包含有效的数值，请检查IsDurationValid 属性。(对于广播的视频，其长度是不可预知的)。</p>
<p>字幕</p>
<p>你可以用 .smi 文件来为你的节目添加字幕。媒体播放器支持下面的属性来处理字幕：<br />
SAMIFileName 属性，指定 .smi 文件的名字；<br />
SAMILang 属性，指定字幕的语言(如果没有指定则使用第一种语言)；<br />
SAMIStyle 属性，指定字幕的文字大小和样式；<br />
ShowCaptioning 属性，决定是否显示字幕显示面板；</p>
<p>脚本命令</p>
<p>伴随音频、视频流，你可以在流媒体文件中加入脚本命令。脚本命令是多媒体流中与特定时间同步的多对Unicode串。第一个串标识待发命令的类型，第二个串指定要执行的命令。<br />
当流播放到与脚本相关的时间时，控件会向网页发送一个 ScriptCommand事件，然后由事件处理进程来响应这个事件。脚本命令字符串会作为脚本命令事件的参数传递给事件处理器。<br />
媒体播放器会自动处理下面类型的内嵌脚本命令：<br />
1) URL型命令：当媒体播放器控件收到一个URL型的命令时，指定的URL会被装载到用户的默认浏览器。如果媒体播放器嵌在一个分帧的HTML文件中，URL页可以装载到由脚本命令指定的帧内。如果脚本命令没有指定一个帧，将由 DefaultFrame 属性决定将 URL 页装入哪一帧。<br />
你可以通过设置 InvokeURLs 属性来决定是否自动处理 URL 型的脚本命令。如果这个属性的值为 false ，媒体播放器控件将忽视 URL型命令。但是脚本命令事件仍会触发，这就允许你有选择地处理 URL 型命令。<br />
URL 型命令指定的是 URL 的相对地址。基地址是由 BaseURL属性指定的。媒体播放器控件传送的脚本命令事件的命令参数是链接好的地址。<br />
2) FILENAME型命令：当媒体播放器控件收到一个FILENAME型的命令时，它将 FileName属性设置为脚本命令提供的文件，之后媒体播放器会打开这个文件开始播放。 媒体播放器控件总是自动处理 FILENAME 型命令，不象 URL 型命令，它们不能被禁止。<br />
3) TEXT型命令：当媒体播放器控件收到一个 TEXT型的命令时，它会将命令的内容显示在控件的字幕窗口。内容可以是纯文本的，也可以是 HTML。<br />
4) EVENT型命令：当媒体播放器控件收到一个 EVENT型的命令时，它会在媒体元文件中搜索 EVENT 元素的 NAME 属性。如果 NAME 属性与脚本命令中的第二个字符串匹配，媒体播放器控件就执行包含在 EVENT 元素中的条目。<br />
5) OPENEVENT型命令：当媒体播放器控件收到一个 OPENEVENT型的命令时，它会在媒体元文件中检查 EVENT 元素，并打开匹配的标题，但不播放，直到收到来自 EVENT型命令的同名真实事件。</p>
<p>捕捉键盘和鼠标事件</p>
<p>EnableContextMenu 与 ClickToPlay 属性为用户提供了在图像窗口进行操作的方法。<br />
如果 EnableContextMenu 属性为 true ，在图像窗口右击鼠标可以打开关联菜单，如果将ClickToPlay 属性设为 true ，用户可以单击图像窗口进行播放与暂停的切换。<br />
要接收鼠标移动和单击事件，请将 SendMouseMoveEvents 和 SendMouseClickEvents 属性设为 true 。鼠标事件有：<br />
MouseDown，当用户按下鼠标时产生；<br />
MouseUp，当用户释放鼠标时产生；<br />
MouseMove，当用户移动鼠标时产生；<br />
Click，当用户在媒体播放器上单击鼠标按钮时产生；<br />
DbClick，当用户在媒体播放器上双击鼠标按钮时产生；<br />
要接收键盘事件，请将 SendKeyboardEvents 属性设为 true 。键盘事件有：<br />
KeyDown，当用户按下一个键时产生；<br />
KeyUp，当用户释放一个键时产生；<br />
KeyPress，当用户按下并释放一个键时产生；</p>
<p>监测流状态与网络链接</p>
<p>流状态属性包括：<br />
PlayState：播放状态；<br />
OpenState：打开状态；<br />
Bandwidth：带宽；<br />
支持的事件有：<br />
OpenStateChange：打开状态改变(仅当SendOpenStateChangeEvents属性为true时触发)<br />
PlayStateChange：播放状态改变(仅当SendPlayStateChangeEvents属性为true时触发)<br />
EndOfStream：流结束时触发；<br />
NewStream：打开新流时触发；<br />
网络接收属性包括：<br />
ReceptionQuality：接收质量；<br />
ReceivedPackets：已经收到的包；<br />
LostPackets：丢失的包；<br />
监测缓冲的属性有：<br />
BufferingTime：缓冲时间；<br />
BufferingCount：缓冲次数；<br />
BufferingProgress：缓冲进程；<br />
Buffering：缓冲事件；</p>
<p>错误处理</p>
<p>媒体播放器提供了内建的错误处理功能——在对话框或状态栏显示错误信息。 另外，你可以自己添加错误处理程序。如果 SendErrorEvents 属性设置为 true，将不会显示错误框，而是发送错误事件；如果 SendErrorEvents 属性设置为 false，将显示错误框，而是发送错误事件。<br />
媒体播放器支持下面的错误处理事件：<br />
Error 事件，指有危险性错误发生；<br />
Warning 事件，指发生了非危险性的错误；<br />
当你的应用程序接收到一个错误事件，你可以检测下面的属性来确定具体的错误信息：<br />
HasError：检测目前的媒体播放器是否有错误；<br />
ErrorCode：提供与该类型错误相关的代码值；<br />
ErrorDescription：提供错误的描述信息；<br />
ErrorCorrection：指定媒体播放器对该类型的错误进行校正；</p>
<p>播放CD</p>
<p>媒体播放器将 CD 看作（在每个音轨的开头具有标记的）单一音频流。 要在网页中使用CD，你需要将 FileName 属性设为 CDAUDI，必须带有冒号，如下所示：</p>
<div class="hl-surround"><div class="hl-main"><span style="color: Olive;">&lt;</span><span style="color: Green;">HTML</span><span style="color: Olive;">&gt;</span><span style="color: Gray;"><br /></span><span style="color: Olive;">&lt;</span><span style="color: Green;">HEAD</span><span style="color: Olive;">&gt;&lt;</span><span style="color: Green;">TITLE</span><span style="color: Olive;">&gt;</span><span style="color: Gray;">CD Audio Playback Example</span><span style="color: Olive;">&lt;/</span><span style="color: Green;">TITLE</span><span style="color: Olive;">&gt;&lt;/</span><span style="color: Green;">HEAD</span><span style="color: Olive;">&gt;</span><span style="color: Gray;"><br /></span><span style="color: Olive;">&lt;</span><span style="color: Green;">BODY</span><span style="color: Olive;">&gt;</span><span style="color: Gray;"><br /></span><span style="color: Olive;">&lt;</span><span style="color: Green;">OBJECT</span><span style="color: Gray;"> </span><span style="color: #00008b;">ID</span><span style="color: Gray;">=</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">MediaPlayer</span><span style="color: #8b0000;">&quot;</span><span style="color: Gray;"><br /></span><span style="color: #00008b;">CLASSID</span><span style="color: Gray;">=</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">CLSID:22d6f312-b0f6-11d0-94ab-0080c74c7e95</span><span style="color: #8b0000;">&quot;</span><span style="color: Gray;"><br /></span><span style="color: #00008b;">WIDTH</span><span style="color: Gray;">=</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">320</span><span style="color: #8b0000;">&quot;</span><span style="color: Gray;"> <br /></span><span style="color: #00008b;">HEIGHT</span><span style="color: Gray;">=</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">508</span><span style="color: #8b0000;">&quot;</span><span style="color: Gray;"><br /></span><span style="color: #00008b;">STYLE</span><span style="color: Gray;">=</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">position:absolute; left:0px; top:70px;</span><span style="color: #8b0000;">&quot;</span><span style="color: Gray;"> </span><span style="color: Olive;">&gt;</span><span style="color: Gray;"><br /></span><span style="color: Olive;">&lt;</span><span style="color: Green;">PARAM</span><span style="color: Gray;"> </span><span style="color: #00008b;">NAME</span><span style="color: Gray;">=</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">FileName</span><span style="color: #8b0000;">&quot;</span><span style="color: Gray;"> </span><span style="color: #00008b;">VALUE</span><span style="color: Gray;">=</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">cdaudi</span><span style="color: #8b0000;">&quot;</span><span style="color: Olive;">&gt;</span><span style="color: Gray;"><br /></span><span style="color: Olive;">&lt;</span><span style="color: Green;">PARAM</span><span style="color: Gray;"> </span><span style="color: #00008b;">NAME</span><span style="color: Gray;">=</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">AutoStart</span><span style="color: #8b0000;">&quot;</span><span style="color: Gray;"> </span><span style="color: #00008b;">VALUE</span><span style="color: Gray;">=</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">0</span><span style="color: #8b0000;">&quot;</span><span style="color: Olive;">&gt;</span><span style="color: Gray;"><br /></span><span style="color: Olive;">&lt;</span><span style="color: Green;">PARAM</span><span style="color: Gray;"> </span><span style="color: #00008b;">NAME</span><span style="color: Gray;">=</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">ShowControls</span><span style="color: #8b0000;">&quot;</span><span style="color: Gray;"> </span><span style="color: #00008b;">VALUE</span><span style="color: Gray;">=</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">1</span><span style="color: #8b0000;">&quot;</span><span style="color: Olive;">&gt;</span><span style="color: Gray;"><br /></span><span style="color: Olive;">&lt;</span><span style="color: Green;">PARAM</span><span style="color: Gray;"> </span><span style="color: #00008b;">NAME</span><span style="color: Gray;">=</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">ShowStatusBar</span><span style="color: #8b0000;">&quot;</span><span style="color: Gray;"> </span><span style="color: #00008b;">VALUE</span><span style="color: Gray;">=</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">1</span><span style="color: #8b0000;">&quot;</span><span style="color: Olive;">&gt;</span><span style="color: Gray;"><br /></span><span style="color: Olive;">&lt;</span><span style="color: Green;">PARAM</span><span style="color: Gray;"> </span><span style="color: #00008b;">NAME</span><span style="color: Gray;">=</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">ShowDisplay</span><span style="color: #8b0000;">&quot;</span><span style="color: Gray;"> </span><span style="color: #00008b;">VALUE</span><span style="color: Gray;">=</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">1</span><span style="color: #8b0000;">&quot;</span><span style="color: Olive;">&gt;</span><span style="color: Gray;"><br /></span><span style="color: Olive;">&lt;/</span><span style="color: Green;">OBJECT</span><span style="color: Olive;">&gt;</span><span style="color: Gray;"><br /></span><span style="color: Olive;">&lt;/</span><span style="color: Green;">BODY</span><span style="color: Olive;">&gt;</span><span style="color: Gray;"><br /></span><span style="color: Olive;">&lt;/</span><span style="color: Green;">HTML</span><span style="color: Olive;">&gt;</span></div></div>
<p>之后你可以用 Play 方法播放 CD 了。<br />
你可以在 windows 媒体元文件中指定播放顺序以及每个音轨的信息。示例如下：</p>
<div class="hl-surround"><div class="hl-main"><span style="color: Olive;">&lt;</span><span style="color: Green;">ASX</span><span style="color: Gray;"> </span><span style="color: #00008b;">VERSION</span><span style="color: Gray;">=</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">3.0</span><span style="color: #8b0000;">&quot;</span><span style="color: Olive;">&gt;</span><span style="color: Gray;"><br /></span><span style="color: Olive;">&lt;</span><span style="color: Green;">TITLE</span><span style="color: Olive;">&gt;</span><span style="color: Gray;">CD Audio with the Media Player</span><span style="color: Olive;">&lt;/</span><span style="color: Green;">TITLE</span><span style="color: Olive;">&gt;</span><span style="color: Gray;"><br /></span><span style="color: Olive;">&lt;</span><span style="color: Green;">AUTHOR</span><span style="color: Olive;">&gt;</span><span style="color: Gray;">Windows Media Technologies</span><span style="color: Olive;">&lt;/</span><span style="color: Green;">AUTHOR</span><span style="color: Olive;">&gt;</span><span style="color: Gray;"><br /></span><span style="color: Olive;">&lt;</span><span style="color: Green;">COPYRIGHT</span><span style="color: Olive;">&gt;</span><span style="color: Gray;">(c) 1999, Microsoft, Inc.</span><span style="color: Olive;">&lt;/</span><span style="color: Green;">COPYRIGHT</span><span style="color: Olive;">&gt;</span><span style="color: Gray;"><br />&nbsp;<br /></span><span style="color: Olive;">&lt;</span><span style="color: Green;">ENTRY</span><span style="color: Olive;">&gt;</span><span style="color: Gray;"><br /></span><span style="color: Olive;">&lt;</span><span style="color: Green;">TITLE</span><span style="color: Olive;">&gt;</span><span style="color: Gray;">Track 1: Title 1</span><span style="color: Olive;">&lt;/</span><span style="color: Green;">TITLE</span><span style="color: Olive;">&gt;</span><span style="color: Gray;"><br /></span><span style="color: Olive;">&lt;</span><span style="color: Green;">REF</span><span style="color: Gray;"> </span><span style="color: #00008b;">href</span><span style="color: Gray;">=</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">/blog/cdaudi</span><span style="color: #8b0000;">&quot;</span><span style="color: Gray;"> </span><span style="color: Olive;">/&gt;</span><span style="color: Gray;"><br /></span><span style="color: Olive;">&lt;</span><span style="color: Green;">STARTMARKER</span><span style="color: Gray;"> </span><span style="color: #00008b;">NUMBER</span><span style="color: Gray;">=</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">1</span><span style="color: #8b0000;">&quot;</span><span style="color: Olive;">/&gt;</span><span style="color: Gray;"> <br /></span><span style="color: Olive;">&lt;</span><span style="color: Green;">ENDMARKER</span><span style="color: Gray;"> </span><span style="color: #00008b;">NUMBER</span><span style="color: Gray;">=</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">2</span><span style="color: #8b0000;">&quot;</span><span style="color: Olive;">/&gt;</span><span style="color: Gray;"> <br /></span><span style="color: Olive;">&lt;/</span><span style="color: Green;">ENTRY</span><span style="color: Olive;">&gt;</span><span style="color: Gray;"><br />&nbsp;<br /></span><span style="color: Olive;">&lt;</span><span style="color: Green;">ENTRY</span><span style="color: Olive;">&gt;</span><span style="color: Gray;"><br /></span><span style="color: Olive;">&lt;</span><span style="color: Green;">TITLE</span><span style="color: Olive;">&gt;</span><span style="color: Gray;">Track 2: Title 2</span><span style="color: Olive;">&lt;/</span><span style="color: Green;">TITLE</span><span style="color: Olive;">&gt;</span><span style="color: Gray;"><br /></span><span style="color: Olive;">&lt;</span><span style="color: Green;">REF</span><span style="color: Gray;"> </span><span style="color: #00008b;">href</span><span style="color: Gray;">=</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">/blog/cdaudi</span><span style="color: #8b0000;">&quot;</span><span style="color: Gray;"> </span><span style="color: Olive;">/&gt;</span><span style="color: Gray;"><br /></span><span style="color: Olive;">&lt;</span><span style="color: Green;">STARTMARKER</span><span style="color: Gray;"> </span><span style="color: #00008b;">NUMBER</span><span style="color: Gray;">=</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">2</span><span style="color: #8b0000;">&quot;</span><span style="color: Olive;">/&gt;</span><span style="color: Gray;"> <br /></span><span style="color: Olive;">&lt;</span><span style="color: Green;">ENDMARKER</span><span style="color: Gray;"> </span><span style="color: #00008b;">NUMBER</span><span style="color: Gray;">=</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">3</span><span style="color: #8b0000;">&quot;</span><span style="color: Olive;">/&gt;</span><span style="color: Gray;"> <br /></span><span style="color: Olive;">&lt;/</span><span style="color: Green;">ENTRY</span><span style="color: Olive;">&gt;</span><span style="color: Gray;"><br />&nbsp;<br /></span><span style="color: Olive;">&lt;</span><span style="color: Green;">ENTRY</span><span style="color: Olive;">&gt;</span><span style="color: Gray;"><br /></span><span style="color: Olive;">&lt;</span><span style="color: Green;">TITLE</span><span style="color: Olive;">&gt;</span><span style="color: Gray;">Track 3: Title 3</span><span style="color: Olive;">&lt;/</span><span style="color: Green;">TITLE</span><span style="color: Olive;">&gt;</span><span style="color: Gray;"><br /></span><span style="color: Olive;">&lt;</span><span style="color: Green;">REF</span><span style="color: Gray;"> </span><span style="color: #00008b;">href</span><span style="color: Gray;">=</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">/blog/cdaudi</span><span style="color: #8b0000;">&quot;</span><span style="color: Gray;"> </span><span style="color: Olive;">/&gt;</span><span style="color: Gray;"><br /></span><span style="color: Olive;">&lt;</span><span style="color: Green;">STARTMARKER</span><span style="color: Gray;"> </span><span style="color: #00008b;">NUMBER</span><span style="color: Gray;">=</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">3</span><span style="color: #8b0000;">&quot;</span><span style="color: Olive;">/&gt;</span><span style="color: Gray;"> <br /></span><span style="color: Olive;">&lt;</span><span style="color: Green;">ENDMARKER</span><span style="color: Gray;"> </span><span style="color: #00008b;">NUMBER</span><span style="color: Gray;">=</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">4</span><span style="color: #8b0000;">&quot;</span><span style="color: Olive;">/&gt;</span><span style="color: Gray;"> <br /></span><span style="color: Olive;">&lt;/</span><span style="color: Green;">ENTRY</span><span style="color: Olive;">&gt;</span><span style="color: Gray;"><br />&nbsp;<br /></span><span style="color: Olive;">&lt;</span><span style="color: Green;">ENTRY</span><span style="color: Olive;">&gt;</span><span style="color: Gray;"><br /></span><span style="color: Olive;">&lt;</span><span style="color: Green;">TITLE</span><span style="color: Olive;">&gt;</span><span style="color: Gray;">Track 4: Title 4</span><span style="color: Olive;">&lt;/</span><span style="color: Green;">TITLE</span><span style="color: Olive;">&gt;</span><span style="color: Gray;"><br /></span><span style="color: Olive;">&lt;</span><span style="color: Green;">REF</span><span style="color: Gray;"> </span><span style="color: #00008b;">href</span><span style="color: Gray;">=</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">/blog/cdaudi</span><span style="color: #8b0000;">&quot;</span><span style="color: Gray;"> </span><span style="color: Olive;">/&gt;</span><span style="color: Gray;"><br /></span><span style="color: Olive;">&lt;</span><span style="color: Green;">STARTMARKER</span><span style="color: Gray;"> </span><span style="color: #00008b;">NUMBER</span><span style="color: Gray;">=</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">4</span><span style="color: #8b0000;">&quot;</span><span style="color: Olive;">/&gt;</span><span style="color: Gray;"> <br /></span><span style="color: Olive;">&lt;/</span><span style="color: Green;">ENTRY</span><span style="color: Olive;">&gt;</span><span style="color: Gray;"><br /></span><span style="color: Olive;">&lt;/</span><span style="color: Green;">ASX</span><span style="color: Olive;">&gt;</span></div></div>
<p>参考资料来源：CSDN </p>
]]></content:encoded>
			<wfw:commentRss>http://www.toplee.com/blog/145.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Flash 视频(FLV)编码,转换,录制,播放方案参考</title>
		<link>http://www.toplee.com/blog/151.html</link>
		<comments>http://www.toplee.com/blog/151.html#comments</comments>
		<pubDate>Sat, 10 Jun 2006 11:04:08 +0000</pubDate>
		<dc:creator>Michael</dc:creator>
				<category><![CDATA[C / Erlang / Lua]]></category>
		<category><![CDATA[技术交流]]></category>

		<guid isPermaLink="false">http://www.toplee.com/blog/?p=151</guid>
		<description><![CDATA[今天看到Danger`s的博客,看到了这个信息,非常的有用啊,收藏了. 客户端编码工具(Client-Side-FLV-Encoding) 场景:拿到一个 MPG 或 AVI 文件,打算在个人电脑上转换成FLV. 1,Sorenson Squeeze 2,Riva FLV Encoder 3,Turbine Video Encoder 4,Flix Exporter 5,Flash 自带的Flash Video Exporter 更多&#8230; 服务器端转换工具(Server-Side-FLV-Conversion) 场景:想把 MPG 或 AVI 上传到你的服务器并自动转换成 FLV 吗? 1,FFmpeg &#124; 教程一 &#124; 教程二(Google Video 使用的就是这个东东.) 2,Flix Engine &#124; 教程 &#124; 范例 3,Turbine Video Engine 4,Video to Flash Console &#160; 录像/实时广播(Record/Broadcast) 场景:想制作一个语音视频Blog满足自恋的欲望吗？ 1,RED5 2,Flash [...]]]></description>
			<content:encoded><![CDATA[<p>今天看到Danger`s的博客,看到了这个信息,非常的有用啊,收藏了.</p>
<p>客户端编码工具(Client-Side-FLV-Encoding)<br />
场景:拿到一个 MPG 或 AVI 文件,打算在个人电脑上转换成FLV.<br />
1,<a href="http://www.sorensontech.com/solutions/prod/mx_win.php" target="_blank">Sorenson Squeeze</a><br />
2,<a href="http://www.rivavx.com/index.php?encoder&amp;L=3" target="_blank">Riva FLV Encoder</a><br />
3,<a href="http://www.blue-pacific.com/products/turbinevideo/default.htm" target="_blank">Turbine Video Encoder</a><br />
4,<a href="http://www.on2.com/consumer/flix-exporter/" target="_blank">Flix Exporter</a><br />
5,<a href="http://www.macromedia.com/devnet/flash/articles/flv_exporter_print.html" target="_blank">Flash 自带的Flash Video Exporter</a><br />
<a href="http://dengjie.com/weblog/comments.asp?post_id=1096" target="_blank">更多&#8230;</a><br />
<span id="more-151"></span></p>
<p>服务器端转换工具(Server-Side-FLV-Conversion)<br />
场景:想把 MPG 或 AVI 上传到你的服务器并自动转换成 FLV 吗?<br />
1,<a href="http://sourceforge.net/projects/ffmpeg" target="_blank">FFmpeg</a> | <a href="http://soenkerohde.com/tutorials/ffmpeg" target="_blank">教程一</a> | <a href="http://klaus.geekserver.net/flash/streaming.html" target="_blank">教程二</a>(Google Video 使用的就是这个东东.)<br />
2,<a href="http://www.on2.com/developer/flix-engine-sdk" target="_blank">Flix Engine</a> | <a href="http://www.flexauthority.com/articlesIndex.cfm" target="_blank">教程</a> | <a href="http://www.flexauthority.com/Samples/FlixEngine/index.html" target="_blank">范例</a><br />
3,<a href="http://www.blue-pacific.com/products/turbinevideosdk/default.htm" target="_blank">Turbine Video Engine</a><br />
4,<a href="http://www.geovid.com/Video_to_Flash_Console" target="_blank">Video to Flash Console</a><br />
&nbsp;</p>
<p>录像/实时广播(Record/Broadcast)<br />
场景:想制作一个语音视频Blog满足自恋的欲望吗？<br />
1,<a href="http://www.osflash.org/red5" target="_blank">RED5</a><br />
2,<a href="http://www.macromedia.com/go/fms" target="_blank">Flash Media Server</a></p>
<p>在线编码,分享视频(Online Encode &amp; Share)<br />
场景:想不花钱就可以在线分享你的视频吗?<br />
1,<a href="http://video.google.com/" target="_blank">Google Video</a><br />
2,<a href="http://www.youtube.com/" target="_blank">You Tube</a></p>
<p>本地 FLV 文件播放器(FLV Player)<br />
场景:拿到了 FLV 文件不知道怎么播放了．<br />
1,<a href="http://www.martijndevisser.com/2005/10/flv_player_updated.html" target="_blank">martijndevisser FLV Player</a><br />
2,<a href="http://www.flashguru.co.uk/free-tool-flash-video-player" target="_blank">FlashGuru FLV Player</a><br />
3,<a href="http://fczone.com/2006/01/fms-media-player.cfm" target="_blank">FCZone FLV Player</a></p>
<p>在线 FLV 文件播放器(Online FLV Player)<br />
场景:知道一个在线FLV地址,又懒得下载和安装播放器．<br />
1,<a href="http://dengjie.com/loadr" target="_blank">Loadr</a><br />
2,<a href="http://dengjie.com/loadr/r.swf?file=/temp/google_player.swf&amp;clr=000FFF" target="_blank">Google Player Generator</a></p>
<p>更多相关软件看这篇文章:<a href="http://www.macromedia.com/cfusion/knowledgebase/index.cfm?id=tn_14571" target="_blank">Flash 网站的视频策略</a></p>
<p>原作者Trackback url： http://www.qiter.com/blog/trackback.asp?tbID=346</p>
]]></content:encoded>
			<wfw:commentRss>http://www.toplee.com/blog/151.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>正则表达式参考整理</title>
		<link>http://www.toplee.com/blog/102.html</link>
		<comments>http://www.toplee.com/blog/102.html#comments</comments>
		<pubDate>Mon, 05 Jun 2006 06:06:43 +0000</pubDate>
		<dc:creator>Michael</dc:creator>
				<category><![CDATA[C / Erlang / Lua]]></category>
		<category><![CDATA[技术交流]]></category>

		<guid isPermaLink="false">http://www.toplee.com/blog/?p=102</guid>
		<description><![CDATA[Show All &#160; 1 2 3 正则表达式是烦琐的，但是强大的，学会之后的应用会让你除了提高效率外，会给你带来绝对的成就感。只要认真去阅读这些资料，加上应用的时候进行一定的参考，掌握正则表达式不是问题。 索引 1. 引子 2. 正则表达式的历史 3. 正则表达式定义 3.1 普通字符 3.2 非打印字符 3.3 特殊字符 3.4 限定符 3.5 定位符 3.6 选择 3.7 后向引用 4. 各种操作符的运算优先级 5. 全部符号解释 6. 部分例子 7. 正则表达式匹配规则 7.1 基本模式匹配 7.2 字符簇 7.3 确定重复出现 1. 引子 　　目前，正则表达式已经在很多软件中得到广泛的应用，包括*nix（Linux, Unix等），HP等操作系统，PHP，C#，Java等开发环境，以及很多的应用软件中，都可以看到正则表达式的影子。 　　正则表达式的使用，可以通过简单的办法来实现强大的功能。为了简单有效而又不失强大，造成了正则表达式代码的难度较大，学习起来也不是很容易，所以需要付出一些努力才行，入门之后参照一定的参考，使用起来还是比较简单有效的。 例子： ^.+@.+\\..+$ 　　这样的代码曾经多次把我自己给吓退过。可能很多人也是被这样的代码给吓跑的吧。继续阅读本文将让你也可以自由应用这样的代码。 　　注意：这里的第7部分跟前面的内容看起来似乎有些重复，目的是把前面表格里的部分重新描述了一次，目的是让这些内容更容易理解。 2. 正则表达式的历史 　　正则表达式的“祖先”可以一直上溯至对人类神经系统如何工作的早期研究。Warren McCulloch [...]]]></description>
			<content:encoded><![CDATA[<div id="pagepost_102" class="pagepost"><div id="pagebar_top_102" class="pagebar"><a name="pp0"></a><a name="pp1"></a><a name="pp2"></a><a name="pp3"></a><a href="#pp0" onclick="pagepost(102, 0);">Show All</a> &nbsp; <strong style="color: #1E90FF;" title="">1</strong> <a href="#pp2" title="" onclick="pagepost(102, 2);">2</a> <a href="#pp3" title="" onclick="pagepost(102, 3);">3</a> <strong id="pagebar_loading_102" style="color: green;"></strong></div><p>正则表达式是烦琐的，但是强大的，学会之后的应用会让你除了提高效率外，会给你带来绝对的成就感。只要认真去阅读这些资料，加上应用的时候进行一定的参考，掌握正则表达式不是问题。</p>
<p>索引</p>
<p>1. 引子<br />
2. 正则表达式的历史<br />
3. 正则表达式定义</p>
<p>3.1 普通字符<br />
3.2 非打印字符<br />
3.3 特殊字符<br />
3.4 限定符<br />
3.5 定位符<br />
3.6 选择<br />
3.7 后向引用</p>
<p>4. 各种操作符的运算优先级<br />
5. 全部符号解释<br />
6. 部分例子<br />
7. 正则表达式匹配规则</p>
<p>7.1 基本模式匹配<br />
7.2 字符簇<br />
7.3 确定重复出现</p>
<p><span id="more-102"></span></p>
<p>1. 引子<br />
　　目前，正则表达式已经在很多软件中得到广泛的应用，包括*nix（Linux, Unix等），HP等操作系统，PHP，C#，Java等开发环境，以及很多的应用软件中，都可以看到正则表达式的影子。</p>
<p>　　正则表达式的使用，可以通过简单的办法来实现强大的功能。为了简单有效而又不失强大，造成了正则表达式代码的难度较大，学习起来也不是很容易，所以需要付出一些努力才行，入门之后参照一定的参考，使用起来还是比较简单有效的。</p>
<div class="hl-surround"><div class="hl-main">例子： ^.+@.+\\..+$</div></div>
<p>　　这样的代码曾经多次把我自己给吓退过。可能很多人也是被这样的代码给吓跑的吧。继续阅读本文将让你也可以自由应用这样的代码。</p>
<p>　　注意：这里的第7部分跟前面的内容看起来似乎有些重复，目的是把前面表格里的部分重新描述了一次，目的是让这些内容更容易理解。</p>
<p>2. 正则表达式的历史<br />
　　正则表达式的“祖先”可以一直上溯至对人类神经系统如何工作的早期研究。Warren McCulloch 和 Walter Pitts 这两位神经生理学家研究出一种数学方式来描述这些神经网络。<br />
　　1956 年, 一位叫 Stephen Kleene 的数学家在 McCulloch 和 Pitts 早期工作的基础上，发表了一篇标题为“神经网事件的表示法”的论文，引入了正则表达式的概念。正则表达式就是用来描述他称为“正则集的代数”的表达式，因此采用“正则表达式”这个术语。</p>
<p>　　随后，发现可以将这一工作应用于使用 Ken Thompson 的计算搜索算法的一些早期研究，Ken Thompson 是 Unix 的主要发明人。正则表达式的第一个实用应用程序就是 Unix 中的 qed 编辑器。</p>
<p>　　如他们所说，剩下的就是众所周知的历史了。从那时起直至现在正则表达式都是基于文本的编辑器和搜索工具中的一个重要部分。</p>
<p>　</p>
<p>3. 正则表达式定义<br />
　　正则表达式(regular expression)描述了一种字符串匹配的模式，可以用来检查一个串是否含有某种子串、将匹配的子串做替换或者从某个串中取出符合某个条件的子串等。</p>
<div class="hl-surround"><div class="hl-main">列目录时，　dir *.txt或ls *.txt中的*.txt就不是一个正则表达式,因为这里*与正则式的*的含义是不同的。 <br />　　正则表达式是由普通字符（例如字符 a 到 z）以及特殊字符（称为元字符）组成的文字模式。正则表达式作为一个模板，将某个字符模式与所搜索的字符串进行匹配。</div></div>
<p>3.1 普通字符<br />
　　由所有那些未显式指定为元字符的打印和非打印字符组成。这包括所有的大写和小写字母字符，所有数字，所有标点符号以及一些符号。 </p>
<p>3.2 非打印字符<br />
字符  含义<br />
\cx  匹配由x指明的控制字符。例如， \cM 匹配一个 Control-M 或回车符。x 的值必须为 A-Z 或 a-z 之一。否则，将 c 视为一个原义的 &#8216;c&#8217; 字符。<br />
\f  匹配一个换页符。等价于 \x0c 和 \cL。<br />
\n  匹配一个换行符。等价于 \x0a 和 \cJ。<br />
\r  匹配一个回车符。等价于 \x0d 和 \cM。<br />
\s  匹配任何空白字符，包括空格、制表符、换页符等等。等价于 [ \f\n\r\t\v]。<br />
\S  匹配任何非空白字符。等价于 [^ \f\n\r\t\v]。<br />
\t  匹配一个制表符。等价于 \x09 和 \cI。<br />
\v  匹配一个垂直制表符。等价于 \x0b 和 \cK。 </p>
<p>　<br />
3.3 特殊字符<br />
　　所谓特殊字符，就是一些有特殊含义的字符，如上面说的&#8221;*.txt&#8221;中的*，简单的说就是表示任何字符串的意思。如果要查找文件名中有＊的文件，则需要对＊进行转义，即在其前加一个\。ls \*.txt。正则表达式有以下特殊字符。<br />
　</p>
<p>特别字符 说明<br />
$ 匹配输入字符串的结尾位置。如果设置了 RegExp 对象的 Multiline 属性，则 $ 也匹配 &#8216;\n&#8217; 或 &#8216;\r&#8217;。要匹配 $ 字符本身，请使用 \$。<br />
( ) 标记一个子表达式的开始和结束位置。子表达式可以获取供以后使用。要匹配这些字符，请使用 \( 和 \)。<br />
* 匹配前面的子表达式零次或多次。要匹配 * 字符，请使用 \*。<br />
+ 匹配前面的子表达式一次或多次。要匹配 + 字符，请使用 \+。<br />
. 匹配除换行符 \n之外的任何单字符。要匹配 .，请使用 \。<br />
[  标记一个中括号表达式的开始。要匹配 [，请使用 \[。<br />
? 匹配前面的子表达式零次或一次，或指明一个非贪婪限定符。要匹配 ? 字符，请使用 \?。<br />
\ 将下一个字符标记为或特殊字符、或原义字符、或向后引用、或八进制转义符。例如， 'n' 匹配字符 'n'。'\n' 匹配换行符。序列 '\\' 匹配 "\"，而 '\(' 则匹配 "("。<br />
^ 匹配输入字符串的开始位置，除非在方括号表达式中使用，此时它表示不接受该字符集合。要匹配 ^ 字符本身，请使用 \^。<br />
{ 标记限定符表达式的开始。要匹配 {，请使用 \{。<br />
| 指明两项之间的一个选择。要匹配 |，请使用 \|。 </p>
<p>　　构造正则表达式的方法和创建数学表达式的方法一样。也就是用多种元字符与操作符将小的表达式结合在一起来创建更大的表达式。正则表达式的组件可以是单个的字符、字符集合、字符范围、字符间的选择或者所有这些组件的任意组合。<br />
　</p>
<p>3.4 限定符<br />
　　限定符用来指定正则表达式的一个给定组件必须要出现多少次才能满足匹配。有*或+或?或{n}或{n,}或{n,m}共6种。<br />
*、+和?限定符都是贪婪的，因为它们会尽可能多的匹配文字，只有在它们的后面加上一个?就可以实现非贪婪或最小匹配。<br />
　　正则表达式的限定符有：<br />
　 字符  描述<br />
*  匹配前面的子表达式零次或多次。例如，zo* 能匹配 "z" 以及 "zoo"。* 等价于{0,}。<br />
+  匹配前面的子表达式一次或多次。例如，'zo+' 能匹配 "zo" 以及 "zoo"，但不能匹配 "z"。+ 等价于 {1,}。<br />
?  匹配前面的子表达式零次或一次。例如，"do(es)?" 可以匹配 "do" 或 "does" 中的"do" 。? 等价于 {0,1}。<br />
{n}  n 是一个非负整数。匹配确定的 n 次。例如，'o{2}' 不能匹配 "Bob" 中的 'o'，但是能匹配 "food" 中的两个 o。<br />
{n,}  n 是一个非负整数。至少匹配n 次。例如，'o{2,}' 不能匹配 "Bob" 中的 'o'，但能匹配 "foooood" 中的所有 o。'o{1,}' 等价于 'o+'。'o{0,}' 则等价于 'o*'。<br />
{n,m}  m 和 n 均为非负整数，其中n <= m。最少匹配 n 次且最多匹配 m 次。例如，"o{1,3}" 将匹配 "fooooood" 中的前三个 o。'o{0,1}' 等价于 'o?'。请注意在逗号和两个数之间不能有空格。 </p>
<p>3.5 定位符<br />
　　用来描述字符串或单词的边界，^和$分别指字符串的开始与结束，\b描述单词的前或后边界，\B表示非单词边界。不能对定位符使用限定符。 </p>
<p>3.6 选择<br />
　　用圆括号将所有选择项括起来，相邻的选择项之间用|分隔。但用圆括号会有一个副作用，是相关的匹配会被缓存，此时可用?:放在第一个选项前来消除这种副作用。<br />
　　其中?:是非捕获元之一，还有两个非捕获元是?=和?!，这两个还有更多的含义，前者为正向预查，在任何开始匹配圆括号内的正则表达式模式的位置来匹配搜索字符串，后者为负向预查，在任何开始不匹配该正则表达式模式的位置来匹配搜索字符串。 </p>
<p>3.7 后向引用<br />
　　对一个正则表达式模式或部分模式两边添加圆括号将导致相关匹配存储到一个临时缓冲区中，所捕获的每个子匹配都按照在正则表达式模式中从左至右所遇到的内容存储。存储子匹配的缓冲区编号从 1 开始，连续编号直至最大 99 个子表达式。每个缓冲区都可以使用 '\n' 访问，其中 n 为一个标识特定缓冲区的一位或两位十进制数。<br />
　　可以使用非捕获元字符 '?:', '?=', or '?!' 来忽略对相关匹配的保存。<br /><div id="pagebar_bottom_102" class="pagebar"><a href="#pp0" onclick="pagepost(102, 0);">Show All</a> &nbsp; <strong style="color: #1E90FF;" title="">1</strong> <a href="#pp2" title="" onclick="pagepost(102, 2);">2</a> <a href="#pp3" title="" onclick="pagepost(102, 3);">3</a> </div></div>]]></content:encoded>
			<wfw:commentRss>http://www.toplee.com/blog/102.html/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>邮件系统升级为 postfix+ sasl2+ courier-imap+ mailscanner+ webmail</title>
		<link>http://www.toplee.com/blog/92.html</link>
		<comments>http://www.toplee.com/blog/92.html#comments</comments>
		<pubDate>Thu, 01 Jun 2006 08:28:34 +0000</pubDate>
		<dc:creator>Michael</dc:creator>
				<category><![CDATA[C / Erlang / Lua]]></category>
		<category><![CDATA[技术交流]]></category>

		<guid isPermaLink="false">http://www.toplee.com/blog/?p=92</guid>
		<description><![CDATA[前两天完成了系统从FreeBSD4.10Stable升级到6.1Release，在内核里面增加了对ipfw和xeon处理器的超线程支持，并在这基础上把以前基于sendmail和sasl的邮件系统升级到了postfix，增加了对垃圾邮件、病毒检测的支持，还配置了一套免费的webmail系统，可以通过http://mail.toplee.com访问。 这次升级过程可以说费时费力，中间经历了若干次各种问题，最终的结果还是比较满意的，在这里把此次升级的笔记整理一下。由于整个升级的过程非常复杂，这里就把最关键的几个部分整理出来。 1、升级内核源文件后编译自己定制的内核 在使用cvsup -g -L 2 xxxx升级完源码树和ports树后执行下面的命令 #cd /sys/i386/conf/ #cp ./GENERIC ./TOPLEE （这个名字自己随便改） #vi ./TOPLEE 下面是我在文件中增加和修改的部分，其他内核定制部分使用了默认的数据 #Michael cpu I686_CPU #指定我的机器cpu类型 ident TOPLEE-SMP options SMP #对xoen至强CPU超线程的支持 options SC_DISABLE_REBOOT #屏蔽ctrl+alt+del重启机器的功能 options QUOTA #支持磁盘配额 options IPFIREWALL #支持防火墙 options DUMMYNET options HZ=3000 options IPDIVERT options IPFIREWALL_VERBOSE options IPFIREWALL_VERBOSE_LIMIT=100 options IPSTEALTH options TCP_DROP_SYNFIN options IPFIREWALL_DEFAULT_TO_ACCEPT #options ICMP_BANDLIM options ACCEPT_FILTER_DATA [...]]]></description>
			<content:encoded><![CDATA[<p>前两天完成了系统从FreeBSD4.10Stable升级到6.1Release，在内核里面增加了对ipfw和xeon处理器的超线程支持，并在这基础上把以前基于sendmail和sasl的邮件系统升级到了postfix，增加了对垃圾邮件、病毒检测的支持，还配置了一套免费的webmail系统，可以通过<a href="http://mail.toplee.com">http://mail.toplee.com</a>访问。 </p>
<p>这次升级过程可以说费时费力，中间经历了若干次各种问题，最终的结果还是比较满意的，在这里把此次升级的笔记整理一下。由于整个升级的过程非常复杂，这里就把最关键的几个部分整理出来。<br />
<span id="more-92"></span></p>
<p>1、升级内核源文件后编译自己定制的内核<br />
在使用cvsup -g -L 2 xxxx升级完源码树和ports树后执行下面的命令<br />
#cd /sys/i386/conf/<br />
#cp ./GENERIC ./TOPLEE （这个名字自己随便改）<br />
#vi ./TOPLEE<br />
下面是我在文件中增加和修改的部分，其他内核定制部分使用了默认的数据<br />
<code><br />
#Michael<br />
cpu             I686_CPU    #指定我的机器cpu类型<br />
ident           TOPLEE-SMP<br />
options         SMP         #对xoen至强CPU超线程的支持<br />
options         SC_DISABLE_REBOOT   #屏蔽ctrl+alt+del重启机器的功能<br />
options         QUOTA       #支持磁盘配额</p>
<p>options         IPFIREWALL  #支持防火墙<br />
options         DUMMYNET<br />
options         HZ=3000<br />
options         IPDIVERT<br />
options         IPFIREWALL_VERBOSE<br />
options         IPFIREWALL_VERBOSE_LIMIT=100<br />
options         IPSTEALTH<br />
options         TCP_DROP_SYNFIN<br />
options         IPFIREWALL_DEFAULT_TO_ACCEPT<br />
#options                ICMP_BANDLIM<br />
options         ACCEPT_FILTER_DATA<br />
options         ACCEPT_FILTER_HTTP<br />
#options        IPFILTER<br />
#options        IPFILTER_LOG<br />
#options        IPFILTER_DEFAULT_BLOCK<br />
#END Michael<br />
</code></p>
<p>#/usr/sbin/config TOPLEE<br />
#cd /sys/comile/TOPLEE<br />
#make depend<br />
#make<br />
#make install<br />
在这里，也可使用另外的方法编译新的内核,在修改好TOPLEE文件后<br />
# cd /usr/src<br />
# make buildkernel KERNCONF=TOPLEE<br />
# make installkernel KERNCONF=TOPLEE</p>
<p>到此完成升级，输入reboot重启服务器，在启动过程中可以看到类似下面的提示信息<br />
<code>FreeBSD 6.1-RELEASE #0: Wed May 24 13:32:37 CST 2006<br />
    root@www.toplee.com:/usr/src/sys/i386/compile/TOPLEE<br />
Timecounter "i8254" frequency 1193182 Hz quality 0<br />
CPU: Intel(R) Xeon(TM) CPU 3.00GHz (2991.18-MHz 686-class CPU)<br />
  Origin = "GenuineIntel"  Id = 0xf29  Stepping = 9<br />
  Features=0xbfebfbff<FPU,VME,DE,PSE,TSC,MSR,PAE,MCE,CX8,APIC,SEP,MTRR,PGE,MCA,CMOV,PAT,PSE36,CLFLUSH,DTS,ACPI,MMX,FXSR,SSE,SSE2,SS,<br />
HTT,TM,PBE><br />
  Features2=0x4400<CNTX-ID,<b14>><br />
  Logical CPUs per core: 2<br />
real memory  = 1073676288 (1023 MB)<br />
avail memory = 1041567744 (993 MB)<br />
ACPI APIC Table: < A M I  OEMAPIC ><br />
FreeBSD/SMP: Multiprocessor System Detected: 2 CPUs<br />
 cpu0 (BSP): APIC ID:  0<br />
 cpu1 (AP): APIC ID:  1<br />
</code>可以看到系统使用了刚新定制的内核TOPLEE启动，并且支持了至强CPU的超线程。</p>
<p>接下来需要安装下列软件（具体的根据您的需要选择）<br />
Apache<br />
MySQL<br />
php<br />
php-extension<br />
phpmyadmin<br />
proftpd<br />
mrtg<br />
awstats<br />
logrotate<br />
djbdns<br />
net-snmp<br />
openssl<br />
&#8230;<br />
这些软件全部使用FreeBSD的prts进行自动安装，过程都很简单，不多说，有关proftpd、mrtg、awstats、djbdns以及snmp的安装配置可以参照我另外的BLOG。下面重点记录一下postfix相关的部分。</p>
<p>2、postfix 相关安装和关键配置文件记录（待续。。。）</p>
]]></content:encoded>
			<wfw:commentRss>http://www.toplee.com/blog/92.html/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>替代HTML的下一代WEB标记语言XHTML</title>
		<link>http://www.toplee.com/blog/80.html</link>
		<comments>http://www.toplee.com/blog/80.html#comments</comments>
		<pubDate>Sun, 02 Apr 2006 10:21:53 +0000</pubDate>
		<dc:creator>Michael</dc:creator>
				<category><![CDATA[C / Erlang / Lua]]></category>
		<category><![CDATA[技术交流]]></category>

		<guid isPermaLink="false">http://www.toplee.com/blog/?p=80</guid>
		<description><![CDATA[Show All &#160; 1 2 3 4 5 6 最近开始逐渐在开发Web项目中使用更加规范的XHTML来替换html，收集整理了一些XHTML的资料和大家分享。 通过使用XHTML开发的web项目，您可以通过访问 http://validator.w3.org/ 来对您的页面进行验证，看是否满足W3C对XHTML规范的要求。我的这个BLOG使用了国外的WordPress，它就是基于XHTML标准来编写的，不过由于我后来增加了不少别人或者自己写的插件，这些插件在部分地方没有严格满足XHTML规范，所以在w3.org的验证上不能完全通过:( 本文是针对W3C相关规范文章资料的翻译。 XHTML 介绍 XHTML is a stricter and cleaner version of HTML. XHTML是更严密代码更整洁的HTML版本 What Is XHTML? XHTML是什么？ XHTML是具有延伸性的超文本标记语言 出现XHTML目的就是要替代HTML XHTML和HTML4.01几乎相同 XHTML是更严密代码更整洁的HTML版本 XHTML的定义形同将HTML视为XML(从代码的结构上) XHTML是W3C的推荐标准 What You Should Already Know 学习前你应该知道些什么 Before you continue you should have a basic understanding of the following: 在继续你的学习前你应该有下列知识的基础： [...]]]></description>
			<content:encoded><![CDATA[<div id="pagepost_80" class="pagepost"><div id="pagebar_top_80" class="pagebar"><a name="pp0"></a><a name="pp1"></a><a name="pp2"></a><a name="pp3"></a><a name="pp4"></a><a name="pp5"></a><a name="pp6"></a><a href="#pp0" onclick="pagepost(80, 0);">Show All</a> &nbsp; <strong style="color: #1E90FF;" title="">1</strong> <a href="#pp2" title="" onclick="pagepost(80, 2);">2</a> <a href="#pp3" title="" onclick="pagepost(80, 3);">3</a> <a href="#pp4" title="" onclick="pagepost(80, 4);">4</a> <a href="#pp5" title="" onclick="pagepost(80, 5);">5</a> <a href="#pp6" title="" onclick="pagepost(80, 6);">6</a> <strong id="pagebar_loading_80" style="color: green;"></strong></div><p>最近开始逐渐在开发Web项目中使用更加规范的XHTML来替换html，收集整理了一些XHTML的资料和大家分享。<br />
通过使用XHTML开发的web项目，您可以通过访问 http://validator.w3.org/ 来对您的页面进行验证，看是否满足W3C对XHTML规范的要求。我的这个BLOG使用了国外的WordPress，它就是基于XHTML标准来编写的，不过由于我后来增加了不少别人或者自己写的插件，这些插件在部分地方没有严格满足XHTML规范，所以在w3.org的验证上不能完全通过:(<br />
本文是针对W3C相关规范文章资料的翻译。</p>
<p><span id="more-80"></span></p>
<p>XHTML 介绍</p>
<p>XHTML is a stricter and cleaner version of HTML.<br />
XHTML是更严密代码更整洁的HTML版本</p>
<p>What Is XHTML?<br />
XHTML是什么？<br />
XHTML是具有延伸性的超文本标记语言<br />
出现XHTML目的就是要替代HTML<br />
XHTML和HTML4.01几乎相同<br />
XHTML是更严密代码更整洁的HTML版本<br />
XHTML的定义形同将HTML视为XML(从代码的结构上)<br />
XHTML是W3C的推荐标准 </p>
<p>What You Should Already Know<br />
学习前你应该知道些什么<br />
Before you continue you should have a basic understanding of the following:<br />
在继续你的学习前你应该有下列知识的基础：</p>
<p>HTML and the basics of building web pages<br />
HTML和基本的WEB页面建立能力<br />
If you want to study HTML first, please read our HTML tutorial.<br />
如果你想先学习HTML，请查阅我们的 HTML 教程.</p>
<p>XHTML is a W3C Recommendation<br />
XHTML是W3C组织推荐的语言<br />
XHTML 1.0 became a W3C Recommendation January 26, 2000.<br />
2000 年1月26 日XHTML1.0成为W3C组织推荐的一种语言</p>
<p>A W3C Recommendation means that the specification is stable, that it has been reviewed by the W3C membership, and that the specification is now a Web standard.<br />
W3C推荐就意味它是稳定的，并被W3C组织的成员所审核，这已经是现在WEB的一个标准了。</p>
<p>W3C defines XHTML as the latest version of HTML. XHTML will gradually replace HTML.<br />
W3C将XHTML定义为HTML的最新版本。XHTML将逐渐替代HTML</p>
<p>Stay updated with the latest web standards with our W3C tutorial.<br />
WEB标准的最新和更新信息尽在我们的 W3C 教程</p>
<p>All New Browsers Support XHTML<br />
所有新型的浏览器都支持XHTML<br />
XHTML is compatible with HTML 4.01.<br />
XHTML与HTML4.01是兼容的</p>
<p>All new browsers have support for XHTML.<br />
所有新型的浏览器都支持XHTML</p>
<p>W3Schools Has Converted To XHTML<br />
W3S网站已经转换成XHTML<br />
XHTML is a reformulation of HTML 4.01 in XML, and can be put to immediate use with existing browsers by following a few simple guidelines.<br />
XHTML是XML形式的HTML4.01，可以通过一些指示直接用于现有的浏览器中。</p>
<p>W3Schools was completely rewritten to XHTML 1.0 in 1999.<br />
W3S在1999年完整的重构成XHTML1.0</p>
<p>A click on this symbol:  <img src="http://www.netvtm.com/w3/xhtml/vxhtml.gif"> validates the XHTML part of this page.<br />
单击这个标志来检验这个页是否符合XHTML</p>
<p>A click on this symbol:  <img src="http://www.netvtm.com/w3/xhtml/vcss.gif"> validates the CSS part of this page.<br />
检验CSS部分 </p>
<div id="pagebar_bottom_80" class="pagebar"><a href="#pp0" onclick="pagepost(80, 0);">Show All</a> &nbsp; <strong style="color: #1E90FF;" title="">1</strong> <a href="#pp2" title="" onclick="pagepost(80, 2);">2</a> <a href="#pp3" title="" onclick="pagepost(80, 3);">3</a> <a href="#pp4" title="" onclick="pagepost(80, 4);">4</a> <a href="#pp5" title="" onclick="pagepost(80, 5);">5</a> <a href="#pp6" title="" onclick="pagepost(80, 6);">6</a> </div></div>]]></content:encoded>
			<wfw:commentRss>http://www.toplee.com/blog/80.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>搞定了笔记本用神州行GPRS包月通过cmwap上网</title>
		<link>http://www.toplee.com/blog/76.html</link>
		<comments>http://www.toplee.com/blog/76.html#comments</comments>
		<pubDate>Sun, 02 Apr 2006 09:20:42 +0000</pubDate>
		<dc:creator>Michael</dc:creator>
				<category><![CDATA[C / Erlang / Lua]]></category>
		<category><![CDATA[技术交流]]></category>

		<guid isPermaLink="false">http://www.toplee.com/blog/?p=76</guid>
		<description><![CDATA[以前外出应急上网的时候，一般都使用笔记本通过红外或者蓝牙连接手机，通过手机的GPRS拨入移动的cmnet来上网，但是这种方式带来的高额费用可以用可怕来形容，除非你申请了移动的200元包月上网，否则千万别这样尝试，按照移动GPRS流量计费方式0.03元/KB来算算，打开新浪的首页如果等到图片都出来完，差不多500KB左右，那么你将为此付出0.03*500=15元，你可能不会相信这是真的，但是事实就是这样，如果你下载一首3MB左右的MP3，你将花掉0.03*1024*3=92.16元，这是不是跟烧钱一样？ 在有过这样惨痛的经历之后，曾经想过申请包月，但是感觉还是挺不值的，家里的ADSL包月才100多块，于是开始尝试曾经听说过的利用移动的cmwap接入上网。 有些人可能还不怎么了解cmwap和cmnet，先说说cmwap和cmnet的区别，很多人都知道这是移动提供的两个不同的接入点，但是说到区别，恐怕很多玩家都不是十分清楚。其实，CMWAP 和 CMNET 只是移动人为划分的两个GPRS接入方式。前者是为手机WAP上网而设立的，后者则主要是为PC、笔记本电脑、PDA等利用GPRS上网服务。它们在实现方式上并没有任何差别，但因为定位不同，所以和CMNET相比，CMWAP便有了部分限制，资费上也存在差别。 【下面部分内容引用网上一些资料】 WAP只是一种GPRS应用模式，它与GRPS的接入方式是无关的。WAP应 用采用的实现方式是“终端＋WAP网关＋WAP服务器”的模式，不同于一般Internet的“终端＋服务器”的工作模式。主要的目的是通过WAP网关完成WAP-WEB的协议转换以达到节省网络流量和兼容现有WEB应用的目的。WAP网关从技术的角度讲，只是一个提供代理服务的主机，它不一定由网络运营商提供。但据我所知，移动GPRS网络目前只有唯一的一个WAP网关：10.0.0.172，有移动提供，用于WAP浏览（HTTP）服务。有一点需要注意，WAP网关和一般意义上的局域网网关是有差别的，标准的WAP网关仅仅实现了HTTP代理的功能，并未完成路由、NAT等局域网网关的功能。这就决定了它在应用上所受到的限制。 为了从应用中区别两者的定位，移动对CMWAP作了一定的限制，主要表现在CMWAP接入时只能访问GPRS网络内的IP（10.*.*.*），而无法通过路由访问Internet。我们用CMWAP浏览Internet上的网页就是通过WAP网关协议或它提供的HTTP代理服务实现的。也就是需要通过移动GPRS网络唯一的一个WAP网关：10.0.0.172。CMNET拥有完全的Internet访问权，这里就不多说了，主要让我们来看看CMWAP。因为有了上面提到的限制，CMWAP的适用范围就要看WAP网关所提供的支持了。目前，移动的WAP网关对外只提供HTTP代理协议（80和8080端口）和WAP网关协议（9201端口）。 　　因此，只有满足以下两个条件的应用才能在移动的CMWAP接入方式下正常工作：1. 应用程序的网络请求基于HTTP协议。2. 应用程序支持HTTP代理协议或WAP网关协议。而cmnet则不受任何的限制。 【引用网上资料结束】 在了解了这些知识之后，就可以开始具体行动了。我买了移动的神州行卡，申请开通了神州行的wap包月15元上网，然后利用蓝牙连接笔记本和手机，在笔记本上新建一个通过蓝牙端口的虚拟mode拨号连接，拨号填入：*99***1# (这是CMWAP的接入号码，*99***2#是cmnet接入号码，千万别填错了），用户名口令都留空。基本的准备就ok了！ 这时就可以尝试在笔记本上进行拨号接入了，我也不知道哪里搞得不对，反正尝试了不下20次都没有拨通，后来重新安装了蓝牙软件ITV和手机的modem若干次，总算是拨通了。 不过事情到此还没有完，这是等于笔记本是通过手机连接到了cmwap，这时仅能访问wap网站，这相当于是移动的一个内部局域网，比如wap.monternet.com都是可以访问的，但是访问internet网站、QQ之类的就不行，必须通过移动提供的代理网关，于是可以设置ie的代理，按照资料我们知道代理地址10.0.0.172，端口80，QQ的代理设置也可以使用这个。 设置好了代理之后，我的QQ可以访问了，但是发现通过IE还是不能访问互联网网站，提示要下载保存页面之类的，这个主要因为移动在代理的网关上进行了限制，如果判断你的浏览器不是手机浏览器（手机默认为OPENWAVE浏览器），就会作出限制，于是我们需要设置修改IE浏览器的user-agent信息，网上一些资料告知可以通过修改注册表来实现，把下面的一段内容保存为*.reg文件，然后双击导入注册表，重启电脑后基本就可以了。 Windows Registry Editor Version 5.00 [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Internet Settings\5.0\User Agent] @="OpenWave" [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Internet Settings\5.0\User Agent\Post Platform] ".NET CLR 1.1.4322"="" "OpenWave"="" 但是这种方式会让你的电脑在正常访问一些网上银行的时候出现无法登录的问题，而且也不能保证完全有效，经过我测试后放弃了这样的方式。 另外可选的方式可以使用非IE内核的浏览器上网，比如Opera、Firefox等，经过测试Opera需要安装一个user-agent定制的插件，效果不是很好，Firefox比较好用。但是我还是遇到了一些问题，最常见的问题就是部分网站还是存在提示保存下载页面的现象，还有xml或者xhtml（比如bbs.9tmd.com故人居论坛）格式的页面如果有一点语法错误就无法显示，这个基本通过修改注册表和更换浏览器无法解决。 网上一个哥们写了一个本地的proxy代理，相当于foxmail的本地代理类型，在代理里面处理提示保存或者报错的xml页面，进行解析返回到本地浏览器，并且还进行dns缓存，效果非常不错，最终这个成为了我的终极解决方案。 总结一下最后的方案： 1、购买神州行，开通15元wap包月 2、安装ITV蓝牙软件，通过蓝牙连接电脑和您的手机（您的手机必须要有蓝牙modem，请参照说明书，如果没有可以使用红外或者数据线也行） 3、在电脑上新建一个拨号连接，选择modem为您的手机modem，设置拨号 *99***1# 用户名口令为空 4、安装一个本地http代理软件，去搜索引擎搜索一下，应该还能找到这个软件下载，你也可以试试我放弃的两种方式，修改注册表和更换浏览器上网 5、设置代理10.0.0.172:80 6、拨号上网 全部搞定！现在我在外面的时候就可以随时利用笔记本通过手机连接上网，费用为包月15元，速度和电话拨号的速度相当，能满足大部分的需求了:) 把此经验和大家分享，希望对您有所帮助。]]></description>
			<content:encoded><![CDATA[<p>以前外出应急上网的时候，一般都使用笔记本通过红外或者蓝牙连接手机，通过手机的GPRS拨入移动的cmnet来上网，但是这种方式带来的高额费用可以用可怕来形容，除非你申请了移动的200元包月上网，否则千万别这样尝试，按照移动GPRS流量计费方式0.03元/KB来算算，打开新浪的首页如果等到图片都出来完，差不多500KB左右，那么你将为此付出0.03*500=15元，你可能不会相信这是真的，但是事实就是这样，如果你下载一首3MB左右的MP3，你将花掉0.03*1024*3=92.16元，这是不是跟烧钱一样？<br />
<span id="more-76"></span><br />
在有过这样惨痛的经历之后，曾经想过申请包月，但是感觉还是挺不值的，家里的ADSL包月才100多块，于是开始尝试曾经听说过的利用移动的cmwap接入上网。</p>
<p>有些人可能还不怎么了解cmwap和cmnet，先说说cmwap和cmnet的区别，很多人都知道这是移动提供的两个不同的接入点，但是说到区别，恐怕很多玩家都不是十分清楚。其实，CMWAP 和 CMNET 只是移动人为划分的两个GPRS接入方式。前者是为手机WAP上网而设立的，后者则主要是为PC、笔记本电脑、PDA等利用GPRS上网服务。它们在实现方式上并没有任何差别，但因为定位不同，所以和CMNET相比，CMWAP便有了部分限制，资费上也存在差别。</p>
<blockquote><p>【下面部分内容引用网上一些资料】<br />
    WAP只是一种GPRS应用模式，它与GRPS的接入方式是无关的。WAP应 用采用的实现方式是“终端＋WAP网关＋WAP服务器”的模式，不同于一般Internet的“终端＋服务器”的工作模式。主要的目的是通过WAP网关完成WAP-WEB的协议转换以达到节省网络流量和兼容现有WEB应用的目的。WAP网关从技术的角度讲，只是一个提供代理服务的主机，它不一定由网络运营商提供。但据我所知，移动GPRS网络目前只有唯一的一个WAP网关：10.0.0.172，有移动提供，用于WAP浏览（HTTP）服务。有一点需要注意，WAP网关和一般意义上的局域网网关是有差别的，标准的WAP网关仅仅实现了HTTP代理的功能，并未完成路由、NAT等局域网网关的功能。这就决定了它在应用上所受到的限制。</p>
<p>    为了从应用中区别两者的定位，移动对CMWAP作了一定的限制，主要表现在CMWAP接入时只能访问GPRS网络内的IP（10.*.*.*），而无法通过路由访问Internet。我们用CMWAP浏览Internet上的网页就是通过WAP网关协议或它提供的HTTP代理服务实现的。也就是需要通过移动GPRS网络唯一的一个WAP网关：10.0.0.172。CMNET拥有完全的Internet访问权，这里就不多说了，主要让我们来看看CMWAP。因为有了上面提到的限制，CMWAP的适用范围就要看WAP网关所提供的支持了。目前，移动的WAP网关对外只提供HTTP代理协议（80和8080端口）和WAP网关协议（9201端口）。</p>
<p>　　因此，只有满足以下两个条件的应用才能在移动的CMWAP接入方式下正常工作：1. 应用程序的网络请求基于HTTP协议。2. 应用程序支持HTTP代理协议或WAP网关协议。而cmnet则不受任何的限制。<br />
【引用网上资料结束】</p></blockquote>
<p>在了解了这些知识之后，就可以开始具体行动了。我买了移动的神州行卡，申请开通了神州行的wap包月15元上网，然后利用蓝牙连接笔记本和手机，在笔记本上新建一个通过蓝牙端口的虚拟mode拨号连接，拨号填入：*99***1# (这是CMWAP的接入号码，*99***2#是cmnet接入号码，千万别填错了），用户名口令都留空。基本的准备就ok了！</p>
<p>这时就可以尝试在笔记本上进行拨号接入了，我也不知道哪里搞得不对，反正尝试了不下20次都没有拨通，后来重新安装了蓝牙软件ITV和手机的modem若干次，总算是拨通了。</p>
<p>不过事情到此还没有完，这是等于笔记本是通过手机连接到了cmwap，这时仅能访问wap网站，这相当于是移动的一个内部局域网，比如wap.monternet.com都是可以访问的，但是访问internet网站、QQ之类的就不行，必须通过移动提供的代理网关，于是可以设置ie的代理，按照资料我们知道代理地址10.0.0.172，端口80，QQ的代理设置也可以使用这个。</p>
<p>设置好了代理之后，我的QQ可以访问了，但是发现通过IE还是不能访问互联网网站，提示要下载保存页面之类的，这个主要因为移动在代理的网关上进行了限制，如果判断你的浏览器不是手机浏览器（手机默认为OPENWAVE浏览器），就会作出限制，于是我们需要设置修改IE浏览器的user-agent信息，网上一些资料告知可以通过修改注册表来实现，把下面的一段内容保存为*.reg文件，然后双击导入注册表，重启电脑后基本就可以了。<br />
<code>Windows Registry Editor Version 5.00</p>
<p>[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Internet Settings\5.0\User Agent]<br />
@="OpenWave"</p>
<p>[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Internet Settings\5.0\User Agent\Post Platform]<br />
".NET CLR 1.1.4322"=""<br />
"OpenWave"=""</code></p>
<p>但是这种方式会让你的电脑在正常访问一些网上银行的时候出现无法登录的问题，而且也不能保证完全有效，经过我测试后放弃了这样的方式。</p>
<p>另外可选的方式可以使用非IE内核的浏览器上网，比如Opera、Firefox等，经过测试Opera需要安装一个user-agent定制的插件，效果不是很好，Firefox比较好用。但是我还是遇到了一些问题，最常见的问题就是部分网站还是存在提示保存下载页面的现象，还有xml或者xhtml（比如bbs.9tmd.com故人居论坛）格式的页面如果有一点语法错误就无法显示，这个基本通过修改注册表和更换浏览器无法解决。</p>
<p>网上一个哥们写了一个本地的proxy代理，相当于foxmail的本地代理类型，在代理里面处理提示保存或者报错的xml页面，进行解析返回到本地浏览器，并且还进行dns缓存，效果非常不错，最终这个成为了我的终极解决方案。</p>
<p>总结一下最后的方案：<br />
1、购买神州行，开通15元wap包月<br />
2、安装ITV蓝牙软件，通过蓝牙连接电脑和您的手机（您的手机必须要有蓝牙modem，请参照说明书，如果没有可以使用红外或者数据线也行）<br />
3、在电脑上新建一个拨号连接，选择modem为您的手机modem，设置拨号 *99***1# 用户名口令为空<br />
4、安装一个本地http代理软件，去搜索引擎搜索一下，应该还能找到这个软件下载，你也可以试试我放弃的两种方式，修改注册表和更换浏览器上网<br />
5、设置代理10.0.0.172:80<br />
6、拨号上网</p>
<p>全部搞定！现在我在外面的时候就可以随时利用笔记本通过手机连接上网，费用为包月15元，速度和电话拨号的速度相当，能满足大部分的需求了:) </p>
<p>把此经验和大家分享，希望对您有所帮助。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.toplee.com/blog/76.html/feed</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>RSS基础教程整理</title>
		<link>http://www.toplee.com/blog/77.html</link>
		<comments>http://www.toplee.com/blog/77.html#comments</comments>
		<pubDate>Sat, 01 Apr 2006 09:37:03 +0000</pubDate>
		<dc:creator>Michael</dc:creator>
				<category><![CDATA[C / Erlang / Lua]]></category>
		<category><![CDATA[技术交流]]></category>

		<guid isPermaLink="false">http://www.toplee.com/blog/?p=77</guid>
		<description><![CDATA[Show All &#160; 1 2 3 WEB2.0我们面对太多有关BLOG、SNS的东西，这中间有个重要的概念是我们需要明白的，那就是RSS聚会，收集了一些入门的资料。本文翻译自W3C官方资料 Linyupark @ W3Schools RSS介绍 RSS was designed to share data like headlines, links and short descriptions of these. RSS 将数据分成像标题，连接和简单描述的形式。（浓缩过的信息） RSS allows fast browsing for news and updates. RSS能快速浏览新闻和更新内容。 &#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8211; What You Should Already Know 哪些是你应该已经知道的 Before you continue you should have a basic understanding of the following: [...]]]></description>
			<content:encoded><![CDATA[<div id="pagepost_77" class="pagepost"><div id="pagebar_top_77" class="pagebar"><a name="pp0"></a><a name="pp1"></a><a name="pp2"></a><a name="pp3"></a><a href="#pp0" onclick="pagepost(77, 0);">Show All</a> &nbsp; <strong style="color: #1E90FF;" title="">1</strong> <a href="#pp2" title="" onclick="pagepost(77, 2);">2</a> <a href="#pp3" title="" onclick="pagepost(77, 3);">3</a> <strong id="pagebar_loading_77" style="color: green;"></strong></div><p>WEB2.0我们面对太多有关BLOG、SNS的东西，这中间有个重要的概念是我们需要明白的，那就是RSS聚会，收集了一些入门的资料。本文翻译自W3C官方资料 Linyupark @ W3Schools </p>
<p><span id="more-77"></span></p>
<p>RSS介绍</p>
<p>RSS was designed to share data like headlines, links and short descriptions of these.<br />
RSS 将数据分成像标题，连接和简单描述的形式。（浓缩过的信息） </p>
<p>RSS allows fast browsing for news and updates.<br />
RSS能快速浏览新闻和更新内容。</p>
<p>&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8211;</p>
<p>What You Should Already Know<br />
哪些是你应该已经知道的<br />
Before you continue you should have a basic understanding of the following:<br />
在继续学习前你应该有下面这些知识点的基础：</p>
<p>HTML / XHTML<br />
XML / XML 命名空间<br />
If you want to study these subjects first, find the tutorials on our Home page.<br />
如果你想先学下这些课程，到我们的首页去找吧~首页.</p>
<p>&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8211;</p>
<p>What is RSS?<br />
什么是RSS？<br />
RSS stands for Really Simple Syndication<br />
RSS就是 Really Simple Syndication （真正的简单聚合）<br />
RSS allows you to syndicate your site content<br />
RSS可以聚合你网站上的内容<br />
RSS is a selected list of defined items on a site<br />
RSS是一站点上被选中的内容清单<br />
RSS defines an easy way to share and view headlines and content<br />
RSS是一种更便捷的方法去查看标题和内容<br />
RSS files can be automatically updated<br />
RSS文件可以自动的更新<br />
RSS allows personalized views for different sites<br />
RSS允许更具人性化（个性化）的查看不同的站点<br />
RSS is written in XML<br />
RSS是用XML来书写的 </p>
<p>&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8211;</p>
<p>Why Use RSS?<br />
为什么使用RSS？<br />
RSS was designed to show selected data.<br />
RSS 能展示被选择的数据（针对性）</p>
<p>Without RSS, users will have to check your site daily to check for new updates. This may be too time-consuming for many users. With an RSS feed (RSS is often called a News Feed or RSS Feed) they can check your site faster using an RSS aggregator (a site or program that gathers and sorts out several RSS feeds).<br />
没有RSS的话，用户将必须每天到你的站上看看有没更新内容。这对于一些用户来说是很浪费时间的。通过一个RSS feed他们可以使用RSS阅读器更快的查看你的站是否有更新。</p>
<p>Since RSS data is small and fast-loading, it can easily be used with services like cell phones or PDA&#8217;s.<br />
因为RSS数据很小而且加载速度很快，它可以容易的在手机或PDA服务上使用。</p>
<p>Web-rings with similar information can easily share data on their sites to make them better and more useful.<br />
Wb-rings通过相似的信息可以方便的共享他们站点的信息。</p>
<p>&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8211;</p>
<p>Who Should Use RSS?<br />
哪些人应该使用RSS？<br />
Webmasters who seldom update their sites do not need RSS.<br />
站长如不是经常更新站带内信息的话可以不使用RSS</p>
<p>RSS can be useful for Web sites that are updated frequently, like:<br />
RSS对于那些经常更新的站点来说是和有帮助的，像：</p>
<p>News sites &#8211; Lists news with title, date and descriptions<br />
新闻站<br />
Site changes &#8211; Lists changed pages or new pages<br />
站点改动信息版块<br />
Companies &#8211; Lists news and new products<br />
公司站 &#8211; 新闻 和 新产品<br />
Calendars &#8211; Lists upcoming events and important days<br />
日历 </p>
<p>&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8211;</p>
<p>The Future of RSS<br />
展望RSS<br />
RSS is going to be everywhere.<br />
RSS将遍及每个角落 </p>
<p>Thousands of sites use RSS and more people understand its usefulness every day.<br />
数千站使用着RSS并且每天有越来越多的人明白了它的有用之处。</p>
<p>By using RSS, information on the Web becomes easier to find and web developers can spread their information more easily to special interest groups.<br />
有了RSS，在WEB上的信息变的容易找到并且WEB开发者能够容易的将信息传播给兴趣小组。</p>
<p>Hopefully, future RSS versions will include additional fields that will make it even easier to categorize and share.<br />
未来的RSS版本可能包含额外的领域来使分类和分享信息来的更容易。</p>
<div id="pagebar_bottom_77" class="pagebar"><a href="#pp0" onclick="pagepost(77, 0);">Show All</a> &nbsp; <strong style="color: #1E90FF;" title="">1</strong> <a href="#pp2" title="" onclick="pagepost(77, 2);">2</a> <a href="#pp3" title="" onclick="pagepost(77, 3);">3</a> </div></div>]]></content:encoded>
			<wfw:commentRss>http://www.toplee.com/blog/77.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>说说大型高并发高负载网站的系统架构（更新）</title>
		<link>http://www.toplee.com/blog/71.html</link>
		<comments>http://www.toplee.com/blog/71.html#comments</comments>
		<pubDate>Wed, 15 Mar 2006 08:20:35 +0000</pubDate>
		<dc:creator>Michael</dc:creator>
				<category><![CDATA[C / Erlang / Lua]]></category>
		<category><![CDATA[技术交流]]></category>
		<category><![CDATA[架构]]></category>
		<category><![CDATA[高并发]]></category>
		<category><![CDATA[高负载]]></category>

		<guid isPermaLink="false">http://www.toplee.com/blog/?p=71</guid>
		<description><![CDATA[转载请保留出处：俊麟 Michael&#8217;s blog (http://www.toplee.com/blog/?p=71) Trackback Url : http://www.toplee.com/blog/wp-trackback.php?p=71 　　鄙人先后在CERNET做过拨号接入，在Yahoo&#038;3721搞过搜索前端，在猫扑处理过mop.com的架构升级，在6.cn视频网站从事开发工作，还在多年的工作中接触和开发过不少大中型网站的模块，因此在大型网站应对高负载和并发的解决方案上有一些积累和经验，希望和大家一起探讨。 　　一个小型的网站，比如个人网站，可以使用最简单的html静态页面就实现了，配合一些图片达到美化效果，所有的页面均存放在一个目录下，这样的网站对系统架构、性能的要求都很简单，随着互联网业务的不断丰富，网站相关的技术经过这些年的发展，已经细分到很细的方方面面，尤其对于大型网站来说，所采用的技术更是涉及面非常广，从硬件到软件、编程语言、数据库、WebServer、防火墙等各个领域都有了很高的要求，已经不是原来简单的html静态网站所能比拟的。 　　大型网站，比如门户网站。在面对大量用户访问、高并发请求方面，基本的解决方案集中在这样几个环节：使用高性能的服务器、高性能的数据库、高效率的编程语言、还有高性能的Web容器。但是除了这几个方面，还没法根本解决大型网站面临的高负载和高并发问题。 　　上面提供的几个解决思路在一定程度上也意味着更大的投入，并且这样的解决思路具备瓶颈，没有很好的扩展性，下面我从低成本、高性能和高扩张性的角度来说说我的一些经验。 1、HTML静态化 　　其实大家都知道，效率最高、消耗最小的就是纯静态化的html页面，所以我们尽可能使我们的网站上的页面采用静态页面来实现，这个最简单的方法其实也是最有效的方法。但是对于大量内容并且频繁更新的网站，我们无法全部手动去挨个实现，于是出现了我们常见的信息发布系统CMS，像我们常访问的各个门户站点的新闻频道，甚至他们的其他频道，都是通过信息发布系统来管理和实现的，信息发布系统可以实现最简单的信息录入自动生成静态页面，还能具备频道管理、权限管理、自动抓取等功能，对于一个大型网站来说，拥有一套高效、可管理的CMS是必不可少的。 　　除了门户和信息发布类型的网站，对于交互性要求很高的社区类型网站来说，尽可能的静态化也是提高性能的必要手段，将社区内的帖子、文章进行实时的静态化，有更新的时候再重新静态化也是大量使用的策略，像Mop的大杂烩就是使用了这样的策略，网易社区等也是如此。目前很多博客也都实现了静态化，我使用的这个Blog程序WordPress还没有静态化，所以如果面对高负载访问，www.toplee.com一定不能承受 　　同时，html静态化也是某些缓存策略使用的手段，对于系统中频繁使用数据库查询但是内容更新很小的应用，可以考虑使用html静态化来实现，比如论坛中论坛的公用设置信息，这些信息目前的主流论坛都可以进行后台管理并且存储再数据库中，这些信息其实大量被前台程序调用，但是更新频率很小，可以考虑将这部分内容进行后台更新的时候进行静态化，这样避免了大量的数据库访问请求。 　　在进行html静态化的时候可以使用一种折中的方法，就是前端使用动态实现，在一定的策略下进行定时静态化和定时判断调用，这个能实现很多灵活性的操作，我开发的台球网站故人居(www.8zone.cn)就是使用了这样的方法，我通过设定一些html静态化的时间间隔来对动态网站内容进行缓存，达到分担大部分的压力到静态页面上，可以应用于中小型网站的架构上。故人居网站的地址：http://www.8zone.cn，顺便提一下，有喜欢台球的朋友多多支持我这个免费网站:) 2、图片服务器分离 　　大家知道，对于Web服务器来说，不管是Apache、IIS还是其他容器，图片是最消耗资源的，于是我们有必要将图片与页面进行分离，这是基本上大型网站都会采用的策略，他们都有独立的图片服务器，甚至很多台图片服务器。这样的架构可以降低提供页面访问请求的服务器系统压力，并且可以保证系统不会因为图片问题而崩溃。 　　在应用服务器和图片服务器上，可以进行不同的配置优化，比如Apache在配置ContentType的时候可以尽量少支持，尽可能少的LoadModule，保证更高的系统消耗和执行效率。 　　我的台球网站故人居8zone.cn也使用了图片服务器架构上的分离，目前是仅仅是架构上分离，物理上没有分离，由于没有钱买更多的服务器:)，大家可以看到故人居上的图片连接都是类似img.9tmd.com或者img1.9tmd.com的URL。 　　另外，在处理静态页面或者图片、js等访问方面，可以考虑使用lighttpd代替Apache，它提供了更轻量级和更高效的处理能力。 3、数据库集群和库表散列 　　大型网站都有复杂的应用，这些应用必须使用数据库，那么在面对大量访问的时候，数据库的瓶颈很快就能显现出来，这时一台数据库将很快无法满足应用，于是我们需要使用数据库集群或者库表散列。 　　在数据库集群方面，很多数据库都有自己的解决方案，Oracle、Sybase等都有很好的方案，常用的MySQL提供的Master/Slave也是类似的方案，您使用了什么样的DB，就参考相应的解决方案来实施即可。 　　上面提到的数据库集群由于在架构、成本、扩张性方面都会受到所采用DB类型的限制，于是我们需要从应用程序的角度来考虑改善系统架构，库表散列是常用并且最有效的解决方案。我们在应用程序中安装业务和应用或者功能模块将数据库进行分离，不同的模块对应不同的数据库或者表，再按照一定的策略对某个页面或者功能进行更小的数据库散列，比如用户表，按照用户ID进行表散列，这样就能够低成本的提升系统的性能并且有很好的扩展性。sohu的论坛就是采用了这样的架构，将论坛的用户、设置、帖子等信息进行数据库分离，然后对帖子、用户按照板块和ID进行散列数据库和表，最终可以在配置文件中进行简单的配置便能让系统随时增加一台低成本的数据库进来补充系统性能。 4、缓存 　　缓存一词搞技术的都接触过，很多地方用到缓存。网站架构和网站开发中的缓存也是非常重要。这里先讲述最基本的两种缓存。高级和分布式的缓存在后面讲述。 　　架构方面的缓存，对Apache比较熟悉的人都能知道Apache提供了自己的mod_proxy缓存模块，也可以使用外加的Squid进行缓存，这两种方式均可以有效的提高Apache的访问响应能力。 　　网站程序开发方面的缓存，Linux上提供的Memcached是常用的缓存方案，不少web编程语言都提供memcache访问接口，php、perl、c和java都有，可以在web开发中使用，可以实时或者Cron的把数据、对象等内容进行缓存，策略非常灵活。一些大型社区使用了这样的架构。 　　另外，在使用web语言开发的时候，各种语言基本都有自己的缓存模块和方法，PHP有Pear的Cache模块和eAccelerator加速和Cache模块，还要知名的Apc、XCache（国人开发的，支持！）php缓存模块，Java就更多了，.net不是很熟悉，相信也肯定有。 5、镜像 　　镜像是大型网站常采用的提高性能和数据安全性的方式，镜像的技术可以解决不同网络接入商和地域带来的用户访问速度差异，比如ChinaNet和EduNet之间的差异就促使了很多网站在教育网内搭建镜像站点，数据进行定时更新或者实时更新。在镜像的细节技术方面，这里不阐述太深，有很多专业的现成的解决架构和产品可选。也有廉价的通过软件实现的思路，比如Linux上的rsync等工具。 6、负载均衡 　　负载均衡将是大型网站解决高负荷访问和大量并发请求采用的终极解决办法。 　　负载均衡技术发展了多年，有很多专业的服务提供商和产品可以选择，我个人接触过一些解决方法，其中有两个架构可以给大家做参考。另外有关初级的负载均衡DNS轮循和较专业的CDN架构就不多说了。 6.1 硬件四层交换 　　第四层交换使用第三层和第四层信息包的报头信息，根据应用区间识别业务流，将整个区间段的业务流分配到合适的应用服务器进行处理。　第四层交换功能就象是虚IP，指向物理服务器。它传输的业务服从的协议多种多样，有HTTP、FTP、NFS、Telnet或其他协议。这些业务在物理服务器基础上，需要复杂的载量平衡算法。在IP世界，业务类型由终端TCP或UDP端口地址来决定，在第四层交换中的应用区间则由源端和终端IP地址、TCP和UDP端口共同决定。 　　在硬件四层交换产品领域，有一些知名的产品可以选择，比如Alteon、F5等，这些产品很昂贵，但是物有所值，能够提供非常优秀的性能和很灵活的管理能力。Yahoo中国当初接近2000台服务器使用了三四台Alteon就搞定了。 6.2 软件四层交换 　　大家知道了硬件四层交换机的原理后，基于OSI模型来实现的软件四层交换也就应运而生，这样的解决方案实现的原理一致，不过性能稍差。但是满足一定量的压力还是游刃有余的，有人说软件实现方式其实更灵活，处理能力完全看你配置的熟悉能力。 　　软件四层交换我们可以使用Linux上常用的LVS来解决，LVS就是Linux Virtual Server，他提供了基于心跳线heartbeat的实时灾难应对解决方案，提高系统的鲁棒性，同时可供了灵活的虚拟VIP配置和管理功能，可以同时满足多种应用需求，这对于分布式的系统来说必不可少。 　　一个典型的使用负载均衡的策略就是，在软件或者硬件四层交换的基础上搭建squid集群，这种思路在很多大型网站包括搜索引擎上被采用，这样的架构低成本、高性能还有很强的扩张性，随时往架构里面增减节点都非常容易。这样的架构我准备空了专门详细整理一下和大家探讨。 6.3 七层交换 　　大家都知道TCP/IP的七层协议，四层交换是基于传输层的，在这一层只能处理连接的管理，但是无法和业务关联起来，通常只能针对tcp、udp的连接来进行处理，而真正的业务逻辑需要后面的服务器群自己来处理，随着技术的发展，今天，我们在很多高级的应用中出现了七层交换。 七层交换是基于TCP/IP的第七层应用层来实现的，在这一层上，首先我们可以区分出具体的应用，比如HTTP、TELNET、FTP、DNS等等，还能根据应用中传送的内容来进行策略的管理，比如我们有这么两个网站的路径 a.com/music/&#8230; 和a.com/photo/&#8230; 原来基于四层交换只能把这两个url的请求都分发到后面一组服务器上，但是七层交换可以判断访问的是music/还是photo/路径，然后分别分发到不通的服务器群上，从而实现更灵活的系统架构设计。 当然，七层交换也分硬件和软件的实现方式，在这里我不细说了，硬件有著名的F5、Nortel等，软件有Haproxy等，当然，七层交换的软件目前还是在性能上要远远差别于硬件实现的，要知道，这些硬件都价格不菲 [...]]]></description>
			<content:encoded><![CDATA[<p>转载请保留出处：俊麟 Michael&#8217;s blog (http://www.toplee.com/blog/?p=71)<br />
Trackback Url : <a href="http://www.toplee.com/blog/wp-trackback.php?p=71">http://www.toplee.com/blog/wp-trackback.php?p=71</a></p>
<p>　　鄙人先后在CERNET做过拨号接入，在Yahoo&#038;3721搞过搜索前端，在猫扑处理过mop.com的架构升级，在6.cn视频网站从事开发工作，还在多年的工作中接触和开发过不少大中型网站的模块，因此在大型网站应对高负载和并发的解决方案上有一些积累和经验，希望和大家一起探讨。</p>
<p><span id="more-71"></span><br />
　　一个小型的网站，比如个人网站，可以使用最简单的html静态页面就实现了，配合一些图片达到美化效果，所有的页面均存放在一个目录下，这样的网站对系统架构、性能的要求都很简单，随着互联网业务的不断丰富，网站相关的技术经过这些年的发展，已经细分到很细的方方面面，尤其对于大型网站来说，所采用的技术更是涉及面非常广，从硬件到软件、编程语言、数据库、WebServer、防火墙等各个领域都有了很高的要求，已经不是原来简单的html静态网站所能比拟的。</p>
<p>　　大型网站，比如门户网站。在面对大量用户访问、高并发请求方面，基本的解决方案集中在这样几个环节：使用高性能的服务器、高性能的数据库、高效率的编程语言、还有高性能的Web容器。但是除了这几个方面，还没法根本解决大型网站面临的高负载和高并发问题。</p>
<p>　　上面提供的几个解决思路在一定程度上也意味着更大的投入，并且这样的解决思路具备瓶颈，没有很好的扩展性，下面我从低成本、高性能和高扩张性的角度来说说我的一些经验。</p>
<p><strong>1、HTML静态化</strong><br />
　　其实大家都知道，效率最高、消耗最小的就是纯静态化的html页面，所以我们尽可能使我们的网站上的页面采用静态页面来实现，这个最简单的方法其实也是最有效的方法。但是对于大量内容并且频繁更新的网站，我们无法全部手动去挨个实现，于是出现了我们常见的信息发布系统CMS，像我们常访问的各个门户站点的新闻频道，甚至他们的其他频道，都是通过信息发布系统来管理和实现的，信息发布系统可以实现最简单的信息录入自动生成静态页面，还能具备频道管理、权限管理、自动抓取等功能，对于一个大型网站来说，拥有一套高效、可管理的CMS是必不可少的。</p>
<p>　　除了门户和信息发布类型的网站，对于交互性要求很高的社区类型网站来说，尽可能的静态化也是提高性能的必要手段，将社区内的帖子、文章进行实时的静态化，有更新的时候再重新静态化也是大量使用的策略，像Mop的大杂烩就是使用了这样的策略，网易社区等也是如此。目前很多博客也都实现了静态化，我使用的这个Blog程序WordPress还没有静态化，所以如果面对高负载访问，www.toplee.com一定不能承受 <img src='http://www.toplee.com/blog/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>　　同时，html静态化也是某些缓存策略使用的手段，对于系统中频繁使用数据库查询但是内容更新很小的应用，可以考虑使用html静态化来实现，比如论坛中论坛的公用设置信息，这些信息目前的主流论坛都可以进行后台管理并且存储再数据库中，这些信息其实大量被前台程序调用，但是更新频率很小，可以考虑将这部分内容进行后台更新的时候进行静态化，这样避免了大量的数据库访问请求。</p>
<p>　　在进行html静态化的时候可以使用一种折中的方法，就是前端使用动态实现，在一定的策略下进行定时静态化和定时判断调用，这个能实现很多灵活性的操作，我开发的台球网站故人居(<a href="http://www.8zone.cn">www.8zone.cn</a>)就是使用了这样的方法，我通过设定一些html静态化的时间间隔来对动态网站内容进行缓存，达到分担大部分的压力到静态页面上，可以应用于中小型网站的架构上。故人居网站的地址：<a href="http://www.8zone.cn">http://www.8zone.cn</a>，顺便提一下，有喜欢台球的朋友多多支持我这个免费网站:)</p>
<p><strong>2、图片服务器分离</strong><br />
　　大家知道，对于Web服务器来说，不管是Apache、IIS还是其他容器，图片是最消耗资源的，于是我们有必要将图片与页面进行分离，这是基本上大型网站都会采用的策略，他们都有独立的图片服务器，甚至很多台图片服务器。这样的架构可以降低提供页面访问请求的服务器系统压力，并且可以保证系统不会因为图片问题而崩溃。</p>
<p>　　在应用服务器和图片服务器上，可以进行不同的配置优化，比如Apache在配置ContentType的时候可以尽量少支持，尽可能少的LoadModule，保证更高的系统消耗和执行效率。</p>
<p>　　我的台球网站故人居<a href="http://www.8zone.cn">8zone.cn</a>也使用了图片服务器架构上的分离，目前是仅仅是架构上分离，物理上没有分离，由于没有钱买更多的服务器:)，大家可以看到故人居上的图片连接都是类似img.9tmd.com或者img1.9tmd.com的URL。</p>
<p>　　另外，在处理静态页面或者图片、js等访问方面，可以考虑使用<a href="http://www.lighttpd.net">lighttpd</a>代替Apache，它提供了更轻量级和更高效的处理能力。</p>
<p><strong>3、数据库集群和库表散列</strong><br />
　　大型网站都有复杂的应用，这些应用必须使用数据库，那么在面对大量访问的时候，数据库的瓶颈很快就能显现出来，这时一台数据库将很快无法满足应用，于是我们需要使用数据库集群或者库表散列。</p>
<p>　　在数据库集群方面，很多数据库都有自己的解决方案，Oracle、Sybase等都有很好的方案，常用的MySQL提供的Master/Slave也是类似的方案，您使用了什么样的DB，就参考相应的解决方案来实施即可。</p>
<p>　　上面提到的数据库集群由于在架构、成本、扩张性方面都会受到所采用DB类型的限制，于是我们需要从应用程序的角度来考虑改善系统架构，库表散列是常用并且最有效的解决方案。我们在应用程序中安装业务和应用或者功能模块将数据库进行分离，不同的模块对应不同的数据库或者表，再按照一定的策略对某个页面或者功能进行更小的数据库散列，比如用户表，按照用户ID进行表散列，这样就能够低成本的提升系统的性能并且有很好的扩展性。sohu的论坛就是采用了这样的架构，将论坛的用户、设置、帖子等信息进行数据库分离，然后对帖子、用户按照板块和ID进行散列数据库和表，最终可以在配置文件中进行简单的配置便能让系统随时增加一台低成本的数据库进来补充系统性能。</p>
<p><strong>4、缓存</strong><br />
　　缓存一词搞技术的都接触过，很多地方用到缓存。网站架构和网站开发中的缓存也是非常重要。这里先讲述最基本的两种缓存。高级和分布式的缓存在后面讲述。</p>
<p>　　架构方面的缓存，对Apache比较熟悉的人都能知道Apache提供了自己的mod_proxy缓存模块，也可以使用外加的Squid进行缓存，这两种方式均可以有效的提高Apache的访问响应能力。</p>
<p>　　网站程序开发方面的缓存，Linux上提供的<a href="http://www.danga.com/memcached/">Memcached</a>是常用的缓存方案，不少web编程语言都提供memcache访问接口，<a href="http://cn.php.net/memcached">php</a>、perl、c和java都有，可以在web开发中使用，可以实时或者Cron的把数据、对象等内容进行缓存，策略非常灵活。一些大型社区使用了这样的架构。</p>
<p>　　另外，在使用web语言开发的时候，各种语言基本都有自己的缓存模块和方法，PHP有<a href="http://pear.php.net">Pear</a>的Cache模块和<a href="http://www.toplee.com/blog/?p=100">eAccelerator</a>加速和Cache模块，还要知名的Apc、XCache（国人开发的，支持！）php缓存模块，Java就更多了，.net不是很熟悉，相信也肯定有。</p>
<p><strong>5、镜像</strong><br />
　　镜像是大型网站常采用的提高性能和数据安全性的方式，镜像的技术可以解决不同网络接入商和地域带来的用户访问速度差异，比如ChinaNet和EduNet之间的差异就促使了很多网站在教育网内搭建镜像站点，数据进行定时更新或者实时更新。在镜像的细节技术方面，这里不阐述太深，有很多专业的现成的解决架构和产品可选。也有廉价的通过软件实现的思路，比如Linux上的rsync等工具。</p>
<p><strong>6、负载均衡</strong><br />
　　负载均衡将是大型网站解决高负荷访问和大量并发请求采用的终极解决办法。</p>
<p>　　负载均衡技术发展了多年，有很多专业的服务提供商和产品可以选择，我个人接触过一些解决方法，其中有两个架构可以给大家做参考。另外有关初级的负载均衡DNS轮循和较专业的CDN架构就不多说了。</p>
<p><strong>6.1 硬件四层交换</strong><br />
　　第四层交换使用第三层和第四层信息包的报头信息，根据应用区间识别业务流，将整个区间段的业务流分配到合适的应用服务器进行处理。　第四层交换功能就象是虚IP，指向物理服务器。它传输的业务服从的协议多种多样，有HTTP、FTP、NFS、Telnet或其他协议。这些业务在物理服务器基础上，需要复杂的载量平衡算法。在IP世界，业务类型由终端TCP或UDP端口地址来决定，在第四层交换中的应用区间则由源端和终端IP地址、TCP和UDP端口共同决定。</p>
<p>　　在硬件四层交换产品领域，有一些知名的产品可以选择，比如Alteon、F5等，这些产品很昂贵，但是物有所值，能够提供非常优秀的性能和很灵活的管理能力。Yahoo中国当初接近2000台服务器使用了三四台Alteon就搞定了。</p>
<p><strong>6.2 软件四层交换</strong><br />
　　大家知道了硬件四层交换机的原理后，基于OSI模型来实现的软件四层交换也就应运而生，这样的解决方案实现的原理一致，不过性能稍差。但是满足一定量的压力还是游刃有余的，有人说软件实现方式其实更灵活，处理能力完全看你配置的熟悉能力。</p>
<p>　　软件四层交换我们可以使用Linux上常用的LVS来解决，LVS就是Linux Virtual Server，他提供了基于心跳线heartbeat的实时灾难应对解决方案，提高系统的鲁棒性，同时可供了灵活的虚拟VIP配置和管理功能，可以同时满足多种应用需求，这对于分布式的系统来说必不可少。</p>
<p>　　一个典型的使用负载均衡的策略就是，在软件或者硬件四层交换的基础上搭建squid集群，这种思路在很多大型网站包括搜索引擎上被采用，这样的架构低成本、高性能还有很强的扩张性，随时往架构里面增减节点都非常容易。这样的架构我准备空了专门详细整理一下和大家探讨。</p>
<p><strong>6.3 七层交换</strong><br />
　　大家都知道TCP/IP的七层协议，四层交换是基于传输层的，在这一层只能处理连接的管理，但是无法和业务关联起来，通常只能针对tcp、udp的连接来进行处理，而真正的业务逻辑需要后面的服务器群自己来处理，随着技术的发展，今天，我们在很多高级的应用中出现了七层交换。</p>
<p>    七层交换是基于TCP/IP的第七层应用层来实现的，在这一层上，首先我们可以区分出具体的应用，比如HTTP、TELNET、FTP、DNS等等，还能根据应用中传送的内容来进行策略的管理，比如我们有这么两个网站的路径 a.com/music/&#8230; 和a.com/photo/&#8230; 原来基于四层交换只能把这两个url的请求都分发到后面一组服务器上，但是七层交换可以判断访问的是music/还是photo/路径，然后分别分发到不通的服务器群上，从而实现更灵活的系统架构设计。</p>
<p>    当然，七层交换也分硬件和软件的实现方式，在这里我不细说了，硬件有著名的F5、Nortel等，软件有Haproxy等，当然，七层交换的软件目前还是在性能上要远远差别于硬件实现的，要知道，这些硬件都价格不菲 <img src='http://www.toplee.com/blog/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>总结：<br />
　　对于大型网站来说，前面提到的每个方法可能都会被同时使用到，Michael这里介绍得比较浅显，具体实现过程中很多细节还需要大家慢慢熟悉和体会，有时一个很小的squid参数或者apache参数设置，对于系统性能的影响就会很大，希望大家一起讨论，达到抛砖引玉之效。</p>
<p>　　转载请保留出处：俊麟 Michael&#8217;s blog (http://www.toplee.com/blog/?p=71)<br />
Trackback Url : <a href="http://www.toplee.com/blog/wp-trackback.php?p=71">http://www.toplee.com/blog/wp-trackback.php?p=71</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.toplee.com/blog/71.html/feed</wfw:commentRss>
		<slash:comments>152</slash:comments>
		</item>
		<item>
		<title>SSH权威指南</title>
		<link>http://www.toplee.com/blog/39.html</link>
		<comments>http://www.toplee.com/blog/39.html#comments</comments>
		<pubDate>Wed, 15 Feb 2006 08:20:53 +0000</pubDate>
		<dc:creator>Michael</dc:creator>
				<category><![CDATA[C / Erlang / Lua]]></category>
		<category><![CDATA[Linux / BSD]]></category>
		<category><![CDATA[技术交流]]></category>

		<guid isPermaLink="false">http://www.toplee.com/blog/?p=39</guid>
		<description><![CDATA[Show All &#160; 1 2 3 4 5 6 7 注意：由于openssh是开源软件，各版间的配置方法和设置参数可能会不同，所以设置时要以最新版的手册为准，不要硬套本文的设置。 第一章 SSH简介 ssh(secure shell)是一种通用，功能强大的基于软件的网络安全解决方案，计算机每次向网络发送数据时，SSH都会自动对其进行加密。数据到达目的地时，SSH自动对加密数据进行解密。整个过程都是透明的。它使用了现代的安全加密算法，足以胜任大型公司的任务繁重的应用程序的要求。 SSH协议内容涉及认证AUTHENTICATION,加密ENCRYPTION,和网络上传输数据的完整性INTEGRITY。 SSH特性概述 1、远程登录 $ ssh -l root host.example.com 2、安全文件传输 $ scp myfile metoo@secondacount.com 3、安全执行远程命令，能确保传输的数据安全。 4、密钥和代理 基于密钥的认证方法不用记住多个帐号密码。 5、访问控制，能授权别人访问自已帐号。 6、端口转发 $ ssh -L 3002:localhost:119 xxx.xxx.com 相关安全技术 rsh命令族，rsh,rlogin and rcp。连接不加密，认证模型十分脆弱。 PGP加密程序。它是基于文件的。 Kerberos认证系统，用于网络可能被监视，而且计算机不是中心控制的环境。基于麻省理工学院的Athena项目。它SSH不是，SSH是轻量级的，容易部署。Kerberos使用前必须构建一些重要基础。 IPSEC，Internet安全协议。 SRP，安全远程密码协议，是Stanford大学开发的。是一种专用的认证协议。 SSL,安全套接字。 stunnel，是一种SSL工具，它为UNIX环境现有的基于TCP的服务（POP,IMAP等）增加SSL保护，而不用修改服务器源程序。 Show All &#160; 1 2 3 4 [...]]]></description>
			<content:encoded><![CDATA[<div id="pagepost_39" class="pagepost"><div id="pagebar_top_39" class="pagebar"><a name="pp0"></a><a name="pp1"></a><a name="pp2"></a><a name="pp3"></a><a name="pp4"></a><a name="pp5"></a><a name="pp6"></a><a name="pp7"></a><a href="#pp0" onclick="pagepost(39, 0);">Show All</a> &nbsp; <strong style="color: #1E90FF;" title="">1</strong> <a href="#pp2" title="" onclick="pagepost(39, 2);">2</a> <a href="#pp3" title="" onclick="pagepost(39, 3);">3</a> <a href="#pp4" title="" onclick="pagepost(39, 4);">4</a> <a href="#pp5" title="" onclick="pagepost(39, 5);">5</a> <a href="#pp6" title="" onclick="pagepost(39, 6);">6</a> <a href="#pp7" title="" onclick="pagepost(39, 7);">7</a> <strong id="pagebar_loading_39" style="color: green;"></strong></div><p>注意：由于openssh是开源软件，各版间的配置方法和设置参数可能会不同，所以设置时要以最新版的手册为准，不要硬套本文的设置。</p>
<p>第一章 SSH简介<br />
ssh(secure shell)是一种通用，功能强大的基于软件的网络安全解决方案，计算机每次向网络发送数据时，SSH都会自动对其进行加密。数据到达目的地时，SSH自动对加密数据进行解密。整个过程都是透明的。它使用了现代的安全加密算法，足以胜任大型公司的任务繁重的应用程序的要求。<br />
<span id="more-39"></span><br />
SSH协议内容涉及认证AUTHENTICATION,加密ENCRYPTION,和网络上传输数据的完整性INTEGRITY。</p>
<p>SSH特性概述<br />
1、远程登录<br />
$ ssh -l root host.example.com<br />
2、安全文件传输<br />
$ scp myfile metoo@secondacount.com<br />
3、安全执行远程命令，能确保传输的数据安全。<br />
4、密钥和代理<br />
基于密钥的认证方法不用记住多个帐号密码。<br />
5、访问控制，能授权别人访问自已帐号。<br />
6、端口转发<br />
$ ssh -L 3002:localhost:119 xxx.xxx.com</p>
<p>相关安全技术<br />
rsh命令族，rsh,rlogin and rcp。连接不加密，认证模型十分脆弱。<br />
PGP加密程序。它是基于文件的。<br />
Kerberos认证系统，用于网络可能被监视，而且计算机不是中心控制的环境。基于麻省理工学院的Athena项目。它SSH不是，SSH是轻量级的，容易部署。Kerberos使用前必须构建一些重要基础。<br />
IPSEC，Internet安全协议。<br />
SRP，安全远程密码协议，是Stanford大学开发的。是一种专用的认证协议。<br />
SSL,安全套接字。<br />
stunnel，是一种SSL工具，它为UNIX环境现有的基于TCP的服务（POP,IMAP等）增加SSL保护，而不用修改服务器源程序。</p>
<div id="pagebar_bottom_39" class="pagebar"><a href="#pp0" onclick="pagepost(39, 0);">Show All</a> &nbsp; <strong style="color: #1E90FF;" title="">1</strong> <a href="#pp2" title="" onclick="pagepost(39, 2);">2</a> <a href="#pp3" title="" onclick="pagepost(39, 3);">3</a> <a href="#pp4" title="" onclick="pagepost(39, 4);">4</a> <a href="#pp5" title="" onclick="pagepost(39, 5);">5</a> <a href="#pp6" title="" onclick="pagepost(39, 6);">6</a> <a href="#pp7" title="" onclick="pagepost(39, 7);">7</a> </div></div>]]></content:encoded>
			<wfw:commentRss>http://www.toplee.com/blog/39.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Tcpdump 的详细用法(收集)</title>
		<link>http://www.toplee.com/blog/63.html</link>
		<comments>http://www.toplee.com/blog/63.html#comments</comments>
		<pubDate>Wed, 08 Feb 2006 16:13:27 +0000</pubDate>
		<dc:creator>Michael</dc:creator>
				<category><![CDATA[C / Erlang / Lua]]></category>
		<category><![CDATA[Linux / BSD]]></category>
		<category><![CDATA[技术交流]]></category>
		<category><![CDATA[西拉东扯]]></category>

		<guid isPermaLink="false">http://www.toplee.com/blog/?p=63</guid>
		<description><![CDATA[第一种是关于类型的关键字，主要包括host，net，port, 例如 host 210.27.48.2，指明 210.27.48.2是一台主机，net 202.0.0.0 指明 202.0.0.0是一个网络地址，port 23 指明端口号是23。如果没有指定类型，缺省的类型是host. 第二种是确定传输方向的关键字，主要包括src , dst ,dst or src, dst and src ,这些关键字指明了传输的方向。举例说明，src 210.27.48.2 ,指明ip包中源地址是210.27.48.2 , dst net 202.0.0.0 指明目的网络地址是202.0.0.0 。如果没有指明方向关键字，则缺省是src or dst关键字。 第三种是协议的关键字，主要包括fddi,ip,arp,rarp,tcp,udp等类型。Fddi指明是在FDDI(分布式光纤数据接口网络)上的特定 的网络协议，实际上它是&#8221;ether&#8221;的别名，fddi和ether具有类似的源地址和目的地址，所以可以将fddi协议包当作ether的包进行处理和 分析。其他的几个关键字就是指明了监听的包的协议内容。如果没有指定任何协议，则tcpdump将会监听所有协议的信息包。 除了这三种类型的关键字之外，其他重要的关键字如下：gateway, broadcast,less,greater,还有三种逻辑运算，取非运算是 &#8216;not &#8216; &#8216;! &#8216;, 与运算是&#8217;and&#8217;,'&#038;&#038;&#8217;;或运算 是&#8217;or&#8217; ,&#8217;││&#8217;；这些关键字可以组合起来构成强大的组合条件来满足人们的需要，下面举几个例子来说明。 普通情况下，直接启动tcpdump将监视第一个网络界面上所有流过的数据包。 # tcpdump tcpdump: listening on fxp0 11:58:47.873028 202.102.245.40.netbios-ns > 202.102.245.127.netbios-ns: udp 50 [...]]]></description>
			<content:encoded><![CDATA[<p>第一种是关于类型的关键字，主要包括host，net，port, 例如 host 210.27.48.2，指明 210.27.48.2是一台主机，net 202.0.0.0 指明 202.0.0.0是一个网络地址，port 23 指明端口号是23。如果没有指定类型，缺省的类型是host.</p>
<p>第二种是确定传输方向的关键字，主要包括src , dst ,dst or src, dst and src ,这些关键字指明了传输的方向。举例说明，src 210.27.48.2 ,指明ip包中源地址是210.27.48.2 , dst net 202.0.0.0 指明目的网络地址是202.0.0.0 。如果没有指明方向关键字，则缺省是src or dst关键字。<br />
<span id="more-63"></span><br />
第三种是协议的关键字，主要包括fddi,ip,arp,rarp,tcp,udp等类型。Fddi指明是在FDDI(分布式光纤数据接口网络)上的特定 的网络协议，实际上它是&#8221;ether&#8221;的别名，fddi和ether具有类似的源地址和目的地址，所以可以将fddi协议包当作ether的包进行处理和 分析。其他的几个关键字就是指明了监听的包的协议内容。如果没有指定任何协议，则tcpdump将会监听所有协议的信息包。</p>
<p>    除了这三种类型的关键字之外，其他重要的关键字如下：gateway, broadcast,less,greater,还有三种逻辑运算，取非运算是 &#8216;not &#8216; &#8216;! &#8216;, 与运算是&#8217;and&#8217;,'&#038;&#038;&#8217;;或运算 是&#8217;or&#8217; ,&#8217;││&#8217;；这些关键字可以组合起来构成强大的组合条件来满足人们的需要，下面举几个例子来说明。<br />
    普通情况下，直接启动tcpdump将监视第一个网络界面上所有流过的数据包。<br />
# tcpdump<br />
tcpdump: listening on fxp0<br />
11:58:47.873028 202.102.245.40.netbios-ns > 202.102.245.127.netbios-ns: udp 50<br />
11:58:47.974331 0:10:7b:8:3a:56 > 1:80:c2:0:0:0 802.1d ui/C len=43<br />
                         0000 0000 0080 0000 1007 cf08 0900 0000<br />
                         0e80 0000 902b 4695 0980 8701 0014 0002<br />
                         000f 0000 902b 4695 0008 00<br />
11:58:48.373134 0:0:e8:5b:6d:85 > Broadcast sap e0 ui/C len=97<br />
                         ffff 0060 0004 ffff ffff ffff ffff ffff<br />
                         0452 ffff ffff 0000 e85b 6d85 4008 0002<br />
                         0640 4d41 5354 4552 5f57 4542 0000 0000<br />
                         0000 00<br />
使用-i参数指定tcpdump监听的网络界面，这在计算机具有多个网络界面时非常有用，<br />
使用-c参数指定要监听的数据包数量，<br />
使用-w参数指定将监听到的数据包写入文件中保存</p>
<p>   A想要截获所有210.27.48.1 的主机收到的和发出的所有的数据包：<br />
#tcpdump host 210.27.48.1 </p>
<p>B想要截获主机210.27.48.1 和主机210.27.48.2 或210.27.48.3的通信，使用命令：（在命令行中适用　　　括号时，一定要<br />
#tcpdump host 210.27.48.1 and \ (210.27.48.2 or 210.27.48.3 \) </p>
<p>C如果想要获取主机210.27.48.1除了和主机210.27.48.2之外所有主机通信的ip包，使用命令：<br />
#tcpdump ip host 210.27.48.1 and ! 210.27.48.2</p>
<p>D如果想要获取主机210.27.48.1接收或发出的telnet包，使用如下命令：<br />
#tcpdump tcp port 23 host 210.27.48.1</p>
<p>E 对本机的udp 123 端口进行监视 123 为ntp的服务端口<br />
# tcpdump udp port 123 </p>
<p>F 系统将只对名为hostname的主机的通信数据包进行监视。主机名可以是本地主机，也可以是网络上的任何一台计算机。下面的命令可以读取主机hostname发送的所有数据：<br />
#tcpdump -i eth0 src host hostname</p>
<p>G 下面的命令可以监视所有送到主机hostname的数据包：<br />
#tcpdump -i eth0 dst host hostname</p>
<p>H  我们还可以监视通过指定网关的数据包：<br />
#tcpdump -i eth0 gateway Gatewayname</p>
<p>I 如果你还想监视编址到指定端口的TCP或UDP数据包，那么执行以下命令：<br />
#tcpdump -i eth0 host hostname and port 80</p>
<p>J 如果想要获取主机210.27.48.1除了和主机210.27.48.2之外所有主机通信的ip包<br />
，使用命令：<br />
#tcpdump ip host 210.27.48.1 and ! 210.27.48.2</p>
<p>K 想要截获主机210.27.48.1 和主机210.27.48.2 或210.27.48.3的通信，使用命令<br />
：（在命令行中适用　　　括号时，一定要<br />
#tcpdump host 210.27.48.1 and \ (210.27.48.2 or 210.27.48.3 \)</p>
<p>L 如果想要获取主机210.27.48.1除了和主机210.27.48.2之外所有主机通信的ip包，使用命令：<br />
　　　#tcpdump ip host 210.27.48.1 and ! 210.27.48.2</p>
<p>M 如果想要获取主机210.27.48.1接收或发出的telnet包，使用如下命令：<br />
　　　#tcpdump tcp port 23 host 210.27.48.1</p>
<p>第三种是协议的关键字，主要包括fddi,ip ,arp,rarp,tcp,udp等类型<br />
除了这三种类型的关键字之外，其他重要的关键字如下：gateway, broadcast,less,<br />
greater,还有三种逻辑运算，取非运算是 &#8216;not &#8216; &#8216;! &#8216;, 与运算是&#8217;and&#8217;,'&#038;&#038;&#8217;;或运算 是&#8217;o<br />
r&#8217; ,&#8217;||&#8217;；<br />
第二种是确定传输方向的关键字，主要包括src , dst ,dst or src, dst and src ,<br />
如果我们只需要列出送到80端口的数据包，用dst port；如果我们只希望看到返回80端口的数据包，用src port。<br />
#tcpdump –i eth0 host hostname and dst port 80  目的端口是80<br />
或者<br />
#tcpdump –i eth0 host hostname and src port 80  源端口是80  一般是提供http的服务的主机<br />
如果条件很多的话  要在条件之前加and 或 or 或 not<br />
#tcpdump -i eth0 host ! 211.161.223.70 and ! 211.161.223.71 and dst port 80</p>
<p>如果在ethernet 使用混杂模式 系统的日志将会记录</p>
<p>May  7 20:03:46 localhost kernel: eth0: Promiscuous mode enabled.<br />
May  7 20:03:46 localhost kernel: device eth0 entered promiscuous mode<br />
May  7 20:03:57 localhost kernel: device eth0 left promiscuous mode</p>
<p>tcpdump对截获的数据并没有进行彻底解码，数据包内的大部分内容是使用十六进制的形式直接打印输出的。显然这不利于分析网络故障，通常的解决办法是先使用带-w参数的tcpdump 截获数据并保存到文件中，然后再使用其他程序进行解码分析。当然也应该定义过滤规则，以避免捕获的数据包填满整个硬盘。 </p>
<p>另外，使用Ethereal配合tcpdump可以实现很多意想不到的功能，比如过滤密码之类的，呵呵！</p>
]]></content:encoded>
			<wfw:commentRss>http://www.toplee.com/blog/63.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>收集整理的awk用法小结</title>
		<link>http://www.toplee.com/blog/62.html</link>
		<comments>http://www.toplee.com/blog/62.html#comments</comments>
		<pubDate>Wed, 08 Feb 2006 15:52:52 +0000</pubDate>
		<dc:creator>Michael</dc:creator>
				<category><![CDATA[C / Erlang / Lua]]></category>
		<category><![CDATA[Linux / BSD]]></category>
		<category><![CDATA[技术交流]]></category>

		<guid isPermaLink="false">http://www.toplee.com/blog/?p=62</guid>
		<description><![CDATA[提示：其实 man awk 提供的文档也很详细，不过整理加上中文估计还是可以对初学者有一定帮助的。 awk 用法：awk &#8216; pattern {action} &#8216; 变量名 含义 ARGC 命令行变元个数 ARGV 命令行变元数组 FILENAME 当前输入文件名 FNR 当前文件中的记录号 FS 输入域分隔符，默认为一个空格 RS 输入记录分隔符 NF 当前记录里域个数 NR 到目前为止记录数 OFS 输出域分隔符 ORS 输出记录分隔符 1、 awk &#8216;/101/&#8217; file 显示文件file中包含101的匹配行。 awk &#8216;/101/,/105/&#8217; file awk &#8216;$1 == 5&#8242; file awk &#8216;$1 == &#8220;CT&#8221;&#8216; file 注意必须带双引号 awk &#8216;$1 * $2 [...]]]></description>
			<content:encoded><![CDATA[<p>提示：其实 man awk 提供的文档也很详细，不过整理加上中文估计还是可以对初学者有一定帮助的。</p>
<p>awk 用法：awk &#8216; pattern {action} &#8216; </p>
<p>变量名                含义<br />
ARGC                命令行变元个数<br />
ARGV                命令行变元数组<br />
FILENAME        当前输入文件名<br />
FNR                当前文件中的记录号<br />
FS                输入域分隔符，默认为一个空格<br />
RS                输入记录分隔符<br />
NF                当前记录里域个数<br />
NR                到目前为止记录数<br />
OFS                输出域分隔符<br />
ORS                输出记录分隔符<br />
<span id="more-62"></span><br />
1、<br />
    awk &#8216;/101/&#8217;               file 显示文件file中包含101的匹配行。<br />
    awk &#8216;/101/,/105/&#8217;         file<br />
    awk &#8216;$1 == 5&#8242;             file<br />
    awk &#8216;$1 == &#8220;CT&#8221;&#8216;          file 注意必须带双引号<br />
    awk &#8216;$1 * $2 >100 &#8216;       file<br />
    awk &#8216;$2 >5 &#038;&#038; $2<=15'     file</p>
<p>2、<br />
    awk '{print NR,NF,$1,$NF,}' file 显示文件file的当前记录号、域数和每一行的第一个和最后一个域。<br />
    awk '/101/ {print $1,$2 + 10}' file 显示文件file的匹配行的第一、二个域加10。<br />
    awk '/101/ {print $1$2}'  file<br />
    awk '/101/ {print $1 $2}' file 显示文件file的匹配行的第一、二个域，但显示时域中间没有分隔符。</p>
<p>3、<br />
    df | awk '$4>1000000 &#8216;         通过管道符获得输入，如：显示第4个域满足条件的行。</p>
<p>4、<br />
    awk -F &#8220;|&#8221; &#8216;{print $1}&#8217;   file 按照新的分隔符“|”进行操作。<br />
    awk  &#8216;BEGIN { FS=&#8221;[: \t|]&#8221; } {print $1,$2,$3}&#8217; file 通过设置输入分隔符（FS=&#8221;[: \t|]&#8220;）修改输入分隔符。</p>
<p>    Sep=&#8221;|&#8221;<br />
    awk -F $Sep &#8216;{print $1}&#8217;  file 按照环境变量Sep的值做为分隔符。<br />
    awk -F &#8216;[ :\t|]&#8216; &#8216;{print $1}&#8217; file 按照正则表达式的值做为分隔符，这里代表空格、:、TAB、|同时做为分隔符。<br />
    awk -F &#8216;[][]&#8216;    &#8216;{print $1}&#8217; file 按照正则表达式的值做为分隔符，这里代表[、]</p>
<p>5、<br />
    awk -f awkfile              file 通过文件awkfile的内容依次进行控制。<br />
    cat awkfile  /101/{print &#8220;\047 Hello! \047&#8243;} &#8211;遇到匹配行以后打印 &#8216; Hello! &#8216;.\047代表单引号。<br />
    {print $1,$2}                   &#8211;因为没有模式控制，打印每一行的前两个域。</p>
<p>6、<br />
    awk &#8216;$1 ~ /101/ {print $1}&#8217; file 显示文件中第一个域匹配101的行（记录）。</p>
<p>7、<br />
    awk   &#8216;BEGIN { OFS=&#8221;%&#8221;} {print $1,$2}&#8217;           file 通过设置输出分隔符（OFS=&#8221;%&#8221;）修改输出格式。</p>
<p>8、<br />
    awk   &#8216;BEGIN { max=100 ;print &#8220;max=&#8221; max}             BEGIN 表示在处理任意行之前进行的操作。{max=($1 >max ?$1:max); print $1,&#8221;Now max is &#8220;max}&#8217; file 取得文件第一个域的最大值。<br />
   （表达式1?表达式2:表达式3 相当于：<br />
    if (表达式1)<br />
        表达式2<br />
    else<br />
        表达式3<br />
    awk &#8216;{print ($1>4 ? &#8220;high &#8220;$1: &#8220;low &#8220;$1)}&#8217; file </p>
<p>9、<br />
    awk &#8216;$1 * $2 >100 {print $1}&#8217; file 显示文件中第一个域匹配101的行（记录）。</p>
<p>10、<br />
    awk &#8216;{$1 == &#8216;Chi&#8217; {$3 = &#8216;China&#8217;; print}&#8217; file 找到匹配行后先将第3个域替换后再显示该行（记录）。<br />
    awk &#8216;{$7 %= 3; print $7}&#8217;  file 将第7域被3除，并将余数赋给第7域再打印。</p>
<p>11、<br />
    awk &#8216;/tom/ {wage=$2+$3; printf wage}&#8217; file 找到匹配行后为变量wage赋值并打印该变量。</p>
<p>12、<br />
    awk &#8216;/tom/ {count++;}<br />
         END {print &#8220;tom was found &#8220;count&#8221; times&#8221;}&#8217; file END表示在所有输入行处理完后进行处理。</p>
<p>13、<br />
    awk &#8216;gsub(/\$/,&#8221;");gsub(/,/,&#8221;"); cost+=$4; END {print &#8220;The total is $&#8221; cost>&#8221;filename&#8221;}&#8217;    file gsub函数用空串替换$和,再将结果输出到filename中。<br />
    1 2 3 $1,200.00<br />
    1 2 3 $2,300.00<br />
    1 2 3 $4,000.00</p>
<p>    awk &#8216;{gsub(/\$/,&#8221;");gsub(/,/,&#8221;");<br />
    if ($4>1000&#038;&#038;$4<2000) c1+=$4;<br />
    else if ($4>2000&#038;&#038;$4<3000) c2+=$4;<br />
    else if ($4>3000&#038;&#038;$4<4000) c3+=$4;<br />
    else c4+=$4; }<br />
    END {printf  "c1=[%d];c2=[%d];c3=[%d];c4=[%d]\n",c1,c2,c3,c4}"' file<br />
    通过if和else if完成条件语句</p>
<p>    awk '{gsub(/\$/,"");gsub(/,/,"");<br />
    if ($4>3000&#038;&#038;$4<4000) exit;<br />
    else c4+=$4; }<br />
    END {printf  "c1=[%d];c2=[%d];c3=[%d];c4=[%d]\n",c1,c2,c3,c4}"' file<br />
    通过exit在某条件时退出，但是仍执行END操作。<br />
    awk '{gsub(/\$/,"");gsub(/,/,"");<br />
    if ($4>3000) next;<br />
    else c4+=$4; }<br />
    END {printf  &#8220;c4=[%d]\n&#8221;,c4}&#8221;&#8216; file<br />
    通过next在某条件时跳过该行，对下一行执行操作。</p>
<p>14、<br />
    awk &#8216;{ print FILENAME,$0 }&#8217; file1 file2 file3>fileall 把file1、file2、file3的文件内容全部写到fileall中，格式为<br />
    打印文件并前置文件名。</p>
<p>15、<br />
    awk &#8216; $1!=previous { close(previous); previous=$1 }<br />
    {print substr($0,index($0,&#8221; &#8220;) +1)>$1}&#8217; fileall 把合并后的文件重新分拆为3个文件。并与原文件一致。</p>
<p>16、<br />
    awk &#8216;BEGIN {&#8220;date&#8221;|getline d; print d}&#8217;         通过管道把date的执行结果送给getline，并赋给变量d，然后打印。 </p>
<p>17、<br />
    awk &#8216;BEGIN {system(&#8220;echo \&#8221;Input your name:\\c\&#8221;"); getline d;print &#8220;\nYour name is&#8221;,d,&#8221;\b!\n&#8221;}&#8217;<br />
    通过getline命令交互输入name，并显示出来。<br />
    awk &#8216;BEGIN {FS=&#8221;:&#8221;; while(getline< "/etc/passwd" >0) { if($1~&#8221;050[0-9]_&#8221;) print $1}}&#8217;<br />
    打印/etc/passwd文件中用户名包含050x_的用户名。</p>
<p>18、<br />
    awk &#8216;{ i=1;while(i<NF) {print NF,$i;i++}}' file 通过while语句实现循环。<br />
    awk '{ for(i=1;i<NF;i++) {print NF,$i}}'   file 通过for语句实现循环。<br />
    type file|awk -F "/" '<br />
    { for(i=1;i<NF;i++)<br />
    { if(i==NF-1) { printf "%s",$i }<br />
    else { printf "%s/",$i } }}'               显示一个文件的全路径。<br />
    用for和if显示日期<br />
    awk  'BEGIN {<br />
    for(j=1;j<=12;j++)<br />
    {<br />
        flag=0;<br />
        printf "\n%d月份\n",j;<br />
        for(i=1;i<=31;i++)<br />
        {<br />
            if (j==2&#038;&#038;i>28) flag=1;<br />
            if ((j==4||j==6||j==9||j==11)&#038;&#038;i>30) flag=1;<br />
            if (flag==0) {printf &#8220;%02d%02d &#8220;,j,i}<br />
        }<br />
    }<br />
    }&#8217;</p>
<p>19、<br />
    在awk中调用系统变量必须用单引号，如果是双引号，则表示字符串<br />
    Flag=abcd<br />
    awk &#8216;{print &#8216;$Flag&#8217;}&#8217;   结果为abcd<br />
    awk &#8216;{print  &#8220;$Flag&#8221;}&#8217;   结果为$Flag </p>
]]></content:encoded>
			<wfw:commentRss>http://www.toplee.com/blog/62.html/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Linux/FreeBSD下用C语言开发PHP的so扩展模块例解</title>
		<link>http://www.toplee.com/blog/56.html</link>
		<comments>http://www.toplee.com/blog/56.html#comments</comments>
		<pubDate>Sun, 22 Jan 2006 18:42:49 +0000</pubDate>
		<dc:creator>Michael</dc:creator>
				<category><![CDATA[C / Erlang / Lua]]></category>
		<category><![CDATA[Linux / BSD]]></category>
		<category><![CDATA[PHP / Zend]]></category>
		<category><![CDATA[技术交流]]></category>
		<category><![CDATA[c语言]]></category>
		<category><![CDATA[FreeBSD]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[so]]></category>
		<category><![CDATA[扩展]]></category>

		<guid isPermaLink="false">http://www.toplee.com/blog/?p=56</guid>
		<description><![CDATA[Show All &#160; 1 2 引用本文请注明出处：Just Do IT (http://www.toplee.com) < Michael Lee @ toplee.com > 我从97年接触互联网的web开发，至今已经过去9年了，从最初的frontpage做html页面到学会ASP+access+IIS开始，就跟web开发干上了，后来又依次使用了ASP+SQLServer+IIS、JSP+Oracle+Jrun(Resin/Tomcat)、PHP+Syabse(MySQL)+Apache &#8230; 最后我定格到了 PHP+MySQL+Apache+Linux(BSD) 的架构上，也就是大家常说的LAMP架构，这说来有很多理由，网上也有很多人讨论各种架构和开发语言之间的优劣，我就不多说了，简单说一下我喜欢LAMP的几个主要原因： 1、全开放的免费平台； 2、简单易上手、各种资源丰富； 3、PHP、MySQL、Apache与Linux(BSD)系统底层以及彼此间无缝结合，非常高效； 4、均使用最高效的语言C/C++开发，性能可靠； 5、PHP语言和C的风格基本一致，还吸取了Java和C++的诸多架构优点； 6、这是最关键的一点，那就是PHP可以非常方便的使用C/C++开发扩展模块，给了PHP无限的扩张性！ 基于以上原因，我非常喜欢基于PHP语言的架构，其中最关键的一点就是最后一点，以前在Yahoo和mop均推广使用这个平台，在C扩展php方面也有一些经验，在此和大家分享一下，希望可以抛砖引玉。 用C语言编写PHP的扩展模块的方法有几种，根据最后的表现形式有两种，一种是直接编译进php，一种是编译为php的so扩展模块来被php调用，另外根据编译的方式有两种，一种使用phpize工具（php编译后有的），一种使用ext_skel工具（php自带的），我们使用最多，也是最方便的方式就是使用ext_skel工具来编写php的so扩展模块，这里也主要介绍这种方式。 我们在php的源码目录里面可以看到有个ext目录（我这里说的php都是基于Linux平台的php来说的，不包括windows下的），在ext目录下有个工具 ext_skel ，这个工具可以让我们简单的开发出php的扩展模块，它提供了一个通用的php扩展模块开发步骤和模板。下面我们以开发一个在php里面进行utf8/gbk/gb2312三种编码转换的扩展模块为例子进行说明。在这个模块中，我们要最终提供以下几个函数接口： (1) string toplee_big52gbk(string s) 将输入字符串从BIG5码转换成GBK (2) string toplee_gbk2big5(string s) 将输入字符串从GBK转换成BIG5码 (3) string toplee_normalize_name(string s) 将输入字符串作以下处理：全角转半角，strim，大写转小写 (4) string toplee_fan2jian(int code, string s) 将输入的GBK繁体字符串转换成简体 (5) string [...]]]></description>
			<content:encoded><![CDATA[<div id="pagepost_56" class="pagepost"><div id="pagebar_top_56" class="pagebar"><a name="pp0"></a><a name="pp1"></a><a name="pp2"></a><a href="#pp0" onclick="pagepost(56, 0);">Show All</a> &nbsp; <strong style="color: #1E90FF;" title="">1</strong> <a href="#pp2" title="" onclick="pagepost(56, 2);">2</a> <strong id="pagebar_loading_56" style="color: green;"></strong></div><p>引用本文请注明出处：Just Do IT (http://www.toplee.com)  < Michael Lee @ toplee.com ></p>
<p>我从97年接触互联网的web开发，至今已经过去9年了，从最初的frontpage做html页面到学会ASP+access+IIS开始，就跟web开发干上了，后来又依次使用了ASP+SQLServer+IIS、JSP+Oracle+Jrun(Resin/Tomcat)、PHP+Syabse(MySQL)+Apache &#8230; 最后我定格到了 PHP+MySQL+Apache+Linux(BSD) 的架构上，也就是大家常说的LAMP架构，这说来有很多理由，网上也有很多人讨论各种架构和开发语言之间的优劣，我就不多说了，简单说一下我喜欢LAMP的几个主要原因：<br />
<span id="more-56"></span><br />
1、全开放的免费平台；<br />
2、简单易上手、各种资源丰富；<br />
3、PHP、MySQL、Apache与Linux(BSD)系统底层以及彼此间无缝结合，非常高效；<br />
4、均使用最高效的语言C/C++开发，性能可靠；<br />
5、PHP语言和C的风格基本一致，还吸取了Java和C++的诸多架构优点；<br />
6、这是最关键的一点，那就是PHP可以非常方便的使用C/C++开发扩展模块，给了PHP无限的扩张性！</p>
<p>基于以上原因，我非常喜欢基于PHP语言的架构，其中最关键的一点就是最后一点，以前在Yahoo和mop均推广使用这个平台，在C扩展php方面也有一些经验，在此和大家分享一下，希望可以抛砖引玉。</p>
<p>用C语言编写PHP的扩展模块的方法有几种，根据最后的表现形式有两种，一种是直接编译进php，一种是编译为php的so扩展模块来被php调用，另外根据编译的方式有两种，一种使用phpize工具（php编译后有的），一种使用ext_skel工具（php自带的），我们使用最多，也是最方便的方式就是使用ext_skel工具来编写php的so扩展模块，这里也主要介绍这种方式。</p>
<p>我们在php的源码目录里面可以看到有个ext目录（我这里说的php都是基于Linux平台的php来说的，不包括windows下的），在ext目录下有个工具 ext_skel ，这个工具可以让我们简单的开发出php的扩展模块，它提供了一个通用的php扩展模块开发步骤和模板。下面我们以开发一个在php里面进行utf8/gbk/gb2312三种编码转换的扩展模块为例子进行说明。在这个模块中，我们要最终提供以下几个函数接口：</p>
<p>(1) string toplee_big52gbk(string s)<br />
	将输入字符串从BIG5码转换成GBK<br />
(2) string toplee_gbk2big5(string s)<br />
	将输入字符串从GBK转换成BIG5码<br />
(3) string toplee_normalize_name(string s)<br />
	将输入字符串作以下处理：全角转半角，strim，大写转小写<br />
(4) string toplee_fan2jian(int code, string s)<br />
	将输入的GBK繁体字符串转换成简体<br />
(5) string toplee_decode_utf(string s)<br />
	将utf编码的字符串转换成UNICODE<br />
(6) string toplee_decode_utf_gb(string s)<br />
	将utf编码的字符串转换成GB<br />
(7) string toplee_decode_utf_big5(string s)<br />
	将utf编码的字符串转换成BIG5<br />
(8) string toplee_encode_utf_gb(string s)<br />
	将输入的GBKf编码的字符串转换成utf编码</p>
<p>首先，我们进入ext目录下，运行下面命令：<br />
#./ext_skel &#8211;extname=toplee<br />
这时，php会自动在ext目录下为我们生成一个目录toplee，里面包含下面几个文件<br />
.cvsignore<br />
CREDITS<br />
EXPERIMENTAL<br />
config.m4<br />
php_toplee.h<br />
tests<br />
toplee.c<br />
toplee.php</p>
<p>其中最有用的就是config.m4和toplee.c文件<br />
接下来我们修改config.m4文件<br />
#vi ./config.m4<br />
找到里面有类似这样几行</p>
<div class="hl-surround"><div class="hl-main">dnl PHP_ARG_WITH(toplee, for toplee support,<br />dnl Make sure that the comment is aligned:<br />dnl [&nbsp; --with-toplee&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;Include toplee support])<br /><br />dnl Otherwise use enable:<br /><br />dnl PHP_ARG_ENABLE(toplee, whether to enable toplee support,<br />dnl Make sure that the comment is aligned:<br />dnl [&nbsp; --enable-toplee&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;Enable toplee support])</div></div>
<p>上面的几行意思是说告诉php编译的使用使用那种方式加载我们的扩展模块toplee，我们使用&#8211;with-toplee的方式，于是我们修改为下面的样子</p>
<div class="hl-surround"><div class="hl-main">PHP_ARG_WITH(toplee, for toplee support,<br />Make sure that the comment is aligned:<br />[&nbsp; --with-toplee&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;Include toplee support])<br /><br />dnl Otherwise use enable:<br /><br />dnl PHP_ARG_ENABLE(toplee, whether to enable toplee support,<br />dnl Make sure that the comment is aligned:<br />dnl [&nbsp; --enable-toplee&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;Enable toplee support])</div></div>
<p>然后我们要做的关键事情就是编写toplee.c，这个是我们编写模块的主要文件，如果您什么都不修改，其实也完成了一个php扩展模块的编写，里面有类似下面的几行代码</p>
<div class="hl-surround"><div class="hl-main"><span style="color: Blue;">PHP_FUNCTION</span><span style="color: Olive;">(</span><span style="color: Blue;">confirm_toplee_compiled</span><span style="color: Olive;">)</span><span style="color: Gray;"><br /></span><span style="color: Olive;">{</span><span style="color: Gray;"><br />&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;</span><span class="hl-types">char</span><span style="color: Gray;"> *</span><span style="color: Blue;">arg</span><span style="color: Gray;"> = </span><span class="hl-prepro">NULL</span><span style="color: Gray;">;<br />&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;</span><span class="hl-types">int</span><span style="color: Gray;"> </span><span style="color: Blue;">arg_len</span><span style="color: Gray;">, </span><span style="color: Blue;">len</span><span style="color: Gray;">;<br />&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;</span><span class="hl-types">char</span><span style="color: Gray;"> </span><span style="color: Blue;">string</span><span style="color: Olive;">[</span><span style="color: Maroon;">256</span><span style="color: Olive;">]</span><span style="color: Gray;">;<br />&nbsp;<br />&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;</span><span style="color: Green;">if</span><span style="color: Gray;"> </span><span style="color: Olive;">(</span><span style="color: Blue;">zend_parse_parameters</span><span style="color: Olive;">(</span><span style="color: Blue;">ZEND_NUM_ARGS</span><span style="color: Olive;">()</span><span style="color: Gray;"> </span><span style="color: Blue;">TSRMLS_CC</span><span style="color: Gray;">, </span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">s</span><span style="color: #8b0000;">&quot;</span><span style="color: Gray;">, &amp;</span><span style="color: Blue;">arg</span><span style="color: Gray;">, &amp;</span><span style="color: Blue;">arg_len</span><span style="color: Olive;">)</span><span style="color: Gray;"> == </span><span style="color: Blue;">FAILURE</span><span style="color: Olive;">)</span><span style="color: Gray;"> </span><span style="color: Olive;">{</span><span style="color: Gray;"><br />&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;</span><span style="color: Green;">return</span><span style="color: Gray;">;<br />&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;</span><span style="color: Olive;">}</span><span style="color: Gray;"><br />&nbsp;<br />&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;</span><span style="color: Blue;">len</span><span style="color: Gray;"> = </span><span style="color: Blue;">sprintf</span><span style="color: Olive;">(</span><span style="color: Blue;">string</span><span style="color: Gray;">, </span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">Congratulations! You have successfully modified ext/%.78s/config.m4. Module %.78s is now compiled into PHP.</span><span style="color: #8b0000;">&quot;</span><span style="color: Gray;">, </span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">toplee</span><span style="color: #8b0000;">&quot;</span><span style="color: Gray;">, </span><span style="color: Blue;">arg</span><span style="color: Olive;">)</span><span style="color: Gray;">;<br />&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;</span><span style="color: Blue;">RETURN_STRINGL</span><span style="color: Olive;">(</span><span style="color: Blue;">string</span><span style="color: Gray;">, </span><span style="color: Blue;">len</span><span style="color: Gray;">, </span><span style="color: Maroon;">1</span><span style="color: Olive;">)</span><span style="color: Gray;">;<br /></span><span style="color: Olive;">}</span></div></div>
<p>如果我们在后面完成php的编译时把新的模块编译进去，那么我们就可以在php脚本中调用函数toplee()，它会输出一段字符串“Congratulations! You have successfully modified ext/toplee/config.m4. Module toplee is now compiled into PHP.”</p>
<div id="pagebar_bottom_56" class="pagebar"><a href="#pp0" onclick="pagepost(56, 0);">Show All</a> &nbsp; <strong style="color: #1E90FF;" title="">1</strong> <a href="#pp2" title="" onclick="pagepost(56, 2);">2</a> </div></div>]]></content:encoded>
			<wfw:commentRss>http://www.toplee.com/blog/56.html/feed</wfw:commentRss>
		<slash:comments>14</slash:comments>
		</item>
	</channel>
</rss>
