<?xml version="1.0" encoding="GB2312"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/rss2full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" version="2.0">
    <channel>
        <title>小雨公馆</title>
        <link>http://www.nicoljiang.com/</link>
        <description>Nicol</description>
        <pubDate>,    :: +0800</pubDate>
        <generator>CoreCMS v0.1 Beta</generator>
        <language>cn</language>

        <atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" href="http://feeds.feedburner.com/nicol" type="application/rss+xml" /><item>
            <title>说说2008北京奥运会开幕式...</title>
            <link>http://feedproxy.google.com/~r/nicol/~3/DJQwt6tVOhQ/2740,00.shtml</link>
            <comments>http://www.nicoljiang.com/story/2008-08-09/2740,00.shtml#comments</comments>
            <pubDate>Sat, 09 Aug 2008 02:14:33 +0800</pubDate>
            <dc:creator>Nicol</dc:creator>
            <category>心情</category>
            <guid isPermaLink="false">
            </guid>
            <description />
            <content:encoded><![CDATA[<p>怀着激动的心情，坐在电视机旁，守着看这一届的开幕式~~</p>
<p>首先预祝开幕式圆满成功 <span style="font-size: medium"><b><span><span style="color: #ff0000">加上100分</span></span></b></span> ，下面是我的个人印象：</p>
<p>首先，那些建筑和灯光真的不错，当然烟花也很美。<span style="color: #ff0000">加10分</span></p>
<p>那个大脚印确实是有创意，很好~~ <b><span style="color: #ff0000">加20分</span></b></p>
<p>然后...就平淡下来了。看了直让人打瞌睡，我妈妈还睡了一觉~ <span style="color: #3366ff">减10分</span></p>
<p>其实在刚开始有几个场面，我都想听到合适的，好的配乐。包括一直期待的主题曲~ <span style="color: #3366ff">减10分</span></p>
<p>那个水墨画...虽然用舞蹈来画是很有心意啦，但你好事做到底吧，画张那么难看的画出来像什么？弄不好就规矩一点好了~~ <span style="color: #3366ff">减10分</span></p>
<p>还有活字印刷术...如果这个东西不好表达可以拜托你不用去表达了吗？那么勉强地表现~~你难过我也难受。 <span style="color: #3366ff">减10分</span></p>
<p>飞天，几个仙女在飞，现场效果估计不错 <span style="color: #ff0000">加10分</span></p>
<p>然后是丝绸之路，简直不知所谓。还是那句话表达不好就别表达了，弄得不伦不类的，把人家都当傻瓜呢 <span style="color: #3366ff">减10分</span></p>
<p>京剧......这个我最要说了，弄个国粹是不错，但整个人上去表演都嫌小了，还弄个木偶来做那种木讷的表演？真是气愤 <b><span style="color: #3366ff">减20分</span></b></p>
<p>太极~~不好意思，我个人意见：<span style="color: #3366ff">减10分</span></p>
<p>和平鸽？我还以为是吉他呢 <span style="color: #3366ff">减10分</span></p>
<p>环境，看着那些国际国内友人不停地扇扇子我真是痛心疾首啊 <b><span style="color: #3366ff">减20分</span></b></p>
<p>然后是主题曲，说实话真的伤了我的心。还好有莎拉布莱曼撑场，但还是要 <b><span style="color: #3366ff">减50分</span></b> 实在太失望。。。气死了（泪奔缅怀《Power Of Love》中...o(T.T)o...）</p>
<p>大火炬，那个还不错 <span style="color: #ff0000">加10分</span></p>
<p>还有其他七七八八什么亮点还不错 <b><span style="color: #ff0000">加20分</span></b></p>
<p>另外，这届开幕式的总导演是张艺谋...这个名字本身我就要减20分，所以很抱歉 再<span style="color: #3366ff"><b>减20分</b></span></p>
<p>我不想算总分，不忍心算~</p>
<blockquote>
<p>小结：老谋子的缺点，太依赖科技、效果，把一些重要的细节东西完全忽略掉了，整个开幕式没有重点，特色倒是有一个，那就是中国人&mdash;&mdash;真多。</p>
<p>现在的老谋子真的不是以前拍那些优秀电影的老谋子了；另外主题曲真是一大败笔，简直大煞风景。把这当慈善义演了还是小孩子的教育片了？</p>
</blockquote>
<p>自己的东西是要鼓励啦，但是那是对别人才说一些冠冕堂皇的话，对自己人，实话实说最好。盲目地赞扬呼害了他。</p>
<p>以上这些大家就当作是一个不爱国的人发的牢骚好了，伟大的爱国人士敬请无视~</p>
<p>PS：如果你理解我有多么想听到《Power Of Love》一样充满温暖和气势磅礴的歌曲时，你就不难理解我为啥在主题曲那里扣了50分。实在是一大败笔~别说传唱了，我现在立马就忘记了~</p>]]></content:encoded>
            <wfw:commentRss>http://www.nicoljiang.com/</wfw:commentRss>
        <feedburner:origLink>http://www.nicoljiang.com/story/2008-08-09/2740,00.shtml</feedburner:origLink></item>

        <item>
            <title>Vista Home家庭版中创建Administrator管理员账户</title>
            <link>http://feedproxy.google.com/~r/nicol/~3/BGQMfvwi8S4/2739,00.shtml</link>
            <comments>http://www.nicoljiang.com/story/2008-08-08/2739,00.shtml#comments</comments>
            <pubDate>Fri, 08 Aug 2008 18:49:11 +0800</pubDate>
            <dc:creator>Nicol</dc:creator>
            <category>学习</category>
            <guid isPermaLink="false">
            </guid>
            <description />
            <content:encoded><![CDATA[<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 很多软件的安装，也要涉及到文件夹管理权限的修改，都必须使用administrator超级管理员帐号,而vista家庭版中是不会显示这个帐号的,在网上找了很多资料后发现没有一个可以完全解决的方法，最后，网上一位叫yoga19的朋友，总结了各家方法归纳出完美解决方案：</p>
<p>　　1.让vista显示Administrator登陆名。vista默认状态下有Administrator身份却不能显示出来。需要打开注册表在HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\WindowsNT\CurrentVersion\Winlogon\下新建注册表项&ldquo;SpecialAccounts&rdquo;，再在其下新建子项 &ldquo;UserList&rdquo;，然后新建一个名为&ldquo;Administrator&rdquo;的DWORD(32位)值，将其数值改成&ldquo;1&rdquo;（该步骤是要vista认识Administrator身份）；</p>
<p>　　2.开始－》运行cmd，在DOS窗口下输入net user administrator&nbsp;&nbsp;&nbsp; /active:yes（注意：/前有两个空格！否则运行会提示错误命令；该步骤是激活administrator用户）；　（尝试了很多次都不成功，最后发现要开机按F8后进安全模式才能运行成功）</p>
<p>　　3.重启计算机或切换用户，这是应该能看到多出来了administrator用户，以administrator身份登陆；</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 4.使用了超级管理员帐户以后，不希望登陆时出现administrator用户，可以在使用administrator用户权限下在命令提示行里输入 net user administrator /active:no . 重新启动或切换用户就不会再出现administrator用户了。</p>]]></content:encoded>
            <wfw:commentRss>http://www.nicoljiang.com/</wfw:commentRss>
        <feedburner:origLink>http://www.nicoljiang.com/story/2008-08-08/2739,00.shtml</feedburner:origLink></item>

        <item>
            <title>又好久没更新博客了，最近在忙啥</title>
            <link>http://feedproxy.google.com/~r/nicol/~3/pJR9YUjyqqY/2738,00.shtml</link>
            <comments>http://www.nicoljiang.com/story/2008-08-07/2738,00.shtml#comments</comments>
            <pubDate>Thu, 07 Aug 2008 15:49:13 +0800</pubDate>
            <dc:creator>Nicol</dc:creator>
            <category>生活</category>
            <guid isPermaLink="false">
            </guid>
            <description />
            <content:encoded><![CDATA[<p>最近在对我以往ASP的所学做一个象征性的总结。</p>
<p>自从开发了CoreCMS之后，做内容发布型的网站变得非常简单，因为这个系统简单灵活，最主要是符合自己的习惯。</p>
<p>但是后来想想，如果我要做一个动态网站，这个CMS就会显得力不从心了。因为基于它还需要修改很多东西才能形成一个通用的动态网站程序。</p>
<p>然后就准备着手把它修改成另一套程序，一个通用的动态网站框架。</p>
<p>怎奈CoreCMS的代码当时设计的时候就完全没考虑到这种需求，所以改动比较大，还不如重做一个呢。</p>
<p>于是决定弄一个框架（FrameWork）出来，暂时就取名做Core FrameWork好了。</p>
<p>这个框架会把一切都规范简化好，例如response.write可以用System.Rw代替，Response.write:Response.end则用System.Rwx代替就可以了。</p>
<p>另外会重写一下模板引擎，让它变得更高效更通用。</p>
<p>然后还会引进一个叫ORM的新东西。这个东西将集成IO类和代码生成器最大程度地解放程序对数据库内容的增加、修改、展示。</p>
<p>这个框架会尽量挖掘OOP的长处但绝不滥用OOP。</p>
<p>目前用VBScript实现，等稳定版发布之后，我会以JScript再重写一次，这样可以离OOP的实用更进一步了，例如函数的重载、更完善的错误机制等。</p>
<p>目前已经实现的模块有System类、IO类、Data类、正则应用类、Cache类、StringBuilder类、String类。</p>
<p>正在开发的有Proxy类：跟一般的小偷不一样，本类将尽量遵循HTTP 1.0协议来传输转发内容和协议信息，不仅具备基本的（标准）内码识别功能，还可以智能转化HTML、CSS、部分JavaScript内的地址，使得代理更加透明化。</p>
<p>还有HTTP类，当中有一个识别远程主机是否正常工作的函数，还有一个下载远程文件的函数，例如下载远程图片，传统的下载远程图片函数只能识别HTTP开头的图片，对&quot;../&quot;、&quot;/&quot;等开头的图片、文件地址无法识别和自动转换。</p>
<p>另外就是ORM类了，这个类只是一个核心类，不能单独起作用，必须配合数据库和代码生成器使用，代码生成器还未开发。</p>
<p>今天总结到这，详情以后再说~</p>]]></content:encoded>
            <wfw:commentRss>http://www.nicoljiang.com/</wfw:commentRss>
        <feedburner:origLink>http://www.nicoljiang.com/story/2008-08-07/2738,00.shtml</feedburner:origLink></item>

        <item>
            <title>纯白 - 新剪（折）纸艺术，让你叫绝的A4纸</title>
            <link>http://feedproxy.google.com/~r/nicol/~3/FFHesgDbsUU/2737,00.shtml</link>
            <comments>http://www.nicoljiang.com/story/2008-08-06/2737,00.shtml#comments</comments>
            <pubDate>Wed, 06 Aug 2008 19:47:28 +0800</pubDate>
            <dc:creator>Nicol</dc:creator>
            <category>休闲</category>
            <guid isPermaLink="false">
            </guid>
            <description />
            <content:encoded><![CDATA[<p align="center"><img alt="" border="0" src="http://images.duoky.com/corecms/2008-8-6/RE200808062006RD167274NM3054203.jpg" /></p>
<p><br />
&nbsp;</p>
<p align="center"><img alt="" border="0" src="http://images.duoky.com/corecms/2008-8-6/RE200808062006RD317041NM3054208.jpg" /></p>
<p>
&nbsp;</p><p>
&nbsp;</p>
<p align="center"><img alt="" border="0" src="http://images.duoky.com/corecms/2008-8-6/RE200808062006RD962719NM3054213.jpg" /></p>
<p>
&nbsp;</p>
<p align="center"><img alt="" border="0" src="http://images.duoky.com/corecms/2008-8-6/RE200808062006RD896450NM3054215.jpg" /></p>
<p>
&nbsp;</p>
<p align="center"><img alt="" border="0" src="http://images.duoky.com/corecms/2008-8-6/RE200808062006RD643939NM3054217.jpg" /></p>
<p>
<br />
&nbsp;</p>
<p align="center"><img alt="" border="0" src="http://images.duoky.com/corecms/2008-8-6/RE200808062006RD962198NM3054220.jpg" /></p>
<p>

&nbsp;</p>
<p align="center"><img alt="" border="0" src="http://images.duoky.com/corecms/2008-8-6/RE200808062006RD668400NM3054222.jpg" /></p>
<p>
<br />
&nbsp;</p>
<p align="center"><img alt="" border="0" src="http://images.duoky.com/corecms/2008-8-6/RE200808062006RD847410NM3054223.jpg" /></p>
<p>
<br />
&nbsp;</p>
<p align="center"><img alt="" border="0" src="http://images.duoky.com/corecms/2008-8-6/RE200808062006RD127444NM3054417.jpg" /></p>
<p>

&nbsp;</p>
<p align="center"><img alt="" border="0" src="http://images.duoky.com/corecms/2008-8-6/RE200808062006RD487343NM3054415.jpg" /></p>]]></content:encoded>
            <wfw:commentRss>http://www.nicoljiang.com/</wfw:commentRss>
        <feedburner:origLink>http://www.nicoljiang.com/story/2008-08-06/2737,00.shtml</feedburner:origLink></item>

        <item>
            <title>人狮拥抱视频网络热播 旧日玩伴野外重逢</title>
            <link>http://feedproxy.google.com/~r/nicol/~3/DqkDg4YpaSc/2736,00.shtml</link>
            <comments>http://www.nicoljiang.com/story/2008-07-28/2736,00.shtml#comments</comments>
            <pubDate>Mon, 28 Jul 2008 14:39:19 +0800</pubDate>
            <dc:creator>Nicol</dc:creator>
            <category>心情</category>
            <guid isPermaLink="false">
            </guid>
            <description />
            <content:encoded><![CDATA[<p><span style="font-weight: bold">　　著名视频共享网站YouTube上一段人狮拥抱的视频现正&ldquo;热播&rdquo;。视频中,一头成年雄师与两名年轻人相见后,不但没有发动攻击,还与两人如老友般拥抱。</span><br />
　　这头名为&ldquo;克里斯蒂安&rdquo;的狮子曾被两名住在英国的年轻人饲养,后被放归肯尼亚野生动物保护区。这段视频截取了两人与幼狮玩耍的几组画面,但主要内容是双方 在保护区重逢时的场景。这段彩色视频没有声音,制作者借助字幕讲述故事。英国《星期日泰晤士报》27日评论说,虽然视频截取自拍摄于30多年前的录像,但 人与猛兽之间深厚的情谊如今仍打动着世人,迄今网络点击率超过600万次。</p>
<p style="text-align: center"><object width="425" height="344"><param name="movie" value="http://www.youtube.com/v/adYbFQFXG0U&hl=en&fs=1"></param><param name="allowFullScreen" value="true"></param><embed src="http://www.youtube.com/v/adYbFQFXG0U&hl=en&fs=1" type="application/x-shockwave-flash" allowfullscreen="true" width="425" height="344"></embed></object></p>
<p>　　<span style="font-weight: bold">玩伴</span><br />
<br />
　　视频中的两名年轻人是澳大利亚人约翰&middot;伦德尔和安东尼&middot;伯克。1969年,两人在英国伦敦西部切尔西区一个家具店工作,并住在家具店楼下。<br />
<br />
　　一天,一个朋友从哈罗德百货公司购物归来后告诉他们,那里可以买到罕见的动物。出于好奇,伦德尔和伯克到哈罗德一探究竟,看到一头被关在一个小笼子里的幼狮。<br />
<br />
　　这头当时体重不足16公斤的幼狮出生于一个动物园,后被卖给百货公司。伦德尔和伯克觉得它可怜,用250个英国旧金币买下它,并给它取名&ldquo;克里斯蒂安&rdquo;。<br />
<br />
　　伦德尔和伯克把&ldquo;克里斯蒂安&rdquo;当作宠物饲养,经常与它一起嬉戏,一起在公园里玩足球,有时还带它出入餐馆。乘车出远门时,&ldquo;克里斯蒂安&rdquo;就被主人安置在他们那辆&ldquo;宾利&rdquo;车的后座上。这个奇异的组合成了切尔西区一道独特的风景。</p><p><span style="font-weight: bold">　　放归</span><br />
<br />
　　大约一年后,&ldquo;克里斯蒂安&rdquo;长成了体重84公斤的大家伙。仅一周的伙食费,伦德尔和伯克就要为它花掉30英镑。两人逐渐意识到,无法继续把&ldquo;克里斯蒂安&rdquo;养在家里,但又不知如何处置它。<br />
<br />
　　凑巧的是,一天,演员夫妻比尔&middot;特拉弗斯和弗吉尼娅&middot;麦克纳到家具店挑选一张写字台。他们刚刚完成影片《狮子与我》的拍摄。《狮子与我》根据动物学家乔伊&middot;亚当森的著作改编而成,　　讲述的是母狮&ldquo;埃尔莎&rdquo;被放归自然的真实故事。特拉弗斯和麦克纳在片中分别扮演动物学家夫妻乔治&middot;亚当森和乔伊&middot;亚当森。两位演员建议伦德尔和伯克与在肯尼亚的乔治取得联系。<br />
<br />
　　于是,两人带着18个月大的&ldquo;克里斯蒂安&rdquo;抵达肯尼亚。在那里的野生动物保护区,他们与乔治一同努力,逐步帮助&ldquo;克里斯蒂安&rdquo;恢复狮子的自然习性。当伦德尔和伯克确认&ldquo;克里斯蒂安&rdquo;已经能够在野外独立生存并拥有安全的活动空间后,就离开肯尼亚回到了英国。<br />
<br />
　　不过,他们一直与乔治保持联系,后来又数次重返肯尼亚,在野生动物保护区里远远地眺望&ldquo;克里斯蒂安&rdquo;的身影,以寄托思念之情。<br />
<br />
<span style="font-weight: bold">　　重逢</span><br style="font-weight: bold" />
<br />
　　1974年,乔治一度有3个月无法追踪到&ldquo;克里斯蒂安&rdquo;的踪迹。他把这一情况告知伦德尔和伯克后,两人决定重返肯尼亚,与&ldquo;克里斯蒂安&rdquo;作最后的告别。<br />
<br />
　　就在两人抵达野生动物保护区的前一天晚上,乔治告诉他们,&ldquo;克里斯蒂安&rdquo;再度现身。它蹲在乔治帐篷外的岩石上,好像在等待老朋友的到来。但他同时警告说,要与&ldquo;克里斯蒂安&rdquo;保持一定距离,因为它已完全回复野生状态,如果野性大发,可能会把他们撕碎。<br />
<br />
　　第二天,伦德尔和伯克到达野生动物保护区,站在丛林外面等待&ldquo;克里斯蒂安&rdquo;。视频显示,两人身着牛仔裤,头发蓬松。&ldquo;克里斯蒂安&rdquo;在远处出现后,先是慢慢向他们走近,然后应该是认出了他们,于是加快速度,几乎是奔向两位前主人。&ldquo;克里斯蒂安&rdquo;把前爪搭在伦德尔肩上,像幼时一样用舌头舔他的脸颊。伦德尔也张开双臂拥抱&ldquo;克里斯蒂安&rdquo;。双方的激动显而易见。<br />
<br />
　　与&ldquo;克里斯蒂安&rdquo;同行的还有一头母狮。但母狮似乎对&ldquo;克里斯蒂安&rdquo;与两条腿的朋友关系亲密有点嫉妒。这时,乔治提醒两人是时候离开了。他们向露营的帐篷走去,&ldquo;克里斯蒂安&rdquo;一直跟随,并在帐篷外一直待到晚上其他人回帐篷。<br />
<br />
　　重逢的第二天,&ldquo;克里斯蒂安&rdquo;返回丛林。在丛林的边缘,那头母狮在等它。但从那以后,人们再也没有看到过&ldquo;克里斯蒂安&rdquo;的身影。<br />
<br />
　　如今住在澳大利亚的伦德尔说,他不知道谁把这段录像放到了互联网上,不过他并不介意。美国微软&mdash;全国广播网26日援引他的话报道:&ldquo;这是个充满了爱的故事,看到人们对它充满兴趣,我们很高兴。&rdquo;伦德尔希望借此让更多人关注野生动物保护问题。</p>]]></content:encoded>
            <wfw:commentRss>http://www.nicoljiang.com/</wfw:commentRss>
        <feedburner:origLink>http://www.nicoljiang.com/story/2008-07-28/2736,00.shtml</feedburner:origLink></item>

        <item>
            <title>JS效果收集</title>
            <link>http://feedproxy.google.com/~r/nicol/~3/BNPWuL1_ZZM/2735,00.shtml</link>
            <comments>http://www.nicoljiang.com/story/2008-07-21/2735,00.shtml#comments</comments>
            <pubDate>Mon, 21 Jul 2008 19:35:42 +0800</pubDate>
            <dc:creator>Nicol</dc:creator>
            <category>学习</category>
            <guid isPermaLink="false">
            </guid>
            <description />
            <content:encoded><![CDATA[<p>1、来自<a target="_blank" href="http://go.duoky.com/rd/bbs.blueidea.com/thread-2854531-1-3.html">蓝色理想论坛</a>，仿51job中选城市的效果，可以用来做Tags。</p>
<p><textarea rows="15" cols="80" name="runcode0">&lt;!DOCTYPE html PUBLIC &quot;-//W3C//DTD XHTML 1.0 Transitional//EN&quot; &quot;http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd&quot;&gt;
&lt;html xmlns=&quot;http://www.w3.org/1999/xhtml&quot;&gt;
&lt;head&gt;
&lt;meta http-equiv=&quot;Content-Type&quot; content=&quot;text/html; charset=gb2312&quot; /&gt;
&lt;title&gt;无标题文档&lt;/title&gt;
&lt;style type=&quot;text/css&quot;&gt;
&lt;!--
body{padding-top:50px;font-size:12px;}
h2{margin:0px;padding:0px;font-size:12px;font-weight:bold;}
.bton{border:1px solid #CCC;background:#DDD;}
.cont{padding:10px;}
#main{width:400px;margin:0px auto;}
#selectItem{background:#FFF;position:absolute;top:0px;left:center;border:1px solid #000;overflow:hidden;margin-top:10px;width:400px;z-index:2;}
#preview{margin:1px;border:1px solid #CCC;}
#result{border:1px solid #CCC;margin-top:10px;}
.tit{line-height:20px;height:20px;margin:1px;padding-left:10px;}
.bgc_ccc{background:#CCC;}
.bgc_eee{background:#eee;}
.c_999{color:#999}
.pointer{cursor:pointer;}
.left{float:left;}
.right{float:right;}
.cls{clear:both;font-size:0px;height:0px;overflow:hidden;}
#bg{background:#CCC;filter:alpha(opacity=70);opacity:0.7;width:100%;;position:absolute;left:0px;top:0px;display:none;z-index:1;}
.hidden{display:none;}
.move{cursor:move;}
--&gt;
&lt;/style&gt;
&lt;/head&gt;
&lt;body&gt;
&lt;div id=&quot;main&quot;&gt;
&lt;input name=&quot;button&quot; type=&quot;button&quot; class=&quot;bton pointer&quot; value=&quot;请选择&quot; onclick=&quot;openBg(1);openSelect(1)&quot;/&gt;
&lt;div id=&quot;result&quot;&gt;
&lt;div class=&quot;tit bgc_eee&quot;&gt;
&lt;h2&gt;您已选择的城市汇总&lt;/h2&gt;
&lt;/div&gt;
&lt;div class=&quot;cont&quot; id=&quot;makeSureItem&quot;&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div id=&quot;bg&quot;&gt;
&lt;/div&gt;
&lt;div id=&quot;selectItem&quot; class=&quot;hidden&quot;&gt;
&lt;div class=&quot;tit bgc_ccc move&quot; onmousedown=&quot;drag(event,this)&quot;&gt;
&lt;h2 class=&quot;left&quot;&gt;请选择城市&lt;/h2&gt;
&lt;span class=&quot;pointer right&quot; onclick=&quot;openBg(0);openSelect(0);&quot;&gt;[取消]&lt;/span&gt;
&lt;span class=&quot;pointer right&quot; onclick=&quot;makeSure();&quot;&gt;[确定]&lt;/span&gt;
&lt;/div&gt;
&lt;div class=&quot;cls&quot;&gt;&lt;/div&gt;
&lt;div class=&quot;cont&quot;&gt;
&lt;div id=&quot;selectSub&quot;&gt;
&lt;select name=&quot;&quot; onchange=&quot;showSelect(this.value)&quot; style=&quot;margin-bottom:10px;&quot;&gt;
&lt;option value=&quot;0&quot;&gt;第0层&lt;/option&gt;
&lt;option value=&quot;1&quot;&gt;第1层&lt;/option&gt;
&lt;option value=&quot;2&quot;&gt;第2层&lt;/option&gt;
&lt;option value=&quot;3&quot;&gt;第3层&lt;/option&gt;
&lt;/select&gt;
&lt;div id=&quot;c00&quot;&gt;
&lt;input type=&quot;checkbox&quot; name=&quot;ck00&quot; onclick=&quot;addPreItem()&quot; value=&quot;北京&quot;/&gt;北京
&lt;input type=&quot;checkbox&quot; name=&quot;ck00&quot; onclick=&quot;addPreItem()&quot; value=&quot;福建&quot;/&gt;福建
&lt;input type=&quot;checkbox&quot; name=&quot;ck00&quot; onclick=&quot;addPreItem()&quot; value=&quot;四川&quot;/&gt;四川
&lt;input type=&quot;checkbox&quot; name=&quot;ck00&quot; onclick=&quot;addPreItem()&quot; value=&quot;江苏&quot;/&gt;江苏
&lt;/div&gt;
&lt;div id=&quot;c01&quot;&gt;
&lt;input type=&quot;checkbox&quot; name=&quot;ck01&quot; onclick=&quot;addPreItem()&quot; value=&quot;上海&quot;/&gt;上海
&lt;input type=&quot;checkbox&quot; name=&quot;ck01&quot; onclick=&quot;addPreItem()&quot; value=&quot;云南&quot;/&gt;云南
&lt;input type=&quot;checkbox&quot; name=&quot;ck01&quot; onclick=&quot;addPreItem()&quot; value=&quot;贵州&quot;/&gt;贵州
&lt;/div&gt;
&lt;div id=&quot;c02&quot;&gt;
&lt;input type=&quot;checkbox&quot; name=&quot;ck01&quot; onclick=&quot;addPreItem()&quot; value=&quot;黑龙江&quot;/&gt;黑龙江
&lt;input type=&quot;checkbox&quot; name=&quot;ck01&quot; onclick=&quot;addPreItem()&quot; value=&quot;吉林&quot;/&gt;吉林
&lt;input type=&quot;checkbox&quot; name=&quot;ck01&quot; onclick=&quot;addPreItem()&quot; value=&quot;辽宁&quot;/&gt;辽宁
&lt;/div&gt;
&lt;div id=&quot;c03&quot;&gt;
&lt;input type=&quot;checkbox&quot; name=&quot;ck01&quot; onclick=&quot;addPreItem()&quot; value=&quot;美国&quot;/&gt;美国
&lt;input type=&quot;checkbox&quot; name=&quot;ck01&quot; onclick=&quot;addPreItem()&quot; value=&quot;阿富汗&quot;/&gt;阿富汗
&lt;input type=&quot;checkbox&quot; name=&quot;ck01&quot; onclick=&quot;addPreItem()&quot; value=&quot;日本&quot;/&gt;日本
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div id=&quot;preview&quot;&gt;
&lt;div class=&quot;tit bgc_eee c_999&quot;&gt;
&lt;h2&gt;您已选择的城市&lt;/h2&gt;
&lt;/div&gt;
&lt;div class=&quot;cont&quot; id=&quot;previewItem&quot;&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;script type=&quot;text/javascript&quot;&gt;
/* ------使用说明----- */
/*
添加城市方法：
添加组：找到id 是 &quot;selectSub&quot;中select标签下，添加option标签 value属性递增，找到 id 是 &quot;selectSub&quot;,按照原有格式添加div,其id属性递增
添加二级傅选矿选项
复制 id 是 &quot;selectSub&quot; 下任意input标签，粘贴在需要添加的位置。
*/
var grow = $(&quot;selectSub&quot;).getElementsByTagName(&quot;option&quot;).length; //组数
var showGrow = 0;//已打开组
var selectCount = 0; //已选数量
showSelect(showGrow);
var items = $(&quot;selectSub&quot;).getElementsByTagName(&quot;input&quot;);
//alert(maxItem);
//var lenMax = 2;
//alert(1);
function $(o){ //获取对象
if(typeof(o) == &quot;string&quot;)
return document.getElementById(o);
return o;
}
function openBg(state){ //遮照打开关闭控制
if(state == 1)
{
$(&quot;bg&quot;).style.display = &quot;block&quot;;
var h = document.body.offsetHeight &gt; document.documentElement.offsetHeight ? document.body.offsetHeight : document.documentElement.offsetHeight;
//alert(document.body.offsetHeight);
//alert(document.documentElement.offsetHeight);
$(&quot;bg&quot;).style.height = h + &quot;px&quot;;
}
else
{
$(&quot;bg&quot;).style.display = &quot;none&quot;;
}
}
function openSelect(state){ //选择城市层关闭打开控制
if(state == 1)
{
$(&quot;selectItem&quot;).style.display = &quot;block&quot;;
$(&quot;selectItem&quot;).style.left = ($(&quot;bg&quot;).offsetWidth - $(&quot;selectItem&quot;).offsetWidth)/2 + &quot;px&quot;;
$(&quot;selectItem&quot;).style.top = document.body.scrollTop + 100 + &quot;px&quot;;
}
else
{
$(&quot;selectItem&quot;).style.display = &quot;none&quot;;
}
}
function showSelect(id){
for(var i = 0 ; i &lt; grow ;i++)
{
$(&quot;c0&quot; + i).style.display = &quot;none&quot;;
}
$(&quot;c0&quot; + id).style.display = &quot;block&quot;;
showGrow = id;
}
function open(id,state){ //显示隐藏控制
if(state == 1)
$(id).style.display = &quot;block&quot;;
$(id).style.diaplay = &quot;none&quot;;
}
function addPreItem(){
$(&quot;previewItem&quot;).innerHTML = &quot;&quot;;
var len　= 0 ;
for(var i = 0 ; i &lt; items.length ; i++)
{
if(items[i].checked == true)
{
//len++;
//if(len &gt; lenMax)
//{
//	alert(&quot;不能超过&quot; + lenMax +&quot;个选项！&quot;)
//	return false;
//}
var mes = &quot;&lt;input type='checkbox' checked='true' value='&quot;+ items[i].value +&quot;' onclick='copyItem(\&quot;previewItem\&quot;,\&quot;previewItem\&quot;);same(this);'&gt;&quot; + items[i].value;
$(&quot;previewItem&quot;).innerHTML += mes;
//alert(items[i].value);
}
}
}
function makeSure(){
//alert(1);
//$(&quot;makeSureItem&quot;).innerHTML = $(&quot;previewItem&quot;).innerHTML;
openBg(0);
openSelect(0);
copyItem(&quot;previewItem&quot;,&quot;makeSureItem&quot;)
}
function copyHTML(id1,id2){
$(id2).innerHTML = $(&quot;id1&quot;).innerHTML;
}
function copyItem(id1,id2){
var mes = &quot;&quot;;
var items2 = $(id1).getElementsByTagName(&quot;input&quot;);
for(var i = 0 ; i &lt; items2.length ; i++)
{
if(items2[i].checked == true)
{
mes += &quot;&lt;input type='checkbox' checked='true' value='&quot;+ items2[i].value +&quot;' onclick='copyItem(\&quot;&quot; + id2+ &quot;\&quot;,\&quot;&quot;+ id1 +&quot;\&quot;);same(this);'&gt;&quot; + items2[i].value;
}
}
$(id2).innerHTML = &quot;&quot;;
$(id2).innerHTML += mes;
//alert($(id2).innerHTML);
}
function same(ck){
for(var i = 0 ; i &lt; items.length ; i++)
{
if(ck.value == items[i].value)
{
items[i].checked = ck.checked;
}
}
}
/* 鼠标拖动 */
var oDrag = &quot;&quot;;
var ox,oy,nx,ny,dy,dx;
function drag(e,o){
var e = e ? e : event;
var mouseD = document.all ? 1 : 0;
if(e.button == mouseD)
{
oDrag = o.parentNode;
//alert(oDrag.id);
ox = e.clientX;
oy = e.clientY;
}
}
function dragPro(e){
if(oDrag != &quot;&quot;)
{
var e = e ? e : event;
//$(oDrag).style.left = $(oDrag).offsetLeft + &quot;px&quot;;
//$(oDrag).style.top = $(oDrag).offsetTop + &quot;px&quot;;
dx = parseInt($(oDrag).style.left);
dy = parseInt($(oDrag).style.top);
//dx = $(oDrag).offsetLeft;
//dy = $(oDrag).offsetTop;
nx = e.clientX;
ny = e.clientY;
$(oDrag).style.left = (dx + ( nx - ox )) + &quot;px&quot;;
$(oDrag).style.top = (dy + ( ny - oy )) + &quot;px&quot;;
ox = nx;
oy = ny;
}
}
document.onmouseup = function(){oDrag = &quot;&quot;;}
document.onmousemove = function(event){dragPro(event);}
&lt;/script&gt;
&lt;/body&gt;
&lt;/html&gt;
</textarea><br />
<input style="border-right: #494d74 1px solid; border-top: #b1b4cd 1px solid; background: #696d81; border-left: #b1b4cd 1px solid; color: #ffffff; border-bottom: #494d74 1px solid" type="button" onclick="runCode(runcode0)" value="运行代码" /> <input style="border-right: #494d74 1px solid; border-top: #b1b4cd 1px solid; background: #696d81; border-left: #b1b4cd 1px solid; color: #ffffff; border-bottom: #494d74 1px solid" type="button" onclick="copycode(runcode0)" value="复制代码" /> <input style="border-right: #494d74 1px solid; border-top: #b1b4cd 1px solid; background: #696d81; border-left: #b1b4cd 1px solid; color: #ffffff; border-bottom: #494d74 1px solid" type="button" onclick="saveCode(runcode0)" value="另存代码" /></p>]]></content:encoded>
            <wfw:commentRss>http://www.nicoljiang.com/</wfw:commentRss>
        <feedburner:origLink>http://www.nicoljiang.com/story/2008-07-21/2735,00.shtml</feedburner:origLink></item>

        <item>
            <title>国外JavaScript经典封装</title>
            <link>http://feedproxy.google.com/~r/nicol/~3/eeG5-LC45ws/thread-2746795-1-1.html</link>
            <comments>http://bbs.blueidea.com/thread-2746795-1-1.html#comments</comments>
            <pubDate>Mon, 21 Jul 2008 17:37:17 +0800</pubDate>
            <dc:creator>Nicol</dc:creator>
            <category>学习</category>
            <guid isPermaLink="false">
            </guid>
            <description />
            <content:encoded><![CDATA[<p>内容包括：多样化摺叠菜单、CSS圆角边框、模拟视窗、用JavaScript模仿各种作业系统的选项卡、最佳化多样式Windows等</p>
<p>这些东西都是Java Script大部分都是由老外写的，并且封装得很好，在运用上也很方便，而且也都兼容FF与OPERA，档案中少部分是由中国的高手写的。</p>]]></content:encoded>
            <wfw:commentRss>http://www.nicoljiang.com/</wfw:commentRss>
        <feedburner:origLink>http://bbs.blueidea.com/thread-2746795-1-1.html</feedburner:origLink></item>

        <item>
            <title>缩略图边框装饰CSS代码</title>
            <link>http://feedproxy.google.com/~r/nicol/~3/oDk6quT_eBE/2733,00.shtml</link>
            <comments>http://www.nicoljiang.com/story/2008-07-18/2733,00.shtml#comments</comments>
            <pubDate>Fri, 18 Jul 2008 18:53:10 +0800</pubDate>
            <dc:creator>Nicol</dc:creator>
            <category>学习</category>
            <guid isPermaLink="false">
            </guid>
            <description />
            <content:encoded><![CDATA[<p style="text-align: center"><a title="缩略图边框装饰CSS代码" target="_blank" href="http://images.duoky.com/corecms/2008-7-18/RE200807181955RD307006NM33_b.jpg"><img alt="" border="0" src="http://images.duoky.com/corecms/2008-7-18/RE200807181955RD307006NM33_b.jpg&amp;w=500" /></a></p><ul>
    <li>演示：<a target="_blank" href="http://go.duoky.com/rd/labs.nicoljiang.com/preview/code/缩略图边框装饰CSS代码/">http://labs.nicoljiang.com/preview/code/缩略图边框装饰CSS代码/</a></li>
    <li>来源：<a target="_blank" href="http://go.duoky.com/rd/www.webdesignerwall.com/tutorials/css-decorative-gallery/">http://www.webdesignerwall.com/</a></li>
    <li>站酷下载：<a href="http://downcnidc.zcool.com.cn/code/css/33_decorative_gallery_zcool.com.cn.rar">http://downcnidc.zcool.com.cn/code/css/33_decorative_gallery_zcool.com.cn.rar</a></li>
</ul>]]></content:encoded>
            <wfw:commentRss>http://www.nicoljiang.com/</wfw:commentRss>
        <feedburner:origLink>http://www.nicoljiang.com/story/2008-07-18/2733,00.shtml</feedburner:origLink></item>

        <item>
            <title>ASP无组件上传的原理</title>
            <link>http://feedproxy.google.com/~r/nicol/~3/Fi3hqpPtEiM/2732,00.shtml</link>
            <comments>http://www.nicoljiang.com/story/2008-07-16/2732,00.shtml#comments</comments>
            <pubDate>Wed, 16 Jul 2008 19:25:01 +0800</pubDate>
            <dc:creator>Nicol</dc:creator>
            <category>学习</category>
            <guid isPermaLink="false">
            </guid>
            <description />
            <content:encoded><![CDATA[<p>出处:宝玉BLOG</p>
<p>一、无组件上传的原理<br />
　　我还是一点一点用一个实例来说明的吧，客户端HTML如下。要浏览上传附件，我们通过&lt;input type=&quot;file&quot;&gt;元素，但是一定要注意必须设置form的enctype属性为&quot;multipart/form-data&quot;：</p><blockquote>
<p>&lt;form method=&quot;post&quot; action=&quot;upload.asp&quot; enctype=&quot;multipart/form-data&quot;&gt;<br />
&nbsp;&lt;label&gt;<br />
&nbsp; &lt;input type=&quot;file&quot; name=&quot;file1&quot; /&gt;<br />
&nbsp;&lt;/label&gt;<br />
&nbsp;&lt;br /&gt;<br />
&nbsp;&lt;input type=&quot;text&quot; name=&quot;filename&quot; value=&quot;default filename&quot;/&gt;<br />
&nbsp;&lt;br /&gt;<br />
&nbsp;&lt;input type=&quot;submit&quot; value=&quot;Submit&quot;/&gt;<br />
&nbsp;&lt;input type=&quot;reset&quot; value=&quot;Reset&quot;/&gt;<br />
&lt;/form&gt;</p>
</blockquote>
<p>　　在后台asp程序中，以前获取表单提交的ASCII 数据，非常的容易。但是如果需要获取上传的文件，就必须使用Request对象的BinaryRead方法来读取。BinaryRead方法是对当前输入流进行指定字节数的二进制读取，有点需要注意的是，一旦使用BinaryRead 方法后，再也不能使用Request.Form 或 Request.QueryString 集合了。结合Request对象的TotalBytes属性，可以将所有表单提交的数据全部变成二进制，不过这些数据都是经过编码的。首先让我们来看看这些数据是如何编码的，有无什么规律可循，编段代码，在代码中我们将BinaryRead读取的二进制转化为文本，输出出来，在后台的upload.asp中（注意该示例不要上传大文件，否则可能会造成浏览器死掉）：</p>
<blockquote>
<p>&lt;%<br />
Dim biData, PostData<br />
Size = Request.TotalBytes<br />
biData = Request.BinaryRead(Size)<br />
PostData = BinaryToString(biData,Size)<br />
Response.Write &quot;&lt;pre&gt;&quot; &amp; PostData &amp; &quot;&lt;/pre&gt;&quot;&nbsp; '使用pre，原样输出格式<br />
' 借助RecordSet将二进制流转化成文本<br />
Function BinaryToString(biData,Size) <br />
&nbsp;Const adLongVarChar = 201<br />
&nbsp;Set RS = CreateObject(&quot;ADODB.Recordset&quot;)<br />
&nbsp;RS.Fields.Append &quot;mBinary&quot;, adLongVarChar, Size<br />
&nbsp;RS.Open<br />
&nbsp;RS.AddNew<br />
&nbsp; RS(&quot;mBinary&quot;).AppendChunk(biData)<br />
&nbsp;RS.Update<br />
&nbsp;BinaryToString = RS(&quot;mBinary&quot;).Value<br />
&nbsp;RS.Close<br />
End Function <br />
%&gt;</p>
</blockquote>
<p>　　简单起见，上传一个最简单的文本文件(G:\homepage.txt，内容为&quot;宝玉：<a href="http://www.webuc.net">http://www.webuc.net</a>&quot;)来试验一下，文本框filename中保留默认值&quot;default filename&quot;，提交看看输出结果：</p>
<blockquote>
<p>-----------------------------7d429871607fe<br />
Content-Disposition: form-data; name=&quot;file1&quot;; filename=&quot;G:\homepage.txt&quot;<br />
Content-Type: text/plain<br />
宝玉：<a href="http://www.webuc.net">http://www.webuc.net</a><br />
-----------------------------7d429871607fe<br />
Content-Disposition: form-data; name=&quot;filename&quot;<br />
default filename<br />
-----------------------------7d429871607fe--</p>
</blockquote>
<p>　　可以看出来对于表单中的项目，是用过&quot;-----------------------------7d429871607fe&quot;这样的边界来分隔成一块一块的，每一块的开始都有一些描述信息，例如：Content-Disposition: form-data; name=&quot;filename&quot;，在描述信息中，通过name=&quot;filename&quot;可以知道表单项的name。如果有filename=&quot;G:\homepage.txt&quot;这样的内容，说明是一个上传的文件，如果是一个上传的文件，那么描述信息会多一行Content-Type: text/plain来描述文件的Content-Type。描述信息和主体信息之间是通过换行来分隔的。</p>
<p>　　嗯，基本上清晰了，根据这个规律我们就知道该怎么来分离数据，再对分离的数据进行处理了，不过差点忽略一个问题，就是边界值(上例中的&quot;-----------------------------7d429871607fe&quot;)是怎么知道的？每次上传这个边界值是不一样的，还好还好asp中可以通过Request.ServerVariables( &quot;HTTP_CONTENT_TYPE&quot;)来获之，例如上例中HTTP_CONTENT_TYPE内容为：&quot;multipart/form-data; boundary=---------------------------7d429871607fe&quot;，有了这个，我们不仅可以判断客户端的form中有无使用enctype=&quot;multipart/form-data&quot;(如果没有使用，那么下面就没必要执行啦)，还可以获取边界值boundary=---------------------------7d429871607fe。（注意：这里获取的边界值比上面的边界值开头要少&quot;--&quot;，最好补充上。）</p>
<p>　　至于如何分析数据的过程我就不多赘述了，无非就是借助InStr,Mid等这样的函数来分离出来我们想要的数据。</p>
<p>二、分块上传，记录进度<br />
　　要实时反映进度条，实质就是要实时知道当前服务器获取了多少数据？再回想一下我们实现上传的过程，我们是通过Request.BinaryRead(Request.TotalBytes)来实现的，在Request的过程中我们无法得知当前服务器获取了多少数据。所以只能通过变通的方法了，如果我们可以将获取的数据分成一块一块的，然后根据已经上传的块数我们就可以算出来当前上传了多大了！也就是说，如果我1K为1块，那么上传1MB的输入流就分成1024块来获取，例如我当前已经获取了100块，那么就表明当前上传了100K。当我提出分块的时候很多人觉得不可思议，因为他们都忽略BinaryRead方法不仅是可以读取指定大小，而且可以连续读取的。</p>
<p>　　写个例子来验证一下分块读取的完整性，在刚才的例子基础上（注意该示例不要上传大文件，否则可能会造成浏览器死掉）：</p>
<blockquote>
<p>&lt;%<br />
Dim biData, PostData, TotalBytes, ChunkBytes<br />
ChunkBytes = 1 * 1024&nbsp;&nbsp;&nbsp;&nbsp; ' 分块大小为1K<br />
TotalBytes = Request.TotalBytes&nbsp; ' 总大小<br />
PostData = &quot;&quot;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ' 转化为文本类型后的数据<br />
ReadedBytes = 0&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ' 初始化为0<br />
' 分块读取<br />
Do While ReadedBytes &lt; TotalBytes<br />
&nbsp;biData = Request.BinaryRead(ChunkBytes)&nbsp; ' 当前块<br />
&nbsp;PostData = PostData &amp; BinaryToString(biData,ChunkBytes) ' 将当前块转化为文本并拼接<br />
&nbsp;ReadedBytes = ReadedBytes + ChunkBytes ' 记录已读大小<br />
&nbsp;If ReadedBytes &gt; TotalBytes Then ReadedBytes = TotalBytes<br />
Loop<br />
Response.Write &quot;&lt;pre&gt;&quot; &amp; PostData &amp; &quot;&lt;/pre&gt;&quot;&nbsp; ' 使用pre，原样输出格式<br />
' 将二进制流转化成文本<br />
Function BinaryToString(biData,Size) <br />
&nbsp;Const adLongVarChar = 201<br />
&nbsp;Set RS = CreateObject(&quot;ADODB.Recordset&quot;)<br />
&nbsp;RS.Fields.Append &quot;mBinary&quot;, adLongVarChar, Size<br />
&nbsp;RS.Open<br />
&nbsp;RS.AddNew<br />
&nbsp; RS(&quot;mBinary&quot;).AppendChunk(biData)<br />
&nbsp;RS.Update<br />
&nbsp;BinaryToString = RS(&quot;mBinary&quot;).Value<br />
&nbsp;RS.Close<br />
End Function <br />
%&gt;</p>
</blockquote>
<p>　　试验一下上传刚才的文本文件，输出结果证明这样分块读取的内容是完整的，并且在While循环中，我们可以在每次循环时将当前状态记录到Application中，然后我们就可以通过访问该Application动态获取上传进度条。</p>
<p>　　另：上例中是通过字符串拼接的，如果是要拼接二进制数据，可以通过ADODB.Stream对象的Write方法，示例代码如下：</p>
<blockquote>
<p>Set bSourceData = createobject(&quot;ADODB.Stream&quot;)<br />
bSourceData.Open<br />
bSourceData.Type = 1 'Binary<br />
Do While ReadedBytes &lt; TotalBytes<br />
&nbsp;biData = Request.BinaryRead(ChunkBytes)<br />
&nbsp;bSourceData.Write biData ' 直接使用write方法将当前文件流写入bSourceData中<br />
&nbsp;ReadedBytes = ReadedBytes + ChunkBytes<br />
&nbsp;If ReadedBytes &gt; TotalBytes Then ReadedBytes = TotalBytes<br />
&nbsp;Application(&quot;ReadedBytes&quot;) = ReadedBytes<br />
Loop</p>
</blockquote>
<p>三、保存上传的文件<br />
　　通过Request.BinaryRead获取提交数据，分离出上传文件后，根据数据类型的不同，保存方式也不同：</p>
<p>　　对于二进制数据，可以直接通过ADODB.Stream对象的SaveToFile方法，将二进制流保存成为文件。 <br />
　　对于文本数据，可以通过TextStream对象的Write方法，将文本数据保存到文件中。 <br />
　　对于文本数据和二进制数据，是可以方便的相互转换的，对于上传小文件来说，两者基本上没什么差别。但是两种方式保存时还是有一些差别的，对于ADODB.Stream对象，必须将所有数据全部装载完才可以保存成文件，所以使用这种方式如果上传大文件将很占用内存，而对于TextStream对象，可以在文件创建好后，一次Write一部分，分多次Write，这样的好处是不会占用服务器内存空间，结合上面分析的分块获取数据原理，我们可以每获取一块上传数据就将之Write到文件中。我曾做过试验，同样本机上传一个200多MB的文件，使用第一种方式内存一直在涨，到最后直接提示计算机虚拟内存不足，最可恨是即使进度条表示文件已经上传完，但是最终文件还是没有保存上。而使用后一种方法，上传过程中内存基本上无什么变化。</p>
<p>四、未解决的难题<br />
　　我在博客园上看到Bestcomy描述他的Asp.Net上传组件是可以和Sever.SetTimeOut无关的，而在Asp中我是没能做到，对于上传大文件，就只有将Server.SetTimeOut设置为一个很大的值才可以。不知道有没有比较好的解决方法。</p>
<p>　　如果我们在保存文件时，使用TextStream对象的Write方法，那么如果用户上传时中断了文件传输，已经上传的那部分文件还是在的，如果可以断点续传就好了。关键问题是Request.BinaryRead方法虽然可以分块读取，但是却不能跳过某一段读取！</p>
<p>五、结束语<br />
　　原理基本上是说清楚了，但是实际代码要比这复杂的多，要考虑很多问题，最麻烦在分析数据那部分，对于每一块获取的数据，要分析是不是属于描述信息，是表单项目还是上传的文件，文件是否已经上传结束&hellip;&hellip;</p>
<p>　　相信根据上面的描述，您也可以开发出您自己功能强大的无组件上传组件。我想更多的人关心的只是代码，而不会自己动手去写的，也许没有时间，也许水平还不够，更多的只是已经成为了一种习惯&hellip;&hellip;我在CSDN上见过太多技术八股文&mdash;&mdash;一段说明，然后全是代码。授人以鱼不若授人以渔，给你一个代码，也许你并不会去思考为什么，直接拿去用，当下次碰到类似的问题的时候，还是不知道为什么，希望此文能让更多人学到点什么，最重要是&ldquo;悟&rdquo;到点什么！</p>]]></content:encoded>
            <wfw:commentRss>http://www.nicoljiang.com/</wfw:commentRss>
        <feedburner:origLink>http://www.nicoljiang.com/story/2008-07-16/2732,00.shtml</feedburner:origLink></item>

        <item>
            <title>ASP解析JSON</title>
            <link>http://feedproxy.google.com/~r/nicol/~3/FW16OTFaUNY/2731,00.shtml</link>
            <comments>http://www.nicoljiang.com/story/2008-07-16/2731,00.shtml#comments</comments>
            <pubDate>Wed, 16 Jul 2008 04:19:39 +0800</pubDate>
            <dc:creator>Nicol</dc:creator>
            <category>学习</category>
            <guid isPermaLink="false">
            </guid>
            <description />
            <content:encoded><![CDATA[<p>　　<a title="JSON" target="_blank" href="http://go.duoky.com/search/baidu/JSON/rd">JSON</a>(Javascript Object Notation) 我想这个名字大家已经不陌生了，它是一种轻量级的数据交换格式,是由服务直接生成Javascript语句，原理是由客户端获取后直接用eval方法来获得这个对象负值，这样就可以省去解析XML解析带来的性能问题（特别是XML文件很长的情况）和兼容性问题，而且对于Javascript来说非常容易使用（基本上就是直接使用），可以方便的通过遍历数组以及访问对象属性来获取数据，其可读性也不错。基本具备了结构化数据的性质。不得不说是一个很好的办法，例如google maps就没有采用XML传递数据，而是采用了JSON方案。</p>
<p>　　So...这里我给大家举一个ASP解析Json的例子，起到一个抛砖引玉的作用吧...... 以下是test.asp代码片段：</p><blockquote>
<p>&lt;!--#include file=&quot;jsonParse.asp&quot;--&gt;<br />
&lt;%<br />
Dim strTest<br />
strTest = &quot;{name:&quot;&quot;alonely&quot;&quot;, age:24, email:[&quot;&quot;ycplxl1314@163.com&quot;&quot;,&quot;&quot;ycplxl1314@gmail.com&quot;&quot;], family:{parents:[&quot;&quot;父亲&quot;&quot;,&quot;&quot;母亲&quot;&quot;],toString:function(){return &quot;&quot;家庭成员&quot;&quot;;}}}&quot;</p>
<p>Dim objTestInitScriptControlSet<br />
objTest = getJSONObject(strTest)<br />
%&gt;<br />
&lt;%=objTest.name%&gt;的邮件地址是&lt;%=sc4Json.Eval(&quot;jsonObject.email[0]&quot;)%&gt;&lt;BR&gt;共有邮件地址&lt;%=objTest.email.length%&gt;个&lt;BR&gt;<br />
&lt;%<br />
Dim father<br />
getJSArrayItem father, objTest.family.parents, 0<br />
Response.Write father<br />
%&gt;</p>
</blockquote>
<p>以下是jsonParse.asp代码片段：</p>
<blockquote>
<p>&lt;%<br />
Option Explicit<br />
Dim sc4Json</p>
<p>Sub InitScriptControl<br />
&nbsp;Set sc4Json = Server.CreateObject(&quot;MSScriptControl.ScriptControl&quot;)<br />
&nbsp;sc4Json.Language = &quot;JavaScript&quot;<br />
&nbsp;sc4Json.AddCode &quot;var itemTemp=null;function getJSArray(arr, index){itemTemp=arr[index];}&quot;<br />
End Sub</p>
<p>Function getJSONObject(strJSON)<br />
&nbsp;sc4Json.AddCode &quot;var jsonObject = &quot; &amp; strJSON<br />
&nbsp;Set getJSONObject = sc4Json.Code<br />
&nbsp;Object.jsonObject<br />
End Function</p>
<p>Sub getJSArrayItem(objDest,objJSArray,index)<br />
&nbsp;On Error Resume Next<br />
&nbsp;sc4Json.Run &quot;getJSArray&quot;,objJSArray, index<br />
&nbsp;Set objDest = sc4Json.CodeObject.itemTemp<br />
&nbsp;If Err.number=0 Then<br />
&nbsp;&nbsp;Exit Sub<br />
&nbsp;End If<br />
&nbsp;objDest = sc4Json.CodeObject.itemTemp<br />
End Sub<br />
%&gt;</p>
</blockquote>]]></content:encoded>
            <wfw:commentRss>http://www.nicoljiang.com/</wfw:commentRss>
        <feedburner:origLink>http://www.nicoljiang.com/story/2008-07-16/2731,00.shtml</feedburner:origLink></item>

    </channel>
</rss><!-- [8,70,9] ,published date:2008-8-9 2:57:01 ,Powered by: CoreCMS v2.2.0.0 Beta -->
