<?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>Codes, Notes &#38; Scribbles</title>
	<atom:link href="http://blog.tomtung.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://blog.tomtung.com</link>
	<description>about programming, music and my life</description>
	<lastBuildDate>Sat, 10 Jul 2010 16:01:19 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0.1</generator>
		<item>
		<title>做了两张404的图</title>
		<link>http://blog.tomtung.com/2010/02/404/</link>
		<comments>http://blog.tomtung.com/2010/02/404/#comments</comments>
		<pubDate>Tue, 09 Feb 2010 15:04:58 +0000</pubDate>
		<dc:creator>逆铭</dc:creator>
				<category><![CDATA[杂的扯]]></category>
		<category><![CDATA[图片]]></category>

		<guid isPermaLink="false">http://blog.tomtung.com/?p=522</guid>
		<description><![CDATA[做来自己用的，没什么技术含量。原图均来自ffffound。 Tags：图片 Related Posts 我的壁纸 (1) 某无线信号 (2)]]></description>
			<content:encoded><![CDATA[<p>做来自己用的，没什么技术含量。原图均来自<a href="http://ffffound.com/">ffffound</a>。<br />
<a href="http://gallery.tomtung.com/pictures/404.png"><img class="alignnone" title="http://gallery.tomtung.com/pictures/404.png" src="http://gallery.tomtung.com/pictures/404.png" alt="&quot;404 Not Found&quot;" width="600" height="600" /></a><br />
<a href="http://gallery.tomtung.com/pictures/404_page_not_found.png"><img class="alignnone" title="http://gallery.tomtung.com/pictures/404_page_not_found.png" src="http://gallery.tomtung.com/pictures/404_page_not_found.png" alt="&quot;404 Page Not Found&quot;" width="500" height="353" /></a></p>

	<br />Tags：<a href="http://blog.tomtung.com/tag/%e5%9b%be%e7%89%87/" title="图片" rel="tag">图片</a><br />

	<br /><h3>Related Posts</h3>
	<ul class="st-related-posts">
	<li><a href="http://blog.tomtung.com/2006/12/wallpaper/" title="我的壁纸 (2006-12-31)">我的壁纸</a> (1)</li>
	<li><a href="http://blog.tomtung.com/2008/12/a-very-jiong-wireless-hotspot/" title="某无线信号 (2008-12-09)">某无线信号</a> (2)</li>
</ul>

]]></content:encoded>
			<wfw:commentRss>http://blog.tomtung.com/2010/02/404/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>学习笔记：概率统计与随机过程</title>
		<link>http://blog.tomtung.com/2010/02/probability-statistics-and-random-processes/</link>
		<comments>http://blog.tomtung.com/2010/02/probability-statistics-and-random-processes/#comments</comments>
		<pubDate>Sat, 06 Feb 2010 14:33:23 +0000</pubDate>
		<dc:creator>逆铭</dc:creator>
				<category><![CDATA[杂的扯]]></category>
		<category><![CDATA[思维导图]]></category>
		<category><![CDATA[概率]]></category>
		<category><![CDATA[读书笔记]]></category>

		<guid isPermaLink="false">http://blog.tomtung.com/?p=483</guid>
		<description><![CDATA[上学期“概率统计与随机过程”课的笔记，用xmind做的思维导图，仅供参考。。 Please upgrade your browser （需要下载才能看到全部内容。层次很深，请多用F6下钻功能） Tags：思维导图, 概率, 读书笔记 Related Posts C++ Primer 读书笔记 &#8211; 第三章 (1) C++ Primer 读书笔记 &#8211; 第七章 (0) C++ Primer 读书笔记 &#8211; 第二章 (4) C++ Primer 读书笔记 &#8211; 第五章 (1) C++ Primer 读书笔记 &#8211; 第八章 (1)]]></description>
			<content:encoded><![CDATA[<p>上学期“概率统计与随机过程”课的笔记，用<a href="http://www.xmind.net/">xmind</a>做的思维导图，仅供参考。。<br />
<div class="iframe-wrapper">
  <iframe src="http://www.xmind.net/share/_embed/tomtung/probability-statistics-and-random-processes/" frameborder="0" style="height:200px;width:600px;">Please upgrade your browser</iframe>
</div><br />
（需要下载才能看到全部内容。层次很深，请多用F6下钻功能）</p>

	<br />Tags：<a href="http://blog.tomtung.com/tag/%e6%80%9d%e7%bb%b4%e5%af%bc%e5%9b%be/" title="思维导图" rel="tag">思维导图</a>, <a href="http://blog.tomtung.com/tag/%e6%a6%82%e7%8e%87/" title="概率" rel="tag">概率</a>, <a href="http://blog.tomtung.com/tag/%e8%af%bb%e4%b9%a6%e7%ac%94%e8%ae%b0/" title="读书笔记" rel="tag">读书笔记</a><br />

	<br /><h3>Related Posts</h3>
	<ul class="st-related-posts">
	<li><a href="http://blog.tomtung.com/2008/08/cpp-primer-reding-notes-chapter3/" title="C++ Primer 读书笔记 &#8211; 第三章 (2008-08-12)">C++ Primer 读书笔记 &#8211; 第三章</a> (1)</li>
	<li><a href="http://blog.tomtung.com/2008/08/cpp-primer-reding-notes-chapter7/" title="C++ Primer 读书笔记 &#8211; 第七章 (2008-08-28)">C++ Primer 读书笔记 &#8211; 第七章</a> (0)</li>
	<li><a href="http://blog.tomtung.com/2008/08/cpp-primer-reding-notes-chapter2/" title="C++ Primer 读书笔记 &#8211; 第二章 (2008-08-07)">C++ Primer 读书笔记 &#8211; 第二章</a> (4)</li>
	<li><a href="http://blog.tomtung.com/2008/08/cpp-primer-reding-notes-chapter5/" title="C++ Primer 读书笔记 &#8211; 第五章 (2008-08-23)">C++ Primer 读书笔记 &#8211; 第五章</a> (1)</li>
	<li><a href="http://blog.tomtung.com/2008/09/cpp-primer-reding-notes-chapter8/" title="C++ Primer 读书笔记 &#8211; 第八章 (2008-09-02)">C++ Primer 读书笔记 &#8211; 第八章</a> (1)</li>
</ul>

]]></content:encoded>
			<wfw:commentRss>http://blog.tomtung.com/2010/02/probability-statistics-and-random-processes/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>sinablog2wordpress：从新浪博客搬家到WordPress</title>
		<link>http://blog.tomtung.com/2010/02/sinablog2wordpress/</link>
		<comments>http://blog.tomtung.com/2010/02/sinablog2wordpress/#comments</comments>
		<pubDate>Sat, 06 Feb 2010 13:23:16 +0000</pubDate>
		<dc:creator>逆铭</dc:creator>
				<category><![CDATA[新长征路上的代码]]></category>
		<category><![CDATA[cpp]]></category>
		<category><![CDATA[java]]></category>
		<category><![CDATA[scala]]></category>
		<category><![CDATA[wordpress]]></category>
		<category><![CDATA[博客搬家]]></category>

		<guid isPermaLink="false">http://blog.tomtung.com/?p=475</guid>
		<description><![CDATA[要从新浪搬到Wordpres，网上广为流传的方法是利用blogbus的博客搬家服务获得blogbus格式的xml，然后再用一个Python写的脚本把它转换成WordPress认识的格式。但是这种方法在最近新浪博客升级以后就失效了。于是自己用现学的scala写了一个小程序，搬家时能保留标签、目录、评论及评论回复这些信息。 猛击[这里]下载。注意，此程序仅支持2010年初的新版新浪博客，之前或之后的版本都不支持。 要运行程序，你需要确保已经安装过JRE。双击运行后显示如图界面，填入自己的博客地址（不要省略“http://”），然后点击“Start”即可。这时“Start”按钮变为灰色，标题栏显示“Extracting”。等待几分钟，当标题栏显示为“Done”、“Start”按钮重新变为可用时，程序所在目录下会出现一个blog.xml文件。把这个文件直接导入WordPress就可以了。 代码也打在jar包里了，MIT协议。欢迎报告bug。 下面是废话。 恩由于新浪用了ajax，评论信息是通过xhr异步读取的，用一般的方法没法抓到。我纠结许久，最后是用了非常ad hoc的方法解决的，不知道有没有什么什么不太麻烦的通用解决方案呢。 再扯两句scala。我都想不起来当初具体是怎么想到要学scala的，也许是为了了解下函数式编程，也许只是想在jvm上有一个喜欢的语言吧——Java写起来太不爽了；Java社区的低效和保守也已经开始显出C++的影子。 scala确实是非常强大和灵活；我在见到一些颇富技巧性的hack之后都有些怀疑scala社区的风气会不会慢慢变得像C++社区一样过分热衷技巧的炫耀。不过scala的设计目标就是以较简单的语法规则获得最大的scalability，不需要通过挖掘语言规范里的犄角旮旯来实现一些必要功能，所以不会像C++一样成为一门本身已相当复杂，却还需要别人反过来教语言发明者如何使用的语言。 scala毕竟表现力比Java强太多，代码也简洁太多。比如这次我需要实现一个抛出异常后重试若干次的逻辑，只需定义一个函数： def tryFor[T](times: Int)(op: =&#62; T): T = { if (times &#60;= 0) throw new RuntimeException("Operation failed.")  try { return op } catch {  case e: Throwable =&#62; e.printStackTrace } tryFor(times - 1)(op) } 然后这样使用： val source = tryFor(5) {new Source(url)} 程序就会不断获得网页源代码，并在5次失败后抛出异常。Java实现同样的东西可不会如此优雅了。又如下面这段代码返回一篇博文xml： private def generateEntryXml(entry: BlogEntry) [...]]]></description>
			<content:encoded><![CDATA[<div class="wp-caption alignnone" style="width: 430px"><a href="http://code.google.com/p/sinablog2wordpress/"><img title="http://gallery.tomtung.com/pictures/sina2wordpress-screenshot.png" src="http://gallery.tomtung.com/pictures/sina2wordpress-screenshot.png" alt="" width="420" height="80" /></a><p class="wp-caption-text">Screenshot</p></div>
<p>要从新浪搬到Wordpres，网上广为流传的方法是利用blogbus的博客搬家服务获得blogbus格式的xml，然后再用一个Python写的脚本把它转换成WordPress认识的格式。但是这种方法在最近新浪博客升级以后就失效了。于是自己用现学的<a href="http://blog.tomtung.com/tag/scala/" class="st_tag internal_tag" rel="tag" title="Posts tagged with scala">scala</a>写了一个小程序，搬家时能保留<strong>标签</strong>、<strong>目录</strong>、<strong>评论</strong>及<strong>评论回复</strong>这些信息。</p>
<p>猛击<strong><a href="http://sinablog2wordpress.googlecode.com/files/sina2wordpress.jar" target="_self">[这里]</a></strong>下载。注意，此程序仅支持2010年初的新版新浪博客，之前或之后的版本都不支持。</p>
<p>要运行程序，你需要确保已经安装过<a href="http://java.com/zh_CN/download/">JRE</a>。双击运行后显示如图界面，填入自己的博客地址（不要省略“http://”），然后点击“Start”即可。这时“Start”按钮变为灰色，标题栏显示“Extracting”。等待几分钟，当标题栏显示为“Done”、“Start”按钮重新变为可用时，程序所在目录下会出现一个blog.xml文件。把这个文件直接导入WordPress就可以了。</p>
<p>代码也打在jar包里了，MIT协议。欢迎报告bug。</p>
<p>下面是废话。</p>
<p>恩由于新浪用了ajax，评论信息是通过xhr异步读取的，用一般的方法没法抓到。我纠结许久，最后是用了非常ad hoc的方法解决的，不知道有没有什么什么不太麻烦的通用解决方案呢。</p>
<p>再扯两句<a href="http://blog.tomtung.com/tag/scala/" class="st_tag internal_tag" rel="tag" title="Posts tagged with scala">scala</a>。我都想不起来当初具体是怎么想到要学<a href="http://blog.tomtung.com/tag/scala/" class="st_tag internal_tag" rel="tag" title="Posts tagged with scala">scala</a>的，也许是为了了解下函数式编程，也许只是想在jvm上有一个喜欢的语言吧——Java写起来太不爽了；Java社区的低效和保守也已经开始显出C++的影子。</p>
<p><a href="http://blog.tomtung.com/tag/scala/" class="st_tag internal_tag" rel="tag" title="Posts tagged with scala">scala</a>确实是非常强大和灵活；我在见到一些颇富技巧性的hack之后都有些怀疑<a href="http://blog.tomtung.com/tag/scala/" class="st_tag internal_tag" rel="tag" title="Posts tagged with scala">scala</a>社区的风气会不会慢慢变得像C++社区一样过分热衷技巧的炫耀。不过<a href="http://blog.tomtung.com/tag/scala/" class="st_tag internal_tag" rel="tag" title="Posts tagged with scala">scala</a>的设计目标就是以较简单的语法规则获得最大的scalability，不需要通过挖掘语言规范里的犄角旮旯来实现一些必要功能，所以不会像C++一样成为一门本身已相当复杂，却还需要别人反过来教语言发明者如何使用的语言。</p>
<p><a href="http://blog.tomtung.com/tag/scala/" class="st_tag internal_tag" rel="tag" title="Posts tagged with scala">scala</a>毕竟表现力比Java强太多，代码也简洁太多。比如这次我需要实现一个抛出异常后重试若干次的逻辑，只需定义一个函数：</p>
<pre class="brush:scala">def tryFor[T](times: Int)(op: =&gt; T): T = {
  if (times &lt;= 0) throw new RuntimeException("Operation failed.")
  try { return op } catch {
    case e: Throwable =&gt; e.printStackTrace
  }
  tryFor(times - 1)(op)
}
</pre>
<p>然后这样使用：</p>
<pre class="brush:scala">val source = tryFor(5) {new Source(url)}</pre>
<p>程序就会不断获得网页源代码，并在5次失败后抛出异常。Java实现同样的东西可不会如此优雅了。又如下面这段代码返回一篇博文xml：</p>
<pre class="brush:scala">private def generateEntryXml(entry: BlogEntry) = {
  &lt;item&gt;
    &lt;title&gt;
      {entry.title}
    &lt;/title&gt;
    &lt;wp:post_date&gt;
      {dateFormat.format(entry.postDate)}
    &lt;/wp:post_date&gt;
    &lt;category&gt;
      {entry.category}
    &lt;/category&gt;
    {for (tag &lt;- entry.tags) yield &lt;category domain="tag"&gt;{tag}&lt;/category&gt;}
    &lt;content:encoded&gt;
      {xml.Unparsed(handleNewLines(entry.content))}
    &lt;/content:encoded&gt;
    &lt;wp:status&gt;publish&lt;/wp:status&gt;
    {for (comment &lt;- entry.comments) yield generateCommentXml(comment)}
  &lt;/item&gt;
}</pre>
<p>注意，xml标签直接作为<a href="http://blog.tomtung.com/tag/scala/" class="st_tag internal_tag" rel="tag" title="Posts tagged with scala">scala</a>的源代码的一部分在代码中出现！虽然我觉得这样会使<a href="http://blog.tomtung.com/tag/scala/" class="st_tag internal_tag" rel="tag" title="Posts tagged with scala">scala</a>语言多出一种“特殊情况”，增加语言的复杂性，但不得不承认这样的设计确实非常优美简洁。</p>
<p>我比较看好<a href="http://blog.tomtung.com/tag/scala/" class="st_tag internal_tag" rel="tag" title="Posts tagged with scala">scala</a>，以后自己做跑在jvm上的东西<a href="http://blog.tomtung.com/tag/scala/" class="st_tag internal_tag" rel="tag" title="Posts tagged with scala">scala</a>应该是首选语言。推荐有兴趣的童鞋也了解一下。</p>

	<br />Tags：<a href="http://blog.tomtung.com/tag/cpp/" title="cpp" rel="tag">cpp</a>, <a href="http://blog.tomtung.com/tag/java/" title="java" rel="tag">java</a>, <a href="http://blog.tomtung.com/tag/scala/" title="scala" rel="tag">scala</a>, <a href="http://blog.tomtung.com/tag/wordpress/" title="wordpress" rel="tag">wordpress</a>, <a href="http://blog.tomtung.com/tag/%e5%8d%9a%e5%ae%a2%e6%90%ac%e5%ae%b6/" title="博客搬家" rel="tag">博客搬家</a><br />

	<br /><h3>Related Posts</h3>
	<ul class="st-related-posts">
	<li><a href="http://blog.tomtung.com/2007/06/c-cpp-io-odd-behavior/" title="诡异的事：关于C/C++输入输出 (2007-06-15)">诡异的事：关于C/C++输入输出</a> (3)</li>
	<li><a href="http://blog.tomtung.com/2008/08/cpp-primer-reding-notes-chapter2/" title="C++ Primer 读书笔记 &#8211; 第二章 (2008-08-07)">C++ Primer 读书笔记 &#8211; 第二章</a> (4)</li>
	<li><a href="http://blog.tomtung.com/2008/08/cpp-primer-reding-notes-chapter5/" title="C++ Primer 读书笔记 &#8211; 第五章 (2008-08-23)">C++ Primer 读书笔记 &#8211; 第五章</a> (1)</li>
	<li><a href="http://blog.tomtung.com/2008/08/cpp-primer-reding-notes-chapter7/" title="C++ Primer 读书笔记 &#8211; 第七章 (2008-08-28)">C++ Primer 读书笔记 &#8211; 第七章</a> (0)</li>
	<li><a href="http://blog.tomtung.com/2008/09/unable-to-stay/" title="写在临行前 (2008-09-18)">写在临行前</a> (9)</li>
</ul>

]]></content:encoded>
			<wfw:commentRss>http://blog.tomtung.com/2010/02/sinablog2wordpress/feed/</wfw:commentRss>
		<slash:comments>17</slash:comments>
		</item>
		<item>
		<title>Hello World&#8230;Press!</title>
		<link>http://blog.tomtung.com/2010/02/hello-wordpress/</link>
		<comments>http://blog.tomtung.com/2010/02/hello-wordpress/#comments</comments>
		<pubDate>Sat, 06 Feb 2010 11:35:41 +0000</pubDate>
		<dc:creator>逆铭</dc:creator>
				<category><![CDATA[生活在此处]]></category>
		<category><![CDATA[博客搬家]]></category>

		<guid isPermaLink="false">http://blog.tomtung.com/?p=472</guid>
		<description><![CDATA[在打算了很久之后，终于从写了三年多新浪博客搬出来了~ 一方面新浪的限制太多，而且每次系统升级一下都可能会破坏我的一部分内容。另一方面，作为一个21世纪有理想有抱负的IT民工，唯一的blog竟然开在新浪实在是情何以堪啊。而在墙内根本选不出理想的BSP情况下，我抱着“DNS白名单一定不会实施”的幻想，终于决心独立出来了。 两年之内不会换的域名：http://blog.tomtung.com/ Tags：博客搬家 Related Posts sinablog2wordpress：从新浪博客搬家到WordPress (17)]]></description>
			<content:encoded><![CDATA[<p>在打算了很久之后，终于从写了三年多新浪博客搬出来了~</p>
<p>一方面新浪的限制太多，而且每次系统升级一下都可能会破坏我的一部分内容。另一方面，作为一个21世纪有理想有抱负的IT民工，唯一的blog竟然开在新浪实在是情何以堪啊。而在墙内根本选不出理想的BSP情况下，我抱着“DNS白名单一定不会实施”的幻想，终于决心独立出来了。</p>
<p>两年之内不会换的域名：http://blog.tomtung.com/</p>

	<br />Tags：<a href="http://blog.tomtung.com/tag/%e5%8d%9a%e5%ae%a2%e6%90%ac%e5%ae%b6/" title="博客搬家" rel="tag">博客搬家</a><br />

	<br /><h3>Related Posts</h3>
	<ul class="st-related-posts">
	<li><a href="http://blog.tomtung.com/2010/02/sinablog2wordpress/" title="sinablog2wordpress：从新浪博客搬家到WordPress (2010-02-06)">sinablog2wordpress：从新浪博客搬家到WordPress</a> (17)</li>
</ul>

]]></content:encoded>
			<wfw:commentRss>http://blog.tomtung.com/2010/02/hello-wordpress/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>有爱的小脚本：启动终端时显示一句箴言</title>
		<link>http://blog.tomtung.com/2009/11/cowsay-fortune/</link>
		<comments>http://blog.tomtung.com/2009/11/cowsay-fortune/#comments</comments>
		<pubDate>Sun, 22 Nov 2009 10:46:17 +0000</pubDate>
		<dc:creator>逆铭</dc:creator>
				<category><![CDATA[新长征路上的代码]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[shell编程]]></category>

		<guid isPermaLink="false">http://blog.tomtung.com/2009/11/%e6%9c%89%e7%88%b1%e7%9a%84%e5%b0%8f%e8%84%9a%e6%9c%ac%ef%bc%9a%e5%90%af%e5%8a%a8%e7%bb%88%e7%ab%af%e6%97%b6%e6%98%be%e7%a4%ba%e4%b8%80%e5%8f%a5%e7%ae%b4%e8%a8%80/</guid>
		<description><![CDATA[效果就是每次启动终端时都有一个小动物什么的讲一句有意思的话：doubanclaim469c1764e4db1ecf 说话的东西和说的话都随机出现。这个效果是我在Linux Mint里面看到的，感觉很有爱。下周考Unix环境编程，周末恶补一下，顺便写这个小脚本练手。 以我在用的 ubuntu 为例。首先确保安装 fortunes 和 cowsay 两个包。前者用于显示各种各样的趣味短句，后者则提供了一头会说话的奶牛（和其它各种诡异的东西）。关于fortunes还有一些有趣的包你可能也想一起安装，比如fortune-zh里有唐诗宋词，fortunes-ubuntu-server则有关于使用Ubuntu Server的贴士，等等。 新建一个文件cowsay-fortune，把以下代码复制进去： #!/bin/bash # Cow randomly says a hopefully interesting adage # Get a short message from fortune, both offensive and not. # Remove -a if you don't want to see offensive ones. # Remove -s if you don't mind reading the long messages. msg=`fortune [...]]]></description>
			<content:encoded><![CDATA[<p>效果就是每次启动终端时都有一个小动物什么的讲一句有意思的话：<span style="color: #ffffff;">doubanclaim469c1764e4db1ecf</span></p>
<p><a href="http://gallery.tomtung.com/pictures/cowsay-fortune-1.png"><img class="alignnone" title="cowsay-fortune" src="http://gallery.tomtung.com/pictures/cowsay-fortune-1.png" alt="cowsay-fortune" width="657" height="435" /></a></p>
<p>说话的东西和说的话都随机出现。这个效果是我在<a href="http://www.linuxmint.com/" target="_blank">Linux Mint</a>里面看到的，感觉很有爱。下周考Unix环境编程，周末恶补一下，顺便写这个小脚本练手。</p>
<p>以我在用的 ubuntu 为例。首先确保安装 <a href="http://en.wikipedia.org/wiki/Fortune_%28Unix%29" target="_blank">fortunes</a> 和 <a href="http://en.wikipedia.org/wiki/Cowsay" target="_blank">cowsay</a> 两个包。前者用于显示各种各样的趣味短句，后者则提供了一头会说话的奶牛（和其它各种诡异的东西）。关于fortunes还有一些有趣的包你可能也想一起安装，比如fortune-zh里有唐诗宋词，fortunes-ubuntu-server则有关于使用Ubuntu Server的贴士，等等。</p>
<p>新建一个文件cowsay-fortune，把以下代码复制进去：</p>
<pre class="brush:bash">
#!/bin/bash
# Cow randomly says a hopefully interesting adage

# Get a short message from fortune, both offensive and not.
# Remove -a if you don't want to see offensive ones.
# Remove -s if you don't mind reading the long messages.
msg=`fortune -a -s`

# Randomly pick a mode of the cow
modes=("" -b -d -g -p -s -t -w -y ); mode=${modes[$(($RANDOM % 9))]}

# cowsay or cowthink?
cowdos=(cowsay cowthink); cowdo=${cowdos[$(($RANDOM % 2))]}

# Radomly pick a cow picture file
speaker=`cowsay -l | sed '1d;s/ /\n/g'| sort -R | head -1`

# That's it ^^
echo "$msg" | $cowdo -n -f $speaker $mode
</pre>
<p>保存后加上执行权限：</p>
<p><code>chmod +x cowsay-fortune</code></p>
<p>然后把这个文件复制到/usr/bin下</p>
<p><code>sudo cp cowsay-fortune /usr/bin</code></p>
<p>最后打开/etc/bash.bashrc</p>
<p><code>sudo gedit /etc/bash.bashrc</code></p>
<p>并在最后加上一行：</p>
<p><code>cowsay-fortune</code></p>
<p>保存后打开终端，应该就是这个效果了：</p>
<p><a href="http://gallery.tomtung.com/pictures/cowsay-fortune-2.png"><img class="alignnone" title="cowsay-fortune" src="http://gallery.tomtung.com/pictures/cowsay-fortune-2.png" alt="cowsay-fortune" width="675" height="470" /></a></p>
<p>顺便抱怨一下，shell编程时对空格的要求也太诡异了吧。。一会儿要求空，一会儿要求不空，一会儿又不限制。。。</p>

	<br />Tags：<a href="http://blog.tomtung.com/tag/linux/" title="linux" rel="tag">linux</a>, <a href="http://blog.tomtung.com/tag/shell%e7%bc%96%e7%a8%8b/" title="shell编程" rel="tag">shell编程</a><br />

	<br /><h3>Related Posts</h3>
	<ul class="st-related-posts">
	<li><a href="http://blog.tomtung.com/2008/10/first-month-in-buaa/" title="初来北航一个多月的零零碎碎 (2008-10-29)">初来北航一个多月的零零碎碎</a> (12)</li>
</ul>

]]></content:encoded>
			<wfw:commentRss>http://blog.tomtung.com/2009/11/cowsay-fortune/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>[POJ1771] Elevator Stopping Plan</title>
		<link>http://blog.tomtung.com/2009/11/poj1771-elevator-stopping-plan/</link>
		<comments>http://blog.tomtung.com/2009/11/poj1771-elevator-stopping-plan/#comments</comments>
		<pubDate>Fri, 20 Nov 2009 16:33:17 +0000</pubDate>
		<dc:creator>逆铭</dc:creator>
				<category><![CDATA[新长征路上的代码]]></category>
		<category><![CDATA[动态规划]]></category>
		<category><![CDATA[解题报告]]></category>

		<guid isPermaLink="false">http://blog.tomtung.com/2009/11/poj1771-elevator-stopping-plan/</guid>
		<description><![CDATA[新浪的 spamer 越来越多，很早就想搬到独立的 wordpress 上去，但是一直没顾上。只好先在sina这里凑合着了。 Elevator Stopping Plan Time Limit: 1000MS  Memory Limit: 30000K  Special Judge Description ZSoft Corp. is a software company in GaoKe Hall. And the workers in the hall are very hard-working. But the elevator in that hall always drives them crazy. Why? Because there is only one elevator in GaoKe Hall, [...]]]></description>
			<content:encoded><![CDATA[<p>新浪的 spamer 越来越多，很早就想搬到独立的 wordpress 上去，但是一直没顾上。只好先在sina这里凑合着了。</p>
<div style="text-align: center; font-weight: bold; color: #0000ff;" lang="en-US" xml:lang="en-US"><span style="font-size: 18px;">Elevator Stopping Plan</span></div>
<div style="text-align: center;"><strong>Time Limit:</strong> 1000MS  <strong>Memory Limit:</strong> 30000K  <span style="font-weight: bold; color: #ff0000;">Special Judge</span></div>
<p style="font-weight: bold; color: #0000ff;">Description</p>
<div lang="en-US" xml:lang="en-US">
<p>ZSoft Corp. is a software company in GaoKe Hall. And the workers in the hall are very hard-working. But the elevator in that hall always drives them crazy. Why? Because there is only one elevator in GaoKe Hall, while there are hundreds of companies in it. Every morning, people must waste a lot of time waiting for the elevator.</p>
<p>Hal, a smart guy in ZSoft, wants to change this situation. He wants to find a way to make the elevator work more effectively. But it’s not an easy job.</p>
<p>There are 31 floors in GaoKe Hall. It takes 4 seconds for the elevator to raise one floor. It means:</p>
<p>It costs (31-1)*4=120 seconds if the elevator goes from the 1st floor to the 31st floor without stop. And the elevator stops 10 second once. So, if the elevator stops at each floor, it will cost 30*4+29*10 = 410 seconds (It is not necessary to calculate the stopping time at 31st floor). In another way, it takes 20 seconds for the workers to go up or down one floor. It takes 30*20 = 600 seconds for them to walk from the 1st floor to the 31st floor. Obviously, it is not a good idea. So some people choose to use the elevator to get a floor which is the nearest to their office.</p>
<p>After thinking over for a long time, Hal finally found a way to improve this situation. He told the elevator man his idea: First, the elevator man asks the people which floors they want to go. He will then design a stopping plan which minimize the time the last person need to arrive the floor where his office locates. For example, if the elevator is required to stop at the 4th, 5th and 10th floor,the stopping plan would be: the elevator stops at 4th and 10th floor. Because the elevator will arrive 4th floor at 3*4 = 12 second, then it will stop 10 seconds, then it will arrive 10th floor at 3*4+10+6*4 = 46 second. People who want to go 4th floor will reach their office at 12 second, people who want to go to 5th floor will reach at 12+20 = 32 second and people who want to go to 10th floor will reach at 46 second. Therefore it takes 46 seconds for the last person to reach his office. It is a good deal for all people.<br />
Now, you are supposed to write a program to help the elevator man to design the stopping plan,which minimize the time the last person needs to arrive at his floor.</p>
</div>
<p style="color: #0000ff; font-weight: bold;">Input</p>
<div lang="en-US" xml:lang="en-US">The input consists of several testcases. Each testcase is in a single line as the following:<br />
n f1 f2 &#8230; fn<br />
It means, there are totally n floors at which the elevator need to stop, and n = 0 means no testcases any more. f1 f2 &#8230; fn are the floors at which the elevator is to be stopped (n &lt;= 30, 2 &lt;= f1 &lt; f2 &#8230; fn &lt;= 31). Every number is separated by a single space.</div>
<p style="color: #0000ff; font-weight: bold;">Output</p>
<div lang="en-US" xml:lang="en-US">For each testcase, output the time the last reading person needs in the first line and the stopping floors in the second line. Please note that there is a summary of the floors at the head of the second line. There may be several solutions, any appropriate one is accepted. No extra spaces are allowed.</div>
<p style="font-weight: bold; color: #0000ff;">Sample Input</p>
<pre> 3 4 5 10
 1 2
 0</pre>
<p style="font-weight: bold; color: #0000ff;">Sample Output</p>
<pre> 46
 2 4 10
 4
 1 2</pre>
<p style="color: #0000ff; font-weight: bold;">Source</p>
<p>Asia Guangzhou 2003</p>
<p style="font-weight: bold; color: #0000ff;">Solution</p>
<p>很久不更新了，写个水水的解题报告充数。。。这是最近做的算法习题，网上看到这题的题解都是二分+贪心的，这里提供一个dp解法。</p>
<p>理解题意的时候有一点需要特别注意：题目所描述的整个过程是“并行”的。所以所有人都到达各自楼层的用时只与最晚到达的人有关。</p>
<p>首先，由于去各楼层乘客的具体数目对结果没有影响，为表述方便，我们假设每个目标楼层只有一个人要去，并且把各个目标楼层与要去该楼层的那个乘客对应。下面在说“电梯里还剩i个人”的时候，就是在说“电梯里的乘客还要去i个楼层”。</p>
<p>粗略的阶段划分和状态表示还是很简单的。</p>
<p>电梯从第1层开始层层上升，每层都看做一个阶段，任意时刻的状态都可以由“电梯在几楼”和“电梯上都有谁”这两个参数唯一确定。初始状态就是“电梯在1楼”和“所有人都在电梯上”。</p>
<p>在每个阶段需要做出决策，选择让电梯上的哪些人下来自己走（如果没人下来就表示电梯在这层不停）。每个决策发生后，原来电梯里的人被分成两拨：一拨留在电梯上继续上升，另一拨离开电梯开始爬楼锻炼身体。要求某个状态下电梯里的所有人到达各自楼层所需的最短时间，只需要找到一个最优的决策，使得上述两拨人中最晚到达的人尽早到达。</p>
<p>即，若设决策后留在电梯里的人全部到达各自楼层需要时间 T1，离开电梯的人全部到达需要时间 T2，则要求的就是 min{ max(T1, T2) }。其中 T1 可由“当前层数+1”和“决策后剩下的人”确定的状态得到；T2 则是下电梯的人中走的最远的那位所花的时间。</p>
<p>按照上述想法很容易列出转移方程。但是“电梯上都有谁”这一参数有 2^n 种取值，整个算法的复杂度因此能到达令人发指的O(m*2^2n)，对于m=31，n=30的数据规模这是不可接受的。</p>
<p>我们需要设法减少需要考虑的状态数目。下面给出两个引理：</p>
<p>1. 电梯决定停在第k层时：要去 1..k 层的人应选择在这时下电梯，这样一定可以得到当前决策下的一个最优解。如图：<br />
<a href="http://gallery.tomtung.com/pictures/poj1771_1.png"><img class="aligncenter" title="http://gallery.tomtung.com/pictures/poj1771_1.png" src="http://gallery.tomtung.com/pictures/poj1771_1.png" alt="" width="357" height="284" /></a><br />
2. 电梯在第k层时，若要去 k+r 层的人选择在这时下电梯，则：要去k+1..k+r-1层的人也应选择在此时下电梯，这样一定可以得到当前决策下的一个最优解。如图：<br />
<img class="aligncenter" title="http://gallery.tomtung.com/pictures/poj1771_2.png" src="http://gallery.tomtung.com/pictures/poj1771_2.png" alt="http://gallery.tomtung.com/pictures/poj1771_2.png" width="426" height="324" /><br />
以上两点很容易证明。由这两点可以得到一个很简单但足以解决问题的结论：</p>
<p style="font-weight: bold;">无论电梯停在哪一层，若要去第 k 层的人选择在这时下电梯，则：所有要去低于k层（第1..k-1层）的人也应选择在此时下电梯，这样一定可以得到当前决策下的一个最优解。<span style="font-weight: normal;">如图：</span></p>
<p><a href="http://gallery.tomtung.com/pictures/poj1771_3.png"><img class="aligncenter" title="http://gallery.tomtung.com/pictures/poj1771_3.png" src="http://gallery.tomtung.com/pictures/poj1771_3.png" alt="http://gallery.tomtung.com/pictures/poj1771_3.png" width="422" height="322" /></a></p>
<p>也就是说，如果把初始时的 n 名乘客按照各自要去的层数从<span style="font-weight: bold;">高</span>到<span style="font-weight: bold;">低</span>（注意此顺序与输入相反）排列，并依此编号为第 1、2、3&#8230;n 个人，第 i 个人要去第 f[i] 层（f[1]&gt;f[2]&gt;&#8230;&gt;f[n]），那么可以认为<span style="font-weight: bold;">任意时刻电梯里乘客的编号都是 1, 2,..,x 这样一个连续序列</span>。也就是说，对于电梯里的人我们只需要考虑编号为 1, 2, 3 或 1, 2, 3, 4, 5 这样连续排列的情况，而无需考虑 1, 2, 4（缺3）或2, 3, 4（缺1）这样的情况。<br />
<a href="http://gallery.tomtung.com/pictures/poj1771_4.png"><img class="aligncenter" title="http://gallery.tomtung.com/pictures/poj1771_4.png" src="http://gallery.tomtung.com/pictures/poj1771_4.png" alt="http://gallery.tomtung.com/pictures/poj1771_4.png" width="610" height="116" /></a><br />
这样一来，每个状态都能由两个数[i,j]来表示：电梯在第i层，电梯里有j个人，即要去楼层最高的第1,2,..,j个人。</p>
<p>下面给出转移方程：</p>
<p>f[i,j]表示电梯在第i层，电梯上有要去楼层最高的j个人时，电梯上的人全部到达各自楼层所需的最短时间</p>
<p>f[i,j] = min{ max(t1, t2) } (0&lt;=k&lt;=j)</p>
<p>t1 = f[i+1, k] + 电梯停留时间 + 电梯上升一层所用时间</p>
<p>t2 = max{ |d[l] &#8211; i| * 人爬一层楼所用时间 } ( k+1&lt;=l&lt;=j )</p>
<p>边界条件、最优解的构造方法以及其它细节问题不再赘述，详见代码。复杂度O(m*n^2)。代码中其实还有优化的空间，但已经是0ms过的，没必要了。</p>
<pre class="brush:c++">
#include &lt;iostream&gt;
using std::cin;
using std::cout;
using std::endl;

#include &lt;cstring&gt;
using std::memset;

#include &lt;algorithm&gt;
using std::max;

#include &lt;cmath&gt;
using std::abs;

#include &lt;limits&gt;
using std::numeric_limits;

#include &lt;vector&gt;
using std::vector;

const int maxN = 30, maxF = 31;
const int ve = 4, st = 10, vw = 20; // 电梯上一层所需时间；电梯停一层所需时间；人走一层所需时间

int n, f[maxN + 1];

bool input()
{
    cin &gt;&gt; n;
    if (n==0) return false;

    // 注意：f[1..n]中楼层数从高到底排列
    for (int i = n; i&gt;=1; --i)
        cin &gt;&gt; f[i];

    return true;
}

int dp[maxF + 1][maxN + 1], nextJ[maxF + 1][maxN + 1];

// 现在电梯在第currF层，第L到第R人离开电梯
// 函数返回这些离开电梯的人中最晚到达目的楼层所需的时间
int tLeave(int currF, int l, int r)
{
    if (l&gt;r)  return 0;
    // 仅需考虑两端
    return max(abs(currF-f[l]), abs(currF-f[r])) * vw;
}

// 现在电梯在第i层，电梯里本来有j个人，在要下电梯的人离开后还剩jj个人
// 函数返回这些留在电梯里的人中最晚到达目的楼层所需的时间
int tStay(int i, int j, int jj)
{
    // 没人下电梯
    if (j==jj)
        return dp[i+1][jj] + ve;
    // 所有人都离开电梯
    else if (jj==0)
        return 0;
    // 第1层不计算电梯停留时间
    else if (i==1)
        return dp[i+1][jj] + ve;
    //普通情况
    else
        return dp[i+1][jj] + ve + st;
}

void calculate()
{
    // 边界：电梯在顶楼时所有人都必须下电梯
    int topFloor = f[1];
    for (int j = 1; j&lt;=n; ++j)
        dp[topFloor][j] = tLeave(topFloor,1,j);

    for (int i = topFloor - 1; i&gt;=1; --i)
        for (int j = 1; j&lt;=n; ++j)
        {
            dp[i][j] = numeric_limits&lt;int&gt;::max();
            for (int jj = 0; jj &lt;= j; ++jj)
            {
                // 取离开电梯的人和留下的人中的最晚到达者
                int tmp = max(tStay(i,j,jj),tLeave(i,jj+1,j));
                if (dp[i][j] &gt; tmp)
                {
                    dp[i][j] = tmp;
                    nextJ[i][j] = jj;
                }
            }
        }
    cout &lt;&lt; dp[1][n] &lt;&lt; endl;
}

void rebuildSolution()
{
    vector&lt;int&gt; stops;
    int j = nextJ[1][n], topFloor = f[1];
    for (int i = 2; i&lt;=topFloor; ++i)
        if (nextJ[i][j]!=j)
        {
            stops.push_back(i);
            j = nextJ[i][j];
            if (j==0) break;
        }

    cout &lt;&lt; stops.size();
    for (int i = 0; i!=stops.size(); ++i)
        cout &lt;&lt; ' ' &lt;&lt; stops[i];
    cout &lt;&lt; endl;
}

void solve()
{
    memset(dp,0,sizeof(dp));
    memset(nextJ,0,sizeof(nextJ));
    calculate();
    rebuildSolution();
}

int main()
{
    while (input())
        solve();
}
</pre>

	<br />Tags：<a href="http://blog.tomtung.com/tag/%e5%8a%a8%e6%80%81%e8%a7%84%e5%88%92/" title="动态规划" rel="tag">动态规划</a>, <a href="http://blog.tomtung.com/tag/%e8%a7%a3%e9%a2%98%e6%8a%a5%e5%91%8a/" title="解题报告" rel="tag">解题报告</a><br />

	<br /><h3>Related Posts</h3>
	<ul class="st-related-posts">
	<li><a href="http://blog.tomtung.com/2007/05/noi99-chess/" title="[NOI99]棋盘分割(Chessboard Division) (2007-05-26)">[NOI99]棋盘分割(Chessboard Division)</a> (0)</li>
	<li><a href="http://blog.tomtung.com/2007/10/noip05-fire/" title="[NOIP05] 篝火晚会 (2007-10-02)">[NOIP05] 篝火晚会</a> (0)</li>
	<li><a href="http://blog.tomtung.com/2007/08/vijos-1006/" title="[VIJOS 1006]晴天小猪历险记之 Hill (2007-08-25)">[VIJOS 1006]晴天小猪历险记之 Hill</a> (1)</li>
	<li><a href="http://blog.tomtung.com/2007/02/usaco-p58-the-clocks/" title="[USACO]The Clocks (2007-02-19)">[USACO]The Clocks</a> (2)</li>
	<li><a href="http://blog.tomtung.com/2007/07/poi-iv-monochromatic-triangles/" title="[POI IV] Monochromatic triangles (2007-07-05)">[POI IV] Monochromatic triangles</a> (0)</li>
</ul>

]]></content:encoded>
			<wfw:commentRss>http://blog.tomtung.com/2009/11/poj1771-elevator-stopping-plan/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Le Matin by Yann Tiersen (Yamaha DGX-620)</title>
		<link>http://blog.tomtung.com/2009/09/le-matin/</link>
		<comments>http://blog.tomtung.com/2009/09/le-matin/#comments</comments>
		<pubDate>Tue, 08 Sep 2009 10:00:01 +0000</pubDate>
		<dc:creator>逆铭</dc:creator>
				<category><![CDATA[Music maks me talk]]></category>
		<category><![CDATA[开源]]></category>
		<category><![CDATA[扬·提尔森]]></category>
		<category><![CDATA[视频]]></category>
		<category><![CDATA[钢琴]]></category>

		<guid isPermaLink="false">http://blog.tomtung.com/2009/09/le-matin-by-yann-tiersen-yamaha-dgx-620/</guid>
		<description><![CDATA[拿本本的摄像头录的，同步有点问题不想调了= = 能弹成这样我很满意了恩~ p.s. 使用了强大的开源视频处理软件 VirtualDub 进行视频捕获和剪辑，欢迎猛击链接到其主页围观。 Tags：开源, 扬·提尔森, 视频, 钢琴 Related Posts 恶搞巴赫：Deconstructing Johann (0) 没有翅膀的鸟 通向天堂的飞翔 (12) 简记杨东荫音乐会 (9) 学琴一个月~ (16) 宇文硕 &#8211; 叙事曲 (1)]]></description>
			<content:encoded><![CDATA[<p><object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" width="420" height="363" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0"><param name="autoStart" value="0" /><param name="allowScriptAccess" value="never" /><param name="allowFullScreen" value="true" /><param name="allowscriptaccess" value="always" /><param name="wmode" value="opaque" /><param name="src" value="http://www.tudou.com/v/LvLqQWxslao" /><param name="allowfullscreen" value="true" /><embed type="application/x-shockwave-flash" width="420" height="363" src="http://www.tudou.com/v/LvLqQWxslao" wmode="opaque" allowfullscreen="true" allowscriptaccess="always" autostart="0"></embed></object></p>
<p>拿本本的摄像头录的，同步有点问题不想调了= = 能弹成这样我很满意了恩~</p>
<p>p.s. 使用了强大的开源视频处理软件 <a href="http://www.virtualdub.org/" target="_blank">VirtualDub</a> 进行视频捕获和剪辑，欢迎猛击链接到其主页围观。</p>

	<br />Tags：<a href="http://blog.tomtung.com/tag/%e5%bc%80%e6%ba%90/" title="开源" rel="tag">开源</a>, <a href="http://blog.tomtung.com/tag/yann-tiersen/" title="扬·提尔森" rel="tag">扬·提尔森</a>, <a href="http://blog.tomtung.com/tag/%e8%a7%86%e9%a2%91/" title="视频" rel="tag">视频</a>, <a href="http://blog.tomtung.com/tag/%e9%92%a2%e7%90%b4/" title="钢琴" rel="tag">钢琴</a><br />

	<br /><h3>Related Posts</h3>
	<ul class="st-related-posts">
	<li><a href="http://blog.tomtung.com/2008/03/deconstructing-johann/" title="恶搞巴赫：Deconstructing Johann (2008-03-01)">恶搞巴赫：Deconstructing Johann</a> (0)</li>
	<li><a href="http://blog.tomtung.com/2008/07/wiki/" title="没有翅膀的鸟 通向天堂的飞翔 (2008-07-20)">没有翅膀的鸟 通向天堂的飞翔</a> (12)</li>
	<li><a href="http://blog.tomtung.com/2008/01/yangdongyin-concert/" title="简记杨东荫音乐会 (2008-01-27)">简记杨东荫音乐会</a> (9)</li>
	<li><a href="http://blog.tomtung.com/2008/06/first-month-learn-piano/" title="学琴一个月~ (2008-06-30)">学琴一个月~</a> (16)</li>
	<li><a href="http://blog.tomtung.com/2008/06/yuwenshuo-ballad/" title="宇文硕 &#8211; 叙事曲 (2008-06-12)">宇文硕 &#8211; 叙事曲</a> (1)</li>
</ul>

]]></content:encoded>
			<wfw:commentRss>http://blog.tomtung.com/2009/09/le-matin/feed/</wfw:commentRss>
		<slash:comments>11</slash:comments>
		</item>
		<item>
		<title>读取RFC822格式日期时间的类[C#]</title>
		<link>http://blog.tomtung.com/2009/08/rfc822-date-time-parser/</link>
		<comments>http://blog.tomtung.com/2009/08/rfc822-date-time-parser/#comments</comments>
		<pubDate>Sun, 09 Aug 2009 12:06:31 +0000</pubDate>
		<dc:creator>逆铭</dc:creator>
				<category><![CDATA[新长征路上的代码]]></category>
		<category><![CDATA[csharp]]></category>

		<guid isPermaLink="false">http://blog.tomtung.com/2009/08/%e8%af%bb%e5%8f%96rfc822%e6%a0%bc%e5%bc%8f%e6%97%a5%e6%9c%9f%e6%97%b6%e9%97%b4%e7%9a%84%e7%b1%bbc/</guid>
		<description><![CDATA[比较无法理解为什么 .NET 类库里面没有提供足够对RFC822格式日期时间的支持。网上有人实现，但是都不太让人满意。比较囧的是，关于单字母表示时区，好几个实现都只考虑了 Z、A、M、N、Y 五个 spec 里直接列出的字母……我在用的 Argotic 也是这样。所以就自己实现了一个 parser，然后修改 Argotic 的代码直接用它。 点这里下载源代码及其单元测试。需要的话就拿去吧，lgpl。 我实现的时候相比严格的 spec 又放宽了一些，比如允许小时、分钟、秒只有一位数字（spec 要求必须两位），允许不指定时区，允许用四位数字表示年份（这个是 rss 的 spec 要求的），允许只指定日期不指定时间。如果你觉着不爽就自己改改吧，看代码就知道非常好改（就在“Set Format Strings”那个 region 里）。 欢迎报告bug。 Tags：csharp Related Posts 初来北航一个多月的零零碎碎 (12) 写在临行前 (9) 敏捷开发学习笔记（思维导图） (1)]]></description>
			<content:encoded><![CDATA[<div style="text-align: center;"><a href="http://gallery.tomtung.com/pictures/rfc822_date_time_parser.png"><img class="aligncenter" title="http://gallery.tomtung.com/pictures/rfc822_date_time_parser.png" src="http://gallery.tomtung.com/pictures/rfc822_date_time_parser.png" alt="" width="202" height="133" /></a></div>
<p>比较无法理解为什么 .NET 类库里面没有提供足够对<a href="http://www.w3.org/Protocols/rfc822/#z28" target="_blank">RFC822格式日期时间</a>的支持。网上有人实现，但是都不太让人满意。比较囧的是，关于单字母表示时区，好几个实现都只考虑了 Z、A、M、N、Y 五个 spec 里直接列出的字母……我在用的 Argotic 也是这样。所以就自己实现了一个 parser，然后修改 Argotic 的代码直接用它。</p>
<p>点<a href="http://podcat.sourceforge.net/Rfc822DateTimeParser.zip" target="_blank">这里</a>下载源代码及其单元测试。需要的话就拿去吧，lgpl。</p>
<p>我实现的时候相比严格的 spec 又放宽了一些，比如允许小时、分钟、秒只有一位数字（spec 要求必须两位），允许不指定时区，允许用四位数字表示年份（这个是 rss 的 spec 要求的），允许只指定日期不指定时间。如果你觉着不爽就自己改改吧，看代码就知道非常好改（就在“Set Format Strings”那个 region 里）。</p>
<p>欢迎报告bug。</p>

	<br />Tags：<a href="http://blog.tomtung.com/tag/csharp/" title="csharp" rel="tag">csharp</a><br />

	<br /><h3>Related Posts</h3>
	<ul class="st-related-posts">
	<li><a href="http://blog.tomtung.com/2008/10/first-month-in-buaa/" title="初来北航一个多月的零零碎碎 (2008-10-29)">初来北航一个多月的零零碎碎</a> (12)</li>
	<li><a href="http://blog.tomtung.com/2008/09/unable-to-stay/" title="写在临行前 (2008-09-18)">写在临行前</a> (9)</li>
	<li><a href="http://blog.tomtung.com/2009/07/agile-development-reading-notes/" title="敏捷开发学习笔记（思维导图） (2009-07-04)">敏捷开发学习笔记（思维导图）</a> (1)</li>
</ul>

]]></content:encoded>
			<wfw:commentRss>http://blog.tomtung.com/2009/08/rfc822-date-time-parser/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>敏捷开发学习笔记（思维导图）</title>
		<link>http://blog.tomtung.com/2009/07/agile-development-reading-notes/</link>
		<comments>http://blog.tomtung.com/2009/07/agile-development-reading-notes/#comments</comments>
		<pubDate>Sat, 04 Jul 2009 10:06:18 +0000</pubDate>
		<dc:creator>逆铭</dc:creator>
				<category><![CDATA[新长征路上的代码]]></category>
		<category><![CDATA[csharp]]></category>
		<category><![CDATA[思维导图]]></category>
		<category><![CDATA[敏捷开发]]></category>
		<category><![CDATA[读书笔记]]></category>

		<guid isPermaLink="false">http://blog.tomtung.com/2009/07/%e6%95%8f%e6%8d%b7%e5%bc%80%e5%8f%91%e5%ad%a6%e4%b9%a0%e7%ac%94%e8%ae%b0%ef%bc%88%e6%80%9d%e7%bb%b4%e5%af%bc%e5%9b%be%ef%bc%89/</guid>
		<description><![CDATA[终于看完了《Agile Principles, Patterns, and Practices in C#》的第一个Section，上学期间读这些书的进度还真不是一般的慢……第一次尝试用MindMap做笔记，感觉不错，不过效率还是不够高。老蒋说我笔记做得太详尽了，像抄书&#8230;反思中。 篇幅所限，书中还是有很多内容不够深入。一些内容需要另一本书的篇幅深入讨论（如重构），甚至需要看一本书才能从纸上谈兵转到实践（如TDD、Acceptance Tests）。。。望不到头的书单啊T_T 做笔记使用的工具是 XMind。 单击这里进入下载页面。 Please upgrade your browser （需要下载才能看到全部内容） Tags：csharp, 思维导图, 敏捷开发, 读书笔记 Related Posts C++ Primer 读书笔记 &#8211; 第七章 (0) 读取RFC822格式日期时间的类[C#] (1) C++ Primer 读书笔记 &#8211; 第五章 (1) C++ Primer 读书笔记 &#8211; 第二章 (4) 学习笔记：概率统计与随机过程 (3)]]></description>
			<content:encoded><![CDATA[<p>终于看完了《<a href="http://www.douban.com/subject/1815898/" target="_blank">Agile Principles, Patterns, and Practices in C#</a>》的第一个Section，上学期间读这些书的进度还真不是一般的慢……第一次尝试用<a href="http://en.wikipedia.org/wiki/Mindmap" target="_blank">MindMap</a>做笔记，感觉不错，不过效率还是不够高。<a href="http://www.jiangtianzheng.com/" target="_blank">老蒋</a>说我笔记做得太详尽了，像抄书&#8230;反思中。</p>
<p>篇幅所限，书中还是有很多内容不够深入。一些内容需要另一本书的篇幅深入讨论（如重构），甚至需要看一本书才能从纸上谈兵转到实践（如TDD、Acceptance Tests）。。。望不到头的书单啊T_T</p>
<p>做笔记使用的工具是 <a href="http://www.xmind.net/" target="_blank">XMind</a>。</p>
<p>单击<a href="http://www.xmind.net/share/tomtung/xmind-362366/" target="_blank">这里</a>进入下载页面。</p>
<div class="iframe-wrapper">
  <iframe src="http://xmind.net/share/_embed/tomtung/xmind-362366/" frameborder="0" style="height:300px;width:600px;">Please upgrade your browser</iframe>
</div>
<p>（需要下载才能看到全部内容）</p>

	<br />Tags：<a href="http://blog.tomtung.com/tag/csharp/" title="csharp" rel="tag">csharp</a>, <a href="http://blog.tomtung.com/tag/%e6%80%9d%e7%bb%b4%e5%af%bc%e5%9b%be/" title="思维导图" rel="tag">思维导图</a>, <a href="http://blog.tomtung.com/tag/%e6%95%8f%e6%8d%b7%e5%bc%80%e5%8f%91/" title="敏捷开发" rel="tag">敏捷开发</a>, <a href="http://blog.tomtung.com/tag/%e8%af%bb%e4%b9%a6%e7%ac%94%e8%ae%b0/" title="读书笔记" rel="tag">读书笔记</a><br />

	<br /><h3>Related Posts</h3>
	<ul class="st-related-posts">
	<li><a href="http://blog.tomtung.com/2008/08/cpp-primer-reding-notes-chapter7/" title="C++ Primer 读书笔记 &#8211; 第七章 (2008-08-28)">C++ Primer 读书笔记 &#8211; 第七章</a> (0)</li>
	<li><a href="http://blog.tomtung.com/2009/08/rfc822-date-time-parser/" title="读取RFC822格式日期时间的类[C#] (2009-08-09)">读取RFC822格式日期时间的类[C#]</a> (1)</li>
	<li><a href="http://blog.tomtung.com/2008/08/cpp-primer-reding-notes-chapter5/" title="C++ Primer 读书笔记 &#8211; 第五章 (2008-08-23)">C++ Primer 读书笔记 &#8211; 第五章</a> (1)</li>
	<li><a href="http://blog.tomtung.com/2008/08/cpp-primer-reding-notes-chapter2/" title="C++ Primer 读书笔记 &#8211; 第二章 (2008-08-07)">C++ Primer 读书笔记 &#8211; 第二章</a> (4)</li>
	<li><a href="http://blog.tomtung.com/2010/02/probability-statistics-and-random-processes/" title="学习笔记：概率统计与随机过程 (2010-02-06)">学习笔记：概率统计与随机过程</a> (3)</li>
</ul>

]]></content:encoded>
			<wfw:commentRss>http://blog.tomtung.com/2009/07/agile-development-reading-notes/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Grass Mud Horse</title>
		<link>http://blog.tomtung.com/2009/04/grass-mud-horse/</link>
		<comments>http://blog.tomtung.com/2009/04/grass-mud-horse/#comments</comments>
		<pubDate>Wed, 08 Apr 2009 14:34:51 +0000</pubDate>
		<dc:creator>逆铭</dc:creator>
				<category><![CDATA[生活在此处]]></category>
		<category><![CDATA[草泥马]]></category>

		<guid isPermaLink="false">http://blog.tomtung.com/2009/04/grass-mud-horse/</guid>
		<description><![CDATA[我们口语课结课，要求imagine一个产品，然后做presentation和tv commercial。然后我们就很恶趣味同时很正经地做了Grass Mud Horse。下面是幻灯片~_~ (特别说明，那个仿别摸我的Logo是PS大牛Catt同学搞的) 关于这个GMH这个诡异的名字，我们是这么和外教解释的：吃进去的是Grass，X出来的是Mud，多么Eco-friendly啊~~~~ ……好吧，是有点冷，我只是不知道该更新什么了就发这个上来凑数，恩。 P.S.今天最后一次口语课，才注意到我们班竟然有个叫Dick的…………………………这说明什么呢？ 说明，我不但词汇量小，知道的单词也想不起来- - Tags：草泥马 Related Posts N / A]]></description>
			<content:encoded><![CDATA[<p>我们口语课结课，要求imagine一个产品，然后做presentation和tv commercial。然后我们就很恶趣味同时很正经地做了Grass Mud Horse。下面是幻灯片~_~</p>
<p>(特别说明，那个仿别摸我的Logo是PS大牛<a href="http://blog.sina.com.cn/maundytime" target="_blank">Catt</a>同学搞的)</p>
<p style="text-align: center;"><a href="http://gallery.tomtung.com/pictures/grass-mud-horse-slide1.jpg"><img class="aligncenter" title="http://gallery.tomtung.com/pictures/grass-mud-horse-slide1.jpg" src="http://gallery.tomtung.com/pictures/grass-mud-horse-slide1.jpg" alt="http://gallery.tomtung.com/pictures/grass-mud-horse-slide1.jpg" width="600" height="451" /></a></p>
<p style="text-align: center;"><a href="http://gallery.tomtung.com/pictures/grass-mud-horse-slide2.jpg"><img class="aligncenter" title="http://gallery.tomtung.com/pictures/grass-mud-horse-slide2.jpg" src="http://gallery.tomtung.com/pictures/grass-mud-horse-slide2.jpg" alt="http://gallery.tomtung.com/pictures/grass-mud-horse-slide2.jpg" width="600" height="451" /></a></p>
<p style="text-align: center;"><a href="http://gallery.tomtung.com/pictures/grass-mud-horse-slide3.jpg"><img class="aligncenter" title="http://gallery.tomtung.com/pictures/grass-mud-horse-slide3.jpg" src="http://gallery.tomtung.com/pictures/grass-mud-horse-slide3.jpg" alt="http://gallery.tomtung.com/pictures/grass-mud-horse-slide3.jpg" width="600" height="451" /></a></p>
<p style="text-align: center;"><a href="http://gallery.tomtung.com/pictures/grass-mud-horse-slide4.jpg"><img class="aligncenter" title="http://gallery.tomtung.com/pictures/grass-mud-horse-slide4.jpg" src="http://gallery.tomtung.com/pictures/grass-mud-horse-slide4.jpg" alt="http://gallery.tomtung.com/pictures/grass-mud-horse-slide4.jpg" width="600" height="451" /></a></p>
<p style="text-align: center;"><a href="http://gallery.tomtung.com/pictures/grass-mud-horse-slide5.jpg"><img class="aligncenter" title="http://gallery.tomtung.com/pictures/grass-mud-horse-slide5.jpg" src="http://gallery.tomtung.com/pictures/grass-mud-horse-slide5.jpg" alt="http://gallery.tomtung.com/pictures/grass-mud-horse-slide5.jpg" width="600" height="451" /></a></p>
<p style="text-align: center;"><a href="http://gallery.tomtung.com/pictures/grass-mud-horse-slide6.jpg"><img class="aligncenter" title="http://gallery.tomtung.com/pictures/grass-mud-horse-slide6.jpg" src="http://gallery.tomtung.com/pictures/grass-mud-horse-slide6.jpg" alt="http://gallery.tomtung.com/pictures/grass-mud-horse-slide6.jpg" width="600" height="451" /></a></p>
<p>关于这个GMH这个诡异的名字，我们是这么和外教解释的：吃进去的是Grass，X出来的是Mud，多么Eco-friendly啊~~~~</p>
<p>……好吧，是有点冷，我只是不知道该更新什么了就发这个上来凑数，恩。</p>
<p>P.S.今天最后一次口语课，才注意到我们班竟然有个叫Dick的…………………………这说明什么呢？</p>
<p>说明，我不但词汇量小，知道的单词也想不起来- -</p>

	<br />Tags：<a href="http://blog.tomtung.com/tag/%e8%8d%89%e6%b3%a5%e9%a9%ac/" title="草泥马" rel="tag">草泥马</a><br />

	<br /><h3>Related Posts</h3>
	<ul class="st-related-posts">
	<li>N / A</li>
	</ul>

]]></content:encoded>
			<wfw:commentRss>http://blog.tomtung.com/2009/04/grass-mud-horse/feed/</wfw:commentRss>
		<slash:comments>11</slash:comments>
		</item>
		<item>
		<title>Tagged by 音符（回学姐点名）</title>
		<link>http://blog.tomtung.com/2009/03/tagged-by-yinfu/</link>
		<comments>http://blog.tomtung.com/2009/03/tagged-by-yinfu/#comments</comments>
		<pubDate>Sun, 29 Mar 2009 16:07:39 +0000</pubDate>
		<dc:creator>逆铭</dc:creator>
				<category><![CDATA[生活在此处]]></category>
		<category><![CDATA[点名]]></category>

		<guid isPermaLink="false">http://blog.tomtung.com/2009/03/tagged-by-%e9%9f%b3%e7%ac%a6%ef%bc%88%e5%9b%9e%e5%ad%a6%e5%a7%90%e7%82%b9%e5%90%8d%ef%bc%89/</guid>
		<description><![CDATA[游戏规则如下： 當你給人tag了，就要寫一篇note，內含16項有關你的事情，習慣，喜好，目標&#8230;.或任何各不相干但有關你的東西。 最後tag另外16個人。你必須tag回原先tag你的那個人。 如果我tag你，即是我想認識你更深。 Tag from here. 5.17更新： 偷懒，以此同一篇再回我系hwl母牛tag……由于tag来自校内，出于隐私考虑不做回链。这次也不再tag别人。 和普通点名游戏相比还是tag好啊，写一次一劳永逸。。。XD 学姐点了我一个月了，期间我总是干这干那，没有干多少正经事但是总是没回复。。。再不回复我自己都要忘掉，也实在是不好意思了。貌似曾经有人点过我，然后我拖了好久都忘记是谁点的了- &#8211; 抱歉抱歉…… 上面游戏说明里“tag”的意思不是很理解，这里就当成一般点名游戏玩好了。 下面是16项（好多啊）： 1. 音乐。 从第一次听一盘贝三磁带到现在，五年来音乐是我最忠实的陪伴。不管做什么事，只要有机会，总是让音乐在一旁一直一直响着。瘦弱优雅的肖邦，机敏狡黠的海顿，歇斯底里的老柴，斗争了几百年的小贝，还有为上帝谱曲(并生下20个孩子)的巴赫，每个阶段的心理状态也都反映在我听的唱片上。我豆瓣的“读过”和“看过”很少更新，“在听”和“听过”却始终保持着相当的更新速度。在匆忙的追赶中，能有音乐相伴，幸甚至哉。 2. 计算机 从瞎玩家里那台破烂586，到买电脑杂志看，到成为OIer，到现在进入这个专业，我一直都花费大量时间待在显示器前面。我想称自己为Geek，但是总是心虚，因为，厄—— 3. 数学 因为我对数学一直没有感觉。似乎一个总是仅在需要时才学数学，总是担心数学成绩的人是没有资格被称为Geek的……我还在想，期中考试高数该怎么办啊 &#62;_&#60; 4. 互联网 从拨号时代一直混到现在，也算是老网民了吧。可以连续一个多星期不关机挂电骡、每天花费时间上网阅读、不定期更新blog和饭否、要买什么东西第一反应就是淘宝京东卓越当当……我这么大网瘾肯定要被诊断成精神病的。 (milestone: 1/4) 5. 无线电静默 很长一段时间不更新blog了，饭否更新频率较低，开机没事也不会习惯性打开qq和msn。我曾经给别人说要联系我上网可能比用手机还快，但现在恐怕不是这样了。渐渐地很少发出信息，浏览器往往也仅用于浏览。这个是否是—— 6. 自闭倾向 假期和初中同学、小学同学聚会时，总是走神，如果不刻意努力也不主动加入交谈。这是因为对他们有些生疏了，还是我待在自己的世界太久了？ 对人际上花的时间精力越来越少，只是埋头赶路。觉得“一切源于你不够强”（荣耀归于蒋天正），变强以后一切问题都会解决。显然，我并没有变多强，问题也都还摆在这里。我也知道，就算变强了，问题也不见得能解决多少。也许仅仅是借“变强”这个遥远的目标逃避眼前的问题吧。 7. 颓废 虽然一切按部就班，但整体状态不佳。做生活评估，结果各项均低于平均值，让人很闷。其实，状态不佳的一部分原因就是—— 8. 熬夜 我狠好奇他们在临床上管我这种有事没事就喜欢瞎熬夜的人叫什么。熬夜是个恶性循环，我在尽力调整。 (milestone: 1/2) 9. MM 对MM不抱幻想但时刻保持警觉，这是一个北航男的基本素养。其实看淡了也就无所谓了。也许是曾经空转了许久的感情之轮透支了热情吧，现在每天想到的也只是作业啊书啊碟啊，无他。偶尔遇到寂寞，我们是老朋友了。待到2011年11月11日，我一定与诸位同庆百年一遇的大光棍节。 10. 科幻 科幻读得并不很多。曾经一期不落的《科幻世界》不知不觉中竟然也连着三个月没看了。不管怎么样，我都还称自己为科幻爱好者。 11. 不可知论者 我是。 12. [...]]]></description>
			<content:encoded><![CDATA[<p style="text-align: center;"><img class="aligncenter" title="http://gallery.tomtung.com/pictures/rollcall.jpg" src="http://gallery.tomtung.com/pictures/rollcall.jpg" alt="http://gallery.tomtung.com/pictures/rollcall.jpg" width="354" height="301" /></p>
<p>游戏规则如下：</p>
<p>當你給人tag了，就要寫一篇note，內含16項有關你的事情，習慣，喜好，目標&#8230;.或任何各不相干但有關你的東西。</p>
<p>最後tag另外16個人。你必須tag回原先tag你的那個人。</p>
<p>如果我tag你，即是我想認識你更深。</p>
<p>Tag from <a href="http://www.douban.com/note/28155611/" target="_blank">here</a>.</p>
<div style="border-top:1px dashed #cccccc;height: 1px;overflow:hidden"></div>
<p>5.17更新：</p>
<p>偷懒，以此同一篇再回我系hwl母牛tag……由于tag来自校内，出于隐私考虑不做回链。这次也不再tag别人。</p>
<p>和普通点名游戏相比还是tag好啊，写一次一劳永逸。。。XD</p>
<div style="border-top:1px dashed #cccccc;height: 1px;overflow:hidden"></div>
<p>学姐点了我一个月了，期间我总是干这干那，没有干多少正经事但是总是没回复。。。再不回复我自己都要忘掉，也实在是不好意思了。貌似曾经有人点过我，然后我拖了好久都忘记是谁点的了- &#8211; 抱歉抱歉……</p>
<p>上面游戏说明里“tag”的意思不是很理解，这里就当成一般点名游戏玩好了。</p>
<p>下面是16项（好多啊）：</p>
<p>1. 音乐。</p>
<p>从第一次听一盘贝三磁带到现在，五年来音乐是我最忠实的陪伴。不管做什么事，只要有机会，总是让音乐在一旁一直一直响着。瘦弱优雅的肖邦，机敏狡黠的海顿，歇斯底里的老柴，斗争了几百年的小贝，还有为上帝谱曲(并生下20个孩子)的巴赫，每个阶段的心理状态也都反映在我听的唱片上。我豆瓣的“读过”和“看过”很少更新，“在听”和“听过”却始终保持着相当的更新速度。在匆忙的追赶中，能有音乐相伴，幸甚至哉。</p>
<p>2. 计算机</p>
<p>从瞎玩家里那台破烂586，到买电脑杂志看，到成为OIer，到现在进入这个专业，我一直都花费大量时间待在显示器前面。我想称自己为Geek，但是总是心虚，因为，厄——</p>
<p>3. 数学</p>
<p>因为我对数学一直没有感觉。似乎一个总是仅在需要时才学数学，总是担心数学成绩的人是没有资格被称为Geek的……我还在想，期中考试高数该怎么办啊 &gt;_&lt;</p>
<p>4. 互联网</p>
<p>从拨号时代一直混到现在，也算是老网民了吧。可以连续一个多星期不关机挂电骡、每天花费时间上网阅读、不定期更新blog和饭否、要买什么东西第一反应就是淘宝京东卓越当当……我这么大网瘾肯定要被诊断成精神病的。</p>
<p>(milestone: 1/4)</p>
<p>5. 无线电静默</p>
<p>很长一段时间不更新blog了，饭否更新频率较低，开机没事也不会习惯性打开qq和msn。我曾经给别人说要联系我上网可能比用手机还快，但现在恐怕不是这样了。渐渐地很少发出信息，浏览器往往也仅用于浏览。这个是否是——</p>
<p>6. 自闭倾向</p>
<p>假期和初中同学、小学同学聚会时，总是走神，如果不刻意努力也不主动加入交谈。这是因为对他们有些生疏了，还是我待在自己的世界太久了？</p>
<p>对人际上花的时间精力越来越少，只是埋头赶路。觉得“一切源于你不够强”（荣耀归于<a href="http://blog.jiangtianzheng.com/aboutme/" target="_blank">蒋天正</a>），变强以后一切问题都会解决。显然，我并没有变多强，问题也都还摆在这里。我也知道，就算变强了，问题也不见得能解决多少。也许仅仅是借“变强”这个遥远的目标逃避眼前的问题吧。</p>
<p>7. 颓废</p>
<p>虽然一切按部就班，但整体状态不佳。做<a href="http://www.monkeyquiz.com/life/rate_my_life.html" target="_blank">生活评估</a>，结果各项均低于平均值，让人很闷。其实，状态不佳的一部分原因就是——</p>
<p>8. 熬夜</p>
<p>我狠好奇他们在临床上管我这种有事没事就喜欢瞎熬夜的人叫什么。熬夜是个恶性循环，我在尽力调整。</p>
<p>(milestone: 1/2)</p>
<p>9. MM</p>
<p>对MM不抱幻想但时刻保持警觉，这是一个北航男的基本素养。其实看淡了也就无所谓了。也许是曾经空转了许久的感情之轮透支了热情吧，现在每天想到的也只是作业啊书啊碟啊，无他。偶尔遇到寂寞，我们是老朋友了。待到2011年11月11日，我一定与诸位同庆百年一遇的大光棍节。</p>
<p>10. 科幻</p>
<p>科幻读得并不很多。曾经一期不落的《科幻世界》不知不觉中竟然也连着三个月没看了。不管怎么样，我都还称自己为科幻爱好者。</p>
<p>11. 不可知论者</p>
<p>我是。</p>
<p>12. 当断不断</p>
<p>我的性格弱点。自然常受其乱。</p>
<p>(milestone: 3/4)</p>
<p>13. 口琴</p>
<p>有在o2mania上yy的时间不如多吹吹我那把半音阶吧……现在在练巴赫的g弦上的咏叹调。</p>
<p>14. 不记人</p>
<p>一般要见过两次以上才能在大街上认出一个人，且正确率不高。如果认识我的同学看到我迎面走来却没打招呼，请一定谅解，因为我肯定是害怕认错人 &gt;_&lt;</p>
<p>15. 宽容</p>
<p>至少我觉得我是宽容的。很少有谁做了什么事能让我耿耿于怀。</p>
<p>但反过来自己做了什么影响双方关系的事有时就会很不安，尤其是会影响对方看待自己方式的事。即使理性地看事并不大，也会纠结很久。这种心理现象我也觉得很奇怪。难道是虚荣么？还是——</p>
<p>16. 得过且过的完美主义</p>
<p>在很多事情上我都得过且过，混个差不多就行，但有时又会表现出“要么全有要么全无”的完美主义倾向。现在心智成熟一些以后可能已经好一些了(真的好很多很多了- -)，小时候对于受到损坏的东西总是倾向于直接丢弃。反映在人际关系上，对于被伤害的关系，不是积极修补而是消极放弃。这也算是一个弱点。</p>
<p>终于凑够了16条（又一次熬夜，明天高数不去了- -）。感谢学姐点我，提供给我一个难得的更新blog的机会……</p>
<p>赶紧睡觉去，不点别人了。。</p>

	<br />Tags：<a href="http://blog.tomtung.com/tag/%e7%82%b9%e5%90%8d/" title="点名" rel="tag">点名</a><br />

	<br /><h3>Related Posts</h3>
	<ul class="st-related-posts">
	<li>N / A</li>
	</ul>

]]></content:encoded>
			<wfw:commentRss>http://blog.tomtung.com/2009/03/tagged-by-yinfu/feed/</wfw:commentRss>
		<slash:comments>7</slash:comments>
		</item>
		<item>
		<title>[BHOJ10235] 窗口取数</title>
		<link>http://blog.tomtung.com/2009/03/bhoj-10235/</link>
		<comments>http://blog.tomtung.com/2009/03/bhoj-10235/#comments</comments>
		<pubDate>Sat, 28 Mar 2009 13:52:48 +0000</pubDate>
		<dc:creator>逆铭</dc:creator>
				<category><![CDATA[新长征路上的代码]]></category>
		<category><![CDATA[滑动窗口]]></category>
		<category><![CDATA[算法]]></category>
		<category><![CDATA[解题报告]]></category>

		<guid isPermaLink="false">http://blog.tomtung.com/2009/03/bhoj10235-%e7%aa%97%e5%8f%a3%e5%8f%96%e6%95%b0/</guid>
		<description><![CDATA[窗口（超级版） 时间限制:5000 ms 内存限制:65535 KB 描述 有一串整数在排队…… 有N个整数，你有一个可以框住M个连续段整数的木框，现在你想知道，对于这个队列中任意的连续M个整数，最大和最小的整数是哪个？ 例：(M大小的窗口向右滑动) 1 2 3 2 1 M=2 1 2 MAX 2 MIN 1 2 3 MAX 3 MIN 2 3 2 MAX 3 MIN 2 2 1 MAX 2 MIN 1 最后需要输出的是两行： 1 2 2 1 2 3 3 2 输入 第一行包含一个整数T，表示有T组测试数据； 以下每组测试数据格式： 第一行包含2个整数N,M表示有N个整数在排队，取连续M个整数。 第二行包含N个整数。 其中N不大于1,000,000，M不大于N。 输出 [...]]]></description>
			<content:encoded><![CDATA[<h1 style="text-align: center;"><img class="aligncenter" title="http://gallery.tomtung.com/pictures/sliding-window.jpg" src="http://gallery.tomtung.com/pictures/sliding-window.jpg" alt="http://gallery.tomtung.com/pictures/sliding-window.jpg" width="300" height="300" /></h1>
<h1 style="text-align: center;">窗口（超级版）</h1>
<p style="text-align: center;">时间限制:5000 ms   内存限制:65535 KB</p>
<h2>描述</h2>
<p>有一串整数在排队……</p>
<p>有N个整数，你有一个可以框住M个连续段整数的木框，现在你想知道，对于这个队列中任意的连续M个整数，最大和最小的整数是哪个？</p>
<p>例：(M大小的窗口向右滑动)</p>
<pre>1 2 3 2 1   M=2
1 2    MAX 2  MIN 1
2 3    MAX 3  MIN 2
3 2    MAX 3  MIN 2
2 1    MAX 2  MIN 1
</pre>
<p>最后需要输出的是两行：</p>
<pre>1 2 2 1
2 3 3 2
</pre>
<h2>输入</h2>
<p>第一行包含一个整数T，表示有T组测试数据；<br />
以下每组测试数据格式：<br />
第一行包含2个整数N,M表示有N个整数在排队，取连续M个整数。<br />
第二行包含N个整数。<br />
其中N不大于1,000,000，M不大于N。</p>
<h2>输出</h2>
<p>按照题目描述格式输出结果，第一行为MIN，第二行为MAX。</p>
<h2>样例输入</h2>
<pre>1
5 2
1 2 3 2 1
</pre>
<h2>样例输出</h2>
<pre>1 2 2 1
2 3 3 2
</pre>
<h2>提示</h2>
<p>注意数据规模！</p>
<h2>问题来源</h2>
<p>软件学院07级数据结构第二次测试</p>
<h2>题解</h2>
<p>很久不考虑算法问题了的说……当然也好久不写解题报告了。上面这题让我体会到久违了的思考的乐趣（i.e.我废掉好久了&gt;_&lt;）</p>
<p>最显然的解法是利用平衡树始终保持木框内M个数的有序状态，大体是O(NlogM)的复杂度。这个不用多说。</p>
<p>问题是：能否找到O(N)的解法？在读下去之前你可以好好想想。</p>
<p>我纠结了好久，终于……也没想出来- &#8211; 尽管想出很多优化，终究还是不能达到要求。网上搜了下，看到 CS大牛csdn 上有人给出了一个解法（你也可以在读完全文后再回头看这一段）：</p>
<blockquote><p>是可以到o(n);</p>
<p>编程之美上有一个类似的问题:&#8221;队列中取最大值操作问题&#8221;;<br />
实际上窗口移动就相当于对队列做了一次出队与入队操作，所以lz这道题可以套用该解法；</p>
<p>书上是使用两个栈来模拟队列，假设为分别A,B;<br />
1)当入队的时候，push A；<br />
2)当出队的时候,<br />
a)若B非空,pop B,<br />
b)若B为空，则先将A中的元素依次pop并push到B,再pop B;<br />
这样,就使用两个栈达到了队列的功能;</p>
<p>同时,对于单个栈，由于pop,push都是在栈顶进行的，所以每个栈都可以方便地维护自己的最<br />
大值与最小值在栈内的索引；<br />
以最大值为例；<br />
用max_idx保存栈内最大值的索引;<br />
另使用一个跟栈的最大长度一样的数组idx,idx[i]表示栈的索引范围在0到i-1的元素中的最<br />
大值的索引为idx[i];<br />
1) 当push的时候，比较栈顶元素与栈的已保存的最大值，<br />
a) 若栈顶元素大于已保存的最大值,那么idx[top]=max_idx,max_idx=top;<br />
b) 若栈顶元素不大于已保存的最大值,那么idx[top]=max_idx(书上是idx[top]=-1);<br />
2) 当pop的时候，max_idx=idx[top](书上是先比较top与max_idx，若top==max_idx,则<br />
max_idx=idx[top]);</p>
<p>具体到这个题目；<br />
可以使用两个长度为m的栈来模拟窗口；<br />
1)将前m个元素依次push到栈A;<br />
2)移动窗口就相当于分别进行pop B　与　push A操作;<br />
3) 窗口的最大值==max[A.items[A.max_idx]),B.items[B.max_idx])]；</p>
<p>由于每个元素最多进入两栈各一次；<br />
所以总的复杂度是o(n)的;</p></blockquote>
<p>这个解法的确可行，但描述仍不直观。为什么两个栈暧昧地眉来眼去一番，就在O(N)时间内把问题解决了呢？褪去实现上的种种细节，从更高的角度观察这个算法，它的思路是怎么样的呢？</p>
<p>和冬冬讨论了半天，似乎找到了一个比较靠近此算法根本动机的理解方向。如下：</p>
<h3>一、简化</h3>
<p>此问题中，框的左端和右端同时在向右移动。这时，要在任意时刻用O(1)的时间获得框内最小值（最大值同理，故仅以最小值为例）并不容易。但是，如果假设这个框是可伸缩的，将其一端固定，仅移动另外一端，任意时刻能否在O(1)的时间内获得最小值呢？</p>
<p>稍加思考，就发现要找到这样的算法是很容易的（事实上在我最初考虑时，就是试图在这样一个算法的基础上进行优化的）。</p>
<p>假如这个框是左端固定，右端不断向右移动的（称之为<em>左定右动框</em>）。对于框内的每个数，有一个对应指针指向框内它左边（包括自身）所有数中最小者。这样，框内最小值就是框内最右端元素对应的指针所指向的元素。如在下图中，最小元素就是右端7对应指针所指向的元素6。</p>
<div class="wp-caption aligncenter" style="width: 499px"><img title="http://gallery.tomtung.com/pictures/bhoj-10235_1.png" src="http://gallery.tomtung.com/pictures/bhoj-10235_1.png" alt="http://gallery.tomtung.com/pictures/bhoj-10235_1.png" width="489" height="127" /><p class="wp-caption-text">min = 6</p></div>
<p>当框的右端向右扩展时，可以通过递推获得新元素对应指针应指向的元素。以上图为例。加入2时，由7对应的指针可知原框中最小值为6，而6&gt;2，所以新元素2对应的指针应指向自己。</p>
<div class="wp-caption aligncenter" style="width: 497px"><img title="http://gallery.tomtung.com/pictures/bhoj-10235_2.png" src="http://gallery.tomtung.com/pictures/bhoj-10235_2.png" alt="http://gallery.tomtung.com/pictures/bhoj-10235_2.png" width="487" height="125" /><p class="wp-caption-text">min = 2</p></div>
<p>加入8时，由2的指针知原框中最小值为2，而2&lt;8，所以新元素8对应指针应指向2的指针所指向的元素2。</p>
<div class="wp-caption aligncenter" style="width: 500px"><img title="http://gallery.tomtung.com/pictures/bhoj-10235_3.png" src="http://gallery.tomtung.com/pictures/bhoj-10235_3.png" alt="http://gallery.tomtung.com/pictures/bhoj-10235_3.png" width="490" height="128" /><p class="wp-caption-text">min = 2</p></div>
<p>其余如法炮制。</p>
<div class="wp-caption aligncenter" style="width: 501px"><img title="http://gallery.tomtung.com/pictures/bhoj-10235_4.png" src="http://gallery.tomtung.com/pictures/bhoj-10235_4.png" alt="http://gallery.tomtung.com/pictures/bhoj-10235_4.png" width="491" height="129" /><p class="wp-caption-text">min = 2</p></div>
<p>可见，在框左端固定、右端不断扩展时，任意时刻都能在常数时间内确定框内元素的最小值。（不仅如此，即使需要让右端向左收缩，也能在常数时间内，通过最右端元素指针获得得到收缩后框内所剩元素的最小值。） 整个过程演示如下（先扩张后收缩）：</p>
<p><img class="alignnone" title="http://gallery.tomtung.com/pictures/bhoj-10235_5.gif" src="http://gallery.tomtung.com/pictures/bhoj-10235_5.gif" alt="http://gallery.tomtung.com/pictures/bhoj-10235_5.gif" width="496" height="192" /></p>
<p>演示中的收缩操作在当前问题中并无必要。演示出来是为了说明无论右端如何移动，只要左端不动，就可以在任意时刻立刻得到最小值。同时也是为了与下面一个演示保持一致。</p>
<p>如果一个框右端固定，左端收缩（称之为<em>右定左动框</em>），也可以在任意时刻花费常数时间获得框内的最小元素。过程和上面左右对称。具体地说，每个元素对应一个指针，指向框内它右边（包括自身）所有数中最小者。首先需要从右到左计算出各个元素对应的指针。这个过程类似于将框的左端由右向左扩展。计算完毕后就可以在收缩左端的过程中在常数时间内获得最小元素了。</p>
<p>演示如下（先扩张后收缩，可以看到完全和上面对称）：</p>
<p><img class="alignnone" title="http://gallery.tomtung.com/pictures/bhoj-10235_6.gif" src="http://gallery.tomtung.com/pictures/bhoj-10235_6.gif" alt="http://gallery.tomtung.com/pictures/bhoj-10235_6.gif" width="495" height="170" /></p>
<p>对于当前问题，在“扩张”过程中并不需要求最小值，而仅仅需要计算出指针来为收缩过程作准备。这里在全过程中标注出最小值是为了说明任意时刻都有能力得到它，也为了与上一个演示保持一致。</p>
<p>上面拉拉杂杂说了一堆，只为了说明：<strong>如果框的一端固定，仅移动另外一端，则在此过程中可以仅花费常数时间获得框内的最小元素。针对左定右移、右定左移两种情况的算法是彼此对称的。</strong></p>
<p>最后顺带提一点实现细节，希望不会影响你对整体的理解。上面所使用的指针也可以用索引号来代替，这里使用指针是为了显得更形象。事实上，不保存索引或指针而直接保存最小的“值”也是可行的，但是并不推荐。设想，如果每个元素不是数而是四五米长的字符串（&gt;_&lt;），偏序关系使用字符串长度的比较，那么如果不保存指针/索引而保存值，所带来的元素复制开销恐怕不是你想要的。</p>
<h3>二、推广</h3>
<p>怎样把上面只允许一端移动的解法推广到同时允许两端移动呢？</p>
<p>一种想法是，将以上二者合二为一。具体地说，将框内的数看成左右两部分，左边一部分看成右定左动的，右边一部分看成左定右动的。这样，在左边收缩、右边扩张的过程中，左右两部分都可以在常数时间内得到最小元素。取两个最小元素中更小者，即为整个框中的最小元素。</p>
<p>OK，这就是O(N)算法的基本思路了。回到原题目，下面看一个例子。</p>
<p>假设我们要处理的是这么一串数：</p>
<pre>3 1 4 1 5 9 2 6 5 3 5 8 9 7 9 3
</pre>
<p>框的大小为5。</p>
<p>首先，把最先被框住的5个数看成被一个右定左动的框框住，这5个数右边看成是一个空的左定右动框。当然，首先需要计算出开始这5个元素对应的指针：</p>
<p><img class="alignnone" title="http://gallery.tomtung.com/pictures/bhoj-10235_7.gif" src="http://gallery.tomtung.com/pictures/bhoj-10235_7.gif" alt="http://gallery.tomtung.com/pictures/bhoj-10235_7.gif" width="477" height="96" /></p>
<p>接下来，左边的右定左动框收缩，右边的左定右动框扩张。在此过程中，框在框中的M个元素的最小者可以在常数时间内获得。</p>
<p><img class="alignnone" title="http://gallery.tomtung.com/pictures/bhoj-10235_8.gif" src="http://gallery.tomtung.com/pictures/bhoj-10235_8.gif" alt="http://gallery.tomtung.com/pictures/bhoj-10235_8.gif" width="477" height="96" /></p>
<p>到左边部分收缩至空时就没有办法继续收缩了。怎么继续这个过程呢？</p>
<p>解决方法是，将右端含有M个元素的左定右动框重新处理为右定左动框，并在右边再放上一个空左定右动框：</p>
<p><img class="alignnone" title="http://gallery.tomtung.com/pictures/bhoj-10235_9.gif" src="http://gallery.tomtung.com/pictures/bhoj-10235_9.gif" alt="http://gallery.tomtung.com/pictures/bhoj-10235_9.gif" width="477" height="96" /></p>
<p>接下来继续这个过程就行了。下面是全过程的演示：</p>
<p><img class="alignnone" title="http://gallery.tomtung.com/pictures/bhoj-10235_X.gif" src="http://gallery.tomtung.com/pictures/bhoj-10235_X.gif" alt="http://gallery.tomtung.com/pictures/bhoj-10235_X.gif" width="477" height="96" /></p>
<p>你可能会对每次将右边的左定右动框重新处理为左边的右定左动框（有点晕- -）时计算指针造成的额外开销存有疑虑。然而，每次重新计算时需要处理M个元素的指针，每隔M个元素才会进行一次这样的处理，N/M*M仍然为N，并不会升高复杂度的阶。换句话说，每个元素至多被重新计算两次指针，所以总体复杂度仍然为O(N)。</p>
<p>以上就是整个解法。</p>
<p>三、关于栈</p>
<p>我们可以把右定左动框看成是一个底在右顶在左的栈，左端向左扩张看成是向栈push元素，左端向右收缩看成是栈在pop元素。左定右动框亦然。前面提到，两种框上的操作是对称的；如果把它们都看成栈，则push和pop时的操作完全一致。这样就将两种框对称的操纵统一在了同一个数据结构上，使得实现起来更为简洁。</p>
<p>这就是对开始所引用那段算法描述的解释。</p>
<p>四、问题的扩展</p>
<p>更进一步，我们还可以使用类似的方法处理此问题的变种。如，对于一个队列，随意进行入队出队操作（相当于木框的宽度不再固定为M，其两端也不同时向右移动），求在任意时刻队列中的最小元素。或者，一个双端队列，在两端随意进行入队出队操作，求任意时刻队列中的最小元素。等等。</p>
<p>最后顺便一提，在搜索此题资料时发现这个问题似乎涉及到数据流的处理算法。这个方面我一无所知，没办法站在那样一个高度阐述，抱歉。</p>

	<br />Tags：<a href="http://blog.tomtung.com/tag/%e6%bb%91%e5%8a%a8%e7%aa%97%e5%8f%a3/" title="滑动窗口" rel="tag">滑动窗口</a>, <a href="http://blog.tomtung.com/tag/%e7%ae%97%e6%b3%95/" title="算法" rel="tag">算法</a>, <a href="http://blog.tomtung.com/tag/%e8%a7%a3%e9%a2%98%e6%8a%a5%e5%91%8a/" title="解题报告" rel="tag">解题报告</a><br />

	<br /><h3>Related Posts</h3>
	<ul class="st-related-posts">
	<li><a href="http://blog.tomtung.com/2007/06/zoj1610-count-the-colors/" title="[ZOJ1610]Count the Colors (2007-06-24)">[ZOJ1610]Count the Colors</a> (0)</li>
	<li><a href="http://blog.tomtung.com/2007/07/noi01-eat/" title="[NOI 01][POJ1182] 食物链 (2007-07-08)">[NOI 01][POJ1182] 食物链</a> (0)</li>
	<li><a href="http://blog.tomtung.com/2007/06/uva-258-mirror-maze/" title="[Uva #258] Mirror Maze (2007-06-06)">[Uva #258] Mirror Maze</a> (0)</li>
	<li><a href="http://blog.tomtung.com/2007/03/usaco-ordered-fractions/" title="[USACO]Ordered Fractions (2007-03-03)">[USACO]Ordered Fractions</a> (0)</li>
	<li><a href="http://blog.tomtung.com/2007/05/noi99-chess/" title="[NOI99]棋盘分割(Chessboard Division) (2007-05-26)">[NOI99]棋盘分割(Chessboard Division)</a> (0)</li>
</ul>

]]></content:encoded>
			<wfw:commentRss>http://blog.tomtung.com/2009/03/bhoj-10235/feed/</wfw:commentRss>
		<slash:comments>7</slash:comments>
		</item>
		<item>
		<title>小试模板元编程</title>
		<link>http://blog.tomtung.com/2009/03/try-template-meta-programming/</link>
		<comments>http://blog.tomtung.com/2009/03/try-template-meta-programming/#comments</comments>
		<pubDate>Sun, 01 Mar 2009 06:37:57 +0000</pubDate>
		<dc:creator>逆铭</dc:creator>
				<category><![CDATA[新长征路上的代码]]></category>
		<category><![CDATA[cpp]]></category>
		<category><![CDATA[模板元编程]]></category>

		<guid isPermaLink="false">http://blog.tomtung.com/2009/03/%e5%b0%8f%e8%af%95%e6%a8%a1%e6%9d%bf%e5%85%83%e7%bc%96%e7%a8%8b/</guid>
		<description><![CDATA[很久不更新了，再水一下吧。 前两天新开的数据结构课布置上机作业，里面又出现了不知道之前出现过多少次的输出质数。每次都交表也会很乏味，所以……这次还是要交表 &#8211; -&#124;&#124;&#124; 不过要玩一点小花样——让编译器在编译期把质数表算出来。 这个当然涉及到一点模板元编程了。之前虽然看了《Effective C++》里关于模板元的简介挺感兴趣，但看到《学习C++：实践者的方法》里告诫不要在这种“20%场景下的复杂性”上白花时间（“这些细节或技术在日常编程中极少用到，尤其是各种语言缺陷衍生出来的workarounds，构成了一个巨大的长尾……绝大多数只在库开发当中需要用到”），我一直对模板元编程敬而远之。这次也只是消遣一下，并无深入学习的打算。 以下是代码： #include &#60;iostream&#62; #include &#60;vector&#62; #include &#60;iterator&#62; #include &#60;algorithm&#62; std::vector&#60;int&#62; Primes; template &#60;int toTest, int factor&#62; // factor should be odd class IsPrime { public: enum { result = ( toTest == 2 ) &#124;&#124; toTest % factor &#38;&#38; IsPrime &#60; toTest , factor - 2 &#62;::result }; [...]]]></description>
			<content:encoded><![CDATA[<p>很久不更新了，再水一下吧。</p>
<p>前两天新开的数据结构课布置上机作业，里面又出现了不知道之前出现过多少次的<a href="http://acm.buaa.edu.cn/oj/problem_show.php?c=99&amp;p=101330" target="_blank">输出质数</a>。每次都交表也会很乏味，所以……这次还是要交表 &#8211; -||| 不过要玩一点小花样——让编译器在编译期把质数表算出来。</p>
<p>这个当然涉及到一点<a href="http://zh.wikipedia.org/w/index.php?title=%E6%A8%A1%E6%9D%BF%E5%85%83%E7%B7%A8%E7%A8%8B&amp;variant=zh-cn" target="_blank">模板元编程</a>了。之前虽然看了《Effective C++》里关于模板元的简介挺感兴趣，但看到《<a href="http://blog.csdn.net/pongba/archive/2007/12/11/1930150.aspx" target="_blank">学习C++：实践者的方法</a>》里告诫不要在这种“20%场景下的复杂性”上白花时间<span style="color: #666666;">（“这些细节或技术在日常编程中极少用到，尤其是各种语言缺陷衍生出来的workarounds，构成了一个巨大的长尾……绝大多数只在库开发当中需要用到”）</span>，我一直对模板元编程敬而远之。这次也只是消遣一下，并无深入学习的打算。</p>
<p>以下是代码：</p>
<pre class="brush:c++">#include &lt;iostream&gt;
#include &lt;vector&gt;
#include &lt;iterator&gt;
#include &lt;algorithm&gt;

std::vector&lt;int&gt; Primes;

template &lt;int toTest, int factor&gt; // factor should be odd
class IsPrime
{
   public:
      enum {
         result = ( toTest == 2 )
         ||  toTest % factor
          &amp;&amp; IsPrime &lt; toTest , factor - 2 &gt;::result
      };
};

template&lt;int toTest&gt;
class IsPrime&lt;toTest, 1&gt;
{
   public:
      enum {result = ( toTest == 2 )  || ( toTest &amp; 1 ) };
};

template &lt;int upperBound&gt; // upperBound should be odd or 2
class PrimePick : public PrimePick &lt; upperBound - 2 &gt;
{
   public:
      enum {
         isPrime = IsPrime &lt; upperBound, ( upperBound &gt;&gt; 1 ) | 1 &gt;::result
      };
      PrimePick&lt;upperBound&gt;() {
         if ( isPrime )
            Primes.push_back ( upperBound );
      }
};

template&lt;&gt;
class PrimePick&lt;2&gt;
{
   public:
      PrimePick&lt;2&gt;() {
         Primes.push_back ( 2 );
      }
};

template&lt;&gt;
class PrimePick&lt;1&gt; : public PrimePick&lt;2&gt; {};

int main()
{
   PrimePick&lt;999&gt; PrimeInitializer;

   int m;
   std::cin &gt;&gt; m;
   for ( int i = 0; i &lt; m; ++i ) {
      int n;
      std::cin &gt;&gt; n;

      std::vector&lt;int&gt;::iterator end = Primes.begin();
      while ( end != Primes.end() &amp;&amp; *end &lt;= n )
         ++end;

      std::ostream_iterator&lt;int&gt; out ( std::cout, " " );
      std::copy ( Primes.begin(), end, out );
      std::cout &lt;&lt; std::endl;
   }
}
</pre>
<p>原理比较简单，主函数第一行初始化 PrimeInitializer 时，由于继承关系，构造函数会层层递归调用，从里至外利用另一个模板类 IsPrime 判断模板参数是否是质数，并把测试确认的质数放进一个 vector 里，这样就得到了编译期计算出的质数表。IsPrime 则使用最原始的试除方法判断质数。代码里一些写得很纠结的地方，一方面是为了尽量简化计算，减少编译时间，另一方面更主要是因为 g++ 默认最大只能实例化500层模板，以题目的数据规模（1000）不纠结一下编译器会抱怨。</p>
<p>这个程序……很不幸没能 AC。Buaa 的 OJ 在设计时估计就考虑了这种情况，对编译时间做出了限制，在编译20秒左右还没编译成功时会结束编译，直接判 <a href="http://acm.buaa.edu.cn/oj/status.php?problem_id=101330&amp;user_id=38211427&amp;result=-1&amp;c=99&amp;viewall=1" target="_blank">CE</a>……这个程序在我的系统上编译需要20分钟(VC 编译)到半个小时以上( g++ 编译)的时间，冬冬的64位 Ubuntu 上用 g++ 编译也需要将近10分钟时间。如果OJ不做这个限制估计会像当年vijos一样pending很多页吧……</p>
<p>恩，第一次模板元编程经历就以这样悲惨收场了 T_T</p>
<p>更新：</p>
<p>vijos<a href="http://fanfou.com/statuses/RNTyv6omdrE" target="_blank">果然被卡住了</a> &#8211; -</p>
<p><img class="alignnone" title="http://gallery.tomtung.com/pictures/vijos-puppy-stuck.jpg" src="http://gallery.tomtung.com/pictures/vijos-puppy-stuck.jpg" alt="http://gallery.tomtung.com/pictures/vijos-puppy-stuck.jpg" width="621" height="505" /></p>
<p>可怜的puppy</p>
<p>已作为bug报告。</p>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 84px; width: 1px; height: 1px; overflow: hidden;"><span style="font-family: monospace;"><span style="color: #a020f0;">#include</span> <span style="color: #ff00ff;">&lt;iostream&gt;</span><br />
<span style="color: #a020f0;">#include</span> <span style="color: #ff00ff;">&lt;vector&gt;</span><br />
<span style="color: #a020f0;">#include</span> <span style="color: #ff00ff;">&lt;iterator&gt;</span><br />
<span style="color: #a020f0;">#include</span> <span style="color: #ff00ff;">&lt;algorithm&gt;</span></p>
<p>std::vector&lt;<span style="color: #2e8b57;"><strong>int</strong></span>&gt; Primes;</p>
<p><span style="color: #2e8b57;"><strong>template</strong></span> &lt;<span style="color: #2e8b57;"><strong>int</strong></span> toTest, <span style="color: #2e8b57;"><strong>int</strong></span> factor&gt; <span style="color: #0000ff;">// factor should be odd</span><br />
<span style="color: #2e8b57;"><strong>class</strong></span> IsPrime<br />
{<br />
<span style="color: #804040;"><strong>public</strong></span>:<br />
<span style="color: #2e8b57;"><strong>enum</strong></span> {<br />
result = ( toTest == <span style="color: #ff00ff;">2</span> )<br />
||  toTest % factor<br />
&amp;&amp; IsPrime &lt; toTest , factor &#8211; <span style="color: #ff00ff;">2</span> &gt;::result<br />
};<br />
};</p>
<p><span style="color: #2e8b57;"><strong>template</strong></span>&lt;<span style="color: #2e8b57;"><strong>int</strong></span> toTest&gt;<br />
<span style="color: #2e8b57;"><strong>class</strong></span> IsPrime&lt;toTest, <span style="color: #ff00ff;">1</span>&gt;<br />
{<br />
<span style="color: #804040;"><strong>public</strong></span>:<br />
<span style="color: #2e8b57;"><strong>enum</strong></span> {result =  ( toTest == <span style="color: #ff00ff;">2</span> )  || ( toTest &amp; <span style="color: #ff00ff;">1</span> ) };<br />
};</p>
<p><span style="color: #2e8b57;"><strong>template</strong></span> &lt;<span style="color: #2e8b57;"><strong>int</strong></span> upperBound&gt; <span style="color: #0000ff;">// upperBound should be odd or 2</span><br />
<span style="color: #2e8b57;"><strong>class</strong></span> PrimePick : <span style="color: #804040;"><strong>public</strong></span> PrimePick &lt; upperBound &#8211; <span style="color: #ff00ff;">2</span> &gt;<br />
{<br />
<span style="color: #804040;"><strong>public</strong></span>:<br />
<span style="color: #2e8b57;"><strong>enum</strong></span> {<br />
isPrime = IsPrime &lt; upperBound, ( upperBound &gt;&gt; <span style="color: #ff00ff;">1</span> ) | <span style="color: #ff00ff;">1</span> &gt;::result<br />
};<br />
PrimePick&lt;upperBound&gt;() {<br />
<span style="color: #804040;"><strong>if</strong></span> ( isPrime )<br />
Primes.push_back (  upperBound );<br />
}<br />
};</p>
<p><span style="color: #2e8b57;"><strong>template</strong></span>&lt;&gt;<br />
<span style="color: #2e8b57;"><strong>class</strong></span> PrimePick&lt;<span style="color: #ff00ff;">2</span>&gt;<br />
{<br />
<span style="color: #804040;"><strong>public</strong></span>:<br />
PrimePick&lt;<span style="color: #ff00ff;">2</span>&gt;() {<br />
Primes.push_back ( <span style="color: #ff00ff;">2</span> );<br />
}<br />
};</p>
<p><span style="color: #2e8b57;"><strong>template</strong></span>&lt;&gt;<br />
<span style="color: #2e8b57;"><strong>class</strong></span> PrimePick&lt;<span style="color: #ff00ff;">1</span>&gt; : <span style="color: #804040;"><strong>public</strong></span> PrimePick&lt;<span style="color: #ff00ff;">2</span>&gt; {};</p>
<p><span style="color: #2e8b57;"><strong>int</strong></span> main()<br />
{<br />
PrimePick&lt;<span style="color: #ff00ff;">999</span>&gt; PrimeInitializer;</p>
<p><span style="color: #2e8b57;"><strong>int</strong></span> m;<br />
std::cin &gt;&gt; m;<br />
<span style="color: #804040;"><strong>for</strong></span> ( <span style="color: #2e8b57;"><strong>int</strong></span> i = <span style="color: #ff00ff;">0</span>;  i &lt; m; ++i ) {<br />
<span style="color: #2e8b57;"><strong>int</strong></span> n;<br />
std::cin &gt;&gt; n;</p>
<p>std::vector&lt;<span style="color: #2e8b57;"><strong>int</strong></span>&gt;::iterator end  = Primes.begin();<br />
<span style="color: #804040;"><strong>while</strong></span> ( end != Primes.end() &amp;&amp; *end &lt;= n )<br />
++end;</p>
<p>std::ostream_iterator&lt;<span style="color: #2e8b57;"><strong>int</strong></span>&gt; out ( std::cout, <span style="color: #ff00ff;">&#8221; &#8220;</span> );<br />
std::copy ( Primes.begin(), end, out );<br />
std::cout &lt;&lt; std::endl;<br />
}<br />
}</p>
<p></span></div>

	<br />Tags：<a href="http://blog.tomtung.com/tag/cpp/" title="cpp" rel="tag">cpp</a>, <a href="http://blog.tomtung.com/tag/%e6%a8%a1%e6%9d%bf%e5%85%83%e7%bc%96%e7%a8%8b/" title="模板元编程" rel="tag">模板元编程</a><br />

	<br /><h3>Related Posts</h3>
	<ul class="st-related-posts">
	<li><a href="http://blog.tomtung.com/2010/02/sinablog2wordpress/" title="sinablog2wordpress：从新浪博客搬家到WordPress (2010-02-06)">sinablog2wordpress：从新浪博客搬家到WordPress</a> (17)</li>
	<li><a href="http://blog.tomtung.com/2008/08/cpp-primer-reding-notes-index/" title="C++ Primer 读书笔记 &#8211; 索引 (2008-08-07)">C++ Primer 读书笔记 &#8211; 索引</a> (2)</li>
	<li><a href="http://blog.tomtung.com/2008/08/cpp-primer-reding-notes-chapter6/" title="C++ Primer 读书笔记 &#8211; 第六章 (2008-08-24)">C++ Primer 读书笔记 &#8211; 第六章</a> (1)</li>
	<li><a href="http://blog.tomtung.com/2008/08/cpp-primer-reding-notes-chapter5/" title="C++ Primer 读书笔记 &#8211; 第五章 (2008-08-23)">C++ Primer 读书笔记 &#8211; 第五章</a> (1)</li>
	<li><a href="http://blog.tomtung.com/2008/08/cpp-primer-reding-notes-chapter7/" title="C++ Primer 读书笔记 &#8211; 第七章 (2008-08-28)">C++ Primer 读书笔记 &#8211; 第七章</a> (0)</li>
</ul>

]]></content:encoded>
			<wfw:commentRss>http://blog.tomtung.com/2009/03/try-template-meta-programming/feed/</wfw:commentRss>
		<slash:comments>7</slash:comments>
		</item>
		<item>
		<title>某无线信号</title>
		<link>http://blog.tomtung.com/2008/12/a-very-jiong-wireless-hotspot/</link>
		<comments>http://blog.tomtung.com/2008/12/a-very-jiong-wireless-hotspot/#comments</comments>
		<pubDate>Tue, 09 Dec 2008 15:01:47 +0000</pubDate>
		<dc:creator>逆铭</dc:creator>
				<category><![CDATA[生活在此处]]></category>
		<category><![CDATA[图片]]></category>
		<category><![CDATA[搞笑]]></category>

		<guid isPermaLink="false">http://blog.tomtung.com/2008/12/%e6%9f%90%e6%97%a0%e7%ba%bf%e4%bf%a1%e5%8f%b7/</guid>
		<description><![CDATA[寝室搜到的某无线网信号，来源不明。猛击看大图。 这么牛的名字竟然是WEP……只可惜我的网卡貌似不能抓包，残念 Tags：图片, 搞笑 Related Posts 我的壁纸 (1) 恶搞巴赫：Deconstructing Johann (0) 做了两张404的图 (6) 谁发明了递归 (5)]]></description>
			<content:encoded><![CDATA[<p><a href="http://gallery.tomtung.com/pictures/wifi-f__k-and-ref__k.jpg"><img class="aligncenter" title="http://gallery.tomtung.com/pictures/wifi-f__k-and-ref__k.jpg" src="http://gallery.tomtung.com/pictures/wifi-f__k-and-ref__k.jpg" alt="http://gallery.tomtung.com/pictures/wifi-f__k-and-ref__k.jpg" width="635" height="421" /></a></p>
<p>寝室搜到的某无线网信号，来源不明。猛击看大图。</p>
<p>这么牛的名字竟然是WEP……只可惜我的网卡貌似不能抓包，残念</p>

	<br />Tags：<a href="http://blog.tomtung.com/tag/%e5%9b%be%e7%89%87/" title="图片" rel="tag">图片</a>, <a href="http://blog.tomtung.com/tag/%e6%90%9e%e7%ac%91/" title="搞笑" rel="tag">搞笑</a><br />

	<br /><h3>Related Posts</h3>
	<ul class="st-related-posts">
	<li><a href="http://blog.tomtung.com/2006/12/wallpaper/" title="我的壁纸 (2006-12-31)">我的壁纸</a> (1)</li>
	<li><a href="http://blog.tomtung.com/2008/03/deconstructing-johann/" title="恶搞巴赫：Deconstructing Johann (2008-03-01)">恶搞巴赫：Deconstructing Johann</a> (0)</li>
	<li><a href="http://blog.tomtung.com/2010/02/404/" title="做了两张404的图 (2010-02-09)">做了两张404的图</a> (6)</li>
	<li><a href="http://blog.tomtung.com/2007/10/who-invented-recursion/" title="谁发明了递归 (2007-10-18)">谁发明了递归</a> (5)</li>
</ul>

]]></content:encoded>
			<wfw:commentRss>http://blog.tomtung.com/2008/12/a-very-jiong-wireless-hotspot/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>1 with 1 &amp; 1 with 1</title>
		<link>http://blog.tomtung.com/2008/11/1-with-1-1-with-1/</link>
		<comments>http://blog.tomtung.com/2008/11/1-with-1-1-with-1/#comments</comments>
		<pubDate>Mon, 10 Nov 2008 16:00:00 +0000</pubDate>
		<dc:creator>逆铭</dc:creator>
				<category><![CDATA[生活在此处]]></category>
		<category><![CDATA[光棍节]]></category>
		<category><![CDATA[杂谈]]></category>

		<guid isPermaLink="false">http://blog.tomtung.com/2008/11/1-with-1-1-with-1/</guid>
		<description><![CDATA[今天是光棍节，我给大家拜个早年…… 记得几年前听CRI时，某日恰逢光棍节，节目里老外特别无辜地问，为什么要把11月11号定为光棍节呢？看起来不像四个 single 啊，反倒像两对 couple…… 那么，值此佳节，就让我在遥远荒凉的北航寺祝福大家早点从一 single 一 single 的变成一 couple 一 couple 的吧～～～ Tags：光棍节, 杂谈 Related Posts N / A]]></description>
			<content:encoded><![CDATA[<div style="text-align: center;"><img class="alignnone" title="http://gallery.tomtung.com/pictures/11_11_youtiao_mantou.jpg" src="http://gallery.tomtung.com/pictures/11_11_youtiao_mantou.jpg" alt="" width="300" height="300" /></div>
<p>今天是光棍节，我给大家拜个早年……</p>
<p>记得几年前听CRI时，某日恰逢光棍节，节目里老外特别无辜地问，为什么要把11月11号定为光棍节呢？看起来不像四个 single 啊，反倒像两对 couple……</p>
<p>那么，值此佳节，就让我在遥远荒凉的北航寺祝福大家早点从一 single 一 single 的变成一 couple 一 couple 的吧～～～</p>

	<br />Tags：<a href="http://blog.tomtung.com/tag/%e5%85%89%e6%a3%8d%e8%8a%82/" title="光棍节" rel="tag">光棍节</a>, <a href="http://blog.tomtung.com/tag/%e6%9d%82%e8%b0%88/" title="杂谈" rel="tag">杂谈</a><br />

	<br /><h3>Related Posts</h3>
	<ul class="st-related-posts">
	<li>N / A</li>
	</ul>

]]></content:encoded>
			<wfw:commentRss>http://blog.tomtung.com/2008/11/1-with-1-1-with-1/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>初来北航一个多月的零零碎碎</title>
		<link>http://blog.tomtung.com/2008/10/first-month-in-buaa/</link>
		<comments>http://blog.tomtung.com/2008/10/first-month-in-buaa/#comments</comments>
		<pubDate>Tue, 28 Oct 2008 16:19:15 +0000</pubDate>
		<dc:creator>逆铭</dc:creator>
				<category><![CDATA[生活在此处]]></category>
		<category><![CDATA[buaa]]></category>
		<category><![CDATA[cpp]]></category>
		<category><![CDATA[csharp]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[mstc]]></category>
		<category><![CDATA[巴赫]]></category>
		<category><![CDATA[开源]]></category>

		<guid isPermaLink="false">http://blog.tomtung.com/2008/10/%e5%88%9d%e6%9d%a5%e5%8c%97%e8%88%aa%e4%b8%80%e4%b8%aa%e5%a4%9a%e6%9c%88%e7%9a%84%e9%9b%b6%e9%9b%b6%e7%a2%8e%e7%a2%8e/</guid>
		<description><![CDATA[几乎持续忙碌中。得空扯两句。 除了多了不少限制，生活和来之前差不多。食堂挺好。大运村很贵，不过想想也就4年而已，也就无所谓了。没阳台，很不方便。房间里有小强出没让人很不爽，不过比去年在福州一中见到的要小多了，也没那么嚣张。还好能有自己的书桌，用无线路由上着网，看着书，其实还是很惬意的。恩……我其实还是很容易满足的。 室友都很好很强大，让我觉得笨鸟先飞格外必要。有点后悔假期没有看看数学，现在一周五节数学（三节高数两节离散）让人有点吃不消。尤其是高数，大半年没有怎么做过这种题，现在看着它们感觉脑子像卡住了一样……英语依旧荒废中，腾不出手来处理，所幸 RP 足够好进了 B 班。专业方面，终于还是失去了第二遍读完 C++ Primer 的耐心，这份读书笔记也不知何年何月才能完成了。转而开始看 Effective C++，看完那三本 Effective 就不再在 C++ 上过多纠缠了，什么模板元之类的都省省吧……这门语言的复杂程度已经足够让我望而却步了，抱着厚书啃啊啃也啃不完总不是办法，还是今后在实践中逐渐积累吧。《Pro C# with .NET 3.0 Special Edition》刚到第八章，《Head First Design Patterns》也到第八章。它们的阅读进度都由于要顾及数学被严重拖慢了，很让人郁闷。至于其它七七八八的科目，什么语文啊计算机导论啊历史啊政治啊航空航天概论啊，都在摸着石头瞎混中，但愿能混过去…… 没参加任何类似学生会或者班委会的组织。社团仅仅参加了 MSTC（微软技术俱乐部），并且顺利混进 .NET 组。据冬冬说，我在面试时极为成功的装X竟然让某巨牛印象深刻并颇为赞许，这让我相当有成就感。如果顺利，不太久会参与项目开发。看来我放假时决定学 C# 还算明智。现在感觉 MSTC 还算不错。 本来准备参加的 GC（Google Camp）也顺利入围技术部，不过了解更多以后觉得很不靠谱，暂且退出免得浪费时间。 ACM/ICPC 终于还是没有去参加……恩，连新生的选拔赛都干脆没去。虽然这个决定是早在年初就做好的，心中还是免不了一丝不舍。希望我没有做出错误的选择。 之前参加了一次 Liunx of BUAA 北航小聚，用 Vista 的我只能拿本里的 andLinux 充数。群牛闪耀，气氛很融洽，更重要的是我和冬冬很幸运地遇到 Jesse，他是在北航举行的08年 Gnome 亚洲峰会（主页）北航方面的负责人，然后我们就高高兴兴地成了志愿者。记得是蒋天正还是谁给我们说，你们刚来没几天就能参加国际会议了~~ 作为技术上太水的人，我也就只能搬搬桌子、指个路什么的，以此为开源社区做点贡献了。顺带一提，这样一个技术会议的组织者竟然是 Emily 姐和 Pockey 姐两位女性，真是奇妙。会议很成功，这里有n多大家拍的照片。以此为契机，北航的开源社团似乎也即将成立，真是件好事。 [...]]]></description>
			<content:encoded><![CDATA[<p><img class="alignnone" title="http://gallery.tomtung.com/pictures/reminder_look_at_reminder_wall.jpg" src="http://gallery.tomtung.com/pictures/reminder_look_at_reminder_wall.jpg" alt="http://gallery.tomtung.com/pictures/reminder_look_at_reminder_wall.jpg" width="480" height="398" /></p>
<p>几乎持续忙碌中。得空扯两句。</p>
<p>除了多了不少限制，生活和来之前差不多。食堂挺好。大运村很贵，不过想想也就4年而已，也就无所谓了。没阳台，很不方便。房间里有小强出没让人很不爽，不过比去年在福州一中见到的要小多了，也没那么嚣张。还好能有自己的书桌，用无线路由上着网，看着书，其实还是很惬意的。恩……我其实还是很容易满足的。</p>
<p style="text-align: center;"><a href="http://gallery.tomtung.com/pictures/my_desk.jpg"><img class="aligncenter" title="http://gallery.tomtung.com/pictures/my_desk.jpg" src="http://gallery.tomtung.com/pictures/my_desk.jpg" alt="" width="625" height="470" /></a></p>
<p>室友都很好很强大，让我觉得笨鸟先飞格外必要。有点后悔假期没有看看数学，现在一周五节数学（三节高数两节离散）让人有点吃不消。尤其是高数，大半年没有怎么做过这种题，现在看着它们感觉脑子像卡住了一样……英语依旧荒废中，腾不出手来处理，所幸 RP 足够好进了 B 班。专业方面，终于还是失去了第二遍读完 C++ Primer 的耐心，这份<a href="http://blog.sina.com.cn/s/blog_4a443fd70100aq4s.html" target="_blank">读书笔记</a>也不知何年何月才能完成了。转而开始看 Effective C++，看完那三本 Effective 就不再在 C++ 上过多纠缠了，什么模板元之类的都省省吧……这门语言的复杂程度已经足够让我望而却步了，抱着厚书啃啊啃也啃不完总不是办法，还是今后在实践中逐渐积累吧。《<a href="http://www.douban.com/subject/2995420/" target="_blank">Pro C# with .NET 3.0 Special Edition</a>》刚到第八章，《<a href="http://www.douban.com/subject/1400656/" target="_blank">Head First Design Patterns</a>》也到第八章。它们的阅读进度都由于要顾及数学被严重拖慢了，很让人郁闷。至于其它七七八八的科目，什么语文啊计算机导论啊历史啊政治啊航空航天概论啊，都在摸着石头瞎混中，但愿能混过去……</p>
<p>没参加任何类似学生会或者班委会的组织。社团仅仅参加了 MSTC（微软技术俱乐部），并且顺利混进 .NET 组。据冬冬说，我在面试时极为成功的装X竟然让某巨牛印象深刻并颇为赞许，这让我相当有成就感。如果顺利，不太久会参与项目开发。看来我放假时决定学 C# 还算明智。现在感觉 MSTC 还算不错。</p>
<p>本来准备参加的 GC（Google Camp）也顺利入围技术部，不过了解更多以后觉得很不靠谱，暂且退出免得浪费时间。</p>
<p>ACM/ICPC 终于还是没有去参加……恩，连新生的选拔赛都干脆没去。虽然这个决定是早在年初就做好的，心中还是免不了一丝不舍。希望我没有做出错误的选择。</p>
<p><img class="alignnone" title="http://gallery.tomtung.com/pictures/gnome-asia-08.jpg" src="http://gallery.tomtung.com/pictures/gnome-asia-08.jpg" alt="" width="270" height="96" /></p>
<p><img src="http://gnome.asia/static/img/gnome.asia-logo-2008.21.96px.2.png" alt="" /></p>
<p>之前参加了一次 <a href="http://www.douban.com/event/10284206/" target="_blank">Liunx of BUAA 北航小聚</a>，用 Vista 的我只能拿本里的 <a href="http://www.andlinux.org/" target="_blank">andLinux </a>充数。群牛闪耀，气氛很融洽，更重要的是我和冬冬很幸运地遇到 <a href="http://www.douban.com/people/2988178/" target="_blank">Jesse</a>，他是在北航举行的08年 <a href="http://www.douban.com/event/10247550/" target="_blank">Gnome 亚洲峰会</a>（<a href="http://gnome.asia/" target="_blank">主页</a>）北航方面的负责人，然后我们就高高兴兴地成了志愿者。记得是蒋天正还是谁给我们说，你们刚来没几天就能参加国际会议了~~ 作为技术上太水的人，我也就只能搬搬桌子、指个路什么的，以此为开源社区做点贡献了。顺带一提，这样一个技术会议的组织者竟然是 Emily 姐和 Pockey 姐两位女性，真是奇妙。会议很成功，<a href="http://flickr.com/search/?w=all&amp;q=gnomeasia&amp;m=text" target="_blank">这里</a>有n多大家拍的照片。以此为契机，北航的开源社团似乎也即将成立，真是件好事。</p>
<p><img class="alignnone" title="http://gallery.tomtung.com/pictures/starker-bach-solo-cello-suites.jpg" src="http://gallery.tomtung.com/pictures/starker-bach-solo-cello-suites.jpg" alt="" width="499" height="472" /></p>
<p>一段时间听了很多碟。周董的新专辑还不如上一张，周导演果然没时间玩音乐了；JJ的新专辑安排很杂，不过整体质量还算不错。重新开始听原来没什么感觉的门德尔松无词歌。又开始迷巴赫，重听了以前没有特别留心感受的曲子，从大无开始，到小无，然后是钢琴的帕提塔、意大利协奏曲等等，并且各同时找好几个版本对照。上课路上看着阳光透过教学区树木的树冠，随着欢欣的库兰特舞跳动，或者眯起眼睛依着一首萨拉班德打一会儿瞌睡，觉得生活真是美好。托卡塔从耳旁流过时似乎可以提神，严谨紧凑的赋格似乎也会潜移默化地帮助思考。温暖且踏实的大调诠释着幸福，清冷或宁静的小调表达着自省，二者交替间很容易就在我的心室中共鸣回响起来。从不滥情的巴赫总能让人在忙碌中保持安稳，我每过一段时间似乎都会到巴赫这里停靠。每次少则一周多则一两个月，总能得到珍贵的体验。</p>
<p>恩……似乎这段时间值得说的就是这么多。瞎忙之中一切看起来都在向着好的方向发展，一些小麻烦还不足以影响心情。希望一切顺利。</p>
<p>最后，祝贺银男 Ghost 终于银了。祝高三各位大牛保送顺利。欢迎报考 BUAA。</p>

	<br />Tags：<a href="http://blog.tomtung.com/tag/buaa/" title="buaa" rel="tag">buaa</a>, <a href="http://blog.tomtung.com/tag/cpp/" title="cpp" rel="tag">cpp</a>, <a href="http://blog.tomtung.com/tag/csharp/" title="csharp" rel="tag">csharp</a>, <a href="http://blog.tomtung.com/tag/linux/" title="linux" rel="tag">linux</a>, <a href="http://blog.tomtung.com/tag/mstc/" title="mstc" rel="tag">mstc</a>, <a href="http://blog.tomtung.com/tag/bach/" title="巴赫" rel="tag">巴赫</a>, <a href="http://blog.tomtung.com/tag/%e5%bc%80%e6%ba%90/" title="开源" rel="tag">开源</a><br />

	<br /><h3>Related Posts</h3>
	<ul class="st-related-posts">
	<li><a href="http://blog.tomtung.com/2008/08/cpp-primer-reding-notes-chapter7/" title="C++ Primer 读书笔记 &#8211; 第七章 (2008-08-28)">C++ Primer 读书笔记 &#8211; 第七章</a> (0)</li>
	<li><a href="http://blog.tomtung.com/2008/07/letter-of-admission-from-buaa/" title="保送的最终结果 (2008-07-11)">保送的最终结果</a> (20)</li>
	<li><a href="http://blog.tomtung.com/2009/03/try-template-meta-programming/" title="小试模板元编程 (2009-03-01)">小试模板元编程</a> (7)</li>
	<li><a href="http://blog.tomtung.com/2008/03/deconstructing-johann/" title="恶搞巴赫：Deconstructing Johann (2008-03-01)">恶搞巴赫：Deconstructing Johann</a> (0)</li>
	<li><a href="http://blog.tomtung.com/2008/08/cpp-primer-reding-notes-chapter4/" title="C++ Primer 读书笔记 &#8211; 第四章 (2008-08-20)">C++ Primer 读书笔记 &#8211; 第四章</a> (0)</li>
</ul>

]]></content:encoded>
			<wfw:commentRss>http://blog.tomtung.com/2008/10/first-month-in-buaa/feed/</wfw:commentRss>
		<slash:comments>12</slash:comments>
		</item>
		<item>
		<title>写在临行前</title>
		<link>http://blog.tomtung.com/2008/09/unable-to-stay/</link>
		<comments>http://blog.tomtung.com/2008/09/unable-to-stay/#comments</comments>
		<pubDate>Thu, 18 Sep 2008 09:27:00 +0000</pubDate>
		<dc:creator>逆铭</dc:creator>
				<category><![CDATA[生活在此处]]></category>
		<category><![CDATA[buaa]]></category>
		<category><![CDATA[cpp]]></category>
		<category><![CDATA[csharp]]></category>
		<category><![CDATA[英语]]></category>
		<category><![CDATA[钢琴]]></category>

		<guid isPermaLink="false">http://blog.tomtung.com/2008/09/%e5%86%99%e5%9c%a8%e4%b8%b4%e8%a1%8c%e5%89%8d/</guid>
		<description><![CDATA[昨天终于顺利闹完了，20号开学，今晚的火车，明天到。 如果从年初学校定下来开始算起，到现在，那真是有大半年的假期了。虽然基本上一直都是忙忙碌碌的，但是效率并不咋高。假期开始的时候没写什么假期计划，现在就写点总结吧。 E文的重要性我是清楚的，自己清楚确实需要加强。原来有人（好吧，我坦白，包括我自己）觉得我英语不错，其实现在客观地看，不过是几句简单的说得比较溜，能吓唬下不了解情况的人而已，其实在基础各方面问题非常多。 我差不多是从今年4月份开始重新拾起E文的。兰州找不到合适的班，就自己跟着一个叫《彭蒙惠英语》的杂志走。这个是空中英语教室系列的高级版，对我来说比较吃力，但是中级版又太EZ，只好勉强用这本，结果每个月甚至都没有精力看完当月的内容。4~8月读过的课文篇数分别为2、6、7、8、1，可见利用率并不高。 当初其实规划得挺好：每天都安排课文和配套广播，可以练阅读和听力；遇到的生词记下来可以提升词汇量；另外还在网上找到了语音讨论组可以练习口语。这样就可以全面提高了。但是对我来说杂志内容难度实在偏大，每天都要花费不少时间。每天如果读课文至少需要半小时，预习半小时，广播节目半小时。口语练习一小时。生词仅一共背了 2000左右（更不幸的是现在已经忘掉不少了），难度等级从小学初中到专八GRE都有（可见我野路子学上来的基础确实有问题），每天按照软件安排复习和初记至少半小时。这样算下来单单是英文每天就要最少花费3小时，哪天稍微耽搁后面进度就跟不上了，煞是郁闷，到最后就干脆坚持不下来了。现在还是没有真正找到合适的英语学习方法，比较愁，哪位同学有什么建议欢迎在下面评论。 数学看得不多，除去已经忘掉的就可以忽略不计了…… 专业课方面，主要是看完了一本C#和对象建模的入门书，以及C++ Primer。前者非常基础，需要深入起码还要看好几本。后者，正如我在这里所说的，花了超出预期很多的时间才看完第一遍，第二遍也没能在开学前看完。本来原计划是在开学前不但看完Primer，还要看完那三本Effective的，彻底搞定明年新标准发布前我需要掌握的C++内容。已经完成的部分和计划相比差太多了。 学会了游泳。 自学一点钢琴，教材用599和哈农，从高考开始学到现在，各只弹到第15首。买的琴是Yamaha DGX-620，本来想带去学校继续学的，结果发现我根本没有理解20公斤意味着什么……况且宿舍小也不一定能放得下。原来所谓Portable Grand的意思仅仅是相对Grand稍微Portable 一点而已了。查了下其它的电钢，似乎真正比较Portable的键盘都不带配重……那就先算了吧。 恩……大致就是以上这些了。Linda姐问我假期最大的成果是什么，我说不知道……各项都不满意。忙忙碌碌但不出效果。其实把C++和E文放在一起的安排是很失败的，一天到晚都在看语言上拉拉杂杂的东西，搞得人又烦又低效。。。 忙忙碌碌的，看起来那么长的一个假期也就这样过去了。昨天去一中，见了老赵、DF、野牛、格格他们，又在楼道里习惯性闲逛，在二球下习惯性驻足，在公交站台上习惯性无意义等待。即将满载着回忆离开，除了少了很多熟识的面孔，那里的一切都还是一样熟悉。 之前同学陆陆续续都走差不多了，并没有太多离别的伤感。我只是觉得大家保持着联系就好，有缘也肯定还会再见。我似乎总是习惯看好现在，看好将来，并不太多留恋身后。想想旅行时我不喜欢拍很多照片留念可能也是这个原因吧。是豁达，是冷漠，还是不知珍惜，我自己无从分辨。我一直自以为是前者，只是昨天从姥姥家回来才产生了怀疑。 姥姥快八十岁了，坚持要在我走之前看看我。她对我絮絮叨叨了很多已经说过很多遍的事情，然后让我常给她打电话。我们都笑着说姥姥拿起电话就豆腐三碗、三碗豆腐说个没完没了了，长途话费下来肯定把人愁死。姥姥摇着头说，她知道长途花费贵，又说我学习紧张，又说宿舍里那么多人也影响别人，只要我每周周末晚上打个电话就行了，她就和我说一句话，就一句，说好着呢，听听我的声音马上就挂掉……一边说用手掌抹着已经发红的眼眶。我们赶紧解释说长途花费是按时间计的，没有那么贵，学习也并没有那么紧张，也不会打扰到别人。姥姥还是摇着头说没事的时候多休息不要打电话，每周打一次电话，说一句话听听我的声音就行了，就一句话就行了……絮叨地这么说了很多遍。 我有些不知所措，突然间感到亲人对自己如此强烈的不舍。看着姥姥发红的双眼，我突然觉得不忍离去。这是一种我其实一直没有真正明白的情感，曾经很多老师对此的解释都是“等你们做父母、祖父母了就明白了”。作为一个自私的独生子女，我想我并没有真正懂得什么是爱。 我只是愣在那里，不断提醒自己记得多打几个电话。除此之外我不知道还能做到什么。 Unable To Stay, Unwilling To Leave. 不管怎样，几天以后就是完全不同的生活了。 ﻿ Tags：buaa, cpp, csharp, 英语, 钢琴 Related Posts C++ Primer 读书笔记 &#8211; 第二章 (4) C++ Primer 读书笔记 &#8211; 第三章 (1) C++ Primer 读书笔记 &#8211; 索引 (2) 保送的最终结果 (20) [...]]]></description>
			<content:encoded><![CDATA[<p>昨天终于顺利闹完了，20号开学，今晚的火车，明天到。</p>
<p>如果从年初学校定下来开始算起，到现在，那真是有大半年的假期了。虽然基本上一直都是忙忙碌碌的，但是效率并不咋高。假期开始的时候没写什么假期计划，现在就写点总结吧。</p>
<p>E文的重要性我是清楚的，自己清楚确实需要加强。原来有人（好吧，我坦白，包括我自己）觉得我英语不错，其实现在客观地看，不过是几句简单的说得比较溜，能吓唬下不了解情况的人而已，其实在基础各方面问题非常多。</p>
<p>我差不多是从今年4月份开始重新拾起E文的。兰州找不到合适的班，就自己跟着一个叫《彭蒙惠英语》的杂志走。这个是空中英语教室系列的高级版，对我来说比较吃力，但是中级版又太EZ，只好勉强用这本，结果每个月甚至都没有精力看完当月的内容。4~8月读过的课文篇数分别为2、6、7、8、1，可见利用率并不高。</p>
<p>当初其实规划得挺好：每天都安排课文和配套广播，可以练阅读和听力；遇到的生词记下来可以提升词汇量；另外还在网上找到了<a href="http://bulo.hjenglish.com/group/advanced/" target="_blank">语音讨论组</a>可以练习口语。这样就可以全面提高了。但是对我来说杂志内容难度实在偏大，每天都要花费不少时间。每天如果读课文至少需要半小时，预习半小时，广播节目半小时。口语练习一小时。生词仅一共背了 2000左右（更不幸的是现在已经忘掉不少了），难度等级从小学初中到专八GRE都有（可见我野路子学上来的基础确实有问题），每天按照软件安排复习和初记至少半小时。这样算下来单单是英文每天就要最少花费3小时，哪天稍微耽搁后面进度就跟不上了，煞是郁闷，到最后就干脆坚持不下来了。现在还是没有真正找到合适的英语学习方法，比较愁，哪位同学有什么建议欢迎在下面评论。</p>
<p>数学看得不多，除去已经忘掉的就可以忽略不计了……</p>
<p>专业课方面，主要是看完了<a href="http://www.douban.com/subject/1845269/" target="_blank">一本C#和对象建模的入门书</a>，以及C++ Primer。前者非常基础，需要深入起码还要看好几本。后者，正如我在<a href="http://blog.tomtung.com/2008/08/cpp-primer-reding-notes-index/">这里</a>所说的，花了超出预期很多的时间才看完第一遍，第二遍也没能在开学前看完。本来原计划是在开学前不但看完Primer，还要看完那三本Effective的，彻底搞定明年新标准发布前我需要掌握的C++内容。已经完成的部分和计划相比差太多了。</p>
<p>学会了游泳。</p>
<p>自学一点钢琴，教材用599和哈农，从高考开始学到现在，各只弹到第15首。买的琴是Yamaha DGX-620，本来想带去学校继续学的，结果发现我根本没有理解20公斤意味着什么……况且宿舍小也不一定能放得下。原来所谓Portable Grand的意思仅仅是相对Grand稍微Portable 一点而已了。查了下其它的电钢，似乎真正比较Portable的键盘都不带配重……那就先算了吧。</p>
<p>恩……大致就是以上这些了。Linda姐问我假期最大的成果是什么，我说不知道……各项都不满意。忙忙碌碌但不出效果。其实把C++和E文放在一起的安排是很失败的，一天到晚都在看语言上拉拉杂杂的东西，搞得人又烦又低效。。。</p>
<p>忙忙碌碌的，看起来那么长的一个假期也就这样过去了。昨天去一中，见了老赵、DF、野牛、格格他们，又在楼道里习惯性闲逛，在二球下习惯性驻足，在公交站台上习惯性无意义<a href="http://fanfou.com/statuses/Msxzgfz5jHM" target="_blank">等待</a>。即将满载着回忆离开，除了少了很多熟识的面孔，那里的一切都还是一样熟悉。</p>
<p>之前同学陆陆续续都走差不多了，并没有太多离别的伤感。我只是觉得大家保持着联系就好，有缘也肯定还会再见。我似乎总是习惯看好现在，看好将来，并不太多留恋身后。想想旅行时我不喜欢拍很多照片留念可能也是这个原因吧。是豁达，是冷漠，还是不知珍惜，我自己无从分辨。我一直自以为是前者，只是昨天从姥姥家回来才产生了怀疑。</p>
<p>姥姥快八十岁了，坚持要在我走之前看看我。她对我絮絮叨叨了很多已经说过很多遍的事情，然后让我常给她打电话。我们都笑着说姥姥拿起电话就豆腐三碗、三碗豆腐说个没完没了了，长途话费下来肯定把人愁死。姥姥摇着头说，她知道长途花费贵，又说我学习紧张，又说宿舍里那么多人也影响别人，只要我每周周末晚上打个电话就行了，她就和我说一句话，就一句，说好着呢，听听我的声音马上就挂掉……一边说用手掌抹着已经发红的眼眶。我们赶紧解释说长途花费是按时间计的，没有那么贵，学习也并没有那么紧张，也不会打扰到别人。姥姥还是摇着头说没事的时候多休息不要打电话，每周打一次电话，说一句话听听我的声音就行了，就一句话就行了……絮叨地这么说了很多遍。</p>
<p>我有些不知所措，突然间感到亲人对自己如此强烈的不舍。看着姥姥发红的双眼，我突然觉得不忍离去。这是一种我其实一直没有真正明白的情感，曾经很多老师对此的解释都是“等你们做父母、祖父母了就明白了”。作为一个自私的独生子女，我想我并没有真正懂得什么是爱。</p>
<p>我只是愣在那里，不断提醒自己记得多打几个电话。除此之外我不知道还能做到什么。</p>
<p>Unable To Stay, Unwilling To Leave. 不管怎样，几天以后就是完全不同的生活了。<br />
﻿</p>

	<br />Tags：<a href="http://blog.tomtung.com/tag/buaa/" title="buaa" rel="tag">buaa</a>, <a href="http://blog.tomtung.com/tag/cpp/" title="cpp" rel="tag">cpp</a>, <a href="http://blog.tomtung.com/tag/csharp/" title="csharp" rel="tag">csharp</a>, <a href="http://blog.tomtung.com/tag/%e8%8b%b1%e8%af%ad/" title="英语" rel="tag">英语</a>, <a href="http://blog.tomtung.com/tag/%e9%92%a2%e7%90%b4/" title="钢琴" rel="tag">钢琴</a><br />

	<br /><h3>Related Posts</h3>
	<ul class="st-related-posts">
	<li><a href="http://blog.tomtung.com/2008/08/cpp-primer-reding-notes-chapter2/" title="C++ Primer 读书笔记 &#8211; 第二章 (2008-08-07)">C++ Primer 读书笔记 &#8211; 第二章</a> (4)</li>
	<li><a href="http://blog.tomtung.com/2008/08/cpp-primer-reding-notes-chapter3/" title="C++ Primer 读书笔记 &#8211; 第三章 (2008-08-12)">C++ Primer 读书笔记 &#8211; 第三章</a> (1)</li>
	<li><a href="http://blog.tomtung.com/2008/08/cpp-primer-reding-notes-index/" title="C++ Primer 读书笔记 &#8211; 索引 (2008-08-07)">C++ Primer 读书笔记 &#8211; 索引</a> (2)</li>
	<li><a href="http://blog.tomtung.com/2008/07/letter-of-admission-from-buaa/" title="保送的最终结果 (2008-07-11)">保送的最终结果</a> (20)</li>
	<li><a href="http://blog.tomtung.com/2008/08/cpp-primer-reding-notes-chapter6/" title="C++ Primer 读书笔记 &#8211; 第六章 (2008-08-24)">C++ Primer 读书笔记 &#8211; 第六章</a> (1)</li>
</ul>

]]></content:encoded>
			<wfw:commentRss>http://blog.tomtung.com/2008/09/unable-to-stay/feed/</wfw:commentRss>
		<slash:comments>9</slash:comments>
		</item>
		<item>
		<title>C++ Primer 读书笔记 &#8211; 第八章</title>
		<link>http://blog.tomtung.com/2008/09/cpp-primer-reding-notes-chapter8/</link>
		<comments>http://blog.tomtung.com/2008/09/cpp-primer-reding-notes-chapter8/#comments</comments>
		<pubDate>Tue, 02 Sep 2008 07:12:15 +0000</pubDate>
		<dc:creator>逆铭</dc:creator>
				<category><![CDATA[新长征路上的代码]]></category>
		<category><![CDATA[cpp]]></category>
		<category><![CDATA[读书笔记]]></category>

		<guid isPermaLink="false">http://blog.tomtung.com/2008/09/c-primer-%e8%af%bb%e4%b9%a6%e7%ac%94%e8%ae%b0-%e7%ac%ac%e5%85%ab%e7%ab%a0/</guid>
		<description><![CDATA[[笔记索引] 第８章 标准IO库 ⒈ IO标准库类型 类名           派生自            头文件       描述 istream        ios               iostream   输入流 ostream        ios               iostream   输出流 iostream       istream和ostream  iostream   输入/输出流 ifstream       istream           fstream    输入文件流 ofstream       ostream           fstream    输出文件流 fstream        iostream          fstream    输入/输出文件流 istringstream  istream           sstream    输入字符串流 ostringstream  ostream           sstream    输出字符串流 stringstream   iostream          sstream    输入/输出字符串流 ⑴ 标准库分别实现了以上继承层次的的两个版本，分别面向 char 类型（如上）和 wchar_t 类型 后者采用和前者一样的命名规则，仅在每个类和对象名前加上字母w以示区别 ⑵ IO对象不可赋值或赋值 ⒉ 标准输入输出对象 extern istream cin; 标准输入流 extern ostream cout; 标准输出流 extern ostream cerr;  标准错误输出流 extern ostream clog; [...]]]></description>
			<content:encoded><![CDATA[<p style="text-align: right;"><a href="http://blog.tomtung.com/2008/08/cpp-primer-reding-notes-index/" target="_blank"><span style="font-size: 12px;"> [笔记索引]</span></a></p>
<p><span style="font-size: 12px;">第８章 标准IO库</span></p>
<p><span style="font-size: 12px;"> ⒈ IO标准库类型<br />
类名           派生自            头文件       描述<br />
istream        ios               iostream   输入流<br />
ostream        ios               iostream   输出流<br />
iostream       istream和ostream  iostream   输入/输出流<br />
ifstream       istream           fstream    输入文件流<br />
ofstream       ostream           fstream    输出文件流<br />
fstream        iostream          fstream    输入/输出文件流<br />
istringstream  istream           sstream    输入字符串流<br />
ostringstream  ostream           sstream    输出字符串流<br />
stringstream   iostream          sstream    输入/输出字符串流</span></p>
<p><span style="font-size: 12px;"> ⑴ 标准库分别实现了以上继承层次的的两个版本，分别面向 </span><span style="color: #2e8b57;"><strong>char</strong></span> 类型（如上）和 <span style="color: #2e8b57;"><strong>wchar_t</strong></span> 类型<br />
后者采用和前者一样的命名规则，仅在每个类和对象名前加上字母w以示区别<br />
⑵ IO对象不可赋值或赋值</p>
<p>⒉ 标准输入输出对象<br />
<span style="color: #2e8b57;"><strong>extern</strong></span> istream cin; 标准输入流<br />
<span style="color: #2e8b57;"><strong>extern</strong></span> ostream cout; 标准输出流<br />
<span style="color: #2e8b57;"><strong>extern</strong></span> ostream cerr;  标准错误输出流<br />
<span style="color: #2e8b57;"><strong>extern</strong></span> ostream clog; 标准日志输出流</p>
<p>⒊ 文件输入输出流<br />
⑴ 使用 ifstream, ofstream 和 fstream 型对象可以实现对文件的读写<br />
⑵ 可以调用公共成员函数 open 或在创建时使用构造函数使流对象关联到一个文件<br />
二者都接受两个参数：一个C风格字符串表示文件名，一个可选的 ios_base::openmode 型值表示流打开模式<br />
① openmode 是用以表示流打开模式标识的位掩码类型，支持位操作符<br />
该类型对象的值可以是以下打开模式标识或它们之间进行位操作所得的结果<br />
和以下(openmode 型)模式标志均为 ios_base 的公共成员<br />
Ⅰ app (append)每次执行输出操作前都定位到流的末尾<br />
Ⅱ ate (at end)打开时定位到流末尾<br />
Ⅲ binary 在二进制(而非文本)模式下操作<br />
Ⅳ in (input)允许输入操作<br />
Ⅴ out (output)允许输出操作<br />
Ⅵ trunc (truncate)抛弃流中现存的所有内容，打开时假定长度为<span style="color: #ff00ff;">0</span><br />
(openmode 和上述标识分别是 ios_base 的公共成员类型和公共成员常量)<br />
② fstream 默认使用 in | out 模式<br />
ifstream 自动使用 in 模式<br />
ofstream 自动使用 out 模式(效果上等同于 out | trunc)<br />
⑶ 完成文件操作后可以使用公共成员函数 <span style="color: #2e8b57;"><strong>void</strong></span> close() 关闭<br />
关闭后可以再次 open 新文件，但之前应调用 clear 清除该流的状态<br />
流对象被析构时也会自动调用 close()</p>
<p>⒋ 字符串流<br />
⑴ 常用于特定数据类型和格式化的字符串之间的相互转换<br />
⑵ <span style="color: #ff00ff;">3</span>个类的构造函数各有带或不带 string 形参的两个不同版本<br />
使用带 string 参数的版本，则创建储存该实参副本的字符串流对象<br />
⑶ <span style="color: #ff00ff;">3</span>个类的都有公共成员函数 str，它的两个版本分别返回和设置与该流对象相关的 string 对象<br />
string str() <span style="color: #2e8b57;"><strong>const</strong></span>;<br />
返回与该流对象相关的 string 对象<br />
string str(<span style="color: #2e8b57;"><strong>const</strong></span> string&amp;);<br />
将该流对象相关的 string 对象设置为实参的副本</p>
<p>⒌ 条件状态<br />
⑴ 流对象内都用一个 iostate 型值表示条件状态<br />
· iostate 是用以表示流错误状态标志的位掩码类型，支持位操作符<br />
该类型对象的值可以是以下条件状态标识或它们之间进行位操作所得的结果<br />
Ⅰ eofbit 输入操作中遇到文件结束符(同时会设置failbit)<br />
Ⅱ failbit 输入操作失败(通常可恢复)<br />
Ⅲ badbit 流被损坏(通常不可恢复)<br />
Ⅳ goodbit 没有错误，值为<span style="color: #ff00ff;">0</span><br />
(iostate 和上述标识分别是 ios_base 的公共成员类型和公共成员常量)<br />
⑵ 查询条件状态<br />
<span style="color: #2e8b57;"><strong>bool</strong></span> ios::eof() <span style="color: #2e8b57;"><strong>const</strong></span>;<br />
eofbit位被设置则返回 <span style="color: #ff00ff;">true</span>, 否则返回 <span style="color: #ff00ff;">false</span><br />
<span style="color: #2e8b57;"><strong>bool</strong></span> ios::fail() <span style="color: #2e8b57;"><strong>const</strong></span>;<br />
failbit 或 badbit 位被设置则返回 <span style="color: #ff00ff;">true</span>, 否则返回 <span style="color: #ff00ff;">false</span><br />
<span style="color: #2e8b57;"><strong>bool</strong></span> ios::bad() <span style="color: #2e8b57;"><strong>const</strong></span>;<br />
badbit 位被设置则返回 <span style="color: #ff00ff;">true</span>, 否则返回 <span style="color: #ff00ff;">false</span><br />
<span style="color: #2e8b57;"><strong>bool</strong></span> ios::good() <span style="color: #2e8b57;"><strong>const</strong></span>;<br />
流对象有效则返回 <span style="color: #ff00ff;">true</span>, 否则返回 <span style="color: #ff00ff;">false</span><br />
ios_base::iostate rdstate() <span style="color: #2e8b57;"><strong>const</strong></span>;<br />
返回当前条件状态<br />
⑶ 控制条件状态<br />
<span style="color: #2e8b57;"><strong>void</strong></span> ios::clear( ios_base::iostate = goodbit);<br />
使用参数值替换当前条件状态<br />
<span style="color: #2e8b57;"><strong>void</strong></span> ios::setstate( ios_base::iostate );<br />
将参数状态加入当前状态(如同使用了位或操作符|)<br />
⑷ 可以直接检查流对象的真值来确认是否可用</p>
<p>⒍ 输出缓冲区的管理<br />
每个IO对象都管理一个缓冲区，作为流和写入目标间的媒介<br />
下面几种情况将导致输出流被刷新(即写入到真实的输出设备或者文件)<br />
⑴ 程序正常结束或目标文件被关闭<br />
注: 程序崩溃不会刷新缓冲区<br />
调试崩溃的程序时如果用最后的输出定义错误位置，应确保缓冲区已刷新<br />
因此输出时应多使用endl而非<span style="color: #6a5acd;">&#8216;\n&#8217;</span><br />
⑵ 当缓冲区满时会自动刷新<br />
⑶ 使用操纵符显式刷新缓冲区<br />
(以下均定义在&lt;ostream&gt;中)<br />
① endl 输出换行符并刷新缓冲区<br />
② flush 刷新缓冲区(不添加任何字符)<br />
③ ends 输出空字符<span style="color: #6a5acd;">&#8216;\0&#8242;</span>并刷新缓冲区<br />
注：cplusplus.com,cppreference.com和msdn上都没有表示ends会刷新缓冲区，存疑<br />
⑷ 使用 unitbuf 操纵符可以设置流对象的相关格式状态标志，使缓冲区在每次插入操作后都刷新<br />
使用 nounitbuf 操纵符可以恢复为正常的、系统控制的缓冲区刷新方式<br />
⑸ 可以把流对象绑定到一个输出流对象，前者进行任何I/O操作都会刷新后者<br />
① 可以使用 ios::tie 公共成员函数查询、修改绑定状态<br />
ostream* ios::tie() <span style="color: #2e8b57;"><strong>const</strong></span>;<br />
返回指向所绑定到的输出流对象的指针<br />
ostream* ios::tie( ostream* );<br />
绑定到参数中指针指向的输出流对象(实参为<span style="color: #ff00ff;">0</span>则解除绑定)，并返回指向原绑定对象的指针<br />
② cin, cerr, clog 默认绑定到 cout, 而它们的宽字符版本则默认绑定到 wcout</p>
<p>⒎ 控制格式状态<br />
istream/ostream(及它们的派生类)对象都支持使用提取操作符(&gt;&gt;)/插入操作符(&lt;&lt;)，从流中提取/向流中插入格式化的对象数据<br />
把提取/插入操作符和一些操纵符(manipulator)一起使用，可以改变流对象的特性或格式设置<br />
其中除setbase,setprecision,setw,setfill定义在头文件&lt;iomanip&gt;中外，其余操纵符均定义在&lt;ios&gt;中<br />
⑴ 布尔值格式<br />
从流中提取/向流中插入布尔值时形式使用 <span style="color: #ff00ff;">0</span>, <span style="color: #ff00ff;">1</span>(默认) 还是 <span style="color: #ff00ff;">false</span>, <span style="color: #ff00ff;">true</span><br />
· 使用操纵符 boolalpha noboolalpha<br />
⑵ 整数格式<br />
① 基数设置<br />
从流中提取/向流中插入整数时使用八进制、十进制(默认)还是十六进制<br />
· 使用操纵符 oct dec hex<br />
· 使用操纵符 setbase(<span style="color: #2e8b57;"><strong>int</strong></span>) (实参只能是<span style="color: #ff00ff;">8</span>,<span style="color: #ff00ff;">10</span>或<span style="color: #ff00ff;">16</span>)<br />
② 基数前缀设置<br />
向流中插入整数时是否显示基数前缀(八进制的<span style="color: #ff00ff;">0</span>和十六进制的0x)(默认不显示)<br />
· 使用操纵符 showbase noshowbase<br />
③ 十六进制和科学计数法中字母的大小写设置<br />
向流中插入整数时若使用十六进制或科学计数法，出现的字母使用小写(默认)还是大写<br />
· 使用操纵符 uppercase nouppercase<br />
⑶ 浮点数格式<br />
① 精度设置<br />
向流中插入浮点数精度为多少(默认为<span style="color: #ff00ff;">6</span>)<br />
· 使用 ios_base 的公共成员函数 precision 可以获得和设置流的浮点数精度<br />
streamsize precision() <span style="color: #2e8b57;"><strong>const</strong></span>;<br />
返回流对象的浮点数精度<br />
streamsize precision( streamsize );<br />
设置流的浮点数精度为实参值并返回先前的精度值<br />
· 使用操纵符 setprecision( streamsize )<br />
以上 streamsize 为表示流中大小的实现类型，是一个带符号基本整型的别名<br />
注: 精度的解释在使用不同情况下不同<br />
· 默认情况下解释为最大有效数字(位数不足不用小数末尾的零补齐)<br />
· 在强制使用fixed,scientific或showpoint时解释为小数点后的确切位数(位数不足则用小数末尾的零补齐)<br />
② 计数法设置<br />
向流中插入浮点数时，让系统自动选择计数法(默认)，还是强制指定为定点计数法或科学计数法<br />
· 使用操纵符 fixed scientific<br />
· 计数法不存在恢复默认的操纵符，但可以通过给成员函数 unsetf 传入常量 floatfield 达到目的<br />
(unsetf 和 floatfield 均为 ios_base 的公共成员)<br />
③ 小数点显示设置<br />
向流中插入浮点数时，若小数部分为<span style="color: #ff00ff;">0</span>，是否显示小数点和小数部分的<span style="color: #ff00ff;">0</span>(默认不显示)<br />
· 使用操纵符 showpoint noshowpoint<br />
④ 非负数(整数和浮点数)正号设置<br />
向流中插入非负数(包括<span style="color: #ff00ff;">0</span>)时是否显示正号+ (默认不显示)<br />
· 使用操纵符 showpos noshowpos<br />
⑷ 对齐和填充格式<br />
① 使用操纵符 setw( streamsize ) 可指定下次对流的插入操作的最小字段长度<br />
注: 和endl一样，它不改变流的内部状态，只影响下一个输出<br />
② 使用操纵符 setfill( <span style="color: #2e8b57;"><strong>char</strong></span> ) 设置向流中插入对象时用来填充字段的字符(默认为空格)<br />
③ 字段内对齐方式设置(默认左对齐)<br />
· 使用操纵符left right internal<br />
关于internal:<br />
- 对数值表示左对齐前缀(正负号和十六进制的0x)右对齐数值<br />
- 对非数值则与 right 等效<br />
⑸ 空白字符的处理<br />
· 使用操纵符 skipws noskipws 设置从流中提取对象时是否忽略空白字符(默认忽略)<br />
· 使用操纵符 ws 忽略输入序列中从当前位置开始尽可能多的空白字符，直到遇到非空白字符才停止<br />
当然，如果已经(默认)设置了 skipws 则没有必要使用 ws</p>
<p>⒏ 无格式I/O操作<br />
⑴ 单字节操作<br />
① istream&amp; get ( <span style="color: #2e8b57;"><strong>char</strong></span>&amp; );<br />
istream 的公共成员函数，从流中提取一个字符存入实参中<br />
<span style="color: #2e8b57;"><strong>int</strong></span> get( );<br />
无参数版本从流中提取一个字符并返回其值<br />
② ostream&amp; put ( <span style="color: #2e8b57;"><strong>char</strong></span> );<br />
ostream 的公共成员函数，将字符参数值写入输出缓冲区并返回*<span style="color: #804040;"><strong>this</strong></span><br />
③ istream&amp; putback ( <span style="color: #2e8b57;"><strong>char</strong></span> );<br />
istream 的公共成员函数，将字符参数值放回流中并返回*<span style="color: #804040;"><strong>this</strong></span><br />
④ istream&amp; unget ( );<br />
istream 的公共成员函数，将流退回<span style="color: #ff00ff;">1</span>字节并返回*<span style="color: #804040;"><strong>this</strong></span><br />
⑤ <span style="color: #2e8b57;"><strong>int</strong></span> peek ( );<br />
istream 的公共成员函数，读取并返回流中的下一个字符，但不提取它<br />
注: 为允许返回EOF，put(无参数版本)和peek的返回值都为 <span style="color: #2e8b57;"><strong>int</strong></span><br />
⑵ 多字节操作<br />
① istream&amp; get (<span style="color: #2e8b57;"><strong>char</strong></span>* s, streamsize n, <span style="color: #2e8b57;"><strong>char</strong></span> delim );<br />
istream 的公共成员函数，不断从流中提取字符并以字符串形式存入s指向首地址的数组，<br />
直到出现以下情况之一:<br />
- 已经提取了(n-<span style="color: #ff00ff;">1</span>)个字符;<br />
- 遇到了定界字符delim(如果不提供此参数则为<span style="color: #6a5acd;">&#8216;\n&#8217;</span>);<br />
(被找到的定界字符不会被提取，而是继续留在流中作为下一个要被提取的字符)<br />
- 到达文件末尾;<br />
- 提取过程中发生错误;<br />
最后返回*<span style="color: #804040;"><strong>this</strong></span>.<br />
注: 提取的字符以字符串的形式储存，故将自动添加结尾的<span style="color: #6a5acd;">&#8216;\0&#8242;</span>，而被提取的最大字符数也为(n-<span style="color: #ff00ff;">1</span>)而非n<br />
② istream&amp; getline (<span style="color: #2e8b57;"><strong>char</strong></span>* s, streamsize n, <span style="color: #2e8b57;"><strong>char</strong></span> delim );<br />
istream 的公共成员函数，与上面参数表相同的get版本类似，唯一区别在于定界字符会被提取并丢弃<br />
③ istream&amp; read ( <span style="color: #2e8b57;"><strong>char</strong></span>* s, streamsize n );<br />
istream 的公共成员函数，从流中提取n个字符存入s指向首地址的数组，<br />
直到出现以下情况之一：<br />
- 已经提取了n个字符<br />
- 到达文件末尾(eofbit和failbit会被设置)<br />
- 提取过程中发生错误<br />
最后返回*<span style="color: #804040;"><strong>this</strong></span>.<br />
注: 与get和getline不同，read不把提取的字符保存为字符串，故不会自动加上<span style="color: #6a5acd;">&#8216;\0&#8242;</span><br />
④ streamsize  gcount ( ) <span style="color: #2e8b57;"><strong>const</strong></span>;<br />
istream 的公共成员函数，返回上次无格式输入操作提取的字符个数<br />
(peek, putback, unget不提取字符，故对此gcount返回<span style="color: #ff00ff;">0</span>)<br />
⑤ ostream&amp; write ( <span style="color: #2e8b57;"><strong>const</strong></span> <span style="color: #2e8b57;"><strong>char</strong></span>* s , streamsize n );<br />
ostream 的公共成员函数，把s指向首地址的数组的前n个字符写入输出流缓冲区<br />
⑥ istream&amp;  ignore ( streamsize n = <span style="color: #ff00ff;">1</span>, <span style="color: #2e8b57;"><strong>int</strong></span> delim = <span style="color: #ff00ff;">EOF</span> );<br />
istream 的公共成员函数，从流中提取并抛弃字符，直到:<br />
- 已经提取了n个字符或遇到了定界字符delim(该字符不会被提取)<br />
最后返回*<span style="color: #804040;"><strong>this</strong></span>.</p>
<p>⒐ 流的随机访问<br />
⑴ 用于随机访问的成员函数<br />
· pos_type tellg ();<br />
pos_type tellp ();<br />
返回输入/输出流中的标记当前的绝对位置<br />
· istream&amp; seekg ( pos_type pos );<br />
ostream&amp; seekp ( pos_type pos );<br />
将输入/输出流中的标记重新定位至参数值表示的位置<br />
· istream&amp; seekg ( off_type off, ios_base::seekdir dir );<br />
ostream&amp; seekp ( off_type off, ios_base::seekdir dir );<br />
将输入/输出流中的标记重新定位至距离dir偏移量为off的位置<br />
⑵ 关于上述函数参数和返回值的类型<br />
① pos_type和off_type都是类的成员类型，分别表示流中的标记位置和偏移量<br />
后者可正可负，分别表示向前和向后偏移<br />
② seekdir类型用来表示偏移的启示位置，其可能值如下<br />
beg 流的开头<br />
cur 流的当前位置<br />
end 流的末尾<br />
⑶ 以上tell和seek版本分别有两个版本g(get)和p(put)<br />
其区别在于g版是istream类的成员，而p版是ostream类的成员<br />
对于iostream对象，而者都适用，它们都操作同一个标记(而非输入输出各一个)<br />
⑷ 普通iostream对象一般不允许随机访问，以上内容主要适用fstream和sstream</p>

	<br />Tags：<a href="http://blog.tomtung.com/tag/cpp/" title="cpp" rel="tag">cpp</a>, <a href="http://blog.tomtung.com/tag/%e8%af%bb%e4%b9%a6%e7%ac%94%e8%ae%b0/" title="读书笔记" rel="tag">读书笔记</a><br />

	<br /><h3>Related Posts</h3>
	<ul class="st-related-posts">
	<li><a href="http://blog.tomtung.com/2009/03/try-template-meta-programming/" title="小试模板元编程 (2009-03-01)">小试模板元编程</a> (7)</li>
	<li><a href="http://blog.tomtung.com/2008/08/cpp-primer-reding-notes-chapter6/" title="C++ Primer 读书笔记 &#8211; 第六章 (2008-08-24)">C++ Primer 读书笔记 &#8211; 第六章</a> (1)</li>
	<li><a href="http://blog.tomtung.com/2008/08/cpp-primer-reding-notes-chapter2/" title="C++ Primer 读书笔记 &#8211; 第二章 (2008-08-07)">C++ Primer 读书笔记 &#8211; 第二章</a> (4)</li>
	<li><a href="http://blog.tomtung.com/2008/08/cpp-primer-reding-notes-chapter4/" title="C++ Primer 读书笔记 &#8211; 第四章 (2008-08-20)">C++ Primer 读书笔记 &#8211; 第四章</a> (0)</li>
	<li><a href="http://blog.tomtung.com/2009/07/agile-development-reading-notes/" title="敏捷开发学习笔记（思维导图） (2009-07-04)">敏捷开发学习笔记（思维导图）</a> (1)</li>
</ul>

]]></content:encoded>
			<wfw:commentRss>http://blog.tomtung.com/2008/09/cpp-primer-reding-notes-chapter8/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>C++ Primer 读书笔记 &#8211; 第七章</title>
		<link>http://blog.tomtung.com/2008/08/cpp-primer-reding-notes-chapter7/</link>
		<comments>http://blog.tomtung.com/2008/08/cpp-primer-reding-notes-chapter7/#comments</comments>
		<pubDate>Thu, 28 Aug 2008 09:14:50 +0000</pubDate>
		<dc:creator>逆铭</dc:creator>
				<category><![CDATA[新长征路上的代码]]></category>
		<category><![CDATA[cpp]]></category>
		<category><![CDATA[读书笔记]]></category>

		<guid isPermaLink="false">http://blog.tomtung.com/2008/08/c-primer-%e8%af%bb%e4%b9%a6%e7%ac%94%e8%ae%b0-%e7%ac%ac%e4%b8%83%e7%ab%a0/</guid>
		<description><![CDATA[[笔记索引] 第７章 函数 ㈠ 函数的声明和定义 ⒈ 与变量类似： ⑴ 函数必须在调用前声明 ⑵ 函数声明可与定义分离 ⑶ 一个函数只能定义一次但可声明多次 ⒉ 函数声明由函数返回类型、函数返回类型和形参列表组成 三者描述了函数的接口，称为函数原型(function prototype) ⑴ 函数的操作数，即形参(parameter)，在一对圆括号中声明，并以逗号分隔 形参名是可选的，但形参需要在定义函数时命名才能使用 ⑵ 函数执行的运算在一个称为函数体(function body)的块语句中定义 ⒊ 函数一般在头文件中声明，在源文件中定义 此时应使后者包含前者，以便编译器检查定义和声明是否一致 ⒋ 将一个较小的、常被调用的函数指定为 inline 可使函数在调用点展开，以避免调用函数的额外开销 但内联说明对编译器来说只是一个建议，编译器也可能选择忽略 ㈡ 函数的调用和参数传递 ⒈ 函数的调用 ⑴ 使用调用操作符()实现函数调用 ① 操作数是函数名和一组(可能为空的)用逗号分开的实参(argument) ② 结果类型为函数返回值的类型，结果为函数的返回值 ⑵ 函数调用做两件事： ① 首先(隐式)定义形参，并用对应的实参进行初始化 · 形参的初始化与变量一样： 如果形参为非引用类型则复制实参的值，如果形参为引用类型则它只是实参的别名 ② 主调函数(calling function)的执行被挂起，被调函数(called function)开始执行 ⒉ 非引用形参 ⑴ [...]]]></description>
			<content:encoded><![CDATA[<p style="text-align: right;"><a href="http://blog.tomtung.com/2008/08/cpp-primer-reding-notes-index/" target="_blank"><span style="font-size: 12px;"> [笔记索引]</span></a></p>
<p><span style="font-size: 12px;">第７章 函数</span></p>
<p><span style="font-size: 12px;"> ㈠ 函数的声明和定义<br />
⒈ 与变量类似：<br />
⑴ 函数必须在调用前声明<br />
⑵ 函数声明可与定义分离<br />
⑶ 一个函数只能定义一次但可声明多次<br />
⒉ 函数声明由函数返回类型、函数返回类型和形参列表组成<br />
三者描述了函数的接口，称为函数原型(function prototype)<br />
⑴ 函数的操作数，即形参(parameter)，在一对圆括号中声明，并以逗号分隔<br />
形参名是可选的，但形参需要在定义函数时命名才能使用<br />
⑵ 函数执行的运算在一个称为函数体(function body)的块语句中定义<br />
⒊ 函数一般在头文件中声明，在源文件中定义<br />
此时应使后者包含前者，以便编译器检查定义和声明是否一致<br />
⒋ 将一个较小的、常被调用的函数指定为 </span><span style="color: #2e8b57;"><strong>inline</strong></span> 可使函数在调用点展开，以避免调用函数的额外开销<br />
但内联说明对编译器来说只是一个建议，编译器也可能选择忽略</p>
<p>㈡ 函数的调用和参数传递<br />
⒈ 函数的调用<br />
⑴ 使用调用操作符()实现函数调用<br />
① 操作数是函数名和一组(可能为空的)用逗号分开的实参(argument)<br />
② 结果类型为函数返回值的类型，结果为函数的返回值<br />
⑵ 函数调用做两件事：<br />
① 首先(隐式)定义形参，并用对应的实参进行初始化<br />
· 形参的初始化与变量一样：<br />
如果形参为非引用类型则复制实参的值，如果形参为引用类型则它只是实参的别名<br />
② 主调函数(calling function)的执行被挂起，被调函数(called function)开始执行<br />
⒉ 非引用形参<br />
⑴ 指针形参<br />
① 可以通过传入指针来间接访问指针所指对象<br />
② 若需要保护指针指向的对象，可指定形参为指向 <span style="color: #2e8b57;"><strong>const</strong></span> 对象的指针<br />
⑵ <span style="color: #2e8b57;"><strong>const</strong></span> 形参<br />
① 用来初始化 <span style="color: #2e8b57;"><strong>const</strong></span> 形参的实参无论是不是 <span style="color: #2e8b57;"><strong>const</strong></span> 都可以<br />
在函数中不能改变该实参的局部副本<br />
② 非引用形参是否为 <span style="color: #2e8b57;"><strong>const</strong></span> 不影响编译器对其所属函数类型的判别<br />
·注：对于指针，注意区分 <span style="color: #2e8b57;"><strong>const</strong></span> 是修饰指针本身的性质还是所指对象的性质<br />
⑶ 不适合复制实参的情况<br />
① 需要修改实参值时<br />
② 需要将大型对象作为实参传递时<br />
③ 无法复制对象时<br />
以上情况可通过将形参定义为指针或引用类型解决<br />
⒊ 引用形参<br />
⑴ 可以使用引用形参返回额外信息<br />
⑵ 可以利用 <span style="color: #2e8b57;"><strong>const</strong></span> 引用形参避免复制实参<br />
⑶ 使用引用形参时，将不需要修改的定义为 <span style="color: #2e8b57;"><strong>const</strong></span> 会更灵活<br />
非 <span style="color: #2e8b57;"><strong>const</strong></span> 引用形参不能用 <span style="color: #2e8b57;"><strong>const</strong></span> 左值或右值初始化，而定义为 <span style="color: #2e8b57;"><strong>const</strong></span> 则无此问题<br />
⒋ 一般通过传递迭代器来传递 vector 等容器<br />
⒌ 数组形参<br />
⑴ 当把数组直接作为实参传给函数时：<br />
① 若形参不是数组的引用，则自动转换为指向首元素的指针<br />
例如以下三种定义完全等价：<br />
<span style="color: #2e8b57;"><strong>void</strong></span> f(<span style="color: #2e8b57;"><strong>int</strong></span>*); <span style="color: #0000ff;">//推荐，明确指出操作对象为指针</span><br />
<span style="color: #2e8b57;"><strong>void</strong></span> f(<span style="color: #2e8b57;"><strong>int</strong></span>[]);<br />
<span style="color: #2e8b57;"><strong>void</strong></span> f(<span style="color: #2e8b57;"><strong>int</strong></span>[<span style="color: #ff00ff;">10</span>]);<span style="color: #0000ff;">//维数被编译器忽略，写法容易引起误解</span><br />
② 若形参是数组的引用则不发生转换，函数得到的是数组本身<br />
此时编译器会检查形参和实参数组的维数是否匹配<br />
⑵ 把数组传递给函数处理时，可以：<br />
⒈ 使用标准库规范，即传入首元素指针和超出末端指针<br />
⒉ 传递数组首元素地址，并显式传递表示数组大小的形参<br />
⑶ 可以通过传递指向数组的指针来传递多维数组<br />
⒍ 含有可变形参的函数<br />
为兼容C语言而保留的特性，只能传入简单数据类型，大多数类类型对象都不能正确复制<br />
⒎ 默认实参<br />
⑴ 通过给形参表中的形参提供明确的初值可指定默认实参，如<br />
<span style="color: #2e8b57;"><strong>void</strong></span> f( <span style="color: #2e8b57;"><strong>int</strong></span>, <span style="color: #2e8b57;"><strong>int</strong></span> = <span style="color: #ff00ff;">1</span>, <span style="color: #2e8b57;"><strong>int</strong></span> = <span style="color: #ff00ff;">2</span> );<br />
① 默认实参可以是任何适当类型的表达式<br />
② 如果一个形参有默认实参，则其后的所有形参都必须有默认实参<br />
③ 在一个文件中，只能为一个形参指定默认实参一次<br />
通常应在函数声明中指定默认实参，并将该声明放在合适的头文件中<br />
⑵ 调用函数时可省略有默认值的实参：若省略则使用默认实参，否则使用用户提供的实参<br />
· 默认实参只能用来替换函数调用缺少的靠后的实参<br />
因此设计带有默认实参的函数时，应将最少使用默认实参的形参排在最前，最多使用默认实参的形参排在最后</p>
<p>㈢ 局部对象的作用域和生命期<br />
⒈ 函数体是一个作用域，在其中定义的变量称为局部变量(local variable)，只可在该函数中访问<br />
局部变量和形参均不能重名<br />
⒉ 自动对象(automatic objects)是局部于函数的对象，会在每次函数调用时重新创建，并在函数结束时撤销<br />
非静态局部变量和形参都是自动对象<br />
⒊ <span style="color: #2e8b57;"><strong>static</strong></span> 局部对象确保不迟于在程序执行流程第一次经过该对象的定义语句时初始化，一旦创建在程序结束前都不会撤销<br />
在所在函数被多次调用的过程中，static 局部对象会持续存在并保持它的值</p>
<p>㈣ 函数的返回值和 <span style="color: #804040;"><strong>return</strong></span> 语句<br />
⒈ 函数返回类型可为内置类型、类类型或复合类型，但不能是另一个函数或内置数组类型<br />
为 <span style="color: #2e8b57;"><strong>void</strong></span> 类型表示该函数不返回任何值<br />
⒉ <span style="color: #804040;"><strong>return</strong></span> 语句<br />
用于结束当前函数，将控制权返回给该函数的主调函数<br />
⑴ 没有返回值的 <span style="color: #804040;"><strong>return</strong></span> 语句<br />
① 只能用于返回类型为 <span style="color: #2e8b57;"><strong>void</strong></span> 的函数<br />
② 非必需，隐式 <span style="color: #804040;"><strong>return</strong></span> 发生在函数最后一个语句完成时<br />
⑵ 具有返回值的 <span style="color: #804040;"><strong>return</strong></span> 语句<br />
① 返回类型不是 <span style="color: #2e8b57;"><strong>void</strong></span> 的函数必须返回一个值(主函数 main 除外)<br />
注：应在函数中的每条执行路径末尾都提供 <span style="color: #804040;"><strong>return</strong></span> 语句；若不提供编译器可能也无法发现<br />
② 用函数返回值初始化在调用函数处创建的临时对象，与用实参初始化形参的方法一样<br />
即若返回非引用类型则得到副本，若返回引用类型则得到对象本身<br />
③ 切勿返回局部对象的引用或指针</p>
<p>㈤ 函数的重载<br />
⒈ 出现在相同作用域中的两个函数，如果具有相同的名字而形参表不同，则为重载函数(overloaded function)<br />
仅仅是返回类型不同、默认实参不同、非引用形参的 <span style="color: #2e8b57;"><strong>const</strong></span> 性质不同不能实现重载<br />
⒉ 若局部地声明函数，则该函数屏蔽而非重载在外层作用域中声明的同名函数<br />
⒊ 重载确定的三个步骤<br />
⑴ 确定候选函数集合<br />
候选函数(candidate function)是与被调函数同名的函数，且在调用点上声明可见<br />
⑵ 从候选函数集合中选择可行函数(找不到则此调用错误)<br />
可行函数(viable function)满足两个条件：<br />
① 函数形参与该调用的实参个数匹配(考虑默认实参)<br />
② 每个实参的类型须与对应形参匹配(类型相同或可隐式转换)<br />
⑶ 寻找最佳匹配(有多个匹配程度相同的则调用有二义性)<br />
原则是实参类型与形参类型越接近则匹配越佳。具体匹配程度从高到低为：<br />
① 精确匹配：实参与形参类型相同<br />
② 通过类型提升实现的匹配<br />
③ 通过标准转换实现的匹配<br />
④ 通过类类型转换实现的匹配</p>
<p>㈥ 函数指针<br />
⒈ 定义形式<br />
返回类型 (*标识符)(形参表)<br />
⒉ 可使用 <span style="color: #2e8b57;"><strong>typedef</strong></span> 简化定义<br />
<span style="color: #2e8b57;"><strong>typedef</strong></span> 返回类型 (*自定义类型名)(形参表)<br />
⒊ 对函数指针进行初始化和赋值，可使用：<br />
⑴ 同类型的函数<br />
引用函数名但不调用该函数时，函数名被自动解释为指向函数的指针<br />
因此可以直接使用函数名对函数指针初始化或赋值，不需要使用取地址操作符&amp;<br />
·注：指针类型须与函数完全匹配<br />
⑵ 同类型的函数指针<br />
⑶ <span style="color: #ff00ff;">0</span>值常量表达式<br />
⒋ 通过函数指针调用函数<br />
可以不使用解引用操作符，直接使用函数调用操作符()调用所指函数<br />
⒌ 函数指针作形参时，星号*可写可不写<br />
⒍ 函数的指针作函数返回值<br />
函数指针返回类型 (*函数名(函数形参表))(函数指针形参表)</p>
<p>㈦ 主函数 main<br />
⒈ 返回值<br />
⑴ 主函数返回类型为 <span style="color: #2e8b57;"><strong>int</strong></span>, 返回值在大多数系统中是一个状态指示器<br />
返回<span style="color: #ff00ff;">0</span>表示程序运行成功，其它大部分值表示失败<br />
⑵ 不需要显式使用 <span style="color: #804040;"><strong>return</strong></span> 语句，编译器将隐式插入返回<span style="color: #ff00ff;">0</span>的语句<br />
⑶ 为使返回值独立于机器，cstdlib 头文件定义了两个预处理变量<br />
<span style="color: #ff00ff;">EXIT_FAILURE</span>(运行失败)    <span style="color: #ff00ff;">EXIT_SUCCESS</span>(运行成功)<br />
⒉ 使用主函数形参处理命令行选项<br />
<span style="color: #2e8b57;"><strong>int</strong></span> main(<span style="color: #2e8b57;"><strong>int</strong></span> argc, <span style="color: #2e8b57;"><strong>char</strong></span>* argv[])<br />
· argv为一个C风格字符串数组，储存了从命令行调用程序时输入的字符串(包括程序名和参数)<br />
· argc表示argv中字符串的个数<br />
⒊ 主函数 main 不允许被显式调用、取地址或重载</p>

	<br />Tags：<a href="http://blog.tomtung.com/tag/cpp/" title="cpp" rel="tag">cpp</a>, <a href="http://blog.tomtung.com/tag/%e8%af%bb%e4%b9%a6%e7%ac%94%e8%ae%b0/" title="读书笔记" rel="tag">读书笔记</a><br />

	<br /><h3>Related Posts</h3>
	<ul class="st-related-posts">
	<li><a href="http://blog.tomtung.com/2008/08/cpp-primer-reding-notes-chapter3/" title="C++ Primer 读书笔记 &#8211; 第三章 (2008-08-12)">C++ Primer 读书笔记 &#8211; 第三章</a> (1)</li>
	<li><a href="http://blog.tomtung.com/2008/08/cpp-primer-reding-notes-chapter4/" title="C++ Primer 读书笔记 &#8211; 第四章 (2008-08-20)">C++ Primer 读书笔记 &#8211; 第四章</a> (0)</li>
	<li><a href="http://blog.tomtung.com/2009/07/agile-development-reading-notes/" title="敏捷开发学习笔记（思维导图） (2009-07-04)">敏捷开发学习笔记（思维导图）</a> (1)</li>
	<li><a href="http://blog.tomtung.com/2008/08/cpp-primer-reding-notes-chapter5/" title="C++ Primer 读书笔记 &#8211; 第五章 (2008-08-23)">C++ Primer 读书笔记 &#8211; 第五章</a> (1)</li>
	<li><a href="http://blog.tomtung.com/2008/08/cpp-primer-reding-notes-index/" title="C++ Primer 读书笔记 &#8211; 索引 (2008-08-07)">C++ Primer 读书笔记 &#8211; 索引</a> (2)</li>
</ul>

]]></content:encoded>
			<wfw:commentRss>http://blog.tomtung.com/2008/08/cpp-primer-reding-notes-chapter7/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>C++ Primer 读书笔记 &#8211; 第六章</title>
		<link>http://blog.tomtung.com/2008/08/cpp-primer-reding-notes-chapter6/</link>
		<comments>http://blog.tomtung.com/2008/08/cpp-primer-reding-notes-chapter6/#comments</comments>
		<pubDate>Sun, 24 Aug 2008 09:01:47 +0000</pubDate>
		<dc:creator>逆铭</dc:creator>
				<category><![CDATA[新长征路上的代码]]></category>
		<category><![CDATA[cpp]]></category>
		<category><![CDATA[读书笔记]]></category>

		<guid isPermaLink="false">http://blog.tomtung.com/2008/08/c-primer-%e8%af%bb%e4%b9%a6%e7%ac%94%e8%ae%b0-%e7%ac%ac%e5%85%ad%e7%ab%a0/</guid>
		<description><![CDATA[[笔记索引] 第６章 语句 ㈠ 简单语句 ⒈ 表达式语句(expression_r statement) 一个表达式加上结尾的分号，执行时导致该表达式被求值 ⒉ 空语句(null statement) 只由一个单独的分号组成，当语法上需要一个语句但逻辑上并不需要时使用 ⒊ 声明语句 用于声明或定义对象或类 ㈡ 复合语句 ⒈ 复合语句(compound statement)又被称为块(block)，是用一对花括号{}括起的(可能为空的)语句序列 ⒉ 通常用于语法规则要求使用单个语句但程序逻辑需要多个语句时 ⒊ 块标示了一个作用域，在块中引入的名字只能在其内部访问 ㈢ 控制流语句 注：作为语句控制结构的一部分定义的变量，仅在该语句内可见 ⒈ 条件分支结构 ⑴ if 语句 关于 else-if 匹配的二义性问题: else 匹配给最后出现尚未匹配的 if ⑵ switch 语句 ① switch 在计算表达式的值后跳转到匹配的标号处(无匹配则跳转至 default)，并从该点开始一直执行下去， 直至 switch 语句结束或遇到 break 语句 ② switch 求解表达式的结果须为整型，每个 case [...]]]></description>
			<content:encoded><![CDATA[<p style="text-align: right;"><a href="http://blog.tomtung.com/2008/08/cpp-primer-reding-notes-index/" target="_blank"><span style="font-size: 12px;"> [笔记索引]</span></a></p>
<p><span style="font-size: 12px;">第６章 语句<br />
㈠ 简单语句<br />
⒈ 表达式语句(expression_r statement)<br />
一个表达式加上结尾的分号，执行时导致该表达式被求值<br />
⒉ 空语句(null statement)<br />
只由一个单独的分号组成，当语法上需要一个语句但逻辑上并不需要时使用<br />
⒊ 声明语句<br />
用于声明或定义对象或类<br />
㈡ 复合语句<br />
⒈ 复合语句(compound statement)又被称为块(block)，是用一对花括号{}括起的(可能为空的)语句序列<br />
⒉ 通常用于语法规则要求使用单个语句但程序逻辑需要多个语句时<br />
⒊ 块标示了一个作用域，在块中引入的名字只能在其内部访问<br />
㈢ 控制流语句<br />
注：作为语句控制结构的一部分定义的变量，仅在该语句内可见<br />
⒈ 条件分支结构<br />
⑴ </span><span style="color: #804040;"><strong>if</strong></span> 语句<br />
关于 <span style="color: #804040;"><strong>else</strong></span>-<span style="color: #804040;"><strong>if</strong></span> 匹配的二义性问题: <span style="color: #804040;"><strong>else</strong></span> 匹配给最后出现尚未匹配的 <span style="color: #804040;"><strong>if</strong></span><br />
⑵ <span style="color: #804040;"><strong>switch</strong></span> 语句<br />
① <span style="color: #804040;"><strong>switch</strong></span> 在计算表达式的值后跳转到匹配的标号处(无匹配则跳转至 <span style="color: #804040;"><strong>default</strong></span>)，并从该点开始一直执行下去，<br />
直至 <span style="color: #804040;"><strong>switch</strong></span> 语句结束或遇到 <span style="color: #804040;"><strong>break</strong></span> 语句<br />
② <span style="color: #804040;"><strong>switch</strong></span> 求解表达式的结果须为整型，每个 <span style="color: #804040;"><strong>case</strong></span> 标号的值也须为各不相同的整型常量表达式<br />
③ <span style="color: #804040;"><strong>switch</strong></span> 内部的变量定义<br />
· 可以在 <span style="color: #804040;"><strong>switch</strong></span> 求解的表达式中定义和初始化变量<br />
· 为防止跳过变量定义，只允许在最后一个标号后定义变量<br />
· 也可以引入块语句，在其中定义变量<br />
⒉ 循环<br />
⑴ <span style="color: #804040;"><strong>while</strong></span> 语句<br />
注：循环条件中定义的变量在每次循环时都要经历创建和撤销的过程<br />
⑵ <span style="color: #804040;"><strong>for</strong></span> 循环语句<br />
注：语句头中的初始化语句、循环条件和表达式三者都可以省略<br />
循环条件省略表示永远为 <span style="color: #ff00ff;">true</span><br />
⑶ <span style="color: #804040;"><strong>do</strong></span> <span style="color: #804040;"><strong>while</strong></span> 语句<br />
注：不能在循环条件中定义变量<br />
⒊ <span style="color: #804040;"><strong>break</strong></span> 语句<br />
用于结束最近的外围 <span style="color: #804040;"><strong>while</strong></span>, <span style="color: #804040;"><strong>do</strong></span> <span style="color: #804040;"><strong>while</strong></span>, <span style="color: #804040;"><strong>for</strong></span> 或 <span style="color: #804040;"><strong>switch</strong></span> 语句，并在该语句后继续执行<br />
⒋ <span style="color: #804040;"><strong>continue</strong></span> 语句<br />
导致最近的外围循环语句(<span style="color: #804040;"><strong>for</strong></span>, <span style="color: #804040;"><strong>while</strong></span>, <span style="color: #804040;"><strong>do</strong></span> <span style="color: #804040;"><strong>while</strong></span>)正在进行的这次迭代提前结束<br />
⒌ <span style="color: #804040;"><strong>goto</strong></span> 语句<br />
⑴ <span style="color: #804040;"><strong>goto</strong></span> 语句提供了函数内部的无条件跳转，实现从 <span style="color: #804040;"><strong>goto</strong></span> 语句跳转到同一函数内某个带标号的语句<br />
除非有足够理由，应避免使用 <span style="color: #804040;"><strong>goto</strong></span> 语句<br />
⑵ 在任何语句前提供一个标识符和冒号，就得到一个带标号的语句(labeled statement)<br />
标识符: 语句<br />
使用 <span style="color: #804040;"><strong>goto</strong></span> 语句跳转到该语句： <span style="color: #804040;"><strong>goto</strong></span> 标识符;<br />
由于这里的标识符只能用作 <span style="color: #804040;"><strong>goto</strong></span> 的目标，因此可以与其它类型的标识符(如变量名)同名<br />
⑶ <span style="color: #804040;"><strong>goto</strong></span> 语句不能跨越变量的定义语句向前跳转<br />
若确实需在 <span style="color: #804040;"><strong>goto</strong></span> 和跳转目标位置间定义变量，则须定义在块中<br />
⒍ <span style="color: #804040;"><strong>try</strong></span>, <span style="color: #804040;"><strong>catch</strong></span> 语句和 <span style="color: #804040;"><strong>throw</strong></span> 表达式<br />
用于异常处理<br />
⒎ <span style="color: #804040;"><strong>return</strong></span> 语句<br />
用于结束当前函数，返回函数被调用处继续执行</p>
<p>⒍⒕ 使用预处理器进行调试<br />
⒈ 使用 NDEBUG 预处理变量实现有条件的调试代码(类似头文件保护符)<br />
<span style="color: #a020f0;"> #ifndef NDEBUG</span><br />
<span style="color: #a020f0;"> #define NDEBUG</span><br />
<span style="color: #0000ff;">// 调试代码</span><br />
<span style="color: #a020f0;"> #endif</span><br />
如果定义了 NDEBUG 就不执行调试代码<br />
⒉ 使用 NDEBUG 预处理变量以及 assert 预处理宏<br />
定义在头文件cassert中，常用来检查不可能发生的状况，形式为<br />
assert(表达式)<br />
如果表达式结果为 <span style="color: #ff00ff;">false</span>, assert 输出信息并终止程序<br />
如果定义了 NDEBUG 预处理变量，assert 将被忽略，不会产生任何运行时代价<br />
⒊ 预处理器定义了四种在调试时有用的常量<br />
<span style="color: #ff00ff;">__FILE__</span> 文件名<br />
<span style="color: #ff00ff;">__LINE__</span> 当前行号<br />
<span style="color: #ff00ff;">__TIME__</span> 编译时间<br />
<span style="color: #ff00ff;">__DATE__</span> 编译日期</p>

	<br />Tags：<a href="http://blog.tomtung.com/tag/cpp/" title="cpp" rel="tag">cpp</a>, <a href="http://blog.tomtung.com/tag/%e8%af%bb%e4%b9%a6%e7%ac%94%e8%ae%b0/" title="读书笔记" rel="tag">读书笔记</a><br />

	<br /><h3>Related Posts</h3>
	<ul class="st-related-posts">
	<li><a href="http://blog.tomtung.com/2008/09/unable-to-stay/" title="写在临行前 (2008-09-18)">写在临行前</a> (9)</li>
	<li><a href="http://blog.tomtung.com/2008/08/cpp-primer-reding-notes-chapter7/" title="C++ Primer 读书笔记 &#8211; 第七章 (2008-08-28)">C++ Primer 读书笔记 &#8211; 第七章</a> (0)</li>
	<li><a href="http://blog.tomtung.com/2009/07/agile-development-reading-notes/" title="敏捷开发学习笔记（思维导图） (2009-07-04)">敏捷开发学习笔记（思维导图）</a> (1)</li>
	<li><a href="http://blog.tomtung.com/2010/02/probability-statistics-and-random-processes/" title="学习笔记：概率统计与随机过程 (2010-02-06)">学习笔记：概率统计与随机过程</a> (3)</li>
	<li><a href="http://blog.tomtung.com/2007/06/c-cpp-io-odd-behavior/" title="诡异的事：关于C/C++输入输出 (2007-06-15)">诡异的事：关于C/C++输入输出</a> (3)</li>
</ul>

]]></content:encoded>
			<wfw:commentRss>http://blog.tomtung.com/2008/08/cpp-primer-reding-notes-chapter6/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>C++ Primer 读书笔记 &#8211; 第五章</title>
		<link>http://blog.tomtung.com/2008/08/cpp-primer-reding-notes-chapter5/</link>
		<comments>http://blog.tomtung.com/2008/08/cpp-primer-reding-notes-chapter5/#comments</comments>
		<pubDate>Fri, 22 Aug 2008 17:31:47 +0000</pubDate>
		<dc:creator>逆铭</dc:creator>
				<category><![CDATA[新长征路上的代码]]></category>
		<category><![CDATA[cpp]]></category>
		<category><![CDATA[读书笔记]]></category>

		<guid isPermaLink="false">http://blog.tomtung.com/2008/08/c-primer-%e8%af%bb%e4%b9%a6%e7%ac%94%e8%ae%b0-%e7%ac%ac%e4%ba%94%e7%ab%a0/</guid>
		<description><![CDATA[[笔记索引] 第５章 表达式 ⒈ 表达式(expression_r)是一个C++程序中最低级的计算，由一或多个用一个操作符(operator)连接起来的操作数(operands)组成 ⒉ 每个表达式都产生一个结果。表达式可以用作操作数，因此可用多个操作符编写复合表达式 ⒊ 在求解表达式的过程中如果需要储存运算结果，编译器会自动创建没有名字的临时对象(temporary object)，这些对象会在外围最大的表达式结束后释放 ⒋ 表达式是否合法、合法表达式含义如何(执行什么操作、结果是什么类型)均取决于操作数的类型 ⒌⒈ 算术操作符 ⒈ 按优先级从高到低排列为： 一元正+, 一元负-; 乘法*, 除法/, 取模%; 加法+, 减法- ⒉ 关于除法/ ⑴ 两整数相除结果仍为整数，商的小数部分被截去 ⑵ 一正一负两整数相除，结果值向0一侧还是向-∞一侧取整依赖于机器 ⒊ 关于取模 ⑴ 操作数只能为整型 ⑵ 两操作数均为负时结果为负或0; 两操作数一正一负时，结果的符号随哪个操作数而定依赖于机器 ⒌⒉ 关系操作符和逻辑操作符 ⒈ 按优先级从高到低排列为： 逻辑非!; 小于&#60;, 小于等于&#60;=, 大于&#62;, 大于等于&#62;=; 相等==, 不等!=; 逻辑与&#38;&#38;; 逻辑或&#124;&#124; ⒉ 关系操作符和逻辑操作符接受算术或指针型操作数，并返回 bool 型值 逻辑操作符视其操作数为条件表达式 ⒊ [...]]]></description>
			<content:encoded><![CDATA[<p style="text-align: right;"><a href="http://blog.tomtung.com/2008/08/cpp-primer-reding-notes-index/" target="_blank"><span style="font-size: 12px;"> [笔记索引]</span></a></p>
<p><span style="font-size: 12px;">第５章 表达式<br />
⒈ 表达式(expression_r)是一个C++程序中最低级的计算，由一或多个用一个操作符(operator)连接起来的操作数(operands)组成<br />
⒉ 每个表达式都产生一个结果。表达式可以用作操作数，因此可用多个操作符编写复合表达式<br />
⒊ 在求解表达式的过程中如果需要储存运算结果，编译器会自动创建没有名字的临时对象(temporary object)，这些对象会在外围最大的表达式结束后释放<br />
⒋ 表达式是否合法、合法表达式含义如何(执行什么操作、结果是什么类型)均取决于操作数的类型</span></p>
<p><span style="font-size: 12px;"> ⒌⒈ 算术操作符<br />
⒈ 按优先级从高到低排列为：<br />
一元正+, 一元负-; 乘法*, 除法/, 取模%; 加法+, 减法-<br />
⒉ 关于除法/<br />
⑴ 两整数相除结果仍为整数，商的小数部分被截去<br />
⑵ 一正一负两整数相除，结果值向</span><span style="color: #ff00ff;">0</span>一侧还是向-∞一侧取整依赖于机器<br />
⒊ 关于取模<br />
⑴ 操作数只能为整型<br />
⑵ 两操作数均为负时结果为负或<span style="color: #ff00ff;">0</span>;<br />
两操作数一正一负时，结果的符号随哪个操作数而定依赖于机器</p>
<p>⒌⒉ 关系操作符和逻辑操作符<br />
⒈ 按优先级从高到低排列为：<br />
逻辑非!; 小于&lt;, 小于等于&lt;=, 大于&gt;, 大于等于&gt;=; 相等==, 不等!=; 逻辑与&amp;&amp;; 逻辑或||<br />
⒉ 关系操作符和逻辑操作符接受算术或指针型操作数，并返回 <span style="color: #2e8b57;"><strong>bool</strong></span> 型值<br />
逻辑操作符视其操作数为条件表达式<br />
⒊ 逻辑与&amp;&amp;和逻辑或||操作符支持短路求值(short-circuit evaluation)<br />
⒋ 不应串接使用关系操作符<br />
形如i&lt;j&lt;k的表达式得不到预期结果</p>
<p>⒌⒊ 位操作符<br />
⒈ 按优先级从高到低排列为：<br />
位取反~; 左移&lt;&lt;, 右移&gt;&gt;; 位与&amp;; 位异或^; 位或|<br />
⒉ 位操作符使用整型操作数，将其视为二进制位的集合<br />
由于负整数的符号位如何处理依赖于机器，因此应使用 <span style="color: #2e8b57;"><strong>unsigned</strong></span> 整型操作数</p>
<p>⒌⒋ 赋值操作符<br />
⒈ 赋值操作符的左操作数须为非 <span style="color: #2e8b57;"><strong>const</strong></span> 左值<br />
赋值表达式的结果即为其左操作数(左值)<br />
⒉ 赋值操作符从右向左结合，因此当各操作数都有相同的通用类型时，允许在一个表达式中进行多次赋值，如：<br />
i = j = k = <span style="color: #ff00ff;">0</span>;<br />
⒊ 复合赋值操作符<br />
对于任意二元算术操作符或二元位操作符 op<br />
a op= b;<br />
相当于<br />
a = a op b;<br />
二者显著的差别在于前者只计算了一次左操作数，后者则计算了两次</p>
<p>⒌⒌ 自增和自减操作符<br />
⒈ 自增++和自减&#8211;操作符为对象加<span style="color: #ff00ff;">1</span>或减<span style="color: #ff00ff;">1</span>提供了方便简短的实现方式，有前置和后置两种使用形式<br />
前置操作返回加(减)<span style="color: #ff00ff;">1</span>后的对象(左值)，后置操作返回操作数的原值(右值)<br />
⒉ 出于性能考虑，应只在必要时才使用后置操作符<br />
后置操作符需要先保存原值以便返回，而前置操作符只需加(减)<span style="color: #ff00ff;">1</span>后直接返回对象即可</p>
<p>⒌⒍ 箭头操作符<br />
箭头操作符用于获取指针指向类类型对象的成员。<br />
下面两个表达式等价：<br />
p-&gt;foo;<br />
(*p).foo;</p>
<p>⒌⒎ 条件操作符<br />
⒈ 条件操作符是C++中唯一的三元操作符，能将简短的 <span style="color: #804040;"><strong>if</strong></span>-<span style="color: #804040;"><strong>else</strong></span> 语句嵌入表达式<br />
格式为 cond ? expr1 : expr2<br />
首先计算 cond 值，若为 <span style="color: #ff00ff;">true</span> 则计算并返回 expr1, 为 <span style="color: #ff00ff;">false</span> 则计算并返回 expr2<br />
⒉ 避免深度嵌套以保证可读性</p>
<p>⒌⒏ <span style="color: #804040;"><strong>sizeof</strong></span> 操作符<br />
⒈ <span style="color: #804040;"><strong>sizeof</strong></span> 操作符用于返回一个对象或类型的大小(单位字节，类型 <span style="color: #2e8b57;"><strong>size_t</strong></span>)<br />
形式为 <span style="color: #804040;"><strong>sizeof</strong></span> expr<br />
或  <span style="color: #804040;"><strong>sizeof</strong></span>(type_name)<br />
⒉ <span style="color: #804040;"><strong>sizeof</strong></span> 表达式的结果是编译时常量<br />
对表达式使用 <span style="color: #804040;"><strong>sizeof</strong></span> 时该表达式的值并不会被计算<br />
⒊ 对数组作 <span style="color: #804040;"><strong>sizeof</strong></span> 将得到整个数组在内存中的长度</p>
<p>⒌⒐ 逗号操作符<br />
逗号表达式是一组由逗号分隔的表达式，从左向右计算并返回最右边表达式的值(若该表达式为左值则返回左值)</p>
<p>⒌⒒ <span style="color: #804040;"><strong>new</strong></span> 和 <span style="color: #804040;"><strong>delete</strong></span> 表达式<br />
⒈ <span style="color: #804040;"><strong>new</strong></span> 和 <span style="color: #804040;"><strong>delete</strong></span> 表达式分别用于动态创建和释放单个对象或一个数组<br />
⒉ <span style="color: #804040;"><strong>new</strong></span> 表达式<br />
⑴ <span style="color: #804040;"><strong>new</strong></span> 表达式动态创建单个对象或一个数组，并返回指向该对象或数组首元素的指针<br />
① 动态数组维数为<span style="color: #ff00ff;">0</span>值时也将返回有效的非零指针，但不能解引用<br />
② 可以创建动态的 <span style="color: #2e8b57;"><strong>const</strong></span> 对象或数组，它们无法修改但可以释放<br />
③ 如果无法获取需要的空间，系统将抛出 bad_alloc 异常<br />
⑵ 分配与对象(或数组元素)初始化<br />
① 默认内置类型不初始化，类类型调用默认构造函数(必须提供)<br />
单个对象: <span style="color: #804040;"><strong>new</strong></span> [<span style="color: #2e8b57;"><strong>const</strong></span>] 类型名<br />
一个数组: <span style="color: #804040;"><strong>new</strong></span> [<span style="color: #2e8b57;"><strong>const</strong></span>] 类型名[维数]<br />
② 添加空括号()可执行值初始化(value initialization)<br />
即内置类型对象置为<span style="color: #ff00ff;">0</span>，类类型对象调用默认构造函数(必须提供)<br />
单个对象: <span style="color: #804040;"><strong>new</strong></span> [<span style="color: #2e8b57;"><strong>const</strong></span>] 类型名()<br />
一个数组: <span style="color: #804040;"><strong>new</strong></span> [<span style="color: #2e8b57;"><strong>const</strong></span>] 类型名[维数]()<br />
注：对于后者，我使用的编译器中，VC初始化后会把元素置为<span style="color: #ff00ff;">0</span>，但mingw不会<br />
③ 执行直接初始化<br />
单个对象: <span style="color: #804040;"><strong>new</strong></span> [<span style="color: #2e8b57;"><strong>const</strong></span>] 类型名(初始化式)<br />
动态数组元素不支持类似初始化方式<br />
⒊ <span style="color: #804040;"><strong>delete</strong></span> 表达式<br />
⑴ 由 <span style="color: #804040;"><strong>new</strong></span> 动态分配的对象或数组需要显式地使用 <span style="color: #804040;"><strong>delete</strong></span> 表达式释放(否则会造成内存泄漏)<br />
⑵ <span style="color: #804040;"><strong>delete</strong></span> ptr 和 <span style="color: #804040;"><strong>delete</strong></span>[] ptr 分别释放单个对象和动态数组<br />
① 如果指针不指向由 <span style="color: #804040;"><strong>new</strong></span> 分配的对象，则对其 <span style="color: #804040;"><strong>delete</strong></span> 不合法<br />
例外：对零指针 <span style="color: #804040;"><strong>delete</strong></span> 是合法的<br />
② 读写已释放的对象或对同一内存空间多次 <span style="color: #804040;"><strong>delete</strong></span> 都可能导致错误<br />
因此 <span style="color: #804040;"><strong>delete</strong></span> 之后应立即重置该指针的值(一般重置为<span style="color: #ff00ff;">0</span>)<br />
③ 释放动态数组如果丢掉方括号[]，将可能导致编译器无法发现的错误</p>
<p>⒌⒑ 复合表达式的求值<br />
⒈ 含有两个或以上操作符的表达式称为复合表达式(compound expression_r)<br />
操作数和操作符的结合方式决定了符合表达式的值，而前者取决于操作符的优先级和结合性：<br />
操作数优先与优先级更高的操作符结合；操作符优先级相同时则由结合性决定结合方向<br />
⒉ 圆括号()凌驾于优先级之上<br />
若不确定结合方式，则使用圆括号()强制确定操作数的组合<br />
⒊ 结合方式确定并不意味着操作数的计算顺序并不确定<br />
若修改了操作数的值，则不要在同一语句的其它地方再使用它，除非操作数的计算次序不成问题<br />
⒋ <a href="http://tomtung.jimdo.com/download/141592104/48aefa26/7eef8a1fec7302d00f283d68ed6b141c80302a10/Operator+Precedence+Table.html" target="_blank"><span style="font-size: 12px;">运算符优先级与结合性表</span></a></p>
<p><span style="font-size: 12px;">⒌⒓ 类型转换<br />
⒈ 隐式类型转换<br />
两个类型间存在可转换关系，则称两个类型相关<br />
⑴ 何时发生<br />
当编译器期望获得某种类型的数据却得到另一种类型的，就会尝试自动转换类型<br />
具体情况包括：<br />
① 表达式中不同类型的多个操作数被转换到同一类型<br />
② 用作条件的表达式被转换为 </span><span style="color: #2e8b57;"><strong>bool</strong></span> 型<br />
③ 用一表达式对某变量初始化或赋值时，前者转换为后者的类型<br />
④ 给函数传递实参和返回值时可能发生隐式类型转换<br />
⑵ 内置类型转换规则<br />
① 算术类型间的转换<br />
ⅰ 浮点型转换为整型时小数部分被抛弃(在赋值、初始化等情况下发生)<br />
ⅱ 二元(算术、关系等)操作符表达式中，为试图保留精度会把较小的类型转换为较大的类型<br />
ａ类型提升<br />
· 将比 <span style="color: #2e8b57;"><strong>int</strong></span> 小的整型提升为 <span style="color: #2e8b57;"><strong>int</strong></span> 或(当 <span style="color: #2e8b57;"><strong>int</strong></span> 不足以容纳原类型的所有可能值时)<span style="color: #2e8b57;"><strong>unsigned</strong></span> <span style="color: #2e8b57;"><strong>int</strong></span><br />
· 将 <span style="color: #2e8b57;"><strong>float</strong></span> 提升为 <span style="color: #2e8b57;"><strong>double</strong></span><br />
ｂ <span style="color: #2e8b57;"><strong>signed</strong></span> 与 <span style="color: #2e8b57;"><strong>unsigned</strong></span> 之间的转换<br />
· 对于 <span style="color: #2e8b57;"><strong>signed</strong></span> 较小类型和 <span style="color: #2e8b57;"><strong>unsigned</strong></span> 较大或相同类型，前者转换为后者<br />
· 对于 <span style="color: #2e8b57;"><strong>signed</strong></span> 较大类型和 <span style="color: #2e8b57;"><strong>unsigned</strong></span> 较小类型，如何操作依赖于机器:<br />
前者若能表示后者所有可能值则后者转换为前者，否则都转换为前者的 <span style="color: #2e8b57;"><strong>unsigned</strong></span> 形式<br />
以上两种情况，负值有可能会被转换为 <span style="color: #2e8b57;"><strong>unsigned</strong></span> 导致溢出，造成意料之外的结果<br />
② 转换为指针<br />
ⅰ 表达式中的数组名会自动转换为指向数组首元素的指针<br />
但以下情况除外：<br />
ａ数组作为取地址操作符&amp;的操作数<br />
ｂ数组作为 <span style="color: #804040;"><strong>sizeof</strong></span> 操作符的操作数<br />
ｃ使用数组对数组的引用初始化时<br />
ⅱ 指向任意类型对象的指针都可转换为 <span style="color: #2e8b57;"><strong>void</strong></span>* 型<br />
ⅲ 整型常量<span style="color: #ff00ff;">0</span>可转换为任意指针类型<br />
③ <span style="color: #2e8b57;"><strong>bool</strong></span> 类型转换<br />
ⅰ 算术值和指针值转换为 <span style="color: #2e8b57;"><strong>bool</strong></span> 型<br />
<span style="color: #ff00ff;">0</span> → <span style="color: #ff00ff;">false</span> 非<span style="color: #ff00ff;">0</span> → <span style="color: #ff00ff;">true</span><br />
ⅱ <span style="color: #2e8b57;"><strong>bool</strong></span> 值转换为算术类型<br />
<span style="color: #ff00ff;">true</span> → <span style="color: #ff00ff;">1</span> <span style="color: #ff00ff;">false</span> → <span style="color: #ff00ff;">0</span><br />
④ 枚举成员转换为整型<br />
枚举类型对象或枚举成员可自动转换为整型(具体类型依赖于机器和枚举成员最大值，但至少为int)<br />
⑤ 转换为 <span style="color: #2e8b57;"><strong>const</strong></span> 对象<br />
非 <span style="color: #2e8b57;"><strong>const</strong></span> 对象在初始化相关的 <span style="color: #2e8b57;"><strong>const</strong></span> 型引用时自动转换为 <span style="color: #2e8b57;"><strong>const</strong></span><br />
非 <span style="color: #2e8b57;"><strong>const</strong></span> 对象的地址或指向非 <span style="color: #2e8b57;"><strong>const</strong></span> 对象的指针也可转换为指向 <span style="color: #2e8b57;"><strong>const</strong></span> 对象的指针<br />
⒉ 显式类型转换<br />
⑴ 若可能，避免使用强制类型转换<br />
确实需要使用时也应尽量小心<br />
⑵ 命名的强制类型转换<br />
① <span style="color: #804040;"><strong>dynamic_cast</strong></span><br />
用于运行时类型识别(RTTI)<br />
② <span style="color: #804040;"><strong>const_cast</strong></span><br />
可以添加或去除指针、数据成员指针或引用的 <span style="color: #2e8b57;"><strong>const</strong></span> 特性<br />
③ <span style="color: #804040;"><strong>static_cast</strong></span><br />
ⅰ 可以显式完成编译器隐式执行的任何类型转换<br />
因潜在精度损失产生的编译器警告会被关闭<br />
· 可以用以避免不必要的隐式转换，如<br />
已知 d 为 <span style="color: #2e8b57;"><strong>double</strong></span>, i 为 <span style="color: #2e8b57;"><strong>int</strong></span>, 将 i*=d; 写成 i*=<span style="color: #804040;"><strong>static_cast</strong></span>&lt;<span style="color: #2e8b57;"><strong>int</strong></span>&gt;(d); 可省去将 i 转换为 <span style="color: #2e8b57;"><strong>double</strong></span> 这一非必要步骤<br />
④ <span style="color: #804040;"><strong>reinterpret_cast</strong></span><br />
为操作数的位模式提供较低层次的重新解释，结果依赖编译器和机器<br />
任何不当使用都可能导致运行时错误<br />
⑶ 旧式强制转换<br />
在合法使用 <span style="color: #804040;"><strong>static_cast</strong></span> 或 <span style="color: #804040;"><strong>const_cast</strong></span> 的地方，提供与命名强制转换一样的功能<br />
若两种转换均不合法，就执行 <span style="color: #804040;"><strong>reinterpret_cast</strong></span><br />
由于不易判别每个显式转换的潜在风险，不推荐使用</p>

	<br />Tags：<a href="http://blog.tomtung.com/tag/cpp/" title="cpp" rel="tag">cpp</a>, <a href="http://blog.tomtung.com/tag/%e8%af%bb%e4%b9%a6%e7%ac%94%e8%ae%b0/" title="读书笔记" rel="tag">读书笔记</a><br />

	<br /><h3>Related Posts</h3>
	<ul class="st-related-posts">
	<li><a href="http://blog.tomtung.com/2010/02/sinablog2wordpress/" title="sinablog2wordpress：从新浪博客搬家到WordPress (2010-02-06)">sinablog2wordpress：从新浪博客搬家到WordPress</a> (17)</li>
	<li><a href="http://blog.tomtung.com/2008/09/unable-to-stay/" title="写在临行前 (2008-09-18)">写在临行前</a> (9)</li>
	<li><a href="http://blog.tomtung.com/2008/08/cpp-primer-reding-notes-index/" title="C++ Primer 读书笔记 &#8211; 索引 (2008-08-07)">C++ Primer 读书笔记 &#8211; 索引</a> (2)</li>
	<li><a href="http://blog.tomtung.com/2009/03/try-template-meta-programming/" title="小试模板元编程 (2009-03-01)">小试模板元编程</a> (7)</li>
	<li><a href="http://blog.tomtung.com/2008/08/cpp-primer-reding-notes-chapter4/" title="C++ Primer 读书笔记 &#8211; 第四章 (2008-08-20)">C++ Primer 读书笔记 &#8211; 第四章</a> (0)</li>
</ul>

]]></content:encoded>
			<wfw:commentRss>http://blog.tomtung.com/2008/08/cpp-primer-reding-notes-chapter5/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>C++ Primer 读书笔记 &#8211; 第四章</title>
		<link>http://blog.tomtung.com/2008/08/cpp-primer-reding-notes-chapter4/</link>
		<comments>http://blog.tomtung.com/2008/08/cpp-primer-reding-notes-chapter4/#comments</comments>
		<pubDate>Tue, 19 Aug 2008 17:17:47 +0000</pubDate>
		<dc:creator>逆铭</dc:creator>
				<category><![CDATA[新长征路上的代码]]></category>
		<category><![CDATA[cpp]]></category>
		<category><![CDATA[读书笔记]]></category>

		<guid isPermaLink="false">http://blog.tomtung.com/2008/08/c-primer-%e8%af%bb%e4%b9%a6%e7%ac%94%e8%ae%b0-%e7%ac%ac%e5%9b%9b%e7%ab%a0/</guid>
		<description><![CDATA[[笔记索引] 第４章 数组和指针 现代C++程序应使用vector和迭代器代替数组和指针，除非前二者不满足对效率的特殊要求 ⒋⒈ 数组 ⒈ 数组是由类型说明符、标识符和维度组成的复合类型，能保存一组某种类型的未命名对象 ⒉ 定义和初始化 ⑴ 类型说明符规定了存放于数组中元素的类型 可使用除引用外的任意类型，包括数组本身(数组的数组即多维数组) ⑵ 维数指定数组中包含的元素个数，须用值大于等于1的常量表达式定义，一经指定不可改变 ⑶ 可以使用初值列表(用花括号括起的一组用逗号分隔的初值，可为空)显式提供元素的初值 ① 此时可不指定维数，数组长度将由初值列表中的元素个数自动确定 ② 若指定维数： ⅰ 维数值不能小于初值个数 ⅱ 若维数值大于初始化列表中提供的元素个数，则只用初值列表初始化数组中前面对应的元素 其余元素，若为内置类型则初始化为0，若为类类型则调用默认构造函数 ③ 对于多维数组，除第一维外其余维数都须显示指定 初值列表可内嵌花括号以指明各初值对应的位置，若不使用内嵌花括号则依次初始化 ⑷ 若未提供初值列表，则数组元素像普通变量一样初始化 ⑸ 使用字符串字面值初始化字符数组时注意前者结尾隐含的空字符 ⒊ 不允许数组直接复制和赋值 ⒋ 数组元素可通过下标操作符[]访问，下标从0开始 下标越界将导致运行时错误 ⒋⒉ 指针 ⒈ 指针是一种能储存对象地址的对象 ⒉ 定义和初始化 ⑴ 形式： 类型名* 标识符; 类型名指定指针指向对象的类型(类型名为 void 时指针可指向任意类型的对象) ① 连续声明多个指针时，每个标识符前都要加*号 ② 可以连续使用多个星号*表示指向指针的指针 [...]]]></description>
			<content:encoded><![CDATA[<p style="text-align: right;"><a href="http://blog.tomtung.com/2008/08/cpp-primer-reding-notes-index/" target="_blank"><span style="font-size: 12px;"> [笔记索引]</span></a></p>
<p><span style="font-size: 12px;">第４章 数组和指针<br />
现代C++程序应使用vector和迭代器代替数组和指针，除非前二者不满足对效率的特殊要求</span></p>
<p><span style="font-size: 12px;"> ⒋⒈ 数组<br />
⒈ 数组是由类型说明符、标识符和维度组成的复合类型，能保存一组某种类型的未命名对象<br />
⒉ 定义和初始化<br />
⑴ 类型说明符规定了存放于数组中元素的类型<br />
可使用除引用外的任意类型，包括数组本身(数组的数组即多维数组)<br />
⑵ 维数指定数组中包含的元素个数，须用值大于等于</span><span style="color: #ff00ff;">1</span>的常量表达式定义，一经指定不可改变<br />
⑶ 可以使用初值列表(用花括号括起的一组用逗号分隔的初值，可为空)显式提供元素的初值<br />
① 此时可不指定维数，数组长度将由初值列表中的元素个数自动确定<br />
② 若指定维数：<br />
ⅰ 维数值不能小于初值个数<br />
ⅱ 若维数值大于初始化列表中提供的元素个数，则只用初值列表初始化数组中前面对应的元素<br />
其余元素，若为内置类型则初始化为<span style="color: #ff00ff;">0</span>，若为类类型则调用默认构造函数<br />
③ 对于多维数组，除第一维外其余维数都须显示指定<br />
初值列表可内嵌花括号以指明各初值对应的位置，若不使用内嵌花括号则依次初始化<br />
⑷ 若未提供初值列表，则数组元素像普通变量一样初始化<br />
⑸ 使用字符串字面值初始化字符数组时注意前者结尾隐含的空字符<br />
⒊ 不允许数组直接复制和赋值<br />
⒋ 数组元素可通过下标操作符[]访问，下标从<span style="color: #ff00ff;">0</span>开始<br />
下标越界将导致运行时错误</p>
<p>⒋⒉ 指针<br />
⒈ 指针是一种能储存对象地址的对象<br />
⒉ 定义和初始化<br />
⑴ 形式： 类型名* 标识符;<br />
类型名指定指针指向对象的类型(类型名为 <span style="color: #2e8b57;"><strong>void</strong></span> 时指针可指向任意类型的对象)<br />
① 连续声明多个指针时，每个标识符前都要加*号<br />
② 可以连续使用多个星号*表示指向指针的指针<br />
③ <span style="color: #2e8b57;"><strong>const</strong></span> 限定符<br />
ⅰ 指向 <span style="color: #2e8b57;"><strong>const</strong></span> 对象的指针<br />
ａ形式： <span style="color: #2e8b57;"><strong>const</strong></span> 类型名* 标识符;<br />
（或 类型名 <span style="color: #2e8b57;"><strong>const</strong></span>* 标识符;）<br />
ｂ <span style="color: #2e8b57;"><strong>const</strong></span> 对象只能与这种指针关联<br />
ｃ不能通过这种指针修改所指对象，无论所指是否为 <span style="color: #2e8b57;"><strong>const</strong></span><br />
由于有此特性，该种指针常用作函数形参以防止所指对象被意外修改<br />
ⅱ <span style="color: #2e8b57;"><strong>const</strong></span> 指针<br />
ａ形式：类型名* <span style="color: #2e8b57;"><strong>const</strong></span> 标识符<br />
ｂ指针本身的值不能修改，即不能改变指向，但可以改变所指对象的值<br />
ⅲ 指向 <span style="color: #2e8b57;"><strong>const</strong></span> 对象的 <span style="color: #2e8b57;"><strong>const</strong></span> 指针<br />
ａ形式： <span style="color: #2e8b57;"><strong>const</strong></span> 类型名* <span style="color: #2e8b57;"><strong>const</strong></span> 标识符<br />
ｂ既不能改变所指对象的值，也不能改变指向<br />
ⅳ <span style="color: #2e8b57;"><strong>typedef</strong></span> T* pT; 则 <span style="color: #2e8b57;"><strong>const</strong></span> pT t 和 pT <span style="color: #2e8b57;"><strong>const</strong></span> t 均与 T* <span style="color: #2e8b57;"><strong>const</strong></span> t 等价<br />
④ 指向数组的指针<br />
ⅰ 形式： 类型名 (*标识符)[维数][维数]..[维数];<br />
ⅱ <span style="color: #2e8b57;"><strong>typedef</strong></span> 类型名新类型名[维数][维数]..[维数];<br />
得到数组类型的别名，可以此简化定义<br />
⑵ 应避免使用未初始化的指针<br />
而一个有效的指针必然为以下三种状态之一：<br />
① 保存某确定对象的地址<br />
② 指向一个对象的下一位置<br />
③ 值为<span style="color: #ff00ff;">0</span><br />
因此在对指针初始化和赋值时只能使用：<br />
① 值为<span style="color: #ff00ff;">0</span>的常量表达式<br />
② 类型匹配的对象的地址(使用取地址操作符&amp;获得,该运算符只能对左值使用)<br />
③ 另一对象下一位置的地址<br />
④ 同类型另一有效指针<br />
⒊ 指针操作<br />
⑴ 使用解引用操作符*可以获得指针指向对象的左值，从而操作所指对象<br />
而对指针直接进行赋值等操作将改变指针本身的值，使指针指向另一对象<br />
⑵ 指针可被当作数组的迭代器，用以访问数组元素<br />
① 指针的算术操作<br />
ⅰ 指针与整型值相加(减)，得到指向所指元素向后(前)移动相应位置的数组元素的新指针<br />
ⅱ 两个指向同一数组中元素的指针(含超出末端指针)相减，得到一个 <span style="color: #2e8b57;"><strong>ptrdiff_t</strong></span> 型(定义在头文件 cstddef 中， <span style="color: #2e8b57;"><strong>signed</strong></span> 整型)结果，表示两指针所指元素间的距离<br />
② 对指针进行下标操作[]，返回所指元素向后(前)移动相应位置的数组元素引用<br />
③ 可以计算超出末端指针，但不允许对其进行解引用操作<br />
计算越界指针也是非法的<br />
⑶ <span style="color: #2e8b57;"><strong>void</strong></span>* 指针不支持以上操作</p>
<p>⒋⒊ C风格字符串<br />
⒈ C风格字符串是以空字符结尾的字符数组<br />
字符串字面值就是其实例<br />
⒉ C风格字符串的标准库函数(头文件 cstring)<br />
传给以下库函数的须为指向以空字符结尾的字符数组的非零指针<br />
⑴ <span style="color: #2e8b57;"><strong>size_t</strong></span> strlen( <span style="color: #2e8b57;"><strong>char</strong></span> *str );<br />
返回字符串长度(不包括结尾的空字符)<br />
⑵ <span style="color: #2e8b57;"><strong>int</strong></span> strcmp( <span style="color: #2e8b57;"><strong>const</strong></span> <span style="color: #2e8b57;"><strong>char</strong></span> *str1, <span style="color: #2e8b57;"><strong>const</strong></span> <span style="color: #2e8b57;"><strong>char</strong></span> *str2 );<br />
比较两个字符串，如果前者大于后者返回正数，小于返回负数，等于返回<span style="color: #ff00ff;">0</span><br />
注：不能使用&gt;,&lt;,==操作符比较，它们只会比较存放地址而不会比较字符串<br />
⑶ <span style="color: #2e8b57;"><strong>char</strong></span> *strcat( <span style="color: #2e8b57;"><strong>char</strong></span> *str1, <span style="color: #2e8b57;"><strong>const</strong></span> <span style="color: #2e8b57;"><strong>char</strong></span> *str2 );<br />
将str2连接到str1后面，并返回str1<br />
此函数不进行越界检查<br />
⑷ <span style="color: #2e8b57;"><strong>char</strong></span> *strcpy( <span style="color: #2e8b57;"><strong>char</strong></span> *to, <span style="color: #2e8b57;"><strong>const</strong></span> <span style="color: #2e8b57;"><strong>char</strong></span> *from );<br />
将str2复制到str1字符串，并返回str1<br />
此函数不进行越界检查<br />
⑸ <span style="color: #2e8b57;"><strong>char</strong></span> *strncat( <span style="color: #2e8b57;"><strong>char</strong></span> *str1, <span style="color: #2e8b57;"><strong>const</strong></span> <span style="color: #2e8b57;"><strong>char</strong></span> *str2, <span style="color: #2e8b57;"><strong>size_t</strong></span> count );<br />
将str2的前至多count个字符连接到str1后面，并返回str1<br />
如果越界则截断字符串，因此比strcat安全<br />
⑹ <span style="color: #2e8b57;"><strong>char</strong></span> *strncpy( <span style="color: #2e8b57;"><strong>char</strong></span> *to, <span style="color: #2e8b57;"><strong>const</strong></span> <span style="color: #2e8b57;"><strong>char</strong></span> *from, <span style="color: #2e8b57;"><strong>size_t</strong></span> count );<br />
将str2的前至多count个字符复制到str1，并返回str1<br />
如果越界则截断字符串，因此比strcpy安全<br />
⒊ 对于大部分程序而言，标准库类型 string 无论安全性还是效率均强过C风格字符串，因此应尽可能使用 string</p>

	<br />Tags：<a href="http://blog.tomtung.com/tag/cpp/" title="cpp" rel="tag">cpp</a>, <a href="http://blog.tomtung.com/tag/%e8%af%bb%e4%b9%a6%e7%ac%94%e8%ae%b0/" title="读书笔记" rel="tag">读书笔记</a><br />

	<br /><h3>Related Posts</h3>
	<ul class="st-related-posts">
	<li><a href="http://blog.tomtung.com/2008/09/unable-to-stay/" title="写在临行前 (2008-09-18)">写在临行前</a> (9)</li>
	<li><a href="http://blog.tomtung.com/2008/08/cpp-primer-reding-notes-chapter5/" title="C++ Primer 读书笔记 &#8211; 第五章 (2008-08-23)">C++ Primer 读书笔记 &#8211; 第五章</a> (1)</li>
	<li><a href="http://blog.tomtung.com/2008/08/cpp-primer-reding-notes-chapter7/" title="C++ Primer 读书笔记 &#8211; 第七章 (2008-08-28)">C++ Primer 读书笔记 &#8211; 第七章</a> (0)</li>
	<li><a href="http://blog.tomtung.com/2008/08/cpp-primer-reding-notes-chapter2/" title="C++ Primer 读书笔记 &#8211; 第二章 (2008-08-07)">C++ Primer 读书笔记 &#8211; 第二章</a> (4)</li>
	<li><a href="http://blog.tomtung.com/2010/02/sinablog2wordpress/" title="sinablog2wordpress：从新浪博客搬家到WordPress (2010-02-06)">sinablog2wordpress：从新浪博客搬家到WordPress</a> (17)</li>
</ul>

]]></content:encoded>
			<wfw:commentRss>http://blog.tomtung.com/2008/08/cpp-primer-reding-notes-chapter4/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>C++ Primer 读书笔记 &#8211; 第三章</title>
		<link>http://blog.tomtung.com/2008/08/cpp-primer-reding-notes-chapter3/</link>
		<comments>http://blog.tomtung.com/2008/08/cpp-primer-reding-notes-chapter3/#comments</comments>
		<pubDate>Tue, 12 Aug 2008 15:05:31 +0000</pubDate>
		<dc:creator>逆铭</dc:creator>
				<category><![CDATA[新长征路上的代码]]></category>
		<category><![CDATA[cpp]]></category>
		<category><![CDATA[读书笔记]]></category>

		<guid isPermaLink="false">http://blog.tomtung.com/2008/08/c-primer-%e8%af%bb%e4%b9%a6%e7%ac%94%e8%ae%b0-%e7%ac%ac%e4%b8%89%e7%ab%a0/</guid>
		<description><![CDATA[[笔记索引] 第３章 标准库类型 ⒊⒌ 标准库bitset类型 [以下下标和位数均为 size_t 型(定义在头文件 cstddef 中， unsigned 整型)] ⒈ bitset 是一种类模板，用于保存位集，并提供测位和置位操作 ⒉ 定义和初始化 bitset 在定义时需要以常量表达式的形式提供位数N 初始化时参数提供位数不足则剩余高阶位置为0，位数过多则抛弃多余高阶位 ⑴ bitset&#60;N&#62; b; 默认构造函数置各位为0 ⑵ bitset&#60;N&#62; b( unsigned long u ); 使用 unsigned long 值u的二进制形式初始化 ⑶ bitset&#60;N&#62; b( string s, size_t pos=0 ); bitset&#60;N&#62; b( string s, size_t pos, size_t m ); 使用 string 对象s或其(下标pos起到结尾或长度为m的)子串初始化 [...]]]></description>
			<content:encoded><![CDATA[<p style="text-align: right;"><a href="http://blog.tomtung.com/2008/08/cpp-primer-reding-notes-index/" target="_blank"><span style="font-size: 12px;"> [笔记索引]</span></a></p>
<p><span style="font-size: 12px;">第３章 标准库类型</span></p>
<p><span style="font-size: 12px;"> ⒊⒌ 标准库bitset类型<br />
<strong>[以下下标和位数均为 <span style="color: #2e8b57;">size_t</span> 型(定义在头文件 cstddef 中， <span style="color: #339900;">unsigned</span> 整型)]</strong><br />
⒈ bitset 是一种类模板，用于保存位集，并提供测位和置位操作<br />
⒉ 定义和初始化<br />
bitset 在定义时需要以常量表达式的形式提供位数N<br />
初始化时参数提供位数不足则剩余高阶位置为</span><span style="color: #ff00ff;">0</span>，位数过多则抛弃多余高阶位<br />
⑴ bitset&lt;N&gt; b;<br />
默认构造函数置各位为<span style="color: #ff00ff;">0</span><br />
⑵ bitset&lt;N&gt; b( <span style="color: #2e8b57;"><strong>unsigned</strong></span> <span style="color: #2e8b57;"><strong>long</strong></span> u );<br />
使用 <span style="color: #2e8b57;"><strong>unsigned</strong></span> <span style="color: #2e8b57;"><strong>long</strong></span> 值u的二进制形式初始化<br />
⑶ bitset&lt;N&gt; b( string s, <span style="color: #2e8b57;"><strong>size_t</strong></span> pos=<span style="color: #ff00ff;">0</span> );<br />
bitset&lt;N&gt; b( string s, <span style="color: #2e8b57;"><strong>size_t</strong></span> pos, <span style="color: #2e8b57;"><strong>size_t</strong></span> m );<br />
使用 string 对象s或其(下标pos起到结尾或长度为m的)子串初始化<br />
(子)串最右端对应低阶(low-order)位，向左依次类推<br />
⒊ 操作<br />
除支持<strong>所有内置位运算符</strong>以及==和!=外，还支持以下操作:<br />
⑴ 访问整个 bitset 对象<br />
① <span style="color: #2e8b57;"><strong>bool</strong></span> any();<br />
返回是否各位不全为<span style="color: #ff00ff;">0</span><br />
② <span style="color: #2e8b57;"><strong>bool</strong></span> none();<br />
返回是否各位全为<span style="color: #ff00ff;">0</span><br />
③ <span style="color: #2e8b57;"><strong>size_t</strong></span> count();<br />
返回为<span style="color: #ff00ff;">1</span>的位的个数<br />
④ <span style="color: #2e8b57;"><strong>size_t</strong></span> size();<br />
返回能容纳的位数<br />
⑵ 访问 bitset 对象中的位<br />
(从低阶位起，各位编号依次为 <span style="color: #ff00ff;">0</span>, <span style="color: #ff00ff;">1</span>, <span style="color: #ff00ff;">2</span>, <span style="color: #ff00ff;">3</span> &#8230;)<br />
① 下标操作符[]返回指定位的引用<br />
② <span style="color: #2e8b57;"><strong>bool</strong></span> test( <span style="color: #2e8b57;"><strong>size_t</strong></span> pos );<br />
返回指定位的值<br />
③ bitset&lt;N&gt;&amp; set( <span style="color: #2e8b57;"><strong>size_t</strong></span> pos, <span style="color: #2e8b57;"><strong>int</strong></span> val=<span style="color: #ff00ff;">1</span> );<br />
设定指定位的值并返回对象的引用<br />
④ bitset&lt;N&gt;&amp; reset( <span style="color: #2e8b57;"><strong>size_t</strong></span> pos );<br />
清零指定位并返回对象的引用<br />
⑤ bitset&lt;N&gt;&amp; flip( <span style="color: #2e8b57;"><strong>size_t</strong></span> pos );<br />
取反特定位并返回对象的引用<br />
也可以b[pos].flip()，返回指定位的引用<br />
⑶ 设置整个 bitset 对象<br />
① bitset&lt;N&gt;&amp; set();<br />
置所有位为<span style="color: #ff00ff;">1</span>并返回对象的引用<br />
② bitset&lt;N&gt;&amp; reset();<br />
清零所有位并返回对象的引用<br />
③ bitset&lt;N&gt;&amp; flip();<br />
取反所有位并返回对象的引用<br />
⑷ 获取 bitset 对象的值<br />
① <span style="color: #2e8b57;"><strong>unsigned</strong></span> <span style="color: #2e8b57;"><strong>long</strong></span> to_ulong();<br />
返回位模式相同的 <span style="color: #2e8b57;"><strong>unsigned</strong></span> <span style="color: #2e8b57;"><strong>long</strong></span> 值<br />
若越界则产生运行时异常<br />
② string to_string();<br />
返回字符串形式<br />
③ 可使用输出操作符打印 bitset 对象</p>

	<br />Tags：<a href="http://blog.tomtung.com/tag/cpp/" title="cpp" rel="tag">cpp</a>, <a href="http://blog.tomtung.com/tag/%e8%af%bb%e4%b9%a6%e7%ac%94%e8%ae%b0/" title="读书笔记" rel="tag">读书笔记</a><br />

	<br /><h3>Related Posts</h3>
	<ul class="st-related-posts">
	<li><a href="http://blog.tomtung.com/2008/10/first-month-in-buaa/" title="初来北航一个多月的零零碎碎 (2008-10-29)">初来北航一个多月的零零碎碎</a> (12)</li>
	<li><a href="http://blog.tomtung.com/2007/06/c-cpp-io-odd-behavior/" title="诡异的事：关于C/C++输入输出 (2007-06-15)">诡异的事：关于C/C++输入输出</a> (3)</li>
	<li><a href="http://blog.tomtung.com/2008/08/cpp-primer-reding-notes-chapter4/" title="C++ Primer 读书笔记 &#8211; 第四章 (2008-08-20)">C++ Primer 读书笔记 &#8211; 第四章</a> (0)</li>
	<li><a href="http://blog.tomtung.com/2010/02/sinablog2wordpress/" title="sinablog2wordpress：从新浪博客搬家到WordPress (2010-02-06)">sinablog2wordpress：从新浪博客搬家到WordPress</a> (17)</li>
	<li><a href="http://blog.tomtung.com/2008/09/cpp-primer-reding-notes-chapter8/" title="C++ Primer 读书笔记 &#8211; 第八章 (2008-09-02)">C++ Primer 读书笔记 &#8211; 第八章</a> (1)</li>
</ul>

]]></content:encoded>
			<wfw:commentRss>http://blog.tomtung.com/2008/08/cpp-primer-reding-notes-chapter3/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>C++ Primer 读书笔记 &#8211; 第二章</title>
		<link>http://blog.tomtung.com/2008/08/cpp-primer-reding-notes-chapter2/</link>
		<comments>http://blog.tomtung.com/2008/08/cpp-primer-reding-notes-chapter2/#comments</comments>
		<pubDate>Thu, 07 Aug 2008 15:06:22 +0000</pubDate>
		<dc:creator>逆铭</dc:creator>
				<category><![CDATA[新长征路上的代码]]></category>
		<category><![CDATA[cpp]]></category>
		<category><![CDATA[读书笔记]]></category>

		<guid isPermaLink="false">http://blog.tomtung.com/2008/08/c-primer-%e8%af%bb%e4%b9%a6%e7%ac%94%e8%ae%b0-%e7%ac%ac%e4%ba%8c%e7%ab%a0/</guid>
		<description><![CDATA[[笔记索引] 第２章 变量和基本类型 ⒉⒈ 基本内置类型 ⒈ 算数类型(arithmetic types)：表示数值(即整数和浮点数)的类型 ⒉⒈⒈ 整型 ⒈ 整型(Integral Types)：表示整数、字符和布尔值的算数类型。包括： ⑴ char: 字符型，通常单个机器字节，最小8位 wchar_t: 宽字符型，最小16位 用于扩展字符集，如汉字和日语 ⑵ short: 短整型，通常半个字长，最小16位 由于范围较小容易越界，执行整型算数运算时很少使用 int: 整型，通常1个字长，最小16位，大多数机器使用32位表示 用于整型运算时不易出错 long: 长整型，通常1或2个机器字长，最小32位 对用32位表示 int 而用64位表示 long 的机器，后者代价远高于前者，使用时如何选择应视情况而定 ⑶ bool: 布尔型，赋值时0值算数类型为 false, 其余为 true ⒉ 带符号(signed)和无符号(unsigned)类型 ⑴ 带符号类型可以表示正数、0和负数; 无符号只能表示非负数 ⑵ int,short,long 都默认为 signed ⑶ char 有3种不同类型: 普通, unsigned, signed, 但只有2种表示方式 [...]]]></description>
			<content:encoded><![CDATA[<p style="text-align: right;"><a href="http://blog.sina.com.cn/s/blog_4a443fd70100aq4s.html" target="_blank"><span style="font-size: 12px;"> </span></a><span style="font-size: 12px;">[<a href="http://blog.tomtung.com/2008/08/cpp-primer-reding-notes-index/">笔记索引</a>]</span></p>
<p><span style="font-size: 12px;">第２章 变量和基本类型</span></p>
<p><span style="font-size: 12px;"> ⒉⒈ 基本内置类型<br />
⒈ 算数类型(arithmetic types)：表示数值(即整数和浮点数)的类型</span></p>
<p><span style="font-size: 12px;"> ⒉⒈⒈ 整型<br />
⒈ 整型(Integral Types)：表示整数、字符和布尔值的算数类型。包括：<br />
⑴ </span><span style="color: #2e8b57;"><strong>char</strong></span>: 字符型，通常单个机器字节，最小<span style="color: #ff00ff;">8</span>位<br />
<span style="color: #804040;"><strong>wchar_t</strong></span>:<br />
宽字符型，最小<span style="color: #ff00ff;">16</span>位<br />
用于扩展字符集，如汉字和日语<br />
⑵ <span style="color: #2e8b57;"><strong>short</strong></span>:<br />
短整型，通常半个字长，最小<span style="color: #ff00ff;">16</span>位<br />
由于范围较小容易越界，执行整型算数运算时很少使用<br />
<span style="color: #804040;"><strong>int</strong></span>:<br />
整型，通常<span style="color: #ff00ff;">1</span>个字长，最小<span style="color: #ff00ff;">16</span>位，大多数机器使用<span style="color: #ff00ff;">32</span>位表示<br />
用于整型运算时不易出错<br />
<span style="color: #804040;"><strong>long</strong></span>:<br />
长整型，通常<span style="color: #ff00ff;">1</span>或<span style="color: #ff00ff;">2</span>个机器字长，最小<span style="color: #ff00ff;">32</span>位<br />
对用<span style="color: #ff00ff;">32</span>位表示 <span style="color: #2e8b57;"><strong>int</strong></span> 而用<span style="color: #ff00ff;">64</span>位表示 <span style="color: #2e8b57;"><strong>long</strong></span> 的机器，后者代价远高于前者，使用时如何选择应视情况而定<br />
⑶ <span style="color: #2e8b57;"><strong>bool</strong></span>:<br />
布尔型，赋值时<span style="color: #ff00ff;">0</span>值算数类型为 <span style="color: #ff00ff;">false</span>, 其余为 <span style="color: #ff00ff;">true</span><br />
⒉ 带符号(<span style="color: #2e8b57;"><strong>signed</strong></span>)和无符号(<span style="color: #2e8b57;"><strong>unsigned</strong></span>)类型<br />
⑴ 带符号类型可以表示正数、<span style="color: #ff00ff;">0</span>和负数; 无符号只能表示非负数<br />
⑵ <span style="color: #2e8b57;"><strong>int</strong></span>,<span style="color: #2e8b57;"><strong>short</strong></span>,<span style="color: #2e8b57;"><strong>long</strong></span> 都默认为 <span style="color: #2e8b57;"><strong>signed</strong></span><br />
⑶ <span style="color: #2e8b57;"><strong>char</strong></span> 有<span style="color: #ff00ff;">3</span>种不同类型: 普通, <span style="color: #2e8b57;"><strong>unsigned</strong></span>, <span style="color: #2e8b57;"><strong>signed</strong></span>, 但只有<span style="color: #ff00ff;">2</span>种表示方式<br />
<span style="color: #2e8b57;"><strong>char</strong></span> 使用哪一种表示方式由编译器决定<br />
⒊ 整型值的表示<br />
⑴ <span style="color: #2e8b57;"><strong>unsigned</strong></span> 型中，所有位都用来表示数值<br />
⑵ <span style="color: #2e8b57;"><strong>signed</strong></span> 型如何用位由编译器决定。常见策略为使用其中一个位作符号位，该位为<span style="color: #ff00ff;">1</span>则值为负，为<span style="color: #ff00ff;">0</span>则值为<span style="color: #ff00ff;">0</span>或正<br />
⒋ 将一个越界值赋给一个指定类型的变量时：<br />
⑴ 若类型为 <span style="color: #2e8b57;"><strong>unsigned</strong></span>, 编译器通过对越界值取模来满足要求<br />
⑵ 若类型为 <span style="color: #2e8b57;"><strong>signed</strong></span>, 行为未定义</p>
<p>⒉⒈⒉ 浮点型<br />
⑴ <span style="color: #2e8b57;"><strong>float</strong></span>:<br />
单精度浮点数，一般一个字长，最小<span style="color: #ff00ff;">6</span>位有效数字<br />
其可能的精度损失不可忽视<br />
⑵ <span style="color: #2e8b57;"><strong>double</strong></span>:<br />
双精度浮点数，一般两个字长，最小<span style="color: #ff00ff;">10</span>位有效数字<br />
其计算代最小<span style="color: #ff00ff;">8</span>位价与 <span style="color: #2e8b57;"><strong>float</strong></span> 相当，使用它基本不会错<br />
⑶ <span style="color: #2e8b57;"><strong>long</strong></span> <span style="color: #2e8b57;"><strong>double</strong></span>:<br />
扩展精度浮点数，一般三或四个字长，最小<span style="color: #ff00ff;">10</span>位有效数字<br />
其提供的额外精度往往无必要，且需承担额外的运行代价</p>
<p>⒉⒉ 字面值常量<br />
⒈ 整数字面值<br />
⑴ 定义字面值整型常量可以使用十进制、八进制(以<span style="color: #ff00ff;">0</span>开头表示)和十六进制(以0x或0X开头表示)中的任意一种<br />
⑵ 默认为 <span style="color: #2e8b57;"><strong>int</strong></span> 或 <span style="color: #2e8b57;"><strong>long</strong></span> 型(值适合 <span style="color: #2e8b57;"><strong>int</strong></span> 就为 <span style="color: #2e8b57;"><strong>int</strong></span> 型，比 <span style="color: #2e8b57;"><strong>int</strong></span> 大最小<span style="color: #ff00ff;">8</span>位就为 <span style="color: #2e8b57;"><strong>long</strong></span> 型)<br />
⑶ 数值后加上后缀 U, L, UL 分别表示 <span style="color: #2e8b57;"><strong>unsigned</strong></span>, <span style="color: #2e8b57;"><strong>long</strong></span>, <span style="color: #2e8b57;"><strong>unsigned</strong></span> <span style="color: #2e8b57;"><strong>long</strong></span><br />
⒉ 浮点数字面值<br />
⑴ 可以使用普通的十进制表示法或科学计数法表示。使用后者时，用E或e来标示指数<br />
⑵ 默认为 <span style="color: #2e8b57;"><strong>double</strong></span> 型<br />
⑶ 数值后加上后缀 F, L 分别表示 <span style="color: #2e8b57;"><strong>float</strong></span>, <span style="color: #2e8b57;"><strong>long</strong></span> <span style="color: #2e8b57;"><strong>double</strong></span><br />
⒊ 布尔字面值: <span style="color: #ff00ff;">true</span>, <span style="color: #ff00ff;">false</span><br />
⒋ 字符字面值<br />
⑴ 通过用单引号引起的字符或转义字符定义<br />
⑵ 前面加上L表示wchar_t型<br />
⑶ C++中定义的转义字符有：<br />
\&#8217; 单引号<br />
\<span style="color: #ff00ff;">&#8221; 双引号</span><br />
\\ 反斜杠<br />
\<span style="color: #ff00ff;">0</span> 空字符<br />
\a 响铃<br />
\b 后退<br />
\f 走纸<br />
\n 换行<br />
\r 回车<br />
\t 水平制表符<br />
\v 垂直制表符<br />
\oct 编号为oct的字符(oct表示一个八进制数，不必以<span style="color: #ff00ff;">0</span>开头)<br />
\xhex 编号为hex的字符(hex表示一个十六进制数，不以0x或0X开头)<br />
⒌ 字符串字面值<br />
⑴ 通过用双引号引起的若干个字符或转义字符定义<br />
⑵ 类型为以 <span style="color: #ff00ff;">NULL</span> 结束的 <span style="color: #2e8b57;"><strong>const</strong></span> <span style="color: #2e8b57;"><strong>char</strong></span> 型数组(结尾的空字符由编译器自动添加)<br />
⑶ 前面加上L表示宽字符串面值<br />
⑷ 两个相邻的仅由空格、制表符或换行符分开的(宽)字符串面值，可连接成一个新(宽)字符串字面值<br />
这一特性可用于处理长字符串字面值<br />
试图连接一个字符串字面值和一个宽字符串字面值将导致未定义行为<br />
⑸ C++代码中，在一行末尾加反斜线符号(其后不可再出现空格或注释)可将该行与下一行当作同一行处理(因此第二行可能不允许有正常的缩进)<br />
这一特性也可用于处理长字符串字面值，但并不常用</p>
<p>⒉⒊ 变量<br />
⒈ 左值(lvalue)和右值(rvalue)<br />
⑴ 左值：可以出现在赋值操作的左边或右边的值。非 <span style="color: #2e8b57;"><strong>const</strong></span> 左值可读可写。<br />
⑵ 右值：可以出现在赋值操作右边但不能出现在左边的值。可读不可写。<br />
变量是左值<br />
⒉ 变量名，可由字母或下划线开头，用字母、数字和下划线组成；大小写敏感<br />
⒊ 变量的定义<br />
⑴ 变量的定义为变量分配存储空间，还能同时指定其初始值。在程序中，一个变量有且仅有一个定义<br />
⑵ 变量的初始化<br />
① 提供初始化式时，支持两种初始化形式：<br />
a. 复制初始化：用等号(=) (注:不是赋值)<br />
b. 直接初始化：将初始化式放在括号中；更灵活，效率更高<br />
对内置类型而言，二者几乎没有差别；对类类型而言，有时必须用后者<br />
② 不提供初始化式：<br />
a. 对内置类型变量：在函数体外定义的自动初始化为<span style="color: #ff00ff;">0</span>，在函数体内定义的不进行自动初始化<br />
b. 对类类型变量：若该类提供默认构造函数则调用它，否则必须提供显式初始化式<br />
③ 同时定义多个变量时，以上各种初始化形式(包括不提供初始化式)都可混用；可以用同一定义中前面已定义变量的值给后面的变量初始化<br />
⑶ 在变量首次使用处定义变量往往能增加代码可读性，减少开销<br />
⒋ 变量的声明<br />
⑴ 变量的声明向程序表明变量的类型和名字。声明可以在程序中出现多次。定义也是声明<br />
⑵ 使用 <span style="color: #2e8b57;"><strong>extern</strong></span> 关键字可声明一个变量而不定义它，常用于使数据横跨多个文件的作用域<br />
⑶ 若声明有初始化式，则被当作定义，即使使用了 <span style="color: #2e8b57;"><strong>extern</strong></span> 关键字也一样<br />
⑷ 在全局作用域中定义的非 <span style="color: #2e8b57;"><strong>const</strong></span> 对象在整个程序的各个文件中都可见，只要在其它文件中声明它就可以访问；<br />
但全局作用域中的 <span style="color: #2e8b57;"><strong>const</strong></span> 对象默认为其定义所在文件的局部对象，只有在定义前指定它为 <span style="color: #2e8b57;"><strong>extern</strong></span> 才能在其它文件中访问</p>
<p>⒉⒊⒍ 名字的作用域<br />
⒈ 作用域(scope)：程序的一部分，名字在其中有意义。<br />
C++中的作用域有以下几种：<br />
⑴ 全局：名字定义在任何其他作用域外<br />
⑵ 类：名字由类定义<br />
⑶ 命名空间：名字在命名空间中定义<br />
⑷ 局部：名字在函数中定义<br />
⑸ 块：名字定义在语句块中(即定义在一对花括号里)<br />
⑹ 语句：名字在语句(如 <span style="color: #804040;"><strong>if</strong></span> 、 <span style="color: #804040;"><strong>while</strong></span> 、 <span style="color: #804040;"><strong>for</strong></span> 语句)的条件内定义<br />
⒉ 作用域可嵌套，外层作用域的名字在内层可见。内层作用域中的名字可以屏蔽(hide)外层中同样的</p>
<p>⒉⒌ 引用<br />
⒈ 引用(reference)是一种复合类型(即用其它类型定义的类型)，表示另一个(非引用)对象的别名，对它的所有操作都直接作用在该对象上<br />
引用主要用作函数形参<br />
⒉ 引用定义格式为<br />
类型名&amp; 标识符<br />
( 数组的引用定义格式： 类型名 (&amp;标识符)[维度]<br />
指针的引用定义格式： 类型名*&amp; 标识符         )<br />
同时定义多个引用时每个引用的标识符前都要加&amp;(以及[维度]和*)<br />
定义引用必须用对应类型的对象初始化，表示绑定到该对象，且一经绑定不可更改<br />
⒊ <span style="color: #2e8b57;"><strong>const</strong></span> 引用是只读的，可以绑定到不同但相关类型的对象，也可绑定到右值；<br />
非 <span style="color: #2e8b57;"><strong>const</strong></span> 对象只能绑定到与该引用同类型的对象</p>
<p>⒉⒍ 定义类型名<br />
⒈ <span style="color: #2e8b57;"><strong>typedef</strong></span> 用于定义一个类型的同义词。定义格式为：<br />
<span style="color: #2e8b57;"><strong>typedef</strong></span> 类型 标识符;<br />
⒉ 常为以下<span style="color: #ff00ff;">3</span>种目的使用 <span style="color: #2e8b57;"><strong>typedef</strong></span> :<br />
⑴ 隐藏特定类型实现，强调使用类型的目的<br />
⑵ 精简类型定义以便理解<br />
⑶ 多次使用同一类型，保持每次使用目的明确</p>
<p>⒉⒎ 枚举<br />
⒈ 枚举(enumeration)类型由一组枚举成员(enumerator)组成<br />
其中每个枚举成员都有自己的名字，初始化为整型 <span style="color: #2e8b57;"><strong>const</strong></span> 值(值可重复，但初始化后不能修改)<br />
⒉ 定义格式： <span style="color: #2e8b57;"><strong>enum</strong></span> 枚举类型名 {用逗号分开的枚举成员列表};<br />
可以用常量表达式通过赋值操作符为列表中某些枚举成员提供初始值，未提供初值的默认每个值比前一个大<span style="color: #ff00ff;">1</span>(第一个默认为<span style="color: #ff00ff;">0</span>)<br />
⒊ 每个 <span style="color: #2e8b57;"><strong>enum</strong></span> 都唯一定义一种类型，枚举类型的对象初始化或赋值时只能通过该类型的枚举成员或另一对象进行</p>
<p>⒉⒐ 头文件<br />
⒈ 因为头文件包含在多个源文件中，故一般只应包含对象和函数的声明而不包含定义，但以下除外：<br />
⑴ 类<br />
⑵ 用常量表达式初始化的 <span style="color: #2e8b57;"><strong>const</strong></span> 对象<br />
(若不是用常量表达式初始化，则应和其它对象一样在一个文件中定义并初始化，并在头文件中添加 <span style="color: #2e8b57;"><strong>extern</strong></span> 声明以便多文件共享)<br />
⑶ <span style="color: #2e8b57;"><strong>inline</strong></span> 函数<br />
以上都可以在多个文件中定义(只要定义一致)。需要在头文件定义是因为编译器需要它们的定义来产生代码<br />
⒉ 预处理器<br />
⑴ #include 只接受一个头文件名作为参数<br />
头文件名在尖括号中被认为是标准头文件，编译器将在预定义位置查找<br />
头文件名在引号中被认为是非系统头文件，通常在源文件所在位置查找<br />
⑵ 可使用预处理器定义头文件保护符(header guard)避免多重包含，如：<br />
<span style="color: #a020f0;"> #ifndef XXX_HEADER_H</span><br />
<span style="color: #a020f0;"> #define XXX_HEADER_H</span><br />
<span style="color: #0000ff;">// 头文件内容，包括类等的定义</span><br />
<span style="color: #a020f0;"> #endif</span></p>

	<br />Tags：<a href="http://blog.tomtung.com/tag/cpp/" title="cpp" rel="tag">cpp</a>, <a href="http://blog.tomtung.com/tag/%e8%af%bb%e4%b9%a6%e7%ac%94%e8%ae%b0/" title="读书笔记" rel="tag">读书笔记</a><br />

	<br /><h3>Related Posts</h3>
	<ul class="st-related-posts">
	<li><a href="http://blog.tomtung.com/2007/06/c-cpp-io-odd-behavior/" title="诡异的事：关于C/C++输入输出 (2007-06-15)">诡异的事：关于C/C++输入输出</a> (3)</li>
	<li><a href="http://blog.tomtung.com/2008/08/cpp-primer-reding-notes-chapter3/" title="C++ Primer 读书笔记 &#8211; 第三章 (2008-08-12)">C++ Primer 读书笔记 &#8211; 第三章</a> (1)</li>
	<li><a href="http://blog.tomtung.com/2008/08/cpp-primer-reding-notes-index/" title="C++ Primer 读书笔记 &#8211; 索引 (2008-08-07)">C++ Primer 读书笔记 &#8211; 索引</a> (2)</li>
	<li><a href="http://blog.tomtung.com/2009/07/agile-development-reading-notes/" title="敏捷开发学习笔记（思维导图） (2009-07-04)">敏捷开发学习笔记（思维导图）</a> (1)</li>
	<li><a href="http://blog.tomtung.com/2008/08/cpp-primer-reding-notes-chapter4/" title="C++ Primer 读书笔记 &#8211; 第四章 (2008-08-20)">C++ Primer 读书笔记 &#8211; 第四章</a> (0)</li>
</ul>

]]></content:encoded>
			<wfw:commentRss>http://blog.tomtung.com/2008/08/cpp-primer-reding-notes-chapter2/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>C++ Primer 读书笔记 &#8211; 索引</title>
		<link>http://blog.tomtung.com/2008/08/cpp-primer-reding-notes-index/</link>
		<comments>http://blog.tomtung.com/2008/08/cpp-primer-reding-notes-index/#comments</comments>
		<pubDate>Thu, 07 Aug 2008 01:31:31 +0000</pubDate>
		<dc:creator>逆铭</dc:creator>
				<category><![CDATA[新长征路上的代码]]></category>
		<category><![CDATA[cpp]]></category>
		<category><![CDATA[读书笔记]]></category>

		<guid isPermaLink="false">http://blog.tomtung.com/2008/08/c-primer-%e8%af%bb%e4%b9%a6%e7%ac%94%e8%ae%b0-%e5%86%99%e5%9c%a8%e5%89%8d%e9%9d%a2%e6%9b%b4%e6%96%b0%e7%b4%a2%e5%bc%95/</guid>
		<description><![CDATA[终于开始读第二遍了……开始真没把这书当回事。搞OI的时候一直是用 C++ 的（当然是作为 a better C ……当然不包括STL……），C++ 的教材也读过（顺便Orz下谭老师），觉得写程序就是算法比较麻烦，语言只是个基础，随随便便就搞定了。这书是年初买的，当时还想着一个月看完呢，结果，呃，断断续续拖了仨月到高考前才看完第一遍。C++ 里各种各样的功能及细节一时让我觉得自己在备考地理历史或是别的什么文科课程…… 这本书我觉得和CLRS很像。书名都非常谦虚（一个叫 Primer 一个叫 Introduction），都比书名暗示的要厚、难，虽然没有特别 tricky 的内容却贵在全面，如果能够掌握对付一般情况都绰绰有余。 在读第一遍的时候我就已经做了比较粗略的笔记，现在重新整理一下。所有帮助理解的辅助内容都尽量被剔除，为了帮助理解而做的顺序调整也被恢复，使得关键点以更结构化的形式组织起来。我希望有了整理的笔记就可以抛开原书（去BUAA实在不想带这书，太沉了- -）。 笔记中很多基础点可能会因为之前就已经熟知而被忽略。这个笔记并不适合初学者。它适合： 1. 我自己——这是做笔记的主要目的 2. 看过全书希望迅速浏览各个关键点来复习的同学 3. 已经读过别的 C++ 书籍不知道此书是否还值得一读的同学 4. 希望能借助别人的笔记加工出自己的 ……………… 恩……笔记会以章为单位放出，已经放出的内容也可能被修改。如果发现任何错误、遗漏、啰嗦等不妥的地方，欢迎指正。 笔记会放在新分类“新长征路上的代码”中。之前关于OI的分类不再更新。 &#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;菜菜的分割线&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212; 笔记索引 第二章 - 基本内置类型字面值常量变量作用域引用(包括指针的引用、数组的引用) 枚举 第三章 - bitset (vector、string和迭代器放到第九章和第十一章) 第四章 - 数组(动态数组放到第五章new和delete表达式部分) C风格字符串 指针(包括指向数组的指针，不包括第七章的函数指针) 第五章 - 操作符(结合性、优先级)(不包括与作用域,RTTI,成员指针,异常等有关操作符) 表达式 类型转换(显式、隐式) 第六章 - 语句(与异常处理有关的内容放到第十七章；不包括第七章return语句) 使用预处理器调试 第七章 - [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.douban.com/subject/1767741/"><img style="padding-right: 20px; padding-left: 0px; float: left; padding-bottom: 20px; padding-top: 0px;" src="http://otho.douban.com/mpic/s1638975.jpg" alt="" /></a><a href="http://www.douban.com/subject/1415354/"><img style="padding-right: 20px; padding-left: 0px; float: left; padding-bottom: 20px; padding-top: 0px;" src="http://otho.douban.com/mpic/s2391721.jpg" alt="" /></a> 终于开始读第二遍了……开始真没把这书当回事。搞OI的时候一直是用 C++ 的（当然是作为 a better C ……当然不包括STL……），C++ 的教材也读过（顺便Orz下谭老师），觉得写程序就是算法比较麻烦，语言只是个基础，随随便便就搞定了。这书是年初买的，当时还想着一个月看完呢，结果，呃，断断续续拖了仨月到高考前才看完第一遍。C++ 里各种各样的功能及细节一时让我觉得自己在备考地理历史或是别的什么文科课程……<br />
这本书我觉得和CLRS很像。书名都非常谦虚（一个叫 Primer 一个叫 Introduction），都比书名暗示的要厚、难，虽然没有特别 tricky 的内容却贵在全面，如果能够掌握对付一般情况都绰绰有余。<br />
在读第一遍的时候我就已经做了比较粗略的笔记，现在重新整理一下。所有帮助理解的辅助内容都尽量被剔除，为了帮助理解而做的顺序调整也被恢复，使得关键点以更结构化的形式组织起来。我希望有了整理的笔记就可以抛开原书（去BUAA实在不想带这书，太沉了- -）。</p>
<p>笔记中很多基础点可能会因为之前就已经熟知而被忽略。这个笔记并不适合初学者。它适合：</p>
<p>1. 我自己——这是做笔记的主要目的</p>
<p>2. 看过全书希望迅速浏览各个关键点来复习的同学</p>
<p>3. 已经读过别的 C++ 书籍不知道此书是否还值得一读的同学</p>
<p>4. 希望能借助别人的笔记加工出自己的</p>
<p>………………</p>
<p>恩……笔记会以章为单位放出，已经放出的内容也可能被修改。如果发现任何错误、遗漏、啰嗦等不妥的地方，欢迎指正。</p>
<p>笔记会放在新分类“新长征路上的代码”中。之前关于OI的分类不再更新。</p>
<p>&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;菜菜的分割线&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;</p>
<pre><span style="font-size: 12px;">笔记索引</span>

<a href="http://blog.tomtung.com/2008/08/cpp-primer-reding-notes-chapter2/" target="_blank"><span style="font-size: 12px;">第二章</span></a><span style="font-size: 12px;"> - 基本内置类型字面值常量变量作用域引用</span><span style="color: #999999;">(包括指针的引用、数组的引用)</span> 枚举

<a href="http://blog.tomtung.com/2008/08/cpp-primer-reding-notes-chapter3/" target="_blank"><span style="font-size: 12px;">第三章</span></a><span style="font-size: 12px;"> - bitset </span><span style="color: #999999;">(vector、string和迭代器放到第九章和第十一章)</span>

<a href="http://blog.tomtung.com/2008/08/cpp-primer-reding-notes-chapter4/" target="_blank"><span style="font-size: 12px;">第四章</span></a><span style="font-size: 12px;"> - 数组</span><span style="color: #999999;">(动态数组放到第五章new和delete表达式部分)</span> <span style="font-size: 12px;">C风格字符串</span>

<span style="font-size: 12px;">        指针</span><span style="font-size: 12px; color: #999999;">(包括指向数组的指针，不包括第七章的函数指针)</span>

<a href="http://blog.tomtung.com/2008/08/cpp-primer-reding-notes-chapter5/" target="_blank"><span style="font-size: 12px;">第五章</span></a> <span style="font-size: 12px;">- 操作符(结合性、优先级)</span><span style="color: #999999;">(不包括与作用域,RTTI,成员指针,异常等有关操作符)</span>

<span style="color: #000000;">        表达式</span> 类型转换(显式、隐式)

<span style="font-size: 12px;"><a href="http://blog.tomtung.com/2008/08/cpp-primer-reding-notes-chapter6/" target="_blank">第六章</a> - 语句</span><span style="color: #999999;">(与异常处理有关的内容放到第十七章；不包括第七章return语句)</span>

        使用预处理器调试

<span style="font-size: 12px;"><a href="http://blog.tomtung.com/2008/08/cpp-primer-reding-notes-chapter7/" target="_blank"><span style="font-size: 12px;">第七章</span></a> - 函数</span><span style="color: #999999;">(类成员函数放到第十二章)</span>

<span style="font-size: 12px;"><a href="http://blog.tomtung.com/2008/09/cpp-primer-reding-notes-chapter8/" target="_blank"><span style="font-size: 12px;">第八章</span></a> - 标准IO库</span><span style="color: #999999;">(包括附录3中的所有内容)</span>

（停止更新）
</pre>

	<br />Tags：<a href="http://blog.tomtung.com/tag/cpp/" title="cpp" rel="tag">cpp</a>, <a href="http://blog.tomtung.com/tag/%e8%af%bb%e4%b9%a6%e7%ac%94%e8%ae%b0/" title="读书笔记" rel="tag">读书笔记</a><br />

	<br /><h3>Related Posts</h3>
	<ul class="st-related-posts">
	<li><a href="http://blog.tomtung.com/2007/06/c-cpp-io-odd-behavior/" title="诡异的事：关于C/C++输入输出 (2007-06-15)">诡异的事：关于C/C++输入输出</a> (3)</li>
	<li><a href="http://blog.tomtung.com/2010/02/probability-statistics-and-random-processes/" title="学习笔记：概率统计与随机过程 (2010-02-06)">学习笔记：概率统计与随机过程</a> (3)</li>
	<li><a href="http://blog.tomtung.com/2008/08/cpp-primer-reding-notes-chapter6/" title="C++ Primer 读书笔记 &#8211; 第六章 (2008-08-24)">C++ Primer 读书笔记 &#8211; 第六章</a> (1)</li>
	<li><a href="http://blog.tomtung.com/2008/08/cpp-primer-reding-notes-chapter2/" title="C++ Primer 读书笔记 &#8211; 第二章 (2008-08-07)">C++ Primer 读书笔记 &#8211; 第二章</a> (4)</li>
	<li><a href="http://blog.tomtung.com/2008/10/first-month-in-buaa/" title="初来北航一个多月的零零碎碎 (2008-10-29)">初来北航一个多月的零零碎碎</a> (12)</li>
</ul>

]]></content:encoded>
			<wfw:commentRss>http://blog.tomtung.com/2008/08/cpp-primer-reding-notes-index/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>拉威尔《为死去公主所作的孔雀舞》的三个版本</title>
		<link>http://blog.tomtung.com/2008/07/ravel-pavane-pour-une-infante-defunte-3-interpretations/</link>
		<comments>http://blog.tomtung.com/2008/07/ravel-pavane-pour-une-infante-defunte-3-interpretations/#comments</comments>
		<pubDate>Sat, 26 Jul 2008 08:28:22 +0000</pubDate>
		<dc:creator>逆铭</dc:creator>
				<category><![CDATA[Music maks me talk]]></category>
		<category><![CDATA[拉威尔]]></category>
		<category><![CDATA[钢琴]]></category>

		<guid isPermaLink="false">http://blog.tomtung.com/2008/07/%e6%8b%89%e5%a8%81%e5%b0%94%e3%80%8a%e4%b8%ba%e6%ad%bb%e5%8e%bb%e5%85%ac%e4%b8%bb%e6%89%80%e4%bd%9c%e7%9a%84%e5%ad%94%e9%9b%80%e8%88%9e%e3%80%8b%e7%9a%84%e4%b8%89%e4%b8%aa%e7%89%88%e6%9c%ac/</guid>
		<description><![CDATA[这本来是我在买了弗朗索瓦那张拉威尔（即下面的第一张）后，想写的关于这整张CD的比较和评论的一部分。不过仅仅在完成了下面这一点东西以后就懒于动笔，一直放了几个月。看来关于整张CD的怕是写不出来了，现在顺手把这点东西放上来吧。下面是三个版本 Pavane pour une infante defunte 的试听和评论。 弗朗索瓦：速度稍偏快，出人意料地恬淡，钢琴音色爽利，高音区的旋律清澈地漂浮在淡淡的和声伴奏上。没有嚎啕大哭，没有哽咽饮泣，没有过度的沉溺与煽情。只是淡淡地诉说，凄美纯净一如少女的早夭。A段最后一次出现时十六分音符伴奏和低音区的琶音中，仿佛有泪光点点若隐若现。 罗热：音粒呈现出一种饱满而透亮的质感，有时又如沉在淡淡的氤氲中有些许朦胧。感情显得浓郁而致密。速度适中，一些细节处轻微的弹性节奏显然经过了精心的推敲。 吉利尔斯：最慢的版本。按说慢了应该非常煽情，但大师的节奏控制和特有的音色让人不至沉溺。凄婉的悲歌中，铿锵的音色不时闪现，难以隐藏。听最后力度为ff的几个音，那简直是仰天长叹的贝多芬。 最后忍不住说下，那张弗朗索瓦真的很棒，完全见不到他弹肖邦时的奢靡。色彩不浓却很细腻；很淡定，有时还很潇洒，一派大家风范。对拉威尔感兴趣的同学一定不要错过。 Tags：拉威尔, 钢琴 Related Posts 肖邦夜曲几个著名版本的风格 (4) 宇文硕 &#8211; 叙事曲 (1) 简记杨东荫音乐会 (9) 写在临行前 (9) Le Matin by Yann Tiersen (Yamaha DGX-620) (11)]]></description>
			<content:encoded><![CDATA[<p style="text-indent: 2em;">这本来是我在买了弗朗索瓦那张拉威尔（即下面的第一张）后，想写的关于这整张CD的比较和评论的一部分。不过仅仅在完成了下面这一点东西以后就懒于动笔，一直放了几个月。看来关于整张CD的怕是写不出来了，现在顺手把这点东西放上来吧。下面是三个版本 Pavane pour une infante defunte 的试听和评论。</p>
<p style="text-indent: 2em;">
<p style="text-indent: 2em;">
<p style="text-indent: 2em;"><object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" width="200" height="330" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0"><param name="src" value="http://8box.cn/feed/200_0070C0_s_207924_0/radio.swf" /><param name="wmode" value="transparent" /><embed type="application/x-shockwave-flash" width="200" height="330" src="http://8box.cn/feed/200_0070C0_s_207924_0/radio.swf" wmode="transparent"></embed></object></p>
<p style="text-indent: 2em;">
<p style="text-indent: 2em;">弗朗索瓦：速度稍偏快，出人意料地恬淡，钢琴音色爽利，高音区的旋律清澈地漂浮在淡淡的和声伴奏上。没有嚎啕大哭，没有哽咽饮泣，没有过度的沉溺与煽情。只是淡淡地诉说，凄美纯净一如少女的早夭。A段最后一次出现时十六分音符伴奏和低音区的琶音中，仿佛有泪光点点若隐若现。</p>
<p style="text-indent: 2em;">
<p style="text-indent: 2em;">
<p style="text-indent: 2em;">
<p style="text-indent: 2em;"><object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" width="200" height="330" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0"><param name="src" value="http://8box.cn/feed/200_0070C0_s_207933_0/radio.swf" /><param name="wmode" value="transparent" /><embed type="application/x-shockwave-flash" width="200" height="330" src="http://8box.cn/feed/200_0070C0_s_207933_0/radio.swf" wmode="transparent"></embed></object></p>
<p style="text-indent: 2em;">
<p style="text-indent: 2em;">罗热：音粒呈现出一种饱满而透亮的质感，有时又如沉在淡淡的氤氲中有些许朦胧。感情显得浓郁而致密。速度适中，一些细节处轻微的弹性节奏显然经过了精心的推敲。</p>
<p style="text-indent: 2em;">
<p style="text-indent: 2em;">
<p style="text-indent: 2em;"><object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" width="200" height="330" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0"><param name="src" value="http://8box.cn/feed/200_0070C0_s_207935_0/radio.swf" /><param name="wmode" value="transparent" /><embed type="application/x-shockwave-flash" width="200" height="330" src="http://8box.cn/feed/200_0070C0_s_207935_0/radio.swf" wmode="transparent"></embed></object></p>
<p style="text-indent: 2em;">
<p style="text-indent: 2em;">吉利尔斯：最慢的版本。按说慢了应该非常煽情，但大师的节奏控制和特有的音色让人不至沉溺。凄婉的悲歌中，铿锵的音色不时闪现，难以隐藏。听最后力度为ff的几个音，那简直是仰天长叹的贝多芬。</p>
<p style="text-indent: 2em;">
<p style="text-indent: 2em;">
<p style="text-indent: 2em;">最后忍不住说下，那张弗朗索瓦真的很棒，完全见不到<a href="http://blog.sina.com.cn/s/blog_4a443fd7010006ix.html" target="_blank">他弹肖邦时</a>的奢靡。色彩不浓却很细腻；很淡定，有时还很潇洒，一派大家风范。对拉威尔感兴趣的同学一定不要错过。</p>

	<br />Tags：<a href="http://blog.tomtung.com/tag/ravel/" title="拉威尔" rel="tag">拉威尔</a>, <a href="http://blog.tomtung.com/tag/%e9%92%a2%e7%90%b4/" title="钢琴" rel="tag">钢琴</a><br />

	<br /><h3>Related Posts</h3>
	<ul class="st-related-posts">
	<li><a href="http://blog.tomtung.com/2007/01/interpretations-of-chopin-nocturnes/" title="肖邦夜曲几个著名版本的风格 (2007-01-06)">肖邦夜曲几个著名版本的风格</a> (4)</li>
	<li><a href="http://blog.tomtung.com/2008/06/yuwenshuo-ballad/" title="宇文硕 &#8211; 叙事曲 (2008-06-12)">宇文硕 &#8211; 叙事曲</a> (1)</li>
	<li><a href="http://blog.tomtung.com/2008/01/yangdongyin-concert/" title="简记杨东荫音乐会 (2008-01-27)">简记杨东荫音乐会</a> (9)</li>
	<li><a href="http://blog.tomtung.com/2008/09/unable-to-stay/" title="写在临行前 (2008-09-18)">写在临行前</a> (9)</li>
	<li><a href="http://blog.tomtung.com/2009/09/le-matin/" title="Le Matin by Yann Tiersen (Yamaha DGX-620) (2009-09-08)">Le Matin by Yann Tiersen (Yamaha DGX-620)</a> (11)</li>
</ul>

]]></content:encoded>
			<wfw:commentRss>http://blog.tomtung.com/2008/07/ravel-pavane-pour-une-infante-defunte-3-interpretations/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>没有翅膀的鸟 通向天堂的飞翔</title>
		<link>http://blog.tomtung.com/2008/07/wiki/</link>
		<comments>http://blog.tomtung.com/2008/07/wiki/#comments</comments>
		<pubDate>Sun, 20 Jul 2008 13:02:44 +0000</pubDate>
		<dc:creator>逆铭</dc:creator>
				<category><![CDATA[杂的扯]]></category>
		<category><![CDATA[视频]]></category>

		<guid isPermaLink="false">http://blog.tomtung.com/2008/07/%e6%b2%a1%e6%9c%89%e7%bf%85%e8%86%80%e7%9a%84%e9%b8%9f-%e9%80%9a%e5%90%91%e5%a4%a9%e5%a0%82%e7%9a%84%e9%a3%9e%e7%bf%94/</guid>
		<description><![CDATA[煋了……刚在M67牛的blog上看到，才第一次看了这个在YouTube上有将近2千万次播放、4万5千多次评论的视频。一个学生的毕业设计作品，短短三分钟，但令人很难忘。 关于kiwi的解释如下（摘自牛津高阶英汉双解词典）： &#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212; kiwi / ˈkiːwiː; ˋkiwɪ/ n 1. New Zealand bird that cannot fly, with a long bill, short wings and no tail 几维（产於新西兰的鸟, 喙长﹑ 翼短﹑ 无尾﹑ 不能飞）. &#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212; 下面随便扯几句，剧透，请一定在看完短片后再继续阅读。 这又是一个dream(幻想？梦想？) come true的故事。一只小小的kiwi，为了飞翔的梦想，付出了一切：花费一生的精力直到最后付出生命——到它兴致勃勃地跃下悬崖我们才开始明白过来是怎么回事。我前前后后看了6、7遍，直到差不多第4遍时才能在它兴奋地伸出小小的翅膀时忍住眼泪。虽然那仅仅是个假象，这只小kiwi也因此显得有几分悲壮，令人觉得惋惜，但谁又会因此指责它呢？当八音盒的声音随着它的泪光闪动时，你会觉得，对于这样一种根植在生命中的梦，真的是可以die for的。即使你自己不会这样做，那一份决然抛弃一切的坚忍和义无反顾仍然可能轻易击中你心底最柔软的部分——尤其当你的梦想已然迷失的时候。 YouTube上由此衍生的视频数量很多。其中有好心的网友加上了一顶小小的降落伞，让故事多少温暖了一些。其实不用这样。这只小kiwi不会随梦而死；相反，它因梦而生。 愿我们心中都能为这样一只小东西留下一点位置吧。无论多么不可能，它一直能看到自己的dream就在前方。 p.s.本文题目来自豆瓣 Tags：视频 Related Posts 恶搞巴赫：Deconstructing Johann (0) Flying &#8211; 我最喜欢的魔术 (6) Le Matin by Yann Tiersen (Yamaha DGX-620) [...]]]></description>
			<content:encoded><![CDATA[<p>煋了……刚在<a href="http://www.matrix67.com/blog/archives/557" target="_blank">M67牛的blog</a>上看到，才第一次看了这个在YouTube上有将近2千万次播放、4万5千多次评论的视频。一个学生的毕业设计作品，短短三分钟，但令人很难忘。</p>
<p><object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" width="425" height="344" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0"><param name="src" value="http://www.youtube.com/v/sdUUx5FdySs&amp;hl=en&amp;fs=1" /><param name="allowfullscreen" value="true" /><embed type="application/x-shockwave-flash" width="425" height="344" src="http://www.youtube.com/v/sdUUx5FdySs&amp;hl=en&amp;fs=1" allowfullscreen="true"></embed></object></p>
<p>关于kiwi的解释如下（摘自牛津高阶英汉双解词典）：</p>
<p>&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;</p>
<p>kiwi<br />
/ ˈkiːwiː; ˋkiwɪ/ n<br />
1. New Zealand bird that cannot fly, with a long bill, short</p>
<p>wings and no tail 几维（产於新西兰的鸟, 喙长﹑ 翼短﹑ 无尾﹑</p>
<p>不能飞）.</p>
<p>&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;</p>
<div id="dict_body_120EDBC05B3A444EA20D4E18A7E8AD65">
<div id="dict_gls_120EDBC05B3A444EA20D4E18A7E8AD65">
<div style="MARGIN: 5px 0px"></div>
</div>
</div>
<p>下面随便扯几句，剧透，<strong>请一定在看完短片后再继续阅读</strong>。</p>
<p>这又是一个dream(幻想？梦想？) come true的故事。一只小小的kiwi，为了飞翔的梦想，付出了一切：花费一生的精力直到最后付出生命——到它兴致勃勃地跃下悬崖我们才开始明白过来是怎么回事。我前前后后看了6、7遍，直到差不多第4遍时才能在它兴奋地伸出小小的翅膀时忍住眼泪。虽然那仅仅是个假象，这只小kiwi也因此显得有几分悲壮，令人觉得惋惜，但谁又会因此指责它呢？当八音盒的声音随着它的泪光闪动时，你会觉得，对于这样一种根植在生命中的梦，真的是可以die for的。即使你自己不会这样做，那一份决然抛弃一切的坚忍和义无反顾仍然可能轻易击中你心底最柔软的部分——尤其当你的梦想已然迷失的时候。</p>
<p>YouTube上由此衍生的视频数量很多。其中有好心的网友<a href="http://www.youtube.com/watch?v=T2SnDB_orzQ" target="_blank">加上了一顶小小的降落伞</a>，让故事多少温暖了一些。其实不用这样。这只小kiwi不会随梦而死；相反，它因梦而生。</p>
<p>愿我们心中都能为这样一只小东西留下一点位置吧。无论多么不可能，它一直能看到自己的dream就在前方。</p>
<p>p.s.本文题目来自<a href="http://www.douban.com/subject/2338160/" target="_blank">豆瓣</a></p>

	<br />Tags：<a href="http://blog.tomtung.com/tag/%e8%a7%86%e9%a2%91/" title="视频" rel="tag">视频</a><br />

	<br /><h3>Related Posts</h3>
	<ul class="st-related-posts">
	<li><a href="http://blog.tomtung.com/2008/03/deconstructing-johann/" title="恶搞巴赫：Deconstructing Johann (2008-03-01)">恶搞巴赫：Deconstructing Johann</a> (0)</li>
	<li><a href="http://blog.tomtung.com/2008/03/david-copperfield-flying/" title="Flying &#8211; 我最喜欢的魔术 (2008-03-07)">Flying &#8211; 我最喜欢的魔术</a> (6)</li>
	<li><a href="http://blog.tomtung.com/2009/09/le-matin/" title="Le Matin by Yann Tiersen (Yamaha DGX-620) (2009-09-08)">Le Matin by Yann Tiersen (Yamaha DGX-620)</a> (11)</li>
</ul>

]]></content:encoded>
			<wfw:commentRss>http://blog.tomtung.com/2008/07/wiki/feed/</wfw:commentRss>
		<slash:comments>12</slash:comments>
		</item>
		<item>
		<title>保送的最终结果</title>
		<link>http://blog.tomtung.com/2008/07/letter-of-admission-from-buaa/</link>
		<comments>http://blog.tomtung.com/2008/07/letter-of-admission-from-buaa/#comments</comments>
		<pubDate>Thu, 10 Jul 2008 17:33:45 +0000</pubDate>
		<dc:creator>逆铭</dc:creator>
				<category><![CDATA[生活在此处]]></category>
		<category><![CDATA[buaa]]></category>
		<category><![CDATA[保送]]></category>

		<guid isPermaLink="false">http://blog.tomtung.com/2008/07/%e4%bf%9d%e9%80%81%e7%9a%84%e6%9c%80%e7%bb%88%e7%bb%93%e6%9e%9c/</guid>
		<description><![CDATA[恩，最后是走了 Beijing University …… 喘口气 …… of Aeronautics and Astronautics =.= 今天刚拿到通知书，可以放心在这里宣布下了。 一起寄来的还有一些七七八八的东西就不帖了。拿到通知书就彻底放心了……现在可以接上半年多前的这篇继续给大家报告情况。 共考三处。第一处ustc最后还是考挂了，毫无悬念。考whu的时候我和哑熊一起出bug，竟然记错英语考试时间，导致缺考-_-&#124;&#124;&#124;……不过最后我俩竟然还不是分最低的两个，加上哑熊老爸无比天才地小小地耍了个诈（详情请咨询哑熊大牛），whu要了我和哑熊。第三处我最后还是选了buaa，数学和物理感觉都考得不太行，甚至英语都有一半的完型没来得及答完。进不了buaa的计院我是想到了的，但是能进软院实在是大大出乎了我的意料。除了RP，我实在不知道怎么解释这个事情……一直都听说buaa招生办的人不厚道，不过估计是因为那个勒索丑闻换了一大茬人，现在态度极好。如在咨询录取比例时我得到的回复是“你们保送生每个都非常优秀，我们一个也不想放过……”，而不是Ghost当年得到的“就你这成绩就别考虑我们北航了，要是再有个数学一等奖我们还可以考虑……” 恩……至此算是善终了。希望同时也能善始，毕竟一切才刚刚开始呢。 Tags：buaa, 保送 Related Posts 年末扯扯 (8) 写在临行前 (9) 初来北航一个多月的零零碎碎 (12) 终于有NOIP1=了 (9)]]></description>
			<content:encoded><![CDATA[<p>恩，最后是走了 Beijing University …… 喘口气 …… of Aeronautics and Astronautics =.=</p>
<p>今天刚拿到通知书，可以放心在这里宣布下了。</p>
<div class="wp-caption aligncenter" style="width: 623px"><a href="http://gallery.tomtung.com/pictures/admission-notice-envelope-front.jpg"><img title="http://gallery.tomtung.com/pictures/admission-notice-envelope-front.jpg" src="http://gallery.tomtung.com/pictures/admission-notice-envelope-front.jpg" alt="EMS大信封正面" width="613" height="419" /></a><p class="wp-caption-text">EMS大信封正面</p></div>
<div class="wp-caption aligncenter" style="width: 627px"><a href="http://gallery.tomtung.com/pictures/admission-notice-envelope-back.jpg"><img title="http://gallery.tomtung.com/pictures/admission-notice-envelope-back.jpg" src="http://gallery.tomtung.com/pictures/admission-notice-envelope-back.jpg" alt="背面" width="617" height="418" /></a><p class="wp-caption-text">背面</p></div>
<p style="text-align: center;"><a href="http://gallery.tomtung.com/pictures/admission-notice-1.jpg"><img class="aligncenter" title="http://gallery.tomtung.com/pictures/admission-notice-1.jpg" src="http://gallery.tomtung.com/pictures/admission-notice-1.jpg" alt="通知书" width="510" height="687" /></a><a href="http://gallery.tomtung.com/pictures/admission-notice-2.jpg"><img class="aligncenter" title="http://gallery.tomtung.com/pictures/admission-notice-2.jpg" src="http://gallery.tomtung.com/pictures/admission-notice-2.jpg" alt="通知书" width="510" height="697" /></a></p>
<p>一起寄来的还有一些七七八八的东西就不帖了。拿到通知书就彻底放心了……现在可以接上<a href="http://blog.tomtung.com/2007/12/at-the-end-of-the-year/" target="_blank">半年多前的这篇</a>继续给大家报告情况。</p>
<p>共考三处。第一处ustc最后还是考挂了，毫无悬念。考whu的时候我和哑熊一起出bug，竟然记错英语考试时间，导致缺考-_-|||……不过最后我俩竟然还不是分最低的两个，加上哑熊老爸无比天才地小小地耍了个诈（详情请咨询哑熊大牛），whu要了我和哑熊。第三处我最后还是选了<a href="http://blog.tomtung.com/tag/buaa/" class="st_tag internal_tag" rel="tag" title="Posts tagged with buaa">buaa</a>，数学和物理感觉都考得不太行，甚至英语都有一半的完型没来得及答完。进不了<a href="http://blog.tomtung.com/tag/buaa/" class="st_tag internal_tag" rel="tag" title="Posts tagged with buaa">buaa</a>的计院我是想到了的，但是能进软院实在是大大出乎了我的意料。除了RP，我实在不知道怎么解释这个事情……一直都听说<a href="http://blog.tomtung.com/tag/buaa/" class="st_tag internal_tag" rel="tag" title="Posts tagged with buaa">buaa</a>招生办的人不厚道，不过估计是因为那个勒索丑闻换了一大茬人，现在态度极好。如在咨询录取比例时我得到的回复是“你们保送生每个都非常优秀，我们一个也不想放过……”，而不是Ghost当年得到的“就你这成绩就别考虑我们北航了，要是再有个数学一等奖我们还可以考虑……”</p>
<p>恩……至此算是善终了。希望同时也能善始，毕竟一切才刚刚开始呢。</p>

	<br />Tags：<a href="http://blog.tomtung.com/tag/buaa/" title="buaa" rel="tag">buaa</a>, <a href="http://blog.tomtung.com/tag/%e4%bf%9d%e9%80%81/" title="保送" rel="tag">保送</a><br />

	<br /><h3>Related Posts</h3>
	<ul class="st-related-posts">
	<li><a href="http://blog.tomtung.com/2007/12/at-the-end-of-the-year/" title="年末扯扯 (2007-12-31)">年末扯扯</a> (8)</li>
	<li><a href="http://blog.tomtung.com/2008/09/unable-to-stay/" title="写在临行前 (2008-09-18)">写在临行前</a> (9)</li>
	<li><a href="http://blog.tomtung.com/2008/10/first-month-in-buaa/" title="初来北航一个多月的零零碎碎 (2008-10-29)">初来北航一个多月的零零碎碎</a> (12)</li>
	<li><a href="http://blog.tomtung.com/2007/11/got-noip-1st-prize-finally/" title="终于有NOIP1=了 (2007-11-17)">终于有NOIP1=了</a> (9)</li>
</ul>

]]></content:encoded>
			<wfw:commentRss>http://blog.tomtung.com/2008/07/letter-of-admission-from-buaa/feed/</wfw:commentRss>
		<slash:comments>20</slash:comments>
		</item>
		<item>
		<title>日记[2008年06月29日]</title>
		<link>http://blog.tomtung.com/2008/06/29/</link>
		<comments>http://blog.tomtung.com/2008/06/29/#comments</comments>
		<pubDate>Mon, 30 Jun 2008 09:13:57 +0000</pubDate>
		<dc:creator>逆铭</dc:creator>
				<category><![CDATA[杂的扯]]></category>

		<guid isPermaLink="false">http://blog.tomtung.com/2008/06/%e6%97%a5%e8%ae%b02008%e5%b9%b406%e6%9c%8829%e6%97%a5/</guid>
		<description><![CDATA[昨天（即本文题目里那个日期）最先在校内好友的分享上的到了这个消息。现在基本确认来源可靠，就写几句上来。雅虎香_港、Wikipedia新闻动态、BBC等等都有报道。——当然你一定要这么认为的话，新华网也有- - 这里还有一点照片。以上大家自备梯子去看吧。河蟹得很厉害，我就不在这帖了（我什么时候用过这么低调的博文题目啊- -）。Youtube上的相关视频也被精确的ban掉。各大论坛、博客上曾经出现过的数千字的描述和几百楼的讨论大都早已不翼而飞，只剩下冰冷的尸体躺在百度快照里。比如这个，就是很有意思的一篇。新闻透明不起来，还不知道要出现多少版本咧。在一个网络如此发达的时代，遮遮掩掩对谁都没有好处。像新华网那种报道，在这样的大环境下，怎么能不引起人们的无限遐想呢。 我总觉着单独这一个事件还不至于一下就把多少万人扇乎到一起。不知道平日里还有些什么事情让这些“不法分子”和“不明真相的群众”一直记着仇。 马上奥运就来了，出这么个事，真是囧死了。那谁，赶紧再出来含泪劝告下吧。 Related Posts N / A]]></description>
			<content:encoded><![CDATA[<p>昨天（即本文题目里那个日期）最先在校内好友的分享上的到了这个消息。现在基本确认来源可靠，就写几句上来。<a href="http://hk.news.yahoo.com/080628/12/2whyb.html" target="_blank">雅虎香_港</a>、<a href="http://zh.wikipedia.org/w/index.php?title=%E7%93%AE%E5%AE%89%E9%AA%9A%E4%B9%B1&amp;variant=zh-cn" target="_blank">Wikipedia新闻动态</a>、<a href="http://news.bbc.co.uk/chinese/simp/hi/newsid_7470000/newsid_7479700/7479750.stm" target="_blank">BBC</a>等等都有报道。——当然你一定要这么认为的话，<a href="http://www.xinhuanet.com/chinanews/2008-06/29/content_13675971.htm" target="_blank">新华网</a>也有- -</p>
<p><a href="https://docs.google.com/View?docid=dhskngnq_6c4z28fdg" target="_blank">这里</a>还有一点照片。以上大家自备梯子去看吧。河蟹得很厉害，我就不在这帖了（我什么时候用过这么低调的博文题目啊- -）。Youtube上的<a href="http://www.youtube.com/results?search_query=%E8%B4%B5%E5%B7%9E%E7%93%AE%E5%AE%89&amp;search_type=" target="_blank">相关视频</a>也被精确的ban掉。各大论坛、博客上曾经出现过的数千字的描述和几百楼的讨论大都早已不翼而飞，只剩下冰冷的尸体躺在百度快照里。比如<a href="http://cache.baidu.com/c?m=9d78d513d9d430d84f9ce2697d14c016194381132ba6db020cd1843993732d415321a3e52878564291d27d141cb20c19afe7360566597bebc89fd61d8cfdc97573c930340741c6140f8f4eea8a1d79957d875a9efc58a5adf146cff99792840244cb25067b82f18d5c&amp;p=b463ce15d9c106ed0be2962016&amp;user=baidu" target="_blank">这个</a>，就是很有意思的一篇。新闻透明不起来，还不知道要出现多少版本咧。在一个网络如此发达的时代，遮遮掩掩对谁都没有好处。像新华网那种报道，在这样的大环境下，怎么能不引起人们的无限遐想呢。</p>
<p>我总觉着单独这一个事件还不至于一下就把多少万人扇乎到一起。不知道平日里还有些什么事情让这些“不法分子”和“不明真相的群众”一直记着仇。</p>
<p>马上奥运就来了，出这么个事，真是囧死了。那谁，赶紧再出来<a href="http://blog.sina.com.cn/s/blog_46e94efe01009iom.html" target="_blank">含泪劝告</a>下吧。</p>

	<br /><h3>Related Posts</h3>
	<ul class="st-related-posts">
	<li>N / A</li>
	</ul>

]]></content:encoded>
			<wfw:commentRss>http://blog.tomtung.com/2008/06/29/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>学琴一个月~</title>
		<link>http://blog.tomtung.com/2008/06/first-month-learn-piano/</link>
		<comments>http://blog.tomtung.com/2008/06/first-month-learn-piano/#comments</comments>
		<pubDate>Mon, 30 Jun 2008 06:20:19 +0000</pubDate>
		<dc:creator>逆铭</dc:creator>
				<category><![CDATA[Music maks me talk]]></category>
		<category><![CDATA[巴赫]]></category>
		<category><![CDATA[钢琴]]></category>

		<guid isPermaLink="false">http://blog.tomtung.com/2008/06/%e5%ad%a6%e7%90%b4%e4%b8%80%e4%b8%aa%e6%9c%887%e6%9c%881%e6%97%a5%e6%9b%b4%e6%96%b07%e6%9c%882%e6%97%a5%e6%9b%b4%e6%96%b0/</guid>
		<description><![CDATA[从买琴到现在差不多一个月了。照例买书自学（搞OI之前就养成自学的习惯了- -）。因为是初学，花了不少时间尝试适合自己的学习策略和时间安排，进度比较慢，哈农和599都才到第8首。录了巴赫平均律第一首传上来，纪念学琴一周月~ 使用Steinberg The Grand 2钢琴音色。因为声卡很烂，很多地方失真，将就吧…… 这个是我现在能弹下来的最难的曲子了（还不会弹调带升降号的曲子，不许B4新手-___-）……录了好几遍，节奏和力度的控制总是不理想。唉，工夫还远远不到啊。 最后感谢王野牛的学习建议。感谢FW同学送我那本哈农。 Tags：巴赫, 钢琴 Related Posts 初来北航一个多月的零零碎碎 (12) 肖邦夜曲几个著名版本的风格 (4) 简记杨东荫音乐会 (9) 写在临行前 (9) Le Matin by Yann Tiersen (Yamaha DGX-620) (11)]]></description>
			<content:encoded><![CDATA[<p>从<a href="http://fanfou.com/statuses/gY5gZzzSjXA" target="_blank">买琴</a>到现在差不多一个月了。照例买书自学（搞OI之前就养成自学的习惯了- -）。因为是初学，花了不少时间尝试适合自己的学习策略和时间安排，进度比较慢，哈农和599都才到第8首。录了巴赫平均律第一首传上来，纪念学琴一周月~</p>
<p>使用Steinberg The Grand 2钢琴音色。因为声卡很烂，很多地方失真，将就吧……</p>
<p>这个是我现在能弹下来的最难的曲子了（还不会弹调带升降号的曲子，不许B4新手-___-）……录了好几遍，节奏和力度的控制总是不理想。唉，工夫还远远不到啊。</p>
<p>最后感谢王野牛的学习建议。感谢FW同学送我那本哈农。</p>
<p><object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" width="400" height="342" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0"><param name="src" value="http://www.tudou.com/v/eeCOpScI9s0" /><param name="wmode" value="transparent" /><param name="allowfullscreen" value="true" /><embed type="application/x-shockwave-flash" width="400" height="342" src="http://www.tudou.com/v/eeCOpScI9s0" allowfullscreen="true" wmode="transparent"></embed></object></p>

	<br />Tags：<a href="http://blog.tomtung.com/tag/bach/" title="巴赫" rel="tag">巴赫</a>, <a href="http://blog.tomtung.com/tag/%e9%92%a2%e7%90%b4/" title="钢琴" rel="tag">钢琴</a><br />

	<br /><h3>Related Posts</h3>
	<ul class="st-related-posts">
	<li><a href="http://blog.tomtung.com/2008/10/first-month-in-buaa/" title="初来北航一个多月的零零碎碎 (2008-10-29)">初来北航一个多月的零零碎碎</a> (12)</li>
	<li><a href="http://blog.tomtung.com/2007/01/interpretations-of-chopin-nocturnes/" title="肖邦夜曲几个著名版本的风格 (2007-01-06)">肖邦夜曲几个著名版本的风格</a> (4)</li>
	<li><a href="http://blog.tomtung.com/2008/01/yangdongyin-concert/" title="简记杨东荫音乐会 (2008-01-27)">简记杨东荫音乐会</a> (9)</li>
	<li><a href="http://blog.tomtung.com/2008/09/unable-to-stay/" title="写在临行前 (2008-09-18)">写在临行前</a> (9)</li>
	<li><a href="http://blog.tomtung.com/2009/09/le-matin/" title="Le Matin by Yann Tiersen (Yamaha DGX-620) (2009-09-08)">Le Matin by Yann Tiersen (Yamaha DGX-620)</a> (11)</li>
</ul>

]]></content:encoded>
			<wfw:commentRss>http://blog.tomtung.com/2008/06/first-month-learn-piano/feed/</wfw:commentRss>
		<slash:comments>16</slash:comments>
		</item>
		<item>
		<title>宇文硕 &#8211; 叙事曲</title>
		<link>http://blog.tomtung.com/2008/06/yuwenshuo-ballad/</link>
		<comments>http://blog.tomtung.com/2008/06/yuwenshuo-ballad/#comments</comments>
		<pubDate>Thu, 12 Jun 2008 12:53:42 +0000</pubDate>
		<dc:creator>逆铭</dc:creator>
				<category><![CDATA[Music maks me talk]]></category>
		<category><![CDATA[宇文硕]]></category>
		<category><![CDATA[肖邦]]></category>
		<category><![CDATA[钢琴]]></category>

		<guid isPermaLink="false">http://blog.tomtung.com/2008/06/%e5%ae%87%e6%96%87%e7%a1%95-%e5%8f%99%e4%ba%8b%e6%9b%b2/</guid>
		<description><![CDATA[前面在网上乱逛的时候发现宇文硕08年又写了几首新作品，才想起了原来做的这个东西： 这个叙事曲是06年流行钢琴网第三届原创钢琴作品比赛古典组冠军作品。我一直都很关注这个比赛，因为总是能听到让人颇为惊喜的曲子。这就是其中之一了。 虽然有一些瑕疵，各个主题也没有充分发展和关联来撑起整个叙事曲的宏大结构，但是全曲流畅精致，透出无法掩盖的出众才气，令人爱不释“耳”。当时听完就想做成mp3，以便随时欣赏并四处推荐（=.=）。 这个是用overture挂上the grand 2录的，速度只做了轻微调整。由于过分业余且毫无经验，力度和音色上我花费了相当长的时间。本来想把当年所有获奖作品都这样做出来再发布，但是时间和能力都太有限，只完成了很小的一部分，只好不了了之。 现在把这个前年做的东西发上来。最终效果并不够自然，也很粗糙，但毕竟是我颇花了一番心思的。以此表达我作为一个业余爱乐者，对这位才华横溢并迅速进步的音乐人的敬意和期待。 另外强烈推荐下宇文硕的《波兰舞曲》。那可是第一届比赛的古典组冠军作品。 Tags：宇文硕, 肖邦, 钢琴 Related Posts 肖邦夜曲几个著名版本的风格 (4) 拉威尔《为死去公主所作的孔雀舞》的三个版本 (4) 学琴一个月~ (16) 简记杨东荫音乐会 (9) Le Matin by Yann Tiersen (Yamaha DGX-620) (11)]]></description>
			<content:encoded><![CDATA[<div class="wp-caption aligncenter" style="width: 604px"><img title="http://gallery.tomtung.com/pictures/yuwenshuo-chopin.jpg" src="http://gallery.tomtung.com/pictures/yuwenshuo-chopin.jpg" alt="宇文硕 / 肖邦" width="594" height="594" /><p class="wp-caption-text">宇文硕 / 肖邦</p></div>
<p>前面在网上乱逛的时候发现<a href="http://www.baidu.com/s?wd=%D3%EE%CE%C4%CB%B6" target="_blank">宇文硕</a>08年又写了几首新作品，才想起了原来做的这个东西：</p>
<p><object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" width="160" height="32" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0"><param name="src" value="http://www.8box.com/feed/7C93E6_s_170964_/mini.swf" /><param name="wmode" value="transparent" /><embed type="application/x-shockwave-flash" width="160" height="32" src="http://www.8box.com/feed/7C93E6_s_170964_/mini.swf" wmode="transparent"></embed></object></p>
<p>这个叙事曲是06年<a href="http://bbs.popiano.org/viewthread.php?tid=65462&amp;extra=page%3D1" target="_blank">流行钢琴网第三届原创钢琴作品比赛</a>古典组冠军作品。我一直都很关注这个比赛，因为总是能听到让人颇为惊喜的曲子。这就是其中之一了。</p>
<p>虽然有一些瑕疵，各个主题也没有充分发展和关联来撑起整个叙事曲的宏大结构，但是全曲流畅精致，透出无法掩盖的出众才气，令人爱不释“耳”。当时听完就想做成mp3，以便随时欣赏并四处推荐（=.=）。</p>
<p>这个是用overture挂上the grand 2录的，速度只做了轻微调整。由于过分业余且毫无经验，力度和音色上我花费了相当长的时间。本来想把当年所有获奖作品都这样做出来再发布，但是时间和能力都太有限，只完成了很小的一部分，只好不了了之。</p>
<p>现在把这个前年做的东西发上来。最终效果并不够自然，也很粗糙，但毕竟是我颇花了一番心思的。以此表达我作为一个业余爱乐者，对这位才华横溢并迅速进步的音乐人的敬意和期待。</p>
<p>另外强烈推荐下宇文硕的《波兰舞曲》。那可是<a href="http://bbs.popiano.org/viewthread.php?tid=27685&amp;extra=page%3D1" target="_blank">第一届比赛</a>的古典组冠军作品。</p>

	<br />Tags：<a href="http://blog.tomtung.com/tag/%e5%ae%87%e6%96%87%e7%a1%95/" title="宇文硕" rel="tag">宇文硕</a>, <a href="http://blog.tomtung.com/tag/chopin/" title="肖邦" rel="tag">肖邦</a>, <a href="http://blog.tomtung.com/tag/%e9%92%a2%e7%90%b4/" title="钢琴" rel="tag">钢琴</a><br />

	<br /><h3>Related Posts</h3>
	<ul class="st-related-posts">
	<li><a href="http://blog.tomtung.com/2007/01/interpretations-of-chopin-nocturnes/" title="肖邦夜曲几个著名版本的风格 (2007-01-06)">肖邦夜曲几个著名版本的风格</a> (4)</li>
	<li><a href="http://blog.tomtung.com/2008/07/ravel-pavane-pour-une-infante-defunte-3-interpretations/" title="拉威尔《为死去公主所作的孔雀舞》的三个版本 (2008-07-26)">拉威尔《为死去公主所作的孔雀舞》的三个版本</a> (4)</li>
	<li><a href="http://blog.tomtung.com/2008/06/first-month-learn-piano/" title="学琴一个月~ (2008-06-30)">学琴一个月~</a> (16)</li>
	<li><a href="http://blog.tomtung.com/2008/01/yangdongyin-concert/" title="简记杨东荫音乐会 (2008-01-27)">简记杨东荫音乐会</a> (9)</li>
	<li><a href="http://blog.tomtung.com/2009/09/le-matin/" title="Le Matin by Yann Tiersen (Yamaha DGX-620) (2009-09-08)">Le Matin by Yann Tiersen (Yamaha DGX-620)</a> (11)</li>
</ul>

]]></content:encoded>
			<wfw:commentRss>http://blog.tomtung.com/2008/06/yuwenshuo-ballad/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Undivided</title>
		<link>http://blog.tomtung.com/2008/06/undivided/</link>
		<comments>http://blog.tomtung.com/2008/06/undivided/#comments</comments>
		<pubDate>Tue, 03 Jun 2008 05:11:14 +0000</pubDate>
		<dc:creator>逆铭</dc:creator>
				<category><![CDATA[Music maks me talk]]></category>
		<category><![CDATA[5.12地震]]></category>
		<category><![CDATA[Bon Jovi]]></category>

		<guid isPermaLink="false">http://blog.tomtung.com/2008/06/undivided/</guid>
		<description><![CDATA[今天在这里听到了这首歌，在近日来过度压抑、情感透支的情况下，突然就有了一份振奋和重燃的感动。生活在继续，我们还要振作起来做更多的事。 One for love, One for truth&#8230;Where we once were divided, now we stand united. We stand as one&#8230; undivided. 不要忘了那个truth。引用一句近日很流行的话： 夏天到了，秋天还会远吗？ Bon Jovi &#8211; Undivided That was my brother lost in the rubble 在废墟里我失去了兄弟 That was my sister lost in the crush 拥挤的人群中我失去了姐妹 That was our mothers, those were our children 那是我们的母亲，那是我们的孩子 That was [...]]]></description>
			<content:encoded><![CDATA[<p>今天在<a href="http://trix.cn/article.asp?id=144" target="_blank">这里</a>听到了这首歌，在近日来过度压抑、情感透支的情况下，突然就有了一份振奋和重燃的感动。生活在继续，我们还要振作起来做更多的事。</p>
<p><strong>One for love, One for <span style="text-decoration: underline;">truth</span>&#8230;Where we once were divided, now we stand united. We stand as one&#8230; undivided.</strong></p>
<p>不要忘了那个truth。引用一句近日很流行的话：</p>
<p>夏天到了，秋天还会远吗？</p>
<p>Bon Jovi &#8211; Undivided</p>
<p><object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" width="160" height="32" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0"><param name="src" value="http://www.8box.cn/feed/FF0000_s_34997_/mini.swf" /><param name="wmode" value="transparent" /><embed type="application/x-shockwave-flash" width="160" height="32" src="http://www.8box.cn/feed/FF0000_s_34997_/mini.swf" wmode="transparent"></embed></object></p>
<p><span style="color: red;">That was my brother lost in the rubble 在废墟里我失去了兄弟<br />
That was my sister lost in the crush 拥挤的人群中我失去了姐妹<br />
That was our mothers, those were our children 那是我们的母亲，那是我们的孩子<br />
That was our fathers, that was each one of us 那是我们的父亲，那是我们每一人<br />
A million prayers to God above 上百万次对上帝的祈祷<br />
A million tears make an ocean of 上百万颗泪水汇成海洋<br />
One for love 为了爱<br />
One for truth 为了真理<br />
One for me, one for you 为了我，为了你<br />
I found spirit, they couldn&#8217;t ruin it 我发现精神，他们无法摧毁<br />
I found courage in the smoke and dust 在硝烟和尘埃中我找到了勇气<br />
I found faith in the songs you silenced 在你沉默的歌声中我找到了信念<br />
Deep down it&#8217;s ringing out in each of us 在我们每人的心灵深处响起<br />
Yeah&#8230; yeah, yeah, yeah, yeah 是的是的<br />
One for love 为了爱<br />
One for truth 为了真理<br />
One for me, one for you 为了我，为了你 </span></p>
<p>Where we once were divided, now we stand united  在我们曾经分开的地方，现在我们站在一起<br />
We stand as one&#8230; undivided. 我们合而为一，不可分离<br />
How many hands? How many hearts? 多少双手？多少颗心？<br />
How many dreams been torn apart? 多少破碎的梦想？<br />
Enough, enough&#8230; the time has come to rise back as 够了，够了&#8230;我们该重新联合一起<br />
One for love  为了爱<br />
One for truth  为了真理<br />
One for me, one for you 为了我，为了你<br />
Where we once were divided, now we stand united 在我们曾经分开的地方，现在我们合而为一<br />
We stand as one&#8230; undivided. 我们合而为一，不可分离<br />
Undivided. 不可分离<br />
Undivided. 不可分离<br />
One for love  为了爱<br />
One for truth  为了真理<br />
One for me, one for you 为了我，为了你<br />
Where we once were divided, now we stand united 在我们曾经分开的地方，现在我们站在一起<br />
We stand as one&#8230; undivided. 我们众志成城&#8230;不可分离</p>

	<br />Tags：<a href="http://blog.tomtung.com/tag/5-12%e5%9c%b0%e9%9c%87/" title="5.12地震" rel="tag">5.12地震</a>, <a href="http://blog.tomtung.com/tag/bon-jovi/" title="Bon Jovi" rel="tag">Bon Jovi</a><br />

	<br /><h3>Related Posts</h3>
	<ul class="st-related-posts">
	<li><a href="http://blog.tomtung.com/2008/05/few-hours-after-5-12-earthquake/" title="流水账：小地震及其后几小时 (2008-05-12)">流水账：小地震及其后几小时</a> (3)</li>
	<li><a href="http://blog.tomtung.com/2008/05/3-min-when-time-stopped/" title="时间凝滞的三分钟 (2008-05-19)">时间凝滞的三分钟</a> (0)</li>
	<li><a href="http://blog.tomtung.com/2008/05/5-12-hopeless/" title="苍白 (2008-05-22)">苍白</a> (1)</li>
</ul>

]]></content:encoded>
			<wfw:commentRss>http://blog.tomtung.com/2008/06/undivided/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>强物: 随音乐翻动的莫扎特安魂曲手稿(Flash)</title>
		<link>http://blog.tomtung.com/2008/06/mozart-requiem-manuscript-flash/</link>
		<comments>http://blog.tomtung.com/2008/06/mozart-requiem-manuscript-flash/#comments</comments>
		<pubDate>Sun, 01 Jun 2008 06:54:23 +0000</pubDate>
		<dc:creator>逆铭</dc:creator>
				<category><![CDATA[Music maks me talk]]></category>
		<category><![CDATA[flash]]></category>
		<category><![CDATA[莫扎特]]></category>

		<guid isPermaLink="false">http://blog.tomtung.com/2008/06/%e5%bc%ba%e7%89%a9-%e9%9a%8f%e9%9f%b3%e4%b9%90%e7%bf%bb%e5%8a%a8%e7%9a%84%e8%8e%ab%e6%89%8e%e7%89%b9%e5%ae%89%e9%ad%82%e6%9b%b2%e6%89%8b%e7%a8%bfflash/</guid>
		<description><![CDATA[如上，真是强大。 是一个buaa的学姐在某群里询问哪里能下载到时，我才知道有这个好东西。安魂曲是我最喜欢的莫扎特作品之一了，随着音乐，莫扎特绝笔之作的手稿一页页翻动……确实很吸引人啊。 这个其实是一张CD里的Feature。在EC上找到，然后花几天用骡子拖下来，迫不及待地打开……恩，还是有一点失望，小莫手稿字迹本来就模糊，偏偏这里图像分辨率又不高……不过感觉还是很好的，特上传到Mofile网盘（下载链接不太好找，仔细在广告之间瞧瞧），推荐给大家。 另，推荐此CD，虽然编制里没有管风琴有点小遗憾，但是绝对演录俱佳。点这里用骡子拖下整张CD。封面贴在下面先： Tags：flash, 莫扎特 Related Posts 推荐个“破游戏” (1) 傻乐 (2)]]></description>
			<content:encoded><![CDATA[<div class="wp-caption alignnone" style="width: 620px"><a href="http://gallery.tomtung.com/pictures/mozart-requiem-manuscript-flash.jpg"><img class=" " title="http://gallery.tomtung.com/pictures/mozart-requiem-manuscript-flash.jpg" src="http://gallery.tomtung.com/pictures/mozart-requiem-manuscript-flash.jpg" alt="" width="610" height="448" /></a><p class="wp-caption-text">截图</p></div>
<p>如上，真是强大。</p>
<p>是<a href="http://blog.sina.com.cn/zxc74" target="_blank">一个buaa的学姐</a>在某群里询问哪里能下载到时，我才知道有这个好东西。安魂曲是我最喜欢的莫扎特作品之一了，随着音乐，莫扎特绝笔之作的手稿一页页翻动……确实很吸引人啊。</p>
<p>这个其实是<a href="http://www.amazon.co.uk/Mozart-Requiem-Harnoncourt-Gerald-Finley/dp/B00022UO9I" target="_blank">一张CD</a>里的Feature。在<a href="http://www.eliteclasica.com/detalle-publicacion.php?ref=7924" target="_blank">EC</a>上找到，然后花几天用骡子拖下来，迫不及待地打开……恩，还是有一点失望，小莫手稿字迹本来就模糊，偏偏这里图像分辨率又不高……不过感觉还是很好的，特上传到<a href="http://pickup.mofile.com/5760767892488154" target="_blank">Mofile网盘</a>（下载链接不太好找，仔细在广告之间瞧瞧），推荐给大家。</p>
<p>另，推荐此CD，虽然编制里没有管风琴有点小遗憾，但是绝对演录俱佳。点<a href="ed2k://%7Cfile%7CMozart%20-%20Requiem%20-%20Harnoncourt.rar%7C269133222%7C236F56A150832EBD7C35277C444EE6B0%7Ch=LPE3LTWFU5NJ5ZKNSLT2R7XGEO5GL3NF%7C/" target="_blank">这里</a>用骡子拖下整张CD。封面贴在下面先：</p>
<div class="wp-caption aligncenter" style="width: 595px"><a href="http://gallery.tomtung.com/pictures/harnoncourt-mozart-requiem-cd-cover.jpg"><img title="http://gallery.tomtung.com/pictures/harnoncourt-mozart-requiem-cd-cover.jpg" src="http://gallery.tomtung.com/pictures/harnoncourt-mozart-requiem-cd-cover.jpg" alt="CD Cover" width="585" height="576" /></a><p class="wp-caption-text">CD Cover</p></div>

	<br />Tags：<a href="http://blog.tomtung.com/tag/flash/" title="flash" rel="tag">flash</a>, <a href="http://blog.tomtung.com/tag/mozart/" title="莫扎特" rel="tag">莫扎特</a><br />

	<br /><h3>Related Posts</h3>
	<ul class="st-related-posts">
	<li><a href="http://blog.tomtung.com/2008/01/po-game/" title="推荐个“破游戏” (2008-01-17)">推荐个“破游戏”</a> (1)</li>
	<li><a href="http://blog.tomtung.com/2007/05/happy/" title="傻乐 (2007-05-17)">傻乐</a> (2)</li>
</ul>

]]></content:encoded>
			<wfw:commentRss>http://blog.tomtung.com/2008/06/mozart-requiem-manuscript-flash/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>苍白</title>
		<link>http://blog.tomtung.com/2008/05/5-12-hopeless/</link>
		<comments>http://blog.tomtung.com/2008/05/5-12-hopeless/#comments</comments>
		<pubDate>Thu, 22 May 2008 05:04:41 +0000</pubDate>
		<dc:creator>逆铭</dc:creator>
				<category><![CDATA[杂的扯]]></category>
		<category><![CDATA[5.12地震]]></category>

		<guid isPermaLink="false">http://blog.tomtung.com/2008/05/%e8%8b%8d%e7%99%bd/</guid>
		<description><![CDATA[最近看的文字大都是关于感动、反思、质疑、捐款，诸如此类，亲历震后者的记述见得并不多，即使有，往往也不过是匆忙疲惫的几笔。照片看了不少，但那也不过是一个个瞬间，看着心理一难受，就下意识地跳过去了。前面读到《两个故事》，以及其它几篇文字，突然就明白了很多人说过的那种无力感是什么意思。隔着简单的文字就能感到巨大的震动，我不敢也无法想象亲历现场会是怎样的情形。 当你饶有兴趣地看着死亡人数慢慢攀升的时候，即使你能意识到，也无法切实感受到那个个位数字没每次增加，增加，然后清零进位，然后再增加，它究竟意味着什么。在不明白这点时，那些感动，那些感恩，那些乐观，那些歌功颂德，那些冷静，那些反思，那些安慰，那些同情，那些祈福，那些悼念，那些口号，那些眼泪，都显得太肤浅、太轻佻、太苍白了。 我也终于被那种强烈的痛苦感和无力感笼罩。把支付宝里剩下的一点钱再捐给牛博网，内心却仍得不到片刻安宁。 我不知道怎么继续写下去，面对着这样的苦难。 浓稠的压抑扑面而来，我只得无能地沉默。 BGM Tags：5.12地震 Related Posts 流水账：小地震及其后几小时 (3) 时间凝滞的三分钟 (0) Undivided (3)]]></description>
			<content:encoded><![CDATA[<p>最近看的文字大都是关于感动、反思、质疑、捐款，诸如此类，亲历震后者的记述见得并不多，即使有，往往也不过是匆忙疲惫的几笔。照片看了不少，但那也不过是一个个瞬间，看着心理一难受，就下意识地跳过去了。前面读到《<a href="http://songyan.blog.sohu.com/87990046.html" target="_blank">两个故事</a>》，以及其它几篇文字，突然就明白了很多人说过的那种无力感是什么意思。隔着简单的文字就能感到巨大的震动，我不敢也无法想象亲历现场会是怎样的情形。</p>
<p>当你饶有兴趣地看着死亡人数慢慢攀升的时候，即使你能意识到，也无法切实感受到那个个位数字没每次增加，增加，然后清零进位，然后再增加，它究竟意味着什么。在不明白这点时，那些感动，那些感恩，那些乐观，那些歌功颂德，那些冷静，那些反思，那些安慰，那些同情，那些祈福，那些悼念，那些口号，那些眼泪，都显得太肤浅、太轻佻、太苍白了。</p>
<p>我也终于被那种强烈的痛苦感和无力感笼罩。把支付宝里剩下的一点钱再捐给<a href="http://www.bullog.cn/" target="_blank">牛博网</a>，内心却仍得不到片刻安宁。</p>
<p>我不知道怎么继续写下去，面对着这样的苦难。</p>
<p>浓稠的压抑扑面而来，我只得无能地沉默。</p>
<p>BGM</p>
<p><object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" width="160" height="32" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0"><param name="src" value="http://www.8box.com/feed/000000_s_175335_/mini.swf" /><param name="wmode" value="transparent" /><embed type="application/x-shockwave-flash" width="160" height="32" src="http://www.8box.com/feed/000000_s_175335_/mini.swf" wmode="transparent"></embed></object></p>

	<br />Tags：<a href="http://blog.tomtung.com/tag/5-12%e5%9c%b0%e9%9c%87/" title="5.12地震" rel="tag">5.12地震</a><br />

	<br /><h3>Related Posts</h3>
	<ul class="st-related-posts">
	<li><a href="http://blog.tomtung.com/2008/05/few-hours-after-5-12-earthquake/" title="流水账：小地震及其后几小时 (2008-05-12)">流水账：小地震及其后几小时</a> (3)</li>
	<li><a href="http://blog.tomtung.com/2008/05/3-min-when-time-stopped/" title="时间凝滞的三分钟 (2008-05-19)">时间凝滞的三分钟</a> (0)</li>
	<li><a href="http://blog.tomtung.com/2008/06/undivided/" title="Undivided (2008-06-03)">Undivided</a> (3)</li>
</ul>

]]></content:encoded>
			<wfw:commentRss>http://blog.tomtung.com/2008/05/5-12-hopeless/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>时间凝滞的三分钟</title>
		<link>http://blog.tomtung.com/2008/05/3-min-when-time-stopped/</link>
		<comments>http://blog.tomtung.com/2008/05/3-min-when-time-stopped/#comments</comments>
		<pubDate>Mon, 19 May 2008 13:32:47 +0000</pubDate>
		<dc:creator>逆铭</dc:creator>
				<category><![CDATA[杂的扯]]></category>
		<category><![CDATA[5.12地震]]></category>

		<guid isPermaLink="false">http://blog.tomtung.com/2008/05/%e6%97%b6%e9%97%b4%e5%87%9d%e6%bb%9e%e7%9a%84%e4%b8%89%e5%88%86%e9%92%9f/</guid>
		<description><![CDATA[这是中国历史上第一次为普通人下半旗、全国致哀。那些刚刚升上天堂的同胞们能否感受到些许安慰呢？ 上面的视频是我上学途中拍摄的，在兰州一条很普通的街道。可能是由于各人手表时间有误差，在14:28分前几十秒时，很多司机们的喇叭就响了起来。到28分，防空警报和附近一个消防队的警笛也拉响了。尖锐的巨大声响汇聚，充满了周围的整个空间。这声响让我想起Penderecki的《广岛受难者的挽歌》，那也是一样的凄厉与悲恸。而这是全中国人一起奏响的挽歌啊。 行人车辆都渐渐停了下来。对面的酒店门前，服务人员整齐地站了几行，低着头。消防员们在消防车旁脱帽，站得笔直。马路上空旷得像戒了严。难以想象国务院昨天一条毫无强制力的公告，今天会得到这么彻底的贯彻。这三分钟，人们被浓烈的气氛淹没，停下来，强烈的感情被无言地表达。 似乎面对重大的灾难，中国人大都会表现出不同寻常的自觉。今早学校的晨会也是如此。早上的仪式结束后，我在饭否上更新道： 『升旗，下半旗，默哀，国旗下讲话。一中的晨会从未如此安静过。』 而在这段举国默哀的三分钟内，虽然各种声音都非常大，但却都纯粹。不同于平日的嘈杂的是人的静默。人们仿佛是在参加一场悼念的音乐会，静静望着在天空中回荡的声响，表情有的深沉，有的悲痛，有的困惑，然而都一言不发。不知道他们会不会和我一样，鼻子不由自主地发酸。 三分钟并不长。汽车鸣笛声渐渐稀疏，消防警笛和防空警报戛然而止。马路上很快开始有汽车驶过，人们继续沉默着，静静离开。天空依然晴朗，草木依然碧绿。生活还要继续。 上面是我坐1路公交车，在车上拍的照片。车窗上贴着“一路走好”四个字，还有一朵在阳光下显得很特别明亮的菊花。这平实且自发的行为实在比那些强制摊派的更令人感动。 不知道为什么，一路上严重堵车，然而却听不到抱怨。沉默还在很多人那里继续。一路上几乎看不到笑容。 接下来要做的事，如果仅仅是捐款献血、抒发感动、歌功颂德，将不能让人心安。从12号起，面对网上各种各样的情感、观点和故事，我一直在看，想。转眼事情已经过去一周，除了更加艰难的重建，是时候理性地反思、评判、监督、追究了：以是对死者告慰，对生者负责。 最后引用一段在这里看到的话。 『一切往生者皆曾经是某人的子女，某人的夫妻，某人的亲戚，某人的伴侣，某人的至交，某人的学生……在这很短的一生当中，他们笑过，哭过，欢喜过，忧愁过，他们来了，他们又走了。在这时候，我们应该记住，他们带给我们的欢乐，但是，又不要过分执着；我们忘记他们偶尔犯下的过失，但是又从里面学到一点启示；如此，他们的人生，他们这趟旅程，就不算枉行。他们的人生没有白过。然后，我们要知道，过不了多久，我们也将如此行过。愿一切众生皆得解脱。』 愿逝者一路走好。 BGM Tags：5.12地震 Related Posts 流水账：小地震及其后几小时 (3) Undivided (3) 苍白 (1)]]></description>
			<content:encoded><![CDATA[<p style="text-indent: 2em;"><span style="font-size: 14px;">这是中国历史上第一次为普通人下半旗、全国致哀。那些刚刚升上天堂的同胞们能否感受到些许安慰呢？</span></p>
<div>
<div><object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" width="480" height="370" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0"><param name="name" value="articlevblog" /><param name="src" value="http://vhead.blog.sina.com.cn/player/outer_player.swf?auto=0&amp;vid=13613081&amp;uid=1245986775&amp;pid=346&amp;tid=1" /><param name="allowfullscreen" value="true" /><embed type="application/x-shockwave-flash" width="480" height="370" src="http://vhead.blog.sina.com.cn/player/outer_player.swf?auto=0&amp;vid=13613081&amp;uid=1245986775&amp;pid=346&amp;tid=1" allowfullscreen="true" name="articlevblog"></embed></object></div>
</div>
<p style="text-indent: 2em;"><span style="font-size: 14px;">上面的视频是我上学途中拍摄的，在兰州一条很普通的街道。可能是由于各人手表时间有误差，在14:28分前几十秒时，很多司机们的喇叭就响了起来。到28分，防空警报和附近一个消防队的警笛也拉响了。尖锐的巨大声响汇聚，充满了周围的整个空间。这声响让我想起Penderecki的《</span><a href="http://www.maidee.com/program/812408" target="_blank"><span style="font-size: 14px;">广岛受难者的挽歌</span></a><span style="font-size: 14px;">》，那也是一样的凄厉与悲恸。而这是全中国人一起奏响的挽歌啊。</span></p>
<p style="text-indent: 2em;"><span style="font-size: 14px;"> </span></p>
<p style="text-indent: 2em;"><span style="font-size: 14px;">行人车辆都渐渐停了下来。对面的酒店门前，服务人员整齐地站了几行，低着头。消防员们在消防车旁脱帽，站得笔直。马路上空旷得像戒了严。难以想象国务院昨天一条毫无强制力的公告，今天会得到这么彻底的贯彻。这三分钟，人们被浓烈的气氛淹没，停下来，强烈的感情被无言地表达。</span></p>
<p style="text-indent: 2em;"><span style="font-size: 14px;"> </span></p>
<p style="text-indent: 2em;"><span style="font-size: 14px;">似乎面对重大的灾难，中国人大都会表现出不同寻常的自觉。今早学校的晨会也是如此。早上的仪式结束后，我在饭否上更新道：</span></p>
<p style="text-indent: 2em;"><span style="font-size: 14px;"> </span></p>
<p style="text-indent: 2em;"><span class="content"><span style="font-size: 14px;">『</span><a href="http://fanfou.com/statuses/8xjo0XaSzII" target="_blank"><span style="font-size: 14px;">升旗，下半旗，默哀，国旗下讲话。一中的晨会从未如此安静过。</span></a><span style="font-size: 14px;">』</span></span></p>
<p style="text-indent: 2em;"><span style="font-size: 14px;"> </span></p>
<p style="text-indent: 2em;"><span style="font-size: 14px;">而在这段举国默哀的三分钟内，虽然各种声音都非常大，但却都纯粹。不同于平日的嘈杂的是人的静默。人们仿佛是在参加一场悼念的音乐会，静静望着在天空中回荡的声响，表情有的深沉，有的悲痛，有的困惑，然而都一言不发。不知道他们会不会和我一样，鼻子不由自主地发酸。</span></p>
<p style="text-indent: 2em;"><span style="font-size: 14px;"> </span></p>
<p style="text-indent: 2em;"><span style="font-size: 14px;">三分钟并不长。汽车鸣笛声渐渐稀疏，消防警笛和防空警报戛然而止。马路上很快开始有汽车驶过，人们继续沉默着，静静离开。天空依然晴朗，草木依然碧绿。生活还要继续。</span></p>
<p style="text-indent: 2em;"><span style="font-size: 14px;"> </span><span style="font-size: 14px;"> </span></p>
<div class="wp-caption aligncenter" style="width: 633px"><a href="http://gallery.tomtung.com/pictures/5-12-yiluzouhao.jpg"><img title="http://gallery.tomtung.com/pictures/5-12-yiluzouhao.jpg" src="http://gallery.tomtung.com/pictures/5-12-yiluzouhao.jpg" alt="一路走好" width="623" height="463" /></a><p class="wp-caption-text">一路走好</p></div>
<p style="text-indent: 2em;"><span style="font-size: 14px;">上面是我坐1路公交车，在车上拍的照片。车窗上贴着“一路走好”四个字，还有一朵在阳光下显得很特别明亮的菊花。这平实且自发的行为实在比那些强制摊派的更令人感动。</span></p>
<p style="text-indent: 2em;"><span style="font-size: 14px;"> </span></p>
<p style="text-indent: 2em;"><span style="font-size: 14px;">不知道为什么，一路上严重堵车，然而却听不到抱怨。沉默还在很多人那里继续。一路上几乎看不到笑容。</span></p>
<p style="text-indent: 2em;"><span style="font-size: 14px;"> </span></p>
<p style="text-indent: 2em;"><span style="font-size: 14px;">接下来要做的事，如果仅仅是捐款献血、抒发感动、歌功颂德，将不能让人心安。从12号起，面对网上各种各样的情感、观点和故事，我一直在看，想。转眼事情已经过去一周，除了更加艰难的重建，是时候理性地反思、评判、监督、追究了：以是对死者告慰，对生者负责。</span></p>
<p style="text-indent: 2em;"><span style="font-size: 14px;"> </span></p>
<p style="text-indent: 2em;"><span style="font-size: 14px;">最后引用一段在</span><a href="http://www.huangjiwei.com/blog/?p=2568" target="_blank"><span style="font-size: 14px;">这里</span></a><span style="font-size: 14px;">看到的话。</span></p>
<p style="text-indent: 2em;"><span style="font-size: 14px;"> </span></p>
<p style="text-indent: 2em;"><span> </span><span style="font-size: 14px;">『</span><span style="color: #333333;">一切往生者皆曾经是某人的子女，某人的夫妻，某人的亲戚，某人的伴侣，某人的至交，某人的学生……在这很短的一生当中，他们笑过，哭过，欢喜过，忧愁过，他们来了，他们又走了。在这时候，我们应该记住，他们带给我们的欢乐，但是，又不要过分执着；我们忘记他们偶尔犯下的过失，但是又从里面学到一点启示；如此，他们的人生，他们这趟旅程，就不算枉行。他们的人生没有白过。然后，我们要知道，过不了多久，我们也将如此行过。愿一切众生皆得解脱。』</span></p>
<p style="text-indent: 2em;"><span style="font-size: 14px;"> </span></p>
<p style="text-indent: 2em;"><span style="font-size: 14px;">愿逝者一路走好。</span></p>
<p style="text-indent: 2em;">
<p>BGM</p>
<p><object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" width="160" height="32" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0"><param name="src" value="http://www.8box.com/feed/DBDBDB_s_41982_/mini.swf" /><param name="wmode" value="transparent" /><embed type="application/x-shockwave-flash" width="160" height="32" src="http://www.8box.com/feed/DBDBDB_s_41982_/mini.swf" wmode="transparent"></embed></object></p>

	<br />Tags：<a href="http://blog.tomtung.com/tag/5-12%e5%9c%b0%e9%9c%87/" title="5.12地震" rel="tag">5.12地震</a><br />

	<br /><h3>Related Posts</h3>
	<ul class="st-related-posts">
	<li><a href="http://blog.tomtung.com/2008/05/few-hours-after-5-12-earthquake/" title="流水账：小地震及其后几小时 (2008-05-12)">流水账：小地震及其后几小时</a> (3)</li>
	<li><a href="http://blog.tomtung.com/2008/06/undivided/" title="Undivided (2008-06-03)">Undivided</a> (3)</li>
	<li><a href="http://blog.tomtung.com/2008/05/5-12-hopeless/" title="苍白 (2008-05-22)">苍白</a> (1)</li>
</ul>

]]></content:encoded>
			<wfw:commentRss>http://blog.tomtung.com/2008/05/3-min-when-time-stopped/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>流水账：小地震及其后几小时</title>
		<link>http://blog.tomtung.com/2008/05/few-hours-after-5-12-earthquake/</link>
		<comments>http://blog.tomtung.com/2008/05/few-hours-after-5-12-earthquake/#comments</comments>
		<pubDate>Mon, 12 May 2008 11:38:14 +0000</pubDate>
		<dc:creator>逆铭</dc:creator>
				<category><![CDATA[生活在此处]]></category>
		<category><![CDATA[5.12地震]]></category>

		<guid isPermaLink="false">http://blog.tomtung.com/2008/05/%e6%b5%81%e6%b0%b4%e8%b4%a6%ef%bc%9a%e5%b0%8f%e5%9c%b0%e9%9c%87%e5%8f%8a%e5%85%b6%e5%90%8e%e5%87%a0%e5%b0%8f%e6%97%b6/</guid>
		<description><![CDATA[两点半不到，正在玩劲乐团。看着下落的音块，突然感到一阵晕乎。呃……难道是玩晕了？稍停了一下，仔细一感觉，是楼在晃啊，一种缓慢却极为有力、不可抗拒的震动。老妈在旁边房子吼开了，具体吼什么记不清，反正我俩立刻就转移到了厕所。待了几十秒，觉得不震了，就立刻下楼。发现一分钟之内院子里就已经站满了人，有没顾上穿鞋的，有忘拿钥匙的。 那会儿也该上学了，去坐公交。 车上一老汉兴致勃勃地讲他反应如何迅速，在晃第二下的时候就知道地震了，然后一直扯到民国若干年附近发生过多么强烈的地震。一路上，人们成堆地站在刚逃出的建筑物前，对旁人兴高采烈地使劲比划着讲述刚才的感受。有上学、上班者在其间穿行如常。 到了学校，二球下面碰上了大pia，被告知第一节课自由活动。满操场都是人，大家三五成群地讨论着半小时前各自在干什么、震感有多强烈、做出了什么反应，并不时死啊活啊地开玩笑。有人当时正在车上，因此没太大感觉，于是不免捶胸顿足，对错过一次感受的机会惋惜不已。很多人手机信号不好，有传说某信号塔被摇倒了。偶见联系不到父母吓哭的女生。 有人说地震那会儿教学楼某处直往下掉水泥渣子，还拍了录像。 第二节课得到通知，因为震中在四川某县，离得挺远，故照常上课。老薛派人花了不少时间才把人从操场上都叫上来。那会还感觉晕乎，睡了一会。 预计体育馆塌不了，第三节课按原计划和哑熊翘课打球。中途哑熊收到中国电信的短信，说让用固话给家里报平安。 第四节课好几个班提前放学，跟着混了出去。中途很没rp地碰到老薛，不过他没管。 班里有人提议今晚去广场的啤酒广场过夜，不知是否有人实施。 以上。 Tags：5.12地震 Related Posts Undivided (3) 时间凝滞的三分钟 (0) 苍白 (1)]]></description>
			<content:encoded><![CDATA[<p><img class="aligncenter" title="http://gallery.tomtung.com/pictures/5-12-usgs-shakemap.jpg" src="http://gallery.tomtung.com/pictures/5-12-usgs-shakemap.jpg" alt="USGS ShakeMap" width="510" height="600" /></p>
<p>两点半不到，正在玩<a href="http://www.o2jam.cn/" target="_blank">劲乐团</a>。看着下落的音块，突然感到一阵晕乎。呃……难道是玩晕了？稍停了一下，仔细一感觉，是楼在晃啊，一种缓慢却极为有力、不可抗拒的震动。老妈在旁边房子吼开了，具体吼什么记不清，反正我俩立刻就转移到了厕所。待了几十秒，觉得不震了，就立刻下楼。发现一分钟之内院子里就已经站满了人，有没顾上穿鞋的，有忘拿钥匙的。</p>
<p>那会儿也该上学了，去坐公交。</p>
<p>车上一老汉兴致勃勃地讲他反应如何迅速，在晃第二下的时候就知道地震了，然后一直扯到民国若干年附近发生过多么强烈的地震。一路上，人们成堆地站在刚逃出的建筑物前，对旁人兴高采烈地使劲比划着讲述刚才的感受。有上学、上班者在其间穿行如常。</p>
<p>到了学校，<a href="http://www.lzyz.net/other/4.jpg" target="_blank">二球</a>下面碰上了<a href="http://blog.sina.com.cn/ylcx3" target="_blank">大pia</a>，被告知第一节课自由活动。满操场都是人，大家三五成群地讨论着半小时前各自在干什么、震感有多强烈、做出了什么反应，并不时死啊活啊地开玩笑。有人当时正在车上，因此没太大感觉，于是不免捶胸顿足，对错过一次感受的机会惋惜不已。很多人手机信号不好，有传说某信号塔被摇倒了。偶见联系不到父母吓哭的女生。</p>
<p>有人说地震那会儿教学楼某处直往下掉水泥渣子，还拍了录像。</p>
<p>第二节课得到通知，因为震中在四川某县，离得挺远，故照常上课。老薛派人花了不少时间才把人从操场上都叫上来。那会还感觉晕乎，睡了一会。</p>
<p>预计体育馆塌不了，第三节课按原计划和哑熊翘课打球。中途哑熊收到中国电信的短信，说让用固话给家里报平安。</p>
<p>第四节课好几个班提前放学，跟着混了出去。中途很没rp地碰到老薛，不过他没管。</p>
<p>班里有人提议今晚去广场的啤酒广场过夜，不知是否有人实施。</p>
<p>以上。</p>

	<br />Tags：<a href="http://blog.tomtung.com/tag/5-12%e5%9c%b0%e9%9c%87/" title="5.12地震" rel="tag">5.12地震</a><br />

	<br /><h3>Related Posts</h3>
	<ul class="st-related-posts">
	<li><a href="http://blog.tomtung.com/2008/06/undivided/" title="Undivided (2008-06-03)">Undivided</a> (3)</li>
	<li><a href="http://blog.tomtung.com/2008/05/3-min-when-time-stopped/" title="时间凝滞的三分钟 (2008-05-19)">时间凝滞的三分钟</a> (0)</li>
	<li><a href="http://blog.tomtung.com/2008/05/5-12-hopeless/" title="苍白 (2008-05-22)">苍白</a> (1)</li>
</ul>

]]></content:encoded>
			<wfw:commentRss>http://blog.tomtung.com/2008/05/few-hours-after-5-12-earthquake/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Flying &#8211; 我最喜欢的魔术</title>
		<link>http://blog.tomtung.com/2008/03/david-copperfield-flying/</link>
		<comments>http://blog.tomtung.com/2008/03/david-copperfield-flying/#comments</comments>
		<pubDate>Fri, 07 Mar 2008 15:00:24 +0000</pubDate>
		<dc:creator>逆铭</dc:creator>
				<category><![CDATA[杂的扯]]></category>
		<category><![CDATA[大卫·科波菲尔]]></category>
		<category><![CDATA[视频]]></category>
		<category><![CDATA[魔术]]></category>

		<guid isPermaLink="false">http://blog.tomtung.com/2008/03/flying-%e6%88%91%e6%9c%80%e5%96%9c%e6%ac%a2%e7%9a%84%e9%ad%94%e6%9c%af/</guid>
		<description><![CDATA[想不起第一次在电视上看到David Copperfield的Flying是什么时候了，只记得当时看完真的是久久无法平静，David在空中轻盈地上上下下，随心所欲，无拘无束，不像是鸟在飞，倒是用“如鱼得水”形容来得恰当。之后几天都感觉那段自由舒展的背景旋律在耳边不断萦绕，闭上眼睛就看到David在半空逆光翻腾时的剪影。 前一段时间在骡子上拖下来了电影《David Copperfield Illusion》又看到了这个魔术，感觉和第一次看一样令人心潮澎湃。与其说这是魔术，不如说是魔幻的舞蹈，或者说是一个童话。也看过其他很多魔术，视觉冲击力不可谓不大，手法不可谓不精妙，但都没有这样喜欢。而这个童话给人带来的向往和感动是无法替代的。正如David本人所说： “To me, it wasn&#8217;t just about doing tricks. It was about taking the audience to another place. A special place. So they can really suspend their disbelief.” 的确，在欣赏这个童话的时候，我们已经下意识地忘记了身处何处而投身其中，心随其动。这个魔术的伟大不在于技术层面的复杂和神奇，而在于它试图传达的那个梦幻的美丽。 真的应该感谢他，为了这短短6分多钟的美丽，他付出了从最初构思到最终实现整整7年的努力。 下面是截自上述电影的相关片段： 电影里提供的并不是完整的舞台版本。David在飞翔之前还给现场观众放了一段录像，是在飞机发明前一些有着飞行梦想的人做出的失败尝试，有背上绑着机械翅膀的，有自行车两侧展开双翼的，等等。每次失败后都是无情的嘲笑。对比David之后优美自如的飞行，强烈的反差不禁让人动容。 下面是后来无意间看到的这个魔术的揭秘。可以看到，基本原理简单到甚至有些简陋，但这丝毫没有影响我对它的喜爱。人人都知道童话是编的，但我们都无法抗拒它的美，不是么？ 也许是受了这个魔术的影响，它的背景音乐也让我特别喜欢。后来查到是选自East of Eden的OST: 用的就是其中的Main Theme，旋律这么简单，却美得也这么开阔。 （自己忍不住简单记的，不保证完备和正确……） Tags：大卫·科波菲尔, 视频, 魔术 Related Posts 没有翅膀的鸟 通向天堂的飞翔 (12) Le Matin by Yann [...]]]></description>
			<content:encoded><![CDATA[<div><img class="aligncenter" title="http://gallery.tomtung.com/pictures/david-copperfield-with-eagle.jpg" src="http://gallery.tomtung.com/pictures/david-copperfield-with-eagle.jpg" alt="" width="448" height="326" /></div>
<p>想不起第一次在电视上看到David Copperfield的Flying是什么时候了，只记得当时看完真的是久久无法平静，David在空中轻盈地上上下下，随心所欲，无拘无束，不像是鸟在飞，倒是用“如鱼得水”形容来得恰当。之后几天都感觉那段自由舒展的背景旋律在耳边不断萦绕，闭上眼睛就看到David在半空逆光翻腾时的剪影。</p>
<p><img class="aligncenter" title="http://gallery.tomtung.com/pictures/david-copperfield-illusion-dvd-cover.jpg" src="http://gallery.tomtung.com/pictures/david-copperfield-illusion-dvd-cover.jpg" alt="" width="294" height="475" /></p>
<p>前一段时间在骡子上拖下来了电影《David Copperfield Illusion》又看到了这个魔术，感觉和第一次看一样令人心潮澎湃。与其说这是魔术，不如说是魔幻的舞蹈，或者说是一个童话。也看过其他很多魔术，视觉冲击力不可谓不大，手法不可谓不精妙，但都没有这样喜欢。而这个童话给人带来的向往和感动是无法替代的。正如David本人所说：</p>
<p>“To me, it wasn&#8217;t just about doing tricks. It was about taking the audience to another place. A special place. So they can really suspend their disbelief.”</p>
<p>的确，在欣赏这个童话的时候，我们已经下意识地忘记了身处何处而投身其中，心随其动。这个魔术的伟大不在于技术层面的复杂和神奇，而在于它试图传达的那个梦幻的美丽。</p>
<p>真的应该感谢他，为了这短短6分多钟的美丽，他付出了从最初构思到最终实现整整7年的努力。</p>
<p>下面是截自上述电影的相关片段：</p>
<div><object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" width="480" height="370" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0"><param name="name" value="ssss" /><param name="src" value="http://vhead.blog.sina.com.cn/player/outer_player.swf?auto=0&amp;vid=11933338&amp;uid=1245986775" /><param name="allowfullscreen" value="true" /><embed type="application/x-shockwave-flash" width="480" height="370" src="http://vhead.blog.sina.com.cn/player/outer_player.swf?auto=0&amp;vid=11933338&amp;uid=1245986775" allowfullscreen="true" name="ssss"></embed></object></div>
<p>电影里提供的并不是完整的舞台版本。David在飞翔之前还给现场观众放了一段录像，是在飞机发明前一些有着飞行梦想的人做出的失败尝试，有背上绑着机械翅膀的，有自行车两侧展开双翼的，等等。每次失败后都是无情的嘲笑。对比David之后优美自如的飞行，强烈的反差不禁让人动容。</p>
<p>下面是后来无意间看到的这个魔术的揭秘。可以看到，基本原理简单到甚至有些简陋，但这丝毫没有影响我对它的喜爱。人人都知道童话是编的，但我们都无法抗拒它的美，不是么？</p>
<p><object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" width="438" height="373" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0"><param name="src" value="http://union.bokecc.com/flash/player.swf?videoID=19505_169971&amp;auto_old=false" /><param name="allowfullscreen" value="true" /><embed type="application/x-shockwave-flash" width="438" height="373" src="http://union.bokecc.com/flash/player.swf?videoID=19505_169971&amp;auto_old=false" allowfullscreen="true"></embed></object></p>
<p>也许是受了这个魔术的影响，它的背景音乐也让我特别喜欢。后来查到是选自East of Eden的OST:</p>
<p><img class="aligncenter" title="http://gallery.tomtung.com/pictures/east-of-eden-ost-cd-cover.jpg" src="http://gallery.tomtung.com/pictures/east-of-eden-ost-cd-cover.jpg" alt="" width="337" height="336" /></p>
<p>用的就是其中的Main Theme，旋律这么简单，却美得也这么开阔。</p>
<p><img class="aligncenter" title="http://gallery.tomtung.com/pictures/east-of-eden-main-title-melody-sheet.jpg" src="http://gallery.tomtung.com/pictures/east-of-eden-main-title-melody-sheet.jpg" alt="" width="439" height="622" /></p>
<p>（自己忍不住简单记的，不保证完备和正确……）</p>

	<br />Tags：<a href="http://blog.tomtung.com/tag/david-copperfield/" title="大卫·科波菲尔" rel="tag">大卫·科波菲尔</a>, <a href="http://blog.tomtung.com/tag/%e8%a7%86%e9%a2%91/" title="视频" rel="tag">视频</a>, <a href="http://blog.tomtung.com/tag/%e9%ad%94%e6%9c%af/" title="魔术" rel="tag">魔术</a><br />

	<br /><h3>Related Posts</h3>
	<ul class="st-related-posts">
	<li><a href="http://blog.tomtung.com/2008/07/wiki/" title="没有翅膀的鸟 通向天堂的飞翔 (2008-07-20)">没有翅膀的鸟 通向天堂的飞翔</a> (12)</li>
	<li><a href="http://blog.tomtung.com/2009/09/le-matin/" title="Le Matin by Yann Tiersen (Yamaha DGX-620) (2009-09-08)">Le Matin by Yann Tiersen (Yamaha DGX-620)</a> (11)</li>
	<li><a href="http://blog.tomtung.com/2008/03/deconstructing-johann/" title="恶搞巴赫：Deconstructing Johann (2008-03-01)">恶搞巴赫：Deconstructing Johann</a> (0)</li>
</ul>

]]></content:encoded>
			<wfw:commentRss>http://blog.tomtung.com/2008/03/david-copperfield-flying/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>恶搞巴赫：Deconstructing Johann</title>
		<link>http://blog.tomtung.com/2008/03/deconstructing-johann/</link>
		<comments>http://blog.tomtung.com/2008/03/deconstructing-johann/#comments</comments>
		<pubDate>Sat, 01 Mar 2008 09:34:44 +0000</pubDate>
		<dc:creator>逆铭</dc:creator>
				<category><![CDATA[Music maks me talk]]></category>
		<category><![CDATA[巴赫]]></category>
		<category><![CDATA[搞笑]]></category>
		<category><![CDATA[视频]]></category>

		<guid isPermaLink="false">http://blog.tomtung.com/2008/03/deconstructing-johann/</guid>
		<description><![CDATA[偶然发现的一段很好玩的视频，是The King&#8217;s Singers在2000年巴赫音乐节表演的Deconstructing Johann。他们从巴赫的一些有名的作品中选出片段拼凑了一下，填上词，虚构出巴赫在写d小调托卡塔与赋格时与妻子很恶搞的对话。 注意看歌词哈： Deconstructing Johann J. S. Bach had a little problem. J. S. Bach was in a fix. J. S. Bach couldn&#8217;t find an answer. What to do? &#8220;I&#8217;ve written most of a rather fabulous work! Toccata, it&#8217;s in D minor, but now I&#8217;m feeling a bit of a jerk! I can&#8217;t [...]]]></description>
			<content:encoded><![CDATA[<p>偶然发现的一段很好玩的视频，是The King&#8217;s Singers在2000年巴赫音乐节表演的Deconstructing Johann。他们从巴赫的一些有名的作品中选出片段拼凑了一下，填上词，虚构出巴赫在写d小调托卡塔与赋格时与妻子很恶搞的对话。</p>
<p><object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" width="475" height="447" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0"><param name="src" value="http://vhead.blog.sina.com.cn/player/outer_player.swf?auto=0&amp;vid=234421&amp;uid=1247820694" /><param name="allowfullscreen" value="true" /><embed type="application/x-shockwave-flash" width="475" height="447" src="http://vhead.blog.sina.com.cn/player/outer_player.swf?auto=0&amp;vid=234421&amp;uid=1247820694" allowfullscreen="true"></embed></object></p>
<p>注意看歌词哈：</p>
<blockquote><p>Deconstructing Johann</p>
<p>J. S. Bach had a little problem.<br />
J. S. Bach was in a fix.<br />
J. S. Bach couldn&#8217;t find an answer.<br />
What to do?</p>
<p>&#8220;I&#8217;ve written most of a rather fabulous work!<br />
Toccata, it&#8217;s in D minor, but now I&#8217;m feeling a bit of a jerk!<br />
I can&#8217;t think of what should come after it&#8230;&#8221;</p>
<p>&#8220;Now,&#8221; said his wife, who was resting up after her 33rd child,<br />
&#8220;Johann, my dear, you should just go to bed.<br />
Something always comes up.&#8221;</p>
<p>&#8220;Don&#8217;t be a tweet!<br />
It&#8217;s a real crisis and I&#8217;m working to a deadline!<br />
What can I fit?<br />
What to fit after the great toccata?<br />
Maybe it needs to be something faster?<br />
I haven&#8217;t got a clue<br />
and in a week the piece is due.<br />
I&#8217;m in a panic!<br />
I&#8217;m stuck like glue!&#8221;</p>
<p>&#8220;Don&#8217;t get your knickers in a twist, Johann.<br />
&#8216;Those are only notes&#8217;, you&#8217;ve always said.<br />
There&#8217;s only twelve so use your head.<br />
How many arrangements of twelve notes can there possibly be?&#8221;</p>
<p>&#8220;That&#8217;s a problem I don&#8217;t want to deal with.<br />
How many permutations on C and D and E and F and G, A, B<br />
is a thing that I never heard of.&#8221;<br />
&#8220;You can leave that to Arnold Sch?nberg.<br />
He is the person to do that twelve-tone thing.&#8221;</p>
<p>&#8220;No!! No!!!<br />
It isn&#8217;t the answer!<br />
I haven&#8217;t the foggiest!<br />
What am I gonna do?<br />
I&#8217;m all in a panic!<br />
Aaah! No!&#8221;</p>
<p>&#8220;What can I do?<br />
I&#8217;ve finished my toccata but I have no fugue.&#8221;<br />
(Phone ringing)<br />
&#8220;Aaah&#8230; and now I&#8217;ve got a fugue!&#8221;</p></blockquote>
<p>笑料很多，慢慢欣赏~</p>

	<br />Tags：<a href="http://blog.tomtung.com/tag/bach/" title="巴赫" rel="tag">巴赫</a>, <a href="http://blog.tomtung.com/tag/%e6%90%9e%e7%ac%91/" title="搞笑" rel="tag">搞笑</a>, <a href="http://blog.tomtung.com/tag/%e8%a7%86%e9%a2%91/" title="视频" rel="tag">视频</a><br />

	<br /><h3>Related Posts</h3>
	<ul class="st-related-posts">
	<li><a href="http://blog.tomtung.com/2007/10/who-invented-recursion/" title="谁发明了递归 (2007-10-18)">谁发明了递归</a> (5)</li>
	<li><a href="http://blog.tomtung.com/2008/03/david-copperfield-flying/" title="Flying &#8211; 我最喜欢的魔术 (2008-03-07)">Flying &#8211; 我最喜欢的魔术</a> (6)</li>
	<li><a href="http://blog.tomtung.com/2008/10/first-month-in-buaa/" title="初来北航一个多月的零零碎碎 (2008-10-29)">初来北航一个多月的零零碎碎</a> (12)</li>
	<li><a href="http://blog.tomtung.com/2006/12/relationship-between-music-and-morality/" title="希特勒、墨索里尼与音乐——音乐本质再思考 (2006-12-14)">希特勒、墨索里尼与音乐——音乐本质再思考</a> (0)</li>
	<li><a href="http://blog.tomtung.com/2009/09/le-matin/" title="Le Matin by Yann Tiersen (Yamaha DGX-620) (2009-09-08)">Le Matin by Yann Tiersen (Yamaha DGX-620)</a> (11)</li>
</ul>

]]></content:encoded>
			<wfw:commentRss>http://blog.tomtung.com/2008/03/deconstructing-johann/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>简记一中2008新春音乐会(2月5日)</title>
		<link>http://blog.tomtung.com/2008/02/lzyz-new-years-concert/</link>
		<comments>http://blog.tomtung.com/2008/02/lzyz-new-years-concert/#comments</comments>
		<pubDate>Tue, 05 Feb 2008 17:29:06 +0000</pubDate>
		<dc:creator>逆铭</dc:creator>
				<category><![CDATA[Music maks me talk]]></category>
		<category><![CDATA[一中]]></category>
		<category><![CDATA[音乐会]]></category>

		<guid isPermaLink="false">http://blog.tomtung.com/2008/02/%e7%ae%80%e8%ae%b0%e4%b8%80%e4%b8%ad2008%e6%96%b0%e6%98%a5%e9%9f%b3%e4%b9%90%e4%bc%9a2%e6%9c%885%e6%97%a5/</guid>
		<description><![CDATA[首先我要对那些没有到场的同学表示惋惜：你们错过了一场异常精彩的（免费）音乐会！我也非常庆幸自己没有偷懒不去。 这次音乐会是为了庆祝一中乐队成立15周年特别举办的，还请到了很多早已毕业的老成员。其中不少现在仍然从事音乐专业，有好几个是中央音乐学院和上海音乐学院的，甚至还有几个国外的（比如莫斯科国立柴可夫斯基音乐学院的研究生什么的=。=），很好很强大…… 开场是一首军乐的进行曲，乐队站好了下面还没完全安静，指挥就上来二话不说开始指挥。这个开场就很不同反响了，各个声部融合得很好，铜管也没有像以往很刺耳，整齐划一，颇为规整。 接着主持人上来宣布音乐会开始。 上半场基本上都是室内乐作品。开始就是Beethoven的第一弦乐四重奏首乐章。由于是早期作品，并没有什么特别博大精深的地方，在整体诠释方面挑不出什么大的纰漏。几处衔接不甚紧密。总体很好。 接下来是所谓打击乐铜鼓五重奏，不过只上来四个人=。=……对打击乐不甚了解，不敢乱讲。但是四位表演者（或者可以叫音乐家？）显然很好地吸引了全场的注意力，其中到最轻的片段，全场竟是彻彻底底地鸦雀无声，这在我们这相当不容易了。觉得或许炫技不够，不够过瘾（我是不是太贪心了啊……） 接下来铜管五重奏，不甚满意。第2首匈牙利舞曲不知道是演奏的错音还是改编者的问题，总觉着有些别扭。 然后是双长笛演奏Mozart的一首编号K378作品。我没听过这曲子，不知道是原作还是改编曲。两位长笛演奏者一位来自中音，一位来自上音，演绎水准自不必说。两人配合非常默契，一个个音符极其温柔欢快地流淌出来，让我想起Mozart本人对于自己键盘演奏的一个比喻：“像油在流。”唯一的缺憾是区区两把长笛的声音对于这么大个音乐厅来说实在太单薄了，再加上这时音乐厅里也不很安静了，实在影响效果，但这也是没办法的事。 接下来就是个比较搞笑的曲目了。木管五重奏Mozart的土耳其进行曲——不过好像是爵士版的。不知道这个是谁改编的，但是实在是非常有意思，除了原曲主题的变形，还引入了不少新的材料，让本来就欢快的曲子变得更加生气盎然，甚至有些鬼打鬼闹。我几乎是咧嘴笑着听完整个曲子的，非常精彩。或许乐器音色不够明亮，几位音乐家也稍显拘谨，但是不管怎么说，演出结束时热烈的掌声说明了一切。 接下来三首曲子都是有钢琴参与的。但是很郁闷，钢琴好像没有上次杨东荫音乐会时的好，音色太薄，几个音更是明显发散、发飘。听说这个琴是前几天刚调过的，真不知道那个调琴的人是干什么吃的。这让上半场最后那首本应完美Mozart的钢琴三重奏有了些许缺憾。但是还是要承认责任完全不在三位演奏家，他们本身的表现是非常出彩的。小提琴的娇媚，钢琴的玲珑，大提琴的温柔，都让人印象深刻。 顺便提下那首长长的Liszt但丁幻想奏鸣曲，实在是让大家郁闷了……这个倒和钢琴家无关，只是似乎很多人对Liszt的大部分作品普遍没有好感…… 下半场全是交响音乐，乐团由老团员和部分新团员临时组成。相信每个听了下半场的人除了赞叹很难再做出什么别的评价了。真不敢相信这是一个普通高中校内规模音乐会能达到的水准。各个声部极其平衡和协调，总是惹乱子的铜管组表现也非常好。整体层次感相当好。弦乐音色则一如既往地无可挑剔，演奏《乡间骑士》的间奏曲时，弦乐音色美得几乎让我不由自主屏住了呼吸。演奏施特劳斯的三首波尔卡、老柴的一首圆舞曲以及比才《阿莱城姑娘》中的《法兰多》时也都足够热烈奔放，而在其中一些快速乐段中又能做到非常齐整，纹丝不乱；尤其是最后一首《法兰多》，直接把全场气氛带入顶峰。总之，下半场的交响音乐会真的让人击节赞叹。 这场音乐会应该是一中新年期间三场音乐会中水准最高的了，而令人无法相信，整场音乐会的排练仅仅用了5天！1月22号的音乐会时听人说一中乐团的水平近年下滑得厉害，我还有点不信，觉着对于一个中学的乐团来说那水平已经很不错了；但若能证实今天的水准相当于一中乐团的全盛时期，看来确实如此。 就先拉拉杂杂地写这么多。还是那句话：我说到底不过是个被名家唱片惯坏了耳朵的门外汉。如果有什么乱讲的地方，欢迎板砖伺候。 另附：哑熊拍的照片 Tags：一中, 音乐会 Related Posts 简记杨东荫音乐会 (9)]]></description>
			<content:encoded><![CDATA[<div><img class="aligncenter" title="http://gallery.tomtung.com/pictures/lzyz-new-years-concert-brochure-cover.jpg" src="http://gallery.tomtung.com/pictures/lzyz-new-years-concert-brochure-cover.jpg" alt="" width="307" height="433" /></div>
<div></div>
<p>首先我要对那些没有到场的同学表示惋惜：你们错过了一场异常精彩的（免费）音乐会！我也非常庆幸自己没有偷懒不去。</p>
<p>这次音乐会是为了庆祝一中乐队成立15周年特别举办的，还请到了很多早已毕业的老成员。其中不少现在仍然从事音乐专业，有好几个是中央音乐学院和上海音乐学院的，甚至还有几个国外的（比如莫斯科国立柴可夫斯基音乐学院的研究生什么的=。=），很好很强大……</p>
<p>开场是一首军乐的进行曲，乐队站好了下面还没完全安静，指挥就上来二话不说开始指挥。这个开场就很不同反响了，各个声部融合得很好，铜管也没有像以往很刺耳，整齐划一，颇为规整。</p>
<p>接着主持人上来宣布音乐会开始。</p>
<p>上半场基本上都是室内乐作品。开始就是Beethoven的第一弦乐四重奏首乐章。由于是早期作品，并没有什么特别博大精深的地方，在整体诠释方面挑不出什么大的纰漏。几处衔接不甚紧密。总体很好。</p>
<p>接下来是所谓打击乐铜鼓五重奏，不过只上来四个人=。=……对打击乐不甚了解，不敢乱讲。但是四位表演者（或者可以叫音乐家？）显然很好地吸引了全场的注意力，其中到最轻的片段，全场竟是彻彻底底地鸦雀无声，这在我们这相当不容易了。觉得或许炫技不够，不够过瘾（我是不是太贪心了啊……）</p>
<p>接下来铜管五重奏，不甚满意。第2首匈牙利舞曲不知道是演奏的错音还是改编者的问题，总觉着有些别扭。</p>
<p>然后是双长笛演奏Mozart的一首编号K378作品。我没听过这曲子，不知道是原作还是改编曲。两位长笛演奏者一位来自中音，一位来自上音，演绎水准自不必说。两人配合非常默契，一个个音符极其温柔欢快地流淌出来，让我想起Mozart本人对于自己键盘演奏的一个比喻：“像油在流。”唯一的缺憾是区区两把长笛的声音对于这么大个音乐厅来说实在太单薄了，再加上这时音乐厅里也不很安静了，实在影响效果，但这也是没办法的事。</p>
<p>接下来就是个比较搞笑的曲目了。木管五重奏Mozart的土耳其进行曲——不过好像是爵士版的。不知道这个是谁改编的，但是实在是非常有意思，除了原曲主题的变形，还引入了不少新的材料，让本来就欢快的曲子变得更加生气盎然，甚至有些鬼打鬼闹。我几乎是咧嘴笑着听完整个曲子的，非常精彩。或许乐器音色不够明亮，几位音乐家也稍显拘谨，但是不管怎么说，演出结束时热烈的掌声说明了一切。</p>
<p>接下来三首曲子都是有钢琴参与的。但是很郁闷，钢琴好像没有上次杨东荫音乐会时的好，音色太薄，几个音更是明显发散、发飘。听说这个琴是前几天刚调过的，真不知道那个调琴的人是干什么吃的。这让上半场最后那首本应完美Mozart的钢琴三重奏有了些许缺憾。但是还是要承认责任完全不在三位演奏家，他们本身的表现是非常出彩的。小提琴的娇媚，钢琴的玲珑，大提琴的温柔，都让人印象深刻。</p>
<p>顺便提下那首长长的Liszt但丁幻想奏鸣曲，实在是让大家郁闷了……这个倒和钢琴家无关，只是似乎很多人对Liszt的大部分作品普遍没有好感……</p>
<p>下半场全是交响音乐，乐团由老团员和部分新团员临时组成。相信每个听了下半场的人除了赞叹很难再做出什么别的评价了。真不敢相信这是一个普通高中校内规模音乐会能达到的水准。各个声部极其平衡和协调，总是惹乱子的铜管组表现也非常好。整体层次感相当好。弦乐音色则一如既往地无可挑剔，演奏《乡间骑士》的间奏曲时，弦乐音色美得几乎让我不由自主屏住了呼吸。演奏施特劳斯的三首波尔卡、老柴的一首圆舞曲以及比才《阿莱城姑娘》中的《法兰多》时也都足够热烈奔放，而在其中一些快速乐段中又能做到非常齐整，纹丝不乱；尤其是最后一首《法兰多》，直接把全场气氛带入顶峰。总之，下半场的交响音乐会真的让人击节赞叹。</p>
<p>这场音乐会应该是一中新年期间三场音乐会中水准最高的了，而令人无法相信，整场音乐会的排练仅仅用了5天！1月22号的音乐会时听人说一中乐团的水平近年下滑得厉害，我还有点不信，觉着对于一个中学的乐团来说那水平已经很不错了；但若能证实今天的水准相当于一中乐团的全盛时期，看来确实如此。</p>
<p>就先拉拉杂杂地写这么多。还是那句话：我说到底不过是个被名家唱片惯坏了耳朵的门外汉。如果有什么乱讲的地方，欢迎板砖伺候。</p>
<p>另附：<a href="http://blog.sina.com.cn/s/blog_4c396f4301008ahy.html" target="_blank">哑熊拍的照片</a></p>

	<br />Tags：<a href="http://blog.tomtung.com/tag/%e4%b8%80%e4%b8%ad/" title="一中" rel="tag">一中</a>, <a href="http://blog.tomtung.com/tag/%e9%9f%b3%e4%b9%90%e4%bc%9a/" title="音乐会" rel="tag">音乐会</a><br />

	<br /><h3>Related Posts</h3>
	<ul class="st-related-posts">
	<li><a href="http://blog.tomtung.com/2008/01/yangdongyin-concert/" title="简记杨东荫音乐会 (2008-01-27)">简记杨东荫音乐会</a> (9)</li>
</ul>

]]></content:encoded>
			<wfw:commentRss>http://blog.tomtung.com/2008/02/lzyz-new-years-concert/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>简记杨东荫音乐会</title>
		<link>http://blog.tomtung.com/2008/01/yangdongyin-concert/</link>
		<comments>http://blog.tomtung.com/2008/01/yangdongyin-concert/#comments</comments>
		<pubDate>Sat, 26 Jan 2008 17:44:10 +0000</pubDate>
		<dc:creator>逆铭</dc:creator>
				<category><![CDATA[Music maks me talk]]></category>
		<category><![CDATA[一中]]></category>
		<category><![CDATA[钢琴]]></category>
		<category><![CDATA[音乐会]]></category>

		<guid isPermaLink="false">http://blog.tomtung.com/2008/01/%e7%ae%80%e8%ae%b0%e6%9d%a8%e4%b8%9c%e8%8d%ab%e9%9f%b3%e4%b9%90%e4%bc%9a/</guid>
		<description><![CDATA[这个俩月耳福不浅啊我，除去元旦的维也纳新年音乐会，又听了三场现场的，包括之前一场市交响乐团的音乐会和兰州一中乐团的新春音乐会（当然都和维也纳的不是一个水准=.=），今天又是一场钢琴音乐会。这算是高二的杨东荫同学（当然我不认识了）去维也纳深造前的告别音乐会。 和其他一中自己的音乐会一样，这次也是想来就来不需要票的。本以为这样的音乐会不会有太多人来，就提前了20分钟到场，没想到仍然遭遇了没有位置只能站着的尴尬。音乐厅里挤满了刚上小学的琴童和他们的家长，吵哄哄的，让人比较郁闷……对此不多做评价了。 与以往不同，这次还专门发了节目单，可见组织方的重视程度。 翻开节目单看看曲目，吓了一跳： 肖邦的两首练习曲和一首叙事曲、贝多芬的悲怆、拉威尔的水之嬉戏以及李斯特的匈牙利狂想曲第6号。 这些都是音乐会熟曲，大家名演听多了评价起来难免苛刻。单凭曲目选择这一项，他就勇气可嘉。 开场是肖邦的第23首练习曲（作品25的第11首），即所谓“冬风练习曲”。开始四个小结的引子和后面爆发间的对比感觉不够强烈。演奏很好地凸现了此曲的斗争性格，总体来说相当不错。 接下来是肖邦第18首练习曲（作品25的第6首），就是那首据说是描述一个波兰人在雪橇铃声中被流放场景的曲子。那段三度华彩的“铃声”听说很难演奏，但是杨同学显然非常胜任。对于这样一首充满诗意的音乐会练习曲来说，不足之处或许还是对于起伏感的把握，但能现场听到这样的演奏我已经非常满足。 然后是肖邦的g小调第1叙事曲（作品23）。虽然这曲能弹下来已经非常不易，但我仍觉得杨同学的演绎不尽如人意。整体诠释仍然非常仓促，很多细节都只是一带而过，显得比较浮躁。没能把握住这一大型作品的情绪起伏和内在律动。出现数处错音。一些装饰音的演奏不够自然，影响了音乐的流畅程度。这些都不免让人有些失望。 中场休息前最后的曲目是贝多芬的悲怆。一个不到18岁的年轻人敢弹贝多芬，这本身就有些初生牛犊不怕虎的意味。首乐章速度偏快，可能比Schnabel的速度还快一点——当然，诠释深度不可相提并论了。事实上，演奏得甚至有些轻率，仅仅急急忙忙弹出了一个大概的轮廓。梅纽因在《人类的音乐》中写道：“贝多芬最具震撼力的特点便是他对沉默的运用。他音乐中的休止是宇宙中最意味深长的真空之一。”但杨同学似乎并没有给予这些充满张力的休止足够的关注，经常一句接着一句，有点上气不接下气。第二乐章的速度应该是andante，而事实上大多数钢琴家都无视可怜贝多芬的速度标记而改用接近adagio的速度演奏。杨同学的速度似乎更快，大概在adantino左右，有时快于肯普夫，这或许有待商榷。第二主题细节处理仍然不够细致。第三乐章的性格则少了点应有的优雅和清丽，毕竟贝多芬的这个乐章不同于劲乐团改编的V3。不管怎么说，这么年轻就把这样的曲目搬上舞台，是个大胆之举。以后多加琢磨，相信一定能做得很好。 中场休息后是拉威尔的水之嬉戏。这曲子我没有听过几个版本，不够熟悉，不敢妄加评论。但是就当时感受来说，此曲的演绎应该是相当出色的。钢琴灵动流畅，粒粒琴音晶莹剔透。对于法国式的精致应该说诠释的很充分了。 接着是杨同学的师姐孙尘心演奏拉赫的一首音画练习曲和李斯特的第12首匈牙利狂想曲。我得说，这两首曲子都弹得出人意料地精彩。张弛有度，收放自如，颇有大家风范。比起师弟，她的演奏更加成熟镇定。 曲目单上最后一首是杨同学弹李斯特的匈牙利狂想曲第6号。也许和曲目本身有关，这次并没有显得过分急躁。除了开始时一个明显错音外也没有什么大问题，总体来说还是很漂亮的。 接下来是加演曲目。先是杨同学演奏一首中国小品。然后杨同学的师姐来演奏了一首肖邦的练习曲，记得好像是作品10之5那首黑键。总体把握依旧出色，但是技巧上稍有些勉强。最后两人四手联弹一首中国小品和《不能说的秘密》中的四手联弹片段，都很不错。 以上便是音乐会的全部曲目。总体来说水准很高，闪光的片段俯拾即是。哑熊清风你俩没来真亏了…… 不过我说到底不过是个被名家唱片惯坏了耳朵的门外汉，这里妄加评述，贻笑大方。若有发现乱扯之处，欢迎在评论中点出。 希望这位一中的校友今后能成为一代钢琴巨匠，我一定去买他的唱片 Tags：一中, 钢琴, 音乐会 Related Posts 肖邦夜曲几个著名版本的风格 (4) 学琴一个月~ (16) Le Matin by Yann Tiersen (Yamaha DGX-620) (11) 简记一中2008新春音乐会(2月5日) (4) 拉威尔《为死去公主所作的孔雀舞》的三个版本 (4)]]></description>
			<content:encoded><![CDATA[<div>这个俩月耳福不浅啊我，除去元旦的维也纳新年音乐会，又听了三场现场的，包括之前一场市交响乐团的音乐会和兰州一中乐团的新春音乐会（当然都和维也纳的不是一个水准=.=），今天又是一场钢琴音乐会。这算是高二的<span style="font-family: 宋体;">杨东荫同学（当然我不认识了）去维也纳深造前的告别音乐会。</span></div>
<div></div>
<div>和其他一中自己的音乐会一样，这次也是想来就来不需要票的。本以为这样的音乐会不会有太多人来，就提前了20分钟到场，没想到仍然遭遇了没有位置只能站着的尴尬。音乐厅里挤满了刚上小学的琴童和他们的家长，吵哄哄的，让人比较郁闷……对此不多做评价了。</div>
<div></div>
<div>与以往不同，这次还专门发了节目单，可见组织方的重视程度。</div>
<div></div>
<p><img class="alignnone" title="http://gallery.tomtung.com/pictures/yangdongyin-concert-brochure-cover.jpg" src="http://gallery.tomtung.com/pictures/yangdongyin-concert-brochure-cover.jpg" alt="" width="332" height="448" /></p>
<div></div>
<div>翻开节目单看看曲目，吓了一跳：</div>
<div></div>
<div>肖邦的两首练习曲和一首叙事曲、贝多芬的悲怆、拉威尔的水之嬉戏以及李斯特的匈牙利狂想曲第6号。</div>
<div></div>
<div>这些都是音乐会熟曲，大家名演听多了评价起来难免苛刻。单凭曲目选择这一项，他就勇气可嘉。</div>
<div></div>
<div>开场是肖邦的第23首练习曲（作品25的第11首），即所谓“冬风练习曲”。开始四个小结的引子和后面爆发间的对比感觉不够强烈。演奏很好地凸现了此曲的斗争性格，总体来说相当不错。</div>
<div></div>
<div>接下来是肖邦第18首练习曲（作品25的第6首），就是那首据说是描述一个波兰人在雪橇铃声中被流放场景的曲子。那段三度华彩的“铃声”听说很难演奏，但是杨同学显然非常胜任。对于这样一首充满诗意的音乐会练习曲来说，不足之处或许还是对于起伏感的把握，但能现场听到这样的演奏我已经非常满足。</div>
<div></div>
<div>然后是肖邦的g小调第1叙事曲（作品23）。虽然这曲能弹下来已经非常不易，但我仍觉得杨同学的演绎不尽如人意。整体诠释仍然非常仓促，很多细节都只是一带而过，显得比较浮躁。没能把握住这一大型作品的情绪起伏和内在律动。出现数处错音。一些装饰音的演奏不够自然，影响了音乐的流畅程度。这些都不免让人有些失望。</div>
<div></div>
<div>中场休息前最后的曲目是贝多芬的悲怆。一个不到18岁的年轻人敢弹贝多芬，这本身就有些初生牛犊不怕虎的意味。首乐章速度偏快，可能比<span style="font-family: 宋体;">Schnabel的速度还快一点——当然，诠释深度不可相提并论了。事实上，演奏得甚至有些轻率，仅仅急急忙忙弹出了一个大概的轮廓。梅纽因在《人类的音乐》中写道：“贝多芬最具震撼力的特点便是他对沉默的运用。他音乐中的休止是宇宙中最意味深长的真空之一。”但杨同学似乎并没有给予这些充满张力的休止足够的关注，经常一句接着一句，有点上气不接下气。第二乐章的速度应该是andante，而事实上大多数钢琴家都无视可怜贝多芬的速度标记而改用接近adagio的速度演奏。杨同学的速度似乎更快，大概在adantino左右，有时快于肯普夫，这或许有待商榷。第二主题细节处理仍然不够细致。第三乐章的性格则少了点应有的优雅和清丽，毕竟贝多芬的这个乐章不同于劲乐团改编的V3。不管怎么说，这么年轻就把这样的曲目搬上舞台，是个大胆之举。以后多加琢磨，相信一定能做得很好。</span></div>
<div></div>
<div>中场休息后是拉威尔的水之嬉戏。这曲子我没有听过几个版本，不够熟悉，不敢妄加评论。但是就当时感受来说，此曲的演绎应该是相当出色的。钢琴灵动流畅，粒粒琴音晶莹剔透。对于法国式的精致应该说诠释的很充分了。</div>
<div></div>
<div>接着是杨同学的师姐孙尘心演奏拉赫的一首音画练习曲和李斯特的第12首匈牙利狂想曲。我得说，这两首曲子都弹得出人意料地精彩。张弛有度，收放自如，颇有大家风范。比起师弟，她的演奏更加成熟镇定。</div>
<div></div>
<div>曲目单上最后一首是杨同学弹李斯特的匈牙利狂想曲第6号。也许和曲目本身有关，这次并没有显得过分急躁。除了开始时一个明显错音外也没有什么大问题，总体来说还是很漂亮的。</div>
<div></div>
<div>接下来是加演曲目。先是杨同学演奏一首中国小品。然后杨同学的师姐来演奏了一首肖邦的练习曲，记得好像是作品10之5那首黑键。总体把握依旧出色，但是技巧上稍有些勉强。最后两人四手联弹一首中国小品和《不能说的秘密》中的四手联弹片段，都很不错。</div>
<div></div>
<div>以上便是音乐会的全部曲目。总体来说水准很高，闪光的片段俯拾即是。哑熊清风你俩没来真亏了……</div>
<div></div>
<div>不过我说到底不过是个被名家唱片惯坏了耳朵的门外汉，这里妄加评述，贻笑大方。若有发现乱扯之处，欢迎在评论中点出。</div>
<div></div>
<div>希望这位一中的校友今后能成为一代钢琴巨匠，我一定去买他的唱片<img src="http://blogimg.sinajs.cn/images/control/face/002.gif" alt="" /></div>

	<br />Tags：<a href="http://blog.tomtung.com/tag/%e4%b8%80%e4%b8%ad/" title="一中" rel="tag">一中</a>, <a href="http://blog.tomtung.com/tag/%e9%92%a2%e7%90%b4/" title="钢琴" rel="tag">钢琴</a>, <a href="http://blog.tomtung.com/tag/%e9%9f%b3%e4%b9%90%e4%bc%9a/" title="音乐会" rel="tag">音乐会</a><br />

	<br /><h3>Related Posts</h3>
	<ul class="st-related-posts">
	<li><a href="http://blog.tomtung.com/2007/01/interpretations-of-chopin-nocturnes/" title="肖邦夜曲几个著名版本的风格 (2007-01-06)">肖邦夜曲几个著名版本的风格</a> (4)</li>
	<li><a href="http://blog.tomtung.com/2008/06/first-month-learn-piano/" title="学琴一个月~ (2008-06-30)">学琴一个月~</a> (16)</li>
	<li><a href="http://blog.tomtung.com/2009/09/le-matin/" title="Le Matin by Yann Tiersen (Yamaha DGX-620) (2009-09-08)">Le Matin by Yann Tiersen (Yamaha DGX-620)</a> (11)</li>
	<li><a href="http://blog.tomtung.com/2008/02/lzyz-new-years-concert/" title="简记一中2008新春音乐会(2月5日) (2008-02-06)">简记一中2008新春音乐会(2月5日)</a> (4)</li>
	<li><a href="http://blog.tomtung.com/2008/07/ravel-pavane-pour-une-infante-defunte-3-interpretations/" title="拉威尔《为死去公主所作的孔雀舞》的三个版本 (2008-07-26)">拉威尔《为死去公主所作的孔雀舞》的三个版本</a> (4)</li>
</ul>

]]></content:encoded>
			<wfw:commentRss>http://blog.tomtung.com/2008/01/yangdongyin-concert/feed/</wfw:commentRss>
		<slash:comments>9</slash:comments>
		</item>
		<item>
		<title>推荐个“破游戏”</title>
		<link>http://blog.tomtung.com/2008/01/po-game/</link>
		<comments>http://blog.tomtung.com/2008/01/po-game/#comments</comments>
		<pubDate>Wed, 16 Jan 2008 17:59:54 +0000</pubDate>
		<dc:creator>逆铭</dc:creator>
				<category><![CDATA[杂的扯]]></category>
		<category><![CDATA[flash]]></category>
		<category><![CDATA[游戏]]></category>

		<guid isPermaLink="false">http://blog.tomtung.com/2008/01/%e6%8e%a8%e8%8d%90%e4%b8%aa%e2%80%9c%e7%a0%b4%e6%b8%b8%e6%88%8f%e2%80%9d/</guid>
		<description><![CDATA[无聊一下，推荐个小游戏~ 这绝对是个非常有个性的游戏，看起来甚至有些简陋，但是可玩性非常强。操纵一个小方块在信手涂抹的简单粗线条中跳来跳去的创意，加上作者相当丰富的幽默感，都使得整个游戏充满乐趣。有的地方需要动动脑筋（如果你没有强大的技术的话），有的地方则无耻地要求你死个一两次才知道怎么过（我是指生日那个地方=.=）……总之可圈可点之处多多，强烈推荐~ [这里]提供一个下载地址。若失效请google或baidu。 再帖个自己乱搞的通关视频，仅供实在过不去者参考。如果能自己处理还是自己折腾吧，这才是乐趣所在。 其中注明“超难”的地方实在不知道怎么老老实实地过，只好滑头一下了。 好吧……这段是给“有心人”看的。Game Over以后，右键单击弹出菜单，选择播放即进入修改模式。gold表示按“↓”就会飞的黄金比利，continue表示接关。但是和任何游戏一样，修改会让游戏无聊许多。 下面帖个诡异图：我偶然跳出了那个封闭的迷宫……你也可以试试~~ Tags：flash, 游戏 Related Posts 强物: 随音乐翻动的莫扎特安魂曲手稿(Flash) (3)]]></description>
			<content:encoded><![CDATA[<p>无聊一下，推荐个小游戏~</p>
<p><img class="aligncenter" title="http://gallery.tomtung.com/pictures/po-game.jpg" src="http://gallery.tomtung.com/pictures/po-game.jpg" alt="" width="398" height="409" /></p>
<p>这绝对是个非常有个性的游戏，看起来甚至有些简陋，但是可玩性非常强。操纵一个小方块在信手涂抹的简单粗线条中跳来跳去的创意，加上作者相当丰富的幽默感，都使得整个游戏充满乐趣。有的地方需要动动脑筋（如果你没有强大的技术的话），有的地方则无耻地要求你死个一两次才知道怎么过（我是指生日那个地方=.=）……总之可圈可点之处多多，强烈推荐~</p>
<p>[<a href="http://gallery.tomtung.com/po-game.swf">这里</a>]提供一个下载地址。若失效请google或baidu。</p>
<p>再帖个自己乱搞的通关视频，<strong>仅供实在过不去者参考</strong>。如果能自己处理还是自己折腾吧，这才是乐趣所在。</p>
<p><object id="articlevblog" classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" width="460" height="460" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0"><param name="name" value="articlevblog" /><param name="flashvars" value="url=http://you.video.sina.com.cn/b/vblog_player.swf?vid=10630059&amp;uid=1245986775&amp;isnew=1" /><param name="src" value="http://you.video.sina.com.cn/b/vblog_player.swf?vid=10630059&amp;uid=1245986775&amp;isnew=1" /><param name="allowfullscreen" value="true" /><param name="quality" value="high" /><embed id="articlevblog" type="application/x-shockwave-flash" width="460" height="460" src="http://you.video.sina.com.cn/b/vblog_player.swf?vid=10630059&amp;uid=1245986775&amp;isnew=1" quality="high" allowfullscreen="true" flashvars="url=http://you.video.sina.com.cn/b/vblog_player.swf?vid=10630059&amp;uid=1245986775&amp;isnew=1" name="articlevblog"></embed></object></p>
<p>其中注明“超难”的地方实在不知道怎么老老实实地过，只好滑头一下了。</p>
<p><span style="font-size: 10px; color: #ffffff;">好吧……这段是给“有心人”看的。Game Over以后，右键单击弹出菜单，选择播放即进入修改模式。gold表示按“↓”就会飞的黄金比利，continue表示接关。但是和任何游戏一样，修改会让游戏无聊许多。</span></p>
<p>下面帖个诡异图：我偶然跳出了那个封闭的迷宫……你也可以试试~~</p>
<p><img class="alignnone" title="http://gallery.tomtung.com/pictures/po-game-bug.jpg" src="http://gallery.tomtung.com/pictures/po-game-bug.jpg" alt="" width="408" height="447" /></p>

	<br />Tags：<a href="http://blog.tomtung.com/tag/flash/" title="flash" rel="tag">flash</a>, <a href="http://blog.tomtung.com/tag/%e6%b8%b8%e6%88%8f/" title="游戏" rel="tag">游戏</a><br />

	<br /><h3>Related Posts</h3>
	<ul class="st-related-posts">
	<li><a href="http://blog.tomtung.com/2008/06/mozart-requiem-manuscript-flash/" title="强物: 随音乐翻动的莫扎特安魂曲手稿(Flash) (2008-06-01)">强物: 随音乐翻动的莫扎特安魂曲手稿(Flash)</a> (3)</li>
</ul>

]]></content:encoded>
			<wfw:commentRss>http://blog.tomtung.com/2008/01/po-game/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>年末扯扯</title>
		<link>http://blog.tomtung.com/2007/12/at-the-end-of-the-year/</link>
		<comments>http://blog.tomtung.com/2007/12/at-the-end-of-the-year/#comments</comments>
		<pubDate>Mon, 31 Dec 2007 13:00:23 +0000</pubDate>
		<dc:creator>逆铭</dc:creator>
				<category><![CDATA[生活在此处]]></category>
		<category><![CDATA[保送]]></category>

		<guid isPermaLink="false">http://blog.tomtung.com/2007/12/%e5%b9%b4%e6%9c%ab%e6%89%af%e6%89%af/</guid>
		<description><![CDATA[再过几个小时，2007年就game over啦~恩恩……这其实对社会是很有意义的一件大事啊。这新年的钟声一敲，最后一批八零后就算成年了，从此八零后就是社会上的主流力量之一了，那些个说八零后这八零后那的人就都可以歇着去啦~~~~ 好了扯完了……说说自己这点破事吧。 报了8所大学，发现还嫌少（汗……）。nku没出结果。zju和nju初审没过。前者我知道很难，没想到nju也会这么夸张。hust、buaa、tju（指同济而非天津）三个学校则很无良地把考试放在了一天，我还没想好该去考哪：buaaCS专业不错，但学校大家都说又狂又不厚道，报的人也多；hust今年好像OIer报的人很多，而且武汉那地方我实在不喜欢；tju录取比例我按去年录取人数和今年初审通过人数算了下，竟然是4:1，CS专业一般，不过tju的地理优势实在是很明显。唉，艰难选择ing……ustc的初审虽然过了，但人家想要的人基本上一轮面试都要完了，没剩下什么名额，而且光看考试时间也知道这个会很棘手：数学3个小时，英语物理各2.5小时。所以ustc不敢抱什么希望。现在看来whu还是最厚道的学校了，要130人，初审就过130人……但是万一有点什么闪失呢？真后悔没报nuaa、xmu这类可能免试的学校保底……在这个1=满地走的时代，谁说保送路好走我抽他…… 最近复习也很没有状态，和NOI前很像，坐在那很容易就荒废掉一天。唉，这样下去要是whu都不要我怎么办…… blog会很长一段时间不更新了，因为很快我就要去“旅游”了……这期间我的饭否应该还会通过手机短信更新的。 blog的头图和背景都换了下（firefox好像看不到效果），仅仅是希望有一点变化。blog的名字想改，但是还没想好，就先放着了。 复习去，大家新年快乐…… Turing保佑OIer…… Tags：保送 Related Posts 终于有NOIP1=了 (9) 保送的最终结果 (20)]]></description>
			<content:encoded><![CDATA[<p>再过几个小时，2007年就game over啦~恩恩……这其实对社会是很有意义的一件大事啊。这新年的钟声一敲，最后一批八零后就算成年了，从此八零后就是社会上的主流力量之一了，那些个说八零后这八零后那的人就都可以歇着去啦~~~~</p>
<p>好了扯完了……说说自己这点破事吧。</p>
<p>报了8所大学，发现还嫌少（汗……）。nku没出结果。zju和nju初审没过。前者我知道很难，没想到nju也会这么夸张。hust、<a href="http://blog.tomtung.com/tag/buaa/" class="st_tag internal_tag" rel="tag" title="Posts tagged with buaa">buaa</a>、tju（指同济而非天津）三个学校则很无良地把考试放在了一天，我还没想好该去考哪：buaaCS专业不错，但学校大家都说又狂又不厚道，报的人也多；hust今年好像OIer报的人很多，而且武汉那地方我实在不喜欢；tju录取比例我按去年录取人数和今年初审通过人数算了下，竟然是4:1，CS专业一般，不过tju的地理优势实在是很明显。唉，艰难选择ing……ustc的初审虽然过了，但人家想要的人基本上一轮面试都要完了，没剩下什么名额，而且光看考试时间也知道这个会很棘手：数学3个小时，英语物理各2.5小时。所以ustc不敢抱什么希望。现在看来whu还是最厚道的学校了，要130人，初审就过130人……但是万一有点什么闪失呢？真后悔没报nuaa、xmu这类可能免试的学校保底……在这个1=满地走的时代，谁说保送路好走我抽他……</p>
<p>最近复习也很没有状态，和NOI前很像，坐在那很容易就荒废掉一天。唉，这样下去要是whu都不要我怎么办……</p>
<p>blog会很长一段时间不更新了，因为很快我就要去“旅游”了……这期间我的<a href="http://fanfou.com/%C3%84%C3%A6%C3%83%C3%BA" target="_blank">饭否</a>应该还会通过手机短信更新的。</p>
<p>blog的头图和背景都换了下（firefox好像看不到效果），仅仅是希望有一点变化。blog的名字想改，但是还没想好，就先放着了。</p>
<p>复习去，大家新年快乐……</p>
<p>Turing保佑OIer……</p>

	<br />Tags：<a href="http://blog.tomtung.com/tag/%e4%bf%9d%e9%80%81/" title="保送" rel="tag">保送</a><br />

	<br /><h3>Related Posts</h3>
	<ul class="st-related-posts">
	<li><a href="http://blog.tomtung.com/2007/11/got-noip-1st-prize-finally/" title="终于有NOIP1=了 (2007-11-17)">终于有NOIP1=了</a> (9)</li>
	<li><a href="http://blog.tomtung.com/2008/07/letter-of-admission-from-buaa/" title="保送的最终结果 (2008-07-11)">保送的最终结果</a> (20)</li>
</ul>

]]></content:encoded>
			<wfw:commentRss>http://blog.tomtung.com/2007/12/at-the-end-of-the-year/feed/</wfw:commentRss>
		<slash:comments>8</slash:comments>
		</item>
		<item>
		<title>OI最后的谢幕·18岁新的开始</title>
		<link>http://blog.tomtung.com/2007/11/oi-curtain-call/</link>
		<comments>http://blog.tomtung.com/2007/11/oi-curtain-call/#comments</comments>
		<pubDate>Thu, 22 Nov 2007 14:01:46 +0000</pubDate>
		<dc:creator>逆铭</dc:creator>
				<category><![CDATA[OI那一年]]></category>
		<category><![CDATA[noi]]></category>
		<category><![CDATA[noip]]></category>

		<guid isPermaLink="false">http://blog.tomtung.com/2007/11/oi%e6%9c%80%e5%90%8e%e7%9a%84%e8%b0%a2%e5%b9%95%c2%b718%e5%b2%81%e6%96%b0%e7%9a%84%e5%bc%80%e5%a7%8b/</guid>
		<description><![CDATA[这一站是终点，还是另一个起点？ ——几米《地下铁》 NOIP结束的那天一回到家，我就先把QQ上“巨菜逆铭”的头像和“我巨菜”的个人说明去掉，然后把blog里“OI之路”的文章分类改成了“OI往事”。是啊，退役了，不再是一个OIer了，无论是菜是牛都已成往事。这个谢幕也许并不完美，但是我无愧于心。 从去年NOIP06前夕到现在，一年多一点，就是我全部的OI之旅了。虽然非常羡慕那些强省的OIer可以很早就了解到OI之美，然而从NOIP06启航，到在WC里瞻仰群牛大开眼界，然后在省选时置于死地后又峰回路转，接着是NOI由于水平不足加之准备策略失误导致的惨败，最后是NOIP07并不完美的结局，我经历了一个OI巨菜所能期望经历的一切。有过泪水，有过欢笑，有过初涉OI时的无知无畏，也有过面对大牛时的相形见绌。这短暂却充实的一年因为经历丰富而显得格外漫长，而曾经的那一幕幕却仍如在昨日。我甚至还清楚地记得今年过年那天，我一个人呆在房子里，不顾隔壁的喧嚣，计算USACO里那道The Clocks的搜索树节点个数。那时候还是我刚刚入门、OI热情最高涨的时候啊，每次深夜关掉电脑从思考中回过神来都恍若隔世。 的确，每个OIer对于自己的OI之路都会有很深刻的记忆。我会一直记得USACO那些诡异的奶牛们和“Your Program Works The First Time”时的惊喜，记得Vijos刷出五六页Waiting时的万分焦急，记得20分钟啪啪啪拍出一套完整SBT后小小的得意，记得几个小时都过不了一道搜索时的郁闷，记得深夜里面对显示器又涩又痒的眼睛，记得大赛之前自己砰砰乱跳的心。短短一年的OI之路，曾经阳光明媚，也曾经曲折泥泞，不管怎么说，我跌跌撞撞地一直走了下来，我不曾后悔。 OI在每个OIer心中都已不仅仅是一项学科竞赛。即使不像Ghost说的达到“信仰”的高度，也是一种信念、一种精神。还有哪科竞赛会使我们收获全国范围内的真挚友谊？还有哪科竞赛会让我们在大年三十仍在群里一边开玩笑一边讨论算法？还有哪科竞赛会让我们在网上自发组织这么多自己出题（M67牛说这些题比NOIP07题的水平高多了）的模拟赛，甚至用举办模拟赛的方法庆祝七夕、庆祝光棍节、过生日甚至见证爱情？OIer是所有搞竞赛的学生中最另类的一些，OI也是唯一与高考科目无关的竞赛。我们因此也面对了更多的困难，经受着更大的考验，然而OI承载着OIer们的梦想，OIer们也为此付出了太多太多。 我曾经很多次感叹，我学到的越多就越清楚地意识到自己的无知。这确实是实话。OI和演讲比赛不同，我不需要刻意掩藏自己的胆怯，强做出一副自信满满、天不怕地不怕的样子。看到很多初中的小朋友就比自己强出很多，很羡慕他们的环境，而那种挫败感也是很难避免的。况且每天上网和那些不把北大清华当回事的大牛们待在一起，不生出些自卑情绪都难。但和他们在一起我也学会了很多东西，自己水平也有不少长进，生活也充实不少。我想起前一段时间自己在Vijos的签名：“我是巨菜，但我在尽我所能快速成长。”这话看着真提气。 每个OIer无论是牛是菜，在成长过程中都会得到很多无私的帮助，因而在退役的时候也会有一大堆要感谢的人。下面我也要列出一个名单，向帮助过我的人表达我的谢意。谢谢你们，如果没有你们，也许我根本不会走完这条并没有多长的OI之路。 首先要感谢我师傅大漠。师傅在OI方面也许没有我后来遇到的很多冲金夺银的大牛那么牛，但是在我OI之路开始于NOIP06迷茫无助之时，是师傅给我提供了最真诚热情的帮助，教给了我很多东西。正所谓 “师傅领进门”，对此我至今仍心存感激。 然后不能不提的就是我们甘肃大水牛Ghost~~他几乎是对我乃至这两届很多GSOIer的OI生涯影响最大的人了。无论是OI还是数学还是保送问题，我都缠着问他，还有很多重要的决定，都曾向他征求意见。Ghost人非常好，非常乐意帮助我们这些菜，也算是少数几个我不叫“大牛”的大牛了，即使叫也要叫“大水牛”-_-&#124;&#124;&#124;……很难想象一个其实有些不善言谈的人在OI方面能这么牛，而且在QQ上能如此口若悬河，尽妖孽之所极……GSOIer的诡异外号几乎都是他起的，还有“21727”、“interrosting”等等笑料。。。能通过OI认识这个鬼牛，也真是一大幸事~ 很幸运遇到了我们的信息老师老赵，别的学校的OIer都很羡慕啊。咱老赵认真负责，每次比赛前都能收到她的短信或者Email，叮嘱种种细节，甚至包括吃巧克力后什么时候会有比较好的状态什么的，对我们的各种事情也都会很操心。为此清风都说后悔没来咱一中。 还有Ivan，也许真是有缘吧，WC回来以后莫名其妙地主动加了我=.=，然后才知道去fzyz的时候我们就坐的一辆面包车。Ivan是个非常有才华的OIer&#38;MOer，也算是一个我不叫“大牛”的大牛吧。然而也总是不自信，非但从来不B4我这个巨菜，还真诚得让我有些受宠若惊……Ivan差不多是惟一一个说我很“cool” 的人（大汗-_-!），并且还感慨“真奇怪你怎么会没有GF” （瀑布汗-_-&#124;&#124;&#124;），于是我就说啊，Ivan，如果你是个PLMM就好了……总是会在我最迷茫的时候鼓励我，然后发一堆PLMM的PP过来（再瀑布汗-_-&#124;&#124;&#124;）。Ivan，就像你说的，也许我们不能做一辈子OIer，但我们能做一辈子朋友^_^ 哑熊、DFDNN、清风、Anti、BT、亚圣、Marchine，喊出这些名字感觉真亲切。战友也好，对手也罢，说到底我们都是GSOIer，都是非常非常好的朋友。真的很高兴能认识你们，能和你们一起努力。希望和我一样高三的OIer们都能保送到好大学去（Marchine大牛ms是要降50分去清华的）。至于高二的诸位，明年NOI就看你们的了。 感谢zmcplmmdn（=。=），一个未曾谋面的OIer，在每次比赛前都会bless我。NOI挂掉后也曾发来一条很长的信息鼓励我（这条信息我现在还存着呢），真的很感动。希望能在明年NOI的获奖名单上看到你，好好加油。 感谢DD牛和Matrix67牛，你们的教程让我受益匪浅。 感谢每个办模拟赛的大牛，通过这些模拟赛，我得以及时修正NOI时错误的答题策略，没有在NOIP时再次挂掉。 感谢身边所有的朋友。我没有像当年Ghost那样不被理解，甚至被B4；相反，你们给我的更多是鼓励和支持。等大学有着落了请你们早餐哈~ 至于那些曾在这一路上误导我甚至给我设障的人，我已经不记得你们了，也不想再提起你们，就这样。 虽然现在仍存有因我用longlong而被卡在全国线下的危险，但比结果更重要的是这一年我所经历的一切。这一年我失去了很多，也放弃了很多，但却在拼搏的汗水中成长，在失落的泪水中成熟，换来的是一个至少对自己来说不平凡的17岁。这一切，便是我给自己最好的成年礼物。今后我是否会成为一个ACMer？我不知道自己是否还有这样的勇气和实力，但我会一直努力。在OI并不完美的谢幕后，我迎来的是18岁全新的征程。 一直很遗憾OIer们没有一首自己的歌可以抒怀（《隐形的BUG》《爱在编译前》这些改编的搞笑之作应该不算）。在NOI07闭幕会上听到最后一首《拥抱明天》才发现OI精神于奥林匹克精神是何其相似：参与、坚持与友谊。而NOIP07前一天我在毫无准备的情况下听到这首歌时，一时间百感交集，竟禁不住泪水夺眶而出。本文不妨用这首歌的歌词做结吧： 让我们的心相连 把我们的爱奉献 在飒爽英姿赛场上 相逢一笑到永远 让我们的心相连 把我们的爱奉献 在奥林匹克旗帜下 拥抱明天 ﻿ Tags：noi, noip Related Posts 请假未遂 (3) 明天我高三（Ubuntu寄来了） (7) NOI来了 该出发了 (7) 扰动 (7) 做完了USACO第二章，但心里并不轻松 (6)]]></description>
			<content:encoded><![CDATA[<p style="text-align: right;">这一站是终点，还是另一个起点？<br />
——几米《地下铁》</p>
<p>NOIP结束的那天一回到家，我就先把QQ上“巨菜逆铭”的头像和“我巨菜”的个人说明去掉，然后把blog里“OI之路”的文章分类改成了“OI往事”。是啊，退役了，不再是一个OIer了，无论是菜是牛都已成往事。这个谢幕也许并不完美，但是我无愧于心。</p>
<p>从去年NOIP06前夕到现在，一年多一点，就是我全部的OI之旅了。虽然非常羡慕那些强省的OIer可以很早就了解到OI之美，然而从NOIP06启航，到在WC里瞻仰群牛大开眼界，然后在省选时置于死地后又峰回路转，接着是NOI由于水平不足加之准备策略失误导致的惨败，最后是NOIP07并不完美的结局，我经历了一个OI巨菜所能期望经历的一切。有过泪水，有过欢笑，有过初涉OI时的无知无畏，也有过面对大牛时的相形见绌。这短暂却充实的一年因为经历丰富而显得格外漫长，而曾经的那一幕幕却仍如在昨日。我甚至还清楚地记得今年过年那天，我一个人呆在房子里，不顾隔壁的喧嚣，计算USACO里那道The Clocks的搜索树节点个数。那时候还是我刚刚入门、OI热情最高涨的时候啊，每次深夜关掉电脑从思考中回过神来都恍若隔世。</p>
<p>的确，每个OIer对于自己的OI之路都会有很深刻的记忆。我会一直记得USACO那些诡异的奶牛们和“Your Program Works The First Time”时的惊喜，记得Vijos刷出五六页Waiting时的万分焦急，记得20分钟啪啪啪拍出一套完整SBT后小小的得意，记得几个小时都过不了一道搜索时的郁闷，记得深夜里面对显示器又涩又痒的眼睛，记得大赛之前自己砰砰乱跳的心。短短一年的OI之路，曾经阳光明媚，也曾经曲折泥泞，不管怎么说，我跌跌撞撞地一直走了下来，我不曾后悔。</p>
<p>OI在每个OIer心中都已不仅仅是一项学科竞赛。即使不像Ghost说的达到“信仰”的高度，也是一种信念、一种精神。还有哪科竞赛会使我们收获全国范围内的真挚友谊？还有哪科竞赛会让我们在大年三十仍在群里一边开玩笑一边讨论算法？还有哪科竞赛会让我们在网上自发组织这么多自己出题（M67牛说这些题比NOIP07题的水平高多了）的模拟赛，甚至用举办模拟赛的方法庆祝七夕、庆祝光棍节、过生日甚至见证爱情？OIer是所有搞竞赛的学生中最另类的一些，OI也是唯一与高考科目无关的竞赛。我们因此也面对了更多的困难，经受着更大的考验，然而OI承载着OIer们的梦想，OIer们也为此付出了太多太多。</p>
<p>我曾经很多次感叹，我学到的越多就越清楚地意识到自己的无知。这确实是实话。OI和演讲比赛不同，我不需要刻意掩藏自己的胆怯，强做出一副自信满满、天不怕地不怕的样子。看到很多初中的小朋友就比自己强出很多，很羡慕他们的环境，而那种挫败感也是很难避免的。况且每天上网和那些不把北大清华当回事的大牛们待在一起，不生出些自卑情绪都难。但和他们在一起我也学会了很多东西，自己水平也有不少长进，生活也充实不少。我想起前一段时间自己在Vijos的签名：“我是巨菜，但我在尽我所能快速成长。”这话看着真提气。</p>
<div class="wp-caption aligncenter" style="width: 529px"><img title="那些读不完的OI书" src="http://gallery.tomtung.com/pictures/oi-books.jpg" alt="那些读不完的OI书" width="519" height="480" /><p class="wp-caption-text">那些读不完的OI书</p></div>
<p>每个OIer无论是牛是菜，在成长过程中都会得到很多无私的帮助，因而在退役的时候也会有一大堆要感谢的人。下面我也要列出一个名单，向帮助过我的人表达我的谢意。谢谢你们，如果没有你们，也许我根本不会走完这条并没有多长的OI之路。</p>
<p>首先要感谢我师傅大漠。师傅在OI方面也许没有我后来遇到的很多冲金夺银的大牛那么牛，但是在我OI之路开始于NOIP06迷茫无助之时，是师傅给我提供了最真诚热情的帮助，教给了我很多东西。正所谓 “师傅领进门”，对此我至今仍心存感激。</p>
<p>然后不能不提的就是我们甘肃大水牛Ghost~~他几乎是对我乃至这两届很多GSOIer的OI生涯影响最大的人了。无论是OI还是数学还是保送问题，我都缠着问他，还有很多重要的决定，都曾向他征求意见。Ghost人非常好，非常乐意帮助我们这些菜，也算是少数几个我不叫“大牛”的大牛了，即使叫也要叫“大水牛”-_-|||……很难想象一个其实有些不善言谈的人在OI方面能这么牛，而且在QQ上能如此口若悬河，尽妖孽之所极……GSOIer的诡异外号几乎都是他起的，还有“21727”、“interrosting”等等笑料。。。能通过OI认识这个鬼牛，也真是一大幸事~</p>
<p>很幸运遇到了我们的信息老师老赵，别的学校的OIer都很羡慕啊。咱老赵认真负责，每次比赛前都能收到她的短信或者Email，叮嘱种种细节，甚至包括吃巧克力后什么时候会有比较好的状态什么的，对我们的各种事情也都会很操心。为此清风都说后悔没来咱一中。</p>
<p>还有Ivan，也许真是有缘吧，WC回来以后莫名其妙地主动加了我=.=，然后才知道去fzyz的时候我们就坐的一辆面包车。Ivan是个非常有才华的OIer&amp;MOer，也算是一个我不叫“大牛”的大牛吧。然而也总是不自信，非但从来不B4我这个巨菜，还真诚得让我有些受宠若惊……Ivan差不多是惟一一个说我很“cool” 的人（大汗-_-!），并且还感慨“真奇怪你怎么会没有GF” （瀑布汗-_-|||），于是我就说啊，Ivan，如果你是个PLMM就好了……总是会在我最迷茫的时候鼓励我，然后发一堆PLMM的PP过来（再瀑布汗-_-|||）。Ivan，就像你说的，也许我们不能做一辈子OIer，但我们能做一辈子朋友^_^</p>
<p>哑熊、DFDNN、清风、Anti、BT、亚圣、Marchine，喊出这些名字感觉真亲切。战友也好，对手也罢，说到底我们都是GSOIer，都是非常非常好的朋友。真的很高兴能认识你们，能和你们一起努力。希望和我一样高三的OIer们都能保送到好大学去（Marchine大牛ms是要降50分去清华的）。至于高二的诸位，明年NOI就看你们的了。</p>
<p>感谢zmcplmmdn（=。=），一个未曾谋面的OIer，在每次比赛前都会bless我。NOI挂掉后也曾发来一条很长的信息鼓励我（这条信息我现在还存着呢），真的很感动。希望能在明年NOI的获奖名单上看到你，好好加油。</p>
<p>感谢DD牛和Matrix67牛，你们的教程让我受益匪浅。</p>
<p>感谢每个办模拟赛的大牛，通过这些模拟赛，我得以及时修正NOI时错误的答题策略，没有在NOIP时再次挂掉。</p>
<p>感谢身边所有的朋友。我没有像当年Ghost那样不被理解，甚至被B4；相反，你们给我的更多是鼓励和支持。等大学有着落了请你们早餐哈~<br />
至于那些曾在这一路上误导我甚至给我设障的人，我已经不记得你们了，也不想再提起你们，就这样。<br />
虽然现在仍存有因我用longlong而被卡在全国线下的危险，但比结果更重要的是这一年我所经历的一切。这一年我失去了很多，也放弃了很多，但却在拼搏的汗水中成长，在失落的泪水中成熟，换来的是一个至少对自己来说不平凡的17岁。这一切，便是我给自己最好的成年礼物。今后我是否会成为一个ACMer？我不知道自己是否还有这样的勇气和实力，但我会一直努力。在OI并不完美的谢幕后，我迎来的是18岁全新的征程。</p>
<p>一直很遗憾OIer们没有一首自己的歌可以抒怀（《隐形的BUG》《爱在编译前》这些改编的搞笑之作应该不算）。在NOI07闭幕会上听到最后一首《拥抱明天》才发现OI精神于奥林匹克精神是何其相似：参与、坚持与友谊。而NOIP07前一天我在毫无准备的情况下听到这首歌时，一时间百感交集，竟禁不住泪水夺眶而出。本文不妨用这首歌的歌词做结吧：</p>
<p>让我们的心相连<br />
把我们的爱奉献<br />
在飒爽英姿赛场上<br />
相逢一笑到永远</p>
<p>让我们的心相连<br />
把我们的爱奉献<br />
在奥林匹克旗帜下<br />
拥抱明天</p>
<p><object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" width="480" height="409" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0"><param name="allowScriptAccess" value="sameDomain" /><param name="FlashVars" value="v=9XDOQ3SR&amp;p=http://cache.mofile.com/tv/images/audio.jpg&amp;autoplay=0&amp;nowSkin=0_0" /><param name="wmode" value="transparent" /><param name="src" value="http://tv.mofile.com/cn/xplayer.swf" /><param name="flashvars" value="v=9XDOQ3SR&amp;p=http://cache.mofile.com/tv/images/audio.jpg&amp;autoplay=0&amp;nowSkin=0_0" /><embed type="application/x-shockwave-flash" width="480" height="409" src="http://tv.mofile.com/cn/xplayer.swf" wmode="transparent" flashvars="v=9XDOQ3SR&amp;p=http://cache.mofile.com/tv/images/audio.jpg&amp;autoplay=0&amp;nowSkin=0_0" allowscriptaccess="sameDomain"></embed></object><br />
﻿</p>
<p><img class="alignright" title="http://gallery.tomtung.com/pictures/tomtung-signature.png" src="http://gallery.tomtung.com/pictures/tomtung-signature.png" alt="" width="160" height="99" /></p>

	<br />Tags：<a href="http://blog.tomtung.com/tag/noi/" title="noi" rel="tag">noi</a>, <a href="http://blog.tomtung.com/tag/noip/" title="noip" rel="tag">noip</a><br />

	<br /><h3>Related Posts</h3>
	<ul class="st-related-posts">
	<li><a href="http://blog.tomtung.com/2007/06/ask-for-leave/" title="请假未遂 (2007-06-14)">请假未遂</a> (3)</li>
	<li><a href="http://blog.tomtung.com/2007/08/gao-san-tomorrow/" title="明天我高三（Ubuntu寄来了） (2007-08-12)">明天我高三（Ubuntu寄来了）</a> (7)</li>
	<li><a href="http://blog.tomtung.com/2007/07/noi-here-i-come/" title="NOI来了 该出发了 (2007-07-26)">NOI来了 该出发了</a> (7)</li>
	<li><a href="http://blog.tomtung.com/2007/07/disturbance/" title="扰动 (2007-07-19)">扰动</a> (7)</li>
	<li><a href="http://blog.tomtung.com/2007/04/usaco-ch2-done/" title="做完了USACO第二章，但心里并不轻松 (2007-04-06)">做完了USACO第二章，但心里并不轻松</a> (6)</li>
</ul>

]]></content:encoded>
			<wfw:commentRss>http://blog.tomtung.com/2007/11/oi-curtain-call/feed/</wfw:commentRss>
		<slash:comments>19</slash:comments>
		</item>
		<item>
		<title>终于有NOIP1=了</title>
		<link>http://blog.tomtung.com/2007/11/got-noip-1st-prize-finally/</link>
		<comments>http://blog.tomtung.com/2007/11/got-noip-1st-prize-finally/#comments</comments>
		<pubDate>Sat, 17 Nov 2007 09:30:21 +0000</pubDate>
		<dc:creator>逆铭</dc:creator>
				<category><![CDATA[OI那一年]]></category>
		<category><![CDATA[noip]]></category>
		<category><![CDATA[保送]]></category>

		<guid isPermaLink="false">http://blog.tomtung.com/2007/11/%e7%bb%88%e4%ba%8e%e6%9c%89noip1%e4%ba%86/</guid>
		<description><![CDATA[有1=了。今年题水。第一题我Hash+Qsort，N+MlogM，其实直接快排然后统计NlogN也能过。第二题水模拟，几年没考串没想到就来这么一道。第三题弱dp，各行独立，分别求然后相加就行了，不过要高精。第四题题目没看懂。 还好我、哑熊、清风这三个高三老人的都有1=了。 不过第三题没高精而是unsigned long long拿60分，就看卡不卡数据类型。不过即使这60分丢掉也能进省前五了，问题不大。开始联系大学，还好从此语文生物不再折磨我了，化学学不学则要看报哪些大学。作业落下好多了…… 这里小小地更新下。下次更新如果不出意外应该在几天以后。 最后大赞dfdnn401分=.= Tags：noip, 保送 Related Posts NOIP07：最后一役 (3) 计划2007：为不高考而努力！ (6) 年末扯扯 (8) 做完了USACO第二章，但心里并不轻松 (6) 明天我高三（Ubuntu寄来了） (7)]]></description>
			<content:encoded><![CDATA[<div>有1=了。今年题水。第一题我Hash+Qsort，N+MlogM，其实直接快排然后统计NlogN也能过。第二题水模拟，几年没考串没想到就来这么一道。第三题弱dp，各行独立，分别求然后相加就行了，不过要高精。第四题题目没看懂。</div>
<div>还好我、哑熊、清风这三个高三老人的都有1=了。</div>
<div>不过第三题没高精而是unsigned long long拿60分，就看卡不卡数据类型。不过即使这60分丢掉也能进省前五了，问题不大。开始联系大学，还好从此语文生物不再折磨我了，化学学不学则要看报哪些大学。作业落下好多了……</div>
<div>这里小小地更新下。下次更新如果不出意外应该在几天以后。</div>
<div>最后大赞dfdnn401分=.=</div>

	<br />Tags：<a href="http://blog.tomtung.com/tag/noip/" title="noip" rel="tag">noip</a>, <a href="http://blog.tomtung.com/tag/%e4%bf%9d%e9%80%81/" title="保送" rel="tag">保送</a><br />

	<br /><h3>Related Posts</h3>
	<ul class="st-related-posts">
	<li><a href="http://blog.tomtung.com/2007/11/noip07-last-fight/" title="NOIP07：最后一役 (2007-11-16)">NOIP07：最后一役</a> (3)</li>
	<li><a href="http://blog.tomtung.com/2007/01/plan-for-2007/" title="计划2007：为不高考而努力！ (2007-01-15)">计划2007：为不高考而努力！</a> (6)</li>
	<li><a href="http://blog.tomtung.com/2007/12/at-the-end-of-the-year/" title="年末扯扯 (2007-12-31)">年末扯扯</a> (8)</li>
	<li><a href="http://blog.tomtung.com/2007/04/usaco-ch2-done/" title="做完了USACO第二章，但心里并不轻松 (2007-04-06)">做完了USACO第二章，但心里并不轻松</a> (6)</li>
	<li><a href="http://blog.tomtung.com/2007/08/gao-san-tomorrow/" title="明天我高三（Ubuntu寄来了） (2007-08-12)">明天我高三（Ubuntu寄来了）</a> (7)</li>
</ul>

]]></content:encoded>
			<wfw:commentRss>http://blog.tomtung.com/2007/11/got-noip-1st-prize-finally/feed/</wfw:commentRss>
		<slash:comments>9</slash:comments>
		</item>
		<item>
		<title>NOIP07：最后一役</title>
		<link>http://blog.tomtung.com/2007/11/noip07-last-fight/</link>
		<comments>http://blog.tomtung.com/2007/11/noip07-last-fight/#comments</comments>
		<pubDate>Fri, 16 Nov 2007 14:19:17 +0000</pubDate>
		<dc:creator>逆铭</dc:creator>
				<category><![CDATA[OI那一年]]></category>
		<category><![CDATA[noip]]></category>

		<guid isPermaLink="false">http://blog.tomtung.com/2007/11/noip07%ef%bc%9a%e6%9c%80%e5%90%8e%e4%b8%80%e5%bd%b9/</guid>
		<description><![CDATA[现在距离NOIP07复赛开始还剩下9个小时了。竟然没有了前几天的紧张。 由于模拟赛频频失手，让我非常恐慌，最严重的时候甚至晚上躺在床上一身一身地出冷汗。模拟赛最高也不过偶尔碰见弱题的200分，最低则是无可挽回的0分。 OI生涯即将结束。我不断憧憬着1=后并没有多么美好的生活（但总比高考好），但是心里仍然没有底。在请最后一天假的时候我给班主任说“一等问题不大，只要不阴沟了翻船”的时候甚至有些脸红。曾经感觉十拿九稳的事情到了眼前却无法掌握。 今天下午在群里放歌，随手下了《滚滚长江东逝水》和《拥抱明天》两首歌放——这都是NOI闭幕会上曾经被演唱的歌。没想到听完前者鼻子这是有些酸，听完后者（这是闭幕会的最后一首歌）心里竟然真好像被什么东西击中了一样，泪流满面。这不是郭小四的矫情。听着歌真的万千感慨涌上心头。真的，OI已经是一个信念，一个梦想。在追逐的过程中，我们付出了太多。 祝福大家。尤其是哑熊、清风、我和其他高三的OIer们。最后一次机会了，希望OI生涯不要留下遗憾。 Bless all&#8230; P.S.我的生日大家不要管了，高三时间紧，我知道选礼物真的非常非常费时间，只要有人祝福我就很知足了。况且若NOIP挂掉也不会有心情过什么生日了。（星驰你是例外啊……由于你长期拖欠，现罚你送我和他们给你送的规格一样的~~hoho~） Tags：noip Related Posts 明天我高三（Ubuntu寄来了） (7) 计划2007：为不高考而努力！ (6) 第一次月考及其他 (5) 终于有NOIP1=了 (9) OI最后的谢幕·18岁新的开始 (19)]]></description>
			<content:encoded><![CDATA[<div>现在距离NOIP07复赛开始还剩下9个小时了。竟然没有了前几天的紧张。</div>
<div>由于模拟赛频频失手，让我非常恐慌，最严重的时候甚至晚上躺在床上一身一身地出冷汗。模拟赛最高也不过偶尔碰见弱题的200分，最低则是无可挽回的0分。</div>
<div>OI生涯即将结束。我不断憧憬着1=后并没有多么美好的生活（但总比高考好），但是心里仍然没有底。在请最后一天假的时候我给班主任说“一等问题不大，只要不阴沟了翻船”的时候甚至有些脸红。曾经感觉十拿九稳的事情到了眼前却无法掌握。</div>
<div>今天下午在群里放歌，随手下了《<span style="font-family: 宋体;">滚滚长江东逝水</span>》和《拥抱明天》两首歌放——这都是NOI闭幕会上曾经被演唱的歌。没想到听完前者鼻子这是有些酸，听完后者（这是闭幕会的最后一首歌）心里竟然真好像被什么东西击中了一样，泪流满面。这不是郭小四的矫情。听着歌真的万千感慨涌上心头。真的，OI已经是一个信念，一个梦想。在追逐的过程中，我们付出了太多。</div>
<div>祝福大家。尤其是哑熊、清风、我和其他高三的OIer们。最后一次机会了，希望OI生涯不要留下遗憾。</div>
<div>Bless all&#8230;</div>
<div>P.S.我的生日大家不要管了，高三时间紧，我知道选礼物真的非常非常费时间，只要有人祝福我就很知足了。况且若NOIP挂掉也不会有心情过什么生日了。（星驰你是例外啊……由于你长期拖欠，现罚你送我和他们给你送的规格一样的~~hoho~）</div>

	<br />Tags：<a href="http://blog.tomtung.com/tag/noip/" title="noip" rel="tag">noip</a><br />

	<br /><h3>Related Posts</h3>
	<ul class="st-related-posts">
	<li><a href="http://blog.tomtung.com/2007/08/gao-san-tomorrow/" title="明天我高三（Ubuntu寄来了） (2007-08-12)">明天我高三（Ubuntu寄来了）</a> (7)</li>
	<li><a href="http://blog.tomtung.com/2007/01/plan-for-2007/" title="计划2007：为不高考而努力！ (2007-01-15)">计划2007：为不高考而努力！</a> (6)</li>
	<li><a href="http://blog.tomtung.com/2007/09/first-monthly-exam-etc/" title="第一次月考及其他 (2007-09-24)">第一次月考及其他</a> (5)</li>
	<li><a href="http://blog.tomtung.com/2007/11/got-noip-1st-prize-finally/" title="终于有NOIP1=了 (2007-11-17)">终于有NOIP1=了</a> (9)</li>
	<li><a href="http://blog.tomtung.com/2007/11/oi-curtain-call/" title="OI最后的谢幕·18岁新的开始 (2007-11-22)">OI最后的谢幕·18岁新的开始</a> (19)</li>
</ul>

]]></content:encoded>
			<wfw:commentRss>http://blog.tomtung.com/2007/11/noip07-last-fight/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>谁发明了递归</title>
		<link>http://blog.tomtung.com/2007/10/who-invented-recursion/</link>
		<comments>http://blog.tomtung.com/2007/10/who-invented-recursion/#comments</comments>
		<pubDate>Thu, 18 Oct 2007 11:12:14 +0000</pubDate>
		<dc:creator>逆铭</dc:creator>
				<category><![CDATA[杂的扯]]></category>
		<category><![CDATA[搞笑]]></category>
		<category><![CDATA[递归]]></category>

		<guid isPermaLink="false">http://blog.tomtung.com/2007/10/%e8%b0%81%e5%8f%91%e6%98%8e%e4%ba%86%e9%80%92%e5%bd%92/</guid>
		<description><![CDATA[“子非鱼，安知鱼之乐？” “子非我，安知我不知鱼之乐？” “子非我，安知我不知子不知鱼之乐？” “子非我，安知我不知子不知我知鱼之乐？” “子非我，安知我不知子不知我知子不知鱼之乐？” “子非我，安知我不知子不知我知子不知我知鱼之乐？” “子非我，安知我不知子不知我知子不知我知子不知鱼之乐？” “子非我，安知我不知子不知我知子不知我知子不知我知鱼之乐？” “子非我，安知我不知子不知我知子不知我知子不知我知子不知鱼之乐？” ………… 现在你知道是谁发明递归的了。 @_@ Tags：搞笑, 递归 Related Posts 我的壁纸 (1) 恶搞巴赫：Deconstructing Johann (0) 某无线信号 (2)]]></description>
			<content:encoded><![CDATA[<p>“子非鱼，安知鱼之乐？”<br />
“子非我，安知我不知鱼之乐？”<br />
“子非我，安知我不知子不知鱼之乐？”<br />
“子非我，安知我不知子不知我知鱼之乐？”<br />
“子非我，安知我不知子不知我知子不知鱼之乐？”<br />
“子非我，安知我不知子不知我知子不知我知鱼之乐？”<br />
“子非我，安知我不知子不知我知子不知我知子不知鱼之乐？”<br />
“子非我，安知我不知子不知我知子不知我知子不知我知鱼之乐？”<br />
“子非我，安知我不知子不知我知子不知我知子不知我知子不知鱼之乐？”<br />
…………<br />
现在你知道是谁发明递归的了。 @_@</p>

	<br />Tags：<a href="http://blog.tomtung.com/tag/%e6%90%9e%e7%ac%91/" title="搞笑" rel="tag">搞笑</a>, <a href="http://blog.tomtung.com/tag/%e9%80%92%e5%bd%92/" title="递归" rel="tag">递归</a><br />

	<br /><h3>Related Posts</h3>
	<ul class="st-related-posts">
	<li><a href="http://blog.tomtung.com/2006/12/wallpaper/" title="我的壁纸 (2006-12-31)">我的壁纸</a> (1)</li>
	<li><a href="http://blog.tomtung.com/2008/03/deconstructing-johann/" title="恶搞巴赫：Deconstructing Johann (2008-03-01)">恶搞巴赫：Deconstructing Johann</a> (0)</li>
	<li><a href="http://blog.tomtung.com/2008/12/a-very-jiong-wireless-hotspot/" title="某无线信号 (2008-12-09)">某无线信号</a> (2)</li>
</ul>

]]></content:encoded>
			<wfw:commentRss>http://blog.tomtung.com/2007/10/who-invented-recursion/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>MO: bless all</title>
		<link>http://blog.tomtung.com/2007/10/mo-bless-all/</link>
		<comments>http://blog.tomtung.com/2007/10/mo-bless-all/#comments</comments>
		<pubDate>Sat, 13 Oct 2007 13:46:46 +0000</pubDate>
		<dc:creator>逆铭</dc:creator>
				<category><![CDATA[生活在此处]]></category>
		<category><![CDATA[mo]]></category>

		<guid isPermaLink="false">http://blog.tomtung.com/2007/10/mo-bless-all/</guid>
		<description><![CDATA[明天就是MO了，虽然我自己数学太差没有参加，但是周围的朋友有一大票参加的（我好菜啊555）。在此祝福哑熊、清风、WC、Ivan、DF大牛牛、Wind神牛、Anti、琛哥、BT（以上排名顺序纯random）及那些个背着我参加MO的朋友们，一个个都RP爆发，拿一等、进省队、冲牌子~~~~ &#160; 昨天晚上给数年没有联系的WC打了电话，然后聊了快半个小时。依旧是那么坦诚和坚定，且似乎健谈不少。他现在心态非常好，说并不再想着拿一等保送这些事情了，只准备为多年MO生涯画上一个尽量完美的句号。他去年MO离一等仅仅差6分而很受打击，甚至扔开了MO半年。但是一直到现在整个状态感觉都很好，相信一定会有很好的成绩的。这样的从容踏实心态真的很值得我去学习。扯到OI上的时候，我说我才意识到数学真是重要啊，很多都在OI里面有用，他问“你数学一定也不错吧？”……让我惭愧了许久。真的不懂的太多了。 &#160; 今天晚上又给Ivan打了长途，简单祝福了几句。Ghost都说此人MO很牛，相信不会有什么问题的。 &#160; Wind神牛在QQ上失踪了，无法bless……清风、BT和一中的娃们QQ老见着呢，我这rp圣手应该已经一一bless过啦，大家就等着暴rp吧~~哈哈~~ Tags：mo Related Posts 第一次月考及其他 (5)]]></description>
			<content:encoded><![CDATA[<div> 明天就是MO了，虽然我自己数学太差没有参加，但是周围的朋友有一大票参加的（我好菜啊555）。在此祝福哑熊、清风、WC、Ivan、DF大牛牛、Wind神牛、Anti、<font FACE="宋体">琛哥、BT（以上排名顺序纯random）及那些个背着我参加MO的朋友们，一个个都RP爆发，拿一等、进省队、冲牌子~~~~</font></div>
<div>&nbsp;</div>
<div> 昨天晚上给数年没有联系的WC打了电话，然后聊了快半个小时。依旧是那么坦诚和坚定，且似乎健谈不少。他现在心态非常好，说并不再想着拿一等保送这些事情了，只准备为多年MO生涯画上一个尽量完美的句号。他去年MO离一等仅仅差6分而很受打击，甚至扔开了MO半年。但是一直到现在整个状态感觉都很好，相信一定会有很好的成绩的。这样的从容踏实心态真的很值得我去学习。扯到OI上的时候，我说我才意识到数学真是重要啊，很多都在OI里面有用，他问“你数学一定也不错吧？”……让我惭愧了许久。真的不懂的太多了。</div>
<div>&nbsp;</div>
<div>今天晚上又给Ivan打了长途，简单祝福了几句。Ghost都说此人MO很牛，相信不会有什么问题的。</div>
<div>&nbsp;</div>
<div> Wind神牛在QQ上失踪了，无法bless……清风、BT和一中的娃们QQ老见着呢，我这rp圣手应该已经一一bless过啦，大家就等着暴rp吧~~哈哈~~</div>

	<br />Tags：<a href="http://blog.tomtung.com/tag/mo/" title="mo" rel="tag">mo</a><br />

	<br /><h3>Related Posts</h3>
	<ul class="st-related-posts">
	<li><a href="http://blog.tomtung.com/2007/09/first-monthly-exam-etc/" title="第一次月考及其他 (2007-09-24)">第一次月考及其他</a> (5)</li>
</ul>

]]></content:encoded>
			<wfw:commentRss>http://blog.tomtung.com/2007/10/mo-bless-all/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>[NOIP05] 篝火晚会</title>
		<link>http://blog.tomtung.com/2007/10/noip05-fire/</link>
		<comments>http://blog.tomtung.com/2007/10/noip05-fire/#comments</comments>
		<pubDate>Tue, 02 Oct 2007 07:51:53 +0000</pubDate>
		<dc:creator>逆铭</dc:creator>
				<category><![CDATA[OI那一年]]></category>
		<category><![CDATA[解题报告]]></category>

		<guid isPermaLink="false">http://blog.tomtung.com/2007/10/noip05-%e7%af%9d%e7%81%ab%e6%99%9a%e4%bc%9a/</guid>
		<description><![CDATA[篝火晚会 (fire.pas/c/cpp) 【问题描述】 佳佳刚进高中，在军训的时候，由于佳佳吃苦耐劳，很快得到了教官的赏识，成为了“小教官”。在军训结束的那天晚上，佳佳被命令组织同学们进行篝火晚会。一共有n个同学，编号从1到n。一开始，同学们按照1，2，……，n的顺序坐成一圈，而实际上每个人都有两个最希望相邻的同学。如何下命令调整同学的次序，形成新的一个圈，使之符合同学们的意愿，成为摆在佳佳面前的一大难题。 佳佳可向同学们下达命令，每一个命令的形式如下： (b1, b2,&#8230; bm -1, bm) 这里m的值是由佳佳决定的，每次命令m的值都可以不同。这个命令的作用是移动编号是b1，b2，…… bm –1，bm的这m个同学的位置。要求b1换到b2的位置上，b2换到b3的位置上，……，要求bm换到b1的位置上。 执行每个命令都需要一些代价。我们假定如果一个命令要移动m个人的位置，那么这个命令的代价就是m。我们需要佳佳用最少的总代价实现同学们的意愿，你能帮助佳佳吗？ 【输入文件】 输入文件fire.in的第一行是一个整数n（3 &#60;= n &#60;= 50000），表示一共有n个同学。其后n行每行包括两个不同的正整数，以一个空格隔开，分别表示编号是1的同学最希望相邻的两个同学的编号，编号是2的同学最希望相邻的两个同学的编号，……，编号是n的同学最希望相邻的两个同学的编号。 【输出文件】 输出文件fire.out包括一行，这一行只包含一个整数，为最小的总代价。如果无论怎么调整都不能符合每个同学的愿望，则输出-1。 【样例输入】 4 3 4 4 3 1 2 1 2 【样例输出】 2 【数据规模】 对于30%的数据，n &#60;= 1000； 对于全部的数据，n &#60;= 50000。 【题解】 至此我就算做完了NOIP05提高组的全部四道题，发现除了第一题外其它题都不水，对于我这样的水平来说很值得一做。过河的状态压缩我想了好久；本题优化方法较过河简单，但也需要动动脑子；至于那个等价表达式则是典型的ws题：思想简单（特值法+用栈求表达式的值），但实现起来却比较繁琐，细节硕多，稍不留神就会出错，我前后一共提交了5次才AC（得到的分数分别是20、30、40、90、100）。还好这些题都是自己独立搞出来的。顺带一提，等价表达式取特值时并不像很多人说的要多个，一个足矣，当然不要取太特殊的，比如取a=1,-2,-3,0这样的就很容易被强数据阴掉，但要是取个a=-5.65742它不就没治了；同时B4数据中括号不匹配的情况。 当然这都是题外话，下面言归正传。 首先需要看到的是，虽然佳佳下达的命令形式很ws，但是在求总代价的时候却完全不需要管它。显然，在佳佳下达完一系列诡异的命令后，最后有几个人离开了原来的位置，这种情况下最小代价就是几（为什么？）。看清了这一点，问题就转化为：要使得所有人满意，最少需要让几个人离开原来的位置？ 我们先考虑无解的情况。把每个人看成无向图中的节点，两人相邻则连一条边。当n个人以某种次序围坐成一个圈的时候，每个节点的度一定都是2。而这种状态一定是初始状态通过若干次次序调整能达到的，即一定有解。那么无解的情况就一定是，根据同学们的希望构图后有同学的度不为2。这样，我们只需要构图，然后看是否所有节点的度都为2就可以判断是否有解了。 如果有解，下面就需要计算最小代价了。对于我们构得的图，DFS(1)后一定得到唯一的一个序列。例如1,5,3,2,4。我们现在就需要比较它和初始状态1,2,3,4,5，看有几个人离开了原来的位置。但这个序列实际代表的是一个环，而且方向正反有两种（即1,3,5,2,4和4,2,5,3,1应该是等价的），我们就需要把初始序列正反分别“转”N次（即1,2,3,4,5; 5,1,2,3,4; 4,5,1,2,3; 3,4,5,1,2; 2,3,4,5,1 以及 5,4,3,2,1; 1,5,4,3,2; 2,1,5,4,3; [...]]]></description>
			<content:encoded><![CDATA[<h1 style="text-align: center;">篝火晚会</h1>
<p style="text-align: center;">(fire.pas/c/cpp)</p>
<p>【问题描述】<br />
佳佳刚进高中，在军训的时候，由于佳佳吃苦耐劳，很快得到了教官的赏识，成为了“小教官”。在军训结束的那天晚上，佳佳被命令组织同学们进行篝火晚会。一共有n个同学，编号从1到n。一开始，同学们按照1，2，……，n的顺序坐成一圈，而实际上每个人都有两个最希望相邻的同学。如何下命令调整同学的次序，形成新的一个圈，使之符合同学们的意愿，成为摆在佳佳面前的一大难题。</p>
<p>佳佳可向同学们下达命令，每一个命令的形式如下：</p>
<p>(b1, b2,&#8230; bm -1, bm)</p>
<p>这里m的值是由佳佳决定的，每次命令m的值都可以不同。这个命令的作用是移动编号是b1，b2，…… bm –1，bm的这m个同学的位置。要求b1换到b2的位置上，b2换到b3的位置上，……，要求bm换到b1的位置上。</p>
<p>执行每个命令都需要一些代价。我们假定如果一个命令要移动m个人的位置，那么这个命令的代价就是m。我们需要佳佳用最少的总代价实现同学们的意愿，你能帮助佳佳吗？</p>
<p>【输入文件】<br />
输入文件fire.in的第一行是一个整数n（3 &lt;= n &lt;= 50000），表示一共有n个同学。其后n行每行包括两个不同的正整数，以一个空格隔开，分别表示编号是1的同学最希望相邻的两个同学的编号，编号是2的同学最希望相邻的两个同学的编号，……，编号是n的同学最希望相邻的两个同学的编号。</p>
<p>【输出文件】<br />
输出文件fire.out包括一行，这一行只包含一个整数，为最小的总代价。如果无论怎么调整都不能符合每个同学的愿望，则输出-1。</p>
<p>【样例输入】<br />
4<br />
3 4<br />
4 3<br />
1 2<br />
1 2</p>
<p>【样例输出】<br />
2</p>
<p>【数据规模】<br />
对于30%的数据，n &lt;= 1000；<br />
对于全部的数据，n &lt;= 50000。</p>
<p>【题解】</p>
<p>至此我就算做完了NOIP05提高组的全部四道题，发现除了第一题外其它题都不水，对于我这样的水平来说很值得一做。过河的状态压缩我想了好久；本题优化方法较过河简单，但也需要动动脑子；至于那个等价表达式则是典型的ws题：思想简单（特值法+用栈求表达式的值），但实现起来却比较繁琐，细节硕多，稍不留神就会出错，我前后一共提交了5次才AC（得到的分数分别是20、30、40、90、100）。还好这些题都是自己独立搞出来的。顺带一提，等价表达式取特值时并不像很多人说的要多个，一个足矣，当然不要取太特殊的，比如取a=1,-2,-3,0这样的就很容易被强数据阴掉，但要是取个a=-5.65742它不就没治了；同时B4数据中括号不匹配的情况。</p>
<p>当然这都是题外话，下面言归正传。</p>
<p>首先需要看到的是，虽然佳佳下达的命令形式很ws，但是在求总代价的时候却完全不需要管它。显然，在佳佳下达完一系列诡异的命令后，最后有几个人离开了原来的位置，这种情况下最小代价就是几（为什么？）。看清了这一点，问题就转化为：要使得所有人满意，最少需要让几个人离开原来的位置？</p>
<p>我们先考虑无解的情况。把每个人看成无向图中的节点，两人相邻则连一条边。当n个人以某种次序围坐成一个圈的时候，每个节点的度一定都是2。而这种状态一定是初始状态通过若干次次序调整能达到的，即一定有解。那么无解的情况就一定是，根据同学们的希望构图后有同学的度不为2。这样，我们只需要构图，然后看是否所有节点的度都为2就可以判断是否有解了。</p>
<p>如果有解，下面就需要计算最小代价了。对于我们构得的图，DFS(1)后一定得到唯一的一个序列。例如1,5,3,2,4。我们现在就需要比较它和初始状态1,2,3,4,5，看有几个人离开了原来的位置。但这个序列实际代表的是一个环，而且方向正反有两种（即1,3,5,2,4和4,2,5,3,1应该是等价的），我们就需要把初始序列正反分别“转”N次（即1,2,3,4,5; 5,1,2,3,4; 4,5,1,2,3; 3,4,5,1,2; 2,3,4,5,1 以及 5,4,3,2,1; 1,5,4,3,2; 2,1,5,4,3; 3,2,1,5,4; 4,3,2,1,5）和DFS得到的序列比较，看其中最少有几个位置上的人编号不相同，就得到了我们要求的最小代价。</p>
<p>DFS是O(N)的；旋转可以通过指针来实现，所以是O(1)的；每次比较是O(N)的，共进行2N次比较。因此总的复杂度是O(N^2)的。期望得分为30分（我没写过这方法哈）。</p>
<p>进行很多次旋转，每次都需要比较，这种方法实在太慢了，是整个算法的瓶颈。怎么改进呢？我们发现转来转去不管怎么转，任意两个人之间的相对位置关系在这过程中都不会变。于是想到做差。</p>
<p>1 5 3 2 4<br />
- 1 2 3 4 5<br />
&#8212;&#8212;&#8212;&#8212;-<br />
0 3 0 3 4  （如果差小于0则加上N=5）</p>
<p>这表示序列1,5,3,2,4不转动时1,3两个人在原来的位置上，转动3个位置后5和2两个人在原来的位置上，转动4个位置后只有4一个人会在原来的位置上。这就是说，1,5,3,2,4与1,2,3,4,5在旋转后最多有2个位置上的人编号相同，即最少有3个位置上的人编号不相同。同理：</p>
<p>1 5 3 2 4<br />
- 5 4 3 2 1<br />
&#8212;&#8212;&#8212;&#8212;-<br />
1 1 0 0 3  （如果差小于0则加上N=5）</p>
<p>1,5,3,2,4与5,4,3,2,1在旋转后最少有3个位置上的人编号不相同。</p>
<p>取其中的较小者（例子没举好，两个值相同了）为3，即最后要求的最小总代价为3。问题就算解决了。</p>
<p>算法流程总结如下：</p>
<ol>
<li>根据输入构图，要求每个节点度只能为2，否则无解；</li>
<li>dfs得到一个序列seq表示符合条件的环</li>
<li>（下标从1开始）<br />
令a[i]=seq[i]-i（若小于0则+N）<br />
a中最多有x个相等的值<br />
令b[i]=seq[i]-(N+1-i)（若小于0则+N）<br />
a中最多有y个相等的值</li>
<li>n-max(x,y)即为所求</li>
</ol>
<p>改进后的算法复杂度为O(N)，实现起来很简单。期望得分为100。</p>
<pre class="brush:c++">#include &lt;iostream&gt;
#include &lt;fstream&gt;
#include &lt;cassert&gt;
using namespace std;
long N,seq[50001],p=1;
class{
	private:
		long nbr[50001][3];
		bool flag[50001];
		bool isnbr(long v1,long v2){
			for(int i=1;i&lt;=nbr[v1][0];i++)
				if(nbr[v1][i]==v2)	return true;
			return false;
		}
	public:
		bool AddE(long v1,long v2){
			if(isnbr(v1,v2))	return true;
			else if(nbr[v1][0]==2||nbr[v2][0]==2)	return false;
			else{
				nbr[v1][++nbr[v1][0]]=v2;
				nbr[v2][++nbr[v2][0]]=v1;
				return true;
			}
		}
		void dfs(long i){
			assert(!flag[i]);
			flag[i]=true,seq[p++]=i;
			for(int j=1;j&lt;=nbr[i][0];j++){
				if(!flag[nbr[i][j]]){
					dfs(nbr[i][j]);
					break;
				}
			}
		}
}G;
long solve(void){
	long cnt1[50001]={0},cnt2[50001]={0},ans=0;
	for(int i=1,a,b;i&lt;=N;i++){
		a=seq[i]-i;
		if(a&lt;0)	a+=N;
		b=seq[i]-(N+1-i);
		if(b&lt;0)	b+=N;
		if(++cnt1[a]&gt;ans)	ans=cnt1[a];
		if(++cnt2[b]&gt;ans)	ans=cnt2[b];
	}
	return N-ans;
}
int main(){
	ifstream cin("fire.in");
	ofstream cout("fire.out");
	cin &gt;&gt; N;
	for(int i=1,nbr1,nbr2;i&lt;=N;i++){
		cin &gt;&gt; nbr1 &gt;&gt; nbr2;
		if(!G.AddE(i,nbr1)||!G.AddE(i,nbr2)){
			cout &lt;&lt; -1 &lt;&lt; endl;
			return 0;
		}
	}
	G.dfs(1);
	cout &lt;&lt; solve() &lt;&lt; endl;
	return 0;
}
</pre>
<p>最后再给一个在vijos里看到的算法。我自己没有实现过，有兴趣的试试吧。</p>
<blockquote><p>见过的最牛最简单的方法……</p>
<p>将此题转换为冒泡排序，记录下所有交换的次数和两数间的距离，加上就行了……—__—|||</p>
<p>具体是这样的，我们反向思维，本来是要求一个有序数列求出成为无序数列的代价，现在我们把无序数列（即目标数列）进行冒泡排序，然后……就是这样…… 看完之后，偶巨汗……</p></blockquote>

	<br />Tags：<a href="http://blog.tomtung.com/tag/%e8%a7%a3%e9%a2%98%e6%8a%a5%e5%91%8a/" title="解题报告" rel="tag">解题报告</a><br />

	<br /><h3>Related Posts</h3>
	<ul class="st-related-posts">
	<li><a href="http://blog.tomtung.com/2009/03/bhoj-10235/" title="[BHOJ10235] 窗口取数 (2009-03-28)">[BHOJ10235] 窗口取数</a> (7)</li>
	<li><a href="http://blog.tomtung.com/2007/09/noip05-river/" title="[NOIP05]过河 (2007-09-19)">[NOIP05]过河</a> (2)</li>
	<li><a href="http://blog.tomtung.com/2007/02/usaco-p58-the-clocks/" title="[USACO]The Clocks (2007-02-19)">[USACO]The Clocks</a> (2)</li>
	<li><a href="http://blog.tomtung.com/2007/07/noi02-galaxy/" title="[NOI 02] 银河英雄传说 (2007-07-09)">[NOI 02] 银河英雄传说</a> (0)</li>
	<li><a href="http://blog.tomtung.com/2009/11/poj1771-elevator-stopping-plan/" title="[POJ1771] Elevator Stopping Plan (2009-11-21)">[POJ1771] Elevator Stopping Plan</a> (1)</li>
</ul>

]]></content:encoded>
			<wfw:commentRss>http://blog.tomtung.com/2007/10/noip05-fire/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>第一次月考及其他</title>
		<link>http://blog.tomtung.com/2007/09/first-monthly-exam-etc/</link>
		<comments>http://blog.tomtung.com/2007/09/first-monthly-exam-etc/#comments</comments>
		<pubDate>Mon, 24 Sep 2007 10:18:38 +0000</pubDate>
		<dc:creator>逆铭</dc:creator>
				<category><![CDATA[生活在此处]]></category>
		<category><![CDATA[mo]]></category>
		<category><![CDATA[noip]]></category>
		<category><![CDATA[高三]]></category>

		<guid isPermaLink="false">http://blog.tomtung.com/2007/09/%e7%ac%ac%e4%b8%80%e6%ac%a1%e6%9c%88%e8%80%83%e5%8f%8a%e5%85%b6%e4%bb%96/</guid>
		<description><![CDATA[明天是万恶高三的第一次月考。显然会挂掉的……所以我给旁边的同学说：这次我就准备到后面考场看莎莎去……结果LF说莎莎不一定在后面考场，汗……（关于“莎莎”的解释见这里第三段末）现在就期望考完以后的放假吧~ OI暂时停了下来，好好学习~剩下的时间就准备看NOIP历届原题了，再学下高精。DF越来越牛了啊，每天晚上都在OI，结果MO还全省第一。估计DF大牛以后一定是冲金夺银的。哑熊十一要去清北，不过不是OI，是MO。Bless下我们的MO小王子~ 好像下个月还有N多OI模拟赛呢~ 昨天听了Popiano这次原创大赛的获奖作品，感觉有点失望，没有听到特别“好听”的曲子。最近流行无调性？比如“流行组”的第一名曲子，那能“流行”得起来么……虽然对这些一窍不通，但是总希望能从获奖作品里听到特别好听的新曲子。像去年前年，很多曲子我都自己做成mp3方便随时听，今年则没有这样的冲动了。 最后引用LF的签名：又一小P孩18了，呵呵~~（不是我哈） 不扯了，复习去~ Tags：mo, noip, 高三 Related Posts OI最后的谢幕·18岁新的开始 (19) 明天我高三（Ubuntu寄来了） (7) 终于有NOIP1=了 (9) 计划2007：为不高考而努力！ (6) 做完了USACO第二章，但心里并不轻松 (6)]]></description>
			<content:encoded><![CDATA[<p>明天是万恶高三的第一次月考。显然会挂掉的……所以我给旁边的同学说：这次我就准备到后面考场看莎莎去……结果LF说莎莎不一定在后面考场，汗……（关于“莎莎”的解释见<a href="http://blog.sina.com.cn/s/blog_4a443fd7010008t5.html" target="_blank">这里</a>第三段末）现在就期望考完以后的放假吧~</p>
<p>OI暂时停了下来，好好学习~剩下的时间就准备看NOIP历届原题了，再学下高精。DF越来越牛了啊，每天晚上都在OI，结果MO还全省第一。估计DF大牛以后一定是冲金夺银的。哑熊十一要去清北，不过不是OI，是MO。Bless下我们的MO小王子~</p>
<p>好像下个月还有N多OI模拟赛呢~</p>
<p>昨天听了Popiano这次原创大赛的获奖作品，感觉有点失望，没有听到特别“好听”的曲子。最近流行无调性？比如“流行组”的第一名曲子，那能“流行”得起来么……虽然对这些一窍不通，但是总希望能从获奖作品里听到特别好听的新曲子。像去年前年，很多曲子我都自己做成mp3方便随时听，今年则没有这样的冲动了。</p>
<p>最后引用LF的签名：又一小P孩18了，呵呵~~（不是我哈）</p>
<p>不扯了，复习去~</p>

	<br />Tags：<a href="http://blog.tomtung.com/tag/mo/" title="mo" rel="tag">mo</a>, <a href="http://blog.tomtung.com/tag/noip/" title="noip" rel="tag">noip</a>, <a href="http://blog.tomtung.com/tag/%e9%ab%98%e4%b8%89/" title="高三" rel="tag">高三</a><br />

	<br /><h3>Related Posts</h3>
	<ul class="st-related-posts">
	<li><a href="http://blog.tomtung.com/2007/11/oi-curtain-call/" title="OI最后的谢幕·18岁新的开始 (2007-11-22)">OI最后的谢幕·18岁新的开始</a> (19)</li>
	<li><a href="http://blog.tomtung.com/2007/08/gao-san-tomorrow/" title="明天我高三（Ubuntu寄来了） (2007-08-12)">明天我高三（Ubuntu寄来了）</a> (7)</li>
	<li><a href="http://blog.tomtung.com/2007/11/got-noip-1st-prize-finally/" title="终于有NOIP1=了 (2007-11-17)">终于有NOIP1=了</a> (9)</li>
	<li><a href="http://blog.tomtung.com/2007/01/plan-for-2007/" title="计划2007：为不高考而努力！ (2007-01-15)">计划2007：为不高考而努力！</a> (6)</li>
	<li><a href="http://blog.tomtung.com/2007/04/usaco-ch2-done/" title="做完了USACO第二章，但心里并不轻松 (2007-04-06)">做完了USACO第二章，但心里并不轻松</a> (6)</li>
</ul>

]]></content:encoded>
			<wfw:commentRss>http://blog.tomtung.com/2007/09/first-monthly-exam-etc/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>[NOIP05]过河</title>
		<link>http://blog.tomtung.com/2007/09/noip05-river/</link>
		<comments>http://blog.tomtung.com/2007/09/noip05-river/#comments</comments>
		<pubDate>Wed, 19 Sep 2007 13:50:16 +0000</pubDate>
		<dc:creator>逆铭</dc:creator>
				<category><![CDATA[OI那一年]]></category>
		<category><![CDATA[动态规划]]></category>
		<category><![CDATA[解题报告]]></category>

		<guid isPermaLink="false">http://blog.tomtung.com/2007/09/noip05%e8%bf%87%e6%b2%b3/</guid>
		<description><![CDATA[过河 (river.pas/c/cpp) 【问题描述】 在河上有一座独木桥，一只青蛙想沿着独木桥从河的一侧跳到另一侧。在桥上有一些石子，青蛙很讨厌踩在这些石子上。由于桥的长度和青蛙一次跳过的距离都是正整数，我们可以把独木桥上青蛙可能到达的点看成数轴上的一串整点：0，1，……，L（其中L是桥的长度）。坐标为0的点表示桥的起点，坐标为L的点表示桥的终点。青蛙从桥的起点开始，不停的向终点方向跳跃。一次跳跃的距离是S到T之间的任意正整数（包括S,T）。当青蛙跳到或跳过坐标为L的点时，就算青蛙已经跳出了独木桥。 题目给出独木桥的长度L，青蛙跳跃的距离范围S,T，桥上石子的位置。你的任务是确定青蛙要想过河，最少需要踩到的石子数。 【输入文件】 输入文件river.in的第一行有一个正整数L（1 &#60;= L &#60;=10^9），表示独木桥的长度。第二行有三个正整数S，T，M，分别表示青蛙一次跳跃的最小距离，最大距离，及桥上石子的个数，其中1 &#60;= S &#60;= T &#60;= 10，1 &#60;= M &#60;= 100。第三行有M个不同的正整数分别表示这M个石子在数轴上的位置（数据保证桥的起点和终点处没有石子）。所有相邻的整数之间用一个空格隔开。 【输出文件】 输出文件river.out只包括一个整数，表示青蛙过河最少需要踩到的石子数。 【样例输入】 10 2 3 5 2 3 5 6 7 【样例输出】 2 【数据规模】 对于30%的数据，L &#60;= 10000； 对于全部的数据，L &#60;= 10^9。 【题解】 一看题，这无后效性和最优子结构也太明显了，随手就可以列出转移方程。令dp[i]表示处于i位置时，最少还要踩到几个石子（包括当前点）才能到达对岸。bridge[i]为点i处的石子个数（0或1）。则 当0≤i&#60;L时：dp[i] = min{dp[i+j]} + bridge[i]   (S≤j≤T) 当i≥L时：dp[i]=0 问题的解即为dp[0]。 但是这样写完交上去最多只能得30分。直接硬搞，复杂度是O(L*(T-S))的，T-S最大为9，无关紧要，但是L的最大值则是令人发指的10^9（青蛙跳这么长距离不累死么 &#8211; -），不TLE……恐怕需要10年以后的CPU了。那怎么办呢？（思考过程也许比较繁琐，要结论请直接看倒数第5段） 数据范围往往是算法选择的最重要的提示。我们看到虽然L这么巨大，但是石子的总数却不超过100个。这说明什么？说明桥上必然有大段大段的无石子区间，而无石子区间的最大长度在极限情况下将接近10^9。即在跳跃中，青蛙经常会很郁闷地在巨长的无石子区间上跳啊跳啊，想踩个石子都踩不到。上面那个普通dp肯定会导致空白区间上大量的无必要决策而无谓耗费大量时间。要减少这种时间浪费，我们可以试图把大段的无石子区间等效转化为较短的无石子区间，从而使时间开销降至可承受范围。 [...]]]></description>
			<content:encoded><![CDATA[<h1 style="text-align: center;">过河</h1>
<p style="text-align: center;">(river.pas/c/cpp)</p>
<p>【问题描述】</p>
<p>在河上有一座独木桥，一只青蛙想沿着独木桥从河的一侧跳到另一侧。在桥上有一些石子，青蛙很讨厌踩在这些石子上。由于桥的长度和青蛙一次跳过的距离都是正整数，我们可以把独木桥上青蛙可能到达的点看成数轴上的一串整点：0，1，……，L（其中L是桥的长度）。坐标为0的点表示桥的起点，坐标为L的点表示桥的终点。青蛙从桥的起点开始，不停的向终点方向跳跃。一次跳跃的距离是S到T之间的任意正整数（包括S,T）。当青蛙跳到或跳过坐标为L的点时，就算青蛙已经跳出了独木桥。</p>
<p>题目给出独木桥的长度L，青蛙跳跃的距离范围S,T，桥上石子的位置。你的任务是确定青蛙要想过河，最少需要踩到的石子数。</p>
<p>【输入文件】</p>
<p>输入文件river.in的第一行有一个正整数L（1 &lt;= L &lt;=10^9），表示独木桥的长度。第二行有三个正整数S，T，M，分别表示青蛙一次跳跃的最小距离，最大距离，及桥上石子的个数，其中1 &lt;= S &lt;= T &lt;= 10，1 &lt;= M &lt;= 100。第三行有M个不同的正整数分别表示这M个石子在数轴上的位置（数据保证桥的起点和终点处没有石子）。所有相邻的整数之间用一个空格隔开。</p>
<p>【输出文件】</p>
<p>输出文件river.out只包括一个整数，表示青蛙过河最少需要踩到的石子数。</p>
<p>【样例输入】</p>
<p>10</p>
<p>2 3 5</p>
<p>2 3 5 6 7</p>
<p>【样例输出】</p>
<p>2</p>
<p>【数据规模】</p>
<p>对于30%的数据，L &lt;= 10000；</p>
<p>对于全部的数据，L &lt;= 10^9。</p>
<p>【题解】</p>
<p>一看题，这无后效性和最优子结构也太明显了，随手就可以列出转移方程。令dp[i]表示处于i位置时，最少还要踩到几个石子（包括当前点）才能到达对岸。bridge[i]为点i处的石子个数（0或1）。则</p>
<p>当0≤i&lt;L时：dp[i] = min{dp[i+j]} + bridge[i]   (S≤j≤T)</p>
<p>当i≥L时：dp[i]=0</p>
<p>问题的解即为dp[0]。</p>
<p>但是这样写完交上去最多只能得30分。直接硬搞，复杂度是O(L*(T-S))的，T-S最大为9，无关紧要，但是L的最大值则是令人发指的10^9（青蛙跳这么长距离不累死么 &#8211; -），不TLE……恐怕需要10年以后的CPU了。那怎么办呢？（思考过程也许比较繁琐，要结论请直接看倒数第5段）</p>
<p>数据范围往往是算法选择的最重要的提示。我们看到虽然L这么巨大，但是石子的总数却不超过100个。这说明什么？说明桥上必然有大段大段的无石子区间，而无石子区间的最大长度在极限情况下将接近10^9。即在跳跃中，青蛙经常会很郁闷地在巨长的无石子区间上跳啊跳啊，想踩个石子都踩不到。上面那个普通dp肯定会导致空白区间上大量的无必要决策而无谓耗费大量时间。要减少这种时间浪费，我们可以试图把大段的无石子区间等效转化为较短的无石子区间，从而使时间开销降至可承受范围。</p>
<p>首先考虑最简单的情况：S=T。这种情况下，这个诡异的青蛙只能跳固定的长度。而跳的起点是0位置，那么青蛙经过的就只有S（或者说T，一回事）的整数倍点。如果石子的位置为S的整数倍，那么青蛙就一定会踩到，否则一定踩不到。比如S=T=3，L=100，那么青蛙经过的点就为且仅为0，3，6，&#8230;，96，99。在21、27、33、66等处的石子就一定能踩到，而20、40、80、92等处的石子就踩不到。于是，当S=T时，我们只需要数位置为S整数倍的石子有几个就得到了答案，不需要进行上面说到的“等效转化”。</p>
<p>那如果S≠T呢？我们也从一个最简单的例子看起。假如S=5，T=6，青蛙从0位置开始跳，那么它可能到达的点是：</p>
<p>5，6，</p>
<p>10，11，12，</p>
<p>15，16，17，18，</p>
<p>20，21，22，23，24，</p>
<p>25，26，27，28，29，30，31，32，33，……</p>
<p>可以看到，这些点组成了一个个连续的区间，各相邻区间起点间的距离都是S=5，开始区间长度为2，然后长度变为3，4，然后完全连在一起，后面的位置都可达。如果桥上0~999都没有石子，1000处有一个石子，那么我们只关心青蛙是否选择跳到999，998，997，996，995，994这几个位置，因为青蛙在这段无石子区间上跳半天最后总会跳到这6个位置上，在无石子区间中不管怎么跳其实都无所谓。那么，我们完全可以无视25以后的数，把这段区间等效为0~25，以确保25以后所有位置都可达且有20~25这段连续区间来代替994~999这段等长的区间。这样，我们在这段无石子区间上的决策就大大减少了。</p>
<p>桥上的其他无石子区间是否可以如法炮制呢？答案是肯定的。对于以后任何一段长度大于25+6=31的无石子区间（这是采取“等效”措施的“门槛”），我们都可以把它的长度看成31。（25为什么要加上6呢？考虑一下，进入这段无石子区间后，青蛙开始往前跳的的起点，它可能不是区间本身的起点。）这样处理后，即使桥长度达到10^9，也可以在非常短的时间内出解。事实上，我们不仅可以把无石子区间长度等效为31，等效为36，121，500也都可以，只要长度比31大就行（当然“门槛”也要相应升高）。我们把这个等效区间的“最短”长度（本例中为31）称为“等效区间最短长度”。</p>
<p>下面推广。当S≠T时我们发现，在T不变的情况下，T-S越大（即S越小），等效区间最短长度越短。T-S不变的情况下，T越大，等效区间最短长度越长。那么对于题目给出的数据范围，S=9，T=10时（满足T-S最小且T最大）得到最大的“等效区间最短长度”为100。对于其他的S和T，我们不需要专门计算它们对应的等效区间最短长度，直接采用100这个值就可以了。</p>
<p><strong>综上，若S=T，我们直接数位置能被S整除的石子个数；若S≠T，如果某无石子区间长度大于100，则等效为100，否则不变，然后再dp。</strong></p>
<p>至于为什么有同学取比100小的数也AC了，我觉得（不一定对哈，没验证）应该是数据弱了。经实验，即使取20也可以AC，取10也才WA一个点。</p>
<p>对于等效区间最短长度的这番计算其实完全不必要。比赛时最好的方法是：取时间复杂度可接受的最大值……这样最省事。</p>
<p>上面可能做麻烦了，欢迎提供简明解法，谢谢。</p>
<p>最后说点题外话。这题我调了一晚上，郁闷死了。最后发现问题竟然是：石子位置没有按照升序排列，我却想当然这么处理了，结果一个点都过不去……</p>
<p>代码如下：</p>
<pre class="brush:c++">#include &lt;iostream&gt;
#include &lt;fstream&gt;
#include &lt;bitset&gt;
#include &lt;cstdlib&gt;
using namespace std;
unsigned long L_orig,L,S,T,M,pos[102],dp[12000],ans;
bitset&lt;12000&gt; bridge,flag;
long memo(long i){
	if(i&gt;=L)	return 0;
	if(flag[i])	return dp[i];
	flag[i]=1,dp[i]=INT_MAX;
	for(int j=S;j&lt;=T;j++)
		if(dp[i]&gt;memo(i+j))
			dp[i]=memo(i+j);
	dp[i]+=bridge[i];
	return dp[i];
}
inline int cmp(const void *a,const void *b){
	return *(long*)a-*(long*)b;
}
int main(){
	ifstream cin("river.in");
	cin &gt;&gt; L_orig &gt;&gt; S &gt;&gt; T &gt;&gt; M;
	if(S==T)
		for(int i=1,tmp;i&lt;=M;i++){
			cin &gt;&gt; tmp;
			if(tmp%S==0)	ans++;
		}
	else{
		pos[M+1]=L_orig;
		for(int i=1,counter=0;i&lt;=M;i++)	cin &gt;&gt; pos[i];
		qsort(pos,M+2, sizeof(pos[0]),cmp);
		for(int i=1;i&lt;=M+1;i++){
			if(pos[i]-pos[i-1]-1&lt;=100)	L+=pos[i]-pos[i-1];
			else	L+=100;
			bridge[L]=1;
		}
		ans=memo(0);
	}
	ofstream fout("river.out");
	fout &lt;&lt; ans &lt;&lt; endl;
	return 0;
}
</pre>

	<br />Tags：<a href="http://blog.tomtung.com/tag/%e5%8a%a8%e6%80%81%e8%a7%84%e5%88%92/" title="动态规划" rel="tag">动态规划</a>, <a href="http://blog.tomtung.com/tag/%e8%a7%a3%e9%a2%98%e6%8a%a5%e5%91%8a/" title="解题报告" rel="tag">解题报告</a><br />

	<br /><h3>Related Posts</h3>
	<ul class="st-related-posts">
	<li><a href="http://blog.tomtung.com/2007/03/usaco-ordered-fractions/" title="[USACO]Ordered Fractions (2007-03-03)">[USACO]Ordered Fractions</a> (0)</li>
	<li><a href="http://blog.tomtung.com/2007/07/noi05-cckk/" title="[NOI 05]聪聪与可可 (2007-07-20)">[NOI 05]聪聪与可可</a> (0)</li>
	<li><a href="http://blog.tomtung.com/2007/05/museum-fire/" title="[IOI2000国家队原创题] 艺术馆的火灾 (2007-05-30)">[IOI2000国家队原创题] 艺术馆的火灾</a> (0)</li>
	<li><a href="http://blog.tomtung.com/2007/06/poi-ix-railways/" title="[POI IX] Railways (2007-06-25)">[POI IX] Railways</a> (0)</li>
	<li><a href="http://blog.tomtung.com/2007/02/usaco-arithmetic-progressions/" title="[USACO]Arithmetic Progressions (2007-02-21)">[USACO]Arithmetic Progressions</a> (2)</li>
</ul>

]]></content:encoded>
			<wfw:commentRss>http://blog.tomtung.com/2007/09/noip05-river/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
	</channel>
</rss>
