<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
<channel>
<title><![CDATA[qinghu's blog - 技术资讯]]></title>
<link>http://www.guodong.net/blog/</link>
<description><![CDATA[关注Flash,Flex,AS3,AIR,Php,DotNet]]></description>
<language>zh-cn</language>
<copyright><![CDATA[Copyright 2005 PBlog3 v2.8]]></copyright>
<webMaster><![CDATA[zhangqinghu@gmail.com(庆虎)]]></webMaster>
<generator>PBlog2 v2.4</generator> 
<image>
	<title>qinghu&#39;s blog</title>
	<url>http://www.guodong.net/blog/images/logos.gif</url>
	<link>http://www.guodong.net/blog/</link>
	<description>qinghu&#39;s blog</description>
</image>

			<item>
			<link>http://www.guodong.net/blog/article.asp?id=266</link>
			<title><![CDATA[MDM Zinc 3.0发布了]]></title>
			<author>zhangqinghu@gmail.com(admin)</author>
			<category><![CDATA[技术资讯]]></category>
			<pubDate>Sat,02 Feb 2008 15:55:45 +0800</pubDate>
			<guid>http://www.guodong.net/blog/default.asp?id=266</guid>
		<description><![CDATA[<br/><img src="http://www.multidmedia.com/common/img/indexAttract_v3Released.jpg" border="0" alt=""/><br/><br/><br/><img src="http://www.multidmedia.com/common/img/indexHeader_DevSuperHero.jpg" border="0" alt=""/>]]></description>
		</item>
		
			<item>
			<link>http://www.guodong.net/blog/article.asp?id=259</link>
			<title><![CDATA[Logmein 可以从任何地方访问和控制您的PC]]></title>
			<author>zhangqinghu@gmail.com(admin)</author>
			<category><![CDATA[技术资讯]]></category>
			<pubDate>Wed,26 Sep 2007 14:12:43 +0800</pubDate>
			<guid>http://www.guodong.net/blog/default.asp?id=259</guid>
		<description><![CDATA[LogMeIn是一款基于Web的安全可靠的远程接入软件，它具有强大的控制功能，可以让用户在任何一个可以上网的电脑上控制家中的PC或者办公室的PC。软件支持强大的256-bit SSL加密，双密码验证，RSA SecureID。<br/>从任何地方控制您的 PC — 安全且轻松 <br/>免费 远程<br/><br/>适用于各种情况的远程支持解决方案<br/>&nbsp;&nbsp;<br/>&nbsp;&nbsp;&nbsp;&nbsp; <br/>&nbsp;&nbsp; 临时远程支持，无需预先安装软件 <br/>适用于基于意外事件的帮助台组织和技术供应商的最佳解决方案，可以提供远程客户支持。<br/>只需具有临时的访问权限，即可在 20 秒内完全控制台式计算机。这样，就无需向可能需要支持的每台 PC 部署软件。 <br/><br/>&nbsp;&nbsp;<br/>&#34;可以通过控制远程系统来解决问题，而无需预先安装任何软件。&#34;<br/><br/><br/>&#34;无需预先安装任何软件提高了用户的舒适度，使他们了解技术人员对其 PC 具有完全访问权限，可以为他们提供帮助，并且无需下载任何软件。&#34;<br/><br/>&nbsp;&nbsp; <br/>&nbsp;&nbsp;&nbsp;&nbsp; <br/>&nbsp;&nbsp; 始终可以访问远程系统 <br/>适用于系统管理和外包 IT 的理想解决方案，支持远程办公，并支持移动用户跨越防火墙。<br/>提供 PC 和服务器的全面管理及维护，可以在系统处于无人参与的状态时访问系统，或在系统正在使用的情况下从后台访问系统。 <br/><br/>&nbsp;&nbsp;<br/>&#34;LogMeIn IT Reach 易于部署并安装到多台计算机上。&#34;<br/><br/><br/><br/>&#34;这种基于 Web 的工具使公司的 IT 管理员可以通过使用 128 位和 256 位 SSL 加密安全和 RSA SecurID 支持来跟踪、诊断并修复单位的远程人员或正在出差人员的 IT 问题。&#34;<br/><br/><br/>&nbsp;&nbsp; <br/>&nbsp;&nbsp;&nbsp;&nbsp; <br/>&nbsp;&nbsp; 始终可以访问公司 LAN 中的台式计算机和服务器 <br/>适用于系统管理的理想解决方案，可以管理公司网络内部的台式计算机和服务器。<br/>诊断工具包以及计划、脚本和警报有助于在问题影响业务之前识别并解决这些问题。在几分钟内即可在整个 LAN 内部署。 <br/><br/><br/>&nbsp;&nbsp;<br/>&#34;无需任何客户端软件……实用的多功能管理程序。&#34;<br/><br/><br/><br/>&#34;LogMeIn 的 RemotelyAnywh&#101;re，管理诊断工具中的佼佼者……在智能方面，其他远程控制程序包皆无法与 RemotelyAnywh&#101;re 相媲美&#34;<br/><br/><br/>&nbsp;&nbsp; <br/>&nbsp;&nbsp;&nbsp;&nbsp; <br/>&nbsp;&nbsp; 在连接 LAN 及未连接 LAN 的情况下管理系统 <br/>LogMeIn IT Reach 和 RemotelyAnywh&#101;re 的基本配套工具，用于在单个用户界面中集中管理所有您支持的系统。<br/>提供多会话处理、主机监视以及按最适合您需要的任何方式组织您管理的计算机的功能。 <br/>]]></description>
		</item>
		
			<item>
			<link>http://www.guodong.net/blog/article.asp?id=254</link>
			<title><![CDATA[TweenFilterLite (AS3 Version) - Easily Tween Filte]]></title>
			<author>zhangqinghu@gmail.com(admin)</author>
			<category><![CDATA[技术资讯]]></category>
			<pubDate>Wed,08 Aug 2007 15:25:24 +0800</pubDate>
			<guid>http://www.guodong.net/blog/default.asp?id=254</guid>
		<description><![CDATA[好东西啊<br/><br/><div class="UBBPanel"><div class="UBBTitle"><img src="http://www.guodong.net/blog/images/flash.gif" alt="" style="margin:0px 2px -3px 0px" border="0"/>Flash动画</div><div class="UBBContent"><a id="temp96574_href" href="http://www.guodong.net/blog/javascript:MediaShow('swf','temp96574','http://www.greensock.com/ActionScri&#112;t/TweenFilterLiteAS3/TweenFilterLiteAS3_Sample.swf','400','300')"><img name="temp96574_img" src="http://www.guodong.net/blog/images/mm_snd.gif" style="margin:0px 3px -2px 0px" border="0" alt=""/><span id="temp96574_text">在线播放</span></a><div id="temp96574"></div></div></div><br/><br/><br/><div class="UBBPanel codePanel"><div class="UBBTitle"><img src="http://www.guodong.net/blog/images/code.gif" style="margin:0px 2px -3px 0px" alt="程序代码"/> 程序代码</div><div class="UBBContent"><br/>import gs.TweenFilterLite;<br/>TweenFilterLite.to(clip_mc, 1.5, {type:&#34;Blur&#34;, blurX:20, blurY:20});<br/></div></div><br/><br/><br/><a target="_blank" href="http://www.greensock.com/ActionScri&#112;t/TweenFilterLiteAS3/TweenFilterLiteAS3.zip" rel="external">下载</a><br/><br/><br/><br/><a target="_blank" href="http://blog.greensock.com/tweenfilterliteas3/" rel="external">官方</a>]]></description>
		</item>
		
			<item>
			<link>http://www.guodong.net/blog/article.asp?id=252</link>
			<title><![CDATA[[转]flash实现立方体贴图 flash3d]]></title>
			<author>zhangqinghu@gmail.com(admin)</author>
			<category><![CDATA[技术资讯]]></category>
			<pubDate>Wed,13 Jun 2007 16:26:08 +0800</pubDate>
			<guid>http://www.guodong.net/blog/default.asp?id=252</guid>
		<description><![CDATA[<div class="UBBPanel"><div class="UBBTitle"><img src="http://www.guodong.net/blog/images/flash.gif" alt="" style="margin:0px 2px -3px 0px" border="0"/>Flash动画</div><div class="UBBContent"><a id="temp35172_href" href="http://www.guodong.net/blog/javascript:MediaShow('swf','temp35172','http://www.qiter.com/blog/attachments/month_0705/l2007523182120.swf','400','300')"><img name="temp35172_img" src="http://www.guodong.net/blog/images/mm_snd.gif" style="margin:0px 3px -2px 0px" border="0" alt=""/><span id="temp35172_text">在线播放</span></a><div id="temp35172"></div></div></div><br/><br/><div class="UBBPanel codePanel"><div class="UBBTitle"><img src="http://www.guodong.net/blog/images/code.gif" style="margin:0px 2px -3px 0px" alt="程序代码"/> 程序代码</div><div class="UBBContent"><br/><br/>把以下的代码复制到住场景第一帧，然后在导入六张图片，图片的连接标识符为image0到image5,就好了<br/>Stage.scaleMode = &#39;noScale&#39;;<br/>var rotations = {x:0, y:0, z:0};<br/>var boxPoints = [{x:-50, y:-50, z:-50}, {x:50, y:50, z:-50}, {x:-50, y:50, z:-50}, {x:-50, y:-50, z:50}, {x:50, y:-50, z:50}, {x:50, y:50, z:50}];<br/>this.cr&#101;ateEmptyMovieClip(&#34;theScene&#34;+1, 1);<br/>theScene1._x = theScene1._y=200;<br/>cr&#101;ateImages();<br/>theScene1.onEnterFrame = function() {<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; rotations.x -= this._ymouse/1000;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; rotations.y += this._xmouse/1000;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; var points2d = pointsTransform(boxPoints, rotations);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; movieClip3PointTransform(this.image0, points2d[2], points2d[0], points2d[3]);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; movieClip3PointTransform(this.image1, points2d[5], points2d[1], points2d[2]);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; movieClip3PointTransform(this.image2, points2d[0], points2d[2], points2d[1]);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; movieClip3PointTransform(this.image3, points2d[4], points2d[3], points2d[0]);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; movieClip3PointTransform(this.image4, points2d[3], points2d[4], points2d[5]);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; movieClip3PointTransform(this.image5, points2d[1], points2d[5], points2d[4]);<br/>};<br/>function cr&#101;ateImages() {<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; var i = 6;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; while (i--) {<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;theScene1.cr&#101;ateEmptyMovieClip(&#34;image&#34;+i, i);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;theScene1[&#34;image&#34;+i].cr&#101;ateEmptyMovieClip(&#34;contents&#34;, i);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;theScene1[&#34;image&#34;+i].contents.attachBitmap(flash.display.BitmapData.loadBitmap(&#34;image&#34;+i), 1, false, true);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br/>}<br/>function pointsTransform(points, rotations) {<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; var tpoints = new Array();<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; var sx = Math.sin(rotations.x);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; var cx = Math.cos(rotations.x);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; var sy = Math.sin(rotations.y);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; var cy = Math.cos(rotations.y);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; var sz = Math.sin(rotations.z);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; var cz = Math.cos(rotations.z);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; var x, y, z, xy, xz, yx, yz, zx, zy;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; var i = points.length;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; while (i--) {<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;x = points[i].x;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;y = points[i].y;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;z = points[i].z;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;xy = cx*y-sx*z;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;xz = sx*y+cx*z;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;yz = cy*xz-sy*x;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;yx = sy*xz+cy*x;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;zx = cz*yx-sz*xy;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;zy = sz*yx+cz*xy;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;tpoints[i] = {x:zx, y:zy};<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return tpoints;<br/>}<br/>function movieClip3PointTransform(mc, a, b, c) {<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; mc._visible = ((b.y-a.y)/(b.x-a.x)-(c.y-a.y)/(c.x-a.x)&lt;0) ^ (a.x&lt;=b.x == a.x&gt;c.x);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (mc._visible) {<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var m = mc.transform.matrix;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;m.tx = b.x;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;m.ty = b.y;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;m.a = (a.x-b.x)/mc.contents._width;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;m.b = (a.y-b.y)/mc.contents._width;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;m.c = (c.x-b.x)/mc.contents._height;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;m.d = (c.y-b.y)/mc.contents._height;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;mc.transform.matrix = m;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br/>}<br/><br/></div></div>]]></description>
		</item>
		
			<item>
			<link>http://www.guodong.net/blog/article.asp?id=244</link>
			<title><![CDATA[Adobe Flash CS3 Professional 惊现Amazon]]></title>
			<author>zhangqinghu@gmail.com(admin)</author>
			<category><![CDATA[技术资讯]]></category>
			<pubDate>Mon,26 Mar 2007 15:26:41 +0800</pubDate>
			<guid>http://www.guodong.net/blog/default.asp?id=244</guid>
		<description><![CDATA[Adobe Flash CS3 Professional 计划在3月27日发布,但是今天,Amazon已经开始提前预售flash pro cs3了,价格是699.00美<br/><br/><img src="http://www.guodong.net/blog/attachments/month_0703/s2007326152543.jpg" border="0" alt=""/><br/><br/><br/>界面<br/><img src="http://www.guodong.net/blog/attachments/month_0703/q2007326152620.jpg" border="0" alt=""/><br/><br/><br/>期待ing]]></description>
		</item>
		
			<item>
			<link>http://www.guodong.net/blog/article.asp?id=217</link>
			<title><![CDATA[2Advanced v5]]></title>
			<author>zhangqinghu@gmail.com(admin)</author>
			<category><![CDATA[技术资讯]]></category>
			<pubDate>Wed,07 Jun 2006 13:18:12 +0800</pubDate>
			<guid>http://www.guodong.net/blog/default.asp?id=217</guid>
		<description><![CDATA[不多介绍了，行业人都知道 <br/><br/><a href="http://v5.2advanced.com/index.php" target="_blank" rel="external">http://v5.2advanced.com/index.php</a> <br/><br/><img src="http://www.guodong.net/blog/attachments/month_0606/z20066713187.jpg" border="0" alt=""/><br/>]]></description>
		</item>
		
			<item>
			<link>http://www.guodong.net/blog/article.asp?id=186</link>
			<title><![CDATA[Ajax应用场景简析]]></title>
			<author>zhangqinghu@gmail.com(admin)</author>
			<category><![CDATA[技术资讯]]></category>
			<pubDate>Fri,24 Mar 2006 09:29:07 +0800</pubDate>
			<guid>http://www.guodong.net/blog/default.asp?id=186</guid>
		<description><![CDATA[【导读】本文简述了Ajax技术适用场景、Ajax不适用场景的具体情况以及应用时候存在的一些问题。 <br/><br/><br/><br/>Ajax适用场景<br/><br/>1.表单驱动的交互<br/><br/>传统的表单提交，在文本框输入内容后，点击按钮，后台处理完毕后，页面刷新，再回头检查是否刷新结果正确。使用Ajax，在点击sunmit按钮后，立刻进行异步处理，并在页面上快速显示了更新后的结果，这里没有整个页面刷新的问题。<br/><br/>2.深层次的树的导航<br/><br/>深层次的级联菜单（树）的遍历是一项非常复杂的任务，使用JavaScript来控制显示逻辑，使用Ajax延迟加载更深层次的数据可以有效的减轻服务器的负担。<br/><br/>我们以前的对级联菜单的处理多数是这样的：<br/><br/>为了避免每次对菜单的操作引起的重载页面，不采用每次调用后台的方式，而是一次性将级联菜单的所有数据全部读取出来并写入数组，然后根据用户的操作用 JavaScript来控制它的子集项目的呈现，这样虽然解决了操作响应速度、不重载页面以及避免向服务器频繁发送请求的问题，但是如果用户不对菜单进行 操作或只对菜单中的一部分进行操作的话，那读取的数据中的一部分就会成为冗余数据而浪费用户的资源，特别是在菜单结构复杂、数据量大的情况下（比如菜单有 很多级、每一级菜又有上百个项目），这种弊端就更为突出。<br/><br/>如果在此案中应用Ajax后，结果就会有所改观：<br/><br/>在初始化页面时我们只读出它的第一级的所有数据并显示，在用户操作一级菜单其中一项时，会通过Ajax向后台请求当前一级项目所属的二级子菜单的所有数据，如 果再继续请求已经呈现的二级菜单中的一项时，再向后面请求所操作二级菜单项对应的所有三级菜单的所有数据，以此类推……这样，用什么就取什么、用多少就取 多少，就不会有数据的冗余和浪费，减少了数据下载总量，而且更新页面时不用重载全部内容，只更新需要更新的那部分即可，相对于后台处理并重载的方式缩短了 用户等待时间，也把对资源的浪费降到最低。<br/><br/>3.快速的用户与用户间的交流响应<br/><br/>在众多人参与的交流讨论的场景下，最不爽的事情就是让用户一遍又一遍刷新页面以便知道是否有新的讨论出现。新的回复应该以最快的速度显示出来，而把用户从分神的刷新中解脱出来，Ajax是最好的选择。<br/><br/>4.类似投票、yes/no等无关痛痒的场景<br/><br/>对于类似这样的场景中，如果提交过程需要达到40秒，很多的用户就会直接忽略过去而不会参与，但是Ajax可以把时间控制在1秒之内，从而更多的用户会加入进来。<br/><br/>5.对数据进行过滤和操纵相关数据的场景<br/><br/>对数据使用过滤器，按照时间排序，或者按照时间和名称排序，开关过滤器等等。任何要求具备很高交互性数据操纵的场合都应该用JavaScript，而不是用一系列的服务器请求来完成。在每次数据更新后，再对其进行查找和处理需要耗费较多的时间，而Ajax可以加速这个过程。<br/><br/>6.普通的文本输入提示和自动完成的场景<br/><br/>在文本框等输入表单中给予输入提示，或者自动完成，可以有效的改善用户体验，尤其是那些自动完成的数据可能来自于服务器端的场合，Ajax是很好的选择。<br/><br/>Ajax不适用场景<br/><br/>1.部分简单的表单<br/><br/>虽然表单提交可以从Ajax获取最大的益处，但一个简单的评论表单极少能从Ajax得到什么明显的改善。而一些较少用到的表单提交，Ajax则帮不上什么忙。<br/><br/>2.搜索<br/><br/>有些使用了Ajax的搜索引擎如Start.com和Live.com不允许使用浏览器的后退按钮来查看前一次搜索的结果，这对已经养成搜索习惯的用户来说是不可原谅的。<br/><br/>现在Dojo通过iframe来解决这个问题。<br/><br/>3.基本的导航<br/><br/>使用Ajax来做站点内的导航是一个坏主意，为什么不把时间放在让系统程序作的更好上呢？<br/><br/>4.替换大量的文本<br/><br/>使用Ajax可以实现页面的局部刷新，但是如果页面的每个部分都改变了，为什么不重新做一次服务器请求呢？<br/><br/>5.对呈现的操纵<br/><br/>Ajax看起来像是一个纯粹的UI技术，但事实上它不是。它实际上是一个数据同步、操纵和传输的技术。对于可维护的干净的web应用，不使用Ajax来控制页面呈现是一个不错的主意。JavaScript可以很简单的处理XHMTL/HTML/DOM，使用CSS规则就可以很好的表达数据显示。<br/><br/>存在的问题<br/><br/>1.用JavaScript作的Ajax引擎，JavaScript的兼容性和DeBug都是让人头痛的事；<br/><br/>2.Ajax的无刷新重载，由于页面的变化没有刷新重载那么明显，所以容易给用户带来困扰?D?D用户不太清楚现在的数据是新的还是已经更新过的；现有的解决有：在相关位置提示、数据更新的区域设计得比较明显、数据更新后给用户提示等；<br/><br/>3.中间过程不能被bookmark。解决方法：GoogleMaps通过在页面上提供一个”link to this page”的办法来解决。另外，还可以通过url链接中加无效的?^标记来解决，但还未验证。<br/>]]></description>
		</item>
		
			<item>
			<link>http://www.guodong.net/blog/article.asp?id=184</link>
			<title><![CDATA[从Flash走到AJAX-使用者经验与开发者经验的二三事]]></title>
			<author>zhangqinghu@gmail.com(admin)</author>
			<category><![CDATA[技术资讯]]></category>
			<pubDate>Tue,21 Mar 2006 10:14:14 +0800</pubDate>
			<guid>http://www.guodong.net/blog/default.asp?id=184</guid>
		<description><![CDATA[点击Flash画面，用左右键控制，或者右击Flash选择跳页。<br/><br/><div class="UBBPanel"><div class="UBBTitle"><img src="http://www.guodong.net/blog/images/flash.gif" alt="" style="margin:0px 2px -3px 0px" border="0"/>Flash动画</div><div class="UBBContent"><a id="temp31841_href" href="http://www.guodong.net/blog/javascript:MediaShow('swf','temp31841','attachments/month_0603/Flash-AJAX.swf','400','300')"><img name="temp31841_img" src="http://www.guodong.net/blog/images/mm_snd.gif" style="margin:0px 3px -2px 0px" border="0" alt=""/><span id="temp31841_text">在线播放</span></a><div id="temp31841"></div></div></div>]]></description>
		</item>
		
			<item>
			<link>http://www.guodong.net/blog/article.asp?id=168</link>
			<title><![CDATA[ActionScript 3.0 语言规范发布]]></title>
			<author>zhangqinghu@gmail.com(admin)</author>
			<category><![CDATA[技术资讯]]></category>
			<pubDate>Mon,06 Mar 2006 09:22:30 +0800</pubDate>
			<guid>http://www.guodong.net/blog/default.asp?id=168</guid>
		<description><![CDATA[ActionScript 3.0 语言规范草案今日发布<br/><br/><a target="_blank" href="http://livedocs.macromedia.com/specs/actionscri&#112;t/3/wwhelp/wwhimpl/js/html/wwhelp.htm" rel="external">点击察看</a><br/><br/><a target="_blank" href="http://www.macromedia.com/go/AS2toAS3" rel="external">AS2与AS3对照表</a><br/><br/><br/><a target="_blank" href="http://www.franto.com/blog2/collected-links-to-actionscri&#112;t-30-examples" rel="external">75个AS3教程与资源站点</a>(使用FF查看)]]></description>
		</item>
		
			<item>
			<link>http://www.guodong.net/blog/article.asp?id=163</link>
			<title><![CDATA[[转]Flash VS Ajax]]></title>
			<author>zhangqinghu@gmail.com(admin)</author>
			<category><![CDATA[技术资讯]]></category>
			<pubDate>Sat,18 Feb 2006 14:08:01 +0800</pubDate>
			<guid>http://www.guodong.net/blog/default.asp?id=163</guid>
		<description><![CDATA[说到Flash与Ajax不免要会惹来热闹的争论。用google搜搜就有很多这样的文章，这里我就不引用了。不过，我还是想提一下 Luar 写的 ‘展望2006年，Flash未來未有來！’这篇blog，里面的看法我很赞同。同时Luar作为Flash的资深开发者，他的言论是很有见地的。<br/><br/>　　看完Luar的文章，你一定会有些悲观。Flash到底还能走多远？哎，还是不要想这样的问题了。我的看法还是比较乐观的。<br/><br/>　　首先，来看看Ajax。经过几个月的关注，我的理解是：Ajax的重点有两个，一是与服务器的无刷新传递消息，另一个是对dhtml的扩展（或者说是深度开发）。ajax里，Javascript在浏览器中就像FlashPlayer里的AS2.0，FlashPlayer就好象是MM的浏览器。这样的比喻我认为很适合。这样想想就会明白，在浏览器的环境里JS可以做很多AS不能做的事，而且JS比AS更加成熟。所以JS的优势和广阔的前景是很明显的。<br/><br/>　　通过Flash平台客户端的开发，我发现Flash的优势有一部分与Ajax重叠了。比如，与服务器的无刷新传递消息，以及用户离线和在线状态的无缝切换。除了对CSS的支持和文字表格表现上的劣势，FLash还是可以媲美Ajax的。另外，Flash最大的有点在于开发的低门槛。Flash有完备的IDE和调试环境，同时在还可以满足MVC的设计模式，它所见所得的开发环境更得到美工的青睐。<br/><br/>　　除了以上的对比，我想象我这样喜爱Flash的爱好者只所以支持他的主要原因还在与，他的成长速度。从4.0到8.0几乎每次的升级都让人为之兴奋。<br/><br/><br/><br/><br/>下面是Luar 写的 ‘展望2006年，Flash未來未有來！’原文<br/><br/>經過2005年的時間，做過大大小小不同的Flash應用，當我忙於為2006年第一個重頭而大型的Ajax專案做準備、文檔和可行性研究等時，我不禁不斷問自己，Flash的未來在哪裡？Flash的優勢在哪裡？Flash的重要性在哪裡？<br/><br/>我的角色<br/><br/>先從自己的角色說起，我平日工作是做Flash，這是人所共知的，但不只是Flash這麼簡單，我可是一個諮詢、協調和開發的角色，首先因應客戶的問題和預算，提供硬體上和軟體上的建議，例如要用什麼Server？什麼OS？Linux/Windows？什麼Server-side Program和Database等。<br/><br/>在Client-side/Browser/Front End上，我是一個UI Designer，我非常關心怎樣給予使用者最好體驗，包括：<br/><br/>快速下載<br/>簡易操作<br/>界面流暢，慢的電腦也跑得順<br/>不佔用過多CPU Power<br/>Cross Browser和Cross Platform<br/>同時我也是一個Information Architect，思考怎樣將Server傳來的數據(Data)轉化為清楚、有用、條理分明的資料(Information/Content)，不單只在展示(Presentation)上滿足使用者，更要協助使用者可以將資料再運用，例如：選取Copy-n-Paste、列印、另存、Bookmark、Forward Link等。同時，我更為應用系統研究合適的操作步驟，包括每個操作的Screen Flow，怎樣協助使用者操作、找出錯誤、處理Back Button，提交資料到Server前優化工作等。<br/><br/>到了Server-side，我變成一個中間人角色，跟Programmer溝通，告訴他們需要什麼API供給Front End使用。最簡單層次也要跟很多不懂Flash的Programmer溝通，告訴他們怎樣跟Flash作LoadVars。這個中間人角色在開發過程中，變成了一個System Analyst，因為我要思考的既是怎樣分工，也要考慮到應用系統將來維護和擴展性。分工上簡單地說是怎樣去將應用系統MVC化，讓美工只專注在設計上。維護和擴展性，要考慮到將來增加功能、Localization多語言版本等問題、開放API等Web 2.0的東西。因此，Front End我要周旋於HTML, CSS, JavaScript, XML, XSLT, Flash的取捨，Back End要想2-Tier還是3-Tier，SOA等等問題。這也是我諮詢一部分，給客戶建議，告訴Programmer該做什麼。<br/><br/>因為這個背景，所以我對於Front End技術的選擇非常關心，過去是HTML vs Flash？現在是AJAX vs Flash？Adobe vs M$ vs Open Source？因為HTML對Flash取捨，已經影響了我關心的「使用者最好體驗」，就是剛才提到幾點，同時它也影響了Server架構，例如用Flash是否可以直接連Web Services產生一個簡單2-Tier的SOA？<br/><br/>我的專案<br/><br/>我所有專案，99%都有Flash，基本上所有Flash Spectrum東西我都有做過。我將範圍收窄在網上，即Browser裡東西。Browser裡東西，除了新聞純文字資訊性的網站絕對不需要用Flash外（看新聞影片Video除外），我看到要用Flash地方，其實分為四種：自我介紹的中小企公司網站、電影娛樂產品宣傳的行銷性網站、網上商貿資料搜索性網站、Web Based Application（即純粹解決商業問題的應用程式，由過去C/S搬上B/S）。<br/><br/>公司網站，考慮因素很低，使用者不會長時間留在網站裡，沒有什麼操作，內容更新規模低至少，因此運用HTML或是Flash，基本上由客戶和價錢決定。其實這類網站很依靠Search Engine帶來瀏覽者，純Flash網站怎辦？沒有我提醒，客戶其實很難察覺這大問題。<br/><br/>行銷性網站，一定是Flash，因為多姿多彩，影音娛樂聲色俱全是這些網站必需的，目前有的技術，唯有Flash才能勝任。行銷性網站不會長時間在線，將來維護問題需要很少。<br/><br/>分析運用Flash的優劣<br/><br/>後兩者，就是我最關心的所在。網上商貿資料搜索性網站（下簡稱「資搜網」），除了一般網上購物外，還包括資料搜索性，例如地圖上增值服務、找餐廳、訂酒店機票等服務。這類網站，對於我關心的「使用者最好體驗」最為重要，因為使用者除了要經常使用外，還要對資料再運用。一個用戶體驗為主的網站，如果這方面做得不好，直接是損失商機，例如放棄Check out等。雖然Macromedia的口號是體驗攸關(Experience Matters)，不過，我看來，Flash正為這類網站提供最差體驗。<br/><br/>一、 失去Back Button和Bookmark/Forward Link能力<br/>有些基本Flash缺點，前人都已經說了(Flash: 99% Bad)，「資搜網」對Back Button和Bookmark/Forward Link非常重要。以HTML一頁為單位的「資搜網」，可以用GET Method來查詢，搜索的參數都在網址上，既可以按Back Button就再搜尋（大部分使用者，對錯誤操作仍然是習慣按Back Button），也可以Bookmark和Forward Link，試比較HTML的Flickr和Flash的Fotologue.jp，後者網站怎樣告訴朋友我喜歡的一張相片？<br/><br/><br/><img src="http://www.guodong.net/blog/attachments/month_0602/f200621814414.jpg" border="0" alt=""/><br/><br/><img src="http://www.guodong.net/blog/attachments/month_0602/v200621814431.jpg" border="0" alt=""/><br/><br/>雖然這些問題（Ajax也有面對）Flash有解決方法（參考我的《AS2與RIA》），但絕對是痛苦開發過程。<br/><br/>二、 不能資料再運用<br/>資料再運用上，Flash網頁難以讓使用者儲存和列印，雖然Flash提供了PrintJob API，可以弄一個Button供使用者列印，不過一天Flash寄生在Browser裡，一天使用者直覺上會按Browser裡Menu Bar上的Print（難怪Adobe要攪她那個Flash+PDF+HTML+CSS的Apollo，努力跳出Browser框框）。Ajax也有難以讓使用者儲存問題，因為網頁內容是動態產生。<br/><br/>三、 文本處理能力不快不方便<br/>Flash一直強調自己展示能力，可惜這又正正曝露出它天生致命點，文本(Text)處理能力不快不方便，我不會說它不強，它可以Embed Font，Flash 8更可以控制Leading Kerning等，可惜它很慢，而且不方便使用者！文字根本是HTML天生原素，在Browser裡可以自由快速地滾動瀏覽，自由選取，更可以隨便讓使用者控制字體大小。在美工主導下的Flash字體，非常細小難於閱讀，大量文字滾動起來又慢又吃力（我以前批評過Flash Paper）。另一方面，HTML文字可以隨Browser大小自由換行，Flash裡又花費大量功夫。Localization上，HTML有很多方法，例如套用不同Template代表不同語言版本等，文字因為儲存在純文字檔案，可以給翻譯容易處理。在Flash裡，又是另一個使人頭痛問題，抽出來放在XML裡？Dynamic TextField會失去美麗字體！結果又要花費美工複製多個FLA語言版本，將來維護上又是一個極大煩惱。<br/><br/>四、 文字/圖文列表處理能力弱<br/>在「資搜網」上，經常要顯示大量文字/圖文夾雜搜尋資料時：<br/><br/><img src="http://www.guodong.net/blog/attachments/month_0602/h200621814514.gif" border="0" alt=""/><br/><br/><img src="http://www.guodong.net/blog/attachments/month_0602/9200621814524.gif" border="0" alt=""/><br/><br/><img src="http://www.guodong.net/blog/attachments/month_0602/k200621814543.gif" border="0" alt=""/><br/><br/>Flash就顯得軟弱無力，用DataGrid？它慢得可怕，又非常難Hack，CellRenderer不是一般開發者懂得。對於這樣資料，要先攪清楚它們是Tabular Data還是只需要Tabular Format，前者需要一個DataGrid形式顯示，因為DataGrid可以用Columns排序、做分頁等。Tabular Format只不過在HTML上，用Table排列出，在Flash裡用duplicateMovieClip或者Flex的mx:Repeater。HTML Table列出，ScrollBar由Browser負責，快速而方便；在Flash裡則要自製ScrollBar，慢和不方便。<br/><br/>五、自製界面困擾使用者<br/>談到自製ScrollBar，Jakob Nielsen有文章指出Flash自製ScrollBar的問題。Flash界面不單是ScrollBar問題。它更引申，因為Flash非常自由，美工可以自由發揮，變成界面可以有一些新奇古怪的操作方法，使用者面對不是他們熟悉的OS操作方法，就有猶疑。難道我們可以坐在使用者旁邊教他們用，還是提供使用者手冊給他們看？「資搜網」用戶是廣大的，根本沒有可能教他們用，因此，簡單而平常界面才最重要。<br/><br/>小結<br/>「資搜網」最適合一頁頁的HTML來顯示，Ajax/Flash只適合作搜索操作步驟上改善使用者體驗，例如提示錯誤，快速跟Server驗證等。Refreshless Page是盲目無意義的追求！<br/><br/>Flash沒有幫助開發者開發RIA<br/>應用開發是很多ISV和開發者日常的工作，因為商業公司有很多數據化後業務操作，不是一般盒裝軟體能夠滿足，因此需要這類公司或開發者為他們訂製或客製。這類應用程式簡單地只是一個資料輸入，數據儲存，資料輸出的過程，因此所謂應用程式只不過是一個輸入界面Form加一個Database。以前是Client-Server(C/S)架構，現在只不過搬到Browser裡。<br/><br/>一、劣質界面組件<br/>輸入界面包括TextInput, Button, Radio Button, CheckBox, List, ComboBox等，就是Flash裡v2 Component，可惜v2 Component非常慢，Buggy和檔案大，缺乏優質界面組件一直是Flash開發應用程式第一大問題。Flex組件好很多，可惜昂貴價錢使大部分開發者望門輕嘆。雖然Flex Builder 2和AS3組件可以改善這問題，可惜待推出至Flash Player 8.5普及，還有一段長時間，遠水不能救近火。不過，這些基本界面組件，HTML已經有，由於它們是HTML天生原素，在Browser裡支援十分好，反應快，又支援Tab Focus和鍵盤。<br/><br/>二、兩邊不討好界面製作過程<br/>在Flash Timeline以Drag-n-Dro&#112;組件的方式製作界面，還是在Dreamweaver裡也是以視覺化的方式製作界面，不過同樣容易地以純文字方式去調節來得方便和快速？（Flex Builder也是視覺化＋文字化，不過高貴Flex根本不是一般開發者用）。程式員怎樣選擇？對於美工，他們想自訂界面外觀，Flash v2 Component/Flex的方式，他們可以參與多深入呢？HTML+CSS方式修改是否最簡單快捷方便？<br/><br/>當重要界面組件被商業企業Adobe以謀利方式控制著時，我們是否應該考慮更討好，免費、標準和廣大Browser支持的HTML Form Element呢？<br/><br/>三、難以容入的團隊開發<br/>FLA難以整合到CVS，MXML只有乾看，沒有錢用，沒有文字化Flash應用開發方式，不能純用自己喜歡的Editor開發，SWF Compiler遙遙無期，MTASC自我放棄。Flash應用開發成本比HTML貴很多，單是等Flash MMC Compile的時間已經浪費了一個人生（見用MTASC可以生仔）。<br/><br/>四、根本沒有所謂桌面軟體操作經驗和需要<br/>Flash喜歡說可以有桌面軟體操作經驗的RIA，即是有Drap-n-Dro&#112;。大部分B/S應用，剛才已經指出了，是一個資料輸入的Form而已，有需要什麼創新的Drag-n-Dro&#112;操作方法嗎？<br/><br/>五、應用程式需要頁面無刷新<br/>所有應用程式開發者都很怕使用者按Back Button，因為容易產生數據不完整錯誤，也討厭Reload這Button，容易產生數據重覆問題。從C/S走過來，應用程式從來不需要Back和Reload Button。因此頁面無刷新是對開發者很重要功能，也是Flash當初賣點。<br/><br/>六、Cross Platform和Cross Browser<br/>應用程式以Web Based來部署，B/S廣泛代替C/S，原因是Internet/Intranet和Browser是一個廣泛和容易部署的應用程式平台。不過，因為廣泛，所以有Cross Platform和Cross Browser問題，Flash冒起正正因為它真的可以Write Once, Run Anywh&#101;re。<br/><br/>第五、六點不是Flash缺點，而是提出來因為這兩個Flash獨特優點，正正被Ajax代替。第五、六點其實是Web Based Application開發者很需要，因此當Ajax出現時，立即引起轟動！為什麼他們卻無視Flash存在？Ajax冒出，除了以上技術上優勢外，還有多家著名Web 2.0概念的網站都是用Ajax，變成了Web 2.0概念中都包含Ajax，可憐Flash要拚命躋身入去（Mike Chambers和Kevin Lynch說法），說服世人Flash也是Web 2.0一分子。<br/><br/>小結<br/>HTML Form Element和HTML文字/圖文列表處理能力，純文字開發過程、XMLHttpRequest提供無刷新數據交換，Cross Platform和Cross Browser，所有Web Based Application開發需要的東西，Ajax都比Flash好，Flash有何優勢，難道以為那些Expressiveness和Transitions Effect來騙騙門外漢？應用程式貴乎實用而非花巧，當使用者每天都使用程式時，還要他們浪費時間等Flash用Transitions Effect將一張Form旋轉放大Fade In出來嗎？<br/><br/>邪惡的Adobe<br/><br/>封閉收費 vs 公開免費<br/>當完成合併那天的FAQ提到要將Flash Player和PDF合併，Flash社群震撼是如何大！這要Adobe方面漏夜修正FAQ字眼，Mike Chambers等走出來澄清。我想人們應該要明白Flash無論多de facto standard都好，始終是控制在一家牟利的商業企業裡，人家要給你劣質Component，賣你1.2萬美元Flex，你是沒辦法的。同樣道理，因為公開、免費、標準的技術大湊合Ajax會被人重視，原因在此（見Open Source Action Items中Aral Balkan意見）。開發者不可以將自己將來、前途和錢途寄託在單一公司、單一封閉技術裡。<br/><br/>Flash是二線產品<br/>我對Adobe吞併Macromedia感覺，如香港回歸大陸一樣，雖然有強勁經濟靠山，但香港獨特國際優勢會逐步被大陸化而變成中國一個沿海普通城市。Flash現在只不過淪為Adobe裡一個二線產品，Adobe可以繼續放主力在她賺錢的Documentation和PDF業務、Flash和那可能賺大錢的Flash Mobile遠景，Adobe會重視嗎（見Adobe Faces Tough Choices）？香港不再生金蛋，Flash也不再閃爍！<br/><br/>Macromedia精神不再<br/>況且，我從來不認為Flash Mobile會成功(1,2)。Macromedia精神和Vision究竟有多少能夠再延續在Adobe裡？雖然有五位Macromedia高層入了Adobe管理層，但有實權嗎？Stephen A. Elop所謂President, Worldwide Field Operations，看來有虛名沒有實權，新安插出來職位？Adobe雖然接收了Macromedia的員工，但多少會長期留下，我知道一些高層合併過程中已經離開，Flash開發團隊的精英會否一年半載後意興闌珊而離開或另起爐灶？（如Macromedia買了RoboHelp後，RoboHelp員工拉隊離開1,2）<br/><br/>Adobe得不到Macromedia開發社團信任，雖然她已經發公開信保證，但各MMUG將準備以行動證明拒絕Adobe化決心(見LondonMMUG、CPMMUG和香港MMUG)。<br/><br/>最後總結<br/>Flash最適合多媒體的行銷網站運用，其他方面，它正是腹背受敵中，視覺實驗可以玩Processing，應用程式可以考慮Ajax。我建議所有熱愛Flash的RIA Developer，2006年應該將目光多投向Ajax，因為同樣是ECMAScript，同樣是XML Parsing，非常容易學。我們Flash Developer有5年時間，從過去錯誤經驗成長，如果將這些經驗知識運用到Ajax上，一定能找到我們自己的優勢的。<br/><br/>最後，我不是今天的我打倒昨天的我，我曾經對Ajax作出批判，但了解過我的工作背景：我是由鑽研DHTML討厭Flash到開始轉玩Flash的；長期關心本站的朋友都知道，我是一個關心Client-side技術發展的人(1,2,3,4)。所以，任何對改善使用者經驗、改善開發者工作的有價值技術，我們都不能放過。<br/><br/>祝Flash好運！祝大家新年進步！]]></description>
		</item>
		
</channel>
</rss>
