﻿<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	xmlns:series="http://unfoldingneurons.com/"
	>

<channel>
	<title>f(Program,Poet)=Programet &#187; Malloc</title>
	<atom:link href="http://blog.programet.org/author/gluokai/feed" rel="self" type="application/rss+xml" />
	<link>http://blog.programet.org</link>
	<description>f(诗,程序)=诗序=思绪 &#124; 记载我们自己的生活</description>
	<lastBuildDate>Tue, 07 Feb 2012 16:00:20 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>2012</title>
		<link>http://blog.programet.org/2012/01/2012.html</link>
		<comments>http://blog.programet.org/2012/01/2012.html#comments</comments>
		<pubDate>Sun, 01 Jan 2012 13:58:58 +0000</pubDate>
		<dc:creator>Malloc</dc:creator>
				<category><![CDATA[原创博文]]></category>

		<guid isPermaLink="false">http://blog.programet.org/?p=4930</guid>
		<description><![CDATA[2011应该算是我的acm元年吧，也不知道会不会是最后一年。年初的时候参加学校acm校赛写了五题，有三题都链接错误，至今都对vc++怨念不已。暑假跟几个大四的学长在各大OJ上刷题。到了11月份跟着J神和博兄到成都赛区打了个银牌。期间遇到叶子，他给的那个热烈拥抱，让我的队友直呼“亮瞎了”。 今年也几乎没写文，因为技术折腾少了，写出来的东西一点技术含量都没有，也不好意思发出来。Gentoo系列算是我对这个学期“折腾”的总结吧。 现在大三的第一个学期也结束了，对于未来，自己打算是考国内的研，因为这算是个心里面的一个芥蒂吧。 本文由 Malloc 创作，转载或引用前请联系我们。相关文章： 辞旧迎新，又是一年 六一节游览Programet指南 我的年龄周围
相关文章：<ol>
<li><a href='http://blog.programet.org/2011/01/%e8%be%9e%e6%97%a7%e8%bf%8e%e6%96%b0%ef%bc%8c%e5%8f%88%e6%98%af%e4%b8%80%e5%b9%b4.html' rel='bookmark' title='辞旧迎新，又是一年'>辞旧迎新，又是一年</a></li>
<li><a href='http://blog.programet.org/2010/06/guide.html' rel='bookmark' title='六一节游览Programet指南'>六一节游览Programet指南</a></li>
<li><a href='http://blog.programet.org/2011/11/%e6%88%91%e7%9a%84%e5%b9%b4%e9%be%84%e5%91%a8%e5%9b%b4.html' rel='bookmark' title='我的年龄周围'>我的年龄周围</a></li>
</ol>]]></description>
			<content:encoded><![CDATA[<p>
2011应该算是我的acm元年吧，也不知道会不会是最后一年。年初的时候参加学校acm校赛写了五题，有三题都链接错误，至今都对vc++怨念不已。暑假跟几个大四的学长在各大OJ上刷题。到了11月份跟着J神和博兄到成都赛区打了个银牌。期间遇到叶子，他给的那个热烈拥抱，让我的队友直呼“亮瞎了”。<span id="more-4937"></span></p>
<p><span id="more-4930"></span></p>
<p>
今年也几乎没写文，因为技术折腾少了，写出来的东西一点技术含量都没有，也不好意思发出来。Gentoo系列算是我对这个学期“折腾”的总结吧。
</p>
</p>
<p>
现在大三的第一个学期也结束了，对于未来，自己打算是考国内的研，因为这算是个心里面的一个芥蒂吧。
</p>
<p><a href="http://blog.programet.org/?attachment_id=4938" rel="attachment wp-att-4938"><img src="http://blog.programet.org/index.php?feedimage=wp-content/uploads/2012-01-01_21-32-18_386-300x225.jpg" alt="" title="2012-01-01_21-32-18_386" width="300" height="225" class="aligncenter size-medium wp-image-4938" /></a></p>
<p><small>本文由 Malloc 创作，转载或引用前请<a href="mailto:programet.org@gmail.com">联系我们</a>。</small></p><p>相关文章：<ol>
<li><a href='http://blog.programet.org/2011/01/%e8%be%9e%e6%97%a7%e8%bf%8e%e6%96%b0%ef%bc%8c%e5%8f%88%e6%98%af%e4%b8%80%e5%b9%b4.html' rel='bookmark' title='辞旧迎新，又是一年'>辞旧迎新，又是一年</a></li>
<li><a href='http://blog.programet.org/2010/06/guide.html' rel='bookmark' title='六一节游览Programet指南'>六一节游览Programet指南</a></li>
<li><a href='http://blog.programet.org/2011/11/%e6%88%91%e7%9a%84%e5%b9%b4%e9%be%84%e5%91%a8%e5%9b%b4.html' rel='bookmark' title='我的年龄周围'>我的年龄周围</a></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://blog.programet.org/2012/01/2012.html/feed</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Gentoo安装笔记1</title>
		<link>http://blog.programet.org/2011/12/gentoo%e5%ae%89%e8%a3%85%e7%ac%94%e8%ae%b01.html</link>
		<comments>http://blog.programet.org/2011/12/gentoo%e5%ae%89%e8%a3%85%e7%ac%94%e8%ae%b01.html#comments</comments>
		<pubDate>Fri, 30 Dec 2011 09:55:07 +0000</pubDate>
		<dc:creator>Malloc</dc:creator>
				<category><![CDATA[原创博文]]></category>

		<guid isPermaLink="false">http://blog.programet.org/?p=4882</guid>
		<description><![CDATA[# 为了与大伙保持一致，这是一个不知道什么时候就会太监的系列。——题记 用了将近三年的ubuntu，我打算为自己的本本换换口味。 Gentoo当然是第一选择。这里把安装Gentoo的过程记录下来，给想要换系统的童鞋做个参考。 # 必须连上因特网才能安装Gentoo!!如果本地机器不能连上因特网，请选择ubuntu或者fedora这些可以离线安装的发行版。 # 当然也可以选择Gentoo Live DVD，但是这种安装方式会少了很多趣味性(: 制作Gentoo Live USB # 一些前置知识 Main Boot Record Bootloader Syslinux dd fdisk mkdosfs 这里假设大家目前已经有一台运行Linux的机器，安装介质选择大家经常使用的u盘。需要的工具有dd, fdisk, mkdosfs, syslinux；所需要下载的文件是install-x86-minimal-yymmdd.iso。用dd写mbr；fdisk用来为u盘制作分区；mkdosfs制作文件系统；syslinux作Bootloader。如果没有这些工具的话，请使用当前Linux系统的包管理器安装这些工具。下载的文件是Gentoo的安装文件，提供了安装系统时需要的Linux环境。现在我们要做的是把这个镜像文件拷贝到u盘上成为一个Live Linux系统，并且能让机器从u盘启动这个系统。 # 请备份u盘上的重要文件，以下操作需要格式化u盘!! 确认机器已经识别u盘。如果你的系统自动挂载了u盘，请卸载。在我的机器上，我的u盘路径是/dev/sdb。 fdisk -l /dev/sdb &#160; Disk /dev/sdb: 8004 MB, 8004304896 bytes 247 heads, 62 sectors/track, 1020 cylinders, total 15633408 sectors Units = sectors of 1 [...]
相关文章：<ol>
<li><a href='http://blog.programet.org/2008/09/howl.html' rel='bookmark' title='五十年前的：Howl'>五十年前的：Howl</a></li>
<li><a href='http://blog.programet.org/2009/05/blog-post-3.html' rel='bookmark' title='无显然'>无显然</a></li>
<li><a href='http://blog.programet.org/2009/01/blog-post_30-2.html' rel='bookmark' title='群论基本概念以及其在人类学里的一个巧妙应用'>群论基本概念以及其在人类学里的一个巧妙应用</a></li>
</ol>]]></description>
			<content:encoded><![CDATA[
<div class="wp_codebox"><table><tr id="p488211"><td class="code" id="p4882code11"><pre class="bash" style="font-family:monospace;"><span style="color: #666666; font-style: italic;"># 为了与大伙保持一致，这是一个不知道什么时候就会太监的系列。——题记</span></pre></td></tr></table></div>

<p><span id="more-4882"></span></p>
<p>
用了将近三年的ubuntu，我打算为自己的本本换换口味。
</p>
<hr />
<p>
Gentoo当然是第一选择。这里把安装Gentoo的过程记录下来，给想要换系统的童鞋做个参考。
</p>

<div class="wp_codebox"><table><tr id="p488212"><td class="code" id="p4882code12"><pre class="bash" style="font-family:monospace;"><span style="color: #666666; font-style: italic;"># 必须连上因特网才能安装Gentoo!!如果本地机器不能连上因特网，请选择ubuntu或者fedora这些可以离线安装的发行版。</span>
<span style="color: #666666; font-style: italic;"># 当然也可以选择Gentoo Live DVD，但是这种安装方式会少了很多趣味性(:</span></pre></td></tr></table></div>

<h3>制作Gentoo Live USB</h3>
<pre>
# 一些前置知识
<a href="http://zh.wikipedia.org/wiki/MBR">Main Boot Record</a>
<a href="http://en.wikipedia.org/wiki/Bootloader">Bootloader</a>
<a href="http://en.wikipedia.org/wiki/Syslinux">Syslinux</a>
<a href="http://en.wikipedia.org/wiki/Dd_%28Unix%29">dd</a>
<a href="http://en.wikipedia.org/wiki/Fdisk">fdisk</a>
<a href="http://en.wikipedia.org/wiki/Mkdosfs">mkdosfs</a>
</pre>
<p>
这里假设大家目前已经有一台运行Linux的机器，安装介质选择大家经常使用的u盘。需要的工具有dd, fdisk, mkdosfs, syslinux；所需要<a href="http://mirror.bjtu.edu.cn/gentoo/releases/x86/current-iso">下载的文件</a>是install-x86-minimal-yymmdd.iso。用dd写mbr；fdisk用来为u盘制作分区；mkdosfs制作文件系统；syslinux作Bootloader。如果没有这些工具的话，请使用当前Linux系统的包管理器安装这些工具。下载的文件是Gentoo的安装文件，提供了安装系统时需要的Linux环境。现在我们要做的是把这个镜像文件拷贝到u盘上成为一个Live Linux系统，并且能让机器从u盘启动这个系统。
</p>

<div class="wp_codebox"><table><tr id="p488213"><td class="code" id="p4882code13"><pre class="bash" style="font-family:monospace;"><span style="color: #666666; font-style: italic;"># 请备份u盘上的重要文件，以下操作需要格式化u盘!!</span></pre></td></tr></table></div>

<p>
确认机器已经识别u盘。如果你的系统自动挂载了u盘，请卸载。在我的机器上，我的u盘路径是/dev/sdb。</p>

<div class="wp_codebox"><table><tr id="p488214"><td class="code" id="p4882code14"><pre class="bash" style="font-family:monospace;">fdisk <span style="color: #660033;">-l</span> <span style="color: #000000; font-weight: bold;">/</span>dev<span style="color: #000000; font-weight: bold;">/</span>sdb
&nbsp;
Disk <span style="color: #000000; font-weight: bold;">/</span>dev<span style="color: #000000; font-weight: bold;">/</span>sdb: <span style="color: #000000;">8004</span> MB, <span style="color: #000000;">8004304896</span> bytes
<span style="color: #000000;">247</span> heads, <span style="color: #000000;">62</span> sectors<span style="color: #000000; font-weight: bold;">/</span>track, <span style="color: #000000;">1020</span> cylinders, total <span style="color: #000000;">15633408</span> sectors
Units = sectors of <span style="color: #000000;">1</span> <span style="color: #000000; font-weight: bold;">*</span> <span style="color: #000000;">512</span> = <span style="color: #000000;">512</span> bytes
Sector <span style="color: #c20cb9; font-weight: bold;">size</span> <span style="color: #7a0874; font-weight: bold;">&#40;</span>logical<span style="color: #000000; font-weight: bold;">/</span>physical<span style="color: #7a0874; font-weight: bold;">&#41;</span>: <span style="color: #000000;">512</span> bytes <span style="color: #000000; font-weight: bold;">/</span> <span style="color: #000000;">512</span> bytes
I<span style="color: #000000; font-weight: bold;">/</span>O <span style="color: #c20cb9; font-weight: bold;">size</span> <span style="color: #7a0874; font-weight: bold;">&#40;</span>minimum<span style="color: #000000; font-weight: bold;">/</span>optimal<span style="color: #7a0874; font-weight: bold;">&#41;</span>: <span style="color: #000000;">512</span> bytes <span style="color: #000000; font-weight: bold;">/</span> <span style="color: #000000;">512</span> bytes
Disk identifier: 0x00000000
&nbsp;
   Device Boot      Start         End      Blocks   Id  System
<span style="color: #000000; font-weight: bold;">/</span>dev<span style="color: #000000; font-weight: bold;">/</span>sdb1   <span style="color: #000000; font-weight: bold;">*</span>        <span style="color: #000000;">2048</span>     <span style="color: #000000;">2099199</span>     <span style="color: #000000;">1048576</span>    c  W95 FAT32 <span style="color: #7a0874; font-weight: bold;">&#40;</span>LBA<span style="color: #7a0874; font-weight: bold;">&#41;</span>
<span style="color: #000000; font-weight: bold;">/</span>dev<span style="color: #000000; font-weight: bold;">/</span>sdb2         <span style="color: #000000;">2099200</span>    <span style="color: #000000;">15633407</span>     <span style="color: #000000;">6767104</span>    b  W95 FAT32</pre></td></tr></table></div>

<p>/dev/sdb1, /dev/sdb2是u盘上的两个分区，并且/dev/sdb1有个启动标志。如果u盘中已经有了分区，就不必用fdisk重新分区了。只需检查是否有一个有启动标志的分区(这个分区也是你要把前述安装文件放到此处的分区)。
</p>
<p>
接下来使用mkdosfs在/dev/sdb1上创建一个文件系统。</p>

<div class="wp_codebox"><table><tr id="p488215"><td class="code" id="p4882code15"><pre class="bash" style="font-family:monospace;">mkdosfs <span style="color: #660033;">-F</span> <span style="color: #000000;">32</span> <span style="color: #000000; font-weight: bold;">/</span>dev<span style="color: #000000; font-weight: bold;">/</span>sdb1</pre></td></tr></table></div>

</p>
<p>写mbr</p>

<div class="wp_codebox"><table><tr id="p488216"><td class="code" id="p4882code16"><pre class="bash" style="font-family:monospace;"><span style="color: #c20cb9; font-weight: bold;">dd</span> <span style="color: #007800;">if</span>=<span style="color: #000000; font-weight: bold;">/</span>usr<span style="color: #000000; font-weight: bold;">/</span>share<span style="color: #000000; font-weight: bold;">/</span>syslinux<span style="color: #000000; font-weight: bold;">/</span>mbr.bin <span style="color: #007800;">of</span>=<span style="color: #000000; font-weight: bold;">/</span>dev<span style="color: #000000; font-weight: bold;">/</span>sdb</pre></td></tr></table></div>

</p>
<p>然后我们需要把u盘和安装镜像挂载到某些目录下面。</p>

<div class="wp_codebox"><table><tr id="p488217"><td class="code" id="p4882code17"><pre class="bash" style="font-family:monospace;"><span style="color: #c20cb9; font-weight: bold;">mount</span> <span style="color: #000000; font-weight: bold;">/</span>dev<span style="color: #000000; font-weight: bold;">/</span>sdb1 <span style="color: #000000; font-weight: bold;">/</span>mnt<span style="color: #000000; font-weight: bold;">/</span>usb
<span style="color: #c20cb9; font-weight: bold;">mount</span> <span style="color: #660033;">-o</span> loop,ro <span style="color: #660033;">-t</span> iso9660 path<span style="color: #000000; font-weight: bold;">/</span>install-x86-minimal-yymmdd.iso <span style="color: #000000; font-weight: bold;">/</span>mnt<span style="color: #000000; font-weight: bold;">/</span>cdrom</pre></td></tr></table></div>

</p>
<p>复制文件到u盘上。</p>

<div class="wp_codebox"><table><tr id="p488218"><td class="code" id="p4882code18"><pre class="bash" style="font-family:monospace;"><span style="color: #c20cb9; font-weight: bold;">cp</span> <span style="color: #660033;">-rv</span> <span style="color: #000000; font-weight: bold;">/</span>mnt<span style="color: #000000; font-weight: bold;">/</span>cdrom<span style="color: #000000; font-weight: bold;">/*</span> <span style="color: #000000; font-weight: bold;">/</span>mnt<span style="color: #000000; font-weight: bold;">/</span>usb
<span style="color: #c20cb9; font-weight: bold;">mv</span> <span style="color: #000000; font-weight: bold;">/</span>mnt<span style="color: #000000; font-weight: bold;">/</span>usb<span style="color: #000000; font-weight: bold;">/</span>isolinux<span style="color: #000000; font-weight: bold;">/*</span> <span style="color: #000000; font-weight: bold;">/</span>mnt<span style="color: #000000; font-weight: bold;">/</span>usb <span style="color: #666666; font-style: italic;"># 移动到u盘根目录</span>
<span style="color: #c20cb9; font-weight: bold;">mv</span> <span style="color: #000000; font-weight: bold;">/</span>mnt<span style="color: #000000; font-weight: bold;">/</span>usb<span style="color: #000000; font-weight: bold;">/</span>isolinux.cfg <span style="color: #000000; font-weight: bold;">/</span>mnt<span style="color: #000000; font-weight: bold;">/</span>usb<span style="color: #000000; font-weight: bold;">/</span>syslinux.cfg <span style="color: #666666; font-style: italic;"># 重命名文件</span>
<span style="color: #c20cb9; font-weight: bold;">mv</span> <span style="color: #000000; font-weight: bold;">/</span>mnt<span style="color: #000000; font-weight: bold;">/</span>usb<span style="color: #000000; font-weight: bold;">/</span>memtest86 <span style="color: #000000; font-weight: bold;">/</span>mnt<span style="color: #000000; font-weight: bold;">/</span>usb<span style="color: #000000; font-weight: bold;">/</span>memtest
<span style="color: #c20cb9; font-weight: bold;">rm</span> <span style="color: #660033;">-rf</span> <span style="color: #000000; font-weight: bold;">/</span>mnt<span style="color: #000000; font-weight: bold;">/</span>usb<span style="color: #000000; font-weight: bold;">/</span>isolinux<span style="color: #000000; font-weight: bold;">*</span> <span style="color: #666666; font-style: italic;"># 删除多余文件</span>
<span style="color: #c20cb9; font-weight: bold;">umount</span> <span style="color: #000000; font-weight: bold;">/</span>mnt<span style="color: #000000; font-weight: bold;">/</span>cdrom</pre></td></tr></table></div>

</p>
<p>
调整一下启动选项。用文本编辑器打开/mnt/usb/syslinux.cfg，将&#8221;cdroot&#8221;替换成&#8221;cdroot slowusb&#8221;，&#8221;kernel memtest86&#8243;替换成&#8221;kernel memtest&#8221;。</p>

<div class="wp_codebox"><table><tr id="p488219"><td class="code" id="p4882code19"><pre class="bash" style="font-family:monospace;"><span style="color: #c20cb9; font-weight: bold;">umount</span> <span style="color: #000000; font-weight: bold;">/</span>mnt<span style="color: #000000; font-weight: bold;">/</span>usb</pre></td></tr></table></div>

</p>
<p>将Syslinux安装到/dev/sdb1。</p>

<div class="wp_codebox"><table><tr id="p488220"><td class="code" id="p4882code20"><pre class="bash" style="font-family:monospace;">syslinux <span style="color: #000000; font-weight: bold;">/</span>dev<span style="color: #000000; font-weight: bold;">/</span>sdb1</pre></td></tr></table></div>

<p>这样Gento Live USB就完成了，可以重启机器，并选择u盘启动看看效果(;
</p>
<p><a href="http://www.gentoo.org/doc/en/liveusb.xml">Reference</a></p>
<p><small>本文由 Malloc 创作，转载或引用前请<a href="mailto:programet.org@gmail.com">联系我们</a>。</small></p><p>相关文章：<ol>
<li><a href='http://blog.programet.org/2008/09/howl.html' rel='bookmark' title='五十年前的：Howl'>五十年前的：Howl</a></li>
<li><a href='http://blog.programet.org/2009/05/blog-post-3.html' rel='bookmark' title='无显然'>无显然</a></li>
<li><a href='http://blog.programet.org/2009/01/blog-post_30-2.html' rel='bookmark' title='群论基本概念以及其在人类学里的一个巧妙应用'>群论基本概念以及其在人类学里的一个巧妙应用</a></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://blog.programet.org/2011/12/gentoo%e5%ae%89%e8%a3%85%e7%ac%94%e8%ae%b01.html/feed</wfw:commentRss>
		<slash:comments>5</slash:comments>
	
		<series:name><![CDATA[gentoo笔记]]></series:name>
	</item>
		<item>
		<title>Linux引论1</title>
		<link>http://blog.programet.org/2011/04/linux%e5%bc%95%e8%ae%ba1.html</link>
		<comments>http://blog.programet.org/2011/04/linux%e5%bc%95%e8%ae%ba1.html#comments</comments>
		<pubDate>Sun, 10 Apr 2011 03:54:00 +0000</pubDate>
		<dc:creator>Malloc</dc:creator>
				<category><![CDATA[原创博文]]></category>
		<category><![CDATA[GCC]]></category>
		<category><![CDATA[Linus Torvalds]]></category>
		<category><![CDATA[linux]]></category>

		<guid isPermaLink="false">http://blog.programet.org/?p=4045</guid>
		<description><![CDATA[GCC和BASH (I) 1991年，也就是恰好20年前，在芬兰赫尔辛基读研究生的Linus Torvalds，为了能用自己的x86机器访问学校的ftp服务器和查看新闻组，基于MINIX编写了Linux，当他像扔漂流瓶一样把Linux扔进因特网这片海洋时，他写道: Hello everybody out there using minix - I&#8217;m doing a (free) operating system (just a hobby, won&#8217;t be big and professional like gnu) for 386(486) AT clones. This has been brewing since april, and is starting to get ready. I&#8217;d like any feedback on things people like/dislike in minix, as my [...]
相关文章：<ol>
<li><a href='http://blog.programet.org/2010/11/i-will-%e6%8e%a8%e8%8d%90%e5%8f%8a%e6%ad%8c%e8%af%8d%e7%bf%bb%e8%af%91.html' rel='bookmark' title='I Will 推荐及歌词翻译'>I Will 推荐及歌词翻译</a></li>
<li><a href='http://blog.programet.org/2009/12/when-christmas-comes-to-town.html' rel='bookmark' title='When Christmas Comes to Town 中文版'>When Christmas Comes to Town 中文版</a></li>
</ol>]]></description>
			<content:encoded><![CDATA[<h2>GCC和BASH (I)</h2>
<p>1991年，也就是恰好20年前，在芬兰赫尔辛基读研究生的Linus Torvalds，为了能用自己的x86机器访问学校的ftp服务器和查看新闻组，基于MINIX编写了Linux，当他像扔漂流瓶一样把Linux扔进因特网这片海洋时，他写道:<span id="more-4045"></span></p>
<blockquote><p>Hello everybody out there using minix -</p>
<p>I&#8217;m doing a (free) operating system (just a hobby, won&#8217;t be big and professional like gnu) for 386(486) AT clones. This has been brewing since april, and is starting to get ready. I&#8217;d like any feedback on things people like/dislike in minix, as my OS resembles it somewhat (same physical layout of the file-system (due to practical reasons) among other things).</p>
<p>I&#8217;ve currently ported bash(1.08) and gcc(1.40), and things seem to work. This implies that I&#8217;ll get something practical within a few months, and I&#8217;d like to know what features most people would want. Any suggestions are welcome, but I won&#8217;t promise I&#8217;ll implement them <img src='http://blog.programet.org/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> </p>
<p>Linus (torvalds@kruuna.helsinki.fi)</p>
<p>PS. Yes – it&#8217;s free of any minix code, and it has a multi-threaded fs. It is NOT portable (uses 386 task switching etc), and it probably never will support anything other than AT-harddisks, as that&#8217;s all I have <img src='http://blog.programet.org/wp-includes/images/smilies/icon_sad.gif' alt=':-(' class='wp-smiley' /> .</p>
<p style="text-align: right;">—Linus Torvalds</p>
</blockquote>
<p>Linus在完成基本的操作系统内核后，他移植的头两个程序就是GCC和BASH，也就是这篇文章的主角:-)</p>
<h3>GCC</h3>
<p>GCC的全称是GNU Compiler Collection，它原本是GNU C Compiler，后来又加入了对C++, Java, ObjC/C++, Fortran, Ada, Pascal和Google Go的支持。尽管GCC支持的语言在变多，但是大多数Linux用户或许还是把更多关心放到GCC对C语言编译的改进上（原因嘛，0.C语言简洁，可靠，快速; 1.内核是用C编写的; 2.核心组件是用C语言编写的; 3.大多数优秀的Linux应用程序是用C语言编写的; 4.很多优秀的黑客不喜欢OOP o_O）。</p>
<p>编译C源文件的程序叫cc，也就是C语言的编译器。一般我们需要编译一个C的源文件foo.c，需要在命令行下输入gcc foo.c，这时就会生成一个a.out文件（a.out原本是大多数类Unix系统使用的可执行文件格式，现在来说，它太老了，现在Linux的可执行文件格式是ELF，但是为了保持传统还是在不指定-o选项的情况下输出a.out）。如果需要制定输出文件的名称需要加入-o选项，就像这样gcc -o foo foo.c。几个常用的选项还有-g, -O1, -O2。-g是加入调式信息，这样在得到可执行程序之后，可以对那个程序进行调试；-O1, -O2是对代码进行优化。</p>
<p>可能对于一些有过编译经历却不完全了解编译过程的童鞋来说，编译等同于输入一个源文件，然后输出一个可执行文件。如果要严格区分的话，编译只是其中的一道工序。为了从一个编写良好的C源文件得到一个可执行文件，计算机要做的事情是按次序：预编译、编译、汇编和链接。 这个是比较初略的步骤，在编译那块，就有一门叫做编译原理的课程去讲解。</p>
<p>首先预编译是将源文件的宏代码进行扩展；然后编译是将扩展后的代码转变为汇编代码；接着汇编是将汇编代码转变为机器码；最后链接，是要把一些其他地方的代码跟你的代码“绑”在一起（如果第一次看到可能会有点一头雾水，如果知道链接还有静态链接和动态链接，可能会更加不知所措）。</p>
<p>现在让我们看看调用gcc -o foo foo.c的时候发生了什么。</p>
<p>计算机读入这段命令后，会去启动一个叫做gcc的程序（说实话，这个名字有点误导人）。gcc准确来说，应该叫C语言编译驱动程序。因为实际上gcc并不作任何关于预编译、编译、汇编和链接的工作，它做的是调用其它命令来做这些工作。然后计算机查看gcc的命令选项，知道1. -o foo-&gt;生成一个名为foo的可执行的目标文件，意味着要依次调用cpp, cc, as, ld对输入的源文件进行处理; 2. foo.c -&gt;输入的是一个C语言的源文件。接着gcc开始依次调用cpp, cc, as, ld对foo.c进行处理。这些程序的作用: cpp进行宏扩展; cc编译; as汇编; ld链接。</p>
<p>如果要指定gcc把工作只进行到这四个阶段的某一个结束为止，可以添加这些选项:-E-&gt;只扩展; -S-&gt;编译，不汇编; -c-&gt;完成汇编，不链接。在这些选项后边不必加入制定的文件名。</p>
<h3>一些后话</h3>
<p>GCC虽然现在受到了诸如基于LLVM的Clang等编译器的挑战，但它还是Linux当值无愧的标准编译器（当然官方可没这么说，不过这是大家公认的）。当被问到关心GNU哪些项目时，一贯犀利的Linus说他只关心GCC，其他神马的都是浮云（包括牛气冲天的GNU Emacs O_o; “我用的是Micro Emacs，也只是为了用那些快捷键而已”；“我都不用调试器的，真有问题的话，就要把你的脑袋当计算机了”）。</p>
<p><small>本文由 Malloc 创作，转载或引用前请<a href="mailto:programet.org@gmail.com">联系我们</a>。</small></p><p>相关文章：<ol>
<li><a href='http://blog.programet.org/2010/11/i-will-%e6%8e%a8%e8%8d%90%e5%8f%8a%e6%ad%8c%e8%af%8d%e7%bf%bb%e8%af%91.html' rel='bookmark' title='I Will 推荐及歌词翻译'>I Will 推荐及歌词翻译</a></li>
<li><a href='http://blog.programet.org/2009/12/when-christmas-comes-to-town.html' rel='bookmark' title='When Christmas Comes to Town 中文版'>When Christmas Comes to Town 中文版</a></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://blog.programet.org/2011/04/linux%e5%bc%95%e8%ae%ba1.html/feed</wfw:commentRss>
		<slash:comments>7</slash:comments>
	
		<series:name><![CDATA[Linux引论]]></series:name>
	</item>
		<item>
		<title>又见桂林</title>
		<link>http://blog.programet.org/2011/01/%e5%8f%88%e8%a7%81%e6%a1%82%e6%9e%97.html</link>
		<comments>http://blog.programet.org/2011/01/%e5%8f%88%e8%a7%81%e6%a1%82%e6%9e%97.html#comments</comments>
		<pubDate>Mon, 17 Jan 2011 18:08:46 +0000</pubDate>
		<dc:creator>Malloc</dc:creator>
				<category><![CDATA[原创博文]]></category>

		<guid isPermaLink="false">http://blog.programet.org/?p=3633</guid>
		<description><![CDATA[中午走的时候，重庆下起了雪。 踏上飞机，飞向南国的另一个城市。 一个人可能会被一个城市的风光吸引，可能会为城市的性格而流连，可能只为了另一个人而留下。 从小，浪迹的基因就在血液中流淌。被奶奶牵着手，来回于乡村与集镇；被大巴装载，穿梭于小城与城市之间；被飞机托起，从云雾中来到另一个大城市。 能让我驻足的，也就是那么一群人罢了。 我记不清老家前的竹子有几棵，记不清上到我家有几级阶梯，不知道从初一到高三住过哪几间宿舍，也从分不清哪个是晋湖哪个是云湖。 “快跟叔叔说‘谢谢’。”我起身给身旁的老人和小孩子让出座位。我苦涩一笑。真相用娱乐的眼光来看待这个称呼，就像平时调侃那样。才发现，当这话从一个老者口中传出来时，身体不免有些发凉了。 前几个星期，合上《三体III》的时候，问舍友：如果让你一个人活个1000多万年，你愿不愿意？不愿意。加个女伴呢？考虑考虑。我：能活这么长，谁不愿意啊，能看到这么长的历史。谁衰谁亡清楚，曲率推进能不能造出来也请楚了？这么好的事情，换做我，赌上这辈子的一切，我都愿意。 飞机停妥，踏上下机通道，看到熟悉的航站楼，还有印着“交通银行”的航务车，不得不佩服自己的善变——就一次期考的时间，先前的想法都被完全推翻了。 上次在此离开的时候，看到了小燕姐； 前面那个腆着个肚子的，自然而然想到了老宿； 茶色眼睛，嘿嘿～ 大一结束的时候，大家一起讨论一些话题，说到了外国语学院漂亮的女老师，工友们面露喜色，只有我唉声了一番：唉，又老了一岁…… 现在，离开老宿，小燕姐他们也有一年多了，想到的他们也是一年多前的样子。但事实就是如此，再英俊漂亮的容颜也逃不过岁月的洗礼。 我现在赶去要见的这个家伙当然也不是个例外。 也学会着留长发，也在不久前度过了20岁生日；还是个独立，灵活的家伙。 见不到的另一个家伙也不是个例外。 也逐渐地学会去承担；还是要去旅行 ，只是这次不再是一个人。 还有一些家伙，要么坚持着自己的人文主义理想，要么还是笑看风云淡，要么还是为成为精英中的一份子而奋斗。 或许这就是我回到这里的理由吧，就只是为了看看这些，如同刻在石头上的东西。 本文由 Malloc 创作，转载或引用前请联系我们。]]></description>
			<content:encoded><![CDATA[<p>中午走的时候，重庆下起了雪。</p>
<p>踏上飞机，飞向南国的另一个城市。<br />
一个人可能会被一个城市的风光吸引，可能会为城市的性格而流连，可能只为了另一个人而留下。</p>
<p><span id="more-3633"></span></p>
<p>从小，浪迹的基因就在血液中流淌。被奶奶牵着手，来回于乡村与集镇；被大巴装载，穿梭于小城与城市之间；被飞机托起，从云雾中来到另一个大城市。</p>
<p>能让我驻足的，也就是那么一群人罢了。<br />
我记不清老家前的竹子有几棵，记不清上到我家有几级阶梯，不知道从初一到高三住过哪几间宿舍，也从分不清哪个是晋湖哪个是云湖。</p>
<p>“快跟叔叔说‘谢谢’。”我起身给身旁的老人和小孩子让出座位。我苦涩一笑。真相用娱乐的眼光来看待这个称呼，就像平时调侃那样。才发现，当这话从一个老者口中传出来时，身体不免有些发凉了。</p>
<p>前几个星期，合上《三体III》的时候，问舍友：如果让你一个人活个1000多万年，你愿不愿意？不愿意。加个女伴呢？考虑考虑。我：能活这么长，谁不愿意啊，能看到这么长的历史。谁衰谁亡清楚，曲率推进能不能造出来也请楚了？这么好的事情，换做我，赌上这辈子的一切，我都愿意。</p>
<p>飞机停妥，踏上下机通道，看到熟悉的航站楼，还有印着“交通银行”的航务车，不得不佩服自己的善变——就一次期考的时间，先前的想法都被完全推翻了。</p>
<p>上次在此离开的时候，看到了小燕姐；</p>
<p>前面那个腆着个肚子的，自然而然想到了老宿；</p>
<p>茶色眼睛，嘿嘿～</p>
<p>大一结束的时候，大家一起讨论一些话题，说到了外国语学院漂亮的女老师，工友们面露喜色，只有我唉声了一番：唉，又老了一岁……</p>
<p>现在，离开老宿，小燕姐他们也有一年多了，想到的他们也是一年多前的样子。但事实就是如此，再英俊漂亮的容颜也逃不过岁月的洗礼。</p>
<p>我现在赶去要见的这个家伙当然也不是个例外。</p>
<p>也学会着留长发，也在不久前度过了20岁生日；还是个独立，灵活的家伙。</p>
<p>见不到的另一个家伙也不是个例外。</p>
<p>也逐渐地学会去承担；还是要去旅行 ，只是这次不再是一个人。</p>
<p>还有一些家伙，要么坚持着自己的人文主义理想，要么还是笑看风云淡，要么还是为成为精英中的一份子而奋斗。</p>
<p>或许这就是我回到这里的理由吧，就只是为了看看这些，如同刻在石头上的东西。</p>
<p><small>本文由 Malloc 创作，转载或引用前请<a href="mailto:programet.org@gmail.com">联系我们</a>。</small></p>]]></content:encoded>
			<wfw:commentRss>http://blog.programet.org/2011/01/%e5%8f%88%e8%a7%81%e6%a1%82%e6%9e%97.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>新年旧语</title>
		<link>http://blog.programet.org/2011/01/%e6%96%b0%e5%b9%b4%e6%97%a7%e8%af%ad.html</link>
		<comments>http://blog.programet.org/2011/01/%e6%96%b0%e5%b9%b4%e6%97%a7%e8%af%ad.html#comments</comments>
		<pubDate>Fri, 31 Dec 2010 16:43:45 +0000</pubDate>
		<dc:creator>Malloc</dc:creator>
				<category><![CDATA[原创博文]]></category>

		<guid isPermaLink="false">http://blog.programet.org/?p=3560</guid>
		<description><![CDATA[本文由 Malloc 创作，转载或引用前请联系我们。相关文章： 辞旧迎新，又是一年 六一节游览Programet指南 我的年龄周围
相关文章：<ol>
<li><a href='http://blog.programet.org/2011/01/%e8%be%9e%e6%97%a7%e8%bf%8e%e6%96%b0%ef%bc%8c%e5%8f%88%e6%98%af%e4%b8%80%e5%b9%b4.html' rel='bookmark' title='辞旧迎新，又是一年'>辞旧迎新，又是一年</a></li>
<li><a href='http://blog.programet.org/2010/06/guide.html' rel='bookmark' title='六一节游览Programet指南'>六一节游览Programet指南</a></li>
<li><a href='http://blog.programet.org/2011/11/%e6%88%91%e7%9a%84%e5%b9%b4%e9%be%84%e5%91%a8%e5%9b%b4.html' rel='bookmark' title='我的年龄周围'>我的年龄周围</a></li>
</ol>]]></description>
			<content:encoded><![CDATA[<p><span id="more-3560"></span><img class="aligncenter size-full wp-image-3576" title="DSC02569" src="http://blog.programet.org/wp-content/uploads/DSC025691.jpg" alt="" width="459" height="257" /><img class="aligncenter size-full wp-image-3570" title="DSC02570" src="http://blog.programet.org/wp-content/uploads/DSC02570.jpg" alt="" width="460" height="257" />
<div style="width:460;overflow-x:scroll;"><img class="aligncenter size-full wp-image-3572" title="DSC02568" src="http://blog.programet.org/wp-content/uploads/DSC025681.jpg" alt="" width="800" height="450" /></div>
<p><small>本文由 Malloc 创作，转载或引用前请<a href="mailto:programet.org@gmail.com">联系我们</a>。</small></p><p>相关文章：<ol>
<li><a href='http://blog.programet.org/2011/01/%e8%be%9e%e6%97%a7%e8%bf%8e%e6%96%b0%ef%bc%8c%e5%8f%88%e6%98%af%e4%b8%80%e5%b9%b4.html' rel='bookmark' title='辞旧迎新，又是一年'>辞旧迎新，又是一年</a></li>
<li><a href='http://blog.programet.org/2010/06/guide.html' rel='bookmark' title='六一节游览Programet指南'>六一节游览Programet指南</a></li>
<li><a href='http://blog.programet.org/2011/11/%e6%88%91%e7%9a%84%e5%b9%b4%e9%be%84%e5%91%a8%e5%9b%b4.html' rel='bookmark' title='我的年龄周围'>我的年龄周围</a></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://blog.programet.org/2011/01/%e6%96%b0%e5%b9%b4%e6%97%a7%e8%af%ad.html/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Linux引论0</title>
		<link>http://blog.programet.org/2010/07/linux%e5%bc%95%e8%ae%ba0.html</link>
		<comments>http://blog.programet.org/2010/07/linux%e5%bc%95%e8%ae%ba0.html#comments</comments>
		<pubDate>Thu, 29 Jul 2010 05:52:07 +0000</pubDate>
		<dc:creator>Malloc</dc:creator>
				<category><![CDATA[原创博文]]></category>

		<guid isPermaLink="false">http://blog.programet.org/?p=2747</guid>
		<description><![CDATA[这个是我写的第一个系列。我不知道这个系列有多长，但是基本的会有三篇，这三篇，我会很有逻辑地去写。三篇之后，我想大家对Linux也有了个大概的了解，我可能就会想到什么就写什么。如果真的想成为一个Linux Hacker的话，持之以恒自学是绝对必不可少的（即使是在大学，Linux的课程还是很少的）。还有一点，我这个人经常跳票:p…… 什么是Linux? 不知道大家当初买电脑的动机是什么（我估计大都是玩游戏:)，，但是口口声声说是为了学习，我觉得玩游戏并不是什么糟糕的理由，待会你就知道原因了），但是我敢打包票，店老板给你装的操作系统绝对是微软的Windows！接着大家在Windows下面，每天点点鼠标，玩上了仙剑98柔情版（估计也是很多90后的爱情启蒙之作），飙起了极品飞车，玩着FIFA不爽就去玩实况模拟器版本……后来家里面拉了猫，连上了互联网，玩起了传奇，在形形色色的论坛里灌水。尝到电脑带来的甜头的人们似乎也可以毫不含糊地称盖茨伟大的导师伟大的舵手……对于那些不泡BBS就蛋疼的人，可能隐隐约约记得BBS上的技术高人总是在鄙视Windows，记性好的还可能记得这些高人们经常以自己使用一个叫做Linux的操作系统而为荣。 “说来说去，Linux就是一个操作系统嘛。”对，它就是一个操作系统，但是……就没有但是了…… “操作系统（英語：Operating System，简称OS）是一管理電腦硬體（Computer hardware）與電腦軟體（Computer software）資源的程式，同时也是计算机系统的核心与基石。”说实话，维基百科上面这段话对于很多人来说是没提供多少有效信息……可能大家对资源这个词有点拿捏不准。资源毕竟是一个指代很宽泛的一个词。通俗的说，硬件就是可以概括为这样的一堆小部件： 有些童鞋可能听过诸如“现代计算机的结构体系是冯诺依曼式的”之类的话，冯诺依曼式计算机指的就是那种输入/输出(Input/Output)+储存器(Memory)+处理器(PU)的结构的计算机（以后我们不再用电脑这个词，因为计算机才是我们现在探讨的这玩意的本身面目）。其实每一个组成计算机的小部件（比如CPU、内存、硬盘）都是这种结构。当然这个图是忽略了电路（现代计算机是电子计算机，以前还有手摇的计算机）的具体细节的（那是一个相当复杂的问题阿）。图中的箭头在实际中是一堆电路，Memory和PU本质也是一堆更复杂电路（应该是这个星球上最难设计的电路了）。那么硬件资源指的就是（电路资源……这么理解也可以吧……你一定是电气的）这些小部件的集合。值得注意的是CPU，这是计算机最核心的部分，也算是计算机王国的国王，这个王国是个标准的中央集权国家。还有主存，也就是我们平常说的内存，是这个王国里面的宰相，不过这个宰相似乎不会谋划一些重要的计划，只知道拿支笔拼命记下国王的话。 （每个Item表示一个I/O设备，事实上有些I/O设备与CPU的交流是单向的，这个图把所有I/O设备与CPU的交流都画成了双向的） 软件资源，相比硬件更难说明一点，简单地说，就是一行又一行的代码（命令）。硬件软件关系就是 即软件是要在硬件里面运行的。更具体一点，可以把软件展开 代码用比较接近自然语言的计算机语言写成，然后交给编译器，编译器把这些代码转换为计算机硬件可以识别的机器码，也就是一堆又一堆的二进制序列。硬件可以很轻松地把这些二进制序列转换为电信号，在电路里传送，经过一系列神奇的传输后，最后又输出一组电信号，这组电信号再经转换，就变为了我们（我们指代普通人，因为有些HACKER，输出什么他都知道这是神马东西）可以理解的信息。编译器器也是一个软件，那么编译器的机器码又是怎么得到的呢？编译器的机器码也是通过上面的过程得到的，我们称编译编译器1的编译器2是比编译器1更低级的。当然，这不可能是个无穷递降过程，到最后，会有一个编译器是用机器码写的（可能不是全部都用机器码，关键部分用了机器码），这样就可以直接交给计算机硬件处理。似乎有了这些软件和硬件，计算机就可以运行得很好了。但是现在我们来看看这么一个图 就是当我们遇到多个程序需要一起运行的情况时，怎么办？我们现在的大多计算机都没有并行运算的功能，在某个时刻，有且只有一条命令在CPU里面执行（虽然现在有了流水线技术，但因为硬件上的瓶颈，这仍算不上真正的并行计算）。目前的做法是利用CPU的快速运算，让计算机用户感觉到这几个程序是在“同时”运行的。这在以前CPU技术还不是很发达的年代是不可能实现的。举个例子，一个老板分别让两个工人用两台不同的机器做3个工件。一段时间后，老板去查看任务进度 情况，看到第一个工人做了1个工件，第二个工人做了3个工件。在老版的印象中，两台机器走完一个制作流程的时间是一样的，所以他就认为第二个工人使用的机器能同时做三个工件。而事实上，两个人的机器都是每道流程只能做1个工件，而第二个工人的机器速度较快，在第一个工人的机器一个流程的时间内，他的机器走完了三个流程（稍后我还会举一个例子来说明如何加强老板这种错觉）。 在冯诺依曼计算体系中，任何一个将要被运行的程序都必须先加载到内存，上图展示的是（中间那条箭头在硬件上就是前端总线(bus)），内存中储存有三道程序的例子。首先需要指出的是，在计算机的世界中，我们追求的是效率最大化，计算机这个工具本身就是为了提高效率而生的。然而从图上看，貌似把三道程序同时储存在内存中运行和一道接着一道程序装进内存再运行这两种情况效率是一样的。注意，我们得出这个结论的前提是，我们假设程序是一直处于运行状态 (running)。实际情况是程序还可能处于其它状态，比如在等待(waiting)把内存中的数据写到磁盘里面，那么在这段时间里边，CPU就可以去执行另一道程序——这就是运用统筹来提高效率。 现在问题来了，当我们把三道程序装进内存，我们如何完成程序之间的切换呢？当某个程序正要处于一个非运行的状态时，它应该把CPU的使用权交给哪个程序才能完成效率最大化呢？想一想，如果我们把实现程序切换和计算最优方案的代码写进每一个程序，那么世界上所有的程序都会有一大段相同的代码，这样的重复就会浪费很多储存器资源。解决这个问题的方法是，把这些相同的代码抽离出来，写成另一个程序，由这个程序完成其它程序间的切换，计算最优方案，这个程序就是操作系统(Operating System)（台译为作业系统，我认为这个翻译更靠谱）。 这里又有了另一幅图景： 老板有了一台超级机器和一些工人，他听说职业经理人这个东西会很好的管理他的机器和工人，让他的企业利益最大化，于是他把职业经理人请来了。由于只有一台机器，职业经理人给每个工人一定时间做他们的工作，时间到了就换另一个工人。这样老板来检查的时候，发现每个工人的工作都有一定的进度，他就认为这些工人是在这台机器上同时工作的。 把老板看成是我们用户，机器是CPU，经理人是操作系统，工人是程序，就是我们现在使用计算机的实际情况。其中职业经理人给拿着一个计时器给工人计时，他的这个计时器CPU里面也有。经理人喊：“停！”。这叫中断。所以经理人的分配工时的机制对应到操作系统方面就称为时钟中断技术。这就是现代操作系统的基本技术了。 操作系统有时也成为操作系统内核(Kernel)。上面说的很多方面只是从一个角度来说，比如操作系统还必须为程序分配内存，调度优先级别不同的程序的运行等等。就像操作系统定义的那样：是一个管理软硬件资源的程序，这是一个范围很大的定义，所以在这里不可能三言两语说完，只是展现一个大致的图景。 Unix、Minix、Linux的诞生 关于KR和Unix，Prof. Andrew S. Tanenbaum和Minix，Linus和Linux的历史，我在此不再赘述，因为网上可以找到很多史料。我把他们写这些操作系统的目的罗列一下：年轻的KR写Unix是为了玩一个太空射击游戏；Tanenbaum写Minix是为了教学需要；Linus写Linux是为了让自己的新机子能访问学校的网络，而且Linux原本不叫Linux，叫怪胎(Freax)。 大家可以从这里得到一点事业上的启发。 为什么要用Linux? 提这个问题的时候，我已经在假设你现在用的是Windows了。Linux总免不了要和Windows比较。现实是这样的：根据今年的数据，全球TOP500的计算机有455台运行的是Linux系统。排名第一的美洲虎使用的也是Linux系统。服务器方面，Linux系统的市场份额是13%。桌面方面，Linux系统的份额是1%左右。可以看到尽管Linux是自由、开源的，但是它在桌面市场可以说是可以忽略不计。大家知道桌面市场是面向大众的，从这点来说，Linux对人民大众是一点亲和力都没有（当然，我们还不得不承认Windows在商业上的成功）。一旦到了科学计算这种高精尖领域，Linux却是大放异彩。从性能上说，Linux运行更稳定，它的内存管理更棒。大家知道Windows经常有蓝屏一说，在Linux下面却有黑屏一说。黑屏是啥，就是没电了，Linux只有在没有电的情况下才不能正常运行。 关于为什么Linux那么没有亲和力，这里有个比方。Windows就是甲壳虫，买了就能上路，厂家还帮你装了空调、音响之类的。Linux只是个V10引擎，这个引擎是制造商白送给你的，还附带设计图，使用手册。但是他没给你车壳，轮胎。这些在另一些商店也有，也是白送的。你要做的就是依照这些图纸，手册，自己动手组装一部高性能跑车（现在情况好多了，有了Ubuntu这个组装商，虽说组装出来的不是布加迪威龙型的，保时捷型的总还说的过去）。DIY向来是那些精力过剩的Geek的最爱，所以他们当然乐此不疲地捣鼓Linux系统。普通大众也当然会对此望而却步，他们需要的无非是能快速地进行文档编辑，舒舒服服地坐在椅子上听千千静听放出来的音乐罢了。再说了，甲壳虫开得好好的，遵守交通规则，不超速驾车，不违规超车，干嘛要去开一部难以驾驭超级跑车。就连Linus自己都说&#8221;Wild Linux&#8221;(野性的Linux)。说一下题外话，如果大家搜一搜这方面的文章，可能会搜到一个叫王垠（很牛的一个人，曾经捉到过里面的臭虫）的清华博士生写的《完全用Linux工作》。我同意里面大部分观点，只是不太欣赏文章激烈的措辞。 如果觉得自己对DIY计算机之类的毫无兴趣，对计算机的要求就是能快速上手就行，Windows已经很棒了（毕竟每一个Windows版本是几千高级技术人才的几年工作的结晶）。 但是如果你是个Geek，而且对效率有很高的要求的话，Unix/Linux无疑是不二选择。你可能会问：“那么不易用的东西，效率怎么会高呢？”呵呵，这个问题就留到下一篇解答了。 本文由 Malloc 创作，转载或引用前请联系我们。相关文章： 每周软件推荐-TeX 素数有无穷多个的另类证明（一）：两两互素的无穷序列 素数有无穷多个的另类证明（三）：被遗忘的证明
相关文章：<ol>
<li><a href='http://blog.programet.org/2009/07/%e6%af%8f%e5%91%a8%e8%bd%af%e4%bb%b6%e6%8e%a8%e8%8d%90-tex.html' rel='bookmark' title='每周软件推荐-TeX'>每周软件推荐-TeX</a></li>
<li><a href='http://blog.programet.org/2009/11/%e7%b4%a0%e6%95%b0%e6%9c%89%e6%97%a0%e7%a9%b7%e5%a4%9a%e4%b8%aa%e7%9a%84%e5%8f%a6%e7%b1%bb%e8%af%81%e6%98%8e%ef%bc%88%e4%b8%80%ef%bc%89%ef%bc%9a%e4%b8%a4%e4%b8%a4%e4%ba%92%e7%b4%a0%e7%9a%84%e6%97%a0.html' rel='bookmark' title='素数有无穷多个的另类证明（一）：两两互素的无穷序列'>素数有无穷多个的另类证明（一）：两两互素的无穷序列</a></li>
<li><a href='http://blog.programet.org/2009/12/%e7%b4%a0%e6%95%b0%e6%9c%89%e6%97%a0%e7%a9%b7%e5%a4%9a%e4%b8%aa%e7%9a%84%e5%8f%a6%e7%b1%bb%e8%af%81%e6%98%8e%ef%bc%88%e4%b8%89%ef%bc%89%ef%bc%9a%e8%a2%ab%e9%81%97%e5%bf%98%e7%9a%84%e8%af%81%e6%98%8e.html' rel='bookmark' title='素数有无穷多个的另类证明（三）：被遗忘的证明'>素数有无穷多个的另类证明（三）：被遗忘的证明</a></li>
</ol>]]></description>
			<content:encoded><![CDATA[<blockquote><p>这个是我写的第一个系列。我不知道这个系列有多长，但是基本的会有三篇，这三篇，我会很有逻辑地去写。三篇之后，我想大家对Linux也有了个大概的了解，我可能就会想到什么就写什么。如果真的想成为一个Linux Hacker的话，持之以恒自学是绝对必不可少的（即使是在大学，Linux的课程还是很少的）。还有一点，我这个人经常跳票:p……</p></blockquote>
<p><span id="more-2747"></span></p>
<h3>什么是Linux?</h3>
<p>不知道大家当初买电脑的动机是什么（我估计大都是玩游戏:)，，但是口口声声说是为了学习，我觉得玩游戏并不是什么糟糕的理由，待会你就知道原因了），但是我敢打包票，店老板给你装的操作系统绝对是微软的Windows！接着大家在Windows下面，每天点点鼠标，玩上了仙剑98柔情版（估计也是很多90后的爱情启蒙之作），飙起了极品飞车，玩着FIFA不爽就去玩实况模拟器版本……后来家里面拉了猫，连上了互联网，玩起了传奇，在形形色色的论坛里灌水。尝到电脑带来的甜头的人们似乎也可以毫不含糊地称盖茨伟大的导师伟大的舵手……对于那些不泡BBS就蛋疼的人，可能隐隐约约记得BBS上的技术高人总是在鄙视Windows，记性好的还可能记得这些高人们经常以自己使用一个叫做Linux的操作系统而为荣。</p>
<p>“说来说去，Linux就是一个操作系统嘛。”对，它就是一个操作系统，但是……就没有但是了……</p>
<div style="width: 100%; background-color: #fefedb; clear: right; font-size: 10pt; color: black; padding: 5px;"><a href="http://zh.wikipedia.org/zh/%E6%93%8D%E4%BD%9C%E7%B3%BB%E7%BB%9F">“操作系统</a>（英語：Operating System，简称OS）是一管理電腦硬體（Computer hardware）與電腦軟體（Computer software）資源的程式，同时也是计算机系统的核心与基石。”说实话，维基百科上面这段话对于很多人来说是没提供多少有效信息……可能大家对资源这个词有点拿捏不准。资源毕竟是一个指代很宽泛的一个词。通俗的说，硬件就是可以概括为这样的一堆小部件：<a rel="attachment wp-att-2801" href="http://blog.programet.org/2010/07/linux%e5%bc%95%e8%ae%ba0.html/hardware"><img class="aligncenter size-full wp-image-2801" title="hardware" src="http://blog.programet.org/wp-content/uploads/hardware.png" alt="" width="159" height="295" /></a></div>
<div style="width: 100%; background-color: #fefedb; clear: right; font-size: 10pt; color: black; padding: 5px;">有些童鞋可能听过诸如“现代计算机的结构体系是冯诺依曼式的”之类的话，冯诺依曼式计算机指的就是那种输入/输出(Input/Output)+储存器(Memory)+处理器(PU)的结构的计算机（以后我们不再用电脑这个词，因为计算机才是我们现在探讨的这玩意的本身面目）。其实每一个组成计算机的小部件（比如CPU、内存、硬盘）都是这种结构。当然这个图是忽略了电路（现代计算机是电子计算机，以前还有手摇的计算机）的具体细节的（那是一个相当复杂的问题阿）。图中的箭头在实际中是一堆电路，Memory和PU本质也是一堆更复杂电路（应该是这个星球上最难设计的电路了）。那么硬件资源指的就是（电路资源……这么理解也可以吧……你一定是电气的）这些小部件的集合。值得注意的是CPU，这是计算机最核心的部分，也算是计算机王国的国王，这个王国是个标准的中央集权国家。还有主存，也就是我们平常说的内存，是这个王国里面的宰相，不过这个宰相似乎不会谋划一些重要的计划，只知道拿支笔拼命记下国王的话。</div>
<div style="width: 100%; background-color: #fefedb; clear: right; font-size: 10pt; color: black; padding: 5px;"><a rel="attachment wp-att-2885" href="http://blog.programet.org/2010/07/linux%e5%bc%95%e8%ae%ba0.html/cpu"><img class="aligncenter size-full wp-image-2885" title="cpu" src="http://blog.programet.org/wp-content/uploads/cpu.png" alt="" width="435" height="332" /></a></div>
<div style="width: 100%; background-color: #fefedb; clear: right; font-size: 10pt; color: black; padding: 5px;">（每个Item表示一个I/O设备，事实上有些I/O设备与CPU的交流是单向的，这个图把所有I/O设备与CPU的交流都画成了双向的）</div>
<div style="width: 100%; background-color: #fefedb; clear: right; font-size: 10pt; color: black; padding: 5px;">软件资源，相比硬件更难说明一点，简单地说，就是一行又一行的代码（命令）。硬件软件关系就是</div>
<div style="width: 100%; background-color: #fefedb; clear: right; font-size: 10pt; color: black; padding: 5px;"><a rel="attachment wp-att-2837" href="http://blog.programet.org/2010/07/linux%e5%bc%95%e8%ae%ba0.html/s-h-4"><img class="aligncenter size-full wp-image-2837" title="s-h" src="http://blog.programet.org/wp-content/uploads/s-h3.png" alt="" width="145" height="230" /></a></div>
<div style="width: 100%; background-color: #fefedb; clear: right; font-size: 10pt; color: black; padding: 5px;">即软件是要在硬件里面运行的。更具体一点，可以把软件展开</div>
<div style="width: 100%; background-color: #fefedb; clear: right; font-size: 10pt; color: black; padding: 5px;"><a rel="attachment wp-att-2830" href="http://blog.programet.org/2010/07/linux%e5%bc%95%e8%ae%ba0.html/software"><img class="aligncenter size-full wp-image-2830" title="software" src="http://blog.programet.org/wp-content/uploads/software.png" alt="" width="159" height="346" /></a></div>
<div style="width: 100%; background-color: #fefedb; clear: right; font-size: 10pt; color: black; padding: 5px;">代码用比较接近自然语言的计算机语言写成，然后交给编译器，编译器把这些代码转换为计算机硬件可以识别的机器码，也就是一堆又一堆的二进制序列。硬件可以很轻松地把这些二进制序列转换为电信号，在电路里传送，经过一系列神奇的传输后，最后又输出一组电信号，这组电信号再经转换，就变为了我们（我们指代普通人，因为有些<a href="http://zh.wikipedia.org/zh-cn/%E9%BB%91%E5%AE%A2">HACKER</a>，输出什么他都知道这是神马东西）可以理解的信息。编译器器也是一个软件，那么编译器的机器码又是怎么得到的呢？编译器的机器码也是通过上面的过程得到的，我们称编译编译器1的编译器2是比编译器1更低级的。当然，这不可能是个无穷递降过程，到最后，会有一个编译器是用机器码写的（可能不是全部都用机器码，关键部分用了机器码），这样就可以直接交给计算机硬件处理。似乎有了这些软件和硬件，计算机就可以运行得很好了。但是现在我们来看看这么一个图</div>
<div style="width: 100%; background-color: #fefedb; clear: right; font-size: 10pt; color: black; padding: 5px;"><a rel="attachment wp-att-2850" href="http://blog.programet.org/2010/07/linux%e5%bc%95%e8%ae%ba0.html/multi-progs"><img class="aligncenter size-full wp-image-2850" title="multi-progs" src="http://blog.programet.org/wp-content/uploads/multi-progs.png" alt="" width="375" height="265" /></a>就是当我们遇到多个程序需要一起运行的情况时，怎么办？我们现在的大多计算机都没有并行运算的功能，在某个时刻，有且只有一条命令在CPU里面执行（虽然现在有了<a href="http://zh.wikipedia.org/zh-cn/%E6%B5%81%E6%B0%B4%E7%BA%BF_(%E8%AE%A1%E7%AE%97%E6%9C%BA)">流水线技术</a>，但因为硬件上的瓶颈，这仍算不上真正的并行计算）。目前的做法是利用CPU的快速运算，让计算机用户感觉到这几个程序是在“同时”运行的。这在以前CPU技术还不是很发达的年代是不可能实现的。举个例子，一个老板分别让两个工人用两台不同的机器做3个工件。一段时间后，老板去查看任务进度 情况，看到第一个工人做了1个工件，第二个工人做了3个工件。在老版的印象中，两台机器走完一个制作流程的时间是一样的，所以他就认为第二个工人使用的机器能同时做三个工件。而事实上，两个人的机器都是每道流程只能做1个工件，而第二个工人的机器速度较快，在第一个工人的机器一个流程的时间内，他的机器走完了三个流程（稍后我还会举一个例子来说明如何加强老板这种错觉）。</div>
<div style="width: 100%; background-color: #fefedb; clear: right; font-size: 10pt; color: black; padding: 5px;"><a rel="attachment wp-att-2953" href="http://blog.programet.org/2010/07/linux%e5%bc%95%e8%ae%ba0.html/cm"><img class="aligncenter size-full wp-image-2953" title="cm" src="http://blog.programet.org/wp-content/uploads/cm.png" alt="" width="345" height="263" /></a>在冯诺依曼计算体系中，任何一个将要被运行的程序都必须先加载到内存，上图展示的是（中间那条箭头在硬件上就是前端总线(bus)），内存中储存有三道程序的例子。首先需要指出的是，在计算机的世界中，我们追求的是效率最大化，计算机这个工具本身就是为了提高效率而生的。然而从图上看，貌似把三道程序同时储存在内存中运行和一道接着一道程序装进内存再运行这两种情况效率是一样的。注意，我们得出这个结论的前提是，我们假设程序是一直处于运行状态 (running)。实际情况是程序还可能处于其它状态，比如在等待(waiting)把内存中的数据写到磁盘里面，那么在这段时间里边，CPU就可以去执行另一道程序——这就是运用统筹来提高效率。</div>
<div style="width: 100%; background-color: #fefedb; clear: right; font-size: 10pt; color: black; padding: 5px;">现在问题来了，当我们把三道程序装进内存，我们如何完成程序之间的切换呢？当某个程序正要处于一个非运行的状态时，它应该把CPU的使用权交给哪个程序才能完成效率最大化呢？想一想，如果我们把实现程序切换和计算最优方案的代码写进每一个程序，那么世界上所有的程序都会有一大段相同的代码，这样的重复就会浪费很多储存器资源。解决这个问题的方法是，把这些相同的代码抽离出来，写成另一个程序，由这个程序完成其它程序间的切换，计算最优方案，这个程序就是操作系统(Operating System)（台译为作业系统，我认为这个翻译更靠谱）。</div>
<div style="width: 100%; background-color: #fefedb; clear: right; font-size: 10pt; color: black; padding: 5px;">这里又有了另一幅图景：</div>
<div style="width: 100%; background-color: #fefedb; clear: right; font-size: 10pt; color: black; padding: 5px;">老板有了一台超级机器和一些工人，他听说职业经理人这个东西会很好的管理他的机器和工人，让他的企业利益最大化，于是他把职业经理人请来了。由于只有一台机器，职业经理人给每个工人一定时间做他们的工作，时间到了就换另一个工人。这样老板来检查的时候，发现每个工人的工作都有一定的进度，他就认为这些工人是在这台机器上同时工作的。</div>
<div style="width: 100%; background-color: #fefedb; clear: right; font-size: 10pt; color: black; padding: 5px;">把老板看成是我们用户，机器是CPU，经理人是操作系统，工人是程序，就是我们现在使用计算机的实际情况。其中职业经理人给拿着一个计时器给工人计时，他的这个计时器CPU里面也有。经理人喊：“停！”。这叫中断。所以经理人的分配工时的机制对应到操作系统方面就称为时钟中断技术。这就是现代操作系统的基本技术了。</div>
<div style="width: 100%; background-color: #fefedb; clear: right; font-size: 10pt; color: black; padding: 5px;">操作系统有时也成为操作系统内核(Kernel)。上面说的很多方面只是从一个角度来说，比如操作系统还必须为程序分配内存，调度优先级别不同的程序的运行等等。就像操作系统定义的那样：是一个管理软硬件资源的程序，这是一个范围很大的定义，所以在这里不可能三言两语说完，只是展现一个大致的图景。</div>
<h3>Unix、Minix、Linux的诞生</h3>
<p>关于<a href="http://zh.wikipedia.org/zh/Unix">KR</a>和Unix，<a href="http://zh.wikipedia.org/zh/Minix">Prof. Andrew S. Tanenbaum</a>和Minix，<a href="http://zh.wikipedia.org/zh/Linux">Linus</a>和Linux的历史，我在此不再赘述，因为网上可以找到很多史料。我把他们写这些操作系统的目的罗列一下：年轻的KR写Unix是为了玩一个太空射击游戏；Tanenbaum写Minix是为了教学需要；Linus写Linux是为了让自己的新机子能访问学校的网络，而且Linux原本不叫Linux，叫怪胎(Freax)。 大家可以从这里得到一点事业上的启发。</p>
<h3>为什么要用Linux?</h3>
<p>提这个问题的时候，我已经在假设你现在用的是Windows了。Linux总免不了要和Windows比较。现实是这样的：根据今年的数据，全球TOP500的计算机有455台运行的是Linux系统。排名第一的美洲虎使用的也是Linux系统。服务器方面，Linux系统的市场份额是13%。桌面方面，Linux系统的份额是1%左右。可以看到尽管Linux是<a href="http://zh.wikipedia.org/zh/%E8%87%AA%E7%94%B1%E8%BD%AF%E4%BB%B6">自由、开源的</a>，但是它在桌面市场可以说是可以忽略不计。大家知道桌面市场是面向大众的，从这点来说，Linux对人民大众是一点亲和力都没有（当然，我们还不得不承认Windows在商业上的成功）。一旦到了科学计算这种高精尖领域，Linux却是大放异彩。从性能上说，Linux运行更稳定，它的内存管理更棒。大家知道Windows经常有蓝屏一说，在Linux下面却有黑屏一说。黑屏是啥，就是没电了，Linux只有在没有电的情况下才不能正常运行。</p>
<p>关于为什么Linux那么没有亲和力，这里有个比方。Windows就是甲壳虫，买了就能上路，厂家还帮你装了空调、音响之类的。Linux只是个V10引擎，这个引擎是制造商白送给你的，还附带设计图，使用手册。但是他没给你车壳，轮胎。这些在另一些商店也有，也是白送的。你要做的就是依照这些图纸，手册，自己动手组装一部高性能跑车（现在情况好多了，有了<a href="http://zh.wikipedia.org/zh/Ubuntu">Ubuntu</a>这个组装商，虽说组装出来的不是<a href="http://zh.wikipedia.org/zh/%E5%B8%83%E5%8A%A0%E8%BF%AA%E5%A8%81%E9%BE%99">布加迪威龙</a>型的，保时捷型的总还说的过去）。DIY向来是那些精力过剩的<a href="http://zh.wikipedia.org/zh/Geek">Geek</a>的最爱，所以他们当然乐此不疲地捣鼓Linux系统。普通大众也当然会对此望而却步，他们需要的无非是能快速地进行文档编辑，舒舒服服地坐在椅子上听千千静听放出来的音乐罢了。再说了，甲壳虫开得好好的，遵守交通规则，不超速驾车，不违规超车，干嘛要去开一部难以驾驭超级跑车。就连Linus自己都说&#8221;Wild Linux&#8221;(野性的Linux)。说一下题外话，如果大家搜一搜这方面的文章，可能会搜到一个叫王垠（很牛的一个人，曾经捉到过<img src='http://s.wordpress.com/latex.php?latex=%5CTeX&#038;bg=ffffff&#038;fg=000000&#038;s=0' alt='\TeX' title='\TeX' class='latex' />里面的臭虫）的清华博士生写的<a href="http://www.chinaunix.net/jh/46/293550.html">《完全用Linux工作》</a>。我同意里面大部分观点，只是不太欣赏文章激烈的措辞。</p>
<p>如果觉得自己对DIY计算机之类的毫无兴趣，对计算机的要求就是能快速上手就行，Windows已经很棒了（毕竟每一个Windows版本是几千高级技术人才的几年工作的结晶）。</p>
<p>但是如果你是个Geek，而且对效率有很高的要求的话，Unix/Linux无疑是不二选择。你可能会问：“那么不易用的东西，效率怎么会高呢？”呵呵，这个问题就留到下一篇解答了。</p>
<p><small>本文由 Malloc 创作，转载或引用前请<a href="mailto:programet.org@gmail.com">联系我们</a>。</small></p><p>相关文章：<ol>
<li><a href='http://blog.programet.org/2009/07/%e6%af%8f%e5%91%a8%e8%bd%af%e4%bb%b6%e6%8e%a8%e8%8d%90-tex.html' rel='bookmark' title='每周软件推荐-TeX'>每周软件推荐-TeX</a></li>
<li><a href='http://blog.programet.org/2009/11/%e7%b4%a0%e6%95%b0%e6%9c%89%e6%97%a0%e7%a9%b7%e5%a4%9a%e4%b8%aa%e7%9a%84%e5%8f%a6%e7%b1%bb%e8%af%81%e6%98%8e%ef%bc%88%e4%b8%80%ef%bc%89%ef%bc%9a%e4%b8%a4%e4%b8%a4%e4%ba%92%e7%b4%a0%e7%9a%84%e6%97%a0.html' rel='bookmark' title='素数有无穷多个的另类证明（一）：两两互素的无穷序列'>素数有无穷多个的另类证明（一）：两两互素的无穷序列</a></li>
<li><a href='http://blog.programet.org/2009/12/%e7%b4%a0%e6%95%b0%e6%9c%89%e6%97%a0%e7%a9%b7%e5%a4%9a%e4%b8%aa%e7%9a%84%e5%8f%a6%e7%b1%bb%e8%af%81%e6%98%8e%ef%bc%88%e4%b8%89%ef%bc%89%ef%bc%9a%e8%a2%ab%e9%81%97%e5%bf%98%e7%9a%84%e8%af%81%e6%98%8e.html' rel='bookmark' title='素数有无穷多个的另类证明（三）：被遗忘的证明'>素数有无穷多个的另类证明（三）：被遗忘的证明</a></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://blog.programet.org/2010/07/linux%e5%bc%95%e8%ae%ba0.html/feed</wfw:commentRss>
		<slash:comments>22</slash:comments>
	
		<series:name><![CDATA[Linux引论]]></series:name>
	</item>
		<item>
		<title>我只是很感性地写一篇球评</title>
		<link>http://blog.programet.org/2010/07/%e6%88%91%e5%8f%aa%e6%98%af%e5%be%88%e6%84%9f%e6%80%a7%e5%9c%b0%e5%86%99%e4%b8%80%e7%af%87%e7%90%83%e8%af%84.html</link>
		<comments>http://blog.programet.org/2010/07/%e6%88%91%e5%8f%aa%e6%98%af%e5%be%88%e6%84%9f%e6%80%a7%e5%9c%b0%e5%86%99%e4%b8%80%e7%af%87%e7%90%83%e8%af%84.html#comments</comments>
		<pubDate>Sun, 04 Jul 2010 05:57:40 +0000</pubDate>
		<dc:creator>Malloc</dc:creator>
				<category><![CDATA[原创博文]]></category>

		<guid isPermaLink="false">http://blog.programet.org/2010/07/%e6%88%91%e5%8f%aa%e6%98%af%e5%be%88%e6%84%9f%e6%80%a7%e5%9c%b0%e5%86%99%e4%b8%80%e7%af%87%e7%90%83%e8%af%84.html</guid>
		<description><![CDATA[德国一路高唱凯歌，西班牙倚仗葫芦娃的神奇表现地与德国相逢于半决赛。两年前那个夏天，凭借着托雷斯最后时刻的绝杀，西班牙战胜德国捧得欧洲杯。两年后，两队再次交锋，斗牛士依似昨天，但战车却是焕然一新。年轻一代在两年内的迅速成长，使得这届德国队是历史上最具朝气的一届德国队。厄齐尔的灵性，小猪的愈发成熟，小穆勒的激情，拉姆，作为史上最年轻的德国队队长，他的大局观是德国后防坚实的力量。还有波尔蒂王子，虽然在俱乐部经历一个不太愉快的赛季，但是他在国家队的大赛经验也是非常宝贵的。作为三朝元老，克劳泽，正走在通往传奇的路上。诺伊尔继承了德国门神的传统，稳定的发挥筑起最后一道城墙。纵观德国队的五场比赛，除了小组赛负于XXX，其它场次均凌厉地以大比分战胜对手。这几场比赛，德国队为我们演绎了功利足球环境下的美丽足球。有几分意大利防守反击的影子，德国却没有因扎吉一样狐魅般的前锋，德国人总是起头并进；又有点像两年前西班牙浪漫足球的气息。是的，西班牙队的浪漫是斗牛士的精巧飘逸，德国的浪漫是那时而恢宏时而婉约的交响乐。时间的力量，可以是青春的迸发，可以是老成的沉稳。青春或要为冲动幼稚付出代价，老成也可能为自己带上沉重的枷锁。两年前的西班牙的控球流的战术体系让我们眼睛一亮，两年中，这套体系被西班牙演绎了五十二遍，仅仅失败了两次！两年前，巴拉克率领的老迈的德国队倒在了控球流的脚下。两年后，在南非，在年轻的德国队面前，我们惊谈，防守反击还可以这么踢，它让英格兰倒下了，让阿根廷也倒下了。这轮回的场景，注定是命运的轮回么？ 本文由 Malloc 创作，转载或引用前请联系我们。相关文章： 辞旧迎新，又是一年 六一节游览Programet指南 我的年龄周围
相关文章：<ol>
<li><a href='http://blog.programet.org/2011/01/%e8%be%9e%e6%97%a7%e8%bf%8e%e6%96%b0%ef%bc%8c%e5%8f%88%e6%98%af%e4%b8%80%e5%b9%b4.html' rel='bookmark' title='辞旧迎新，又是一年'>辞旧迎新，又是一年</a></li>
<li><a href='http://blog.programet.org/2010/06/guide.html' rel='bookmark' title='六一节游览Programet指南'>六一节游览Programet指南</a></li>
<li><a href='http://blog.programet.org/2011/11/%e6%88%91%e7%9a%84%e5%b9%b4%e9%be%84%e5%91%a8%e5%9b%b4.html' rel='bookmark' title='我的年龄周围'>我的年龄周围</a></li>
</ol>]]></description>
			<content:encoded><![CDATA[<p>德国一路高唱凯歌，西班牙倚仗葫芦娃的神奇表现地与德国相逢于半决赛。两年前那个夏天，凭借着托雷斯最后时刻的绝杀，西班牙战胜德国捧得欧洲杯。两年后，两队再次交锋，斗牛士依似昨天，但战车却是焕然一新。年轻一代在两年内的迅速成长，使得这届德国队是历史上最具朝气的一届德国队。厄齐尔的灵性，小猪的愈发成熟，小穆勒的激情，拉姆，作为史上最年轻的德国队队长，他的大局观是德国后防坚实的力量。还有波尔蒂王子，虽然在俱乐部经历一个不太愉快的赛季，但是他在国家队的大赛经验也是非常宝贵的。作为三朝元老，克劳泽，正走在通往传奇的路上。诺伊尔继承了德国门神的传统，稳定的发挥筑起最后一道城墙。纵观德国队的五场比赛，除了小组赛负于XXX，其它场次均凌厉地以大比分战胜对手。这几场比赛，德国队为我们演绎了功利足球环境下的美丽足球。有几分意大利防守反击的影子，德国却没有因扎吉一样狐魅般的前锋，德国人总是起头并进；又有点像两年前西班牙浪漫足球的气息。是的，西班牙队的浪漫是斗牛士的精巧飘逸，德国的浪漫是那时而恢宏时而婉约的交响乐。时间的力量，可以是青春的迸发，可以是老成的沉稳。青春或要为冲动幼稚付出代价，老成也可能为自己带上沉重的枷锁。两年前的西班牙的控球流的战术体系让我们眼睛一亮，两年中，这套体系被西班牙演绎了五十二遍，仅仅失败了两次！两年前，巴拉克率领的老迈的德国队倒在了控球流的脚下。两年后，在南非，在年轻的德国队面前，我们惊谈，防守反击还可以这么踢，它让英格兰倒下了，让阿根廷也倒下了。这轮回的场景，注定是命运的轮回么？</p>
<p><small>本文由 Malloc 创作，转载或引用前请<a href="mailto:programet.org@gmail.com">联系我们</a>。</small></p><p>相关文章：<ol>
<li><a href='http://blog.programet.org/2011/01/%e8%be%9e%e6%97%a7%e8%bf%8e%e6%96%b0%ef%bc%8c%e5%8f%88%e6%98%af%e4%b8%80%e5%b9%b4.html' rel='bookmark' title='辞旧迎新，又是一年'>辞旧迎新，又是一年</a></li>
<li><a href='http://blog.programet.org/2010/06/guide.html' rel='bookmark' title='六一节游览Programet指南'>六一节游览Programet指南</a></li>
<li><a href='http://blog.programet.org/2011/11/%e6%88%91%e7%9a%84%e5%b9%b4%e9%be%84%e5%91%a8%e5%9b%b4.html' rel='bookmark' title='我的年龄周围'>我的年龄周围</a></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://blog.programet.org/2010/07/%e6%88%91%e5%8f%aa%e6%98%af%e5%be%88%e6%84%9f%e6%80%a7%e5%9c%b0%e5%86%99%e4%b8%80%e7%af%87%e7%90%83%e8%af%84.html/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>说一点点数论</title>
		<link>http://blog.programet.org/2010/06/%e8%af%b4%e4%b8%80%e7%82%b9%e7%82%b9%e6%95%b0%e8%ae%ba.html</link>
		<comments>http://blog.programet.org/2010/06/%e8%af%b4%e4%b8%80%e7%82%b9%e7%82%b9%e6%95%b0%e8%ae%ba.html#comments</comments>
		<pubDate>Tue, 01 Jun 2010 07:35:25 +0000</pubDate>
		<dc:creator>Malloc</dc:creator>
				<category><![CDATA[原创博文]]></category>
		<category><![CDATA[数论]]></category>
		<category><![CDATA[欧几里得算法]]></category>
		<category><![CDATA[线性组合]]></category>

		<guid isPermaLink="false">http://blog.programet.org/?p=2509</guid>
		<description><![CDATA[可能大家都遇到过这个问题，就是给你两杯具，一个可以装a升水的A，一个可以装b升水的B。现在我们要利用这两个杯具得到n升水 ，你能做的是要么把其中一个杯具装满水，要么把其中一个杯具的水完全倒掉续上面的步骤…这样，总会有一步，可以得到想要的结果。（当然n不能大于A、B容量较大的那个）。 这是我上个星期在ZOJ上做的一道题。如果明白一点数论的知识，这道题是非常简单的。 首先我们考虑这么一种很简单的情况，假设杯具A可以装2升水，杯具B可以装4升水，那我们可不可以得到1升水？显然不能吧。再复杂一点，我们假设杯具A容量4升，杯具B容量7升，我们是否可以得到6升水？一种解法是，先把装满B，然后用B中的水倒满A，然后掉A中的水，在把B中剩下的倒到A中，此时A中有3升水。再装满B，用B中的水倒满A，然后在B中就有6升水了。事实上我们可以得到1-7中，任一数量的水。 我们先岔开一下，说点数论的东西。 首先我们知道一个显然得不能再显然的结论：对于任一整数n，n=a*x+b*y，其中a，b，x，y都是整数（如果你怀疑的话，可以去看看《陶哲轩实分析》前几章关于数系构造的部分）。现在我们多加点限制条件：a，b是固定的正整数，x，y是变量，且为非零的。现在n还可能是任一整数么（这个时候我们称n为a，b的线性组合）？取a=3，b=6，这时n只可能为3的倍数。这时我们很容易推出这么一个结论：只要a与b不互质，那么n就是a，b的公约数的倍数[1]。现在我们就要想如果a与b互质的时候，n可以是什么数。首先n还是可以为其中一个的倍数，因为我们可以取另一个数的系数x或y为那个数或那个数倍数。如果n不是它们其中的倍数了，那会是哪些数。我们可以做个大胆的假设，1可不可用a*x+b*y表示出来。如果可以的话，那么就意味着任一整数都可以表示出来了，也就是说n可以是任一整数。 下面我们尝试一下 两个互质自然数的最大公约数是1，相信大家都知道。在很久很久以前的古希腊，有个叫做欧几里得的伟大数学家提出过一个方法，可以快速得到两个自然数的最大公约数。现在我们把这个方法应用到两个自然数互质这种特殊情况。假设b>a，我们用a除b可以得到一个商m1和一个余数r1，可以证明r1与a必然互质（为什么）。然后我们用r1除a得到m2和r2，接着用r2除r1得到m3和r3&#8230;亦即用上次得到余数除上次的除数。由于余数r是非负的，且是递减的，就存在某个rk=0，那么rk-1必定为1（为什么）。好了，现在我们得到{m}和{r}。r1=b-m1*b，用数学归纳法可以证明每一个ri都是a，b的线性组合。所以现在我们证到了1是两个互质正整数的线性组合。因为每一个整数都是1的倍数，所以我们就可以断言，每一个整数都是两个互质正整数的线性组合。 对于两个正整数的线性组合和公约数的关系，还有一个更强的结论：两个正整数的最大公约数是这两个正整数的线性组合。大家有兴趣的话，可以去证明一下。 现在我们回到装水的问题上面。 在两个桶都没有水的时候，只有0升水；装满A得到a升，装满B得到b升；复杂一点，装满B（假设b>a），用B的水装满A，这样得到b-a升。那桶里的水的量会不会就是a，b的线性组合呢？的确是如此的。其实虽然这点初看起来非常不明显，但是如果有了这个猜想，要证明它就变得很简单，用数学归纳法可以快速给出证明（略）。 ZOJ上的这道题有个条件是a，b是互质的，这样一来对于0
相关文章：<ol>
<li><a href='http://blog.programet.org/2010/01/%e6%98%8e%e5%a4%a9%e5%8e%bb%e5%90%83%e8%87%aa%e5%8a%a9%e9%a4%90%e7%9a%84%e7%ab%a5%e9%9e%8b%e6%b3%a8%e6%84%8f%e5%95%a6%ef%bc%81.html' rel='bookmark' title='明天去吃自助餐的童鞋注意啦！'>明天去吃自助餐的童鞋注意啦！</a></li>
</ol>]]></description>
			<content:encoded><![CDATA[<p>可能大家都遇到过这个问题，就是给你两杯具，一个可以装a升水的A，一个可以装b升水的B。现在我们要利用这两个杯具得到n升水 ，你能做的是要么把其中一个杯具装满水，要么把其中一个杯具的水完全倒掉续上面的步骤…这样，总会有一步，可以得到想要的结果。（当然n不能大于A、B容量较大的那个）。</p>
<p><span id="more-2509"></span></p>
<p>这是我上个星期在ZOJ上做的一道题。如果明白一点数论的知识，这道题是非常简单的。</p>
<p>首先我们考虑这么一种很简单的情况，假设杯具A可以装2升水，杯具B可以装4升水，那我们可不可以得到1升水？显然不能吧。再复杂一点，我们假设杯具A容量4升，杯具B容量7升，我们是否可以得到6升水？一种解法是，先把装满B，然后用B中的水倒满A，然后掉A中的水，在把B中剩下的倒到A中，此时A中有3升水。再装满B，用B中的水倒满A，然后在B中就有6升水了。事实上我们可以得到1-7中，任一数量的水。</p>
<p>我们先岔开一下，说点数论的东西。</p>
<p>首先我们知道一个显然得不能再显然的结论：对于任一整数n，n=a*x+b*y，其中a，b，x，y都是整数（如果你怀疑的话，可以去看看《陶哲轩实分析》前几章关于数系构造的部分）。现在我们多加点限制条件：a，b是固定的正整数，x，y是变量，且为非零的。现在n还可能是任一整数么（这个时候我们称n为a，b的线性组合）？取a=3，b=6，这时n只可能为3的倍数。这时我们很容易推出这么一个结论：只要a与b不互质，那么n就是a，b的公约数的倍数[1]。现在我们就要想如果a与b互质的时候，n可以是什么数。首先n还是可以为其中一个的倍数，因为我们可以取另一个数的系数x或y为那个数或那个数倍数。如果n不是它们其中的倍数了，那会是哪些数。我们可以做个大胆的假设，1可不可用a*x+b*y表示出来。如果可以的话，那么就意味着任一整数都可以表示出来了，也就是说n可以是任一整数。</p>
<p>下面我们尝试一下</p>
<p>两个互质自然数的最大公约数是1，相信大家都知道。在很久很久以前的古希腊，有个叫做欧几里得的伟大数学家提出过一个方法，可以快速得到两个自然数的最大公约数。现在我们把这个方法应用到两个自然数互质这种特殊情况。假设b>a，我们用a除b可以得到一个商m1和一个余数r1，可以证明r1与a必然互质（为什么）。然后我们用r1除a得到m2和r2，接着用r2除r1得到m3和r3&#8230;亦即用上次得到余数除上次的除数。由于余数r是非负的，且是递减的，就存在某个rk=0，那么rk-1必定为1（为什么）。好了，现在我们得到{m}和{r}。r1=b-m1*b，用数学归纳法可以证明每一个ri都是a，b的线性组合。所以现在我们证到了1是两个互质正整数的线性组合。因为每一个整数都是1的倍数，所以我们就可以断言，每一个整数都是两个互质正整数的线性组合。</p>
<p>对于两个正整数的线性组合和公约数的关系，还有一个更强的结论：两个正整数的最大公约数是这两个正整数的线性组合。大家有兴趣的话，可以去证明一下。</p>
<p>现在我们回到装水的问题上面。</p>
<p>在两个桶都没有水的时候，只有0升水；装满A得到a升，装满B得到b升；复杂一点，装满B（假设b>a），用B的水装满A，这样得到b-a升。那桶里的水的量会不会就是a，b的线性组合呢？的确是如此的。其实虽然这点初看起来非常不明显，但是如果有了这个猜想，要证明它就变得很简单，用数学归纳法可以快速给出证明（略）。</p>
<p>ZOJ上的这道题有个条件是a，b是互质的，这样一来对于0<=n<=b理论上都是可以得到的。有一个编程策略是，把A装满，然后用A的水装B，如果B没满，就继续用A的水装B，每一次操作都检查是否得到想要的结果；如果B满了，而想要的结果没出现，继续重复上面的步骤……这样，总会到某一步，可以得到想要的结果。</p>
<p><small>本文由 Malloc 创作，转载或引用前请<a href="mailto:programet.org@gmail.com">联系我们</a>。</small></p><p>相关文章：<ol>
<li><a href='http://blog.programet.org/2010/01/%e6%98%8e%e5%a4%a9%e5%8e%bb%e5%90%83%e8%87%aa%e5%8a%a9%e9%a4%90%e7%9a%84%e7%ab%a5%e9%9e%8b%e6%b3%a8%e6%84%8f%e5%95%a6%ef%bc%81.html' rel='bookmark' title='明天去吃自助餐的童鞋注意啦！'>明天去吃自助餐的童鞋注意啦！</a></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://blog.programet.org/2010/06/%e8%af%b4%e4%b8%80%e7%82%b9%e7%82%b9%e6%95%b0%e8%ae%ba.html/feed</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>一篇关于即时战略游戏的文章</title>
		<link>http://blog.programet.org/2010/04/%e4%b8%80%e7%af%87%e5%85%b3%e4%ba%8e%e5%8d%b3%e6%97%b6%e6%88%98%e7%95%a5%e6%b8%b8%e6%88%8f%e7%9a%84%e6%96%87%e7%ab%a0.html</link>
		<comments>http://blog.programet.org/2010/04/%e4%b8%80%e7%af%87%e5%85%b3%e4%ba%8e%e5%8d%b3%e6%97%b6%e6%88%98%e7%95%a5%e6%b8%b8%e6%88%8f%e7%9a%84%e6%96%87%e7%ab%a0.html#comments</comments>
		<pubDate>Wed, 21 Apr 2010 08:51:47 +0000</pubDate>
		<dc:creator>Malloc</dc:creator>
				<category><![CDATA[原创博文]]></category>
		<category><![CDATA[game]]></category>
		<category><![CDATA[starcraft]]></category>
		<category><![CDATA[暴雪]]></category>
		<category><![CDATA[游戏]]></category>
		<category><![CDATA[资源]]></category>
		<category><![CDATA[采矿]]></category>

		<guid isPermaLink="false">http://blog.programet.org/?p=2291</guid>
		<description><![CDATA[因为本站的数学公式处理系统出了点小问题，我改用pdf发文，见谅&#8230; 本文由 Malloc 创作，转载或引用前请联系我们。相关文章： 辞旧迎新，又是一年 六一节游览Programet指南 我的年龄周围
相关文章：<ol>
<li><a href='http://blog.programet.org/2011/01/%e8%be%9e%e6%97%a7%e8%bf%8e%e6%96%b0%ef%bc%8c%e5%8f%88%e6%98%af%e4%b8%80%e5%b9%b4.html' rel='bookmark' title='辞旧迎新，又是一年'>辞旧迎新，又是一年</a></li>
<li><a href='http://blog.programet.org/2010/06/guide.html' rel='bookmark' title='六一节游览Programet指南'>六一节游览Programet指南</a></li>
<li><a href='http://blog.programet.org/2011/11/%e6%88%91%e7%9a%84%e5%b9%b4%e9%be%84%e5%91%a8%e5%9b%b4.html' rel='bookmark' title='我的年龄周围'>我的年龄周围</a></li>
</ol>]]></description>
			<content:encoded><![CDATA[<p><strong>因为本站的数学公式处理系统出了点小问题，我改用<a href="http://blog.programet.org/download/SCII-Source.pdf">pdf</a>发文，见谅&#8230;</strong></p>
<p><small>本文由 Malloc 创作，转载或引用前请<a href="mailto:programet.org@gmail.com">联系我们</a>。</small></p><p>相关文章：<ol>
<li><a href='http://blog.programet.org/2011/01/%e8%be%9e%e6%97%a7%e8%bf%8e%e6%96%b0%ef%bc%8c%e5%8f%88%e6%98%af%e4%b8%80%e5%b9%b4.html' rel='bookmark' title='辞旧迎新，又是一年'>辞旧迎新，又是一年</a></li>
<li><a href='http://blog.programet.org/2010/06/guide.html' rel='bookmark' title='六一节游览Programet指南'>六一节游览Programet指南</a></li>
<li><a href='http://blog.programet.org/2011/11/%e6%88%91%e7%9a%84%e5%b9%b4%e9%be%84%e5%91%a8%e5%9b%b4.html' rel='bookmark' title='我的年龄周围'>我的年龄周围</a></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://blog.programet.org/2010/04/%e4%b8%80%e7%af%87%e5%85%b3%e4%ba%8e%e5%8d%b3%e6%97%b6%e6%88%98%e7%95%a5%e6%b8%b8%e6%88%8f%e7%9a%84%e6%96%87%e7%ab%a0.html/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>一个月的流水账</title>
		<link>http://blog.programet.org/2010/03/%e4%b8%80%e4%b8%aa%e6%9c%88%e7%9a%84%e6%b5%81%e6%b0%b4%e8%b4%a6.html</link>
		<comments>http://blog.programet.org/2010/03/%e4%b8%80%e4%b8%aa%e6%9c%88%e7%9a%84%e6%b5%81%e6%b0%b4%e8%b4%a6.html#comments</comments>
		<pubDate>Sun, 28 Mar 2010 08:30:03 +0000</pubDate>
		<dc:creator>Malloc</dc:creator>
				<category><![CDATA[原创博文]]></category>
		<category><![CDATA[流水账]]></category>
		<category><![CDATA[非严肃]]></category>

		<guid isPermaLink="false">http://blog.programet.org/?p=2231</guid>
		<description><![CDATA[有点忙的感觉。 这个学期的课时很多很紧。数学分析，老阴毫不犹豫跳到了常系数微分方程。最让人郁闷的就是他不加推导就写出来的结论和。也罢也罢，反正一个学期了，已经适应过来了。某男笑曰：“老阴就是怕你听懂了。”上课的时候基本属于跟他猜哑谜的状态，下课之后不得不自己有细细琢磨一遍，这也印证老阴自己的话：“上数学课，跟老师上一个课时，还要自己学习两个课时。” 物理是全英文教材，900多页的课本，扣在头上就是一顶大大的绿帽子。不过内容很丰富，从经典物理学到现代物理学，沿袭了国外教材一贯的苦口婆心的风格。物理老师的气场让你觉得见到了曾志伟。大学物理很赞，每一部都要很严密的推导，完全摆脱高中物理死做题靠感觉的状态。上个学期没有好好学化学令我颇有点吃亏的感觉，换句话说，有点后悔。 如果想挑一门课，重温那些伟大发现诞生的时刻，物理实验是最好的选择。 线性代数是一门很轻松的课程，正对我这种有点形而上的人的胃口。 让人恼火的永远是CQU的网络，总是不间断掉线，客户端随机出故障。最要命的就是我的UBUNTU现在不能联网了。浪费了我几天时间去折腾了一下TCP/IP。 南方的旱灾很严重。那些领导人是不是该反思一下南水北调工程了。 谷歌终于推出中国大陆了！Brin做得很棒。我记得我在校内上发过这么一条状态：“谷歌退出中国大陆，扣10分；迁到中国香港，加10分；如果完全退出大陆及港澳，加20分。”前两句是把谷歌看做一个完全为股东赚钱商业公司来看待，最后一句把谷歌看做一个追求自己价值观的公司。最后谷歌选择了比较折中的方案。 因为课时一下多了起来，所以买了一辆单车代步（虎溪这地方是重庆为数不多可以骑车的地方）。啊，一个星期了~ 本文由 Malloc 创作，转载或引用前请联系我们。相关文章： 辞旧迎新，又是一年 六一节游览Programet指南 我的年龄周围
相关文章：<ol>
<li><a href='http://blog.programet.org/2011/01/%e8%be%9e%e6%97%a7%e8%bf%8e%e6%96%b0%ef%bc%8c%e5%8f%88%e6%98%af%e4%b8%80%e5%b9%b4.html' rel='bookmark' title='辞旧迎新，又是一年'>辞旧迎新，又是一年</a></li>
<li><a href='http://blog.programet.org/2010/06/guide.html' rel='bookmark' title='六一节游览Programet指南'>六一节游览Programet指南</a></li>
<li><a href='http://blog.programet.org/2011/11/%e6%88%91%e7%9a%84%e5%b9%b4%e9%be%84%e5%91%a8%e5%9b%b4.html' rel='bookmark' title='我的年龄周围'>我的年龄周围</a></li>
</ol>]]></description>
			<content:encoded><![CDATA[<p>有点忙的感觉。</p>
<p>这个学期的课时很多很紧。数学分析，老阴毫不犹豫跳到了常系数微分方程。最让人郁闷的就是他不加推导就写出来的结论和。也罢也罢，反正一个学期了，已经适应过来了。某男笑曰：“老阴就是怕你听懂了。”上课的时候基本属于跟他猜哑谜的状态，下课之后不得不自己有细细琢磨一遍，这也印证老阴自己的话：“上数学课，跟老师上一个课时，还要自己学习两个课时。”</p>
<p><span id="more-2231"></span></p>
<p>物理是全英文教材，900多页的课本，扣在头上就是一顶大大的绿帽子。不过内容很丰富，从经典物理学到现代物理学，沿袭了国外教材一贯的苦口婆心的风格。物理老师的气场让你觉得见到了曾志伟。大学物理很赞，每一部都要很严密的推导，完全摆脱高中物理死做题靠感觉的状态。上个学期没有好好学化学令我颇有点吃亏的感觉，换句话说，有点后悔。</p>
<p>如果想挑一门课，重温那些伟大发现诞生的时刻，物理实验是最好的选择。</p>
<p>线性代数是一门很轻松的课程，正对我这种有点形而上的人的胃口。</p>
<p>让人恼火的永远是CQU的网络，总是不间断掉线，客户端随机出故障。最要命的就是我的UBUNTU现在不能联网了。浪费了我几天时间去折腾了一下TCP/IP。</p>
<p>南方的旱灾很严重。那些领导人是不是该反思一下南水北调工程了。</p>
<p>谷歌终于推出中国大陆了！Brin做得很棒。我记得我在校内上发过这么一条状态：“谷歌退出中国大陆，扣10分；迁到中国香港，加10分；如果完全退出大陆及港澳，加20分。”前两句是把谷歌看做一个完全为股东赚钱商业公司来看待，最后一句把谷歌看做一个追求自己价值观的公司。最后谷歌选择了比较折中的方案。</p>
<p>因为课时一下多了起来，所以买了一辆单车代步（虎溪这地方是重庆为数不多可以骑车的地方）。啊，一个星期了~</p>
<p><small>本文由 Malloc 创作，转载或引用前请<a href="mailto:programet.org@gmail.com">联系我们</a>。</small></p><p>相关文章：<ol>
<li><a href='http://blog.programet.org/2011/01/%e8%be%9e%e6%97%a7%e8%bf%8e%e6%96%b0%ef%bc%8c%e5%8f%88%e6%98%af%e4%b8%80%e5%b9%b4.html' rel='bookmark' title='辞旧迎新，又是一年'>辞旧迎新，又是一年</a></li>
<li><a href='http://blog.programet.org/2010/06/guide.html' rel='bookmark' title='六一节游览Programet指南'>六一节游览Programet指南</a></li>
<li><a href='http://blog.programet.org/2011/11/%e6%88%91%e7%9a%84%e5%b9%b4%e9%be%84%e5%91%a8%e5%9b%b4.html' rel='bookmark' title='我的年龄周围'>我的年龄周围</a></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://blog.programet.org/2010/03/%e4%b8%80%e4%b8%aa%e6%9c%88%e7%9a%84%e6%b5%81%e6%b0%b4%e8%b4%a6.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

