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

<channel>
	<title>不敢流泪 &#187; 程序设计</title>
	<atom:link href="http://www.boluor.com/category/programming/feed" rel="self" type="application/rss+xml" />
	<link>http://www.boluor.com</link>
	<description></description>
	<lastBuildDate>Fri, 18 Jun 2010 05:38:01 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.2</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>云输入法chrome扩展</title>
		<link>http://www.boluor.com/%e4%ba%91%e8%be%93%e5%85%a5%e6%b3%95chrome%e6%89%a9%e5%b1%95.html</link>
		<comments>http://www.boluor.com/%e4%ba%91%e8%be%93%e5%85%a5%e6%b3%95chrome%e6%89%a9%e5%b1%95.html#comments</comments>
		<pubDate>Thu, 17 Jun 2010 18:37:48 +0000</pubDate>
		<dc:creator>boluor</dc:creator>
				<category><![CDATA[程序设计]]></category>
		<category><![CDATA[chrome]]></category>
		<category><![CDATA[javascript]]></category>

		<guid isPermaLink="false">http://www.boluor.com/?p=644</guid>
		<description><![CDATA[<p>在linux下，我在google chrome dev下用ibus输入法，经常出现输入焦点莫名丢失，而且webqq聊天时，用enter和ctrl+enter发送消息经常没效果，偶尔可以。这个时候用qq云输入法或者sougou云输入法就很不错。sougou云输入法已有firefox插件，不必要每次都点击书签中的“启动sougou云输入法”来开启。于是想写个chrome下的扩展，每个页面载入完成后开启qq云输入法(qq的比souguo的快点，不过扩展的写法一样)。</p>
<p>看了一晚上Google Chrome Extensions的文档，发现实现基本的功能还是蛮简单的。利用manifest.json中的conte&#8230;</p>]]></description>
			<content:encoded><![CDATA[<p>在linux下，我在google chrome dev下用ibus输入法，经常出现输入焦点莫名丢失，而且webqq聊天时，用enter和ctrl+enter发送消息经常没效果，偶尔可以。这个时候用qq云输入法或者sougou云输入法就很不错。sougou云输入法已有firefox插件，不必要每次都点击书签中的“启动sougou云输入法”来开启。于是想写个chrome下的扩展，每个页面载入完成后开启qq云输入法(qq的比souguo的快点，不过扩展的写法一样)。</p>
<p>看了一晚上Google Chrome Extensions的文档，发现实现基本的功能还是蛮简单的。利用manifest.json中的content_scripts，可以设置每个页面都包含的javascript。示意如下：</p>

<div class="wp_syntax"><div class="code"><pre class="javascript" style="font-family:Courier new,verdana;"><span style="color: #009900;">&#123;</span>
<span style="color: #3366CC;">&quot;name&quot;</span><span style="color: #339933;">:</span><span style="color: #3366CC;">&quot;qqCloudIMEforchrome&quot;</span><span style="color: #339933;">,</span>
<span style="color: #3366CC;">&quot;version&quot;</span><span style="color: #339933;">:</span><span style="color: #3366CC;">&quot;1.0&quot;</span><span style="color: #339933;">,</span>
<span style="color: #3366CC;">&quot;description&quot;</span><span style="color: #339933;">:</span><span style="color: #3366CC;">&quot;a chrome extension that Automatically open qq Colud IME&quot;</span><span style="color: #339933;">,</span>
<span style="color: #3366CC;">&quot;browser_action&quot;</span><span style="color: #339933;">:</span><span style="color: #009900;">&#123;</span>
	<span style="color: #3366CC;">&quot;default_icon&quot;</span><span style="color: #339933;">:</span><span style="color: #3366CC;">&quot;icon.png&quot;</span>
<span style="color: #009900;">&#125;</span><span style="color: #339933;">,</span>
<span style="color: #3366CC;">&quot;content_scripts&quot;</span><span style="color: #339933;">:</span><span style="color: #009900;">&#91;</span>
	<span style="color: #009900;">&#123;</span>
	<span style="color: #3366CC;">&quot;matches&quot;</span><span style="color: #339933;">:</span><span style="color: #009900;">&#91;</span><span style="color: #3366CC;">&quot;http://*/*&quot;</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">,</span>
	<span style="color: #3366CC;">&quot;js&quot;</span><span style="color: #339933;">:</span><span style="color: #009900;">&#91;</span><span style="color: #3366CC;">&quot;qqime.js&quot;</span><span style="color: #009900;">&#93;</span>
	<span style="color: #009900;">&#125;</span>
<span style="color: #009900;">&#93;</span>
<span style="color: #009900;">&#125;</span></pre></div></div>

<p>开启QQ的云输入法的一段js代码，也就是qqime.js的内容：</p>

<div class="wp_syntax"><div class="code"><pre class="javascript" style="font-family:Courier new,verdana;"><span style="color: #009900;">&#40;</span><span style="color: #003366; font-weight: bold;">function</span><span style="color: #009900;">&#40;</span>q<span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span> <span style="color: #339933;">!!</span> q <span style="color: #339933;">?</span> q.<span style="color: #660066;">toggle</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span> <span style="color: #339933;">:</span> <span style="color: #009900;">&#40;</span><span style="color: #003366; font-weight: bold;">function</span><span style="color: #009900;">&#40;</span>d<span style="color: #339933;">,</span> j<span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
        j <span style="color: #339933;">=</span> d.<span style="color: #660066;">createElement</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'script'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
        j.<span style="color: #660066;">src</span> <span style="color: #339933;">=</span> <span style="color: #3366CC;">'http://ime.qq.com/fcgi-bin/getjs'</span><span style="color: #339933;">;</span>
        j.<span style="color: #660066;">setAttribute</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'ime-cfg'</span><span style="color: #339933;">,</span> <span style="color: #3366CC;">'lt=2'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
        d.<span style="color: #660066;">getElementsByTagName</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'head'</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#91;</span><span style="color: #CC0000;">0</span><span style="color: #009900;">&#93;</span>.<span style="color: #660066;">appendChild</span><span style="color: #009900;">&#40;</span>j<span style="color: #009900;">&#41;</span>
    <span style="color: #009900;">&#125;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#40;</span>document<span style="color: #009900;">&#41;</span>
<span style="color: #009900;">&#125;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#40;</span>window.<span style="color: #660066;">QQWebIME</span><span style="color: #009900;">&#41;</span></pre></div></div>

<p>如图：<br />
<div id="attachment_647" class="wp-caption alignnone" style="width: 599px"><a href="http://www.boluor.com/wp-content/uploads/2010/06/doodle.png"><img class="size-full wp-image-647" title="qqCloudIME extension" src="http://www.boluor.com/wp-content/uploads/2010/06/doodle.png" alt="qqCloudIME extension" width="589" height="116" /></a><p class="wp-caption-text">qqCloudIME extension</p></div></p>
<p>想试用，可以打开google chrome的开发人员扩展模式。建个文件夹，然后将上述两个文件放置进去，再找个最大19*19像素的icon。打个包提供下载，解压后，选择用chrome打开安装即可。<a href="http://www.boluor.com/wp-content/uploads/2010/06/ChromeExtqqCloudIME.crx_.zip">ChromeExtqqCloudIME.crx</a></p>
<p>现在测试可用，在每次打开一个新页面时会自动打开qq云输入法。不过还有些问题没有解决，比如这个扩展没有提供在当前页面关闭和开启输入法的功能，待完善。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.boluor.com/%e4%ba%91%e8%be%93%e5%85%a5%e6%b3%95chrome%e6%89%a9%e5%b1%95.html/feed</wfw:commentRss>
		<slash:comments>9</slash:comments>
		</item>
		<item>
		<title>某一天是星期几 &amp;&amp; php的整除</title>
		<link>http://www.boluor.com/weekday-of-oneday-and-exact-division-in-php.html</link>
		<comments>http://www.boluor.com/weekday-of-oneday-and-exact-division-in-php.html#comments</comments>
		<pubDate>Mon, 17 May 2010 15:24:27 +0000</pubDate>
		<dc:creator>boluor</dc:creator>
				<category><![CDATA[程序设计]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[算法]]></category>

		<guid isPermaLink="false">http://www.boluor.com/?p=635</guid>
		<description><![CDATA[<p>最近在写日程管理系统，其中有个蛮有趣的问题，如何知道某一天是星期几？</p>
<p>假设日期是2010-5-17，php中用date函数可以轻松得得到。date函数的用法：<br />
string date ( string $format [, int $timestamp ] )<br />
$format为&#8221;w&#8221;时，可以获取timestamp对应的星期的数字编号，0代表Sunday,1代表Monday&#8230;6表示Saturday。date(&#8220;w&#8221;,mktime(1,1,1,5,17,2010))就可以获取2010-5-17所对应的星期了。</p>
<p>记得之前sandy推荐给我看的linux下mktime&#8230;</p>]]></description>
			<content:encoded><![CDATA[<p>最近在写日程管理系统，其中有个蛮有趣的问题，如何知道某一天是星期几？</p>
<p>假设日期是2010-5-17，php中用date函数可以轻松得得到。date函数的用法：<br />
string date ( string $format [, int $timestamp ] )<br />
$format为&#8221;w&#8221;时，可以获取timestamp对应的星期的数字编号，0代表Sunday,1代表Monday&#8230;6表示Saturday。date(&#8220;w&#8221;,mktime(1,1,1,5,17,2010))就可以获取2010-5-17所对应的星期了。</p>
<p>记得之前sandy推荐给我看的linux下mktime实现的源码分析中，提到了一个magic number，还有神奇的Gauss算法。温习时发现了很多讨论某一天是星期几的算法。其中比较著名的有基姆拉尔森计算公式和蔡勒公式。</p>
<p>&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;以下摘自百度百科&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;<br />
基姆拉尔森计算公式：<br />
W= (d+2*m+3*(m+1)/5+y+y/4-y/100+y/400) mod 7<br />
在公式中d表示日期中的日数，m表示月份数，y表示年数。在公式中有个与其他公式不同的地方：把一月和二月看成是上一年的十三月和十四月，例：如果是2004-1-10则换算成：2003-13-10来代入公式计算。结果中0表示Monday , 1 表示 Tuesday &#8230; 6表示Sunday，跟date函数的不同。</p>
<p>蔡勒公式如下：<br />
　　W = [C/4] &#8211; 2C + y + [y/4] + [13 * (M+1) / 5] + d &#8211; 1<br />
　　或者是:w=y+[y/4]+[c/4]-2c+[26(m+1)/10]+d-1<br />
　　公式中的符号含义如下：<br />
　　w：星期； w对7取模得：0-星期日，1-星期一，2-星期二，3-星期三，4-星期四，5-星期五，6-星期六<br />
　　c：世纪-1（前两位数）<br />
　　y：年（后两位数）<br />
　　m：月（m大于等于3，小于等于14，即在蔡勒公式中，某年的1、2月要看作上一年的13、14月来计算，比如2003年1月1日要看作2002年的13月1日来计算）<br />
　　d：日<br />
　　[ ]代表取整，即只要整数部分。</p>
<p>&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;以上摘自百度百科&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;</p>
<p>用php实现了下：</p>

<div class="wp_syntax"><div class="code"><pre class="php" style="font-family:Courier new,verdana;"><span style="color: #000000; font-weight: bold;">function</span> day2week<span style="color: #009900;">&#40;</span><span style="color: #000088;">$year</span><span style="color: #339933;">,</span><span style="color: #000088;">$month</span><span style="color: #339933;">,</span><span style="color: #000088;">$day</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
        <span style="color: #b1b100;">if</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$month</span> <span style="color: #339933;">&lt;=</span> <span style="color: #cc66cc;">0</span> <span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
            <span style="color: #000088;">$year</span> <span style="color: #339933;">=</span> <span style="color: #000088;">$year</span> <span style="color: #339933;">-</span> <span style="color: #cc66cc;">1</span><span style="color: #339933;">;</span>
            <span style="color: #000088;">$month</span> <span style="color: #339933;">+=</span> <span style="color: #cc66cc;">12</span> <span style="color: #339933;">;</span>
        <span style="color: #009900;">&#125;</span>
        <span style="color: #000088;">$w</span> <span style="color: #339933;">=</span> <span style="color: #009900;">&#40;</span>int<span style="color: #009900;">&#41;</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$day</span> <span style="color: #339933;">+</span> <span style="color: #cc66cc;">2</span><span style="color: #339933;">*</span><span style="color: #000088;">$month</span> <span style="color: #339933;">+</span><span style="color: #cc66cc;">3</span><span style="color: #339933;">*</span><span style="color: #009900;">&#40;</span>int<span style="color: #009900;">&#41;</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$month</span><span style="color: #339933;">+</span><span style="color: #cc66cc;">1</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">/</span><span style="color: #cc66cc;">5</span> <span style="color: #339933;">+</span> <span style="color: #000088;">$year</span> <span style="color: #339933;">+</span> <span style="color: #009900;">&#40;</span>int<span style="color: #009900;">&#41;</span><span style="color: #000088;">$year</span><span style="color: #339933;">/</span><span style="color: #cc66cc;">4</span> <span style="color: #339933;">-</span>
 <span style="color: #000088;">$year</span><span style="color: #339933;">/</span><span style="color: #cc66cc;">100</span> <span style="color: #339933;">+</span> <span style="color: #000088;">$year</span><span style="color: #339933;">/</span><span style="color: #cc66cc;">400</span><span style="color: #009900;">&#41;</span> <span style="color: #339933;">%</span>  <span style="color: #cc66cc;">7</span><span style="color: #339933;">;</span>
&nbsp;
        <span style="color: #b1b100;">return</span> <span style="color: #000088;">$w</span><span style="color: #339933;">;</span>
    <span style="color: #009900;">&#125;</span></pre></div></div>

<p>但测试时发现结果不对头。跟sandy讨论了会儿，发现用C语言实现的程序运行结果是正确的，才想到是php的整除的问题，php的动态类型的机制，“/”之类的结果是浮点类型的。要想得到和C语言一样的整除的效果，就要配合floor和ceil两个取整函数了。C中取整都是向0靠拢，也就是说如果结果是负数，就取大于等于结果的最小整数；结果是正数，就取小于等于结果的最大整数。一个php中的类似实现：</p>

<div class="wp_syntax"><div class="code"><pre class="php" style="font-family:Courier new,verdana;"><span style="color: #000000; font-weight: bold;">&lt;?php</span>
    <span style="color: #000000; font-weight: bold;">function</span> rst2int<span style="color: #009900;">&#40;</span><span style="color: #000088;">$a</span> <span style="color: #339933;">,</span><span style="color: #000088;">$b</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
        <span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span><span style="color: #000088;">$b</span> <span style="color: #339933;">&lt;</span> <span style="color:#800080;">1e-9</span><span style="color: #009900;">&#41;</span> <span style="color: #b1b100;">return</span> <span style="color: #0000ff;">&quot;error&quot;</span><span style="color: #339933;">;</span>
&nbsp;
        <span style="color: #000088;">$rst</span> <span style="color: #339933;">=</span> <span style="color: #000088;">$a</span><span style="color: #339933;">/</span><span style="color: #000088;">$b</span> <span style="color: #339933;">;</span>
&nbsp;
        <span style="color: #b1b100;">return</span> <span style="color: #000088;">$rst</span> <span style="color: #339933;">&gt;</span> <span style="color: #cc66cc;">0</span> ? <span style="color: #990000;">floor</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$rst</span><span style="color: #009900;">&#41;</span> <span style="color: #339933;">:</span> <span style="color: #990000;">ceil</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$rst</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
    <span style="color: #009900;">&#125;</span>
    <span style="color: #b1b100;">echo</span> rst2int<span style="color: #009900;">&#40;</span><span style="color: #339933;">-</span><span style="color: #cc66cc;">3</span><span style="color: #339933;">,</span><span style="color: #cc66cc;">4</span><span style="color: #009900;">&#41;</span> <span style="color: #339933;">.</span> <span style="color: #0000ff;">&quot;<span style="color: #000099; font-weight: bold;">\n</span>&quot;</span><span style="color: #339933;">;</span>
    <span style="color: #b1b100;">echo</span> rst2int<span style="color: #009900;">&#40;</span><span style="color: #339933;">-</span><span style="color: #cc66cc;">3</span><span style="color: #339933;">,</span><span style="color: #cc66cc;">0</span><span style="color: #009900;">&#41;</span> <span style="color: #339933;">.</span> <span style="color: #0000ff;">&quot;<span style="color: #000099; font-weight: bold;">\n</span>&quot;</span><span style="color: #339933;">;</span>
    <span style="color: #b1b100;">echo</span> rst2int<span style="color: #009900;">&#40;</span><span style="color: #cc66cc;">3</span><span style="color: #339933;">,</span><span style="color: #cc66cc;">4</span><span style="color: #009900;">&#41;</span> <span style="color: #339933;">.</span> <span style="color: #0000ff;">&quot;<span style="color: #000099; font-weight: bold;">\n</span>&quot;</span><span style="color: #339933;">;</span>
<span style="color: #000000; font-weight: bold;">?&gt;</span></pre></div></div>

<p>写脚本的时候还是要特别注意才好啊~</p>
]]></content:encoded>
			<wfw:commentRss>http://www.boluor.com/weekday-of-oneday-and-exact-division-in-php.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>windows下利用CDO发送邮件</title>
		<link>http://www.boluor.com/vbscript-to-send-email-using-cdo-under-windows.html</link>
		<comments>http://www.boluor.com/vbscript-to-send-email-using-cdo-under-windows.html#comments</comments>
		<pubDate>Fri, 14 May 2010 10:02:21 +0000</pubDate>
		<dc:creator>boluor</dc:creator>
				<category><![CDATA[程序设计]]></category>
		<category><![CDATA[VBS]]></category>
		<category><![CDATA[Windows]]></category>

		<guid isPermaLink="false">http://www.boluor.com/?p=634</guid>
		<description><![CDATA[<p>前几天同学丢了本子后，毕业论文一个字不剩。要是临到答辩前我也遭遇这么一出可就傻眼了，所以想每天备份下毕业论文。备份的最好的地方就是发到邮箱了，空间大而且方便，不过每次都手动发送邮件是件挺麻烦的事情，搜了下发现用CDO蛮方便的，而且是内建在windows内核中的，不用安装七七八八的组件。</p>
<p>下面的代码实现了一键备份，将当前的系统时间当作Subject的一部分，方便区别。(VBS实现)</p>

<div class="wp_syntax"><div class="code"><pre class="vb" style="font-family:Courier new,verdana;">NameSpace = <span style="color: #800000;">&#34;http://schemas.microsoft.com/cdo/configuration/&#34;</span>
<span style="color: #000080;">Set</span> Email = CreateObject(<span style="color: #800000;">&#34;CDO.Message&#038;q</span></pre></div></div><p>&#8230;</p>]]></description>
			<content:encoded><![CDATA[<p>前几天同学丢了本子后，毕业论文一个字不剩。要是临到答辩前我也遭遇这么一出可就傻眼了，所以想每天备份下毕业论文。备份的最好的地方就是发到邮箱了，空间大而且方便，不过每次都手动发送邮件是件挺麻烦的事情，搜了下发现用CDO蛮方便的，而且是内建在windows内核中的，不用安装七七八八的组件。</p>
<p>下面的代码实现了一键备份，将当前的系统时间当作Subject的一部分，方便区别。(VBS实现)</p>

<div class="wp_syntax"><div class="code"><pre class="vb" style="font-family:Courier new,verdana;">NameSpace = <span style="color: #800000;">&quot;http://schemas.microsoft.com/cdo/configuration/&quot;</span>
<span style="color: #000080;">Set</span> Email = CreateObject(<span style="color: #800000;">&quot;CDO.Message&quot;</span>)
Email.From = <span style="color: #800000;">&quot;aaa@sina.com&quot;</span>
Email.<span style="color: #000080;">To</span> = <span style="color: #800000;">&quot;bbb@gmail.com&quot;</span>
Email.Subject = <span style="color: #800000;">&quot;毕业论文备份 &quot;</span> + <span style="color: #000080;">cstr</span>(now())
Email.Textbody = <span style="color: #800000;">&quot;OK!&quot;</span>
Email.AddAttachment <span style="color: #800000;">&quot;E:\毕设文档\毕业论文.docx&quot;</span>
<span style="color: #000080;">With</span> Email.Configuration.Fields
.Item(NameSpace&amp;<span style="color: #800000;">&quot;sendusing&quot;</span>) = 2
.Item(NameSpace&amp;<span style="color: #800000;">&quot;smtpserver&quot;</span>) = <span style="color: #800000;">&quot;smtp.sina.com&quot;</span> 
.Item(NameSpace&amp;<span style="color: #800000;">&quot;smtpserverport&quot;</span>) = 25
.Item(NameSpace&amp;<span style="color: #800000;">&quot;smtpauthenticate&quot;</span>) = 1
.Item(NameSpace&amp;<span style="color: #800000;">&quot;sendusername&quot;</span>) = <span style="color: #800000;">&quot;aaa@sina.com&quot;</span>
.Item(NameSpace&amp;<span style="color: #800000;">&quot;sendpassword&quot;</span>) = <span style="color: #800000;">&quot;yourpasswd&quot;</span>
.Update
<span style="color: #000080;">End</span> <span style="color: #000080;">With</span>
Email.Send</pre></div></div>

<p>以上参考：<br />
<a href="http://www.paulsadowski.com/wsh/cdo.htm">VBScript To Send Email Using CDO</a><br />
<a href="http://hi.baidu.com/tbxwz/blog/item/f7daff1637509b57f2de3216.html">一个用Windows脚本发邮件的例子</a><br />
CDO相关参考见：<br />
<a href="http://www.teamits.com/internet/support/nt/cdo.html">CDO (Collaboration Data Objects)</a><br />
MSDN中也有相关的介绍。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.boluor.com/vbscript-to-send-email-using-cdo-under-windows.html/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>BadApple CMD半完美版。。</title>
		<link>http://www.boluor.com/badapple-cmd-semi-perfect-version.html</link>
		<comments>http://www.boluor.com/badapple-cmd-semi-perfect-version.html#comments</comments>
		<pubDate>Mon, 22 Feb 2010 12:56:17 +0000</pubDate>
		<dc:creator>Sandy</dc:creator>
				<category><![CDATA[程序设计]]></category>

		<guid isPermaLink="false">http://www.boluor.com/?p=586</guid>
		<description><![CDATA[<p>又借boluor地方丢东西了，给boluor填添麻烦了~~</p>
<p>在网上看到BadApple的若干个CMD控制台版本，感觉都不是很完美，同步有问题，还闪屏，而且有些体积巨大。。于是自己抽空重头写了一个，感觉效果还可以，解决了30FPS同步和闪屏的问题，在此丢出来献丑与大家同乐~~</p>
<p>之所以说半完美版，是因为还没有应用之前确定的即时压缩算法也没有添加背景音乐（太偷懒了，以后抽空做吧）</p>
<p>GCC编译的，没开优化貌似exe体积比较大，用VC Release编译只有50k左右。。</p>
<p>附件：<br />
（WP不会上传，Boluor能否帮忙整上来？）<br />
<br />
下载：<a href='http://www.boluor.com/wp-content/uploads/2010/02/BadApple_Release.zip'>BadApple_Release</a><br />
(这个是VC的Release编译版，500多k，谢谢&#8230;</p>]]></description>
			<content:encoded><![CDATA[<p>又借boluor地方丢东西了，给boluor填添麻烦了~~</p>
<p>在网上看到BadApple的若干个CMD控制台版本，感觉都不是很完美，同步有问题，还闪屏，而且有些体积巨大。。于是自己抽空重头写了一个，感觉效果还可以，解决了30FPS同步和闪屏的问题，在此丢出来献丑与大家同乐~~</p>
<p>之所以说半完美版，是因为还没有应用之前确定的即时压缩算法也没有添加背景音乐（太偷懒了，以后抽空做吧）</p>
<p>GCC编译的，没开优化貌似exe体积比较大，用VC Release编译只有50k左右。。</p>
<p>附件：<br />
（WP不会上传，Boluor能否帮忙整上来？）<br />
<附件来啦~~><br />
下载：<a href='http://www.boluor.com/wp-content/uploads/2010/02/BadApple_Release.zip'>BadApple_Release</a><br />
(这个是VC的Release编译版，500多k，谢谢boluor帮忙上传~~)</p>
<p>有图有真相：</p>
<p><a href="http://www.boluor.com/badapple-cmd-semi-perfect-version.html/ba3-2" rel="attachment wp-att-591"><img src="http://www.boluor.com/wp-content/uploads/2010/02/ba31.gif" alt="BadApple截图" title="ba3" width="409" height="324" class="size-full wp-image-591" /></a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.boluor.com/badapple-cmd-semi-perfect-version.html/feed</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>小说const</title>
		<link>http://www.boluor.com/say-about-const.html</link>
		<comments>http://www.boluor.com/say-about-const.html#comments</comments>
		<pubDate>Fri, 04 Dec 2009 16:05:17 +0000</pubDate>
		<dc:creator>boluor</dc:creator>
				<category><![CDATA[程序设计]]></category>
		<category><![CDATA[C]]></category>
		<category><![CDATA[C＋＋]]></category>

		<guid isPermaLink="false">http://www.boluor.com/?p=469</guid>
		<description><![CDATA[<p>	const用法比较复杂，小结下我常见的用法。</p>
<ol>
<li>限定类型修饰符。
<ol>
<li>int  const a = 1;	//int型常量。需要在定义时就初始化。</li>
<p> 　　
<li>int const arr[] = {1 ,2 , 3};	//数组中每一个元素都是常量。但是注意，不能把1中的a和arr[1]当作一样的。比如说可以紧接着这样定义：<br />
int testArr[a];	//正确<br />
int testArr[arr[1]];	//错误<br />
原因：const用于集合时，编译器不会把这个集合放到其符号表中，那么需要为其分配内存。但是虽然为其分配内存，其值却不能在编译阶段使用。</li>
</p><p> 　　
<li>int const *p;	//p是一个指向int型常量的指针。这里的p指针没必要在定义的时候就初始化。不过</li></p></ol></li></ol><p>&#8230;</p>]]></description>
			<content:encoded><![CDATA[<p>	const用法比较复杂，小结下我常见的用法。</p>
<ol>
<li>限定类型修饰符。
<ol>
<li>int  const a = 1;	//int型常量。需要在定义时就初始化。</li>
<p> 　　
<li>int const arr[] = {1 ,2 , 3};	//数组中每一个元素都是常量。但是注意，不能把1中的a和arr[1]当作一样的。比如说可以紧接着这样定义：<br />
int testArr[a];	//正确<br />
int testArr[arr[1]];	//错误<br />
原因：const用于集合时，编译器不会把这个集合放到其符号表中，那么需要为其分配内存。但是虽然为其分配内存，其值却不能在编译阶段使用。</li>
<p> 　　
<li>int const *p;	//p是一个指向int型常量的指针。这里的p指针没必要在定义的时候就初始化。不过*p是只读的，就是说不能通过*p来修改其所指向地址的值，但是可以通过其他指针修改。</li>
<p> 　　
<li>int  * const p;	// p是一个指针常量，指向int型变量。p本身不能改变。不过*p是可读可写的。</li>
<p> 　　
<li>自然，综合上面两个，就有了int const * const p; //意义不言自明了吧？</li>
<p> 　　
<li>class A; const A a; 简单的用法，跟上面是一样的。不过牵扯到类，就变得复杂了，有些我也搞不明白。</li>
</ol>
</li>
<li>转换规则<br />
　　描述起来费劲，不如看例子。<br />
　　const int *pa;<br />
　　int * pb;<br />
　　pb = pa;	//错误，不能直接将指向常量的指针转换为指向非常量的指针。<br />
　　pa = pb;	//正确。<br />
　　pb = (int *) pa;	//可以强制转换。不过转换后就失去了原有的保护机制。这时就可以通过pb修改pa所指向地址的值。
</li>
<p>　</p>
<li>作为函数参数
<ol>
 　　
<li>const修饰函数参数，就是希望函数不修改这个参数的值。对于值传递来说，没必要用const，因为函数即使修改了也是修改的副本，对实参没影响。但是这种拷贝毕竟费时耗内存，所以有了引用。此时又不希望引用被修改，所以可以加上const限定。比如：<br />
void fun( int const &#038; );</li>
<p> 　　
<li>但是记住，const仅仅只能希望程序不修改参数的值或者参数指向的地址的值，但不能杜绝它那么作。加入const可以让编译器在编译阶段就能检查出不希望的修改行为。但如果你强制修改或通过其他方式，照样是可以达到目的的。比如：<br />
void fun( int const *a){<br />
int *tmp = (int *)a;<br />
*tmp = *tmp +1;<br />
}
</li>
</ol>
</li>
<p>　</p>
<li>限定函数<br />
　　主要是限定类的成员函数。如果不希望一个成员函数修改任何一个类的成员数据，比如说这个函数只是打印信息。就可以像下面这样限定：<br />
class A{<br />
	void fun(&#8230;) const;	//不要把const写到最前面了，那意义可就变了。<br />
}<br />
　　但是，如果某个成员有mutable修饰，那上面的const就不对它保护了，程序可以随便修改。
</li>
<p>　</p>
<li>
修饰函数返回值<br />
　　如果像这样：const int fun( );使用，我觉得没有什么意义。因为，系统会将返回值复制到函数外部的临时存储单元中。如果是：const char * fun( ); 那么只能用const char *型变量来保存。const char * rtv = fun( ); </li>
<p>　</p>
<li>
多文件中共享const常量<br />
　　在C中定义时，如果是： int Max = 100 ; 默认的linkage就是extern，此时在其他文件中通过声明extern int Max ; 就可以使用Max 了。有时候需要在多个源文件中共享某个常量，此时注意了。在C++中，const定义默认具有 internal linkage，如果你定义int const Max = 100 ; 希望其他文件通过声明： extern int const Max ;来使用Max，那就会编译错误，提示找不到Max。此时需要显示的声明为Max为extern，即extern int const Max = 100 ;
</li>
<p>　</p>
<li>const其他<br />
　　const比#define要好得多的多。#define是在预处理时展开，定义的符号在编译完成之后，就不存在了，原来的地方全部成了立即数。const定义的常量在运行期间也是存在的，在编译阶段有可能加入符号表，方便查询，所以编译速度也不是大问题。由上也可推出，const会在某些场合比define少些内存分配。比如说：const str[] = “hello”; 如果程序中用到了多次str，那么str只需要一次内存分配，之后使用只要给出地址就行。而define：#define str “hello”; 将多次出现的地方全部替换成了立即数，那么每次使用时都需要为之分配内存，也就是说内存中会存在str的多个拷贝。
</li>
</ol>
<p>&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;</p>
<p>　　上面的代码可能有让你不舒服的地方，尤其 int const * p ; 而不是写作 const int *p ; 在说明我为什么这么写（下一篇文章）之前，问个问题，如果你能很清晰地回答正确，就没必要继续看了。<br />
　　参考：Dan Saks写的《const T vs T const》。<br />
　　［问题］<br />
		typedef void *VP;<br />
		const VP vectorTable[] = { … <data>&#8230;};<br />
		跟下面的是不是等价的？<br />
		const void *vectorTable[] = { &#8230;<data>&#8230; };</p>
]]></content:encoded>
			<wfw:commentRss>http://www.boluor.com/say-about-const.html/feed</wfw:commentRss>
		<slash:comments>16</slash:comments>
		</item>
		<item>
		<title>2009笔试+面试总结(一)</title>
		<link>http://www.boluor.com/2009-the-first-summary-of-writtens-and-interviews.html</link>
		<comments>http://www.boluor.com/2009-the-first-summary-of-writtens-and-interviews.html#comments</comments>
		<pubDate>Tue, 03 Nov 2009 15:31:32 +0000</pubDate>
		<dc:creator>boluor</dc:creator>
				<category><![CDATA[程序设计]]></category>
		<category><![CDATA[C]]></category>
		<category><![CDATA[C＋＋]]></category>
		<category><![CDATA[算法]]></category>

		<guid isPermaLink="false">http://www.boluor.com/?p=418</guid>
		<description><![CDATA[<p>　　十月份到现在参加了4个公司的笔试和面试，后天打算把三方协议签了，找工作就暂时尘埃落定了。开始专心复习之前，把笔试和面试中遇到的一些问题拿出来总结下。所列题目大致按照出题思想，非原题目。<br />
　　我面试的这4家IT公司，对于三点都非常重视。一个是基础知识，一个是运用知识，思考的能力，一个组织表达能力。按这三种分类记录下笔试和面试题目。</p>
<p><strong>［基础知识］</strong><br />
　　考察基础知识，在笔试题目最常见，占比例也最大。</p>
<ol>
<li>有n个节点的二叉树，其中有m个节点有两个孩子，问这棵树有多少颗叶子节点。
<blockquote><p>这题目其实是数据结构上的原题，不要被n迷惑了。</p></blockquote>
</li>
<p><span id="more-418"></span>
<li>问这段代码输出什么？考察C++基础。</li></p>

<div class="wp_syntax"><div class="code"><pre class="cpp" style="font-family:Courier new,verdana;"><span style="color: #0000ff;">class</span> A<span style="color: #008000;">&#123;</span> 
<span style="color: #0000ff;">public</span><span style="color: #008080;">:</span> 
<span style="color: #0000ff;">int</span> x<span style="color: #008000;">&#4</span></pre></div></div></ol><p>&#8230;</p>]]></description>
			<content:encoded><![CDATA[<p>　　十月份到现在参加了4个公司的笔试和面试，后天打算把三方协议签了，找工作就暂时尘埃落定了。开始专心复习之前，把笔试和面试中遇到的一些问题拿出来总结下。所列题目大致按照出题思想，非原题目。<br />
　　我面试的这4家IT公司，对于三点都非常重视。一个是基础知识，一个是运用知识，思考的能力，一个组织表达能力。按这三种分类记录下笔试和面试题目。</p>
<p><strong>［基础知识］</strong><br />
　　考察基础知识，在笔试题目最常见，占比例也最大。</p>
<ol>
<li>有n个节点的二叉树，其中有m个节点有两个孩子，问这棵树有多少颗叶子节点。</p>
<blockquote><p>这题目其实是数据结构上的原题，不要被n迷惑了。</p></blockquote>
</li>
<p><span id="more-418"></span>
<li>问这段代码输出什么？考察C++基础。</p>

<div class="wp_syntax"><div class="code"><pre class="cpp" style="font-family:Courier new,verdana;"><span style="color: #0000ff;">class</span> A<span style="color: #008000;">&#123;</span> 
<span style="color: #0000ff;">public</span><span style="color: #008080;">:</span> 
<span style="color: #0000ff;">int</span> x<span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span><span style="color: #008000;">&#123;</span><span style="color: #0000ff;">return</span> <span style="color: #0000dd;">2</span><span style="color: #008080;">;</span><span style="color: #008000;">&#125;</span> 
<span style="color: #008000;">&#125;</span><span style="color: #008080;">;</span> 
<span style="color: #0000ff;">class</span> B <span style="color: #008080;">:</span> <span style="color: #0000ff;">public</span> A<span style="color: #008000;">&#123;</span> 
<span style="color: #0000ff;">public</span><span style="color: #008080;">:</span> 
<span style="color: #0000ff;">int</span> x<span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span><span style="color: #008000;">&#123;</span><span style="color: #0000ff;">return</span> <span style="color: #0000dd;">3</span><span style="color: #008080;">;</span><span style="color: #008000;">&#125;</span> 
<span style="color: #008000;">&#125;</span><span style="color: #008080;">;</span> 
&nbsp;
<span style="color: #0000ff;">int</span> main<span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span><span style="color: #008000;">&#123;</span> 
A <span style="color: #000040;">*</span>a <span style="color: #000080;">=</span> <span style="color: #0000dd;">new</span> A<span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span> 
A <span style="color: #000040;">*</span>b <span style="color: #000080;">=</span> <span style="color: #0000dd;">new</span> B<span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span> 
<span style="color: #0000dd;">cout</span> <span style="color: #000080;">&lt;&lt;</span> a<span style="color: #000040;">-</span><span style="color: #000080;">&gt;</span>x<span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span> <span style="color: #000080;">&lt;&lt;</span> b<span style="color: #000040;">-</span><span style="color: #000080;">&gt;</span>x<span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span> <span style="color: #000080;">&lt;&lt;</span>endl<span style="color: #008080;">;</span> 
<span style="color: #0000ff;">return</span> <span style="color: #0000dd;">0</span><span style="color: #008080;">;</span> 
<span style="color: #008000;">&#125;</span></pre></div></div>

<p>　　<br />
<blockquote>类A中的函数x并非虚函数，所以不会发生动态绑定。</p></blockquote>
</li>
<li>
　　下列哪个表达式是错误的?<br />
　　int a = 10;<br />
　　1. (a++) += a;<br />
　　2. (++a) += (a++);<br />
　　<br />
<blockquote>a++其实是分三个步骤的：{tmp=a;++a;return tmp;}所以a++不能作为左值。</p></blockquote>
</li>
<li>
　　问下面的程序需要几次才能跳出循环?</p>

<div class="wp_syntax"><div class="code"><pre class="c" style="font-family:Courier new,verdana;">　　<span style="color: #993333;">unsigned</span> <span style="color: #993333;">int</span> a <span style="color: #339933;">=</span><span style="color: #0000dd;">5</span><span style="color: #339933;">;</span>
　　<span style="color: #993333;">int</span> b <span style="color: #339933;">=</span> <span style="color: #0000dd;">2</span><span style="color: #339933;">;</span>
　　<span style="color: #b1b100;">while</span> <span style="color: #009900;">&#40;</span> a<span style="color: #339933;">+</span>b <span style="color: #339933;">&gt;=</span> <span style="color: #0000dd;">0</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
   　　　b<span style="color: #339933;">--;</span>
　　<span style="color: #009900;">&#125;</span></pre></div></div>

<p>　　<br />
<blockquote>C++中有符号和无符号类型之间的转换，要遵循一个原则：所定义的转换规则需要保护操作数的精度。比如long和unsigned int类型，只要机器上的long型足够表示unsigned int型的所有值，就将unsigned int转换为long型，否则，将两个操作数都转换为unsigned long。而对于包含signed 和 unsigned int型的表达式，其转换则是将signed型数值转换为unsigned型。如果此时将int转换为unsigned int，而int型数值恰好为负数，那这带来了副作用。此题就是一个例子。</p></blockquote>
</li>
<li>
　　union{<br />
　　int i;<br />
　　char x[2];<br />
　　}a;</p>
<p>　　a.x[0] = 8;<br />
　　a.x[1] = 1;<br />
　　问 a.i为多少?<br />
　　<br />
<blockquote>首先要了解的是，数据在内存中的存储方式。比如一个int型数，4个字节，表示为ABCD，在内存其实是DCBA保存的。那么看这题，内存中保存的是：00001000 00000001 00000000 00000000.根据上面的规则，那么用int来读取这段数据，即为00000000 00000000 00000001 00001000，即264.</p></blockquote>
</li>
<li>
　　map,set,hashmap和multimap,有个与其他三个数据结构不同的是哪一个?<br />
　　<br />
<blockquote>hashmap，采用和其他三种都不同的方式。</p></blockquote>
</li>
<li>
　　如果一个数列中的元素距离他们各自最终的位置都很近，那么哪一种算法最省时间？（直接插入，堆排序，快速排序，选择排序）<br />
　　<br />
<blockquote>我感觉是直接插入排序，当然还需要测试。</p></blockquote>
</li>
<li>
　　const char *和char * const 的区别。<br />
　　　<br />
<blockquote>const char *p;结合的方式是自右向左。所以p首先是个指针，然后个char型指针，然后他指向的是个const,此时，p本身的值可以改变的，但是不能通过p来修改p所指向区域A的值，但A可以通过其他指针修改。同理，char * const p，p首先是个const对象，之后才是指向char型的指针，此时p本身是不能修改的。</p></blockquote>
</li>
<li>
　　问下面的结果？<br />
　　char a = 50;<br />
　　int i = sizeof( a = (a+205));<br />
　　问 i 和 a各为多少?<br />
　　<br />
<blockquote>i为1大家都可以看出来，但a为多少相信就不是那么容易答对了。答-1的算好的，说255的就可以回去看计组了。sizeof(A)是个大难点，尤其是A如果是struct类型的时候。此题中，sizeof(A)的值其实是在编译阶段就已经确定了，所以根本没有运行a = a+205 这一步。在编译完成后，这句就相当于int i = 1;</p></blockquote>
</li>
<li>
　　计算机网络单播，组播，广播的区别。路由器和交换机的作用和原理。ARP协议的内容，以及其他相关的PPPOE协议的知识。
</li>
<li>
　　修改错误的代码：快排和堆排序。这完全的基本功了，为了面试，多练习在纸上写程序吧。
	</li>
</ol>
<p>　　类似的题目还有很多。这些题目如果不能拿分的话，给面试官的印象会很不好。这几次面试的时候，面试官手里一般都是我的笔试试卷 + 面试评分单。面试官都会拿我的基础题目说，为什么这道题目都不会？所以把握基础题目至关重要的。</p>
<p>　　计算机本身是门实践性更强的学科，所以如果平时不怎么编程，是很难发现自己的问题和未知的领域的。tencent的笔试题目考得很细很深，平时不上机code的同学可能很难会想到所考的知识点； 而遇到问题时不刨根问底或者得过且过，则会造成更大的遗憾。const char *和char * const的区别，内存的分配方式和管理方式，内存泄漏等等，平时感觉到有一丁点疑惑时，问题的背后一般藏有更多你不了解的；还有一点也很重要，像PPPOE并不是在书上，但是大家听说的就比较多了。应该及时的去了解这些前沿领域（虽然PPPOE不算前沿），保持对本专业发展方向的敏感，扩大自己的视野。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.boluor.com/2009-the-first-summary-of-writtens-and-interviews.html/feed</wfw:commentRss>
		<slash:comments>9</slash:comments>
		</item>
		<item>
		<title>基础&#8230;</title>
		<link>http://www.boluor.com/basic-notes.html</link>
		<comments>http://www.boluor.com/basic-notes.html#comments</comments>
		<pubDate>Sun, 25 Oct 2009 14:00:39 +0000</pubDate>
		<dc:creator>boluor</dc:creator>
				<category><![CDATA[程序设计]]></category>
		<category><![CDATA[C]]></category>
		<category><![CDATA[日记]]></category>

		<guid isPermaLink="false">http://www.boluor.com/?p=410</guid>
		<description><![CDATA[<p>　　某题目：问下面的程序需要几次才能跳出循环？</p>

<div class="wp_syntax"><div class="code"><pre class="c" style="font-family:Courier new,verdana;">        <span style="color: #993333;">unsigned</span> <span style="color: #993333;">int</span> a <span style="color: #339933;">=</span><span style="color: #0000dd;">1</span><span style="color: #339933;">;</span>
        <span style="color: #993333;">int</span> b <span style="color: #339933;">=</span> <span style="color: #0000dd;">0</span><span style="color: #339933;">;</span>
        <span style="color: #b1b100;">while</span> <span style="color: #009900;">&#40;</span> a<span style="color: #339933;">+</span>b <span style="color: #339933;">&#62;=</span> <span style="color: #0000dd;">0</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
            b<span style="color: #339933;">--;</span>
        <span style="color: #009900;">&#125;</span></pre></div></div>

<p>　　开始以为a会转换为int类型，这样循环只需要2次就结束了。测试程序后发现这是个死循环。今天看《The C Programming Language》，赫然发现&#8221;转换&#8221;一节中，提到了&#8221;整数提升&#8221;一词。规定：在一个表达式中，如果原始类型的所有值都可以用int类型表示，则其值将被转换为int类型，否则将被转换为unsigned int类型。</p>
<p>　　我感觉很多时候我花了大把时间来搞明白，甚至以为&#8230;</p>]]></description>
			<content:encoded><![CDATA[<p>　　某题目：问下面的程序需要几次才能跳出循环？</p>

<div class="wp_syntax"><div class="code"><pre class="c" style="font-family:Courier new,verdana;">        <span style="color: #993333;">unsigned</span> <span style="color: #993333;">int</span> a <span style="color: #339933;">=</span><span style="color: #0000dd;">1</span><span style="color: #339933;">;</span>
        <span style="color: #993333;">int</span> b <span style="color: #339933;">=</span> <span style="color: #0000dd;">0</span><span style="color: #339933;">;</span>
        <span style="color: #b1b100;">while</span> <span style="color: #009900;">&#40;</span> a<span style="color: #339933;">+</span>b <span style="color: #339933;">&gt;=</span> <span style="color: #0000dd;">0</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
            b<span style="color: #339933;">--;</span>
        <span style="color: #009900;">&#125;</span></pre></div></div>

<p>　　开始以为a会转换为int类型，这样循环只需要2次就结束了。测试程序后发现这是个死循环。今天看《The C Programming Language》，赫然发现&#8221;转换&#8221;一节中，提到了&#8221;整数提升&#8221;一词。规定：在一个表达式中，如果原始类型的所有值都可以用int类型表示，则其值将被转换为int类型，否则将被转换为unsigned int类型。</p>
<p>　　我感觉很多时候我花了大把时间来搞明白，甚至以为是很高深的问题，答案却明白的写在书上。书读百遍，其意自现，少开QQ多看书。　　</p>
<p>　　Sandy说你来试一题：不用sizeof如何知道机器是32位还是16位?<br />
<span id="more-410"></span><br />
　　想了很久后，我觉得还是从指针所占的空间入手。因为32位机器寻址，指针需要占4个字节，同理16位机器指针只需2个字节。于是想到如果给一个指针赋值在(max(16), max(32)]区间，那么16位机器应该会把高位截断，这样就可以区别开来。</p>

<div class="wp_syntax"><div class="code"><pre class="c" style="font-family:Courier new,verdana;">	<span style="color: #993333;">char</span> <span style="color: #339933;">*</span>p<span style="color: #339933;">;</span>
	p <span style="color: #339933;">=</span> <span style="color: #208080;">0x10001</span><span style="color: #339933;">;</span><span style="color: #666666; font-style: italic;">//如果为16bit，那么最高位的1将被忽略。</span>
	<span style="color: #b1b100;">if</span><span style="color: #009900;">&#40;</span>p <span style="color: #339933;">==</span> <span style="color: #0000dd;">1</span><span style="color: #009900;">&#41;</span>
		<span style="color: #000066;">printf</span><span style="color: #009900;">&#40;</span><span style="color: #ff0000;">&quot;16<span style="color: #000099; font-weight: bold;">\n</span>&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	<span style="color: #b1b100;">else</span>
		<span style="color: #000066;">printf</span><span style="color: #009900;">&#40;</span><span style="color: #ff0000;">&quot;32<span style="color: #000099; font-weight: bold;">\n</span>&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></div></div>

<p>　　但是这种方法gcc给出了警告，Sandy说有的编译器都可能报Error。他的方法是：</p>

<div class="wp_syntax"><div class="code"><pre class="c" style="font-family:Courier new,verdana;"><span style="color: #993333;">int</span> a<span style="color: #339933;">=</span><span style="color: #208080;">0xffff</span><span style="color: #339933;">;</span>
<span style="color: #b1b100;">if</span><span style="color: #009900;">&#40;</span>a<span style="color: #339933;">&lt;</span><span style="color: #0000dd;">0</span><span style="color: #009900;">&#41;</span>
<span style="color: #009900;">&#123;</span>
    <span style="color: #000066;">printf</span><span style="color: #009900;">&#40;</span><span style="color: #ff0000;">&quot;16位&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span><span style="color: #b1b100;">else</span>
<span style="color: #009900;">&#123;</span>
    <span style="color: #000066;">printf</span><span style="color: #009900;">&#40;</span><span style="color: #ff0000;">&quot;32位&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span></pre></div></div>

<p>　　中午从Church出来，和Father Wang一起去吃饭。碰到了几个他的外国朋友，他们聊得很开心，我愣在那里。突然有个过来跟我握手，然后&#8221;nice to meet you,i&#8217;m Tom&#8221;，我继续愣了下，才想起来要说什么。于是，开始把初中背熟的那几段抛出来，问候+自我介绍+天气。末了，他说&#8221;You speak English very well&#8221;，赶紧说&#8221;thank you&#8221;&#8230;这次不等他们过来了，直接过去跟他们一个个问候，结识了几个朋友。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.boluor.com/basic-notes.html/feed</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>woj1414 &#8211; URL 解题报告</title>
		<link>http://www.boluor.com/woj1414-url-solution-report.html</link>
		<comments>http://www.boluor.com/woj1414-url-solution-report.html#comments</comments>
		<pubDate>Sun, 30 Aug 2009 15:33:59 +0000</pubDate>
		<dc:creator>boluor</dc:creator>
				<category><![CDATA[程序设计]]></category>
		<category><![CDATA[C＋＋]]></category>
		<category><![CDATA[STL]]></category>
		<category><![CDATA[算法]]></category>

		<guid isPermaLink="false">http://www.boluor.com/?p=351</guid>
		<description><![CDATA[<p>　　原题目见：<a href="http://acm.whu.edu.cn/oak/problem/problem.jsp?problem_id=1414" class="broken_link">Problem 1414 &#8211; URL </a>。<br />
　　题目的背景是，我们在浏览器中输入URL时，浏览器会提示我们之前搜索过的，URL以当前字符为前缀的的网页，并且按照之前访问次数来递减显示。<br />
　　思路，每次Visit时将访问的页面作为KEY来保存，并且次数增1。每次Display时，搜索所有现存的网页，找到以当前字符串为前缀的字符串，并按次数逆序输出。<br />
　　虽然解题报告不提倡直接贴代码，不过我的代码没多少行，题目又比较简单，就给我AC的代码吧。这题的数据比较弱，我看前200多名都是0MS。代码是逼着自己用STL中的容器map写的，如果发现有什么改进的地方请告诉我。<span id="more-351"></span></p>

<div class="wp_syntax"><div class="code"><pre class="cpp" style="font-family:Courier new,verdana;"><span style="color: #339900;">#include &#60;i</span></pre></div></div><p>&#8230;</p>]]></description>
			<content:encoded><![CDATA[<p>　　原题目见：<a href="http://acm.whu.edu.cn/oak/problem/problem.jsp?problem_id=1414" class="broken_link">Problem 1414 &#8211; URL </a>。<br />
　　题目的背景是，我们在浏览器中输入URL时，浏览器会提示我们之前搜索过的，URL以当前字符为前缀的的网页，并且按照之前访问次数来递减显示。<br />
　　思路，每次Visit时将访问的页面作为KEY来保存，并且次数增1。每次Display时，搜索所有现存的网页，找到以当前字符串为前缀的字符串，并按次数逆序输出。<br />
　　虽然解题报告不提倡直接贴代码，不过我的代码没多少行，题目又比较简单，就给我AC的代码吧。这题的数据比较弱，我看前200多名都是0MS。代码是逼着自己用STL中的容器map写的，如果发现有什么改进的地方请告诉我。<span id="more-351"></span></p>

<div class="wp_syntax"><div class="code"><pre class="cpp" style="font-family:Courier new,verdana;"><span style="color: #339900;">#include &lt;iostream&gt;</span>
<span style="color: #339900;">#include &lt;map&gt;</span>
<span style="color: #339900;">#include &lt;string&gt;</span>
&nbsp;
<span style="color: #0000ff;">using</span> <span style="color: #0000ff;">namespace</span> std<span style="color: #008080;">;</span>
&nbsp;
<span style="color: #0000ff;">int</span> main<span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span>
<span style="color: #008000;">&#123;</span>
    string prompt,str<span style="color: #008080;">;</span>
    <span style="color: #0000ff;">int</span> n,m<span style="color: #008080;">;</span>
    string visit<span style="color: #008000;">&#40;</span><span style="color: #FF0000;">&quot;Visit&quot;</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
    <span style="color: #666666;">//string display(&quot;Display&quot;);</span>
    <span style="color: #0000ff;">typedef</span> map<span style="color: #000080;">&lt;</span>string , <span style="color: #0000ff;">int</span><span style="color: #000080;">&gt;</span> Urls<span style="color: #008080;">;</span>
    <span style="color: #0000ff;">typedef</span> Urls<span style="color: #008080;">::</span><span style="color: #007788;">const_iterator</span> UrlsIter<span style="color: #008080;">;</span>
&nbsp;
    <span style="color: #0000ff;">typedef</span> multimap<span style="color: #000080;">&lt;</span><span style="color: #0000ff;">int</span> ,string , greater<span style="color: #000080;">&lt;</span><span style="color: #0000ff;">int</span><span style="color: #000080;">&gt;</span> <span style="color: #000080;">&gt;</span> Urlrank<span style="color: #008080;">;</span>
    <span style="color: #0000ff;">typedef</span> Urlrank<span style="color: #008080;">::</span><span style="color: #007788;">const_iterator</span> RankIter<span style="color: #008080;">;</span>
&nbsp;
    Urls url<span style="color: #008080;">;</span>
    Urlrank urlrank<span style="color: #008080;">;</span>
&nbsp;
    <span style="color: #0000dd;">cin</span><span style="color: #000080;">&gt;&gt;</span>n<span style="color: #008080;">;</span>
&nbsp;
    <span style="color: #0000ff;">while</span><span style="color: #008000;">&#40;</span> n<span style="color: #000040;">--</span> <span style="color: #008000;">&#41;</span><span style="color: #008000;">&#123;</span>
        <span style="color: #0000dd;">cin</span><span style="color: #000080;">&gt;&gt;</span>m<span style="color: #008080;">;</span>
&nbsp;
        url.<span style="color: #007788;">clear</span><span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
        urlrank.<span style="color: #007788;">clear</span><span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
&nbsp;
        <span style="color: #0000ff;">while</span><span style="color: #008000;">&#40;</span> m<span style="color: #000040;">--</span><span style="color: #008000;">&#41;</span><span style="color: #008000;">&#123;</span>
            <span style="color: #0000dd;">cin</span> <span style="color: #000080;">&gt;&gt;</span> prompt <span style="color: #000080;">&gt;&gt;</span> str<span style="color: #008080;">;</span>
&nbsp;
            <span style="color: #0000ff;">if</span> <span style="color: #008000;">&#40;</span> visit.<span style="color: #007788;">compare</span><span style="color: #008000;">&#40;</span>prompt<span style="color: #008000;">&#41;</span><span style="color: #000080;">==</span><span style="color: #0000dd;">0</span><span style="color: #008000;">&#41;</span><span style="color: #008000;">&#123;</span>
                url<span style="color: #008000;">&#91;</span>str<span style="color: #008000;">&#93;</span><span style="color: #000040;">++</span><span style="color: #008080;">;</span>
            <span style="color: #008000;">&#125;</span><span style="color: #0000ff;">else</span><span style="color: #008000;">&#123;</span>
                <span style="color: #0000ff;">for</span><span style="color: #008000;">&#40;</span>UrlsIter iter <span style="color: #000080;">=</span> url.<span style="color: #007788;">begin</span><span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span> iter <span style="color: #000040;">!</span><span style="color: #000080;">=</span> url.<span style="color: #007788;">end</span><span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span> iter<span style="color: #000040;">++</span> <span style="color: #008000;">&#41;</span><span style="color: #008000;">&#123;</span>
                    string tmp<span style="color: #008000;">&#40;</span>iter<span style="color: #000040;">-</span><span style="color: #000080;">&gt;</span>first<span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
                    <span style="color: #0000ff;">if</span> <span style="color: #008000;">&#40;</span> tmp.<span style="color: #007788;">find</span><span style="color: #008000;">&#40;</span>str<span style="color: #008000;">&#41;</span> <span style="color: #000080;">==</span> <span style="color: #0000dd;">0</span> <span style="color: #008000;">&#41;</span><span style="color: #008000;">&#123;</span>
                        urlrank.<span style="color: #007788;">insert</span><span style="color: #008000;">&#40;</span> make_pair<span style="color: #008000;">&#40;</span> iter<span style="color: #000040;">-</span><span style="color: #000080;">&gt;</span>second,iter<span style="color: #000040;">-</span><span style="color: #000080;">&gt;</span>first <span style="color: #008000;">&#41;</span> <span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
                    <span style="color: #008000;">&#125;</span>
                <span style="color: #008000;">&#125;</span>
&nbsp;
                <span style="color: #0000ff;">for</span><span style="color: #008000;">&#40;</span> RankIter iter <span style="color: #000080;">=</span> urlrank.<span style="color: #007788;">begin</span><span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span> iter <span style="color: #000040;">!</span><span style="color: #000080;">=</span> urlrank.<span style="color: #007788;">end</span><span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span> iter<span style="color: #000040;">++</span><span style="color: #008000;">&#41;</span>
                    <span style="color: #0000dd;">cout</span> <span style="color: #000080;">&lt;&lt;</span> iter<span style="color: #000040;">-</span><span style="color: #000080;">&gt;</span>second <span style="color: #000080;">&lt;&lt;</span>endl<span style="color: #008080;">;</span>
&nbsp;
                <span style="color: #0000dd;">cout</span> <span style="color: #000080;">&lt;&lt;</span>endl<span style="color: #008080;">;</span>
                urlrank.<span style="color: #007788;">clear</span><span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
            <span style="color: #008000;">&#125;</span>
        <span style="color: #008000;">&#125;</span>
    <span style="color: #008000;">&#125;</span>
    <span style="color: #0000ff;">return</span> <span style="color: #0000dd;">0</span><span style="color: #008080;">;</span>
<span style="color: #008000;">&#125;</span></pre></div></div>

]]></content:encoded>
			<wfw:commentRss>http://www.boluor.com/woj1414-url-solution-report.html/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>STL笔记一</title>
		<link>http://www.boluor.com/stl-notes.html</link>
		<comments>http://www.boluor.com/stl-notes.html#comments</comments>
		<pubDate>Wed, 26 Aug 2009 15:22:43 +0000</pubDate>
		<dc:creator>boluor</dc:creator>
				<category><![CDATA[程序设计]]></category>
		<category><![CDATA[C＋＋]]></category>
		<category><![CDATA[STL]]></category>
		<category><![CDATA[算法]]></category>

		<guid isPermaLink="false">http://www.boluor.com/?p=317</guid>
		<description><![CDATA[　　【题目1】三句话实现：整数的输入，排序，输出：(by Sandy)
　　【题目2】三句话实现：单词的输入，剔除其中重复的单词，并按字母顺序输出。
　　【woj1170】<a href="http://acm.whu.edu.cn/oak/problem/problem.jsp?problem_id=1170" target="_blank">Problem 1170 - Sorting </a>　　重写了遍。]]></description>
			<content:encoded><![CDATA[<p>　　	【题目1】三句话实现：整数的输入，排序，输出：(by Sandy)</p>

<div class="wp_syntax"><div class="code"><pre class="cpp" style="font-family:Courier new,verdana;"><span style="color: #339900;">#include &lt;iostream&gt;</span>
<span style="color: #339900;">#include &lt;vector&gt;</span>
<span style="color: #339900;">#include &lt;algorithm&gt;</span>
<span style="color: #339900;">#include &lt;iterator&gt;</span>
<span style="color: #0000ff;">using</span> <span style="color: #0000ff;">namespace</span> std<span style="color: #008080;">;</span>
&nbsp;
<span style="color: #0000ff;">int</span> main<span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span>
<span style="color: #008000;">&#123;</span>
    vector<span style="color: #000080;">&lt;</span><span style="color: #0000ff;">int</span><span style="color: #000080;">&gt;</span> v1<span style="color: #008000;">&#40;</span><span style="color: #008000;">&#40;</span>istream_iterator<span style="color: #000080;">&lt;</span><span style="color: #0000ff;">int</span><span style="color: #000080;">&gt;</span><span style="color: #008000;">&#40;</span><span style="color: #0000dd;">cin</span><span style="color: #008000;">&#41;</span><span style="color: #008000;">&#41;</span>,<span style="color: #008000;">&#40;</span>istream_iterator<span style="color: #000080;">&lt;</span><span style="color: #0000ff;">int</span><span style="color: #000080;">&gt;</span><span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span><span style="color: #008000;">&#41;</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
    sort<span style="color: #008000;">&#40;</span>v1.<span style="color: #007788;">begin</span><span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span>,v1.<span style="color: #007788;">end</span><span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
    copy<span style="color: #008000;">&#40;</span>v1.<span style="color: #007788;">begin</span><span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span>,v1.<span style="color: #007788;">end</span><span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span>,ostream_iterator<span style="color: #000080;">&lt;</span><span style="color: #0000ff;">int</span><span style="color: #000080;">&gt;</span><span style="color: #008000;">&#40;</span><span style="color: #0000dd;">cout</span>,<span style="color: #FF0000;">&quot; &quot;</span><span style="color: #008000;">&#41;</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
    <span style="color: #0000ff;">return</span> <span style="color: #0000dd;">0</span><span style="color: #008080;">;</span>
<span style="color: #008000;">&#125;</span></pre></div></div>

<p>　　【题目2】三句话实现：单词的输入，剔除其中重复的单词，并按字母顺序输出。</p>

<div class="wp_syntax"><div class="code"><pre class="cpp" style="font-family:Courier new,verdana;">	vector<span style="color: #000080;">&lt;</span>string<span style="color: #000080;">&gt;</span> v1<span style="color: #008000;">&#40;</span><span style="color: #008000;">&#40;</span>istream_iterator<span style="color: #000080;">&lt;</span>string<span style="color: #000080;">&gt;</span><span style="color: #008000;">&#40;</span><span style="color: #0000dd;">cin</span><span style="color: #008000;">&#41;</span><span style="color: #008000;">&#41;</span>,<span style="color: #008000;">&#40;</span>istream_iterator<span style="color: #000080;">&lt;</span>string<span style="color: #000080;">&gt;</span><span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span><span style="color: #008000;">&#41;</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
	sort<span style="color: #008000;">&#40;</span>v1.<span style="color: #007788;">begin</span><span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span>,v1.<span style="color: #007788;">end</span><span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
	unique_copy<span style="color: #008000;">&#40;</span>v1.<span style="color: #007788;">begin</span><span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span>,v1.<span style="color: #007788;">end</span><span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span>,ostream_iterator<span style="color: #000080;">&lt;</span>string<span style="color: #000080;">&gt;</span><span style="color: #008000;">&#40;</span><span style="color: #0000dd;">cout</span>,<span style="color: #FF0000;">&quot; &quot;</span><span style="color: #008000;">&#41;</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span></pre></div></div>

<p>　　<br />
　　【woj1170】<a href="http://acm.whu.edu.cn/oak/problem/problem.jsp?problem_id=1170" target="_blank" class="broken_link">Problem 1170 &#8211; Sorting </a>　　重写了遍。</p>

<div class="wp_syntax"><div class="code"><pre class="cpp" style="font-family:Courier new,verdana;">    vector<span style="color: #000080;">&lt;</span><span style="color: #0000ff;">int</span><span style="color: #000080;">&gt;</span>  v1<span style="color: #008000;">&#40;</span><span style="color: #008000;">&#40;</span>istream_iterator<span style="color: #000080;">&lt;</span><span style="color: #0000ff;">int</span><span style="color: #000080;">&gt;</span><span style="color: #008000;">&#40;</span><span style="color: #0000dd;">cin</span><span style="color: #008000;">&#41;</span><span style="color: #008000;">&#41;</span>,<span style="color: #008000;">&#40;</span>istream_iterator<span style="color: #000080;">&lt;</span><span style="color: #0000ff;">int</span><span style="color: #000080;">&gt;</span><span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span><span style="color: #008000;">&#41;</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
    v1.<span style="color: #007788;">erase</span><span style="color: #008000;">&#40;</span>v1.<span style="color: #007788;">end</span><span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span><span style="color: #000040;">-</span><span style="color: #0000dd;">1</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
    sort<span style="color: #008000;">&#40;</span>v1.<span style="color: #007788;">begin</span><span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span>,v1.<span style="color: #007788;">end</span><span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
    unique_copy<span style="color: #008000;">&#40;</span>v1.<span style="color: #007788;">begin</span><span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span>,v1.<span style="color: #007788;">end</span><span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span>,ostream_iterator<span style="color: #000080;">&lt;</span><span style="color: #0000ff;">int</span><span style="color: #000080;">&gt;</span><span style="color: #008000;">&#40;</span><span style="color: #0000dd;">cout</span>,<span style="color: #FF0000;">&quot; &quot;</span><span style="color: #008000;">&#41;</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span></pre></div></div>

<p>　　<strike>这题目用vector的效率不高，用list快些。</strike></p>
<p>　　【总结】<br />
　　明白Sandy的意思是让我练习下STL，我说了很久要学要学，但是好久之后依然还没动，被这个被那个事情给耽搁着。前天晚上和Sandy的聊天，让我明白了，这些知识并不是要等某一天某一大段时间再去学习，而是点滴积累的。</p>
<p>　　以上的两道题目牵涉到的有：(这几天总结下)<br />
　　
<ul>
<li>输入流迭代器</li>
<p>　　
<li>sort</li>
<p>　　
<li>vector，list，deque</li>
<p>　　
<li>unique_copy 和 copy</li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://www.boluor.com/stl-notes.html/feed</wfw:commentRss>
		<slash:comments>10</slash:comments>
		</item>
		<item>
		<title>批量修改文章中的标签</title>
		<link>http://www.boluor.com/update-tags-of-posts-in-batch.html</link>
		<comments>http://www.boluor.com/update-tags-of-posts-in-batch.html#comments</comments>
		<pubDate>Sat, 22 Aug 2009 20:19:56 +0000</pubDate>
		<dc:creator>boluor</dc:creator>
				<category><![CDATA[程序设计]]></category>
		<category><![CDATA[mysql]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[Web]]></category>
		<category><![CDATA[正则表达式]]></category>

		<guid isPermaLink="false">http://www.boluor.com/?p=299</guid>
		<description><![CDATA[<p>　　实在受不了syntax highlighter的速度，所以暂时去找了个wp-syntax高亮插件来代替。问题来了，我之前使用时标签都是类似：［c］［/c］，［php］［/php］的，当时偷懒不想写完整的标签。但是wp-syntax只支持类似&#60;pre lang=&#8221;language&#8221; line=&#8221;1&#8243;&#62;&#60;/pre&#62;之类的标签。只好想法去修改了，但是手工修改的工作量太大，于是继续想懒办法。<br />
　　解决的方法肯定是正则表达式了。所以用php写了个，数据库就按照wp的结构来。下面是代码：<br />
<span id="more-299"></span></p>

<div class="wp_syntax"><div class="code"><pre class="php" style="font-family:Courier new,verdana;"><span style="color: #000000; font-weight: bold;">&#60;?php</span>
	<span style="color: #990000;">mysql_connect</span><span style="color: #009900;">&#40;</span></pre></div></div><p>&#8230;</p>]]></description>
			<content:encoded><![CDATA[<p>　　实在受不了syntax highlighter的速度，所以暂时去找了个wp-syntax高亮插件来代替。问题来了，我之前使用时标签都是类似：［c］［/c］，［php］［/php］的，当时偷懒不想写完整的标签。但是wp-syntax只支持类似&lt;pre lang=&#8221;language&#8221; line=&#8221;1&#8243;&gt;&lt;/pre&gt;之类的标签。只好想法去修改了，但是手工修改的工作量太大，于是继续想懒办法。<br />
　　解决的方法肯定是正则表达式了。所以用php写了个，数据库就按照wp的结构来。下面是代码：<br />
<span id="more-299"></span></p>

<div class="wp_syntax"><div class="code"><pre class="php" style="font-family:Courier new,verdana;"><span style="color: #000000; font-weight: bold;">&lt;?php</span>
	<span style="color: #990000;">mysql_connect</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;localhost&quot;</span> <span style="color: #339933;">,</span>  <span style="color: #0000ff;">&quot;mysqlname&quot;</span> <span style="color: #339933;">,</span><span style="color: #0000ff;">&quot;passwd&quot;</span><span style="color: #009900;">&#41;</span> or <span style="color: #990000;">die</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;can't connect to server&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	<span style="color: #666666; font-style: italic;">//这句很关键，如果不设定，读取的全部是乱码，update后数据库中保存的也就成乱码了。</span>
	<span style="color: #990000;">mysql_query</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;SET NAMES 'UTF8'&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	<span style="color: #990000;">mysql_select_db</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;dbname&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #666666; font-style: italic;">//修改所有文章.</span>
	<span style="color: #000088;">$result</span> <span style="color: #339933;">=</span> <span style="color: #990000;">mysql_query</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;select ID ,post_content from wp_posts&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	<span style="color: #b1b100;">while</span> <span style="color: #009900;">&#40;</span><span style="color: #000088;">$row</span> <span style="color: #339933;">=</span> <span style="color: #990000;">mysql_fetch_array</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$result</span><span style="color: #339933;">,</span>MYSQL_ASSOC<span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
		<span style="color: #000088;">$rst</span> <span style="color: #339933;">=</span> rp<span style="color: #009900;">&#40;</span><span style="color: #000088;">$row</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">&quot;post_content&quot;</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
		<span style="color: #000088;">$id</span> <span style="color: #339933;">=</span> <span style="color: #000088;">$row</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">&quot;ID&quot;</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">;</span>
		<span style="color: #000088;">$sqlupdate</span> <span style="color: #339933;">=</span> <span style="color: #0000ff;">&quot;update wp_posts set post_content = '<span style="color: #006699; font-weight: bold;">$rst</span>' where ID = <span style="color: #006699; font-weight: bold;">$id</span>&quot;</span><span style="color: #339933;">;</span>
		<span style="color: #990000;">mysql_query</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$sqlupdate</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>	
		<span style="color: #666666; font-style: italic;">//sleep(10);这句话如果有的话，执行时间过长。超过了30s的最大执行时间。没找到怎么取消这个时间限制。</span>
	<span style="color: #009900;">&#125;</span>
	<span style="color: #b1b100;">echo</span> <span style="color: #0000ff;">&quot;ok&quot;</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #666666; font-style: italic;">//下面是只修改其中一篇文章时的代码.</span>
<span style="color: #666666; font-style: italic;">/*
	$result = mysql_query(&quot;select ID,post_content from wp_posts where ID=197&quot;);
	$row = mysql_fetch_row($result);
	$id = $row[0];	//ID
	$rst = rp($row[1]);//post_content
	$sqlupdate = &quot;update wp_posts set post_content = '$rst' where ID = $id&quot;;
	mysql_query($sqlupdate);
&nbsp;
	echo &quot;ok&quot;; 
*/</span>
<span style="color: #000000; font-weight: bold;">function</span> rp<span style="color: #009900;">&#40;</span><span style="color: #000088;">$rst</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span> 
    <span style="color: #000088;">$pattern</span> <span style="color: #339933;">=</span> <span style="color: #990000;">array</span><span style="color: #009900;">&#40;</span> 
        <span style="color: #0000ff;">&quot;/\[c\](.*?)\[\/c\]/is&quot;</span><span style="color: #339933;">,</span> 
        <span style="color: #0000ff;">&quot;/\[cpp\](.*?)\[\/cpp\]/is&quot;</span><span style="color: #339933;">,</span> 
        <span style="color: #0000ff;">&quot;/\[php\](.*?)\[\/php\]/is&quot;</span><span style="color: #339933;">,</span> 
        <span style="color: #0000ff;">&quot;/\[css\](.*?)\[\/css\]/is&quot;</span><span style="color: #339933;">,</span>  
        <span style="color: #0000ff;">&quot;/\[html\](.*?)\[\/html\]/is&quot;</span>
    <span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> 
    <span style="color: #000088;">$replace</span> <span style="color: #339933;">=</span> <span style="color: #990000;">array</span><span style="color: #009900;">&#40;</span> 
        <span style="color: #0000ff;">&quot;&lt;pre lang=<span style="color: #000099; font-weight: bold;">\&quot;</span>c<span style="color: #000099; font-weight: bold;">\&quot;</span> line=<span style="color: #000099; font-weight: bold;">\&quot;</span>1<span style="color: #000099; font-weight: bold;">\&quot;</span>&gt;<span style="color: #000099; font-weight: bold;">\$</span>{1}&lt;/pre&gt;&quot;</span><span style="color: #339933;">,</span> 
        <span style="color: #0000ff;">&quot;&lt;pre lang=<span style="color: #000099; font-weight: bold;">\&quot;</span>cpp<span style="color: #000099; font-weight: bold;">\&quot;</span> line=<span style="color: #000099; font-weight: bold;">\&quot;</span>1<span style="color: #000099; font-weight: bold;">\&quot;</span>&gt;<span style="color: #000099; font-weight: bold;">\$</span>{1}&lt;/pre&gt;&quot;</span><span style="color: #339933;">,</span> 
        <span style="color: #0000ff;">&quot;&lt;pre lang=<span style="color: #000099; font-weight: bold;">\&quot;</span>php<span style="color: #000099; font-weight: bold;">\&quot;</span> line=<span style="color: #000099; font-weight: bold;">\&quot;</span>1<span style="color: #000099; font-weight: bold;">\&quot;</span>&gt;<span style="color: #000099; font-weight: bold;">\$</span>{1}&lt;/pre&gt;&quot;</span><span style="color: #339933;">,</span> 
        <span style="color: #0000ff;">&quot;&lt;pre lang=<span style="color: #000099; font-weight: bold;">\&quot;</span>css<span style="color: #000099; font-weight: bold;">\&quot;</span> line=<span style="color: #000099; font-weight: bold;">\&quot;</span>1<span style="color: #000099; font-weight: bold;">\&quot;</span>&gt;<span style="color: #000099; font-weight: bold;">\$</span>{1}&lt;/pre&gt;&quot;</span><span style="color: #339933;">,</span>
        <span style="color: #0000ff;">&quot;&lt;pre lang=<span style="color: #000099; font-weight: bold;">\&quot;</span>html<span style="color: #000099; font-weight: bold;">\&quot;</span> line=<span style="color: #000099; font-weight: bold;">\&quot;</span>1<span style="color: #000099; font-weight: bold;">\&quot;</span>&gt;<span style="color: #000099; font-weight: bold;">\$</span>{1}&lt;/pre&gt;&quot;</span>
    <span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
    <span style="color: #b1b100;">return</span>  <span style="color: #990000;">preg_replace</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$pattern</span><span style="color: #339933;">,</span><span style="color: #000088;">$replace</span><span style="color: #339933;">,</span><span style="color: #000088;">$rst</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> 
<span style="color: #009900;">&#125;</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">?&gt;</span></pre></div></div>

<p>　　你看到的我现在的文章，就是用这个方法修改的。不过，遇到点小问题，有几篇竟然没有转换过去，而当我用修改单篇文章的方式修改时又可以，难道是因为我执行时间太短，还是mysql请求太频繁？<br />
　　早上4点20了，要睡了额。</p>
<p>　　<strong>随笔</strong>：很喜欢<a href="http://mindhacks.cn/">刘未鹏大师</a>的一幅画。<br />
<div id="attachment_300" class="wp-caption alignnone" style="width: 310px"><a href="http://www.boluor.com/wp-content/uploads/2009/08/paradoxoflearning-thumb.jpg"><img src="http://www.boluor.com/wp-content/uploads/2009/08/paradoxoflearning-thumb-300x182.jpg" alt="寻找什么和找到了什么" title="paradoxoflearning-thumb" width="300" height="182" class="size-medium wp-image-300" /></a><p class="wp-caption-text">寻找什么和找到了什么</p></div></p>
]]></content:encoded>
			<wfw:commentRss>http://www.boluor.com/update-tags-of-posts-in-batch.html/feed</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
	</channel>
</rss>
