<?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>刘钢 - 我是UED &#187; 前端开发</title>
	<atom:link href="http://www.iamued.com/qianduan/feed" rel="self" type="application/rss+xml" />
	<link>http://www.iamued.com</link>
	<description>http://www.IamUED.com</description>
	<lastBuildDate>Wed, 28 Jul 2010 12:58:32 +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>太NB了：Google Docs Ctrl + C 技术浅析</title>
		<link>http://www.iamued.com/qianduan/1612.html</link>
		<comments>http://www.iamued.com/qianduan/1612.html#comments</comments>
		<pubDate>Tue, 27 Jul 2010 09:52:29 +0000</pubDate>
		<dc:creator>RichieLiu</dc:creator>
				<category><![CDATA[JavaScript脚本]]></category>
		<category><![CDATA[前端开发]]></category>
		<category><![CDATA[google]]></category>
		<category><![CDATA[前端]]></category>
		<category><![CDATA[复制]]></category>

		<guid isPermaLink="false">http://www.iamued.com/?p=1612</guid>
		<description><![CDATA[从玉伯那里转来的，Goole非常NB
用 google docs 打开 pdf 文件，选中文本：

表面上没有任何有趣的地方。但仔细一看，会发现选区的颜色是浅蓝色，而不是默认蓝。第一直觉是是有什么特殊的 CSS 属性，立马 firebug:

不看不知道，一看真蹊跷。selection-highlight 是选区，选区下面是一张图片 page-image!
于是立刻发现一个非常牛逼的特性：Ctrl + C 可以复制图片中的文字！
google 太强悍了，好在前端代码都是开源的，下面简单分析下。
首先数据在哪呢，这个比较容易找到，在 firebug 里有一个请求返回的数据如下：
&#60;?xml version="1.0" encoding="UTF-8"?&#62;

&#60;pdf2xml&#62;
&#60;meta name="Creator" content="Adobe Acrobat 8.1 Combine Files"/&#62;
&#60;meta name="Producer" content="Adobe Acrobat 8.1"/&#62;
&#60;meta name="CreationDate" content="20100316080708-04'00'"/&#62;
&#60;page t="0" l="0" w="612" h="773"&#62;
 &#60;text l="188" t="754" w="237" h="11" p="188,24,214,15,232,37,271,
7,280,39,322,7,330,11,344,24,370,23,395,20,418,7"&#62;
Please post comments or corrections to the Author Online forum at&#60;/text&#62;
...
有了这份数据，就可以根据选区得到对应的文本。
接下来的问题是，如何将文本放到剪贴板里？第一反应是用 flash 实现，但感觉 google 不会这么做。禁用掉 flash [...]]]></description>
			<content:encoded><![CDATA[<p>从<a href="http://lifesinger.org/blog/2010/07/goog-docs-copy-tech/">玉伯</a>那里转来的，Goole非常NB<br />
用 google docs 打开 pdf 文件，选中文本：<br />
<img src="http://www.iamued.com/wp-content/uploads/auto_save_image/2010/07/175239CWS.png" alt="" width="429" height="171" /></p>
<p>表面上没有任何有趣的地方。但仔细一看，会发现选区的颜色是浅蓝色，而不是默认蓝。第一直觉是是有什么特殊的 CSS 属性，立马 firebug:<br />
<img src="http://www.iamued.com/wp-content/uploads/auto_save_image/2010/07/175243Tbx.png" alt="" width="526" height="324" /></p>
<p>不看不知道，一看真蹊跷。<code>selection-highlight</code> 是选区，选区下面是一张图片 <code>page-image</code>!<br />
于是立刻发现一个非常牛逼的特性：<strong><code>Ctrl + C</code> 可以复制图片中的文字！</strong></p>
<p>google 太强悍了，好在前端代码都是开源的，下面简单分析下。</p>
<p>首先数据在哪呢，这个比较容易找到，在 firebug 里有一个请求返回的数据如下：</p>
<pre>&lt;?xml version="1.0" encoding="UTF-8"?&gt;

&lt;pdf2xml&gt;
&lt;meta name="Creator" content="Adobe Acrobat 8.1 Combine Files"/&gt;
&lt;meta name="Producer" content="Adobe Acrobat 8.1"/&gt;
&lt;meta name="CreationDate" content="20100316080708-04'00'"/&gt;
&lt;page t="0" l="0" w="612" h="773"&gt;
 &lt;text l="188" t="754" w="237" h="11" p="188,24,214,15,232,37,271,
7,280,39,322,7,330,11,344,24,370,23,395,20,418,7"&gt;
Please post comments or corrections to the Author Online forum at&lt;/text&gt;
...</pre>
<p>有了这份数据，就可以根据选区得到对应的文本。</p>
<p>接下来的问题是，如何将文本放到剪贴板里？第一反应是用 flash 实现，但感觉 google 不会这么做。禁用掉 flash 插件后，功能正常，这说明是用 js 实现的。</p>
<p>通过 Profile 工具 + Fiddler + 肉眼识别 + 运气，终于定位到了关键代码：</p>
<pre>n.am = function(a) {
    if (! (!this.k.Ca &amp;&amp; Mr(this, a))) {
        ac &amp;&amp; this.lf.focus();
        this.lf.select();
        Nr(this, a)
    }
};</pre>
<p>只要注释掉上面的代码，<code>Ctrl + C</code> 复制功能就无效。<code>focus</code> 和 <code>select</code> 为我们提供了进一步线索，在 HTML 里，发现了秘密：<br />
<img src="http://www.iamued.com/wp-content/uploads/auto_save_image/2010/07/175246JOL.png" alt="" width="514" height="50" /></p>
<p>到此真相大白：当用户按下 <code>Ctrl + C</code> 时，js 会注入事件，首先根据坐标从数据里取出对应文本，然后将文本赋值给 textarea, 并将其激活和选中。这样，就和用户选中 textarea 的内容，再按下 <code>Ctrl + C</code> 的效果是一样了。</p>
<p>强悍的 google, 技术创新无处不在！</p>
<p>注意：利用 textarea 只能复制纯文本，如果想复制富文本，可以借鉴 google docs 编辑 Word 文档时的处理方式：采用 iframe 充当临时容器，有兴趣的可以进一步研究。</p>
<p>简单演示：<a href="http://lifesinger.github.com/lab/2010/goog-docs-copy-demo.html">goog-docs-copy-demo.html</a></p>
<p>发现这个秘密后，最近在疯狂搞编辑的牛人<a href="http://yiminghe.javaeye.com/">承玉</a>（欢迎搞编辑器的其他牛人加盟）立刻想到了各大站长们非常喜爱的功能：<a href="http://yiminghe.javaeye.com/blog/722264">附带警告信息的禁止copy</a>. 据说，能成功复制的，都不是“人”。</p>
<p>我的尝试是：点击按钮，复制指定文本到 Clipboard 里。应用场景是点击按钮复制证件号码等。尝试代码大家可以看上面 demo 页面源码中的注释。事件可以正常模拟并分发出去，但复制操作惨兮兮地失败了。感觉原因在于浏览器安全限制，对于触发的异步 <code>Ctrl + C</code>, 浏览器会限制其功能。</p>
<p>Google 的产品里有很多秘密，真诱人，创意无限！</p>
<h2  class="related_post_title">您可能还关注的？</h2><ul class="related_post"><li><a href="http://www.iamued.com/qianduan/1486.html" title="判断 iframe 是否加载完成的完美方法">判断 iframe 是否加载完成的完美方法</a></li><li><a href="http://www.iamued.com/qianduan/1382.html" title="即拷即用动画函数：透明度渐变、位置移动、尺寸变化">即拷即用动画函数：透明度渐变、位置移动、尺寸变化</a></li><li><a href="http://www.iamued.com/qianduan/1010.html" title="[原创]用JS控制显示子菜单个数 自动下拉">[原创]用JS控制显示子菜单个数 自动下拉</a></li><li><a href="http://www.iamued.com/qianduan/600.html" title="offsetLeft and offsetTop gives wrong coords in IE ">offsetLeft and offsetTop gives wrong coords in IE </a></li><li><a href="http://www.iamued.com/qianduan/1450.html" title="讨论闭包传入参数：window &#038; undefined">讨论闭包传入参数：window &#038; undefined</a></li></ul>]]></content:encoded>
			<wfw:commentRss>http://www.iamued.com/qianduan/1612.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Webrebuild 2010分享</title>
		<link>http://www.iamued.com/qianduan/1574.html</link>
		<comments>http://www.iamued.com/qianduan/1574.html#comments</comments>
		<pubDate>Tue, 20 Jul 2010 14:38:07 +0000</pubDate>
		<dc:creator>RichieLiu</dc:creator>
				<category><![CDATA[前端开发]]></category>
		<category><![CDATA[WebRebuild]]></category>
		<category><![CDATA[前端大会]]></category>

		<guid isPermaLink="false">http://www.iamued.com/?p=1574</guid>
		<description><![CDATA[真的很荣幸，这次参加了webrebuild的大会，也非常遗憾，上次没有参加
说真的，这次的收获非常大，几位嘉宾演讲的主题和内容，都让我受益颇多
感谢为这次会议奔波劳累的工作人员，你们辛苦了
嘉宾分享的内容（转自崔凯的博客）：

data on the web Klaus Birkenbihl（W3C &#124; 翻译：安琪）
建立前端开发团队 蒋定宇（D-Link 台湾）
谈谈HTML5和CSS3 谢子斌（Opera 马来西亚）
网页性能优化之路 范俊豪（腾讯 深圳）
前端基础架构 张克军（豆瓣 北京）
从浏览器渲染看标准的重要性 梁璟彪（腾讯 深圳）

以上为几位嘉宾分享的PPT，一个小细节：克军的PPT经验是html+css+js做的……前端无敌！
具体的我还在吸收中……
希望以后能有更多的前端会议推动整个前端行业的发展
您可能还关注的？WebRebuild.ORG 北京第二届年会 宣传一下]]></description>
			<content:encoded><![CDATA[<p>真的很荣幸，这次参加了webrebuild的大会，也非常遗憾，上次没有参加</p>
<p>说真的，这次的收获非常大，几位嘉宾演讲的主题和内容，都让我受益颇多</p>
<p>感谢为这次会议奔波劳累的工作人员，你们辛苦了</p>
<h5>嘉宾分享的内容（转自崔凯的博客）：</h5>
<ul>
<li><a href="http://www.w3.org/2010/Talks/0717Beijing-KB/" target="_blank">data on the web</a> Klaus Birkenbihl（W3C | 翻译：安琪）</li>
<li><a href="http://www.slideshare.net/josephj/webrebuild" target="_blank">建立前端开发团队</a> 蒋定宇（D-Link 台湾）</li>
<li><a href="http://www.slideshare.net/zibin/zibin-webrebuild-beijing" target="_blank">谈谈HTML5和CSS3</a> 谢子斌（Opera 马来西亚）</li>
<li><a href="http://www.slideshare.net/greengnn/webrebuild-beijing-tommyfan">网页性能优化之路</a> 范俊豪（腾讯 深圳）</li>
<li><a href="http://hikejun.com/sharing/2010webrebuild/?file=fe-infrastructure.html#1" target="_blank">前端基础架构</a> 张克军（豆瓣 北京）</li>
<li><a href="http://www.slideshare.net/greengnn/ss-4787094" target="_blank">从浏览器渲染看标准的重要性</a> 梁璟彪（腾讯 深圳）</li>
</ul>
<p>以上为几位嘉宾分享的PPT，一个小细节：克军的PPT经验是html+css+js做的……前端无敌！</p>
<p>具体的我还在吸收中……</p>
<p>希望以后能有更多的前端会议推动整个前端行业的发展</p>
<h2  class="related_post_title">您可能还关注的？</h2><ul class="related_post"><li><a href="http://www.iamued.com/qianduan/1459.html" title="WebRebuild.ORG 北京第二届年会 宣传一下">WebRebuild.ORG 北京第二届年会 宣传一下</a></li></ul>]]></content:encoded>
			<wfw:commentRss>http://www.iamued.com/qianduan/1574.html/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>[分享]W3C Javascript 最新Chm格式下载</title>
		<link>http://www.iamued.com/qianduan/1547.html</link>
		<comments>http://www.iamued.com/qianduan/1547.html#comments</comments>
		<pubDate>Wed, 14 Jul 2010 12:24:28 +0000</pubDate>
		<dc:creator>RichieLiu</dc:creator>
				<category><![CDATA[JavaScript脚本]]></category>
		<category><![CDATA[前端开发]]></category>
		<category><![CDATA[chm]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[w3c]]></category>
		<category><![CDATA[帮助]]></category>
		<category><![CDATA[索引]]></category>

		<guid isPermaLink="false">http://www.iamued.com/?p=1547</guid>
		<description><![CDATA[感谢Blueidea的Zerolone同学为我们提供了W3C Javascript 最新Chm版哦：）
确实很好，支持索引，可以方便的离线查询了
下载
http://code.google.com/p/mootoolstools/downloads/list

您可能还关注的？一个在线JS代码调试器:jsfiddle分享：建议“前端开发”人员掌握的技术测试你的JavaScript能力？ 我还需要恶补！关于top置顶的交互体验CSS阴影详解 ]]></description>
			<content:encoded><![CDATA[<p>感谢Blueidea的<a id="userinfo4978431" href="http://bbs.blueidea.com/space-uid-117813.html" target="_blank">Zerolone</a>同学为我们提供了W3C Javascript 最新Chm版哦：）</p>
<p>确实很好，支持索引，可以方便的离线查询了<br />
下载</p>
<p><a href="http://code.google.com/p/mootoolstools/downloads/list" target="_blank">http://code.google.com/p/mootoolstools/downloads/list</a></p>
<p><a href="http://www.iamued.com/wp-content/uploads/auto_save_image/2010/07/202447SfJ.jpg&amp;noupdate=yes&amp;nothumb=yes" target="_blank"><img src="http://www.iamued.com/wp-content/uploads/auto_save_image/2010/07/202447SfJ.jpg" alt="w3c.JPG" /></a></p>
<h2  class="related_post_title">您可能还关注的？</h2><ul class="related_post"><li><a href="http://www.iamued.com/qianduan/1289.html" title="一个在线JS代码调试器:jsfiddle">一个在线JS代码调试器:jsfiddle</a></li><li><a href="http://www.iamued.com/qianduan/1278.html" title="分享：建议“前端开发”人员掌握的技术">分享：建议“前端开发”人员掌握的技术</a></li><li><a href="http://www.iamued.com/qianduan/1267.html" title="测试你的JavaScript能力？ 我还需要恶补！">测试你的JavaScript能力？ 我还需要恶补！</a></li><li><a href="http://www.iamued.com/qianduan/816.html" title="关于top置顶的交互体验">关于top置顶的交互体验</a></li><li><a href="http://www.iamued.com/qianduan/642.html" title="CSS阴影详解 ">CSS阴影详解 </a></li></ul>]]></content:encoded>
			<wfw:commentRss>http://www.iamued.com/qianduan/1547.html/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>一个保证利润的彩票计算器[愁啊，我的数学功底]</title>
		<link>http://www.iamued.com/qianduan/1525.html</link>
		<comments>http://www.iamued.com/qianduan/1525.html#comments</comments>
		<pubDate>Sun, 04 Jul 2010 00:29:01 +0000</pubDate>
		<dc:creator>RichieLiu</dc:creator>
				<category><![CDATA[JavaScript脚本]]></category>
		<category><![CDATA[前端开发]]></category>
		<category><![CDATA[彩票计算]]></category>
		<category><![CDATA[算法]]></category>

		<guid isPermaLink="false">http://www.iamued.com/?p=1525</guid>
		<description><![CDATA[Demo：http://www.iamued.com/demo/jisuan.html
核心代码
 &#60;script&#62;
  function js(){
	var jine=parseInt(document.getElementById(&#34;je&#34;).value);//每注金额
	var jiangjin=parseInt(document.getElementById(&#34;jj&#34;).value);//每注奖金
	var num=parseInt(document.getElementById(&#34;num&#34;).value);//计算期数
	var win=parseInt(document.getElementById(&#34;win&#34;).value);//保证利润数
	var content=document.getElementById(&#34;content&#34;);//输出容器
	var countmoney=0;//累计总投入
	var janci=jiangjin-jine;//每注利润值
	for(var i=1;i&#60;=num;i++){
		//计算倍数
		var beishu=Math.ceil((countmoney+win)/janci);
		//累计投入金额
		countmoney=(countmoney+(beishu*jine));
		//本期奖金
		var nowjiangjin=(beishu*jiangjin);

		content.innerHTML=content.innerHTML+&#34;第&#34;+i+&#34;期&#38;nbsp需购买：&#34;+beishu+&#34;注&#38;nbsp;本期奖金：&#34;+nowjiangjin+&#34;&#38;nbsp;总投入:&#34;+countmoney+&#34;&#38;nbsp;净利润:&#34;+(nowjiangjin-countmoney)+&#34;&#60;br&#62;&#34;;
	}
  }
  &#60;/script&#62;

看具体效果的请去 Demo：http://www.iamued.com/demo/jisuan.html
还有一个C#软件版本的 直接放出下载地址吧 http://www.iamued.com/demo/jisuan.exe
就这么简单的一个算法 折腾了我半天 愁
随机日志JavaScript的eval(“{JSON object string}”)问题JavaScript对象探讨转：产品总监可能更适合运营团队CSS阴影详解 【译】在网页设计中，如何使用图标来支持内容？]]></description>
			<content:encoded><![CDATA[<p>Demo：<a href="http://www.iamued.com/demo/jisuan.html">http://www.iamued.com/demo/jisuan.html</a></p>
<p>核心代码</p>
<pre class="brush: jscript;"> &lt;script&gt;
  function js(){
	var jine=parseInt(document.getElementById(&quot;je&quot;).value);//每注金额
	var jiangjin=parseInt(document.getElementById(&quot;jj&quot;).value);//每注奖金
	var num=parseInt(document.getElementById(&quot;num&quot;).value);//计算期数
	var win=parseInt(document.getElementById(&quot;win&quot;).value);//保证利润数
	var content=document.getElementById(&quot;content&quot;);//输出容器
	var countmoney=0;//累计总投入
	var janci=jiangjin-jine;//每注利润值
	for(var i=1;i&lt;=num;i++){
		//计算倍数
		var beishu=Math.ceil((countmoney+win)/janci);
		//累计投入金额
		countmoney=(countmoney+(beishu*jine));
		//本期奖金
		var nowjiangjin=(beishu*jiangjin);

		content.innerHTML=content.innerHTML+&quot;第&quot;+i+&quot;期&amp;nbsp需购买：&quot;+beishu+&quot;注&amp;nbsp;本期奖金：&quot;+nowjiangjin+&quot;&amp;nbsp;总投入:&quot;+countmoney+&quot;&amp;nbsp;净利润:&quot;+(nowjiangjin-countmoney)+&quot;&lt;br&gt;&quot;;
	}
  }
  &lt;/script&gt;
</pre>
<p>看具体效果的请去 Demo：<a href="http://www.iamued.com/demo/jisuan.html">http://www.iamued.com/demo/jisuan.html</a></p>
<p>还有一个C#软件版本的 直接放出下载地址吧 <a href="http://www.iamued.com/demo/jisuan.exe">http://www.iamued.com/demo/jisuan.exe</a></p>
<p>就这么简单的一个算法 折腾了我半天 愁</p>
<h2  class="related_post_title">随机日志</h2><ul class="related_post"><li><a href="http://www.iamued.com/product/769.html" title="优秀产品经理的核心技能(转)">优秀产品经理的核心技能(转)</a></li><li><a href="http://www.iamued.com/product/1504.html" title="也谈谈做平台产品初期运营的困境">也谈谈做平台产品初期运营的困境</a></li><li><a href="http://www.iamued.com/product/1071.html" title="《从》之“产品设计是什么？”">《从》之“产品设计是什么？”</a></li><li><a href="http://www.iamued.com/qianduan/596.html" title="Javascript正则表达式基础">Javascript正则表达式基础</a></li><li><a href="http://www.iamued.com/qianduan/1373.html" title="kejun的HTML面试题答案揭晓">kejun的HTML面试题答案揭晓</a></li></ul>]]></content:encoded>
			<wfw:commentRss>http://www.iamued.com/qianduan/1525.html/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>微软的jQuery国际化插件</title>
		<link>http://www.iamued.com/qianduan/1506.html</link>
		<comments>http://www.iamued.com/qianduan/1506.html#comments</comments>
		<pubDate>Wed, 30 Jun 2010 13:37:48 +0000</pubDate>
		<dc:creator>RichieLiu</dc:creator>
				<category><![CDATA[JavaScript脚本]]></category>
		<category><![CDATA[前端开发]]></category>
		<category><![CDATA[jquery]]></category>
		<category><![CDATA[国际化]]></category>

		<guid isPermaLink="false">http://www.iamued.com/?p=1506</guid>
		<description><![CDATA[[原文发表地址] jQuery  Globalization Plugin from Microsoft
[原文发表时间] Thursday, June  10, 2010 10:34 PM
上个月，我写了一篇关于微软如何在向 jQuery贡献代码的文章，也谈到了在第一批贡献的代码中的一些功能：jQuery 模板和数据链接支持.
今天，我们发布了一个新的jQuery国际化插件的原型，你可以在你的JavaScript程序中引用这 个插件添加国际化功能。插件涵盖了超过350种文化的国际化信息，从苏格兰盖尔语、佛里斯兰语、匈牙利语、日语到加拿大英语等。插件将以开源的形式发布。
你可以从我们的Github代码库下载插件的原型版本：
http://github.com/nje/jquery-glob
另外也可以在这里下 载一些示例了解简单的用法。
理解国际化


jQuery国际化插件可以让你在 JavaScript代码中轻松地处理不同文化之间的数字、货币和日期格式。例如，你可以使用这个插件正确地显示一个国家的货币符号：

你也可以用这个插件编排日期格式，这样日期和月份 会以正确的顺序显示，而日期和月份的名称也能够得到正确的翻译：

请注意上图阿拉伯的日期格式中，年份显示成了 1431。这是因为年份已经按照回历的方式转换过了。
一些文化差异比较明显，例如使用不同的货币或者不同的月份名称等。但另外一些差异 却细微而又出人意料。例如，在有一些文化里，数字不是以均衡的方式分组的。在语言标记为“te-IN”的文化中（印度东部的泰卢固语），数字先按3位数字 分组，然后再每2位数字分组。因此象数字一百万（1000000）就会被写成“10,00,000”。而有些文化就根本不对数字进行分组。所有这些细微的 差异都能够被jQuery国际化插件自动处理。
要得到正确的日期可能非常需要技巧。不同的文化采用不同的历法，比如公历和回历。同一种 文化也可能会采用多个历法，比如日本就同时采用公历和以天皇年号推算的纪年历。插件提供了函数将日期在所有这些历法中相互转换。
使 用语言标记
jQuery国际化插件依据RFC 4646和RFC 5646标准里定义的语言标记来识别文化（参见 http://tools.ietf.org/html/rfc5646）， 语言标记通常由连字符将多个辅标签组合而成，比如：



语言标记
语言名称 （中文）


en-AU
英文（澳大 利亚）


en-BZ
英文（伯利兹）


en-CA
英文（加拿 大）


Id
印度尼西亚文


zh-CHS
中文（简体） — 标记不再使用


Zu
祖鲁文



请注意单一语言例如英语可以同时有多个语言标记。同是英语国家，加拿大采用的数字、货币和日期格式就不同于澳大利亚或者美国。你可以使用下面 的语言辅标签查找工具来获取某个文化的语言标记：
http://rishida.net/utils/subtags/
jQuery国际化插件里一个叫做globinfo的文件夹包含了这350种文化的信息。实际上，这个文件夹里有700多个文 件，因为它包括了每个文件的最小化（minify）和原始版本。
比如说，在globinfo文件夹，文件 jQuery.glob.en-AU.js对应英文（澳大利亚），jQuery.glob.id.js对应印度尼西亚文，而 jQuery.glob.zh-CHS对应简体中文。
示例：指定某种文化
假如你要创建 一个德文的网站，并且希望在客户端的JavaScript脚本里使用德语习惯显示所有的日期、货币符号和数字。那页面的源代码也许与下面的HTML类似：

注意上面的span标签，它们标识了所有需要用国 际化插件进行格式化的区域：商品的价格、上架的日期以及库存量。
要在网页里使用jQuery国际化插件，需要添加三个 JavaScript文件：jQuery库，jQuery国际化插件和指定的文化习惯信息：

在上例中，我将包含了德语文化习惯的 jQuery.glob.de-DE.js文件静态地加入到网页中，”de-DE”是语言标记，表示在德国使用的德语。
既然已经引入了 必要的脚本文件，就可以使用下面的客户端JavaScript代码调用插件来显示价格、上架的日期以及库存量等值：

jQuery国际化插件为jQuery函数库添加 了一些新的函数—包括preferCulture()和format()等新函数。你可以通过preferCulture()函数设置插件其他函数调用时 使用的默认文化。preferCulture()函数接受一个语言标记作为参数，这个函数会使用最接近这个语言标记的文化。
$.format() 函数才是真正用来编排货币、日期和数字格式的。$.format()函数的第二个参数是格式分类符。例如，传入“c”表示按货币的样式编排参数值。在 githum的ReadMe文件里详细描述了所有格式分类符代表的意思：http://github.com/nje/jquery-glob
当我们在浏览器打开这个页面的时候，所有的东西都是按照德语习惯正确显示。货币符号采用的是欧元符号，日期采用德语的日期和月份名称，并且，数 字分隔符用的是点号（.），而不是逗号（,）。

你可以通过运行示例下 载中的3_GermanSite.htm文件来了解上述方法。
示例：用户动态选择一个区域设置
在前面的例子中，我们显式指定使用德语文化习惯（通过引用jQuery.glob.de-DE.js文件）。我们现在来看看动态设置文化习惯的 几个例子。
比如说我们打算在页面上加一个包含所有350种文化的下拉框，当用户在下拉框里选择了一个文化，页面上所有的日期都按照这个 文化的习惯显示。

这是网页的HTML源代码：

请留意所有包含了日期的&#60;span&#62; 标签都有一个data-date属性（data-*属性是HTML  5里的新功能，同时在老的浏览器上也可以使用）。当用户在下拉框里选择了一个文化信息后，我们的代码将会格式化data-date属性里保存的日期。
为了显示所有可能的文化信息，我们要象下面这样添加一个叫jQuery.glob.all.js [...]]]></description>
			<content:encoded><![CDATA[<p>[原文发表地址] jQuery  Globalization Plugin from Microsoft</a></p>
<p>[原文发表时间] Thursday, June  10, 2010 10:34 PM</p>
<p>上个月，我写了一篇关于微软如何在<a href="http://weblogs.asp.net/scottgu/archive/2010/05/07/jquery-templates-and-data-linking-and-microsoft-contributing-to-jquery.aspx">向 jQuery贡献代码</a>的文章，也谈到了在第一批贡献的代码中的一些功能：<a href="http://weblogs.asp.net/scottgu/archive/2010/05/07/jquery-templates-and-data-linking-and-microsoft-contributing-to-jquery.aspx">jQuery 模板和数据链接</a>支持.</p>
<p>今天，我们发布了一个新的jQuery国际化插件的原型，你可以在你的JavaScript程序中引用这 个插件添加国际化功能。插件涵盖了超过350种文化的国际化信息，从苏格兰盖尔语、佛里斯兰语、匈牙利语、日语到加拿大英语等。插件将以开源的形式发布。</p>
<p>你可以从我们的Github代码库下载插件的原型版本：</p>
<p><a href="http://github.com/nje/jquery-glob">http://github.com/nje/jquery-glob</a></p>
<p>另外也可以在<a href="http://www.scottgu.com/blogposts/jQueryGlobalizationDemos.zip">这里</a>下 载一些示例了解简单的用法。</p>
<p><strong><span style="text-decoration: underline;">理解国际化</span></strong></p>
<p><strong><span style="text-decoration: underline;"><span id="more-1506"></span><br />
</span></strong></p>
<p>jQuery国际化插件可以让你在 JavaScript代码中轻松地处理不同文化之间的数字、货币和日期格式。例如，你可以使用这个插件正确地显示一个国家的货币符号：</p>
<p><a href="http://weblogs.asp.net/blogs/scottgu/image_1DAC1393.png"><img title="image" src="http://www.iamued.com/wp-content/uploads/auto_save_image/2010/06/213749XRe.png" border="0" alt="image" width="300" height="151" /></a></p>
<p>你也可以用这个插件编排日期格式，这样日期和月份 会以正确的顺序显示，而日期和月份的名称也能够得到正确的翻译：</p>
<p><a href="http://weblogs.asp.net/blogs/scottgu/image_7BE03B01.png"><img title="image" src="http://www.iamued.com/wp-content/uploads/auto_save_image/2010/06/213752NQB.png" border="0" alt="image" width="367" height="222" /></a></p>
<p>请注意上图阿拉伯的日期格式中，年份显示成了 1431。这是因为年份已经按照回历的方式转换过了。</p>
<p>一些文化差异比较明显，例如使用不同的货币或者不同的月份名称等。但另外一些差异 却细微而又出人意料。例如，在有一些文化里，数字不是以均衡的方式分组的。在语言标记为“te-IN”的文化中（印度东部的泰卢固语），数字先按3位数字 分组，然后再每2位数字分组。因此象数字一百万（1000000）就会被写成“10,00,000”。而有些文化就根本不对数字进行分组。所有这些细微的 差异都能够被jQuery国际化插件自动处理。</p>
<p>要得到正确的日期可能非常需要技巧。不同的文化采用不同的历法，比如公历和回历。同一种 文化也可能会采用多个历法，比如日本就同时采用公历和以天皇年号推算的纪年历。插件提供了函数将日期在所有这些历法中相互转换。</p>
<p><strong><span style="text-decoration: underline;">使 用语言标记</span></strong></p>
<p>jQuery国际化插件依据RFC 4646和RFC 5646标准里定义的语言标记来识别文化（参见 <a href="http://tools.ietf.org/html/rfc5646">http://tools.ietf.org/html/rfc5646</a>）， 语言标记通常由连字符将多个辅标签组合而成，比如：</p>
<table border="0" cellspacing="0" cellpadding="0">
<tbody>
<tr>
<td width="119" valign="top"><strong>语言标记</strong></td>
<td width="346" valign="top"><strong>语言名称 </strong><strong>（中文）</strong></td>
</tr>
<tr>
<td width="119" valign="top">en-AU</td>
<td width="346" valign="top">英文（澳大 利亚）</td>
</tr>
<tr>
<td width="119" valign="top">en-BZ</td>
<td width="346" valign="top">英文（伯利兹）</td>
</tr>
<tr>
<td width="119" valign="top">en-CA</td>
<td width="346" valign="top">英文（加拿 大）</td>
</tr>
<tr>
<td width="119" valign="top">Id</td>
<td width="346" valign="top">印度尼西亚文</td>
</tr>
<tr>
<td width="119" valign="top">zh-CHS</td>
<td width="346" valign="top">中文（简体） — 标记不再使用</td>
</tr>
<tr>
<td width="119" valign="top">Zu</td>
<td width="346" valign="top">祖鲁文</td>
</tr>
</tbody>
</table>
<p>请注意单一语言例如英语可以同时有多个语言标记。同是英语国家，加拿大采用的数字、货币和日期格式就不同于澳大利亚或者美国。你可以使用下面 的<strong>语言辅标签查找工具</strong>来获取某个文化的语言标记：</p>
<p><a href="http://rishida.net/utils/subtags/">http://rishida.net/utils/subtags/</a></p>
<p>jQuery国际化插件里一个叫做<strong>globinfo</strong>的文件夹包含了这350种文化的信息。实际上，这个文件夹里有700多个文 件，因为它包括了每个文件的最小化（minify）和原始版本。</p>
<p>比如说，在globinfo文件夹，文件 jQuery.glob.en-AU.js对应英文（澳大利亚），jQuery.glob.id.js对应印度尼西亚文，而 jQuery.glob.zh-CHS对应简体中文。</p>
<p><strong><span style="text-decoration: underline;">示例：指定某种文化</span></strong></p>
<p>假如你要创建 一个德文的网站，并且希望在客户端的JavaScript脚本里使用德语习惯显示所有的日期、货币符号和数字。那页面的源代码也许与下面的HTML类似：</p>
<p><a href="http://weblogs.asp.net/blogs/scottgu/image_737C65AA.png"><img title="image" src="http://www.iamued.com/wp-content/uploads/auto_save_image/2010/06/213753cGh.png" border="0" alt="image" width="586" height="384" /></a></p>
<p>注意上面的span标签，它们标识了所有需要用国 际化插件进行格式化的区域：商品的价格、上架的日期以及库存量。</p>
<p>要在网页里使用jQuery国际化插件，需要添加三个 JavaScript文件：jQuery库，jQuery国际化插件和指定的文化习惯信息：</p>
<p><a href="http://weblogs.asp.net/blogs/scottgu/image_46F335C4.png"><img title="image" src="http://www.iamued.com/wp-content/uploads/auto_save_image/2010/06/2137566LC.png" border="0" alt="image" width="628" height="71" /></a></p>
<p>在上例中，我将包含了德语文化习惯的 jQuery.glob.de-DE.js文件静态地加入到网页中，”de-DE”是语言标记，表示在德国使用的德语。</p>
<p>既然已经引入了 必要的脚本文件，就可以使用下面的客户端JavaScript代码调用插件来显示价格、上架的日期以及库存量等值：</p>
<p><a href="http://weblogs.asp.net/blogs/scottgu/image_454269F0.png"><img title="image" src="http://www.iamued.com/wp-content/uploads/auto_save_image/2010/06/213757b4R.png" border="0" alt="image" width="561" height="396" /></a></p>
<p>jQuery国际化插件为jQuery函数库添加 了一些新的函数—包括preferCulture()和format()等新函数。你可以通过preferCulture()函数设置插件其他函数调用时 使用的默认文化。preferCulture()函数接受一个语言标记作为参数，这个函数会使用最接近这个语言标记的文化。</p>
<p>$.format() 函数才是真正用来编排货币、日期和数字格式的。$.format()函数的第二个参数是格式分类符。例如，传入“c”表示按货币的样式编排参数值。在 githum的ReadMe文件里详细描述了所有格式分类符代表的意思：<a href="http://github.com/nje/jquery-glob">http://github.com/nje/jquery-glob</a></p>
<p>当我们在浏览器打开这个页面的时候，所有的东西都是按照德语习惯正确显示。货币符号采用的是欧元符号，日期采用德语的日期和月份名称，并且，数 字分隔符用的是点号（.），而不是逗号（,）。</p>
<p><a href="http://weblogs.asp.net/blogs/scottgu/image_63ACAAD9.png"><img title="image" src="http://www.iamued.com/wp-content/uploads/auto_save_image/2010/06/213759vLW.png" border="0" alt="image" width="413" height="342" /></a></p>
<p>你可以通过运行<a href="http://www.scottgu.com/blogposts/jQueryGlobalizationDemos.zip">示例下 载</a>中的3_GermanSite.htm文件来了解上述方法。</p>
<p><strong><span style="text-decoration: underline;">示例：用户动态选择一个区域设置</span></strong></p>
<p>在前面的例子中，我们显式指定使用德语文化习惯（通过引用jQuery.glob.de-DE.js文件）。我们现在来看看动态设置文化习惯的 几个例子。</p>
<p>比如说我们打算在页面上加一个包含所有350种文化的下拉框，当用户在下拉框里选择了一个文化，页面上所有的日期都按照这个 文化的习惯显示。</p>
<p><a href="http://weblogs.asp.net/blogs/scottgu/image_01AAB8CE.png"><img title="image" src="http://www.iamued.com/wp-content/uploads/auto_save_image/2010/06/21380422J.png" border="0" alt="image" width="413" height="300" /></a></p>
<p>这是网页的HTML源代码：</p>
<p><a href="http://weblogs.asp.net/blogs/scottgu/image_31F18D84.png"><img title="image" src="http://www.iamued.com/wp-content/uploads/auto_save_image/2010/06/213805wMI.png" border="0" alt="image" width="628" height="120" /></a></p>
<p>请留意所有包含了日期的&lt;span&gt; 标签都有一个data-date属性（data-*属性是HTML  5里的新功能，同时在老的浏览器上也可以使用）。当用户在下拉框里选择了一个文化信息后，我们的代码将会格式化data-date属性里保存的日期。</p>
<p>为了显示所有可能的文化信息，我们要象下面这样添加一个叫jQuery.glob.all.js 的文件。</p>
<p><a href="http://weblogs.asp.net/blogs/scottgu/image_6238623A.png"><img title="image" src="http://www.iamued.com/wp-content/uploads/auto_save_image/2010/06/2138072T0.png" border="0" alt="image" width="628" height="64" /></a></p>
<p><em>jQuery</em><em>国际化插件里有一 个叫做jQuery.glob.all.js</em><em>的文件，这个文件包含了所有插件支持的350</em><em>多种文化的国际化信息。即使经过最 小化处理，还是有367k</em><em>字节。由于文件很大，除非你的确需要一次性使用所有这些文化信息，我们建议你只添加所使用到的文化信息对应的 JavaScript</em><em>文件。下一个例子中，我会演示如何在网页中动态地加载某个语言对应的JavaScript</em><em>文件。</em></p>
<p>下一步，把所有支持的文化名称添加到下拉框的列表里。可以用$.cultures这个属性获取它们：</p>
<p><a href="http://weblogs.asp.net/blogs/scottgu/image_750CE5E4.png"><img title="image" src="http://www.iamued.com/wp-content/uploads/auto_save_image/2010/06/213808Kac.png" border="0" alt="image" width="628" height="119" /></a></p>
<p>最后，再写几行代码把每个span标签里的 data-date属性的日期都抓出来并编排格式：</p>
<p><a href="http://weblogs.asp.net/blogs/scottgu/image_45029463.png"><img title="image" src="http://www.iamued.com/wp-content/uploads/auto_save_image/2010/06/213810V2w.png" border="0" alt="image" width="628" height="245" /></a></p>
<p>jQuery国际化插件里面的 parseDate()函数将一个字符串的日期转换成JavaScript日期，而format()函数则用来编排这些日期的格式。“D”这个格式分类符 说明使用长日期格式编排日期。</p>
<p>现在，只要页面浏览者选择这350种语言其中之一，内容都会被正确的国际化。你可以通过运行<a href="http://www.scottgu.com/blogposts/jQueryGlobalizationDemos.zip">示例下 载</a>中的4_SelectCulture.htm文件来了解上述方法。</p>
<p><strong><span style="text-decoration: underline;">示例：动态加载国际化文件</span></strong></p>
<p>在上一节说过,你应该尽量避免在页面中引用jQuery.glob.all.js文件,  因为它实在是太大了。相反，你可以动态地加载你所需要的国际化信息。</p>
<p>比如说，你要创建一个下拉列表显示下面这些语言：</p>
<p><a href="http://weblogs.asp.net/blogs/scottgu/image_17A0FE93.png"><img title="image" src="http://www.iamued.com/wp-content/uploads/auto_save_image/2010/06/213816WdQ.png" border="0" alt="image" width="445" height="131" /></a></p>
<p>下面的代码会在用户从下拉框中选择一个新的语言后 执行。这段代码会先判断选中的语言对应的国际化脚本文件是否已经加载了。如果还没有加载，则使用jQuery的$.getScript()函数动态加载国 际化脚本文件。</p>
<p><a href="http://weblogs.asp.net/blogs/scottgu/image_2185EFFE.png"><img title="image" src="http://www.iamued.com/wp-content/uploads/auto_save_image/2010/06/213817ddT.png" border="0" alt="image" width="597" height="333" /></a></p>
<p>当国际化脚本文件被浏览器加载以后，就会调用 globalizePage()函数，继而执行客户端的代码完成国际化。</p>
<p>这个方法的优点是可以让你避免加载整个 jQuery.glob.all.js文件—只要加载使用到的文件，而且只加载一次。</p>
<p><a href="http://www.scottgu.com/blogposts/jQueryGlobalizationDemos.zip">示例下 载</a>中的5_Dynamic.htm文件演示了这个方法。</p>
<p><strong><span style="text-decoration: underline;">示例：自动检测用户的常用语言设置</span></strong></p>
<p>大多数网站通过检测用户的浏览器设置来得到其常用语言，然后根据这种语言文化习惯来国际化网站内容。用户可以在浏览器中设置一个常用语言。这 样，用户在请求页面时，常用语言设置会包含在请求Http消息头的Accept-Language字段中。</p>
<p>如果使用的是微软的IE浏览 器，可以通过以下步骤设置你常用的语言：</p>
<p>1. 在菜单栏里选择<strong>工具</strong>，<strong>Internet </strong><strong>选项。</strong></p>
<p>2. 选择<strong>常规</strong>标签。</p>
<p>3. 在<strong>外观</strong>里点击<strong>语言</strong>按钮。</p>
<p>4.  点击<strong>添加</strong>在语言列表里增加新的语言。</p>
<p>5. 然后把你最常用的语言放在列表的最顶端。</p>
<p><a href="http://blog.joycode.com/images/metaapis/158/WindowsLiveWriter/jQuery_F769/image_2.png"><img title="image" src="http://www.iamued.com/wp-content/uploads/auto_save_image/2010/06/213818pIi.png" border="0" alt="image" width="417" height="479" /></a></p>
<p>你可以在这个对话框中设置多门常用语言。所设 置语言的顺序关系将会体现在HTTP请求的Accept-Language字段中，如：</p>
<p>Accept-Language：fr- FR,id-ID;q=0.7,en-US;q=0.3</p>
<p>比较奇怪的是，用户不能够通过客户端的JavaScript脚本得到 Accept-Language的内容。微软的IE和Firefox浏览器都支持一系列语言相关的属性，这些属性可以通过 Window.navigator进行访问，例如windows.navigator.browserLanguage和 window.navigator.language，不过这些属性中的语言一般指的是操作系统中设置的语言或者是浏览器的语言版本。你不能通过这些属性 来得到用户设置的常用语言。</p>
<p>得到用户语言偏好（也就是Accept-Language字段中的内容）的唯一可靠方法就是编写服务器代 码。例如，下面的ASP.NET页面就利用了服务器的Request.UserLanguages属性把用户的语言偏好设置赋给了客户端 JavaScript的acceptLanguage变量（然后就可以通过客户端JavaScipt访问这些值了）：</p>
<p><a href="http://weblogs.asp.net/blogs/scottgu/image_77564215.png"><img title="image" src="http://www.iamued.com/wp-content/uploads/auto_save_image/2010/06/213819EWN.png" border="0" alt="image" width="587" height="106" /></a></p>
<p>为了使这段代码能够正常工作，页面中必须包含与 acceptLanguage对应的文化信息。例如如果你的常用语言是fr-FR（法语-法国），那就必须在这个页面中引用 jQuery.glob.fr-FR.js或者jQuery.glob.all.js这两个JavaScript脚本之一，否则没办法得到文化信息。关于 这个方法的应用可以<a href="http://www.scottgu.com/blogposts/jQueryGlobalizationDemos.zip">示例下 载</a>中的”6_AcceptLanguages.aspx”。</p>
<p>如果对于页面中用户的常用语言没有对应的脚本包含其文化信息，那 么$.preferCulture()方法就会引用中立（neutral）的文化信息（例如，使用jQuery.glob.fr.js，而不是 jQuery.glob.fr-FR.js）。如果中立文化信息也不可用，那么$.preferCulture()方法就会回滚到使用默认文化（英语）。</p>
<p><strong><span style="text-decoration: underline;">示例：利用国际化插件使JQuery UI DatePicker</span></strong><strong><span style="text-decoration: underline;">实现国际化</span></strong></p>
<p>国际化插件的目的之一就是使开发能适应各种不同文化的jQuery小工具的变得更为简单。</p>
<p>我们希望确保jQuery的国际化 插件能够与现有的jQuery的UI插件如DatePicker共存并正常工作。为了实现这个目标，我们创建了DatePicker插件的一个整合版本， 使它可以在渲染日历的时候利用我们的插件来提供国际化支持。下图演示了把jQuery的国际化插件和整合后的DatePicker插件一起加入到页面并选 择印度尼西亚语的效果。</p>
<p><a href="http://weblogs.asp.net/blogs/scottgu/image_5D15D8F1.png"><img title="image" src="http://www.iamued.com/wp-content/uploads/auto_save_image/2010/06/213823YiM.png" border="0" alt="image" width="577" height="622" /></a></p>
<p>注意：一周中每一天的名称都以印度尼西亚语的缩写 形式显示。 此外，月份的名字也以印度尼西亚语显示。</p>
<p>你可以从我们的github网站下载整合版的JQuery UI  DatePicker。你也可以使用<a href="http://www.scottgu.com/blogposts/jQueryGlobalizationDemos.zip">示例下 载中文件7_DatePicker.htm所使用的版本。</p>
<p><strong><span style="text-decoration: underline;">总结</span></strong></p>
<p>很高兴我们能够 为jQuery社区提供持续的贡献。这个国际化插件已经是我们发布的第三个插件了。</p>
<p>感谢大家对我们年初发布jQuery模板 （Templating）和数据链接（data-linking）的原型提供的很多非常有价值的反馈和设计方面的建议。最后我想趁这个机会感谢 jQuery和jQuery UI团队在创建这些插件时所提供的帮助。</p>
<p>希望这能对您有所帮助。</p>
<h2  class="related_post_title">您可能还关注的？</h2><ul class="related_post"><li><a href="http://www.iamued.com/qianduan/1401.html" title="即拷即用：onDOMReady（提取自jQuery.ready）">即拷即用：onDOMReady（提取自jQuery.ready）</a></li><li><a href="http://www.iamued.com/qianduan/1328.html" title="jQuery源码查看器">jQuery源码查看器</a></li><li><a href="http://www.iamued.com/qianduan/1182.html" title="[译]jQuery 1.4 发布：15个新特性实例精讲">[译]jQuery 1.4 发布：15个新特性实例精讲</a></li><li><a href="http://www.iamued.com/qianduan/1180.html" title="Jquery1.4正式版发布了 JS库时代就是这样快">Jquery1.4正式版发布了 JS库时代就是这样快</a></li><li><a href="http://www.iamued.com/qianduan/1176.html" title="YUI3设计中的激进和妥协">YUI3设计中的激进和妥协</a></li></ul>]]></content:encoded>
			<wfw:commentRss>http://www.iamued.com/qianduan/1506.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>WEB标准化交流会第九期：前端工程师的知识收集与管理</title>
		<link>http://www.iamued.com/qianduan/1492.html</link>
		<comments>http://www.iamued.com/qianduan/1492.html#comments</comments>
		<pubDate>Sun, 27 Jun 2010 11:38:07 +0000</pubDate>
		<dc:creator>RichieLiu</dc:creator>
				<category><![CDATA[前端开发]]></category>
		<category><![CDATA[W3Ctech]]></category>
		<category><![CDATA[WEB标准化交流会]]></category>

		<guid isPermaLink="false">http://www.iamued.com/?p=1492</guid>
		<description><![CDATA[
Web标准化交流会第九期：感谢网易给我们提供了场地 ：）
这次WEB标准化交流会的主题是前段工程师的知识收集与管理，会上大家也都说了自己的观点，月影的开场很到位 个人的知识收集与管理 团队的知识收集与管理，无论从哪个角度都表现出知识的管理对于个人或是团队都是有很多好处的。
大家也都分享了一下大家所用的方法及工具 包括 onenote、everynote、google reader、收藏夹、Blog等等……

我来从知识组织的角度来说一下我自己对前端工程师知识收集与管理的看法

首先我们说的是知识-&#62;而不是代码或文章或Url 那么前端工程师到底需要哪些知识呢？


我们都知道百度有2个产品 百度百科，和百度知道 他们之间是有很大区别的
百度百科是基于词条式的，也就是一些比较明确的规范、定论、词汇、名人等等 这些知识更多的是大家公认的，这样的知识是有限量的 -》拿前端来说 比如W3c标准、Html标签 这些都是可穷举的
那么百度知道里面的内容更多的是经验、技巧性质的 是基于基础知识的应用所扩展而来 这样的知识是无限量的
拿前端来讲 我们更多所说的收集与管理是指的后者，因为前者我们已经有w3cschool、各种的官方文档为我们铺垫的差不多了
那么对于海量的信息我们如何去管理呢，会上有很多朋友说了一下自己的方法，有按照时间归类的、有按照关键词归类的 等等……
我和月影在会后也沟通了一下我的想法 -&#62; 基于知识结构与Tag的管理
举个例子 我们拿物理学来讲 几个大类比如说 电学 力学 电磁学
那么我们的课本将知识组织起来的结果是 初中将力学 高中讲的实际上还是力学 只是将知识进行了分解 那么力学是抽象出来的知识结构 不同的年级 学习的可能是高度不同 但是统统属于力学这个知识点
这样的结构让我们学习接受起来更加的明确自己处于的位置、与要学习的知识点，能够让我们更快的成长……
那么前端是否也可以一样的来看待呢？期待有高手能够给我们归纳出前端的知识结构……让我们的学习更加的有条理
随笔 没那么有条理 也将这次参会的收获记录一下……
您可能还关注的？WEB标准化交流会第七期-人人都是&#8221;架构&#8221;师2010年3月 &#8211; WEB标准化交流会 -腾飞吧前端们第六期WEB标准化交流会 会后总结 By 刘钢第四期 WEB标准化交流会 参会总结]]></description>
			<content:encoded><![CDATA[<div id="_mcePaste">
<div id="_mcePaste"><a href="http://www.w3ctech.com/">Web标准化交流</a>会第九期：感谢网易给我们提供了场地 ：）</div>
<div><strong>这次WEB标准化交流会的主题是前段工程师的知识收集与管理，会上大家也都说了自己的观点，月影的开场很到位 个人的知识收集与管理 团队的知识收集与管理，无论从哪个角度都表现出知识的管理对于个人或是团队都是有很多好处的。</strong></div>
<div>大家也都分享了一下大家所用的方法及工具 包括 onenote、everynote、google reader、收藏夹、Blog等等……</div>
</div>
<div><strong>我来从知识组织的角度来说一下我自己对前端工程师知识收集与管理的看法<br />
</strong></div>
<div><em>首先我们说的是知识-&gt;而不是代码或文章或Url 那么前端工程师到底需要哪些知识呢？</em></div>
<div><em><br />
</em></div>
<div>我们都知道百度有2个产品 百度百科，和百度知道 他们之间是有很大区别的</div>
<div>百度百科是基于词条式的，也就是一些比较明确的规范、定论、词汇、名人等等 这些知识更多的是大家公认的，这样的知识是有限量的 -》拿前端来说 比如W3c标准、Html标签 这些都是可穷举的</div>
<div>那么百度知道里面的内容更多的是经验、技巧性质的 是基于基础知识的应用所扩展而来 这样的知识是无限量的</div>
<div>拿前端来讲 我们更多所说的收集与管理是指的后者，因为前者我们已经有w3cschool、各种的官方文档为我们铺垫的差不多了</div>
<div>那么对于海量的信息我们如何去管理呢，会上有很多朋友说了一下自己的方法，有按照时间归类的、有按照关键词归类的 等等……</div>
<div>我和月影在会后也沟通了一下我的想法 -&gt; <strong>基于知识结构与Tag的管理</strong></div>
<div>举个例子 我们拿物理学来讲 几个大类比如说 电学 力学 电磁学</div>
<div>那么我们的课本将知识组织起来的结果是 初中将力学 高中讲的实际上还是力学 只是将知识进行了分解 那么力学是抽象出来的知识结构 不同的年级 学习的可能是高度不同 但是统统属于力学这个知识点</div>
<div>这样的结构让我们学习接受起来更加的明确自己处于的位置、与要学习的知识点，能够让我们更快的成长……</div>
<div>那么前端是否也可以一样的来看待呢？期待有高手能够给我们归纳出前端的知识结构……让我们的学习更加的有条理</div>
<div>随笔 没那么有条理 也将这次参会的收获记录一下……</div>
<h2  class="related_post_title">您可能还关注的？</h2><ul class="related_post"><li><a href="http://www.iamued.com/qianduan/1434.html" title="WEB标准化交流会第七期-人人都是&#8221;架构&#8221;师">WEB标准化交流会第七期-人人都是&#8221;架构&#8221;师</a></li><li><a href="http://www.iamued.com/qianduan/1281.html" title="2010年3月 &#8211; WEB标准化交流会 -腾飞吧前端们">2010年3月 &#8211; WEB标准化交流会 -腾飞吧前端们</a></li><li><a href="http://www.iamued.com/qianduan/1369.html" title="第六期WEB标准化交流会 会后总结 By 刘钢">第六期WEB标准化交流会 会后总结 By 刘钢</a></li><li><a href="http://www.iamued.com/qianduan/1251.html" title="第四期 WEB标准化交流会 参会总结">第四期 WEB标准化交流会 参会总结</a></li></ul>]]></content:encoded>
			<wfw:commentRss>http://www.iamued.com/qianduan/1492.html/feed</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>判断 iframe 是否加载完成的完美方法</title>
		<link>http://www.iamued.com/qianduan/1486.html</link>
		<comments>http://www.iamued.com/qianduan/1486.html#comments</comments>
		<pubDate>Tue, 22 Jun 2010 02:51:57 +0000</pubDate>
		<dc:creator>RichieLiu</dc:creator>
				<category><![CDATA[JavaScript脚本]]></category>
		<category><![CDATA[前端开发]]></category>
		<category><![CDATA[iframe加载]]></category>
		<category><![CDATA[前端]]></category>

		<guid isPermaLink="false">http://www.iamued.com/?p=1486</guid>
		<description><![CDATA[今天正好需要判断iframe加载完成 正好找到怿飞同学的这篇文章 方法很完美

var iframe = document.createElement(&#34;iframe&#34;);
iframe.src = &#34;http://www.planabc.net&#34;;

if (!/*@cc_on!@*/0) { //if not IE
    iframe.onload = function(){
        alert(&#34;Local iframe is now loaded.&#34;);
    };
} else {
    iframe.onreadystatechange = function(){
        if (iframe.readyState == &#34;complete&#34;){
            alert(&#34;Local iframe is now loaded.&#34;);
        }
    [...]]]></description>
			<content:encoded><![CDATA[<p>今天正好需要判断iframe加载完成 正好找到<a rel="about" href="http://www.planabc.net/about/">怿飞</a>同学的这篇文章 方法很完美</p>
<pre class="brush: jscript;">
var iframe = document.createElement(&quot;iframe&quot;);
iframe.src = &quot;http://www.planabc.net&quot;;

if (!/*@cc_on!@*/0) { //if not IE
    iframe.onload = function(){
        alert(&quot;Local iframe is now loaded.&quot;);
    };
} else {
    iframe.onreadystatechange = function(){
        if (iframe.readyState == &quot;complete&quot;){
            alert(&quot;Local iframe is now loaded.&quot;);
        }
    };
}

document.body.appendChild(iframe);
</pre>
<p>最近， <a title="NCZOnline" href="http://www.nczonline.net/" target="_blank">Nicholas C. Zakas</a> 文章<a title="Iframes, onload, and document.domain" href="http://www.nczonline.net/blog/2009/09/15/iframes-onload-and-documentdomain/" target="_blank">《Iframes, onload, and document.domain》</a>的评论中 Christopher 提供了一个新的判断方法（很完美）：</p>
<pre class="brush: jscript;">
var iframe = document.createElement(&quot;iframe&quot;);
iframe.src = &quot;http://www.planabc.net&quot;;

if (iframe.attachEvent){
    iframe.attachEvent(&quot;onload&quot;, function(){
        alert(&quot;Local iframe is now loaded.&quot;);
    });
} else {
    iframe.onload = function(){
        alert(&quot;Local iframe is now loaded.&quot;);
    };
}

document.body.appendChild(iframe);
</pre>
<p>几点补充说明：</p>
<ol>
<li><a title="onload Event (BODY, FRAME, FRAMESET, ...)&lt;br /&gt;" href="http://msdn.microsoft.com/en-us/library/cc197055(VS.85).aspx" target="_blank">IE 支持 iframe 的 onload 事件</a>，不过是隐形的，需要通过 attachEvent 来注册。</li>
<li>第二种方法比第一种方法更完美，因为 readystatechange 事件相对于 load 事件有一些潜在的问题。</li>
</ol>
<h2  class="related_post_title">您可能还关注的？</h2><ul class="related_post"><li><a href="http://www.iamued.com/qianduan/1612.html" title="太NB了：Google Docs Ctrl + C 技术浅析">太NB了：Google Docs Ctrl + C 技术浅析</a></li><li><a href="http://www.iamued.com/qianduan/1382.html" title="即拷即用动画函数：透明度渐变、位置移动、尺寸变化">即拷即用动画函数：透明度渐变、位置移动、尺寸变化</a></li><li><a href="http://www.iamued.com/qianduan/1010.html" title="[原创]用JS控制显示子菜单个数 自动下拉">[原创]用JS控制显示子菜单个数 自动下拉</a></li><li><a href="http://www.iamued.com/qianduan/600.html" title="offsetLeft and offsetTop gives wrong coords in IE ">offsetLeft and offsetTop gives wrong coords in IE </a></li><li><a href="http://www.iamued.com/qianduan/1450.html" title="讨论闭包传入参数：window &#038; undefined">讨论闭包传入参数：window &#038; undefined</a></li></ul>]]></content:encoded>
			<wfw:commentRss>http://www.iamued.com/qianduan/1486.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>前端安全意识需要提升 Ifeng的URL转发漏洞</title>
		<link>http://www.iamued.com/qianduan/1479.html</link>
		<comments>http://www.iamued.com/qianduan/1479.html#comments</comments>
		<pubDate>Sat, 19 Jun 2010 03:27:56 +0000</pubDate>
		<dc:creator>RichieLiu</dc:creator>
				<category><![CDATA[前端开发]]></category>
		<category><![CDATA[Ifeng]]></category>
		<category><![CDATA[安全]]></category>
		<category><![CDATA[攻击]]></category>

		<guid isPermaLink="false">http://www.iamued.com/?p=1479</guid>
		<description><![CDATA[Ifeng的URL转发漏洞
http://big5.ifeng.com/gate/big5/打上你的地址 就会跳转过去 如此以来一些安全软件就无效了
例如 我想跳到我的博客的话 我就发
http://big5.ifeng.com/gate/big5/www.iamued.com
其实更多的时候需要前端人员、后端人员去提高安全意识
随机日志如何设计网页横幅offsetLeft and offsetTop gives wrong coords in IE 基于vertical-align的表单元素垂直对齐方式研究设计技巧:如何在设计中一图多用漂亮的图片区域设计]]></description>
			<content:encoded><![CDATA[<div id="_mcePaste">Ifeng的URL转发漏洞</div>
<div id="_mcePaste">http://big5.ifeng.com/gate/big5/打上你的地址 就会跳转过去 如此以来一些安全软件就无效了</div>
<div id="_mcePaste">例如 我想跳到我的博客的话 我就发</div>
<div id="_mcePaste"><a href="http://big5.ifeng.com/gate/big5/www.iamued.com">http://big5.ifeng.com/gate/big5/www.iamued.com</a></div>
<p>其实更多的时候需要前端人员、后端人员去提高安全意识</p>
<h2  class="related_post_title">随机日志</h2><ul class="related_post"><li><a href="http://www.iamued.com/qianduan/1182.html" title="[译]jQuery 1.4 发布：15个新特性实例精讲">[译]jQuery 1.4 发布：15个新特性实例精讲</a></li><li><a href="http://www.iamued.com/qianduan/1462.html" title="前端优化：在服务端合并和压缩 JavaScript和CSS文件">前端优化：在服务端合并和压缩 JavaScript和CSS文件</a></li><li><a href="http://www.iamued.com/interaction/1618.html" title="弹出窗口[浮层]与切换页面的对比总结">弹出窗口[浮层]与切换页面的对比总结</a></li><li><a href="http://www.iamued.com/qianduan/1401.html" title="即拷即用：onDOMReady（提取自jQuery.ready）">即拷即用：onDOMReady（提取自jQuery.ready）</a></li><li><a href="http://www.iamued.com/qianduan/802.html" title="Data URI 和 MHTML">Data URI 和 MHTML</a></li></ul>]]></content:encoded>
			<wfw:commentRss>http://www.iamued.com/qianduan/1479.html/feed</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>前端优化：在服务端合并和压缩 JavaScript和CSS文件</title>
		<link>http://www.iamued.com/qianduan/1462.html</link>
		<comments>http://www.iamued.com/qianduan/1462.html#comments</comments>
		<pubDate>Thu, 10 Jun 2010 14:08:38 +0000</pubDate>
		<dc:creator>RichieLiu</dc:creator>
				<category><![CDATA[前端开发]]></category>
		<category><![CDATA[cdn]]></category>
		<category><![CDATA[优化]]></category>
		<category><![CDATA[压缩]]></category>
		<category><![CDATA[合并]]></category>

		<guid isPermaLink="false">http://www.iamued.com/?p=1462</guid>
		<description><![CDATA[Web性能优化最佳实践中最重要的一条是减少HTTP 请求，它也是YSlow中比重最大的一条规 则。减少HTTP请求的方案主要有合并JavaScript和CSS文件、CSS Sprites、图像映射 （Image Map）和使用Data  URI来编码图片。CSS Sprites和图像映射现在已经随处可见了，但由于IE6和IE7不支持Data  URI以及性能问题，这项技术尚未大量使用。目前大部分网页中的JavaScript和CSS文件数量和开发时一致，少量的网页会根据实际情况采取本地合 并，这些合并中相当多的是有选择地手动完成，每次新的合并都需要重新在本地完成并上传到服务器，比较的随意和繁琐，同样文件的压缩也有类似的情况。而利用 服务端的合并和压缩，我们就可以按照开发的逻辑尽可能让文件的颗粒度变小，利用网页中URL的规则来自动实现文件的合并和压缩，这会相当的灵活和高效。
YUI Combo Handler
2008年7 月YUI Team宣布在YAHOO! CDN上对YUI JavaScript组件提供Combo Handler服务。Combo  Handler是Yahoo!开发的一个Apache模块，它实现了开发人员简单方便地通过URL来合并JavaScript和CSS文件，从而大大减少 文件请求数。比如在页面上使用YUI2的Rich  Text Editor组件需要引入多个JavaScript文件，常用方式如下：


&#60;script src=&#34;http://yui.yahooapis.com/2.8.0r4/build/yahoo-dom-event/
yahoo-dom-event.js&#34;&#62;&#60;/script&#62;
&#60;script src=&#34;http://yui.yahooapis.com/2.8.0r4/build/container/
container_core-min.js&#34;&#62;&#60;/script&#62;
&#60;script src=&#34;http://yui.yahooapis.com/2.8.0r4/build/menu/menu-min.js&#34;&#62;&#60;/script&#62;
&#60;script src=&#34;http://yui.yahooapis.com/2.8.0r4/build/element/element-min.js&#34;&#62;&#60;/script&#62;
&#60;script src=&#34;http://yui.yahooapis.com/2.8.0r4/build/button/button-min.js&#34;&#62;&#60;/script&#62;
&#60;script src=&#34;http://yui.yahooapis.com/2.8.0r4/build/editor/editor-min.js&#34;&#62;&#60;/script&#62;

而使用Combo Handler服务之后，则上述的代码可以写为：

&#60;script src=&#34;http://yui.yahooapis.com/combo?
2.8.0r4/build/yahoo-dom-event/yahoo-dom-event.js&#38;
2.8.0r4/build/container/container_core-min.js&#38;
2.8.0r4/build/menu/menu-min.js&#38;
2.8.0r4/build/element/element-min.js&#38;
2.8.0r4/build/button/button-min.js&#38;
2.8.0r4/build/editor/editor-min.js&#34;&#62;&#60;/script&#62;

除了代码的可读性稍稍有一点点降低外，使用Combo  Handler服务大大的降低了HTTP请求数，同时也减少了URL代码量，这对于Web性能优化来讲至关重要。所以，随后YUI从2.6.0开始，其核心组件 YUI Loader内置了Combo Handling功能，即使用YUI Loader时，通过配置combine属 性就可以把要加载的多个JavaScript或CSS文件按照使用Combo  Handler服务的形式合并起来，这时只要静态文件的服务器支持Combo Handler就行了。在YUI中当combine配 置为true时，CDN默认是使用Yahoo!  CDN（http://yui.yahooapis.com），所以没有任何问题。这正是YUI最迷人的地方之一。
遗憾的是http://yui.yahooapis.com在中国的速度并不佳，本来中国雅虎提供了http: //cn.yui.yahooapis.com/ ，但尚未提供Combo Handler服务，同时因种种原因，其更新在YUI  2.7.0之后就停滞了。更糟糕的是Yahoo!开发的支持Combo  Handler的Apache模块虽然据传有计划开源，但至少现在依旧是私有技术，要使用就需要自己实现类似功能，所以国内类似技术的应用并不太多。
Minify
在Google Code上有一个PHP的开源项目叫Minify， [...]]]></description>
			<content:encoded><![CDATA[<p>Web性能优化最佳实践中最重要的一条是减少HTTP 请求</a>，它也是<a href="http://developer.yahoo.com/yslow/">YSlow</a>中比重最大的一条规 则。减少HTTP请求的方案主要有合并JavaScript和CSS文件、<a href="http://alistapart.com/articles/sprites">CSS Sprites</a>、<a href="http://www.w3.org/TR/html401/struct/objects.html#h-13.6">图像映射 （Image Map）</a>和<a href="http://dancewithnet.com/2009/08/15/data-uri-mhtml/">使用Data  URI来编码图片</a>。CSS Sprites和图像映射现在已经随处可见了，但由于IE6和IE7不支持Data  URI以及性能问题，这项技术尚未大量使用。目前大部分网页中的JavaScript和CSS文件数量和开发时一致，少量的网页会根据实际情况采取本地合 并，这些合并中相当多的是有选择地手动完成，每次新的合并都需要重新在本地完成并上传到服务器，比较的随意和繁琐，同样文件的压缩也有类似的情况。而利用 服务端的合并和压缩，我们就可以按照开发的逻辑尽可能让文件的颗粒度变小，利用网页中URL的规则来自动实现文件的合并和压缩，这会相当的灵活和高效。</p>
<h3>YUI Combo Handler</h3>
<p><a href="http://www.yuiblog.com/blog/2008/07/16/combohandler/">2008年7 月YUI Team宣布在YAHOO! CDN上对YUI JavaScript组件提供Combo Handler服务</a>。Combo  Handler是Yahoo!开发的一个Apache模块，它实现了开发人员简单方便地通过URL来合并JavaScript和CSS文件，从而大大减少 文件请求数。比如在页面上使用<a href="http://developer.yahoo.com/yui/editor/">YUI2的Rich  Text Editor组件</a>需要引入多个JavaScript文件，常用方式如下：<br />
<span id="more-1462"></span></p>
<pre class="brush: jscript;">
&lt;script src=&quot;http://yui.yahooapis.com/2.8.0r4/build/yahoo-dom-event/
yahoo-dom-event.js&quot;&gt;&lt;/script&gt;
&lt;script src=&quot;http://yui.yahooapis.com/2.8.0r4/build/container/
container_core-min.js&quot;&gt;&lt;/script&gt;
&lt;script src=&quot;http://yui.yahooapis.com/2.8.0r4/build/menu/menu-min.js&quot;&gt;&lt;/script&gt;
&lt;script src=&quot;http://yui.yahooapis.com/2.8.0r4/build/element/element-min.js&quot;&gt;&lt;/script&gt;
&lt;script src=&quot;http://yui.yahooapis.com/2.8.0r4/build/button/button-min.js&quot;&gt;&lt;/script&gt;
&lt;script src=&quot;http://yui.yahooapis.com/2.8.0r4/build/editor/editor-min.js&quot;&gt;&lt;/script&gt;
</pre>
<p>而使用Combo Handler服务之后，则上述的代码可以写为：</p>
<pre class="brush: jscript;">
&lt;script src=&quot;http://yui.yahooapis.com/combo?
2.8.0r4/build/yahoo-dom-event/yahoo-dom-event.js&amp;
2.8.0r4/build/container/container_core-min.js&amp;
2.8.0r4/build/menu/menu-min.js&amp;
2.8.0r4/build/element/element-min.js&amp;
2.8.0r4/build/button/button-min.js&amp;
2.8.0r4/build/editor/editor-min.js&quot;&gt;&lt;/script&gt;
</pre>
<p>除了代码的可读性稍稍有一点点降低外，使用Combo  Handler服务大大的降低了HTTP请求数，同时也减少了URL代码量，这对于Web性能优化来讲至关重要。所以，随后<a href="http://yuiblog.com/blog/2008/10/17/loading-yui/">YUI从2.6.0开始，其核心组件 YUI Loader内置了Combo Handling功能</a>，即使用YUI Loader时，通过配置<code>combine</code>属 性就可以把要加载的多个JavaScript或CSS文件按照使用Combo  Handler服务的形式合并起来，这时只要静态文件的服务器支持Combo Handler就行了。在YUI中当<code>combine</code>配 置为<code>true</code>时，CDN默认是使用Yahoo!  CDN（http://yui.yahooapis.com），所以没有任何问题。这正是YUI最迷人的地方之一。</p>
<p>遗憾的是http://yui.yahooapis.com在中国的速度并不佳，本来中国雅虎提供了http: //cn.yui.yahooapis.com/ ，但尚未提供Combo Handler服务，同时因种种原因，其更新在<a href="http://cn.yui.yahooapis.com/2.7.0/build/yahoo-event-dom/yahoo-event-dom.js">YUI  2.7.0</a>之后就停滞了。更糟糕的是Yahoo!开发的支持Combo  Handler的Apache模块虽然据传有计划开源，但至少现在依旧是私有技术，要使用就需要自己实现类似功能，所以国内类似技术的应用并不太多。</p>
<h3>Minify</h3>
<p>在Google Code上有一个PHP的开源项目叫<a href="http://code.google.com/p/minify/">Minify</a>， 它可以合并、精简、Gzip压缩和缓存JavaScript和CSS文件。其文件合并功能就非常类似Combo  Handler，只不过URL的语法稍微有点不同。如果Yahoo! CDN安装了Minify，那么上面Rich Text  Editor的代码用Minify的默认格式来写就是：</p>
<pre class="brush: jscript;">
&lt;script src=&quot;http://yui.yahooapis.com/min/f=
2.8.0r4/build/yahoo-dom-event/yahoo-dom-event.js,
2.8.0r4/build/container/container_core-min.js,
2.8.0r4/build/menu/menu-min.js,
2.8.0r4/build/element/element-min.js,
2.8.0r4/build/button/button-min.js,
2.8.0r4/build/editor/editor-min.js&quot;&gt;&lt;/script&gt;
</pre>
<p>本地使用Minify很简单，只需要Apache + PHP环境就OK了：</p>
<ol>
<li>安装好Apache + PHP (<a href="http://dancewithnet.com/2005/09/16/install-apache-and-php-in-windows/">Windows</a>、<a href="http://dancewithnet.com/2010/05/09/run-apache-php-mysql-in-mac-os-x/">Mac</a>)。</li>
<li>下载<a href="http://code.google.com/p/minify/downloads/list">Minify源码</a>， 解压，然后把min文件夹复制到指定的根目录下，比如localhost。这时URL的写法大概是<code>http://localhost/min/f=...</code></li>
<li><a href="http://dancewithnet.com/2010/05/29/making-mod-rewrite-and-htaccess-work-on-mac-os-x/">启 用Apache的Mod Rewrite模块</a>，然后在min文件夹下<a href="http://www.zendstudio.net/archives/create-htaccess-file-in-windows/">新 建.htaccess文件</a>，并添加如下<a href="http://code.google.com/p/minify/source/browse/branches/2.1.4/min/.htaccess">Rewrite 规则</a>：</li>
</ol>
<pre class="brush: plain;">
&lt;IfModule mod_rewrite.c&gt;
RewriteEngine on

# You may need RewriteBase on some servers
#RewriteBase /min

# rewrite URLs like &quot;/min/f=...&quot; to &quot;/min/?f=...&quot;
RewriteRule ^([bfg]=.*)  index.php?$1 [L,NE]
&lt;/IfModule&gt;
</pre>
<p>如果不启用Mod  Rewrite功能，则Minify的URL会类似http://localhost/min/index.php?f=…，这<a href="http://www.stevesouders.com/blog/2008/08/23/revving-filenames-dont-use-querystring/">对 客户端和中间服务器的缓存不利</a>，而启用了Mod  Rewrite之后的URL类似http://localhost/min/f=…，不仅解决前面问题且更短。</p>
<p>配置Minify，即编辑min/config.php文件</p>
<pre class="brush: php;">
$min_enableBuilder = true;
//本地使用时可以通过http://dwn/min/builder/来进行配置，外部使用时请设置为false

//$min_cachePath = 'c:\WINDOWS\Temp';
//$min_cachePath = '/tmp';
//$min_cachePath = preg_replace('/^\d+;/', '', session_save_path());
//选择其一，去掉注释设置临时缓存目录，这样可以减少程序运算提高性能

$min_serveOptions['maxAge'] = 1800;
//设置浏览器缓存的时间，为了提升性能建议这个时间设置尽可能的长，比如315360000
//如果需要在不改变URL的情况下更新静态文件，可以采用类似时间戳的方式，
//如http://localhost/min/f=example/example.css&amp;20100601.css
//建议静态文件采用版本号管理，每次修改都需要升级版本号，这样就无需时间戳了，
//如http://localhost/min/f=example/example_1_0_1.css

$min_serveOptions['minApp']['maxFiles'] = 10;
//参数f获取参数的个数，即合并的文件个数，这个数量完全可以增大，比如50，
//当然可能会遇到URL最大值问题，后会有解释
</pre>
<ol>
<li>使用Minify比如，有两个JavaScript文件，<code>http://localhost/example/a.js,http://localhost/example/b.js</code>， 那么使用Minify合并的URL是<code>http://localhost/min/f=/example/a.js,/example/b.js</code>， 直接把这个URL放到页面中就可以使用了。</li>
</ol>
<p>实际上Minify不仅仅实现了合并功能，同时默认在合并的同时还会对文件进行精简压缩，如果你在本地本身就对文件进行压缩了，比如使用<a href="http://yuilibrary.com/projects/yuicompressor/">YUI Compressor</a>， 那么可以在config.php中进行如下设置取消Minify的压缩以提升性能：</p>
<pre class="brush: php;">
$min_serveOptions['minifiers']['application/x-javascript'] = '';
$min_serveOptions['minifiers']['text/css'] = '';
</pre>
<p>如果服务端支持Java，那么也可以<a href="http://code.google.com/p/minify/wiki/CookBook#YUICompressor">对 Minify进行简单配置而实现利用YUI Compressor压缩JavaScript和CSS文件</a>。</p>
<p>直接在服务端进行合并和压缩，这非常的灵活，也极大的减轻了前端开发成果的部署过程，真使事半功倍。更多配置请看<a href="http://code.google.com/p/minify/wiki/CookBook">Minify CookBook</a>和<a href="http://code.google.com/p/minify/w/list">Wiki</a></p>
<h3>在YUI3中使用Minify</h3>
<p>在YUI2中，合并机制只支持库本身的文件，自定义的文件会单独一一加载。从YUI3开始，模块变得更小，这样就导致使用合并时URL会变长，但<a href="http://support.microsoft.com/kb/208427">在IE下URL的最大值是2083</a>，Apache 默认的URL最大值是8192，所以当URL在对应浏览器下超出最大值时，YUI3会自动根据浏览器判断进行拆分成多个合并的URL，并且还提供了<a href="http://developer.yahoo.com/yui/3/api/Loader.html#property_maxURLLength"><code>maxURLLength</code></a>来 设置最大值。而从YUI3.1.0开始，不仅仅支持自定义文件的合并，还支持可以使用多个提供合并服务的CDN，即可以对YUI组件使用 http://yui.yahooapis.com这个CDN，其余文件使用其他支持合并的CDN，这样非常的实用、方便和灵活。示例<a href="http://dancewithnet.com/lab/2010/yui3-loader-and-minify/">在YUI3中使用 Minify</a>就说明了这点。</p>
<p>由于YUI默认URL的合并形式和Minify的不相同，所以在YUI实例化时需要利用正则替换来实现YUI3支持Minify的URL合并形式， 但这种方式既不灵活，且有风险，不友好又效率低。比较简单的方式是直接修改YUI 3的源码，如示例<a href="http://dancewithnet.com/lab/2010/yui3-loader-and-minify/fixed.html">在 修改后的YUI3中使用Minify</a>。同时，YUI  3.1.*的版本有一个bug，即同时合并JavaScript和CSS时，较短的那个URL结尾处多一个&amp;符号，如<a href="http://dancewithnet.com/lab/2010/yui3-loader-and-minify/">示例在YUI3中 使用Minify</a>中：</p>
<pre class="brush: xml;">

http://yui.yahooapis.com/combo?3.1.1/build/widget/assets/skins/sam/widget.css&amp;

3.1.1/build/console/assets/skins/sam/console.css&amp;

http://dancewithnet.com/min/b=yui&amp;f=3.1.1/tabview/assets/skins/sam/tabview.css&amp;
</pre>
<p>这两种都可以使用，虽然<a href="http://dancewithnet.com/2009/11/05/a-little-practice-about-js-lazy-load/#comment-219359">在 早期的IE浏览器版本（如IE6）中会有无法解析的风险</a>，且影响某些特定情况下的缓存，但当使用修改后的YUI时，合并的URL变成类似<code>/min/b=yui&amp;f=3.1.1/tabview/assets/skins/sam/tabview.css,</code>的 样子，就会出现bug了。对于YUI的Combo Handler来说这是一个小bug，所以<a href="http://yuilibrary.com/projects/yui3/ticket/2528680">YUI3把这个bug设置为 P5</a>。但当我们改造YUI3来更好的支持Minify时，还要解决这个问题，具体方案请看示例<a href="http://dancewithnet.com/lab/2010/yui3-loader-and-minify/fixed.html">在 修改后的YUI3中使用Minify</a>。</p>
<h3>在CDN上使用Minify</h3>
<p>CDN的全称是Content Delivery  Network，即内容分发网络。其最常应用就是通过位于不同地理位置的服务器把静态资源部署到用户最近的边缘，这样能有效解决Web服务中大量静态资源 的速度和性能问题。由于实施成本比较高，所以在实际的应用中，大型公司一般会组建自己的CDN，而小型公司只能租借第三方的CDN，但不管怎样这两种方式 都不会影响在服务端实施合并和压缩程序。一般情况下，静态资源也并不是直接上传到CDN，而是先传到一台后台服务器，然后各地CDN的前端Cache服务 器按需索取。YUI CDN的Combo Handler就是部署在其后台服务器上的，Minify也应如此。简单图示如下：<br />
<img title="cdn-and-minify" src="http://www.iamued.com/wp-content/uploads/auto_save_image/2010/06/220843PWe.png" alt="" width="678" height="201" /></p>
<p>当一个资源请求到CDN时，CDN会先检查本地是否存在这个资源，如果有则会直接返回该资源，如果没有则会请求其后台服务器，后台服务器会依据资源 URL的信息进行相应的处理，然后返回给CDN，CDN就会存储这个资源，再次出现这个资源请求时就无需请求后台服务器了。所以，虽然合并特别是压缩 JavaScript和CSS文件是消耗时间的，但是由于只需要第一次，并且第一次基本上由我们自己访问掉（我们可以创建程序自动进行一次访问来保证，实 际上图片优化也可以采用这种方式），所以基本上很安全。这正是目前在<a href="http://koubei.com/">口碑网</a>实施的 JavaScript和CSS合并方案，在<a href="http://www.slideshare.net/kavenyan/ss-2755539">第4届D2的《前端性能优化和自动化》中 也介绍了它。</p>
<p>原文：http://dancewithnet.com/2010/06/08/minify-js-and-css-files-in-server/</p>
<h2  class="related_post_title">随机日志</h2><ul class="related_post"><li><a href="http://www.iamued.com/qianduan/1404.html" title="如何量身打造一个前端框架 ">如何量身打造一个前端框架 </a></li><li><a href="http://www.iamued.com/design/1242.html" title="懂得交互的视觉设计师更具有竞争力">懂得交互的视觉设计师更具有竞争力</a></li><li><a href="http://www.iamued.com/qianduan/489.html" title="14条最佳JS代码编写技巧 ">14条最佳JS代码编写技巧 </a></li><li><a href="http://www.iamued.com/qianduan/1429.html" title="最近写日期操作的几个JS函数">最近写日期操作的几个JS函数</a></li><li><a href="http://www.iamued.com/product/1071.html" title="《从》之“产品设计是什么？”">《从》之“产品设计是什么？”</a></li></ul>]]></content:encoded>
			<wfw:commentRss>http://www.iamued.com/qianduan/1462.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>WebRebuild.ORG 北京第二届年会 宣传一下</title>
		<link>http://www.iamued.com/qianduan/1459.html</link>
		<comments>http://www.iamued.com/qianduan/1459.html#comments</comments>
		<pubDate>Sat, 05 Jun 2010 10:49:21 +0000</pubDate>
		<dc:creator>RichieLiu</dc:creator>
				<category><![CDATA[前端开发]]></category>
		<category><![CDATA[WebRebuild]]></category>

		<guid isPermaLink="false">http://www.iamued.com/?p=1459</guid>
		<description><![CDATA[
快要可以报名了~前端们关注下 

日程安排

举办时间： 2010年07月17日(星期六)
举办地点： 北京航空航天大学新主楼会议中心 （地图）
报名地址： 距离报名还有1天5时13分39秒。
报名截止： 2010年06月17日 0点0分0秒



上午: 8:45 &#8211; 13:00


时间
主题
嘉宾




08:45 – 09:15
入场



09:15 – 10:15
《待定》
Klaus Birkenbihl（W3C）


10:30 – 11:30
《从浏览器原理看web标准的重要性》
范俊豪（腾讯）


11:30 – 13:00
午饭/休息





下午: 13:00 &#8211; 18:00


时间
主题
嘉宾




13:00 – 14:00
《HTML5与CSS3》
谢子斌（Opera）


14:00 – 15:00
《豆瓣的前端架构》
张克军（豆瓣）


15:30 – 16:00
交流互动




注意：以上安排可能会根据具体情况进行一些补充与修改。

您可能还关注的？Webrebuild 2010分享]]></description>
			<content:encoded><![CDATA[<p><a href="http://webrebuild.org/y/beijing/2/" target="_blank"><img src="http://webrebuild.org/y/beijing/2/img/468x60.jpg" width="468" height="60" alt="WebRebuild.ORG 北京第二届年会 (2010年7月17日·北京)" /></a><br />
快要可以报名了~前端们关注下 </p>
<h3>
日程安排</h3>
<ul id="point">
<li><em>举办时间：</em> 2010年07月17日(星期六)</li>
<li><em>举办地点：</em> 北京航空航天大学新主楼会议中心 （<a href="http://j.map.baidu.com/k-7J" target="_blank">地图</a>）</li>
<li><em>报名地址：</em> 距离报名还有1天5时13分39秒。</li>
<li><em>报名截止：</em> 2010年06月17日 0点0分0秒</li>
</ul>
<div id="schedule-tb">
<table border="0" cellspacing="0" cellpadding="0" width="100%">
<caption><strong>上午:</strong> 8:45 &#8211; 13:00</caption>
<thead>
<tr>
<th width="100" scope="col">时间</th>
<th width="310" scope="col">主题</th>
<th scope="col">嘉宾</th>
</tr>
</thead>
<tbody>
<tr>
<td>08:45 – 09:15</td>
<td>入场</td>
<td></td>
</tr>
<tr>
<td>09:15 – 10:15</td>
<td>《待定》</td>
<td>Klaus Birkenbihl（W3C）</td>
</tr>
<tr>
<td>10:30 – 11:30</td>
<td>《从浏览器原理看web标准的重要性》</td>
<td>范俊豪（腾讯）</td>
</tr>
<tr>
<td>11:30 – 13:00</td>
<td>午饭/休息</td>
<td></td>
</tr>
</tbody>
</table>
<table border="0" cellspacing="0" cellpadding="0" width="100%">
<caption><strong>下午:</strong> 13:00 &#8211; 18:00</caption>
<thead>
<tr>
<th width="100" scope="col">时间</th>
<th width="310" scope="col">主题</th>
<th scope="col">嘉宾</th>
</tr>
</thead>
<tbody>
<tr>
<td>13:00 – 14:00</td>
<td>《HTML5与CSS3》</td>
<td>谢子斌（Opera）</td>
</tr>
<tr>
<td>14:00 – 15:00</td>
<td>《豆瓣的前端架构》</td>
<td>张克军（豆瓣）</td>
</tr>
<tr>
<td>15:30 – 16:00</td>
<td>交流互动</td>
<td></td>
</tr>
</tbody>
</table>
<p>注意：以上安排可能会根据具体情况进行一些补充与修改。</p>
</div>
<h2  class="related_post_title">您可能还关注的？</h2><ul class="related_post"><li><a href="http://www.iamued.com/qianduan/1574.html" title="Webrebuild 2010分享">Webrebuild 2010分享</a></li></ul>]]></content:encoded>
			<wfw:commentRss>http://www.iamued.com/qianduan/1459.html/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
	</channel>
</rss>
