<?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>Sunshow Life</title>
	<atom:link href="http://blog.sunshow.net/feed/" rel="self" type="application/rss+xml" />
	<link>http://blog.sunshow.net</link>
	<description>回到最初的美好</description>
	<lastBuildDate>Mon, 19 Dec 2011 06:41:32 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>手动添加Windows共享打印机</title>
		<link>http://blog.sunshow.net/2011/12/add-shared-windows-printer-manually/</link>
		<comments>http://blog.sunshow.net/2011/12/add-shared-windows-printer-manually/#comments</comments>
		<pubDate>Mon, 19 Dec 2011 06:41:32 +0000</pubDate>
		<dc:creator>Sunshow</dc:creator>
				<category><![CDATA[Mac OS X]]></category>
		<category><![CDATA[encode]]></category>
		<category><![CDATA[打印]]></category>

		<guid isPermaLink="false">http://blog.sunshow.net/?p=766</guid>
		<description><![CDATA[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, 打印]]></description>
			<content:encoded><![CDATA[<p>Apple官方教程：<a href="http://support.apple.com/kb/HT3049?viewlocale=zh_CN" title="Mac OS X：如何手动添加 Windows 共享打印机" target="_blank">http://support.apple.com/kb/HT3049?viewlocale=zh_CN</a></p>
<p>这里只说一点，OS X中添加Windows打印机时共享名不支持中文和空格等特殊字符（因为需要遵循samba的url规范），因此需要对共享名进行URL encoding，</p>
<p>最简单的方法是，在firebug中执行：</p>
<div class="hl-surround"><div class="hl-main"><span style="color: Blue;">encodeURI</span><span style="color: Olive;">(</span><span style="color: #8b0000;">'</span><span style="color: Red;">smb://172.16.5.250/打印机</span><span style="color: #8b0000;">'</span><span style="color: Olive;">)</span><span style="color: Gray;">;</span></div></div>

	<div style="clear:both;"></div>标签：<a href="http://blog.sunshow.net/tag/encode/" title="encode" rel="tag">encode</a>, <a href="http://blog.sunshow.net/tag/%e6%89%93%e5%8d%b0/" title="打印" rel="tag">打印</a><br /><br />
]]></content:encoded>
			<wfw:commentRss>http://blog.sunshow.net/2011/12/add-shared-windows-printer-manually/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>升级到3.3</title>
		<link>http://blog.sunshow.net/2011/12/upgrade-to-wordpress-3-3/</link>
		<comments>http://blog.sunshow.net/2011/12/upgrade-to-wordpress-3-3/#comments</comments>
		<pubDate>Thu, 15 Dec 2011 07:21:52 +0000</pubDate>
		<dc:creator>Sunshow</dc:creator>
				<category><![CDATA[WordPress]]></category>
		<category><![CDATA[主题]]></category>
		<category><![CDATA[升级]]></category>

		<guid isPermaLink="false">http://blog.sunshow.net/?p=764</guid>
		<description><![CDATA[看到小牧师说升级了后台好看，于是升了 然后用自己改的那个主题打不开了，换成默认的某主题 就这样吧 不是爱折腾的年代了 标签：主题, 升级]]></description>
			<content:encoded><![CDATA[<p>看到<a href="http://blog.feuvan.net/2011/12/14/10090-updated-to-wordpress-3-3.html">小牧师说升级了后台好看</a>，于是升了<br />
然后用自己改的那个主题打不开了，换成默认的某主题<br />
就这样吧<br />
不是爱折腾的年代了</p>

	<div style="clear:both;"></div>标签：<a href="http://blog.sunshow.net/tag/%e4%b8%bb%e9%a2%98/" title="主题" rel="tag">主题</a>, <a href="http://blog.sunshow.net/tag/%e5%8d%87%e7%ba%a7/" title="升级" rel="tag">升级</a><br /><br />
]]></content:encoded>
			<wfw:commentRss>http://blog.sunshow.net/2011/12/upgrade-to-wordpress-3-3/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>IE的“c00ce56e”bug</title>
		<link>http://blog.sunshow.net/2011/04/ie-c00ce56e-bug/</link>
		<comments>http://blog.sunshow.net/2011/04/ie-c00ce56e-bug/#comments</comments>
		<pubDate>Tue, 26 Apr 2011 00:08:28 +0000</pubDate>
		<dc:creator>Sunshow</dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[Network]]></category>
		<category><![CDATA[WebDev]]></category>
		<category><![CDATA[bug]]></category>
		<category><![CDATA[ie]]></category>
		<category><![CDATA[nginx]]></category>
		<category><![CDATA[编码]]></category>

		<guid isPermaLink="false">http://blog.sunshow.net/?p=762</guid>
		<description><![CDATA[很简单的一个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. "ISO8859_1" is the canonical representation of the Latin-1 character encoding [...]]]></description>
			<content:encoded><![CDATA[<p>很简单的一个jQuery AJAX请求文件，IE8下报：</p>
<div class="hl-surround"><div class="hl-main">Could not complete the operation due to error c00ce56e.</div></div>
<p>检查网上都说是编码问题，不过写的不是太明确，因为我们服务器的文件编码都已经是UTF-8<br />
最后找到<a href="http://forums.asp.net/t/1345268.aspx#2732852">说明</a>：</p>
<blockquote><p>
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.</p>
<p>"ISO8859_1" 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 "ISO-8859-1", which is not an accepted alias.</p>
<p> For more information refer: http://support.microsoft.com/default.aspx?scid=kb;en-us;304625
</p></blockquote>
<p>于是打开nginx的配置文件，把所有“utf8”替换成“UTF-8”，问题解决</p>

	<div style="clear:both;"></div>标签：<a href="http://blog.sunshow.net/tag/bug/" title="bug" rel="tag">bug</a>, <a href="http://blog.sunshow.net/tag/ie/" title="ie" rel="tag">ie</a>, <a href="http://blog.sunshow.net/tag/nginx/" title="nginx" rel="tag">nginx</a>, <a href="http://blog.sunshow.net/tag/%e7%bc%96%e7%a0%81/" title="编码" rel="tag">编码</a><br /><br />
]]></content:encoded>
			<wfw:commentRss>http://blog.sunshow.net/2011/04/ie-c00ce56e-bug/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Tomcat请求HTTPS的注意事项</title>
		<link>http://blog.sunshow.net/2011/03/tomcat-request-https-problem/</link>
		<comments>http://blog.sunshow.net/2011/03/tomcat-request-https-problem/#comments</comments>
		<pubDate>Sun, 27 Mar 2011 07:06:29 +0000</pubDate>
		<dc:creator>Sunshow</dc:creator>
				<category><![CDATA[Java]]></category>
		<category><![CDATA[cxf]]></category>
		<category><![CDATA[https]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[socket]]></category>
		<category><![CDATA[Tomcat]]></category>

		<guid isPermaLink="false">http://blog.sunshow.net/?p=761</guid>
		<description><![CDATA[需要在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]]></description>
			<content:encoded><![CDATA[<p>需要在catalia.sh里给JAVA_OPTS再增加一个参数</p>
<div class="hl-surround"><div class="hl-main">-Dsun.security.ssl.allowUnsafeRenegotiation=true</div></div>
<p>在解决这个问题上，我走了不少弯路<br />
在开发过程中（Windows）项目使用了<a href="http://cxf.apache.org/" target="_blank">cxf</a>来进行webservice的请求封装，一切正常<br />
部署到服务器（Linux）后总是报SocketTimeOutException<br />
在排除了编码问题、IP限制和证书错误（命令行使用curl请求获取到了正确的响应）的可能之后，基本定位在cxf本身的问题</p>
<p>由于cxf代码过于庞杂，部署源码环境很痛苦，最后使用HttpClient拼装满足格式的xml请求模拟SOAP写了一个测试类<br />
使用java命令行执行后得到正确结果，将测试程序放到Tomcat启动，这时候出现了异常的错误信息：</p>
<div class="hl-surround"><div class="hl-main"><span style="color: Blue;">SSLException</span><span style="color: Gray;">: </span><span style="color: Blue;">HelloRequest</span><span style="color: Gray;"> </span><span style="color: Blue;">followed</span><span style="color: Gray;"> </span><span style="color: Blue;">by</span><span style="color: Gray;"> </span><span style="color: Blue;">an</span><span style="color: Gray;"> </span><span style="color: Blue;">unexpected</span><span style="color: Gray;"> </span><span style="color: Blue;">handshake</span><span style="color: Gray;"> </span><span style="color: Blue;">message</span></div></div>
<p>以这个异常为关键词搜索很容易得到本文开头加参数的解决办法，于是加上以后cxf的连接也正常了<br />
那为什么cxf不报正确的异常信息呢？大概是两种可能：<br />
1、cxf的封装太严实了，没有给出正确的日志信息，不过对于这种成型的框架应该不会有这种低级问题<br />
2、大概看了一下cxf的实现，有点类似异步模型，在允许的超时时间内没有取到响应导致抛出的异常为超时</p>
<p>至于Windows下不会出现这个问题，大概是因为不同系统的安全策略吧，不求甚解了<br />
希望对在非Windows系统（MacOS下也是一样的症状）下碰到此问题的人有帮助</p>
<p>PS. 此问题应该不仅限于Tomcat，其他web容器估计也是一样的</p>

	<div style="clear:both;"></div>标签：<a href="http://blog.sunshow.net/tag/cxf/" title="cxf" rel="tag">cxf</a>, <a href="http://blog.sunshow.net/tag/https/" title="https" rel="tag">https</a>, <a href="http://blog.sunshow.net/tag/linux/" title="Linux" rel="tag">Linux</a>, <a href="http://blog.sunshow.net/tag/socket/" title="socket" rel="tag">socket</a>, <a href="http://blog.sunshow.net/tag/tomcat/" title="Tomcat" rel="tag">Tomcat</a><br /><br />
]]></content:encoded>
			<wfw:commentRss>http://blog.sunshow.net/2011/03/tomcat-request-https-problem/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>[转]facebook是如何管理代码的</title>
		<link>http://blog.sunshow.net/2011/02/how-facebook-ships-code/</link>
		<comments>http://blog.sunshow.net/2011/02/how-facebook-ships-code/#comments</comments>
		<pubDate>Fri, 04 Feb 2011 12:48:18 +0000</pubDate>
		<dc:creator>Sunshow</dc:creator>
				<category><![CDATA[Java]]></category>
		<category><![CDATA[WebDev]]></category>
		<category><![CDATA[facebook]]></category>
		<category><![CDATA[代码]]></category>
		<category><![CDATA[测试]]></category>

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

	<div style="clear:both;"></div>标签：<a href="http://blog.sunshow.net/tag/facebook/" title="facebook" rel="tag">facebook</a>, <a href="http://blog.sunshow.net/tag/%e4%bb%a3%e7%a0%81/" title="代码" rel="tag">代码</a>, <a href="http://blog.sunshow.net/tag/%e6%b5%8b%e8%af%95/" title="测试" rel="tag">测试</a><br /><br />
]]></content:encoded>
			<wfw:commentRss>http://blog.sunshow.net/2011/02/how-facebook-ships-code/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>招聘WAP开发工程师</title>
		<link>http://blog.sunshow.net/2010/12/recruit-wap-develop-engineer/</link>
		<comments>http://blog.sunshow.net/2010/12/recruit-wap-develop-engineer/#comments</comments>
		<pubDate>Mon, 20 Dec 2010 04:00:02 +0000</pubDate>
		<dc:creator>Sunshow</dc:creator>
				<category><![CDATA[Life]]></category>
		<category><![CDATA[WAP]]></category>
		<category><![CDATA[手机]]></category>
		<category><![CDATA[招聘]]></category>

		<guid isPermaLink="false">http://blog.sunshow.net/?p=756</guid>
		<description><![CDATA[简历请mail到sunshow#gmail.com，注明应聘职位 职责： 乐和彩(www.lehecai.com)手机WAP站的开发 WAP支付的开发 要求： 一年以上相关行业经验 大专以上学历 有支付接口开发经验优先 待遇：4-8K 标签：WAP, 手机, 招聘]]></description>
			<content:encoded><![CDATA[<p>简历请mail到sunshow#gmail.com，注明应聘职位</p>
<p>职责：</p>
<ul>
<li>乐和彩(<a href="http://www.lehecai.com">www.lehecai.com</a>)手机WAP站的开发</li>
<li>WAP支付的开发</li>
</ul>
<p>要求：</p>
<ul>
<li>一年以上相关行业经验</li>
<li>大专以上学历</li>
<li>有支付接口开发经验优先</li>
</ul>
<p>待遇：4-8K</p>

	<div style="clear:both;"></div>标签：<a href="http://blog.sunshow.net/tag/wap/" title="WAP" rel="tag">WAP</a>, <a href="http://blog.sunshow.net/tag/%e6%89%8b%e6%9c%ba/" title="手机" rel="tag">手机</a>, <a href="http://blog.sunshow.net/tag/%e6%8b%9b%e8%81%98/" title="招聘" rel="tag">招聘</a><br /><br />
]]></content:encoded>
			<wfw:commentRss>http://blog.sunshow.net/2010/12/recruit-wap-develop-engineer/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>IE6提交表单到动态添加的iframe</title>
		<link>http://blog.sunshow.net/2010/12/ie6-submit-form-to-dynamically-added-iframe/</link>
		<comments>http://blog.sunshow.net/2010/12/ie6-submit-form-to-dynamically-added-iframe/#comments</comments>
		<pubDate>Sat, 11 Dec 2010 02:56:32 +0000</pubDate>
		<dc:creator>Sunshow</dc:creator>
				<category><![CDATA[WebDev]]></category>
		<category><![CDATA[DOM]]></category>
		<category><![CDATA[iframe]]></category>
		<category><![CDATA[innerHTML]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[提交]]></category>
		<category><![CDATA[表单]]></category>

		<guid isPermaLink="false">http://blog.sunshow.net/?p=753</guid>
		<description><![CDATA[最近做无刷新上传，传统方法是提交到隐藏的iframe里然后回调 不希望所有上传的页面都预设iframe，于是采用动态创建的方式（无视掉里面的jQuery吧）： var $target = $(document.createElement('IFRAME')).hide();$target.attr('id', target).attr('name', target);&#160;$('body').append($target); 结果IE6下总是提交到一个新窗口 解决办法是不采用DOM操作，而是直接使用innerHTML： // use html but not DOM, for IE6$('body').append('&#60;iframe id=&#34;' + target + '&#34; name=&#34;' + target + '&#34; style=&#34;display:none;&#34;&#62;&#60;/iframe&#62;'); 参考文章：http://forums.digitalpoint.com/showthread.php?t=107314 标签：DOM, iframe, innerHTML, javascript, 提交, 表单]]></description>
			<content:encoded><![CDATA[<p>最近做无刷新上传，传统方法是提交到隐藏的iframe里然后回调<br />
不希望所有上传的页面都预设iframe，于是采用动态创建的方式（无视掉里面的jQuery吧）：</p>
<div class="hl-surround"><div class="hl-main"><span style="color: Green;">var</span><span style="color: Gray;"> $</span><span style="color: Blue;">target</span><span style="color: Gray;"> = $</span><span style="color: Olive;">(</span><span style="color: Teal;">document</span><span style="color: Gray;">.</span><span style="color: Blue;">createElement</span><span style="color: Olive;">(</span><span style="color: #8b0000;">'</span><span style="color: Red;">IFRAME</span><span style="color: #8b0000;">'</span><span style="color: Olive;">))</span><span style="color: Gray;">.</span><span style="color: Blue;">hide</span><span style="color: Olive;">()</span><span style="color: Gray;">;<br />$</span><span style="color: Blue;">target</span><span style="color: Gray;">.</span><span style="color: Blue;">attr</span><span style="color: Olive;">(</span><span style="color: #8b0000;">'</span><span style="color: Red;">id</span><span style="color: #8b0000;">'</span><span style="color: Gray;">, </span><span style="color: Blue;">target</span><span style="color: Olive;">)</span><span style="color: Gray;">.</span><span style="color: Blue;">attr</span><span style="color: Olive;">(</span><span style="color: #8b0000;">'</span><span style="color: Red;">name</span><span style="color: #8b0000;">'</span><span style="color: Gray;">, </span><span style="color: Blue;">target</span><span style="color: Olive;">)</span><span style="color: Gray;">;<br />&nbsp;<br />$</span><span style="color: Olive;">(</span><span style="color: #8b0000;">'</span><span style="color: Red;">body</span><span style="color: #8b0000;">'</span><span style="color: Olive;">)</span><span style="color: Gray;">.</span><span style="color: Blue;">append</span><span style="color: Olive;">(</span><span style="color: Gray;">$</span><span style="color: Blue;">target</span><span style="color: Olive;">)</span><span style="color: Gray;">;</span></div></div>
<p>结果IE6下总是提交到一个新窗口<br />
解决办法是不采用DOM操作，而是直接使用innerHTML：</p>
<div class="hl-surround"><div class="hl-main"><span style="color: #ffa500;">// use html but not DOM, for IE6</span><span style="color: Gray;"><br />$</span><span style="color: Olive;">(</span><span style="color: #8b0000;">'</span><span style="color: Red;">body</span><span style="color: #8b0000;">'</span><span style="color: Olive;">)</span><span style="color: Gray;">.</span><span style="color: Blue;">append</span><span style="color: Olive;">(</span><span style="color: #8b0000;">'</span><span style="color: Red;">&lt;iframe id=&quot;</span><span style="color: #8b0000;">'</span><span style="color: Gray;"> + </span><span style="color: Blue;">target</span><span style="color: Gray;"> + </span><span style="color: #8b0000;">'</span><span style="color: Red;">&quot; name=&quot;</span><span style="color: #8b0000;">'</span><span style="color: Gray;"> + </span><span style="color: Blue;">target</span><span style="color: Gray;"> + </span><span style="color: #8b0000;">'</span><span style="color: Red;">&quot; style=&quot;display:none;&quot;&gt;&lt;/iframe&gt;</span><span style="color: #8b0000;">'</span><span style="color: Olive;">)</span><span style="color: Gray;">;</span></div></div>
<p>参考文章：<a href="http://forums.digitalpoint.com/showthread.php?t=107314">http://forums.digitalpoint.com/showthread.php?t=107314</a></p>

	<div style="clear:both;"></div>标签：<a href="http://blog.sunshow.net/tag/dom/" title="DOM" rel="tag">DOM</a>, <a href="http://blog.sunshow.net/tag/iframe/" title="iframe" rel="tag">iframe</a>, <a href="http://blog.sunshow.net/tag/innerhtml/" title="innerHTML" rel="tag">innerHTML</a>, <a href="http://blog.sunshow.net/tag/javascript/" title="javascript" rel="tag">javascript</a>, <a href="http://blog.sunshow.net/tag/%e6%8f%90%e4%ba%a4/" title="提交" rel="tag">提交</a>, <a href="http://blog.sunshow.net/tag/%e8%a1%a8%e5%8d%95/" title="表单" rel="tag">表单</a><br /><br />
]]></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>
		</item>
		<item>
		<title>Apache HttpClient与CLOSE_WAIT</title>
		<link>http://blog.sunshow.net/2010/11/apache-httpclient-causes-closewait/</link>
		<comments>http://blog.sunshow.net/2010/11/apache-httpclient-causes-closewait/#comments</comments>
		<pubDate>Sun, 21 Nov 2010 06:59:04 +0000</pubDate>
		<dc:creator>Sunshow</dc:creator>
				<category><![CDATA[Java]]></category>
		<category><![CDATA[Network]]></category>
		<category><![CDATA[CLOSE_WAIT]]></category>
		<category><![CDATA[http]]></category>
		<category><![CDATA[url]]></category>
		<category><![CDATA[连接]]></category>

		<guid isPermaLink="false">http://blog.sunshow.net/?p=752</guid>
		<description><![CDATA[前几天开始服务器时不时无法accept新连接，由于线上环境的原因都没时间调试直接重启了事 昨天频繁发生了几次，仔细看了下系统日志发现： java.net.SocketException: Too many open files 用netstat看发现有大量的CLOSE_WAIT，搜索发现与libcurl的处理类似，apache-commons的HttpClient也默认保持了连接待复用处理。 解决办法： 每次使用完都完全关闭连接 httpmethod.setRequestHeader(&#34;Connection&#34;, &#34;close&#34;); 使用统一的连接管理器复用连接，例如SimpleHttpConnectionManager，从连接管理器里获取连接，然后定时的用连接管理器来释放空闲连接 在比较频繁的抓取项目中推荐复用连接 参考文章：http://swordinhand.javaeye.com/blog/149408 标签：CLOSE_WAIT, http, url, 连接]]></description>
			<content:encoded><![CDATA[<p>前几天开始服务器时不时无法accept新连接，由于线上环境的原因都没时间调试直接重启了事<br />
昨天频繁发生了几次，仔细看了下系统日志发现：</p>
<div class="hl-surround"><div class="hl-main"><span style="color: Blue;">java</span><span style="color: Gray;">.</span><span style="color: Blue;">net</span><span style="color: Gray;">.</span><span style="color: Blue;">SocketException</span><span style="color: Gray;">: </span><span style="color: Blue;">Too</span><span style="color: Gray;"> </span><span style="color: Blue;">many</span><span style="color: Gray;"> </span><span style="color: Blue;">open</span><span style="color: Gray;"> </span><span style="color: Blue;">files</span></div></div>
<p>用netstat看发现有大量的CLOSE_WAIT，搜索发现与<a href="http://blog.sunshow.net/2010/03/libcurl-and-close-wait/">libcurl的处理</a>类似，apache-commons的HttpClient也默认保持了连接待复用处理。</p>
<p>解决办法：</p>
<ul>
<li>每次使用完都完全关闭连接
<div class="hl-surround"><div class="hl-main"><span style="color: Blue;">httpmethod</span><span style="color: Gray;">.</span><span style="color: Blue;">setRequestHeader</span><span style="color: Olive;">(</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">Connection</span><span style="color: #8b0000;">&quot;</span><span style="color: Gray;">, </span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">close</span><span style="color: #8b0000;">&quot;</span><span style="color: Olive;">)</span><span style="color: Gray;">;</span></div></div>
</li>
<li>使用统一的连接管理器复用连接，例如SimpleHttpConnectionManager，从连接管理器里获取连接，然后定时的用连接管理器来释放空闲连接<br />
在比较频繁的抓取项目中推荐复用连接
</li>
</ul>
<p>参考文章：<a href="http://swordinhand.javaeye.com/blog/149408">http://swordinhand.javaeye.com/blog/149408</a></p>

	<div style="clear:both;"></div>标签：<a href="http://blog.sunshow.net/tag/close_wait/" title="CLOSE_WAIT" rel="tag">CLOSE_WAIT</a>, <a href="http://blog.sunshow.net/tag/http/" title="http" rel="tag">http</a>, <a href="http://blog.sunshow.net/tag/url/" title="url" rel="tag">url</a>, <a href="http://blog.sunshow.net/tag/%e8%bf%9e%e6%8e%a5/" title="连接" rel="tag">连接</a><br /><br />
]]></content:encoded>
			<wfw:commentRss>http://blog.sunshow.net/2010/11/apache-httpclient-causes-closewait/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>IE8回车提交表单的bug</title>
		<link>http://blog.sunshow.net/2010/11/ie8-anomaly-when-using-the-enter-key-to-submit-a-form/</link>
		<comments>http://blog.sunshow.net/2010/11/ie8-anomaly-when-using-the-enter-key-to-submit-a-form/#comments</comments>
		<pubDate>Sat, 20 Nov 2010 04:31:27 +0000</pubDate>
		<dc:creator>Sunshow</dc:creator>
				<category><![CDATA[WebDev]]></category>
		<category><![CDATA[bug]]></category>
		<category><![CDATA[DOM]]></category>
		<category><![CDATA[ie]]></category>
		<category><![CDATA[提交]]></category>
		<category><![CDATA[表单]]></category>

		<guid isPermaLink="false">http://blog.sunshow.net/?p=749</guid>
		<description><![CDATA[这回中枪的不是IE6了，更悲剧 问题发生的条件： 表单所在容器载入时是display:none，且表单内包含超过一个的文本框 这时候在表单内按回车就无法触发表单的submit事件（只有一个文本框时正常） 如果载入时是display:none的以后再怎么显示也没有用了 解决办法： 载入DOM完毕后再隐藏元素 这个应该是根本解决办法，但是实际操作起来很麻烦。 首先用户可能看到不期望的显示内容闪烁，然后在一些场合下先显示会导致JS计算占位出问题（例如很多带Overlay的弹出层显示实现） 强制绑定keydown事件 判断浏览器的版本，根据需要强制绑定回车键按下的事件处理 不处理 这是我目前的处理方法，不纵容M$，哈哈 同样的bug还存在于目前最新版本的IE9测试版本中 不得不说IE真是一个奇葩，还是系列的 参考文章： http://stackoverflow.com/questions/1427912/in-ie8-enter-key-in-a-form-does-not-work http://stackoverflow.com/questions/964734/hitting-enter-does-not-post-form-in-ie8 标签：bug, DOM, ie, 提交, 表单]]></description>
			<content:encoded><![CDATA[<p>这回中枪的不是IE6了，更悲剧</p>
<p>问题发生的条件：</p>
<p>表单所在容器载入时是display:none，且表单内包含超过一个的文本框<br />
这时候在表单内按回车就无法触发表单的submit事件（只有一个文本框时正常）</p>
<p>如果载入时是display:none的以后再怎么显示也没有用了</p>
<p>解决办法：</p>
<ul>
<li>载入DOM完毕后再隐藏元素<br />
这个应该是根本解决办法，但是实际操作起来很麻烦。<br />
首先用户可能看到不期望的显示内容闪烁，然后在一些场合下先显示会导致JS计算占位出问题（例如很多带Overlay的弹出层显示实现）</li>
<li>强制绑定keydown事件<br />
判断浏览器的版本，根据需要强制绑定回车键按下的事件处理</li>
<li>不处理<br />
这是我目前的处理方法，不纵容M$，哈哈	</li>
</ul>
<p>同样的bug还存在于目前最新版本的IE9测试版本中<br />
不得不说IE真是一个奇葩，还是系列的</p>
<p>参考文章：<br />
<a href="http://stackoverflow.com/questions/1427912/in-ie8-enter-key-in-a-form-does-not-work">http://stackoverflow.com/questions/1427912/in-ie8-enter-key-in-a-form-does-not-work</a><br />
<a href="http://stackoverflow.com/questions/964734/hitting-enter-does-not-post-form-in-ie8">http://stackoverflow.com/questions/964734/hitting-enter-does-not-post-form-in-ie8</a></p>

	<div style="clear:both;"></div>标签：<a href="http://blog.sunshow.net/tag/bug/" title="bug" rel="tag">bug</a>, <a href="http://blog.sunshow.net/tag/dom/" title="DOM" rel="tag">DOM</a>, <a href="http://blog.sunshow.net/tag/ie/" title="ie" rel="tag">ie</a>, <a href="http://blog.sunshow.net/tag/%e6%8f%90%e4%ba%a4/" title="提交" rel="tag">提交</a>, <a href="http://blog.sunshow.net/tag/%e8%a1%a8%e5%8d%95/" title="表单" rel="tag">表单</a><br /><br />
]]></content:encoded>
			<wfw:commentRss>http://blog.sunshow.net/2010/11/ie8-anomaly-when-using-the-enter-key-to-submit-a-form/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>[温故而知新]再谈IE中li之间高度空隙的问题</title>
		<link>http://blog.sunshow.net/2010/11/other-ways-to-resolve-li-gap-bug/</link>
		<comments>http://blog.sunshow.net/2010/11/other-ways-to-resolve-li-gap-bug/#comments</comments>
		<pubDate>Tue, 02 Nov 2010 10:41:33 +0000</pubDate>
		<dc:creator>Sunshow</dc:creator>
				<category><![CDATA[WebDev]]></category>
		<category><![CDATA[bug]]></category>
		<category><![CDATA[css]]></category>
		<category><![CDATA[ie]]></category>
		<category><![CDATA[li]]></category>
		<category><![CDATA[容器]]></category>
		<category><![CDATA[高度]]></category>

		<guid isPermaLink="false">http://blog.sunshow.net/?p=747</guid>
		<description><![CDATA[时隔两年之后，再次碰到IE6、IE7下li高度占用的bug，2008年的文章在这里 之前的老办法还是能解决问题的，然后顺便研究了一下。 首先是症状的发生条件： 1、IE6、IE7 2、li内嵌其他容器，不仅限于超链接，我测试过span等也有此问题 3、高度低于某个值，这个值我没有严格测试过，但是我把li的高度设置成30px的时候没问题，18px的时候就有问题 问题解决办法： 1、给li附加样式 li.classname {&#160;&#160; &#160;float: left;&#160;&#160; &#160;width: 100%;} 2、将li设置成inline，给内嵌容器设置宽度 li.classname {&#160;&#160; &#160;height: 18px;&#160;&#160; &#160;line-height: 18px;&#160;&#160; &#160;display:inline;}li.classname a {&#160;&#160; &#160;display: block;&#160;&#160; &#160;width: 100%;} 标签：bug, css, ie, li, 容器, 高度]]></description>
			<content:encoded><![CDATA[<p>时隔两年之后，再次碰到IE6、IE7下li高度占用的bug，2008年的文章<a href="http://blog.sunshow.net/2008/10/ie-display-li-height-bug/">在这里</a></p>
<p>之前的老办法还是能解决问题的，然后顺便研究了一下。</p>
<p>首先是症状的发生条件：</p>
<ul>
<li>1、IE6、IE7</li>
<li>2、li内嵌其他容器，不仅限于超链接，我测试过span等也有此问题</li>
<li>3、高度低于某个值，这个值我没有严格测试过，但是我把li的高度设置成30px的时候没问题，18px的时候就有问题</li>
</ul>
<p>问题解决办法：</p>
<ul>
<li>1、给li附加样式
<div class="hl-surround"><div class="hl-main"><span style="color: Blue;">li.classname</span><span style="color: Gray;"> </span><span style="color: Olive;">{</span><span style="color: Gray;"><br />&nbsp;&nbsp; &nbsp;</span><span style="color: Green;">float:</span><span style="color: Gray;"> </span><span style="color: Red;">left</span><span style="color: Green;"></span><span style="color: Gray;">;<br />&nbsp;&nbsp; &nbsp;</span><span style="color: Green;">width:</span><span style="color: Gray;"> </span><span style="color: Maroon;">100</span><span style="color: Red;">%</span><span style="color: Green;"></span><span style="color: Gray;">;<br /></span><span style="color: Olive;">}</span></div></div>
</li>
<li>2、将li设置成inline，给内嵌容器设置宽度
<div class="hl-surround"><div class="hl-main"><span style="color: Blue;">li.classname</span><span style="color: Gray;"> </span><span style="color: Olive;">{</span><span style="color: Gray;"><br />&nbsp;&nbsp; &nbsp;</span><span style="color: Green;">height:</span><span style="color: Gray;"> </span><span style="color: Maroon;">18</span><span style="color: Red;">px</span><span style="color: Green;"></span><span style="color: Gray;">;<br />&nbsp;&nbsp; &nbsp;</span><span style="color: Green;">line-height:</span><span style="color: Gray;"> </span><span style="color: Maroon;">18</span><span style="color: Red;">px</span><span style="color: Green;"></span><span style="color: Gray;">;<br />&nbsp;&nbsp; &nbsp;</span><span style="color: Green;">display:</span><span style="color: Red;">inline</span><span style="color: Green;"></span><span style="color: Gray;">;<br /></span><span style="color: Olive;">}</span><span style="color: Gray;"><br /></span><span style="color: Blue;">li.classname</span><span style="color: Gray;"> </span><span style="color: Blue;">a</span><span style="color: Gray;"> </span><span style="color: Olive;">{</span><span style="color: Gray;"><br />&nbsp;&nbsp; &nbsp;</span><span style="color: Green;">display:</span><span style="color: Gray;"> </span><span style="color: Red;">block</span><span style="color: Green;"></span><span style="color: Gray;">;<br />&nbsp;&nbsp; &nbsp;</span><span style="color: Green;">width:</span><span style="color: Gray;"> </span><span style="color: Maroon;">100</span><span style="color: Red;">%</span><span style="color: Green;"></span><span style="color: Gray;">;<br /></span><span style="color: Olive;">}</span></div></div>
</li>
</ul>

	<div style="clear:both;"></div>标签：<a href="http://blog.sunshow.net/tag/bug/" title="bug" rel="tag">bug</a>, <a href="http://blog.sunshow.net/tag/css/" title="css" rel="tag">css</a>, <a href="http://blog.sunshow.net/tag/ie/" title="ie" rel="tag">ie</a>, <a href="http://blog.sunshow.net/tag/li/" title="li" rel="tag">li</a>, <a href="http://blog.sunshow.net/tag/%e5%ae%b9%e5%99%a8/" title="容器" rel="tag">容器</a>, <a href="http://blog.sunshow.net/tag/%e9%ab%98%e5%ba%a6/" title="高度" rel="tag">高度</a><br /><br />
]]></content:encoded>
			<wfw:commentRss>http://blog.sunshow.net/2010/11/other-ways-to-resolve-li-gap-bug/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>长期招聘Java/PHP/WebDev工程师</title>
		<link>http://blog.sunshow.net/2010/09/recruit-java-php-webdev-engineers/</link>
		<comments>http://blog.sunshow.net/2010/09/recruit-java-php-webdev-engineers/#comments</comments>
		<pubDate>Sat, 25 Sep 2010 13:40:12 +0000</pubDate>
		<dc:creator>Sunshow</dc:creator>
				<category><![CDATA[Life]]></category>
		<category><![CDATA[css]]></category>
		<category><![CDATA[hibernate]]></category>
		<category><![CDATA[Java]]></category>
		<category><![CDATA[jfreechart]]></category>
		<category><![CDATA[jQuery]]></category>
		<category><![CDATA[MemCached]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[spring]]></category>
		<category><![CDATA[struts]]></category>
		<category><![CDATA[web]]></category>
		<category><![CDATA[工作]]></category>
		<category><![CDATA[招聘]]></category>

		<guid isPermaLink="false">http://blog.sunshow.net/?p=746</guid>
		<description><![CDATA[到处打广告，长期招聘Java/PHP/WebDev民工 我们的网站：http://www.lehecai.com 应聘请投递简历到：sunshow@gmail.com，注明应聘职位 我们的要求（部分满足即可）： Java 熟悉Struts2 + Spring + Hibernate 熟悉数据抓取 了解或熟悉多线程的工作方式 有数据分析相关经验，有jfreechart等图表经验尤佳 PHP 熟悉MVC 熟悉MemCached 熟悉smarty等模板技术 WebDev 熟练使用jQuery 精通CSS和基于XHTML+CSS的布局方式 标签：css, hibernate, Java, jfreechart, jQuery, MemCached, PHP, spring, struts, web, 工作, 招聘]]></description>
			<content:encoded><![CDATA[<p>到处打广告，长期招聘Java/PHP/WebDev民工</p>
<p>我们的网站：<a href="http://www.lehecai.com">http://www.lehecai.com</a></p>
<p>应聘请投递简历到：sunshow@gmail.com，注明应聘职位</p>
<p>我们的要求（部分满足即可）：</p>
<p>Java</p>
<ul>
<li>熟悉Struts2 + Spring + Hibernate</li>
<li>熟悉数据抓取</li>
<li>了解或熟悉多线程的工作方式</li>
<li>有数据分析相关经验，有jfreechart等图表经验尤佳</li>
</ul>
<p>PHP</p>
<ul>
<li>熟悉MVC</li>
<li>熟悉MemCached</li>
<li>熟悉smarty等模板技术</li>
</ul>
<p>WebDev</p>
<ul>
<li>熟练使用jQuery</li>
<li>精通CSS和基于XHTML+CSS的布局方式</li>
</ul>

	<div style="clear:both;"></div>标签：<a href="http://blog.sunshow.net/tag/css/" title="css" rel="tag">css</a>, <a href="http://blog.sunshow.net/tag/hibernate/" title="hibernate" rel="tag">hibernate</a>, <a href="http://blog.sunshow.net/tag/java/" title="Java" rel="tag">Java</a>, <a href="http://blog.sunshow.net/tag/jfreechart/" title="jfreechart" rel="tag">jfreechart</a>, <a href="http://blog.sunshow.net/tag/jquery/" title="jQuery" rel="tag">jQuery</a>, <a href="http://blog.sunshow.net/tag/memcached/" title="MemCached" rel="tag">MemCached</a>, <a href="http://blog.sunshow.net/tag/php/" title="PHP" rel="tag">PHP</a>, <a href="http://blog.sunshow.net/tag/spring/" title="spring" rel="tag">spring</a>, <a href="http://blog.sunshow.net/tag/struts/" title="struts" rel="tag">struts</a>, <a href="http://blog.sunshow.net/tag/web/" title="web" rel="tag">web</a>, <a href="http://blog.sunshow.net/tag/%e5%b7%a5%e4%bd%9c/" title="工作" rel="tag">工作</a>, <a href="http://blog.sunshow.net/tag/%e6%8b%9b%e8%81%98/" title="招聘" rel="tag">招聘</a><br /><br />
]]></content:encoded>
			<wfw:commentRss>http://blog.sunshow.net/2010/09/recruit-java-php-webdev-engineers/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>[Spring+Hibernate]小心处理脏数据的自动更新</title>
		<link>http://blog.sunshow.net/2010/09/caution-dirty-data-auto-update/</link>
		<comments>http://blog.sunshow.net/2010/09/caution-dirty-data-auto-update/#comments</comments>
		<pubDate>Tue, 14 Sep 2010 13:13:32 +0000</pubDate>
		<dc:creator>Sunshow</dc:creator>
				<category><![CDATA[Java]]></category>
		<category><![CDATA[hibernate]]></category>
		<category><![CDATA[spring]]></category>
		<category><![CDATA[transaction]]></category>
		<category><![CDATA[事务]]></category>
		<category><![CDATA[更新]]></category>

		<guid isPermaLink="false">http://blog.sunshow.net/?p=744</guid>
		<description><![CDATA[有并发请求的时候会存在这种隐患 例如请求A和B都是同一个Action的实例，并取了同样的数据做处理 A-->取数据-->调用set方法设置A相关的数据-->（B处理数据的时间点）-->页面展现 B-->取数据-->调用set方法设置B相关的数据-->页面展现 也就是说在A设置完数据到页面展现的中间这个时间段里B又把同样的数据设置成了其他的值 这时候Spring的事务管理就会检测数据的一致性，如果发现有不一致的就做自动更新 解决方法有几种： 1、Action里不对数据进行处理 比如我碰到的情况时间原因就把不同的处理放到JS去处理了 2、自己管理事务，不使用Spring的事务管理 3、实现数据对象的Clone方法，页面展现使用的数据都通过Clone脱离和Spring管理的数据库session的关系 由于我没有对Spring和Hibernate做过深入研究，以上分析仅为猜测，谢绝拍砖 不过这个问题确实是存在的，解决方法也是有效的，也从另一个角度说明要想驾驭框架就得掌握其处理机制 标签：hibernate, spring, transaction, 事务, 更新]]></description>
			<content:encoded><![CDATA[<p>有并发请求的时候会存在这种隐患<br />
例如请求A和B都是同一个Action的实例，并取了同样的数据做处理<br />
A-->取数据-->调用set方法设置A相关的数据-->（B处理数据的时间点）-->页面展现<br />
B-->取数据-->调用set方法设置B相关的数据-->页面展现</p>
<p>也就是说在A设置完数据到页面展现的中间这个时间段里B又把同样的数据设置成了其他的值<br />
这时候Spring的事务管理就会检测数据的一致性，如果发现有不一致的就做自动更新</p>
<p>解决方法有几种：<br />
1、Action里不对数据进行处理<br />
比如我碰到的情况时间原因就把不同的处理放到JS去处理了<br />
2、自己管理事务，不使用Spring的事务管理<br />
3、实现数据对象的Clone方法，页面展现使用的数据都通过Clone脱离和Spring管理的数据库session的关系</p>
<p>由于我没有对Spring和Hibernate做过深入研究，以上分析仅为猜测，谢绝拍砖<br />
不过这个问题确实是存在的，解决方法也是有效的，也从另一个角度说明要想驾驭框架就得掌握其处理机制</p>

	<div style="clear:both;"></div>标签：<a href="http://blog.sunshow.net/tag/hibernate/" title="hibernate" rel="tag">hibernate</a>, <a href="http://blog.sunshow.net/tag/spring/" title="spring" rel="tag">spring</a>, <a href="http://blog.sunshow.net/tag/transaction/" title="transaction" rel="tag">transaction</a>, <a href="http://blog.sunshow.net/tag/%e4%ba%8b%e5%8a%a1/" title="事务" rel="tag">事务</a>, <a href="http://blog.sunshow.net/tag/%e6%9b%b4%e6%96%b0/" title="更新" rel="tag">更新</a><br /><br />
]]></content:encoded>
			<wfw:commentRss>http://blog.sunshow.net/2010/09/caution-dirty-data-auto-update/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>网站上线了</title>
		<link>http://blog.sunshow.net/2010/08/lehecai/</link>
		<comments>http://blog.sunshow.net/2010/08/lehecai/#comments</comments>
		<pubDate>Mon, 16 Aug 2010 03:49:02 +0000</pubDate>
		<dc:creator>Sunshow</dc:creator>
				<category><![CDATA[Life]]></category>

		<guid isPermaLink="false">http://blog.sunshow.net/?p=742</guid>
		<description><![CDATA[历时一个半月：http://www.lehecai.com/]]></description>
			<content:encoded><![CDATA[<p>历时一个半月：<a href="http://www.lehecai.com/">http://www.lehecai.com/</a></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.sunshow.net/2010/08/lehecai/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Tomcat支持SSI和软链接</title>
		<link>http://blog.sunshow.net/2010/07/tomcat-enable-ssi-and-symbolic-links/</link>
		<comments>http://blog.sunshow.net/2010/07/tomcat-enable-ssi-and-symbolic-links/#comments</comments>
		<pubDate>Wed, 21 Jul 2010 03:23:12 +0000</pubDate>
		<dc:creator>Sunshow</dc:creator>
				<category><![CDATA[Java]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[Context]]></category>
		<category><![CDATA[servlet]]></category>
		<category><![CDATA[Tomcat]]></category>
		<category><![CDATA[链接]]></category>

		<guid isPermaLink="false">http://blog.sunshow.net/?p=740</guid>
		<description><![CDATA[一. 启用SSI（Server Side Include） 1. 编辑Tomcat的web.xml，查找SSI，去掉相应的servlet和servlet-mapping的注释，或者也可以去掉filter的，二选一 2. 给相应的Context添加privileged="true"属性 点评：不知道这个SSI有毛用，直接jsp:include多好，而且一启用这个就影响所有的Context 二. 允许软链接 给相应的Context添加allowLinking="true"属性 标签：Context, servlet, Tomcat, 链接]]></description>
			<content:encoded><![CDATA[<p>一. 启用SSI（Server Side Include）</p>
<p>1. 编辑Tomcat的web.xml，查找SSI，去掉相应的servlet和servlet-mapping的注释，或者也可以去掉filter的，二选一<br />
2. 给相应的Context添加privileged="true"属性</p>
<p>点评：不知道这个SSI有毛用，直接jsp:include多好，而且一启用这个就影响所有的Context</p>
<p>二. 允许软链接</p>
<p>给相应的Context添加allowLinking="true"属性</p>

	<div style="clear:both;"></div>标签：<a href="http://blog.sunshow.net/tag/context/" title="Context" rel="tag">Context</a>, <a href="http://blog.sunshow.net/tag/servlet/" title="servlet" rel="tag">servlet</a>, <a href="http://blog.sunshow.net/tag/tomcat/" title="Tomcat" rel="tag">Tomcat</a>, <a href="http://blog.sunshow.net/tag/%e9%93%be%e6%8e%a5/" title="链接" rel="tag">链接</a><br /><br />
]]></content:encoded>
			<wfw:commentRss>http://blog.sunshow.net/2010/07/tomcat-enable-ssi-and-symbolic-links/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>未知是前进的原动力</title>
		<link>http://blog.sunshow.net/2010/06/%e6%9c%aa%e7%9f%a5%e6%98%af%e5%89%8d%e8%bf%9b%e7%9a%84%e5%8e%9f%e5%8a%a8%e5%8a%9b/</link>
		<comments>http://blog.sunshow.net/2010/06/%e6%9c%aa%e7%9f%a5%e6%98%af%e5%89%8d%e8%bf%9b%e7%9a%84%e5%8e%9f%e5%8a%a8%e5%8a%9b/#comments</comments>
		<pubDate>Tue, 22 Jun 2010 15:47:20 +0000</pubDate>
		<dc:creator>Sunshow</dc:creator>
				<category><![CDATA[Life]]></category>
		<category><![CDATA[开发]]></category>
		<category><![CDATA[跳槽]]></category>
		<category><![CDATA[辞职]]></category>

		<guid isPermaLink="false">http://blog.sunshow.net/?p=739</guid>
		<description><![CDATA[经过一周多的收拾，这两天算是正式开工了 怎么说呢，人手很少，时间很紧…… 辞职选择现在的道路让我很是痛苦了两天，可能别人难以理解 前两次跳槽，从DPPC出来是因为太无聊加上刚好碰到了不爽的事，离开365日历主要是因为厌倦了Web开发无休止的兼容各种浏览器 认真说起来这次是我首次毫无征兆的离职， 还算过得去的老板，难得融洽的同事关系，做的事情也挺喜欢的， 最终让我作出决定的还是机会难得，能让我无风险的折腾一次，最不济我接着做序员…… 我得说我还是很享受能掌控全局的快感的 非常感谢毕业以来呆过的每一家公司，不管是拍案离去的还是好聚好散的， 这些年的经验是宝贵的，所以现在有这样一次可以让我尝试和实践一些想法的机会，更加要珍惜 说说这两周已经做了的事情吧 Done: 联系办公室弱电、强电布线 购买电话和网络交换机 宽带申请和局域网设置 收各种快递 购买内部服务器 总结：以后失业了可以去当IT 标签：开发, 跳槽, 辞职]]></description>
			<content:encoded><![CDATA[<p>经过一周多的收拾，这两天算是正式开工了<br />
怎么说呢，人手很少，时间很紧……</p>
<p>辞职选择现在的道路让我很是痛苦了两天，可能别人难以理解</p>
<p>前两次跳槽，从DPPC出来是因为太无聊加上刚好碰到了不爽的事，离开365日历主要是因为厌倦了Web开发无休止的兼容各种浏览器</p>
<p>认真说起来这次是我首次毫无征兆的离职，<br />
还算过得去的老板，难得融洽的同事关系，做的事情也挺喜欢的，<br />
最终让我作出决定的还是机会难得，能让我无风险的折腾一次，最不济我接着做序员……<br />
我得说我还是很享受能掌控全局的快感的</p>
<p>非常感谢毕业以来呆过的每一家公司，不管是拍案离去的还是好聚好散的，<br />
这些年的经验是宝贵的，所以现在有这样一次可以让我尝试和实践一些想法的机会，更加要珍惜</p>
<p>说说这两周已经做了的事情吧</p>
<p>Done:</p>
<ul>
<li>联系办公室弱电、强电布线</li>
<li>购买电话和网络交换机</li>
<li>宽带申请和局域网设置</li>
<li>收各种快递</li>
<li>购买内部服务器</li>
</ul>
<p>总结：以后失业了可以去当IT</p>

	<div style="clear:both;"></div>标签：<a href="http://blog.sunshow.net/tag/%e5%bc%80%e5%8f%91/" title="开发" rel="tag">开发</a>, <a href="http://blog.sunshow.net/tag/%e8%b7%b3%e6%a7%bd/" title="跳槽" rel="tag">跳槽</a>, <a href="http://blog.sunshow.net/tag/%e8%be%9e%e8%81%8c/" title="辞职" rel="tag">辞职</a><br /><br />
]]></content:encoded>
			<wfw:commentRss>http://blog.sunshow.net/2010/06/%e6%9c%aa%e7%9f%a5%e6%98%af%e5%89%8d%e8%bf%9b%e7%9a%84%e5%8e%9f%e5%8a%a8%e5%8a%9b/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>[Expression Engine]去除URL里的index.php</title>
		<link>http://blog.sunshow.net/2010/06/remove-index-php-from-urls-of-expression-engine/</link>
		<comments>http://blog.sunshow.net/2010/06/remove-index-php-from-urls-of-expression-engine/#comments</comments>
		<pubDate>Thu, 17 Jun 2010 09:33:58 +0000</pubDate>
		<dc:creator>Sunshow</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[Expression Engine]]></category>
		<category><![CDATA[rewrite]]></category>
		<category><![CDATA[url]]></category>
		<category><![CDATA[链接]]></category>

		<guid isPermaLink="false">http://blog.sunshow.net/?p=735</guid>
		<description><![CDATA[1. 配置url rewrite 编辑根目录下的.htaccess文件，没有就新建一个，内容如下： &#60;IfModule mod_rewrite.c&#62;&#160;&#160; &#160;RewriteEngine On&#160;&#160; &#160;#RewriteBase /&#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160;&#160; &#160;RewriteCond %{REQUEST_FILENAME} !-f&#160;&#160; &#160;RewriteCond %{REQUEST_FILENAME} !-d&#160;&#160; &#160;RewriteRule ^(.*)$ index.php/$1 [L]&#60;/IfModule&#62; 2. 配置EE链接生成规则 CP Home › Admin › System Preferences › General Configuration 把Name of your site's index page这一项删掉留空 标签：Expression Engine, [...]]]></description>
			<content:encoded><![CDATA[<p>1. 配置url rewrite<br />
编辑根目录下的.htaccess文件，没有就新建一个，内容如下：</p>
<div class="hl-surround"><div class="hl-main">&lt;IfModule mod_rewrite.c&gt;<br />&nbsp;&nbsp; &nbsp;RewriteEngine On<br />&nbsp;&nbsp; &nbsp;#RewriteBase /&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <br />&nbsp;&nbsp; &nbsp;RewriteCond %{REQUEST_FILENAME} !-f<br />&nbsp;&nbsp; &nbsp;RewriteCond %{REQUEST_FILENAME} !-d<br />&nbsp;&nbsp; &nbsp;RewriteRule ^(.*)$ index.php/$1 [L]<br />&lt;/IfModule&gt;</div></div>
<p>2. 配置EE链接生成规则<br />
CP Home  ›  Admin  ›  System Preferences  ›  General Configuration<br />
把Name of your site's index page这一项删掉留空 </p>

	<div style="clear:both;"></div>标签：<a href="http://blog.sunshow.net/tag/expression-engine/" title="Expression Engine" rel="tag">Expression Engine</a>, <a href="http://blog.sunshow.net/tag/rewrite/" title="rewrite" rel="tag">rewrite</a>, <a href="http://blog.sunshow.net/tag/url/" title="url" rel="tag">url</a>, <a href="http://blog.sunshow.net/tag/%e9%93%be%e6%8e%a5/" title="链接" rel="tag">链接</a><br /><br />
]]></content:encoded>
			<wfw:commentRss>http://blog.sunshow.net/2010/06/remove-index-php-from-urls-of-expression-engine/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>工作经验总结</title>
		<link>http://blog.sunshow.net/2010/06/work-experience-summary/</link>
		<comments>http://blog.sunshow.net/2010/06/work-experience-summary/#comments</comments>
		<pubDate>Sun, 13 Jun 2010 23:15:34 +0000</pubDate>
		<dc:creator>Sunshow</dc:creator>
				<category><![CDATA[Life]]></category>
		<category><![CDATA[工作]]></category>
		<category><![CDATA[总结]]></category>
		<category><![CDATA[技术]]></category>

		<guid isPermaLink="false">http://blog.sunshow.net/?p=734</guid>
		<description><![CDATA[一转眼，我竟然也工作满五年了，真是不可思议 我得说，工作教会了我很多东西，尤其是最近两年的经验 于是恬着脸总结一下 技术不是最重要的，产品为王 从刚开始工作，就有人告诉我技术不是最重要的，不过很显然那时候的我并不能深刻认识到这一点。在一家以产品为自己目标的公司，往往对产品的良好包装能带来更大的效益，当然这并不是在藐视技术，技术是根本，只不过很多技术起家的公司往往会忽略了技术以外的东西 多关注其他人在做什么，勇于担当 在一个公司或者一个团队，仅仅做好自己手头的事是不够的，多关注其他人在做什么，关注自己参与的项目中整个项目是怎么工作的，对团队对自己都才能更有好处。我认识不少的人，有的除了自己做的东西以外一问三不知，有的照猫画虎做了很长一段时间也不去思考为什么应该这么做。不知道一些事情很正常，不知道还不愿意去了解，甚至还排斥就不好了。 对于刚进入公司或团队的新人，往往会面临没人搭理或者无事可干的情况，这一点就尤其重要 对别人宽容一些，沟通很重要 很多所谓技术人员都有这种鄙视别人的臭毛病，比如我也是。 在找人做事的时候自己感觉一清二楚的事情，为什么讲了好几遍别人还不明白，或者很简单的事情做了很多天还漏洞百出？这时候就需要好好想想了，我自己的理解是，给别人描述的时候多站在对方的立场，考虑对方的知识面和专业领域，通俗点说就是见人说人话，见鬼说鬼话。 很多人都会有这种经验，一个问题交给别人做，结果给人讲解的时间自己都能做完了，还不如自己做了呢。如果什么都自己做，只会把自己搞得越来越累，而且让其他人感觉不到信任感，其实每个人都各有各的长处，沟通的成本本身也不可避免，只要沟通方式合理，大部分的事情都是可以做好的 标签：工作, 总结, 技术]]></description>
			<content:encoded><![CDATA[<p>一转眼，我竟然也工作满五年了，真是不可思议<br />
我得说，工作教会了我很多东西，尤其是最近两年的经验<br />
于是恬着脸总结一下</p>
<ul>
<li>技术不是最重要的，产品为王
<p>从刚开始工作，就有人告诉我技术不是最重要的，不过很显然那时候的我并不能深刻认识到这一点。在一家以产品为自己目标的公司，往往对产品的良好包装能带来更大的效益，当然这并不是在藐视技术，技术是根本，只不过很多技术起家的公司往往会忽略了技术以外的东西</p>
</li>
<li>多关注其他人在做什么，勇于担当
<p>在一个公司或者一个团队，仅仅做好自己手头的事是不够的，多关注其他人在做什么，关注自己参与的项目中整个项目是怎么工作的，对团队对自己都才能更有好处。我认识不少的人，有的除了自己做的东西以外一问三不知，有的照猫画虎做了很长一段时间也不去思考为什么应该这么做。不知道一些事情很正常，不知道还不愿意去了解，甚至还排斥就不好了。<br />
对于刚进入公司或团队的新人，往往会面临没人搭理或者无事可干的情况，这一点就尤其重要</p>
</li>
<li>对别人宽容一些，沟通很重要
<p>很多所谓技术人员都有这种鄙视别人的臭毛病，比如我也是。<br />
在找人做事的时候自己感觉一清二楚的事情，为什么讲了好几遍别人还不明白，或者很简单的事情做了很多天还漏洞百出？这时候就需要好好想想了，我自己的理解是，给别人描述的时候多站在对方的立场，考虑对方的知识面和专业领域，通俗点说就是见人说人话，见鬼说鬼话。<br />
很多人都会有这种经验，一个问题交给别人做，结果给人讲解的时间自己都能做完了，还不如自己做了呢。如果什么都自己做，只会把自己搞得越来越累，而且让其他人感觉不到信任感，其实每个人都各有各的长处，沟通的成本本身也不可避免，只要沟通方式合理，大部分的事情都是可以做好的</p>
</li>
</ul>

	<div style="clear:both;"></div>标签：<a href="http://blog.sunshow.net/tag/%e5%b7%a5%e4%bd%9c/" title="工作" rel="tag">工作</a>, <a href="http://blog.sunshow.net/tag/%e6%80%bb%e7%bb%93/" title="总结" rel="tag">总结</a>, <a href="http://blog.sunshow.net/tag/%e6%8a%80%e6%9c%af/" title="技术" rel="tag">技术</a><br /><br />
]]></content:encoded>
			<wfw:commentRss>http://blog.sunshow.net/2010/06/work-experience-summary/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>青春是一本太仓促的书</title>
		<link>http://blog.sunshow.net/2010/05/%e9%9d%92%e6%98%a5%e6%98%af%e4%b8%80%e6%9c%ac%e5%a4%aa%e4%bb%93%e4%bf%83%e7%9a%84%e4%b9%a6/</link>
		<comments>http://blog.sunshow.net/2010/05/%e9%9d%92%e6%98%a5%e6%98%af%e4%b8%80%e6%9c%ac%e5%a4%aa%e4%bb%93%e4%bf%83%e7%9a%84%e4%b9%a6/#comments</comments>
		<pubDate>Mon, 24 May 2010 16:13:18 +0000</pubDate>
		<dc:creator>Sunshow</dc:creator>
				<category><![CDATA[Life]]></category>

		<guid isPermaLink="false">http://blog.sunshow.net/?p=732</guid>
		<description><![CDATA[所有的结局都已写好 所有的泪水都已启程 却忽然忘了是怎样的一个开始 在那个古老的不再回来的夏日 无论我如何去追索 年轻的你只如云影掠过 而你的微笑的面容极浅极淡 逐渐隐没在日落后的群岚 遂翻开那发黄的扉页 命运将它装订的极为拙劣 含着泪 我一读再读 却不得不承认 青春是一本太仓促的书]]></description>
			<content:encoded><![CDATA[<p>所有的结局都已写好</p>
<p>所有的泪水都已启程</p>
<p>却忽然忘了是怎样的一个开始</p>
<p>在那个古老的不再回来的夏日</p>
<p>无论我如何去追索</p>
<p>年轻的你只如云影掠过</p>
<p>而你的微笑的面容极浅极淡</p>
<p>逐渐隐没在日落后的群岚</p>
<p>遂翻开那发黄的扉页</p>
<p>命运将它装订的极为拙劣</p>
<p>含着泪 我一读再读</p>
<p>却不得不承认</p>
<p>青春是一本太仓促的书</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.sunshow.net/2010/05/%e9%9d%92%e6%98%a5%e6%98%af%e4%b8%80%e6%9c%ac%e5%a4%aa%e4%bb%93%e4%bf%83%e7%9a%84%e4%b9%a6/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>[WordPress]对不同域名使用不同的主题</title>
		<link>http://blog.sunshow.net/2010/04/wordpress-using-different-themes-for-different-domains/</link>
		<comments>http://blog.sunshow.net/2010/04/wordpress-using-different-themes-for-different-domains/#comments</comments>
		<pubDate>Wed, 28 Apr 2010 14:20:40 +0000</pubDate>
		<dc:creator>Sunshow</dc:creator>
				<category><![CDATA[WordPress]]></category>
		<category><![CDATA[theme]]></category>
		<category><![CDATA[主题]]></category>
		<category><![CDATA[域名]]></category>
		<category><![CDATA[插件]]></category>

		<guid isPermaLink="false">http://blog.sunshow.net/?p=731</guid>
		<description><![CDATA[首先是让WordPress能支持多个域名而不是跳转到安装时指定的域名 编辑wp-config.php，加上： $home = 'http://'.$_SERVER['HTTP_HOST']; $siteurl = 'http://'.$_SERVER['HTTP_HOST']; define('WP_HOME', $home); define('WP_SITEURL', $siteurl); 然后针对不同域名指定不同的主题，本来想自己写一个，然后犯懒一搜果然已经有人做了 安装插件Domain Theme，激活然后设置就不赘述了 标签：theme, WordPress, 主题, 域名, 插件]]></description>
			<content:encoded><![CDATA[<p>首先是让WordPress能支持多个域名而不是跳转到安装时指定的域名</p>
<p>编辑wp-config.php，加上：</p>
<div class="hl-surround"><ol class="hl-main ln-show" title="Double click to hide line number." ondblclick = "linenumber(this)"><li class="hl-firstline"><span style="color: #00008b;">$home</span><span style="color: Gray;"> = </span><span style="color: #8b0000;">'</span><span style="color: Red;">http://</span><span style="color: #8b0000;">'</span><span style="color: Gray;">.</span><span style="color: #00008b;">$_SERVER</span><span style="color: Olive;">[</span><span style="color: #8b0000;">'</span><span style="color: Red;">HTTP_HOST</span><span style="color: #8b0000;">'</span><span style="color: Olive;">]</span><span style="color: Gray;">;</span></li>
<li><span style="color: #00008b;">$siteurl</span><span style="color: Gray;"> = </span><span style="color: #8b0000;">'</span><span style="color: Red;">http://</span><span style="color: #8b0000;">'</span><span style="color: Gray;">.</span><span style="color: #00008b;">$_SERVER</span><span style="color: Olive;">[</span><span style="color: #8b0000;">'</span><span style="color: Red;">HTTP_HOST</span><span style="color: #8b0000;">'</span><span style="color: Olive;">]</span><span style="color: Gray;">;</span></li>
<li><span style="color: Green;">define</span><span style="color: Olive;">(</span><span style="color: #8b0000;">'</span><span style="color: Red;">WP_HOME</span><span style="color: #8b0000;">'</span><span style="color: Gray;">, </span><span style="color: #00008b;">$home</span><span style="color: Olive;">)</span><span style="color: Gray;">;</span></li>
<li><span style="color: Green;">define</span><span style="color: Olive;">(</span><span style="color: #8b0000;">'</span><span style="color: Red;">WP_SITEURL</span><span style="color: #8b0000;">'</span><span style="color: Gray;">, </span><span style="color: #00008b;">$siteurl</span><span style="color: Olive;">)</span><span style="color: Gray;">;</span></li>
</ol></div>
<p>然后针对不同域名指定不同的主题，本来想自己写一个，然后犯懒一搜果然已经有人做了</p>
<p>安装插件<a href="http://wordpress.org/extend/plugins/domain-theme/">Domain Theme</a>，激活然后设置就不赘述了</p>

	<div style="clear:both;"></div>标签：<a href="http://blog.sunshow.net/tag/theme/" title="theme" rel="tag">theme</a>, <a href="http://blog.sunshow.net/tag/wordpress/" title="WordPress" rel="tag">WordPress</a>, <a href="http://blog.sunshow.net/tag/%e4%b8%bb%e9%a2%98/" title="主题" rel="tag">主题</a>, <a href="http://blog.sunshow.net/tag/%e5%9f%9f%e5%90%8d/" title="域名" rel="tag">域名</a>, <a href="http://blog.sunshow.net/tag/%e6%8f%92%e4%bb%b6/" title="插件" rel="tag">插件</a><br /><br />
]]></content:encoded>
			<wfw:commentRss>http://blog.sunshow.net/2010/04/wordpress-using-different-themes-for-different-domains/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>libcurl与CLOSE_WAIT</title>
		<link>http://blog.sunshow.net/2010/03/libcurl-and-close-wait/</link>
		<comments>http://blog.sunshow.net/2010/03/libcurl-and-close-wait/#comments</comments>
		<pubDate>Tue, 02 Mar 2010 05:41:49 +0000</pubDate>
		<dc:creator>Sunshow</dc:creator>
				<category><![CDATA[C]]></category>
		<category><![CDATA[Network]]></category>
		<category><![CDATA[libcurl]]></category>
		<category><![CDATA[TCP]]></category>
		<category><![CDATA[下载]]></category>

		<guid isPermaLink="false">http://blog.sunshow.net/?p=730</guid>
		<description><![CDATA[调用libcurl下载，然后使用netstat查看发现有大量的TCP连接保持在CLOSE_WAIT状态 查看libcurl的文档说明，有这样一个选项： CURLOPT_FORBID_REUSE Pass a long. Set to 1 to make the next transfer explicitly close the connection when done. Normally, libcurl keeps all connections alive when done with one transfer in case a succeeding one follows that can re-use them. This option should be used with caution and only if you understand what it [...]]]></description>
			<content:encoded><![CDATA[<p>调用libcurl下载，然后使用netstat查看发现有大量的TCP连接保持在CLOSE_WAIT状态<br />
查看libcurl的文档说明，有这样一个选项：</p>
<blockquote><p>
CURLOPT_FORBID_REUSE</p>
<p>Pass a long. Set to 1 to make the next transfer explicitly close the connection when done. Normally, libcurl keeps all connections alive when done with one transfer in case a succeeding one follows that can re-use them. This option should be used with caution and only if you understand what it does. Set to 0 to have libcurl keep the connection open for possible later re-use (default behavior).
</p></blockquote>
<p>也就是说，默认情况下libcurl完成一个任务以后，出于重用连接的考虑不会马上关闭<br />
如果没有新的TCP请求来重用这个连接，那么只能等到CLOSE_WAIT超时，这个时间默认在7200秒甚至更高，太多的CLOSE_WAIT连接会导致性能问题</p>
<p>解决方法：</p>
<div class="hl-surround"><div class="hl-main">curl_easy_setopt(curl, CURLOPT_FORBID_REUSE, 1);</div></div>
<p>最好再修改一下TCP参数调低CLOSE_WAIT和TIME_WAIT的超时时间</p>

	<div style="clear:both;"></div>标签：<a href="http://blog.sunshow.net/tag/libcurl/" title="libcurl" rel="tag">libcurl</a>, <a href="http://blog.sunshow.net/tag/tcp/" title="TCP" rel="tag">TCP</a>, <a href="http://blog.sunshow.net/tag/%e4%b8%8b%e8%bd%bd/" title="下载" rel="tag">下载</a><br /><br />
]]></content:encoded>
			<wfw:commentRss>http://blog.sunshow.net/2010/03/libcurl-and-close-wait/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

