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

<channel>
	<title>N.S.thoughts &#187; Javascript</title>
	<atom:link href="http://nightsailer.com/category/coding/javascript/feed" rel="self" type="application/rss+xml" />
	<link>http://nightsailer.com</link>
	<description>...silent is golden...</description>
	<lastBuildDate>Wed, 01 Sep 2010 17:01:39 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.2</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>node.js-高效的javascript evented I/O framework</title>
		<link>http://nightsailer.com/2010/04/09/713.html</link>
		<comments>http://nightsailer.com/2010/04/09/713.html#comments</comments>
		<pubDate>Thu, 08 Apr 2010 18:30:29 +0000</pubDate>
		<dc:creator>nightsailer</dc:creator>
				<category><![CDATA[Javascript]]></category>
		<category><![CDATA[node.js]]></category>

		<guid isPermaLink="false">http://nightsailer.com/?p=713</guid>
		<description><![CDATA[node.js是最近时期比较热门的主题。
这个基于V8的javascript io framework，由于是evented,性能很高，符合当前低炭高效的主旋律。
对于那些有大量并发链接的场景，不妨尝试一下。
node.js上手非常容易，因为javascript估计几乎每个web开发人员都或多或少知道。
node.js也证明了server side js是大有前途。当然，这里的所指的js开发者应该是那些真正熟悉
javascript的开发者，对于那些仅仅当作前端脚本的人来说，需要补课的地方还是非常多的。
在node.js基础上，派生了很多的framework和许多有趣的东西，这里列出一些node.js相关的资料：
node.js
关于nodejs的howto
nodejs的一些相关的项目和资料
Mongo DB Native NodeJS Driver
Non-blocking I/O, Event loops and node.js
]]></description>
			<content:encoded><![CDATA[<p>node.js是最近时期比较热门的主题。<br />
这个基于V8的javascript io framework，由于是evented,性能很高，符合当前低炭高效的主旋律。<br />
对于那些有大量并发链接的场景，不妨尝试一下。</p>
<p>node.js上手非常容易，因为javascript估计几乎每个web开发人员都或多或少知道。<br />
node.js也证明了server side js是大有前途。当然，这里的所指的js开发者应该是那些真正熟悉<br />
javascript的开发者，对于那些仅仅当作前端脚本的人来说，需要补课的地方还是非常多的。</p>
<p>在node.js基础上，派生了很多的framework和许多有趣的东西，这里列出一些node.js相关的资料：</p>
<p><a href="http://nodejs.org/">node.js</a></p>
<p><a href="http://howtonode.org/">关于nodejs的howto</a></p>
<p><a href="http://wiki.github.com/ry/node/">nodejs的一些相关的项目和资料</a></p>
<p><a href="http://github.com/christkv/node-mongodb-native">Mongo DB Native NodeJS Driver</a></p>
<p><a href="http://www.slideshare.net/marcusf/nonblocking-io-event-loops-and-nodejs">Non-blocking I/O, Event loops and node.js</a></p>
]]></content:encoded>
			<wfw:commentRss>http://nightsailer.com/2010/04/09/713.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Firefox memory.cache的烦恼</title>
		<link>http://nightsailer.com/2007/09/23/66.html</link>
		<comments>http://nightsailer.com/2007/09/23/66.html#comments</comments>
		<pubDate>Sun, 23 Sep 2007 14:28:54 +0000</pubDate>
		<dc:creator>nightsailer</dc:creator>
				<category><![CDATA[Javascript]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[Firefox]]></category>
		<category><![CDATA[memory-cache]]></category>
		<category><![CDATA[onpagehide]]></category>
		<category><![CDATA[onpageshow]]></category>

		<guid isPermaLink="false">http://nightsailer.hibeauty.cn/2007/09/23/66.html</guid>
		<description><![CDATA[今天用jQuery作一个界面发现了firefox的一个问题,操作过程很简单：
1个form，用户先填写一些基本信息，保存，服务器返回taconite的response,会打开原来隐藏的
扩展属性面板，这样用户可以填写那些关联的属性，上传附件等等。当保存时，服务器端返回的taconite
会设置一个hidden field（id）的值为刚才保存的记录的主键，这样，当提交其他的关联数据时可以
附带这个id。
一切都很好，但是当我刷新的时候发现了奇怪事情，id值没有被复位，仍然是刚才传回的id，我用firebug发现，
html中的value是空的，但是用$(&#8216;#id&#8217;).val()返回的值竟然非空！
这个现象上周作passport时候也出现，不过我是在document.ready里清空了这个值。也就没在意。
今天又出现，不由让我奇异，此外，由于使用的smarty模板和js是复用的（新建和编辑用的是同一个），
没有办法全部重置为空。
我作了下测试,当装载时调用form的reset方法，其他的field都被重置回去了，但是id这个hidden field
没有变化。
反复测试，发现：
如果是command+R，或者点击刷新，上面现象重复。
如果是shift+command+R，或者地址栏旁边的点击转到，上述现象消失。
googling 了一下，发现很多人有同样的困惑，尤其是一些flash，进度条经常无法正常显示。
很多人给出了各种答案，但是很多人又都否定了那些答案的有效性。
不过在一个老外的blog上，发现了一个线索，他指出，这是FF1.5的一个“特性”，即所谓的memory cache。
FF1.5以后增加了一个特性，它将当前页面很多东西都缓存到内存中，当你back-forward操作的时候，直接
会从内存中恢复。这也就是为什么虽然html的value是空，但是dom树中的值非空。
如何解决呢？
根据FF的说明，以下情况下不会使用memory cache:
1.定义了unload事件处理
2.设置了&#8221;cache-control: no-store&#8221;
3.设置了&#8221;cache-control: no-cache&#8221; 且站点为HTTPS.
4.页面未完全载入，用户就离开当前页面
5.使用页面所属的frameset不允许缓存
6.the page is in a frame and the user loads a new page within that frame (in this case, when the user navigates away from the page, the content that was last loaded into the frames is what is cached)
严重后果：
如果页面是从cache中载入的，那么所有的Inline script和onload事件将不被运行。
如何解决呢？为了使用这个所谓的新特性，FF1.5中为此增加了2个新的event:
###pageshow event
pageshow event同onload事件，不过即使从cache中load的，也会执行。
当第一初始化时,pageshow会在onload后触发，不过带有一个event.persisted＝false的参数用户指示
当前是第一次运行。
###pagehide event
同unload一样，不过由于定义unload后无法使用memory cache，因此你可以定义pagehide来作同样的事情，这样还能
保证cache有效。
以上就是FF1.5的这个新特性。
最后的结论，是否该使用这个特性？
我的回答是NO！
整这么多特性，还不够累的。何况，这种违反W3C的特性实在是不可取。
所以，我干脆用:
&#8220;cache-control: no-store&#8221;
直接将它扼杀掉，
于是，世界终于太平了。
]]></description>
			<content:encoded><![CDATA[<p>今天用jQuery作一个界面发现了firefox的一个问题,操作过程很简单：<br />
1个form，用户先填写一些基本信息，保存，服务器返回taconite的response,会打开原来隐藏的<br />
扩展属性面板，这样用户可以填写那些关联的属性，上传附件等等。当保存时，服务器端返回的taconite<br />
会设置一个hidden field（id）的值为刚才保存的记录的主键，这样，当提交其他的关联数据时可以<br />
附带这个id。</p>
<p>一切都很好，但是当我刷新的时候发现了奇怪事情，id值没有被复位，仍然是刚才传回的id，我用firebug发现，<br />
html中的value是空的，但是用$(&#8216;#id&#8217;).val()返回的值竟然非空！</p>
<p>这个现象上周作passport时候也出现，不过我是在document.ready里清空了这个值。也就没在意。</p>
<p>今天又出现，不由让我奇异，此外，由于使用的smarty模板和js是复用的（新建和编辑用的是同一个），<br />
没有办法全部重置为空。</p>
<p>我作了下测试,当装载时调用form的reset方法，其他的field都被重置回去了，但是id这个hidden field<br />
没有变化。</p>
<p>反复测试，发现：<br />
如果是command+R，或者点击刷新，上面现象重复。<br />
如果是shift+command+R，或者地址栏旁边的点击转到，上述现象消失。</p>
<p>googling 了一下，发现很多人有同样的困惑，尤其是一些flash，进度条经常无法正常显示。<br />
很多人给出了各种答案，但是很多人又都否定了那些答案的有效性。</p>
<p>不过在一个老外的blog上，发现了一个线索，他指出，这是FF1.5的一个“特性”，即所谓的memory cache。<br />
FF1.5以后增加了一个特性，它将当前页面很多东西都缓存到内存中，当你back-forward操作的时候，直接<br />
会从内存中恢复。这也就是为什么虽然html的value是空，但是dom树中的值非空。</p>
<p>如何解决呢？<br />
根据<a href="http://developer.mozilla.org/en/docs/Using_Firefox_1.5_caching">FF的说明</a>，以下情况下不会使用memory cache:</p>
<p>1.定义了unload事件处理</p>
<p>2.设置了&#8221;cache-control: no-store&#8221;</p>
<p>3.设置了&#8221;cache-control: no-cache&#8221; 且站点为HTTPS.</p>
<p>4.页面未完全载入，用户就离开当前页面</p>
<p>5.使用页面所属的frameset不允许缓存</p>
<p>6.the page is in a frame and the user loads a new page within that frame (in this case, when the user navigates away from the page, the content that was last loaded into the frames is what is cached)</p>
<p>严重后果：</p>
<p>如果页面是从cache中载入的，那么所有的Inline script和onload事件将不被运行。</p>
<p>如何解决呢？为了使用这个所谓的新特性，FF1.5中为此增加了2个新的event:</p>
<p>###pageshow event</p>
<p>pageshow event同onload事件，不过即使从cache中load的，也会执行。<br />
当第一初始化时,pageshow会在onload后触发，不过带有一个event.persisted＝false的参数用户指示<br />
当前是第一次运行。</p>
<p>###pagehide event</p>
<p>同unload一样，不过由于定义unload后无法使用memory cache，因此你可以定义pagehide来作同样的事情，这样还能<br />
保证cache有效。</p>
<p>以上就是FF1.5的这个新特性。</p>
<p>最后的结论，是否该使用这个特性？</p>
<p>我的回答是NO！<br />
整这么多特性，还不够累的。何况，这种违反W3C的特性实在是不可取。</p>
<p>所以，我干脆用:</p>
<p>&#8220;cache-control: no-store&#8221;</p>
<p>直接将它扼杀掉，<br />
于是，世界终于太平了。</p>
]]></content:encoded>
			<wfw:commentRss>http://nightsailer.com/2007/09/23/66.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Google gears</title>
		<link>http://nightsailer.com/2007/06/03/57.html</link>
		<comments>http://nightsailer.com/2007/06/03/57.html#comments</comments>
		<pubDate>Sun, 03 Jun 2007 05:51:03 +0000</pubDate>
		<dc:creator>nightsailer</dc:creator>
				<category><![CDATA[Javascript]]></category>

		<guid isPermaLink="false">http://nightsailer.hibeauty.cn/2007/06/03/57.html</guid>
		<description><![CDATA[http://gears.google.com/
http://code.google.com/apis/gears/
Google gears 可以让你离线状态下使用web 程序，比如google reader,notebook，
原先的web程序可以通过gears api读取、存储数据到本地，并且存储的内容是一个数据库，可以检索的，
同时完全支持异步执行操作。
当安装gears扩展后，在使用支持的程序比如 google reader时，会出现一个绿色的小箭头，点击会进入脱机
模式，此时gear会自动下载相应的数据和代码。无需网络，你也可以查看你订阅的rss了。
gears的发布，感觉google越发挑战ms的地位，当即便脱机也可以使用google的office产品，还需要安装ms office吗？
对于我们开发者来说，gears可以和applo联合使用，或者直接应用在你的web程序中，很快，你的web app可以支持offline了，我会近期尝试一下。gears可以让你的web应用直接扩展到桌面，听起来很酷啊。
]]></description>
			<content:encoded><![CDATA[<p>http://gears.google.com/</p>
<p>http://code.google.com/apis/gears/</p>
<p>Google gears 可以让你离线状态下使用web 程序，比如google reader,notebook，<br />
原先的web程序可以通过gears api读取、存储数据到本地，并且存储的内容是一个数据库，可以检索的，<br />
同时完全支持异步执行操作。</p>
<p>当安装gears扩展后，在使用支持的程序比如 google reader时，会出现一个绿色的小箭头，点击会进入脱机<br />
模式，此时gear会自动下载相应的数据和代码。无需网络，你也可以查看你订阅的rss了。<br />
gears的发布，感觉google越发挑战ms的地位，当即便脱机也可以使用google的office产品，还需要安装ms office吗？</p>
<p>对于我们开发者来说，gears可以和applo联合使用，或者直接应用在你的web程序中，很快，你的web app可以支持offline了，我会近期尝试一下。gears可以让你的web应用直接扩展到桌面，听起来很酷啊。</p>
]]></content:encoded>
			<wfw:commentRss>http://nightsailer.com/2007/06/03/57.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>jQuery的2则重要新闻</title>
		<link>http://nightsailer.com/2007/02/23/34.html</link>
		<comments>http://nightsailer.com/2007/02/23/34.html#comments</comments>
		<pubDate>Fri, 23 Feb 2007 10:30:47 +0000</pubDate>
		<dc:creator>nightsailer</dc:creator>
				<category><![CDATA[Javascript]]></category>

		<guid isPermaLink="false">http://nightsailer.hibeauty.cn/2007/02/23/34.html</guid>
		<description><![CDATA[- jQuery支持OpenAjax标准，jQuery将可以和其他支持该标准的lib良好协作 &#8211; yui-ext的作者和jQuery作者将协作，yui-ext 1.0将支持jQuery！  最后一条新闻是最让人兴奋的，有了Ext的组件支持，加上jQeury的简介强大的特性，几乎没有人能抗拒这种诱惑，呵呵，本来我在doggy中将使用jQuery,那时还羡慕Ext，有点犹豫是否该用yui,后来最终还是选中jQuery，现在看来，选择是没错的。  http://jquery.com/blog/2007/02/19/jquery-and-jack-slocums-ext/
]]></description>
			<content:encoded><![CDATA[<p>- jQuery支持OpenAjax标准，jQuery将可以和其他支持该标准的lib良好协作 &#8211; yui-ext的作者和jQuery作者将协作，yui-ext 1.0将支持jQuery！  最后一条新闻是最让人兴奋的，有了Ext的组件支持，加上jQeury的简介强大的特性，几乎没有人能抗拒这种诱惑，呵呵，本来我在doggy中将使用jQuery,那时还羡慕Ext，有点犹豫是否该用yui,后来最终还是选中jQuery，现在看来，选择是没错的。  http://jquery.com/blog/2007/02/19/jquery-and-jack-slocums-ext/</p>
]]></content:encoded>
			<wfw:commentRss>http://nightsailer.com/2007/02/23/34.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Firebug1.0beta</title>
		<link>http://nightsailer.com/2007/01/23/28.html</link>
		<comments>http://nightsailer.com/2007/01/23/28.html#comments</comments>
		<pubDate>Tue, 23 Jan 2007 14:07:29 +0000</pubDate>
		<dc:creator>nightsailer</dc:creator>
				<category><![CDATA[Javascript]]></category>
		<category><![CDATA[firebug]]></category>

		<guid isPermaLink="false">http://nightsailer.hibeauty.cn/2007/01/23/28.html</guid>
		<description><![CDATA[一直用firebug0.4，由于T41崩溃，重装系统后我把FF升级到了2.01，firebug还是0.4x，刚才偶尔访问了它的主页，发现已经升级到1.0beta，下载后发现改进很大，简直是一个可以当可视化的编辑器了，调试css非常爽了。1.0增加了很多实用的功能，比如net面板，可以查看当前页面各个元素的下载时间，每个图片、文件的请求的Http的Request和Response，哎，有了firebug，可以省去原来要装的一大堆extension。
此外，还有一个firebug lite，用于在IE，opera，safari上面模拟实现firebug的功能，正好今晚上要在safari上测试一下，挺及时的。
http://www.getfirebug.com/
UPDATE:
Firebug1.0已经正式发布
]]></description>
			<content:encoded><![CDATA[<p>一直用firebug0.4，由于T41崩溃，重装系统后我把FF升级到了2.01，firebug还是0.4x，刚才偶尔访问了它的主页，发现已经升级到1.0beta，下载后发现改进很大，简直是一个可以当可视化的编辑器了，调试css非常爽了。1.0增加了很多实用的功能，比如net面板，可以查看当前页面各个元素的下载时间，每个图片、文件的请求的Http的Request和Response，哎，有了firebug，可以省去原来要装的一大堆extension。</p>
<p>此外，还有一个firebug lite，用于在IE，opera，safari上面模拟实现firebug的功能，正好今晚上要在safari上测试一下，挺及时的。</p>
<p><a href="http://www.getfirebug.com/">http://www.getfirebug.com/</a></p>
<p>UPDATE:<br />
Firebug1.0已经正式发布</p>
]]></content:encoded>
			<wfw:commentRss>http://nightsailer.com/2007/01/23/28.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>JQuery之美</title>
		<link>http://nightsailer.com/2007/01/05/20.html</link>
		<comments>http://nightsailer.com/2007/01/05/20.html#comments</comments>
		<pubDate>Fri, 05 Jan 2007 08:13:30 +0000</pubDate>
		<dc:creator>nightsailer</dc:creator>
				<category><![CDATA[Javascript]]></category>

		<guid isPermaLink="false">http://nightsailer.chinavisual.com/2007/01/05/20.html</guid>
		<description><![CDATA[Jquery是我所见过最简洁和优雅的ajax框架。相比prototype，我更喜欢jquery。
现在对dojo已经逐渐厌烦，虽然dojo的mailinglist仍然关注，不过后面的项目我不会再用了，当然dojo是非常非常优秀，
我也用它作了很多有趣的事情。但，当发现了jquery，一切都变了，哈哈。
JQuery可以让我不再到页面中增加更多onclick等的js代码，真正做到了逻辑和页面的分开。尤其是在采用xhtml/css的模版后，
页面中可以没有js代码的痕迹，页面制作和代码编写可以分开了。在SEO上也可以做的很好，让程序支持REST方式更加简单。
我做了个小测试，用户点击可以用ajax返回页面的局部，直接输入链接则返回整个html页面。ajax应用中bookmarks的问题也
可以解决的比较好。
]]></description>
			<content:encoded><![CDATA[<p><a href="http://jquery.com">Jquery</a>是我所见过最简洁和优雅的ajax框架。相比prototype，我更喜欢jquery。<br />
现在对dojo已经逐渐厌烦，虽然dojo的mailinglist仍然关注，不过后面的项目我不会再用了，当然dojo是非常非常优秀，<br />
我也用它作了很多有趣的事情。但，当发现了jquery，一切都变了，哈哈。<br />
JQuery可以让我不再到页面中增加更多onclick等的js代码，真正做到了逻辑和页面的分开。尤其是在采用xhtml/css的模版后，<br />
页面中可以没有js代码的痕迹，页面制作和代码编写可以分开了。在SEO上也可以做的很好，让程序支持REST方式更加简单。<br />
我做了个小测试，用户点击可以用ajax返回页面的局部，直接输入链接则返回整个html页面。ajax应用中bookmarks的问题也<br />
可以解决的比较好。</p>
]]></content:encoded>
			<wfw:commentRss>http://nightsailer.com/2007/01/05/20.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>2个js相关的项目</title>
		<link>http://nightsailer.com/2006/03/12/6.html</link>
		<comments>http://nightsailer.com/2006/03/12/6.html#comments</comments>
		<pubDate>Sun, 12 Mar 2006 06:30:23 +0000</pubDate>
		<dc:creator>nightsailer</dc:creator>
				<category><![CDATA[Javascript]]></category>

		<guid isPermaLink="false">http://nightsailer.chinavisual.com/2006/03/12/6.html</guid>
		<description><![CDATA[javaeye的这个帖子引出2个有趣的项目，和js相关的：
http://jsvm.org/
http://j2s.sourceforge.net/
2个项目的作者都是国人，而且都具有java和js的多年经验，很不错的。
相对而言，我对后者颇有兴趣，不过暂时不会在eps中使用。jsvm看起来也不错，已经把yahoo ui库移植进去了，但是目前dojo已经足够我们使用了，也不会考虑的。即便如此，如果做快速的东西，可以考虑jsvm版本的yahoo ui.
]]></description>
			<content:encoded><![CDATA[<p>javaeye的这个<a href="http://forum.javaeye.com/viewtopic.php?t=7252&#038;start=60&#038;postdays=0&#038;postorder=asc&#038;highlight=">帖子</a>引出2个有趣的项目，和js相关的：<br />
<a href="http://jsvm.org/">http://jsvm.org/</a></p>
<p><a href="http://j2s.sourceforge.net/">http://j2s.sourceforge.net/</a></p>
<p>2个项目的作者都是国人，而且都具有java和js的多年经验，很不错的。</p>
<p>相对而言，我对后者颇有兴趣，不过暂时不会在eps中使用。jsvm看起来也不错，已经把yahoo ui库移植进去了，但是目前dojo已经足够我们使用了，也不会考虑的。即便如此，如果做快速的东西，可以考虑jsvm版本的yahoo ui.</p>
]]></content:encoded>
			<wfw:commentRss>http://nightsailer.com/2006/03/12/6.html/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>
