<?xml version="1.0" encoding="gb2312"?>
<rss version="2.0">
<channel>
<title><![CDATA[枪炮与玫瑰 axlrose]]></title>
        <image>
        <title>http://hi.baidu.com</title>
        <link>http://hi.baidu.com</link>
        <url>http://img.baidu.com/img/logo-hi.gif</url>
        </image>
<description><![CDATA[linux 嵌入式 音乐]]></description>
<link>http://hi.baidu.com/3444542</link>
<language>zh-cn</language>
<generator>www.baidu.com</generator>
<ttl>5</ttl>


<item>
        <title><![CDATA[在安装FreeBSD7.2的时候碰到了以下错误[转]]]></title>
        <link><![CDATA[http://hi.baidu.com/3444542/blog/item/df00521184fb911ab8127b79.html]]></link>
        <description><![CDATA[
		
		<div class="cnt">
<p><a href="http://hi.baidu.com/woaimuxiaoyizhong/blog/item/4b55a138c1fa67f8b211c7aa.html" target="_blank">http://hi.baidu.com/woaimuxiaoyizhong/blog/item/4b55a138c1fa67f8b211c7aa.html</a></p>
<p>在安装FreeBSD7.2的时候碰到了以下错误：</p>
<p>WARNING: It is safe to use a geometry of 310101/16/63 for ad4 on<br>
computers with modern BIOS versions. If this disk is to be used<br>
on rather old machines, however, it is recommended to ensure that<br>
it does not have more than 65535 cylinders, or more than 255 heads<br>
or more than 63 sectors per track.<br>
<br>
Would you like that to keep using the current geometry?</p>
<p>理解这句话的含义，必须理解 硬盘参数模式 ，具体请在本空间搜索相关资料。</p>
<p><strong><font color="#ff0000">我建议您遇到这种情况的时候，选择NO！！否则FreeBSD系统将不能正确的引导!!!!</font></strong></p>
<p> </p>
<p>下面的链接有关于该问题的讨论：</p>
<p><a href="http://forums.freebsd.org/archive/index.php/t-4626.html">http://forums.freebsd.org/archive/index.php/t-4626.html</a></p>
<p> </p>
<p> </p>
<p> </p>
<p><a href="http://forums.freebsd.org/archive/index.php/t-4626.html">http://obgaoml.spaces.live.com/blog/cns!E2E605B525FFD416!547.entry</a></p>
<h4 class="beTitle">Freebsd 7.2 Installation 不完全教程 Dual Boot</h4>
<br>
&lt;&lt;---- 现在安的是8.0 没想到7.2就有这个提示了，因为7.2是升级上去的所以没有发现这个问题<br>
<br>
<br>
<br>
<br>
<div class="cnt" >
<div class="articleTitle">
<div style="display: inline;"><strong>FreeBSD安装时关于硬盘参数提示的处理方法（整理）</strong><span class="time">(2006-12-05 13:01:46)<br>
<a href="http://hi.baidu.com/daodej/blog/item/ce23f201f2bae01b738b6541.html" target="_blank">http://hi.baidu.com/daodej/blog/item/ce23f201f2bae01b738b6541.html</a><br>
</span></div>
</div>
<div class="articleTag">
<table cellspacing="0" cellpadding="0" border="0" width="100%">
    <tbody>
        <tr>
            <td> </td>
            <td align="right" width="250" valign="top">分类：<a href="http://blog.sina.com.cn/s/articlelist_1267295753_1_1.html">BSD</a></td>
        </tr>
    </tbody>
</table>
</div>
<div class="articleContent">
<div>
<h4 class="TextColor1" style="margin-bottom: 0px;">错误信息：</h4>
<div>
<p><strong>WARNING: A geometry of 116301/16/63 for ad0 is incorrect.Using a more likely geometry.If this geometry is incorrect or you are unsure as to whether or not it's correct,please consult the Hardware Guide in the Documentation submenu or use the (G) eometry command to change it now.</strong></p>
<p><strong>Remember:you need to enter whatever your BIOS thinks the geometry is!For IDE,it's what you were told in the BIOS setup.For SCSI,it's the translation mode your controller is using.Do NOT use a ''physical geometry''.</strong></p>
<p>这种错误一般发生在第一次安装时，可能的原因一般有：<br>
<br>
<strong>1：全新安装的机器</strong>；<br>
安装时在 Fdisk 中会显示出硬盘信息，包括硬盘的名字，以及柱面、磁头和扇区等硬盘参数。<br>
柱面、磁头和扇区这些磁盘映射方式参数对于划分分区非常重要，必须保证 Fdisk 中的这些数据和 BIOS 中的数据一致，以使 Fdisk 划分出的分区被 BIOS 识别。<br>
<br>
如果硬盘上已有分区，FreeBSD 可以从已有分区找到硬盘映射参数，通常与 BIOS 一致并可以避免它划分的分区与已有的分区冲突(不一致硬盘映射参数可能造成分区重叠)；但是如果是在全新的硬盘上安装由于没有任何分区，所以 FreeBSD 直接从硬盘驱动器上获取到真实的硬盘参数，而不会是映射过的逻辑参数，因此，如果 BIOS 重新映射过硬盘参数的话，就有可能 FreeBSD 获取的真实参数与 BIOS 映射的参数不一致。<br>
<br>
这个不一致主要时导致不同操作系统的分区重叠和启动引导问题，但是不影响数据存储；所以如果仅仅安装一个单独的 FreeBSD 系统可以不必理会硬盘参数问题，可以简单的忽略；</p>
<p>注： 修改 Fdisk 的硬盘映射参数可以用 G 命令进行设置；</p>
<p>2：已安装过 FreeBSD 系统的机器</p>
<p>在安装了 FreeBSD 系统之后，如果再次更改 BIOS 中的硬盘映射方式，同样也可能发生系统启动程序不能找到 FreeBSD 分区并载入 FreeBSD 系统的情况。</p>
<p>背景资料：<br>
<br>
安装程序会提示两种类型的硬盘几何数据；你应该了解它们的意思：<br>
·&#160;<wbr></wbr>&#160;<wbr></wbr>&#160;<wbr></wbr>&#160;<wbr></wbr>&#160;<wbr></wbr>&#160;<wbr></wbr>&#160;<wbr></wbr>&#160;<wbr></wbr> 真实几何数据（real geometry）<br>
·&#160;<wbr></wbr>&#160;<wbr></wbr>&#160;<wbr></wbr>&#160;<wbr></wbr>&#160;<wbr></wbr>&#160;<wbr></wbr>&#160;<wbr></wbr>&#160;<wbr></wbr> BIOS几何数据（BIOS geometry）</p>
<p>真实几何数据是硬盘真实的几何数据，由系统检测。BIOS几何数据是BIOS使用的几何数据而它可以不同于真实的几何数据（例如，BIOS可以使用LBA来重新设定硬盘）。<br>
<br>
范例是一个具有如下几何数据的IDE磁盘：<br>
real:&#160;<wbr></wbr> 6232 cyl,&#160;<wbr></wbr>&#160;<wbr></wbr> 16 heads,&#160;<wbr></wbr> 63 sec<br>
BIOS:&#160;<wbr></wbr>&#160;<wbr></wbr> 779 cyl,&#160;<wbr></wbr> 128 heads,&#160;<wbr></wbr> 63 sec&#160;<wbr></wbr>&#160;<wbr></wbr> (LBA)<br>
<br>
你可以看到BIOS使用LBA重新设定硬盘，有效地缩减了磁柱的数目并增加了磁道的数目（但结果是一样的：6232 * 16 = 779 * 128 = 99712）。一个扇区包含512字节，这就是说硬盘大小为6232 * 16 * 63 * 512 = 3 GB。NetBSD不需要重新设定硬盘的几何数据（事实上也不会如此做）。如果sysinst出现错误时，在安装时可以手动地更改几何数据。</p>
<p>这个警告的意思是告诉你CHS对于freebsd来说，没法处理。简单的方法就是通过更改CHS让freebsd自己来处理。好多大容量的硬 盘，freebsd都是无法根据bios里的设置划分区的。安装做fdisk时，修改geometry，输入99999/999/999，这时候系统会提 示如上的警告，不用管它，回到分区界面，系统已经设置好了它认为正确的CHS。如果你坚持使用bios里的设置，系统可能存在不能启动的危险。<br>
<br>
安装系统时，根区/，不要划得太大，否则有找不到fs的危险，一般1-200M足够了，根区就是为了一个挂接和系统维护用的，平常的工作应该放到/home区。<br>
<br>
＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝</p>
<p>(一台磁盘的&quot;gromrtry&quot;，我们指的是这台磁盘上 cylinders，heads 和 sectors/track 的数目 - 为了方便且称之为 C/H/S。这是 PC 的 BIOS 用来读/写磁盘的依据)。</p>
<p>为了某些理由，这似乎会导致很多困扰。<br>
首先，一台 SCSI 装置的 physical geometry 跟 FreeBSD 在使用的 disk blocks 是完全无关的。<br>
事实上，并没有所谓&quot;physical geometry&quot;这种东西，这是指磁盘驱动器上扇区密度的变化 - 制造商要求是&quot;真实的&quot;physical geometry 通常是指，他们所能找出浪费最少空间的 geometry 结果。 对 IDE 磁盘来说，FreeBSD 使用 C/H/S 方式工作，但是所有现在的磁盘已经在内部参考时把它转换成 block 了。<br>
<br>
另外就是所谓的logical geometry - 这是当 BIOS 问&quot;你的 geometry 是什么？&quot;的时候，所得到的答案并且把它用来存取磁盘。 当开机时 FreeBSD 使用 BIOS 数据，让这个正确是相当重要的。另外，如果你在同一个磁盘驱动器上有一个以上的操作系统，他们必须都同意 grometry，否则你在开机时会有大问题！<br>
<br>
对 SCSI 磁盘驱动器来说，geometry 的使用是依靠启动控制器来支持 extended translation ，如果不支持，那么使用 N cylinders，64 heads 和 32 sectors/track，这里'N'是指磁盘驱动器的 MB 容量。举例来说，一个 2GB 的磁盘驱动器应该假设它有 2048 cylinders，64 heads 和 32 sectors/track。<br>
<br>
如果它确定是打开的(通常提供这种方法在 MSDOS 下有某些限制)，并且磁盘容量超过 1GB，使用 M cylinders，每个 track 63 sectors (*而非* 64)，以及 255 heads，这里 'M' 是每 MB 的磁盘容量除以 7.844238 (!)。所以我们的这个范例，2G 磁盘驱动器就有 261 cylinders， 每个 track 63 sectors 以及 255 heads。<br>
<br>
如果你不确定以上这个，或是 FreeBSD 在安装过程中要侦测 geometry 的正确性时失败了，最简单的解决方法通常是在磁盘上建立一个小的 DOS 分割区。正确的 geometry 应该能被侦测到（而且如果你不想保留它，你总是可以在分割区编辑器里把这个 DOS 分割区移除掉，或是把它留下来，给程序化网络卡使用或随你高兴怎么用它）。<br>
<br>
另外，有一个免费而有用的公用程序叫 ``pfdisk.exe'' 随着 FreeBSD 散播出来（位于 FreeBSD CDROM 的 tools 子目录 下或是在大多数的 FreeBSD ftp 站台内可找到），这个程序可用来找出另一操作系统正在使用磁盘驱动器上的哪块 geometry。然后你就可以在 分割区编辑器里面输入它。</p>
</div>
</div>
</div>
</div>
</div> <a href="http://hi.baidu.com/3444542/blog/item/df00521184fb911ab8127b79.html">阅读全文</a>
		
		<br/><b>类别：</b><a href="http://hi.baidu.com/3444542/blog/category/Freebsd">Freebsd</a>&nbsp;<a href="http://hi.baidu.com/3444542/blog/item/df00521184fb911ab8127b79.html#comment">查看评论</a>]]></description>
        <pubDate>2009-11-28  19:49</pubDate>
        <category><![CDATA[Freebsd]]></category>
        <author><![CDATA[3444542]]></author>
		<guid>http://hi.baidu.com/3444542/blog/item/df00521184fb911ab8127b79.html</guid>
</item>

<item>
        <title><![CDATA[通过结构体某个成员的地址计算结构体首地址[转]]]></title>
        <link><![CDATA[http://hi.baidu.com/3444542/blog/item/7a917624f7e67a0b4d088d48.html]]></link>
        <description><![CDATA[
		
		<table width="100%" cellspacing="0" cellpadding="0" border="0" style="border-collapse: collapse; word-wrap: break-word;">
    <tbody>
        <tr>
            <td height="25" align="center"><font color="#02368d" style="font-size: 14pt;"><strong><br>
            <font size="3"><font color="#ff9900">其实linux内核链表就通过这功能来做list_entry()的，刚在CU上看到就顺便转过来</font><br>
            <br>
            <br>
            </font>通过结构体某个成员的地址计算结构体首地址</strong></font><br>
            <br>
            <a href="http://blog.chinaunix.net/u/33048/showart_1333524.html" target="_blank">http://blog.chinaunix.net/u/33048/showart_1333524.html</a></td>
        </tr>
        <tr>
            <td height="1" bgcolor="#d2dee2"> </td>
        </tr>
        <tr>
            <td height="1" bgcolor="#ffffff"> </td>
        </tr>
        <tr>
            <td align="center">
            <table width="100%" cellspacing="0" cellpadding="0" border="0" style="border-collapse: collapse; word-wrap: break-word;">
                <tbody>
                    <tr>
                        <td width="100%">
                        <div style="margin: 15px;" width="100%" >
                        <div>本文欢迎自由转载，但保持本文的完整性，并注明出处。</div>
                        <div>&#160;</div>
                        <div>最近在CU论坛上有很多人在问这样一个问题：给出一个结构体成员的地址计算该结构体的起始地址。其实这个题我之前也没有接触过，据说内核代码中有这样用的，但还没有看到。不过觉得这个题的解决方法还是有一定技巧的，就总结一下。下面是实现的代码。</div>
                        <div>&#160;</div>
                        <table width="95%" cellspacing="0" cellpadding="0" bordercolor="#999999" border="1" bgcolor="#f1f1f1" style="border-collapse: collapse;">
                            <tbody>
                                <tr>
                                    <td>
                                    <p style="margin: 5px; line-height: 150%;"><code><span style="color: rgb(0, 0, 0);"><span style="color: rgb(0, 0, 204);">/*</span></span></code></p>
                                    <p style="margin: 5px; line-height: 150%;"><code><span style="color: rgb(0, 0, 0);"><span style="color: rgb(0, 0, 204);">Author: Godbach</span></span></code></p>
                                    <p style="margin: 5px; line-height: 150%;"><code><span style="color: rgb(0, 0, 0);"><span style="color: rgb(0, 0, 204);">Date: Oct 23, 2008</span></span></code></p>
                                    <p style="margin: 5px; line-height: 150%;"><code><span style="color: rgb(0, 0, 0);"><span style="color: rgb(0, 0, 204);">*/</span></span></code></p>
                                    <p style="margin: 5px; line-height: 150%;"><code><span style="color: rgb(0, 0, 0);"><span style="color: rgb(0, 0, 204);">#</span><span style="color: rgb(255, 0, 0);">include</span> <span style="color: rgb(0, 0, 204);">&lt;</span>stdio<span style="color: rgb(0, 0, 204);">.</span>h<span style="color: rgb(0, 0, 204);">&gt;</span><br>
                                    <span style="color: rgb(0, 0, 204);">#</span><span style="color: rgb(255, 0, 0);">define</span> STRUCT_OFFSET<span style="color: rgb(0, 0, 204);">(</span>stru_name<span style="color: rgb(0, 0, 204);">,</span> element<span style="color: rgb(0, 0, 204);">)</span> <span style="color: rgb(0, 0, 204);">(</span><span style="color: rgb(0, 0, 255);">unsigned long</span><span style="color: rgb(0, 0, 204);">)</span><span style="color: rgb(0, 0, 204);">&amp;</span><span style="color: rgb(0, 0, 204);">(</span><span style="color: rgb(0, 0, 204);">(</span><span style="color: rgb(0, 0, 255);">struct</span> stru_name<span style="color: rgb(0, 0, 204);">*</span><span style="color: rgb(0, 0, 204);">)</span>0<span style="color: rgb(0, 0, 204);">)</span><span style="color: rgb(0, 0, 204);">-</span><span style="color: rgb(0, 0, 204);">&gt;</span>element<br>
                                    <span style="color: rgb(0, 0, 255);">struct</span> stru_addr <br>
                                    <span style="color: rgb(0, 0, 204);">{</span><br>
                                    <span style="color: rgb(0, 0, 255);">int</span> a<span style="color: rgb(0, 0, 204);">;</span><br>
                                    <span style="color: rgb(0, 0, 255);">char</span> b<span style="color: rgb(0, 0, 204);">;</span><br>
                                    <span style="color: rgb(0, 0, 255);">int</span> d<span style="color: rgb(0, 0, 204);">;</span><br>
                                    <span style="color: rgb(0, 0, 255);">char</span> c<span style="color: rgb(0, 0, 204);">;</span><br>
                                    <br>
                                    <span style="color: rgb(0, 0, 204);">}</span><span style="color: rgb(0, 0, 204);">;</span><br>
                                    <br>
                                    <span style="color: rgb(0, 0, 255);">int</span> main<span style="color: rgb(0, 0, 204);">(</span><span style="color: rgb(0, 0, 255);">void</span><span style="color: rgb(0, 0, 204);">)</span><br>
                                    <span style="color: rgb(0, 0, 204);">{</span><br>
                                    <span style="color: rgb(0, 0, 255);">struct</span> stru_addr s<span style="color: rgb(0, 0, 204);">;</span><br>
                                    <span style="color: rgb(255, 0, 0);">printf</span><span style="color: rgb(0, 0, 204);">(</span><span style="color: rgb(255, 0, 255);">&quot;start addr of s = %x\n&quot;</span><span style="color: rgb(0, 0, 204);">,</span> <span style="color: rgb(0, 0, 204);">&amp;</span>s<span style="color: rgb(0, 0, 204);">.</span>a<span style="color: rgb(0, 0, 204);">)</span><span style="color: rgb(0, 0, 204);">;</span><br>
                                    <br>
                                    unsigned long offset <span style="color: rgb(0, 0, 204);">=</span> STRUCT_OFFSET<span style="color: rgb(0, 0, 204);">(</span>stru_addr<span style="color: rgb(0, 0, 204);">,</span> c<span style="color: rgb(0, 0, 204);">)</span><span style="color: rgb(0, 0, 204);">;</span><br>
                                    <br>
                                    <span style="color: rgb(255, 0, 0);">printf</span><span style="color: rgb(0, 0, 204);">(</span><span style="color: rgb(255, 0, 255);">&quot;c_addr = %x, offset = %u\n&quot;</span><span style="color: rgb(0, 0, 204);">,</span> <span style="color: rgb(0, 0, 204);">&amp;</span>s<span style="color: rgb(0, 0, 204);">.</span>c<span style="color: rgb(0, 0, 204);">,</span> offset<span style="color: rgb(0, 0, 204);">)</span><span style="color: rgb(0, 0, 204);">;</span><br>
                                    <span style="color: rgb(255, 0, 0);">printf</span><span style="color: rgb(0, 0, 204);">(</span><span style="color: rgb(255, 0, 255);">&quot;start addr of s caculated from c addr: %x\n&quot;</span><span style="color: rgb(0, 0, 204);">,</span> <span style="color: rgb(0, 0, 204);">(</span><span style="color: rgb(0, 0, 255);">char</span> <span style="color: rgb(0, 0, 204);">*</span><span style="color: rgb(0, 0, 204);">)</span><span style="color: rgb(0, 0, 204);">&amp;</span>s<span style="color: rgb(0, 0, 204);">.</span>c <span style="color: rgb(0, 0, 204);">-</span> offset<span style="color: rgb(0, 0, 204);">)</span><span style="color: rgb(0, 0, 204);">;</span><br>
                                    <span style="color: rgb(0, 0, 255);">return</span> 0<span style="color: rgb(0, 0, 204);">;</span><br>
                                    <span style="color: rgb(0, 0, 204);">}</span></span></code></p>
                                    </td>
                                </tr>
                            </tbody>
                        </table>
                        <p>&#160;</p>
                        <p>其实整个程序中最关键的部分就是如何求出结构体中某个成员相对于结构体首地址的偏移量。这里的解决方法是：假设存在一个虚拟地址0，将该地址强制转 换成为该结构体指针类型（struct stru_name*）0。那么地址0开始到sizeof(struct)-1长度的内存区域就可以视为一个结构体的内存。这样结构体中任何一个元素都可 以通过对该结构体指针解引用得到。由于该结构体的起始地址为0， 因此任何一个成员的地址应该等于其相对于结构体起始地址的偏移，这也就是计算偏移量的方法：<font face="新宋体"><span style="color: rgb(0, 0, 204);">(</span><span style="color: rgb(0, 0, 255);">unsigned long</span><span style="color: rgb(0, 0, 204);">)</span><span style="color: rgb(0, 0, 204);">&amp;</span><span style="color: rgb(0, 0, 204);">(</span><span style="color: rgb(0, 0, 204);">(</span><span style="color: rgb(0, 0, 255);">struct</span> stru_name<span style="color: rgb(0, 0, 204);">*</span><span style="color: rgb(0, 0, 204);">)</span>0<span style="color: rgb(0, 0, 204);">)</span><span style="color: rgb(0, 0, 204);">-</span><span style="color: rgb(0, 0, 204);">&gt;</span>element。</font></p>
                        <p><font face="宋体">上面程序执行的结果如下：<br>
                        [root@localhost tmp]# ./a.out <br>
                        start addr of s = bf81b820<br>
                        c_addr = bf81b82c, offset = 12<br>
                        start addr of s caculated from c addr: bf81b820<br>
                        <br>
                        上述的结果中还同时考虑了结构体内的对齐问题。</font></p>
                        </div>
                        </td>
                    </tr>
                </tbody>
            </table>
            </td>
        </tr>
    </tbody>
</table> <a href="http://hi.baidu.com/3444542/blog/item/7a917624f7e67a0b4d088d48.html">阅读全文</a>
		
		<br/><b>类别：</b><a href="http://hi.baidu.com/3444542/blog/category/%B3%CC%D0%F2%C9%E8%BC%C6%C0%E0">程序设计类</a>&nbsp;<a href="http://hi.baidu.com/3444542/blog/item/7a917624f7e67a0b4d088d48.html#comment">查看评论</a>]]></description>
        <pubDate>2009-11-27  19:33</pubDate>
        <category><![CDATA[程序设计类]]></category>
        <author><![CDATA[3444542]]></author>
		<guid>http://hi.baidu.com/3444542/blog/item/7a917624f7e67a0b4d088d48.html</guid>
</item>

<item>
        <title><![CDATA[FreeBSD 8.0 终于发布正式版了]]></title>
        <link><![CDATA[http://hi.baidu.com/3444542/blog/item/b28bff59a05006202934f04e.html]]></link>
        <description><![CDATA[
		
		<br>
马上上两个链接先<br>
<br>
<a href="http://wiki.freebsdchina.org/news/2009/freebsd_8.0_new_features" target="_blank">http://wiki.freebsdchina.org/news/2009/freebsd_8.0_new_features</a>&#160;&#160;&#160; <br>
<h1><a name="freebsd_8.0_新特性概览">FreeBSD 8.0 新特性概览</a></h1>
<h1> </h1>
<h1><a href="http://www.freebsd.org/releases/8.0R/announce.html" target="_blank">http://www.freebsd.org/releases/8.0R/announce.html</a>&#160; <a name="freebsd_8.0_新特性概览"></a></h1>
<h1>FreeBSD 8.0-RELEASE Announcement</h1>
<br>
<br>
看到rss信息上发现8.0正式发布了，链接到官方一看，太好的消息了，最近几天一直在等，从ftp上提供8.0 release iso后每天关注官方的发布消息，这里再BS一下有的网站，为了人气，竟然比FreeBSD官方还提前发布freebsd 8.0，不过人家后缀名是 .com ，可以理解了。<br>
freebsd官方发布喜欢来个发布前的“热身”， 先在FTP上提供ISO，不过真正的发布还要等式官方公告才是最准确的。<br>
<br>
我看再留意一下前面提到的网站，有两个网站，看他们会不会“再次”发布Freebsd 8.0&#160; :D<br> <a href="http://hi.baidu.com/3444542/blog/item/b28bff59a05006202934f04e.html">阅读全文</a>
		
		<br/><b>类别：</b><a href="http://hi.baidu.com/3444542/blog/category/Freebsd">Freebsd</a>&nbsp;<a href="http://hi.baidu.com/3444542/blog/item/b28bff59a05006202934f04e.html#comment">查看评论</a>]]></description>
        <pubDate>2009-11-27  13:40</pubDate>
        <category><![CDATA[Freebsd]]></category>
        <author><![CDATA[3444542]]></author>
		<guid>http://hi.baidu.com/3444542/blog/item/b28bff59a05006202934f04e.html</guid>
</item>

<item>
        <title><![CDATA[C语言运算符优先级口诀[转]]]></title>
        <link><![CDATA[http://hi.baidu.com/3444542/blog/item/d6ba2f51b1a94e12377abe39.html]]></link>
        <description><![CDATA[
		
		<div >
<h1>C语言运算符优先级口诀</h1>
</div>
当然，应用这个口诀的前提是你必须认识所有的C语言的运算符。<br>
<br>
优先决<br>
括号成员第一;&#160; &#160;&#160; &#160;&#160;&#160;//括号运算符[]() 成员运算符.&#160;&#160;-&gt;<br>
全体单目第二;&#160; &#160;&#160; &#160;&#160;&#160;//所有的单目运算符比如++ -- +(正) -(负) 指针运算*&amp;<br>
乘除余三,加减四;&#160; &#160;//这个&quot;余&quot;是指取余运算即%<br>
移位五，关系六;&#160; &#160;&#160;&#160;//移位运算符：&lt;&lt; &gt;&gt; ，关系：&gt; &lt; &gt;= &lt;= 等<br>
等于(与)不等排第七;&#160; &#160; //即== !=<br>
位与异或和位或;&#160; &#160; //这几个都是位运算: 位与(&amp;)异或(^)位或(|)&#160; &#160;&#160;&#160;<br>
&quot;三分天下&quot;八九十;&#160;&#160;<br>
逻辑或跟与;&#160; &#160;&#160; &#160;&#160; &#160;&#160; &#160;//逻辑运算符:|| 和 &amp;&amp;<br>
十二和十一;&#160; &#160;&#160; &#160;&#160; &#160;&#160; &#160;//注意顺序:优先级(||)&#160;&#160;底于 优先级(&amp;&amp;) <br>
条件高于赋值,&#160; &#160;&#160; &#160; //三目运算符优先级排到 13 位只比赋值运算符和&quot;,&quot;高//需要注意的是赋值运算符很多！<br>
逗号运算级最低!&#160; &#160;//逗号运算符优先级最低<br>
<br>
由于C语言的运算符优先级与C++的不完全一样(主要是增加了几个运算符)，所以这个口诀不能完全实用于C++.但是应该能够兼容，大家可以比较一下他们的区别应该就能够很快掌握C++的优先级的！<br>
<br>
出处&#160; <a href="http://club.bianceng.cn/thread-398-1-1.html" target="_blank">http://club.bianceng.cn/thread-398-1-1.html</a> <a href="http://hi.baidu.com/3444542/blog/item/d6ba2f51b1a94e12377abe39.html">阅读全文</a>
		
		<br/><b>类别：</b><a href="http://hi.baidu.com/3444542/blog/category/%C1%B4%BD%D3%CE%C4%D5%C2">链接文章</a>&nbsp;<a href="http://hi.baidu.com/3444542/blog/item/d6ba2f51b1a94e12377abe39.html#comment">查看评论</a>]]></description>
        <pubDate>2009-11-23  23:05</pubDate>
        <category><![CDATA[链接文章]]></category>
        <author><![CDATA[3444542]]></author>
		<guid>http://hi.baidu.com/3444542/blog/item/d6ba2f51b1a94e12377abe39.html</guid>
</item>

<item>
        <title><![CDATA[“饮水机”形象比喻 教你什么是RAID[转载]]]></title>
        <link><![CDATA[http://hi.baidu.com/3444542/blog/item/97be2109e142342e6b60fbaa.html]]></link>
        <description><![CDATA[
		
		<table cellspacing="0" cellpadding="0" border="0" width="100%" style="border-collapse: collapse; word-wrap: break-word;">
    <tbody>
        <tr>
            <td align="center" height="25"><font color="#02368d" style="font-size: 14pt;"><strong>“饮水机”形象比喻 教你什么是RAID</strong></font></td>
        </tr>
        <tr>
            <td bgcolor="#d2dee2" height="1"> </td>
        </tr>
        <tr>
            <td bgcolor="#ffffff" height="1"> </td>
        </tr>
        <tr>
            <td align="center">
            <table cellspacing="0" cellpadding="0" border="0" width="100%" style="border-collapse: collapse; word-wrap: break-word;">
                <tbody>
                    <tr>
                        <td width="100%">
                        <div style="margin: 15px;" width="100%" >这篇文章写得非常生动具体学习理解Raid是非常有帮助的。现转载过来学习一下！<br>
                        <br>
                        问题1:什么是RAID?它是由什么组成的?<br>
                        RAID的中文名字为磁盘冗余阵列，顾名思义他是由磁盘组成阵列而成的。因此RAID需要至少两块硬盘组成。RAID的基本想法就是把多个便宜的小磁盘组合到一起，成为一个磁盘组， 使性能达到或超过一个容量巨大、价格昂贵的磁盘。<br>
                        早期的RAID诞生初衷并不是为了数据的安全，而是为了提高硬盘的读写速度。RAID 0和RAID 1就是为了这个目的而定义的。<br>
                        问题2:什么情况需要使用RAID?<br>
                        根据不同的实际情况作为网络管理员的我们应该为<span class="t_tag" href="http://bbs.ctocio.com.cn/tag.php?name=%B7%FE%CE%F1%C6%F7">服务器</span>采 取不同的RAID种类。目前最流行的是RAID 0，RAID 1，RAID 5。其中RAID1和RAID 5过多的用于保证数据的安全，最大程度的防止磁盘意外坏掉而丢失数据情况的发生。而RAID 0则是为了提高磁盘读取的速度，他不提供任何数据备份和保障功能。知道了不同RAID应用的情况我们根据实际情况进行选择即可。<br>
                        当然那些需要在硬盘上保存大量数据的人采用 RAID 技术将会很方便。主要表现在以下几个方面——<br>
                        (1)增强了速度 ，服务器可以在同一时间从多个硬盘上读取数据。<br>
                        (2)扩容了存储能力，多个硬盘组成更大的空间提供给服务器使用。<br>
                        (3)可高效恢复磁盘，RAID提供了相当高的数据冗余功能，我们可以保证数据的完整无缺。<br>
                        问题3: RAID都有哪些种类呢?希望可以使用直观容易懂的语言来描述。<br>
                        对于RAID种类恐怕很多文章都介绍过，这里我就不详细说明理论东西了。恰巧笔者看到了一个外国描述RAID各个级别的图片，感觉很多地方定义得非常准确，而且通过看图了解RAID效果会更加显著。(如图1)<br>
                        <img border="0" width="474" height="395" src="http://biz.chinabyte.com/imagelist/06/02/45c3h9ug2p3k.jpg"><br>
                        <br>
                        (1)先为大家讲解第一个小图，也就是标记着standalone的饮水机，该图主要是通过矿泉水桶为饮水机提供水源这个现实例子来比喻RAID各个种类 的区别。两个饮水机的出水孔相当于读取数据的接口，而矿泉水桶里的水则是宝贵的数据。这些数据正是通过出水孔这个数据接口而被用户读取的，相应的一个矿泉 水对应着一块硬盘<br>
                        正常情况下我们的计算机(例如家的里计算机而不是服务器)是只有一个硬盘的，这时我们要喝水(读取硬盘数据)都是由这一个矿泉水桶提供水源的。(如图2) <img border="0" width="160" height="253" src="http://biz.chinabyte.com/imagelist/06/02/nf1zo9ps0kdv.jpg"><br>
                        (2)接下来看第二个小图，也就是标记着cluster的图。(如图3)所谓cluster就是集群的意思，集群就是用多台服务器合并为一台，所有服 务器提供的服务和数据都是一样的。就像图中显示的有两台饮水机，说明有两台服务器，这两台服务器都可以提供用户数据(水源)。 用户可以到左边的饮水机来取得数据，也可以到右边的饮水机来获得数据，这样无形中就提供了用户获得水(数据)的效率。但是这种cluster集群有一个缺 点，那就是需要多台服务器的硬件支持，在一定程度上造成了浪费。一般来说中小企业是不可能让多台服务器提供同样数据和同样服务的。<br>
                        <img border="0" width="147" height="253" src="http://biz.chinabyte.com/imagelist/06/02/4gzndgu7v2dk.jpg"><br>
                        (3)第三个小图标记着Hot swap，(如图4)他是热交换的意思。概念上有点类似于热备份。即一台饮水机(服务器)，和第一个图一样他有一个硬盘，出水量也和standalone 一样。但是当饮水机上的矿泉水桶出现问题时，例如水没了或者桶破了，这时马上采取热交换技术，将旁边的矿泉水桶替代出问题的桶放到饮水机上，从而继续提供 服务。但是这种方法也存在一个缺点，那就是需要一个桶做备份，而且仅仅在原来桶出问题的情况下该桶才派上用场。另外换桶过程是需要时间的，无形中影响了服 务的提供。 <img border="0" width="158" height="241" src="http://biz.chinabyte.com/imagelist/06/02/1z2in2g74349.jpg"><br>
                        <br>
                        (4)第四个图就是RAID中的老大了，这里说他是老大因为他是最早的RAID。Level 0即RAID 0级,通常称为带区，是利用带区数据映射技巧的特定性能。也就是说，当数据写入磁盘组的时候，被分成带区，交错写入磁盘组的磁盘中。这带来了高I/O性 能，低开销，但不提供任何冗余。磁盘组的存储量等于总的各磁盘容量之和。 (如图5) <img border="0" width="156" height="257" src="http://biz.chinabyte.com/imagelist/06/02/rz8lx563275e.jpg"><br>
                        当饮水机上的两个桶中任何一个出问题时用户都不能通过出水孔获得宝贵的数据(水源)，因此他不提供冗余功能。当然在获得水源的过程中用户是通过两个矿泉水桶同时获得的，自然在出水量等多方面比只使用一个桶有优势。提高了数据读写的速度是RAID 0的最大特色。<br>
                        小提示:<br>
                        可能有的读者会问在RAID 0图中最上面的那个桶出了问题不是一样可以出水吗?其实这个图仅仅是方便大家记忆和理解RAID，不可能通过简单的图就能100%准确的反映出只有进行理论描述才能说清楚的RAID种类。因此大家在理解图片的过程中也不要太过于拘泥。　　<br>
                        (5)第五个图也是RAID中比较常用的，Level 1即RAID 1级，他就是常常提到的镜像RAID，(如图6)相比其他各级别RAID来说，这个级别使用的时间较长。RAID 1通过把同样的数据写到磁盘组的每一个磁盘上，将&quot;镜像&quot;复制到每个磁盘上，来提供数据冗余。镜像由于它的简单实现和数据的高可信度而一直很受欢迎。<br>
                        <img border="0" width="153" height="260" src="http://biz.chinabyte.com/imagelist/06/02/63bk476vw9m7.jpg"><br>
                        1级在读数据操作时，并行处理2个或更多的磁盘，因此数据传输速率高， 但是其他的操作时无法提供高速的I/O传输速率。<br>
                        1级提供了非常好的数据的高可信度，并且改善了读数据操作的性能，但是耗费很大。要求组成磁盘组的各磁盘规格相同，而组成后磁盘组的容量仅仅等于一块磁盘的容量。　　<br>
                        正如图中显示的一样，有两个矿泉水桶放在饮水机上，这样当其中一个出了问题，例如破坏或没水时并不会影响用户使用矿泉水，因为另一个桶将会完好的提供水 源。当然由于出水口没有出现任何扩大，所以出水量和使用一个矿泉水桶是一样的。因此出水速度没有变化却多加了一个桶使得RAID 1虽然可以提供最大程度的冗余，但是无法提高读取速度。<br>
                        <br>
                        小提示:<br>
                        有一个细节需要各位的读者特别注意，在RAID 1的图片中是两个矿泉水桶共用一个供水口，自然出水量没有什么变化。而下面的RAID 5则不同。稍后会详细讲解。<br>
                        (6)第六个图是服务器最常用的RAID级别，即RAID 5。(如图7)笔者所在公司购买的服务器不管是DELL的还是IBM或者曙光服务器都是使用这个最常用的RAID类型。该级别的RAID是通过把奇偶校验 分布到磁盘组中的一些或所有磁盘上，5级常使用缓冲技术来降低性能的不对称性。如果组成磁盘组的各磁盘规格相同，磁盘组容量等于磁盘的总容量，减去一块磁 盘的容量。<br>
                        <img border="0" width="153" height="252" src="http://biz.chinabyte.com/imagelist/06/02/9gtf49z3dt64.jpg"><br>
                        上面提到了RAID 1只是使用了一个供水口，没有提高出水速度。然而在RAID 5中我们会发现图7中三个矿泉水桶分别安装在了三个进水口中，这样我们就可以同时由三个水桶为用户提供水源了，自然在出水速度上得到了大幅度提高。同样三 个矿泉水桶有一个出现问题也没有关系，不会影响到饮用水源。<br>
                        小提示:<br>
                        有两点是图中没有表现出来的，这里再说明下方便读者有一个清晰的认识。<br>
                        (1)图7中只显示了三个水桶，实际上在现实工作中只要我们有三个以上的硬盘(水桶)就都可以配置RAID5了。四个，五个甚至更多的硬盘来配置RAID 5也是没有问题的。<br>
                        (2)在我们配置RAID 5后如果出现两个以上硬盘出现问题时，数据是不能得到有效的保护的。也就是说RAID 5只能在其中一块硬盘出问题时保证数据完好。<br>
                        (3)最后一个图实际上是前面介绍的RAID 0和RAID 1的组合，只要大家对RAID 0和RAID 1有了清晰的认识，这个图理解起来就简单得多了，他实际上就是先配置为RAID 0然后在配置RAID 1，相应的发挥了RAID 0和1的所有优点，避免了他们的所有缺点。鉴于篇幅关系这里就不详细介绍了，毕竟RAID 0+1在实际工作中使用的机会没有前面介绍的RAID 5多。<br>
                        总结:<br>
                        对于服务器不是很熟悉的读者来说，掌握RAID的概念是最最基本的。他是我们进入<span style="color: rgb(153, 1, 2); font-weight: bold;">服务器知识领域</span>的敲门砖，希望本篇文章中的饮水机图可以帮助大家理解 各种RAID和<span style="font-weight: bold;">数据冗余类别</span>。最后再重申一下图片仅仅是为了方便大家理解和记忆，对于RAID这样理论的东西很多细节和特点是无法通过简单的图片所表现出 来的，图片描述有不完整的地方还请各位多多包涵，毕竟本篇文章是写给那些RAID知识门外汉的读者的。</div>
                        </td>
                    </tr>
                </tbody>
            </table>
            <p style="margin: 5px; line-height: 150%;"> </p>
            </td>
        </tr>
        <tr>
            <td height="25">&#160;<font color="#000099"><strong>原文地址</strong></font> <a target="_blank" href="http://bbs.ctocio.com.cn/thread-7890203-1-1.html">http://bbs.ctocio.com.cn/thread-7890203-1-1.html</a></td>
        </tr>
    </tbody>
</table> <a href="http://hi.baidu.com/3444542/blog/item/97be2109e142342e6b60fbaa.html">阅读全文</a>
		
		<br/><b>类别：</b><a href="http://hi.baidu.com/3444542/blog/category/%C1%B4%BD%D3%CE%C4%D5%C2">链接文章</a>&nbsp;<a href="http://hi.baidu.com/3444542/blog/item/97be2109e142342e6b60fbaa.html#comment">查看评论</a>]]></description>
        <pubDate>2009-11-21  20:32</pubDate>
        <category><![CDATA[链接文章]]></category>
        <author><![CDATA[3444542]]></author>
		<guid>http://hi.baidu.com/3444542/blog/item/97be2109e142342e6b60fbaa.html</guid>
</item>

<item>
        <title><![CDATA[gitweb使用记录[原]]]></title>
        <link><![CDATA[http://hi.baidu.com/3444542/blog/item/6f70fdd98b96e42611df9b96.html]]></link>
        <description><![CDATA[
		
		之前用了cgit, 挺棒的一个git cgi, 后来想想gitweb是自带的，也整整试一下吧，现在cgit 和 gitweb 都能很好地工作了，后续看把cgit的方法也记录一下, 以后空了再折腾一下gitosis，这个多人协作非常有用，不过现在只有自己一个人在用，将就ssh就够用了。<br>
<br>
cgit <a href="http://hjemli.net/git/cgit/" target="_blank">http://hjemli.net/git/cgit/</a>&#160; <br>
cgit + lighttpd <br>
<br>
sudo -u git git instaweb&#160; 生成gitweb目录<br>
到 git项目的目录下会发现多了一个gitweb目录<br>
然后修改description 为git项目的描述，每个项目工程都会对应有的<br>
到gitweb目录会发现有个 httpd.conf 文件，可以配置 server.document-root <br>
<br>
为git所有项目的根目录，修改server.port 端口<br>
可以适当修改 server.pid-file ，和server.errorlog<br>
<br>
gitweb.cgi是一个perl文件，可以打开此文件修改 our $projectroot = &quot;指定<br>
<pre class="screen">our $GIT = &quot;/usr/bin/git&quot;;  像freebsd 这种git不是在/usr/bin下的需要修改一下</pre>
<br>
目录&quot;<br>
<br>
将gitweb目录拷到你想放到的地方，然后运行 lighttpd -f xxx目录下<br>
<br>
的/httpd.conf 就将git项目用web方式共享出来了，若要加密码的话，用<br>
<br>
lighttpd自带的认证方式就搞定了<br>
<br>
<br>
<br>
progit 中文网址[重点推荐] <a target="_blank" href="http://progit.org/book/zh/ch2-3.html">http://progit.org/book/zh/ch2-3.html</a>&#160; 之前有几个没弄明白的问题，通过这个教程搞懂了，还有很多不懂的地方还要学习<br>
<br>
msysgit 下载网址 <a target="_blank" href="http://code.google.com/p/msysgit/">http://code.google.com/p/msysgit/</a><br>
TortoiseGit 项目主页 <a target="_blank" href="http://code.google.com/p/tortoisegit/">http://code.google.com/p/tortoisegit/</a><br>
Git中使用外部工具来进行diff和merge <a target="_blank" href="http://www.51yu.cn/post/86/">http://www.51yu.cn/post/86/</a><br>
官方手册中文翻译<a target="_blank" href="http://www.bitsun.com/documents/GitUserManualChinese.html"> http://www.bitsun.com/documents/GitUserManualChinese.html</a><br>
QuickStart <a target="_blank" href="http://git.or.cz/gitwiki/RobinSteven/GitChineseTutor/QuickStart">http://git.or.cz/gitwiki/RobinSteven/GitChineseTutor/QuickStart</a><br>
cgit <a target="_blank" href="http://hjemli.net/git/cgit/">http://hjemli.net/git/cgit/</a><br>
<br>
<a target="_blank" href="http://linuxtoy.org/docs/guide/ch28s10.html">linuxtoy gitweb 介绍&#160; http://linuxtoy.org/docs/guide/ch28s10.html</a><br>
<a target="_blank" href="http://john.notsoevil.net/?p=33">lighttpd + gitweb&#160;&#160; http://john.notsoevil.net/?p=33</a><br> <a href="http://hi.baidu.com/3444542/blog/item/6f70fdd98b96e42611df9b96.html">阅读全文</a>
		
		<br/><b>类别：</b><a href="http://hi.baidu.com/3444542/blog/category/Git">Git</a>&nbsp;<a href="http://hi.baidu.com/3444542/blog/item/6f70fdd98b96e42611df9b96.html#comment">查看评论</a>]]></description>
        <pubDate>2009-11-16  12:08</pubDate>
        <category><![CDATA[Git]]></category>
        <author><![CDATA[3444542]]></author>
		<guid>http://hi.baidu.com/3444542/blog/item/6f70fdd98b96e42611df9b96.html</guid>
</item>

<item>
        <title><![CDATA[archlinux 恢复[原]]]></title>
        <link><![CDATA[http://hi.baidu.com/3444542/blog/item/fef1d0c23282203fe4dd3be9.html]]></link>
        <description><![CDATA[
		
		今天升级因为下载太慢，就随手输入 pacman -S glibc 结果只升级了GLIBC，其他的没升级，后果就是 ls 都段错误，关机都没办法关了。<br>
试着用 grub4dos 引导ISO进archlinux 2009.08的ISO，结果没挂上我的lvm分区，<br>
<pre>(好像是没有 modprobe dm-mod 的原因，<br>vgscan<br>vgchange -ay<br>提示没有device-mapper驱动<br>因为现在启动到GENTOO下了，先不管了)<br>重启进入到GENTOO下面，想到之前老焦的archlive里有pacman.static 命令，就将就试一下吧</pre>
./pacman.static -r /media/archlinux/ --config /media/archlinux/etc/pacman.conf --cachedir /media/archlinux/var/cache/pacman/pkg/ -Su<br>
<br>
一运行就发现有搞头，正在更新包<br>
更新完后试着 sudo chroot /media/archlinux&#160; /bin/bash 出现段错误，看来没搞头<br>
<br>
多半是这次的glibc有问题，然后试着降级GLIBC，再安装，果然OK了<br>
<br>
[axlrose@ibmgentoo media] $ sudo ./pacman.static -r /media/archlinux/ --config /media/archlinux/etc/pacman.conf --cachedir /media/archlinux/var/cache/pacman/pkg/ -U /media/archlinux/var/cache/pacman/pkg/glibc-2.10.1-5-i686.pkg.tar.gz<br>
loading package data...<br>
checking dependencies...<br>
error: failed to prepare transaction (could not satisfy dependencies)<br>
:: binutils: requires glibc&gt;=2.11<br>
[axlrose@ibmgentoo media] $ sudo ./pacman.static -r /media/archlinux/ --config /media/archlinux/etc/pacman.conf --cachedir /media/archlinux/var/cache/pacman/pkg/ -U /media/archlinux/var/cache/pacman/pkg/binutils-<br>
binutils-2.20-1-i686.pkg.tar.gz&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; binutils-native-2.19.1-2-i686.pkg.tar.gz<br>
binutils-2.20-2-i686.pkg.tar.gz<br>
[axlrose@ibmgentoo media] $ sudo ./pacman.static -r /media/archlinux/ --config /media/archlinux/etc/pacman.conf --cachedir /media/archlinux/var/cache/pacman/pkg/ -U /media/archlinux/var/cache/pacman/pkg/binutils-2.20-<br>
binutils-2.20-1-i686.pkg.tar.gz&#160; binutils-2.20-2-i686.pkg.tar.gz<br>
[axlrose@ibmgentoo media] $ sudo ./pacman.static -r /media/archlinux/ --config /media/archlinux/etc/pacman.conf --cachedir /media/archlinux/var/cache/pacman/pkg/ -U /media/archlinux/var/cache/pacman/pkg/binutils-2.20-1-i686.pkg.tar.gz<br>
loading package data...<br>
checking dependencies...<br>
(1/1) checking for file conflicts&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; [##################################################################] 100%<br>
(1/1) upgrading binutils&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; [##################################################################] 100%<br>
[axlrose@ibmgentoo media] $ sudo ./pacman.static -r /media/archlinux/ --config /media/archlinux/etc/pacman.conf --cachedir /media/archlinux/var/cache/pacman/pkg/ -U /media/archlinux/var/cache/pacman/pkg/glibc-2.10.1-5-i686.pkg.tar.gz<br>
loading package data...<br>
checking dependencies...<br>
(1/1) checking for file conflicts&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; [##################################################################] 100%<br>
(1/1) upgrading glibc&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; [##################################################################] 100%<br>
warning: /media/archlinux/etc/locale.gen installed as /media/archlinux/etc/locale.gen.pacnew<br>
Generating locales...<br>
en_US.UTF-8... done<br>
en_US.ISO-8859-1... done<br>
zh_CN.GB18030... done<br>
zh_CN.GBK... done<br>
<br>
<br>
<br>
<br>
<br>
<br>
<br>
<pre style="border: 1px solid rgb(198, 198, 198); margin: 0px; padding: 4px; overflow: auto; width: 640px; height: 498px;" class="alt2">&lt;GunsNRose&gt; [arch@myarchtp ~] $ sudo pacman -Sf glibc<br>&lt;GunsNRose&gt; 正在解决依赖关系...<br>&lt;GunsNRose&gt; 正在查找内部冲突...<br>&lt;GunsNRose&gt; 目标 (1)： glibc-2.11-1<br>&lt;GunsNRose&gt; 全部下载大小:   11.46 MB<br>&lt;GunsNRose&gt; 全部安装大小:  31.59 MB<br>&lt;GunsNRose&gt; 进行安装吗？ [Y/n] y<br>&lt;GunsNRose&gt; :: 正在从 core 软件仓库获取软件包...<br>&lt;GunsNRose&gt; --2009-11-11 20:47:10--  ftp://ftp.archlinux.org/core/os/i686/glibc-2.11-1-i686.pkg.tar.gz<br>&lt;GunsNRose&gt;            =&gt; “/var/cache/pacman/pkg/glibc-2.11-1-i686.pkg.tar.gz.part”<br>&lt;GunsNRose&gt; 正在解析主机 ftp.archlinux.org... 209.85.41.144, 209.85.41.143<br>&lt;GunsNRose&gt; 正在连接 ftp.archlinux.org|209.85.41.144|:21... 已连接。<br>&lt;GunsNRose&gt; 正在以 anonymous 登录 ... 登录成功！<br>&lt;GunsNRose&gt; ==&gt; SYST ... 完成。    ==&gt; PWD ... 完成。<br>&lt;GunsNRose&gt; ==&gt; TYPE I ... 完成。  ==&gt; CWD (1) /core/os/i686 ... 完成。<br>&lt;GunsNRose&gt; ==&gt; SIZE glibc-2.11-1-i686.pkg.tar.gz ... 12020826<br>&lt;GunsNRose&gt; ==&gt; PASV ... 完成。    ==&gt; RETR glibc-2.11-1-i686.pkg.tar.gz ... 完成。<br>&lt;GunsNRose&gt; 长度：12020826 (11M) (非正式数据)<br>&lt;GunsNRose&gt; 100%[==================================================================================&gt;] 12,020,826  44.3K/s   in 4m 7s   <br>&lt;GunsNRose&gt; 2009-11-11 20:51:21 (47.5 KB/s) - “/var/cache/pacman/pkg/glibc-2.11-1-i686.pkg.tar.gz.part” 已保存 [12020826]<br>&lt;GunsNRose&gt; 正在检查软件包完整性...<br>&lt;GunsNRose&gt; 警告：/etc/locale.gen 已安装为 /etc/locale.gen.pacnew<br>&lt;GunsNRose&gt; (1/1) 正在更新 glibc                                [#################################################################] 100%<br>&lt;GunsNRose&gt; [arch@myarchtp ~] $ ls<br>&lt;GunsNRose&gt; 段错误<br>&lt;zhong&gt; 汗...<br>&lt;GunsNRose&gt; [arch@myarchtp ~] $ clear<br>&lt;GunsNRose&gt; 段错误<br>&lt;GunsNRose&gt; [arch@myarchtp ~] $ man<br>&lt;GunsNRose&gt; 段错误<br>&lt;GunsNRose&gt; [arch@myarchtp ~] $ ls<br>&lt;GunsNRose&gt; 段错误<br>&lt;GunsNRose&gt; [arch@myarchtp ~] $ dir<br><br><br>[arch@myarchtp ~] $ clear<br>段错误<br>[arch@myarchtp ~] $ pacman -Si pacman<br>段错误<br>[arch@myarchtp ~] $ sudo pacman -Qi glibc<br>段错误<br>[arch@myarc<br><br>&lt;GunsNRose&gt; 段错误</pre> <a href="http://hi.baidu.com/3444542/blog/item/fef1d0c23282203fe4dd3be9.html">阅读全文</a>
		
		<br/><b>类别：</b><a href="http://hi.baidu.com/3444542/blog/category/Archlinux">Archlinux</a>&nbsp;<a href="http://hi.baidu.com/3444542/blog/item/fef1d0c23282203fe4dd3be9.html#comment">查看评论</a>]]></description>
        <pubDate>2009-11-11  19:48</pubDate>
        <category><![CDATA[Archlinux]]></category>
        <author><![CDATA[3444542]]></author>
		<guid>http://hi.baidu.com/3444542/blog/item/fef1d0c23282203fe4dd3be9.html</guid>
</item>

<item>
        <title><![CDATA[惩罚孩子的10大智慧 [转]]]></title>
        <link><![CDATA[http://hi.baidu.com/3444542/blog/item/fb8e980853a9bb3ae824885a.html]]></link>
        <description><![CDATA[
		
		<font color="#295200" style="font-size: 14pt;"><strong>惩罚孩子的10大智慧 </strong></font>
<div style="margin: 15px;" >
<div class="mdig">
<div class="pictop"><a class="num2" target="_blank" href="http://39787079.qzone.qq.com/blog/1257306751" >惩罚孩子的10大智慧</a>                 <span class="date" >2009年11月04日</span></div>
<div class="textnr" >　　1、犯了错误就要惩罚&#160;&#160;&#160;&#160;&#160;&#160; 孩子犯了错误，无论有心还是无意，都要受到惩罚。比如：孩子不小心把杯子摔碎了，虽然他不是故意的，也应该告诉他，这是他的过错。他虽没有料想到自己行为的后果，但仍要为此道歉。如果他是无意的，并勇于承认错误，家长会相信他， <br>
<br>
2、惩罚的“量刑”要适当 <br>
惩 罚孩子的目的是为了孩子的良性转化，惩罚的“量刑”就必须合乎孩子的行为。惩罚过重容易引起孩子的对抗情绪，轻了又不足以使孩子引以为戒。因此惩罚孩子要 以达到目的为原则，既不能轻描淡写，又不能小题大做滥用“刑罚”。大教育家洛克说：“儿童第一次应该受到惩罚的痛苦的时候，非等完全达到目的之后，不可中 止；而且还要逐渐加重”，其中的道理耐人寻味。 <br>
3、要依照规则进行惩罚 <br>
<br>
家长应和孩子协商制定一个奖惩规则，让孩子知道犯错后将受到什么惩罚。这样，孩子平日就会有所注意，从而减少犯错误的概率。当孩子犯错后，家长应注意调整 自己的情绪，不要因一时冲动而随意惩罚孩子。 若是孩子以后犯了同样的错误，也应该按规则进行和以前相同的惩罚，这样家长才能在孩子心中树立威信。 <br>
<br>
4、指明“出路”不含糊 <br>
惩 罚孩子不能半途而废，应要求受罚的孩子作出具体的改错反应才能停止。家长要态度明确，跟孩子讲清楚他应该怎么做、达到什么要求或标准，否则有什么样的后 果。如孩子有乱丢东西、不爱整理的习惯，家长在惩罚时就应该让其自己收拾好东西、整理好玩具；使其明白必须要做好，否则又要受罚。家长千万不能含糊其词甚 至让孩子“自己去想”。家长不给“出路”，孩子改错就没有目标，效果就不明显。&#160;&#160; <br>
5、罚了又赏要不得 <br>
家长教育孩子要相互配合，态度一致，赏罚分明。该奖时就要郑重其事甚至煞有介事地奖，让孩子真正体会到受奖的喜悦；该罚时也应态度明确、措施果断，让其知 道自己错之所在。只有这样，才能培养孩子明辨是非、知错即改的品行。如果在对孩子实施惩罚之后，家长中的一方认为孩子受了委屈，随即又来安慰他，这将会使 惩罚失去作用。实践证明：惩罚——奖励——惩罚的恶性循环会使孩子产生认知偏差，错误地将犯错和受奖联系起来，从而使惩罚归于失败。 <br>
6、及时惩罚莫迟疑 <br>
<br>
惩 罚的效果部分来自条件反射，而条件反射在有条件刺激和无条件刺激的间隔时间越短则效果越好。所以家长一旦发现孩子犯错，只要情况许可就应立即予以相应的惩 罚；如果当时的情境(如有客人在场或正在公共场所)不允许立即作出反应，事后则应及时地创造条件，尽可能让孩子回到与原来相似的情境中去，家长和孩子一起 回顾和总结当时的言行，使他意识到当时的错误行为，并明确要求他改正。 <br>
<br>
7、最忌讳讽刺挖苦 <br>
家长惩罚孩 子应力戒讽刺挖苦，更不能自恃“孩子是我生的、是我养的”而随意用恶毒的语言指责、谩骂孩子。实践证明，讽刺挖苦和恶语谩骂已超越了孩子的理智能够接受的 范围，将会刺伤孩子的自尊心。因此，家长应该牢记惩罚孩子的目的是帮助他改正错误，决不是为了刺激孩子心灵中最敏感的角落——自尊心。有些家长在惩罚孩子 语言不文明、满口脏话时，自己也“出口成脏”，这就使得训教效果大打折扣，甚至失去说服力。 <br>
8、点到为止莫唠叨 <br>
<br>
有 些家长训教孩子喜欢没完没了，而且还时不时地喝问孩子“我的话你听见了没有？”孩子慑于家长的威严，为了免受皮肉之苦，只能别无选择地说“听见了”，其实 他可能什么都没听进去，甚至左耳听了右耳出，根本就没听。孩子之所以说知道了，只是顺着家长的意思，为了早点结束训斥。于是，当孩子下次再犯同样的错误 时，家长便感到“痛心疾首”，随即说孩子“不把我的话当回事”，当成了“耳边风”，说孩子“不听话”。其实这是因为家长的唠叨太多了，令孩子分不清主次， 不知道听哪一句为好；再者，经常性的唠叨多了，也会导致孩子 “失聪”，对家长的话产生教育心理学中的“0反应”，无动于衷，使训教失去效果。因此，家长在教育孩子时务必切记要改掉爱唠叨的毛病，凡事点到为止。 <br>
<br>
9、就事论事莫牵连 <br>
从 受罚者的角度来讲，孩子最厌恶家长“倒咸菜梗”，一事既出又将陈年老账翻出来。很多家长却不了解这个道理，训教孩子时总忘不了东拉西扯、横牵竖连，说出孩 子的种种不是，甚至将孩子说得一无是处，直至忘记了本次训教的主题。孩子怎样想呢？反正自己没有一处是对的，以前取得的成绩、改正的缺点家长都看不到，自 感自己天生是挨训该罚的料，对改错失去了信心，也就破罐破摔、我行我素，这样的教育效果可想而知。所以，家长训教惩罚孩子务必要一事一议，就事论事，切勿 搞牵连、翻陈账。 <br>
<br>
10、事后说理不可无 <br>
家长和孩子之间存在着教与被教的关系，但教育孩子仍当以理服人。惩罚只是手 段而不是目的，因此，惩罚之后必须要及时与孩子说理，否则，孩子在忍受了惩罚之后将依然如故。所以，家长在惩罚孩子后要通过说理、剖析的方式使他明白为什 么会受罚、知道犯错误的原因，讲清楚如果坚持犯错下去将有什么后果。惩罚只是一种劣性条件刺激，其效能是短时的，不能持久。受罚的孩子改正了错误并不等于 他已明白事理，并不能保证他下次不会再犯。因此，让孩子明白自己受罚的原因才是根除错误的关键，说理是惩罚孩子之后不可或缺的一个重要步骤。<br>
<br>
把不适宜教育孩子的语言分为以下十种，称为语言十忌： <br>
1、忌恶言。不要说：“傻瓜，说谎，没用的家伙”。<br>
2、忌侮蔑。不要说：“你简直是个废物”。<br>
3、忌责备。不要说：“你又做错事，真是坏透了”。<br>
4、忌压抑。不要说：“闭嘴，你怎么这样不听话”。<br>
5、忌强迫。不要说：“我说不行，就不行”。<br>
6、忌威胁。不要说：“我再也不管你了，随你去吧”。<br>
7、忌哀求。不要说：“求求你不要这样做好吗？”<br>
8、忌抱怨。不要说：“你做这种事，真令我伤心”。<br>
9、忌贿赂。不要说：“你若考100分，我就买自行车、手表给你”。<br>
10、忌讽刺。不要说：“你可真行啊！竟做出这种事来”。</div>
</div>
</div> <a href="http://hi.baidu.com/3444542/blog/item/fb8e980853a9bb3ae824885a.html">阅读全文</a>
		
		<br/><b>类别：</b><a href="http://hi.baidu.com/3444542/blog/category/%C1%B4%BD%D3%CE%C4%D5%C2">链接文章</a>&nbsp;<a href="http://hi.baidu.com/3444542/blog/item/fb8e980853a9bb3ae824885a.html#comment">查看评论</a>]]></description>
        <pubDate>2009-11-11  12:37</pubDate>
        <category><![CDATA[链接文章]]></category>
        <author><![CDATA[3444542]]></author>
		<guid>http://hi.baidu.com/3444542/blog/item/fb8e980853a9bb3ae824885a.html</guid>
</item>

<item>
        <title><![CDATA[Cleaning and Customizing Your Ports[转]Mike兄推荐的文章]]></title>
        <link><![CDATA[http://hi.baidu.com/3444542/blog/item/a8b0ed8b7d612a18c9fc7a79.html]]></link>
        <description><![CDATA[
		
		<font color="#0000ff" size="6">Cleaning and Customizing Your Ports<br>
<br>
</font>原文：<br>
<a href="http://www.onlamp.com/pub/a/bsd/2003/09/18/FreeBSD_Basics.html" target="_blank">http://www.onlamp.com/pub/a/<span class="t_tag" href="tag.php?name=bsd">bsd</span>/2003/09/18/FreeBSD_Basics.html</a><br>
作者：Dru Lavigne<br>
翻译：rainren<br>
本人能力有限， 很多地方自我感觉都翻译的不对， 请大家指出， 我慢慢修改。转贴请email to : <a href="mailto:renhw895@sohu.com">renhw895@sohu.com</a><br>
&nbsp;&nbsp;<br>
&nbsp;&nbsp; 我们前两篇文章讨论了怎样使用ports和用portupgrade升级你已<span class="t_tag" href="tag.php?name=%B0%B2%D7%B0">安装</span>的程序。 今天，我将示范如何干净的<span class="t_tag" href="tag.php?name=%D0%B6%D4%D8">卸载</span>应用程序和使用pkgtools.conf来定制你的ports tree以结束这一系列。<br>
<br>
很多人认识到安装、 卸载软件是一件杂乱的事情。安装时一些临时文件、 没有阅读的READMEs、 和一些不清楚的目录都导致硬盘混乱不堪。有时， 我们卸载了一个软件但它还会留下一些不再使用的文件在<span class="t_tag" href="tag.php?name=%CF%B5%CD%B3">系统</span>里。 更糟的是， 安装时重写， 但卸载时却删除其它软件会用到的库文件。 这些使得用户重新安装系统以求得一个干净的使用环境。<br>
<br>
<font size="4"><font color="#0000ff">Keeping Your Ports Clean</font></font><br>
<br>
幸运地, 这里有一些工具可以使你聪明地、正确地管理软件安装， 使你的FreeBSD系统能良好的运行很多年。例如当你从ports安装一个软件时要记得包含这个单词：<br>
<font color="#ff0000"><br>
# make install clean<br>
</font><br>
这将告诉make在软件安装成功时清理它的工作目录。 如果你忘记了使用clean， 你很快会发现那些工作目录占用了很多硬盘空间。<br>
<br>
如果你的硬盘空间特紧张， 你可使用这个命令代替：<br>
<font color="#ff0000"><br>
# make install distclean<br>
</font><br>
当你安装一个ports时， 源程序将从互联网上下载下来并copied到/usr/ports/distfiles。 当你想重新安装那个ports时， 这些源程序已经在你的硬盘上了。 distclean 将告诉make 在软件安装成功时删除这些源程序。 可依据你的硬盘空间和你的电脑与互联网的连接速度来决定是否使用distclean。 另外， 因一些许可证的原因， 一些ports 会要求你手动取得源程序并将它们copied到/usr/ports/distfiles。 我觉得保存在硬盘上更方便， 因此我在安装ports时一般不会使用distclean。 <br>
<br>
有两个选项可以从另外的途径来节省你的硬盘空间。 如果你安装了portupgrade， 你可以使用portsclean来做这项工作。 从名字可以看出， 这个命令就是用来在ports 安装后做一些清理工作的。<br>
我有一个系统专门用来测试， 我在上面安装、卸载了几百个ports， 平常， 我会使用clean清理， 但有时我会使用distclean。 来让我们看一下当前的硬盘使用情况和使用了portsclean后又有什么不同。 首先， 查看一下/usr<span class="t_tag" href="tag.php?name=%B7%D6%C7%F8">分区</span>使用了多少硬盘空间：<br>
<font color="#ff0000"><br>
# df /usr<br>
Filesystem&nbsp;&nbsp; 1K-blocks    Used   Avail Capacity&nbsp;&nbsp; Mounted on<br>
/dev/ad0s1f&nbsp;&nbsp; 13360662 6189648 6102162    50%    /usr<br>
</font><br>
下一步我们来看看/usr/ports的使用情况。 这个命令将显示使用硬盘空间最多的10个目录：<br>
<font color="#ff0000"><br>
# du /usr/ports |sort -rn|head<br>
3110862        /usr/ports<br>
1848846        /usr/ports/distfiles<br>
822278        /usr/ports/editors<br>
816710        /usr/ports/editors/openoffice-devel<br>
816592        /usr/ports/editors/openoffice-devel/work<br>
604784        /usr/ports/editors/openoffice-devel/work/oo_644_src<br>
362536        /usr/ports/distfiles/KDE<br>
295404&nbsp;&nbsp; /usr/ports/distfiles/openoffice<br>
211718&nbsp;&nbsp; /usr/ports/editors/openoffice-devel/work/mozilla<br>
211654&nbsp;&nbsp; /usr/ports/editors/openoffice-devel/work/mozilla/work<br>
</font><br>
Hmmm, 看起来我在安装了OpenOffice后没有使用distclean。<br>
<br>
我现在将清理那些忘记的工作目录：<br>
<font color="#ff0000"><br>
#portsclean ?C<br>
</font><br>
它真的能清理硬盘空间吗？<br>
<font color="#ff0000"><br>
% df /usr<br>
Filesystem&nbsp;&nbsp; 1K-blocks    Used   Avail Capacity&nbsp;&nbsp; Mounted on<br>
/dev/ad0s1f&nbsp;&nbsp; 13360662 5160664 7131146    42%    /usr<br>
</font><br>
oh yeah. 清理了8%的硬盘空间。 记住清理工作目录是一件很好的事情， 毕竟它们只在安装软件时使用。 当软件安装成功后它们将不再需要。<br>
<br>
下一个portsclean选项也非常有用。 确信你的/usr/ports/distfiles完整无缺。 当过一段时间，你卸载了一些应用程序而且还将一些程序升级到了最新版本。 但有一些不需要或过时的源程序还留在/usr/ports/distfiles里。 来让我们将它找出并清理掉：<br>
<font color="#ff0000"><br>
# portsclean -DD<br>
Detecting unreferenced distfiles...<br>
&lt;output varies&gt;<br>
来看看有什么变化：<br>
<font color="#ff0000"><br>
# df /usr<br>
Filesystem&nbsp;&nbsp; 1K-blocks    Used   Avail Capacity&nbsp;&nbsp; Mounted on<br>
/dev/ad0s1f&nbsp;&nbsp; 13360662 4092490 8199320    33%    /usr<br>
</font><br>
Whoa, 又清理出了9%的硬盘空间。来让我们看看主要的差别：<br>
<font color="#ff0000"><br>
# du /usr/ports | sort -rn | head<br>
1011998        /usr/ports<br>
780760        /usr/ports/distfiles<br>
161724        /usr/ports/distfiles/openoffice<br>
137010        /usr/ports/distfiles/staroffice52<br>
122648        /usr/ports/distfiles/KDE<br>
55478        /usr/ports/distfiles/xc<br>
24936        /usr/ports/distfiles/rpm<br>
20536        /usr/ports/devel<br>
18194        /usr/ports/distfiles/AbiWord<br>
17704        /usr/ports/distfiles/ghostscript<br>
</font><br>
现在硬盘使用空间已减少了很多， 但我的系统上还保留着我平常安装软件的源代码。<br>
<br>
<font size="6"><font color="#0000ff">Customizing Available Ports</font></font><br>
<br>
让我们来看看如何定制ports collection。 当你安装了portupgrade后， /usr/local/etc/pkgtools.conf 和/usr/local/etc/pkgtools.conf.sample将安装在你的系统里。缺省情况下（默认情况下）， 这两个文件是相同的。可以更改/usr/local/etc/pkgtools.conf但应保持/usr/local/etc/pkgtools.conf.sample不变， 当出现错误， 你可以回到最原始的设置。<br>
<br>
花点时间阅读这个文件， 你会发现它会很好的帮助你取得你想到的ports。我有一些明确的非常有用的选择， 但你要花点时间改成你所需要的。<br>
<br>
开始， 这个文件允许你给portupgrade这组工具套件设置工作环境。例如， 缺省情况下的临时目录是/var/tmp， 在/var很小的情况下这会有一些问题出现。 我们来改变这个缺省值， 从/usr/local/etc/pkgtools.conf找到下面这一行：<br>
<font color="#ff0000"><br>
#   ENV['PKG_TMPDIR'] ||= '/var/tmp'<br>
</font><br>
将它改到你想要的目录：<br>
<font color="#ff0000"><br>
ENV['PKG_TMPDIR'] ||= '/usr/tmp'<br>
</font><br>
要记得去掉注释符号#， 并确定你指定的目录已存在。<br>
<br>
另一个有用的设置是设置忽略的分类：(Another useful setting is the ignore categories section)<br>
<font color="#ff0000"><br>
# IGNORE_CATEGORIES: array<br>
#<br>
# This is a list of port categories you want the pkgtools to ignore.<br>
# Typically you want to list language specific categories of the<br>
# languages you don't use.<br>
#<br>
# After configuring this list, you need to rebuild the ports<br>
# <span class="t_tag" href="tag.php?name=database">database</span> to reflect the changes. (run 'portsdb -Ufu')<br>
#<br>
# e.g.:<br>
#   IGNORE_CATEGORIES = [<br>
#  &nbsp;&nbsp;&nbsp; 'chinese',<br>
#  &nbsp;&nbsp;&nbsp; 'french',<br>
#  &nbsp;&nbsp;&nbsp; 'german',<br>
#  &nbsp;&nbsp;&nbsp; 'hebrew',<br>
#  &nbsp;&nbsp;&nbsp; 'japanese',<br>
#  &nbsp;&nbsp;&nbsp; 'korean',<br>
#  &nbsp;&nbsp;&nbsp; 'russian',<br>
#  &nbsp;&nbsp;&nbsp; 'ukrainian',<br>
#  &nbsp;&nbsp;&nbsp; 'vietnamese',<br>
#   ]<br>
<br>
IGNORE_CATEGORIES = [<br>
]<br>
</font><br>
这里， 注释十分干净。 如果你决定使用这个有用的选项时， 去掉你想要忽略的分类前面的注释符号#。 当语言分类被选择后， 你还可以忽略其它的分类。 如：你从未打算从astro和irc分类中安装任何程序， 你可以将它们也写进忽略的分类中。 下面是例子：<br>
<font color="#ff0000"><br>
IGNORE_CATEGORIES = [<br>
    'chinese',<br>
    'german',<br>
    'hebrew',<br>
    'japanese',<br>
    'korean',<br>
    'russian',<br>
    'ukrainian',<br>
    'vietnamese',<br>
    'astro',<br>
]<br>
<br>
#      &nbsp;&nbsp;   IGNORE_CATEGORIES = [<br>
#         ]<br>
</font><br>
上面， 我注释了默认情况下空的IGNORE_CATEGORIES。 并去掉了我想要忽略的分类前面的注释符号#， 以同样的格式将astro分类加了进去。 别忘记了照注释上说明的做， 并执行下面的命令：<br>
<font color="#ff0000"><br>
# portsdb -Ufu<br>
</font><br>
好， 保存你所做的修改。（once you've saved your edits to this section.）<br>
<br>
<font color="#0000ff"><font size="6">Customizing Individual Ports Build Options</font></font><br>
<br>
在这个文件中最有用的设置之一是设置MAKE_ARGS会话。 一些ports允许在安装时设置一些参数来规定如何安装它。 这些参数可以在port&rsquo;s Makefile里找到或这样：<br>
<font color="#ff0000"><br>
# cd /usr/ports/multimedia/mplayer<br>
# make WITH_GUI=yes WITH_FREETYPE=yes install clean<br>
</font><br>
上面的命令等价于：<br>
<font color="#ff0000"><br>
# make -DWITH_GUI -DWITH_FREETYPE install clean<br>
</font><br>
如果你计划使用portupgrade升级mplayer并想使用同样的参数， 你有一个选择。 或者你有能力记得在使用portupgrade时使用 m 这个选项：<br>
<font color="#ff0000"><br>
# portupgrade -rRm '-DWITH_GUI' '-DWITH_FREETYPE' mplayer<br>
</font><br>
或者花一点时间将这些选择加入到/usr/local/etc/pkgtools/conf里：<br>
<font color="#ff0000"><br>
MAKE_ARGS = {<br>
    'multimedia/mplayer-*' =&gt; 'WITH_GUI=1 WITH_FREETYPE=1',<br>
}<br>
</font><br>
让我们分开它们来看看， 它有点复杂并且语法有点讲究。 整个MAKE_ARGS会话包含在一个{ }里。 在这里面是每个ports详细的 make参数。也就是你可以将一些ports 加入进去， 并确信它们都在这个括号内。<br>
<br>
每个ports必须包含在一对单引号里&rsquo;并且是从ports里分下来的子目录。 名字最后面跟通配符 <font color="#ff0000">-* </font>。<br>
<br>
make参数也被放在一对单引号里并跟在 <font color="#ff0000">=&gt; </font>后面。 记住使用1代替使用单词yes， 所有的参数以空格分开。<br>
<br>
你需要花一点时间来将你的参数加进这个会话中。<br>
<font size="6"><font color="#0000ff">Ports Tools</font></font><br>
<br>
让我们来看看ports tree的 tools 来结束这一系列吧！ 如果你没发现这已经有了， 你可以看看这里：<br>
<font color="#ff0000"><br>
# more /usr/ports/Tools/scripts/README<br>
</font><br>
Gee, 当你想要了解所有关于ports的所有情况时， 你将在那里找到全部隐藏的有用工具。 它们都是脚本文件， 当你执行这些文件时别忘记里名字前面加上<font color="#ff0000"> ./ </font><br>
<font color="#ff0000"><br>
# cd /usr/ports/Tools/scripts<br>
# ./consistency-check<br>
</font><br>
建议你运行所有你在阅读README文件中介绍的感兴趣的脚本。 如果你找到一些喜爱的脚本， 你可以将它们copy到你的目录或做一个到 ~/bin下的符号连接。<br>
<br>
我希望你喜欢这些使用ports collections的文章。 我将在下一段时间将前面的一系列文章修订成一本书。 <br>
<br>
<font color="#0000ff"><font size="6">求救， 我在最后的这些段翻译越来越差， 请兄弟们改正</font></font><br>
<font color="#008000"><br>
It's worth your while to spend the few minutes it takes to add your arguments to this section whenever you first build a port that uses arguments. You'll eventually upgrade that port, and it is highly unlikely that you'll even remember that it used arguments, let alone what those actual arguments were. <br>
Ports Tools<br>
Let's finish this series by peeking at the tools section of the ports tree. If you haven't discovered it on your own yet, take a look at:<br>
% more /usr/ports/Tools/scripts/README<br>
Gee, just when you thought you knew everything there was to know about ports, you find there's a whole new stash of useful utilities. Since these are all scripts, don't forget to put a ./ in front of the name as you try out each of the scripts:<br>
% cd /usr/ports/Tools/scripts<br>
% ./consistency-check<br>
I'd suggest trying out each script that piques your interest as you read its description in the README file. If you find some new favorites, consider either copying them or symlinking them to ~/bin so they will be in your path.<br>
I hope you've enjoyed the past few articles on the ports collection. I'll be taking a break from the series over the next few months in order to write a book. Stay tuned for more details.<br>
</font>　　　　　　 </font> <a href="http://hi.baidu.com/3444542/blog/item/a8b0ed8b7d612a18c9fc7a79.html">阅读全文</a>
		
		<br/><b>类别：</b><a href="http://hi.baidu.com/3444542/blog/category/Freebsd">Freebsd</a>&nbsp;<a href="http://hi.baidu.com/3444542/blog/item/a8b0ed8b7d612a18c9fc7a79.html#comment">查看评论</a>]]></description>
        <pubDate>2009-11-05  16:17</pubDate>
        <category><![CDATA[Freebsd]]></category>
        <author><![CDATA[3444542]]></author>
		<guid>http://hi.baidu.com/3444542/blog/item/a8b0ed8b7d612a18c9fc7a79.html</guid>
</item>

<item>
        <title><![CDATA[FreeBSD下ZFS RaidZ硬盘替换扩容实践 [转载]]]></title>
        <link><![CDATA[http://hi.baidu.com/3444542/blog/item/1e28015155d09d2e43a75b6b.html]]></link>
        <description><![CDATA[
		
		<div class="entry-head">
<h1 class="entry-title"><a title="Permanent Link to FreeBSD下ZFS RaidZ硬盘替换扩容实践" href="http://www.yaoge123.com/blog/archives/267" rel="bookmark">FreeBSD下ZFS RaidZ硬盘替换扩容实践</a></h1>
<div class="entry-meta"><a href="http://www.yaoge123.com/blog/archives/267">http://www.yaoge123.com/blog/archives/267</a></div>
</div>

<div class="entry-content">
<p>创建一个raidz1的ZFS pool<br>
test# zpool create zfspool raidz da1 da2 da3<br>
test# zpool list<br>
NAME SIZE USED AVAIL CAP HEALTH ALTROOT<br>
zfspool 23.9G 192K 23.9G 0% ONLINE -<br>
test# zpool status<br>
pool: zfspool<br>
state: ONLINE<br>
scrub: none requested<br>
config:</p>
<p>NAME STATE READ WRITE CKSUM<br>
zfspool ONLINE 0 0 0<br>
raidz1 ONLINE 0 0 0<br>
da1 ONLINE 0 0 0<br>
da2 ONLINE 0 0 0<br>
da3 ONLINE 0 0 0</p>
<p>errors: No known data errors</p>
<p>用更大的da4、da5、da6替换原来小的da1、da2、da3<br>
test# zpool replace zfspool da1 da4<br>
test# zpool replace zfspool da2 da5<br>
test# zpool replace zfspool da3 da6<br>
test# zpool list<br>
NAME SIZE USED AVAIL CAP HEALTH ALTROOT<br>
zfspool 23.9G 198K 23.9G 0% ONLINE -<br>
test# zpool status<br>
pool: zfspool<br>
state: ONLINE<br>
scrub: resilver completed with 0 errors on Wed Jul 22 11:10:58 2009<br>
config:</p>
<p>NAME STATE READ WRITE CKSUM<br>
zfspool ONLINE 0 0 0<br>
raidz1 ONLINE 0 0 0<br>
da4 ONLINE 0 0 0<br>
da5 ONLINE 0 0 0<br>
da6 ONLINE 0 0 0</p>
<p>errors: No known data errors</p>
<p>导入导出pool后就能看到和使用新增加的容量了<br>
test# zpool export zfspool<br>
test# zpool import zfspool<br>
test# zpool list<br>
NAME SIZE USED AVAIL CAP HEALTH ALTROOT<br>
zfspool 29.9G 192K 29.9G 0% ONLINE -</p>
<p>解释一下raidz的磁盘容量显示，zpool list是把冗余数据也算进去了，df/du则显示实际使用容量<br>
test# zpool list<br>
NAME SIZE USED AVAIL CAP HEALTH ALTROOT<br>
zfspool 1.48G 1.35G 141M 90% ONLINE -<br>
test# df -h<br>
Filesystem Size Used Avail Capacity Mounted on<br>
zfspool 980M 918M 62M 94% /zfspool<br>
test# du -h /zfspool/<br>
918M /zfspool/</p>
</div>
 <a href="http://hi.baidu.com/3444542/blog/item/1e28015155d09d2e43a75b6b.html">阅读全文</a>
		
		<br/><b>类别：</b><a href="http://hi.baidu.com/3444542/blog/category/Freebsd">Freebsd</a>&nbsp;<a href="http://hi.baidu.com/3444542/blog/item/1e28015155d09d2e43a75b6b.html#comment">查看评论</a>]]></description>
        <pubDate>2009-11-05  10:01</pubDate>
        <category><![CDATA[Freebsd]]></category>
        <author><![CDATA[3444542]]></author>
		<guid>http://hi.baidu.com/3444542/blog/item/1e28015155d09d2e43a75b6b.html</guid>
</item>


</channel>
</rss>