<?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>pigfoot's weblog &#187; Unix</title>
	<atom:link href="http://weblog.pigfoot.org/pigfoot/category/it/unix/feed/" rel="self" type="application/rss+xml" />
	<link>http://weblog.pigfoot.org/pigfoot</link>
	<description>We should forget about small efficiencies -- Donald Knuth</description>
	<lastBuildDate>Fri, 30 Jul 2010 02:51:24 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0.1</generator>
		<item>
		<title>Firefox 3.5pre Optimized Build</title>
		<link>http://weblog.pigfoot.org/pigfoot/2009/06/02/firefox-35pre-optimized-build/</link>
		<comments>http://weblog.pigfoot.org/pigfoot/2009/06/02/firefox-35pre-optimized-build/#comments</comments>
		<pubDate>Tue, 02 Jun 2009 01:55:45 +0000</pubDate>
		<dc:creator>pigfoot</dc:creator>
				<category><![CDATA[Gecko]]></category>
		<category><![CDATA[IT]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[Microsoft]]></category>

		<guid isPermaLink="false">http://weblog.pigfoot.org/pigfoot/?p=642</guid>
		<description><![CDATA[What&#8217;s New Nightly build &#8211; changeset: 25821:0e772546d16b Portable edition has been also provided since now. It will create a profile folder &#8220;Firefox (Profile)&#8221; if needed. Use P2 If in doubt Firefox 3.5 is based on the Gecko 1.9.1 rendering platform, which has been under development for the past 9 months. Firefox 3.5 is an incremental [...]]]></description>
			<content:encoded><![CDATA[<p><img border="0" align="right" alt="Get Firefox!" title="Get Firefox!" src="http://www.mozilla.com/img/firefox-logo-64x64.png" /></p>
<p><strong>What&#8217;s New</strong></p>
<ul>
<li>Nightly build &#8211; changeset: <a target="_blank" href="http://hg.mozilla.org/releases/mozilla-1.9.1/rev/0e772546d16b">25821:0e772546d16b</a></li>
<li>Portable edition has been also provided since now. It will create a profile folder &#8220;Firefox (Profile)&#8221; if needed.</li>
<li>Use P2 If in doubt</li>
<li>Firefox 3.5 is based on the Gecko 1.9.1 rendering platform, which has been under development for the past 9 months. Firefox 3.5 is an incremental release on the previous version with significant changes to improve web compatibility, performance, and ease of use</li>
<li>Improved tools for controlling your private data, including a <a target="_blank" href="http://support.mozilla.com/en-US/kb/Private+Browsing">Private Browsing Mode</a></li>
<li>Improved performance and stability with the new <a target="_blank" href="https://wiki.mozilla.org/JavaScript:TraceMonkey">TraceMonkey</a> JavaScript engine.</li>
<li>Support for <a target="_blank" href="http://blog.mozilla.com/webdev/2009/02/12/native-json-in-firefox-31/">native JSON</a>, and <a target="_blank" href="https://developer.mozilla.org/web-tech/2009/01/05/web-workers-part-3/">web worker threads</a></li>
<li>Reduce memory usage by using <a target="_blank" href="http://lwn.net/Articles/273001/">jemalloc</a></li>
<li>Speed improvement by using <a target="_blank" href="https://developer.mozilla.org/en/Building_with_Profile-Guided_Optimization">Profile-Guided Optimization (PGO)</a></li>
</ul>
<p>Firefox 3.5pre community edition <strong>en_US</strong> (20090601)</p>
<ul>
<li>[FX] <a href="http://ftp.twaren.net/local-distfiles/pigfoot/firefox/archives/Firefox-20090602002006-CE-3.5pre%20%28pigfoot%29%20VC9-P3-en_US.7z.exe">P3 build</a>, <a href="http://ftp.twaren.net/local-distfiles/pigfoot/firefox/archives/Firefox-20090602002006-CE-3.5pre%20%28pigfoot%29%20VC9-P3-en_US.7z">Portable edition</a> (9.1 MB)</li>
<li>[FX] <a href="http://ftp.twaren.net/local-distfiles/pigfoot/firefox/archives/Firefox-20090601222908-CE-3.5pre%20%28pigfoot%29%20VC9-P2-en_US.7z.exe">P2 build</a>, <a href="http://ftp.twaren.net/local-distfiles/pigfoot/firefox/archives/Firefox-20090601222908-CE-3.5pre%20%28pigfoot%29%20VC9-P2-en_US.7z">Portable edition</a> (9.1 MB)</li>
<li>[FX] <a href="http://ftp.twaren.net/local-distfiles/pigfoot/firefox/archives/Firefox-20090601203653-CE-3.5pre%20%28pigfoot%29%20VC9-P1-en_US.7z.exe">P1 build</a>, <a href="http://ftp.twaren.net/local-distfiles/pigfoot/firefox/archives/Firefox-20090601203653-CE-3.5pre%20%28pigfoot%29%20VC9-P1-en_US.7z">Portable edition</a> (9.1 MB)</li>
</ul>
<ul>
<li>my tweaks profile patch</li>
<li><a target="_blank" href="http://www.adobe.com/products/flashplayer/">Adobe Flash Player</a> 10.0.22.87 (<a target="_blank" href="http://www.adobe.com/software/flash/about/">Test flash version</a>)</li>
<li><a target="_blank" href="http://port25.technet.com/pages/windows-media-player-firefox-plugin-download.aspx">Windows Media Player Firefox Plugin</a> 1.0.0.8 (<a target="_blank" href="http://kb.mozillazine.org/Windows_Media_Player">MozillaZine Knowledge Base</a>)</li>
<li>Reduce memory usage by using <a target="_blank" href="http://lwn.net/Articles/273001/">jemalloc</a></li>
<li>Speed improvement by using <a target="_blank" href="https://developer.mozilla.org/en/Building_with_Profile-Guided_Optimization">Profile-Guided Optimization (PGO)</a></li>
<li>Support Mozilla Update Channel since Firefox 2.0.0.6</li>
<li>Used <a target="_blank" href="http://www.deviantart.com/deviation/14763352/">branding artwork</a> by <a target="_blank" href="http://forums.mozillazine.org/viewtopic.php?t=210318">JairoB</a></li>
<li>P1/P2/P3 all build with VC9</li>
<li>P1 build build with -Ox -GLAs -fp:fast -GS-, for Generic CPU</li>
<li>P2 build build with -Ox -GLAs arch:SSE -fp:fast -GS-, for Athlon XP, Duron 1.1 GHz+, Pentium III ,Celeron 500+</li>
<li>P3 build build with -Ox -GLAs arch:SSE2 -fp:fast -GS-, for AMD Athlon 64, AMD Sempron, Pentium D, Pentium M, Pentium 4, Celeron 1.7 GHz+ and other new CPU.</li>
</ul>
<img src="http://weblog.pigfoot.org/pigfoot/?ak_action=api_record_view&id=642&type=feed" alt="" />]]></content:encoded>
			<wfw:commentRss>http://weblog.pigfoot.org/pigfoot/2009/06/02/firefox-35pre-optimized-build/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>vim bash: _filedir: command not found</title>
		<link>http://weblog.pigfoot.org/pigfoot/2009/03/13/vim-bash-_filedir-command-not-found/</link>
		<comments>http://weblog.pigfoot.org/pigfoot/2009/03/13/vim-bash-_filedir-command-not-found/#comments</comments>
		<pubDate>Fri, 13 Mar 2009 02:44:15 +0000</pubDate>
		<dc:creator>pigfoot</dc:creator>
				<category><![CDATA[Gentoo]]></category>
		<category><![CDATA[IT]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[Unix]]></category>

		<guid isPermaLink="false">http://weblog.pigfoot.org/pigfoot/?p=465</guid>
		<description><![CDATA[I&#8217;m using bash-completion-20081219-r1 currently. When I type vim and hit &#60;tab&#62; for the bash completion, it gives an error: gentoo &#91;~&#93; -pigfoot- &#91;W1&#93; vim &#91;Hit Tab&#93; &#160; vim bash: _filedir: command not found However, I only enable &#8220;vim&#8221; and &#8220;mercurial&#8221; module for the bash completion: gentoo &#91;~&#93; -pigfoot- &#91;W1&#93; eselect bashcomp list Available completions: &#160; [...]]]></description>
			<content:encoded><![CDATA[<p>I&#8217;m using bash-completion-20081219-r1 currently. When I type vim and hit &lt;tab&gt; for the bash completion, it gives an error:</p>
<div class="codecolorer-container bash default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="bash codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">gentoo <span style="color: #7a0874; font-weight: bold;">&#91;</span>~<span style="color: #7a0874; font-weight: bold;">&#93;</span> <span style="color: #660033;">-pigfoot-</span> <span style="color: #7a0874; font-weight: bold;">&#91;</span>W1<span style="color: #7a0874; font-weight: bold;">&#93;</span> <span style="color: #c20cb9; font-weight: bold;">vim</span> <span style="color: #7a0874; font-weight: bold;">&#91;</span>Hit Tab<span style="color: #7a0874; font-weight: bold;">&#93;</span><br />
&nbsp; <span style="color: #c20cb9; font-weight: bold;">vim</span> <span style="color: #c20cb9; font-weight: bold;">bash</span>: _filedir: <span style="color: #7a0874; font-weight: bold;">command</span> not found</div></div>
<p>However, I only enable &#8220;vim&#8221; and &#8220;mercurial&#8221; module for the bash completion:</p>
<div class="codecolorer-container bash default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;height:300px;"><div class="bash codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">gentoo <span style="color: #7a0874; font-weight: bold;">&#91;</span>~<span style="color: #7a0874; font-weight: bold;">&#93;</span> <span style="color: #660033;">-pigfoot-</span> <span style="color: #7a0874; font-weight: bold;">&#91;</span>W1<span style="color: #7a0874; font-weight: bold;">&#93;</span> eselect bashcomp list<br />
Available completions:<br />
&nbsp; <span style="color: #7a0874; font-weight: bold;">&#91;</span><span style="color: #000000;">1</span><span style="color: #7a0874; font-weight: bold;">&#93;</span> &nbsp; _subversion<br />
&nbsp; <span style="color: #7a0874; font-weight: bold;">&#91;</span><span style="color: #000000;">2</span><span style="color: #7a0874; font-weight: bold;">&#93;</span> &nbsp; apache2ctl<br />
&nbsp; <span style="color: #7a0874; font-weight: bold;">&#91;</span><span style="color: #000000;">3</span><span style="color: #7a0874; font-weight: bold;">&#93;</span> &nbsp; base<br />
&nbsp; <span style="color: #7a0874; font-weight: bold;">&#91;</span><span style="color: #000000;">4</span><span style="color: #7a0874; font-weight: bold;">&#93;</span> &nbsp; bitkeeper<br />
&nbsp; <span style="color: #7a0874; font-weight: bold;">&#91;</span><span style="color: #000000;">5</span><span style="color: #7a0874; font-weight: bold;">&#93;</span> &nbsp; bittorrent<br />
&nbsp; <span style="color: #7a0874; font-weight: bold;">&#91;</span><span style="color: #000000;">6</span><span style="color: #7a0874; font-weight: bold;">&#93;</span> &nbsp; cksfv<br />
&nbsp; <span style="color: #7a0874; font-weight: bold;">&#91;</span><span style="color: #000000;">7</span><span style="color: #7a0874; font-weight: bold;">&#93;</span> &nbsp; clisp<br />
&nbsp; <span style="color: #7a0874; font-weight: bold;">&#91;</span><span style="color: #000000;">8</span><span style="color: #7a0874; font-weight: bold;">&#93;</span> &nbsp; dsniff<br />
&nbsp; <span style="color: #7a0874; font-weight: bold;">&#91;</span><span style="color: #000000;">9</span><span style="color: #7a0874; font-weight: bold;">&#93;</span> &nbsp; eselect<br />
&nbsp; <span style="color: #7a0874; font-weight: bold;">&#91;</span><span style="color: #000000;">10</span><span style="color: #7a0874; font-weight: bold;">&#93;</span> &nbsp;freeciv<br />
&nbsp; <span style="color: #7a0874; font-weight: bold;">&#91;</span><span style="color: #000000;">11</span><span style="color: #7a0874; font-weight: bold;">&#93;</span> &nbsp;gcl<br />
&nbsp; <span style="color: #7a0874; font-weight: bold;">&#91;</span><span style="color: #000000;">12</span><span style="color: #7a0874; font-weight: bold;">&#93;</span> &nbsp;genkernel<br />
&nbsp; <span style="color: #7a0874; font-weight: bold;">&#91;</span><span style="color: #000000;">13</span><span style="color: #7a0874; font-weight: bold;">&#93;</span> &nbsp;gentoo<br />
&nbsp; <span style="color: #7a0874; font-weight: bold;">&#91;</span><span style="color: #000000;">14</span><span style="color: #7a0874; font-weight: bold;">&#93;</span> &nbsp;gkrellm<br />
&nbsp; <span style="color: #7a0874; font-weight: bold;">&#91;</span><span style="color: #000000;">15</span><span style="color: #7a0874; font-weight: bold;">&#93;</span> &nbsp;gnatmake<br />
&nbsp; <span style="color: #7a0874; font-weight: bold;">&#91;</span><span style="color: #000000;">16</span><span style="color: #7a0874; font-weight: bold;">&#93;</span> &nbsp;gpg2<br />
&nbsp; <span style="color: #7a0874; font-weight: bold;">&#91;</span><span style="color: #000000;">17</span><span style="color: #7a0874; font-weight: bold;">&#93;</span> &nbsp;harbour<br />
&nbsp; <span style="color: #7a0874; font-weight: bold;">&#91;</span><span style="color: #000000;">18</span><span style="color: #7a0874; font-weight: bold;">&#93;</span> &nbsp;isql<br />
&nbsp; <span style="color: #7a0874; font-weight: bold;">&#91;</span><span style="color: #000000;">19</span><span style="color: #7a0874; font-weight: bold;">&#93;</span> &nbsp;larch<br />
&nbsp; <span style="color: #7a0874; font-weight: bold;">&#91;</span><span style="color: #000000;">20</span><span style="color: #7a0874; font-weight: bold;">&#93;</span> &nbsp;lilypond<br />
&nbsp; <span style="color: #7a0874; font-weight: bold;">&#91;</span><span style="color: #000000;">21</span><span style="color: #7a0874; font-weight: bold;">&#93;</span> &nbsp;lisp<br />
&nbsp; <span style="color: #7a0874; font-weight: bold;">&#91;</span><span style="color: #000000;">22</span><span style="color: #7a0874; font-weight: bold;">&#93;</span> &nbsp;mailman<br />
&nbsp; <span style="color: #7a0874; font-weight: bold;">&#91;</span><span style="color: #000000;">23</span><span style="color: #7a0874; font-weight: bold;">&#93;</span> &nbsp;mcrypt<br />
&nbsp; <span style="color: #7a0874; font-weight: bold;">&#91;</span><span style="color: #000000;">24</span><span style="color: #7a0874; font-weight: bold;">&#93;</span> &nbsp;mercurial <span style="color: #000000; font-weight: bold;">*</span><br />
&nbsp; <span style="color: #7a0874; font-weight: bold;">&#91;</span><span style="color: #000000;">25</span><span style="color: #7a0874; font-weight: bold;">&#93;</span> &nbsp;modules<br />
&nbsp; <span style="color: #7a0874; font-weight: bold;">&#91;</span><span style="color: #000000;">26</span><span style="color: #7a0874; font-weight: bold;">&#93;</span> &nbsp;monodevelop<br />
&nbsp; <span style="color: #7a0874; font-weight: bold;">&#91;</span><span style="color: #000000;">27</span><span style="color: #7a0874; font-weight: bold;">&#93;</span> &nbsp;mtx<br />
&nbsp; <span style="color: #7a0874; font-weight: bold;">&#91;</span><span style="color: #000000;">28</span><span style="color: #7a0874; font-weight: bold;">&#93;</span> &nbsp;p4<br />
&nbsp; <span style="color: #7a0874; font-weight: bold;">&#91;</span><span style="color: #000000;">29</span><span style="color: #7a0874; font-weight: bold;">&#93;</span> &nbsp;povray<br />
&nbsp; <span style="color: #7a0874; font-weight: bold;">&#91;</span><span style="color: #000000;">30</span><span style="color: #7a0874; font-weight: bold;">&#93;</span> &nbsp;qdbus<br />
&nbsp; <span style="color: #7a0874; font-weight: bold;">&#91;</span><span style="color: #000000;">31</span><span style="color: #7a0874; font-weight: bold;">&#93;</span> &nbsp;ri<br />
&nbsp; <span style="color: #7a0874; font-weight: bold;">&#91;</span><span style="color: #000000;">32</span><span style="color: #7a0874; font-weight: bold;">&#93;</span> &nbsp;sbcl<br />
&nbsp; <span style="color: #7a0874; font-weight: bold;">&#91;</span><span style="color: #000000;">33</span><span style="color: #7a0874; font-weight: bold;">&#93;</span> &nbsp;siege<br />
&nbsp; <span style="color: #7a0874; font-weight: bold;">&#91;</span><span style="color: #000000;">34</span><span style="color: #7a0874; font-weight: bold;">&#93;</span> &nbsp;sitecopy<br />
&nbsp; <span style="color: #7a0874; font-weight: bold;">&#91;</span><span style="color: #000000;">35</span><span style="color: #7a0874; font-weight: bold;">&#93;</span> &nbsp;snownews<br />
&nbsp; <span style="color: #7a0874; font-weight: bold;">&#91;</span><span style="color: #000000;">36</span><span style="color: #7a0874; font-weight: bold;">&#93;</span> &nbsp;<span style="color: #c20cb9; font-weight: bold;">ssh</span><br />
&nbsp; <span style="color: #7a0874; font-weight: bold;">&#91;</span><span style="color: #000000;">37</span><span style="color: #7a0874; font-weight: bold;">&#93;</span> &nbsp;subversion<br />
&nbsp; <span style="color: #7a0874; font-weight: bold;">&#91;</span><span style="color: #000000;">38</span><span style="color: #7a0874; font-weight: bold;">&#93;</span> &nbsp;unace<br />
&nbsp; <span style="color: #7a0874; font-weight: bold;">&#91;</span><span style="color: #000000;">39</span><span style="color: #7a0874; font-weight: bold;">&#93;</span> &nbsp;unrar<br />
&nbsp; <span style="color: #7a0874; font-weight: bold;">&#91;</span><span style="color: #000000;">40</span><span style="color: #7a0874; font-weight: bold;">&#93;</span> &nbsp;<span style="color: #c20cb9; font-weight: bold;">vim</span> <span style="color: #000000; font-weight: bold;">*</span><br />
&nbsp; <span style="color: #7a0874; font-weight: bold;">&#91;</span><span style="color: #000000;">41</span><span style="color: #7a0874; font-weight: bold;">&#93;</span> &nbsp;xxd</div></div>
<p>So I check global setting by adding &#8211;global argument:</p>
<div class="codecolorer-container bash default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;height:300px;"><div class="bash codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">gentoo <span style="color: #7a0874; font-weight: bold;">&#91;</span>~<span style="color: #7a0874; font-weight: bold;">&#93;</span> <span style="color: #660033;">-pigfoot-</span> <span style="color: #7a0874; font-weight: bold;">&#91;</span>W1<span style="color: #7a0874; font-weight: bold;">&#93;</span> eselect bashcomp list <span style="color: #660033;">--global</span><br />
Available completions:<br />
&nbsp; <span style="color: #7a0874; font-weight: bold;">&#91;</span><span style="color: #000000;">1</span><span style="color: #7a0874; font-weight: bold;">&#93;</span> &nbsp; _subversion<br />
&nbsp; <span style="color: #7a0874; font-weight: bold;">&#91;</span><span style="color: #000000;">2</span><span style="color: #7a0874; font-weight: bold;">&#93;</span> &nbsp; apache2ctl<br />
&nbsp; <span style="color: #7a0874; font-weight: bold;">&#91;</span><span style="color: #000000;">3</span><span style="color: #7a0874; font-weight: bold;">&#93;</span> &nbsp; base<br />
&nbsp; <span style="color: #7a0874; font-weight: bold;">&#91;</span><span style="color: #000000;">4</span><span style="color: #7a0874; font-weight: bold;">&#93;</span> &nbsp; bitkeeper<br />
&nbsp; <span style="color: #7a0874; font-weight: bold;">&#91;</span><span style="color: #000000;">5</span><span style="color: #7a0874; font-weight: bold;">&#93;</span> &nbsp; bittorrent<br />
&nbsp; <span style="color: #7a0874; font-weight: bold;">&#91;</span><span style="color: #000000;">6</span><span style="color: #7a0874; font-weight: bold;">&#93;</span> &nbsp; cksfv<br />
&nbsp; <span style="color: #7a0874; font-weight: bold;">&#91;</span><span style="color: #000000;">7</span><span style="color: #7a0874; font-weight: bold;">&#93;</span> &nbsp; clisp<br />
&nbsp; <span style="color: #7a0874; font-weight: bold;">&#91;</span><span style="color: #000000;">8</span><span style="color: #7a0874; font-weight: bold;">&#93;</span> &nbsp; dsniff<br />
&nbsp; <span style="color: #7a0874; font-weight: bold;">&#91;</span><span style="color: #000000;">9</span><span style="color: #7a0874; font-weight: bold;">&#93;</span> &nbsp; eselect<br />
&nbsp; <span style="color: #7a0874; font-weight: bold;">&#91;</span><span style="color: #000000;">10</span><span style="color: #7a0874; font-weight: bold;">&#93;</span> &nbsp;freeciv<br />
&nbsp; <span style="color: #7a0874; font-weight: bold;">&#91;</span><span style="color: #000000;">11</span><span style="color: #7a0874; font-weight: bold;">&#93;</span> &nbsp;gcl<br />
&nbsp; <span style="color: #7a0874; font-weight: bold;">&#91;</span><span style="color: #000000;">12</span><span style="color: #7a0874; font-weight: bold;">&#93;</span> &nbsp;genkernel<br />
&nbsp; <span style="color: #7a0874; font-weight: bold;">&#91;</span><span style="color: #000000;">13</span><span style="color: #7a0874; font-weight: bold;">&#93;</span> &nbsp;gentoo <span style="color: #000000; font-weight: bold;">*</span><br />
&nbsp; <span style="color: #7a0874; font-weight: bold;">&#91;</span><span style="color: #000000;">14</span><span style="color: #7a0874; font-weight: bold;">&#93;</span> &nbsp;gkrellm<br />
&nbsp; <span style="color: #7a0874; font-weight: bold;">&#91;</span><span style="color: #000000;">15</span><span style="color: #7a0874; font-weight: bold;">&#93;</span> &nbsp;gnatmake<br />
&nbsp; <span style="color: #7a0874; font-weight: bold;">&#91;</span><span style="color: #000000;">16</span><span style="color: #7a0874; font-weight: bold;">&#93;</span> &nbsp;gpg2<br />
&nbsp; <span style="color: #7a0874; font-weight: bold;">&#91;</span><span style="color: #000000;">17</span><span style="color: #7a0874; font-weight: bold;">&#93;</span> &nbsp;harbour<br />
&nbsp; <span style="color: #7a0874; font-weight: bold;">&#91;</span><span style="color: #000000;">18</span><span style="color: #7a0874; font-weight: bold;">&#93;</span> &nbsp;isql<br />
&nbsp; <span style="color: #7a0874; font-weight: bold;">&#91;</span><span style="color: #000000;">19</span><span style="color: #7a0874; font-weight: bold;">&#93;</span> &nbsp;larch<br />
&nbsp; <span style="color: #7a0874; font-weight: bold;">&#91;</span><span style="color: #000000;">20</span><span style="color: #7a0874; font-weight: bold;">&#93;</span> &nbsp;lilypond<br />
&nbsp; <span style="color: #7a0874; font-weight: bold;">&#91;</span><span style="color: #000000;">21</span><span style="color: #7a0874; font-weight: bold;">&#93;</span> &nbsp;lisp<br />
&nbsp; <span style="color: #7a0874; font-weight: bold;">&#91;</span><span style="color: #000000;">22</span><span style="color: #7a0874; font-weight: bold;">&#93;</span> &nbsp;mailman<br />
&nbsp; <span style="color: #7a0874; font-weight: bold;">&#91;</span><span style="color: #000000;">23</span><span style="color: #7a0874; font-weight: bold;">&#93;</span> &nbsp;mcrypt<br />
&nbsp; <span style="color: #7a0874; font-weight: bold;">&#91;</span><span style="color: #000000;">24</span><span style="color: #7a0874; font-weight: bold;">&#93;</span> &nbsp;mercurial<br />
&nbsp; <span style="color: #7a0874; font-weight: bold;">&#91;</span><span style="color: #000000;">25</span><span style="color: #7a0874; font-weight: bold;">&#93;</span> &nbsp;modules<br />
&nbsp; <span style="color: #7a0874; font-weight: bold;">&#91;</span><span style="color: #000000;">26</span><span style="color: #7a0874; font-weight: bold;">&#93;</span> &nbsp;monodevelop<br />
&nbsp; <span style="color: #7a0874; font-weight: bold;">&#91;</span><span style="color: #000000;">27</span><span style="color: #7a0874; font-weight: bold;">&#93;</span> &nbsp;mtx<br />
&nbsp; <span style="color: #7a0874; font-weight: bold;">&#91;</span><span style="color: #000000;">28</span><span style="color: #7a0874; font-weight: bold;">&#93;</span> &nbsp;p4<br />
&nbsp; <span style="color: #7a0874; font-weight: bold;">&#91;</span><span style="color: #000000;">29</span><span style="color: #7a0874; font-weight: bold;">&#93;</span> &nbsp;povray<br />
&nbsp; <span style="color: #7a0874; font-weight: bold;">&#91;</span><span style="color: #000000;">30</span><span style="color: #7a0874; font-weight: bold;">&#93;</span> &nbsp;qdbus<br />
&nbsp; <span style="color: #7a0874; font-weight: bold;">&#91;</span><span style="color: #000000;">31</span><span style="color: #7a0874; font-weight: bold;">&#93;</span> &nbsp;ri<br />
&nbsp; <span style="color: #7a0874; font-weight: bold;">&#91;</span><span style="color: #000000;">32</span><span style="color: #7a0874; font-weight: bold;">&#93;</span> &nbsp;sbcl<br />
&nbsp; <span style="color: #7a0874; font-weight: bold;">&#91;</span><span style="color: #000000;">33</span><span style="color: #7a0874; font-weight: bold;">&#93;</span> &nbsp;siege<br />
&nbsp; <span style="color: #7a0874; font-weight: bold;">&#91;</span><span style="color: #000000;">34</span><span style="color: #7a0874; font-weight: bold;">&#93;</span> &nbsp;sitecopy<br />
&nbsp; <span style="color: #7a0874; font-weight: bold;">&#91;</span><span style="color: #000000;">35</span><span style="color: #7a0874; font-weight: bold;">&#93;</span> &nbsp;snownews<br />
&nbsp; <span style="color: #7a0874; font-weight: bold;">&#91;</span><span style="color: #000000;">36</span><span style="color: #7a0874; font-weight: bold;">&#93;</span> &nbsp;<span style="color: #c20cb9; font-weight: bold;">ssh</span><br />
&nbsp; <span style="color: #7a0874; font-weight: bold;">&#91;</span><span style="color: #000000;">37</span><span style="color: #7a0874; font-weight: bold;">&#93;</span> &nbsp;subversion<br />
&nbsp; <span style="color: #7a0874; font-weight: bold;">&#91;</span><span style="color: #000000;">38</span><span style="color: #7a0874; font-weight: bold;">&#93;</span> &nbsp;unace<br />
&nbsp; <span style="color: #7a0874; font-weight: bold;">&#91;</span><span style="color: #000000;">39</span><span style="color: #7a0874; font-weight: bold;">&#93;</span> &nbsp;unrar<br />
&nbsp; <span style="color: #7a0874; font-weight: bold;">&#91;</span><span style="color: #000000;">40</span><span style="color: #7a0874; font-weight: bold;">&#93;</span> &nbsp;<span style="color: #c20cb9; font-weight: bold;">vim</span><br />
&nbsp; <span style="color: #7a0874; font-weight: bold;">&#91;</span><span style="color: #000000;">41</span><span style="color: #7a0874; font-weight: bold;">&#93;</span> &nbsp;xxd</div></div>
<p>That shows my system is only enabling &#8220;gentoo&#8221; module.</p>
<p>The reason is the _filedir function is defined in the &#8220;base&#8221; module for bash completion but it is not enabled by default. The &#8220;vim&#8221; module calls _filedir which is undefined so that it leads to the error.</p>
<p>The solution is enabling &#8220;base&#8221; module as well:</p>
<div class="codecolorer-container bash default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="bash codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">eselect bashcomp <span style="color: #7a0874; font-weight: bold;">enable</span> base</div></div>
<p>Of course, enables &#8220;base&#8221; module globally:</p>
<div class="codecolorer-container bash default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="bash codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #c20cb9; font-weight: bold;">sudo</span> eselect bashcomp <span style="color: #7a0874; font-weight: bold;">enable</span> <span style="color: #660033;">--global</span> base</div></div>
<img src="http://weblog.pigfoot.org/pigfoot/?ak_action=api_record_view&id=465&type=feed" alt="" />]]></content:encoded>
			<wfw:commentRss>http://weblog.pigfoot.org/pigfoot/2009/03/13/vim-bash-_filedir-command-not-found/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>How to force setuid program to make a core dump?</title>
		<link>http://weblog.pigfoot.org/pigfoot/2007/09/09/how-to-force-setuid-program-to-make-a-core-dump/</link>
		<comments>http://weblog.pigfoot.org/pigfoot/2007/09/09/how-to-force-setuid-program-to-make-a-core-dump/#comments</comments>
		<pubDate>Sun, 09 Sep 2007 15:19:38 +0000</pubDate>
		<dc:creator>pigfoot</dc:creator>
				<category><![CDATA[C/C++]]></category>
		<category><![CDATA[Develop]]></category>
		<category><![CDATA[IT]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[Unix]]></category>

		<guid isPermaLink="false">http://weblog.pigfoot.org/pigfoot/2007/09/09/how-to-force-setuid-program-to-make-a-core-dump/</guid>
		<description><![CDATA[前一陣子上班時, Samuel 跑過來問: &#8220;咦? 你們之前寫某個 Server 的時候, 怎麼讓程式自己產生 Core dump 啊?&#8221; &#8220;就是用 setrlimit(2) 的啊!&#8221; &#8220;那幫我看一下為啥我照著那樣寫不會動..&#8221; 沒想到就開始了殘酷的惡夢~ 讓我們花費了不少工夫才發現為甚麼. 在 Linux 上, 預設是不會有 Core dump 的, 而要讓程式產生 Core dump 的方法就是利用 bash built-in 的 ulimit 指令. 我去年這篇 How to enlarge Coredump Size and File Descriptor Limitations 剛好也有寫到. 不過意外常常有, 所以除了讓 System administrator 設 ulimit -c unlimited 之外, 我自己也會在程式裡面利用 setrlimit(2) [...]]]></description>
			<content:encoded><![CDATA[<p>前一陣子上班時, Samuel 跑過來問:</p>
<p><em>&#8220;咦? 你們之前寫某個 Server 的時候, 怎麼讓程式自己產生 <a target="_blank" href="http://en.wikipedia.org/wiki/Core_dump">Core dump</a> 啊?&#8221;</p>
<p>&#8220;就是用 <a target="_blank" href="http://www.opengroup.org/onlinepubs/009695399/functions/getrlimit.html">setrlimit(2)</a> 的啊!&#8221;</p>
<p>&#8220;那幫我看一下為啥我照著那樣寫不會動..&#8221;</em></p>
<p>沒想到就開始了殘酷的惡夢~ 讓我們花費了不少工夫才發現為甚麼.</p>
<p>在 Linux 上, 預設是不會有 Core dump 的, 而要讓程式產生 Core dump 的方法就是利用 bash built-in 的 ulimit 指令. 我去年這篇 <a href="http://weblog.pigfoot.org/pigfoot/2006/08/25/how-to-enlarge-coredump-size-and-file-descriptor-limitations/">How to enlarge Coredump Size and File Descriptor Limitations</a> 剛好也有寫到. </p>
<p>不過意外常常有, 所以除了讓 System administrator 設 <strong>ulimit -c unlimited</strong> 之外, 我自己也會在程式裡面利用 setrlimit(2) 這隻 system call, 讓程式在執行時, 能夠不管 administrator 有沒有用 ulimit 設定 Core dump size, 保證一定會產生 Core dump. 在程式 <a target="_blank" href="http://en.wikipedia.org/wiki/Crash_%28computing%29">crash</a> 的時候, Core dump 是很重要線索啊! 就像 <a target="_blank" href="http://zh.wikipedia.org/wiki/CSI%E7%8A%AF%E7%BD%AA%E7%8F%BE%E5%A0%B4">CSI</a> 一樣, 讓證據會說話.</p>
<p>可是在看完 Samuel 的程式時, 我和他兩個就覺得很奇怪, 應該是會 work 才對, 因為同樣的 code 寫的程式已經在 production server 上跑了一段時間, 應該不會有問題才對, 這時候, 我才猛然想起來, 管機器的 administrator 曾說過有時候 Core dump 不會出現. <em>&#8220;God! 該不會就是同一個問題吧?&#8221;</em></p>
<p>和 Samuel 兩個人找完資料的答案, 就是寫這篇文章的動機了. 我們發現, 如果一個程式按照上面的方法都無法產生 Core dump, 那要看看這個程式是否是用了 <a target="_blank" href="http://www.opengroup.org/onlinepubs/000095399/functions/setuid.html">setuid(2)</a> 這個 System call. 我們發現, <strong>一個 <a target="_blank" href="http://www.opengroup.org/onlinepubs/000095399/functions/setuid.html">setuid(2)</a> 或 <a target="_blank" href="http://www.opengroup.org/onlinepubs/009695399/functions/seteuid.html">seteuid(2)</a> 過後的程式, 是沒有辦法產生 Core dump 的</strong>.</p>
<p>好巧不巧, 通常 Server 為了一些安全性的考量, 也會實作 setuid(2) 或 seteuid(2) 來達到 Running with Least Privilege (相對應 Windows 的指令就是 Run As). 也就是說, setuid(2) 一定是不能略過的. 解決方法有兩種.</p>
<p>第一種是只有這個程式有效. 用的方法就是 prctl(2). 這個方法是可以改 source, 然後 rebuild 的狀況下才能用. Sample code 如下:</p>
<div class="codecolorer-container c default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;height:300px;"><div class="c codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #339933;">#include &lt;stdio.h&gt;;</span><br />
<span style="color: #339933;">#include &lt;stdlib.h&gt;;</span><br />
<span style="color: #339933;">#include &lt;errno.h&gt;;</span><br />
<span style="color: #339933;">#include &lt;unistd.h&gt;;</span><br />
<span style="color: #339933;">#include &lt;pwd.h&gt;;</span><br />
<span style="color: #339933;">#include &lt;sys/resource.h&gt;;</span><br />
<span style="color: #339933;">#include &lt;sys/prctl.h&gt;;</span><br />
<br />
<span style="color: #339933;">#define SU_USER &quot;nobody&quot;</span><br />
<br />
<span style="color: #993333;">int</span> main<span style="color: #009900;">&#40;</span><span style="color: #993333;">void</span><span style="color: #009900;">&#41;</span><br />
<span style="color: #009900;">&#123;</span><br />
&nbsp; &nbsp; <span style="color: #993333;">struct</span> rlimit corelimit<span style="color: #339933;">;</span><br />
&nbsp; &nbsp; <span style="color: #993333;">struct</span> passwd <span style="color: #339933;">*</span>pw <span style="color: #339933;">=</span> NULL<span style="color: #339933;">;</span><br />
&nbsp; &nbsp; <span style="color: #993333;">char</span> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<span style="color: #339933;">*</span>cp <span style="color: #339933;">=</span> NULL<span style="color: #339933;">;</span><br />
<br />
&nbsp; &nbsp; <span style="color: #808080; font-style: italic;">/* if switch to nobody failed */</span><br />
&nbsp; &nbsp; <span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span>NULL <span style="color: #339933;">==</span> <span style="color: #009900;">&#40;</span>pw <span style="color: #339933;">=</span> getpwnam<span style="color: #009900;">&#40;</span>SU_USER<span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><br />
&nbsp; &nbsp; <span style="color: #009900;">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; fprintf<span style="color: #009900;">&#40;</span>stderr<span style="color: #339933;">,</span> <span style="color: #ff0000;">&quot;Cannot get uid from user(%s). Error: %s<span style="color: #000099; font-weight: bold;">\n</span>&quot;</span><span style="color: #339933;">,</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;SU_USER<span style="color: #339933;">,</span> strerror<span style="color: #009900;">&#40;</span>errno<span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #b1b100;">return</span> <span style="color: #339933;">-</span><span style="color: #0000dd;">1</span><span style="color: #339933;">;</span><br />
&nbsp; &nbsp; <span style="color: #009900;">&#125;</span><br />
<br />
&nbsp; &nbsp; <span style="color: #808080; font-style: italic;">/* try to switch to nobody */</span><br />
&nbsp; &nbsp; <span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span><span style="color: #009900;">&#40;</span>setuid<span style="color: #009900;">&#40;</span>pw<span style="color: #339933;">-&gt;</span>pw_uid<span style="color: #009900;">&#41;</span> <span style="color: #339933;">&lt;</span> <span style="color: #0000dd;">0</span><span style="color: #009900;">&#41;</span> <span style="color: #339933;">||</span> <span style="color: #009900;">&#40;</span>seteuid<span style="color: #009900;">&#40;</span>pw<span style="color: #339933;">-&gt;</span>pw_uid<span style="color: #009900;">&#41;</span> <span style="color: #339933;">&lt;</span> <span style="color: #0000dd;">0</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><br />
&nbsp; &nbsp; <span style="color: #009900;">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; fprintf<span style="color: #009900;">&#40;</span>stderr<span style="color: #339933;">,</span> <span style="color: #ff0000;">&quot;Cannot switch to user(%s). Error: %s<span style="color: #000099; font-weight: bold;">\n</span>&quot;</span><span style="color: #339933;">,</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;SU_USER<span style="color: #339933;">,</span> strerror<span style="color: #009900;">&#40;</span>errno<span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #b1b100;">return</span> <span style="color: #339933;">-</span><span style="color: #0000dd;">2</span><span style="color: #339933;">;</span><br />
&nbsp; &nbsp; <span style="color: #009900;">&#125;</span><br />
<br />
&nbsp; &nbsp; <span style="color: #808080; font-style: italic;">/* force to make coredump */</span><br />
&nbsp; &nbsp; <span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span>prctl<span style="color: #009900;">&#40;</span>PR_SET_DUMPABLE<span style="color: #339933;">,</span> <span style="color: #0000dd;">1</span><span style="color: #009900;">&#41;</span> <span style="color: #339933;">&lt;</span> <span style="color: #0000dd;">0</span><span style="color: #009900;">&#41;</span><br />
&nbsp; &nbsp; <span style="color: #009900;">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; fprintf<span style="color: #009900;">&#40;</span>stderr<span style="color: #339933;">,</span> <span style="color: #ff0000;">&quot;Cannot enable core dumping. Error: %s<span style="color: #000099; font-weight: bold;">\n</span>&quot;</span><span style="color: #339933;">,</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;strerror<span style="color: #009900;">&#40;</span>errno<span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #b1b100;">return</span> <span style="color: #339933;">-</span><span style="color: #0000dd;">3</span><span style="color: #339933;">;</span><br />
&nbsp; &nbsp; <span style="color: #009900;">&#125;</span><br />
<br />
&nbsp; &nbsp; <span style="color: #808080; font-style: italic;">/* set core size to unlimited */</span><br />
&nbsp; &nbsp; corelimit.<span style="color: #202020;">rlim_cur</span> <span style="color: #339933;">=</span> RLIM_INFINITY<span style="color: #339933;">;</span><br />
&nbsp; &nbsp; corelimit.<span style="color: #202020;">rlim_max</span> <span style="color: #339933;">=</span> RLIM_INFINITY<span style="color: #339933;">;</span><br />
&nbsp; &nbsp; <span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span>setrlimit<span style="color: #009900;">&#40;</span>RLIMIT_CORE<span style="color: #339933;">,</span> <span style="color: #339933;">&amp;</span>amp<span style="color: #339933;">;</span>corelimit<span style="color: #009900;">&#41;</span> <span style="color: #339933;">&lt;</span> <span style="color: #0000dd;">0</span><span style="color: #009900;">&#41;</span><br />
&nbsp; &nbsp; <span style="color: #009900;">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; fprintf<span style="color: #009900;">&#40;</span>stderr<span style="color: #339933;">,</span> <span style="color: #ff0000;">&quot;Setrlimit failed! Error: %s<span style="color: #000099; font-weight: bold;">\n</span>&quot;</span><span style="color: #339933;">,</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;strerror<span style="color: #009900;">&#40;</span>errno<span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #b1b100;">return</span> <span style="color: #339933;">-</span><span style="color: #0000dd;">4</span><span style="color: #339933;">;</span><br />
&nbsp; &nbsp; <span style="color: #009900;">&#125;</span><br />
<br />
&nbsp; &nbsp; <span style="color: #808080; font-style: italic;">/* force to coredump */</span><br />
&nbsp; &nbsp; <span style="color: #339933;">*</span>cp <span style="color: #339933;">=</span> <span style="color: #ff0000;">'1'</span><span style="color: #339933;">;</span><br />
<br />
&nbsp; &nbsp; <span style="color: #b1b100;">return</span> <span style="color: #0000dd;">0</span><span style="color: #339933;">;</span><br />
<span style="color: #009900;">&#125;</span></div></div>
<p>這種方法要注意的事情有:</p>
<ul>
<li><strong>一定要用 root 執行.</strong><br />
setuid 然後讓一般 user 去執行的方法不行.<br />
(e.g. sudo chown root a.out; sudo chgrp root a.out; sudo chmod 4755 a.out)</li>
<li><strong>因為 Core dump 產生的目錄和執行檔在同一個目錄下, 這個目錄的權限一定要是 root 這個 user, root 這個 group 同時都可以寫入才行. 要注意這個 case, 不要把 root 當成是 super-user, 而是要當作 regular user.</strong><br />
比方說, (drwxrwxr-x, root root) 和 (drwxrwxrwx, nobody nogroup) 可以, 但是 (drwxr-xr-x root root) 和 (drwxrwxr-x root nogroup) 都不行. 很弔詭吧! 我也不知道為甚麼~</li>
<p>第二種方法是 system-wide 的, 也就是會影響到所有在系統執行的程式. 方法就是 <strong>/proc/sys/fs/suid_dumpable</strong>. 因為這個和  kernel 的版本有關, 請 man 5 proc 比較保險. 這是在無法動 source code, 而且原程式沒有用 prctl(2) 情況下的殺手鐧.</p>
<p>要注意的事情和第一種方法一樣, 把 /proc/sys/fs/suid_dumpable 設成 1 或 2 的差別, 是會決定 core dump file 的擁有者. 如果設成 1, 就會和第一種方法一樣是被 switch 的 owner (本例是 nobody). 如果設 2 就一定是 root, 但是這個似乎要 kernel 2.6.13 以上才有 support? 我不是很確定.</p>
<p>希望這篇文章給大家當作個參考囉!</p>
<p>PS: 這篇竟然寫了快二個周末, 真是夠久的~</ul>
<p></sys></pwd></unistd></errno></stdlib></stdio></code></p>
<img src="http://weblog.pigfoot.org/pigfoot/?ak_action=api_record_view&id=423&type=feed" alt="" />]]></content:encoded>
			<wfw:commentRss>http://weblog.pigfoot.org/pigfoot/2007/09/09/how-to-force-setuid-program-to-make-a-core-dump/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>apache2: error while loading shared libraries: libexpat.so.0</title>
		<link>http://weblog.pigfoot.org/pigfoot/2007/08/13/apache2-error-while-loading-shared-libraries-libexpatso0/</link>
		<comments>http://weblog.pigfoot.org/pigfoot/2007/08/13/apache2-error-while-loading-shared-libraries-libexpatso0/#comments</comments>
		<pubDate>Sun, 12 Aug 2007 17:29:58 +0000</pubDate>
		<dc:creator>pigfoot</dc:creator>
				<category><![CDATA[Gentoo]]></category>
		<category><![CDATA[IT]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[Unix]]></category>

		<guid isPermaLink="false">http://weblog.pigfoot.org/pigfoot/2007/08/13/apache2-error-while-loading-shared-libraries-libexpatso0/</guid>
		<description><![CDATA[今天更新 Gentoo Linux 時, 在 sudo emerge -uvDNat world 之後, 發現 php-5.2.3 升到 php-5.2.4_pre200708051230, 然後 expat-1.95.8 升到 expat-2.0.1, 當下暗暗感覺不妙, 果不其然, 升級完之後 apache 就不會動了, 比方說執行 sudo /etc/init.d/apache2 stop 時, 會出現: sojia [~] -pigfoot- sudo /etc/init.d/apache2 stop /usr/sbin/apache2: error while loading shared libraries: libexpat.so.0: cannot open shared object file: No such file or directory 果然, 因為 expat-1.95.8 [...]]]></description>
			<content:encoded><![CDATA[<p>今天更新 <a target="_blank" href="http://www.gentoo.org/">Gentoo Linux</a> 時, 在 sudo emerge -uvDNat world 之後, 發現 php-5.2.3 升到 php-5.2.4_pre200708051230, 然後 expat-1.95.8 升到  expat-2.0.1, 當下暗暗感覺不妙, 果不其然, 升級完之後 apache 就不會動了, 比方說執行 sudo /etc/init.d/apache2 stop 時, 會出現:</p>
<div class="codecolorer-container text default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">sojia [~] -pigfoot- sudo /etc/init.d/apache2 stop<br />
/usr/sbin/apache2: error while loading shared libraries: libexpat.so.0: cannot open shared object file: No such file or directory</div></div>
<p>果然, 因為 expat-1.95.8 的是編出來的 libexpat.so.0, expat-2.0.1 會編出 libexpat.so.1. 我試著 rebuild apache 結果也一樣不行.</p>
<p>正確答案要這樣:</p>
<div class="codecolorer-container text default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">sojia [~] -pigfoot- sudo revdep-rebuild</div></div>
<p>就是把系統中, 會用到 libexpat 的套件都 rebuild 之後才會動. 給大家作個參考.</p>
<img src="http://weblog.pigfoot.org/pigfoot/?ak_action=api_record_view&id=422&type=feed" alt="" />]]></content:encoded>
			<wfw:commentRss>http://weblog.pigfoot.org/pigfoot/2007/08/13/apache2-error-while-loading-shared-libraries-libexpatso0/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>UltraSPARC T2 (Niagara 2) Processor: world class crypto performance</title>
		<link>http://weblog.pigfoot.org/pigfoot/2007/08/13/ultrasparc-t2-niagara-2-processor-world-class-crypto-performance/</link>
		<comments>http://weblog.pigfoot.org/pigfoot/2007/08/13/ultrasparc-t2-niagara-2-processor-world-class-crypto-performance/#comments</comments>
		<pubDate>Sun, 12 Aug 2007 16:05:42 +0000</pubDate>
		<dc:creator>pigfoot</dc:creator>
				<category><![CDATA[IT]]></category>
		<category><![CDATA[Sun]]></category>

		<guid isPermaLink="false">http://weblog.pigfoot.org/pigfoot/2007/08/13/ultrasparc-t2-niagara-2-processor-world-class-crypto-performance/</guid>
		<description><![CDATA[上個禮拜, Sun 終於拿出殺手級的 processor : UltraSPARC T2 (Niagara 2)! 除了把從 T1 的 32 threads per processor (8 cores, 4 threads/core), 加到 64 threads per processor (8 cores, 8 threads/core) 之外, 最令人在意的是 &#8220;Zero Cost&#8221; Security 這個 feature. 一般大家不作一些 security 保護的理由不外乎是速度慢, 尤其是在 web server 的 implementation, 作了之後對 throughput 影響非常明顯, 所以在 T2 中, 他們加了一個 cryptographic unit, 也就是說可以利用這個硬體來完成一些費時的 security [...]]]></description>
			<content:encoded><![CDATA[<p><a target="_blank" href="http://www.flickr.com/photo.gne?id=1099551524" title="Niagara 2"><img src="http://static.flickr.com/1353/1099551524_fb81f4e30f.jpg" title="Niagara 2" alt="Niagara 2" width="500" height="101" /></a></p>
<p>上個禮拜, <a target="_blank" href="http://www.sun.com/">Sun</a> 終於拿出殺手級的 processor : <strong><a target="_blank" href="http://www.sun.com/processors/UltraSPARC-T2/">UltraSPARC T2</a> (Niagara 2)</strong>!</p>
<p>除了把從 <a target="_blank" href="http://www.sun.com/processors/UltraSPARC-T1/">T1</a> 的 32 threads per processor (8 cores, 4 threads/core), 加到 64 threads per processor (8 cores, 8 threads/core) 之外, 最令人在意的是 <strong>&#8220;Zero Cost&#8221; Security</strong> 這個 feature.</p>
<p>一般大家不作一些 security 保護的理由不外乎是速度慢, 尤其是在 web server 的 implementation, 作了之後對 throughput 影響非常明顯, 所以在 T2 中, 他們加了一個 cryptographic unit, 也就是說可以利用這個硬體來完成一些費時的 security function.</p>
<p>本來以為作了 DES, 3DES, AES, MD5, SHA-1 就了不起了, 但是在 2007/07/08 的<a target="_blank" href="http://www.sun.com/featured-articles/2007-0807/feature/">新聞</a>中, 聽到 Sun Staff Engineer Dr. <a target="_blank" href="http://frsun.downloads.edgesuite.net/sun/08A01108/08A01108_01.mp3">Lawrence Spracklen 的 talk</a>, T2 support 的有:</p>
<ul>Public-key</p>
<li><a target="_blank" href="http://en.wikipedia.org/wiki/RSA">RSA</a></li>
<li><a target="_blank" href="http://en.wikipedia.org/wiki/Digital_Signature_Algorithm">DSA</a></li>
</ul>
<ul>Bulk Cipher</p>
<li><a target="_blank" href="http://en.wikipedia.org/wiki/RC4">RC4</a></li>
<li><a target="_blank" href="http://en.wikipedia.org/wiki/Data_Encryption_Standard">DES</a></li>
<li><a target="_blank" href="http://en.wikipedia.org/wiki/3DES">3DES</a></li>
<li><a target="_blank" href="http://en.wikipedia.org/wiki/Advanced_Encryption_Standard">AES-128</a></li>
<li>AES-192</li>
<li>AES-256</li>
</ul>
<ul>Secure Hash</p>
<li><a target="_blank" href="http://en.wikipedia.org/wiki/MD5">MD5</a></li>
<li><a target="_blank" href="http://en.wikipedia.org/wiki/SHA_hash_functions">SHA-1</a></li>
<li>SHA-256</li>
</ul>
<p>後來在他的 blog (<a target="_blank" href="http://blogs.sun.com/sprack/">Lawrence Spracklen&#8217;s Blog</a>) 中, 看到他寫的這篇 <a target="_blank" href="http://blogs.sun.com/sprack/entry/ultrasparc_t2_crypto_performance">UltraSPARC T2 Crypto performance</a>. 看起來還蠻不賴的啊~</p>
<p>接著我猜會有強者利用這些硬體作出 T2 的 SSL. 好期待測出來的數字啊~</p>
<p>PS: <a target="_blank" href="http://catalog.sun.com/productfamily.xml?site=US_USA&#038;catalogue=FC&#038;segment=FC_R&#038;item=FC_SC_CAT&#038;group=2010&#038;fid=5150&#038;id=5150">這裡是</a>用 UltraSPARC T1 CPU 的 T1000 和 T2000 的價錢, 不知道搭配 T2 的 Server 會賣多少錢 XD</p>
<img src="http://weblog.pigfoot.org/pigfoot/?ak_action=api_record_view&id=421&type=feed" alt="" />]]></content:encoded>
			<wfw:commentRss>http://weblog.pigfoot.org/pigfoot/2007/08/13/ultrasparc-t2-niagara-2-processor-world-class-crypto-performance/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
<enclosure url="http://frsun.downloads.edgesuite.net/sun/08A01108/08A01108_01.mp3" length="4146235" type="audio/mpeg" />
		</item>
		<item>
		<title>What&#8217;s the maximum value of backlog argument in listen(2) system call?</title>
		<link>http://weblog.pigfoot.org/pigfoot/2007/07/05/whats-the-maximum-value-of-backlog-argument-in-listen2-system-call/</link>
		<comments>http://weblog.pigfoot.org/pigfoot/2007/07/05/whats-the-maximum-value-of-backlog-argument-in-listen2-system-call/#comments</comments>
		<pubDate>Thu, 05 Jul 2007 05:47:47 +0000</pubDate>
		<dc:creator>pigfoot</dc:creator>
				<category><![CDATA[C/C++]]></category>
		<category><![CDATA[Develop]]></category>
		<category><![CDATA[FreeBSD]]></category>
		<category><![CDATA[IT]]></category>
		<category><![CDATA[Kernel]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[Unix]]></category>

		<guid isPermaLink="false">http://weblog.pigfoot.org/pigfoot/2007/07/05/whats-the-maximum-value-of-backlog-argument-in-listen2-system-call/</guid>
		<description><![CDATA[When we write a network server program, I think lots of system calls have their own explicit parameters like socket(), bind(), accept(). But it&#8217;s very interesting when we use this system call listen(). Let&#8217;s see its prototype: int listen(int sockfd, int backlog); Yes, it&#8217;s very obvious that the first parameter is the socket fd. But, [...]]]></description>
			<content:encoded><![CDATA[<p>When we write a network server program, I think lots of system calls have their own explicit parameters like socket(), bind(), accept(). But it&#8217;s very interesting when we use this system call listen(). Let&#8217;s see its prototype:</p>
<div class="codecolorer-container text default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">int listen(int sockfd, int backlog);</div></div>
<p>Yes, it&#8217;s very obvious that the first parameter is the socket fd. But, what&#8217;s the meaning of backlog number? Some body would tell us like manpage LISTEN(2) says: &#8220;<em>The backlog parameter defines the maximum length the queue of pending connections may grow to. If a connection request arrives with the queue full the client may receive an error with an indication of ECONNREFUSED or, if the underlying protocol supports retransmission, the request may be ignored so that retries succeed.</em>&#8221;</p>
<p>From a robust server&#8217;s perspective, what&#8217;s the maximum value it should be assign? At first, I assigned very large number like 1,024 (of course, listen system call still returns successfully). After saw the manpage LISTEN(2) in <a target="_blank" href="http://en.wikipedia.org/wiki/Linux">Linux</a>, I was wrong..</p>
<div class="codecolorer-container text default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">If the socket is of type AF_INET, and the backlog argument is greater than the constant SOMAXCONN (128 in Linux 2.0 &amp; 2.2), it is silently truncated to SOMAXCONN.</div></div>
<p>It doesn&#8217;t mention kernel 2.6. But it&#8217;s fine. Let&#8217;s investigate into Linux kernel source code.</p>
<p>In Linux kernel 2.6.20.1, we can see the listen system call implementation in <a target="_blank" href="http://lxr.linux.no/source/net/socket.c#L1304">net/socket.c line 1306</a>. As it shows, the maximum number of backlog cannot be large than sysctl_somaxconn, which is assigned to SOMAXCONN. Furthermore, SOMAXCONN is defined 128 in <a target="_blank" href="http://lxr.linux.no/source/include/linux/socket.h#L226">include/linux/socket.h line 226</a>.</p>
<p>In my opinion, in Linux 2.0 to 2.6, this means backlog cannot exceed 128 by default, or it would be truncated to SOMAXCONN silently like the manpage says.</p>
<p>How about <a target="_blank" href="http://en.wikipedia.org/wiki/FreeBSD">FreeBSD</a>? We can see the note of manpage LISTEN(2) in FreeBSD 6:</p>
<div class="codecolorer-container text default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">The listen() system call appeared in 4.2BSD. The ability to configure the maximum backlog at run-time, and to use a negative backlog to request the maximum allowable value, was introduced in FreeBSD 2.2.</div></div>
<p>I&#8217;m not very familiar with FreeBSD kernel, but let me try to trace. The start point is to check <a target="_blank" href="http://www.freebsd.org/cgi/cvsweb.cgi/src/sys/kern/uipc_syscalls.c?only_with_tag=RELENG_6">sys/kern/uipc_syscalls.c</a> of cvstag RELENG_6 in FreeBSD. We can see listen system call will invoke <em>solisten(so, uap->backlog, td)</em>. Thus, we go to <a target="_blank" href="http://www.freebsd.org/cgi/cvsweb.cgi/src/sys/kern/uipc_socket.c?only_with_tag=RELENG_6">sys/kern/uipc_socket.c</a> now to see the implementation of <em>solisten(struct socket *so, int backlog, struct thread *td)</em>. The same, the maximum value is somaxconn which is assigned to SOMAXCONN by default. Finally, we can see the value is defined in <a target="_blank" href="http://www.freebsd.org/cgi/cvsweb.cgi/src/sys/sys/socket.h?only_with_tag=RELENG_6">sys/sys/socket.h</a>. The value is the same as Linux &#8212; 128.</p>
<p><strong>To put it another way, if you&#8217;re writing a server program in either Linux or FreeBSD platform, it&#8217;s very appropriate to assign the value of backlog to 128. in FreeBSD, however, you can assign a negative backlog to request the maximum allowable value.</strong></p>
<p>You may ask what&#8217;s the value of backlog in popular modern server? Let&#8217;s check the source of <a target="_blank" href="http://en.wikipedia.org/wiki/Apache_HTTP_Server">Apache HTTP Server</a>. As you see in <a target="_blank" href="http://svn.apache.org/viewvc/httpd/httpd/trunk/server/listen.c?view=markup">/server/listen.c</a>, ap_listenbacklog is assigned to DEFAULT_LISTENBACKLOG which is defined 511 in <a target="_blank" href="http://svn.apache.org/viewvc/httpd/httpd/trunk/include/mpm_common.h?view=markup">/include/mpm_common.h</a>.</p>
<img src="http://weblog.pigfoot.org/pigfoot/?ak_action=api_record_view&id=416&type=feed" alt="" />]]></content:encoded>
			<wfw:commentRss>http://weblog.pigfoot.org/pigfoot/2007/07/05/whats-the-maximum-value-of-backlog-argument-in-listen2-system-call/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Updated UltraSPARC-T1 tuning guide available</title>
		<link>http://weblog.pigfoot.org/pigfoot/2007/01/31/updated-ultrasparc-t1-tuning-guide-available/</link>
		<comments>http://weblog.pigfoot.org/pigfoot/2007/01/31/updated-ultrasparc-t1-tuning-guide-available/#comments</comments>
		<pubDate>Wed, 31 Jan 2007 05:40:41 +0000</pubDate>
		<dc:creator>pigfoot</dc:creator>
				<category><![CDATA[Develop]]></category>
		<category><![CDATA[IT]]></category>
		<category><![CDATA[Sun]]></category>
		<category><![CDATA[Unix]]></category>

		<guid isPermaLink="false">http://weblog.pigfoot.org/pigfoot/2007/01/31/updated-ultrasparc-t1-tuning-guide-available/</guid>
		<description><![CDATA[According to Darryl Gove&#8217;s post yesterday, the UltraSPARC-T1 tuning guide has been updated to include information about the Cool Tools.]]></description>
			<content:encoded><![CDATA[<p>According to Darryl Gove&#8217;s <a target="_blank" href="http://blogs.sun.com/d/entry/updated_ultrasparc_t1_tuning_guide">post</a> yesterday, the <a href="http://www.sun.com/blueprints/1205/819-5144.pdf">UltraSPARC-T1 tuning guide</a> has been updated to include information about the Cool Tools.</p>
<img src="http://weblog.pigfoot.org/pigfoot/?ak_action=api_record_view&id=405&type=feed" alt="" />]]></content:encoded>
			<wfw:commentRss>http://weblog.pigfoot.org/pigfoot/2007/01/31/updated-ultrasparc-t1-tuning-guide-available/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>HEADS UP: FreeBSD 4.11, 6.0 EoLs coming soon</title>
		<link>http://weblog.pigfoot.org/pigfoot/2007/01/08/heads-up-freebsd-411-60-eols-coming-soon/</link>
		<comments>http://weblog.pigfoot.org/pigfoot/2007/01/08/heads-up-freebsd-411-60-eols-coming-soon/#comments</comments>
		<pubDate>Mon, 08 Jan 2007 01:28:23 +0000</pubDate>
		<dc:creator>pigfoot</dc:creator>
				<category><![CDATA[FreeBSD]]></category>
		<category><![CDATA[IT]]></category>
		<category><![CDATA[Unix]]></category>

		<guid isPermaLink="false">http://weblog.pigfoot.org/pigfoot/2007/01/08/heads-up-freebsd-411-60-eols-coming-soon/</guid>
		<description><![CDATA[從金山大長輩 tjs 在 CDPA 板上 post 知道的. On January 31st, FreeBSD 4.11 and FreeBSD 6.0 will have reached their End of Life dates and will no longer be supported by the FreeBSD Security Team. Users of either of these FreeBSD releases are strongly encouraged to upgrade to FreeBSD 5.5, FreeBSD 6.1, or the upcoming FreeBSD [...]]]></description>
			<content:encoded><![CDATA[<p><a target="_blank" href="http://www.freebsd.org/"><img border="0" align="right" alt="Get FreeBSD!" title="Get FreeBSD!" src="http://www.freebsd.org/logo/logo-full-thumb.png" /></a></p>
<p>從金山大長輩 <a target="_blank" href="http://portsmon.freebsd.org/portsconcordanceformaintainer.py?maintainer=tjs%40cdpa.nsysu.edu.tw">tjs</a> 在 <a href="telnet://bbs.cdpa.nsysu.edu.tw/">CDPA</a> 板上 post <a target="_blank" href="http://lists.freebsd.org/pipermail/freebsd-security/2007-January/004199.html">知道</a>的.</p>
<p>On January 31st, <a target="_blank" href="http://www.freebsd.org/">FreeBSD</a> 4.11 and FreeBSD 6.0 will have reached their End of Life dates and will no longer be supported by the <a target="_blank" href="http://www.freebsd.org/security/">FreeBSD Security Team</a>.</p>
<p>Users of either of these FreeBSD releases are strongly encouraged to upgrade to FreeBSD 5.5, FreeBSD 6.1, or the upcoming FreeBSD 6.2 before that date.</p>
<table width="100%" cellspacing="1" cellpadding="5" border="0" bgcolor="#bbbbbb">
<tbody>
<tr bgcolor="#f1f1f1">
<th>Branch</th>
<th>Release</th>
<th>Type</th>
<th>Release date</th>
<th>Estimated EoL</th>
</tr>
<tr bgcolor="#ffffff">
<td>RELENG_4</td>
<td>N/A</td>
<td>N/A</td>
<td>N/A</td>
<td>January 31, 2007</td>
</tr>
<tr bgcolor="#ffffff">
<td>RELENG_4_11</td>
<td>4.11-RELEASE</td>
<td>Extended</td>
<td>January 25, 2005</td>
<td>January 31, 2007</td>
</tr>
<tr bgcolor="#ffffff">
<td>RELENG_5</td>
<td>N/A</td>
<td>N/A</td>
<td>N/A</td>
<td>May 31, 2008</td>
</tr>
<tr bgcolor="#ffffff">
<td>RELENG_5_5</td>
<td>5.5-RELEASE</td>
<td>Extended</td>
<td>May 25, 2006</td>
<td>May 31, 2008</td>
</tr>
<tr bgcolor="#ffffff">
<td>RELENG_6</td>
<td>N/A</td>
<td>N/A</td>
<td>N/A</td>
<td>last release + 2y</td>
</tr>
<tr bgcolor="#ffffff">
<td>RELENG_6_0</td>
<td>6.0-RELEASE</td>
<td>Normal</td>
<td>November 4, 2005</td>
<td>January 31, 2007</td>
</tr>
<tr bgcolor="#ffffff">
<td>RELENG_6_1</td>
<td>6.1-RELEASE</td>
<td>Extended</td>
<td>May 9, 2006</td>
<td>May 31, 2008</td>
</tr>
</tbody>
</table>
<img src="http://weblog.pigfoot.org/pigfoot/?ak_action=api_record_view&id=401&type=feed" alt="" />]]></content:encoded>
			<wfw:commentRss>http://weblog.pigfoot.org/pigfoot/2007/01/08/heads-up-freebsd-411-60-eols-coming-soon/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>ngrep &#8211; network grep</title>
		<link>http://weblog.pigfoot.org/pigfoot/2006/12/24/ngrep-network-grep/</link>
		<comments>http://weblog.pigfoot.org/pigfoot/2006/12/24/ngrep-network-grep/#comments</comments>
		<pubDate>Sun, 24 Dec 2006 08:56:12 +0000</pubDate>
		<dc:creator>pigfoot</dc:creator>
				<category><![CDATA[Gentoo]]></category>
		<category><![CDATA[IT]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[Unix]]></category>

		<guid isPermaLink="false">http://weblog.pigfoot.org/pigfoot/2006/12/24/ngrep-network-grep/</guid>
		<description><![CDATA[When I read the portage log of Gentoo Linux, I saw a interesting software called ngrep &#8211; network grep (net-analyzer/ngrep). Here is the description from official site: ngrep strives to provide most of GNU grep&#8217;s common features, applying them to the network layer. ngrep is a pcap-aware tool that will allow you to specify extended [...]]]></description>
			<content:encoded><![CDATA[<p>When I read the <a target="_blank" href="http://gentoo-portage.com/">portage log</a> of <a target="_blank" href="http://www.gentoo.org/">Gentoo Linux</a>, I saw a interesting software called <a target="_blank" href="http://ngrep.sourceforge.net/">ngrep</a> &#8211; network grep (net-analyzer/ngrep). Here is the description from official site:</p>
<blockquote><p>ngrep strives to provide most of GNU grep&#8217;s common features,   applying them to the network layer.</p>
<p>ngrep is a pcap-aware tool that   will allow you to specify extended regular or hexadecimal expressions to match against data payloads of packets.</p>
<p>It currently   recognizes IPv4/6, TCP, UDP, ICMPv4/6, IGMP and Raw across Ethernet, PPP, SLIP, FDDI, Token Ring and null interfaces, and understands BPF filter logic in the same fashion as more common packet sniffing tools, such as tcpdump and snoop.</p></blockquote>
<p>We can visit the <a target="_blank" href="http://ngrep.sourceforge.net/usage.html">Usage Section</a> and learn more about how ngrep works and can be leveraged to see all sorts of neat things.</p>
<p><strong>Example: Debugging HTTP interactions:</strong></p>
<div class="codecolorer-container text default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;height:300px;"><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"># ngrep -W byline port 80<br />
interface: eth0 (10.1.1.10/255.255.252.0)<br />
filter: ip and ( port 80 )<br />
####<br />
T 10.1.1.10:42177 -&gt; 64.90.164.74:80 [AP]<br />
GET / HTTP/1.1.<br />
User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; X11; Linux i686) Opera ...<br />
Host: www.darkridge.com.<br />
Accept: text/html, application/xml;q=0.9, application/xhtml+xml;q=0.9 ...<br />
Accept-Charset: iso-8859-1, utf-8, utf-16, *;q=0.1.<br />
Accept-Encoding: deflate, gzip, x-gzip, identity, *;q=0.<br />
Cookie: SQMSESSID=5272f9ae21c07eca4dfd75f9a3cda22e.<br />
Cookie2: $Version=1.<br />
Cache-Control: no-cache.<br />
Connection: Keep-Alive, TE.<br />
TE: deflate, gzip, chunked, identity, trailers.<br />
.<br />
##<br />
T 64.90.164.74:80 -&gt; 10.1.1.10:42177 [AP]<br />
HTTP/1.1 200 OK.<br />
Date: Mon, 29 Mar 2004 00:47:25 GMT.<br />
Server: Apache/2.0.49 (Unix).<br />
Last-Modified: Tue, 04 Nov 2003 12:09:41 GMT.<br />
ETag: &quot;210e23-326-f8200b40&quot;.<br />
Accept-Ranges: bytes.<br />
Vary: Accept-Encoding,User-Agent.<br />
Content-Encoding: gzip.<br />
Content-Length: 476.<br />
Keep-Alive: timeout=15, max=100.<br />
Connection: Keep-Alive.<br />
Content-Type: text/html; charset=ISO-8859-1.<br />
Content-Language: en.<br />
.<br />
..........}S]..0.|...........H...8........@..\....(.....Dw.%.,..;.k.. ...<br />
.;kw*U.j.&lt; ...\0Tn.l.:......&gt;Fs....'....h.'...u.H4..'.6.vIDI.......N.r ...<br />
..H..#..J....u.?..]....^..2.....e8v/gP.....].48...qD!..........#y...m ...<br />
####</div></div>
<img src="http://weblog.pigfoot.org/pigfoot/?ak_action=api_record_view&id=398&type=feed" alt="" />]]></content:encoded>
			<wfw:commentRss>http://weblog.pigfoot.org/pigfoot/2006/12/24/ngrep-network-grep/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Another GPL win in Germany</title>
		<link>http://weblog.pigfoot.org/pigfoot/2006/09/27/another-gpl-win-in-germany/</link>
		<comments>http://weblog.pigfoot.org/pigfoot/2006/09/27/another-gpl-win-in-germany/#comments</comments>
		<pubDate>Wed, 27 Sep 2006 03:26:41 +0000</pubDate>
		<dc:creator>pigfoot</dc:creator>
				<category><![CDATA[IT]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[Unix]]></category>

		<guid isPermaLink="false">http://weblog.pigfoot.org/pigfoot/2006/09/27/another-gpl-win-in-germany/</guid>
		<description><![CDATA[Another GPL win in Germany, from LWN. The gpl-violations.org project has announced that it has won a court case against D-Link in Germany. On September 6, 2006 the district court issued its judgement, confirming the claims by gpl-violations.org, specifically its rights on the subject-matter source code, the violation of the GNU GPL by D-Link, the [...]]]></description>
			<content:encoded><![CDATA[<p><a target="_blank" href="http://gpl-violations.org/news/20060922-dlink-judgement_frankfurt.html">Another GPL win in Germany</a>, from <a target="_blank" href="http://lwn.net/Articles/200438">LWN</a>.</p>
<p>The <a target="_blank" href="http://gpl-violations.org/">gpl-violations.org</a> project has <a href="http://gpl-violations.org/news/20060922-dlink-judgement_frankfurt.html">announced</a> that it has won a court case against <a target="_blank" href="http://www.dlink.com/">D-Link</a> in Germany.</p>
<blockquote><p>On September 6, 2006 the district court issued its judgement, confirming the claims by gpl-violations.org, specifically its rights on the subject-matter source code, the violation of the GNU GPL by D-Link, the validity of the GPL under German law, and D-Link&#8217;s obligation to reimburse gpl-violations.org for legal expenses, test purchase and cost of re-engineering.</p>
<p>D-Link Germany GmbH, a subsidiary of D-Link Corporation, Taiwan R.O.C., distributed <a target="_blank" href="http://www.dlink.com/products/?pid=377&#038;sec=0">DSM-G600</a>, a <a target="_blank" href="http://en.wikipedia.org/wiki/Network_Attached_Storage">network attached storage</a> (NAS) device which uses a Linux-based Operating System.</p>
<p>However, this distribution was incompliant with the <a target="_blank" href="http://en.wikipedia.org/wiki/GPL">GNU General Public License</a> (GPL) which covers the Linux Kernel and many other software programs used in the product.</p></blockquote>
<img src="http://weblog.pigfoot.org/pigfoot/?ak_action=api_record_view&id=378&type=feed" alt="" />]]></content:encoded>
			<wfw:commentRss>http://weblog.pigfoot.org/pigfoot/2006/09/27/another-gpl-win-in-germany/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
