<?xml version="1.0" encoding="utf-8"?><?xml-stylesheet href='http://feed.feedsky.com/styles/feedsky0.xsl' type='text/xsl' ?><!--这是一个由Feedsy提供技术支持的Feed，为了提高读者阅读的体验，以及满足用户美化自己Feed的需要，我们设计了多种精美的Feed模板，提供给大家选择，所有最终呈现出来的样式，皆由用户自愿选择使用，未经许可，任何团体和个人，请不要擅自修改样式或者盗用，这是对于用户选择权的尊重。--><rss xmlns:atom="http://www.w3.org/2005/Atom" xmlns:fs="http://www.feedsky.com/namespace/feed" xmlns:dc="http://purl.org/dc/elements/1.1/" version="2.0"><channel><atom:link href="http://feed.feedsky.com/itedu" type="application/rss+xml" ref="self"></atom:link><fs:self_link href="http://feed.feedsky.com/itedu" type="application/rss+xml"></fs:self_link><lastBuildDate>Tue, 08 Jul 2008 02:19:00 GMT</lastBuildDate><title>谢作如教学日志</title><description>讨论教育信息化和信息技术教学</description><image><url>http://beta.feedsky.com/images/feedsky_logologo.gif</url><title>谢作如教学日志</title><link>http://www.wzms.net/u/144/index.htm</link></image><link>http://www.wzms.net/u/144/index.htm</link><item><title>在“成长博客”个人模板上添加flash的尝试</title><link>http://item.feedsky.com/~feedsky/itedu/~1219512/96617851/1221184/1/item.html</link><description>&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 省教研员魏老师要求我们修改一下去年的省级培训专用博客模板，使其成为信息技术学科培训资源博客。考虑到浙师大附中的那帮弟兄最近正忙着今年培训工作，我就请我组的陈敏老师来修改的模板。想不到完成看是这么简单的任务，居然也不容易。&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 问题的关键是在于“成长博客”的BT服务。估计是管理员担心来自swf的某些web脚本攻击，如挂马之类，居然屏蔽了在模板中插入swf的功能。好好的一段代码，提交时被替换为无效代码。于是，认真研究了原理，耍一次“成长博客”的技术人员，成功在模板中插入了swf文件。&lt;/P&gt;
&lt;P&gt;过程回放：&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 我选择使用SWFObject脚本来插入swf，因为代码编写相对简单。当然，直接插入脚本是不成功的，因为其模板编辑不支持js脚本，强行在代码中插入脚本，提交后关键字“script”会被替换。估计他们肯定使用replace函数来实现脚本过滤功能的，于是我试着插入如下代码：&lt;/P&gt;
&lt;P&gt;&amp;lt;div id=&quot;flash_1&quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;BR&gt;&amp;lt;div id=&quot;flash_2&quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;BR&gt;&amp;lt;sscriptcript type=&quot;text/javasscriptcript&quot; src=&quot;http://www.wzms.net/&lt;A href=&quot;http://www.wzms.com/images/swfobject.js%22%3E%3C/sscriptcript&quot;&gt;http://www.wzms.com/images/swfobject.js&quot;&amp;gt;&amp;lt;/sscriptcript&lt;/A&gt;&amp;gt;&lt;BR&gt;&amp;lt;sscriptcript type=&quot;http://www.wzms.net/text/javasscriptcript&quot;&amp;gt;&lt;BR&gt;&amp;nbsp; var so1 = new SWFObject(&quot;&lt;A href=&quot;http://chenmin.wzms.com/otherimages/oblogkqimage/top.swf&quot;&gt;http://chenmin.wzms.com/otherimages/oblogkqimage/top.swf&lt;/A&gt;&quot;, &quot;mymovie&quot;, &quot;774&quot;, &quot;164&quot;, &quot;6&quot;, &quot;#ffffff&quot;);&lt;BR&gt;&amp;nbsp; so1.write(&quot;flash_1&quot;);&lt;BR&gt;&amp;nbsp; var so2 = new SWFObject(&quot;&lt;A href=&quot;http://chenmin.wzms.com/otherimages/oblogkqimage/blog.swf&quot;&gt;http://chenmin.wzms.com/otherimages/oblogkqimage/blog.swf&lt;/A&gt;&quot;, &quot;mymovie&quot;, &quot;90&quot;, &quot;30&quot;, &quot;6&quot;, &quot;#ffffff&quot;);&lt;BR&gt;&amp;nbsp; so2.write(&quot;flash_2&quot;);&lt;BR&gt;&amp;lt;/sscriptcript&amp;gt;&lt;/P&gt;
&lt;P&gt;提交后，正如自己的猜测一样，sscriptcript经过替换后，变成script，swf运行正常。&lt;/P&gt;
&lt;P&gt;&amp;lt;div id=&quot;flash_1&quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;BR&gt;&amp;lt;div id=&quot;flash_2&quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;BR&gt;&amp;lt;script type=&quot;text/javascript&quot; src=&quot;http://www.wzms.net/&lt;A href=&quot;http://www.wzms.com/images/swfobject.js%22%3E%3C/script&quot;&gt;http://www.wzms.com/images/swfobject.js&quot;&amp;gt;&amp;lt;/script&lt;/A&gt;&amp;gt;&lt;BR&gt;&amp;lt;script type=&quot;http://www.wzms.net/text/javascript&quot;&amp;gt;&lt;BR&gt;&amp;nbsp; var so1 = new SWFObject(&quot;&lt;A href=&quot;http://chenmin.wzms.com/otherimages/oblogkqimage/top.swf&quot;&gt;http://chenmin.wzms.com/otherimages/oblogkqimage/top.swf&lt;/A&gt;&quot;, &quot;mymovie&quot;, &quot;774&quot;, &quot;164&quot;, &quot;6&quot;, &quot;#ffffff&quot;);&lt;BR&gt;&amp;nbsp; so1.write(&quot;flash_1&quot;);&lt;BR&gt;&amp;nbsp; var so2 = new SWFObject(&quot;&lt;A href=&quot;http://chenmin.wzms.com/otherimages/oblogkqimage/blog.swf&quot;&gt;http://chenmin.wzms.com/otherimages/oblogkqimage/blog.swf&lt;/A&gt;&quot;, &quot;mymovie&quot;, &quot;90&quot;, &quot;30&quot;, &quot;6&quot;, &quot;#ffffff&quot;);&lt;BR&gt;&amp;nbsp; so2.write(&quot;flash_2&quot;);&lt;BR&gt;&amp;lt;/script&amp;gt;&lt;/P&gt;
&lt;P&gt;当然，下次编辑模板时要注意了，直接保存，脚本又会被过滤掉的。&lt;/P&gt;</description><pubDate>Tue, 08 Jul 2008 10:19:00 +0800</pubDate><author>谢作如</author><guid isPermaLink="false">http://www.wzms.net/u/144/3197.htm</guid><dc:creator>谢作如</dc:creator><fs:srclink>http://www.wzms.net/u/144/3197.htm</fs:srclink><fs:srcfeed>http://www.wzms.net/u/144/rss2.xml</fs:srcfeed><fs:itemid>feedsky/itedu/~1219512/96617851/1221184</fs:itemid></item><item><title>关于2008年教学常规检查的一些说明（附统计表）</title><link>http://item.feedsky.com/~feedsky/itedu/~1219512/96617852/1221184/1/item.html</link><description>&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 又一个学期要结束了。对于乐颖来说，每个学期结束前的教学常规检查工作是最头疼的事。在学校校本资源库建立前，所有的教案、论文、课件都是要通过BQQ发到她那里，然后一个一个地核对检查。而后来就进化成一个一个打开教师的资源库页面来看。但是即使这样，徐丹青老师还是不满意，总希望我能一次性给出一张统计表，让教研处能从繁琐的统计任务中解脱出来。&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 我说计算机的确能帮我们处理很多繁琐的事，但是毕竟不是万能的，比如它怎么知道老师们上传的资源哪个是供检查专用，哪个是供学生使用，哪个是自己随便放放的？于是，这两个学期的教学检查就开始要求老师们对资源统一命名，便于统计。&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 但对于一所规模较大的学校来说，很多工作常常会事与愿违。老师们总会不小心偏离了规范，比如资源名不是“2008年6月优秀教案”，而打成了“2008年6”、“2008.6”、“08年6月”、“08.6”、“200806”、“２００８年６月”等等，虽然我们能一眼就分辨出以上词语表达的意思都是一样，但是机器却难以做到。和徐丹青老师商量后，我连夜给资源库写了一个标签功能，选择系统提供的统一标签，然后再写程序统计。&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 虽然惹来几位老师的笑骂，说我又增加了他们的负担云云，但总体情况还是很好。访问&lt;A href=&quot;http://www.wzms.com/resource/tags.asp&quot;&gt;http://www.wzms.com/resource/tags.asp&lt;/A&gt;，“2008年6月教学检查”这个标签使用人气高达好几百，可见至少有100多老师正确使用标签了。花了两个晚上写出按照tags统计资源的页面（毕竟要考虑如何做到高效率），输出了准确的统计列表。&lt;/P&gt;
&lt;P&gt;&lt;IMG alt=&quot;&quot; src=&quot;http://www.wzms.net/0/2008-6/281223802366.gif&quot; border=0&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;提示：&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;1、我的资源已经打上标签，为什么统计列表中一个都看不到？答：请检查标签是否正确，要一字不差，最好从标签列表中选择。&lt;/P&gt;
&lt;P&gt;2、我的资源为什么统计不全？（如仅仅显示了论文、课件，却没有显示教案）答：请检查资源上传是否选择了正确的分类，如教案是不是传到“教案类”中。&lt;/P&gt;
&lt;P&gt;&lt;A href=&quot;http://www.wzms.net/attachment.asp?FileID=1981&quot;&gt;教学常规检查[2008年1月教学检查].htm&lt;/A&gt;（下载到本机浏览）&lt;BR&gt;&lt;A href=&quot;http://www.wzms.net/attachment.asp?FileID=1982&quot;&gt;教学常规检查[2008年6月教学检查].htm&lt;/A&gt;（下载到本机浏览）&lt;BR&gt;&lt;BR&gt;&lt;/P&gt;</description><pubDate>Sat, 28 Jun 2008 03:26:00 +0800</pubDate><author>谢作如</author><guid isPermaLink="false">http://www.wzms.net/u/144/3186.htm</guid><dc:creator>谢作如</dc:creator><fs:srclink>http://www.wzms.net/u/144/3186.htm</fs:srclink><fs:srcfeed>http://www.wzms.net/u/144/rss2.xml</fs:srcfeed><fs:itemid>feedsky/itedu/~1219512/96617852/1221184</fs:itemid></item><item><title>镜子百度的原理和css滤镜效果演示</title><link>http://item.feedsky.com/~feedsky/itedu/~1219512/96617853/1221184/1/item.html</link><description>&lt;P align=left&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 在今天的报纸上看到一个有趣的网站介绍——镜子百度，地址：&lt;A href=&quot;http://www.udiab.com.cn/1.htm&quot;&gt;http://www.udiab.com.cn/1.htm&lt;/A&gt;。忍不住好奇，也去瞅了一眼，还真有意思，所有的东西（文字图片）都水平翻转，就像在镜子里看一样。进一步发现网络上也有好多人对这个网站的实现原理很感兴趣，于是看了下代码，原来就是使用css的滤镜效果实现的，很简单，真的。只要在你的网页中加入这样一行代码“&amp;lt;style&amp;gt;body{filter:FlipH;margin:4px 0}&amp;lt;/style&amp;gt;”，就可以看到魔术般的的镜子效果了。&lt;/P&gt;
&lt;P align=left&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 在网页制作中使用CSS，这已是众所周知，而关于CSS滤镜使用的却介绍得不多。 其实CSS 滤镜并不是什么新鲜的话题，况且它对浏览器还挺挑剔，但是谁也不能否认CSS 滤镜的确是一个很有趣的小东西，短短一行代码就可以变化出各种各样的滤镜特效。CSS滤镜实际上是CSS一个新的扩展部分，使用这种技术简单的语法就可以把可视化的滤镜和转换效果添加到一个标准的HTML元素上，例如图片、文本、以及其他一些对象，为页面添加一些丰富的变化。如果您有一些脚本语言的基础，能够把滤镜效果与SCRIPT小程序做一些结合，就可以拥有一个CSS FILTER+ SCRIPT建立的强大的动态交互文档工具。&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 忽然想起前段时间全国哀悼汶川地震，当时有人问：怎样才可以以最快速度让你的网站变成灰度？看了CSS的滤镜后，相信这又是一行代码就可以搞定的一件事了:“&amp;lt;style&amp;gt;body{filter:gray;margin:4px 0}&amp;lt;/style&amp;gt;”。为了让大家体会css的滤镜效果，我写了一个简单的网页来演示，有兴趣可以下载看看。&lt;/P&gt;
&lt;P align=left&gt;&lt;A href=&quot;http://www.wzms.net/attachment.asp?FileID=1980&quot;&gt;css.htm&lt;/A&gt;(点击浏览)&lt;BR&gt;&lt;/P&gt;
&lt;P align=left&gt;知识介绍（css滤镜说明）：&lt;/P&gt;
&lt;P align=left&gt;　 alpha：设置透明层次&lt;BR&gt;　　blur：创建高速度移动效果，即模糊效果&lt;BR&gt;　　chroma：制作专用颜色透明&lt;BR&gt;　　DropShadow：创建对象的固定影子&lt;BR&gt;　　FlipH：创建水平镜像图片&lt;BR&gt;　　FlipV：创建垂直镜像图片&lt;BR&gt;　　glow：加光辉在附近对象的边外&lt;BR&gt;　　gray：把图片灰度化&lt;BR&gt;　　invert：反色&lt;BR&gt;　　light：创建光源在对象上&lt;BR&gt;　　mask：创建透明掩膜在对象上&lt;BR&gt;　　shadow：创建偏移固定影子&lt;BR&gt;　　wave：波纹效果&lt;BR&gt;　　Xray：使对象变得像被x光照射一样&lt;BR&gt;&lt;BR&gt;1、滤镜：Alpha&lt;BR&gt;　　语法：STYLE=&quot;filter:Alpha(Opacity=opacity, FinishOpacity=finishopacity，Style=style, StartX=startX，StartY=startY，FinishX=finishX，FinishY=finishY)&quot; &lt;BR&gt;　　说明：&lt;BR&gt;　　Opacity：起始值，取值为0～100, 0为透明，100为原图。&lt;BR&gt;　　FinishOpacity：目标值。&lt;BR&gt;　　Style：1或2或3&lt;BR&gt;　　StartX：任意值&lt;BR&gt;　　StartY：任意值&lt;BR&gt;　　例子：filter:Alpha(Opacity=&quot;0&quot;,FinishOpacity=&quot;75&quot;,Style=&quot;2&quot;) &lt;BR&gt;2、滤镜：blur&lt;BR&gt;　　语法：STYLE=&quot;filter:Blur(Add = add, Direction = direction, Strength = strength)&quot;&lt;BR&gt;　　说明：&lt;BR&gt;　　Add：一般为1，或0。&lt;BR&gt;　　Direction：角度，0～315度，步长为45度。&lt;BR&gt;　　Strength：效果增长的数值，一般5即可。&lt;BR&gt;　　例子：filter:Blur(Add=&quot;1&quot;,Direction=&quot;45&quot;,Strength=&quot;5&quot;)&lt;BR&gt;3、滤镜：Chroma&lt;BR&gt;　　语法：STYLE=&quot;filter:Chroma(Color = color)&quot;&lt;BR&gt;　　说明：color：#rrggbb格式，任意。&lt;BR&gt;　　例子：filter:Chroma(Color=&quot;#FFFFFF&quot;)&lt;BR&gt;4、滤镜：DropShadow&lt;BR&gt;　　语法：STYLE=&quot;filter:DropShadow(Color=color, OffX=offX, OffY=offY, Positive=positive)&quot;&lt;BR&gt;　　说明：Color:#rrggbb格式，任意。&lt;BR&gt;　　Offx：X轴偏离值。&lt;BR&gt;　　Offy：Y轴偏离值。&lt;BR&gt;　　Positive：1或0。&lt;BR&gt;　　例子：filter:DropShadow(Color=&quot;#6699CC&quot;,OffX=&quot;5&quot;,OffY=&quot;5&quot;,Positive=&quot;1&quot;)&lt;BR&gt;5、滤镜：FlipH&lt;BR&gt;　　语法：STYLE=&quot;filter:FlipH&quot; &lt;BR&gt;　　例子：filter:FlipH &lt;BR&gt;6、滤镜：FlipV&lt;BR&gt;　　语法：STYLE=&quot;filter:FlipV&quot;&lt;BR&gt;　　例子：filter:FlipV &lt;BR&gt;7、滤镜：glow&lt;BR&gt;　　语法：STYLE=&quot;filter:Glow(Color=color, Strength=strength)&quot;&lt;BR&gt;　　说明：&lt;BR&gt;　　Color：发光颜色。&lt;BR&gt;　　Strength：强度(0－100)&lt;BR&gt;　　例子：filter:Glow(Color=&quot;#6699CC&quot;,Strength=&quot;5&quot;)&lt;BR&gt;8、滤镜：gray&lt;BR&gt;　　语法：STYLE=&quot;filter:Gray&quot;&lt;BR&gt;　　例子：filter:Gray&lt;BR&gt;9、滤镜：invert&lt;BR&gt;　　语法：STYLE=&quot;filter:Invert&quot;&lt;BR&gt;　　例子：filter:Invert&lt;BR&gt;10、滤镜：mask&lt;BR&gt;　　语法：STYLE=&quot;filter:Mask(Color=color)&quot;&lt;BR&gt;　　例子：filter:Mask (Color=&quot;#FFFFE0&quot;)&lt;BR&gt;11、滤镜：shadow&lt;BR&gt;　　语法：filter:Shadow(Color=color, Direction=direction)&lt;BR&gt;　　说明：&lt;BR&gt;　　Color：#rrggbb格式。&lt;BR&gt;　　Direction：角度，0－315度，步长为45度。&lt;BR&gt;　　例子：filter:Shadow (Color=&quot;#6699CC&quot;, Direction=&quot;135&quot;)&lt;BR&gt;12、滤镜：wave&lt;BR&gt;　　语法：filter: Wave(Add=add，Freq=freq，LightStrength=strength，Phase=phase，Strength=strength)&lt;BR&gt;　　说明：&lt;BR&gt;　　Add：一般为1，或0。&lt;BR&gt;　　Freq：变形值。&lt;BR&gt;　　LightStrength：变形百分比。&lt;BR&gt;　　Phase：角度变形百分比。&lt;BR&gt;　　Strength：变形强度。&lt;BR&gt;　　例子：filter: wave(Add=&quot;0&quot;, Phase=&quot;4&quot;, Freq=&quot;5&quot;, LightStrength=&quot;5&quot;, Strength=&quot;2&quot;)&lt;BR&gt;13、滤镜：Xray&lt;BR&gt;　　语法：STYLE=&quot;filter:Xray&quot; &lt;BR&gt;　　例子：filter:Xray&lt;/P&gt;</description><pubDate>Fri, 27 Jun 2008 06:43:00 +0800</pubDate><author>谢作如</author><guid isPermaLink="false">http://www.wzms.net/u/144/3184.htm</guid><dc:creator>谢作如</dc:creator><fs:srclink>http://www.wzms.net/u/144/3184.htm</fs:srclink><fs:srcfeed>http://www.wzms.net/u/144/rss2.xml</fs:srcfeed><fs:itemid>feedsky/itedu/~1219512/96617853/1221184</fs:itemid></item><item><title>如何给你的教学资源加上标签（tags）</title><link>http://item.feedsky.com/~feedsky/itedu/~1219512/96617854/1221184/1/item.html</link><description>&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 为了方便学校教研部门统计教学常规工作，温州中学校本资源库系统增加了“标签”（tags）功能，上传资源时可以直接输入标签，或者在右边的下拉菜单选择系统提供的标签。&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 请于本周内对20日以前上传的教学资源（教学检查）进行修改，添加“标签”——“2008年6月教学检查”。没有添加该“标签”的资源为无效资源，教研部门将作为没有上交资源处理。&lt;/P&gt;
&lt;P&gt;&lt;IMG alt=&quot;&quot; src=&quot;http://www.wzms.net/0/2008-6/251137619457.gif&quot; border=0&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;小知识：&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;一、什么是标签（TAG）？&lt;BR&gt;　　简单的说,标签就是一篇文章（资源）的&quot;关键词&quot;。便于系统的统计、列表。&lt;BR&gt;二、使用标签的好处：&lt;BR&gt;　　1、您添加标签的文章（资源）就会被直链接到网站相应标签的页面，这样浏览者在访问相关标签时，就有可能访问到您的文章（资源），增加了您的文章（资源）被访问的机会。&lt;BR&gt;　　2、您可以很方便地查找到与您使用了同样标签的文章（资源），延伸您文章（资源）的视野；可以方便地查找到与您使用了同样标签的作者。 &lt;BR&gt;　　3、增加标签的方式完全由您自主决定，不受任何的限制，便于信息的整理、记忆和查找。&lt;BR&gt;三、如何使用标签?&lt;BR&gt;　　请参照教育叙事的标签使用方法，或者参照论文的关键字，提炼你的标签。&lt;BR&gt;四．如何添加“好”的Tag？ &lt;BR&gt;　　1． Tag应该要能够体现出自己的特色，并且是大家经常采用的熟悉的词语。&lt;BR&gt;　　2．用词尽量简单精炼,词语字数不要太长，两三个字的词语就可以了，尽量是有意义的词汇，不要使用一些只作为装饰的符号，如｛｝等。&lt;BR&gt;　　3．不要使用一些语义比较弱的词汇，如“我的家”，“图片”等。&lt;BR&gt;&lt;/P&gt;</description><pubDate>Wed, 25 Jun 2008 03:30:00 +0800</pubDate><author>谢作如</author><guid isPermaLink="false">http://www.wzms.net/u/144/3178.htm</guid><dc:creator>谢作如</dc:creator><fs:srclink>http://www.wzms.net/u/144/3178.htm</fs:srclink><fs:srcfeed>http://www.wzms.net/u/144/rss2.xml</fs:srcfeed><fs:itemid>feedsky/itedu/~1219512/96617854/1221184</fs:itemid></item><item><title>IETester：让你的网页在多版本IE中共存</title><link>http://item.feedsky.com/~feedsky/itedu/~1219512/96617855/1221184/1/item.html</link><description>&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 记得ie7刚出来的时候，何继伟曾经提醒我学校网站在ie7中乱成一团。因为自己没有追求新软件的习惯，所以也就掩耳盗铃一次，说反正用ie7的人也不多，随它去吧。&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 中考阅卷那几天，终于算有点空了，于是把笔记本的IE升级到7.0，这一升级还真不得了，浏览学校网站和学校教育叙事群页面，真是惨不忍睹。这才意识到虽然同是微软的产品，不同版本的IE对CSS的兼容方面还是存在很大的问题。&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 遇到这类问题，同样是没有其他选择的途径，打开Google和百度，开始新一轮学习吧。边找资料边修改，总算把自己看得到的网站都改了一遍。本想记录一下IE6和IE7在哪几个地方不兼容，后来发现问题还挺多的，算了算了，做回懒人。&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 无意中发现一个很不错的blog，名字也有个性，叫“Yes! B/S !”，如果想要设计出标准的web页面，还真得多去充充电。同时在这个blog上发现一个叫IETester的软件，使用IETester能够较好的解决以上的兼容问题。&lt;/P&gt;
&lt;P&gt;“Yes! B/S !”：&lt;A href=&quot;http://www.cnblogs.com/JustinYoung/&quot;&gt;http://www.cnblogs.com/JustinYoung/&lt;/A&gt;&lt;/P&gt;
&lt;H4&gt;官方信息&lt;/H4&gt;
&lt;P&gt;IETester is a free WebBrowser that allows you to have the rendering and javascript engines of IE8 beta 1, IE7 IE 6 and IE5.5 on Vista and XP, as well as the installed IE in the same process. New in v0.2.1 : Improved stability and multi-lingual interface !&lt;/P&gt;
&lt;P&gt;This is an alpha release, so feel free to post comments/bugs on the IETester forum or contact me directly. Minimum requirement : Windows Vista or Windows XP with IE7 (Windows XP with IE6 has some minor problems and IE7/IE8 instances do not work under this config)&lt;/P&gt;
&lt;DIV class=floatMPic&gt;&lt;A title=IETester href=&quot;http://justinyoung.cnblogs.com/&quot; target=_blank&gt;&lt;IMG alt=IETester src=&quot;http://justinyoung.cnblogs.com/images/cnblogs_com/justinyoung/2008_2q/ietester.gif&quot;&gt;&lt;/A&gt; 
&lt;H6&gt;如何像上图那样左右分tab——按紧其中一个tab,然后拉向右面,放手即可&lt;/H6&gt;&lt;/DIV&gt;
&lt;H4 style=&quot;MARGIN-BOTTOM: 0pt&quot;&gt;下载&lt;/H4&gt;
&lt;DIV style=&quot;MARGIN-TOP: 0pt; MARGIN-BOTTOM: 15px; HEIGHT: 55px; BACKGROUND-COLOR: #f6f6f6; TEXT-ALIGN: center&quot;&gt;&lt;IMG style=&quot;POSITION: relative; TOP: 11px&quot; alt=&quot;Download IETester v0.2.1&quot; src=&quot;http://www.cnblogs.com/images/cnblogs_com/justinyoung/common/download_cn.gif&quot;&gt; &lt;A title=&quot;http://www.wzms.net/Download IETester v0.2.1&quot; href=&quot;http://www.my-debugbar.com/ietester/install-ietester-v0.2.1.exe&quot;&gt;&lt;SPAN style=&quot;http://www.wzms.net/COLOR: #6466b3&quot;&gt;Download IETester v0.2.1(大小：23.7M)&lt;/SPAN&gt;&lt;/A&gt; &lt;/DIV&gt;
&lt;H4&gt;需要知道的bug列表&lt;/H4&gt;
&lt;UL style=&quot;MARGIN: 15px 2px 15px 25px; LIST-STYLE-TYPE: disc&quot;&gt;
&lt;LI style=&quot;LIST-STYLE-TYPE: disc&quot;&gt;When resizing, the content may disappear. I am working to correct it on the next version. 
&lt;LI style=&quot;LIST-STYLE-TYPE: disc&quot;&gt;The Previous/Next buttons are not working properly 
&lt;LI style=&quot;LIST-STYLE-TYPE: disc&quot;&gt;Focus is not working properly 
&lt;LI style=&quot;LIST-STYLE-TYPE: disc&quot;&gt;Java applets are not working 
&lt;LI style=&quot;LIST-STYLE-TYPE: disc&quot;&gt;Flash is not working on IE6 instance. &lt;/LI&gt;&lt;/UL&gt;</description><pubDate>Sun, 22 Jun 2008 13:34:00 +0800</pubDate><author>谢作如</author><guid isPermaLink="false">http://www.wzms.net/u/144/3170.htm</guid><dc:creator>谢作如</dc:creator><fs:srclink>http://www.wzms.net/u/144/3170.htm</fs:srclink><fs:srcfeed>http://www.wzms.net/u/144/rss2.xml</fs:srcfeed><fs:itemid>feedsky/itedu/~1219512/96617855/1221184</fs:itemid></item><item><title>sql2005“sp_addlinkedserver”方面的错误解决</title><link>http://item.feedsky.com/~feedsky/itedu/~1219512/96617856/1221184/1/item.html</link><description>&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 我在上一篇日志中记录了升级sql2005以来的种种问题，其中有一条是关于“升级到2005后，原来的sql语句执行出错的解决办法。”，当时我发现自己原来运行正常的sql语句，在2005中只要用rs更新数据库就出错，找了很多资料后发现：只要将sql的连接语句改为“provider=sqloledb.1”，即OLE/DB方式就可以了。&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 于是很自得，以为sql2005已经舍弃了效率相对低下的ODBC连接方式。但是随着对sql2005的了解的逐步深入，对自己的心得不禁怀疑起来。还没等我仔细思考这个问题时，新的问题又来了：&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 在oblog中删除记录时，系统提示“在 sysservers 中找不到服务器 'WZMS-DB2008'”。请执行 sp_addlinkedserver 将该服务器添加到 sysservers。&amp;nbsp;”&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 我的&amp;nbsp;第一反应是：oblog是不是支持sql2005呢？马上联系官方专员，对方居然告诉我服务期已经满一年，需要重新购买服务云云。想不到小小的oblg公司比微软还牛！我当然不会再次花钱购买服务，自己上网找资料去，还不信自己解决不了这个问题。&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; 网络上类似遭遇的人也不少，可是没有一个求助的帖子能得到有效解决。根据现有的资料分析，基本可以肯定是我更改了sql服务器的计算机名引起的。执行一些牛人提供的命令，如：“sp_dropserver '原来的服务器名' ”、“sp_addserver '现在的服务器名' ”、“sp_serveroption '现在的服务器名','data access', 'true' ”，等等。sql2005的错误提示变成了：“此游标不包括正在修改的表，或该表不能通过此游标更新。” &lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 检查asp语句，发现只要是调用adodb.recordset的delete方法就出错，再次经历了漫长的调试过程，始终无法解决问题。最后还是听从某网友的劝告：重新安装sql2005！&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; 花了3个小时，重新安装sql2005，附加大大小小十多个数据库，删除用户，重建用户，一次次地重复这些繁琐的操作，故障最终解决。并且令我哭笑不得的是，重装sql后，使用odbc方式连接数据库，原系统也能正常运行了。&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;吃一堑长一智：sql2005在安全上要求更高，安装sql服务后，千万不要修改计算机名称了啊！&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description><pubDate>Thu, 19 Jun 2008 07:58:00 +0800</pubDate><author>谢作如</author><guid isPermaLink="false">http://www.wzms.net/u/144/3167.htm</guid><dc:creator>谢作如</dc:creator><fs:srclink>http://www.wzms.net/u/144/3167.htm</fs:srclink><fs:srcfeed>http://www.wzms.net/u/144/rss2.xml</fs:srcfeed><fs:itemid>feedsky/itedu/~1219512/96617856/1221184</fs:itemid></item><item><title>Javascript 操作select控件大全</title><link>http://item.feedsky.com/~feedsky/itedu/~1219512/96617857/1221184/1/item.html</link><description>&lt;P&gt;&lt;STRONG&gt;做网页经常要用到这些东西，转载。&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;Javascript 操作select控件大全（新增、修改、删除、选中、清空、判断存在等） &lt;BR&gt;1判断select选项中 是否存在Value=&quot;paraValue&quot;的Item &lt;BR&gt;2向select选项中 加入一个Item &lt;BR&gt;3从select选项中 删除一个Item &lt;BR&gt;4删除select中选中的项 &lt;BR&gt;5修改select选项中 value=&quot;paraValue&quot;的text为&quot;paraText&quot; &lt;BR&gt;6设置select中text=&quot;paraText&quot;的第一个Item为选中 &lt;BR&gt;7设置select中value=&quot;paraValue&quot;的Item为选中 &lt;BR&gt;8得到select的当前选中项的value &lt;BR&gt;9得到select的当前选中项的text &lt;BR&gt;10得到select的当前选中项的Index &lt;BR&gt;11清空select的项 &lt;BR&gt;js 代码&lt;BR&gt;// 1.判断select选项中 是否存在Value=&quot;paraValue&quot;的Item &amp;nbsp; &lt;BR&gt;function jsSelectIsExitItem(objSelect, objItemValue) { &amp;nbsp; &lt;BR&gt;var isExit = false; &amp;nbsp; &lt;BR&gt;for (var i = 0; i &amp;lt; objSelect.options.length; i++){ &amp;nbsp; &lt;BR&gt;&amp;nbsp; if (objSelect.options.value == objItemValue){ &amp;nbsp; &lt;BR&gt;&amp;nbsp; &amp;nbsp; isExit = true; &amp;nbsp; &lt;BR&gt;&amp;nbsp; &amp;nbsp; break; &amp;nbsp; &lt;BR&gt;&amp;nbsp; } &amp;nbsp; &lt;BR&gt;} &amp;nbsp; &lt;BR&gt;return isExit; &amp;nbsp; &lt;BR&gt;} &amp;nbsp; &amp;nbsp; &lt;BR&gt;// 2.向select选项中 加入一个Item &amp;nbsp; &lt;BR&gt;function jsAddItemToSelect(objSelect, objItemText, objItemValue) { &amp;nbsp; &lt;BR&gt;//判断是否存在 &amp;nbsp; &lt;BR&gt;if (jsSelectIsExitItem(objSelect, objItemValue)){ &amp;nbsp; &lt;BR&gt;&amp;nbsp; alert(&quot;该Item的Value值已经存在&quot;); &amp;nbsp; &lt;BR&gt;} else{ &amp;nbsp; &lt;BR&gt;&amp;nbsp; var varItem = new Option(objItemText, objItemValue); &amp;nbsp; &lt;BR&gt;&amp;nbsp; objSelect.options.add(varItem); &amp;nbsp; &lt;BR&gt;&amp;nbsp; alert(&quot;成功加入&quot;); &amp;nbsp; &lt;BR&gt;} &amp;nbsp; &lt;BR&gt;} &amp;nbsp; &lt;BR&gt;// 3.从select选项中 删除一个Item &amp;nbsp; &lt;BR&gt;function jsRemoveItemFromSelect(objSelect, objItemValue){ &amp;nbsp; &lt;BR&gt;//判断是否存在 &amp;nbsp; &lt;BR&gt;if (jsSelectIsExitItem(objSelect, objItemValue)){ &amp;nbsp; &lt;BR&gt;&amp;nbsp; for (var i = 0; i &amp;lt; objSelect.options.length; i++){ &amp;nbsp; &lt;BR&gt;&amp;nbsp; &amp;nbsp; if (objSelect.options.value == objItemValue){ &amp;nbsp; &lt;BR&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; objSelect.options.remove(i); &amp;nbsp; &lt;BR&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; break; &amp;nbsp; &lt;BR&gt;&amp;nbsp; &amp;nbsp; } &amp;nbsp; &lt;BR&gt;&amp;nbsp; } &amp;nbsp; &lt;BR&gt;&amp;nbsp; alert(&quot;成功删除&quot;); &amp;nbsp; &lt;BR&gt;} else{ &amp;nbsp; &lt;BR&gt;&amp;nbsp; alert(&quot;该select中 不存在该项&quot;); &amp;nbsp; &lt;BR&gt;} &amp;nbsp; &lt;BR&gt;} &amp;nbsp; &lt;BR&gt;// 4.删除select中选中的项 &amp;nbsp; &lt;BR&gt;function jsRemoveSelectedItemFromSelect(objSelect){ &amp;nbsp; &amp;nbsp; &amp;nbsp; var length = objSelect.options.length - 1; &amp;nbsp; &lt;BR&gt;for(var i = length; i &amp;gt;= 0; i--){ &amp;nbsp; &lt;BR&gt;&amp;nbsp; if(objSelect.selected == true){ &amp;nbsp; &lt;BR&gt;&amp;nbsp; &amp;nbsp; objSelect.options = null; &amp;nbsp; &lt;BR&gt;&amp;nbsp; } &amp;nbsp; &lt;BR&gt;} &amp;nbsp; &lt;BR&gt;} &amp;nbsp; &lt;BR&gt;// 5.修改select选项中 value=&quot;paraValue&quot;的text为&quot;paraText&quot; &amp;nbsp; &lt;BR&gt;function jsUpdateItemToSelect(objSelect, objItemText, objItemValue) { &amp;nbsp; &lt;BR&gt;//判断是否存在 &amp;nbsp; &lt;BR&gt;if (jsSelectIsExitItem(objSelect, objItemValue)){ &amp;nbsp; &lt;BR&gt;&amp;nbsp; for (var i = 0; i &amp;lt; objSelect.options.length; i++){ &amp;nbsp; &lt;BR&gt;&amp;nbsp; &amp;nbsp; if (objSelect.options.value == objItemValue){ &amp;nbsp; &lt;BR&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; objSelect.options.text = objItemText; &amp;nbsp; &lt;BR&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; break; &amp;nbsp; &lt;BR&gt;&amp;nbsp; &amp;nbsp; } &amp;nbsp; &lt;BR&gt;&amp;nbsp; } &amp;nbsp; &lt;BR&gt;&amp;nbsp; alert(&quot;成功修改&quot;); &amp;nbsp; &lt;BR&gt;} else{ &amp;nbsp; &lt;BR&gt;&amp;nbsp; alert(&quot;该select中 不存在该项&quot;); &amp;nbsp; &lt;BR&gt;} &amp;nbsp; &lt;BR&gt;} &amp;nbsp; &lt;BR&gt;// 6.设置select中text=&quot;paraText&quot;的第一个Item为选中 &amp;nbsp; &lt;BR&gt;function jsSelectItemByValue(objSelect, objItemText) { &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;BR&gt;//判断是否存在 &amp;nbsp; &lt;BR&gt;var isExit = false; &amp;nbsp; &lt;BR&gt;for (var i = 0; i &amp;lt; objSelect.options.length; i++){ &amp;nbsp; &lt;BR&gt;&amp;nbsp; if (objSelect.options.text == objItemText){ &amp;nbsp; &lt;BR&gt;&amp;nbsp; &amp;nbsp; objSelect.options.selected = true; &amp;nbsp; &lt;BR&gt;&amp;nbsp; &amp;nbsp; isExit = true; &amp;nbsp; &lt;BR&gt;&amp;nbsp; &amp;nbsp; break; &amp;nbsp; &lt;BR&gt;&amp;nbsp; } &amp;nbsp; &lt;BR&gt;} &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;BR&gt;//Show出结果 &amp;nbsp; &lt;BR&gt;if (isExit) { &amp;nbsp; &lt;BR&gt;&amp;nbsp; alert(&quot;成功选中&quot;); &amp;nbsp; &lt;BR&gt;} else { &amp;nbsp; &lt;BR&gt;&amp;nbsp; alert(&quot;该select中 不存在该项&quot;); &amp;nbsp; &lt;BR&gt;} &amp;nbsp; &lt;BR&gt;} &amp;nbsp; &lt;BR&gt;// 7.设置select中value=&quot;paraValue&quot;的Item为选中 &amp;nbsp; &lt;BR&gt;document.all.objSelect.value = objItemValue; &amp;nbsp; &lt;BR&gt;&amp;nbsp; &lt;BR&gt;// 8.得到select的当前选中项的value &amp;nbsp; &lt;BR&gt;var currSelectValue = document.all.objSelect.value; &amp;nbsp; &lt;BR&gt;&amp;nbsp; &lt;BR&gt;// 9.得到select的当前选中项的text &amp;nbsp; &lt;BR&gt;var currSelectText = document.all.objSelect.options [document.all.objSelect.selectedIndex].text; &amp;nbsp; &lt;BR&gt;&amp;nbsp; &lt;BR&gt;// 10.得到select的当前选中项的Index &amp;nbsp; &lt;BR&gt;var currSelectIndex = document.all.objSelect.selectedIndex; &amp;nbsp; &lt;BR&gt;&amp;nbsp; &lt;BR&gt;// 11.清空select的项 &amp;nbsp; &lt;BR&gt;document.all.objSelect.options.length = 0;&amp;nbsp;&amp;nbsp; &lt;/P&gt;</description><pubDate>Fri, 13 Jun 2008 05:43:00 +0800</pubDate><author>谢作如</author><guid isPermaLink="false">http://www.wzms.net/u/144/3157.htm</guid><dc:creator>谢作如</dc:creator><fs:srclink>http://www.wzms.net/u/144/3157.htm</fs:srclink><fs:srcfeed>http://www.wzms.net/u/144/rss2.xml</fs:srcfeed><fs:itemid>feedsky/itedu/~1219512/96617857/1221184</fs:itemid></item><item><title>SQL Server 2000数据库升级到SQL Server 2005的问题记录</title><link>http://item.feedsky.com/~feedsky/itedu/~1219512/96617858/1221184/1/item.html</link><description>&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 一直想把学校的数据库服务器升级到SQL Server 2005，顺便打上2003的sp2补丁，可是因为备用的数据库服务器，况且升级数据库的相关工作很繁琐，于是拖延到现在。还算好，因为前期工作准备充分，升级工作很顺利。特意做如下记录。&lt;/P&gt;
&lt;P&gt;1、如何快速将2000的数据库升级到2005？&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; 安装了sql server 2005以后，不管是32位还是64位，都可以直接附加sql server 2000下创建的数据库文件。数据库升级到2005的最快速的方法是：在SQL Server 2000中分离数据库，将数据库文件拷到装有SQL Server 2005的机器上，然后在Management Studio中附加数据库。附加数据库后删除数据库中的原来用户，重新增加即可。&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; 有教程说，可以用下面的语句把数据库中孤立用户和系统用户做关联:&lt;BR&gt;　sp_change_users_login 'update_one', 'test', 'test'&amp;nbsp;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;可惜没有测试成功。&lt;/P&gt;
&lt;P&gt;2、SQL2005删除用户的时候，产生“数据库主体在该数据库中拥有架构，无法删除”错误的解决办法&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; 在2005上附加了一个2000下的MDF数据库，提示附加成功后，里面有一个原来数据库的用户，想无法删除这个用户，却遭到系统的拒绝，提示如下：&lt;BR&gt;数据库主体在该数据库中拥有 架构，无法删除。 (Microsoft SQL Server，错误: 15138)&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; 仔细研究了一下，发现很简单，只要在数据库的安全性-构架中先删除对应的构架（用户名字相同），然后就可以删除用户了。&lt;BR&gt;&lt;/P&gt;
&lt;P&gt;3、升级到2005后，原来的sql语句执行出错的解决办法。&lt;/P&gt;
&lt;P&gt;升级后的sql执行出错提示很多，也很奇怪，比如： 
&lt;P&gt;Microsoft OLE DB Provider for ODBC Drivers&lt;SPAN style=&quot;FONT-SIZE: 12pt; FONT-FAMILY: 宋体, MS Song&quot;&gt;&lt;/SPAN&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt; FONT-FAMILY: 宋体&quot;&gt;错误 '80040e21'&lt;BR&gt;&lt;/SPAN&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt; FONT-FAMILY: 宋体&quot;&gt;ODBC 驱动程序不支持所需的属性。&lt;/SPAN&gt; 
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; 调试到最后发现，原来只要将sql的连接语句改为“provider=sqloledb.1”，即OLE/DB方式就可以了。因为之前我一直使用ODBC方式连接，也正常使用了5、6年，想不到升级到sql2005后就出问题了。&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;小知识：&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 我看见有的连接SQLserver的语句中是conn.Open &amp;nbsp; &amp;nbsp; &quot;Driver=SQLserver;.....&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;BR&gt;有的是conn.Open &amp;nbsp; &amp;nbsp; &quot;PROVIDER=SQLOLEDB;....&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;BR&gt;这两种方式分别是什么，有什么有缺点吗?望大家赐教！&lt;/P&gt;
&lt;P&gt;第一种就是常说的ODBC方式连接数据库。第二种是微软自己开发的OLE &amp;nbsp; DB。 &amp;nbsp; &amp;nbsp; &lt;BR&gt;&amp;nbsp; OLE &amp;nbsp; DB可以连接各种类型的数据源，比ODBC灵活。（连ACCESS等关系数据库当然体现不出来了，它可以连活动目录、exchange等，ODBC就不可以。）&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;4、如果有好多个数据库需要附加，有没有简单的办法批量附加数据库？&lt;/P&gt;
&lt;P&gt;如果有多个库要附加，可以使用存储过程.sp_attach_db ，具体说明如下.&lt;BR&gt;&lt;BR&gt;下面的示例将 pubs 中的两个文件附加到当前服务器。&lt;BR&gt;&lt;BR&gt;EXEC sp_attach_db @dbname = N'pubs', &lt;BR&gt;@filename1 = N'c:\Program Files\Microsoft SQL Server\MSSQL\Data\pubs.mdf', &lt;BR&gt;@filename2 = N'c:\Program Files\Microsoft SQL Server\MSSQL\Data\pubs_log.ldf'&lt;BR&gt;&lt;/P&gt;</description><pubDate>Mon, 09 Jun 2008 15:54:00 +0800</pubDate><author>谢作如</author><guid isPermaLink="false">http://www.wzms.net/u/144/3154.htm</guid><dc:creator>谢作如</dc:creator><fs:srclink>http://www.wzms.net/u/144/3154.htm</fs:srclink><fs:srcfeed>http://www.wzms.net/u/144/rss2.xml</fs:srcfeed><fs:itemid>feedsky/itedu/~1219512/96617858/1221184</fs:itemid></item><item><title>IExplorer.exe和Explorer.exe区别</title><link>http://item.feedsky.com/~feedsky/itedu/~1219512/96617859/1221184/1/item.html</link><description>&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 在调试中考阅卷机器时，无意中发现一件有趣的事：&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 如果使用IE浏览器访问阅卷网址，则一切正常，但是如果先打开“我的电脑”，然后在“地址栏”中输入阅卷网址，则页面显示空白，无法载入相关控件。&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 记得自己经常是先打开“我的电脑”，然后在“地址栏”中输入网址来访问互联网，也从来没有发现有什么不妥。一直以为windows很聪明，当访问网址时，它会自动调用“iEXPLORER.exe”。而今天既然发现浏览上的不同之处后，说什么也要深入研究一下。&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 在进程中发现，先打开“我的电脑”，然后在“地址栏”中输入网址来访问互联网，系统使用的是EXPLORER.EXE，并没有调用IEXPLORER.EXE，但是如果新开窗口浏览，则调用IEXPLORER.EXE。看来windows中隐藏的奥秘还真不少。&lt;/P&gt;
&lt;P&gt;小知识：&lt;/P&gt;
&lt;P&gt;IEXPLORER.EXE跟EXPLORER.EXE是不同的两个进程,有不同的功用:&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;BR&gt;&amp;nbsp; 1)IEXPLORER.EXE是系统浏览器的进程 &amp;nbsp; &lt;BR&gt;&amp;nbsp; 2)EXPLORER.EXE是系统的桌面进程也就是界面进程&amp;nbsp;&amp;nbsp; &lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description><pubDate>Sat, 07 Jun 2008 05:12:00 +0800</pubDate><author>谢作如</author><guid isPermaLink="false">http://www.wzms.net/u/144/3148.htm</guid><dc:creator>谢作如</dc:creator><fs:srclink>http://www.wzms.net/u/144/3148.htm</fs:srclink><fs:srcfeed>http://www.wzms.net/u/144/rss2.xml</fs:srcfeed><fs:itemid>feedsky/itedu/~1219512/96617859/1221184</fs:itemid></item><item><title>moodle试用手记</title><link>http://item.feedsky.com/~feedsky/itedu/~1219512/96617860/1221184/1/item.html</link><description>&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 喊了好长时间moodle，也到处为moodle宣传，装过N次，也听过好几节使用moodle进行教学的课，从1.2版本开始研究到1.9，真正在自己课堂中使用还是第一次。今天下午第一节课，我正式启用了moodle，这节课的目的如下：&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 1、压力测试——moodle能支持多少用户同时在线？&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 因为学校实行走班教学，几个机房要同时上课，这样一来对moodle系统的要求就很高了，其至少要支持200人同时在线，而根据现有的反馈资料来看，moodle在这方面总让人不自信。今天这节课，我让班里四十几位同学进行在线测试，提供100多个选择题，结果发现moodle还是健步如飞。接下来我安排一次让四个机房同时进行在线测试，看看moodle在学校这台PC级服务器上究竟能支持多少用户。&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 2、评价功能——moodle的教学评价功能强大到什么程度？&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; 我用过很多款在线测试系统，自己也编写过几款简单的测试系统，但总感觉不满意。很多资料都在宣传moodle的评价功能如何强大之类。经过这次测试，果然名不虚传！课后，我给同事们演示了moodle的评价统计、分析功能，大家都不得不表示：moodle的功能太强了。&lt;/P&gt;
&lt;P&gt;&lt;IMG style=&quot;WIDTH: 473px; HEIGHT: 450px&quot; alt=&quot;&quot; src=&quot;http://www.wzms.net//0/2008-5/301626392493.gif&quot; width=450 border=0&gt;&lt;/P&gt;
&lt;P align=center&gt;学生对某个试题的回答情况分析&lt;/P&gt;
&lt;P&gt;&lt;IMG style=&quot;WIDTH: 469px; HEIGHT: 376px&quot; alt=&quot;&quot; src=&quot;http://www.wzms.net//0/2008-5/301626913795.gif&quot; width=450 border=0&gt;&lt;/P&gt;
&lt;P align=center&gt;学生测试情况一览表&lt;/P&gt;
&lt;P&gt;&lt;IMG style=&quot;WIDTH: 389px; HEIGHT: 228px&quot; alt=&quot;&quot; src=&quot;http://www.wzms.net//0/2008-5/301626590357.gif&quot; width=450 border=0&gt;&lt;/P&gt;
&lt;P align=center&gt;可以导出为excel等格式&lt;/P&gt;
&lt;P&gt;&lt;IMG style=&quot;WIDTH: 426px; HEIGHT: 277px&quot; alt=&quot;&quot; src=&quot;http://www.wzms.net//0/2008-5/301626259834.gif&quot; width=450 border=0&gt;&lt;/P&gt;
&lt;P align=center&gt;单项分析&lt;/P&gt;</description><pubDate>Tue, 27 May 2008 14:23:00 +0800</pubDate><author>谢作如</author><guid isPermaLink="false">http://www.wzms.net/u/144/3133.htm</guid><dc:creator>谢作如</dc:creator><fs:srclink>http://www.wzms.net/u/144/3133.htm</fs:srclink><fs:srcfeed>http://www.wzms.net/u/144/rss2.xml</fs:srcfeed><fs:itemid>feedsky/itedu/~1219512/96617860/1221184</fs:itemid></item><item><title>彻底解决Moodle上传文件中文文件名乱码解决方法</title><link>http://item.feedsky.com/~feedsky/itedu/~1219512/96617861/1221184/1/item.html</link><description>&lt;DIV class=t_msgfont&gt;moodle对中文的支持不是很好，这是公认的BUG。在网上可以找到一些解决办法，其中最简单的做法是：&lt;/DIV&gt;
&lt;DIV class=t_msgfont&gt;-------------------------------&lt;/DIV&gt;
&lt;DIV class=t_msgfont&gt;config.php加入&lt;BR&gt;$CFG-&amp;gt;unicodecleanfilename = true;&lt;BR&gt;即可正常上传中文档名&lt;/DIV&gt;
&lt;DIV class=t_msgfont&gt;------------------------------&lt;/DIV&gt;
&lt;DIV class=t_msgfont&gt;我在lib/moodlelib.php下也发现了这样一段说明，原来是官方的解决方案：&lt;/DIV&gt;
&lt;DIV class=t_msgfont&gt;/**&lt;BR&gt;* Cleans a given filename by removing suspicious or troublesome characters&lt;BR&gt;* Only these are allowed: alphanumeric _ - .&lt;BR&gt;* Unicode characters can be enabled by setting $CFG-&amp;gt;unicodecleanfilename = true in config.php&lt;BR&gt;*&lt;BR&gt;* WARNING: unicode characters may not be compatible with zip compression in backup/restore,&lt;BR&gt;*&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp; because native zip binaries do weird character conversions. Use PHP zipping instead.&lt;BR&gt;*&lt;BR&gt;* @param string $string&amp;nbsp;&amp;nbsp;file name&lt;BR&gt;* @return string cleaned file name&lt;BR&gt;*/&lt;/DIV&gt;
&lt;DIV class=t_msgfont&gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; 其实这样并不是很彻底的方案。如果在插入超链接时选择本站文件，返回的文件目录中中文文件名还是乱码的。不过我发现只要在浏览器中选择utf-8编码，还是可以正确浏览的，但这样毕竟不方便。&lt;/DIV&gt;
&lt;DIV class=t_msgfont&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV class=t_msgfont&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; 再也找不到相关的资料了，于是自力更生，我找了点PHP的资料，直接修改了coursefiles.php文件（lib/editor/htmlarea/coursefiles.php），在第二行加上这样一句：&lt;/DIV&gt;
&lt;DIV class=t_msgfont&gt;@header(&quot;Content-Type: text/html; charset=utf-8&quot;);&lt;/DIV&gt;
&lt;DIV class=t_msgfont&gt;再次测试网页，发现浏览器就可以自动选择utf-8编码，不再出现乱码了。&lt;/DIV&gt;
&lt;DIV class=t_msgfont&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV class=t_msgfont&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; 终于算彻底解决中文文件名乱码的问题。&lt;/DIV&gt;
&lt;DIV class=t_msgfont&gt;&amp;nbsp;&lt;/DIV&gt;</description><pubDate>Wed, 21 May 2008 08:19:00 +0800</pubDate><author>谢作如</author><guid isPermaLink="false">http://www.wzms.net/u/144/3121.htm</guid><dc:creator>谢作如</dc:creator><fs:srclink>http://www.wzms.net/u/144/3121.htm</fs:srclink><fs:srcfeed>http://www.wzms.net/u/144/rss2.xml</fs:srcfeed><fs:itemid>feedsky/itedu/~1219512/96617861/1221184</fs:itemid></item><item><title>linux下php成功连接mssql</title><link>http://item.feedsky.com/~feedsky/itedu/~1219512/96617862/1221184/1/item.html</link><description>&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 为了能使用moodle的外部数据库功能，我和施芳岳研究如何在linux下使用php连接mssql。按理说这不是很难的一件事，因为网络上有很多相关的教程。可是好事多磨，我们还是折腾了好几天才最终搞定。&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 让php能访问mssql，首先要安装freetds，关于freetds的教程网络上汗牛充栋，随便去gooogle或者百度一下就有了，如果真的找不到，请参考&lt;A href=&quot;http://www.wzms.com/read.asp?wzms=.7055475&amp;amp;newsID=4554&quot;&gt;http://www.wzms.com/read.asp?wzms=.7055475&amp;amp;newsID=4554&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 按照教程把freetds配置好后，在命令行下已经可以用tsql连接并操作数据库，查看phpinfo()，也看到php已经支持mssql了，可是使用php去连接，就是提示失败，百思不得其解，网络上也找不到资料，陷入了僵局。&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; linux和php我都算是初学者，不过这段时间都在研究linux，无形中功力大增。翻看freetds的log文件时无意中想起：是不是apache的用户没有访问外部网络的权限？但是，阿岳否定了我的想法，他是高手，何况我在用户权限方面也找不到访问外部网络方面的权限设置，肯定是瞎猜的。但是这样的想法毕竟给了我新的思路，也许就是linux的某些安全设置引起的吧，要不凭什么命令行下可以连接而php不行呢？我试着把防火墙禁用了，重启服务器，再测试连接，还是失败。看到防火墙的图形管理界面旁边还有一个selinux的选项，顺手也禁用了，呵呵，居然连接成功了！&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; 看来肯定是selinux（强制访问控制）惹的祸了，在网上以“selinux freetds mssql”为关键字果然找到了相似的案例：&lt;/P&gt;
&lt;P&gt;&lt;A href=&quot;http://hi.baidu.com/longhaiwang/blog/item/8a82124c8efbd6fcd62afc10.html&quot;&gt;http://hi.baidu.com/longhaiwang/blog/item/8a82124c8efbd6fcd62afc10.html&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;&lt;A href=&quot;http://www.itwenku.com/web/3/50772.htm &quot;&gt;http://www.itwenku.com/web/3/50772.htm &lt;/A&gt;(linux平台下使用freetds连接sql server的问题)&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;selinux是什么？我转载了一篇资料：&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;在新的基于&lt;A onclick=&quot;javascript:tagshow(event, 'RHEL');&quot; href=&quot;http://www.wzms.net/javascript:;&quot; target=_self&gt;RHEL&lt;/A&gt;一般都自带了&lt;A onclick=&quot;javascript:tagshow(event, 'selinux');&quot; href=&quot;http://www.wzms.net/javascript:;&quot; target=_self&gt;selinux&lt;/A&gt;，多数情况下我们把selinux禁用了，事实上既然RHEL要集成它，必然有他的优点和长处，我们通过下文来了解selinux，也许你会喜欢用上它。&lt;BR&gt;&lt;BR&gt;英文原文来自&lt;A href=&quot;http://www.redhat.com/&quot;&gt;www.RedHat.com&lt;/A&gt;&lt;BR&gt;by Russell Coker&lt;BR&gt;翻译：胡智江&lt;BR&gt;主要内容&lt;BR&gt;介绍：&lt;BR&gt;SELinux概览：&lt;BR&gt;SELinux深入研究：&lt;BR&gt;Fedora中策略的实现：&lt;BR&gt;Fedora的缺省SELinux策略：&lt;BR&gt;更多关于SELinux的资料：&lt;BR&gt;关于作者和译者：&lt;/P&gt;
&lt;P&gt;介绍：&lt;BR&gt;当今世界，无处不在高速互联网连接、如备有无线接入点的咖啡馆和在网上到处传播的各种黑客工具使得出于对计算机安全的考虑成为老生常谈。出于解决安全问题，NSA在&lt;A onclick=&quot;javascript:tagshow(event, 'Linux');&quot; href=&quot;http://www.wzms.net/javascript:;&quot; target=_self&gt;Linux&lt;/A&gt;社区的帮助下开发了一种访问控制体系，在这种访问控制体系的限制下，进程只能访问那些在他的任务中所需要文件。这种体系叫做 Security-Enhanced Linux或简化为SELinux。&lt;/P&gt;
&lt;P&gt;SELinux概览：&lt;/P&gt;
&lt;P&gt;SELinux是一种基于 域-类型 模型（domain-type）的强制访问控制（MAC）安全系统，它由NSA编写并设计成&lt;A onclick=&quot;javascript:tagshow(event, '%C4%DA%BA%CB');&quot; href=&quot;http://www.wzms.net/javascript:;&quot; target=_self&gt;内核&lt;/A&gt;模块包含到内核中，相应的某些安全相关的应用也被打了SELinux的补丁，最后还有一个相应的安全策略。&lt;/P&gt;
&lt;P&gt;众所周知，标准的UNIX安全模型是&quot;任意的访问控制&quot;DAC。就是说，任何程序对其资源享有完全的控制权。假设某个程序打算把含有潜在重要信息的文件仍到/tmp目录下，那么在DAC情况下没人能阻止他！&lt;/P&gt;
&lt;P&gt;而MAC情况下的安全策略完全控制着对所有资源的访问。这是MAC和DAC本质的区别。&lt;/P&gt;
&lt;P&gt;SELinux里实现的MAC允许程序在/tmp目录下建立文件，也允许这个文件按照UNIX权限字的要求对全世界可读，但是当UNIX许可检查应用后， SELinux许可检查还要进一步判断对资源的访问是否被许可。&lt;BR&gt;换句话说，尽管某些UNIX文件的权限被设定为0777但是你也许仍然会被禁止读，写和执行该UNIX文件。在只有DAC的情况下，用户可以查看或更改属于他的任何文件。SELinux则可以限制每一个进程对各种资源的访问，和访问的权级。就是说当一个程序在使用含有敏感数据时，这些数据会被禁止写入那些低权级进程可读的文件中。&lt;/P&gt;
&lt;P&gt;SELinux提供了比传统的UNIX权限更好的访问控制。&lt;/P&gt;
&lt;P&gt;例如，管理员可以只允许一个应用程序添加记录到一个日志文件但不允许其重写或者删除该日志文件的内容。虽然ext2和ext3文件系统有一个append-only标签（使用chattr设置）,但是这属性不区分某一个进程（不能在为一个访问 append-only的同时，又允许另一个进程据有完全可写的权利）；另一方面，一个应用程序可以被允许在一个文件夹中建立文件和向其写入数据，但不能删除文件：这种&lt;A onclick=&quot;javascript:tagshow(event, '%CC%D8%D0%D4');&quot; href=&quot;http://www.wzms.net/javascript:;&quot; target=_self&gt;特性&lt;/A&gt;是没有SELinux的普通的Linux内核所不能做到的。还有，网络应用程序可以绑定到其需要的端口上（如BIND的53端口），但不能绑定其它端口。&lt;/P&gt;
&lt;P&gt;域-类型模型意味着在安全域中运行着的每一个进程和每一个资源（一般文件、目录文件和套接字等）都有一个与之相联系的&quot;类型&quot;（type）。&lt;/P&gt;
&lt;P&gt;在这基础之上建立了一系列规则，这些规则列出了某个域可以在每一个类型上执行的所有动作。 域-类型模型的一个优点就是我们可以对策略进行分析，从而判断出哪些信息有可能外溢。在标准的UNIX环境中，用户一般可以使用ps命令来互相查看彼此的进程列表，然而这也会为攻击者提供有价值的信息。甚至就算完全阻止用户使用ps命令，信息还是会意外的或故意的泄露，其实在一个给定的UNIX环境中，哪些信息会发生泄露是无法判断的。&lt;/P&gt;
&lt;P&gt;而在SELinux情况下，我们会有很多工具用来分析SELinux策略并判断哪些信息泄露是可能的。举个例子，假如有两个应用程序被允许向一个日志文件添加数据，且他们互相不能直接通信。那么如果一个其中进程又获得了对该日志的读权限的话，那么一个单方通信就有可能形成。&lt;/P&gt;
&lt;P&gt;对访问/etc/shadow文件做访问限制是个很好的例子，通过该例子我们可以看出策略分析的好处。&lt;BR&gt;如果你装了Fedora Core 3,并且选择了严格的SElinux策略配置，那么将会有17个域被允许访问shadow_t(/etc/shadow的type)，其中有9个域据有写权利。这17个域中有2个可以从用户域（user domain）进入，他们是/usr/bin/passwd和 /sbin/unix_chkpwd(一个为无特权应用程序提供密码检查的辅助程序，比如向锁屏程序就需要使用到unix_chkpwd)。这17个域中的某些域是为一些不常见的应用程序准备的（如radius_t域就是为RADIUS服务器准备的），所以，也就是说，就算除去这个不常用的域，一般的系统中还有16个可访问的域能够访问/etc/shadow呢！&lt;/P&gt;
&lt;P&gt;值得注意的是，Fedora发型版的SELinux策略已经变得越来越灵活；未来版本的策略也许会使何以访问/etc/shadow的域超过17个，这取决于可调节选项的实际配置。还要注意的是，17这个数字是基于严格的策略设定之后而得出的，实际上一个默认的安装会大于这个数字。&lt;/P&gt;
&lt;P&gt;在一个没有SE的机器上，任何以root身份运行的进程都可以访问/etc/shadow文件。这意味着任何被&quot;SETUID root&quot;的二进制代码或以root身份运行的网络服务守护进程，它们所产生的任何安全问题都将会是灾难性的。&lt;/P&gt;
&lt;P&gt;SELinux允许我们限制这些守护进程只访问其所需：&lt;BR&gt;BIND只能在53端口提供服务、DHCP服务器可以使用原始套接字（raw network access）、DHCP客户端也可以使用原始套接字并可以改变网络接口，但是它们谁都别想访问/etc/shadow,/home,/root等等这些重要的资源。&lt;BR&gt;所以，在SElinux的情况下，如果BIND受到了危害，它最多也就是发送一些伪造的报文罢了。如果DHCPD受到了危害，最坏的可能就是你的ip地址分配被搞乱。这比root权力被远程滥用好多了！&lt;/P&gt;
&lt;P&gt;大家很清楚，一个进程可以援引另一个进程。&lt;/P&gt;
&lt;P&gt;在这种情况下，拿DHCPD为例，DHCPD也许会尝试援引 /sbin/unix_chkpwd对密码进行强力攻击。（But even that potential vulnerability is closed）:SELinux能够提供&quot;过渡&quot;规则，这种规则可以用来判断各种域间过渡是否合法。有了&quot;过渡&quot;规则以后，由用户执行的屏幕保护程序可以顺利过渡到/sbin/unix_chkpwd这样一个特权域，然而DHCPD就别想了。&lt;/P&gt;
&lt;P&gt;上述这些限制功能可以使你对系统的状态了如指掌。如果你发现你的DHCP服务器有BUG，那你只要简单的升级DHCP服务器到新版本并且确定每一个客户端都能正常获得IP地址就可以了。可是如果没有SE的话，你还要考虑你的新服务器是否已被黑客入侵并擦除了痕迹。&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; SElinux 对不同的域做了严格的隔离。我以前运行一个Debian系统有两年时间，在这期间我开放了他的root密码。最近两个月我在一个Fedora系统上做同样的事情。但这两个系统已经抵抗住了很多次以root身份的攻击（见httphttp://www.coker.com.au/selinux/play.html）。（译者注：这里有一些作者对其playmachine的介绍被忽略了）&lt;/P&gt;
&lt;P&gt;为了给RHEL4做代码测试，Fedora core 2已经尝试集成了SELinux，但是默认是关闭的。而且将来RHEL和Fedora Core的SE还会有非常大的差别的。我们计划在RHEL中，将把SELinux的策略设置的比Fedora Core要严格，我们相信这样做也符合用户的要求。未来的Fedora版本的SELinux策略将会越来越严格，但再严格也不会超过RHEL。&lt;/P&gt;
&lt;P&gt;SELinux深入研究：&lt;/P&gt;
&lt;P&gt;SELinux的策略数据库控制着SELinux的方方面面。它可以判断一个程序可能会运行在哪个域中，还可以说明某个域可以访问哪些资源。这种规定被叫做规则，一个典型的策略往往拥有100,000条规则。别被这数字吓坏，我们根本不必去关心它，因为当我们撰写策略时，我们可以使用高级宏，这些高级宏的一行就能生成10,000条规则。除了宏以外，还有一些工具，使用他们可以分析这些生成的规则是否能达到你对安全的要求。其实再和设置每个文件的UNIX 权限位这样的工作比起来，这100,000个规则也是相当小的工作量了。&lt;/P&gt;
&lt;P&gt;Fedora Core 2安全策略的目标是满足大多数用户无需改动就可以工作的要求，但也有一些普通的简单的选项可以调节策略，一般都是简简单单的一行选项。比如是否允许用户通过dmesg阅读内核的日志，是否允许管理员（sysadm_r）直接通过SSH登陆或登陆图形会话，还有是否允许用户绑定TCP套接字。&lt;BR&gt;那100,000个左右的规则存储在一个大约2.6MB的文件中，当系统启动时随内核一起装入内存并占用同样大小（大约2.6MB）的内核空间。 Fedora Core 3默认的strict策略有着多余290,000条规则，占用7MB的内核空间。Fedora Core 3默认的target策略有大约5,000条规则，占用150K的内核空间。&lt;/P&gt;
&lt;P&gt;目前，SELinux并没有在内存使用方面进行优化；但现在对这些优化工作已经有了计划和一些降低内存使用的方法。如果你不打算使用某些守护进程，你可以简单的将其对应的策略文件删除以便获得占用空间更少的策略。2003年，在Ottawa举办的一次Linux讨论会上，我提交过一篇文章，那是关于我在把 SELinux移植到HP iPAQ PDA上所做的工作的文章(在http //archive.linuxsymposium.org/ols2003/Proceedings/可以获得)。&lt;/P&gt;
&lt;P&gt;证明我可以使SELinux（且选择 strict策略）很好的工作在一台只有 64 MBs的RAM 和32 MBs 存储空间的小平台上，并且我相信我还可以使它运行在更小的平台上。针对Fedora Core2系统，我们只把目光定位在目前最常见的硬件平台，从而得出了默认的策略配置。但那些使用老机器的用户们也许会希望配置出最小限度的策略以便减少内存使用和提高性能。&lt;/P&gt;
&lt;P&gt;在使用了SELinux的系统中，每一个进程的上下文都包含三个组成部分：一个ID（identity），一个角色（role）和一个域（domain）&lt;/P&gt;
&lt;P&gt;ID是指这个进程的所有者，就是UNIX账户，但前提是这个账户必须被预先编译到SELinux策略中去使SELinux认识这个账户，不然的话SELinux默认地将那些未知的系统进程ID记为 system_u ，将那些未知的用户进程ID记为 user_u；角色用来判断某个处于此角色的ID可以进入哪些域，还用来防止某个处于此角色的ID进入其它不该进入的域。比如， user_r角色就不允许进入 sysadm_t （重要的系统管理域）。&lt;/P&gt;
&lt;P&gt;换句话说就是，那些只有 user_u ID的进程只能扮演 user_r 这个角色，而 user_r 这个角色 永远不能被许可进入 sysadm_t 域。从而，那些只有 user_u 这个ID的人是别想进入 sysadm_t 域的。这些特色在缺省的Fedora Core2策略中并没有完全使用，当前我们只是把努力花在制定守护进程上，而对用户域的策略限制的很少（targeted策略没有对用户登陆做任何限制）。&lt;/P&gt;
&lt;P&gt;一个安全上下文可以像 identity:role:domain 这样一种描述符的方式简明的表现出来。&lt;/P&gt;
&lt;P&gt;比如，典型的系统管理上下文可以表示成 root:sysadm_r:sysadm_t 。任何可以被访问的对象都可以这样来表示。值得注意的是，&quot;域&quot;其实也是和一个进程相对应的一个&quot;类型&quot;。所以当检查某个进程是否有权向另一个进程发送信号（比如为ps命令检阅/proc文件系统）时，接受信号的进程的&quot;域&quot;就会充当&quot;域-类型&quot;模型中的&quot;类型&quot;的角色，从而完成&quot;域-类型&quot;的规则检查。即完成了进程间通信权限的检查。由于对于文件还没有使用角色这个机制，所以目前每个文件都被规定为object_r 角色（这个角色只是占个位置罢了，对策略没有任何影响）。&lt;/P&gt;
&lt;P&gt;文件的ID就是文件创建者的ID。constraints 策略源文件中使用这个方式来判断一个访问是否有权改变某个文件的上下文描述符。除非被访问的文件的描述符中的ID字段和访问该文件的进程的所有者ID字段相同，无论是改变前还是改变后，否则进程无权改变一个文件的上下文描述符。&lt;/P&gt;
&lt;P&gt;例如，一个拥有 rjc:user_r:user_t 描述符的进程可以将一个拥有 rjc:object_r:user_games_rw_t 描述符的文件的描述符改为rjc:object_r:user_games_ro_t ，但是它无权改变一个拥有 john:object_r:user_games_rw_t 描述符的文件的任何属性。&lt;/P&gt;
&lt;P&gt;要想查看当前运行的进程的上下文描述符，可以使用ps命令并加入 &quot;-Z&quot;选项，如例一：&quot;ps ax -Z的输出&quot;：&lt;BR&gt;&amp;nbsp; PID CONTEXT&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; COMMAND&lt;BR&gt;1634 root:user_r:user_t&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; -bash&lt;BR&gt;1662 root:user_r:user_t&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ps ax -Z&lt;/P&gt;
&lt;P&gt;Example 1. Example Output of ps ax -Z&lt;/P&gt;
&lt;P&gt;要想查看目录下的文件的上下文描述符，可以使用ls命令并加入 &quot;-Z&quot;选项，如例一：&quot;ls -Z的输出&quot;：&lt;BR&gt;drwxr-xr-x&amp;nbsp; root&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; root&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; system_u:object_r:bin_t&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; bin&lt;BR&gt;drwxr-xr-x&amp;nbsp; root&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; root&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; system_u:object_r:boot_t&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; boot&lt;BR&gt;drwxr-xr-x&amp;nbsp; root&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; root&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; system_u:object_r:device_t&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; dev&lt;BR&gt;drwxr-xr-x&amp;nbsp; root&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; root&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; system_u:object_r:etc_t&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; etc&lt;BR&gt;drwxr-xr-x&amp;nbsp; root&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; root&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; system_u:object_r:home_root_t&amp;nbsp;&amp;nbsp;&amp;nbsp; home&lt;BR&gt;drwxr-xr-x&amp;nbsp; root&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; root&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; system_u:object_r:root_t&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; initrd&lt;BR&gt;drwxr-xr-x&amp;nbsp; root&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; root&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; system_u:object_r:lib_t&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; lib&lt;BR&gt;drwx------&amp;nbsp; root&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; root&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; system_u:object_r:lost_found_t&amp;nbsp;&amp;nbsp; lost+found&lt;BR&gt;drwxr-xr-x&amp;nbsp; root&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; root&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; system_u:object_r:default_t&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; misc&lt;BR&gt;drwxr-xr-x&amp;nbsp; root&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; root&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; system_u:object_r:mnt_t&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; mnt&lt;BR&gt;drwxr-xr-x&amp;nbsp; root&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; root&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; system_u:object_r:usr_t&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; opt&lt;BR&gt;?---------&amp;nbsp; ?&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ?&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; oracle&lt;BR&gt;dr-xr-xr-x&amp;nbsp; root&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; root&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; proc&lt;BR&gt;drwxr-x---&amp;nbsp; root&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; root&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; system_u:object_r:user_home_dir_t root&lt;BR&gt;drwxr-xr-x&amp;nbsp; root&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; root&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; system_u:object_r:sbin_t&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; sbin&lt;BR&gt;drwxr-xr-x&amp;nbsp; root&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; root&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; selinux&lt;BR&gt;drwxr-xr-x&amp;nbsp; root&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; root&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; system_u:object_r:default_t&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; srv&lt;BR&gt;drwxr-xr-x&amp;nbsp; root&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; root&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; sys&lt;BR&gt;drwxrwxrwt&amp;nbsp; root&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; root&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; system_u:object_r:tmp_t&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; tmp&lt;BR&gt;drwxr-xr-x&amp;nbsp; root&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; root&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; system_u:object_r:usr_t&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; usr&lt;BR&gt;drwxr-xr-x&amp;nbsp; root&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; root&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; system_u:object_r:var_t&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; var&lt;/P&gt;
&lt;P&gt;Example 2. Example Output of ls -Z&lt;/P&gt;
&lt;P&gt;值得注意的是：对于那些没有指定上下文的文件（一般是指那些不支持rwx标签的文件系统，如/sys、/proc、/selinux），ls命令就不会显示其上下文。对于不能用stat命令查看当前状态的那些文件系统。ls命令返回&quot;?---------&quot;,其所有者和所有组也被标记为&quot;？&quot;，同样的，他的上下文也不会显示。&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 如例三所示，id命令将返回当前&lt;A onclick=&quot;javascript:tagshow(event, 'shell');&quot; href=&quot;http://www.wzms.net/javascript:;&quot; target=_self&gt;shell&lt;/A&gt;的上下文&lt;BR&gt;uid=0(root) gid=0(root) groups=0(root),1(bin),2(daemon),3(sys),4(adm),6(disk),10(wheel) context=root:user_r:user_t&lt;BR&gt;Example 3. Example Output of the id Command&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 如果你的SELinux系统使用了strict 策略，你会发现应用程序做一些不正常的事情是很容易发生的。你经常会发现某些程序中会有些bug，这些bug使程序做那些你的SELinux策略不允许其做的其它事情。&lt;BR&gt;SELinux要求进程的上下文只有在被执行的&quot;那一刻&quot;才允许改变。新进程的域和角色信息可以从exec系统函数的上下文和文件类型中自动获得。进程也可以在执行exec之前被指明上下文。这些过程自然受SELinux策略的控制，因为ID，角色和域都受SELinux策略的控制。&lt;/P&gt;
&lt;P&gt;Fedora中策略的实现：&lt;/P&gt;
&lt;P&gt;从 Fedora Core 3 开始，SELinux的策略数据存储于/etc/security/selinux/X/src/policy/目录下（X指你选则的策略，可以是 &quot;strict&quot; 或者 &quot;targeted&quot;）。在这个目录中，你可以使用&quot;make load&quot;来编译并装在策略。也就是用那个命令将策略编译成二进制格式并装在到内核中，并立即生效。除了装如内核，该命令还将策略的二进制格式存储到 /etc/selinux/X/policy/policy.YY文件中，这里X指你选则的策略，可以是&quot;strict&quot; 或者 &quot;targeted&quot;，YY是策略的版本号（Fedora Core 3支持最新的版本是18）。这是为了在系统开机的第一时间，init可以迅速装载策略到内核。/etc/selinux/config这个配置文件用来告诉init那些策略需要装载。&lt;/P&gt;
&lt;P&gt;当你启动一个SELinux时，init所做的第一件事就是挂载/proc文件系统，并判断SELinux是否被激活。init通过selinuxfs文件系统类型来判断内核中是否有SELinux，如果内核中没有SELinux或者内核参数中 selinux=0 这一项，那么系统就会以一种叫做 non-SE的状态被继续引导启动。如果发现了SELinux，那么/selinux虚拟文件系统将被创建，然后，init通过 /selinux/policyvers来检查内核所支持的SELinux版本。最后，相应的策略数据 /etc/selinux/X/policy/policy.YY就会被装在到内核中去了。&lt;/P&gt;
&lt;P&gt;当策略被装载完之后，所有正在运行着的进程（指的就是init和内核的所有线程）都将被指定 system_u:system_r:kernel_t 这样一种上下文（内核线程其实无论在什么时间被创建，其上下文都是system_u:system_r:kernel_t ）。当init装载完策略之后，它还要重新执行自己。策略中有一个规则叫domain_auto_trans(kernel_t, init_exec_t, init_t)。他的意思就是当 kernel_t 域执行了一个据有 init_exec_t 类型的可执行文件（如/sbin/init）,那么该执行文件对应的进程的域就会自动过渡到 init_t 域（这是/sbin/init正确的所在域）。当这些都完成之后，init就继续完成那些通常的任务来完成机器的启动。内核线程自始至终都以 kernel_t 这个类型运行。&lt;/P&gt;
&lt;P&gt;文件和目录的上下文存储于扩展属性当中 (XATTRs)。更多关于XATTRs的信息请参考attr(5), getfattr(1) 和 setfattr(1)的manpage。&lt;/P&gt;
&lt;P&gt;简单的说，一个XATTR就是硬盘上某个文件的所有权，它由文件名和其它一些信息组成。对于每个 persistent 文件系统来说，它的每个文件或目录的SELinux上下文就存储在 security.selinux属性当中。虽然/proc文件系统不是persistent 文件系统，但SELinux还是在幕后为其文件和目录做了上下文标记，只是不能用getxattr获得罢了。和它对比，devpts文件系统（应用于/dev/pts Unix98伪终端）中各个文件（各个伪终端）的上下文是可以通过getxattr来获得的，并可以通过 setxattr 来更改每个设备的上下文（以便sshd等类似程序可以更改tty设备的上下文）。对于那些拥有固定存储的文件系统(ext2, ext3, Reiserfs, XFS, vfat, 等等) 有两种选择用于设定文件上下文：&lt;BR&gt;第一种：文件系统的类型就规定了其内部每一个文件英据有统一的上下文；&lt;BR&gt;第二种：使用 XATTRs 为每个文件标记不同上下文。例如，在iso9660（CD-ROM）文件系统中的每一个文件的上下文都是system_u:object_r:iso9660_t ，这被称做 genfs标记。&lt;/P&gt;
&lt;P&gt;Ext2, ext3 和XFS支持 XATTRs 而且 Fedora 系统也支持安全标记名字空间，所以Fedora默认使用 XATTRs 来标记文件的上下文，但这也是可选方法之一。因为 直到 Reiser4发布之前 ，Hans Reiser对 支持XATTR没多大兴趣，所以Fedora的 ReiserFS 文件系统不能很好的支持SELinux标记操作。也就是说，使用 ReiserFS 文件系统作为SELinux的根文件系统是不可能的事情。&lt;/P&gt;
&lt;P&gt;XFS有一个与XATTRs相关的重要的问题：如果XATTRs不能被装入超级块（inode），那么它们就会被装入数据块，每一个超级块就要使用一个数据块用来装 SELinux XATTR 。建立XFS时，mkfs.xfs在默认情况下创建的数据块大小为4096,超级块大小为256（要是用于安装 SELinux XATTR ，大约缺少30字节）。这就是说，默认的XFS文件系统中，每一个超级块要占用4096字节用来装载 SELinux XATTR ，这对于磁盘空间来说是严重的浪费！当你使用&quot;-i size=512&quot;选项创建一个XFS文件系统时，超级块的大小就变成了512字节，这样就可以将SELinux XATTR 装入超级块，即节省了空间，又提高的性能。512字节的超级块也有可能给其它操作带来好处。所以，如果你使用XFS并且打算将来使用 SELinux 的话，将超级块的大小规定为512字节肯定是个好主意。&lt;/P&gt;
&lt;P&gt;如果你使用的是较新的内核（如最新的Fedora内核或标准2.6.8.1内核）并且使用最新的mount工具，那么当你挂载一个文件系统时，有一个选项可以用来为整个文件系统指定上下文标签。比如你要挂载的文件系统是一个邮件池（mail spool），你可以使用&quot;-o context=system_u:object_r:mail_spool_t&quot;选项来挂载他，这样会将其内部的全部文件的上下文标记为 system_u:object_r:mail_spool_t。如果你的这个邮件池很大，而且还是XFS文件系统，这个方法还可以避免上一段所讨论的 inode大小的问题。甚至对于ext3那样的对XATTRs 开销较小的文件系统来说，使用context=选项挂载文件系统也会进一步减少开销，也可以避免为已经建立的文件系统重新设置 SElinux上下文（如果文件系统中文件较多的话，会浪费很长的时间）。&lt;/P&gt;
&lt;P&gt;Fedora的缺省SELinux策略：&lt;/P&gt;
&lt;P&gt;在Fedora Core 3系统中，缺省的策略是&quot;targeted &quot;策略。对于此种选择人们议论纷纷，问题在于我们希望能使尽可能多得人使用SELinux。如果人们觉得这玩意太可怕并且妨碍了人们做他们想做的事，那么人们会把它关掉。所以我们在这个时候宁愿为大多数人提供适量的保护策略，也不会为了少部分人而提供严格的保护策略。缺省的Fedora Core 3安装会激活 SELinux 并使用&quot;targeted &quot;策略，你也可以通过运行 system-config-securitylevel 这个程序将策略改为更加严格的 &quot;strict &quot;策略。&lt;/P&gt;
&lt;P&gt;如果你安装了策略的源文件包，那么策略的源文件就在/etc/selinux/X/src/policy/目录里面（X指你选则的策略，可以是 &quot;strict&quot; 或者 &quot;targeted&quot;）在这个目录下有一个叫作domains/program/的子目录，里面为每一个守护进程对应了一个.te文件。你可以删去那些你不使用也不打算使用的守护进程所对应的.te文件，从而减少内核内存空间的使用，并提高性能。比如，你的系统没有BIND服务，你完全可以删掉 named.te 文件。然后如果你使用&quot;make load&quot;命令重新装载策略到内核的话，内核对内存的使用量就会减少。然而也要小心，如果你误删了其它文件，那么你的系统将不能正常启动进入 enforcing模式。所以目前，这种调节最好还是由内行来做。&lt;/P&gt;
&lt;P&gt;刚开始接触SElinux的你，要注意一个内核参数，它用来决定你系统的内核运行于 强制（enforcing ）模式还是自由（permissive）模式，那就是&quot;enforcing&quot;参数。在自由模式下SELinux只是记录他该做什么，而事实上并不做任何动作。在强制模式下SElinux会来真格的。如果你的策略有错误，在强制模式下系统可能会阻止你登陆！所以正常情况下你应改在启动时传 enforcing=1 给内核，当你的SELinux策略有问题时，你可以临时传enforcing=0给内核来查错。在/etc/selinux/config这个init的配置文件中相应的有一个选项，通过设置它，也可以使系统进入自由模式。&lt;/P&gt;
&lt;P&gt;如果你打算中止使用SELinux，你可以使用 selinux=0 这个内核参数。这会关闭SELinux的全部功能，就好像你的内核并没有把SElinux机制编译进去一样。所以当系统出了问题时，比如系统崩溃，有些人就用此方法进行理事的恢复工作，但是我并不赞成这种做法。当你临时使用 selinux=0 进入系统后，你所建立的任何文件将不会拥有SELinux上下文标记。这就意味着，如果你替换了诸如/etc/passwd 或/etc/shadow等重要文件，那么下一次进入SELinux时，系统就不会正常的工作。这不是严重的问题，当你从CD引导时，做系统恢复时，或使用一个不支持 XATTRs备份软件恢复系统时，同样的问题也会发生。这个问题虽然可以通过为受到影响的文件系统重新标记上下文来解决，但是使用 enforcing=0 来代替 selinux=0 不是更好吗？&lt;BR&gt;你可以编辑/etc/selinux/config来临时关闭SELinux。&lt;/P&gt;
&lt;P&gt;Fedora Core 2的释放是SELinux一次重要的发展。他是第一套提供对SELinux完整支持的主流Linux发行版本。Fedora Core 3 也是一个重要的里程碑，因为他是第一套将SELinux作为默认安装选项的Linux发行版本。&lt;BR&gt;Red Hat Enterprise Linux 4 见会跟随 Fedora Core 的开发步伐，其对SELinux的支持也会得到进一步的发展。当 RHEL 4 发布时，她将会从 Fedora Core 系统和在Fedora 上学习SELinux的用户那里获得非常大的益处。&lt;/P&gt;
&lt;P&gt;你可以在 irc.freenode.net的 IRC服务器上的#fedora-selinux频道找到对SELinux的支持。还有 Fedora SELinux邮件列表&amp;nbsp;&lt;A href=&quot;http://www.redhat.com/mailman/listinfo/fedora-selinux-list&quot;&gt;http://www.redhat.com/mailman/listinfo/fedora-selinux-list&lt;/A&gt;。我经常挂在#fedora-selinux上面，并也订阅了邮件列表，我期望着在那里回答您提出的任何问题。&lt;/P&gt;
&lt;P&gt;更多关于SELinux的资料：&lt;/P&gt;
&lt;P&gt;NSA site &lt;A onclick=&quot;javascript:tagshow(event, 'for');&quot; href=&quot;http://www.wzms.net/javascript:;&quot; target=_self&gt;for&lt;/A&gt;Security-Enhanced Linux:&lt;A href=&quot;http://www.nsa.gov/selinux/&quot;&gt;http://www.nsa.gov/selinux/&lt;/A&gt;&lt;BR&gt;Fedora Core SELinux FAQ:&lt;A href=&quot;http://people.redhat.com/kwade/fedora-docs/selinux-faq/&quot;&gt;http://people.redhat.com/kwade/fedora-docs/selinux-faq/&lt;/A&gt;&lt;BR&gt;IRC channel for SELinux in Fedora Core: irc.freenode.net, #fedora-selinux&lt;BR&gt;Mailing list for SELinux in Fedora Core:&lt;A href=&quot;http://www.redhat.com/mailman/listinfo/fedora-selinux-list&quot;&gt;http://www.redhat.com/mailman/listinfo/fedora-selinux-list&lt;/A&gt;&lt;BR&gt;SELinux play machine:&lt;A href=&quot;http://www.coker.com.au/selinux/play.html&quot;&gt;http://www.coker.com.au/selinux/play.html&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;关于作者和译者：&lt;/P&gt;
&lt;P&gt;Russell Coker 从2003年就为RedHat的 SELinux 工程工作。在那之前他是一个独立的顾问并在闲暇时间研究SELinux。他第一次了解SELinux 是在 2001 年Ottawa Linux 讨论会上，当时 NSA 的Pete Loscocco 针对SELinux做了一个演讲。在2002 的OLS 上他介绍了他如何将SELinux移植到Debian Linux上. 作为移植工作的一部分, 他还撰写了用于支持所有他使用的程序的策略, 这些策略后来成为了SELinux策略的主要来源. 在OLS2003 和 Linux Kongress 2002上他也发表了文章。&lt;/P&gt;
&lt;P&gt;译者：胡智江，就读于江苏大学通信工程系。从1999年开始使用Linux，2003年通过了RHCT认证。对Linux系统和嵌入式系统都很感兴趣。翻译这篇文章主要是为了学习SELinux，然后和大家分享成果。希望大家对译文的错误作出批评和指正。&lt;/P&gt;</description><pubDate>Wed, 14 May 2008 04:41:00 +0800</pubDate><author>谢作如</author><guid isPermaLink="false">http://www.wzms.net/u/144/3103.htm</guid><dc:creator>谢作如</dc:creator><fs:srclink>http://www.wzms.net/u/144/3103.htm</fs:srclink><fs:srcfeed>http://www.wzms.net/u/144/rss2.xml</fs:srcfeed><fs:itemid>feedsky/itedu/~1219512/96617862/1221184</fs:itemid></item><item><title>“首席教师引领制”第四讲——基于Moodle的教学评价</title><link>http://item.feedsky.com/~feedsky/itedu/~1219512/96617863/1221184/1/item.html</link><description>&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; “首席教师引领制”第四讲内容是网络教学系统——Moodle的培训，Moodle是当前最热门的课程管理系统（CMS）之一。通过几周时间的比较，我组最终选择了Moodle作为教学平台。&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 这次培训由谢作如老师主讲，他综合分析了选择Moodle系统为平台的原因，介绍Moodle系统的主要功能，重点展示了Moodle系统在教学评价方面的种种优势。他还布置了“五一”假期中的任务：研究moodle系统的作业管理、测试评价、互动评价方面的功能，力求假期回来后能使用Moodle系统进行教学，让技术组的老师能具备信息化课程设计的基本能力。&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 为了能尽快推广Moodle系统，谢作如老师和施芳岳老师近期还要安装Linx系统，努力解决Moodle系统的外部用户认证问题。&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description><pubDate>Wed, 30 Apr 2008 13:35:00 +0800</pubDate><author>谢作如</author><guid isPermaLink="false">http://www.wzms.net/u/144/3083.htm</guid><dc:creator>谢作如</dc:creator><fs:srclink>http://www.wzms.net/u/144/3083.htm</fs:srclink><fs:srcfeed>http://www.wzms.net/u/144/rss2.xml</fs:srcfeed><fs:itemid>feedsky/itedu/~1219512/96617863/1221184</fs:itemid></item><item><title>“首席教师引领制”第三讲——2008信息技术高考</title><link>http://item.feedsky.com/~feedsky/itedu/~1219512/96617864/1221184/1/item.html</link><description>&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 目前信息技术学科的热点是什么？毫无疑问，那就是高考。 浙江省2009年高考方案在千呼万唤中出台，技术课程（信息技术和通用技术）终于纳入了高考。虽然是第三类科目的学生才需要考技术课程，但与其他省相比，毕竟是堂堂正正地像高考了。那么，面对高考，我们该准备什么？&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 谢作如老师参加省高考复习用书编写，在信息技术终结性评价方面积累了一定的经验。这一次，他以《信息技术课程总结性评价命题思路》为主题，从“省高考复习用书编写原则”、“总结性评价命题指导思想”、“常见试题类型以及范例”三个方面介绍了他的一些心得与收获。虽然以2009年的高考方案来看，重点中学中参加信息技术高考的学生将寥寥无几，但是作为省一级重点中学和省学科建设试点学校，我们没有理由因此就不关注高考，未雨绸缪，才是以积极进取的态度面对新课改的具体表现。&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 此外，温州近期也在组织各县（区）一线教师进行命题，而我组将承担最后的组稿工作。关注新课程，关注信息技术高考，这是我组学科建设的核心工作之一。&lt;/P&gt;</description><pubDate>Fri, 18 Apr 2008 06:05:00 +0800</pubDate><author>谢作如</author><guid isPermaLink="false">http://www.wzms.net/u/144/3071.htm</guid><dc:creator>谢作如</dc:creator><fs:srclink>http://www.wzms.net/u/144/3071.htm</fs:srclink><fs:srcfeed>http://www.wzms.net/u/144/rss2.xml</fs:srcfeed><fs:itemid>feedsky/itedu/~1219512/96617864/1221184</fs:itemid></item><item><title>关于js的一些基本知识（学习Ajax必看）</title><link>http://item.feedsky.com/~feedsky/itedu/~1219512/96617865/1221184/1/item.html</link><description>&lt;P&gt;1.document.write(&quot;&quot;); 输出语句 &lt;BR&gt;2.JS中的注释为// &lt;BR&gt;3.传统的HTML文档顺序是:document-&amp;gt;html-&amp;gt;(head,body) &lt;BR&gt;4.一个浏览器窗口中的DOM顺序是:window-&amp;gt;(navigator,screen,history,location,document) &lt;BR&gt;5.得到表单中元素的名称和值:document.getElementById(&quot;表单中元素的ID号&quot;).name(或value) &lt;BR&gt;6.一个小写转大写的JS: document.getElementById(&quot;output&quot;).value = document.getElementById(&quot;input&quot;).value.toUpperCase(); &lt;BR&gt;7.JS中的值类型:String,Number,Boolean,Null,Object,Function &lt;BR&gt;8.JS中的字符型转换成数值型:parseInt(),parseFloat() &lt;BR&gt;9.JS中的数字转换成字符型:(&quot;&quot;+变量) &lt;BR&gt;10.JS中的取字符串长度是:(length) &lt;BR&gt;11.JS中的字符与字符相连接使用+号. &lt;BR&gt;12.JS中的比较操作符有:==等于,!=不等于,&amp;gt;,&amp;gt;=,&amp;lt;.&amp;lt;= &lt;BR&gt;13.JS中声明变量使用:var来进行声明 &lt;BR&gt;14.JS中的判断语句结构:if(condition){}else{} &lt;BR&gt;15.JS中的循环结构:for([initial expression];[condition];[upadte expression]) {inside loop} &lt;BR&gt;16.循环中止的命令是:break &lt;BR&gt;17.JS中的函数定义:function functionName([parameter],...){statement[s]} &lt;BR&gt;18.当文件中出现多个form表单时.可以用document.forms[0],document.forms[1]来代替. &lt;BR&gt;19.窗口:打开窗口window.open(), 关闭一个窗口:window.close(), 窗口本身:self &lt;BR&gt;20.状态栏的设置:window.status=&quot;字符&quot;; &lt;BR&gt;21.弹出提示信息:window.alert(&quot;字符&quot;); &lt;BR&gt;22.弹出确认框:window.confirm(); &lt;BR&gt;23.弹出输入提示框:window.prompt(); &lt;BR&gt;24.指定当前显示链接的位置:window.location.href=&quot;http://www.wzms.net/URL&quot; &lt;BR&gt;25.取出窗体中的所有表单的数量:document.forms.length &lt;BR&gt;26.关闭文档的输出流:document.close(); &lt;BR&gt;27.字符串追加连接符:+= &lt;BR&gt;28.创建一个文档元素:document.createElement(),document.createTextNode() &lt;BR&gt;29.得到元素的方法:document.getElementById() &lt;BR&gt;30.设置表单中所有文本型的成员的值为空: &lt;BR&gt;var form = window.document.forms[0] &lt;BR&gt;for (var i = 0; i&amp;lt;form.elements.length;i++){ &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (form.elements.type == &quot;text&quot;){ &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; form.elements.value = &quot;&quot;; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; } &lt;BR&gt;} &lt;BR&gt;31.复选按钮在JS中判断是否选中:document.forms[0].checkThis.checked (checked属性代表为是否选中返回TRUE或FALSE) &lt;BR&gt;32.单选按钮组(单选按钮的名称必须相同):取单选按钮组的长度document.forms[0].groupName.length &lt;BR&gt;33.单选按钮组判断是否被选中也是用checked. &lt;BR&gt;34.下拉列表框的值:document.forms[0].selectName.options[n].value (n有时用下拉列表框名称加上.selectedIndex来确定被选中的值) &lt;BR&gt;35.字符串的定义:var myString = new String(&quot;This is lightsword&quot;); &lt;BR&gt;36.字符串转成大写:string.toUpperCase(); 字符串转成小写:string.toLowerCase(); &lt;BR&gt;37.返回字符串2在字符串1中出现的位置:String1.indexOf(&quot;String2&quot;)!=-1则说明没找到. &lt;BR&gt;38.取字符串中指定位置的一个字符:StringA.charAt(9); &lt;BR&gt;39.取出字符串中指定起点和终点的子字符串:stringA.substring(2,6); &lt;BR&gt;40. 数学函数:Math.PI(返回圆周率),Math.SQRT2(返回开方),Math.max(value1,value2)返回两个数中的最在值, Math.pow(value1,10)返回value1的十次方,Math.round(value1)四舍五入函数,Math.floor (Math.random()*(n+1))返回随机数 &lt;BR&gt;41.定义日期型变量:var today = new Date(); &lt;BR&gt;42.日 期函数列表:dateObj.getTime()得到时间,dateObj.getYear()得到年份,dateObj.getFullYear()得 到四位的年份,dateObj.getMonth()得到月份,dateObj.getDate()得到日,dateObj.getDay()得到日期 几,dateObj.getHours()得到小时,dateObj.getMinutes()得到分,dateObj.getSeconds()得到 秒,dateObj.setTime(value)设置时间,dateObj.setYear(val)设置年,dateObj.setMonth (val)设置月,dateObj.setDate(val)设置日,dateObj.setDay(val)设置星期几, dateObj.setHours设置小时,dateObj.setMinutes(val)设置分,dateObj.setSeconds(val)设 置秒&amp;nbsp; [注意:此日期时间从0开始计] &lt;BR&gt;43.FRAME的表示方式: [window.]frames[n].ObjFuncVarName,frames[&quot;frameName&quot;].ObjFuncVarName,frameName.ObjFuncVarName &lt;BR&gt;44.parent代表父亲对象,top代表最顶端对象 &lt;BR&gt;45.打开子窗口的父窗口为:opener &lt;BR&gt;46.表示当前所属的位置:this &lt;BR&gt;47.当在超链接中调用JS函数时用:(javascript :)来开头后面加函数名 &lt;BR&gt;48.在老的浏览器中不执行此JS:&amp;lt;!--&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //--&amp;gt; &lt;BR&gt;49.引用一个文件式的JS:&amp;lt;script type=&quot;text/javascript&quot; src=&quot;http://www.wzms.net/aaa.js&quot;&amp;gt;&amp;lt;/script&amp;gt; &lt;BR&gt;50.指定在不支持脚本的浏览器显示的HTML:&amp;lt;noscript&amp;gt;&amp;lt;/noscript&amp;gt; &lt;BR&gt;51. 当超链和onCLICK事件都有时,则老版本的浏览器转向a.html,否则转向b.html.例:&amp;lt;a href=&quot;http://www.wzms.net/a.html&quot; onclick=&quot;location.href='http://www.wzms.net/b.html';return false&quot;&amp;gt;dfsadf&amp;lt;/a&amp;gt; &lt;BR&gt;52.JS 的内建对象有:Array,Boolean,Date,Error,EvalError,Function,Math,Number,Object, RangeError,ReferenceError,RegExp,String,SyntaxError,TypeError,URIError &lt;BR&gt;53.JS中的换行:\n &lt;BR&gt;54. 窗口全屏大小:&amp;lt;script&amp;gt;function fullScreen(){ this.moveTo(0,0);this.outerWidth=screen.availWidth;this.outerHeight=screen.availHeight;}window.maximize=fullScreen;&amp;lt;/script&amp;gt; &lt;BR&gt;55.JS中的all代表其下层的全部元素 &lt;BR&gt;56.JS中的焦点顺序:document.getElementByid(&quot;表单元素&quot;).tabIndex = 1 &lt;BR&gt;57.innerHTML 的值是表单元素的值:如&amp;lt;p id=&quot;para&quot;&amp;gt;&quot;how are &amp;lt;em&amp;gt;you&amp;lt;/em&amp;gt;&quot;&amp;lt;/p&amp;gt;,则innerHTML的值就是:how are &amp;lt;em&amp;gt;you&amp;lt;/em&amp;gt; &lt;BR&gt;58.innerTEXT的值和上面的一样,只不过不会把&amp;lt;em&amp;gt;这种标记显示出来. &lt;BR&gt;59.contentEditable可设置元素是否可被修改,isContentEditable返回是否可修改的状态. &lt;BR&gt;60.isDisabled判断是否为禁止状态.disabled设置禁止状态 &lt;BR&gt;61.length取得长度,返回整型数值 &lt;BR&gt;62.addBehavior()是一种JS调用的外部函数文件其扩展名为.htc &lt;BR&gt;63.window.focus()使当前的窗口在所有窗口之前. &lt;BR&gt;64.blur()指失去焦点.与FOCUS()相反. &lt;BR&gt;65.select()指元素为选中状态. &lt;BR&gt;66.防止用户对文本框中输入文本:onfocus=&quot;this.blur()&quot; &lt;BR&gt;67.取出该元素在页面中出现的数量:document.all.tags(&quot;div(或其它HTML标记符)&quot;).length &lt;BR&gt;68.JS中分为两种窗体输出:模态和非模态.window.showModaldialog(),window.showModeless() &lt;BR&gt;69.状态栏文字的设置:window.status='文字',默认的状态栏文字设置:window.defaultStatus = '文字.'; &lt;BR&gt;70.添加到收藏夹:external.AddFavorite(&quot;&lt;A href='http://www.dannyg.com&quot;;,&quot;jaskdlf'&gt;http://www.dannyg.com&quot;;,&quot;jaskdlf&lt;/A&gt;&quot;); &lt;BR&gt;71.JS中遇到脚本错误时不做任何操作:window.onerror = doNothing; 指定错误句柄的语法为:window.onerror = handleError; &lt;BR&gt;72.JS中指定当前打开窗口的父窗口:window.opener,支持opener.opener...的多重继续. &lt;BR&gt;73.JS中的self指的是当前的窗口 &lt;BR&gt;74.JS中状态栏显示内容:window.status=&quot;http://www.wzms.net/内容&quot; &lt;BR&gt;75.JS中的top指的是框架集中最顶层的框架 &lt;BR&gt;76.JS中关闭当前的窗口:window.close(); &lt;BR&gt;77.JS中提出是否确认的框:if(confirm(&quot;Are you sure?&quot;)){alert(&quot;ok&quot;);}else{alert(&quot;Not Ok&quot;);} &lt;BR&gt;78.JS中的窗口重定向:window.navigate(&quot;&lt;A href=&quot;http://www.sina.com.cn&quot;&gt;http://www.sina.com.cn&lt;/A&gt;&quot;;); &lt;BR&gt;79.JS中的打印:window.print() &lt;BR&gt;80.JS中的提示输入框:window.prompt(&quot;message&quot;,&quot;defaultReply&quot;); &lt;BR&gt;81.JS中的窗口滚动条:window.scroll(x,y) &lt;BR&gt;82.JS中的窗口滚动到位置:window.scrollby &lt;BR&gt;83.JS中设置时间间隔:setInterval(&quot;expr&quot;,msecDelay)或setInterval(funcRef,msecDelay)或setTimeout &lt;BR&gt;84.JS中的模态显示在IE4+行,在NN中不行:showModalDialog(&quot;URL&quot;[,arguments][,features]); &lt;BR&gt;85.JS 中的退出之前使用的句柄:function verifyClose(){event.returnValue=&quot;http://www.wzms.net/we really like you and hope you will stay longer.&quot;;}}&amp;nbsp; window.onbeforeunload=verifyClose; &lt;BR&gt;86.当窗体第一次调用时使用的文件句柄:onload() &lt;BR&gt;87.当窗体关闭时调用的文件句柄:onunload() &lt;BR&gt;88.window.location 的属性: protocol(http:),hostname(&lt;A href=&quot;http://www.example.com),port(80),host(www.example.com:80&quot;&gt;www.example.com),port(80),host(www.example.com:80&lt;/A&gt;), pathname(&quot;/a/a.html&quot;),hash(&quot;#giantGizmo&quot;,指跳转到相应的锚记),href(全部的信息) &lt;BR&gt;89.window.location.reload()刷新当前页面. &lt;BR&gt;90.window.history.back()返回上一页,window.history.forward()返回下一页,window.history.go(返回第几页,也可以使用访问过的URL) &lt;BR&gt;91.document.write()不换行的输出,document.writeln()换行输出 &lt;BR&gt;92.document.body.noWrap=true;防止链接文字折行. &lt;BR&gt;93.变量名.charAt(第几位),取该变量的第几位的字符. &lt;BR&gt;94.&quot;abc&quot;.charCodeAt(第几个),返回第几个字符的ASCii码值. &lt;BR&gt;95.字符串连接:string.concat(string2),或用+=进行连接 &lt;BR&gt;96.变量.indexOf(&quot;字符&quot;,起始位置),返回第一个出现的位置(从0开始计算) &lt;BR&gt;97.string.lastIndexOf(searchString[,startIndex])最后一次出现的位置. &lt;BR&gt;98.string.match(regExpression),判断字符是否匹配. &lt;BR&gt;99.string.replace(regExpression,replaceString)替换现有字符串. &lt;BR&gt;100.string.split(分隔符)返回一个数组存储值. &lt;BR&gt;101.string.substr(start[,length])取从第几位到指定长度的字符串. &lt;BR&gt;102.string.toLowerCase()使字符串全部变为小写. &lt;BR&gt;103.string.toUpperCase()使全部字符变为大写. &lt;BR&gt;104.parseInt(string[,radix(代表进制)])强制转换成整型. &lt;BR&gt;105.parseFloat(string[,radix])强制转换成浮点型. &lt;BR&gt;106.isNaN(变量):测试是否为数值型. &lt;BR&gt;107.定义常量的关键字:const,定义变量的关键字:var &lt;BR&gt;&lt;/P&gt;
&lt;P&gt;110.Javascript中动态生成新节点：&lt;/P&gt;
&lt;P&gt;在&lt;A onclick=&quot;javascript:tagshow(event, 'DOM');&quot; href=&quot;http://www.wzms.net/javascript:;&quot; target=_self&gt;DOM&lt;/A&gt;中生成新的节点，需要以下过程：&lt;BR&gt;创建一个新元素(以段落标记为例)&lt;BR&gt;&amp;nbsp; var newElement = document.createElement(&quot;P&quot;);&lt;BR&gt;&amp;nbsp; 此时生成的元素只存在于浏览器内存中，还不是文档包含层次的一部分。&lt;BR&gt;如果需要为元素设置属性，可以使用setAttribute()方法&lt;BR&gt;&amp;nbsp; newElement.setAttribute(&quot;id&quot;,&quot;newP&quot;);&lt;BR&gt;&amp;nbsp; 或 newElement.id = &quot;newP&quot;;&lt;BR&gt;如果要在段落中加入文本，可以先生成一个文本节点作为&lt;A onclick=&quot;javascript:tagshow(event, '%B6%D4%CF%F3');&quot; href=&quot;http://www.wzms.net/javascript:;&quot; target=_self&gt;对象&lt;/A&gt;&lt;BR&gt;&amp;nbsp; var newText = document.createTextNode(&quot;Something write here&quot;);&lt;BR&gt;而后把文本对象放入元素中&lt;BR&gt;&amp;nbsp; newElement.appendChild(newText);&lt;BR&gt;最后一步，也是最重要的一步，一定要把生成的新元素作为body元素的子节点插入(其它元素插入到相应的父节点之下)&lt;BR&gt;&amp;nbsp; document.body.appendChild(newElement);&lt;BR&gt;这样，新元素才是文档包含层次的一部分，可以像引用文档中其它元素一样引用。&lt;/P&gt;</description><pubDate>Thu, 17 Apr 2008 03:34:00 +0800</pubDate><author>谢作如</author><guid isPermaLink="false">http://www.wzms.net/u/144/3068.htm</guid><dc:creator>谢作如</dc:creator><fs:srclink>http://www.wzms.net/u/144/3068.htm</fs:srclink><fs:srcfeed>http://www.wzms.net/u/144/rss2.xml</fs:srcfeed><fs:itemid>feedsky/itedu/~1219512/96617865/1221184</fs:itemid></item><item><title>冒泡排序教学演示课件（dbx拖动窗口效果）</title><link>http://item.feedsky.com/~feedsky/itedu/~1219512/96617866/1221184/1/item.html</link><description>&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 很少做课件，平时上课使用的教学软件比较随意，常常用ppt当板书软件，边打字边划线，倒也简单实用。&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 上“排序”一节时，我总在想：应该怎么演示这些数据交换的过程呢？去年我和舒春平是用扑克牌的，也试过用纸牌在黑板上移动，甚至让每个组的同学手里拿一张数字牌，进行交换移动，曾经看过某老师让学生上台进行交换。但是冒泡毕竟类似一种自上而下或者自下而上的过程，平行排列总不是很形象。于是意识到应该做一个课件了。&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 因为最近关注AJAX，所以还是用js来实现，使用了dbx.js拖动窗口效果。这个djx还是我从博客系统中挖出来的，颇费了一番功夫。本来想让要排列的数字可以根据需要自动初始化，后来发现有点麻烦，下次再改吧。&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 课件说明：对5组数字进行排序手动演示，能记录每一次排序后的数字状态。&lt;/P&gt;
&lt;P&gt;&lt;A href=&quot;http://www.wzms.net/0/2008-4/171010221725.htm&quot;&gt;排序js演示.htm&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;关于djx的一些介绍：&lt;/P&gt;
&lt;P&gt;1.dbx具有动态拖拽效果,并且可以按照网格对齐,可以隐藏显示指定列表,对特殊定义的class自动实现拖拽效果方便快捷,对层设置class=dbx-box,dbx-handle就可以了&lt;BR&gt;2.此js文件支持 Opera 7.5 以后版本, Firefox和其他Mozilla浏览器,Safari1.2以上的版本, Konqueror 3.2以上的版本,和开启js的Internet Explorer 6,支持的还是比较多的.经过我的测试,在IE7下也同样支持.&lt;BR&gt;3.每个box的状态和位置是由cookie来记录的,只要状态或者位置发生变化,cookie就会去记录改变,当页面再次请求被访问的时候,通过cookie可以实现上次访问的状态,所以这个js东东可以成功的运用在各种具有私人性质的需要此拖拽功能的网络wen应用程序上,说白了,也就是可以通过javascript的cookie去记录用户拖拽的信息,在用户下次登陆的时候通过读取cookie,来复现上次访问的状态&lt;BR&gt;4.除了以上的说明外,本js脚本还可以成功的更容易的运用到其他的大型复杂的系统中,例如利用dragable元素作为数据输入界面.与远程脚本互动(比如利用xmlhttprequest) ,你也可以将此js脚本作为控制界面拖拽元素的工具来实现几乎任何客户端或服务器端的应用:网站导航,游戏,CMS,论坛管理,服务管理等,可能性是无止境的.这一段大概就自夸本脚本可以实现很多其他扩展&lt;/P&gt;
&lt;P&gt;&lt;BR&gt;e文好的话就看下面的原文或者去官网看看&lt;BR&gt;&lt;A href=&quot;http://www.brothercake.com/site/resources/scripts/dbx&quot;&gt;http://www.brothercake.com/site/resources/scripts/dbx&lt;/A&gt;&lt;/P&gt;</description><pubDate>Thu, 17 Apr 2008 01:58:00 +0800</pubDate><author>谢作如</author><guid isPermaLink="false">http://www.wzms.net/u/144/3067.htm</guid><dc:creator>谢作如</dc:creator><fs:srclink>http://www.wzms.net/u/144/3067.htm</fs:srclink><fs:srcfeed>http://www.wzms.net/u/144/rss2.xml</fs:srcfeed><fs:itemid>feedsky/itedu/~1219512/96617866/1221184</fs:itemid></item><item><title>js表单详解（修改表单属性，修改表单元素值）转</title><link>http://item.feedsky.com/~feedsky/itedu/~1219512/96617867/1221184/1/item.html</link><description>&lt;P&gt;其实在&lt;A href=&quot;http://www.cnblogs.com/thcjp/archive/2006/08/08/470997.html&quot;&gt;javascript入门·Document对象入门讲解(访问表单，创建新页，获取页标题) &lt;/A&gt;一文中，我们已经把表单的一些基本访问等弄清楚了，下面我们深入的学下表单的属性以及对表单元素的简单操作！&lt;/P&gt;
&lt;P&gt;演示一 ： 根据需求，定做表单&lt;/P&gt;
&lt;P&gt;你先按下提交提交表单，后退，然后再点修改表单，然后再提交表单，看效果&lt;/P&gt;
&lt;P&gt;现在的指向是 test.asp ，方法是 post &lt;/P&gt;
&lt;P&gt;其实做那么多都没有，直接作两个属性吧 田洪川的博客 网易 get post &lt;/P&gt;
&lt;P&gt;演示二 ：修改表单内特定类型元素的值&lt;/P&gt;
&lt;P&gt;form.elements[]属性：除了跟踪表单中每种类型的元素外，浏览器还保留了一张表单中所有控件元素的列表，元素的顺序就是在HTML中的位置，所以对引用相当的方便。&lt;BR&gt;&lt;BR&gt;&lt;/P&gt;
&lt;DIV style=&quot;BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee&quot;&gt;&lt;IMG id=Codehighlighter1_2_38_Open_Image onclick=&quot;this.style.display='none'; Codehighlighter1_2_38_Open_Text.style.display='none'; Codehighlighter1_2_38_Closed_Image.style.display='inline'; Codehighlighter1_2_38_Closed_Text.style.display='inline';&quot; src=&quot;http://www.cnblogs.com/images/OutliningIndicators/ExpandedBlockStart.gif&quot; align=top&gt;&lt;IMG id=Codehighlighter1_2_38_Closed_Image style=&quot;http://www.wzms.net/DISPLAY: none&quot; onclick=&quot;this.style.display='none'; Codehighlighter1_2_38_Closed_Text.style.display='none'; Codehighlighter1_2_38_Open_Image.style.display='inline'; Codehighlighter1_2_38_Open_Text.style.display='inline';&quot; src=&quot;http://www.cnblogs.com/images/OutliningIndicators/ContractedBlock.gif&quot; align=top&gt;&lt;SPAN style=&quot;http://www.wzms.net/COLOR: #000000; BACKGROUND-COLOR: #ffff00&quot;&gt;&amp;lt;%&lt;/SPAN&gt;&lt;SPAN id=Codehighlighter1_2_38_Closed_Text style=&quot;BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff&quot;&gt;&lt;IMG src=&quot;http://www.cnblogs.com/images/dot.gif&quot;&gt;&lt;/SPAN&gt;&lt;SPAN id=Codehighlighter1_2_38_Open_Text&gt;&lt;SPAN style=&quot;http://www.wzms.net/COLOR: #000000; BACKGROUND-COLOR: #f5f5f5&quot;&gt;@LANGUAGE&lt;/SPAN&gt;&lt;SPAN style=&quot;COLOR: #000000; BACKGROUND-COLOR: #f5f5f5&quot;&gt;=&lt;/SPAN&gt;&lt;SPAN style=&quot;COLOR: #000000; BACKGROUND-COLOR: #f5f5f5&quot;&gt;&quot;&lt;/SPAN&gt;&lt;SPAN style=&quot;COLOR: #000000; BACKGROUND-COLOR: #f5f5f5&quot;&gt;JAVASCRIPT&lt;/SPAN&gt;&lt;SPAN style=&quot;COLOR: #000000; BACKGROUND-COLOR: #f5f5f5&quot;&gt;&quot;&lt;/SPAN&gt;&lt;SPAN style=&quot;COLOR: #000000; BACKGROUND-COLOR: #f5f5f5&quot;&gt;&amp;nbsp;CODEPAGE&lt;/SPAN&gt;&lt;SPAN style=&quot;COLOR: #000000; BACKGROUND-COLOR: #f5f5f5&quot;&gt;=&lt;/SPAN&gt;&lt;SPAN style=&quot;COLOR: #000000; BACKGROUND-COLOR: #f5f5f5&quot;&gt;&quot;&lt;/SPAN&gt;&lt;SPAN style=&quot;COLOR: #000000; BACKGROUND-COLOR: #f5f5f5&quot;&gt;936&lt;/SPAN&gt;&lt;SPAN style=&quot;COLOR: #000000; BACKGROUND-COLOR: #f5f5f5&quot;&gt;&quot;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style=&quot;COLOR: #000000; BACKGROUND-COLOR: #ffff00&quot;&gt;%&amp;gt;&lt;/SPAN&gt;&lt;SPAN style=&quot;COLOR: #000000&quot;&gt;&lt;BR&gt;&lt;IMG src=&quot;http://www.cnblogs.com/images/OutliningIndicators/None.gif&quot; align=top&gt;&lt;/SPAN&gt;&lt;SPAN style=&quot;http://www.wzms.net/COLOR: #0000ff&quot;&gt;&amp;lt;!&lt;/SPAN&gt;&lt;SPAN style=&quot;COLOR: #ff00ff&quot;&gt;DOCTYPE&amp;nbsp;html&amp;nbsp;PUBLIC&amp;nbsp;&quot;-//W3C//DTD&amp;nbsp;XHTML&amp;nbsp;1.0&amp;nbsp;Transitional//EN&quot;&amp;nbsp;&quot;http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd&quot;&lt;/SPAN&gt;&lt;SPAN style=&quot;COLOR: #0000ff&quot;&gt;&amp;gt;&lt;/SPAN&gt;&lt;SPAN style=&quot;COLOR: #000000&quot;&gt;&lt;BR&gt;&lt;IMG src=&quot;http://www.cnblogs.com/images/OutliningIndicators/None.gif&quot; align=top&gt;&lt;/SPAN&gt;&lt;SPAN style=&quot;http://www.wzms.net/COLOR: #0000ff&quot;&gt;&amp;lt;&lt;/SPAN&gt;&lt;SPAN style=&quot;COLOR: #800000&quot;&gt;html&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style=&quot;COLOR: #ff0000&quot;&gt;xmlns&lt;/SPAN&gt;&lt;SPAN style=&quot;COLOR: #0000ff&quot;&gt;=&quot;http://www.w3.org/1999/xhtml&quot;&lt;/SPAN&gt;&lt;SPAN style=&quot;COLOR: #0000ff&quot;&gt;&amp;gt;&lt;/SPAN&gt;&lt;SPAN style=&quot;COLOR: #000000&quot;&gt;&lt;BR&gt;&lt;IMG src=&quot;http://www.cnblogs.com/images/OutliningIndicators/None.gif&quot; align=top&gt;&lt;/SPAN&gt;&lt;SPAN style=&quot;http://www.wzms.net/COLOR: #0000ff&quot;&gt;&amp;lt;&lt;/SPAN&gt;&lt;SPAN style=&quot;COLOR: #800000&quot;&gt;head&lt;/SPAN&gt;&lt;SPAN style=&quot;COLOR: #0000ff&quot;&gt;&amp;gt;&lt;/SPAN&gt;&lt;SPAN style=&quot;COLOR: #000000&quot;&gt;&lt;BR&gt;&lt;IMG src=&quot;http://www.cnblogs.com/images/OutliningIndicators/None.gif&quot; align=top&gt;&lt;/SPAN&gt;&lt;SPAN style=&quot;http://www.wzms.net/COLOR: #0000ff&quot;&gt;&amp;lt;&lt;/SPAN&gt;&lt;SPAN style=&quot;COLOR: #800000&quot;&gt;meta&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style=&quot;COLOR: #ff0000&quot;&gt;http-equiv&lt;/SPAN&gt;&lt;SPAN style=&quot;COLOR: #0000ff&quot;&gt;=&quot;Content-Type&quot;&lt;/SPAN&gt;&lt;SPAN style=&quot;COLOR: #ff0000&quot;&gt;&amp;nbsp;content&lt;/SPAN&gt;&lt;SPAN style=&quot;COLOR: #0000ff&quot;&gt;=&quot;text/html;&amp;nbsp;charset=gb2312&quot;&lt;/SPAN&gt;&lt;SPAN style=&quot;COLOR: #ff0000&quot;&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style=&quot;COLOR: #0000ff&quot;&gt;/&amp;gt;&lt;/SPAN&gt;&lt;SPAN style=&quot;COLOR: #000000&quot;&gt;&lt;BR&gt;&lt;IMG src=&quot;http://www.cnblogs.com/images/OutliningIndicators/None.gif&quot; align=top&gt;&lt;/SPAN&gt;&lt;SPAN style=&quot;http://www.wzms.net/COLOR: #0000ff&quot;&gt;&amp;lt;&lt;/SPAN&gt;&lt;SPAN style=&quot;COLOR: #800000&quot;&gt;title&lt;/SPAN&gt;&lt;SPAN style=&quot;COLOR: #0000ff&quot;&gt;&amp;gt;&lt;/SPAN&gt;&lt;SPAN style=&quot;COLOR: #000000&quot;&gt;表单详解一（修改表单属性，修改表单元素值）&lt;/SPAN&gt;&lt;SPAN style=&quot;COLOR: #0000ff&quot;&gt;&amp;lt;/&lt;/SPAN&gt;&lt;SPAN style=&quot;COLOR: #800000&quot;&gt;title&lt;/SPAN&gt;&lt;SPAN style=&quot;COLOR: #0000ff&quot;&gt;&amp;gt;&lt;/SPAN&gt;&lt;SPAN style=&quot;COLOR: #000000&quot;&gt;&lt;BR&gt;&lt;IMG id=Codehighlighter1_353_1026_Open_Image onclick=&quot;this.style.display='none'; Codehighlighter1_353_1026_Open_Text.style.display='none'; Codehighlighter1_353_1026_Closed_Image.style.display='inline'; Codehighlighter1_353_1026_Closed_Text.style.display='inline';&quot; src=&quot;http://www.cnblogs.com/images/OutliningIndicators/ExpandedBlockStart.gif&quot; align=top&gt;&lt;IMG id=Codehighlighter1_353_1026_Closed_Image style=&quot;http://www.wzms.net/DISPLAY: none&quot; onclick=&quot;this.style.display='none'; Codehighlighter1_353_1026_Closed_Text.style.display='none'; Codehighlighter1_353_1026_Open_Image.style.display='inline'; Codehighlighter1_353_1026_Open_Text.style.display='inline';&quot; src=&quot;http://www.cnblogs.com/images/OutliningIndicators/ContractedBlock.gif&quot; align=top&gt;&lt;/SPAN&gt;&lt;SPAN style=&quot;http://www.wzms.net/COLOR: #0000ff&quot;&gt;&amp;lt;&lt;/SPAN&gt;&lt;SPAN style=&quot;COLOR: #800000&quot;&gt;script&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style=&quot;COLOR: #ff0000&quot;&gt;language&lt;/SPAN&gt;&lt;SPAN style=&quot;COLOR: #0000ff&quot;&gt;=&quot;javascript&quot;&lt;/SPAN&gt;&lt;SPAN style=&quot;COLOR: #0000ff&quot;&gt;&amp;gt;&lt;/SPAN&gt;&lt;SPAN id=Codehighlighter1_353_1026_Closed_Text style=&quot;BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff&quot;&gt;&lt;IMG src=&quot;http://www.cnblogs.com/images/dot.gif&quot;&gt;&lt;/SPAN&gt;&lt;SPAN id=Codehighlighter1_353_1026_Open_Text&gt;&lt;SPAN style=&quot;http://www.wzms.net/COLOR: #000000; BACKGROUND-COLOR: #f5f5f5&quot;&gt;&lt;BR&gt;&lt;IMG src=&quot;http://www.cnblogs.com/images/OutliningIndicators/InBlock.gif&quot; align=top&gt;&lt;/SPAN&gt;&lt;SPAN style=&quot;http://www.wzms.net/COLOR: #0000ff; BACKGROUND-COLOR: #f5f5f5&quot;&gt;function&lt;/SPAN&gt;&lt;SPAN style=&quot;COLOR: #000000; BACKGROUND-COLOR: #f5f5f5&quot;&gt;&amp;nbsp;gaibian()&lt;BR&gt;&lt;IMG id=Codehighlighter1_373_566_Open_Image onclick=&quot;this.style.display='none'; Codehighlighter1_373_566_Open_Text.style.display='none'; Codehighlighter1_373_566_Closed_Image.style.display='inline'; Codehighlighter1_373_566_Closed_Text.style.display='inline';&quot; src=&quot;http://www.cnblogs.com/images/OutliningIndicators/ExpandedSubBlockStart.gif&quot; align=top&gt;&lt;IMG id=Codehighlighter1_373_566_Closed_Image style=&quot;http://www.wzms.net/DISPLAY: none&quot; onclick=&quot;this.style.display='none'; Codehighlighter1_373_566_Closed_Text.style.display='none'; Codehighlighter1_373_566_Open_Image.style.display='inline'; Codehighlighter1_373_566_Open_Text.style.display='inline';&quot; src=&quot;http://www.cnblogs.com/images/OutliningIndicators/ContractedSubBlock.gif&quot; align=top&gt;&lt;/SPAN&gt;&lt;SPAN id=Codehighlighter1_373_566_Closed_Text style=&quot;http://www.wzms.net/BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff&quot;&gt;&lt;IMG src=&quot;http://www.cnblogs.com/images/dot.gif&quot;&gt;&lt;/SPAN&gt;&lt;SPAN id=Codehighlighter1_373_566_Open_Text&gt;&lt;SPAN style=&quot;http://www.wzms.net/COLOR: #000000; BACKGROUND-COLOR: #f5f5f5&quot;&gt;{&lt;BR&gt;&lt;IMG src=&quot;http://www.cnblogs.com/images/OutliningIndicators/InBlock.gif&quot; align=top&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style=&quot;http://www.wzms.net/COLOR: #0000ff; BACKGROUND-COLOR: #f5f5f5&quot;&gt;var&lt;/SPAN&gt;&lt;SPAN style=&quot;COLOR: #000000; BACKGROUND-COLOR: #f5f5f5&quot;&gt;&amp;nbsp;acti&lt;/SPAN&gt;&lt;SPAN style=&quot;COLOR: #000000; BACKGROUND-COLOR: #f5f5f5&quot;&gt;=&lt;/SPAN&gt;&lt;SPAN style=&quot;COLOR: #000000; BACKGROUND-COLOR: #f5f5f5&quot;&gt;document.getElementById(&lt;/SPAN&gt;&lt;SPAN style=&quot;COLOR: #000000; BACKGROUND-COLOR: #f5f5f5&quot;&gt;&quot;&lt;/SPAN&gt;&lt;SPAN style=&quot;COLOR: #000000; BACKGROUND-COLOR: #f5f5f5&quot;&gt;select&lt;/SPAN&gt;&lt;SPAN style=&quot;COLOR: #000000; BACKGROUND-COLOR: #f5f5f5&quot;&gt;&quot;&lt;/SPAN&gt;&lt;SPAN style=&quot;COLOR: #000000; BACKGROUND-COLOR: #f5f5f5&quot;&gt;).value;&lt;/SPAN&gt;&lt;SPAN style=&quot;COLOR: #008000; BACKGROUND-COLOR: #f5f5f5&quot;&gt;//&lt;/SPAN&gt;&lt;SPAN style=&quot;COLOR: #008000; BACKGROUND-COLOR: #f5f5f5&quot;&gt;得到ID为select元素的值&lt;/SPAN&gt;&lt;SPAN style=&quot;COLOR: #008000; BACKGROUND-COLOR: #f5f5f5&quot;&gt;&lt;BR&gt;&lt;IMG src=&quot;http://www.cnblogs.com/images/OutliningIndicators/InBlock.gif&quot; align=top&gt;&lt;/SPAN&gt;&lt;SPAN style=&quot;http://www.wzms.net/COLOR: #000000; BACKGROUND-COLOR: #f5f5f5&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style=&quot;COLOR: #0000ff; BACKGROUND-COLOR: #f5f5f5&quot;&gt;var&lt;/SPAN&gt;&lt;SPAN style=&quot;COLOR: #000000; BACKGROUND-COLOR: #f5f5f5&quot;&gt;&amp;nbsp;mont&lt;/SPAN&gt;&lt;SPAN style=&quot;COLOR: #000000; BACKGROUND-COLOR: #f5f5f5&quot;&gt;=&lt;/SPAN&gt;&lt;SPAN style=&quot;COLOR: #000000; BACKGROUND-COLOR: #f5f5f5&quot;&gt;document.getElementById(&lt;/SPAN&gt;&lt;SPAN style=&quot;COLOR: #000000; BACKGROUND-COLOR: #f5f5f5&quot;&gt;&quot;&lt;/SPAN&gt;&lt;SPAN style=&quot;COLOR: #000000; BACKGROUND-COLOR: #f5f5f5&quot;&gt;select2&lt;/SPAN&gt;&lt;SPAN style=&quot;COLOR: #000000; BACKGROUND-COLOR: #f5f5f5&quot;&gt;&quot;&lt;/SPAN&gt;&lt;SPAN style=&quot;COLOR: #000000; BACKGROUND-COLOR: #f5f5f5&quot;&gt;).value;&lt;/SPAN&gt;&lt;SPAN style=&quot;COLOR: #008000; BACKGROUND-COLOR: #f5f5f5&quot;&gt;//&lt;/SPAN&gt;&lt;SPAN style=&quot;COLOR: #008000; BACKGROUND-COLOR: #f5f5f5&quot;&gt;同上&lt;/SPAN&gt;&lt;SPAN style=&quot;COLOR: #008000; BACKGROUND-COLOR: #f5f5f5&quot;&gt;&lt;BR&gt;&lt;IMG src=&quot;http://www.cnblogs.com/images/OutliningIndicators/InBlock.gif&quot; align=top&gt;&lt;/SPAN&gt;&lt;SPAN style=&quot;http://www.wzms.net/COLOR: #000000; BACKGROUND-COLOR: #f5f5f5&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;document.form1.action&lt;/SPAN&gt;&lt;SPAN style=&quot;COLOR: #000000; BACKGROUND-COLOR: #f5f5f5&quot;&gt;=&lt;/SPAN&gt;&lt;SPAN style=&quot;COLOR: #000000; BACKGROUND-COLOR: #f5f5f5&quot;&gt;acti;&lt;/SPAN&gt;&lt;SPAN style=&quot;COLOR: #008000; BACKGROUND-COLOR: #f5f5f5&quot;&gt;//&lt;/SPAN&gt;&lt;SPAN style=&quot;COLOR: #008000; BACKGROUND-COLOR: #f5f5f5&quot;&gt;设置值&lt;/SPAN&gt;&lt;SPAN style=&quot;COLOR: #008000; BACKGROUND-COLOR: #f5f5f5&quot;&gt;&lt;BR&gt;&lt;IMG src=&quot;http://www.cnblogs.com/images/OutliningIndicators/InBlock.gif&quot; align=top&gt;&lt;/SPAN&gt;&lt;SPAN style=&quot;http://www.wzms.net/COLOR: #000000; BACKGROUND-COLOR: #f5f5f5&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;document.form1.method&lt;/SPAN&gt;&lt;SPAN style=&quot;COLOR: #000000; BACKGROUND-COLOR: #f5f5f5&quot;&gt;=&lt;/SPAN&gt;&lt;SPAN style=&quot;COLOR: #000000; BACKGROUND-COLOR: #f5f5f5&quot;&gt;mont;&lt;/SPAN&gt;&lt;SPAN style=&quot;COLOR: #008000; BACKGROUND-COLOR: #f5f5f5&quot;&gt;//&lt;/SPAN&gt;&lt;SPAN style=&quot;COLOR: #008000; BACKGROUND-COLOR: #f5f5f5&quot;&gt;同上&lt;/SPAN&gt;&lt;SPAN style=&quot;COLOR: #008000; BACKGROUND-COLOR: #f5f5f5&quot;&gt;&lt;BR&gt;&lt;IMG src=&quot;http://www.cnblogs.com/images/OutliningIndicators/ExpandedSubBlockEnd.gif&quot; align=top&gt;&lt;/SPAN&gt;&lt;SPAN style=&quot;http://www.wzms.net/COLOR: #000000; BACKGROUND-COLOR: #f5f5f5&quot;&gt;}&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style=&quot;COLOR: #000000; BACKGROUND-COLOR: #f5f5f5&quot;&gt;&lt;BR&gt;&lt;IMG src=&quot;http://www.cnblogs.com/images/OutliningIndicators/InBlock.gif&quot; align=top&gt;&lt;/SPAN&gt;&lt;SPAN style=&quot;http://www.wzms.net/COLOR: #0000ff; BACKGROUND-COLOR: #f5f5f5&quot;&gt;function&lt;/SPAN&gt;&lt;SPAN style=&quot;COLOR: #000000; BACKGROUND-COLOR: #f5f5f5&quot;&gt;&amp;nbsp;bian()&lt;BR&gt;&lt;IMG id=Codehighlighter1_584_1025_Open_Image onclick=&quot;this.style.display='none'; Codehighlighter1_584_1025_Open_Text.style.display='none'; Codehighlighter1_584_1025_Closed_Image.style.display='inline'; Codehighlighter1_584_1025_Closed_Text.style.display='inline';&quot; src=&quot;http://www.cnblogs.com/images/OutliningIndicators/ExpandedSubBlockStart.gif&quot; align=top&gt;&lt;IMG id=Codehighlighter1_584_1025_Closed_Image style=&quot;http://www.wzms.net/DISPLAY: none&quot; onclick=&quot;this.style.display='none'; Codehighlighter1_584_1025_Closed_Text.style.display='none'; Codehighlighter1_584_1025_Open_Image.style.display='inline'; Codehighlighter1_584_1025_Open_Text.style.display='inline';&quot; src=&quot;http://www.cnblogs.com/images/OutliningIndicators/ContractedSubBlock.gif&quot; align=top&gt;&lt;/SPAN&gt;&lt;SPAN id=Codehighlighter1_584_1025_Closed_Text style=&quot;http://www.wzms.net/BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff&quot;&gt;&lt;IMG src=&quot;http://www.cnblogs.com/images/dot.gif&quot;&gt;&lt;/SPAN&gt;&lt;SPAN id=Codehighlighter1_584_1025_Open_Text&gt;&lt;SPAN style=&quot;http://www.wzms.net/COLOR: #000000; BACKGROUND-COLOR: #f5f5f5&quot;&gt;{&lt;BR&gt;&lt;IMG src=&quot;http://www.cnblogs.com/images/OutliningIndicators/InBlock.gif&quot; align=top&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style=&quot;http://www.wzms.net/COLOR: #0000ff; BACKGROUND-COLOR: #f5f5f5&quot;&gt;var&lt;/SPAN&gt;&lt;SPAN style=&quot;COLOR: #000000; BACKGROUND-COLOR: #f5f5f5&quot;&gt;&amp;nbsp;form&lt;/SPAN&gt;&lt;SPAN style=&quot;COLOR: #000000; BACKGROUND-COLOR: #f5f5f5&quot;&gt;=&lt;/SPAN&gt;&lt;SPAN style=&quot;COLOR: #000000; BACKGROUND-COLOR: #f5f5f5&quot;&gt;document.forms[&lt;/SPAN&gt;&lt;SPAN style=&quot;COLOR: #000000; BACKGROUND-COLOR: #f5f5f5&quot;&gt;1&lt;/SPAN&gt;&lt;SPAN style=&quot;COLOR: #000000; BACKGROUND-COLOR: #f5f5f5&quot;&gt;];&lt;/SPAN&gt;&lt;SPAN style=&quot;COLOR: #008000; BACKGROUND-COLOR: #f5f5f5&quot;&gt;//&lt;/SPAN&gt;&lt;SPAN style=&quot;COLOR: #008000; BACKGROUND-COLOR: #f5f5f5&quot;&gt;将当前页第二个表单赋给变量form，以便以后引用&lt;/SPAN&gt;&lt;SPAN style=&quot;COLOR: #008000; BACKGROUND-COLOR: #f5f5f5&quot;&gt;&lt;BR&gt;&lt;IMG src=&quot;http://www.cnblogs.com/images/OutliningIndicators/InBlock.gif&quot; align=top&gt;&lt;/SPAN&gt;&lt;SPAN style=&quot;http://www.wzms.net/COLOR: #000000; BACKGROUND-COLOR: #f5f5f5&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style=&quot;COLOR: #0000ff; BACKGROUND-COLOR: #f5f5f5&quot;&gt;for&lt;/SPAN&gt;&lt;SPAN style=&quot;COLOR: #000000; BACKGROUND-COLOR: #f5f5f5&quot;&gt;(&lt;/SPAN&gt;&lt;SPAN style=&quot;COLOR: #0000ff; BACKGROUND-COLOR: #f5f5f5&quot;&gt;var&lt;/SPAN&gt;&lt;SPAN style=&quot;COLOR: #000000; BACKGROUND-COLOR: #f5f5f5&quot;&gt;&amp;nbsp;i&lt;/SPAN&gt;&lt;SPAN style=&quot;COLOR: #000000; BACKGROUND-COLOR: #f5f5f5&quot;&gt;=&lt;/SPAN&gt;&lt;SPAN style=&quot;COLOR: #000000; BACKGROUND-COLOR: #f5f5f5&quot;&gt;0&lt;/SPAN&gt;&lt;SPAN style=&quot;COLOR: #000000; BACKGROUND-COLOR: #f5f5f5&quot;&gt;;i&lt;/SPAN&gt;&lt;SPAN style=&quot;COLOR: #000000; BACKGROUND-COLOR: #f5f5f5&quot;&gt;&amp;lt;&lt;/SPAN&gt;&lt;SPAN style=&quot;COLOR: #000000; BACKGROUND-COLOR: #f5f5f5&quot;&gt;form.elements.length;i&lt;/SPAN&gt;&lt;SPAN style=&quot;COLOR: #000000; BACKGROUND-COLOR: #f5f5f5&quot;&gt;++&lt;/SPAN&gt;&lt;SPAN style=&quot;COLOR: #000000; BACKGROUND-COLOR: #f5f5f5&quot;&gt;)&lt;/SPAN&gt;&lt;SPAN style=&quot;COLOR: #008000; BACKGROUND-COLOR: #f5f5f5&quot;&gt;//&lt;/SPAN&gt;&lt;SPAN style=&quot;COLOR: #008000; BACKGROUND-COLOR: #f5f5f5&quot;&gt;循环表单内的元素数组的最大项&lt;/SPAN&gt;&lt;SPAN style=&quot;COLOR: #008000; BACKGROUND-COLOR: #f5f5f5&quot;&gt;&lt;BR&gt;&lt;IMG id=Codehighlighter1_699_1023_Open_Image onclick=&quot;this.style.display='none'; Codehighlighter1_699_1023_Open_Text.style.display='none'; Codehighlighter1_699_1023_Closed_Image.style.display='inline'; Codehighlighter1_699_1023_Closed_Text.style.display='inline';&quot; src=&quot;http://www.cnblogs.com/images/OutliningIndicators/ExpandedSubBlockStart.gif&quot; align=top&gt;&lt;IMG id=Codehighlighter1_699_1023_Closed_Image style=&quot;http://www.wzms.net/DISPLAY: none&quot; onclick=&quot;this.style.display='none'; Codehighlighter1_699_1023_Closed_Text.style.display='none'; Codehighlighter1_699_1023_Open_Image.style.display='inline'; Codehighlighter1_699_1023_Open_Text.style.display='inline';&quot; src=&quot;http://www.cnblogs.com/images/OutliningIndicators/ContractedSubBlock.gif&quot; align=top&gt;&lt;/SPAN&gt;&lt;SPAN style=&quot;http://www.wzms.net/COLOR: #000000; BACKGROUND-COLOR: #f5f5f5&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN id=Codehighlighter1_699_1023_Closed_Text style=&quot;BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff&quot;&gt;&lt;IMG src=&quot;http://www.cnblogs.com/images/dot.gif&quot;&gt;&lt;/SPAN&gt;&lt;SPAN id=Codehighlighter1_699_1023_Open_Text&gt;&lt;SPAN style=&quot;http://www.wzms.net/COLOR: #000000; BACKGROUND-COLOR: #f5f5f5&quot;&gt;{&lt;BR&gt;&lt;IMG src=&quot;http://www.cnblogs.com/images/OutliningIndicators/InBlock.gif&quot; align=top&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style=&quot;http://www.wzms.net/COLOR: #0000ff; BACKGROUND-COLOR: #f5f5f5&quot;&gt;if&lt;/SPAN&gt;&lt;SPAN style=&quot;COLOR: #000000; BACKGROUND-COLOR: #f5f5f5&quot;&gt;(form.elements[i].type&lt;/SPAN&gt;&lt;SPAN style=&quot;COLOR: #000000; BACKGROUND-COLOR: #f5f5f5&quot;&gt;==&lt;/SPAN&gt;&lt;SPAN style=&quot;COLOR: #000000; BACKGROUND-COLOR: #f5f5f5&quot;&gt;&quot;&lt;/SPAN&gt;&lt;SPAN style=&quot;COLOR: #000000; BACKGROUND-COLOR: #f5f5f5&quot;&gt;text&lt;/SPAN&gt;&lt;SPAN style=&quot;COLOR: #000000; BACKGROUND-COLOR: #f5f5f5&quot;&gt;&quot;&lt;/SPAN&gt;&lt;SPAN style=&quot;COLOR: #000000; BACKGROUND-COLOR: #f5f5f5&quot;&gt;)&lt;/SPAN&gt;&lt;SPAN style=&quot;COLOR: #008000; BACKGROUND-COLOR: #f5f5f5&quot;&gt;//&lt;/SPAN&gt;&lt;SPAN style=&quot;COLOR: #008000; BACKGROUND-COLOR: #f5f5f5&quot;&gt;如果当前元素的类型是text&lt;/SPAN&gt;&lt;SPAN style=&quot;COLOR: #008000; BACKGROUND-COLOR: #f5f5f5&quot;&gt;&lt;BR&gt;&lt;IMG id=Codehighlighter1_755_806_Open_Image onclick=&quot;this.style.display='none'; Codehighlighter1_755_806_Open_Text.style.display='none'; Codehighlighter1_755_806_Closed_Image.style.display='inline'; Codehighlighter1_755_806_Closed_Text.style.display='inline';&quot; src=&quot;http://www.cnblogs.com/images/OutliningIndicators/ExpandedSubBlockStart.gif&quot; align=top&gt;&lt;IMG id=Codehighlighter1_755_806_Closed_Image style=&quot;http://www.wzms.net/DISPLAY: none&quot; onclick=&quot;this.style.display='none'; Codehighlighter1_755_806_Closed_Text.style.display='none'; Codehighlighter1_755_806_Open_Image.style.display='inline'; Codehighlighter1_755_806_Open_Text.style.display='inline';&quot; src=&quot;http://www.cnblogs.com/images/OutliningIndicators/ContractedSubBlock.gif&quot; align=top&gt;&lt;/SPAN&gt;&lt;SPAN style=&quot;http://www.wzms.net/COLOR: #000000; BACKGROUND-COLOR: #f5f5f5&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN id=Codehighlighter1_755_806_Closed_Text style=&quot;BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff&quot;&gt;&lt;IMG src=&quot;http://www.cnblogs.com/images/dot.gif&quot;&gt;&lt;/SPAN&gt;&lt;SPAN id=Codehighlighter1_755_806_Open_Text&gt;&lt;SPAN style=&quot;http://www.wzms.net/COLOR: #000000; BACKGROUND-COLOR: #f5f5f5&quot;&gt;{&lt;BR&gt;&lt;IMG src=&quot;http://www.cnblogs.com/images/OutliningIndicators/InBlock.gif&quot; align=top&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;form.elements[i].value&lt;/SPAN&gt;&lt;SPAN style=&quot;http://www.wzms.net/COLOR: #000000; BACKGROUND-COLOR: #f5f5f5&quot;&gt;=&lt;/SPAN&gt;&lt;SPAN style=&quot;COLOR: #000000; BACKGROUND-COLOR: #f5f5f5&quot;&gt;&quot;&lt;/SPAN&gt;&lt;SPAN style=&quot;COLOR: #000000; BACKGROUND-COLOR: #f5f5f5&quot;&gt;田洪川&lt;/SPAN&gt;&lt;SPAN style=&quot;COLOR: #000000; BACKGROUND-COLOR: #f5f5f5&quot;&gt;&quot;&lt;/SPAN&gt;&lt;SPAN style=&quot;COLOR: #000000; BACKGROUND-COLOR: #f5f5f5&quot;&gt;;&lt;/SPAN&gt;&lt;SPAN style=&quot;COLOR: #008000; BACKGROUND-COLOR: #f5f5f5&quot;&gt;//&lt;/SPAN&gt;&lt;SPAN style=&quot;COLOR: #008000; BACKGROUND-COLOR: #f5f5f5&quot;&gt;那就把他的值赋成&amp;nbsp;田洪川&lt;/SPAN&gt;&lt;SPAN style=&quot;COLOR: #008000; BACKGROUND-COLOR: #f5f5f5&quot;&gt;&lt;BR&gt;&lt;IMG src=&quot;http://www.cnblogs.com/images/OutliningIndicators/ExpandedSubBlockEnd.gif&quot; align=top&gt;&lt;/SPAN&gt;&lt;SPAN style=&quot;http://www.wzms.net/COLOR: #000000; BACKGROUND-COLOR: #f5f5f5&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style=&quot;COLOR: #000000; BACKGROUND-COLOR: #f5f5f5&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;BR&gt;&lt;IMG src=&quot;http://www.cnblogs.com/images/OutliningIndicators/InBlock.gif&quot; align=top&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style=&quot;http://www.wzms.net/COLOR: #0000ff; BACKGROUND-COLOR: #f5f5f5&quot;&gt;if&lt;/SPAN&gt;&lt;SPAN style=&quot;COLOR: #000000; BACKGROUND-COLOR: #f5f5f5&quot;&gt;(form.elements[i].type&lt;/SPAN&gt;&lt;SPAN style=&quot;COLOR: #000000; BACKGROUND-COLOR: #f5f5f5&quot;&gt;==&lt;/SPAN&gt;&lt;SPAN style=&quot;COLOR: #000000; BACKGROUND-COLOR: #f5f5f5&quot;&gt;&quot;&lt;/SPAN&gt;&lt;SPAN style=&quot;COLOR: #000000; BACKGROUND-COLOR: #f5f5f5&quot;&gt;checkbox&lt;/SPAN&gt;&lt;SPAN style=&quot;COLOR: #000000; BACKGROUND-COLOR: #f5f5f5&quot;&gt;&quot;&lt;/SPAN&gt;&lt;SPAN style=&quot;COLOR: #000000; BACKGROUND-COLOR: #f5f5f5&quot;&gt;)&lt;/SPAN&gt;&lt;SPAN style=&quot;COLOR: #008000; BACKGROUND-COLOR: #f5f5f5&quot;&gt;//&lt;/SPAN&gt;&lt;SPAN style=&quot;COLOR: #008000; BACKGROUN