<?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/"
	xmlns:creativeCommons="http://backend.userland.com/creativeCommonsRssModule">

<channel>
	<title>wolfg&#039;s Weblog</title>
	<atom:link href="http://guoyong.org/feed" rel="self" type="application/rss+xml" />
	<link>http://guoyong.org</link>
	<description>wolfg&#039;s journey with open source, linux, programming, sysadm ...</description>
	<lastBuildDate>Sun, 14 Mar 2010 06:10:29 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.2</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<creativeCommons:license>http://creativecommons.org/licenses/by-nc-sa/2.5/cn/</creativeCommons:license>		<item>
		<title>给虚拟机的虚拟硬盘增加容量(vmdk file)</title>
		<link>http://guoyong.org/2010/03/04/576</link>
		<comments>http://guoyong.org/2010/03/04/576#comments</comments>
		<pubDate>Thu, 04 Mar 2010 09:56:03 +0000</pubDate>
		<dc:creator>wolfg</dc:creator>
				<category><![CDATA[Using Desktop]]></category>
		<category><![CDATA[gparted]]></category>
		<category><![CDATA[qemu]]></category>
		<category><![CDATA[ubuntu]]></category>
		<category><![CDATA[virtualbox]]></category>
		<category><![CDATA[vmdk]]></category>
		<category><![CDATA[vmware]]></category>
		<category><![CDATA[vmware-player]]></category>

		<guid isPermaLink="false">http://guoyong.org/?p=576</guid>
		<description><![CDATA[我使用虚拟机主要是为了使用Windows XP系统来访问网银、进行在线支付。当初安装时是用VMWare Player的，后来换成了VirtualBox 3。Windows XP越来越臃肿，虚拟机硬盘空间不够了。在网上搜索后找到了... ]]></description>
			<content:encoded><![CDATA[<p>我使用虚拟机主要是为了使用Windows XP系统来访问网银、进行在线支付。当初安装时是用VMWare Player的，后来换成了VirtualBox 3。Windows XP越来越臃肿，虚拟机硬盘空间不够了。在网上搜索后找到了增加虚拟硬盘容量的方法：使用<a href="http://wiki.qemu.org/Main_Page">QEMN</a>和<a href="http://gparted.sourceforge.net/">GParted</a>，不用安装“庞大”的VMWare软件。特别说明一下最初创建虚拟硬盘时也是使用的QEMU工具。</p>
<p>具体步骤如下：<br />
1. VMDK格式转成RAW格式</p>
<div class="hl-surround"><div class="hl-main">$ qemu-img convert -f vmdk winxp.vmdk -O raw winxp.raw</div></div>
<p>2. 新建一个RAW格式的文件，后面会用到</p>
<div class="hl-surround"><div class="hl-main">$ qemu-img create -f raw temp.img 512M</div></div>
<p>3. 用cat命令把temp.img多次追加到winxp.raw文件后，达到扩容的目的。</p>
<div class="hl-surround"><div class="hl-main">$ cat winxp.raw temp.img temp.img temp.img temp.img temp.img temp.img temp.img temp.img &gt; winxp.img</div></div>
<p>4. 再转成原来的VMDK格式</p>
<div class="hl-surround"><div class="hl-main">$ qemu-img convert -f raw winxp.img -O vmdk winxp.vmdk</div></div>
<p>5. 用下载Gparted Live CD 的iso文件作为光盘启动虚拟机，可以看到硬盘物理空间已经变成了8G。修改硬盘上面的分区大小就行了，也可以创建新的分区。<br />
<a href="http://guoyong.org/blog/wp-content/uploads/gparted.png"><img src="http://guoyong.org/blog/wp-content/uploads/gparted-300x197.png" alt="" title="进行中" width="300" height="197" class="alignnone size-medium wp-image-586" /></a><a href="http://guoyong.org/blog/wp-content/uploads/gparted2.png"><img src="http://guoyong.org/blog/wp-content/uploads/gparted2-300x197.png" alt="" title="修改成功" width="300" height="197" class="alignnone size-medium wp-image-587" /></a></p>
<p>参考:</p>
<p><a href="http://www.cyberciti.biz/tips/howto-resize-vmware-virtual-harddisk-size.html#comments" title="http://www.cyberciti.biz/tips/howto-resize-vmware-virtual-harddisk-size.html#comments" target="_blank">www.cyberciti.biz/tips/howto-resize-vmware-virtual&#8230;</a></p>
<p><a href="http://qemu-forum.ipi.fi/viewtopic.php?t=846&#038;highlight=" title="http://qemu-forum.ipi.fi/viewtopic.php?t=846&#038;highlight=" target="_blank">qemu-forum.ipi.fi/viewtopic.php?t=846&#038;highlight=</a></p>
]]></content:encoded>
			<wfw:commentRss>http://guoyong.org/2010/03/04/576/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>再谈使用Commons HttpClient产生大量CLOSE_WAIT</title>
		<link>http://guoyong.org/2010/02/02/572</link>
		<comments>http://guoyong.org/2010/02/02/572#comments</comments>
		<pubDate>Tue, 02 Feb 2010 07:16:12 +0000</pubDate>
		<dc:creator>wolfg</dc:creator>
				<category><![CDATA[Dev]]></category>
		<category><![CDATA[CLOSE_WAIT]]></category>
		<category><![CDATA[HttpClient]]></category>
		<category><![CDATA[Java]]></category>
		<category><![CDATA[tcp]]></category>

		<guid isPermaLink="false">http://guoyong.org/?p=572</guid>
		<description><![CDATA[默认情况下(即用默认构造方法建立HttpClient对象)，httpMethod.releaseConnection()方法并不会关闭连接的Socket，目的是可以重用这个连接。网上有不少讨论：

Re: CLOSE_WAIT, logging

Re: [httpclient] CLOSE_WAIT stic... ]]></description>
			<content:encoded><![CDATA[<p>默认情况下(即用默认构造方法建立HttpClient对象)，httpMethod.releaseConnection()方法并不会关闭连接的Socket，目的是可以重用这个连接。网上有不少讨论：</p>
<ul>
<li><a href="http://www.mail-archive.com/commons-httpclient-dev@jakarta.apache.org/msg04338.html">Re: CLOSE_WAIT, logging</a></li>
<li>
<a href="http://www.w3.org/Protocols/rfc2616/rfc2616-sec8.html">Re: [httpclient] CLOSE_WAIT sticking around</a></li>
<li>
<a href="http://www.mail-archive.com/httpclient-user@jakarta.apache.org/msg04467.html">Re: tcp connections left with CLOSE_WAIT</a></li>
<li><a href="http://swordinhand.javaeye.com/blog/149408">apache httpclient与close_wait</a></li>
</ul>
<p>这些讨论里提出了关闭Socket的方法，即在请求头里加上&#8221;Connection: close&#8221;，具体可见<a href="http://www.w3.org/Protocols/rfc2616/rfc2616-sec8.html">HTTP协议规范里的说明</a>。</p>
<p>其实HttpClient 3.x 里还可以通过下面的方式建立HttpClient对象，来保证关闭Socket连接：</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: Blue;">HttpClient</span><span style="color: Gray;"> </span><span style="color: Blue;">httpClient</span><span style="color: Gray;"> = </span><span style="color: Green;">new</span><span style="color: Gray;"> </span><span style="color: Blue;">HttpClient</span><span style="color: Olive;">(</span><span style="color: Green;">new</span><span style="color: Gray;"> </span><span style="color: Blue;">SimpleHttpConnectionManager</span><span style="color: Olive;">(</span><span style="color: Green;">true</span><span style="color: Olive;">))</span><span style="color: Gray;">;</span></li></ol></div>
<p>具体可见HttpClient源码和API文档。</p>
<p>当然，使用HttpClient的多线程连接管理器时就不用这么做了。</p>
]]></content:encoded>
			<wfw:commentRss>http://guoyong.org/2010/02/02/572/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>SSH:不用密码登录</title>
		<link>http://guoyong.org/2010/01/30/569</link>
		<comments>http://guoyong.org/2010/01/30/569#comments</comments>
		<pubDate>Sat, 30 Jan 2010 08:31:22 +0000</pubDate>
		<dc:creator>wolfg</dc:creator>
				<category><![CDATA[SysAdmin]]></category>
		<category><![CDATA[ssh]]></category>
		<category><![CDATA[ubuntu]]></category>

		<guid isPermaLink="false">http://guoyong.org/?p=569</guid>
		<description><![CDATA[用SSH登录远程主机，每次都输入密码挺麻烦的，其实可以用密钥文件来登录：
1. 用ssh-keygen命令生成private/public密钥对，提示问题都用默认回答即可。
$ ssh-keygenGenerating public/private rsa key pair.Enter ... ]]></description>
			<content:encoded><![CDATA[<p>用SSH登录远程主机，每次都输入密码挺麻烦的，其实可以用密钥文件来登录：<br />
1. 用ssh-keygen命令生成private/public密钥对，提示问题都用默认回答即可。</p>
<div class="hl-surround"><div class="hl-main">$ ssh-keygen<br />Generating public/private rsa key pair.<br />Enter file in which to save the key (/home/guoyong/.ssh/id_rsa): <br />Enter passphrase (empty for no passphrase): <br />Enter same passphrase again: <br />Your identification has been saved in /home/guoyong/.ssh/id_rsa.<br />Your public key has been saved in /home/guoyong/.ssh/id_rsa.pub.</div></div>
<p>2. 用ssh-copy-id命令把公钥复制到远程主机上，user就是你登录用的用户名</p>
<div class="hl-surround"><div class="hl-main">$ ssh-cody-id user@remotehost</div></div>
<p>3. 验证一下吧</p>
<div class="hl-surround"><div class="hl-main">$ ssh user@remotehost echo &quot;it works&quot;</div></div>
]]></content:encoded>
			<wfw:commentRss>http://guoyong.org/2010/01/30/569/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>nrpe使用一例</title>
		<link>http://guoyong.org/2010/01/28/548</link>
		<comments>http://guoyong.org/2010/01/28/548#comments</comments>
		<pubDate>Thu, 28 Jan 2010 07:22:25 +0000</pubDate>
		<dc:creator>wolfg</dc:creator>
				<category><![CDATA[SysAdmin]]></category>
		<category><![CDATA[监控]]></category>
		<category><![CDATA[运维]]></category>
		<category><![CDATA[nagios]]></category>
		<category><![CDATA[nrpe]]></category>
		<category><![CDATA[ubuntu]]></category>

		<guid isPermaLink="false">http://guoyong.org/?p=548</guid>
		<description><![CDATA[NRPE的作用是在远程主机上运行Nagios插件，以便监控远程主机。
Ubuntu Server下安装NRPE很方便：
$ sudo apt-get install nagios-nrpe-server nagios-plugins
默认的几个检查命令(check_users, check_load等)都已经在/etc/nai... ]]></description>
			<content:encoded><![CDATA[<p>NRPE的作用是在远程主机上运行Nagios插件，以便监控远程主机。</p>
<p>Ubuntu Server下安装NRPE很方便：</p>
<div class="hl-surround"><div class="hl-main">$ sudo apt-get install nagios-nrpe-server nagios-plugins</div></div>
<p>默认的几个检查命令(check_users, check_load等)都已经在/etc/naigos/nrpe.cfg和/etc/nagios/nrpe_local.cfg配置好了。在Nagios里配置监控服务使用类似如下的监控命令就可以了：</p>
<div class="hl-surround"><div class="hl-main">check_command&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;check_nrpe!check_load</div></div>
<p>如果需要自定义监控命令，只需在/etc/nagios/nrpe_local.cfg里设置，重启NRPE服务，再在Nagios里配置监控服务即可。比如，要添加一个监控TCP各种状态的命令，步骤如下：</p>
<div class="hl-surround"><div class="hl-main">@remotehost<br />$ cd /usr/lib/nagios/plugins<br />$ sudo wget http://www.tuschy.com/nagios/plugins/check_tcp_count<br />$ sudo chmod +x check_tcp_count<br />$ cd /etc/nagios<br />$ sudo vi nrpe_local.cfg<br />command[check_tcp_count]=/usr/lib/nagios/plugins/check_tcp_count<br />$ sudo service nagios-nrpe-server restart<br /><br />@nagioshost<br />$ sudo vi remotehost.cfg<br />define service{<br />&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;use&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; generic-service<br />&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;host_name&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; remotehostname<br />&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;service_description&nbsp; &nbsp; &nbsp; &nbsp; Tcp count<br />&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;check_command&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; check_nrpe!check_tcp_count<br />}</div></div>
]]></content:encoded>
			<wfw:commentRss>http://guoyong.org/2010/01/28/548/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>使用Cacti监控JVM</title>
		<link>http://guoyong.org/2010/01/27/512</link>
		<comments>http://guoyong.org/2010/01/27/512#comments</comments>
		<pubDate>Wed, 27 Jan 2010 08:55:59 +0000</pubDate>
		<dc:creator>wolfg</dc:creator>
				<category><![CDATA[SysAdmin]]></category>
		<category><![CDATA[cacti]]></category>
		<category><![CDATA[监控]]></category>
		<category><![CDATA[运维]]></category>
		<category><![CDATA[jvm]]></category>
		<category><![CDATA[snmp]]></category>

		<guid isPermaLink="false">http://guoyong.org/?p=512</guid>
		<description><![CDATA[Cacti官方论坛里有几个监控JVM的模板：

http://forums.cacti.net/about19761.html

http://forums.cacti.net/post-112268.html

导入到Cacti后，需要启用JVM的SNMP Agent，方法如下：
1. 启动JVM的参数里加入-Dcom.sun.management.s... ]]></description>
			<content:encoded><![CDATA[<p>Cacti官方论坛里有几个监控JVM的模板：</p>
<ul>
<li><a href="http://forums.cacti.net/about19761.html">http://forums.cacti.net/about19761.html</a></li>
<li>
<a href="http://forums.cacti.net/post-112268.html">http://forums.cacti.net/post-112268.html</a></li>
</ul>
<p>导入到Cacti后，需要启用JVM的SNMP Agent，方法如下：<br />
1. 启动JVM的参数里加入-Dcom.sun.management.snmp.port=9998 这个是指定SNMP Agent的监听端口。<br />
2. 设置访问权限</p>
<div class="hl-surround"><div class="hl-main">$ sudo cp $JRE_HOME/lib/management/snmp.acl.template $JRE_HOME/lib/management/snmp.acl<br />$ sudo vi $JRE_HOME/lib/management/snmp.acl<br /><br />acl = {<br />&nbsp; {<br />&nbsp;&nbsp; &nbsp;communities = public, private<br />&nbsp;&nbsp; &nbsp;access = read-only<br />&nbsp;&nbsp; &nbsp;managers = localhost<br />&nbsp; }<br />}<br /><br />trap = {<br />&nbsp; {<br />&nbsp;&nbsp; &nbsp;trap-community = public<br />&nbsp;&nbsp; &nbsp;hosts = localhost<br />&nbsp; }<br />}</div></div>
<p>3. 设置配置文件的权限，必须只能为启用JVM的用户只读，否则不能工作。(management.properties不用修改，使用默认配置即可)</p>
<div class="hl-surround"><div class="hl-main">$ sudo chmod 600 management.properties snmp.acl<br />$ sudo chown jetty management.properties snmp.acl</div></div>
<p>4. 重启JVM，用netstat命令检查9998端口是否已被监听或用snmpwalk命令检查。</p>
<div class="hl-surround"><div class="hl-main">$ sudo netstat -tlunp |grep 9998<br />$ snmpwalk -v 2c -c public localhost:9998 .1.3.6.1.4.1.42</div></div>
<p>5. 为了让远程的Cacti主机可以访问，可使用snmpd的proxy功能将请求转发到localhost的JVM SNMP Agent上。修改snmpd的配置文件，添加<br />
proxy -v 2c -c public localhost:9998 .1.3.6.1.4.1.42<br />
然后重启snmpd服务。在Cacti主机上以snmpwalk命令检查，应该能得到与上一步中snmpwalk命令一样的输出。snmpwalk -v 2c -c public remotehost .1.3.6.1.4.1.42<br />
6. 至此，可以在Cacti里为JVM主机添加监控图表了，注意Device的SNMP Options配置里SNMP Version要选择Version 2。</p>
<p>参考：</p>
<ul>
<li><a href="http://java.sun.com/javase/6/docs/technotes/guides/management/snmp.html">http://java.sun.com/javase/6/docs/technotes/guides/management/snmp.html</a></li>
<li>
<a href="http://www.fifi.org/cgi-bin/man2html/usr/share/man/man5/snmpd.conf.5snmp.gz">http://www.fifi.org/cgi-bin/man2html/usr/share/man/man5/snmpd.conf.5snmp.gz</a></li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://guoyong.org/2010/01/27/512/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>登录窗口有多个Xfce会话供选择，怎么回事？</title>
		<link>http://guoyong.org/2010/01/26/558</link>
		<comments>http://guoyong.org/2010/01/26/558#comments</comments>
		<pubDate>Tue, 26 Jan 2010 12:44:40 +0000</pubDate>
		<dc:creator>wolfg</dc:creator>
				<category><![CDATA[Using Desktop]]></category>
		<category><![CDATA[gdm]]></category>
		<category><![CDATA[ubuntu]]></category>
		<category><![CDATA[xfce]]></category>
		<category><![CDATA[xsessions]]></category>

		<guid isPermaLink="false">http://guoyong.org/?p=558</guid>
		<description><![CDATA[登录窗口里选择会话的地方，一直有两个Xfce Session，登录后似乎略有不同。其实是在/usr/share/xsessions目录有一个符号链接default.desktop指向了xfce.desktop，删掉它后就可以了，也不影响什么。... ]]></description>
			<content:encoded><![CDATA[<p>登录窗口里选择会话的地方，一直有两个Xfce Session，登录后似乎略有不同。其实是在/usr/share/xsessions目录有一个符号链接default.desktop指向了xfce.desktop，删掉它后就可以了，也不影响什么。</p>
]]></content:encoded>
			<wfw:commentRss>http://guoyong.org/2010/01/26/558/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>找回消失的Notification Area(Xubuntu)</title>
		<link>http://guoyong.org/2010/01/26/556</link>
		<comments>http://guoyong.org/2010/01/26/556#comments</comments>
		<pubDate>Tue, 26 Jan 2010 11:48:43 +0000</pubDate>
		<dc:creator>wolfg</dc:creator>
				<category><![CDATA[Using Desktop]]></category>
		<category><![CDATA[notification area]]></category>
		<category><![CDATA[ubuntu]]></category>
		<category><![CDATA[xfce]]></category>
		<category><![CDATA[xfce-panel]]></category>
		<category><![CDATA[xubuntu]]></category>

		<guid isPermaLink="false">http://guoyong.org/?p=556</guid>
		<description><![CDATA[美化桌面的时候会遇到通知区域(Notification Area)Applet不见了的情况，试图再加一个到面板上也会报类似“通知区域已经存在”的错误。
解决办法是检查~/.config/xfce4/panel目录下有没有名字以systray... ]]></description>
			<content:encoded><![CDATA[<p>美化桌面的时候会遇到通知区域(Notification Area)Applet不见了的情况，试图再加一个到面板上也会报类似“通知区域已经存在”的错误。</p>
<p>解决办法是检查~/.config/xfce4/panel目录下有没有名字以systray开头的文件，删掉这些文件。<br />
rm ~/.config/xfce4/panel/systray*<br />
再编辑~/.config/xfce4/panel/panels.xml这个文件，如果有一行包含systray的，也删掉。</p>
<p>再次登入后，重新添加通知区域到面板就可以了。</p>
]]></content:encoded>
			<wfw:commentRss>http://guoyong.org/2010/01/26/556/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>再次遭遇大量CLOSE_WAIT</title>
		<link>http://guoyong.org/2010/01/22/543</link>
		<comments>http://guoyong.org/2010/01/22/543#comments</comments>
		<pubDate>Fri, 22 Jan 2010 12:51:05 +0000</pubDate>
		<dc:creator>wolfg</dc:creator>
				<category><![CDATA[Dev]]></category>
		<category><![CDATA[SysAdmin]]></category>
		<category><![CDATA[CLOSE_WAIT]]></category>
		<category><![CDATA[HttpClient]]></category>
		<category><![CDATA[jetty]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[tcp]]></category>

		<guid isPermaLink="false">http://guoyong.org/?p=543</guid>
		<description><![CDATA[今天下午线上的Jetty服务又停止响应了。不过与上次不同的是，日志里没有Too many open files的问题（看来ulimit设置管用了），看不出任何问题。于是用netstat检查网络连接，发现了大量CLOSE_WAIT状态... ]]></description>
			<content:encoded><![CDATA[<p>今天下午线上的Jetty服务又停止响应了。不过与上次不同的是，日志里没有Too many open files的问题（看来ulimit设置管用了），看不出任何问题。于是用netstat检查网络连接，发现了大量CLOSE_WAIT状态的连接，而且都是连接到同一个IP地址。联想到程序里有调用外部网站服务的部分，检查这个IP，正是其中的一个服务。检查代码，发现开发人员使用Commons HttpClient时出了问题，居然忘记关闭连接了(method.releaseConnection();)！！后果就是对方关闭了连接，连接不断地变成CLOSE_WAIT状态，直到耗尽所有的网络资源，没法再建立连接了。</p>
<p>从这个教训看出，项目的研发管理真是没有到位啊！快速反复的需求、几乎可以忽略的设计、缺少代码走查、没有单元测试，怎能保证上线前发现这样的问题！</p>
]]></content:encoded>
			<wfw:commentRss>http://guoyong.org/2010/01/22/543/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Services not starting on boot</title>
		<link>http://guoyong.org/2010/01/21/524</link>
		<comments>http://guoyong.org/2010/01/21/524#comments</comments>
		<pubDate>Wed, 20 Jan 2010 16:02:07 +0000</pubDate>
		<dc:creator>wolfg</dc:creator>
				<category><![CDATA[Using Desktop]]></category>
		<category><![CDATA[serverfault]]></category>
		<category><![CDATA[ubuntu]]></category>
		<category><![CDATA[upstart]]></category>

		<guid isPermaLink="false">http://guoyong.org/?p=524</guid>
		<description><![CDATA[前一段时间笔记本升级到Ubuntu 9.10后遇到了系统服务没有启动的问题，后来得知是upstart的一个bug。具体情况看看我在ServerFault回答的同样问题吧。... ]]></description>
			<content:encoded><![CDATA[<p>前一段时间笔记本升级到Ubuntu 9.10后遇到了系统服务没有启动的问题，后来得知是upstart的一个<a href="https://bugs.launchpad.net/ubuntu/+source/upstart/+bug/497299">bug</a>。具体情况看看我在<a href="http://serverfault.com">ServerFault</a>回答的<a href="http://serverfault.com/questions/100240/services-not-starting-on-boot-but-will-start-manually-on-ubuntu-9-10/103532#103532">同样问题</a>吧。</p>
]]></content:encoded>
			<wfw:commentRss>http://guoyong.org/2010/01/21/524/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>遭遇&#8221;java.io.IOException: Too many open files&#8221;</title>
		<link>http://guoyong.org/2010/01/20/520</link>
		<comments>http://guoyong.org/2010/01/20/520#comments</comments>
		<pubDate>Wed, 20 Jan 2010 08:47:21 +0000</pubDate>
		<dc:creator>wolfg</dc:creator>
				<category><![CDATA[SysAdmin]]></category>
		<category><![CDATA[Java]]></category>
		<category><![CDATA[jetty]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[lsof]]></category>
		<category><![CDATA[ulimit]]></category>

		<guid isPermaLink="false">http://guoyong.org/?p=520</guid>
		<description><![CDATA[今天下午，线上的Jetty服务宕机了，日志里大量的&#8221;java.io.IOException: Too many open files&#8221;错误。搜索到Freddy Chu的博客里正好有关于此的解决办法。
$ sysctl fs.file-max$ lsof -u jetty -nn &#124; wc -l$ ulim... ]]></description>
			<content:encoded><![CDATA[<p>今天下午，线上的Jetty服务宕机了，日志里大量的&#8221;java.io.IOException: Too many open files&#8221;错误。搜索到<a href="http://tux.hk/">Freddy Chu</a>的博客里正好有关于此的解决办法。</p>
<div class="hl-surround"><div class="hl-main">$ sysctl fs.file-max<br />$ lsof -u jetty -nn | wc -l<br />$ ulimit -a<br />$ sudo vi /etc/security/limits.conf<br />* soft nofile 65535<br />* hard nofile 65535</div></div>
<p>同时发现了系统里也有Freddy Chu提到的&#8221;Too many CLOSE_WAIT&#8221;问题，谢谢Freddy Chu。</p>
<div class="hl-surround"><div class="hl-main">$ sudo vi /etc/sysctl.conf<br />net.ipv4.tcp_fin_timeout = 30<br />net.ipv4.tcp_keepalive_intvl = 2<br />net.ipv4.tcp_keepalive_probes = 2<br />net.ipv4.tcp_keepalive_time = 1800<br /><br />$ sudo sysctl -p</div></div>
<blockquote><p>Update(2010-01-21): root用户要特殊设置</p>
<div class="hl-surround"><div class="hl-main">$ sudo vi /etc/security/limits.conf<br />root soft nofile 65535<br />root hard nofile 65535</div></div>
</blockquote>
]]></content:encoded>
			<wfw:commentRss>http://guoyong.org/2010/01/20/520/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>恢复Blogging</title>
		<link>http://guoyong.org/2010/01/17/514</link>
		<comments>http://guoyong.org/2010/01/17/514#comments</comments>
		<pubDate>Sun, 17 Jan 2010 12:58:22 +0000</pubDate>
		<dc:creator>wolfg</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[maemo]]></category>

		<guid isPermaLink="false">http://guoyong.org/?p=514</guid>
		<description><![CDATA[这两天又开始写些技术的东西了。
重新整理了以前的分类，发现08、09两年只写了可怜的几篇，也远离了Maemo世界。
如果腰椎恢复了，希望能重回Maemo世界，向Evan学习，能参与中文输入就更好了... ]]></description>
			<content:encoded><![CDATA[<p>这两天又开始写些技术的东西了。</p>
<p>重新整理了以前的分类，发现08、09两年只写了可怜的几篇，也远离了Maemo世界。</p>
<p>如果腰椎恢复了，希望能重回Maemo世界，向<a href="http://www.evan129.com/">Evan</a>学习，能参与中文输入就更好了 :)</p>
]]></content:encoded>
			<wfw:commentRss>http://guoyong.org/2010/01/17/514/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>npc安装问题解决一例</title>
		<link>http://guoyong.org/2010/01/17/504</link>
		<comments>http://guoyong.org/2010/01/17/504#comments</comments>
		<pubDate>Sun, 17 Jan 2010 12:27:34 +0000</pubDate>
		<dc:creator>wolfg</dc:creator>
				<category><![CDATA[SysAdmin]]></category>
		<category><![CDATA[cacti]]></category>
		<category><![CDATA[监控]]></category>
		<category><![CDATA[Doctrine]]></category>
		<category><![CDATA[运维]]></category>
		<category><![CDATA[nagios]]></category>
		<category><![CDATA[npc]]></category>
		<category><![CDATA[php]]></category>

		<guid isPermaLink="false">http://guoyong.org/?p=504</guid>
		<description><![CDATA[Cacti和Nagios都是好用的运维监控软件，NPC(Nagios Plugin for Cacti)是一个Cacti插件，安装后可以在Cacti界面里使用Nagios的功能。官方安装文档在这里。
我的安装环境是这样的：

Ubuntu 6.06 LTS
PHP 5.1.2
Cacti... ]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.cacti.net/">Cacti</a>和<a href="http://www.nagios.org/">Nagios</a>都是好用的运维监控软件，<a href="http://trac2.assembla.com/npc/">NPC</a>(Nagios Plugin for Cacti)是一个Cacti插件，安装后可以在Cacti界面里使用Nagios的功能。官方安装文档在<a href="http://trac2.assembla.com/npc/wiki/QuickStartGuide">这里</a>。</p>
<p>我的安装环境是这样的：</p>
<ul>
<li>Ubuntu 6.06 LTS</li>
<li>PHP 5.1.2</li>
<li>Cacti 0.8.7e</li>
<li><a href="http://cactiusers.org/downloads/">Cacti Plugin Architecture 2.6</a></li>
<li>Nagios 3.2.0</li>
<li>NDOUtils 1.4b7</li>
</ul>
<p>PHP必须安装PDO 和 JSON扩展。由于NPC使用了Ext JS，如果没有JSON扩展，NPC的界面不会出来，只能看到一个空白页面。Ubuntu 6.06下安装PDO可以参考<a href="http://bhiv.com/getting-pdo-to-work-with-ubuntus-606-lts-dapper-drake/">这里</a>。</p>
<p>按照官方文档安装配置好后，遇到了没有显示任何数据的问题，host, hostgroup, service, servicegroup等等都看不到。</p>
<p>检查了NPC的数据库表，有数据，说明NDOUtils已经工作。没有出现在界面上，说明是NPC从数据库读出来到界面显示过程中出现的问题。</p>
<p>用Firebug找出NPC界面为了获取显示数据的Ajax请求(比如/cacti/plugins/npc/npc.php?module=servicegroups&#038;action=getHostStatusPortlet)，直接在浏览器里访问，可以看到出了异常：Fatal error: Uncaught exception &#8216;Doctrine_Exception&#8217; with message &#8216;Couldn&#8217;t find class NpcServicegroups&#8217; 。显然是Doctrine没有加载到NPC定义的领域类。</p>
<p>经过一番对Doctrine的调试，发现原因在Doctrine类的loadModels方法(Line 516 in Doctrine.php)</p>
<div class="hl-surround"><div class="hl-main"><span style="color: #00008b;">$e</span><span style="color: Gray;"> = </span><span style="color: Blue;">explode</span><span style="color: Olive;">(</span><span style="color: #8b0000;">'</span><span style="color: Red;">.</span><span style="color: #8b0000;">'</span><span style="color: Gray;">, </span><span style="color: #00008b;">$file</span><span style="color: Gray;">-&gt;</span><span style="color: Blue;">getFileName</span><span style="color: Olive;">())</span><span style="color: Gray;">;</span></div></div>
<p>这里getFileName返回了带绝对路径的文件名，导致autoload函数失败。改成下面这样就解决了。</p>
<div class="hl-surround"><div class="hl-main"><span style="color: #00008b;">$e</span><span style="color: Gray;"> = </span><span style="color: Blue;">explode</span><span style="color: Olive;">(</span><span style="color: #8b0000;">'</span><span style="color: Red;">.</span><span style="color: #8b0000;">'</span><span style="color: Gray;">, </span><span style="color: Blue;">basename</span><span style="color: Olive;">(</span><span style="color: #00008b;">$file</span><span style="color: Gray;">-&gt;</span><span style="color: Blue;">getFileName</span><span style="color: Olive;">()))</span><span style="color: Gray;">;</span></div></div>
<p>不过还是不明白为什么getFileName返回的是带绝对路径的文件名，是跟我的系统环境有关系吗？有熟悉PHP的朋友能解释一下就好了。</p>
]]></content:encoded>
			<wfw:commentRss>http://guoyong.org/2010/01/17/504/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>How to install Nginx from source with &#8216;Debian&#8217; layout</title>
		<link>http://guoyong.org/2010/01/15/371</link>
		<comments>http://guoyong.org/2010/01/15/371#comments</comments>
		<pubDate>Fri, 15 Jan 2010 08:10:56 +0000</pubDate>
		<dc:creator>wolfg</dc:creator>
				<category><![CDATA[SysAdmin]]></category>
		<category><![CDATA[debian]]></category>
		<category><![CDATA[nginx]]></category>
		<category><![CDATA[ubuntu]]></category>

		<guid isPermaLink="false">http://guoyong.org/?p=371</guid>
		<description><![CDATA[1. 创建相关目录
$ sudo mkdir /etc/nginx$ sudo mkdir /etc/nginx/conf.d$ sudo mkdir /etc/nginx/sites-available$ sudo mkdir /etc/nginx/sites-enabled$ sudo mkdir /var/log/nginx$ sudo mkdir -p /var/lib/nginx/body$ sudo mkdir /var/lib/nginx/proxy$ sudo m... ]]></description>
			<content:encoded><![CDATA[<p>1. 创建相关目录</p>
<div class="hl-surround"><div class="hl-main">$ sudo mkdir /etc/nginx<br />$ sudo mkdir /etc/nginx/conf.d<br />$ sudo mkdir /etc/nginx/sites-available<br />$ sudo mkdir /etc/nginx/sites-enabled<br />$ sudo mkdir /var/log/nginx<br />$ sudo mkdir -p /var/lib/nginx/body<br />$ sudo mkdir /var/lib/nginx/proxy<br />$ sudo mkdir /var/lib/nginx/fastcgi</div></div>
<p>2. 编译安装</p>
<div class="hl-surround"><div class="hl-main">$ ./configure --prefix=/usr \<br />--sbin-path=/usr/sbin/nginx \<br />--conf-path=/etc/nginx/nginx.conf \<br />--lock-path=/var/lock/nginx.lock \<br />--error-log-path=/var/log/nginx/error.log \<br />--http-log-path=/var/log/nginx/access.log \<br />--pid-path=/var/run/nginx.pid \<br />--user=www-data \<br />--group=www-data \<br />--http-client-body-temp-path=/var/lib/nginx/body \<br />--http-proxy-temp-path=/var/lib/nginx/proxy \<br />--http-fastcgi-temp-path=/var/lib/nginx/fastcgi \<br />--with-md5=/usr/lib \<br />--with-sha1=/usr/lib \<br />--with-http_ssl_module \<br />--with-http_gzip_static_module \<br />--with-pcre \<br />--without-mail_pop3_module \<br />--without-mail_imap_module \<br />--without-mail_smtp_module \<br />--with-http_stub_status_module<br /><br />$ make<br />$ sudo make install<br />$ sudo mv /usr/html /var/www/nginx-default</div></div>
<p>3. 修改配置文件<br />
/etc/nginx/nginx.conf</p>
<div class="hl-surround"><div class="hl-main">user www-data;<br />worker_processes&nbsp; 5;<br /><br />error_log&nbsp; /var/log/nginx/error.log;<br />pid&nbsp; &nbsp; &nbsp; &nbsp; /var/run/nginx.pid;<br /><br />events {<br />&nbsp;&nbsp; &nbsp;worker_connections&nbsp; 1024;<br />}<br /><br />http {<br />&nbsp;&nbsp; &nbsp;server_tokens off;<br />&nbsp;&nbsp; &nbsp;include&nbsp; &nbsp; &nbsp; &nbsp;/etc/nginx/mime.types;<br />&nbsp;&nbsp; &nbsp;default_type&nbsp; application/octet-stream;<br /><br />&nbsp;&nbsp; &nbsp;access_log&nbsp; /var/log/nginx/access.log;<br /><br />&nbsp;&nbsp; &nbsp;sendfile&nbsp; &nbsp; &nbsp; &nbsp; on;<br />&nbsp;&nbsp; &nbsp;#tcp_nopush&nbsp; &nbsp; &nbsp;on;<br /><br />&nbsp;&nbsp; &nbsp;#keepalive_timeout&nbsp; 0;<br />&nbsp;&nbsp; &nbsp;keepalive_timeout&nbsp; 65;<br />&nbsp;&nbsp; &nbsp;tcp_nodelay&nbsp; &nbsp; &nbsp; &nbsp; on;<br />&nbsp;&nbsp; &nbsp;gzip&nbsp; on;<br /><br />&nbsp;&nbsp; &nbsp;include /etc/nginx/conf.d/*.conf;<br />&nbsp;&nbsp; &nbsp;include /etc/nginx/sites-enabled/*;<br />}</div></div>
<p>/etc/nginx/sites-available/default</p>
<div class="hl-surround"><div class="hl-main">server {<br />&nbsp;&nbsp; &nbsp;listen&nbsp; &nbsp; &nbsp; &nbsp;80;<br />&nbsp;&nbsp; &nbsp;server_name&nbsp; localhost;<br /><br />&nbsp;&nbsp; &nbsp;location / {<br />&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;root&nbsp; &nbsp;/var/www/nginx-default;<br />&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;index&nbsp; index.html index.htm;<br />&nbsp;&nbsp; &nbsp;}<br /><br /><br />&nbsp;&nbsp; &nbsp;# redirect server error pages to the static page /50x.html<br />&nbsp;&nbsp; &nbsp;#<br />&nbsp;&nbsp; &nbsp;error_page&nbsp; &nbsp;500 502 503 504&nbsp; /50x.html;<br />&nbsp;&nbsp; &nbsp;location = /50x.html {<br />&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;root&nbsp; &nbsp;/var/www/nginx-default;<br />&nbsp;&nbsp; &nbsp;}<br />}</div></div>
<p>启用default vhost</p>
<div class="hl-surround"><div class="hl-main">sudo ln -s /etc/nginx/sites-available/default /etc/nginx/sites-enabled/default</div></div>
<p>4. 创建init脚本<br />
$ sudo vi /etc/init.d/nginx</p>
<div class="hl-surround"><div class="hl-main">#! /bin/sh<br /><br />### BEGIN INIT INFO<br /># Provides:&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; nginx<br /># Required-Start:&nbsp; &nbsp; $all<br /># Required-Stop:&nbsp; &nbsp; &nbsp;$all<br /># Default-Start:&nbsp; &nbsp; &nbsp;2 3 4 5<br /># Default-Stop:&nbsp; &nbsp; &nbsp; 0 1 6<br /># Short-Description: starts the nginx web server<br /># Description:&nbsp; &nbsp; &nbsp; &nbsp;starts nginx using start-stop-daemon<br />### END INIT INFO<br /><br />PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin<br />DAEMON=/usr/sbin/nginx<br />NAME=nginx<br />DESC=nginx<br /><br />test -x $DAEMON || exit 0<br /><br /># Include nginx defaults if available<br />if [ -f /etc/default/nginx ] ; then<br />&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;. /etc/default/nginx<br />fi<br /><br />set -e<br /><br />. /lib/lsb/init-functions<br /><br />case &quot;$1&quot; in<br />&nbsp; start)<br />&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;echo -n &quot;Starting $DESC: &quot;<br />&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;start-stop-daemon --start --quiet --pidfile /var/run/$NAME.pid \<br />&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;--exec $DAEMON -- $DAEMON_OPTS || true<br />&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;echo &quot;$NAME.&quot;<br />&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;;;<br />&nbsp; stop)<br />&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;echo -n &quot;Stopping $DESC: &quot;<br />&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;start-stop-daemon --stop --quiet --pidfile /var/run/$NAME.pid \<br />&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;--exec $DAEMON || true<br />&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;echo &quot;$NAME.&quot;<br />&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;;;<br />&nbsp; restart|force-reload)<br />&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;echo -n &quot;Restarting $DESC: &quot;<br />&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;start-stop-daemon --stop --quiet --pidfile \<br />&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;/var/run/$NAME.pid --exec $DAEMON || true<br />&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;sleep 1<br />&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;start-stop-daemon --start --quiet --pidfile \<br />&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;/var/run/$NAME.pid --exec $DAEMON -- $DAEMON_OPTS || true<br />&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;echo &quot;$NAME.&quot;<br />&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;;;<br />&nbsp; reload)<br />&nbsp;&nbsp; &nbsp; &nbsp;echo -n &quot;Reloading $DESC configuration: &quot;<br />&nbsp;&nbsp; &nbsp; &nbsp;start-stop-daemon --stop --signal HUP --quiet --pidfile /var/run/$NAME.pid \<br />&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;--exec $DAEMON || true<br />&nbsp;&nbsp; &nbsp; &nbsp;echo &quot;$NAME.&quot;<br />&nbsp;&nbsp; &nbsp; &nbsp;;;<br />&nbsp; status)<br />&nbsp;&nbsp; &nbsp; &nbsp;status_of_proc -p /var/run/$NAME.pid &quot;$DAEMON&quot; nginx &amp;&amp; exit 0 || exit $?<br />&nbsp;&nbsp; &nbsp; &nbsp;;;<br />&nbsp; *)<br />&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;N=/etc/init.d/$NAME<br />&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;echo &quot;Usage: $N {start|stop|restart|reload|force-reload|status}&quot; &gt;&amp;2<br />&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;exit 1<br />&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;;;<br />esac<br /><br />exit 0</div></div>
<p>$ sudo chmod +x /etc/init.d/nginx<br />
$ sudo /usr/sbin/update-rc.d -f nginx defaults</p>
<p>5. 启动、停止、重启nginx服务</p>
<div class="hl-surround"><div class="hl-main">sudo /etc/init.d/nginx start<br />sudo /etc/init.d/nginx stop<br />sudo /etc/init.d/nginx restart</div></div>
]]></content:encoded>
			<wfw:commentRss>http://guoyong.org/2010/01/15/371/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>maven-eclipse-plugin v2.6与aspectj</title>
		<link>http://guoyong.org/2009/04/24/365</link>
		<comments>http://guoyong.org/2009/04/24/365#comments</comments>
		<pubDate>Fri, 24 Apr 2009 06:17:47 +0000</pubDate>
		<dc:creator>wolfg</dc:creator>
				<category><![CDATA[Dev]]></category>
		<category><![CDATA[eclipse]]></category>
		<category><![CDATA[maven]]></category>
		<category><![CDATA[maven-eclipse-plugin]]></category>

		<guid isPermaLink="false">http://guoyong.org/?p=365</guid>
		<description><![CDATA[最近一段时间以来，项目中使用maven-eclipse-plugin的eclipse:eclipse目标时比较恼人。pom里已经加入了aspectj的依赖，但生成的.classpath里却没有相应的classpathentry。
今天google到了解决办法，有两个：
1. ... ]]></description>
			<content:encoded><![CDATA[<p>最近一段时间以来，项目中使用maven-eclipse-plugin的eclipse:eclipse目标时比较恼人。pom里已经加入了aspectj的依赖，但生成的.classpath里却没有相应的classpathentry。</p>
<p>今天google到了解决办法，有两个：</p>
<p>1. 强制使用上个版本的maven-eclipse-plugin</p>
<div class="hl-surround"><div class="hl-main"><span style="color: Olive;">&lt;</span><span style="color: Green;">groupId</span><span style="color: Olive;">&gt;</span><span style="color: Gray;">org.apache.maven.plugins</span><span style="color: Olive;">&lt;/</span><span style="color: Green;">groupId</span><span style="color: Olive;">&gt;</span><span style="color: Gray;"><br />&nbsp; </span><span style="color: Olive;">&lt;</span><span style="color: Green;">artifactId</span><span style="color: Olive;">&gt;</span><span style="color: Gray;">maven-eclipse-plugin</span><span style="color: Olive;">&lt;/</span><span style="color: Green;">artifactId</span><span style="color: Olive;">&gt;</span><span style="color: Gray;"><br />&nbsp; </span><span style="color: Olive;">&lt;</span><span style="color: Green;">version</span><span style="color: Olive;">&gt;</span><span style="color: Gray;">2.5.1</span><span style="color: Olive;">&lt;/</span><span style="color: Green;">version</span><span style="color: Olive;">&gt;</span><span style="color: Gray;"><br /></span><span style="color: Olive;">&lt;/</span><span style="color: Green;">plugin</span><span style="color: Olive;">&gt;</span></div></div>
<p>2. 设置ajdtVersion为none</p>
<div class="hl-surround"><div class="hl-main"><span style="color: Olive;">&lt;</span><span style="color: Green;">groupId</span><span style="color: Olive;">&gt;</span><span style="color: Gray;">org.apache.maven.plugins</span><span style="color: Olive;">&lt;/</span><span style="color: Green;">groupId</span><span style="color: Olive;">&gt;</span><span style="color: Gray;"><br />&nbsp; </span><span style="color: Olive;">&lt;</span><span style="color: Green;">artifactId</span><span style="color: Olive;">&gt;</span><span style="color: Gray;">maven-eclipse-plugin</span><span style="color: Olive;">&lt;/</span><span style="color: Green;">artifactId</span><span style="color: Olive;">&gt;</span><span style="color: Gray;"><br />&nbsp; </span><span style="color: Olive;">&lt;</span><span style="color: Green;">configuration</span><span style="color: Olive;">&gt;</span><span style="color: Gray;"><br />&nbsp;&nbsp; &nbsp;</span><span style="color: Olive;">&lt;</span><span style="color: Green;">ajdtVersion</span><span style="color: Olive;">&gt;</span><span style="color: Gray;">none</span><span style="color: Olive;">&lt;/</span><span style="color: Green;">ajdtVersion</span><span style="color: Olive;">&gt;</span><span style="color: Gray;"><br />&nbsp; </span><span style="color: Olive;">&lt;/</span><span style="color: Green;">configuration</span><span style="color: Olive;">&gt;</span><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <br /></span><span style="color: Olive;">&lt;/</span><span style="color: Green;">plugin</span><span style="color: Olive;">&gt;</span></div></div>
]]></content:encoded>
			<wfw:commentRss>http://guoyong.org/2009/04/24/365/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>BugFree与SVN整合脚本修改</title>
		<link>http://guoyong.org/2009/03/11/364</link>
		<comments>http://guoyong.org/2009/03/11/364#comments</comments>
		<pubDate>Wed, 11 Mar 2009 07:56:00 +0000</pubDate>
		<dc:creator>wolfg</dc:creator>
				<category><![CDATA[Dev]]></category>
		<category><![CDATA[bugfree]]></category>
		<category><![CDATA[scm]]></category>
		<category><![CDATA[svn]]></category>

		<guid isPermaLink="false">http://guoyong.org/?p=364</guid>
		<description><![CDATA[目前团队里使用subversion做版本控制，bugfree做缺陷管理。参照官方的做法实现了bugfree和svn的整合。
我为每个项目都设置了单独的svn仓库，这样在用viewvc浏览版本库时要指定root查询参数才能访问... ]]></description>
			<content:encoded><![CDATA[<p>目前团队里使用subversion做版本控制，bugfree做缺陷管理。参照<a href="http://www.bugfree.org.cn/blog/?p=49">官方的做法</a>实现了bugfree和svn的整合。</p>
<p>我为每个项目都设置了单独的svn仓库，这样在用viewvc浏览版本库时要指定root查询参数才能访问每个项目的代码库。因此我修改了bugfree官方提供的钩子脚本和向bugfree提交svn信息的php脚本，加入了对root查询参数的支持。具体改动见<a href="http://guoyong.org/?dl=bugfree_svn.tar.gz">附件</a>。</p>
<p>另外，为了维护方便，我在每个项目的hooks目录里做一个到钩子脚本的软链接，这样就只需维护一个钩子脚本文件了。</p>
]]></content:encoded>
			<wfw:commentRss>http://guoyong.org/2009/03/11/364/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
	</channel>
</rss>

<!-- Dynamic Page Served (once) in 0.872 seconds -->
