<?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/"
	>

<channel>
	<title>omiga</title>
	<atom:link href="http://omiga.org/blog/feed" rel="self" type="application/rss+xml" />
	<link>http://omiga.org/blog</link>
	<description>for a simple life</description>
	<pubDate>Tue, 06 Jan 2009 03:44:00 +0000</pubDate>
	<generator>http://wordpress.org/?v=2.7</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<xhtml:meta xmlns:xhtml="http://www.w3.org/1999/xhtml" name="robots" content="noindex" />
		<item>
		<title>2009年节假日安排</title>
		<link>http://omiga.org/blog/archives/867</link>
		<comments>http://omiga.org/blog/archives/867#comments</comments>
		<pubDate>Tue, 06 Jan 2009 03:39:42 +0000</pubDate>
		<dc:creator>omiga</dc:creator>
		
		<category><![CDATA[other]]></category>

		<category><![CDATA[五一]]></category>

		<category><![CDATA[假日]]></category>

		<category><![CDATA[国庆]]></category>

		<category><![CDATA[春节]]></category>

		<category><![CDATA[节日]]></category>

		<guid isPermaLink="false">http://omiga.org/blog/?p=867</guid>
		<description><![CDATA[元旦：1月1日至3日放假，共3天。其中，1月1日（星期四、新年）为法定节假日，1月3日（星期六）为公休日。1月4日（星期日）公休日调至1月2日（星期五）。1月4日（星期日）上班。
春节：1月25日至31日放假，共7天。其中，1月25日（星期日、农历除夕）、1月26日（星期一、农历正月初一）、1月27日（星期二、农历正月初二）为法定节假日，1月31日（星期六）照常公休；1月25日（星期日）公休日调至1月28日（星期三），1月24日（星期六）、2月1日（星期日）两个公休日调至1月29日（星期四）、1月30 日（星期五）。1月24日（星期六）、2月1日（星期日）上班。
清明节：4月4日至6日放假，共3天。其中，4月4日（星期六、农历清明当日）为法定节假日，4月5日（星期日）照常公休。4月4日（星期六）公休日调至4月6日（星期一）。
劳动节：5月1日至3日放假，共3天。其中，5月1日（星期五、“五一”国际劳动节）为法定节假日，5月2日（星期六）、5月3日（星期日）照常公休。
端午节：5月28日至30日放假，共3天。其中，5月28日（星期四、农历端午当日）为法定节假日，5月30日（星期六）照常公休；5月31日（星期日）公休日调至5月29日（星期五）。5月31日（星期日）上班。
国庆节、中秋节放假时间为10月1日至8日，共8天。 9月27日（星期日）、10月10日（星期六）上班。也就是说，国庆之前9月21日至25日正常上班，在9月26日（星期六）休息一天后，大家将从9月 27日至30日上班四天。国庆、中秋假期之后，10月9日、10日上班两天，11日（星期日）正常休息，然后恢复到正常的每周工作安排。

权威的：http://www.gov.cn/zwgk/2008-12/10/content_1174014.htm
相关日志

十一房禁周
五一国际劳动节
2008,年过完了～


© omiga for omiga, 2009. &#124;
Permalink &#124;
No comment &#124;
Add to
del.icio.us

Post tags: 五一, 假日, 国庆, 春节, 节日
]]></description>
			<content:encoded><![CDATA[<p><span style="color: #ff0000;">元旦</span>：1月1日至3日放假，共<span style="color: #ff0000;">3天</span>。其中，1月1日（星期四、新年）为法定节假日，1月3日（星期六）为公休日。1月4日（星期日）公休日调至1月2日（星期五）。1月4日（星期日）上班。</p>
<p><span style="color: #ff0000;">春节</span>：1月25日至31日放假，共<span style="color: #ff0000;">7天</span>。其中，1月25日（星期日、农历除夕）、1月26日（星期一、农历正月初一）、1月27日（星期二、农历正月初二）为法定节假日，1月31日（星期六）照常公休；1月25日（星期日）公休日调至1月28日（星期三），1月24日（星期六）、2月1日（星期日）两个公休日调至1月29日（星期四）、1月30 日（星期五）。1月24日（星期六）、2月1日（星期日）上班。</p>
<p><span style="color: #0000ff;">清明节</span>：4月4日至6日放假，共<span style="color: #0000ff;">3天</span>。其中，4月4日（星期六、农历清明当日）为法定节假日，4月5日（星期日）照常公休。4月4日（星期六）公休日调至4月6日（星期一）。</p>
<p><span style="color: #ff0000;">劳动节</span>：5月1日至3日放假，共<span style="color: #ff0000;">3天</span>。其中，5月1日（星期五、“五一”国际劳动节）为法定节假日，5月2日（星期六）、5月3日（星期日）照常公休。</p>
<p><span style="color: #ff0000;">端午节</span>：5月28日至30日放假，共<span style="color: #ff0000;">3天</span>。其中，5月28日（星期四、农历端午当日）为法定节假日，5月30日（星期六）照常公休；5月31日（星期日）公休日调至5月29日（星期五）。5月31日（星期日）上班。</p>
<p><span style="color: #ff0000;">国庆节、中秋节</span>放假时间为10月1日至8日，共<span style="color: #ff0000;">8天</span>。 9月27日（星期日）、10月10日（星期六）上班。也就是说，国庆之前9月21日至25日正常上班，在9月26日（星期六）休息一天后，大家将从9月 27日至30日上班四天。国庆、中秋假期之后，10月9日、10日上班两天，11日（星期日）正常休息，然后恢复到正常的每周工作安排。</p>
<p><img class="alignnone" title="2009holidays" src="http://omiga.org/img/2009holidays.gif" alt="" width="450" height="295" /></p>
<p>权威的：<a href="http://www.gov.cn/zwgk/2008-12/10/content_1174014.htm" target="_blank">http://www.gov.cn/zwgk/2008-12/10/content_1174014.htm</a><br />
<h3 id="related_posts">相关日志</h3>
<ul class="related_post">
<li><a href="http://omiga.org/blog/archives/427" title="十一房禁周">十一房禁周</a></li>
<li><a href="http://omiga.org/blog/archives/129" title="五一国际劳动节">五一国际劳动节</a></li>
<li><a href="http://omiga.org/blog/archives/77" title="2008,年过完了～">2008,年过完了～</a></li>
</ul>
<hr />
<p><small>© omiga for <a href="http://omiga.org/blog">omiga</a>, 2009. |
<a href="http://omiga.org/blog/archives/867">Permalink</a> |
<a href="http://omiga.org/blog/archives/867#comments">No comment</a> |
Add to
<a href="http://del.icio.us/post?url=http://omiga.org/blog/archives/867&title=2009年节假日安排">del.icio.us</a>
<br/>
Post tags: <a href="http://omiga.org/blog/archives/tag/%e4%ba%94%e4%b8%80" rel="tag">五一</a>, <a href="http://omiga.org/blog/archives/tag/%e5%81%87%e6%97%a5" rel="tag">假日</a>, <a href="http://omiga.org/blog/archives/tag/%e5%9b%bd%e5%ba%86" rel="tag">国庆</a>, <a href="http://omiga.org/blog/archives/tag/%e6%98%a5%e8%8a%82" rel="tag">春节</a>, <a href="http://omiga.org/blog/archives/tag/%e8%8a%82%e6%97%a5" rel="tag">节日</a><br/>
</small></p>]]></content:encoded>
			<wfw:commentRss>http://omiga.org/blog/archives/867/feed</wfw:commentRss>
		</item>
		<item>
		<title>新年新气象</title>
		<link>http://omiga.org/blog/archives/861</link>
		<comments>http://omiga.org/blog/archives/861#comments</comments>
		<pubDate>Wed, 31 Dec 2008 15:02:32 +0000</pubDate>
		<dc:creator>omiga</dc:creator>
		
		<category><![CDATA[simple life]]></category>

		<category><![CDATA[新年]]></category>

		<category><![CDATA[生活]]></category>

		<guid isPermaLink="false">http://omiga.org/blog/?p=861</guid>
		<description><![CDATA[
新年，新气象！
感谢2008！迎接2009！
相关日志

2008
求医
单身倍好，光棍万岁！
博客一年了
生活&#183;节奏


© omiga for omiga, 2008. &#124;
Permalink &#124;
No comment &#124;
Add to
del.icio.us

Post tags: 新年, 生活
]]></description>
			<content:encoded><![CDATA[<p><img class="alignnone" title="2009HappyNewYear" src="http://omiga.org/img/090101.jpg" alt="" width="580" height="350" /></p>
<p>新年，新气象！</p>
<p>感谢2008！迎接2009！<br />
<h3 id="related_posts">相关日志</h3>
<ul class="related_post">
<li><a href="http://omiga.org/blog/archives/854" title="2008">2008</a></li>
<li><a href="http://omiga.org/blog/archives/648" title="求医">求医</a></li>
<li><a href="http://omiga.org/blog/archives/550" title="单身倍好，光棍万岁！">单身倍好，光棍万岁！</a></li>
<li><a href="http://omiga.org/blog/archives/473" title="博客一年了">博客一年了</a></li>
<li><a href="http://omiga.org/blog/archives/471" title="生活&middot;节奏">生活&middot;节奏</a></li>
</ul>
<hr />
<p><small>© omiga for <a href="http://omiga.org/blog">omiga</a>, 2008. |
<a href="http://omiga.org/blog/archives/861">Permalink</a> |
<a href="http://omiga.org/blog/archives/861#comments">No comment</a> |
Add to
<a href="http://del.icio.us/post?url=http://omiga.org/blog/archives/861&title=新年新气象">del.icio.us</a>
<br/>
Post tags: <a href="http://omiga.org/blog/archives/tag/%e6%96%b0%e5%b9%b4" rel="tag">新年</a>, <a href="http://omiga.org/blog/archives/tag/%e7%94%9f%e6%b4%bb" rel="tag">生活</a><br/>
</small></p>]]></content:encoded>
			<wfw:commentRss>http://omiga.org/blog/archives/861/feed</wfw:commentRss>
		</item>
		<item>
		<title>2008</title>
		<link>http://omiga.org/blog/archives/854</link>
		<comments>http://omiga.org/blog/archives/854#comments</comments>
		<pubDate>Mon, 29 Dec 2008 04:06:58 +0000</pubDate>
		<dc:creator>omiga</dc:creator>
		
		<category><![CDATA[simple life]]></category>

		<category><![CDATA[2008]]></category>

		<category><![CDATA[2009]]></category>

		<category><![CDATA[毕业]]></category>

		<category><![CDATA[生活]]></category>

		<guid isPermaLink="false">http://omiga.org/blog/?p=854</guid>
		<description><![CDATA[又一年，让我仔细回想一下～···
去年的这个时候已经到了广州，有了第一份正式的工作，然后年后辞职，然后换了新的工作。3月到5月在捣鼓ajax和php，为毕业设计瞎忙活。5月开始做毕业设计，然后在月底带着没有完成的毕业设计和一个字没动的毕业论文回了学校，6月，糜烂～每天活在酒肉堆里，两次毕业答辩后，毕业了。7月到8月，回来继续上班，然后迎接一拨又一拨的兄弟，8月初回去给爸过了第一次生日，用啤酒把一长辈喝晕了。那两个月，我成了月光族。9月到10月，原以为可以按自己的计划做些事情，但是总有些“没事的人”来干扰你，同时在10月买了小黑。11月去深圳喝了某个朋友的喜酒，进一步感觉——老了。12月，很闲～···
这一年其实只有一件大事——毕业了～···一切自然而然，一切都很平静。毕业过后，在一个城市的同学还是很多，还是经常在一起吃喝～我自己觉得其实我是一个比较没心没肺的人，我也只是偶尔大家坐着看电视，或者吃饭的时候才会聊起在学校的一些FB事迹；然后偶尔会在晚上躺在床上入睡前的那一分钟，脑中闪现几个学校生活的片段。
这一年学习上进步甚少，还是在玩弄着最基础的东西；工作也只是一份工作，还没有成为一份事业～···
展望2009，要有希望，要坚持！
相关日志

一个月了，唠叨一下～
新年新气象
求医
单身倍好，光棍万岁！
博客一年了


© omiga for omiga, 2008. &#124;
Permalink &#124;
2 comments &#124;
Add to
del.icio.us

Post tags: 2008, 2009, 毕业, 生活
]]></description>
			<content:encoded><![CDATA[<p>又一年，让我仔细回想一下～···</p>
<p>去年的这个时候已经到了广州，有了第一份正式的工作，然后年后辞职，然后换了新的工作。3月到5月在捣鼓ajax和php，为毕业设计瞎忙活。5月开始做毕业设计，然后在月底带着没有完成的毕业设计和一个字没动的毕业论文回了学校，6月，糜烂～每天活在酒肉堆里，两次毕业答辩后，毕业了。7月到8月，回来继续上班，然后迎接一拨又一拨的兄弟，8月初回去给爸过了第一次生日，用啤酒把一长辈喝晕了。那两个月，我成了月光族。9月到10月，原以为可以按自己的计划做些事情，但是总有些“没事的人”来干扰你，同时在10月买了小黑。11月去深圳喝了某个朋友的喜酒，进一步感觉——老了。12月，很闲～···</p>
<p>这一年其实只有一件大事——毕业了～···一切自然而然，一切都很平静。毕业过后，在一个城市的同学还是很多，还是经常在一起吃喝～我自己觉得其实我是一个比较没心没肺的人，我也只是偶尔大家坐着看电视，或者吃饭的时候才会聊起在学校的一些FB事迹；然后偶尔会在晚上躺在床上入睡前的那一分钟，脑中闪现几个学校生活的片段。</p>
<p>这一年学习上进步甚少，还是在玩弄着最基础的东西；工作也只是一份工作，还没有成为一份事业～···</p>
<p>展望2009，要有希望，要坚持！<br />
<h3 id="related_posts">相关日志</h3>
<ul class="related_post">
<li><a href="http://omiga.org/blog/archives/74" title="一个月了，唠叨一下～">一个月了，唠叨一下～</a></li>
<li><a href="http://omiga.org/blog/archives/861" title="新年新气象">新年新气象</a></li>
<li><a href="http://omiga.org/blog/archives/648" title="求医">求医</a></li>
<li><a href="http://omiga.org/blog/archives/550" title="单身倍好，光棍万岁！">单身倍好，光棍万岁！</a></li>
<li><a href="http://omiga.org/blog/archives/473" title="博客一年了">博客一年了</a></li>
</ul>
<hr />
<p><small>© omiga for <a href="http://omiga.org/blog">omiga</a>, 2008. |
<a href="http://omiga.org/blog/archives/854">Permalink</a> |
<a href="http://omiga.org/blog/archives/854#comments">2 comments</a> |
Add to
<a href="http://del.icio.us/post?url=http://omiga.org/blog/archives/854&title=2008">del.icio.us</a>
<br/>
Post tags: <a href="http://omiga.org/blog/archives/tag/2008" rel="tag">2008</a>, <a href="http://omiga.org/blog/archives/tag/2009" rel="tag">2009</a>, <a href="http://omiga.org/blog/archives/tag/%e6%af%95%e4%b8%9a" rel="tag">毕业</a>, <a href="http://omiga.org/blog/archives/tag/%e7%94%9f%e6%b4%bb" rel="tag">生活</a><br/>
</small></p>]]></content:encoded>
			<wfw:commentRss>http://omiga.org/blog/archives/854/feed</wfw:commentRss>
		</item>
		<item>
		<title>Merry Xmas</title>
		<link>http://omiga.org/blog/archives/842</link>
		<comments>http://omiga.org/blog/archives/842#comments</comments>
		<pubDate>Wed, 24 Dec 2008 15:20:57 +0000</pubDate>
		<dc:creator>omiga</dc:creator>
		
		<category><![CDATA[simple life]]></category>

		<category><![CDATA[圣诞]]></category>

		<category><![CDATA[朋友]]></category>

		<category><![CDATA[生日]]></category>

		<guid isPermaLink="false">http://omiga.org/blog/?p=842</guid>
		<description><![CDATA[刚好赶上RZ生日，所以FB义无反顾～···
考虑到RZ要专程坐一小时公交来和我们会合，所以决定就在公司附近找地儿吃饭，结果那小子还是打的过来了，有钱人！买了蛋糕，兜了一大圈找到个重庆火锅店，冲上去，环境很吸引人～···上茶，点菜，等人～···正当我们在推敲着菜谱时，OMG～···停电了，长这么大头一回碰到在饭店吃饭停电～···幸好还没上菜，虽然锅底已经煮上了，等了十来分钟，电依旧没有一点来的迹象，所以我们也毫不客气地撤了～···
重新找了家川菜馆，大厅很大，很喜庆，很有吃饭的气氛～···而且所有饮料自助～···帅～本次饭局两大亮点：

喝了三种酒，31°（F专用），43°和56°（我和CC专用，CC最后杯底还留了一大口，dogsun&#8217;s～）～···
在得知RZ过生日，饭店经理特地送来长寿面，同时邀上几个服务员，在几百人的众目睽睽下高唱生日快乐歌～···汗～···

回家的路上，我还给一个孕妇让了座，我都说我是好人了嘛～···
悄悄说——酒还是没喝尽兴。严重鄙视CC，想当年，在学校的时候，每次饭局，这个自称豪爽的河南人和LP的PK都是压轴，而现在～···几乎滴酒不沾，也在无形之中成就了我独孤求败的尴尬局面～···
好像快过年了，这段时间好好热身～···定要一雪去年之耻～···
BTW：受RZ的GF所托，帮他买了蛋糕，还买了苹果，还亲手洗给他吃，我快成了他GF了～···
最后，Merry Xmas!
相关日志

请让我清静清静
2007圣诞快乐


© omiga for omiga, 2008. &#124;
Permalink &#124;
5 comments &#124;
Add to
del.icio.us

Post tags: 圣诞, 朋友, 生日
]]></description>
			<content:encoded><![CDATA[<p>刚好赶上RZ生日，所以FB义无反顾～···</p>
<p>考虑到RZ要专程坐一小时公交来和我们会合，所以决定就在公司附近找地儿吃饭，结果那小子还是打的过来了，有钱人！买了蛋糕，兜了一大圈找到个重庆火锅店，冲上去，环境很吸引人～···上茶，点菜，等人～···正当我们在推敲着菜谱时，OMG～···停电了，长这么大头一回碰到在饭店吃饭停电～···幸好还没上菜，虽然锅底已经煮上了，等了十来分钟，电依旧没有一点来的迹象，所以我们也毫不客气地撤了～···</p>
<p>重新找了家川菜馆，大厅很大，很喜庆，很有吃饭的气氛～···而且所有饮料自助～···帅～本次饭局两大亮点：</p>
<ol>
<li>喝了三种酒，31°（F专用），43°和56°（我和CC专用，CC最后杯底还留了一大口，dogsun&#8217;s～）～···</li>
<li>在得知RZ过生日，饭店经理特地送来长寿面，同时邀上几个服务员，在几百人的众目睽睽下高唱生日快乐歌～···汗～···</li>
</ol>
<p>回家的路上，我还给一个孕妇让了座，我都说<a href="http://omiga.org/blog/archives/102">我是好人</a>了嘛～···</p>
<p>悄悄说——酒还是没喝尽兴。严重鄙视CC，想当年，在学校的时候，每次饭局，这个自称豪爽的河南人和LP的PK都是压轴，而现在～···几乎滴酒不沾，也在无形之中成就了我独孤求败的尴尬局面～···</p>
<p>好像快过年了，这段时间好好热身～···定要一雪<a href="http://omiga.org/blog/archives/77">去年之耻</a>～···</p>
<p>BTW：受RZ的GF所托，帮他买了蛋糕，还买了苹果，还亲手洗给他吃，我快成了他GF了～···</p>
<p>最后，Merry Xmas!<br />
<h3 id="related_posts">相关日志</h3>
<ul class="related_post">
<li><a href="http://omiga.org/blog/archives/391" title="请让我清静清静">请让我清静清静</a></li>
<li><a href="http://omiga.org/blog/archives/56" title="2007圣诞快乐">2007圣诞快乐</a></li>
</ul>
<hr />
<p><small>© omiga for <a href="http://omiga.org/blog">omiga</a>, 2008. |
<a href="http://omiga.org/blog/archives/842">Permalink</a> |
<a href="http://omiga.org/blog/archives/842#comments">5 comments</a> |
Add to
<a href="http://del.icio.us/post?url=http://omiga.org/blog/archives/842&title=Merry Xmas">del.icio.us</a>
<br/>
Post tags: <a href="http://omiga.org/blog/archives/tag/%e5%9c%a3%e8%af%9e" rel="tag">圣诞</a>, <a href="http://omiga.org/blog/archives/tag/%e6%9c%8b%e5%8f%8b" rel="tag">朋友</a>, <a href="http://omiga.org/blog/archives/tag/%e7%94%9f%e6%97%a5" rel="tag">生日</a><br/>
</small></p>]]></content:encoded>
			<wfw:commentRss>http://omiga.org/blog/archives/842/feed</wfw:commentRss>
		</item>
		<item>
		<title>中文按钮完美显示方案</title>
		<link>http://omiga.org/blog/archives/807</link>
		<comments>http://omiga.org/blog/archives/807#comments</comments>
		<pubDate>Sat, 20 Dec 2008 06:17:30 +0000</pubDate>
		<dc:creator>omiga</dc:creator>
		
		<category><![CDATA[front-end]]></category>

		<category><![CDATA[button]]></category>

		<category><![CDATA[css]]></category>

		<category><![CDATA[line-height]]></category>

		<guid isPermaLink="false">http://omiga.org/blog/?p=807</guid>
		<description><![CDATA[先看这段代码在不同浏览器中的表现。
代码：
&#60;input type="submit" value="提交" /&#62; &#60;input type="submit" value="按钮左右左右内边距会随文本自动增加" /&#62; &#60;input type="reset" value="重置" /&#62;
在各浏览器中的表现：

可以明显观察到在默认样式下IE6/7中文按钮显示主要存在两个问题：

文本无法正常垂直居中
按钮中文本与左右边框的间距会随文本长度变化，而不是一个固定值

那么一个按钮正常的默认样式是怎么样的？我们可以通过Firebug观察button的“盒模型”，如下图：

Firefox中按钮默认有2px的边框，6px的左右内边距。
注意：以上测试都是在windows经典主题下完成，而不同主题下的按钮的样式是有所差别的。比如我最初使用的MCE 2005主题下按钮的边框宽度为3px。
在上面的测试中似乎IE8 beta2已经比较完美了，其实不然。我们对按钮的高度做一些改变，你就会发现IE8还没有想象中的完美，如下图：

可以看到，事实上IE8(b2)中，按钮中的文本（包括英文文本）是固定在距按钮上边框4px的位置，看起来情况比IE6/7还要糟糕！当然IE8(b2)已经解决了左右内边距随文本变化的问题，而且IE8也还是beta版本，希望能在正式版中修复这些问题。
而对于IE6/7（更低版本没测试）中按钮文本与左右边框的间距随文本长度变化的问题就不仅限于中文文本的按钮，所以似乎早在05年就有人提出了解决办法：http://jehiah.cz/archive/button-width-in-ie
具体方法即是重置padding：
.button{
    overflow:visible; /* for ie6/7 */
    padding:0 6px;
}
该方法存在一个明显的缺点：IE6/8中按钮的高度会增加1px。
（更新说明：经过进一步测试发现IE6/7中文本与左右边框的间距并不是附加在按钮上的左右内边距，而是附加在文本上的某种边距。个人认为overflow:visible;在此正是用于清除该边距。）
而对于中文文本无法正确居中对齐的问题，在我和TZ讨论一天后似乎也没找到一个比较满意的解决方案。暂时只能通过line-height来解决，而且还得使用hack来解决重置padding后增加的1px高度问题。
line-height的具体取值就去这里看看吧：http://fedcn.org/?p=3
相关日志

line-height and relative
XHTML&#038;CSS_reference
纯CSS实现tab切换
wordpress主题—ND
Firefox，Opera不支持通用字体系列名定义


© omiga for omiga, 2008. &#124;
Permalink &#124;
No comment &#124;
Add to
del.icio.us

Post tags: button, css, line-height
]]></description>
			<content:encoded><![CDATA[<p>先看这段代码在不同浏览器中的表现。</p>
<p>代码：</p>
<pre>&lt;input type="submit" value="提交" /&gt; &lt;input type="submit" value="按钮左右左右内边距会随文本自动增加" /&gt; &lt;input type="reset" value="重置" /&gt;</pre>
<p>在各浏览器中的表现：</p>
<p><img class="alignnone" title="button_style" src="http://omiga.org/img/button_style.jpg" alt="" width="500" height="200" /></p>
<p>可以明显观察到在默认样式下IE6/7中文按钮显示主要存在两个问题：</p>
<ol>
<li>文本无法正常垂直居中</li>
<li>按钮中文本与左右边框的间距会随文本长度变化，而不是一个固定值</li>
</ol>
<p>那么一个按钮正常的默认样式是怎么样的？我们可以通过Firebug观察button的“盒模型”，如下图：</p>
<p><img class="alignnone" title="button_box" src="http://omiga.org/img/button_box.png" alt="" width="227" height="165" /></p>
<p>Firefox中按钮默认有2px的边框，6px的左右内边距。</p>
<p><strong>注意：</strong>以上测试都是在windows经典主题下完成，而不同主题下的按钮的样式是有所差别的。比如我最初使用的MCE 2005主题下按钮的边框宽度为3px。</p>
<p>在上面的测试中似乎IE8 beta2已经比较完美了，其实不然。我们对按钮的高度做一些改变，你就会发现IE8还没有想象中的完美，如下图：</p>
<p><img class="alignnone" title="button_style_ie8" src="http://omiga.org/img/button_style_ie8.jpg" alt="" width="500" height="93" /></p>
<p>可以看到，事实上IE8(b2)中，按钮中的文本（包括英文文本）是固定在距按钮上边框4px的位置，看起来情况比IE6/7还要糟糕！当然IE8(b2)已经解决了左右内边距随文本变化的问题，而且IE8也还是beta版本，希望能在正式版中修复这些问题。</p>
<p>而对于IE6/7（更低版本没测试）中按钮文本与左右边框的间距随文本长度变化的问题就不仅限于中文文本的按钮，所以似乎早在05年就有人提出了解决办法：<a href="http://jehiah.cz/archive/button-width-in-ie" target="_blank">http://jehiah.cz/archive/button-width-in-ie</a></p>
<p>具体方法即是重置padding：</p>
<pre>.button{
    overflow:visible; /* for ie6/7 */
    padding:0 6px;
}</pre>
<p>该方法存在一个明显的缺点：IE6/8中按钮的高度会增加1px。</p>
<p>（更新说明：经过进一步测试发现IE6/7中文本与左右边框的间距并不是附加在按钮上的左右内边距，而是附加在文本上的某种边距。个人认为overflow:visible;在此正是用于清除该边距。）</p>
<p>而对于中文文本无法正确居中对齐的问题，在我和TZ讨论一天后似乎也没找到一个比较满意的解决方案。暂时只能通过line-height来解决，而且还得使用hack来解决重置padding后增加的1px高度问题。</p>
<p>line-height的具体取值就去这里看看吧：<a href="http://fedcn.org/?p=3" target="_blank">http://fedcn.org/?p=3</a><br />
<h3 id="related_posts">相关日志</h3>
<ul class="related_post">
<li><a href="http://omiga.org/blog/archives/92" title="line-height and relative">line-height and relative</a></li>
<li><a href="http://omiga.org/blog/archives/530" title="XHTML&#038;CSS_reference">XHTML&#038;CSS_reference</a></li>
<li><a href="http://omiga.org/blog/archives/513" title="纯CSS实现tab切换">纯CSS实现tab切换</a></li>
<li><a href="http://omiga.org/blog/archives/494" title="wordpress主题—ND">wordpress主题—ND</a></li>
<li><a href="http://omiga.org/blog/archives/448" title="Firefox，Opera不支持通用字体系列名定义">Firefox，Opera不支持通用字体系列名定义</a></li>
</ul>
<hr />
<p><small>© omiga for <a href="http://omiga.org/blog">omiga</a>, 2008. |
<a href="http://omiga.org/blog/archives/807">Permalink</a> |
<a href="http://omiga.org/blog/archives/807#comments">No comment</a> |
Add to
<a href="http://del.icio.us/post?url=http://omiga.org/blog/archives/807&title=中文按钮完美显示方案">del.icio.us</a>
<br/>
Post tags: <a href="http://omiga.org/blog/archives/tag/button" rel="tag">button</a>, <a href="http://omiga.org/blog/archives/tag/css" rel="tag">css</a>, <a href="http://omiga.org/blog/archives/tag/line-height" rel="tag">line-height</a><br/>
</small></p>]]></content:encoded>
			<wfw:commentRss>http://omiga.org/blog/archives/807/feed</wfw:commentRss>
		</item>
		<item>
		<title>substr()</title>
		<link>http://omiga.org/blog/archives/777</link>
		<comments>http://omiga.org/blog/archives/777#comments</comments>
		<pubDate>Thu, 18 Dec 2008 04:51:44 +0000</pubDate>
		<dc:creator>omiga</dc:creator>
		
		<category><![CDATA[LAMP]]></category>

		<category><![CDATA[PHP]]></category>

		<category><![CDATA[substr]]></category>

		<guid isPermaLink="false">http://omiga.org/blog/?p=777</guid>
		<description><![CDATA[写了个获取最新评论的函数，用substr截取，后面总会莫名其妙地多个乱码，原来  ，substr() 函数只能正确截取单字节字符串，所以针对双字节或多字节编码的字符就得自己动手了～···
function sysSubStr($String,$Length,$Append=false){
	if (strlen($String) &#60;= $Length ){
		return $String;
	}
	else{
		$I = 0;
		while ($I &#60; $Length){
			$StringTMP = substr($String,$I,1);
			if ( ord($StringTMP) &#62;=224 ){
				$StringTMP = substr($String,$I,3);
				$I = $I + 3;
			}
			elseif( ord($StringTMP) &#62;=192 ){
				$StringTMP = substr($String,$I,2);
				$I = $I + 2;
			}else{
				$I = $I + 1;
			}
			$StringLast[] = $StringTMP;
		}
		$StringLast = implode("",$StringLast);
		if($Append){
			$StringLast .= "...";
		}
		return $StringLast;
	}
}

更多的在这里：http://www.codebit.cn/pub/html/php_mysql/tip/data/substr/
相关日志

再玩PHP
PHP and JSON


© omiga for omiga, 2008. &#124;
Permalink &#124;
2 comments [...]]]></description>
			<content:encoded><![CDATA[<p>写了个获取最新评论的函数，用substr截取，后面总会莫名其妙地多个乱码，原来<span class="dark bold"> </span><span id="articleSummary"> ，substr() 函数只能正确截取单字节字符串，所以针对双字节或多字节编码的字符就得自己动手了～···</span></p>
<pre><span>function sysSubStr($String,$Length,$Append=false){
	if (strlen($String) &lt;= $Length ){
		return $String;
	}
	else{
		$I = 0;
		while ($I &lt; $Length){
			$StringTMP = substr($String,$I,1);
			if ( ord($StringTMP) &gt;=224 ){
				$StringTMP = substr($String,$I,3);
				$I = $I + 3;
			}
			elseif( ord($StringTMP) &gt;=192 ){
				$StringTMP = substr($String,$I,2);
				$I = $I + 2;
			}else{
				$I = $I + 1;
			}
			$StringLast[] = $StringTMP;
		}
		$StringLast = implode("",$StringLast);
		if($Append){
			$StringLast .= "...";
		}
		return $StringLast;
	}
}
</span></pre>
<p><span>更多的在这里：<a href="http://www.codebit.cn/pub/html/php_mysql/tip/data/substr/" target="_blank">http://www.codebit.cn/pub/html/php_mysql/tip/data/substr/</a></span><br />
<h3 id="related_posts">相关日志</h3>
<ul class="related_post">
<li><a href="http://omiga.org/blog/archives/565" title="再玩PHP">再玩PHP</a></li>
<li><a href="http://omiga.org/blog/archives/153" title="PHP and JSON">PHP and JSON</a></li>
</ul>
<hr />
<p><small>© omiga for <a href="http://omiga.org/blog">omiga</a>, 2008. |
<a href="http://omiga.org/blog/archives/777">Permalink</a> |
<a href="http://omiga.org/blog/archives/777#comments">2 comments</a> |
Add to
<a href="http://del.icio.us/post?url=http://omiga.org/blog/archives/777&title=substr()">del.icio.us</a>
<br/>
Post tags: <a href="http://omiga.org/blog/archives/tag/php" rel="tag">PHP</a>, <a href="http://omiga.org/blog/archives/tag/substr" rel="tag">substr</a><br/>
</small></p>]]></content:encoded>
			<wfw:commentRss>http://omiga.org/blog/archives/777/feed</wfw:commentRss>
		</item>
		<item>
		<title>javascript之正则表达式（二）</title>
		<link>http://omiga.org/blog/archives/762</link>
		<comments>http://omiga.org/blog/archives/762#comments</comments>
		<pubDate>Sun, 14 Dec 2008 13:19:58 +0000</pubDate>
		<dc:creator>omiga</dc:creator>
		
		<category><![CDATA[front-end]]></category>

		<category><![CDATA[javascript]]></category>

		<category><![CDATA[regexp]]></category>

		<category><![CDATA[regular expression]]></category>

		<category><![CDATA[正则]]></category>

		<category><![CDATA[正则表达式]]></category>

		<guid isPermaLink="false">http://omiga.org/blog/?p=762</guid>
		<description><![CDATA[子表达式
上一篇文章的最后部分中的var reUrl = /^(http):\/\/omiga\.(org)$/gi;已经涉及到子表达式了。用来指定重复次数的元字符只能作用于紧挨着它的字符或元字符，而在实际应用中我们需要进行重复匹配的字符往往不一定就只是一个字符或元字符，就如reUrl中所要匹配的“http”和“org”就是多个字符，这时候就可以使用（和）将多个字符括起来作为一个独立的元素来使用。
同样在上一篇文章中所构造的验证email地址的正则表达式var reMail = /\w+@\w+\.\w+/i;并不完善，一个有效的用户名除了可以是字母、数字、下划线外，还可以是点号，同时域名部分也不能保证是mail.com这行的形式，也完全有可能是mail.mymail.com这样的形式，所以一个更为完善的匹配有效email地址的正则表达式是这样的：
var reEmail = /(\w+\.)*\w+@(\w+\.)+\w+/i;
字表达式允许多重嵌套，而且这种嵌套在理论上是没有限制的，但在实际应用中还是应该根据实际情况适可而止。
回溯引用
在web开发中，我们经常需要去匹配HTML标签，大多数的HTML标签都有一个开始标记和结束标记如&#60;h1&#62;&#60;/h1&#62;,&#60;div&#62;&#60;/div&#62;，如果只需单纯的匹配H1和DIV我们可以很容易的构造出该正则表达式：
var reH1 = /&#60;h1&#62;.*?&#60;\/h1&#62;/gi;
var reDiv = /&#60;div&#62;.*?&#60;\/div&#62;/gi;
但是我们所要匹配的并不是某个或某几个HTML标签，事实上HTML具体是什么样的形式我们完全是未知的，比如XML的标记我们是完全无法预计的，所以分组匹配在这里完全排不上用场。幸运的是，在正则表达式中回溯引用允许正则表达式模式引用前面的匹配结果。具体应用可以参考下面匹配HTML标签的正则表达式。
var html = "&#60;h1&#62;omiga&#60;/h1&#62;";
var reTag = /&#60;(\w+\d?)&#62;.*?&#60;\/\1&#62;/gi;
document.write(html.match(reTag)); //&#60;h1&#62;omiga&#60;/h1&#62;
reTag最后部分的\1便是一个回溯引用，引用的前面的第一个子模式(\w+\d?)，当然如果前面还存在第二个子模式我们也可以使用\2引用、。注意：回溯引用只能引用前面已经匹配过的结果，而下面这样的写法就是错误的。
var reTag = /&#60;\1&#62;.*?&#60;\/(\w+\d?)&#62;/gi;
回溯引用在替换操作中有着十分广泛的应用。比如我们要将一段文本中的所有网址自动添加上其对应的超链接，即是将“http://omiga.org”的字符串替换成&#60;a href=&#8221;http://omiga.org&#8221;&#62;omiga&#60;/a&#62;的形式。我们就可以这样处理：
var url = "http://omiga.org";
var reUrl = /(http[s]*:\/{2}(\w+\.)+\w+)/gi;
document.write(url.replace(reUrl,'&#60;a href="$1"&#62;$1&#60;/a&#62;')); //&#60;a href="http://omiga.org"&#62;http://omiga.org&#60;/a&#62;
$1引用了前面的子模式(http[s]*:\/{2}(\w+\.)+\w+)。注意：javascript中进行替换操作时回溯引用使用&#8221;$&#8221;而不是&#8221;\&#8221;。
前后查找
如果我们需要获取h1标签中的文本（包含在h1标签中的文本，不包括h1本身），这个正则表达式应该如何写？比如&#8221;&#60;h1&#62;front-end&#60;/h1&#62;&#8221;，在所有介绍过的方法中，似乎都还没有提及过要匹配某个字符串，但却只返回某些字符前或后的字符串的情况，正则表达式中确实是存在这样的语法。
var fe = "&#60;h1&#62;front-end&#60;/h1&#62;";
var reInnerText = /(?&#60;=&#60;h1&#62;).*?(?=&#60;\/h1&#62;))/i;
在reInnerText和/&#60;h1&#62;.*?&#60;\/h1&#62;/i的匹配模式是相同的，唯一不同的返回结果，/&#60;h1&#62;.*?&#60;\/h1&#62;/i会返回整个fe字符串，而reInnerText只返回&#8221;front-end&#8221;，比较这两个正则表达式可以发现两处不同的写法：(?&#60;=&#60;h1&#62;)，(?=&#60;\/h1&#62;)。(?&#60;=&#60;h1&#62;)定义了一个向后查找模式，即匹配结果只包括&#8221;&#60;h1&#62;&#8221;后面的部分；(?=&#60;\/h1&#62;)则定义的是一个向前查找模式，匹配结果只返回&#8221;&#60;/h1&#62;&#8221;前的结果；所以reInnerText的匹配结果只返回&#8221;&#60;h1&#62;&#8221;和&#8221;&#60;/h1&#62;&#8221;之间的内容！前后查找的语法很简单，向前查找是一个以&#8221;?=&#8221;开头的字表达式，而向后查找确实一个以&#8221;?&#60;=&#8221;开头的字表达式。
遗憾的javascript并不支持正则表达式的向后查找，所以事实上reInnerText的写法在javascript是有语法错误的。有条件可以使用其他支持前后查找的语言进行验证，比如PHP。
$title = '&#60;h1&#62;front-end&#60;/h1&#62;';
if(preg_match('/(?&#60;=&#60;h1&#62;).*?(?=&#60;\/h1&#62;)/i',$title,$rst)){
   echo $rst[0]; //front-end
}
条件查找
正则表达式还有一种功能强大但却不被经常用到的功能——嵌入条件查找。在回溯引用一节中所介绍的匹配HTML标签的正则表达式并没有考虑诸如&#60;img src=&#8221;logo.gif&#8221; /&#62;这样的元素，而下面的reImg正式一个使用嵌入条件匹配img元素的正则表达式。
var reImg = /&#60;(img)?\s+[^&#62;]+(?(1)\/)&#62;/i;
我兴高采烈的测试着～···奇迹发生了！javascript还是不支持正则条件查找～···囧～···那就不写了吧～···+_+
相关日志

javascript之正则表达式（一）
javascript图片遮罩放大
javascript的赋值
jQuery中一些不常用的方法属性
一些有用的JavaScript函数（3）


© omiga for omiga, [...]]]></description>
			<content:encoded><![CDATA[<p><strong>子表达式</strong></p>
<p><a href="http://omiga.org/blog/archives/714" target="_blank">上一篇文章</a>的最后部分中的var reUrl = /^(http):\/\/omiga\.(org)$/gi;已经涉及到子表达式了。用来指定重复次数的元字符只能作用于紧挨着它的字符或元字符，而在实际应用中我们需要进行重复匹配的字符往往不一定就只是一个字符或元字符，就如reUrl中所要匹配的“http”和“org”就是多个字符，这时候就可以使用（和）将多个字符括起来作为一个独立的元素来使用。</p>
<p>同样在<a href="http://omiga.org/blog/archives/714" target="_blank">上一篇文章</a>中所构造的验证email地址的正则表达式var reMail = /\w+@\w+\.\w+/i;并不完善，一个有效的用户名除了可以是字母、数字、下划线外，还可以是点号，同时域名部分也不能保证是mail.com这行的形式，也完全有可能是mail.mymail.com这样的形式，所以一个更为完善的匹配有效email地址的正则表达式是这样的：</p>
<pre>var reEmail = /(\w+\.)*\w+@(\w+\.)+\w+/i;</pre>
<p>字表达式允许多重嵌套，而且这种嵌套在理论上是没有限制的，但在实际应用中还是应该根据实际情况适可而止。</p>
<p><strong>回溯引用</strong></p>
<p>在web开发中，我们经常需要去匹配HTML标签，大多数的HTML标签都有一个开始标记和结束标记如&lt;h1&gt;&lt;/h1&gt;,&lt;div&gt;&lt;/div&gt;，如果只需单纯的匹配H1和DIV我们可以很容易的构造出该正则表达式：</p>
<pre>var reH1 = /&lt;h1&gt;.*?&lt;\/h1&gt;/gi;
var reDiv = /&lt;div&gt;.*?&lt;\/div&gt;/gi;</pre>
<p>但是我们所要匹配的并不是某个或某几个HTML标签，事实上HTML具体是什么样的形式我们完全是未知的，比如XML的标记我们是完全无法预计的，所以分组匹配在这里完全排不上用场。幸运的是，在正则表达式中回溯引用允许正则表达式模式引用前面的匹配结果。具体应用可以参考下面匹配HTML标签的正则表达式。</p>
<pre>var html = "&lt;h1&gt;omiga&lt;/h1&gt;";
var reTag = /&lt;(\w+\d?)&gt;.*?&lt;\/\1&gt;/gi;
document.write(html.match(reTag)); //&lt;h1&gt;omiga&lt;/h1&gt;</pre>
<p>reTag最后部分的\1便是一个回溯引用，引用的前面的第一个子模式(\w+\d?)，当然如果前面还存在第二个子模式我们也可以使用\2引用、。注意：回溯引用只能引用前面已经匹配过的结果，而下面这样的写法就是错误的。</p>
<pre>var reTag = /&lt;\1&gt;.*?&lt;\/(\w+\d?)&gt;/gi;</pre>
<p>回溯引用在替换操作中有着十分广泛的应用。比如我们要将一段文本中的所有网址自动添加上其对应的超链接，即是将“http://omiga.org”的字符串替换成&lt;a href=&#8221;http://omiga.org&#8221;&gt;omiga&lt;/a&gt;的形式。我们就可以这样处理：</p>
<pre>var url = "http://omiga.org";
var reUrl = /(http[s]*:\/{2}(\w+\.)+\w+)/gi;
document.write(url.replace(reUrl,'&lt;a href="$1"&gt;$1&lt;/a&gt;')); //&lt;a href="http://omiga.org"&gt;http://omiga.org&lt;/a&gt;</pre>
<p>$1引用了前面的子模式(http[s]*:\/{2}(\w+\.)+\w+)。注意：javascript中进行替换操作时回溯引用使用&#8221;$&#8221;而不是&#8221;\&#8221;。</p>
<p><strong>前后查找</strong></p>
<p>如果我们需要获取h1标签中的文本（包含在h1标签中的文本，不包括h1本身），这个正则表达式应该如何写？比如&#8221;&lt;h1&gt;front-end&lt;/h1&gt;&#8221;，在所有介绍过的方法中，似乎都还没有提及过要匹配某个字符串，但却只返回某些字符前或后的字符串的情况，正则表达式中确实是存在这样的语法。</p>
<pre>var fe = "&lt;h1&gt;front-end&lt;/h1&gt;";
var reInnerText = /(?&lt;=&lt;h1&gt;).*?(?=&lt;\/h1&gt;))/i;</pre>
<p>在reInnerText和/&lt;h1&gt;.*?&lt;\/h1&gt;/i的匹配模式是相同的，唯一不同的返回结果，/&lt;h1&gt;.*?&lt;\/h1&gt;/i会返回整个fe字符串，而reInnerText只返回&#8221;front-end&#8221;，比较这两个正则表达式可以发现两处不同的写法：(?&lt;=&lt;h1&gt;)，(?=&lt;\/h1&gt;)。(?&lt;=&lt;h1&gt;)定义了一个向后查找模式，即匹配结果只包括&#8221;&lt;h1&gt;&#8221;后面的部分；(?=&lt;\/h1&gt;)则定义的是一个向前查找模式，匹配结果只返回&#8221;&lt;/h1&gt;&#8221;前的结果；所以reInnerText的匹配结果只返回&#8221;&lt;h1&gt;&#8221;和&#8221;&lt;/h1&gt;&#8221;之间的内容！前后查找的语法很简单，向前查找是一个以&#8221;?=&#8221;开头的字表达式，而向后查找确实一个以&#8221;?&lt;=&#8221;开头的字表达式。</p>
<p>遗憾的javascript并不支持正则表达式的向后查找，所以事实上reInnerText的写法在javascript是有语法错误的。有条件可以使用其他支持前后查找的语言进行验证，比如PHP。</p>
<pre>$title = '&lt;h1&gt;front-end&lt;/h1&gt;';
if(preg_match('/(?&lt;=&lt;h1&gt;).*?(?=&lt;\/h1&gt;)/i',$title,$rst)){
   echo $rst[0]; //front-end
}</pre>
<p><strong>条件查找</strong></p>
<p>正则表达式还有一种功能强大但却不被经常用到的功能——嵌入条件查找。在回溯引用一节中所介绍的匹配HTML标签的正则表达式并没有考虑诸如&lt;img src=&#8221;logo.gif&#8221; /&gt;这样的元素，而下面的reImg正式一个使用嵌入条件匹配img元素的正则表达式。</p>
<pre>var reImg = /&lt;(img)?\s+[^&gt;]+(?(1)\/)&gt;/i;</pre>
<p>我兴高采烈的测试着～···奇迹发生了！javascript还是不支持正则条件查找～···囧～···那就不写了吧～···+_+<br />
<h3 id="related_posts">相关日志</h3>
<ul class="related_post">
<li><a href="http://omiga.org/blog/archives/714" title="javascript之正则表达式（一）">javascript之正则表达式（一）</a></li>
<li><a href="http://omiga.org/blog/archives/409" title="javascript图片遮罩放大">javascript图片遮罩放大</a></li>
<li><a href="http://omiga.org/blog/archives/368" title="javascript的赋值">javascript的赋值</a></li>
<li><a href="http://omiga.org/blog/archives/255" title="jQuery中一些不常用的方法属性">jQuery中一些不常用的方法属性</a></li>
<li><a href="http://omiga.org/blog/archives/139" title="一些有用的JavaScript函数（3）">一些有用的JavaScript函数（3）</a></li>
</ul>
<hr />
<p><small>© omiga for <a href="http://omiga.org/blog">omiga</a>, 2008. |
<a href="http://omiga.org/blog/archives/762">Permalink</a> |
<a href="http://omiga.org/blog/archives/762#comments">No comment</a> |
Add to
<a href="http://del.icio.us/post?url=http://omiga.org/blog/archives/762&title=javascript之正则表达式（二）">del.icio.us</a>
<br/>
Post tags: <a href="http://omiga.org/blog/archives/tag/javascript" rel="tag">javascript</a>, <a href="http://omiga.org/blog/archives/tag/regexp" rel="tag">regexp</a>, <a href="http://omiga.org/blog/archives/tag/regular-expression" rel="tag">regular expression</a>, <a href="http://omiga.org/blog/archives/tag/%e6%ad%a3%e5%88%99" rel="tag">正则</a>, <a href="http://omiga.org/blog/archives/tag/%e6%ad%a3%e5%88%99%e8%a1%a8%e8%be%be%e5%bc%8f" rel="tag">正则表达式</a><br/>
</small></p>]]></content:encoded>
			<wfw:commentRss>http://omiga.org/blog/archives/762/feed</wfw:commentRss>
		</item>
		<item>
		<title>勇气</title>
		<link>http://omiga.org/blog/archives/742</link>
		<comments>http://omiga.org/blog/archives/742#comments</comments>
		<pubDate>Wed, 10 Dec 2008 17:14:05 +0000</pubDate>
		<dc:creator>omiga</dc:creator>
		
		<category><![CDATA[other]]></category>

		<category><![CDATA[世界末日]]></category>

		<category><![CDATA[本.阿弗莱克]]></category>

		<category><![CDATA[电影]]></category>

		<guid isPermaLink="false">http://omiga.org/blog/?p=742</guid>
		<description><![CDATA[
President : I address you tonight not as the President of the United States, not as a leader of a country, but as a citizen of humanity. We are faced with the very gravest of challenges. The Bible calls this day &#8216;armageddon&#8217; - the end of all things. And yet, for the first time in [...]]]></description>
			<content:encoded><![CDATA[<p><object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" width="480" height="295" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0"><param name="allowFullScreen" value="true" /><param name="allowscriptaccess" value="always" /><param name="src" value="http://www.youtube.com/v/r00WYCTniD8&amp;hl=zh_CN&amp;fs=1" /><embed type="application/x-shockwave-flash" width="480" height="295" src="http://www.youtube.com/v/r00WYCTniD8&amp;hl=zh_CN&amp;fs=1" allowscriptaccess="always" allowfullscreen="true"></embed></object></p>
<blockquote><p>President : I address you tonight not as the President of the United States, not as a leader of a country, but as a citizen of humanity. We are faced with the very gravest of challenges. The Bible calls this day &#8216;armageddon&#8217; - the end of all things. And yet, for the first time in the history of the planet, a species has the technology to prevent its own extinction. All of you praying with us tonight need to know that everything that can be done to prevent this disaster is being called into service. The human thirst for excellence, knowledge; every step up the ladder of science; every adventurous reach into space; all of our combined technologies and imaginations; even the wars that we&#8217;ve fought have provided us the tools to wage this terrible battle. Through all of the chaos that is our history; through all of the wrong and the discord; through all of the pain and the suffering; through all of our times, there is one thing that has nourished our souls, and elevated our species above its origins, and that is our courage. The dreams of an entire planet are focused tonight on those fourteen brave souls traveling into the heavens. And may we, citizens the world over, see these events through. God speed, and good luck to you.</p></blockquote>
<p>女士们 先生们：</p>
<p>今晚我不是以美国总统的身份向各位发言，也不是一国元首，而是人类的一员。人类面临最大的挑战，圣经说这是世界末日，万物毁灭，但是这是人类历史上第一次有能力避免遭受毁灭。我要让大家知道，我们已经尽一切努力避免这场浩劫。人类追求的知识结晶；对科学的苦心专研；冒险飞向太空的努力；现代科技的成果和想象力；甚至来自战争的经验都为这场生死战提供利器。在多灾多难的历史上，人类曾经犯过多少错；人民曾经受过多少苦，经历这么多年；只有一种情操能让人继续生存下去——那就是勇气！全世界的希望都寄托在这十四名勇士身上，他们将飞向太空。让全人类目睹你们的英勇事迹！愿上帝保佑，祝你们好运！</p>
<p>PS：找本.阿弗莱克的电影，找到这部看过的《世界末日》，看到现在，剧中美国总统的这段演讲，让我深受感动和鼓舞。在突如其来的灾难面前人类是多么渺小，但是我们从来没有惧怕过什么！<br />
<h3 id="related_posts">相关日志</h3>
<ul class="related_post">
<li><a href="http://omiga.org/blog/archives/62" title="范冰冰《苹果》">范冰冰《苹果》</a></li>
<li><a href="http://omiga.org/blog/archives/14" title="期待《黑暗物质&#8211;黄金罗盘》">期待《黑暗物质&#8211;黄金罗盘》</a></li>
</ul>
<hr />
<p><small>© omiga for <a href="http://omiga.org/blog">omiga</a>, 2008. |
<a href="http://omiga.org/blog/archives/742">Permalink</a> |
<a href="http://omiga.org/blog/archives/742#comments">No comment</a> |
Add to
<a href="http://del.icio.us/post?url=http://omiga.org/blog/archives/742&title=勇气">del.icio.us</a>
<br/>
Post tags: <a href="http://omiga.org/blog/archives/tag/%e4%b8%96%e7%95%8c%e6%9c%ab%e6%97%a5" rel="tag">世界末日</a>, <a href="http://omiga.org/blog/archives/tag/%e6%9c%ac%e9%98%bf%e5%bc%97%e8%8e%b1%e5%85%8b" rel="tag">本.阿弗莱克</a>, <a href="http://omiga.org/blog/archives/tag/%e7%94%b5%e5%bd%b1" rel="tag">电影</a><br/>
</small></p>]]></content:encoded>
			<wfw:commentRss>http://omiga.org/blog/archives/742/feed</wfw:commentRss>
		</item>
		<item>
		<title>javascript之正则表达式（一）</title>
		<link>http://omiga.org/blog/archives/714</link>
		<comments>http://omiga.org/blog/archives/714#comments</comments>
		<pubDate>Wed, 10 Dec 2008 13:34:03 +0000</pubDate>
		<dc:creator>omiga</dc:creator>
		
		<category><![CDATA[front-end]]></category>

		<category><![CDATA[javascript]]></category>

		<category><![CDATA[regexp]]></category>

		<category><![CDATA[regular expression]]></category>

		<category><![CDATA[正则]]></category>

		<category><![CDATA[正则表达式]]></category>

		<guid isPermaLink="false">http://omiga.org/blog/?p=714</guid>
		<description><![CDATA[定义
在javascript我们可以通过内建的类来定义一个正则表达式。
var reName = new RegExp("omiga");
实际上RegExp类的构造函数可以接受两个参数，除了本身需要匹配的模式字符串外，还可以定义指定额外处理方式的第二个参数。
var reName = new RegExp("omiga","i");　//忽略大小写
我很好奇输出reName会得到什么结果呢？于是：
document.write(reName);
得到结果：/omiga/i，于是我们得到javascript中正则表达式的第二种定义方法（perl风格）：
var reName = /omiga/;
那第二个参数呢？当然，同样可以为其指定第二个参数：
var reName = /omiga/i;
这两种定义方式都是可行的，完全可以根据个人习惯进行选择。就像可以使用var s = new String(&#8221;for a simple life&#8221;);定义字符串的同时还可以使用var s = &#8220;for a simple life&#8221;;来定义是完全相同的。建议使用perl风格的写法，除了简洁外，还省去了使用RegExp构造函数定义时需要对“\”转义的麻烦。
如果要匹配字符“\”，perl风格的写法是：
var res = /\\/;
而构造函数的写法则需要对两个“\”都进行转义：
var res = new RegExp("\\\\");
感觉上是不是就麻烦了很多？
记住，在一个完整的正则表达式中“\”后面总是跟着另外一个字符。
javascript中的正则表达式
其实上面已经在开始讲了javascript对正则表达式的实现方式了，只定义了正则表达式，但是如何在javascript中真正使用正则表达式呢？在javascript中RegExp和String对象都有处理正则表达式的方法。

test RegExp的test方法用来测试字符串是否匹配给出的匹配模式，返回布尔值；
exec RegExp的exec方法返回包含第一个匹配的的数组或null；
match String的match方法返回包含所有匹配子字符串的数组；
replace String的replace方法完成string的替换操作，支持正则表达式；
search 与String的indexof方法类似，不同的是search支持正则表达式，而不仅仅是字符串；
split 按照一定规则拆分字符串并将子字符串存储到数组中的String方法。

关于这些函数的具体使用方法，可以参阅JS的相关函数手册。
一个实例对象除了方法当然还有属性，一个正则表达式有以下属性：

global 布尔值，若全局选项g已设置则返回true，否则返回false；
ignoreCase 布尔值，若忽略大小写选项i已设置则返回true，否则返回false；
lastIndex 整数，使用exec或test方法时被填入，表示下次匹配将会从哪个字符位置开始；
multiline 布尔值，表示多行模式选项m是否设置，若设置则返回true，否则返回false；
source 正则表达式的元字符串形式。/\\/的source将返回”\\“。

元字符
在正则表达式中有一些特殊的字符符号我们是不能直接使用的，必须对其进行转义后才能使用。如“\”，因为这些字符在正则表达式中有特殊的语法含义，这类字符被称为元字符，正则表达式中的元字符有：
.,\,/,*,?,+,[,(,),],{,},^,$,&#124;
可能不太好记忆，当无法确定某个字符是否是元字符的时候就勇敢的对其进行转义是没有错的，对不是元字符的字符进行转义是不会出什么问题的，但是如果不对元字符转义就会有意想不到的错误产生了。
分组匹配
一个简单的字符就可以是一个匹配模式，但是现实情况往往不会这么简单。比如我们要匹配一个0-9的数字：
var i = 5;
var j = 6;
这个正则表达式要如何书写才能同时匹配这两个数字呢？简单的字符表达式当然无法完成了，这个时候我们就可以为0-9十个数字来定义一个字符集合（字符类）来进行匹配。
var reNum = /[0123456789]/;
document.write(reNum.test(i)); [...]]]></description>
			<content:encoded><![CDATA[<p><strong>定义</strong></p>
<p>在javascript我们可以通过内建的类来定义一个正则表达式。</p>
<pre>var reName = new RegExp("omiga");</pre>
<p>实际上RegExp类的构造函数可以接受两个参数，除了本身需要匹配的模式字符串外，还可以定义指定额外处理方式的第二个参数。</p>
<pre>var reName = new RegExp("omiga","i");　//忽略大小写</pre>
<p>我很好奇输出reName会得到什么结果呢？于是：</p>
<pre>document.write(reName);</pre>
<p>得到结果：/omiga/i，于是我们得到javascript中正则表达式的第二种定义方法（perl风格）：</p>
<pre>var reName = /omiga/;</pre>
<p>那第二个参数呢？当然，同样可以为其指定第二个参数：</p>
<pre>var reName = /omiga/i;</pre>
<p>这两种定义方式都是可行的，完全可以根据个人习惯进行选择。就像可以使用var s = new String(&#8221;for a simple life&#8221;);定义字符串的同时还可以使用var s = &#8220;for a simple life&#8221;;来定义是完全相同的。建议使用perl风格的写法，除了简洁外，还省去了使用RegExp构造函数定义时需要对“\”转义的麻烦。</p>
<p>如果要匹配字符“\”，perl风格的写法是：</p>
<pre>var res = /\\/;</pre>
<p>而构造函数的写法则需要对两个“\”都进行转义：</p>
<pre>var res = new RegExp("\\\\");</pre>
<p>感觉上是不是就麻烦了很多？</p>
<p>记住，在一个完整的正则表达式中“\”后面总是跟着另外一个字符。</p>
<p><strong>javascript中的正则表达式</strong></p>
<p>其实上面已经在开始讲了javascript对正则表达式的实现方式了，只定义了正则表达式，但是如何在javascript中真正使用正则表达式呢？在javascript中RegExp和String对象都有处理正则表达式的方法。</p>
<ul>
<li><strong>test </strong>RegExp的test方法用来测试字符串是否匹配给出的匹配模式，返回布尔值；</li>
<li><strong>exec</strong> RegExp的exec方法返回包含第一个匹配的的数组或null；</li>
<li><strong>match</strong> String的match方法返回包含所有匹配子字符串的数组；</li>
<li><strong>replace</strong> String的replace方法完成string的替换操作，支持正则表达式；</li>
<li><strong>search</strong> 与String的indexof方法类似，不同的是search支持正则表达式，而不仅仅是字符串；</li>
<li><strong>split </strong>按照一定规则拆分字符串并将子字符串存储到数组中的String方法。</li>
</ul>
<p>关于这些函数的具体使用方法，可以参阅JS的相关函数手册。</p>
<p>一个实例对象除了方法当然还有属性，一个正则表达式有以下属性：</p>
<ul>
<li><strong>global</strong> 布尔值，若全局选项g已设置则返回true，否则返回false；</li>
<li><strong>ignoreCase</strong> 布尔值，若忽略大小写选项i已设置则返回true，否则返回false；</li>
<li><strong>lastIndex</strong> 整数，使用exec或test方法时被填入，表示下次匹配将会从哪个字符位置开始；</li>
<li><strong>multiline</strong> 布尔值，表示多行模式选项m是否设置，若设置则返回true，否则返回false；</li>
<li><strong>source</strong> 正则表达式的元字符串形式。/\\/的source将返回”\\“。</li>
</ul>
<p><strong>元字符</strong></p>
<p>在正则表达式中有一些特殊的字符符号我们是不能直接使用的，必须对其进行转义后才能使用。如“\”，因为这些字符在正则表达式中有特殊的语法含义，这类字符被称为元字符，正则表达式中的元字符有：</p>
<pre>.,\,/,*,?,+,[,(,),],{,},^,$,|</pre>
<p>可能不太好记忆，当无法确定某个字符是否是元字符的时候就勇敢的对其进行转义是没有错的，对不是元字符的字符进行转义是不会出什么问题的，但是如果不对元字符转义就会有意想不到的错误产生了。</p>
<p><strong>分组匹配</strong></p>
<p>一个简单的字符就可以是一个匹配模式，但是现实情况往往不会这么简单。比如我们要匹配一个0-9的数字：</p>
<pre>var i = 5;
var j = 6;</pre>
<p>这个正则表达式要如何书写才能同时匹配这两个数字呢？简单的字符表达式当然无法完成了，这个时候我们就可以为0-9十个数字来定义一个字符集合（字符类）来进行匹配。</p>
<pre>var reNum = /[0123456789]/;
document.write(reNum.test(i)); //true
document.write(reNum.test(j)); //true</pre>
<p>使用test方法测试匹配结果都输出了true。</p>
<p><strong>范围匹配</strong></p>
<p>上一个例子使用了分组匹配，但是如果要匹配所有26个英文字母，还要包括大小写，仍然可以使用分组匹配：</p>
<pre>var reLetter = /abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ/;</pre>
<p>恩，这个正则表达式是完全正确的，但是是不是感觉太长了，有没有办法让它更为简洁一点？当然是有的，为字符或数字指定一个匹配范围就可以了。</p>
<pre>var reNum = /[0-9]/;
var reLetter = /[a-zA-Z]/;</pre>
<p>这样就可以了，“-”用来定义一个匹配区间，字符的具体顺序由ASCII字符表确定，所以不能写成/A-z/，因为Z-a之间还包含着其他字符。</p>
<p><strong>取非匹配</strong></p>
<p>很多编程语言中都使用“！”取非操作，包括javascript。正则表达式中也有取非操作，比如/[^0-9]/就是一个取非操作的正则表达式了。</p>
<pre>var i = 5;
var s = "o";
var rec = /[^0-9]/;
document.write(rec.test(i)); //false
document.write(rec.test(s)); //true</pre>
<p>符号^用来完成取非操作，同时^0-9也是必须包含在[]中的，因为^其实还有另外一种特殊用途。</p>
<p><strong>特殊字符</strong></p>
<p>可能你觉得/[a-zA-Z]/，/[0-9]/还是不够简洁，的确，在正则表达式中一些特定的字符集合可以使用一些特殊的元字符来代替。这些特殊的字符并不是必不可少的，但是却可以给我们带来不少方便。/[0-9]/就完全可以写成这样：</p>
<pre>var reNum = /\d/;</pre>
<p>那大小写字母字符类呢？很遗憾，除了POSIX字符类（javascript不支持POSIX字符类）中有支持大小写字母的特殊字符类外并没有专门替代方法。</p>
<p>常见的特殊字符有：</p>
<ul>
<li>\d　任何一个数字字符，等价于[0-9]</li>
<li>\D　任何一个非数字字符，等价于[^0-9]</li>
<li>\w　任何一个字母数字或下划线字符，等价于[a-zA-Z_]</li>
<li>\W　任何一个非字母数字和下划线字符，等价于[^a-zA-Z_]</li>
<li>\s　任何一个空白字符，包括换页符、换行符、回车符、制表符和垂直制表符，等价于[\f\n\r\t\v]</li>
<li>\S　任何一个非空白字符，等价于[^\f\n\r\t\v]</li>
<li>.　换行和回车以外的任何单个字符，等价于[^\n\r]</li>
</ul>
<p>相同字母大小写总是进行取非操作的。</p>
<p><strong>十六进制和八进制字符</strong></p>
<p>在正则表达式中使用十六进制或八进制字符也是完全可行的，他们所匹配的字符即是由其转换成十进制后的数值在ASCII中所对应的字符。</p>
<pre>var reAt = /\x40/; //十六进制字符\x40(64)对应字符“@”
var reA = /\0101/; //八进制字符\0101(65)对应字符“A”</pre>
<p><strong>重复匹配</strong></p>
<p>以匹配一个email地址为例，mymail@mail.com这样的一个email地址必须包括一个合法的用户名mymail，@符号以及一个合法的域。其中用户名和域名的字符个数都是无法判断的，但是有一点是肯定的——用户名必须至少是一个字符，域名至少是两个字符中间还必须有一个点号。于是我们可以这样做：</p>
<pre>var reMail = /\w+@\w+\.\w+/i;
var email = "mymail@mail.com";
document.write(reMail.test(email)); //true</pre>
<p>&#8220;+&#8221;表示字符出现一次或多次，至少出现一次。这个正则表达式其实并不能匹配所有合法的email地址，后面我们继续完善。</p>
<p>除了“+”可以指定至少匹配一次外，还有很多其他的可以指定匹配次数的方式。</p>
<ul>
<li>?　出现零次或一次，最多一次</li>
<li>*　出现任意次（零次、一次、多次）</li>
<li>+　出现一次或多次，至少一次</li>
<li>{n}　能且只能出现n次</li>
<li>{n,m}　至少出现n次，最多出现m次</li>
</ul>
<p>www.gogle.com，www.google.com，www.gooogle.com这三个网址都能正确地打开google的首页，于是就可以用{n,m}匹配其中的1个，2个或3个字母&#8221;o&#8221;。</p>
<pre>var gogle = "www.gogle.com";
var google = "www.google.com";
var gooogle = "www.gooogle.com";
var reGoogle = /w{3}\.go{1,3}gle\.com/i;
document.write(reGoogle.test(gogle)); //true
document.write(reGoogle.test(google)); //true
document.write(reGoogle.test(gooogle)); //true</pre>
<p>在上面的正则表达式中，我们使用了{3}来制定字符“w”能且只</p>
<p>能出现3次，用{1,3}来制定字母“o”可以出现1到3次。</p>
<p><strong>防止过度匹配</strong></p>
<p>有这样一段HTML文本：</p>
<pre>var html = "&lt;em&gt;omiga&lt;/em&gt;for a simple life&lt;em&gt;http://omiga.org/&lt;/em&gt;";</pre>
<p>如果现在要讲&lt;em&gt;&lt;/em&gt;及其中间的文本匹配出来，正则表达式可以这样写：</p>
<pre>var reEm1 = /&lt;em&gt;.*&lt;\/em&gt;/gi;
document.write(html.match(reEm1)); //"&lt;em&gt;omiga&lt;/em&gt;for a simple life&lt;em&gt;http://omiga.org/&lt;/em&gt;"
var reEm2 = /&lt;em&gt;.*?&lt;\/em&gt;/gi;
document.write(html.match(reEm2)); //&lt;em&gt;omiga&lt;/em&gt;,&lt;em&gt;http://omiga.org/&lt;/em&gt;</pre>
<p>当使用贪婪模式的时候，&#8221;.*&#8221;会最大程度地进行字符匹配，所以输出了整个字符串。而在惰性模式中，&#8221;.*?&#8221;只进行最小限度的匹配，所以完整的输出了我们需要的字符串。</p>
<p>惰性模式的语法很简单，即是在贪婪模式后面加上一个“?”即可。</p>
<ul>
<li>* &#8211;&gt; *?</li>
<li>+ &#8211;&gt; +?</li>
<li>{n,} &#8211;&gt; {n,}?</li>
</ul>
<p><strong>位置匹配</strong></p>
<p>var s = &#8220;_Don&#8217;t do it!&#8221;;</p>
<p>如何将单词“do”匹配出来？it&#8217;s easy!</p>
<pre>var reDo = /do/gi;
document.write(s.match(reDo)); //Do,do</pre>
<p>但是这个简单的正则表达式/do/gi将“don&#8217;t”中的“do”也进行了匹配，可这并不是想要的结果。而在正则表达式中有专门用来进行单词边界匹配的限定符”\b“。</p>
<pre>var reDo = /\bdo\b/gi;
document.write(s.match(reDo)); //do</pre>
<p>&#8220;\b&#8221;到底匹配的什么呢？&#8221;\b&#8221;匹配的是一个位置，一个位于”\w“（字母，数字，下划线）和”\W“之间的位置。</p>
<p>既然有&#8221;\b&#8221;，那有&#8221;\B&#8221;吗？当然，他和”\b“刚好相反，由来匹配一个不是单词边界的位置。比如上例中匹配&#8221;don&#8217;t&#8221;中的&#8221;do&#8221;时&#8221;\B&#8221;就可派上用场。</p>
<pre>var reDo = /\Bdo\B/gi;
document.write(s.match(reDo)); //Do</pre>
<p>在介绍取非匹配的时候介绍^只用位于[]并紧跟[方能取非匹配，而^还有另外一种用途——字符串边界匹配。</p>
<ul>
<li>^　用来匹配字符串开头</li>
<li>$　用来匹配字符串结尾</li>
</ul>
<p>比如我们要匹配一个http://omiga.org形式的org域名：</p>
<pre>var url = "http://omiga.org";
var reUrl = /^(http):\/\/omiga\.(org)$/gi;
document.write(reUrl.test(url)); //true</pre>
<p>正则表达式reUrl限制url必须以&#8221;http&#8221;开头，以&#8221;org&#8221;结尾。</p>
<p>又如经常被扩展的string方法trim：</p>
<pre>function trim(s){
　　return s.replace(/(^\s*)|(\s*$)/g,"");
}</pre>
<p>同时我们可以在整个模式的最前面使用(?m)来启用分行匹配模式。这样，^不但匹配正常的字符串开头，还将匹配行分隔符（换行符）后面的开始位置；$不仅匹配正常的字符串结尾，还将匹配行分隔符（换行符）后面的结束位置。<br />
<h3 id="related_posts">相关日志</h3>
<ul class="related_post">
<li><a href="http://omiga.org/blog/archives/762" title="javascript之正则表达式（二）">javascript之正则表达式（二）</a></li>
<li><a href="http://omiga.org/blog/archives/409" title="javascript图片遮罩放大">javascript图片遮罩放大</a></li>
<li><a href="http://omiga.org/blog/archives/368" title="javascript的赋值">javascript的赋值</a></li>
<li><a href="http://omiga.org/blog/archives/255" title="jQuery中一些不常用的方法属性">jQuery中一些不常用的方法属性</a></li>
<li><a href="http://omiga.org/blog/archives/139" title="一些有用的JavaScript函数（3）">一些有用的JavaScript函数（3）</a></li>
</ul>
<hr />
<p><small>© omiga for <a href="http://omiga.org/blog">omiga</a>, 2008. |
<a href="http://omiga.org/blog/archives/714">Permalink</a> |
<a href="http://omiga.org/blog/archives/714#comments">No comment</a> |
Add to
<a href="http://del.icio.us/post?url=http://omiga.org/blog/archives/714&title=javascript之正则表达式（一）">del.icio.us</a>
<br/>
Post tags: <a href="http://omiga.org/blog/archives/tag/javascript" rel="tag">javascript</a>, <a href="http://omiga.org/blog/archives/tag/regexp" rel="tag">regexp</a>, <a href="http://omiga.org/blog/archives/tag/regular-expression" rel="tag">regular expression</a>, <a href="http://omiga.org/blog/archives/tag/%e6%ad%a3%e5%88%99" rel="tag">正则</a>, <a href="http://omiga.org/blog/archives/tag/%e6%ad%a3%e5%88%99%e8%a1%a8%e8%be%be%e5%bc%8f" rel="tag">正则表达式</a><br/>
</small></p>]]></content:encoded>
			<wfw:commentRss>http://omiga.org/blog/archives/714/feed</wfw:commentRss>
		</item>
		<item>
		<title>Google Reader又改版了</title>
		<link>http://omiga.org/blog/archives/706</link>
		<comments>http://omiga.org/blog/archives/706#comments</comments>
		<pubDate>Fri, 05 Dec 2008 01:57:23 +0000</pubDate>
		<dc:creator>omiga</dc:creator>
		
		<category><![CDATA[IT News]]></category>

		<category><![CDATA[google]]></category>

		<category><![CDATA[google reader]]></category>

		<category><![CDATA[GR]]></category>

		<guid isPermaLink="false">http://omiga.org/blog/?p=706</guid>
		<description><![CDATA[
正看着GR，突然变了～···改动很大，比以往任何一次都大～···google喜欢的圆角全没了～···添加按钮也改到最上面去了～···好！改的好！
相关日志

Gmail theme
IE Tab与谷歌拼音输入法有冲突
Google Chrome已经可以下载了
Google Chrome
使用google日历进行日程管理


© omiga for omiga, 2008. &#124;
Permalink &#124;
No comment &#124;
Add to
del.icio.us

Post tags: google, google reader, GR
]]></description>
			<content:encoded><![CDATA[<p><img class="alignnone" title="google reader" src="http://omiga.org/img/gr_ui.gif" alt="" width="581" height="340" /></p>
<p>正看着GR，突然变了～···改动很大，比以往任何一次都大～···google喜欢的圆角全没了～···添加按钮也改到最上面去了～···好！改的好！<br />
<h3 id="related_posts">相关日志</h3>
<ul class="related_post">
<li><a href="http://omiga.org/blog/archives/655" title="Gmail theme">Gmail theme</a></li>
<li><a href="http://omiga.org/blog/archives/430" title="IE Tab与谷歌拼音输入法有冲突">IE Tab与谷歌拼音输入法有冲突</a></li>
<li><a href="http://omiga.org/blog/archives/329" title="Google Chrome已经可以下载了">Google Chrome已经可以下载了</a></li>
<li><a href="http://omiga.org/blog/archives/322" title="Google Chrome">Google Chrome</a></li>
<li><a href="http://omiga.org/blog/archives/58" title="使用google日历进行日程管理">使用google日历进行日程管理</a></li>
</ul>
<hr />
<p><small>© omiga for <a href="http://omiga.org/blog">omiga</a>, 2008. |
<a href="http://omiga.org/blog/archives/706">Permalink</a> |
<a href="http://omiga.org/blog/archives/706#comments">No comment</a> |
Add to
<a href="http://del.icio.us/post?url=http://omiga.org/blog/archives/706&title=Google Reader又改版了">del.icio.us</a>
<br/>
Post tags: <a href="http://omiga.org/blog/archives/tag/google" rel="tag">google</a>, <a href="http://omiga.org/blog/archives/tag/google-reader" rel="tag">google reader</a>, <a href="http://omiga.org/blog/archives/tag/gr" rel="tag">GR</a><br/>
</small></p>]]></content:encoded>
			<wfw:commentRss>http://omiga.org/blog/archives/706/feed</wfw:commentRss>
		</item>
	</channel>
</rss>
