<?xml version="1.0" encoding="utf-8"?><?xml-stylesheet href='http://feed.sunshow.net/styles/feedsky2.xsl' type='text/xsl' ?><!--这是一个由Feedsy提供技术支持的Feed，为了提高读者阅读的体验，以及满足用户美化自己Feed的需要，我们设计了多种精美的Feed模板，提供给大家选择，所有最终呈现出来的样式，皆由用户自愿选择使用，未经许可，任何团体和个人，请不要擅自修改样式或者盗用，这是对于用户选择权的尊重。--><rss xmlns:atom="http://www.w3.org/2005/Atom" xmlns:fs="http://www.feedsky.com/namespace/feed" xmlns:sy="http://purl.org/rss/1.0/modules/syndication/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:dc="http://purl.org/dc/elements/1.1/" version="2.0"><channel><atom:link href="http://feed.sunshow.net" type="application/rss+xml" rel="self"></atom:link><fs:self_link href="http://feed.feedsky.com/sunshow" type="application/rss+xml"></fs:self_link><lastBuildDate>Mon, 19 Dec 2011 06:41:32 GMT</lastBuildDate><title>Sunshow Life</title><description>少壮不努力，老大搞IT</description><image><url>http://www.feedsky.com/feed/sunshow/sc/gif</url><title>Sunshow Life</title><link>http://blog.sunshow.net</link></image><link>http://blog.sunshow.net</link><sy:updatePeriod>hourly</sy:updatePeriod><sy:updateFrequency>1</sy:updateFrequency><language>en</language><pubDate>Mon, 19 Dec 2011 06:41:32 GMT</pubDate><item><title>手动添加Windows共享打印机</title><link>http://blog.sunshow.net/2011/12/add-shared-windows-printer-manually/</link><content:encoded>&lt;p&gt;Apple官方教程：&lt;a href=&quot;http://support.apple.com/kb/HT3049?viewlocale=zh_CN&quot; title=&quot;Mac OS X：如何手动添加 Windows 共享打印机&quot; target=&quot;_blank&quot;&gt;http://support.apple.com/kb/HT3049?viewlocale=zh_CN&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;这里只说一点，OS X中添加Windows打印机时共享名不支持中文和空格等特殊字符（因为需要遵循samba的url规范），因此需要对共享名进行URL encoding，&lt;/p&gt;
&lt;p&gt;最简单的方法是，在firebug中执行：&lt;/p&gt;
&lt;div class=&quot;hl-surround&quot;&gt;&lt;div class=&quot;hl-main&quot;&gt;&lt;span style=&quot;color: Blue;&quot;&gt;encodeURI&lt;/span&gt;&lt;span style=&quot;color: Olive;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #8b0000;&quot;&gt;'&lt;/span&gt;&lt;span style=&quot;color: Red;&quot;&gt;smb://172.16.5.250/打印机&lt;/span&gt;&lt;span style=&quot;color: #8b0000;&quot;&gt;'&lt;/span&gt;&lt;span style=&quot;color: Olive;&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;

	&lt;div style=&quot;clear:both;&quot;&gt;&lt;/div&gt;标签：&lt;a href=&quot;http://blog.sunshow.net/tag/encode/&quot; title=&quot;encode&quot; rel=&quot;tag&quot;&gt;encode&lt;/a&gt;, &lt;a href=&quot;http://blog.sunshow.net/tag/%e6%89%93%e5%8d%b0/&quot; title=&quot;打印&quot; rel=&quot;tag&quot;&gt;打印&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;img src=&quot;http://www1.feedsky.com/t1/588786971/sunshow/feedsky/s.gif?r=http://blog.sunshow.net/2011/12/add-shared-windows-printer-manually/&quot; border=&quot;0&quot; height=&quot;0&quot; width=&quot;0&quot; style=&quot;position:absolute&quot; /&gt;</content:encoded><wfw:commentRss>http://blog.sunshow.net/2011/12/add-shared-windows-printer-manually/feed/</wfw:commentRss><slash:comments>0</slash:comments><description>Apple官方教程：http://support.apple.com/kb/HT3049?viewlocale=zh_CN 这里只说一点，OS X中添加Windows打印机时共享名不支持中文和空格等特殊字符（因为需要遵循samba的url规范），因此需要对共享名进行URL encoding， 最简单的方法是，在firebug中执行： encodeURI('smb://172.16.5.250/打印机'); 标签：encode, 打印&lt;img src=&quot;http://www1.feedsky.com/t1/588786971/sunshow/feedsky/s.gif?r=http://blog.sunshow.net/2011/12/add-shared-windows-printer-manually/&quot; border=&quot;0&quot; height=&quot;0&quot; width=&quot;0&quot; style=&quot;position:absolute&quot; /&gt;</description><category>打印</category><category>encode</category><category>Mac OS X</category><pubDate>Mon, 19 Dec 2011 14:41:32 +0800</pubDate><author>Sunshow</author><comments>http://blog.sunshow.net/2011/12/add-shared-windows-printer-manually/#comments</comments><guid isPermaLink="false">http://blog.sunshow.net/?p=766</guid><dc:creator>Sunshow</dc:creator><fs:srclink>http://blog.sunshow.net/2011/12/add-shared-windows-printer-manually/</fs:srclink><fs:srcfeed>http://blog.sunshow.net/feed/</fs:srcfeed><fs:itemid>feedsky/sunshow/~6962024/588786971/1235081</fs:itemid></item><item><title>升级到3.3</title><link>http://blog.sunshow.net/2011/12/upgrade-to-wordpress-3-3/</link><content:encoded>&lt;p&gt;看到&lt;a href=&quot;http://blog.feuvan.net/2011/12/14/10090-updated-to-wordpress-3-3.html&quot;&gt;小牧师说升级了后台好看&lt;/a&gt;，于是升了&lt;br /&gt;
然后用自己改的那个主题打不开了，换成默认的某主题&lt;br /&gt;
就这样吧&lt;br /&gt;
不是爱折腾的年代了&lt;/p&gt;

	&lt;div style=&quot;clear:both;&quot;&gt;&lt;/div&gt;标签：&lt;a href=&quot;http://blog.sunshow.net/tag/%e4%b8%bb%e9%a2%98/&quot; title=&quot;主题&quot; rel=&quot;tag&quot;&gt;主题&lt;/a&gt;, &lt;a href=&quot;http://blog.sunshow.net/tag/%e5%8d%87%e7%ba%a7/&quot; title=&quot;升级&quot; rel=&quot;tag&quot;&gt;升级&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;img src=&quot;http://www1.feedsky.com/t1/588786972/sunshow/feedsky/s.gif?r=http://blog.sunshow.net/2011/12/upgrade-to-wordpress-3-3/&quot; border=&quot;0&quot; height=&quot;0&quot; width=&quot;0&quot; style=&quot;position:absolute&quot; /&gt;</content:encoded><wfw:commentRss>http://blog.sunshow.net/2011/12/upgrade-to-wordpress-3-3/feed/</wfw:commentRss><slash:comments>0</slash:comments><description>看到小牧师说升级了后台好看，于是升了 然后用自己改的那个主题打不开了，换成默认的某主题 就这样吧 不是爱折腾的年代了 标签：主题, 升级&lt;img src=&quot;http://www1.feedsky.com/t1/588786972/sunshow/feedsky/s.gif?r=http://blog.sunshow.net/2011/12/upgrade-to-wordpress-3-3/&quot; border=&quot;0&quot; height=&quot;0&quot; width=&quot;0&quot; style=&quot;position:absolute&quot; /&gt;</description><category>升级</category><category>主题</category><category>WordPress</category><pubDate>Thu, 15 Dec 2011 15:21:52 +0800</pubDate><author>Sunshow</author><comments>http://blog.sunshow.net/2011/12/upgrade-to-wordpress-3-3/#comments</comments><guid isPermaLink="false">http://blog.sunshow.net/?p=764</guid><dc:creator>Sunshow</dc:creator><fs:srclink>http://blog.sunshow.net/2011/12/upgrade-to-wordpress-3-3/</fs:srclink><fs:srcfeed>http://blog.sunshow.net/feed/</fs:srcfeed><fs:itemid>feedsky/sunshow/~6962024/588786972/1235081</fs:itemid></item><item><title>IE的“c00ce56e”bug</title><link>http://blog.sunshow.net/2011/04/ie-c00ce56e-bug/</link><content:encoded>&lt;p&gt;很简单的一个jQuery AJAX请求文件，IE8下报：&lt;/p&gt;
&lt;div class=&quot;hl-surround&quot;&gt;&lt;div class=&quot;hl-main&quot;&gt;Could not complete the operation due to error c00ce56e.&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;检查网上都说是编码问题，不过写的不是太明确，因为我们服务器的文件编码都已经是UTF-8&lt;br /&gt;
最后找到&lt;a href=&quot;http://forums.asp.net/t/1345268.aspx#2732852&quot;&gt;说明&lt;/a&gt;：&lt;/p&gt;
&lt;blockquote&gt;&lt;p&gt;
The problem occurs when setting the charset of a response to a XMLHttpRequest to utf8 instead of UTF-8 or ISO-8859-1 instead of ISO8859_1. IE7 is very strict on naming of the charsets.&lt;/p&gt;
&lt;p&gt;&quot;ISO8859_1&quot; is the canonical representation of the Latin-1 character encoding string in the Java language and class libraries. The standard that is defined by the Internet Assigned Numbers Authority, however, is &quot;ISO-8859-1&quot;, which is not an accepted alias.&lt;/p&gt;
&lt;p&gt; For more information refer: http://support.microsoft.com/default.aspx?scid=kb;en-us;304625
&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;于是打开nginx的配置文件，把所有“utf8”替换成“UTF-8”，问题解决&lt;/p&gt;

	&lt;div style=&quot;clear:both;&quot;&gt;&lt;/div&gt;标签：&lt;a href=&quot;http://blog.sunshow.net/tag/bug/&quot; title=&quot;bug&quot; rel=&quot;tag&quot;&gt;bug&lt;/a&gt;, &lt;a href=&quot;http://blog.sunshow.net/tag/ie/&quot; title=&quot;ie&quot; rel=&quot;tag&quot;&gt;ie&lt;/a&gt;, &lt;a href=&quot;http://blog.sunshow.net/tag/nginx/&quot; title=&quot;nginx&quot; rel=&quot;tag&quot;&gt;nginx&lt;/a&gt;, &lt;a href=&quot;http://blog.sunshow.net/tag/%e7%bc%96%e7%a0%81/&quot; title=&quot;编码&quot; rel=&quot;tag&quot;&gt;编码&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;img src=&quot;http://www1.feedsky.com/t1/588786973/sunshow/feedsky/s.gif?r=http://blog.sunshow.net/2011/04/ie-c00ce56e-bug/&quot; border=&quot;0&quot; height=&quot;0&quot; width=&quot;0&quot; style=&quot;position:absolute&quot; /&gt;</content:encoded><wfw:commentRss>http://blog.sunshow.net/2011/04/ie-c00ce56e-bug/feed/</wfw:commentRss><slash:comments>0</slash:comments><description>很简单的一个jQuery AJAX请求文件，IE8下报： Could not complete the operation due to error c00ce56e. 检查网上都说是编码问题，不过写的不是太明确，因为我们服务器的文件编码都已经是UTF-8 最后找到说明： The problem occurs when setting the charset of a response to a XMLHttpRequest to utf8 instead of UTF-8 or ISO-8859-1 instead of ISO8859_1. IE7 is very strict on naming of the charsets. &quot;ISO8859_1&quot; is the canonical representation of the Latin-1 character encoding [...]&lt;img src=&quot;http://www1.feedsky.com/t1/588786973/sunshow/feedsky/s.gif?r=http://blog.sunshow.net/2011/04/ie-c00ce56e-bug/&quot; border=&quot;0&quot; height=&quot;0&quot; width=&quot;0&quot; style=&quot;position:absolute&quot; /&gt;</description><category>编码</category><category>Linux</category><category>nginx</category><category>bug</category><category>Network</category><category>WebDev</category><category>ie</category><pubDate>Tue, 26 Apr 2011 08:08:28 +0800</pubDate><author>Sunshow</author><comments>http://blog.sunshow.net/2011/04/ie-c00ce56e-bug/#comments</comments><guid isPermaLink="false">http://blog.sunshow.net/?p=762</guid><dc:creator>Sunshow</dc:creator><fs:srclink>http://blog.sunshow.net/2011/04/ie-c00ce56e-bug/</fs:srclink><fs:srcfeed>http://blog.sunshow.net/feed/</fs:srcfeed><fs:itemid>feedsky/sunshow/~6962024/588786973/1235081</fs:itemid></item><item><title>Tomcat请求HTTPS的注意事项</title><link>http://blog.sunshow.net/2011/03/tomcat-request-https-problem/</link><content:encoded>&lt;p&gt;需要在catalia.sh里给JAVA_OPTS再增加一个参数&lt;/p&gt;
&lt;div class=&quot;hl-surround&quot;&gt;&lt;div class=&quot;hl-main&quot;&gt;-Dsun.security.ssl.allowUnsafeRenegotiation=true&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;在解决这个问题上，我走了不少弯路&lt;br /&gt;
在开发过程中（Windows）项目使用了&lt;a href=&quot;http://cxf.apache.org/&quot; target=&quot;_blank&quot;&gt;cxf&lt;/a&gt;来进行webservice的请求封装，一切正常&lt;br /&gt;
部署到服务器（Linux）后总是报SocketTimeOutException&lt;br /&gt;
在排除了编码问题、IP限制和证书错误（命令行使用curl请求获取到了正确的响应）的可能之后，基本定位在cxf本身的问题&lt;/p&gt;
&lt;p&gt;由于cxf代码过于庞杂，部署源码环境很痛苦，最后使用HttpClient拼装满足格式的xml请求模拟SOAP写了一个测试类&lt;br /&gt;
使用java命令行执行后得到正确结果，将测试程序放到Tomcat启动，这时候出现了异常的错误信息：&lt;/p&gt;
&lt;div class=&quot;hl-surround&quot;&gt;&lt;div class=&quot;hl-main&quot;&gt;&lt;span style=&quot;color: Blue;&quot;&gt;SSLException&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;color: Blue;&quot;&gt;HelloRequest&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: Blue;&quot;&gt;followed&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: Blue;&quot;&gt;by&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: Blue;&quot;&gt;an&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: Blue;&quot;&gt;unexpected&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: Blue;&quot;&gt;handshake&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: Blue;&quot;&gt;message&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;以这个异常为关键词搜索很容易得到本文开头加参数的解决办法，于是加上以后cxf的连接也正常了&lt;br /&gt;
那为什么cxf不报正确的异常信息呢？大概是两种可能：&lt;br /&gt;
1、cxf的封装太严实了，没有给出正确的日志信息，不过对于这种成型的框架应该不会有这种低级问题&lt;br /&gt;
2、大概看了一下cxf的实现，有点类似异步模型，在允许的超时时间内没有取到响应导致抛出的异常为超时&lt;/p&gt;
&lt;p&gt;至于Windows下不会出现这个问题，大概是因为不同系统的安全策略吧，不求甚解了&lt;br /&gt;
希望对在非Windows系统（MacOS下也是一样的症状）下碰到此问题的人有帮助&lt;/p&gt;
&lt;p&gt;PS. 此问题应该不仅限于Tomcat，其他web容器估计也是一样的&lt;/p&gt;

	&lt;div style=&quot;clear:both;&quot;&gt;&lt;/div&gt;标签：&lt;a href=&quot;http://blog.sunshow.net/tag/cxf/&quot; title=&quot;cxf&quot; rel=&quot;tag&quot;&gt;cxf&lt;/a&gt;, &lt;a href=&quot;http://blog.sunshow.net/tag/https/&quot; title=&quot;https&quot; rel=&quot;tag&quot;&gt;https&lt;/a&gt;, &lt;a href=&quot;http://blog.sunshow.net/tag/linux/&quot; title=&quot;Linux&quot; rel=&quot;tag&quot;&gt;Linux&lt;/a&gt;, &lt;a href=&quot;http://blog.sunshow.net/tag/socket/&quot; title=&quot;socket&quot; rel=&quot;tag&quot;&gt;socket&lt;/a&gt;, &lt;a href=&quot;http://blog.sunshow.net/tag/tomcat/&quot; title=&quot;Tomcat&quot; rel=&quot;tag&quot;&gt;Tomcat&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;img src=&quot;http://www1.feedsky.com/t1/588786974/sunshow/feedsky/s.gif?r=http://blog.sunshow.net/2011/03/tomcat-request-https-problem/&quot; border=&quot;0&quot; height=&quot;0&quot; width=&quot;0&quot; style=&quot;position:absolute&quot; /&gt;</content:encoded><wfw:commentRss>http://blog.sunshow.net/2011/03/tomcat-request-https-problem/feed/</wfw:commentRss><slash:comments>1</slash:comments><description>需要在catalia.sh里给JAVA_OPTS再增加一个参数 -Dsun.security.ssl.allowUnsafeRenegotiation=true 在解决这个问题上，我走了不少弯路 在开发过程中（Windows）项目使用了cxf来进行webservice的请求封装，一切正常 部署到服务器（Linux）后总是报SocketTimeOutException 在排除了编码问题、IP限制和证书错误（命令行使用curl请求获取到了正确的响应）的可能之后，基本定位在cxf本身的问题 由于cxf代码过于庞杂，部署源码环境很痛苦，最后使用HttpClient拼装满足格式的xml请求模拟SOAP写了一个测试类 使用java命令行执行后得到正确结果，将测试程序放到Tomcat启动，这时候出现了异常的错误信息： SSLException: HelloRequest followed by an unexpected handshake message 以这个异常为关键词搜索很容易得到本文开头加参数的解决办法，于是加上以后cxf的连接也正常了 那为什么cxf不报正确的异常信息呢？大概是两种可能： 1、cxf的封装太严实了，没有给出正确的日志信息，不过对于这种成型的框架应该不会有这种低级问题 2、大概看了一下cxf的实现，有点类似异步模型，在允许的超时时间内没有取到响应导致抛出的异常为超时 至于Windows下不会出现这个问题，大概是因为不同系统的安全策略吧，不求甚解了 希望对在非Windows系统（MacOS下也是一样的症状）下碰到此问题的人有帮助 PS. 此问题应该不仅限于Tomcat，其他web容器估计也是一样的 标签：cxf, https, Linux, socket, Tomcat&lt;img src=&quot;http://www1.feedsky.com/t1/588786974/sunshow/feedsky/s.gif?r=http://blog.sunshow.net/2011/03/tomcat-request-https-problem/&quot; border=&quot;0&quot; height=&quot;0&quot; width=&quot;0&quot; style=&quot;position:absolute&quot; /&gt;</description><category>Linux</category><category>cxf</category><category>https</category><category>Java</category><category>socket</category><category>Tomcat</category><pubDate>Sun, 27 Mar 2011 15:06:29 +0800</pubDate><author>Sunshow</author><comments>http://blog.sunshow.net/2011/03/tomcat-request-https-problem/#comments</comments><guid isPermaLink="false">http://blog.sunshow.net/?p=761</guid><dc:creator>Sunshow</dc:creator><fs:srclink>http://blog.sunshow.net/2011/03/tomcat-request-https-problem/</fs:srclink><fs:srcfeed>http://blog.sunshow.net/feed/</fs:srcfeed><fs:itemid>feedsky/sunshow/~6962024/588786974/1235081</fs:itemid></item><item><title>美味书签 [2011-03-04]:Sunshow @ del.icio.us</title><link>http://www.delicious.com/Sunshow#2011-03-04</link><guid>http://www.delicious.com/Sunshow#2011-03-04</guid><pubDate>Fri, 04 Mar 2011 00:00:00 +0800</pubDate><description>&lt;ul&gt;&lt;li&gt;&lt;a href='http://wiki.summercode.ru/wiki/wiki/Installing_nginx_and_PHP_with_FastCGI_on_Mac_OS_X_105' title='link to ..'&gt;WIKI - Installing nginx and PHP with FastCGI on Mac OS X 105 - SummerCode Knowledge Base&lt;/a&gt;&lt;br/&gt;&lt;div&gt;&lt;/div&gt;&lt;/li&gt;
&lt;/ul&gt;</description><fs:burntype>mark day</fs:burntype><fs:srclink>http://wiki.summercode.ru/wiki/wiki/Installing_nginx_and_PHP_with_FastCGI_on_Mac_OS_X_105</fs:srclink><fs:srcfeed>http://del.icio.us/rss/Sunshow</fs:srcfeed><fs:itemid>feedsky/sunshow/~1316266/578704305/1235081</fs:itemid></item><item><title>[转]facebook是如何管理代码的</title><link>http://blog.sunshow.net/2011/02/how-facebook-ships-code/</link><content:encoded>&lt;p&gt;原文地址：&lt;a href=&quot;http://framethink.wordpress.com/2011/01/17/how-facebook-ships-code/&quot; target=&quot;_blank&quot;&gt;http://framethink.wordpress.com/2011/01/17/how-facebook-ships-code/&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;译文:&lt;/p&gt;
&lt;p&gt;我对facebook的运转着迷。这是一个很独特的环境，不容易被复制（他们的体系并不适合所有的公司，即使他们努力尝试过）。下面是我和facebook的朋友们关于他们如何开发和管理项目的记录。&lt;/p&gt;
&lt;p&gt;现在距离我收集的这些信息又过去6个月了，我相信facebook肯定又对他们的项目开发实践进行了改进。所以这些记录可能会有点过时。同时facebook的工程师驱动文化也越来越为大众所知。非常感谢那些帮助我整理这篇文章的facebook的朋友们。&lt;/p&gt;
&lt;p&gt;记录：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;截止到2010年6月，facebook有将近2000名员工，10个月前只有1100名，一年之间差不多翻了一番。&lt;/li&gt;
&lt;li&gt;两个最大的部门是工程师和运维，每个部门大概都是400-500人。这两个部门人数大约占了公司的一半。&lt;/li&gt;
&lt;li&gt;产品经理与工程师的比例大约为1-7到1-10。&lt;/li&gt;
&lt;li&gt;每个工程师入职时，都要接收4-6周的培训，通过修补bugs和听高级开发工程师的课程来熟悉facebook。&lt;/li&gt;
&lt;li&gt;培训结束后，每个工程师都可以接触线上的数据库(更大的权力意味着更大的责任，也有一份&quot;勿做清单&quot;，不然可能会被开，比如共享用户的隐私数据)。&lt;/li&gt;
&lt;li&gt;有非常牢靠的安全体系，以免有人不小心/故意做了些不好的事。&lt;/li&gt;
&lt;li&gt;每个工程师可以修改facebook的任何代码，随时可以迁入。&lt;/li&gt;
&lt;li&gt;浓厚的工程师驱动文化。&quot;产品经理基本可以被忽略&quot;，这是facebook一名员工的话。工程师可以修改流程的细节，重新安排工作任务，随时植入自己的想法。&lt;/li&gt;
&lt;li&gt;在每月的跨部门会议上，由工程师来汇报工作进度，市场部和产品经理会出席会议，也可以做些简短的发言，但如果说得太多，很可能就会被打小报告。他们确实想让工程师来主导产品的开发，对自己的产品负责。&lt;/li&gt;
&lt;li&gt;项目需要的资源都是自愿的
&lt;ul&gt;
&lt;li&gt;一个产品经理把工程师们召集到一起，让他们对他的想法产生兴趣。&lt;/li&gt;
&lt;li&gt;工程师们决定开发那些让他们感兴趣的特性。&lt;/li&gt;
&lt;li&gt;工程师跟他们的经理说：&quot;我下周想开发这5个新特性&quot;。&lt;/li&gt;
&lt;li&gt;经理会让工程师独立开发，可能有时会让他优先完成一些特性。&lt;/li&gt;
&lt;li&gt;工程师独立完成所有的特性——前端/后端/数据库，等等所有相关的部分。如果需要得到设计人员的帮助，需要先让设计人员对你的想法产生兴趣。其他如架构之类的也一样。但总体来说，工程师要独立完成所有的任务。&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;对于某个特性是否值得开发的争论，通常是这么解决的：花一个星期的时间完成他，并在小部分人群中(如1%)进行测试。&lt;/li&gt;
&lt;li&gt;工程师常常希望解决难题，这能获得声望和尊敬。他们很难对前端项目或UI设计产生太大的兴趣。这跟其他公司可能正好相反。在facebook，后端任务，比如新的feed算法，广告投放算法，memcache优化等等，是工程师真正感兴趣的。&lt;/li&gt;
&lt;li&gt;所有的代码修改都要进行审核(通过一个或多个工程师)，但News Feed是个例外，因为太重要了，Zuckerberg会亲自review。&lt;/li&gt;
&lt;li&gt;所有的修改至少要被一个人审核，而且这个系统可以让任何人很方便地审核其他人的代码，即使你没有邀请他&lt;/li&gt;
&lt;li&gt;工程师负责测试，代码修复，和维护自己的项目。&lt;/li&gt;
&lt;li&gt;每个办公室或通过VPN连接的员工会使用下一版的facebook，这个版本的facebook会经常更新，通常比公开的早1-12小时。所有的员工被强烈建议提交bugs，而且通常会很快被修复。&lt;/li&gt;
&lt;li&gt;很奇怪只有很少的QA或自动测试——&quot;大部分工程师都能写出基本没有bug的代码，只是在其他公司他们不需要这么做。如果有QA部门，他们只要把代码写完，扔给他们就行了&quot;&lt;/li&gt;
&lt;li&gt;[针对上一条]我们有自动测试，代码发布前必须要通过测试。我们不相信&quot;所有的工程师都能写出没有bug的代码&quot;，毕竟这是一个商业公司。&lt;/li&gt;
&lt;li&gt;很奇怪，缺少产品经理的影响和控制——产品经理是很独立的和自由的。产生影响力的关键是与工程师和工程师的领导们们搞好关系。需要大致了解技术，不要提一些愚蠢的想法。&lt;/li&gt;
&lt;li&gt;所有提交的代码每周二打包一次。&lt;/li&gt;
&lt;li&gt;只要多一分努力，终于一天会发生改变。&lt;/li&gt;
&lt;li&gt;星期二的代码发布，需要所有的提交过代码的工程师在场。&lt;/li&gt;
&lt;li&gt;代码打包前，工程师必须在一个特殊的IRC channel上。&lt;/li&gt;
&lt;li&gt;运维执行打包过程
&lt;ul&gt;
&lt;li&gt;facebook有大约60000台服务器&lt;/li&gt;
&lt;li&gt;有9个代码发布级别&lt;/li&gt;
&lt;li&gt;最小的级别只有6台服务器&lt;/li&gt;
&lt;li&gt;星期二的代码发布会先发布到6台服务器上，运维组会检测这6台服务器的反应，保证代码正常工作，然后再提交到下一级&lt;/li&gt;
&lt;li&gt;如果发布出现了一些问题（如报错等等），那么就停止下一级的部署，提交出错代码的工程师负责修复问题，然后从头继续发布。&lt;/li&gt;
&lt;li&gt;所以一次发布可能会经历几次重复：1-2-3-fix. 回到1. 1-2-3-4-5-fix. 回到1. 1-2-3-4-5-6-7-8-9&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;运维组是受过严格训练，倍受尊敬，而且有商业意识的。他们的工作包括分析错误日志，负载和内存状态等等。还包括用户行为。&lt;/li&gt;
&lt;li&gt;代码发布期间，运维组使用IRC-based页面系统，可以通过facebook/email/irc/im/sms ping每一个工程师，如果需要他们注意的话。对运维组不做回应是一件很羞愧的事。&lt;/li&gt;
&lt;li&gt;代码一旦发布到第9级，并且稳定运行，就算发布成功了。&lt;/li&gt;
&lt;li&gt;如果一个特性没有按时完成，也没什么大不了的，下次完成时一并发布即可。&lt;/li&gt;
&lt;li&gt;如果被svn-blamed,public  shamed或工作经常疏忽就很可能被开除。&quot;这是一个高效的文化&quot;。不够高效或者不够聪明的员工会被剔除。管理层会在6个月的时间里观察你表现，如果不 合格，只能说再见。每一级都是这个待遇，即使是C级别和VP级别，如果不够高效，也会被开除。&lt;/li&gt;
&lt;li&gt;被责骂不会导致解雇。我们特别尊重别人，原谅别人。大部分高级工程师都或多或少犯过一些严重的错误，包括我。但没有人因此被解雇。&lt;/li&gt;
&lt;li&gt;我也没有遇到过因为上面提到过的犯错误而被解雇。有些人犯了错，他们会非常努力地去修复，也让其他人得到了学习。&lt;/li&gt;
&lt;/ul&gt;

	&lt;div style=&quot;clear:both;&quot;&gt;&lt;/div&gt;标签：&lt;a href=&quot;http://blog.sunshow.net/tag/facebook/&quot; title=&quot;facebook&quot; rel=&quot;tag&quot;&gt;facebook&lt;/a&gt;, &lt;a href=&quot;http://blog.sunshow.net/tag/%e4%bb%a3%e7%a0%81/&quot; title=&quot;代码&quot; rel=&quot;tag&quot;&gt;代码&lt;/a&gt;, &lt;a href=&quot;http://blog.sunshow.net/tag/%e6%b5%8b%e8%af%95/&quot; title=&quot;测试&quot; rel=&quot;tag&quot;&gt;测试&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;img src=&quot;http://www1.feedsky.com/t1/588786975/sunshow/feedsky/s.gif?r=http://blog.sunshow.net/2011/02/how-facebook-ships-code/&quot; border=&quot;0&quot; height=&quot;0&quot; width=&quot;0&quot; style=&quot;position:absolute&quot; /&gt;</content:encoded><wfw:commentRss>http://blog.sunshow.net/2011/02/how-facebook-ships-code/feed/</wfw:commentRss><slash:comments>0</slash:comments><description>原文地址：http://framethink.wordpress.com/2011/01/17/how-facebook-ships-code/ 译文: 我对facebook的运转着迷。这是一个很独特的环境，不容易被复制（他们的体系并不适合所有的公司，即使他们努力尝试过）。下面是我和facebook的朋友们关于他们如何开发和管理项目的记录。 现在距离我收集的这些信息又过去6个月了，我相信facebook肯定又对他们的项目开发实践进行了改进。所以这些记录可能会有点过时。同时facebook的工程师驱动文化也越来越为大众所知。非常感谢那些帮助我整理这篇文章的facebook的朋友们。 记录： 截止到2010年6月，facebook有将近2000名员工，10个月前只有1100名，一年之间差不多翻了一番。 两个最大的部门是工程师和运维，每个部门大概都是400-500人。这两个部门人数大约占了公司的一半。 产品经理与工程师的比例大约为1-7到1-10。 每个工程师入职时，都要接收4-6周的培训，通过修补bugs和听高级开发工程师的课程来熟悉facebook。 培训结束后，每个工程师都可以接触线上的数据库(更大的权力意味着更大的责任，也有一份&quot;勿做清单&quot;，不然可能会被开，比如共享用户的隐私数据)。 有非常牢靠的安全体系，以免有人不小心/故意做了些不好的事。 每个工程师可以修改facebook的任何代码，随时可以迁入。 浓厚的工程师驱动文化。&quot;产品经理基本可以被忽略&quot;，这是facebook一名员工的话。工程师可以修改流程的细节，重新安排工作任务，随时植入自己的想法。 在每月的跨部门会议上，由工程师来汇报工作进度，市场部和产品经理会出席会议，也可以做些简短的发言，但如果说得太多，很可能就会被打小报告。他们确实想让工程师来主导产品的开发，对自己的产品负责。 项目需要的资源都是自愿的 一个产品经理把工程师们召集到一起，让他们对他的想法产生兴趣。 工程师们决定开发那些让他们感兴趣的特性。 工程师跟他们的经理说：&quot;我下周想开发这5个新特性&quot;。 经理会让工程师独立开发，可能有时会让他优先完成一些特性。 工程师独立完成所有的特性——前端/后端/数据库，等等所有相关的部分。如果需要得到设计人员的帮助，需要先让设计人员对你的想法产生兴趣。其他如架构之类的也一样。但总体来说，工程师要独立完成所有的任务。 对于某个特性是否值得开发的争论，通常是这么解决的：花一个星期的时间完成他，并在小部分人群中(如1%)进行测试。 工程师常常希望解决难题，这能获得声望和尊敬。他们很难对前端项目或UI设计产生太大的兴趣。这跟其他公司可能正好相反。在facebook，后端任务，比如新的feed算法，广告投放算法，memcache优化等等，是工程师真正感兴趣的。 所有的代码修改都要进行审核(通过一个或多个工程师)，但News Feed是个例外，因为太重要了，Zuckerberg会亲自review。 所有的修改至少要被一个人审核，而且这个系统可以让任何人很方便地审核其他人的代码，即使你没有邀请他 工程师负责测试，代码修复，和维护自己的项目。 每个办公室或通过VPN连接的员工会使用下一版的facebook，这个版本的facebook会经常更新，通常比公开的早1-12小时。所有的员工被强烈建议提交bugs，而且通常会很快被修复。 很奇怪只有很少的QA或自动测试——&quot;大部分工程师都能写出基本没有bug的代码，只是在其他公司他们不需要这么做。如果有QA部门，他们只要把代码写完，扔给他们就行了&quot; [针对上一条]我们有自动测试，代码发布前必须要通过测试。我们不相信&quot;所有的工程师都能写出没有bug的代码&quot;，毕竟这是一个商业公司。 很奇怪，缺少产品经理的影响和控制——产品经理是很独立的和自由的。产生影响力的关键是与工程师和工程师的领导们们搞好关系。需要大致了解技术，不要提一些愚蠢的想法。 所有提交的代码每周二打包一次。 只要多一分努力，终于一天会发生改变。 星期二的代码发布，需要所有的提交过代码的工程师在场。 代码打包前，工程师必须在一个特殊的IRC channel上。 运维执行打包过程 facebook有大约60000台服务器 有9个代码发布级别 最小的级别只有6台服务器 星期二的代码发布会先发布到6台服务器上，运维组会检测这6台服务器的反应，保证代码正常工作，然后再提交到下一级 如果发布出现了一些问题（如报错等等），那么就停止下一级的部署，提交出错代码的工程师负责修复问题，然后从头继续发布。 所以一次发布可能会经历几次重复：1-2-3-fix. 回到1. 1-2-3-4-5-fix. 回到1. 1-2-3-4-5-6-7-8-9 运维组是受过严格训练，倍受尊敬，而且有商业意识的。他们的工作包括分析错误日志，负载和内存状态等等。还包括用户行为。 代码发布期间，运维组使用IRC-based页面系统，可以通过facebook/email/irc/im/sms ping每一个工程师，如果需要他们注意的话。对运维组不做回应是一件很羞愧的事。 代码一旦发布到第9级，并且稳定运行，就算发布成功了。 如果一个特性没有按时完成，也没什么大不了的，下次完成时一并发布即可。 如果被svn-blamed,public shamed或工作经常疏忽就很可能被开除。&quot;这是一个高效的文化&quot;。不够高效或者不够聪明的员工会被剔除。管理层会在6个月的时间里观察你表现，如果不 合格，只能说再见。每一级都是这个待遇，即使是C级别和VP级别，如果不够高效，也会被开除。 被责骂不会导致解雇。我们特别尊重别人，原谅别人。大部分高级工程师都或多或少犯过一些严重的错误，包括我。但没有人因此被解雇。 [...]&lt;img src=&quot;http://www1.feedsky.com/t1/588786975/sunshow/feedsky/s.gif?r=http://blog.sunshow.net/2011/02/how-facebook-ships-code/&quot; border=&quot;0&quot; height=&quot;0&quot; width=&quot;0&quot; style=&quot;position:absolute&quot; /&gt;</description><category>Java</category><category>facebook</category><category>测试</category><category>代码</category><category>WebDev</category><pubDate>Fri, 04 Feb 2011 20:48:18 +0800</pubDate><author>Sunshow</author><comments>http://blog.sunshow.net/2011/02/how-facebook-ships-code/#comments</comments><guid isPermaLink="false">http://blog.sunshow.net/?p=758</guid><dc:creator>Sunshow</dc:creator><fs:srclink>http://blog.sunshow.net/2011/02/how-facebook-ships-code/</fs:srclink><fs:srcfeed>http://blog.sunshow.net/feed/</fs:srcfeed><fs:itemid>feedsky/sunshow/~6962024/588786975/1235081</fs:itemid></item><item><title>招聘WAP开发工程师</title><link>http://blog.sunshow.net/2010/12/recruit-wap-develop-engineer/</link><content:encoded>&lt;p&gt;简历请mail到sunshow#gmail.com，注明应聘职位&lt;/p&gt;
&lt;p&gt;职责：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;乐和彩(&lt;a href=&quot;http://www.lehecai.com&quot;&gt;www.lehecai.com&lt;/a&gt;)手机WAP站的开发&lt;/li&gt;
&lt;li&gt;WAP支付的开发&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;要求：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;一年以上相关行业经验&lt;/li&gt;
&lt;li&gt;大专以上学历&lt;/li&gt;
&lt;li&gt;有支付接口开发经验优先&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;待遇：4-8K&lt;/p&gt;

	&lt;div style=&quot;clear:both;&quot;&gt;&lt;/div&gt;标签：&lt;a href=&quot;http://blog.sunshow.net/tag/wap/&quot; title=&quot;WAP&quot; rel=&quot;tag&quot;&gt;WAP&lt;/a&gt;, &lt;a href=&quot;http://blog.sunshow.net/tag/%e6%89%8b%e6%9c%ba/&quot; title=&quot;手机&quot; rel=&quot;tag&quot;&gt;手机&lt;/a&gt;, &lt;a href=&quot;http://blog.sunshow.net/tag/%e6%8b%9b%e8%81%98/&quot; title=&quot;招聘&quot; rel=&quot;tag&quot;&gt;招聘&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;img src=&quot;http://www1.feedsky.com/t1/588786976/sunshow/feedsky/s.gif?r=http://blog.sunshow.net/2010/12/recruit-wap-develop-engineer/&quot; border=&quot;0&quot; height=&quot;0&quot; width=&quot;0&quot; style=&quot;position:absolute&quot; /&gt;</content:encoded><wfw:commentRss>http://blog.sunshow.net/2010/12/recruit-wap-develop-engineer/feed/</wfw:commentRss><slash:comments>1</slash:comments><description>简历请mail到sunshow#gmail.com，注明应聘职位 职责： 乐和彩(www.lehecai.com)手机WAP站的开发 WAP支付的开发 要求： 一年以上相关行业经验 大专以上学历 有支付接口开发经验优先 待遇：4-8K 标签：WAP, 手机, 招聘&lt;img src=&quot;http://www1.feedsky.com/t1/588786976/sunshow/feedsky/s.gif?r=http://blog.sunshow.net/2010/12/recruit-wap-develop-engineer/&quot; border=&quot;0&quot; height=&quot;0&quot; width=&quot;0&quot; style=&quot;position:absolute&quot; /&gt;</description><category>WAP</category><category>Life</category><category>手机</category><category>招聘</category><pubDate>Mon, 20 Dec 2010 12:00:02 +0800</pubDate><author>Sunshow</author><comments>http://blog.sunshow.net/2010/12/recruit-wap-develop-engineer/#comments</comments><guid isPermaLink="false">http://blog.sunshow.net/?p=756</guid><dc:creator>Sunshow</dc:creator><fs:srclink>http://blog.sunshow.net/2010/12/recruit-wap-develop-engineer/</fs:srclink><fs:srcfeed>http://blog.sunshow.net/feed/</fs:srcfeed><fs:itemid>feedsky/sunshow/~6962024/588786976/1235081</fs:itemid></item><item><title>IE6提交表单到动态添加的iframe</title><link>http://blog.sunshow.net/2010/12/ie6-submit-form-to-dynamically-added-iframe/</link><content:encoded>&lt;p&gt;最近做无刷新上传，传统方法是提交到隐藏的iframe里然后回调&lt;br /&gt;
不希望所有上传的页面都预设iframe，于是采用动态创建的方式（无视掉里面的jQuery吧）：&lt;/p&gt;
&lt;div class=&quot;hl-surround&quot;&gt;&lt;div class=&quot;hl-main&quot;&gt;&lt;span style=&quot;color: Green;&quot;&gt;var&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt; $&lt;/span&gt;&lt;span style=&quot;color: Blue;&quot;&gt;target&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt; = $&lt;/span&gt;&lt;span style=&quot;color: Olive;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: Teal;&quot;&gt;document&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color: Blue;&quot;&gt;createElement&lt;/span&gt;&lt;span style=&quot;color: Olive;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #8b0000;&quot;&gt;'&lt;/span&gt;&lt;span style=&quot;color: Red;&quot;&gt;IFRAME&lt;/span&gt;&lt;span style=&quot;color: #8b0000;&quot;&gt;'&lt;/span&gt;&lt;span style=&quot;color: Olive;&quot;&gt;))&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color: Blue;&quot;&gt;hide&lt;/span&gt;&lt;span style=&quot;color: Olive;&quot;&gt;()&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt;;&lt;br /&gt;$&lt;/span&gt;&lt;span style=&quot;color: Blue;&quot;&gt;target&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color: Blue;&quot;&gt;attr&lt;/span&gt;&lt;span style=&quot;color: Olive;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #8b0000;&quot;&gt;'&lt;/span&gt;&lt;span style=&quot;color: Red;&quot;&gt;id&lt;/span&gt;&lt;span style=&quot;color: #8b0000;&quot;&gt;'&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;color: Blue;&quot;&gt;target&lt;/span&gt;&lt;span style=&quot;color: Olive;&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color: Blue;&quot;&gt;attr&lt;/span&gt;&lt;span style=&quot;color: Olive;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #8b0000;&quot;&gt;'&lt;/span&gt;&lt;span style=&quot;color: Red;&quot;&gt;name&lt;/span&gt;&lt;span style=&quot;color: #8b0000;&quot;&gt;'&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;color: Blue;&quot;&gt;target&lt;/span&gt;&lt;span style=&quot;color: Olive;&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt;;&lt;br /&gt;&amp;nbsp;&lt;br /&gt;$&lt;/span&gt;&lt;span style=&quot;color: Olive;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #8b0000;&quot;&gt;'&lt;/span&gt;&lt;span style=&quot;color: Red;&quot;&gt;body&lt;/span&gt;&lt;span style=&quot;color: #8b0000;&quot;&gt;'&lt;/span&gt;&lt;span style=&quot;color: Olive;&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color: Blue;&quot;&gt;append&lt;/span&gt;&lt;span style=&quot;color: Olive;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt;$&lt;/span&gt;&lt;span style=&quot;color: Blue;&quot;&gt;target&lt;/span&gt;&lt;span style=&quot;color: Olive;&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;结果IE6下总是提交到一个新窗口&lt;br /&gt;
解决办法是不采用DOM操作，而是直接使用innerHTML：&lt;/p&gt;
&lt;div class=&quot;hl-surround&quot;&gt;&lt;div class=&quot;hl-main&quot;&gt;&lt;span style=&quot;color: #ffa500;&quot;&gt;// use html but not DOM, for IE6&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt;&lt;br /&gt;$&lt;/span&gt;&lt;span style=&quot;color: Olive;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #8b0000;&quot;&gt;'&lt;/span&gt;&lt;span style=&quot;color: Red;&quot;&gt;body&lt;/span&gt;&lt;span style=&quot;color: #8b0000;&quot;&gt;'&lt;/span&gt;&lt;span style=&quot;color: Olive;&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color: Blue;&quot;&gt;append&lt;/span&gt;&lt;span style=&quot;color: Olive;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #8b0000;&quot;&gt;'&lt;/span&gt;&lt;span style=&quot;color: Red;&quot;&gt;&amp;lt;iframe id=&amp;quot;&lt;/span&gt;&lt;span style=&quot;color: #8b0000;&quot;&gt;'&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt; + &lt;/span&gt;&lt;span style=&quot;color: Blue;&quot;&gt;target&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt; + &lt;/span&gt;&lt;span style=&quot;color: #8b0000;&quot;&gt;'&lt;/span&gt;&lt;span style=&quot;color: Red;&quot;&gt;&amp;quot; name=&amp;quot;&lt;/span&gt;&lt;span style=&quot;color: #8b0000;&quot;&gt;'&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt; + &lt;/span&gt;&lt;span style=&quot;color: Blue;&quot;&gt;target&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt; + &lt;/span&gt;&lt;span style=&quot;color: #8b0000;&quot;&gt;'&lt;/span&gt;&lt;span style=&quot;color: Red;&quot;&gt;&amp;quot; style=&amp;quot;display:none;&amp;quot;&amp;gt;&amp;lt;/iframe&amp;gt;&lt;/span&gt;&lt;span style=&quot;color: #8b0000;&quot;&gt;'&lt;/span&gt;&lt;span style=&quot;color: Olive;&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;参考文章：&lt;a href=&quot;http://forums.digitalpoint.com/showthread.php?t=107314&quot;&gt;http://forums.digitalpoint.com/showthread.php?t=107314&lt;/a&gt;&lt;/p&gt;

	&lt;div style=&quot;clear:both;&quot;&gt;&lt;/div&gt;标签：&lt;a href=&quot;http://blog.sunshow.net/tag/dom/&quot; title=&quot;DOM&quot; rel=&quot;tag&quot;&gt;DOM&lt;/a&gt;, &lt;a href=&quot;http://blog.sunshow.net/tag/iframe/&quot; title=&quot;iframe&quot; rel=&quot;tag&quot;&gt;iframe&lt;/a&gt;, &lt;a href=&quot;http://blog.sunshow.net/tag/innerhtml/&quot; title=&quot;innerHTML&quot; rel=&quot;tag&quot;&gt;innerHTML&lt;/a&gt;, &lt;a href=&quot;http://blog.sunshow.net/tag/javascript/&quot; title=&quot;javascript&quot; rel=&quot;tag&quot;&gt;javascript&lt;/a&gt;, &lt;a href=&quot;http://blog.sunshow.net/tag/%e6%8f%90%e4%ba%a4/&quot; title=&quot;提交&quot; rel=&quot;tag&quot;&gt;提交&lt;/a&gt;, &lt;a href=&quot;http://blog.sunshow.net/tag/%e8%a1%a8%e5%8d%95/&quot; title=&quot;表单&quot; rel=&quot;tag&quot;&gt;表单&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;img src=&quot;http://www1.feedsky.com/t1/588786977/sunshow/feedsky/s.gif?r=http://blog.sunshow.net/2010/12/ie6-submit-form-to-dynamically-added-iframe/&quot; border=&quot;0&quot; height=&quot;0&quot; width=&quot;0&quot; style=&quot;position:absolute&quot; /&gt;</content:encoded><wfw:commentRss>http://blog.sunshow.net/2010/12/ie6-submit-form-to-dynamically-added-iframe/feed/</wfw:commentRss><slash:comments>1</slash:comments><description>最近做无刷新上传，传统方法是提交到隐藏的iframe里然后回调 不希望所有上传的页面都预设iframe，于是采用动态创建的方式（无视掉里面的jQuery吧）： var $target = $(document.createElement('IFRAME')).hide();$target.attr('id', target).attr('name', target);&amp;#160;$('body').append($target); 结果IE6下总是提交到一个新窗口 解决办法是不采用DOM操作，而是直接使用innerHTML： // use html but not DOM, for IE6$('body').append('&amp;#60;iframe id=&amp;#34;' + target + '&amp;#34; name=&amp;#34;' + target + '&amp;#34; style=&amp;#34;display:none;&amp;#34;&amp;#62;&amp;#60;/iframe&amp;#62;'); 参考文章：http://forums.digitalpoint.com/showthread.php?t=107314 标签：DOM, iframe, innerHTML, javascript, 提交, 表单&lt;img src=&quot;http://www1.feedsky.com/t1/588786977/sunshow/feedsky/s.gif?r=http://blog.sunshow.net/2010/12/ie6-submit-form-to-dynamically-added-iframe/&quot; border=&quot;0&quot; height=&quot;0&quot; width=&quot;0&quot; style=&quot;position:absolute&quot; /&gt;</description><category>innerHTML</category><category>DOM</category><category>iframe</category><category>提交</category><category>表单</category><category>WebDev</category><category>javascript</category><pubDate>Sat, 11 Dec 2010 10:56:32 +0800</pubDate><author>Sunshow</author><comments>http://blog.sunshow.net/2010/12/ie6-submit-form-to-dynamically-added-iframe/#comments</comments><guid isPermaLink="false">http://blog.sunshow.net/?p=753</guid><dc:creator>Sunshow</dc:creator><fs:srclink>http://blog.sunshow.net/2010/12/ie6-submit-form-to-dynamically-added-iframe/</fs:srclink><fs:srcfeed>http://blog.sunshow.net/feed/</fs:srcfeed><fs:itemid>feedsky/sunshow/~6962024/588786977/1235081</fs:itemid></item><item><title>美味书签 [2010-11-30]:Sunshow @ del.icio.us</title><link>http://www.delicious.com/Sunshow#2010-11-30</link><guid>http://www.delicious.com/Sunshow#2010-11-30</guid><pubDate>Tue, 30 Nov 2010 00:00:00 +0800</pubDate><description>&lt;ul&gt;&lt;li&gt;&lt;a href='http://alansun.javaeye.com/blog/765312' title='link to ..'&gt;求不定长度的二维数数组的所有组合结果&lt;/a&gt;&lt;br/&gt;&lt;div&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href='http://xok.la/2010/06/memcached_questions.html' title='link to ..'&gt;Memcached 集群架构问题归纳&lt;/a&gt;&lt;br/&gt;&lt;div&gt;&lt;/div&gt;&lt;/li&gt;
&lt;/ul&gt;</description><fs:burntype>mark day</fs:burntype><fs:srclink>http://alansun.javaeye.com/blog/765312</fs:srclink><fs:srcfeed>http://del.icio.us/rss/Sunshow</fs:srcfeed><fs:itemid>feedsky/sunshow/~1316266/578704306/1235081</fs:itemid></item><item><title>美味书签 [2010-11-25]:Sunshow @ del.icio.us</title><link>http://www.delicious.com/Sunshow#2010-11-25</link><guid>http://www.delicious.com/Sunshow#2010-11-25</guid><pubDate>Thu, 25 Nov 2010 00:00:00 +0800</pubDate><description>&lt;ul&gt;&lt;li&gt;&lt;a href='http://blog.sina.com.cn/s/blog_53d96fe30100clc0.html' title='link to ..'&gt;HttpWatch中的ERROR_INTERNET_INVALID_URL错误_淡淡花香入梦来_新浪博客&lt;/a&gt;&lt;br/&gt;&lt;div&gt;&lt;/div&gt;&lt;/li&gt;
&lt;/ul&gt;</description><fs:burntype>mark day</fs:burntype><fs:srclink>http://blog.sina.com.cn/s/blog_53d96fe30100clc0.html</fs:srclink><fs:srcfeed>http://del.icio.us/rss/Sunshow</fs:srcfeed><fs:itemid>feedsky/sunshow/~1316266/578704308/1235081</fs:itemid></item></channel></rss>
