<?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>西格玛向量™ &#187; IT悟语</title>
	<atom:link href="http://sigmav.net/category/tech/feed/" rel="self" type="application/rss+xml" />
	<link>http://sigmav.net</link>
	<description>指向 任何方向都是未来</description>
	<lastBuildDate>Sun, 12 Feb 2012 11:24:20 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.2</generator>
<cloud domain='sigmav.net' port='80' path='/?rsscloud=notify' registerProcedure='' protocol='http-post' />
		<item>
		<title>Fedora14下pgsnmpd的安装</title>
		<link>http://sigmav.net/2011/05/02/fedora14_pgsnmpd/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=fedora14_pgsnmpd</link>
		<comments>http://sigmav.net/2011/05/02/fedora14_pgsnmpd/#comments</comments>
		<pubDate>Mon, 02 May 2011 06:56:52 +0000</pubDate>
		<dc:creator>西玛哒</dc:creator>
				<category><![CDATA[IT悟语]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[软件]]></category>
		<category><![CDATA[Fedora]]></category>
		<category><![CDATA[Snmp]]></category>

		<guid isPermaLink="false">http://sigmav.net/?p=41320</guid>
		<description><![CDATA[景介绍： net-snmp 是一套简单网络管理协议snmp(Simple Network Management Protocol)的支持工具，它基于BSD许可发布了支持SNMP v1, SNMP v2c 与 SNMP v3，并可以使用 IPV4 及 IPV6 的工具包，用以从SNMP设备上获取信息，达到监视设备运行及相关衍生目的。 postgresql是同样以BSD协议发布的对象关系型数据库，它和Mysql，Oracle等数据库一样具有丰富的数据库功能，可以用于建站等诸多目的。 数据库的运行需要保证其良好的稳定性，特别是一些对数据操作比较敏感的关键项目，需要对数据库的运行进行监视，这里就需要为net-snmp实现接口，开源项目pgsnmpd便实现了这个功能。 项目主页： http://pgfoundry.org/projects/pgsnmpd 安装过程： 按照项目主页上所描述的方法，可以不下载源码树通过相关包来解决问题。(可能)需要安装的包如下： postgresql-devel net-snmp-devel make gcc zlib-devel openssl-devel libxslt-devel pam-devel readline-devel 但是由于postgre-devel包中已经不包含libpgport.a ，而编译时需要-lpgport ,因此不能依赖其进行编译。 这里使用在postgre源码树下编译的方法。 首先下载postgre源码包： http://www.postgresql.org/ftp/source/ 由于要配合企业版9.0 这里使用的是9.0.4 下的postgresql-9.0.4.tar.bz2 解压到编译工作目录 这里是～/ cd ~/ tar jxvf postgresql-9.0.4.tar.bz2 进入目录可以看到源码树 下载并pgsnmd包 http://pgfoundry.org/frs/download.php/1423/pgsnmpd-1.0.tgz cp pgsnmpd-1.0.tgz ~/postgresql-9.0.4/contrib/ cd ~/postgre-9.0.4/contrib/ [...]]]></description>
			<content:encoded><![CDATA[<p><span class="dropcap">背</span>景介绍：</p>
<p>net-snmp 是一套简单网络管理协议snmp(Simple Network Management Protocol)的支持工具，它基于BSD许可发布了支持SNMP v1, SNMP v2c 与 SNMP v3，并可以使用 IPV4 及 IPV6 的工具包，用以从SNMP设备上获取信息，达到监视设备运行及相关衍生目的。<br />
postgresql是同样以BSD协议发布的对象关系型数据库，它和Mysql，Oracle等数据库一样具有丰富的数据库功能，可以用于建站等诸多目的。<br />
数据库的运行需要保证其良好的稳定性，特别是一些对数据操作比较敏感的关键项目，需要对数据库的运行进行监视，这里就需要为net-snmp实现接口，开源项目pgsnmpd便实现了这个功能。<br />
项目主页：<br />
<a href="http://pgfoundry.org/projects/pgsnmpd">http://pgfoundry.org/projects/pgsnmpd</a><br />
<span id="more-41320"></span><br />
安装过程：<br />
按照项目主页上所描述的方法，可以不下载源码树通过相关包来解决问题。(可能)需要安装的包如下：</p>
<pre>   postgresql-devel
   net-snmp-devel
   make
   gcc
   zlib-devel
   openssl-devel
   libxslt-devel
   pam-devel
   readline-devel</pre>
<p>但是由于postgre-devel包中已经不包含libpgport.a ，而编译时需要-lpgport ,因此不能依赖其进行编译。<br />
这里使用在postgre源码树下编译的方法。<br />
首先下载postgre源码包：<br />
<a style="color: #3465a4;" href="http://www.postgresql.org/ftp/source/">http://www.postgresql.org/ftp/source/</a><br />
由于要配合企业版9.0 这里使用的是9.0.4 下的postgresql-9.0.4.tar.bz2<br />
解压到编译工作目录 这里是～/</p>
<pre>  cd ~/
  tar jxvf postgresql-9.0.4.tar.bz2</pre>
<p>进入目录可以看到源码树<br />
下载并pgsnmd包<br />
<a style="color: #3465a4;" href="http://pgfoundry.org/frs/download.php/1423/pgsnmpd-1.0.tgz">http://pgfoundry.org/frs/download.php/1423/pgsnmpd-1.0.tgz</a></p>
<pre>cp pgsnmpd-1.0.tgz <a style="color: #3465a4;" href="~/postgresql-9.0.4/contrib/">~/postgresql-9.0.4/contrib/</a>
cd <a style="color: #3465a4;" href="~/postgre-9.0.4/contrib/">~/postgre-9.0.4/contrib/</a>
tar zxvf pgsnmpd-1.0.tgz</pre>
<p>之后回到postgre 的源码树 先进行配置</p>
<pre>cd <a style="color: #3465a4;" href="~/postgresql-9.0.4">~/postgresql-9.0.4</a>
./configure</pre>
<p>这里可以对编译选项进行配置，如用&#8211;prefix=&#8221;" 指定安装目录<br />
这里用默认的/usr/local/pgsql<br />
配置无误会在当前目录下产生makefile<br />
make<br />
这样会生成目标文件<br />
make install<br />
将生成的文件放置到指定位置。<br />
这时开源版本postgresql的文件会存在于/usr/local/pgsql/下，其中/usr/local/pgsql/bin中存放着相关工具，之后编译中需要用到，因此需要添加到PATH中。<br />
在~/.bashrc 或其他rc脚本中将它加入PATH中</p>
<pre>export PATH=$PATH:/usr/local/pgsql/bin</pre>
<p>如需立即生效:</p>
<pre>source <a style="color: #3465a4;" href="~/.bashrc">~/.bashrc</a></pre>
<p>之后进入 <a style="color: #3465a4;" href="~/postgresql-9.0.4/contrib/pgsnmpd-1.0/">~/postgresql-9.0.4/contrib/pgsnmpd-1.0/</a><br />
cd <a style="color: #3465a4;" href="~/postgresql-9.0.4/contrib/pgsnmpd-1.0/">~/postgresql-9.0.4/contrib/pgsnmpd-1.0/</a><br />
注意这里需要net-snmp支持，用yum install 即可安装相关包<br />
yum install net-snmp<br />
之后在目录下make &amp;&amp; make install<br />
这里生成的pgsnmpd 也在/usr/local/pgsql/bin下<br />
随后安装企业版,参照使用手册，就可以正常使用了。</p>
<p>参考文献：</p>
<p>PostgreSQL :  <a href="http://zh.wikipedia.org/wiki/PostgreSQL">http://zh.wikipedia.org/wiki/PostgreSQL</a></p>
<p>Net-SNMP  ：<a href="http://zh.wikipedia.org/wiki/NET-SNMP">http://zh.wikipedia.org/wiki/NET-SNMP</a></p>
<p><span style="background: yellow;">TIME</span>:<span style="font-style: italic; font-size: small; color: #888a85;">Monday, May 2, 12:29 PM</span><br />
=========================<br />
<a style="color: #3465a4;" href="sigmax6@live.com">sigmax6@live.com</a><br />
COPY LEFT 2010</p>
]]></content:encoded>
			<wfw:commentRss>http://sigmav.net/2011/05/02/fedora14_pgsnmpd/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Gentoo下也有彩蛋～</title>
		<link>http://sigmav.net/2011/04/18/gentoo%e4%b8%8b%e4%b9%9f%e6%9c%89%e5%bd%a9%e8%9b%8b%ef%bd%9e/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=gentoo%25e4%25b8%258b%25e4%25b9%259f%25e6%259c%2589%25e5%25bd%25a9%25e8%259b%258b%25ef%25bd%259e</link>
		<comments>http://sigmav.net/2011/04/18/gentoo%e4%b8%8b%e4%b9%9f%e6%9c%89%e5%bd%a9%e8%9b%8b%ef%bd%9e/#comments</comments>
		<pubDate>Tue, 19 Apr 2011 05:36:28 +0000</pubDate>
		<dc:creator>西玛哒</dc:creator>
				<category><![CDATA[IT悟语]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[Gentoo]]></category>

		<guid isPermaLink="false">http://sigmav.net/?p=41313</guid>
		<description><![CDATA[在早先的文章中，曾经提过在Ubuntu中apt-get的母牛彩蛋。今天发现Gentoo中也有一样的～ #emerge moo have fun~]]></description>
			<content:encoded><![CDATA[<p>在早先的文章中，曾经提过在Ubuntu中apt-get的母牛彩蛋。今天发现Gentoo中也有一样的～<br />
#emerge moo<br />
have fun~<br />
<img src="http://98.136.170.121/5264/5633924984_a193c5e90d.jpg" alt="5633924984 a193c5e90d Gentoo下也有彩蛋～"  title="Gentoo下也有彩蛋～" /></p>
]]></content:encoded>
			<wfw:commentRss>http://sigmav.net/2011/04/18/gentoo%e4%b8%8b%e4%b9%9f%e6%9c%89%e5%bd%a9%e8%9b%8b%ef%bd%9e/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Gentoo USE标记全记录（转编自论坛）</title>
		<link>http://sigmav.net/2011/04/12/gentoo-use%e6%a0%87%e8%ae%b0%e5%85%a8%e8%ae%b0%e5%bd%95%ef%bc%88%e8%bd%ac%e7%bc%96%e8%87%aa%e8%ae%ba%e5%9d%9b%ef%bc%89/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=gentoo-use%25e6%25a0%2587%25e8%25ae%25b0%25e5%2585%25a8%25e8%25ae%25b0%25e5%25bd%2595%25ef%25bc%2588%25e8%25bd%25ac%25e7%25bc%2596%25e8%2587%25aa%25e8%25ae%25ba%25e5%259d%259b%25ef%25bc%2589</link>
		<comments>http://sigmav.net/2011/04/12/gentoo-use%e6%a0%87%e8%ae%b0%e5%85%a8%e8%ae%b0%e5%bd%95%ef%bc%88%e8%bd%ac%e7%bc%96%e8%87%aa%e8%ae%ba%e5%9d%9b%ef%bc%89/#comments</comments>
		<pubDate>Tue, 12 Apr 2011 08:49:02 +0000</pubDate>
		<dc:creator>西玛哒</dc:creator>
				<category><![CDATA[IT悟语]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[Gentoo]]></category>
		<category><![CDATA[USE]]></category>

		<guid isPermaLink="false">http://sigmav.net/2011/04/gentoo-use%e6%a0%87%e8%ae%b0%e5%85%a8%e8%ae%b0%e5%bd%95%ef%bc%88%e8%bd%ac%e7%bc%96%e8%87%aa%e8%ae%ba%e5%9d%9b%ef%bc%89/</guid>
		<description><![CDATA[USE 标记系统是Gentoo 系统的精髓之一，一个好的USE标记设定能让系统的好钢用在刀刃上，虽然轻量却依旧功能齐全。之前没有好好研究USE标记，基本上都是拿别人的直接用了。 今天在论坛上看到一篇总结USE标记的帖子，就无耻的转过来了，权当是做个笔记吧。 /////////////////////////////////////////// // Gentoo USE 标记 （字母排序） ////////// /////////////////////////////////////////// 3dfx 添加Xorg下的3dfx显卡支持 (参见: voodoo3) 3dnow 添加AMD处理器的3dnow!多媒体指令集支持 X 添加X11支持 Xaw3d 添加Xaw3d(X athena widgets in 3d)支持。Xaw3d是MIT Athena Widget set for X Windows的增强版本，可以在几乎不修改源代码的情况下为应用程序添加3D视觉效果。 a52 添加用于DVD的ATSC A/52解码支持 aac 添加MPEG-4 AAC音频支持 aalib 添加media-libs/aalib支持 (ASCII-Graphics库) (用于将图形转换成ASCII字符的&#8221;ascii艺术&#8221;) accessibility 添加辅助功能支持(方便残疾人使用计算机的技术，比如&#8217;at-spi&#8217;库) acl 添加文件访问控制列表支持［参考文档：文件访问控制列表］ acpi 添加ACPI(高级配置与电源接口)支持［参考文档：高级电源管理常见问题解答］ adabas 添加Adabas数据库引擎支持 adns 添加adns DNS客户端库(一个用于C/C++的异步DNS解析库)支持［主页：http://www.gnu.org/software/adns/］ afs 添加OpenAFS支持 [...]]]></description>
			<content:encoded><![CDATA[<p>USE 标记系统是Gentoo 系统的精髓之一，一个好的USE标记设定能让系统的好钢用在刀刃上，虽然轻量却依旧功能齐全。之前没有好好研究USE标记，基本上都是拿别人的直接用了。<br />
  今天在论坛上看到一篇总结USE标记的帖子，就无耻的转过来了，权当是做个笔记吧。</p>
<p><span id="more-41308"></span></p>
<p>///////////////////////////////////////////<br />
//  Gentoo USE 标记 （字母排序） //////////<br />
///////////////////////////////////////////</p>
<p>3dfx<br />
添加Xorg下的3dfx显卡支持 (参见: voodoo3)</p>
<p>3dnow<br />
添加AMD处理器的3dnow!多媒体指令集支持</p>
<p>X<br />
添加X11支持</p>
<p>Xaw3d<br />
添加Xaw3d(X athena widgets in 3d)支持。Xaw3d是MIT Athena Widget set for X Windows的增强版本，可以在几乎不修改源代码的情况下为应用程序添加3D视觉效果。</p>
<p>a52<br />
添加用于DVD的ATSC A/52解码支持</p>
<p>aac<br />
添加MPEG-4 AAC音频支持</p>
<p>aalib<br />
添加media-libs/aalib支持 (ASCII-Graphics库) (用于将图形转换成ASCII字符的&#8221;ascii艺术&#8221;)</p>
<p>accessibility<br />
添加辅助功能支持(方便残疾人使用计算机的技术，比如&#8217;at-spi&#8217;库)</p>
<p>acl<br />
添加文件访问控制列表支持［参考文档：文件访问控制列表］</p>
<p>acpi<br />
添加ACPI(高级配置与电源接口)支持［参考文档：高级电源管理常见问题解答］</p>
<p>adabas<br />
添加Adabas数据库引擎支持</p>
<p>adns<br />
添加adns DNS客户端库(一个用于C/C++的异步DNS解析库)支持［主页：http://www.gnu.org/software/adns/］</p>
<p>afs<br />
添加OpenAFS支持 (一个分布式文件系统)［参考文档：OpenAFS帮助聚集分布式数据］</p>
<p>aim<br />
添加AIM即时通信协议支持 (AOL.com的即时消息工具)</p>
<p>alsa<br />
添加media-libs/alsa-lib支持 (高级Linux音效架构)［参考文档：ALSA研究笔记］</p>
<p>altivec<br />
添加G4/G5/ppc970处理器优化支持</p>
<p>ao<br />
在音频回放(sound playback)时使用libao音频库(一个跨平台音频库，对于在多个平台上输出音频很有用)</p>
<p>apache2<br />
当一个程序包同时支持Apache1和Apache2时，选择支持Apache2</p>
<p>apm<br />
添加APM电源管理支持［参考文档：高级电源管理常见问题解答］</p>
<p>arts<br />
添加aRts支持 (给KDE提供音频支持，主要是给KDE库提供必要的库文件)</p>
<p>atm<br />
添加ATM(异步传输模式)协议支持</p>
<p>audiofile<br />
添加libaudiofile(音频文件库)支持</p>
<p>avahi<br />
添加avahi/Zeroconf支持。avahi是利用mDNS协议的，实现本地网内服务发现的软件，如寻找局域网内的在线用户、打印机等。</p>
<p>aqua<br />
添加Aqua/Carbon GUI支持。Aqua是苹果Mac OS X的图形界面，Carbon是其编程接口。</p>
<p>bash-completion<br />
添加bash-completiton支持 (改进了bash的命令补全功能)</p>
<p>bcmath<br />
添加libbcmath支持 (bcmath是一个任意精度数学函数库)</p>
<p>berkdb<br />
添加sys-libs/db支持 (MySQL的Berkeley DB表类型支持)</p>
<p>bidi<br />
添加双向语言支持 (支持由右而左的语言，如：阿拉伯语和希伯来语)</p>
<p>bindist<br />
启用或禁止可选的预编译包(GRP)支持 (比如由于发行许可导致的)</p>
<p>birdstep<br />
添加Birdstep数据库服务器支持</p>
<p>blas<br />
添加virtual/blas库支持 (BLAS是著名的基本线性代数子程序包，被许多实际应用问题和几乎所有有关矩阵计算的软件所采用，可应用于科学和工程设计的矩阵计算问题，也可应用于生产基本线性代数计算的高水平程序库，是数学应用软件的基本核心库。)</p>
<p>bluetooth<br />
添加蓝牙支持</p>
<p>bootstrap<br />
!!仅供内部使用，请不要设置此参数!!在原始系统的引导过程中使用[make stage2]</p>
<p>boundschecking<br />
添加Haj Ten Brugge边界检查补丁，这将禁用固有的PIE+SSP补丁 (边界检查用于防止缓冲区溢出漏洞攻击)</p>
<p>branding<br />
启用Gentoo特定的标识，比如添加此标记后可以获得一个漂亮的&#8221;Gentoo牌&#8221;Gnome启动画面，取代默认的Gnome启动画面。</p>
<p>bsf<br />
添加Apache BSF(Bean Scripting Framework) (dev-java/bsf)支持。BSF支持在Java应用程序内调用脚步语言(Script)，并且支持脚步语言直接访问Java对象和方法。它提供了完整的API实现通过Java访问脚本语言的引擎。</p>
<p>build<br />
!!仅供内部使用，请不要设置此参数!! 用于建立引导过程前半部分的镜像构建[make stage1]</p>
<p>bzip2<br />
使用bzlib压缩库</p>
<p>cairo<br />
添加cairo图形库支持。Cairo是一个支持多种输出设备的跨平台2D图形库。［参考文档：用cairo实现跨平台图形］</p>
<p>calendar<br />
添加日历支持(不是用mcal!)</p>
<p>canna<br />
添加Canna支持 (Canna是一个将日文假名转换到日文汉字的转换引擎)</p>
<p>caps<br />
使用Linux capabilities库(POSIX.1e capabilities)来控制权限［参考文档：Linux安全模块简介；利用capability特征加强Linux系统安全］</p>
<p>cdb<br />
添加qmail作者编写的CDB数据库引擎支持</p>
<p>cdda<br />
添加Compact Disk Digital Audio(数字式激光唱盘,简称CD-DA)支持。CD-DA又称&#8221;Audio CD&#8221;，直径为12cm，容量为74分钟，以恒线速度(CLV)播放，也就是用于激光唱机和diskman的音乐CD。</p>
<p>cddb<br />
添加CDDB支持。CDDB即Internet Compact Disc Database，是一组分布于互联网的各个镜像上的大型CD特征数据库，不过它现在已被商业团体安加了一些版权限制，因此存在后来的freedb.org和MusiaBrainz一类开放替代方案。</p>
<p>cdinstall<br />
直接从CD复制文件而不要求用户来操作，主要用于游戏。</p>
<p>cdparanoia<br />
添加cdparanoia支持。CDParanoia可以直接从CD光盘上抓取音轨，并转换成其它格式的声音文件。另外它还可以能够读取已经被破坏的光盘内容。libparanoia 是KDE和GNOME默认的抓音轨库。</p>
<p>cdr<br />
添加CD刻录硬件支持</p>
<p>cgi<br />
添加CGI脚本支持</p>
<p>chasen<br />
添加chasen支持 (一个日语分词标注系统)</p>
<p>cjk<br />
添加多字节字符语言支持 (中日韩)</p>
<p>clamav<br />
添加Clam防病毒软件支持(通常是额外添加一个插件)</p>
<p>coreaudio<br />
在Mac OS X系统上编译CoreAudio驱动程序</p>
<p>cracklib<br />
使用cracklib来进行密码强度检查</p>
<p>crypt<br />
添加加密支持 (使用基于私钥的mcrypt或基于公钥的gpg)</p>
<p>cscope<br />
添加cscope接口支持 (比如用于vim和emacs)(cscope具有开发支持功能，极大地方便了对源代码库的浏览和查询，vim中内置的ctags支持提供了类似的功能，但cscope的功能更为强大)</p>
<p>css<br />
允许抓取加密DVD上的数据</p>
<p>ctype<br />
启用ctype函数支持 (ANSI C标准库中的字符类型头文件)</p>
<p>cups<br />
添加CUPS(通用UNIX打印系统)支持</p>
<p>curl<br />
添加客户端URL传输库支持 (curl是一个可以使用URL语法传输文件的库，支持HTTP/HTTPS/FTP/FTPS/DICT/TELNET/LDAP/FILE和GOPHER等协议)</p>
<p>curlwrappers<br />
在传输流中使用curl包装</p>
<p>custom-cflags<br />
使用自定义的CFLAGS编译(unsupported)</p>
<p>custom-cxxflags<br />
使用自定义的CXXFLAGS编译(unsupported)</p>
<p>cvs<br />
启用CVS(Concurrent Versions System)集成</p>
<p>cxx<br />
编译C++支持(绑定,额外的库,代码生成, &#8230;)</p>
<p>db2<br />
添加IBM DB2数据库支持</p>
<p>dbase<br />
添加dbase文件格式(Dbase数据库文件.DBF的文件格式)支持</p>
<p>dbm<br />
添加DBM数据库支持 (DBM是柏克莱大学发展的文件/文本型数据库)</p>
<p>dbmaker<br />
添加dbmaker数据库支持</p>
<p>dbus<br />
为需要dbus的程序添加支持 (gpsd,gnomemeeting &#8230;)(dbus是一个消息总线系统，用于在应用程序中发送消息，多用于桌面环境)［主页：http://www.freedesktop.org/Software/dbus］</p>
<p>dbx<br />
添加数据库抽象层支持 (目的是提供给用户一种访问数据库的通用方式)</p>
<p>debug<br />
让configure和makefiles使用调试模式编译</p>
<p>dedicated<br />
添加专属游戏服务器支持(一些程序包并不同时支持服务端和客户端)</p>
<p>dga<br />
添加Xorg下的DGA(直接图形存取)支持</p>
<p>directfb<br />
添加DirectFB支持。［参考文档：DirectFB的学习］</p>
<p>djvu<br />
添加DjVu支持。一个类似于PDF的文档格式，特别适合于扫描文档。</p>
<p>doc<br />
添加额外的文档资料(API/java文档等)</p>
<p>dri<br />
支持DRI硬件3D加速。直接渲染架构(DRI)是一个允许在安全和高效的方式下直接访问显卡硬件的架构。它包括对X服务器的改动，以及对几个客户端库和内核的改动。DRI的第一个重要应用是创建快速的OpenGL实现。 </p>
<p>dts<br />
启用DTS声音解码器支持。</p>
<p>dv<br />
添加一种被许多便携式摄象机使用的编解码器支持</p>
<p>dvb<br />
添加DVB支持 (DVB: 数字视频广播)</p>
<p>dvd<br />
添加DVD支持</p>
<p>dvdr<br />
添加DVD刻录硬件支持 (比如：xcdroast)</p>
<p>eds<br />
添加Evolution-Data-Server支持。我们可以简单地把Evolution看作是Linux下的OutLook，一个易用的电子邮件客户端。但它的定位是Linux/Unix下的个人/工作组信息管理整套解决方案，包括电子邮件、日历、会议计划、联系人管理与任务列表等。</p>
<p>emacs<br />
添加GNU Emacs支持</p>
<p>emboss<br />
添加EMBOSS支持 (EMBOSS:欧洲分子生物学开放软件包，能很好的处理分子生物学研究中的各种问题)</p>
<p>empress<br />
添加Empress数据库支持</p>
<p>empress-bcs<br />
添加Empress数据库本地存取支持</p>
<p>encode<br />
添加视频和音频文件的多媒体编码器支持</p>
<p>enscript<br />
添加enscript支持。Enscript可将ASCII文件转换为PostScript,HTML,RTF,ANSI格式。</p>
<p>esd<br />
添加media-sound/esound支持 (一种KDE的音效合成器)</p>
<p>esoob<br />
添加Easysoft OOD数据库支持</p>
<p>evo<br />
添加mail-client/evolution支持 (Evolution类似微软的Outlook，将电子邮件、日历、联系人管理和任务集成到一个易用的应用程序中)</p>
<p>examples<br />
安装示例源代码</p>
<p>exif<br />
添加读取JPEG和TIFF图片EXIF头信息的支持 (EXIF: 可交换图像文件，实际是一种JPEG文件，是专门为数码相机的照片设定的，可以记录数字照片的属性信息和拍摄数据)</p>
<p>expat<br />
允许使用dev-libs/expat (EXPAT是一个XML解析器，可用于PHP,Perl,Python等)</p>
<p>fam<br />
添加FAM支持 (FAM: 文件变更监视模块，能实时地观察文件系统的变化情况，并做出及时的适当的反应)［参考文档：Linux下的实时数据镜像］</p>
<p>fastcgi<br />
添加FastCGI接口支持 (CGI: 公共网关接口)</p>
<p>fbcon<br />
在内核中为控制台添加framebuffer支持 (FrameBuffer: 帧缓冲，是把显存抽象后的一种设备，可以通过这个设备的读写直接对显存进行操作)</p>
<p>ffmpeg<br />
添加ffmpeg多媒体解码器支持</p>
<p>fftw<br />
使用FFTW库进行傅立叶变换计算 (FFTW: 快速傅立叶变换，用于一维和多维实数或复数的离散傅里叶变换，有些多媒体音效需要fftw)</p>
<p>firebird<br />
添加Firebird数据库支持</p>
<p>firefox<br />
基于Firefox编译，而不是基于Seamonkey/Mozilla编译</p>
<p>flac<br />
添加FLAC音频编码支持 (FLAC是一个类似APE的无损编码方案，但容错性能要优于APE)</p>
<p>flatfile<br />
为平面文件(flat file)添加dbm支持［参考文档：平面文件］</p>
<p>fltk<br />
为FLTK库提供支持。FLTK(Fast Light Toolkit)是一个基于OpenGL的跨平台C++图形化用户界面工具集。</p>
<p>fontconfig<br />
允许通过media-libs/fontconfig工具配置和定制字体</p>
<p>foomaticdb<br />
支持foomatic打印机驱动程序数据库</p>
<p>fortran<br />
添加fortran(f77)支持</p>
<p>freetds<br />
允许使用TDS协议连接MSSQL/Sybase数据库</p>
<p>freewnn<br />
添加FreeWnn支持 (FreeWnn是一个将日文假名转换到日文汉字的转换引擎)</p>
<p>frontbase<br />
添加frontbase数据库支持</p>
<p>ftp<br />
添加FTP(文件传输协议)支持</p>
<p>gcj<br />
添加GCJ支持 (GCC中的JAVA编译器)</p>
<p>gd<br />
添加media-libs/gd支持 (gd库用于动态生成图片)</p>
<p>gd-external<br />
使用外部的gd版本取代内置的版本(可能有些危险)</p>
<p>gdbm<br />
添加sys-libs/gdbm支持 (GNU数据库函数库)</p>
<p>geoip<br />
添加GeoIP支持 (GeoIP一个识别你Web网站访问者的所在国家的工具)</p>
<p>ggi<br />
添加media-libs/libggi支持 (非X窗口的视频api/drivers)</p>
<p>gif<br />
添加GIF图片格式支持</p>
<p>gimp<br />
为GIMP额外编译一个插件</p>
<p>ginac<br />
添加sci-mathematics/ginac(符号数学)支持(GiNaC是一个C++数学计算函数库，主要用于编写科学和工程上使用的计算器)</p>
<p>glut<br />
使用GLUT库编译一个OpenGL插件</p>
<p>gmp<br />
添加dev-libs/gmp支持 (GUN MP库允许你使用任意长度的整数)</p>
<p>gnome<br />
添加GNOME支持</p>
<p>gnome-keyring<br />
支持通过gnome-keyring保存密码</p>
<p>gnuplot<br />
添加gnuplot支持。Gnuplot是一个数学绘图工具，它可以将数据和函数转换为专业的可视化图表。</p>
<p>gnustep<br />
添加GNUstep开发环境支持 (GNUstep是一个免费/面向对象/图形化/跨平台的开发环境)</p>
<p>gnutls<br />
添加net-libs/gnutls支持(GnuTLS是一款提供TLS 1.0 和 SSL 3.0 加密支持的库)</p>
<p>gphoto2<br />
添加数码相机支持</p>
<p>gpm<br />
添加sys-libs/gpm支持 (GPM是通用鼠标协议，为控制台下提供鼠标支持，提供了通用的剪切和粘贴支持)</p>
<p>gps<br />
添加全球定位系统(GPS)支持</p>
<p>graphviz<br />
添加Graphviz库支持。Graphviz是一个绘图工具集，通过绘制直观的图表，往往能够清晰地表现各种结构之间的关系，从而使复杂的问题简单化。</p>
<p>gzip<br />
添加gzip压缩支持</p>
<p>gsl<br />
使用GSL科学计算函数库进行计算。GNU科学计算函数库GSL(GNU Scientific Library)是一个强大的C/C++数值计算函数库。</p>
<p>gsm<br />
支持GSM有损语音压缩编码/解码器。GSM俗称&#8221;全球通&#8221;，是一种起源于欧洲的第二代移动通信技术标准。</p>
<p>gstreamer<br />
添加media-libs/gstreamer支持 (GStreamer是GNOME下构建流媒体应用的编程框架，目标是简化音/视频应用程序的开发)</p>
<p>gtk<br />
添加x11-libs/gtk+支持 (GTK: GIMP工具包，GIMP: 通用图像处理程序)(GTK+是应用程序图形界面编程工具)</p>
<p>gtkhtml<br />
添加gnome-extra/gtkhtml支持 (GtkHTML是一个HTML分析/编辑库)</p>
<p>guile<br />
添加dev-util/guile支持 (Scheme语言解释程序)(Guile是GNU工程的扩展语言库，是一个Scheme语言的实现版本，把这个库链接到你的应用中就为你的应用增加了一种扩展语言)</p>
<p>hal<br />
添加硬件抽象层(HAL)支持 (硬件抽象层完全把系统软件和硬件部分隔离开来，这样就使得系统的设备驱动程序与硬件设备无关，从而大大提高了系统的可移植性)</p>
<p>handbook<br />
允许为KDE4生成参考手册</p>
<p>hardened<br />
默认为工具链(gcc/glibc/binutils)启用安全增强特性</p>
<p>hddtemp<br />
启用硬盘驱动器温度监控(app-admin/hddtemp)</p>
<p>hdf5<br />
启用HDF5(Hierarchical Data Format v5)支持。HDF5是一个层次型的数据存储格式，包含了数据定义和支持接口，支持并行I/O。HDF5比较适合用于那些无法用一般的格式存放的复杂科学数据。目前很多遥感存储采用HDF5格式来实现。</p>
<p>ibm<br />
添加IBM ppc64体系结构支持</p>
<p>iconv<br />
添加iconv字符集转换函数库支持</p>
<p>icq<br />
添加ICQ通信协议支持</p>
<p>icu<br />
添加ICU(Internationalization Components for Unicode)支持(使用dev-libs/icu)。是一个C/C++的Unicode库，可以根据各地的习俗约定格式化数字、日期、时间和货币，以及对这些格式中的文本进行语法分析。</p>
<p>idn<br />
添加IDN(Internationalized Domain Names,国际化域名)支持</p>
<p>ieee1394<br />
添加IEEE1394火线支持(数码相机,数码摄像机等)</p>
<p>imagemagick<br />
添加Imagemagick支持(ImageMagick类似于GD但效果比GD好)</p>
<p>imap<br />
添加IMAP支持 (IMAP: 网际网络信息存取协议，是一种比POP3更好的协议，可取代POP3协议)</p>
<p>imlib<br />
添加media-libs/imlib支持 (imlib: 一个图片加载和显示库，用于Gnome图形用户环境)</p>
<p>inifile<br />
为.ini文件添加dbm数据库支持</p>
<p>innodb<br />
为mySQL添加innodb表类型支持 (innoDB表类型可以支持事务处理，且性能优秀)</p>
<p>interbase<br />
添加Interbase数据库支持</p>
<p>iodbc<br />
添加iODBC驱动程序库支持 (ODBC: 开放数据库连接)</p>
<p>ipod<br />
允许访问iPod设备</p>
<p>ipv6<br />
添加IPv6支持</p>
<p>jabber<br />
添加jabber即时通信协议支持 (jabber是一款即时消息软件)</p>
<p>jack<br />
添加JACK音频连接工具包 (低延迟、高性能的中间过程音频连接，以及音频设备共享，适合于专业音频应用程序)</p>
<p>java<br />
添加Java支持</p>
<p>java5<br />
使用Java 1.5编译JAVA支持</p>
<p>java6<br />
使用Java 1.6编译JAVA支持</p>
<p>javascript<br />
添加javascript支持</p>
<p>jbig<br />
为tiff,Hylafax,ImageMagick等添加jbig-kit支持。jbig-kit是一种高压缩率且不失真的影像压缩函数库，适用於传真或扫描影像。</p>
<p>jingle<br />
允许jabber使用语音进行通信。Jabber是一种开放式架构的即时通讯系统，可以和AOL、ICQ以及YAHOO通兼容。</p>
<p>joystick<br />
在所有软件包里添加joysticks(游戏操纵杆)支持</p>
<p>jpeg<br />
添加JPEG图片格式支持</p>
<p>jpeg2k<br />
添加JPEG 2000图片格式支持</p>
<p>kontact<br />
添加KDE个人信息管理支持(kde-base/kdepim*)</p>
<p>kde<br />
添加kde-base/kde支持 (KDE桌面环境)</p>
<p>kdeenablefinal<br />
[试验]使用enable-final标志建立kde的ebuilds，可以加速编译，但是要占用大量内存。官方反对使用此标记。</p>
<p>kdehiddenvisibility<br />
编译KDE时默认隐藏符号(使用GCC -fvisibility=hidden 命令行选项)，必须使用GCC4.1以上版本。</p>
<p>kdeprefix<br />
在KDE的安装目录中添加SLOT前缀(/usr/kde/$SLOT)，否则将直接安装到FHS兼容的位置(/usr)</p>
<p>kerberos<br />
添加kerberos支持(Kerberos是一个基于对称密码的认证协议，该协议能够提供强安全的认证服务)［参考文档：Kerberos认证协议］</p>
<p>kolab<br />
添加Kolab Groupware Server支持。Kolab是提供EMAIL、日历、任务计划、通知联系等功能的集成服务程序。</p>
<p>krb4<br />
添加可选的kerberos4兼容支持 (Kerberos 4协议实现中存在多个加密漏洞，目前为版本5)</p>
<p>ladspa<br />
添加LADSPA(Linux Audio Developer&#8217;s Simple Plugin API)支持</p>
<p>lame<br />
使用LAME库作为MP3编码器。LAME据说是目前最好的MP3编码器，是编码高品质MP3的最佳选择。</p>
<p>lapack<br />
添加virtual/lapack数值计算库支持(lapack是一个用于线性代数计算的子程序包)</p>
<p>lash<br />
添加LASH支持。LASH是一个用于Linux音频应用程序的会话管理系统，它允许你保存和恢复由多个相互关联的应用程序组成的音频会话状态。</p>
<p>latex<br />
添加LaTeX支持。LaTeX是一种基于TeX的排版系统，即使使用者没有排版和程序设计的知识也可以充分发挥由TeX所提供的强大功能。</p>
<p>lcms<br />
添加lcms支持。lcms库可以提供色彩管理功能。</p>
<p>ldap<br />
添加LDAP(轻量级目录访问协议)支持。</p>
<p>libcaca<br />
添加彩色ASCII艺术图形支持</p>
<p>libedit<br />
使用libedit库代替Readline库。libedit是一个非GPL的与GNU Readline库兼容的替代品。</p>
<p>libgda<br />
添加GDA(GNOME Data Access)支持。GDA提供了一种访问多种不同类型的数据源的统一架构，既包括传统的关系型数据库也包括任何可以想象的邮件服务器数据以及LDAP数据等。</p>
<p>libnotify<br />
添加桌面通知机制(desktop notification)支持。</p>
<p>libsamplerate<br />
添加libsamplerate支持。libsamplerate(Secret Rabbit Code)是一个音频重采样库，比如将44.1kHz的CD音频转换为48kHz的DVD音频。</p>
<p>libwww<br />
添加libwww库(通用WEB应用程序编程接口)支持</p>
<p>lirc<br />
添加lirc支持 (lirc: Linux红外端口控制工具)</p>
<p>livecd<br />
!!仅供内部使用，请不要设置此参数!! 在livecd构建中使用</p>
<p>lm_sensors<br />
添加lm_sensors支持 (硬件监测软件，提供电压，温度，风扇转速等的实时监测)</p>
<p>lua<br />
添加Lua脚本支持。Lua是一种小型的脚本语言，设计目的是为了嵌入其他应用程序中，从而为应用程序提供灵活的扩展和定制功能。</p>
<p>lzo<br />
添加lzo压缩支持。lzo的压缩率并不高，但它是最快速的压缩和解压的算法，主要用于实时性较高的场合。</p>
<p>m17n-lib<br />
添加m17n-lib支持 (&#8220;m17n&#8221;是&#8221;多语言化&#8221;的缩写。m17n-lib是一个C语言的多语言文本处理库，可让应用程序实现多语言支持)</p>
<p>mad<br />
添加mad(一个高质量的mp3解码库/命令行前端)支持</p>
<p>maildir<br />
添加maildir风格(~/.maildir)的邮件缓冲池支持</p>
<p>mailwrapper<br />
添加mailwrapper支持，允许使用其他的MTA(如postfix)取代sendmail</p>
<p>matroska<br />
添加matroska多媒体容器格式(.mkv .mka .mks)支持。Matroska是一种新的多媒体封装格式，它可将多种不同编码的视频及16条以上不同格式的音频和不同语言的字幕流封装到同一个文件当中。</p>
<p>matrox<br />
添加Matrox MGA系列显卡支持</p>
<p>mbox<br />
添加mbox风格(/var/spool/mail)的邮件缓冲池支持</p>
<p>mcve<br />
添加MCVE信用卡支付系统支持</p>
<p>memlimit<br />
对于支持内存限制的程序启用内存限制支持</p>
<p>mhash<br />
添加mhash库支持。mhash是一种线程安全的哈希算法库。</p>
<p>migemo<br />
为日语添加migemo支持</p>
<p>mikmod<br />
添加libmikmod支持来播放音轨格式的音频文件</p>
<p>milter<br />
为sendmail添加milter邮件过滤器支持</p>
<p>mime<br />
添加MIME支持。MIME是描述消息内容类型的因特网标准，MIME消息能包含文本、图像、音频、视频以及其他应用程序专用的数据。</p>
<p>minimal<br />
安装一个最小化的build(比如禁止插件/字体/大多数驱动程序/非关键的特性)</p>
<p>mmap<br />
添加mmap(自内存映射)支持［参考文档：内存映射mmap］</p>
<p>mmx<br />
为Pentium MMX和Athlon等级的处理器添加最佳化优化支持</p>
<p>mng<br />
添加libmng库以支持MNG格式的图片</p>
<p>modplug<br />
添加libmodplug支持。Libmodplug是一款用于mod类音乐格式(.mod .s3m .it .xm 等后缀)播放和转换的函数库。</p>
<p>mono<br />
添加Mono支持。Mono是一个Linux上的.NET平台。</p>
<p>motif<br />
添加motif工具集支持。［参考文档：GNOME与KDE的战争］</p>
<p>mozilla<br />
添加Mozilla web浏览器支持</p>
<p>mp3<br />
添加读取mp3文件支持</p>
<p>mp4<br />
添加读取mp4文件支持。mp4并不是一种编码格式，它实际上只是一种容器</p>
<p>mpeg<br />
添加libmpeg3库支持(libmpeg3是一个处理mpeg编码的库)</p>
<p>mpi<br />
添加MPI(Message Passing Interface)支持 (MPI: 消息传递接口，是一套可用于Linux高性能计算集群系统上的数据传送模型，目标是创建一套和程序语言、计算机种类无关的标准，用以撰写收送讯息的程序码)</p>
<p>mplayer<br />
添加mplayer播放/编码支持</p>
<p>msn<br />
添加MSN Messenger通信协议支持</p>
<p>msql<br />
添加MSQL数据库支持</p>
<p>mssql<br />
添加Microsoft SQL Server数据库支持</p>
<p>mtp<br />
添加MTP(Media Transfer Protocol,媒体传输协议)支持。［参考文档：媒体传输协议］</p>
<p>mule<br />
为XEmacs添加</p>
]]></content:encoded>
			<wfw:commentRss>http://sigmav.net/2011/04/12/gentoo-use%e6%a0%87%e8%ae%b0%e5%85%a8%e8%ae%b0%e5%bd%95%ef%bc%88%e8%bd%ac%e7%bc%96%e8%87%aa%e8%ae%ba%e5%9d%9b%ef%bc%89/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>蛋疼的startdict使用方法</title>
		<link>http://sigmav.net/2011/03/30/stardict_usage/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=stardict_usage</link>
		<comments>http://sigmav.net/2011/03/30/stardict_usage/#comments</comments>
		<pubDate>Thu, 31 Mar 2011 01:34:41 +0000</pubDate>
		<dc:creator>西玛哒</dc:creator>
				<category><![CDATA[IT悟语]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[软件]]></category>
		<category><![CDATA[Startdict]]></category>
		<category><![CDATA[Xfce]]></category>

		<guid isPermaLink="false">http://sigmav.net/?p=41300</guid>
		<description><![CDATA[自从配好了Gentoo之后就一直在写****的论文翻译，由于英文对我来说目前就是个灾难，因此除了Goole Translate之外，一个本地的电子辞典是十分必要的。 Linux下的辞典当然是雷打不动的startdict喽，我使用的是xfce4，所以需要安装startdict +gtk emerge -av startdict emerge -s startdict- China Overlay 的Portage中放了不少实用的辞典，省了不少麻烦，按需安装即可。 当然，我还是搞到了500M+的超级辞典库，为了把他们放到我的辞典目录还真费了我一番心思,由于辞典库解压后，每一个辞典都在一个独立的文件夹内，而/usr/share/stardict/dic只有一个文件夹，里面放置了所有辞典，因此需要遍历这些文件夹，将所有文件拷贝过去。这里借用了一个遍历脚本： #!/bin/bash #RCP.sh list_alldir(){ for file in $1/* do if [ -d $file ]; then # echo $file #Do the stuff here find $file -maxdepth 1 -type f -exec cp {} $2/ ; # find $file ! -name "." -type d -prune [...]]]></description>
			<content:encoded><![CDATA[<p>自从配好了Gentoo之后就一直在写****的论文翻译，由于英文对我来说目前就是个灾难，因此除了Goole Translate之外，一个本地的电子辞典是十分必要的。<br />
 Linux下的辞典当然是雷打不动的startdict喽，我使用的是xfce4，所以需要安装startdict +gtk</p>
<pre class="brush: shell">
  emerge -av startdict
  emerge -s startdict-
</pre>
<p> China Overlay 的Portage中放了不少实用的辞典，省了不少麻烦，按需安装即可。<br />
 当然，我还是搞到了500M+的超级辞典库，为了把他们放到我的辞典目录还真费了我一番心思,由于辞典库解压后，每一个辞典都在一个独立的文件夹内，而/usr/share/stardict/dic只有一个文件夹，里面放置了所有辞典，因此需要遍历这些文件夹，将所有文件拷贝过去。这里借用了一个遍历脚本：<br />
<span id="more-41300"></span></p>
<pre class="brush: shell">
#!/bin/bash
#RCP.sh
list_alldir(){
    for file in $1/*
    do
        if [ -d $file ]; then
           # echo $file          #Do the stuff here
            find $file  -maxdepth 1 -type f -exec cp {} $2/ ;
           # find $file ! -name "." -type d -prune -o -type f
            list_alldir $file   #Recursion
        fi
    done
}
if [ $# -eq 2 ]
then
    list_alldir "$1" "$2"
elif [ $# -eq 1 ]
then
    list_alldir "." "$1"
else
    echo "Usage : $0 <src dir> [dist dir]"
fi
</src></pre>
<p>  这里只要在存放辞典的目录下执行脚本，参数选择/usr/share/stardict/dic 即可，一顿折腾之后，辞典就全都放进去了。<br />
  然而&#8230;&#8230;&#8230;&#8230;<br />
  那个坑爹的词库里有1000+个辞典，这会导致stardict打开文件数过多。都知道*nix程序打开文件是有数量限制的，stardict打开辞典的动作在先，之后才加载字体、图标等，因此就会出现奇奇怪怪的状况：<br />
  1、图标变成了gtk默认图标，甚至无显示。<br />
  2、字体显示变成方框，甚至是英文也会方框。<br />
  一般来说，字体变方框是因为缺少字体，stardict中好用的字体是Tahoma,可以无耻的从windows中拷贝过来用。</p>
<pre escaped="True">
  cp /where/is/font/Tahoma.ttf  /usr/share/fonts/ttf-tahoma/
  chmod -R 755 /usr/share/fonts/ttf-tahoma
  fc-cache -fv
</pre>
<p>  看过刷屏之后，字体就应该会加载了，但是这没有解决问题，我只能悲剧的承认贪心是不好的。<br />
  然后我把一些字典（900多个）放到了dic/xxx 的一个文件夹中，发现居然还是被加载，难道之前的工作白做了？&#8230;..<br />
  猜想没有验证，我就直接把xxx文件夹找了个别的地方放起来，问题算是解决了。<br />
  将stardict 放在Autostart中(用xfce的session and startup 管理器实现),算是能用了。</p>
<p>  把讨厌的取词体验放一边不提，单说窗口的呼出问题，stardict 的gtk版本可以运行多个实例，也就是说一个实例运行起来之后就如同撒了手的氢气球，除了移动鼠标到托盘区寻觅之外别无他法（至少我没找到好方法），这样的问题就导致无法使用快捷键呼出窗口查单词，之前被灵格斯之类惯出了ALT+L查词的毛病，实在是改不掉，一番寻觅之后，找到了一个蛋疼的使用方法：传说中的sdcv</p>
<pre escaped="True">
  emerge -av sdcv
</pre>
<p>  sdcv是一个stardict的命令行界面，做的很简单，但功能强大，包括模糊匹配功能一应俱全。有很多神写过sdcv配合vim,emacs之类神器的使用方法，我没有那么高的要求，就从简使用了，很简单，打开一个小Terminal，直接查词，不用了就ALT+F4关掉～，脚本如下：</p>
<pre escaped="True">
    terminal --geometry=40x25 -T Dictionary -e sdcv
</pre>
<p>  我使用的是xfce-terminal，其他的参数可能会有区别，但是大体类似。<br />
  我没有使用脚本，因为看起来xfce的快捷键总会慢半拍，我就直接把命令写进去，并绑定了<alt><l>按键～<br />
  结果来看，还算是比较满意的。</p>
<p>  不太清楚stardict项目目前是什么状态，据说gnome的版本是有快捷键绑定的，希望gtk版本能解决这个问题。</l></alt></p>
]]></content:encoded>
			<wfw:commentRss>http://sigmav.net/2011/03/30/stardict_usage/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>试用VimRepress写博客</title>
		<link>http://sigmav.net/2011/03/23/%e8%af%95%e7%94%a8vimrepress%e5%86%99%e5%8d%9a%e5%ae%a2/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=%25e8%25af%2595%25e7%2594%25a8vimrepress%25e5%2586%2599%25e5%258d%259a%25e5%25ae%25a2</link>
		<comments>http://sigmav.net/2011/03/23/%e8%af%95%e7%94%a8vimrepress%e5%86%99%e5%8d%9a%e5%ae%a2/#comments</comments>
		<pubDate>Wed, 23 Mar 2011 12:58:27 +0000</pubDate>
		<dc:creator>西玛哒</dc:creator>
				<category><![CDATA[IT悟语]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[Vim]]></category>
		<category><![CDATA[Wordpress]]></category>

		<guid isPermaLink="false">http://sigmav.net/2011/03/%e8%af%95%e7%94%a8vimrepress%e5%86%99%e5%8d%9a%e5%ae%a2/</guid>
		<description><![CDATA[最近在配置我的vim ,目前一切安好，由于之前多次失败，现在已经有丰富的乱码问题解决经验， 乱码已经不是问题了。 #include int testing; 本文使用 www.isspy.com 那里获得的vimrepress插件书写，仅作测试～]]></description>
			<content:encoded><![CDATA[<p>最近在配置我的vim ,目前一切安好，由于之前多次失败，现在已经有丰富的乱码问题解决经验，<br />
 乱码已经不是问题了。</p>
<pre escaped="True">
   #include <test .h>
   int testing;
</test></pre>
<p>本文使用 www.isspy.com  那里获得的vimrepress插件书写，仅作测试～</p>
]]></content:encoded>
			<wfw:commentRss>http://sigmav.net/2011/03/23/%e8%af%95%e7%94%a8vimrepress%e5%86%99%e5%8d%9a%e5%ae%a2/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>mini2440 Helloworld驱动</title>
		<link>http://sigmav.net/2011/03/01/mini2440-helloworld%e9%a9%b1%e5%8a%a8/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=mini2440-helloworld%25e9%25a9%25b1%25e5%258a%25a8</link>
		<comments>http://sigmav.net/2011/03/01/mini2440-helloworld%e9%a9%b1%e5%8a%a8/#comments</comments>
		<pubDate>Tue, 01 Mar 2011 15:42:35 +0000</pubDate>
		<dc:creator>西玛哒</dc:creator>
				<category><![CDATA[C/C++]]></category>
		<category><![CDATA[IT悟语]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[硬件与嵌入式]]></category>
		<category><![CDATA[Driver]]></category>
		<category><![CDATA[mini2440]]></category>

		<guid isPermaLink="false">http://sigmav.net/2011/03/mini2440-helloworld%e9%a9%b1%e5%8a%a8/</guid>
		<description><![CDATA[&#160; &#160; Mini2440 是基于S3C2440（2410工业版） 的Arm9平台，实验平台已经移植了Linux，目前正打算添加RF24L01接口驱动程序。 &#160; 首先建立Helloworld驱动程序，作为驱动开发的模版，记录如下： &#160;&#160; 一、建立编译环境： &#160;&#160; mini2440开发环境 &#160;&#160;&#160; 编译器 ： arm-linux-gcc&#160;&#160;&#160; 3.4.1 &#160;&#160;&#160; linux内核版本 ： 2.6.32.2 &#160;&#160;&#160; 解压并记录内核源码树 位置例：/opt/FriendlyARM/mini2440/linux-2.6.32.2 &#160;&#160; 二、编写驱动程序文件： #include &#60;linux/init.h&#62; #include &#60;linux/module.h&#62; MODULE_LICENSE(&#34;Dual BSD/GPL&#34;); static int hello_init(void) { printk(KERN_ALERT &#34;Hello modulen&#34;); return 0; } static int hello_exit(void) { printk(KERN_ALERT &#34;Goodby modulen&#34;); return 0; } module_init(hello_init); module_exit(hello_exit); &#160;&#160;&#160;&#160;&#160; 上述实现了在加载时打印相关语句功能，KERN_ALERT [...]]]></description>
			<content:encoded><![CDATA[<p>&#160;</p>
<p>&#160; Mini2440 是基于S3C2440（2410工业版） 的Arm9平台，实验平台已经移植了Linux，目前正打算添加RF24L01接口驱动程序。</p>
<p>&#160; 首先建立Helloworld驱动程序，作为驱动开发的模版，记录如下：</p>
<h4>&#160;&#160; 一、建立编译环境：</h4>
<p>&#160;&#160; mini2440开发环境</p>
<p>&#160;&#160;&#160; 编译器 ： arm-linux-gcc&#160;&#160;&#160; 3.4.1</p>
<p>&#160;&#160;&#160; linux内核版本 ： 2.6.32.2 </p>
<p>&#160;&#160;&#160; 解压并记录内核源码树 位置例：/opt/FriendlyARM/mini2440/linux-2.6.32.2</p>
<h4>&#160;&#160; 二、编写驱动程序文件：</h4>
<pre class="brush: cpp">#include &lt;linux/init.h&gt;
#include &lt;linux/module.h&gt;
MODULE_LICENSE(&quot;<span style="color: #8b0000">Dual BSD/GPL</span>&quot;);

<span style="color: #0000ff">static</span> <span style="color: #0000ff">int</span> hello_init(<span style="color: #0000ff">void</span>)
{
    printk(KERN_ALERT &quot;<span style="color: #8b0000">Hello modulen</span>&quot;);
    <span style="color: #0000ff">return</span> 0;
}
<span id="more-41288"></span>
<span style="color: #0000ff">static</span> <span style="color: #0000ff">int</span> hello_exit(<span style="color: #0000ff">void</span>)
{
    printk(KERN_ALERT &quot;<span style="color: #8b0000">Goodby modulen</span>&quot;);
    <span style="color: #0000ff">return</span> 0;
}

module_init(hello_init);
module_exit(hello_exit);</pre>
<p>&#160;&#160;&#160;&#160;&#160; 上述实现了在加载时打印相关语句功能，KERN_ALERT 表示了优先级为KERN_ALERT级别，较低级别的printk可能出现在终端无显示的情况。</p>
<h4>&#160;&#160;&#160; 三、编写Makefile</h4>
<p>&#160;&#160;&#160;&#160;&#160; 这里所配置的makefile模板文件如下： </p>
<pre>#Mini2440 General Makefile for SSDUT_MCU_LAB
#Auth: sigmax6
#2011 03 01

CC = arm-linux-gcc                                 #name of platform compiler
KDIR ?= /opt/FriendlyARM/mini2440/linux-2.6.32.2    #platform linux source dir
PWD := $(shell pwd)

obj-m := hello.o                                   #obj-m means hello.ko , and it depends on hello.o

default:
	$(MAKE) -C $(KDIR) M=$(PWD) modules            #make 

.PHONY: clean
clean:
	$(MAKE) -C $(KDIR) M=$(PWD) clean              #clean
	rm -rf *.o *.ko .*.cmd *.mod.*</pre>
<p>&#160;&#160; 实际上，对于一个驱动模块来说，在有了hello.c之后，只要一句规则就可以生成目标模块</p>
<p>&#160;&#160;&#160;&#160; obj-m := hello.o</p>
<blockquote>
<p>&#160; <br />&#160;&#160;&#160; 熟悉的 make , 但是对 2.6 内核建立系统不熟悉的读者, 可能奇怪这个 makefile 如何工作. 毕竟上面的这一行不是一个传统的 makefile 的样子. 答案, 当然, 是内核建立系统处理了余下的工作. 上面的安排 </p>
<p>( 它利用了由 GNU make 提供的扩展语法 )表明有一个模块要从目标文件 hello.o 建立. 在从目标文件建立后结果模块命名为 hello.ko.</p>
<p>反之, 如果你有一个模块名为 module.ko, 是来自 2 个源文件( 姑且称之为, file1.c 和 file2.c ), 正确的书<br />
    <br />写应当是: </p>
<p>obj-m := module.o </p>
<p>module-objs := file1.o file2.o </p>
<p>对于一个象上面展示的要工作的 makefile, 它必须在更大的内核建立系统的上下文被调用. 如果你 </p>
<p>的内核源码数位于, 假设, 你的 ~/kernel-2.6 目录, 用来建立你的模块的 make 命令( 在包含模块源码 </p>
<p>和 makefile 的目录下键入 )会是: </p>
<p>make -C ~/kernel-2.6 M=`pwd` modules </p>
<p>这个命令开始是改变它的目录到用 -C 选项提供的目录下( 就是说, 你的内核源码目录 ). 它在那里 </p>
<p>会发现内核的顶层 makefile. 这个 M= 选项使 makefile 在试图建立模块目标前, 回到你的模块源码目 </p>
<p>录. 这个目标, 依次地, 是指在 obj-m 变量中发现的模块列表, 在我们的例子里设成了 module.o. </p>
<p>键入前面的 make 命令一会儿之后就会感觉烦, 所以内核开发者就开发了一种 makefile 方式, 使得生 </p>
<p>活容易些对于那些在内核树之外建立模块的人. 这个窍门是如下书写你的 makefile: </p>
<p></p>
<pre>

# If KERNELRELEASE is defined, we've been invoked from the
  # kernel build system and can use its language.

ifneq ($(KERNELRELEASE),)

obj-m := hello.o

# Otherwise we were called directly from the command

# line; invoke the kernel build system.

else

KERNELDIR ?= /lib/modules/$(shell uname -r)/build

PWD := $(shell pwd)

default:

$(MAKE) -C $(KERNELDIR) M=$(PWD) modules

endif

</pre>
<p>&#160;&#160;&#160; 再一次, 我们看到了扩展的 GNU make 语法在起作用. 这个 makefile 在一次典型的建立中要被读 2次. 当从命令行中调用这个 makefile , 它注意到 KERNELRELEASE 变量没有设置. 它利用这样一个事实来定位内核源码目录, 即已安装模块目录中的符号连接指回内核建立树. 如果你实际上没有运行你在为其而建立的内核, 你可以在命令行提供一个 KERNELDIR= 选项, 设置 KERNELDIR 环境变量, 或者重写 makefile 中设置 KERNELDIR 的那一行. 一旦发现内核源码树, makefile 调用 default: 目标, 来运行第 2 个 make 命令( 在 makefile 里参数化成 $(MAKE))象前面描述过的一样来调用内核建立系统. 在第 2 次读, makefile 设置 obj-m, 并且内核的 makefile 文件完成实际的建立模块工作.这种建立模块的机制你可能感觉笨拙模糊. 一旦你习惯了它, 但是, 你很可能会欣赏这种已经编排进内核建立系统的能力. 注意, 上面的不是一个完整的 makefile; 一个真正的 makefile 包含通常的目标类型来清除不要的文件, 安装模块等等.</p>
<p>” —— 《Linux设备驱动程序 中文第三版》</p></blockquote>
<h4>四、编译生成模块 </h4>
<p>在当前目录下 使用make命令生成.ko模块文件</p>
<p>&#160; 按照上文的讲解,其中还会生成很多中间文件,格式为*.cmd *.mod.* 等 这些文件是系统将你的代码转化而来的。最终产品是.ko文件，也就是驱动模块。</p>
<p>&#160;&#160; Helloworld模块没有实际的操作，所以并不需要测试程序。一般情况下驱动程序需要通过测试程序验证其功能。</p>
<p>&#160;&#160; 将.ko文件下载到目标系统中，使用：</p>
<p> #insmod hello.ko</p>
<p>就可以看到 “Hello module” 出现在终端上。</p>
<p> 同理 </p>
<p> #rmmod hello&#160;&#160; （这里没有后缀名，因为调用的是模块名称）</p>
<p>&quot;会显示 “Goodbye module”</p>
<p>==========================================================</p>
]]></content:encoded>
			<wfw:commentRss>http://sigmav.net/2011/03/01/mini2440-helloworld%e9%a9%b1%e5%8a%a8/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>apt-get 的彩蛋</title>
		<link>http://sigmav.net/2010/12/09/apt-get-%e7%9a%84%e5%bd%a9%e8%9b%8b/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=apt-get-%25e7%259a%2584%25e5%25bd%25a9%25e8%259b%258b</link>
		<comments>http://sigmav.net/2010/12/09/apt-get-%e7%9a%84%e5%bd%a9%e8%9b%8b/#comments</comments>
		<pubDate>Thu, 09 Dec 2010 12:38:01 +0000</pubDate>
		<dc:creator>西玛哒</dc:creator>
				<category><![CDATA[IT悟语]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[Ubuntu]]></category>

		<guid isPermaLink="false">http://sigmav.net/2010/12/apt-get-%e7%9a%84%e5%bd%a9%e8%9b%8b/</guid>
		<description><![CDATA[之前用过一段时间的Ubuntu/Debian 系列，倒是对apt-get稍微熟悉，不过，彩蛋什么的是绝对没有想到过，程序员总是会适当的幽默自己，并把这种幽默传递出去。^_^        #apt-get moo     有时候还真是不明白为什么都爱拿母牛开玩笑…]]></description>
			<content:encoded><![CDATA[<p>之前用过一段时间的Ubuntu/Debian 系列，倒是对apt-get稍微熟悉，不过，彩蛋什么的是绝对没有想到过，程序员总是会适当的幽默自己，并把这种幽默传递出去。^_^</p>
<blockquote><p>       #apt-get moo</p></blockquote>
<p><span style="background-color: #f4f5f7; color: #555555;">   </span><br />
<a href="http://www.flickr.com/photos/sigmax6/5245894075/" title="Flickr 上 sigmax6 的 apt_get_moo"><img src="http://farm6.staticflickr.com/5048/5245894075_318332baa8.jpg" width="367" height="160" alt="5245894075 318332baa8 apt get 的彩蛋"  title="apt get 的彩蛋" /></a><br />
有时候还真是不明白为什么都爱拿母牛开玩笑…</p>
]]></content:encoded>
			<wfw:commentRss>http://sigmav.net/2010/12/09/apt-get-%e7%9a%84%e5%bd%a9%e8%9b%8b/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>fatal error C1010: 在查找预编译头指令时遇到意外的文件结尾</title>
		<link>http://sigmav.net/2010/12/02/fatal-error-c1010/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=fatal-error-c1010</link>
		<comments>http://sigmav.net/2010/12/02/fatal-error-c1010/#comments</comments>
		<pubDate>Thu, 02 Dec 2010 15:12:50 +0000</pubDate>
		<dc:creator>西玛哒</dc:creator>
				<category><![CDATA[IT悟语]]></category>
		<category><![CDATA[Bug]]></category>
		<category><![CDATA[MFC]]></category>
		<category><![CDATA[Windows]]></category>

		<guid isPermaLink="false">http://sigmav.net/2010/12/fatal-error-c1010-%e5%9c%a8%e6%9f%a5%e6%89%be%e9%a2%84%e7%bc%96%e8%af%91%e5%a4%b4%e6%8c%87%e4%bb%a4%e6%97%b6%e9%81%87%e5%88%b0%e6%84%8f%e5%a4%96%e7%9a%84%e6%96%87%e4%bb%b6%e7%bb%93%e5%b0%be/</guid>
		<description><![CDATA[之前在VC6.0中的一个MFC工程，转移到VS2010中，修改了一些小问题，Debug编译终于通过了，但是在Release的时候出现了以下Error~ XXX.cpp(189) : fatal error C1010: 在查找预编译头指令时遇到意外的文件结尾   出现这样的问题很不解，但是提到预编译头，在MFC中就只有那个stdafx.h了，而且错误提示中也亲切的告诉你&#60;是不是忘了添加#include “stdafx.h”了&#62;，当然 如果这是一个MFC模块，那么很快就能解决问题： #include “stdafx.h”   就可以了，当然，如果这个模块是一段标准C++代码，没必要加入stdafx预编译，那么需要针对这个文件去掉预编译支持。       这样一来，编译就顺利通过了。   不过，Release之后的工程出现了更大的Bug，看来设计的有些问题，估计是优化造成的~ Keep working~]]></description>
			<content:encoded><![CDATA[<p>之前在VC6.0中的一个MFC工程，转移到VS2010中，修改了一些小问题，Debug编译终于通过了，但是在Release的时候出现了以下Error~</p>
<blockquote><p>XXX.cpp(189) : fatal error C1010: 在查找预编译头指令时遇到意外的文件结尾</p></blockquote>
<p><span style="background-color: #f4f5f7; color: #555555;">  出现这样的问题很不解，但是提到预编译头，在MFC中就只有那个stdafx.h了，而且错误提示中也亲切的告诉你&lt;是不是忘了添加#include “stdafx.h”了&gt;，当然 如果这是一个MFC模块，那么很快就能解决问题：</span></p>
<blockquote><p><span style="background-color: #f4f5f7; color: #555555;"> #include “stdafx.h”</span></p></blockquote>
<p><span style="background-color: #f4f5f7; color: #555555;">  就可以了，当然，如果这个模块是一段标准C++代码，没必要加入stdafx预编译，那么需要<strong>针对这个文件去掉预编译支持</strong>。</span></p>
<p><span style="background-color: #f4f5f7; color: #555555;">   </span></p>
<p><span style="background-color: #f4f5f7; color: #555555;">  这样一来，编译就顺利通过了。</span></p>
<p><span style="background-color: #f4f5f7; color: #555555;">  不过，Release之后的工程出现了更大的Bug，看来设计的有些问题，估计是优化造成的~ Keep working~</span></p>
]]></content:encoded>
			<wfw:commentRss>http://sigmav.net/2010/12/02/fatal-error-c1010/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>UNIX的救赎</title>
		<link>http://sigmav.net/2010/11/08/unix%e7%9a%84%e6%95%91%e8%b5%8e/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=unix%25e7%259a%2584%25e6%2595%2591%25e8%25b5%258e</link>
		<comments>http://sigmav.net/2010/11/08/unix%e7%9a%84%e6%95%91%e8%b5%8e/#comments</comments>
		<pubDate>Mon, 08 Nov 2010 14:00:38 +0000</pubDate>
		<dc:creator>西玛哒</dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[SigTwit]]></category>
		<category><![CDATA[笑看人生]]></category>
		<category><![CDATA[Unix]]></category>

		<guid isPermaLink="false">http://sigmav.net/2010/11/unix%e7%9a%84%e6%95%91%e8%b5%8e/</guid>
		<description><![CDATA[Those who do not understand Unix are condemned to reinvent it, poorly. ----Henry Spencer 不懂Unix 的人注定最终还要重复发明一个蹩脚的Unix。 ——亨利·斯宾赛 1987 年11 月 是的，没错，UNIX 不是电影演员，也不是不是什么哲学家，不是某子、某克斯人名的缩写，而是一种计算机操作系统。你我可能都不熟悉它，我甚至也说不出它现在具体都用在哪儿，也许说BSD，Linux，Mac的各种猛兽操作系统上仍然是Unix的灵魂附体。然而Unix已经不仅仅是一个操作系统了，并且它的概念也并不能说明什么问题。即便是学过了电脑的我们最多也只是知道除了windows的疆域之外，还有广阔的领土，他们打从C语言诞生前就在那儿，优雅的跨越四分之一个世纪，踏过PC、windows和互联网井喷式扩张的版图，正如所说的那样： Unix is not so much an operating system as an oral history. 与其说Unix 是个操作系统，不如说是一部口述的历史。 &#60;author&#62;Neal Stephenson&#60;/author&#62; 他比我们大部分的人都要年长很多。然而即便如此，我也从来没有想过UNIX可以出现我生活中在除了打开一个console去玩儿vim和gcc之外的任何角落。也从来没有想过UNIX拥有什么哲学。想来，自己没有想什么“哲学”之类的东西已经很久了。 但，正如触发我所思所想的书中提到的那样： 哲学：很有所谓 在从CSDN上看到了对《UNIX编程艺术》&#124;“The.Art.of.UNIX.programming”一书的推荐之后，想起之前看到这本书时，并不觉得它对我Coding有什么帮助，于是就打入冷宫了，惭愧之极。如今找出来仔细的阅读了一遍，发现其中的很多东西实在是太给力了。最直接的感受便是： 凡事都有哲学，写操作系统、编程序和日常生活中，没有什么区别。 哲学很有所谓，现在反而在我们的生活中很少再有哲学的思考。大家过着快餐一样的生活，不去思考原则和信仰。然而UNIX却维系着这样一个庞大的疆域，这里的人们有着他们的行为准则，没有什么法律要求他们这么做，然而他们如此自觉的遵守着他们点滴积累下来的一切“哲学”，如此富有哲理，我实在想不出作为程序员如何能独占这样美妙的东西。我觉得这足以让沉淀了几千年的景德镇文化大叫情何以堪了，所以在粗粗略读了这些原则之后，我实在是想分享一些东西： 生活与程序都需要系统，代码生活于UNIX，我们生活与China 、US什么的whatever~ 但是系统与“系统”没有本质的区别，如果我们失去的哲学的方向，也许，UNIX的哲学是一场救赎。 这一切与编程和无关。 UNIX 十七戒 在《UNIX编程艺术》中，作者给了UNIX哲学一些通俗的描述： Unix 哲学（同其它工程领域的民间传统一样）是自下而上的，而不是自上而下的。 Unix 哲学注重实效，立足于丰富的经验。你不会在正规方法学和标准中找到它，它更接 [...]]]></description>
			<content:encoded><![CDATA[<blockquote>
<pre>Those who do not understand Unix are condemned to reinvent it, poorly.</pre>
<pre>                                              ----Henry Spencer</pre>
<pre>不懂Unix 的人注定最终还要重复发明一个蹩脚的Unix。</pre>
<pre>                                      ——亨利·斯宾赛   1987 年11 月</pre>
</blockquote>
<p>是的，没错，UNIX 不是电影演员，也不是不是什么哲学家，不是某子、某克斯人名的缩写，而是一种计算机操作系统。你我可能都不熟悉它，我甚至也说不出它现在具体都用在哪儿，也许说BSD，Linux，Mac的各种猛兽操作系统上仍然是Unix的灵魂附体。然而Unix已经不仅仅是一个操作系统了，并且它的概念也并不能说明什么问题。即便是学过了电脑的我们最多也只是知道除了windows的疆域之外，还有广阔的领土，他们打从C语言诞生前就在那儿，优雅的跨越四分之一个世纪，踏过PC、windows和互联网井喷式扩张的版图，正如所说的那样：</p>
<blockquote><p>Unix is not so much an operating system as an oral history.</p>
<p>与其说<em>Unix</em> 是个操作系统，不如说是一部口述的历史。</p>
<p>&lt;author&gt;Neal Stephenson&lt;/author&gt;</p></blockquote>
<p>他比我们大部分的人都要年长很多。然而即便如此，我也从来没有想过UNIX可以出现我生活中在除了打开一个console去玩儿vim和gcc之外的任何角落。也从来没有想过UNIX拥有什么<strong>哲学</strong>。想来，自己没有想什么“哲学”之类的东西已经很久了。</p>
<p>但，正如触发我所思所想的书中提到的那样：</p>
<h3>哲学：很有所谓</h3>
<p>在从CSDN上看到了对《UNIX编程艺术》|“The.Art.of.UNIX.programming”一书的推荐之后，想起之前看到这本书时，并不觉得它对我Coding有什么帮助，于是就打入冷宫了，惭愧之极。如今找出来仔细的阅读了一遍，发现其中的很多东西实在是<strong>太给力了</strong>。最直接的感受便是：</p>
<p>凡事都有哲学，写操作系统、编程序和日常生活中，没有什么区别。</p>
<p><strong>哲学很有所谓</strong>，现在反而在我们的生活中很少再有哲学的思考。大家过着快餐一样的生活，不去思考<strong>原则</strong>和<strong>信仰</strong>。然而UNIX却维系着这样一个庞大的疆域，这里的人们有着他们的行为准则，没有什么法律要求他们这么做，然而他们如此自觉的遵守着他们点滴积累下来的一切“<strong>哲学”</strong>，如此富有哲理，我实在想不出作为程序员如何能独占这样美妙的东西。我觉得这足以让沉淀了几千年的景德镇文化大叫情何以堪了，所以在粗粗略读了这些原则之后，我实在是想分享一些东西：</p>
<p>生活与程序都需要系统，代码生活于UNIX，我们生活与China 、US什么的whatever~ 但是系统与“系统”没有本质的区别，如果我们失去的哲学的方向，也许，<strong>UNIX的哲学是一场救赎</strong>。</p>
<p>这一切与编程和无关。</p>
<h3>UNIX 十七戒</h3>
<p>在《UNIX编程艺术》中，作者给了UNIX哲学一些通俗的描述：</p>
<blockquote><p>Unix 哲学（同其它工程领域的民间传统一样）是自下而上的，而不是自上而下的。</p>
<p>Unix 哲学<strong>注重实效</strong>，立足于<strong>丰富的经验</strong>。你不会在正规方法学和标准中找到它，它更接</p>
<p>近于隐性的半本能的知识，即Unix 文化所传播的专业经验。它鼓励那种<strong>分清轻重缓急的</strong></p>
<p><strong> </strong><strong>感觉</strong>，以及<strong>怀疑一切的态度</strong>，并鼓励你以<strong>幽默达观的态度</strong>对待这些。</p></blockquote>
<p>UNIX有很多复杂的哲学、也有很多领域内如同马克思黑格尔之类的灵魂人物，每个人有不同的说法，然而他们的思想一致的看起来都有些假。仿佛他们开了个代表大会商量过一样。这些<strong>哲学</strong>莫不如说是他们手中诞生代码的<strong>行为准则</strong>，作者将这些原则总结成了UNIX的十七条戒律，这是他们在程序世界中的定义：</p>
<blockquote><p>1. 模块原则：使用简洁的接口拼合简单的部件。</p>
<p>2. 清晰原则：清晰胜于机巧。</p>
<p>3. 组合原则：设计时考虑拼接组合。</p>
<p>4. 分离原则：策略同机制分离，接口同引擎分离。</p>
<p>5. 简洁原则：设计要简洁，复杂度能低则低。</p>
<p>6. 吝啬原则：除非确无它法，不要编写庞大的程序。</p>
<p>7. 透明性原则：设计要可见，以便审查和调试。</p>
<p>8. 健壮原则：健壮源于透明与简洁。</p>
<p>9. 表示原则：把知识叠入数据以求逻辑质朴而健壮。</p>
<p>10. 通俗原则：接口设计避免标新立异。</p>
<p>11. 缄默原则：如果一个程序没什么好说的，就沉默。</p>
<p>12. 补救原则：出现异常时，马上退出并给出足够错误信息。</p>
<p>13. 经济原则：宁花机器一分，不花程序员一秒。</p>
<p>14. 生成原则：避免手工hack，尽量编写程序去生成程序。</p>
<p>15. 优化原则：雕琢前先要有原型，跑之前先学会走。</p>
<p>16. 多样原则：决不相信所谓“不二法门”的断言。</p>
<p>17. 扩展原则：设计着眼未来，未来总比预想来得快。</p></blockquote>
<p>这些看起来有些太专业了，然而他们着实可以运用于我们的日常生活：</p>
<h5>1、模块原则： 没有万能药</h5>
<p>不要指望生命中你能创造一个万能的自我角色，你就如同程序中的一个模块，你要做的是<strong>简洁而准确</strong>的做好自己的事情，你做的事情将与这个世界上所有的其他人一起，构成这个世界完整的功能。</p>
<h5>2、清晰原则： 清晰胜于机巧</h5>
<p>用清晰的方法做事，不要饶太多的弯子，否则总有一天自己会被自己的弯子绕晕。</p>
<h5>3、组合原则： 沟通十分重要</h5>
<p>正如程序中模块之间要通信一样，人要学会与别人沟通，从别人那里正确的了解信息，并且向别人清晰的输出你能提供的信息。不在于沟通的多么优雅，而在于让对方感到<strong>舒适，</strong>并<strong>清晰</strong>的得到你要表达的东西（正如数据的传输一样）。</p>
<h5>4、分离原则：分清不同的角色</h5>
<p>正如程序的设计需要分层一样，人的生活也要分层。你有家庭环境，有与朋友、同事一起工作的环境。认清自己的角色，而把所有的事情都混为一谈的做法是危险的，无论对自己、他人还是整个“系统”而言。</p>
<h5>5、简洁原则：简洁即美</h5>
<blockquote><p>“错综复杂的美妙事物”听来自相矛盾。Unix 程序员相互比的是谁能够做到“简</p>
<p>洁而漂亮”并以此为荣，这一点虽然只是隐含在这些规则之中，但还是很值得公开</p>
<p>提出来强调一下。</p>
<p>—Doug McIlroy</p></blockquote>
<p>大道至简，不要仅仅因为虚荣心理就去鼓捣那些最错综复杂的东西。了解你该做什么，用简洁的方式做好它。</p>
<h5>6 、吝啬原则: 如果你明知道没有用，那就不要做</h5>
<p>不要浪费时间在犯过的错误或者已经证实无用的工作上，鼓起勇气走新路是好事儿，鼓起勇气跳进陷阱只能叫做愚勇。</p>
<h5>7、透明性原则： 让事情有条理</h5>
<p>生活有时候会有很多bug，就像软件崩溃了一样，一个有条理的设计能让你一眼看出问题出在哪儿，生活也是如此，在你能掌控的范围内保证事情条理清晰绝对没有坏处。</p>
<h5>8、健壮原则:   磨练自己，或是给自己留条后路</h5>
<p>生活无处不在的压力面前，不一定你的生活系统就是十全十美的，当然，你要保证考虑到了<strong>所有可能发生的最坏情况</strong>，和<strong>如何去处理你考虑不到的应急情况。</strong>这确实需要磨练和经验，然而重要的是意识，最起码的一点，在可能的时候要给自己留后路。</p>
<h5>9、表示原则:   自己有什么和想要什么</h5>
<p>生活和程序无论如何都会有输出，如果你的生活和程序都正常并符合“哲理”，那么没有什么“输出”是没用的，正如Rob Pike, 最伟大的C 语言大师之一, 在《Notes on C Programming》中所说的那样：编程的核心是数据结构，而不是算法。同理，我们生活的核心不是我们怎么做了什么事儿，而是<strong>我们所有的东西和所寻求的东西</strong>，正如那些数据一样重要。你可以用很笨的方法搞到你要的，然而如果你不知道它们是啥或是不知道它们被你放在了哪儿，那就麻烦了。</p>
<h5>10、通俗原则： 创新不等于毫无来由的标新立异和自作聪明</h5>
<p>不要把事情都寄托在别人能谁够理解你的基础上，特别是你自认为与众不同的时候。尽量和大家一样做事，所谓低调做人。如果你有真正的创新，它不久就会变成这个庞大系统的新的“通俗原则”，所以不必担心自己碌碌无为。</p>
<h5>11、缄默原则：如果没什么好说的，就保持沉默</h5>
<p>不经过大脑的胡说八道是没有任何好处的，发表意见要经过认真的思考，确定是否有必要之后在一个正确的时机、在一个正确的地点，说给正确的人。正如一个程序一样，你觉得某些软件的弹窗在你不需要的时候会让你有好感吗？</p>
<h5>12、补救原则: 老老实实的承认错误并在第一时间补救</h5>
<p>在出了错误的时候，不要狡辩或是为了“面子”做无谓的行为，要赶快集中精力将你的错误造成的损失降到最低。这无论是从自身发展角度还是对于别人和你的工作都是最好的选择。</p>
<p>这 里还有一个原则：“宽容地收，谨慎地发”，要尽量包容别人，而在自己做事情的时候要谨慎，即使出错也要保证明确的知道自己错在哪儿，以便自己更正或是在别人的帮助下更正自己的行为。</p>
<h5>13、经济原则:   把能省的时间都省掉</h5>
<p>时间和精力的价值绝对大于金钱，所以，在这个庞大的社会系统中，我们把精力集中与我们擅长的事情上，而其他的事情交给其他的人去做。所谓术业有专攻，正如“宁花机器一分，不花程序员一秒”，生活中我们学会要把事情交给社会这台“机器”去做。</p>
<h5>14、生成原则:  把事情按照顺序串起来，而不是一个个手工的去做</h5>
<p>工作、知识和机遇有时候是有继承关系的，就像一些程序可以去配置和生成另一些程序，我们不必也不应该浪费时间去一点点找和做，如果我们掌握了使用这个顺序的方法，就可以更轻松的生活。</p>
<h5>15、 优化原则: 雕琢前先得有原型，跑之前先学会走</h5>
<p>不要想着你做的事情一下子就是最好的，事情都要有循序渐进的过程，而且大部分时候你会做的很烂，别灰心，优化和进步都要一点点进行。</p>
<h5>16、 多样原则 : 你完全不可能完全独立于其他人，也不可能永远不改变自己</h5>
<p>一个僵化、封闭、不愿与外界沟通的软件，简直就是一种病态的傲慢。人也是如此，你和这个世界永远脱不了干系，而且你总要不断的完善自己使自己适应社会，不可能有人一出生就什么都应付得来。</p>
<h5>17、扩展原则:   着眼未来，未来总比预想快。</h5>
<p>这条本身就是它的原则。</p>
<p>综上十七条，广阔而全面的概括了UNIX的哲学准则，然而，我还是喜欢一些总括的哲学总结：</p>
<h3>UNIX的原则</h3>
<p>更好的，或者说我更喜欢的表述是Unix 管道的发明人、Unix 传统的奠基人之一的Doug McIlroy 在[McIlroy78]中所说的：</p>
<blockquote><p>Write programs that do one thing and do it well.</p>
<p>只做一件事，并把它做好</p>
<p>Write programs to work together.</p>
<p>以团队的方式合作</p>
<p>Write programs to handle text streams, becauset hat is a universal interface.</p>
<p>时刻面对挑战，牢记你面对的是整个世界</p></blockquote>
<p>我的翻译出于我对这些原则的理解，当然，还有一个更好的原则，那就是各种编程大师们奉为圭臬的“KISS”原则：</p>
<p><a href="http://www.flickr.com/photos/sigmax6/5158202760/"><span style="color: #222222;"> </span><img style="background-image: none; padding-left: 0px; padding-right: 0px; display: block; float: none; padding-top: 0px; border: 0px;" title="Unix01" src="http://sigmav.net/wp-content/uploads/2010/11/Unix01.png" border="0" alt="Unix01 UNIX的救赎" width="526" height="258" /></a></p>
<p>我不知道如何翻译这个原则，我也不想翻译它，因为它的韵味本身就是它原则的组成部分。正如之前乔布斯大神演讲中提到过的“Stay  hungry,Stay  foolish”一样，还是原汁原味一点比较好吧。每个人有不同的理解，但是它的内容是明显的。<strong>生活并没有那么复杂，而把它变复杂的正是我们自己。</strong></p>
<h3><strong>救赎</strong></h3>
<p>这个词用的有些大了，然而我指的是救赎我自己，恐怕也不过分，但愿这些原则能让我活的更加简单，而不会因为某数字和某企鹅的娱乐新闻而动摇自己，也不会为了高墙之内的各种不给力事件而碌碌无为，总有一些事情需要我去做，而我只需要做好自己。我知道我改变不了什么，但愿UNIX能，当然，我也有自己的原则，虽然同样是借来的：</p>
<blockquote><p><span style="color: #222222; background-color: #ffffff;">世界由两部分组成，你和除了你之外的一切，改变了自己，就改变了世界的一半。</span></p></blockquote>
<p>当我们都能够用自己的原则与UNIX作比较的时候，我们会发现我们的“系统”中，所看到的种种丑态，都是些浮云罢了。</p>
<p>一个Shell，一次救赎，一个clear，还原我世界原本的样子。</p>
]]></content:encoded>
			<wfw:commentRss>http://sigmav.net/2010/11/08/unix%e7%9a%84%e6%95%91%e8%b5%8e/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>无中生有：神器Yahoo!pipes之从静态网页到RSS订阅</title>
		<link>http://sigmav.net/2010/09/14/%e6%97%a0%e4%b8%ad%e7%94%9f%e6%9c%89%ef%bc%9a%e7%a5%9e%e5%99%a8yahoopipes%e4%b9%8b%e4%bb%8e%e9%9d%99%e6%80%81%e7%bd%91%e9%a1%b5%e5%88%b0rss%e8%ae%a2%e9%98%85/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=%25e6%2597%25a0%25e4%25b8%25ad%25e7%2594%259f%25e6%259c%2589%25ef%25bc%259a%25e7%25a5%259e%25e5%2599%25a8yahoopipes%25e4%25b9%258b%25e4%25bb%258e%25e9%259d%2599%25e6%2580%2581%25e7%25bd%2591%25e9%25a1%25b5%25e5%2588%25b0rss%25e8%25ae%25a2%25e9%2598%2585</link>
		<comments>http://sigmav.net/2010/09/14/%e6%97%a0%e4%b8%ad%e7%94%9f%e6%9c%89%ef%bc%9a%e7%a5%9e%e5%99%a8yahoopipes%e4%b9%8b%e4%bb%8e%e9%9d%99%e6%80%81%e7%bd%91%e9%a1%b5%e5%88%b0rss%e8%ae%a2%e9%98%85/#comments</comments>
		<pubDate>Tue, 14 Sep 2010 11:13:46 +0000</pubDate>
		<dc:creator>西玛哒</dc:creator>
				<category><![CDATA[IT悟语]]></category>
		<category><![CDATA[我的大学]]></category>
		<category><![CDATA[网络]]></category>
		<category><![CDATA[Html]]></category>
		<category><![CDATA[Regex]]></category>
		<category><![CDATA[RSS]]></category>
		<category><![CDATA[YahooPipes]]></category>

		<guid isPermaLink="false">http://sigmav.net/2010/09/%e6%97%a0%e4%b8%ad%e7%94%9f%e6%9c%89%ef%bc%9a%e7%a5%9e%e5%99%a8yahoopipes%e4%b9%8b%e4%bb%8e%e9%9d%99%e6%80%81%e7%bd%91%e9%a1%b5%e5%88%b0rss%e8%ae%a2%e9%98%85/</guid>
		<description><![CDATA[自从上次写了“从邮箱查看学院新闻——网站信息的2.0大迁移（Beta）”之后，这个Beta版就石沉大海，什么RTM之类的完全没有，懒人自有懒的原因，本人也没怎么用学院新闻的RSS，回想起来惭愧之极，连维护的意识都没有，太没有艺德了… &#60;扯淡&#62; 只到偶尔见到某亮仔，问起上次那篇文章如何如何，这才想起来我这货除了扯皮之外也干过点儿事情，顿感有负国家四个现代化建设和和谐社会balabala对我的期望，内牛满面之余决定在这个大家都在狂刷学院新闻的多事之秋（你懂的）完成上次没有干完的活儿，以示对钓鱼岛主权的支持（汗……） &#60;/扯淡&#62; 本文主要讲解从某某大学某学院学院新闻的静态PHP网页中制作全文RSS的过程，如果不想看其中的过程，可以直接跳转到最后看RSS的应用部分~ 一、RSS和Yahoo！Pipes 对于RSS的介绍，上篇文章中已经说过了，简单的说，就是将信息以一个约定俗成的格式推送给你，而你可以决定用什么方式来阅读和处理这些信息（QQ阅读器、GoogleReader、甚至Windows的桌面小工具等等）。 RSS是一个好东西，他可以不限制你所访问的地方，而让你同时获取不同渠道的信息，但是一些网站，大抵是由于懒得做啊、懒得做啊或是懒得做之类的缘故（…），总之是自觉没有必要提供这样的东西，因此大家就只能痛苦的去登陆某网查看信息，这样当然不符合网络中心化的原则，因此，就有必要从静态网页着手，做一个RSS源。 之前提供的方法都是通过在线的一些服务商提供的RSS生成服务来进行的，虽然效率很高，但是这些服务商必然不能为你自己服务，要么有广告，要么有限制，人家是要赚money活路地，既然这样，就要寻找一些比较自由的方式，这样的神器当然也有，那就是传说中的YahooPipes！ 以下是Yahoo Pipes的简介，来源：百度百科        Pipes is a powerful composition tool to aggregate, manipulate, and mashup content from around the web. 顾名思义，Pipes就是提供一个信息流动的“管道”，在管道中间，你可以定制规则，进行裁剪，定制信息等等工作，最后将输出的信息烧制成RSS供你使用~ 登录http://pipes.yahoo.com 如上图所示，点击Create a pipe 就可以免费创建一个自己的“管子”~ 当然，不知为何，pipes在教育网享受了http://www.python.org 一样的悲惨待遇，它的登录界面被Wall了，如果你在用教育网，请用搜狗浏览器开启教育网代理进行访问。 使用代（敏感）理：   二、从HTML下手获取RSS 首先熟悉一下Pipes的工作环境，登录后点击Create a pipe 就会出现一个如下的工作界面： 左侧的工具栏中放着各种兵器，用于获取，处理各种信息格式，常用的有Source下，用于抓取网页代码的工具，Operations中放着Loop等常规操作方式，还有Regex等工具可以使用，之后会说到用法。工具的使用都靠“拖”，脑海中不禁浮现出了Csharp的英雄形象。Pipes的目标是大众化信息处理，因此上手并不难，拖动模块进入后，圆圈代表输入或输出，从任意一端点击那个“圈”就会出现pipe，拖动到另一个模块的圈上，两个模块就连接好了。 这里以学生周知http://ssdut.dlut.edu.cn/news/student.php为例，首先在Pipe中添加Sources下面的FetchPage一项，在URL中填入http://ssdut.dlut.edu.cn/news/student.php,这样网页的信息就输入到管道的“入口”了。下面打开上面的网页，右键点击选择查看源代码，可以看出，网站的有用信息是有一定格式的，它的开头和结尾和条目之间的分割如下： 开头：&#60;td height=&#8221;24&#8243; align=&#8221;center&#8221;&#62; 结尾：&#60;tr bgcolor=&#8221;#CCCCCC&#8221;&#62; 分隔符：&#60;/tr&#62; 于是在Cut content from 中写入 [...]]]></description>
			<content:encoded><![CDATA[<p>自从上次写了“<a href="http://sigmav.net/2010/01/%E4%BB%8E%E9%82%AE%E7%AE%B1%E6%9F%A5%E7%9C%8B%E5%AD%A6%E9%99%A2%E6%96%B0%E9%97%BB%E2%80%94%E2%80%94%E7%BD%91%E7%AB%99%E4%BF%A1%E6%81%AF%E7%9A%842-0%E5%A4%A7%E8%BF%81%E7%A7%BB%EF%BC%88beta%EF%BC%89/">从邮箱查看学院新闻——网站信息的2.0大迁移（Beta）</a>”之后，这个Beta版就石沉大海，什么RTM之类的完全没有，懒人自有懒的原因，本人也没怎么用学院新闻的RSS，回想起来惭愧之极，连维护的意识都没有，太没有艺德了…</p>
<p>&lt;扯淡&gt;</p>
<p>只到偶尔见到某亮仔，问起上次那篇文章如何如何，这才想起来我这货除了扯皮之外也干过点儿事情，顿感有负国家四个现代化建设和和谐社会balabala对我的期望，内牛满面之余决定在这个大家都在狂刷学院新闻的多事之秋（你懂的）完成上次没有干完的活儿，以示对钓鱼岛主权的支持（汗……）</p>
<p>&lt;/扯淡&gt;</p>
<p>本文主要讲解从某某大学某学院学院新闻的<strong>静态PHP网页中制作全文RSS的过程</strong>，如果不想看其中的过程，可以直接跳转到最后看RSS的应用部分~</p>
<h1></h1>
<h4>一、RSS和Yahoo！Pipes</h4>
<p>对于RSS的介绍，上篇文章中已经说过了，简单的说，就是将信息以一个约定俗成的格式推送给你，而你可以决定用什么方式来阅读和处理这些信息（QQ阅读器、GoogleReader、甚至Windows的桌面小工具等等）。</p>
<p>RSS是一个好东西，他可以不限制你所访问的地方，而让你同时获取不同渠道的信息，但是一些网站，大抵是由于懒得做啊、懒得做啊或是懒得做之类的缘故（…），总之是自觉没有必要提供这样的东西，因此大家就只能痛苦的去登陆某网查看信息，这样当然不符合网络中心化的原则，因此，就有必要从静态网页着手，做一个RSS源。</p>
<p>之前提供的方法都是通过在线的一些服务商提供的RSS生成服务来进行的，虽然效率很高，但是这些服务商必然不能为你自己服务，要么有广告，要么有限制，人家是要赚money活路地，既然这样，就要寻找一些比较自由的方式，这样的神器当然也有，那就是传说中的<a href="http://pipes.yahoo.com">YahooPipes</a>！</p>
<p>以下是Yahoo Pipes的简介，来源：<a href="http://baike.baidu.com/view/2213028.html?tp=3_11">百度百科</a></p>
<blockquote><p>       Pipes is a powerful composition tool to aggregate, manipulate, and mashup content from around the web.</p></blockquote>
<p>顾名思义，Pipes就是提供一个信息流动的“管道”，在管道中间，你可以定制规则，进行裁剪，定制信息等等工作，最后将输出的信息烧制成RSS供你使用~</p>
<p><a title="Flickr 上 sigmax6 的 pipes_login" href="http://www.flickr.com/photos/sigmax6/4989072413/"><img src="http://67.195.19.74/4105/4989072413_837ea08e23.jpg" alt="4989072413 837ea08e23 无中生有：神器Yahoo!pipes之从静态网页到RSS订阅" width="500" height="217" title="无中生有：神器Yahoo!pipes之从静态网页到RSS订阅" /></a></p>
<p>登录<a href="http://pipes.yahoo.com">http://pipes.yahoo.com</a> 如上图所示，点击Create a pipe 就可以免费创建一个自己的“管子”~ 当然，不知为何，pipes在教育网享受了<a href="http://www.python.org">http://www.python.org</a> 一样的悲惨待遇，它的登录界面被Wall了，<strong>如果你在用教育网，请用搜狗浏览器开启教育网代理进行访问</strong>。</p>
<p><a title="Flickr 上 sigmax6 的 cannot" href="http://www.flickr.com/photos/sigmax6/4989080015/"><img src="http://67.195.19.74/4132/4989080015_7aa1727097.jpg" alt="4989080015 7aa1727097 无中生有：神器Yahoo!pipes之从静态网页到RSS订阅" width="500" height="190" title="无中生有：神器Yahoo!pipes之从静态网页到RSS订阅" /></a></p>
<p>使用代（敏感）理：<br />
<a title="Flickr 上 sigmax6 的 login" href="http://www.flickr.com/photos/sigmax6/4989689170/"><img src="http://67.195.19.74/4108/4989689170_94be0f2f49.jpg" alt="4989689170 94be0f2f49 无中生有：神器Yahoo!pipes之从静态网页到RSS订阅" width="297" height="500" title="无中生有：神器Yahoo!pipes之从静态网页到RSS订阅" /></a></p>
<h4>  二、从HTML下手获取RSS</h4>
<p>首先熟悉一下Pipes的工作环境，登录后点击Create a pipe 就会出现一个如下的工作界面：</p>
<p><a title="Flickr 上 sigmax6 的 pipes" href="http://www.flickr.com/photos/sigmax6/4989086217/"><img src="http://67.195.19.74/4147/4989086217_3e80867ddb.jpg" alt="4989086217 3e80867ddb 无中生有：神器Yahoo!pipes之从静态网页到RSS订阅" width="500" height="280" title="无中生有：神器Yahoo!pipes之从静态网页到RSS订阅" /></a></p>
<p>左侧的工具栏中放着各种兵器，用于<strong>获取，处理各种信息格式</strong>，常用的有Source下，用于抓取网页代码的工具，Operations中放着Loop等常规操作方式，还有Regex等工具可以使用，之后会说到用法。工具的使用都靠“拖”，脑海中不禁浮现出了Csharp的英雄形象。Pipes的目标是大众化信息处理，因此上手并不难，拖动模块进入后，圆圈代表输入或输出，从任意一端点击那个“圈”就会出现pipe，拖动到另一个模块的圈上，两个模块就连接好了。</p>
<p>这里以学生周知<a href="http://ssdut.dlut.edu.cn/news/student.php">http://ssdut.dlut.edu.cn/news/student.php</a><span style="color: #000000;">为例，首先在Pipe中添加Sources下面的FetchPage一项，在URL中填入<a href="http://ssdut.dlut.edu.cn/news/student.php">http://ssdut.dlut.edu.cn/news/student.php</a>,这样网页的信息就输入到管道的“入口”了。下面打开上面的网页，右键点击选择查看源代码，可以看出，网站的有用信息是有一定格式的，它的开头和结尾和条目之间的分割如下：</span></p>
<blockquote><p>开头：&lt;td height=&#8221;24&#8243; align=&#8221;center&#8221;&gt;</p>
<p>结尾：&lt;tr bgcolor=&#8221;#CCCCCC&#8221;&gt;</p>
<p>分隔符：&lt;/tr&gt;</p></blockquote>
<p><a title="Flickr 上 sigmax6 的 page_anly" href="http://www.flickr.com/photos/sigmax6/4989120999/"><img src="http://67.195.19.74/4126/4989120999_df5c5c1288.jpg" alt="4989120999 df5c5c1288 无中生有：神器Yahoo!pipes之从静态网页到RSS订阅" width="500" height="144" title="无中生有：神器Yahoo!pipes之从静态网页到RSS订阅" /></a><br />
于是在Cut content from 中写入 ：&lt;td height=&#8221;24&#8243; align=&#8221;center&#8221;&gt; to：&lt;tr bgcolor=&#8221;#CCCCCC&#8221;&gt;  delimiter:&lt;/tr&gt;</p>
<p>这时再将输出与Outpu相连，就可以看到预输出结果。</p>
<p><a title="Flickr 上 sigmax6 的 rss1" href="http://www.flickr.com/photos/sigmax6/4989151913/"><img src="http://67.195.19.74/4110/4989151913_5e6184dbfb.jpg" alt="4989151913 5e6184dbfb 无中生有：神器Yahoo!pipes之从静态网页到RSS订阅" width="500" height="124" title="无中生有：神器Yahoo!pipes之从静态网页到RSS订阅" /></a></p>
<p>这时条目的实际代码如下：</p>
<blockquote><p>1.<br />
<span style="color: #008000;">&amp;nbsp;&lt;a rel=&#8221;nofollow&#8221; target=&#8221;_blank&#8221;</span> <span style="color: #800080;">href=&#8221;</span><span style="color: #800000;"><strong>http://ssdut.dlut.edu.cn/news/show.php?id=6310</strong></span><span style="color: #ffff00;">&#8221; title=&#8221;2009&amp;#x007ea7;&amp;#x00672c;&amp;#x0079d1;&amp;#x00751f;&amp;#x0082f1;&amp;#x008bed;&amp;#</span></p>
<p><span style="color: #ffff00;">x00542c;&amp;#x008bf4;&amp;#x004e8c;&amp;#x008865;&amp;#x008003;&amp;#x005b89;&amp;#x006392;&#8221;&gt;</span><span style="color: #0000ff;">2009<strong>级本科生英语听说二补考安排</strong></span><span style="color: #ff00ff;">&lt;/a&gt;<br />
2010-09-14<br />
&lt;a rel=&#8221;nofollow&#8221; target=&#8221;_blank&#8221; href=&#8221;http://ssdut.dlut.edu.cn/news/studentlist.php?comefrom=2&#8243;&gt;教务办公室&lt;/a&gt;            </span></p></blockquote>
<p>我们需要的信息实际上之有 <a href="http://ssdut.dlut.edu.cn/news/show.php?id=6310">http://ssdut.dlut.edu.cn/news/show.php?id=6310</a> 这个link 和 “2009级本科生英语听说二补考安排” 这个title而已，其他的都是浮云，一个feed的一个条目最少需要这两个信息：link和title 但是我们的条目中目前只有一个孤军奋战的content 因此需要增加一些内容，将Operator下的Rename拖入工作区，并将Fetch的结果与之相连，然后如下操作：</p>
<p><a title="Flickr 上 sigmax6 的 rename" href="http://www.flickr.com/photos/sigmax6/4989769792/"><img src="http://67.195.19.74/4085/4989769792_f6f44135d9.jpg" alt="4989769792 f6f44135d9 无中生有：神器Yahoo!pipes之从静态网页到RSS订阅" width="440" height="133" title="无中生有：神器Yahoo!pipes之从静态网页到RSS订阅" /></a></p>
<p>这样就有了title与link两项，剩下的就是过滤掉没用的信息，留下有用的了，这时需要正则表达式起作用了~ 拖入Operator下的Regex模块，添入过滤用正则表达式:</p>
<p><a title="Flickr 上 sigmax6 的 regex" href="http://www.flickr.com/photos/sigmax6/4989772878/"><img src="http://67.195.19.74/4089/4989772878_a1080f18a2.jpg" alt="4989772878 a1080f18a2 无中生有：神器Yahoo!pipes之从静态网页到RSS订阅" width="500" height="115" title="无中生有：神器Yahoo!pipes之从静态网页到RSS订阅" /></a></p>
<p>这里的正则表达式如下：</p>
<blockquote><p>.*href=&#8221;(.*?)&#8221;.*&#8221;&gt;(.*)&lt;/a.*</p></blockquote>
<p>以下是分项解析：</p>
<blockquote><p><strong>.*  –&gt; </strong>表达任意数量的不包含换行的字符，我们这个例子里表达的就是<span style="color: #008000;">…target=&#8221;_blank&#8221; </span></p>
<p><strong>href=</strong> <strong>–&gt; </strong>就是它本身href=<strong></strong></p>
<p><strong>“(.*?)”</strong> <strong>–&gt; </strong>.*? 意味着匹配任意数量的重复，但是在能使整个匹配成功的前提下使用最少的重复。小括号来指定子表达式(也叫做分组)。”代表它本身(也就是”)</p>
<p><strong>.*”&gt; </strong><strong>–&gt; </strong>表达的就是<span style="color: #ffff00;">……x005b89;&amp;#x006392;&#8221;&gt;</span></p>
<p><strong>(.*) </strong><strong>–&gt; </strong>又表示了一个分组</p>
<p><strong>&lt;/a.*  -</strong><strong>-&gt; </strong>&lt;表示它本身(也就是&lt;)，/表示/(这里如果你想查找元字符本身的话，比如你查找.,或者*,就出现了问题：你没办法指定它们，因为它们会被解释成别的意思。这时你就得使用来取消这些字符的特殊意义。因此，你应该使用.和*。当然，要查找本身，你也得用\)。这样，这里就表达成了<span style="color: #ff00ff;">&lt;/a&gt; 2010-09-14 &lt;a rel=&#8221;nofollow&#8221; target=&#8221;_blank&#8221; </span>这一连串字符</p></blockquote>
<p>通过表达式过滤，获得了想要的部分，利用Regex模块，获取正确的信息：</p>
<blockquote><p>Regex模块的规则是这样的形式：</p>
<p><strong>In[element] replace [regex pattern] with [value]</strong></p>
<p>Value可以设置成任何字符，比方说我们输入狗*日的腾讯，就会显示成狗*日的腾讯。</p>
<p>实际上，link我们使用的是<strong>$1</strong>，这个就和我们前面使用的正则表达式有关了。</p>
<p>对于表达式之中匹配的()圆括号之类的内容，会为之创建带有数字编号的引用，引用的格式是以$美元符号开头，它就可以代替()圆括号内匹配的内容。</p>
<p>对于我们的正则表达式，我们使用了两个()圆括号，所以<strong>$1</strong>作为引用，它的内容就是(.*?)匹配出来的内容，就是我们所要寻找的link。<strong>$2</strong>作为引用，它的内容就是(.*)匹配出来的内容，就是我们所要寻找的title。</p>
<p>另外<strong>勾选上s</strong></p></blockquote>
<p>如刚才的图所示，这时，将输出与Output连接，就可以看到结果了：</p>
<p><a title="Flickr 上 sigmax6 的 rss_result" href="http://www.flickr.com/photos/sigmax6/4989792014/"><img src="http://67.195.19.74/4103/4989792014_38f3ea135b.jpg" alt="4989792014 38f3ea135b 无中生有：神器Yahoo!pipes之从静态网页到RSS订阅" width="500" height="193" title="无中生有：神器Yahoo!pipes之从静态网页到RSS订阅" /></a></p>
<p>这个Pipe就可以当成RSS用了，点击Save 起名，之后点击Run pipe 这时候结果就会在下方显示出来，点击<strong>获取RSS</strong>按钮，这时浏览器中的URL就是你烧出来的RSS了。</p>
<p><a title="Flickr 上 sigmax6 的 ssdut_rss" href="http://www.flickr.com/photos/sigmax6/4989797642/"><img src="http://67.195.19.74/4083/4989797642_e03be3f0c9.jpg" alt="4989797642 e03be3f0c9 无中生有：神器Yahoo!pipes之从静态网页到RSS订阅" width="500" height="225" title="无中生有：神器Yahoo!pipes之从静态网页到RSS订阅" /></a></p>
<p>我烧制RSS的地址:</p>
<blockquote><p><a title="http://pipes.yahoo.com/pipes/pipe.run?_id=4008466210fa86043ccdcee0388f4a6b&amp;_render=rss" href="http://pipes.yahoo.com/pipes/pipe.run?_id=4008466210fa86043ccdcee0388f4a6b&amp;_render=rss">http://pipes.yahoo.com/pipes/pipe.run?_id=4008466210fa86043ccdcee0388f4a6b&amp;_render=rss</a></p></blockquote>
<h4>   三、从RSS到全文RSS</h4>
<p>到这里，要求不高的童鞋可以拿去玩儿去了，起码可以做做标题党，然而这毕竟不符合我们的要求，为啥非得跳转下才能看新闻呢？因此这时我们需要全文RSS，就是将该新闻的内容一起和RSS的link与title推送过来，我们以刚刚做好的rss为蓝本，（当然一个普通的标准RSS也符合这个条件）制作一个全文RSS。</p>
<p>仍然新建一个Pipe，从Sources中拖入Fetch Feeds 添入刚刚做好的Rss地址：</p>
<p><a title="Flickr 上 sigmax6 的 fetch_fedd" href="http://www.flickr.com/photos/sigmax6/4989199757/"><img src="http://67.195.19.74/4150/4989199757_fe4ae11d70.jpg" alt="4989199757 fe4ae11d70 无中生有：神器Yahoo!pipes之从静态网页到RSS订阅" width="500" height="200" title="无中生有：神器Yahoo!pipes之从静态网页到RSS订阅" /></a></p>
<p>与之前相比，多了一对乱码七糟的东西，那是yahoo给我们加上的RSS标准格式，这里不做介绍。既然有link，自然想到可以读link的页面，与之前获得item同样的原理去获取内容，但是条目很多，不至于一个个去访问，于是就要用到一个编程常用工具：Loop。将Operator下的Loop拖入工作区。</p>
<p>其中的For each是循环的迭代器接口，这里我们不用填写，当将Feed的输出与之连接时，它的默认值为feed item，就是对每个项如何如何操作，中间的区域就是我们要做的操作了，我们将Sources下面的Fetch Page拖入其中，那么每次loop就会执行Fetch 。在URL中，我们可以选择item.link一项，让它去fetch我们提供的link，就是新闻的链接页面了。我们如法炮制，分析新闻正文的页面：</p>
<blockquote><p>&lt;td class=&#8221;content&#8221;&gt;&lt;P&gt;时间：9月15日（本周三）下午13:00&lt;/P&gt;</p>
<p>&lt;P&gt;地点：教学楼A415&lt;/P&gt;</p>
<p>&lt;P&gt;请补考同学准时参加。&lt;/P&gt;&lt;/td&gt;</p>
<p>&lt;/tr&gt;</p></blockquote>
<p>找了个短的，很明显，开始位置是&lt;td class=”content”&gt; 介绍位置&lt;/tr&gt; 只有一个正文因此不用分割。</p>
<p>照搬的添入Fetch选项中，最后assign 选择all 就是将所有FetchLoop的结果保存到哪儿，我们RSS中声明正文的信息叫做item.description 因此添入，如图所示：</p>
<p><a title="Flickr 上 sigmax6 的 result" href="http://www.flickr.com/photos/sigmax6/4989215393/"><img src="http://67.195.19.74/4149/4989215393_5d5a8e99ba.jpg" alt="4989215393 5d5a8e99ba 无中生有：神器Yahoo!pipes之从静态网页到RSS订阅" width="500" height="235" title="无中生有：神器Yahoo!pipes之从静态网页到RSS订阅" /></a></p>
<p>就这样，全文RSS的制作就完成了，可以点击Save 然后Run ，最后happy或者不happy（那是有bug，检查一下）的看到最终的结果，与上面一样，制成RSS，这个RSS地址就可以使用了。</p>
<p><a title="Flickr 上 sigmax6 的 result_all" href="http://www.flickr.com/photos/sigmax6/4989220873/"><img src="http://67.195.19.74/4110/4989220873_3d1d8e01ea.jpg" alt="4989220873 3d1d8e01ea 无中生有：神器Yahoo!pipes之从静态网页到RSS订阅" width="500" height="250" title="无中生有：神器Yahoo!pipes之从静态网页到RSS订阅" /></a></p>
<h4>三、RSS的使用</h4>
<p>用yahoo pipes产生的RSS与正常RSS使用一样，但是据说：</p>
<blockquote><p>这样获取的全文RSS肯定没有直接获取的高效，大概会有半小时左右的延时吧。</p></blockquote>
<p><strong> <span style="text-decoration: underline;"><span style="color: #000080;">全文RSS在这里！！：</span></span></strong></p>
<blockquote><p>      <a title="http://pipes.yahoo.com/pipes/pipe.run?_id=3ed58d9916f74a6f67963b5936032ad3&amp;_render=rss" href="http://pipes.yahoo.com/pipes/pipe.run?_id=3ed58d9916f74a6f67963b5936032ad3&amp;_render=rss">http://pipes.yahoo.com/pipes/pipe.run?_id=3ed58d9916f74a6f67963b5936032ad3&amp;_render=rss</a></p></blockquote>
<p>是可以正常使用的，使用方式参见上一篇文章“<a href="http://sigmav.net/2010/01/%E4%BB%8E%E9%82%AE%E7%AE%B1%E6%9F%A5%E7%9C%8B%E5%AD%A6%E9%99%A2%E6%96%B0%E9%97%BB%E2%80%94%E2%80%94%E7%BD%91%E7%AB%99%E4%BF%A1%E6%81%AF%E7%9A%842-0%E5%A4%A7%E8%BF%81%E7%A7%BB%EF%BC%88beta%EF%BC%89/">从邮箱查看学院新闻——网站信息的2.0大迁移（Beta）</a>”以及到百度上Google一下Google Reader ,QQ reader和本地阅读器的使用方法。</p>
<p>这里提供使用的截图，看起来还是蛮不错的。</p>
<p><a title="Flickr 上 sigmax6 的 结果" href="http://www.flickr.com/photos/sigmax6/4989835476/"><img src="http://67.195.19.74/4151/4989835476_b72f6086b3.jpg" alt="4989835476 b72f6086b3 无中生有：神器Yahoo!pipes之从静态网页到RSS订阅" width="500" height="329" title="无中生有：神器Yahoo!pipes之从静态网页到RSS订阅" /></a></p>
<p>Google Reader</p>
<p><a title="Flickr 上 sigmax6 的 qq结果" href="http://www.flickr.com/photos/sigmax6/4989229571/"><img src="http://67.195.19.74/4146/4989229571_2dfe8d70e5.jpg" alt="4989229571 2dfe8d70e5 无中生有：神器Yahoo!pipes之从静态网页到RSS订阅" width="500" height="307" title="无中生有：神器Yahoo!pipes之从静态网页到RSS订阅" /></a></p>
<p>QQ邮箱阅读器。</p>
<p>除此之外RSS还有很多神奇的用途，比如，人人的某些特殊用户可以导入新闻RSS，这样方便上人人的同学了解最新情况：</p>
<p><a title="Flickr 上 sigmax6 的 daoru" href="http://www.flickr.com/photos/sigmax6/4989839836/"><img src="http://67.195.19.74/4130/4989839836_0da7b8517a.jpg" alt="4989839836 0da7b8517a 无中生有：神器Yahoo!pipes之从静态网页到RSS订阅" width="500" height="97" title="无中生有：神器Yahoo!pipes之从静态网页到RSS订阅" /></a></p>
<p>有了RSS 一些皆有可能。</p>
<h4>   四、无耻的免责声明</h4>
<p><strong>本人制作的RSS只为个人用途，不保证RSS的实时性，30分钟至1小时的延时是正常现象，并且不保证信息的完整有效，对信息很苛刻的同学建议仍然坚持通过刷屏的方式查收信息，本RSS制作不触犯国家法律，不撞墙，不敏感，五毛退散……</strong></p>
<h4><strong>   五、杂记</strong></h4>
<p>本人在这个敏感时期，仍然不无正业的做着基本上毫无意义的边角工作，是在是让我自己都感觉不争气，然而既已如此，那就只要放任，望广大童鞋以我为戒，不要无所事事，要为伟大的共产主义事业贡献终身…</p>
<h4></h4>
<h4></h4>
<h4>六、参考文献</h4>
<p>1、<a href="http://bbs.pxysm.com/thread-5116-1-1.html">http://bbs.pxysm.com/thread-5116-1-1.html</a></p>
<p>2、<a href="http://cuefor.tk/?p=101">http://cuefor.tk/?p=101</a></p>
<p>3、<a href="http://cuefor.tk/?p=51">http://cuefor.tk/?p=51</a></p>
<p>感谢RSS燃烧室<a href="http://cuefor.tk/">http://cuefor.tk/</a> 提供了详细的教程支持，本文很多文章属于过度引用，请作者见谅。</p>
]]></content:encoded>
			<wfw:commentRss>http://sigmav.net/2010/09/14/%e6%97%a0%e4%b8%ad%e7%94%9f%e6%9c%89%ef%bc%9a%e7%a5%9e%e5%99%a8yahoopipes%e4%b9%8b%e4%bb%8e%e9%9d%99%e6%80%81%e7%bd%91%e9%a1%b5%e5%88%b0rss%e8%ae%a2%e9%98%85/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
	</channel>
</rss>

