<?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>Tony Bai &#187; 果果</title>
	<atom:link href="http://tonybai.com/tag/%e6%9e%9c%e6%9e%9c/feed/" rel="self" type="application/rss+xml" />
	<link>https://tonybai.com</link>
	<description>一个程序员的心路历程</description>
	<lastBuildDate>Fri, 17 Apr 2026 00:21:29 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.2.1</generator>
		<item>
		<title>亲子游之丹东凤凰山</title>
		<link>https://tonybai.com/2021/09/07/a-tour-of-phoenix-mountain/</link>
		<comments>https://tonybai.com/2021/09/07/a-tour-of-phoenix-mountain/#comments</comments>
		<pubDate>Tue, 07 Sep 2021 13:16:15 +0000</pubDate>
		<dc:creator>bigwhite</dc:creator>
				<category><![CDATA[生活簿]]></category>
		<category><![CDATA[东北]]></category>
		<category><![CDATA[丹东]]></category>
		<category><![CDATA[亲子]]></category>
		<category><![CDATA[亲子游]]></category>
		<category><![CDATA[冬天]]></category>
		<category><![CDATA[凤凰山]]></category>
		<category><![CDATA[凤凰广场]]></category>
		<category><![CDATA[华山]]></category>
		<category><![CDATA[大宝]]></category>
		<category><![CDATA[女儿]]></category>
		<category><![CDATA[家庭]]></category>
		<category><![CDATA[小牛背]]></category>
		<category><![CDATA[开学]]></category>
		<category><![CDATA[情人谷吊桥]]></category>
		<category><![CDATA[旅游]]></category>
		<category><![CDATA[暑假]]></category>
		<category><![CDATA[果果]]></category>
		<category><![CDATA[棋盘山]]></category>
		<category><![CDATA[爬山]]></category>
		<category><![CDATA[登山]]></category>
		<category><![CDATA[神马峰]]></category>
		<category><![CDATA[秋天]]></category>
		<category><![CDATA[老牛背]]></category>
		<category><![CDATA[自驾游]]></category>
		<category><![CDATA[金秋]]></category>
		<category><![CDATA[马耳山]]></category>
		<category><![CDATA[驴友]]></category>
		<category><![CDATA[黄山]]></category>
		<category><![CDATA[黄金周]]></category>
		<category><![CDATA[黑风口栈道]]></category>

		<guid isPermaLink="false">https://tonybai.com/?p=3282</guid>
		<description><![CDATA[本文永久链接 &#8211; https://tonybai.com/2021/09/07/a-tour-of-phoenix-mountain 提到东北，人们的第一印象一定是皑皑白雪的世界。东北雪季的冬天的确很美，但对于我这个东北人来说，9-10月份的秋天才是我心目中最美的时节：天高气爽，温度宜人，瓦蓝瓦蓝的天搭配着五颜六色的大地，让人心旷神怡！在这样的季节中，最佳户外活动就是爬山了。 金秋时节的山是最美丽的，漫山遍野的的植被会随着时间的推移而呈现出不同的颜色：初秋的绿、中秋的红以及深秋的金黄，浸染着人们的心扉。 这两年由于疫情原因，原本安排的各种亲子游家庭活动无奈取消。这个暑假临近结束的时候，恰逢一波疫情刚刚过去，于是决定和孩子到周边玩一玩，大宝爱爬山，我们就找沈城周边的山。连续两周，先去了棋盘山，又去了马耳山，但这两座山爬起来实在没有啥难度，大宝觉得不过瘾。 开学第一周，孩子还处于“身心转换”阶段，课业不多，并且是错峰旅游的好时候，于是决定带孩子去一趟辽宁这边最难征服的山峰-丹东凤凰山。2017年十一黄金周我们是去过一次凤凰山的，但由于游客太多，我们连四分之一的路程都没走完就匆匆坐索道下山了。这次去凤凰山也是为了弥补大宝没能登顶的遗憾^_^。二宝太小，由老婆在家照顾，我和大宝自驾出行。 虽然是错峰，但由于有了上次的“糟糕经历”，我们还是决定早早出发。早上5点，我们的车就驶出了小区大门。秋日的早晨同样是美丽的，并且我们走的是丹阜高速沈阳到凤城段，它号称东北最美高速公路。两侧连绵的群山，各色的植被以及不时出现在前方山顶的“流体雾”都让我们两个半小时的行程显得不是那么单调。 我们7点半多一些就到达了景区正门，同时这里也是凤凰山的山门。 买票并补充食物和水后，我们准时从凤凰台出发开始登山。 为什么喜欢登山？登山本是一种休闲的户外活动，在开发的很好的景区，登山这种户外活动的难度级别不高。在我来看，登山可以满足人类的“征服欲”，提升自信心。对于成年人来说，登山也是一次难得的“放空自己”的机会。对于每天混迹于都市喧嚣中的现代人类来说，呼吸着大山中鲜甜的空气，听听蝉鸣、鸟叫和流水声不失为是一种极致的享受。对于尚未成年的孩子而言，这也是一种“行万里路”的体验：亲近了大自然，磨练了意志，增强了体魄。对于一个家庭而言，登山是一个很好的亲子互动的活动，通过爬山过程与子女的交流互动，增进了了父母与子女之间的相互了解与理解。 对于我而言，带大宝来爬山，更多是考虑这是一种亲子互动，平时工作较忙，孩子学业较重，少有大段时间相互交流，而爬山是一个很好的机会。大宝喜欢挑战有难度的山峰，我倾向于与孩子有更多亲子互动时间，于是我们确定了此次登山的方式与路线：徒步走全程环线，也就是整个凤凰山景区最远的那条路线。按照景区检票口处的导游图提示，这个路线需要7-8个小时。 按照爬山攻略的建议，我们从西山景区进入，凤凰山的主要景点以及最险的几处景点都集中在西山景区内。 一进入景区，就感受到了征服凤凰山的难度，像下图中这种70度以上的路线在景区是既多又长： 不过，爬山就是这样：征服完一处惊险之地后，大山就会“赐予”你一处美景： 现在是初秋，山上的植被还没有呈现霜打后的红色，但绿植在阳光的映衬下也是格外养眼。 凤凰山的地貌与华山很像，险处都是那种光秃秃的山脊，两侧都是悬崖，无依无靠，难怪有东北“小华山”的美誉。 下图中后面是小牛背景点： 凤凰山最著名的景点是老牛背，也正是由于太险，这里没有留下经过老牛背时的照片，下面是大宝过老牛背前的照片，从照片中就能感受到老牛背的难度： 凤凰山景区内有两处以玻璃为支撑的景点，一处是玻璃栈道，一处是玻璃桥。前者较短，由于我轻度恐高，我们选择了体验玻璃栈道： 老牛背虽然不是景区最高峰，但过了老牛背后，后续景点的难度就有所降低了。 从黑风口栈道开始，就是一路下山的行程，和一些我们爬过的山不同的是，凤凰山这里的下山栈道绝对属于超级长的，我和大宝在紧贴峭壁的栈道上整整走了2个多小时，直到到达情人谷吊桥才算是结束栈道之旅。 从情人谷吊桥开始又走了一个多小时才回到凤凰山山门处，此时我的手机显示我今天已经走了36000多步，这是一个破纪录的数字。如果按照一步50厘米计算，我们走了将近20公里。从8点从凤凰台出发到15:40回到山门，我们整整走了7小时40分钟，和导游图中全程环线的估计时间是一样的。 此行我和大宝都很累，但回程时躺在车里酣睡的大宝表情中所能看出的那种快乐与满足让我睡意全失，心里顿升起一种作为父亲的责任感，于是专心开车并安全将大宝带回了家^_^。 这次凤凰山登山之旅无疑是成功的，这也是自上次华山之行后最具挑战也是最开心的一次登山活动了。丹东凤凰山景区的硬件条件是十分不错的，如果再增加一些文创方面的运营就更好了，这里强烈推荐大家来凤凰山体验。 大宝已经和我确定了下一次挑战目标：安徽黄山。不过究竟何时可以实现，还要看国内疫情的情况了。 下面是我们的登山时刻记录(从西山景区进入，徒步走全程环线)，可供驴友参考： 8:00 从凤凰台出发 8:40 到达检票口 8:45 到达药王庙 8:52 到达凤凰广场 9:00 到达西山景区入口 9:15 爬过通玄洞 9:43 到达昌龙岭 9:47 到达小牛背 10:00 到达烽火台 10:21 到达罗汉峰 10:39 到达将军峰 11:05 到达老牛背 11:17 到达百步紧 11:37 到达老虎口 [...]]]></description>
			<content:encoded><![CDATA[<p><a href="https://tonybai.com/2021/09/07/a-tour-of-phoenix-mountain">本文永久链接</a> &#8211; https://tonybai.com/2021/09/07/a-tour-of-phoenix-mountain</p>
<p>提到东北，人们的第一印象一定是皑皑白雪的世界。东北雪季的冬天的确很美，但对于我这个东北人来说，9-10月份的秋天才是我心目中最美的时节：天高气爽，温度宜人，瓦蓝瓦蓝的天搭配着五颜六色的大地，让人心旷神怡！在这样的季节中，最佳户外活动就是爬山了。</p>
<p>金秋时节的山是最美丽的，漫山遍野的的植被会随着时间的推移而呈现出不同的颜色：<strong>初秋的绿、中秋的红以及深秋的金黄</strong>，浸染着人们的心扉。</p>
<p>这两年由于疫情原因，原本安排的各种亲子游家庭活动无奈取消。这个暑假临近结束的时候，恰逢一波疫情刚刚过去，于是决定和孩子到周边玩一玩，大宝爱爬山，我们就找沈城周边的山。连续两周，先去了<a href="https://daughter.tonybai.com/2021/08/15/climbing-qipan-mountain-and-visiting-the-zoo/">棋盘山</a>，又去了<a href="https://daughter.tonybai.com/2021/08/22/let-me-loose-at-the-weekend-before-school-start/">马耳山</a>，但这两座山爬起来实在没有啥难度，大宝觉得不过瘾。</p>
<p>开学第一周，孩子还处于“身心转换”阶段，课业不多，并且是错峰旅游的好时候，于是决定带孩子去一趟辽宁这边最难征服的山峰-丹东凤凰山。<a href="https://daughter.tonybai.com/2017/10/04/phenix-mountain-tour-at-national-day-2017/">2017年十一黄金周我们是去过一次凤凰山的</a>，但由于游客太多，我们连四分之一的路程都没走完就匆匆坐索道下山了。这次去凤凰山也是为了弥补大宝没能登顶的遗憾^_^。<a href="https://daughter2.tonybai.com">二宝</a>太小，由老婆在家照顾，我和大宝自驾出行。</p>
<p>虽然是错峰，但由于有了上次的“糟糕经历”，我们还是决定早早出发。早上5点，我们的车就驶出了小区大门。秋日的早晨同样是美丽的，并且我们走的是丹阜高速沈阳到凤城段，它号称东北最美高速公路。两侧连绵的群山，各色的植被以及不时出现在前方山顶的“流体雾”都让我们两个半小时的行程显得不是那么单调。</p>
<p><img src="https://tonybai.com/wp-content/uploads/a-tour-of-phoenix-mountain/1.jpg" alt="img{512x368}" /></p>
<p><img src="https://tonybai.com/wp-content/uploads/a-tour-of-phoenix-mountain/2.jpg" alt="img{512x368}" /></p>
<p>我们7点半多一些就到达了景区正门，同时这里也是凤凰山的山门。</p>
<p><img src="https://tonybai.com/wp-content/uploads/a-tour-of-phoenix-mountain/3.jpeg" alt="img{512x368}" /></p>
<p>买票并补充食物和水后，我们准时从凤凰台出发开始登山。</p>
<blockquote>
<p>为什么喜欢登山？登山本是一种休闲的户外活动，在开发的很好的景区，登山这种户外活动的难度级别不高。在我来看，登山可以满足人类的“征服欲”，提升自信心。对于成年人来说，登山也是一次难得的“放空自己”的机会。对于每天混迹于都市喧嚣中的现代人类来说，呼吸着大山中鲜甜的空气，听听蝉鸣、鸟叫和流水声不失为是一种极致的享受。对于尚未成年的孩子而言，这也是一种“行万里路”的体验：亲近了大自然，磨练了意志，增强了体魄。对于一个家庭而言，登山是一个很好的亲子互动的活动，通过爬山过程与子女的交流互动，增进了了父母与子女之间的相互了解与理解。</p>
</blockquote>
<p>对于我而言，带大宝来爬山，更多是考虑这是一种亲子互动，平时工作较忙，孩子学业较重，少有大段时间相互交流，而爬山是一个很好的机会。大宝喜欢挑战有难度的山峰，我倾向于与孩子有更多亲子互动时间，于是我们确定了此次登山的方式与路线：<strong>徒步走全程环线</strong>，也就是整个凤凰山景区最远的那条路线。按照景区检票口处的导游图提示，这个路线需要7-8个小时。</p>
<p><img src="https://tonybai.com/wp-content/uploads/a-tour-of-phoenix-mountain/4.jpeg" alt="img{512x368}" /></p>
<p>按照爬山攻略的建议，我们从西山景区进入，凤凰山的主要景点以及最险的几处景点都集中在西山景区内。</p>
<p><img src="https://tonybai.com/wp-content/uploads/a-tour-of-phoenix-mountain/5.jpeg" alt="img{512x368}" /></p>
<p>一进入景区，就感受到了征服凤凰山的难度，像下图中这种70度以上的路线在景区是既多又长：</p>
<p><img src="https://tonybai.com/wp-content/uploads/a-tour-of-phoenix-mountain/6.jpeg" alt="img{512x368}" /></p>
<p>不过，爬山就是这样：征服完一处惊险之地后，大山就会“赐予”你一处美景：</p>
<p><img src="https://tonybai.com/wp-content/uploads/a-tour-of-phoenix-mountain/7.jpeg" alt="img{512x368}" /></p>
<p><img src="https://tonybai.com/wp-content/uploads/a-tour-of-phoenix-mountain/8.jpeg" alt="img{512x368}" /></p>
<p>现在是初秋，山上的植被还没有呈现霜打后的红色，但绿植在阳光的映衬下也是格外养眼。</p>
<p>凤凰山的地貌与华山很像，险处都是那种光秃秃的山脊，两侧都是悬崖，无依无靠，难怪有东北“小华山”的美誉。</p>
<p><img src="https://tonybai.com/wp-content/uploads/a-tour-of-phoenix-mountain/15.jpg" alt="img{512x368}" /></p>
<p>下图中后面是小牛背景点：</p>
<p><img src="https://tonybai.com/wp-content/uploads/a-tour-of-phoenix-mountain/9.jpeg" alt="img{512x368}" /></p>
<p>凤凰山最著名的景点是老牛背，也正是由于太险，这里没有留下经过老牛背时的照片，下面是大宝过老牛背前的照片，从照片中就能感受到老牛背的难度：</p>
<p><img src="https://tonybai.com/wp-content/uploads/a-tour-of-phoenix-mountain/10.jpeg" alt="img{512x368}" /></p>
<p>凤凰山景区内有两处以玻璃为支撑的景点，一处是玻璃栈道，一处是玻璃桥。前者较短，由于我轻度恐高，我们选择了体验玻璃栈道：</p>
<p><img src="https://tonybai.com/wp-content/uploads/a-tour-of-phoenix-mountain/11.jpeg" alt="img{512x368}" /><br />
<img src="https://tonybai.com/wp-content/uploads/a-tour-of-phoenix-mountain/12.jpeg" alt="img{512x368}" /></p>
<p>老牛背虽然不是景区最高峰，但过了老牛背后，后续景点的难度就有所降低了。</p>
<p><img src="https://tonybai.com/wp-content/uploads/a-tour-of-phoenix-mountain/13.jpeg" alt="img{512x368}" /><br />
<img src="https://tonybai.com/wp-content/uploads/a-tour-of-phoenix-mountain/14.jpeg" alt="img{512x368}" /></p>
<p>从黑风口栈道开始，就是一路下山的行程，和一些我们爬过的山不同的是，凤凰山这里的下山栈道绝对属于超级长的，我和大宝在紧贴峭壁的栈道上整整走了2个多小时，直到到达情人谷吊桥才算是结束栈道之旅。</p>
<p><img src="https://tonybai.com/wp-content/uploads/a-tour-of-phoenix-mountain/16.jpeg" alt="img{512x368}" /><br />
<img src="https://tonybai.com/wp-content/uploads/a-tour-of-phoenix-mountain/17.jpeg" alt="img{512x368}" /></p>
<p>从情人谷吊桥开始又走了一个多小时才回到凤凰山山门处，此时我的手机显示我今天已经走了36000多步，这是一个破纪录的数字。如果按照一步50厘米计算，我们走了将近20公里。从8点从凤凰台出发到15:40回到山门，我们整整走了7小时40分钟，和导游图中全程环线的估计时间是一样的。</p>
<p><img src="https://tonybai.com/wp-content/uploads/a-tour-of-phoenix-mountain/18.jpeg" alt="img{512x368}" /></p>
<p>此行我和大宝都很累，但回程时躺在车里酣睡的大宝表情中所能看出的那种快乐与满足让我睡意全失，心里顿升起一种作为父亲的责任感，于是专心开车并安全将大宝带回了家^_^。</p>
<p>这次凤凰山登山之旅无疑是成功的，这也是自上次<a href="https://daughter.tonybai.com/2019/08/17/xian-chongqing-tour-3rd-day-2019/">华山之行</a>后最具挑战也是最开心的一次登山活动了。丹东凤凰山景区的硬件条件是十分不错的，如果再增加一些文创方面的运营就更好了，这里强烈推荐大家来凤凰山体验。</p>
<p>大宝已经和我确定了下一次挑战目标：<strong>安徽黄山</strong>。不过究竟何时可以实现，还要看国内疫情的情况了。</p>
<p>下面是我们的登山时刻记录(从西山景区进入，徒步走全程环线)，可供驴友参考：</p>
<ul>
<li>8:00 从凤凰台出发</li>
<li>8:40 到达检票口</li>
<li>8:45 到达药王庙</li>
<li>8:52 到达凤凰广场</li>
<li>9:00 到达西山景区入口</li>
<li>9:15 爬过通玄洞</li>
<li>9:43 到达昌龙岭</li>
<li>9:47 到达小牛背</li>
<li>10:00 到达烽火台</li>
<li>10:21 到达罗汉峰</li>
<li>10:39 到达将军峰</li>
<li>11:05 到达老牛背</li>
<li>11:17 到达百步紧</li>
<li>11:37 到达老虎口</li>
<li>11:50 到达箭眼</li>
<li>12:06 到达神马蜂</li>
<li>12:26 到达杜鹃坡</li>
<li>12:35 到达黑风口栈道</li>
<li>13:10 到达玻璃桥</li>
<li>13:34 到达古城栈道</li>
<li>14:24 到达情人谷吊桥</li>
<li>14:42 回到凤凰广场</li>
<li>15:05 回到检票口</li>
<li>15:40 回到山门</li>
</ul>
<hr />
<p>我的联系方式：</p>
<ul>
<li>微博：https://weibo.com/bigwhite20xx</li>
<li>微信公众号：iamtonybai</li>
<li>博客：tonybai.com</li>
<li>github: https://github.com/bigwhite</li>
</ul>
<p style='text-align:left'>&copy; 2021, <a href='https://tonybai.com'>bigwhite</a>. 版权所有. </p>
]]></content:encoded>
			<wfw:commentRss>https://tonybai.com/2021/09/07/a-tour-of-phoenix-mountain/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>二闺女一周岁了</title>
		<link>https://tonybai.com/2021/07/23/my-second-daughter-is-one-year-old/</link>
		<comments>https://tonybai.com/2021/07/23/my-second-daughter-is-one-year-old/#comments</comments>
		<pubDate>Fri, 23 Jul 2021 15:17:37 +0000</pubDate>
		<dc:creator>bigwhite</dc:creator>
				<category><![CDATA[生活簿]]></category>
		<category><![CDATA[一周岁]]></category>
		<category><![CDATA[七月]]></category>
		<category><![CDATA[二宝]]></category>
		<category><![CDATA[二胎]]></category>
		<category><![CDATA[大宝]]></category>
		<category><![CDATA[女儿]]></category>
		<category><![CDATA[家庭]]></category>
		<category><![CDATA[果果]]></category>
		<category><![CDATA[生日]]></category>

		<guid isPermaLink="false">https://tonybai.com/?p=3232</guid>
		<description><![CDATA[本文永久链接 &#8211; https://tonybai.com/2021/07/23/my-second-daughter-is-one-year-old 时光飞逝 &#8211; 这是我在写这类记录孩子成长的文章时最喜欢用的一个词，也是最能体现我真实感受的一个词。一年前的今天，二闺女非常痛快地呱呱坠地，当时刚出生的她是这样的： 而一年后的今天，现在的她是这样： 这样： 以及这样： 就像她脸上快乐的笑容那样，这一年来她就是全家快乐的中心，爸爸妈妈喜欢她，姐姐更喜欢她。这一年，我和老婆私下里讨论过多次生二宝是否是一个正确决定这一话题，我们的意见很一致：这是这辈子做的最正确的决定之一。 美好的结果并不意味着二宝的养育过程也是那么一帆风顺。和大多数孩子一样，一岁龄内的宝宝养育起来总是让家长殚精竭虑的。 记得刚离开月子中没几周，二宝就开始出现肠胀气的现象，每天晚上7点以后就莫名的哇哇大哭，有时嚎啕大哭上半个小时也不见好转，这一症状整整持续了近两周，把我和老婆折腾地够呛。后在神药拜奥以及丁桂脐贴的合力下，孩子肠胀气的现象才有所缓解。 二宝从出生到10个月期间最大的问题是太胖了。看下面百天儿时二宝的照片： 二宝的体重和体长始终在这个月龄段孩子标准体重和身高的最高位置，甚至比同龄的男娃指标都要高出不少。这给我带来的最直接“伤害”有二：双手腱鞘炎以及诱发轻度腰椎间盘突出。现在双手依旧偶尔疼痛，甚至晚上睡觉翻身都会被手腕患处疼醒。而腰椎间盘突出则在我睡了三个月地板后有所缓解。 除此之外，二宝还继承了她姐姐长牙晚和说话晚的“传统”，到一岁生日时才长出两颗下门牙，9个月会叫“妈妈”，但直到一岁才会偶尔喊出“爸爸”，如果继续晚下去，我们就又会陷入焦虑了。 和姐姐小时候相比，二宝在吃这方面表现更好，爱吃还不挑食，不过口壮也是她胖胖的原因之一。二宝表现地比姐姐要淘气的多，脾气也有些暴躁，这与我们的溺爱估计是分不开的。 二宝进入第12个月后，终于有了走路的意识，尤其是接近一岁时，她越来越喜欢走路，好奇心也越来越强，对一切她没见过的事物都要去碰碰、摸摸甚至是咬上一口^_^。 一周岁生日那天，妈妈还为二宝准备了一个小仪式，房间的一角挂着二宝生日快乐的背景图，气球和彩灯也一应俱全： 姐姐那天也很开心，不仅仅是因为她最喜欢的妹妹一周岁了，更是因为妹妹的生日蛋糕在小仪式后就都归她享用了^_^。 图：姐妹俩1 图：姐妹俩2 图：姐妹俩3 进入一岁龄的二闺女更像一个“快乐豆”了，每天都能给家里增添快乐与惊喜。 看着两个孩子一起玩耍嬉戏的欢乐场景，作为父母，甚感欣慰。 此次此刻，我们和普天下的所有父母一样，愿所有的幸福，所有的快乐，所有的温馨和好运都永远围绕在你们身边。你们永远是爸爸妈妈的最爱和骄傲。 我爱你们，果果和七月! 图：全家福^_^ Gopher Daily(Gopher每日新闻)归档仓库 &#8211; https://github.com/bigwhite/gopherdaily 我的联系方式： 微博：https://weibo.com/bigwhite20xx 微信公众号：iamtonybai 博客：tonybai.com github: https://github.com/bigwhite “Gopher部落”知识星球：https://public.zsxq.com/groups/51284458844544 微信赞赏： 商务合作方式：撰稿、出书、培训、在线课程、合伙创业、咨询、广告合作。 &#169; 2021, bigwhite. 版权所有.]]></description>
			<content:encoded><![CDATA[<p><a href="https://tonybai.com/2021/07/23/my-second-daughter-is-one-year-old">本文永久链接</a> &#8211; https://tonybai.com/2021/07/23/my-second-daughter-is-one-year-old</p>
<p><strong>时光飞逝</strong> &#8211; 这是我在写这类记录孩子成长的文章时最喜欢用的一个词，也是最能体现我真实感受的一个词。一年前的今天，<a href="https://tonybai.com/2020/07/29/my-second-daughter-is-one-year-old/">二闺女非常痛快地呱呱坠地</a>，当时刚出生的她是这样的：</p>
<p><img src="https://tonybai.com/wp-content/uploads/my-second-daughter/ally-was-born.jpeg" alt="" /></p>
<p>而一年后的今天，现在的她是这样：</p>
<p><img src="https://tonybai.com/wp-content/uploads/my-second-daughter-is-one-year-old-1.jpeg" alt="" /></p>
<p>这样：</p>
<p><img src="https://tonybai.com/wp-content/uploads/my-second-daughter-is-one-year-old-2.jpeg" alt="" /></p>
<p>以及这样：</p>
<p><img src="https://tonybai.com/wp-content/uploads/my-second-daughter-is-one-year-old-3.jpeg" alt="" /></p>
<p>就像她脸上快乐的笑容那样，<strong>这一年来她就是全家快乐的中心</strong>，爸爸妈妈喜欢她，姐姐更喜欢她。这一年，我和老婆私下里讨论过多次生二宝是否是一个正确决定这一话题，我们的意见很一致：<strong>这是这辈子做的最正确的决定之一</strong>。</p>
<p>美好的结果并不意味着二宝的养育过程也是那么一帆风顺。和大多数孩子一样，一岁龄内的宝宝养育起来总是让家长殚精竭虑的。</p>
<p>记得刚离开月子中没几周，二宝就开始出现肠胀气的现象，每天晚上7点以后就莫名的哇哇大哭，有时嚎啕大哭上半个小时也不见好转，这一症状整整持续了近两周，把我和老婆折腾地够呛。后在神药拜奥以及丁桂脐贴的合力下，孩子肠胀气的现象才有所缓解。</p>
<p>二宝从出生到10个月期间最大的问题是太胖了。看下面<a href="https://daughter2.tonybai.com/post/i-am-100-days/">百天儿时二宝</a>的照片：</p>
<p><img src="https://tonybai.com/wp-content/uploads/my-second-daughter-is-one-year-old-4.jpg" alt="" /></p>
<p>二宝的体重和体长始终在这个月龄段孩子标准体重和身高的最高位置，甚至比同龄的男娃指标都要高出不少。这给我带来的最直接“伤害”有二：双手腱鞘炎以及诱发轻度腰椎间盘突出。现在双手依旧偶尔疼痛，甚至晚上睡觉翻身都会被手腕患处疼醒。而腰椎间盘突出则在我睡了三个月地板后有所缓解。</p>
<p>除此之外，二宝还继承了她姐姐长牙晚和说话晚的“传统”，到一岁生日时才长出两颗下门牙，9个月会叫“妈妈”，但直到一岁才会偶尔喊出“爸爸”，如果继续晚下去，我们就又会陷入焦虑了。</p>
<p>和姐姐小时候相比，二宝在吃这方面表现更好，爱吃还不挑食，不过口壮也是她胖胖的原因之一。二宝表现地比姐姐要淘气的多，脾气也有些暴躁，这与我们的溺爱估计是分不开的。</p>
<p>二宝进入第12个月后，终于有了走路的意识，尤其是接近一岁时，她越来越喜欢走路，好奇心也越来越强，对一切她没见过的事物都要去碰碰、摸摸甚至是咬上一口^_^。</p>
<p>一周岁生日那天，妈妈还为二宝准备了一个小仪式，房间的一角挂着二宝生日快乐的背景图，气球和彩灯也一应俱全：</p>
<p><img src="https://tonybai.com/wp-content/uploads/my-second-daughter-is-one-year-old-5.jpeg" alt="" /></p>
<p>姐姐那天也很开心，不仅仅是因为她最喜欢的妹妹一周岁了，更是因为妹妹的生日蛋糕在小仪式后就都归她享用了^_^。</p>
<p><img src="https://tonybai.com/wp-content/uploads/my-second-daughter-is-one-year-old-6.jpeg" alt="" /><br />
<center>图：姐妹俩1</center></p>
<p><img src="https://tonybai.com/wp-content/uploads/my-second-daughter-is-one-year-old-7.jpeg" alt="" /><br />
<center>图：姐妹俩2</center></p>
<p><img src="https://tonybai.com/wp-content/uploads/my-second-daughter-is-one-year-old-8.jpeg" alt="" /><br />
<center>图：姐妹俩3</center></p>
<p>进入一岁龄的二闺女更像一个“快乐豆”了，每天都能给家里增添快乐与惊喜。</p>
<p>看着两个孩子一起玩耍嬉戏的欢乐场景，作为父母，甚感欣慰。</p>
<p>此次此刻，我们和普天下的所有父母一样，<strong>愿所有的幸福，所有的快乐，所有的温馨和好运都永远围绕在你们身边。你们永远是爸爸妈妈的最爱和骄傲</strong>。</p>
<p><strong>我爱你们，果果和七月</strong>!</p>
<p><img src="https://tonybai.com/wp-content/uploads/my-second-daughter-is-one-year-old-9.jpeg" alt="" /><br />
<center>图：全家福^_^</center></p>
<hr />
<p>Gopher Daily(Gopher每日新闻)归档仓库 &#8211; https://github.com/bigwhite/gopherdaily</p>
<p>我的联系方式：</p>
<ul>
<li>微博：https://weibo.com/bigwhite20xx</li>
<li>微信公众号：iamtonybai</li>
<li>博客：tonybai.com</li>
<li>github: https://github.com/bigwhite</li>
<li>“Gopher部落”知识星球：https://public.zsxq.com/groups/51284458844544</li>
</ul>
<p>微信赞赏：<br />
<img src="https://tonybai.com/wp-content/uploads/wechat-zanshang-code-512x512.jpg" alt="img{512x368}" /></p>
<p>商务合作方式：撰稿、出书、培训、在线课程、合伙创业、咨询、广告合作。</p>
<p style='text-align:left'>&copy; 2021, <a href='https://tonybai.com'>bigwhite</a>. 版权所有. </p>
]]></content:encoded>
			<wfw:commentRss>https://tonybai.com/2021/07/23/my-second-daughter-is-one-year-old/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>又当爸爸了！</title>
		<link>https://tonybai.com/2020/07/29/my-second-daughter-was-born/</link>
		<comments>https://tonybai.com/2020/07/29/my-second-daughter-was-born/#comments</comments>
		<pubDate>Wed, 29 Jul 2020 06:01:34 +0000</pubDate>
		<dc:creator>bigwhite</dc:creator>
				<category><![CDATA[生活簿]]></category>
		<category><![CDATA[Blog]]></category>
		<category><![CDATA[Blogger]]></category>
		<category><![CDATA[七月]]></category>
		<category><![CDATA[二宝]]></category>
		<category><![CDATA[二胎]]></category>
		<category><![CDATA[博客]]></category>
		<category><![CDATA[女儿]]></category>
		<category><![CDATA[家庭]]></category>
		<category><![CDATA[感悟]]></category>
		<category><![CDATA[摄影]]></category>
		<category><![CDATA[果果]]></category>
		<category><![CDATA[爸爸]]></category>
		<category><![CDATA[生活]]></category>
		<category><![CDATA[老婆]]></category>

		<guid isPermaLink="false">https://tonybai.com/?p=2932</guid>
		<description><![CDATA[2020年7月23日早6点46分，随着我家二宝(小名：七月)的呱呱坠地，我又当爸爸了! 图：二宝出生后的第一张照片 距离我家大宝(果果)的出生已经十年了。在这十年间，果果已经出落成一个聪明可爱、灵通剔透、漂亮温柔的大姑娘了，妥妥的是妈妈的小棉袄，爸爸的小情人:)，姥姥的小粘包，爷爷奶奶的乖孙女。 图：大宝果果是大姑娘了 但每每当果果提到其同班同学多数都有姐妹或兄弟陪伴上学、上才艺课的时候，我和我老婆的心里就会一动：究竟该不该给果果生一个亲弟弟/妹妹呢？ 2019下半年，我们决定为果果生个弟弟或妹妹。我们计划尝试半年，如果不行，我们年龄也大了，也许真的就不会再要了。结果上天十分眷顾我们，老婆在10月末怀上了。 大宝的愿望是我们要二宝的最直接和最主要的原因，我们也觉得两个宝宝在人生路上能相互陪伴总是更好的。其次，大宝出生时，我们还年轻，体验不充分，这次想再来一遍(也不知道哪来的这份勇气^_^)；再次，老人那边还有精力，还可以帮忙照顾孩子，我们在忙事业的同时，也不会有太多的后顾之忧；最后，两个宝宝也让家庭结构更合理。 写到这里，我也感觉上面的理由写得有些“冠冕堂皇”！想要就要，哪还需要这么多“借口”^_^。 生二宝唯一的担心就是已经是“高龄”的老婆。和十年前年轻的她相比，这次在孕期、生产和产后的风险都要高出许多。因此，在整个十月怀胎以及生产的过程中，我都更为紧张，但能做的也只有全程守护在老婆身边：制定营养计划、每天接送、全程陪检等。老婆本人倒是没有这方面担心，鉴于大宝生产前后的顺利，她坚信这次二宝也会同样顺利。 整个孕期也正如老婆坚信的那样，一切都很顺利，除了老婆患上了妊娠期糖尿病。老婆的一个性格特点就是认准一件事后，就能坚定不移地、自律地执行下去。由于妊娠期糖尿病对饮食的要求，老婆整整几个月都远离美味的“糖分”，保证了二宝在肚肚里的健康发育。同时，为了能够像一胎那样顺产，老婆坚持每天都要走上1w步，风雨无阻，天气不好，就在楼梯间里爬楼梯或在顶楼露台来回踱步。这份坚毅让老婆在38周的彩超检查中收获了期望的结论：医生看完彩超结果后给了我老婆十分肯定的诊断意见：你一定可以自己生！ 老婆，你真的很伟大！ 老婆在7月22日早晨见红了。按照一般经验，见红后24-48小时二宝就会出生了。7月23日凌晨3点老婆有了宫缩反应，虽然还不规律，但保险起见，我和老婆还是决定带上行李赶往医院。3:30到达医院急诊，产科的急诊大夫给开了一些检查和检验，结果出来后，就安排老婆去了(盛京医院滑翔园区)第五产科住院处办理住院。住院医生给老婆做了内检，说老婆今天很快就能生。早上5:00多，老婆进入待产室。随着规律性宫缩的到来，老婆十分痛苦。6点20分，医生决定让老妈进分娩室，我就在外面焦急等待。 老婆肚子里的二宝仿佛知道体谅她的妈妈，十分配合妈妈生产，让产程大大缩短，大大减少了老婆生产过程中承受的疼痛的时长。 在老婆进入分娩室后仅30分钟，站在分娩室外的我就听到了我家二宝第一声响亮的婴儿啼哭声。那时那刻，我和大宝出生时一样，流下了兴奋而又心疼老婆的眼泪。 母女平安！我的一颗高悬的心终于放下了，我再次当爸爸了！ 微信赞赏： &#169; 2020, bigwhite. 版权所有.]]></description>
			<content:encoded><![CDATA[<p>2020年7月23日早6点46分，随着我家<a href="https://daughter2.tonybai.com">二宝(小名：七月)</a>的呱呱坠地，<strong>我又当爸爸了</strong>!</p>
<p><img src="https://tonybai.com/wp-content/uploads/my-second-daughter/ally-was-born.jpeg" alt="img{512x368}" /><br />
<center>图：二宝出生后的第一张照片</center></p>
<p>距离我家<a href="https://tonybai.com/2010/05/11/now-i-am-a-father/">大宝(果果)的出生</a>已经十年了。在这十年间，<a href="https://daughter.tonybai.com">果果</a>已经出落成一个聪明可爱、灵通剔透、漂亮温柔的大姑娘了，妥妥的是<strong>妈妈的小棉袄，爸爸的小情人:)，姥姥的小粘包，爷爷奶奶的乖孙女</strong>。</p>
<p><img src="https://tonybai.com/wp-content/uploads/guoguo-ten-years-old/guoguo-10-years-old-1.jpg" alt="img{512x368}" /><br />
<center>图：大宝果果是大姑娘了</center></p>
<p>但每每当果果提到其同班同学多数都有姐妹或兄弟陪伴上学、上才艺课的时候，我和我老婆的心里就会一动：<strong>究竟该不该给果果生一个亲弟弟/妹妹呢？</strong> 2019下半年，我们决定为果果生个弟弟或妹妹。我们计划尝试半年，如果不行，我们年龄也大了，也许真的就不会再要了。结果<strong>上天十分眷顾我们，老婆在10月末怀上了</strong>。</p>
<p>大宝的愿望是我们要二宝的最直接和最主要的原因，我们也觉得两个宝宝在人生路上能相互陪伴总是更好的。其次，大宝出生时，我们还年轻，体验不充分，这次想再来一遍(<strong>也不知道哪来的这份勇气^_^</strong>)；再次，老人那边还有精力，还可以帮忙照顾孩子，我们在忙事业的同时，也不会有太多的后顾之忧；最后，两个宝宝也让家庭结构更合理。</p>
<blockquote>
<p>写到这里，我也感觉上面的理由写得有些“冠冕堂皇”！想要就要，哪还需要这么多“借口”^_^。</p>
</blockquote>
<p>生二宝唯一的担心就是已经是“高龄”的老婆。和十年前年轻的她相比，这次在孕期、生产和产后的风险都要高出许多。因此，在整个十月怀胎以及生产的过程中，我都更为紧张，但能做的也只有全程守护在老婆身边：制定营养计划、每天接送、全程陪检等。老婆本人倒是没有这方面担心，鉴于大宝生产前后的顺利，她坚信这次二宝也会同样顺利。</p>
<p>整个孕期也正如老婆坚信的那样，一切都很顺利，除了老婆患上了妊娠期糖尿病。老婆的一个性格特点就是认准一件事后，就能坚定不移地、自律地执行下去。由于妊娠期糖尿病对饮食的要求，老婆整整几个月都远离美味的“糖分”，保证了二宝在肚肚里的健康发育。同时，为了能够像一胎那样顺产，老婆坚持每天都要走上1w步，风雨无阻，天气不好，就在楼梯间里爬楼梯或在顶楼露台来回踱步。这份坚毅让老婆在38周的彩超检查中收获了期望的结论：医生看完彩超结果后给了我老婆十分肯定的诊断意见：<strong>你一定可以自己生</strong>！</p>
<p><strong>老婆，你真的很伟大！</strong></p>
<p>老婆在7月22日早晨见红了。按照一般经验，见红后24-48小时二宝就会出生了。7月23日凌晨3点老婆有了宫缩反应，虽然还不规律，但保险起见，我和老婆还是决定带上行李赶往医院。3:30到达医院急诊，产科的急诊大夫给开了一些检查和检验，结果出来后，就安排老婆去了(盛京医院滑翔园区)第五产科住院处办理住院。住院医生给老婆做了内检，说老婆今天很快就能生。早上5:00多，老婆进入待产室。随着规律性宫缩的到来，老婆十分痛苦。6点20分，医生决定让老妈进分娩室，我就在外面焦急等待。</p>
<p>老婆肚子里的二宝仿佛知道体谅她的妈妈，十分配合妈妈生产，让产程大大缩短，大大减少了老婆生产过程中承受的疼痛的时长。 在老婆进入分娩室后仅30分钟，站在分娩室外的我就听到了我家二宝第一声响亮的婴儿啼哭声。那时那刻，<strong>我和大宝出生时一样，流下了兴奋而又心疼老婆的眼泪</strong>。</p>
<p>母女平安！我的一颗高悬的心终于放下了，我再次当爸爸了！</p>
<hr />
<p>微信赞赏：<br />
<img src="https://tonybai.com/wp-content/uploads/wechat-zanshang-code-512x512.jpg" alt="img{512x368}" /></p>
<p style='text-align:left'>&copy; 2020, <a href='https://tonybai.com'>bigwhite</a>. 版权所有. </p>
]]></content:encoded>
			<wfw:commentRss>https://tonybai.com/2020/07/29/my-second-daughter-was-born/feed/</wfw:commentRss>
		<slash:comments>10</slash:comments>
		</item>
		<item>
		<title>果果十周岁了！</title>
		<link>https://tonybai.com/2020/05/03/guoguo-ten-years-old/</link>
		<comments>https://tonybai.com/2020/05/03/guoguo-ten-years-old/#comments</comments>
		<pubDate>Sun, 03 May 2020 05:24:50 +0000</pubDate>
		<dc:creator>bigwhite</dc:creator>
				<category><![CDATA[生活簿]]></category>
		<category><![CDATA[Blog]]></category>
		<category><![CDATA[Blogger]]></category>
		<category><![CDATA[七月]]></category>
		<category><![CDATA[二宝]]></category>
		<category><![CDATA[二胎]]></category>
		<category><![CDATA[十岁]]></category>
		<category><![CDATA[博客]]></category>
		<category><![CDATA[女儿]]></category>
		<category><![CDATA[家庭]]></category>
		<category><![CDATA[感悟]]></category>
		<category><![CDATA[摄影]]></category>
		<category><![CDATA[果果]]></category>
		<category><![CDATA[爸爸]]></category>
		<category><![CDATA[生活]]></category>
		<category><![CDATA[老婆]]></category>

		<guid isPermaLink="false">https://tonybai.com/?p=2937</guid>
		<description><![CDATA[好久没有在我的博客上写关于果果的事情了，因为很多关于果果成长的经历都记录在她自己的博客中了。但今天是她十周岁的生日，是个值得纪念的日子。闺女成长的十年，也是我学习为人父的十年。作为父亲，我发自内心地想说点啥，是回顾，也是感受，亦有些寄语^_^。 图：果果成长的十年 出生 老婆在2009年7月怀上了果果。那时我们刚刚新婚不久，二人世界还没过够^&#95;^，小家伙的突然到来还让我们有些“手足无措”。为此，我们还认真地讨论了两天，最终老婆拍板：我要生下这个孩子，于是果果保住了^&#95;^。如今，每当果果提及此事，都会“发狠”地盯上我几眼，我也只能呵呵呵呵地应对^_^。 老婆怀胎中段，我一直在福建出差，虽然有岳母陪在老婆身边，但年底那两个月，老婆心情十分差。直到那一年大年三十的下午2点，我才在桃仙机场下的飞机，匆匆赶回家。大街上连车的打不到，多亏还有公交系统。进入家门，心里满满的都是对老婆的愧疚。记忆中老婆似乎并没有说啥，只说了一句“吃饭吧”，我顿感心里热乎乎的。 果果似乎很享受在妈妈子宫中待着，预产期都过了几天了，她还没有反应，直到2010年5月3日凌晨1点多，规律性的宫缩“来袭”。我们匆忙赶到医院，早上6点半多，老婆进入产室，9点多，我在产室外听到了果果呱呱坠地后的第一声啼哭。 图：刚出生的果果 果果出生后，恰逢徐峥的作品《人在囧途》上映，影片中徐峥扮演角色的孩子叫果果，我们觉得这个小名不错，于是便给我们宝宝起名为果果。 第一次照顾这么小的孩子也着实让我们这些大人手忙脚乱一段时间。出月子后，生活逐渐恢复平稳。果果每天除了吃奶就是睡觉，也算是比较省心了。稍大一些后，果果似乎并不太愿意睡觉了，每次喂完奶都得放到小车上在厅里推过来推过去哄她睡觉，后来果果姥姥买的一个能发出大恐龙吼声的玩具也加入到促进果果睡眠的行列中^&#95;^。 第一次走路(0岁) 果果一直母乳喂养，身体也很壮实。抬头、翻身、学会爬行和其他孩子相比都略有提前。最让我印象深刻是她第一次学会独立行走。记得那是2010年农历春节前，我们家当时的供暖非常好，室温在28度以上。果果在家只穿一套内衣裤，因此行动和玩耍起来非常方便。之前果果就可以扶着床沿踱步了并且她似乎也很喜欢站起来的感觉。那天她自己在卧室的地板上玩耍，我在门口偷偷观察她。她玩了一会儿就开始扶着床站起来，看我站在门口，她居然放开了扶着床沿的双手，向我摇摇晃晃地走了过来。从床边到卧室门口大约有不到2米的距离，我也兴奋地张开双臂，引导她向我走来。她边走边兴奋地笑，似乎也在惊讶于自己能独立行走了。在她扑到我的怀中的那一刻，我才意识到我见证了果果人生第一次独立行走，老婆听到这个消息也是兴奋不已。自从果果学会了走路，此后便一发不可收拾^&#95;^。 打针不哭(1岁) 可能是因为母乳喂养，果果在一岁的这一年中没有患过任何感冒发烧的病症。但当母体带给她的免疫力逐渐失去作用后，果果便和其他小朋友一样，会得感冒，也会发烧。记得果果第一次感冒(刚过一岁生日没多久)就烧的特别厉害。由于我们也是第一次遇到这种情况，特别担心，于是就带她去医院检查。虽然我们期望医生开立口服药，但医生最终还是开了点滴。在护士站门口，果果看到其他孩子扎针时都哇哇的哭，心里也胆怯了。果不其然，当针头穿透她的皮肤进入血管的那一刻，果果也像其他孩子一样，哇哇大哭起来。 有了这次“痛苦”的扎针经历后，我们也对她进行了心理疏导，教她要学会坚强，从她的眼神看得出来，她似乎听懂了。在2011年的秋冬换季，果果又患感冒发烧。同样去了医院，同样开了点滴，但在护士站扎针的时候，果果居然很坚强的忍住了，没有哇哇的哭泣，这让看惯了孩子痛哭的护士也是惊奇不已。看着泪水在眼圈里打转但没有哭出来的果果，我们心里更是心疼她了。 送去幼儿园学说话(2岁) 果果在11个月的时候就会喊妈妈了，但直到2岁半她能吐出的字依然只有“妈妈”，偶尔也有“爸爸”。现在看来，果果说话晚是因为我们给她的语言刺激太少了。果果不愿意睡觉，一旦睡着了，老人生怕声音大吵醒她，于是就命令我们不许出声。久而久之，果果在潜意思中得到的声音刺激、语言刺激照比其他小朋友就要少很多。为此，我们还带着果果去看了生长发育门诊、做过筛查，结果都显示果果没有任何生理性的疾病。 我们需要找到一个让果果接受更多语言刺激的方法，最终我们决定在果果2岁零5个月的时候送她去幼儿园“学说话”。做过家长的都知道，送孩子去幼儿园的过程是“痛苦”的，孩子哭闹，家长心疼，但这个过程是必须要经历的。付出了就有收获。在果果上幼儿园后的一个月，果果的“话匣子”就彻底打开了^&#95;^。 更像女娃了，但怕大海(3岁) 出生时，果果头发稀少，为了让果果长出更好的头发，我们每隔一段时间就把她的头发剃的很短(几近光头)。在2岁之内，果果更像一个“男娃”。直到3岁以后，我们开始给她留头发了。小家伙似乎也知道留头发后自己更好看了，姥姥每次给她梳头扎辫她都很喜欢。留着还有些短的头发让她更像女娃了： 图：更像女娃的果果 下半年，我们把果果转到了更大的幼儿园，并且果果每天上幼儿园都不再费劲了。她在幼儿园也学到了许多知识、技能和礼节。 3岁的果果的身体显得比同龄的女宝高大一圈，我们也开始带着她到处出行游玩。劳动节黄金周我们第一次带孩子去海边。那天的风浪比较大，浪花拍击礁石的声音震耳欲聋，果果显得很害怕。我们抱着她向海边靠近，但她却一直在挣扎并大喊：“离开、离开、走、走”。当我自己独自向大海靠近时，她也大喊：“爸爸，你回来，你回来”。见此情景，我们都哈哈大笑起来。 后来我们去了一处比较海浪比较舒缓的地带，没有了海浪拍打的巨大轰隆声，果果镇定了许多。也开始站在沙滩上和其他小朋友一起挖起沙子了。 独立爬山(4岁) 4岁的果果不仅个头高，而且壮实了。我们在权衡了之后，决定在假期带她去爬山，并且我已经做好了背她上山的准备。那次我们爬的是千山。千山在整个省内的爬山困难指数排行榜上也是名列前茅的。不过小家伙似乎很喜欢爬山，在登山栈道上显得十分兴奋，我们也给她做心里建设，希望她自己爬到顶峰。虽然在中段她也曾打过退堂鼓，但最终小家伙还是凭借自己的双腿和毅力爬上了山顶，我和老婆也都是非常惊讶。下山过程中，小家伙也是一路欢喜，并没用我们费心。只是由于累了，在回程的车上，小家伙呼呼的睡了一道。 正因为此次爬山的经历，果果爱上了爬山。后续选择旅游景点，她总是先挑那些有山可爬的地方，比如：2019年的陕西的华山、骊山等。 和妈妈一起去普吉岛(5岁) 孩子小的时候，出行很麻烦，而且孩子能收获的东西有限。5岁是一个很好的节点，她基本能自立了，而且感知和吸收外界信息的能力已经很强了。 5岁这一年是果果第一次和妈妈出国旅游，此次出行的目的是泰国普吉岛，和她们一起去的还有老婆的同事，这些同事也能帮助老婆照顾照顾果果，顺道还能锻炼一下果果的交际能力。这也是果果第一次乘飞机出行，在机场她十分兴奋。她们的航班在首尔中转，从首尔飞到普吉需要5-6个小时，这下让果果过了一把飞行瘾，她尤其喜欢飞机起降过程中的那种感觉，以至于以后每次出行，她都嚷嚷着要买多次经停或中转的航班^&#95;^。 更难得可贵的是，这次的旅游经历深深印在果果的记忆中，至今每当翻看那时的照片时，她还能头头是道的给我们讲当时发生的故事。有些事情，我老婆都已经记不得了。 上小学了(6岁) 转眼间，果果来到了6周岁，已经到了上学的年龄了。9月份，果果正式成为一名珠江街第五小学一年级的“小豆包”。和第一次上幼儿园不同，这次果果适应的很快，也没有哭鼻子的情况。反倒是回来和我们说她班级有小朋友一直哭，她还很疑惑这些小朋友为什么要哭^&#95;^。 上学后，更多的教育责任“甩”给了班主任老师，我们平时更多是帮忙批改批改作业，督促读读书，带着上上才艺班。果果的古筝是各门才艺课中学的最好的，果果也有了那么一些古典的气质： 图：有一丝古典气质的果果 这一年我还给果果开了博客。有些东西，光靠脑子是记不住的，写下来，留给多年后的自己和孩子慢慢回味。在果果能自己维护这个博客之前，我就先替她维护了。 叛逆与独立(7~9岁) 进入到7岁以后，果果受到的教育多了，读的书多了，渐渐了有了自己的主见和小脾气，再也不是那个将父母话“奉为圭臬”的小女娃了。如果就某事“辩论”，她姥姥已经完全不是对手了。也只有我和老婆偶尔还能“恩威并举”的降住她:(。 果果喜欢读故事书。她最喜欢读郑渊洁的童话，按照她的说法，市面上郑渊洁的书她基本都读完了，有些书，她已经读过不止一遍了。受郑渊洁风格的影响，她喜欢写幻想类的作文，喜欢天马行空，因此在细节描写上就差了一些。 她还喜欢“米小圈上学记”，每天晚上都是在天猫精灵播放的米小圈上学记中入睡的。 她喜欢宜家买来的老虎和小狗玩偶，一个起名为花果，一个起名为木果，每天一左一右的陪她入睡。 天猫精灵是她每天不可或缺的“伙伴”。早上听新闻早报，天气预报；晚上听故事，听历史，听音乐；偶尔还和天猫精灵玩玩互动猜谜游戏。真不愧为互联网和智能时代的原著民。 8岁的果果，其古筝考级已经通过了10级，这还是在她不是很勤奋练琴的情况下取得的。 这个阶段的果果也十分贪玩，喜欢去游乐场，玩老爸都不敢玩的惊险刺激的项目(只能由她妈妈陪着)。 9岁时，她偶尔和妈妈看了一集“家有儿女”，从那时起就“沉迷”于该剧：只要拿起iPad就必然打开“家有儿女”视频。她看电视剧和她看书的特点一样，如果某一集是她喜欢的，她会反复看上好多遍，丝毫没有不耐烦的迹象。有些集的台词她都能背下来，并粘着我和我老婆要给我们讲。还别说，讲的还头头是道的^&#95;^。 亭亭玉立的大姑娘(10岁) 由于新冠疫情的影响，果果的10岁生日在家里过的，我们也没法带她出去“玩耍”一番。10岁的她已经是一个亭亭玉立的大姑娘了。她的个头快赶上她妈妈了，大长腿，身材是“青出于蓝而胜于蓝”。 图：十岁的果果 图：亭亭玉立的果果 这次10周岁的生日除了生日蛋糕，还有一个更为特殊的礼物，那就是妈妈肚里的二宝，这也是果果一直想要的弟弟/妹妹。自从知道妈妈怀了二宝之后，果果变得更加懂事了。每天晚上对着妈妈的肚子给二宝讲故事，晚上睡觉前也会对着妈妈肚子猛“亲”几口^&#95;^。 为了留下美好回忆，我们还特地在果果十周岁生日的时候在影楼留下了一家四口的合影： 图：十岁果果生日时一家四口合影 小结 果果成长的十年给我的最大感受就是：快！一晃间，果果都10岁了，二宝也即将出生。我和老婆也即将步入中年。这里做的这个阶段性的回顾，以期若干年后当记忆模糊时还能通过这篇文章回忆起当年果果小时候的点点滴滴。 这里也希望果果在未来的人生道路中能继续一帆风顺，身体健健康康，每天快快乐乐。 希望果果和即将出生的二宝一起姐妹情深，相濡以沫，共同走好人生之路。 [...]]]></description>
			<content:encoded><![CDATA[<p>好久没有在我的博客上写关于<a href="https://daughter.tonybai.com">果果</a>的事情了，因为很多关于果果成长的经历都记录在<a href="https://daughter.tonybai.com">她自己的博客</a>中了。但今天是她<a href="https://daughter.tonybai.com/2020/05/03/i-am-10-years-old/">十周岁的生日</a>，是个值得纪念的日子。闺女成长的十年，也是我学习为人父的十年。作为父亲，我发自内心地想说点啥，是回顾，也是感受，亦有些寄语^_^。</p>
<p><img src="https://tonybai.com/wp-content/uploads/guoguo-ten-years-old/guoguo-10-years-old-2.jpg" alt="img{512x368}" /><br />
<center>图：果果成长的十年</center></p>
<h3>出生</h3>
<p>老婆在2009年7月怀上了果果。那时我们刚刚新婚不久，二人世界还没过够^&#95;^，小家伙的突然到来还让我们有些“手足无措”。为此，我们还认真地讨论了两天，最终老婆拍板：<strong>我要生下这个孩子</strong>，于是果果保住了^&#95;^。如今，每当果果提及此事，都会“发狠”地盯上我几眼，我也只能呵呵呵呵地应对^_^。</p>
<p>老婆怀胎中段，我一直在福建出差，虽然有岳母陪在老婆身边，但年底那两个月，老婆心情十分差。直到那一年大年三十的下午2点，我才在桃仙机场下的飞机，匆匆赶回家。大街上连车的打不到，多亏还有公交系统。进入家门，心里满满的都是对老婆的愧疚。记忆中老婆似乎并没有说啥，只说了一句“吃饭吧”，我顿感心里热乎乎的。</p>
<p>果果似乎很享受在妈妈子宫中待着，预产期都过了几天了，她还没有反应，直到2010年5月3日凌晨1点多，规律性的宫缩“来袭”。我们匆忙赶到医院，早上6点半多，老婆进入产室，9点多，我在产室外听到了果果呱呱坠地后的第一声啼哭。</p>
<p><img src="https://tonybai.com/wp-content/uploads/guoguo-ten-years-old/guoguo-was-born.JPG" alt="img{512x368}" /><br />
<center>图：刚出生的果果</center></p>
<p>果果出生后，恰逢徐峥的作品《人在囧途》上映，影片中徐峥扮演角色的孩子叫果果，我们觉得这个小名不错，于是便给我们宝宝起名为<strong>果果</strong>。</p>
<p>第一次照顾这么小的孩子也着实让我们这些大人手忙脚乱一段时间。出月子后，生活逐渐恢复平稳。果果每天除了吃奶就是睡觉，也算是比较省心了。稍大一些后，果果似乎并不太愿意睡觉了，每次喂完奶都得放到小车上在厅里推过来推过去哄她睡觉，后来果果姥姥买的一个能发出大恐龙吼声的玩具也加入到促进果果睡眠的行列中^&#95;^。</p>
<h3>第一次走路(0岁)</h3>
<p>果果一直母乳喂养，身体也很壮实。抬头、翻身、学会爬行和其他孩子相比都略有提前。最让我印象深刻是她第一次学会独立行走。记得那是2010年农历春节前，我们家当时的供暖非常好，室温在28度以上。果果在家只穿一套内衣裤，因此行动和玩耍起来非常方便。之前果果就可以扶着床沿踱步了并且她似乎也很喜欢站起来的感觉。那天她自己在卧室的地板上玩耍，我在门口偷偷观察她。她玩了一会儿就开始扶着床站起来，看我站在门口，她居然放开了扶着床沿的双手，向我摇摇晃晃地走了过来。从床边到卧室门口大约有不到2米的距离，我也兴奋地张开双臂，引导她向我走来。她边走边兴奋地笑，似乎也在惊讶于自己能独立行走了。在她扑到我的怀中的那一刻，我才意识到我见证了果果人生第一次独立行走，老婆听到这个消息也是兴奋不已。自从果果学会了走路，此后便一发不可收拾^&#95;^。</p>
<h3>打针不哭(1岁)</h3>
<p>可能是因为母乳喂养，果果在一岁的这一年中没有患过任何感冒发烧的病症。但当母体带给她的免疫力逐渐失去作用后，果果便和其他小朋友一样，会得感冒，也会发烧。记得果果第一次感冒(刚过一岁生日没多久)就烧的特别厉害。由于我们也是第一次遇到这种情况，特别担心，于是就带她去医院检查。虽然我们期望医生开立口服药，但医生最终还是开了点滴。在护士站门口，果果看到其他孩子扎针时都哇哇的哭，心里也胆怯了。果不其然，当针头穿透她的皮肤进入血管的那一刻，果果也像其他孩子一样，哇哇大哭起来。</p>
<p>有了这次“痛苦”的扎针经历后，我们也对她进行了心理疏导，教她要学会坚强，从她的眼神看得出来，她似乎听懂了。在2011年的秋冬换季，果果又患感冒发烧。同样去了医院，同样开了点滴，但在护士站扎针的时候，果果居然很坚强的忍住了，没有哇哇的哭泣，这让看惯了孩子痛哭的护士也是惊奇不已。看着泪水在眼圈里打转但没有哭出来的果果，我们心里更是心疼她了。</p>
<h3>送去幼儿园学说话(2岁)</h3>
<p>果果在11个月的时候就会喊妈妈了，但直到2岁半她能吐出的字依然只有“妈妈”，偶尔也有“爸爸”。现在看来，果果说话晚是因为我们给她的语言刺激太少了。果果不愿意睡觉，一旦睡着了，老人生怕声音大吵醒她，于是就命令我们不许出声。久而久之，果果在潜意思中得到的声音刺激、语言刺激照比其他小朋友就要少很多。为此，我们还带着果果去看了生长发育门诊、做过筛查，结果都显示果果没有任何生理性的疾病。</p>
<p>我们需要找到一个让果果接受更多语言刺激的方法，最终我们决定在果果2岁零5个月的时候送她去幼儿园“学说话”。做过家长的都知道，送孩子去幼儿园的过程是“痛苦”的，孩子哭闹，家长心疼，但这个过程是必须要经历的。付出了就有收获。在果果上幼儿园后的一个月，果果的“话匣子”就彻底打开了^&#95;^。</p>
<h3>更像女娃了，但怕大海(3岁)</h3>
<p>出生时，果果头发稀少，为了让果果长出更好的头发，我们每隔一段时间就把她的头发剃的很短(几近光头)。在2岁之内，果果更像一个“男娃”。直到3岁以后，我们开始给她留头发了。小家伙似乎也知道留头发后自己更好看了，姥姥每次给她梳头扎辫她都很喜欢。留着还有些短的头发让她更像女娃了：</p>
<p><img src="https://tonybai.com/wp-content/uploads/guoguo-ten-years-old/guoguo-3-years-old.jpg" alt="img{512x368}" /><br />
<center>图：更像女娃的果果</center></p>
<p>下半年，我们把果果转到了更大的幼儿园，并且果果每天上幼儿园都不再费劲了。她在幼儿园也学到了许多知识、技能和礼节。</p>
<p>3岁的果果的身体显得比同龄的女宝高大一圈，我们也开始带着她到处出行游玩。劳动节黄金周我们第一次带孩子去海边。那天的风浪比较大，浪花拍击礁石的声音震耳欲聋，果果显得很害怕。我们抱着她向海边靠近，但她却一直在挣扎并大喊：“离开、离开、走、走”。当我自己独自向大海靠近时，她也大喊：“爸爸，你回来，你回来”。见此情景，我们都哈哈大笑起来。</p>
<p>后来我们去了一处比较海浪比较舒缓的地带，没有了海浪拍打的巨大轰隆声，果果镇定了许多。也开始站在沙滩上和其他小朋友一起挖起沙子了。</p>
<h3>独立爬山(4岁)</h3>
<p>4岁的果果不仅个头高，而且壮实了。我们在权衡了之后，决定在假期带她去爬山，并且我已经做好了背她上山的准备。那次我们爬的是千山。千山在整个省内的爬山困难指数排行榜上也是名列前茅的。不过小家伙似乎很喜欢爬山，在登山栈道上显得十分兴奋，我们也给她做心里建设，希望她自己爬到顶峰。虽然在中段她也曾打过退堂鼓，但最终小家伙还是凭借自己的双腿和毅力爬上了山顶，我和老婆也都是非常惊讶。下山过程中，小家伙也是一路欢喜，并没用我们费心。只是由于累了，在回程的车上，小家伙呼呼的睡了一道。</p>
<p>正因为此次爬山的经历，果果爱上了爬山。后续选择旅游景点，她总是先挑那些有山可爬的地方，比如：2019年的<a href="https://daughter.tonybai.com/2019/08/17/xian-chongqing-tour-2nd-day-2019/">陕西的华山</a>、<a href="https://daughter.tonybai.com/2019/08/17/xian-chongqing-tour-2nd-day-2019/">骊山</a>等。</p>
<h3>和妈妈一起去普吉岛(5岁)</h3>
<p>孩子小的时候，出行很麻烦，而且孩子能收获的东西有限。5岁是一个很好的节点，她基本能自立了，而且感知和吸收外界信息的能力已经很强了。</p>
<p>5岁这一年是果果第一次和妈妈出国旅游，此次出行的目的是泰国普吉岛，和她们一起去的还有老婆的同事，这些同事也能帮助老婆照顾照顾果果，顺道还能锻炼一下果果的交际能力。这也是果果第一次乘飞机出行，在机场她十分兴奋。她们的航班在首尔中转，从首尔飞到普吉需要5-6个小时，这下让果果过了一把飞行瘾，她尤其喜欢飞机起降过程中的那种感觉，以至于以后每次出行，她都嚷嚷着要买多次经停或中转的航班^&#95;^。</p>
<p>更难得可贵的是，这次的旅游经历深深印在果果的记忆中，至今每当翻看那时的照片时，她还能头头是道的给我们讲当时发生的故事。有些事情，我老婆都已经记不得了。</p>
<h3>上小学了(6岁)</h3>
<p>转眼间，果果来到了6周岁，已经到了上学的年龄了。9月份，果果正式成为一名珠江街第五小学一年级的“小豆包”。和第一次上幼儿园不同，这次果果适应的很快，也没有哭鼻子的情况。反倒是回来和我们说她班级有小朋友一直哭，她还很疑惑这些小朋友为什么要哭^&#95;^。</p>
<p>上学后，更多的教育责任“甩”给了班主任老师，我们平时更多是帮忙批改批改作业，督促读读书，带着上上才艺班。果果的古筝是各门才艺课中学的最好的，果果也有了那么一些古典的气质：</p>
<p><img src="https://tonybai.com/wp-content/uploads/guoguo-ten-years-old/guoguo-gavatar.jpg" alt="img{512x368}" /><br />
<center>图：有一丝古典气质的果果</center></p>
<p>这一年我还给果果开了<a href="https://daughter.tonybai.com">博客</a>。有些东西，光靠脑子是记不住的，写下来，留给多年后的自己和孩子慢慢回味。在果果能自己维护这个博客之前，我就先替她维护了。</p>
<h3>叛逆与独立(7~9岁)</h3>
<p>进入到7岁以后，果果受到的教育多了，读的书多了，渐渐了有了自己的主见和小脾气，再也不是那个将父母话“奉为圭臬”的小女娃了。如果就某事“辩论”，她姥姥已经完全不是对手了。也只有我和老婆偶尔还能“恩威并举”的降住她:(。</p>
<p>果果喜欢读故事书。她最喜欢读郑渊洁的童话，按照她的说法，市面上郑渊洁的书她基本都读完了，有些书，她已经读过不止一遍了。受郑渊洁风格的影响，她喜欢写幻想类的作文，喜欢天马行空，因此在细节描写上就差了一些。</p>
<p>她还喜欢“米小圈上学记”，每天晚上都是在天猫精灵播放的米小圈上学记中入睡的。</p>
<p>她喜欢宜家买来的老虎和小狗玩偶，一个起名为花果，一个起名为木果，每天一左一右的陪她入睡。</p>
<p>天猫精灵是她每天不可或缺的“伙伴”。早上听新闻早报，天气预报；晚上听故事，听历史，听音乐；偶尔还和天猫精灵玩玩互动猜谜游戏。真不愧为互联网和智能时代的原著民。</p>
<p>8岁的果果，其古筝考级已经通过了10级，这还是在她不是很勤奋练琴的情况下取得的。</p>
<p>这个阶段的果果也十分贪玩，喜欢去游乐场，玩老爸都不敢玩的惊险刺激的项目(只能由她妈妈陪着)。</p>
<p>9岁时，她偶尔和妈妈看了一集“家有儿女”，从那时起就“沉迷”于该剧：只要拿起iPad就必然打开“家有儿女”视频。她看电视剧和她看书的特点一样，如果某一集是她喜欢的，她会反复看上好多遍，丝毫没有不耐烦的迹象。有些集的台词她都能背下来，并粘着我和我老婆要给我们讲。还别说，讲的还头头是道的^&#95;^。</p>
<h3>亭亭玉立的大姑娘(10岁)</h3>
<p>由于新冠疫情的影响，果果的10岁生日在家里过的，我们也没法带她出去“玩耍”一番。10岁的她已经是一个亭亭玉立的大姑娘了。她的个头快赶上她妈妈了，大长腿，身材是“青出于蓝而胜于蓝”。</p>
<p><img src="https://tonybai.com/wp-content/uploads/guoguo-ten-years-old/guoguo-10-years-old-1.jpg" alt="img{512x368}" /><br />
<center>图：十岁的果果</center></p>
<p><img src="https://tonybai.com/wp-content/uploads/guoguo-ten-years-old/guoguo-10-years-old-4.jpg" alt="img{512x368}" /><br />
<center>图：亭亭玉立的果果</center></p>
<p>这次10周岁的生日除了生日蛋糕，还有一个更为特殊的礼物，那就是妈妈肚里的二宝，这也是果果一直想要的弟弟/妹妹。自从知道妈妈怀了二宝之后，果果变得更加懂事了。每天晚上对着妈妈的肚子给二宝讲故事，晚上睡觉前也会对着妈妈肚子猛“亲”几口^&#95;^。</p>
<p>为了留下美好回忆，我们还特地在果果十周岁生日的时候在影楼留下了一家四口的合影：</p>
<p><img src="https://tonybai.com/wp-content/uploads/guoguo-ten-years-old/guoguo-10-years-old-3.jpg" alt="img{512x368}" /><br />
<center>图：十岁果果生日时一家四口合影</center></p>
<h3>小结</h3>
<p>果果成长的十年给我的最大感受就是：<strong>快</strong>！一晃间，果果都10岁了，二宝也即将出生。我和老婆也即将步入中年。这里做的这个阶段性的回顾，以期若干年后当记忆模糊时还能通过这篇文章回忆起当年果果小时候的点点滴滴。</p>
<p>这里也希望果果在未来的人生道路中能继续一帆风顺，身体健健康康，每天快快乐乐。</p>
<p>希望果果和即将出生的二宝一起姐妹情深，相濡以沫，共同走好人生之路。</p>
<p>最后，<strong>人生在于经历，而不在于得失</strong>。</p>
<hr />
<p>我的联系方式：</p>
<p>微博：https://weibo.com/bigwhite20xx<br />
微信公众号：iamtonybai<br />
博客：tonybai.com<br />
github: https://github.com/bigwhite</p>
<p>微信赞赏：<br />
<img src="https://tonybai.com/wp-content/uploads/wechat-zanshang-code-512x512.jpg" alt="img{512x368}" /></p>
<p style='text-align:left'>&copy; 2020, <a href='https://tonybai.com'>bigwhite</a>. 版权所有. </p>
]]></content:encoded>
			<wfw:commentRss>https://tonybai.com/2020/05/03/guoguo-ten-years-old/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>把学校留的手工作业还给孩子们</title>
		<link>https://tonybai.com/2017/01/05/leave-hand-made-homework-to-kids/</link>
		<comments>https://tonybai.com/2017/01/05/leave-hand-made-homework-to-kids/#comments</comments>
		<pubDate>Thu, 05 Jan 2017 02:41:58 +0000</pubDate>
		<dc:creator>bigwhite</dc:creator>
				<category><![CDATA[教育记]]></category>
		<category><![CDATA[个性]]></category>
		<category><![CDATA[作业]]></category>
		<category><![CDATA[学校教育]]></category>
		<category><![CDATA[孩子]]></category>
		<category><![CDATA[家庭教育]]></category>
		<category><![CDATA[小学生]]></category>
		<category><![CDATA[幼儿画报]]></category>
		<category><![CDATA[手工课]]></category>
		<category><![CDATA[教育]]></category>
		<category><![CDATA[果果]]></category>
		<category><![CDATA[画画]]></category>

		<guid isPermaLink="false">http://tonybai.com/?p=2113</guid>
		<description><![CDATA[果果昨天进行了一年级上学期的期末考试，今天基本已经开始了放假，就差月中旬去学校取成绩和开家长会了。不知不觉间一年级的半个学期就这样过去了。作为家长，亲历了一次对小学一年级小豆包的教育过程，同时也亲自见证了一次当前中国一个省会城市重点小学教育状况。在这个时间节点上，感觉自己应该对这个过程做一些回顾和总结，也不枉我个人对孩子教育这个课题的持续关注。这是第一篇。注：下面的内容并不是现在写的，大致写于2016年11月末。 第一篇谈谈学校留的手工作业该由谁来做的问题。 从孩子上幼儿园开始，孩子就时常收到学校留的“手工作业”，比如做一张爱心卡、一个小盒子或一个小时钟等。最初，孩子还很小，作为家长的，总是担心孩子无法及时上交作业，或是出于某种“虚荣心”，基本上都是越俎代庖，“主动”替孩子“完美”地完成了作业。但这些家长们你想没想到，你这是在剥夺一个孩子充分发挥想象力的机会和一次提高动手能力的机会。 在这方面，我和孩子她妈达成了充分的一致性：让孩子自己做。 我们发现果果在画画方面有着与众不同的思维，孩子脑袋中的世界是我们这些被社会磨砺定型后的成年人所想象不到的，比如下面这幅被果果命名为“手印”的画，我是无论如何都画不出来的^0^： 果果的画作：手印 这在完成“手工作业”方面算是一个“优势”，而且果果喜欢动手做，虽然做出的东西还很粗糙。在幼儿园的时候，我们还常会给他提供一些设计方面的“思路”（也多来自网络），到后来，基本上都是果果自己在设计和制作。 这周班主任让孩子们制作一个指针可以旋转的小时钟（后续将用于数学课上的认识钟点的教学），这既是让孩子拥有一次动手的机会，也为了后续在教授孩子“认识时间”的课程中，让孩子能亲手使用自己制作“小时钟”，我甚至能感受得到孩子在那个时候的“成就感”。 于是，果果花了一个下午（周三半天课）做了下面这个小时钟模型，并第一时间微信发给我和孩子妈。我当时的第一感觉就是孩子这个作业完成的非常好，如果让我和她妈妈做，我们可能都无法设计出这样的造型并基于家里的“闲置物品”将其实现出来。果果的时钟表盘完全是个人在美术方面的想象力，小蚂蚁图案估计是受到之前看《幼儿画报》中蚂蚁日记中原型的启发。果果喜欢给陌生事物起名字，这个时钟就被她命名为：“中国国际学习时钟”，这个名字对于成年人来说，可能会感觉怪怪的。但对于她这个一年级小豆包来说，在她的小脑瓜中，可能有自己的含义。作为家长，笑着接受就好了。千万不要去用成年家长的思维去“纠正”。 果果制作的小时钟模型 果果的半天努力得到的班主任老师的认可，这对于她来说，我想是一个极大的肯定，这也会进一步激励她在后续的手工作业中做出更好的作品。 果果(左1)受到老师的表扬 最后，作为一名家长，我期望各位家长都能把“手工作业”还给孩子们，让他们在自己的想象空间中翱翔，让他们亲手做一个属于自己的手工作业吧。 &#169; 2017, bigwhite. 版权所有.]]></description>
			<content:encoded><![CDATA[<p><a href="http://daughter.tonybai.com">果果</a>昨天进行了一年级上学期的期末考试，今天基本已经开始了放假，就差月中旬去学校取成绩和开家长会了。不知不觉间一年级的半个学期就这样过去了。作为家长，亲历了一次对小学一年级小豆包的教育过程，同时也亲自见证了一次当前中国一个省会城市重点小学教育状况。在这个时间节点上，感觉自己应该对这个过程做一些回顾和总结，也不枉我个人对孩子教育这个课题的持续关注。这是第一篇。注：下面的内容并不是现在写的，大致写于2016年11月末。</p>
<p>第一篇谈谈学校留的手工作业该由谁来做的问题。</p>
<p>从孩子上幼儿园开始，孩子就时常收到学校留的“手工作业”，比如做一张爱心卡、一个小盒子或一个小时钟等。最初，孩子还很小，作为家长的，总是担心孩子无法及时上交作业，或是出于某种“虚荣心”，基本上都是越俎代庖，“主动”替孩子“完美”地完成了作业。但这些家长们你想没想到，你这是在剥夺一个孩子充分发挥想象力的机会和一次提高动手能力的机会。</p>
<p>在这方面，我和孩子她妈达成了充分的一致性：让孩子自己做。</p>
<p>我们发现果果在画画方面有着与众不同的思维，孩子脑袋中的世界是我们这些被社会磨砺定型后的成年人所想象不到的，比如下面这幅被果果命名为“手印”的画，我是无论如何都画不出来的^0^：</p>
<p><img src="http://tonybai.com/wp-content/uploads/guoguo-draw-fingerprint.jpg" alt="img{512x368}" /><br />
果果的画作：手印</p>
<p>这在完成“手工作业”方面算是一个“优势”，而且果果喜欢动手做，虽然做出的东西还很粗糙。在幼儿园的时候，我们还常会给他提供一些设计方面的“思路”（也多来自网络），到后来，基本上都是果果自己在设计和制作。</p>
<p>这周班主任让孩子们制作一个指针可以旋转的小时钟（后续将用于数学课上的认识钟点的教学），这既是让孩子拥有一次动手的机会，也为了后续在教授孩子“认识时间”的课程中，让孩子能亲手使用自己制作“小时钟”，我甚至能感受得到孩子在那个时候的“成就感”。</p>
<p>于是，果果花了一个下午（周三半天课）做了下面这个小时钟模型，并第一时间微信发给我和孩子妈。我当时的第一感觉就是孩子这个作业完成的非常好，如果让我和她妈妈做，我们可能都无法设计出这样的造型并基于家里的“闲置物品”将其实现出来。果果的时钟表盘完全是个人在美术方面的想象力，小蚂蚁图案估计是受到之前看《幼儿画报》中蚂蚁日记中原型的启发。果果喜欢给陌生事物起名字，这个时钟就被她命名为：“中国国际学习时钟”，这个名字对于成年人来说，可能会感觉怪怪的。但对于她这个一年级小豆包来说，在她的小脑瓜中，可能有自己的含义。作为家长，笑着接受就好了。千万不要去用成年家长的思维去“纠正”。</p>
<p><img src="http://tonybai.com/wp-content/uploads/guoguo-clock-1.png" alt="img{512x368}" /><br />
果果制作的小时钟模型</p>
<p>果果的半天努力得到的班主任老师的认可，这对于她来说，我想是一个极大的肯定，这也会进一步激励她在后续的手工作业中做出更好的作品。</p>
<p><img src="http://tonybai.com/wp-content/uploads/guoguo-clock-2.jpg" alt="img{512x368}" /><br />
果果(左1)受到老师的表扬</p>
<p>最后，作为一名家长，我期望各位家长都能把“手工作业”还给孩子们，让他们在自己的想象空间中翱翔，让他们亲手做一个属于自己的手工作业吧。</p>
<p style='text-align:left'>&copy; 2017, <a href='https://tonybai.com'>bigwhite</a>. 版权所有. </p>
]]></content:encoded>
			<wfw:commentRss>https://tonybai.com/2017/01/05/leave-hand-made-homework-to-kids/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>给女儿搭建一个博客站点</title>
		<link>https://tonybai.com/2016/12/18/build-a-blog-website-for-my-daughter/</link>
		<comments>https://tonybai.com/2016/12/18/build-a-blog-website-for-my-daughter/#comments</comments>
		<pubDate>Sun, 18 Dec 2016 07:04:02 +0000</pubDate>
		<dc:creator>bigwhite</dc:creator>
				<category><![CDATA[生活簿]]></category>
		<category><![CDATA[Blog]]></category>
		<category><![CDATA[CNAME]]></category>
		<category><![CDATA[DigitalOcean]]></category>
		<category><![CDATA[Git]]></category>
		<category><![CDATA[github]]></category>
		<category><![CDATA[github-page]]></category>
		<category><![CDATA[Golang]]></category>
		<category><![CDATA[Gopher]]></category>
		<category><![CDATA[Hexo]]></category>
		<category><![CDATA[hugo]]></category>
		<category><![CDATA[Jekyll]]></category>
		<category><![CDATA[maupassant]]></category>
		<category><![CDATA[Octopress]]></category>
		<category><![CDATA[plugins]]></category>
		<category><![CDATA[rss]]></category>
		<category><![CDATA[theme]]></category>
		<category><![CDATA[vps]]></category>
		<category><![CDATA[主题]]></category>
		<category><![CDATA[博客]]></category>
		<category><![CDATA[域名]]></category>
		<category><![CDATA[女儿]]></category>
		<category><![CDATA[插件]]></category>
		<category><![CDATA[果果]]></category>

		<guid isPermaLink="false">http://tonybai.com/?p=2087</guid>
		<description><![CDATA[时光荏苒。转眼间女儿已经成为一名小学生了，依稀还记得当年果果呱呱坠地的情景，独自回味，感慨万千。 果果3岁前，都是我来记录她的生活点滴和成长历程，那个时候她是我们生活舞台的主角。3岁后，果果学会了说话，上了幼儿园，开始学习各种知识、技能以及各种才艺。尤其是在幼儿园中班之后，她学会了写字、组词、造句和写日记，果果完全可以自己用文字来表达自己了! 我觉得是时候让她自己来记录她的成长历程了，我和她妈妈只是辅助和指导就好了。这种想法日益迫切，尤其是果果今年上了小学后，果果的成长更快了。我觉得迫切需要给她一个平台去表达她自己和记录她的成长。传统手段不能满足需求，于是我就想到给她搭建了一个博客站点，辅助她用网络文字、图片的形式记录自6岁上学之后的成长历程。于是这个周末就花了些时间，给女儿搭了一个博客站点。 下面以“流水账”的形式，记录一下这个站点的搭建过程，也许能给和我有同样需求的家长们带来一些帮助^_^。 一、选型和准备工作 博客站点，我首选静态页面的。静态页面，又要快速搭建，我首选github page。github page一般情况下在国内访问相对较为稳定，访问速度也不错，ping延迟一般在100多ms，比我独立购买的Digital Ocean的主机的延迟低很多。还有另外一个原因就是市面上几乎所有主流静态页面生成工具都对github pages有着不错的支持。由于采用静态页面，即便将来迁移到VPS，也几乎是无缝的。于是给果果在github上申请了账号。 用与搭建博客、个人站点的静态页面生成工具很多，比如：jekyll、octopress、hexo以及hugo，用哪个呢？作为Gopher，我首选hugo。接下来，我们来看看用hugo是否能搭建出满足我们需求的基于github page的博客站点吧。 hugo的安装参考hugo github主页上的说明即可。由于hugo import了很多第三方package，有些package可能在墙外，因此配置上加速器是更好的、更快的^_^。 二、基于hugo搭建博客站点 去年曾写过一篇《使用Hugo搭建静态站点(http://tonybai.com/2015/09/23/intro-of-gohugo/)》，讲述如何通过hugo这个golang开发的工具搭建一个属于自己的静态站点（static websites)。不过那篇文章并没有谈到hugo如何与github page结合。 hugo官方文档中，对如何使用hugo创建基于github page站点有着较为详尽的描述，这是由一位名为Spencer Lyon的外国开发者贡献的文章，并且Spencer Lyon给出hugo github page的工程template： hugo-gh-blog。我这里就直接使用了该工程模板，并基于hugo_gh_blog做一些定制化修改，比如“汉化”之类的。 下面是详细的步骤： 1、clone hugo_gh_blog 我们首先将Spencer Lyon的hugo_gh_blog代码库clone到本地，这是我们博客搭建的基础： $mkdir GuoGuoBlog $cd GuoGuoBlog $git clone https://github.com/spencerlyon2/hugo_gh_blog.git Cloning into 'hugo_gh_blog'... remote: Counting objects: 489, done. remote: Total 489 (delta 0), reused 0 (delta 0), [...]]]></description>
			<content:encoded><![CDATA[<p>时光荏苒。转眼间女儿已经成为一名小学生了，依稀还记得当年<a href="http://tonybai.com/2010/05/11/now-i-am-a-father/">果果呱呱坠地</a>的情景，独自回味，感慨万千。</p>
<p><a href="http://tonybai.com/2013/05/18/daughter-is-3-years-old/">果果3岁</a>前，都是我来<a href="http://tonybai.com/tag/女儿">记录她的生活点滴和成长历程</a>，那个时候她是我们生活舞台的主角。3岁后，果果学会了说话，上了幼儿园，开始学习各种知识、技能以及各种才艺。尤其是在幼儿园中班之后，她学会了写字、组词、造句和写日记，果果完全可以自己用文字来表达自己了! 我觉得是时候让她自己来记录她的成长历程了，我和她妈妈只是辅助和指导就好了。这种想法日益迫切，尤其是果果今年上了小学后，果果的成长更快了。我觉得迫切需要给她一个平台去表达她自己和记录她的成长。传统手段不能满足需求，于是我就想到给她搭建了一个博客站点，辅助她用网络文字、图片的形式记录自6岁上学之后的成长历程。于是这个周末就花了些时间，给女儿搭了一个博客站点。</p>
<p>下面以“流水账”的形式，记录一下这个站点的搭建过程，也许能给和我有同样需求的家长们带来一些帮助^_^。</p>
<h3>一、选型和准备工作</h3>
<p>博客站点，我首选静态页面的。静态页面，又要快速搭建，我首选<a href="https://pages.github.com/">github page</a>。github page一般情况下在国内访问相对较为稳定，访问速度也不错，ping延迟一般在100多ms，比我独立购买的<a href="https://www.digitalocean.com/?refcode=bff6eed92687">Digital Ocean的主机</a>的延迟低很多。还有另外一个原因就是市面上几乎所有主流静态页面生成工具都对github pages有着不错的支持。由于采用静态页面，即便将来<a href="http://tonybai.com/2014/11/28/migrate-blog-to-digitalocean-vps/">迁移到VPS</a>，也几乎是无缝的。于是给果果在github上申请了<a href="https://github.com/baisibei">账号</a>。</p>
<p>用与搭建博客、个人站点的静态页面生成工具很多，比如：<a href="http://jekyllrb.com/">jekyll</a>、<a href="http://octopress.org/">octopress</a>、<a href="https://hexo.io/">hexo</a>以及<a href="http://gohugo.io/">hugo</a>，用哪个呢？作为<a href="http://tonybai.com/tag/golang">Gopher</a>，我首选<a href="https://github.com/spf13/hugo">hugo</a>。接下来，我们来看看用hugo是否能搭建出满足我们需求的基于github page的博客站点吧。</p>
<p>hugo的安装参考hugo github主页上的说明即可。由于hugo import了很多第三方package，有些package可能在墙外，因此配置上加速器是更好的、更快的^_^。</p>
<h3>二、基于hugo搭建博客站点</h3>
<p>去年曾写过一篇《使用Hugo搭建静态站点(http://tonybai.com/2015/09/23/intro-of-gohugo/)》，讲述如何通过<a href="https://github.com/spf13/hugo">hugo</a>这个<a href="http://tonybai.com/tag/golang">golang</a>开发的工具搭建一个属于自己的静态站点（static websites)。不过那篇文章并没有谈到hugo如何与github page结合。</p>
<p>hugo官方文档中，对<a href="https://gohugo.io/tutorials/github-pages-blog/">如何使用hugo创建基于github page站点</a>有着较为详尽的描述，这是由一位名为<a href="https://github.com/spencerlyon2/">Spencer Lyon</a>的外国开发者贡献的文章，并且Spencer Lyon给出hugo github page的工程template： <a href="http://spencerlyon2.github.io/hugo_gh_blog">hugo-gh-blog</a>。我这里就直接使用了该工程模板，并基于hugo_gh_blog做一些定制化修改，比如“汉化”之类的。</p>
<p>下面是详细的步骤：</p>
<h4>1、clone hugo_gh_blog</h4>
<p>我们首先将Spencer Lyon的hugo_gh_blog代码库clone到本地，这是我们博客搭建的基础：</p>
<pre><code>$mkdir GuoGuoBlog
$cd GuoGuoBlog
$git clone https://github.com/spencerlyon2/hugo_gh_blog.git
Cloning into 'hugo_gh_blog'...
remote: Counting objects: 489, done.
remote: Total 489 (delta 0), reused 0 (delta 0), pack-reused 489
Receiving objects: 100% (489/489), 84.50 KiB | 24.00 KiB/s, done.
Resolving deltas: 100% (232/232), done.
Checking connectivity... done.
$cd hugo_gh_blog/
$ls
LICENSE        README.md    config.yaml    content/    deploy.sh*    static/        themes/
</code></pre>
<h4>2、编辑config.yaml和本地调试</h4>
<p>进入hugo_gh_blog目录，编辑config.yaml，设置站点的一些元数据：</p>
<pre><code>---
contentdir: "content"
layoutdir: "layouts"
publishdir: "public"
indexes:
  category: "categories"
baseurl: "http://baisibei.github.io"
title: "果果的成长历程"
canonifyurls: true
theme: "Lanyon"
...

</code></pre>
<p>接下来，我们来生成我们的静态博客页面：</p>
<pre><code>$hugo
0 draft content
0 future content
2 pages created
0 paginator pages created
2 categories created
in 48 ms
</code></pre>
<p>hugo将创建public目录，并将生成的页面放入该目录：</p>
<pre><code>$ls public
404.html    categories/    css/        favicon.ico    img/        index.html    index.xml    posts/        sitemap.xml
</code></pre>
<p>public/index.html就是站点首页。</p>
<p>我们在本地可以启动hugo server，并查看生成的站点情况：</p>
<pre><code>$hugo server -t Lanyon
0 draft content
0 future content
2 pages created
0 paginator pages created
2 categories created
in 54 ms
Serving pages from /Users/tony/GuoGuoBlog/hugo_gh_blog/public
Web Server is available at http://localhost:1313/ (bind address 127.0.0.1)

</code></pre>
<p>打开浏览器，输入localhost:1313。不出意外，你就可以看到类似下面的站点：</p>
<p><img src="http://tonybai.com/wp-content/uploads/baisibei-hugo-gh-blog-snapshot.png" alt="img{512x368}" /></p>
<h4>3、创建github page repository</h4>
<p>默认情况，github账号xxxx对应的github page repository是xxxx.github.io。于是我在女儿的github账号下创建public repository：baisibei.github.io。</p>
<p>接下来，我们需要将上步中生成的静态页面push到baisibei.github.io这个repository中。在本地进入到hugo_gh_blog/public目录下，执行：</p>
<pre><code>$git init
$git add -A
$git commit -m"initial commit" .
$git remote add origin https//github.com/baisibei.github.io.git
$git push -u origin master
</code></pre>
<p>如果你是用自己的github账号替孩子提交，那么请在该repository下设置collaborator。</p>
<p>push一旦成功后，你就可以直接访问：https://xxxx.github.io查看站点页面了。我这里要访问的是baisibei.github.io。</p>
<h4>4、样式问题</h4>
<p>问题出现了。在本地样式良好的首页，一旦push到github page上，再用浏览器（chrome）打开，我发现样式全部丢失了，首页被render为“全文字”版本。我一开始怀疑css文件路径不对或无法访问到某个css文件，通过“显示网页源代码”，单独试着访问所有css文件，发现这些文件都是可访问的。还有一个现象是：通过mac safari浏览器、手机上的ucweb、微信内置浏览器浏览，均没有样式问题，显示一切正常(Firefox、IE也均有问题)。将hugo_gh_blog放在我的VPS上，并用hugo作为web server，任何浏览器访问都是没有问题的。</p>
<p>针对这个问题，谷歌和度娘了半天，也没有解决掉。于是我有了换工具的想法。在搜索其他工具资料的过程中，我发现了基于hexo的<a href="https://github.com/tufu9441/maupassant-hexo">maupassant theme</a>！没错，就是那个和我目前博客同源的主题：maupassant。这个主题采用响应式的设计，对不同屏幕的访问均有很好的适配。</p>
<p>之前我的博客为了适应智能终端的浏览，采用了WPtouch插件，效果差强人意。这次我特地停用了该插件，直接用手机访问我的博客，发现maupassant的显示效果是棒棒的。于是下一步，我将hugo更换为<a href="https://hexo.io">hexo</a>，主题由Lanyon更换为maupassant。</p>
<p>hugo_gh_blog和baisibei.github.io依然保留在github.com上，后者的名字被rename为baisibei.github.io.using.hugo。</p>
<h3>三、基于hexo搭建博客站点</h3>
<h4>1、安装hexo相关工具</h4>
<p>第一次用hexo，安装hexo过程需要一些耐心：</p>
<pre><code>$npm install hexo-cli -g
{耐心的等待... ...}

$which hexo
/usr/local/bin/hexo

$hexo -v
hexo-cli: 1.0.2
os: Darwin 13.1.0 darwin x64
http_parser: 2.7.0
node: 6.9.1
v8: 5.1.281.84
uv: 1.9.1
zlib: 1.2.8
ares: 1.10.1-DEV
icu: 57.1
modules: 48
openssl: 1.0.2j
</code></pre>
<h4>2、创建blog</h4>
<p>使用hexo init在本地创建blog repository目录：</p>
<pre><code>$hexo init hexo_gh_blog
{耐心等待...}
... ...
INFO  Start blogging with Hexo!
</code></pre>
<p>进入hexo_gh_blog目录：</p>
<pre><code>$cd hexo_gh_blog
$ls
_config.yml    node_modules/    package.json    scaffolds/    source/        themes/
</code></pre>
<p>没完，我们还需要install一下相关的依赖：</p>
<pre><code>$npm install
{耐心等待....}

</code></pre>
<p>通过”hexo g”命令生成blog文件：</p>
<pre><code>$hexo g
INFO  Start processing
INFO  Files loaded in 270 ms
INFO  Generated: index.html
INFO  Generated: archives/index.html
INFO  Generated: fancybox/blank.gif
INFO  Generated: fancybox/jquery.fancybox.css
INFO  Generated: fancybox/fancybox_sprite.png
INFO  Generated: fancybox/fancybox_loading.gif
INFO  Generated: fancybox/fancybox_overlay.png
INFO  Generated: fancybox/fancybox_loading@2x.gif
INFO  Generated: fancybox/jquery.fancybox.pack.js
INFO  Generated: fancybox/jquery.fancybox.js
INFO  Generated: fancybox/fancybox_sprite@2x.png
INFO  Generated: archives/2016/12/index.html
INFO  Generated: css/fonts/fontawesome-webfont.eot
INFO  Generated: css/fonts/fontawesome-webfont.svg
INFO  Generated: css/style.css
INFO  Generated: css/fonts/fontawesome-webfont.ttf
INFO  Generated: fancybox/helpers/fancybox_buttons.png
INFO  Generated: css/fonts/FontAwesome.otf
INFO  Generated: js/script.js
INFO  Generated: fancybox/helpers/jquery.fancybox-buttons.css
INFO  Generated: archives/2016/index.html
INFO  Generated: css/fonts/fontawesome-webfont.woff
INFO  Generated: fancybox/helpers/jquery.fancybox-media.js
INFO  Generated: fancybox/helpers/jquery.fancybox-buttons.js
INFO  Generated: fancybox/helpers/jquery.fancybox-thumbs.css
INFO  Generated: fancybox/helpers/jquery.fancybox-thumbs.js
INFO  Generated: css/images/banner.jpg
INFO  Generated: 2016/12/16/hello-world/index.html
INFO  28 files generated in 867 ms

$ls
_config.yml    db.json        node_modules/    package.json    public/        scaffolds/    source/        themes/
</code></pre>
<p>和hugo命令类似，hexo g也创建了public目录，并将站点的静态文件生成在这个目录下面。</p>
<p>通过hexo s可以启动一个web server，在本地查看生成的静态站点：</p>
<pre><code>$hexo s
INFO  Start processing
INFO  Hexo is running at http://localhost:4000/. Press Ctrl+C to st
</code></pre>
<p>hexo自带的landscape theme真的是不咋好看。</p>
<h4>3、更换主题为maupassant</h4>
<p>先清理一下生成文件，再clone maupassant主题：</p>
<pre><code>$hexo clean
INFO  Deleted database.
INFO  Deleted public folder.

$git clone https://github.com/tufu9441/maupassant-hexo themes/maupassant
Cloning into 'themes/maupassant'...
remote: Counting objects: 1310, done.
remote: Total 1310 (delta 0), reused 0 (delta 0), pack-reused 1309
Receiving objects: 100% (1310/1310), 562.88 KiB | 382.00 KiB/s, done.
Resolving deltas: 100% (747/747), done.
Checking connectivity... done.

$ls themes/
landscape/    maupassant/
</code></pre>
<p>编辑hexo_gh_blog/_config.yml文件，修改theme为：maupassant</p>
<pre><code>//_config.xml
theme: landscape

=&gt;

theme: maupassant
</code></pre>
<p>重新生成站点静态文件之前，我们还需要安装下面两个工具，否则hexo生成出来的静态页面也是不可用的：</p>
<pre><code>$ npm install hexo-renderer-jade --save
$ npm install hexo-renderer-sass --save
</code></pre>
<p>hexo g和hexo s后，你就可以在本地：localhost:4000地址上看到生成的静态页面了：</p>
<p><img src="http://tonybai.com/wp-content/uploads/baisibei-hexo-gh-blog-snapshot.png" alt="img{512x368}" /></p>
<p>仿效上面章节中的步骤，将public目录push到baisibei.github.io repository中，看看我们上传后的站点通过公网访问是否还有“失真”现象，结果：一切正常。</p>
<h4>4、定制站点</h4>
<h5>a) 定制hexo_gh_blog/_config.yml</h5>
<p>这个_config.xml中的配置都是站点全局范畴的，这里仅我将我修改过的一些定制属性贴出来：</p>
<pre><code># Site
title: Amy Bai
subtitle: 果果的成长历程
description: 记录一个小女孩儿在学习、生活、家庭、情感方面的成长经历
author: Amy Bai
language: zh-CN
timezone: Asia/Shanghai
since: 2016
avatar: https://avatars0.githubusercontent.com/u/24524343?v=3&amp;s=400

# URL
## If your site is put in a subdirectory, set url as 'http://yoursite.com/child' and root as '/child/'
url: http://daughter.tonybai.com

</code></pre>
<p>默认情况下，maupassant主题的menu中包含rss菜单项（站点的订阅feed），对应的访问路径是/atom.xml，但要生成atom.xml，需要安装另外两个plugins：hexo-generator-feed和hexo-generator-sitemap：</p>
<pre><code>在_config.xml中添加：

plugins:
- hexo-generator-feed
- hexo-generator-sitemap

安装这两个插件；

$npm install hexo-generator-feed --save
hexo-site@0.0.0 /Users/tony/GuoGuoblog/hexo_gh_blog
└── hexo-generator-feed@1.2.0

$npm install hexo-generator-sitemap --save
hexo-site@0.0.0 /Users/tony/GuoGuoblog/hexo_gh_blog
└── hexo-generator-sitemap@1.1.2
</code></pre>
<p>安装后，执行hexo g，会看到atom.xml的生成。不过由于hexo版本似乎与feed插件有兼容性问题，当执行hexo s时，命令报错。我暂时在_config.xml中先注释掉这两个插件，待后期看是否能解决，不过这不影响站点的主要功能。</p>
<h5>b) about页面</h5>
<p>在maupassant主题的menu中默认还包含了about菜单项，但在生成的站点静态页面中点击about菜单项，将返回失败页面。如何给站点添加about页面呢？</p>
<p>在hexo_gh_blog/source下创建about目录，进入about目录，创建index.md文件，内容诸如：</p>
<pre><code>---
title: 关于我
---
我是Amy Bai，小名果果。
</code></pre>
<p>这样hexo g和hexo s后，你就有about页面可供访问了。</p>
<h4>5、写post</h4>
<p>hexo通过hexo new 命令来创建一篇post，我更喜欢简单粗暴，直接再hexo_gh_blog/source/_post创建一个xxx.md文件，这就是一篇post。post内的markdown格式和很多工具都是类似的：</p>
<pre><code>以initial-post.md为例：
---
title: "第一篇（待写）"
date: "2016-12-15"
description: "第一篇博文，敬请期待^O^"
categories:
    - "日记"
    - "感悟"
---

## 标题一

第一篇文章，敬请期待

### 子标题

## 小结

^O^

</code></pre>
<p>hexo按md文件头中的date对post进行排序。title就是显示在文章中的标题。description是文章摘要。默认情况下，maupassant主题在首页只是展示文章摘要而不是全文。</p>
<h3>四、域名绑定</h3>
<p>还没有申请顶级域名下的二级域名，目前打算绑定daughter.tonybai.com这个子域名。怎么做呢？</p>
<p>在public目录下，创建CNAME文件，文件内容：daughter.tonybai.com。然后将文件Push到github上去。</p>
<p>在你的域名管理站点，创建”daughter.tonybai.com”子域名，并将其CNAME值设置为”baisibei.github.io”。生效后，打开浏览器，访问”daughter.tonybai.com”，你就可以看到你刚刚生成的新站点了。</p>
<h3>五、小结</h3>
<p>站点搭建好了！用各种终端访问，感觉效果还不错。post发布也很方便，如果你想自动发布，定义一下hexo deploy即可。我个人习惯手动提交，也就没这个步骤了。</p>
<p>接下来，把内容创作的任务就交给果果了^_^。</p>
<p style='text-align:left'>&copy; 2016, <a href='https://tonybai.com'>bigwhite</a>. 版权所有. </p>
]]></content:encoded>
			<wfw:commentRss>https://tonybai.com/2016/12/18/build-a-blog-website-for-my-daughter/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Hello, Cocos2d-x</title>
		<link>https://tonybai.com/2014/03/11/hello-cocos2dx/</link>
		<comments>https://tonybai.com/2014/03/11/hello-cocos2dx/#comments</comments>
		<pubDate>Tue, 11 Mar 2014 12:33:45 +0000</pubDate>
		<dc:creator>bigwhite</dc:creator>
				<category><![CDATA[技术志]]></category>
		<category><![CDATA[Activity]]></category>
		<category><![CDATA[Android]]></category>
		<category><![CDATA[Blog]]></category>
		<category><![CDATA[Blogger]]></category>
		<category><![CDATA[C]]></category>
		<category><![CDATA[C11]]></category>
		<category><![CDATA[Cocos2d]]></category>
		<category><![CDATA[Cocos2d-x]]></category>
		<category><![CDATA[Cpp]]></category>
		<category><![CDATA[Eclipse]]></category>
		<category><![CDATA[Game-Engine]]></category>
		<category><![CDATA[GCC]]></category>
		<category><![CDATA[GLSurfaceView]]></category>
		<category><![CDATA[Google]]></category>
		<category><![CDATA[iOS]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[NDK]]></category>
		<category><![CDATA[opengl]]></category>
		<category><![CDATA[Opensource]]></category>
		<category><![CDATA[Programmer]]></category>
		<category><![CDATA[Ubuntu]]></category>
		<category><![CDATA[博客]]></category>
		<category><![CDATA[女儿]]></category>
		<category><![CDATA[安卓]]></category>
		<category><![CDATA[引擎]]></category>
		<category><![CDATA[智能终端]]></category>
		<category><![CDATA[果果]]></category>
		<category><![CDATA[游戏]]></category>
		<category><![CDATA[程序员]]></category>

		<guid isPermaLink="false">http://tonybai.com/?p=1495</guid>
		<description><![CDATA[女儿从两岁半开始接触iPad，在这个年龄段也只有一些幼教类游戏适合她玩。虽然知道iPad玩久了对视力有伤害，但有时候还真拗不过果果，索性 也就让她玩一会儿。之前对智能终端上的东西不是很在意，也没啥兴趣，这大概与当年在大学时做Win32 GUI开发的糟糕经历多多少少有点关系。不过智能终端是大势所趋，历史的潮流不能违抗。虽然自己并非以Android/iOS编程为主业，但适当学习学习 总归没有坏处，万一作出一个像&#34;Flappy Bird&#34;的游戏，爆发一下，还是蛮Happy的。于是在开始学习实践之前给自己定了一个小目标：今年六一儿童节送给女儿一款自己制作的小游戏。 智能终端上的游戏目前风头正劲，试问哪个智能手机上没有几款企鹅公司出品的游戏呢！之前从未涉猎过游戏开发，但知道游戏开发前要挑选一款合适的游 戏引擎，自己从头开始敲代码的时代已经out了。在寻觅游戏引擎之前，我需要回答三道摆在我面前的选择题： &#160;&#160;&#160; 1、2D引擎还是3D引擎？ &#160;&#160;&#160; 2、平台专用引擎还是跨平台引擎？ &#160;&#160;&#160; 3、收费引擎还是开源引擎？ 作为入门级选手，2D游戏显然更适合上手一些，另外适合果果这个年龄段的幼教类的游戏也多以2D游戏居多。3D游戏本身也太难了，不仅要 Programming能力，还要3D建模能力，这些学习起来周期就太长了；一直是Ubuntu Fans，手头没有Mac Book，这样开发iOS程序变成一件糟心的事，在Ubuntu下搭建iOS App开发环境繁杂的很，即便是虚拟机也懒得尝试。但从游戏体验来看，还是在iPad上玩更好一些，因此最好引擎能跨平台，以便后续迁移到iOS上；开源 和用开源惯了，收费的引擎目前不在考虑范围之内。综上，我要寻找的是一款开源的、跨平台的Mobile 2D Game Engine。 于是我找到了Cocos2d-x！Cocos2d-x是Cocos2d-iphone的C++跨平台分支，由于是国人创立的，在国内有着较大的用 户群，引擎资料也较多，社区十分活跃。国内已经出版了多本有关Cocos2d-x的中文书籍，比如《Cocos2d-x高级开发教程:制作自己的 &#8220;捕鱼达人&#8221;》 、《Cocos2d-x权威指南》 等都还不错。更重要的是Cocos2d-x自带了丰富的例子，供初学者&#8220;临摹学习&#8221;，其中cocos2d-x-2.2.2/samples/Cpp /TestCpp这个例子几乎涵盖了该引擎的绝大多数功能。下面就开启Cocos2d-x的入门之旅（For Android）。 一、引擎安装 试验环境： &#160;&#160; Ubuntu 12.04.1 x86_64 &#160;&#160; gcc 4.6.3 &#160;&#160; javac 1.7.0_21 &#160;&#160; java &#34;1.7.0_21&#34; HotSpot 64-bit Server VM &#160;&#160; adt-bundle-linux-x86_64-20131030.zip &#160;&#160; android-ndk-r9d-linux-x86_64.tar.bz2 Cocos2d-x官网目前提供2.2.2稳定版以及3.0beta2版的下载（当然你也可以下载到更老的版本）。由于3.0改变较大，资料不 多，且对编译器等版本的要求较高(需要支持C++ 11标准)，因此这里依旧以2.2.2版本作为学习目标。Cocos2d-x-2.2.2下载后解压到某个目录：比如/home1/tonybai/android-dev/cocos2d-x-2.2.2。 [...]]]></description>
			<content:encoded><![CDATA[<p>女儿从两岁半开始接触iPad，在这个年龄段也只有一些幼教类游戏适合她玩。虽然知道iPad玩久了对视力有伤害，但有时候还真拗不过果果，索性 也就让她玩一会儿。之前对智能终端上的东西不是很在意，也没啥兴趣，这大概与当年在大学时做Win32 GUI开发的糟糕经历多多少少有点关系。不过智能终端是大势所趋，历史的潮流不能违抗。虽然自己并非以<a href="http://tonybai.com/2011/05/24/develop-android-app-in-command-line-method/">Android</a>/iOS编程为主业，但适当学习学习 总归没有坏处，万一作出一个像&quot;Flappy Bird&quot;的游戏，爆发一下，还是蛮Happy的。于是在开始学习实践之前给自己定了一个小目标：今年六一儿童节送给女儿一款自己制作的小游戏。</p>
<p>智能终端上的游戏目前风头正劲，试问哪个智能手机上没有几款<a href="http://qq.com">企鹅公司</a>出品的游戏呢！之前从未涉猎过游戏开发，但知道游戏开发前要挑选一款合适的游 戏引擎，自己从头开始敲代码的时代已经out了。在寻觅游戏引擎之前，我需要回答三道摆在我面前的选择题：</p>
<p><i><font face="Courier New">&nbsp;&nbsp;&nbsp; 1、2D引擎还是3D引擎？<br />
	&nbsp;&nbsp;&nbsp; 2、平台专用引擎还是跨平台引擎？<br />
	&nbsp;&nbsp;&nbsp; 3、收费引擎还是开源引擎？</font></i></p>
<p>作为入门级选手，2D游戏显然更适合上手一些，另外适合果果这个年龄段的幼教类的游戏也多以2D游戏居多。3D游戏本身也太难了，不仅要 Programming能力，还要3D建模能力，这些学习起来周期就太长了；一直是<a href="http://tonybai.com/tag/Ubuntu">Ubuntu</a> Fans，手头没有Mac Book，这样开发iOS程序变成一件糟心的事，在Ubuntu下搭建iOS App开发环境繁杂的很，即便是虚拟机也懒得尝试。但从游戏体验来看，还是在iPad上玩更好一些，因此最好引擎能跨平台，以便后续迁移到iOS上；开源 和用开源惯了，收费的引擎目前不在考虑范围之内。综上，我要寻找的是一款开源的、跨平台的Mobile 2D Game Engine。</p>
<p>于是我找到了<a href="http://cocos2d-x.org/">Cocos2d-x</a>！Cocos2d-x是<a href="http://www.cocos2d-iphone.org/‎">Cocos2d-iphone</a>的C++跨平台分支，由于是国人创立的，在国内有着较大的用 户群，引擎资料也较多，社区十分活跃。国内已经出版了多本有关Cocos2d-x的中文书籍，比如《<a href="http://book.douban.com/subject/24704115/‎">Cocos2d-x高级开发教程:制作自己的 &ldquo;捕鱼达人&rdquo;</a>》 、《<a href="http://book.douban.com/subject/23820911/">Cocos2d-x权威指南</a>》 等都还不错。更重要的是Cocos2d-x自带了丰富的例子，供初学者&ldquo;临摹学习&rdquo;，其中cocos2d-x-2.2.2/samples/Cpp /TestCpp这个例子几乎涵盖了该引擎的绝大多数功能。下面就开启Cocos2d-x的入门之旅（For Android）。</p>
<p><b>一、引擎安装</b></p>
<p>试验环境：<br />
	<font face="Courier New"><i>&nbsp;&nbsp; Ubuntu 12.04.1 x86_64<br />
	&nbsp;&nbsp; gcc 4.6.3<br />
	&nbsp;&nbsp; javac 1.7.0_21<br />
	&nbsp;&nbsp; java &quot;1.7.0_21&quot; HotSpot 64-bit Server VM<br />
	&nbsp;&nbsp; adt-bundle-linux-x86_64-20131030.zip<br />
	&nbsp;&nbsp; android-ndk-r9d-linux-x86_64.tar.bz2</i></font></p>
<p>Cocos2d-x官网目前提供2.2.2稳定版以及3.0beta2版的下载（当然你也可以下载到更老的版本）。由于3.0改变较大，资料不 多，且对编译器等版本的要求较高(需要支持<a href="http://en.wikipedia.org/wiki/C++11‎">C++ 11标准</a>)，因此这里依旧以2.2.2版本作为学习目标。Cocos2d-x-2.2.2下载后解压到某个目录：比如<font face="Courier New">/home1/tonybai/android-dev/cocos2d-x-2.2.2</font>。 如果仅是用Cocos2d-x开发Android版本游戏，则不需要做什么编译工作。Android Game Project会在Project build时自动用NDK的编译器编译C++代码，并与NDK链接。如果你想早点看看Cocos2d-x sample中的例子运行起来到底是什么样子的，你可以在Ubuntu下编译出Linux版本的游戏：在cocos2d-x-2.2.2下执行<font face="Courier New">make-all-linux-project.sh</font>即可。编译需要一段时间，编译成 功后，我们可以进入到&ldquo;<font face="Courier New">cocos2d-x-2.2.2/samples/Cpp/HelloCpp/proj.linux/bin/release</font>&rdquo; 下执行&ldquo;HelloCpp&rdquo;这个可执行文件，一个最简单的Cocos2d-x游戏就会展现在你的面前了。</p>
<p>Android sample project的构建稍微复杂些：</p>
<p>首先在Eclipse中添加libcocos2dx Library project from existed code（注意：不Copy到workspace，原地建立）。该Project的代码路径为cocos2d-x-2.2.2/cocos2dx/platform /android/java。在project.properties和AndroidManifest.xml适当修改你所使用的api版本， 以让编译通过。我这里用的是 target=android-19。</p>
<p>然后，设置NDK_ROOT环境变量(比如<font face="Courier New">export NDK_ROOT=&#39;/home1/tonybai/android-dev/adt-bundle-linux-x86_64/android-ndk-r9c&#39;</font>)， 供build_native.sh使用。</p>
<p>最后添加游戏project。在Eclipse中添加HelloCpp project from existed code，位置<font face="Courier New">cocos2d-x-2.2.2/samples/Cpp/HelloCpp/proj.android</font>（注 意：不Copy到Workspace中，原地建立）。在HelloCpp的project.properties中添加&ldquo;<font face="Courier New">android.library.reference.1=../../../../cocos2dx/platform/android /java</font>&rdquo;。同样别忘了在project.properties和AndroidManifest.xml适当修改你所使用 的api版本，以让编译通过。</p>
<p>如果一切顺利的话，你会在Console窗口看到&ldquo;<font face="Courier New">**** Build Finished ****</font>&rdquo;。Problems窗口显示&ldquo;<font face="Courier New">0 errors</font>&ldquo;。 启动Android模拟器，Run Application，同样的HelloCpp画面会呈现在模拟器上。</p>
<p>Cocos2d-x是建构在OpenGL技术之上的。对于Android平台而言，Android SDK已经完全封装了opengl es 1.1/2.0的API（<font face="Courier New">android.opengl.*;javax.microedition.khronos.egl.*;javax.microedition.khronos.opengles.*</font>）， 引擎完全可以建立在这个之上，无需C++代码。但Cocos2d-x是一个跨平台的2D游戏引擎，核心选择了用C++代码实现(iOS提供的C绑 定，不提供Java绑定；Android则提供了Java和C绑定)，因此 在开发Android平台的2D游戏时，引擎部分是SDK与NDK交相互应，比如GLThread的创建和管理用的是SDK的 GLSurfaceView和GLThread，但真正的Surface绘制部分则是回调Cocos2d-x用C++编写的绘制实现（链接NDK 中的库）。</p>
<p><b>二、Cocos2d-x Android工程代码组织结构</b></p>
<p>以samples/Cpp/HelloApp的Android工程为例，Android版的Cocos2d-x工程与普通android应用程序 差别 不大，核心部分只是多了一个jni目录和一个build_native.sh脚本文件。其中jni目录下存放的是Java和C++调用转换的&ldquo;胶 水&rdquo;代码；build_native.sh则是用于编译jni下C++代码以及 cocos2dx_static library代码的构建脚本。</p>
<p>HelloCpp的构建过程摘要如下：</p>
<p><font face="Courier New">**** Build of configuration Default for project HelloCpp ****</font></p>
<p><font face="Courier New"><u><b>bash /home1/tonybai/android-dev/cocos2d-x-2.2.2/samples/Cpp/HelloCpp/proj.android/build_native.sh</b></u><br />
	NDK_ROOT = /home1/tonybai/android-dev/adt-bundle-linux-x86_64/android-ndk-r9c<br />
	COCOS2DX_ROOT = /home1/tonybai/android-dev/cocos2d-x-2.2.2/samples/Cpp/HelloCpp/proj.android/../../../..<br />
	APP_ROOT = /home1/tonybai/android-dev/cocos2d-x-2.2.2/samples/Cpp/HelloCpp/proj.android/..<br />
	APP_ANDROID_ROOT = /home1/tonybai/android-dev/cocos2d-x-2.2.2/samples/Cpp/HelloCpp/proj.android<br />
	+ /home1/tonybai/android-dev/adt-bundle-linux-x86_64/android-ndk-r9c/ndk-build -C /home1/tonybai/android-dev/cocos2d-x-2.2.2/samples/Cpp/HelloCpp/proj.androidNDK_MODULE_PATH=/home1/tonybai/android-dev/cocos2d-x-2.2.2/samples/Cpp/HelloCpp/proj.android/../../../..:/home1/tonybai/android-dev/cocos2d-x-2.2.2/samples/Cpp/HelloCpp/proj.android/../../../../cocos2dx/platform/third_party/android/prebuilt<br />
	Using prebuilt externals<br />
	Android NDK: WARNING:/home1/tonybai/android-dev/cocos2d-x-2.2.2/samples/Cpp/HelloCpp/proj.android/../../../../cocos2dx<b>/Android.mk</b>:cocos2dx_static: LOCAL_LDLIBS is always ignored for static libraries&nbsp;&nbsp;<br />
	make: Entering directory `/home1/tonybai/android-dev/cocos2d-x-2.2.2/samples/Cpp/HelloCpp/proj.android&#39;<br />
	[armeabi] Compile++ thumb: hellocpp_shared &lt;= main.cpp<br />
	[armeabi] Compile++ thumb: hellocpp_shared &lt;= AppDelegate.cpp<br />
	[armeabi] Compile++ thumb: hellocpp_shared &lt;= HelloWorldScene.cpp<br />
	[armeabi] Compile++ thumb: cocos2dx_static &lt;= CCConfiguration.cpp<br />
	[armeabi] Compile++ thumb: cocos2dx_static &lt;= CCScheduler.cpp<br />
	&nbsp;&#8230; &#8230;<br />
	[armeabi] Compile++ thumb: cocos2dx_static &lt;= CCTouch.cpp<br />
	[armeabi] StaticLibrary&nbsp; : libcocos2d.a<br />
	[armeabi] Compile thumb&nbsp; : cpufeatures &lt;= cpu-features.c<br />
	[armeabi] StaticLibrary&nbsp; : libcpufeatures.a<br />
	[armeabi] SharedLibrary&nbsp; : libhellocpp.so<br />
	[armeabi] Install&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; : libhellocpp.so =&gt; libs/armeabi/libhellocpp.so<br />
	make: Leaving directory `/home1/tonybai/android-dev/cocos2d-x-2.2.2/samples/Cpp/HelloCpp/proj.android&#39;</font></p>
<p><font face="Courier New">**** Build Finished ****</font></p>
<p>指挥NDK编译的则是jni下的Android.mk文件，其角色类似于Makefile。</p>
<p><b>三、Cocos2d-x Android工程代码阅读</b></p>
<p>单独将如何阅读代码拿出来，是为了后面分析引擎的驱动流程做准备工作。学习类似Cocos2d-x这样的游戏引擎，仅仅停留在游戏逻辑层代码是不 能很好的把握引擎本质的，因此适当的挖掘引擎实现实际上对于理解和使用 引擎都是大有裨益的。</p>
<p>以一个Cocos2d-x Android工程为例，它的游戏逻辑代码以及涉及的引擎代码涵盖在一下路径下（还是以HelloCpp的Android工程为例）：</p>
<p><font face="Courier New">&nbsp;&nbsp;&nbsp; 项目层：<br />
	&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; * cocos2d-x-2.2.2/samples/Cpp/HelloCpp/proj.android/src&nbsp; 主Activity的实现；<br />
	&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; * cocos2d-x-2.2.2/samples/Cpp/HelloCpp/proj.android/jni/hellocpp&nbsp; Cocos2dxRenderer类的nativeInit实现，用于引出Application的入口；<br />
	&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; * cocos2d-x-2.2.2/samples/Cpp/HelloCpp/Classes 你的游戏逻辑，以C++代码形式呈现；<br />
	&nbsp;&nbsp;&nbsp;<br />
	&nbsp;&nbsp;&nbsp; 引擎层：<br />
	&nbsp; &nbsp; &nbsp; &nbsp; * cocos2d-x-2.2.2/cocos2dx/platform/android/java/src 引擎层对Android Activity、GLSurfaceView以及Render的封装<br />
	&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; * cocos2d-x-2.2.2/cocos2dx/platform/android/jni 对应上面封装的native method实现<br />
	&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; * cocos2d-x-2.2.2/cocos2dx、cocos2d-x-2.2.2/cocos2dx/platform、cocos2d-x- 2.2.2/cocos2dx/platform/android&nbsp;&nbsp; cocos2dx引擎的核心实现(针对android平台)</font></p>
<p>后续的代码分析也将从这两个层次、六处位置出发。</p>
<p><b>四、从Activity开始</b></p>
<p>之前多少了解了一些Android App开发的知识，Android App都是始于Activity的。游戏也是App的一种，因此在Android平台上，Cocos2d-x游戏也是从Activity开始的。于是 Activity，确切的说是Cocos2dxActivity是我们这次引擎驱动机制分析的出发点。</p>
<p>回顾Android Activity的Lifecycle，Activity启动的顺序是：<font face="Courier New">Activity.onCreate -&gt; Activity.onStart() -&gt; Activity.onResume()</font>。接下来我们将按照 这条主线进行引擎驱动机制的分析。</p>
<p>HelloCpp.java中的HelloCpp这个Activity完全无所作为，仅仅是继承其父类Cocos2dxActivity的实现罢 了。</p>
<p><font face="Courier New">// HelloCpp.java<br />
	public class HelloCpp extends Cocos2dxActivity{<br />
	&nbsp;&nbsp;&nbsp; protected void onCreate(Bundle savedInstanceState){<br />
	&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; super.onCreate(savedInstanceState);<br />
	&nbsp;&nbsp;&nbsp; }<br />
	&nbsp;&nbsp;&nbsp; &#8230; &#8230;<br />
	}</font></p>
<p>我们来看Cocos2dxActivity类。</p>
<p><font face="Courier New">// Cocos2dxActivity.java</font></p>
<p><font face="Courier New">@Override<br />
	protected void onCreate(final Bundle savedInstanceState) {<br />
	&nbsp;&nbsp;&nbsp; super.onCreate(savedInstanceState);<br />
	&nbsp;&nbsp;&nbsp; sContext = this;<br />
	&nbsp;&nbsp;&nbsp; this.mHandler = new Cocos2dxHandler(this);<br />
	&nbsp;&nbsp;&nbsp; this.init();<br />
	&nbsp;&nbsp;&nbsp; Cocos2dxHelper.init(this, this);<br />
	}&nbsp;</font></p>
<p><font face="Courier New">public void init() {<br />
	&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // FrameLayout<br />
	&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ViewGroup.LayoutParams framelayout_params =<br />
	&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; new ViewGroup.LayoutParams(ViewGroup.LayoutParams.FILL_PARENT,<br />
	&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ViewGroup.LayoutParams.FILL_PARENT);<br />
	&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; FrameLayout framelayout = new FrameLayout(this);<br />
	&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; framelayout.setLayoutParams(framelayout_params);</font></p>
<p><font face="Courier New">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &#8230; &#8230;<br />
	&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // Cocos2dxGLSurfaceView<br />
	&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; this.mGLSurfaceView = this.onCreateView();</font></p>
<p><font face="Courier New">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // &#8230;add to FrameLayout<br />
	&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; framelayout.addView(this.mGLSurfaceView);<br />
	&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &#8230; &#8230;<br />
	&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; this.mGLSurfaceView.setCocos2dxRenderer(new Cocos2dxRenderer());<br />
	&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &#8230; &#8230;</font></p>
<p><font face="Courier New">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // Set framelayout as the content view<br />
	&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; setContentView(framelayout);<br />
	}</font></p>
<p>从上面代码可以看出，onCreate调用的init方法才是Cocos2dxActivity初始化的核心。在init方法 中，Cocos2dxActivity创建了一个Framelayout实例，并将该实例作为content View赋给了Cocos2dxActivity的实例。Framelayout实例也并不孤单，一个设置了Cocos2dxRenderer实例的 GLSurfaceView被Added to it。而Cocos2d-x引擎的初始化已经悄悄地在这几行代码间完成了，至于初始化的细节我们后续再做分析。</p>
<p>接下来是onResume方法，它的实现如下：</p>
<p><font face="Courier New">&nbsp;&nbsp;&nbsp; @Override<br />
	&nbsp;&nbsp;&nbsp; protected void onResume() {<br />
	&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; super.onResume();</font></p>
<p><font face="Courier New">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Cocos2dxHelper.onResume();<br />
	&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; this.mGLSurfaceView.onResume();<br />
	&nbsp;&nbsp;&nbsp; }</font></p>
<p>onResume调用了View的onResume()。</p>
<p><font face="Courier New">// Cocos2dxGLSurfaceView：<br />
	&nbsp;&nbsp;&nbsp; @Override<br />
	&nbsp;&nbsp;&nbsp; public void onResume() {<br />
	&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; super.onResume();</font></p>
<p><font face="Courier New">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; this.queueEvent(new Runnable() {<br />
	&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; @Override<br />
	&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; public void run() {<br />
	&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Cocos2dxGLSurfaceView.this.mCocos2dxRenderer.handleOnResume();<br />
	&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br />
	&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; });<br />
	&nbsp;&nbsp;&nbsp; }</font></p>
<p>Cocos2dxGLSurfaceView将该事件打包放到队列里，扔给了另外一个线程去执行（后续会详细说明这个线程），对应的方法在 Cocos2dxRenderer class中。</p>
<p><font face="Courier New">&nbsp;&nbsp;&nbsp; public void handleOnResume() {<br />
	&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Cocos2dxRenderer.nativeOnResume();<br />
	&nbsp;&nbsp;&nbsp; }</font></p>
<p>Render实际上调用的是native方法。</p>
<p>&nbsp;&nbsp;&nbsp; <font face="Courier New">JNIEXPORT void JNICALL Java_org_cocos2dx_lib_Cocos2dxRenderer_nativeOnResume() {<br />
	&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (CCDirector::sharedDirector()-&gt;getOpenGLView()) {<br />
	&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; CCApplication::sharedApplication()-&gt;applicationWillEnterForeground();<br />
	&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br />
	&nbsp;&nbsp;&nbsp; }</font></p>
<p>applicationWillEnterForeground方法在你的AppDelegate.cpp中；</p>
<p><font face="Courier New">void AppDelegate::applicationWillEnterForeground() {<br />
	&nbsp;&nbsp;&nbsp; CCDirector::sharedDirector()-&gt;startAnimation();//</font></p>
<p><font face="Courier New">&nbsp;&nbsp;&nbsp; // if you use SimpleAudioEngine, it must resume here<br />
	&nbsp;&nbsp;&nbsp; // SimpleAudioEngine::sharedEngine()-&gt;resumeBackgroundMusic();<br />
	}</font></p>
<p><font face="Courier New">这里仅是重新获得了一下时间罢了。</font></p>
<p><b>五、Render Thread(渲染线程)</b> <b>- GLThread</b></p>
<p>游戏引擎要兼顾UI事件和屏幕帧刷新。Android的OpenGL应用采用了UI线程(Main Thread) +&nbsp; 渲染线程(Render Thread)的模式。Activity活在Main Thread(主线程)中，也叫做UI线程。该线程负责捕获与用户交互的信息和事件，并与渲染(Render)线程交互。比如当用户接听电话、切换到其他 程序时，渲染线程必须知道发生了 这些事件，并作出即时的处理，而这些事件及处理方式都是由主线程中的Activity以及其装载的View传递给渲染线程的。我们在Cocos2dx的框 架代码中看不到渲染线程的诞生过程，这是因为这一过程是在Android SDK层实现的。</p>
<p>我们回顾一下Cocos2dxActivity.init方法的关键代码：</p>
<p><font face="Courier New">&nbsp;&nbsp;&nbsp; // Cocos2dxGLSurfaceView<br />
	&nbsp;&nbsp;&nbsp; this.mGLSurfaceView = this.onCreateView();</font></p>
<p><font face="Courier New">&nbsp;&nbsp;&nbsp; // &#8230;add to FrameLayout<br />
	&nbsp;&nbsp;&nbsp; framelayout.addView(this.mGLSurfaceView);<br />
	&nbsp;&nbsp;&nbsp; this.mGLSurfaceView.setCocos2dxRenderer(new Cocos2dxRenderer());<br />
	&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
	&nbsp;&nbsp;&nbsp; // Set framelayout as the content view<br />
	&nbsp;&nbsp;&nbsp; setContentView(framelayout);</font></p>
<p>Cocos2dxGLSurfaceView是 android.opengl.GLSurfaceView的子类。在android 上做原生opengl es 2.0编程的人应该都清楚GLSurfaceView的重要性。但渲染线程并非是在Cocos2dxGLSurfaceView实例化时被创建的，而是在 setRenderer的时候。</p>
<p>我们来看Cocos2dxGLSurfaceView.setCocos2dxRenderer的实现：</p>
<p><font face="Courier New">&nbsp;&nbsp;&nbsp; public void setCocos2dxRenderer(final Cocos2dxRenderer renderer) {<br />
	&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; this.mCocos2dxRenderer = renderer;<br />
	&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; this.setRenderer(this.mCocos2dxRenderer);<br />
	&nbsp;&nbsp;&nbsp; }</font></p>
<p>setRender是Cocos2dxGLSurfaceView父类GLSurfaceView实现的方法。在Android SDK GLSurfaceView.java文件中，我们看到：</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <font face="Courier New">public void setRenderer(Renderer renderer) {<br />
	&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; checkRenderThreadState();<br />
	&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (mEGLConfigChooser == null) {<br />
	&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; mEGLConfigChooser = new SimpleEGLConfigChooser(true);<br />
	&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br />
	&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (mEGLContextFactory == null) {<br />
	&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; mEGLContextFactory = new DefaultContextFactory();<br />
	&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br />
	&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (mEGLWindowSurfaceFactory == null) {<br />
	&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; mEGLWindowSurfaceFactory = new DefaultWindowSurfaceFactory();<br />
	&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br />
	<b>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; mRenderer = renderer;<br />
	&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; mGLThread = new GLThread(mThisWeakRef);<br />
	&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; mGLThread.start();</b><br />
	&nbsp;&nbsp;&nbsp; }</font></p>
<p>GLThread的实例是在这里被创建并开始执行的。至于渲染线程都干了些什么，我们可以通过其run方法看到：</p>
<p><font face="Courier New">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; @Override<br />
	&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; public void run() {<br />
	&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; setName(&quot;GLThread &quot; + getId());<br />
	&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (LOG_THREADS) {<br />
	&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Log.i(&quot;GLThread&quot;, &quot;starting tid=&quot; + getId());<br />
	&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }</font></p>
<p><font face="Courier New">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; try {<br />
	&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; guardedRun();<br />
	&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; } catch (InterruptedException e) {<br />
	&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // fall thru and exit normally<br />
	&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; } finally {<br />
	&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; sGLThreadManager.threadExiting(this);<br />
	&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br />
	&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }</font></p>
<p>run方法并没有给我们带来太多有价值的东西，真正有价值的信息藏在guardedRun方法中。guardedRun是这个源文件中规模最为庞 大的方法，但抽取其核心结构后，我们发现它大致就是一个死循环，以下是摘要式的伪代码：</p>
<p><font face="Courier New">while (true) {<br />
	&nbsp;&nbsp; synchronized (sGLThreadManager) {<br />
	&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; while (true) {<br />
	&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &#8230;. &#8230;<br />
	&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (! mEventQueue.isEmpty()) {<br />
	&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; event = mEventQueue.remove(0);<br />
	&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; break;<br />
	&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br />
	&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }&nbsp;&nbsp;<br />
	&nbsp;&nbsp; }//end of synchronized (sGLThreadManager)</font></p>
<p><font face="Courier New">&nbsp;&nbsp;&nbsp; if (event != null) {<br />
	&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; event.run();<br />
	&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; event = null;<br />
	&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; continue;<br />
	&nbsp;&nbsp; }&nbsp;&nbsp;</font></p>
<p><font face="Courier New">&nbsp;&nbsp; if needed<br />
	&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; view.mRenderer.onSurfaceCreated(gl, mEglHelper.mEglConfig);</font></p>
<p><font face="Courier New">&nbsp;&nbsp; if needed<br />
	&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; view.mRenderer.onSurfaceChanged(gl, w, h);</font></p>
<p><font face="Courier New">&nbsp;&nbsp; if needed<br />
	&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; view.mRenderer.onDrawFrame(gl);<br />
	}</font></p>
<p><font face="Courier New">在这里我们看到了event、Renderer的三个回调方法onSurfaceCreated、onSurfaceChanged以及 onDrawFrame，后续我们会对这三个函数做详细分析的。</font></p>
<p><b>六、游戏逻辑的入口</b></p>
<p>在HelloCpp的Classes下有好多C++代码文件（涉及具体的游戏逻辑），在HelloCpp的android project jni目录下也有Jni胶水代码，那么这些代码是如何和引擎一起互动生效的呢？</p>
<p>上面讲到过，涉及到画面的一些渲染都是在GLThread中进行的，这涉及到onSurfaceCreated、 onSurfaceChanged以及onDrawFrame三个方法。我们看看 Cocos2dxRenderer.onSurfaceCreated方法的实现，该方法会在Surface被首次渲染时调用：</p>
<p><font face="Courier New">&nbsp;&nbsp;&nbsp; public void onSurfaceCreated(final GL10 pGL10, final EGLConfig pEGLConfig) {<br />
	&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Cocos2dxRenderer.nativeInit(this.mScreenWidth, this.mScreenHeight);<br />
	&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; this.mLastTickInNanoSeconds = System.nanoTime();<br />
	&nbsp;&nbsp;&nbsp; }</font></p>
<p>该方法继续调用HelloCpp工程jni目录下的nativeInit代码:</p>
<p><font face="Courier New">void Java_org_cocos2dx_lib_Cocos2dxRenderer_nativeInit(JNIEnv*&nbsp; env, jobject thiz, jint w, jint h)<br />
	{<br />
	&nbsp;&nbsp;&nbsp; if (!CCDirector::sharedDirector()-&gt;getOpenGLView())<br />
	&nbsp;&nbsp;&nbsp; {<br />
	&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; CCEGLView *view = CCEGLView::sharedOpenGLView();<br />
	&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; view-&gt;setFrameSize(w, h);</font></p>
<p><font face="Courier New">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; AppDelegate *pAppDelegate = new AppDelegate();<br />
	&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; CCApplication::sharedApplication()-&gt;run();<br />
	&nbsp;&nbsp;&nbsp; }<br />
	&nbsp;&nbsp;&nbsp; else<br />
	&nbsp;&nbsp;&nbsp; {<br />
	&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ccGLInvalidateStateCache();<br />
	&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; CCShaderCache::sharedShaderCache()-&gt;reloadDefaultShaders();<br />
	&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ccDrawInit();<br />
	&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; CCTextureCache::reloadAllTextures();<br />
	&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; CCNotificationCenter::sharedNotificationCenter()-&gt;postNotification(EVENT_COME_TO_FOREGROUND, NULL);<br />
	&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; CCDirector::sharedDirector()-&gt;setGLDefaultValues();<br />
	&nbsp;&nbsp;&nbsp; }<br />
	}</font></p>
<p>这似乎让我们看到了游戏逻辑的入口了：</p>
<p><font face="Courier New">&nbsp;&nbsp;&nbsp; CCEGLView *view = CCEGLView::sharedOpenGLView();<br />
	&nbsp;&nbsp;&nbsp; view-&gt;setFrameSize(w, h);</font></p>
<p><font face="Courier New">&nbsp;&nbsp;&nbsp; AppDelegate *pAppDelegate = new AppDelegate();<br />
	&nbsp;&nbsp;&nbsp; CCApplication::sharedApplication()-&gt;run();</font></p>
<p>继续追踪CCApplication::run方法：</p>
<p><font face="Courier New">int CCApplication::run()<br />
	{<br />
	&nbsp;&nbsp;&nbsp; // Initialize instance and cocos2d.<br />
	&nbsp;&nbsp;&nbsp; if (! applicationDidFinishLaunching())<br />
	&nbsp;&nbsp;&nbsp; {<br />
	&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return 0;<br />
	&nbsp;&nbsp;&nbsp; }</font></p>
<p><font face="Courier New">&nbsp;&nbsp;&nbsp; return -1;<br />
	}</font></p>
<p>applicationDidFinishLaunching，没错这就是游戏逻辑的入口了。我们得回到Samples代码目录中去找到对应方法 的实现。</p>
<p><font face="Courier New">//cocos2d-x-2.2.2/samples/Cpp/HelloCpp/Classes/AppDelegate.cpp</font></p>
<p><font face="Courier New">bool AppDelegate::applicationDidFinishLaunching() {</font><br />
	<font face="Courier New">&nbsp;&nbsp;&nbsp; // initialize director<br />
	&nbsp;&nbsp;&nbsp; CCDirector* pDirector = CCDirector::sharedDirector();<br />
	&nbsp;&nbsp;&nbsp; CCEGLView* pEGLView = CCEGLView::sharedOpenGLView();</font></p>
<p><font face="Courier New">&nbsp;&nbsp;&nbsp; pDirector-&gt;setOpenGLView(pEGLView);<br />
	&nbsp;&nbsp;&nbsp; CCSize frameSize = pEGLView-&gt;getFrameSize();<br />
	&nbsp;&nbsp;&nbsp; &#8230; &#8230;</font></p>
<p><font face="Courier New">&nbsp;&nbsp;&nbsp; // turn on display FPS<br />
	&nbsp;&nbsp;&nbsp; pDirector-&gt;setDisplayStats(true);</font></p>
<p><font face="Courier New">&nbsp;&nbsp;&nbsp; // set FPS. the default value is 1.0/60 if you don&#39;t call this<br />
	&nbsp;&nbsp;&nbsp; pDirector-&gt;setAnimationInterval(1.0 / 60);</font></p>
<p><font face="Courier New">&nbsp;&nbsp;&nbsp; // create a scene. it&#39;s an autorelease object<br />
	&nbsp;&nbsp;&nbsp; CCScene *pScene = HelloWorld::scene();</font></p>
<p><font face="Courier New">&nbsp;&nbsp;&nbsp; // run<br />
	&nbsp;&nbsp;&nbsp; pDirector-&gt;runWithScene(pScene);</font></p>
<p><font face="Courier New">&nbsp;&nbsp;&nbsp; return true;<br />
	}</font></p>
<p>的确，在<font face="Courier New">applicationDidFinishLaunching中我们做了很多引擎参 数的设置。</font>接下来大管家CCDirector实例登场，并运行了HelloWorld Scene的实例。但这依旧是初始化的一部分，虽然方法名让人听起来像是某种持续连贯行为：</p>
<p><font face="Courier New">//cocos2d-x-2.2.2/cocos2dx/CCDirector.cpp</font></p>
<p><font face="Courier New">void CCDirector::runWithScene(CCScene *pScene)</font><br />
	<font face="Courier New">{<br />
	&nbsp;&nbsp;&nbsp; &#8230; &#8230;</font><br />
	<font face="Courier New">&nbsp;&nbsp;&nbsp; pushScene(pScene);<br />
	&nbsp;&nbsp;&nbsp; startAnimation();<br />
	}</font></p>
<p><font face="Courier New">void CCDisplayLinkDirector::startAnimation(void)</font><br />
	<font face="Courier New">{<br />
	&nbsp;&nbsp;&nbsp; if (CCTime::gettimeofdayCocos2d(m_pLastUpdate, NULL) != 0)<br />
	&nbsp;&nbsp;&nbsp; {<br />
	&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; CCLOG(&quot;cocos2d: DisplayLinkDirector: Error on gettimeofday&quot;);<br />
	&nbsp;&nbsp;&nbsp; }</font></p>
<p><font face="Courier New">&nbsp;&nbsp;&nbsp; m_bInvalid = false;<br />
	}</font></p>
<p>两个方法均只是初始化了某些数据成员变量，并未真正将引擎驱动起来。</p>
<p><b>七、驱动引擎</b></p>
<p>之所以游戏画面是运动的，那是因为屏幕以较高的帧数刷新的缘故，这样人眼就会看到连续的动作，就和电影的放映原理是一样的。在Cocos2d-x 引擎中这些驱动屏幕刷新的代码在哪里呢？</p>
<p>我们回顾一下之前谈到的GLThread线程，我们说过画面渲染的工作都是由它来完成的。GLThread的核心是guardedRun函数，该 函数以&ldquo;死循环&rdquo;的方式调用Cocos2dxRender.onDrawFrame方法对画面进行持续渲染。</p>
<p>我们来看看引擎实现的Cocos2dxRender.onDrawFrame方法：</p>
<p><font face="Courier New">public void onDrawFrame(final GL10 gl) {<br />
	&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; /*<br />
	&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; * FPS controlling algorithm is not accurate, and it will slow down FPS<br />
	&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; * on some devices. So comment FPS controlling code.<br />
	&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; */</font></p>
<p><font face="Courier New">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; /*<br />
	&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; final long nowInNanoSeconds = System.nanoTime();<br />
	&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; final long interval = nowInNanoSeconds &#8211; this.mLastTickInNanoSeconds;<br />
	&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; */</font></p>
<p><font face="Courier New">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // should render a frame when onDrawFrame() is called or there is a<br />
	&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // &quot;ghost&quot;<br />
	&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Cocos2dxRenderer.nativeRender();</font></p>
<p><font face="Courier New">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; /*<br />
	&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // fps controlling<br />
	&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (interval &lt; Cocos2dxRenderer.sAnimationInterval) {<br />
	&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; try {<br />
	&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // because we render it before, so we should sleep twice time interval<br />
	&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <b>Thread.sleep</b>((Cocos2dxRenderer.sAnimationInterval &#8211; interval) / Cocos2dxRenderer.NANOSECONDSPERMICROSECOND);<br />
	&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; } catch (final Exception e) {<br />
	&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br />
	&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }</font></p>
<p><font face="Courier New">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; this.mLastTickInNanoSeconds = nowInNanoSeconds;<br />
	&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; */<br />
	&nbsp;&nbsp;&nbsp; }</font></p>
<p>这个方法实现得比较奇怪，似乎修改过多次，但最后还是决定只保留了一个方法调用： Cocos2dxRenderer.nativeRender()。从注释掉的代码来看，似乎是想在这个方法中通过Thread.sleep来控制 Render Thread渲染的帧率。但由于控制的不理想，索性就不控制了，让guardedRun真正变成了dead loop。但从HelloCpp Sample运行时的状态显示，画面始终保持在60帧左右，让人十分诧异。据说Cocos2d-x 3.0版本重新设计了渲染这块的机制。(后记：在Android上虽然没有帧数控制，但真正的渲染帧率实际上还受到&quot;垂直同步&quot;信号 &#8211; vertical sync的影响。在游戏中，也许强劲的显卡迅速的绘制完一屏的图像，但是没有垂直同步信号的到达，显卡无法绘制下一屏，只有等vsync信号到达，才可以绘制。这样fps实际上要要受到操作系统刷新率值的制约）。</p>
<p>nativeRender从命名来看，这显然是一个C++编写的函数实现。我们只能到jni目录下寻找。</p>
<p><font face="Courier New">cocos2d-x-2.2.2/cocos2dx/platform/android/jni/ Java_org_cocos2dx_lib_Cocos2dxRenderer.cpp</font></p>
<p><font face="Courier New">&nbsp;&nbsp;&nbsp; JNIEXPORT void JNICALL Java_org_cocos2dx_lib_Cocos2dxRenderer_nativeRender(JNIEnv* env) {<br />
	&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; cocos2d::CCDirector::sharedDirector()-&gt;mainLoop();<br />
	&nbsp;&nbsp;&nbsp; }</font></p>
<p>nativeRender也很简洁，直接调用了CCDirector的mainLoop，也就是说每帧渲染过程中真正干活地是 CCDirector::mainLoop。到此我们终于找到了引擎渲染的驱动器：GLThead::guardedRun，以&ldquo;死循环&rdquo;的方式刷新着画面，让我们感受到&ldquo;动&rdquo;的魅力。</p>
<p><b>八、mainLoop</b></p>
<p>进一步我们来看看mainLoop所做的工作。mainLoop是CCDirector类的一个纯虚函数，CCDirector的子类CCDisplayLinkDirector真正实现了 它：</p>
<p><font face="Courier New">//CCDirector.cpp<br />
	void CCDisplayLinkDirector::mainLoop(void)<br />
	{<br />
	&nbsp;&nbsp;&nbsp; if (m_bPurgeDirecotorInNextLoop)<br />
	&nbsp;&nbsp;&nbsp; {<br />
	&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; m_bPurgeDirecotorInNextLoop = false;<br />
	&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; purgeDirector();<br />
	&nbsp;&nbsp;&nbsp; }<br />
	&nbsp;&nbsp;&nbsp; else if (! m_bInvalid)<br />
	&nbsp;&nbsp;&nbsp;&nbsp; {<br />
	&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; drawScene();</font></p>
<p><font face="Courier New">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // release the objects<br />
	&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; CCPoolManager::sharedPoolManager()-&gt;pop();<br />
	&nbsp;&nbsp;&nbsp;&nbsp; }<br />
	}</font></p>
<p><font face="Courier New">void CCDirector::drawScene(void)</font><br />
	<font face="Courier New">{<br />
	&nbsp;&nbsp;&nbsp; // calculate &quot;global&quot; dt<br />
	&nbsp;&nbsp;&nbsp; calculateDeltaTime();</font></p>
<p><font face="Courier New">&nbsp;&nbsp;&nbsp; //tick before glClear: issue #533<br />
	&nbsp;&nbsp;&nbsp; if (! m_bPaused)<br />
	&nbsp;&nbsp;&nbsp; {<br />
	&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; m_pScheduler-&gt;update(m_fDeltaTime);<br />
	&nbsp;&nbsp;&nbsp; }</font></p>
<p><font face="Courier New">&nbsp;&nbsp;&nbsp; glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);</font></p>
<p><font face="Courier New">&nbsp;&nbsp;&nbsp; /* to avoid flickr, nextScene MUST be here: after tick and before draw.<br />
	&nbsp;&nbsp;&nbsp;&nbsp; XXX: Which bug is this one. It seems that it can&#39;t be reproduced with v0.9 */<br />
	&nbsp;&nbsp;&nbsp; if (m_pNextScene)<br />
	&nbsp;&nbsp;&nbsp; {<br />
	&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; setNextScene();<br />
	&nbsp;&nbsp;&nbsp; }</font></p>
<p><font face="Courier New">&nbsp;&nbsp;&nbsp; kmGLPushMatrix();</font></p>
<p><font face="Courier New">&nbsp;&nbsp;&nbsp; // draw the scene<br />
	&nbsp;&nbsp;&nbsp; if (m_pRunningScene)<br />
	&nbsp;&nbsp;&nbsp; {<br />
	&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; m_pRunningScene-&gt;visit();<br />
	&nbsp;&nbsp;&nbsp; }</font></p>
<p><font face="Courier New">&nbsp;&nbsp;&nbsp; // draw the notifications node<br />
	&nbsp;&nbsp;&nbsp; if (m_pNotificationNode)<br />
	&nbsp;&nbsp;&nbsp; {<br />
	&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; m_pNotificationNode-&gt;visit();<br />
	&nbsp;&nbsp;&nbsp; }</font></p>
<p><font face="Courier New">&nbsp;&nbsp;&nbsp; if (m_bDisplayStats)<br />
	&nbsp;&nbsp;&nbsp; {<br />
	&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; showStats();<br />
	&nbsp;&nbsp;&nbsp; }</font></p>
<p><font face="Courier New">&nbsp;&nbsp;&nbsp; kmGLPopMatrix();</font></p>
<p><font face="Courier New">&nbsp;&nbsp;&nbsp; m_uTotalFrames++;</font></p>
<p><font face="Courier New">&nbsp;&nbsp;&nbsp; // swap buffers<br />
	&nbsp;&nbsp;&nbsp; if (m_pobOpenGLView)<br />
	&nbsp;&nbsp;&nbsp; {<br />
	&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; m_pobOpenGLView-&gt;swapBuffers();<br />
	&nbsp;&nbsp;&nbsp; }</font></p>
<p><font face="Courier New">&nbsp;&nbsp;&nbsp; if (m_bDisplayStats)<br />
	&nbsp;&nbsp;&nbsp; {<br />
	&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; calculateMPF();<br />
	&nbsp;&nbsp;&nbsp; }<br />
	}</font></p>
<p>帧渲染由mainLoop调用的drawScene()完成，drawScene方法根据Scene下的渲染树，根据node的最新属性逐个渲染 node，并调整各个Node的调度定时器数据，细节这里就不详细说明了。</p>
<p><b>九、UI线程与GLThread的交互</b></p>
<p>用户的屏幕触控动作由UI线程捕捉到，该类事件需要传递给引擎，并由GLThread根据各个画面元素的最新状态重新绘制画面。UI线程负责处理用户交互 事件，并将特定的事件通知GLThread处理。UI线程通过Cocos2dxGLSurfaceView的queueEvent方法，将事件以及处理方 法传递给GLThread执行的。</p>
<p>Cocos2dxGLSurfaceView的queueEvent方法继承自其父类GLSurfaceView：</p>
<p><font face="Courier New">&nbsp;&nbsp;&nbsp; public void queueEvent(Runnable r) {<br />
	&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; mGLThread.queueEvent(r);<br />
	&nbsp;&nbsp;&nbsp; }</font></p>
<p>而GLThread的queueEvent方法实现如下：</p>
<p><font face="Courier New">public void queueEvent(Runnable r) {<br />
	&nbsp;&nbsp;&nbsp; if (r == null) {<br />
	&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; throw new IllegalArgumentException(&quot;r must not be null&quot;);<br />
	&nbsp;&nbsp;&nbsp; }&nbsp;&nbsp;<br />
	&nbsp;&nbsp;&nbsp; synchronized(sGLThreadManager) {<br />
	&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <b>mEventQueue.add(r);<br />
	&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; sGLThreadManager.notifyAll();</b><br />
	&nbsp;&nbsp;&nbsp; }&nbsp;&nbsp;<br />
	} </font></p>
<p>该方法将event互斥地放入EventQueue，并通知阻塞在Queue上的线程取货。</p>
<p>运行着的GLThread实例在guardedRun中会从event队列中取出runnable event并run的。<br />
	&nbsp;&nbsp;<br />
	<font face="Courier New">while (true) {<br />
	&nbsp;&nbsp;&nbsp; synchronized (sGLThreadManager) {<br />
	&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; while (true) {<br />
	&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (mShouldExit) {<br />
	&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return;<br />
	&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }&nbsp;&nbsp;</font></p>
<p><font face="Courier New">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (! mEventQueue.isEmpty()) {<br />
	&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <b>event = mEventQueue.remove(0);</b><br />
	&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; break;<br />
	&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }&nbsp;&nbsp;<br />
	&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &#8230;&#8230;.<br />
	&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }&nbsp;&nbsp;<br />
	&nbsp;&nbsp;&nbsp;&nbsp; }&nbsp;&nbsp;</font></p>
<p><font face="Courier New">&nbsp;&nbsp;&nbsp;&nbsp; &#8230; &#8230;<br />
	&nbsp;&nbsp;&nbsp;&nbsp; if (event != null) {<br />
	&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <b>event.run();</b><br />
	&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; event = null;<br />
	&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; continue;<br />
	&nbsp;&nbsp;&nbsp; }&nbsp;&nbsp;<br />
	&nbsp;&nbsp;&nbsp; &#8230;<br />
	} </font></p>
<p>Activity的各种事件Pause、Resume、Stop以及View的各种屏幕触控事件都是通过queueEvent传递给GLThread执行的，比如：View的onKeyDown方法：</p>
<p><font face="Courier New">&nbsp;&nbsp;&nbsp; //Cocos2dxGLSurfaceView.java<br />
	&nbsp;&nbsp;&nbsp; @Override<br />
	&nbsp;&nbsp;&nbsp; public boolean onKeyDown(final int pKeyCode, final KeyEvent pKeyEvent) {<br />
	&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; switch (pKeyCode) {<br />
	&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; case KeyEvent.KEYCODE_BACK:<br />
	&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; case KeyEvent.KEYCODE_MENU:<br />
	&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; this.queueEvent(new Runnable() {<br />
	&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; @Override<br />
	&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; public void run() {<br />
	&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Cocos2dxGLSurfaceView.this.mCocos2dxRenderer.handleKeyDown(pKeyCode);<br />
	&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br />
	&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; });<br />
	&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return true;<br />
	&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; default:<br />
	&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return super.onKeyDown(pKeyCode, pKeyEvent);<br />
	&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br />
	&nbsp;&nbsp;&nbsp; }</font></p>
<p><b>十、小结</b></p>
<p>有了以上的对Cocos2d-x引擎的理解后，再编写游戏代码就更加游刃有余了，至少出现问题时，我们知道应该在哪里查找了。就像对汽车的发动机了如指掌 后，一旦发生动力故障，我们基本知道排除的方法。但对发动机了解的再透彻，也不能代表就能设计和生产出好车，游戏也是这样，对引擎了解是一码事，设计和实 现出好游戏是另外一码事。学习引擎只是编写游戏的起点而已。</p>
<p style='text-align:left'>&copy; 2014, <a href='https://tonybai.com'>bigwhite</a>. 版权所有. </p>
]]></content:encoded>
			<wfw:commentRss>https://tonybai.com/2014/03/11/hello-cocos2dx/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>结婚五周年纪念</title>
		<link>https://tonybai.com/2013/09/09/fifth-wedding-anniversary/</link>
		<comments>https://tonybai.com/2013/09/09/fifth-wedding-anniversary/#comments</comments>
		<pubDate>Mon, 09 Sep 2013 10:52:58 +0000</pubDate>
		<dc:creator>bigwhite</dc:creator>
				<category><![CDATA[生活簿]]></category>
		<category><![CDATA[Blog]]></category>
		<category><![CDATA[Blogger]]></category>
		<category><![CDATA[Programmer]]></category>
		<category><![CDATA[博客]]></category>
		<category><![CDATA[围城]]></category>
		<category><![CDATA[女儿]]></category>
		<category><![CDATA[家庭]]></category>
		<category><![CDATA[情感]]></category>
		<category><![CDATA[木婚]]></category>
		<category><![CDATA[果果]]></category>
		<category><![CDATA[生活]]></category>
		<category><![CDATA[礼物]]></category>
		<category><![CDATA[程序员]]></category>
		<category><![CDATA[结婚]]></category>
		<category><![CDATA[结婚纪念日]]></category>
		<category><![CDATA[老婆]]></category>
		<category><![CDATA[领证]]></category>

		<guid isPermaLink="false">http://tonybai.com/?p=1399</guid>
		<description><![CDATA[今天是一个特别值得纪念的日子 &#8211; 我和老婆的结婚五周年纪念日。五年前的今天我和老婆领了证，正式步入了围城。平时总被她抱怨不浪漫的我这次特意准备了一对黄金玫瑰耳钉作为我们&#8220;木婚&#8221; （结婚五年）纪念日的礼物。老婆也蛮喜欢，我也甚是Happy（以前LP总是不中意我给她买的礼物）。 很想对这五年来的婚姻生活做一次&#8220;精彩&#8221;的回顾，但想了许久，也不得思路。于是我发现这几年的婚姻生活和大多数家庭一样 &#8211; 温馨而平淡，没什么&#8220;惊天动地&#8221;的故事。我和老婆也都是那种不善于表达的人类，尤其是情感方面，没有那么多细腻的东西，有些不那么浪漫。婚后的生活也无非 是衣食住行+柴米油盐+适当的娱乐。 和大多数现代年轻家庭一样，老婆在家里是名义上的&#8220;一把手&#8221;：老婆指东，我决不向西，但实际上一些大事还是我拿主意^_^。老婆在家里属于绝对的&#8220;享乐型&#8221;，除了女儿的一些事情外，一切大小事务基本都全权交给我处理，用句俗话说：LP不是操心的命儿啊。 在家里，老婆手握财政大权，这几年来总体感觉钱管得还可以，至少知道钱没有乱花，她就是传说中的能存住钱的主儿。我们的家庭也遵循着中国社会俗的不能再俗的现实版家庭成长路线 &#8211; 房子、孩子、车子、房子(for daughter)&#8230; 家庭生活中，两个人不可避免会有些磕磕碰碰。每次红脸，老婆总是坚持到最后的那个胜利者。 老婆爱逛街，我就陪她去香港逛；老婆爱看青春都市剧，如果是我觉得还不错的，我就让陪着老婆看，并端上洗好的水果，有些时候帮她打打洗脚水^_^。 老婆爱减肥，给她买呼拉圈，&#8220;怂恿&#8221;她去晨跑，监督她晚上不吃饭。结果呼拉圈上早已落了一层灰，我也基本养成了晨跑的习惯，而她的体重似乎没有明显变化。 老婆工作忙，加班较多，每天下班都去接她，有时候在外面等到很晚。后来老婆心疼我：干脆让我坐班车，她自己开车。 老婆不是那么&#8220;求上进&#8221;，于是我总唠叨她去学习去提高，并给她买了一些可以帮助她在工作中提升技能的书。书在书架上沉睡了好长时间后，终于在最近得到了老婆的垂青。老婆在学到新知识、新技能后，也是很有成就感的，还主动在我面前&#8220;炫耀&#8221;。我暗自窃喜：我的目的达到了。 老婆对我要求倒甚是严格。总是拿我与他们公司的这个副总、那个总的比来比去，让我倍感亚历山大，于是我就持续奋发图强，希望在不久在将来能有更好的结果让老婆满意。 老婆认准的事情（虽然不多），她总是努力去办到。比如当年老婆就是坚持自己生果果，坚决不剖，于是每天晚饭后，我都陪着挺着大肚子的LP在小区溜弯至少一 小时，即便是数九寒冬；再比如老婆坚持母乳喂养。在奶水不足，上班不便的情况下，也楞是让果果吃了一年的母乳。这点我还是挺佩服的。 掐指算来：每天早上6：30起床，7：30出门，晚上18：30回家，22：30以后入睡。不算睡眠时间，实际一个工作日与lp在一起的时间也就是5-6个小时。有时候一天也说不上几句话。 婚姻生活就是这样的平淡入水，但是只要两个人活得真实、彼此间都有存在感就很好了，我们还能期望什么呢！ 今天出门太早，不忍叫醒还在梦乡中的老婆，于是上飞机前给老婆发了一条简单不能再简单的暧昧短信（你能猜到的哦）以贺我们的结婚纪念日以及真切表达我那时那刻的心情。 此刻我在春城昆明写下此文，希望老婆能永远让我宠着，永远当我们家的&#8220;一把手&#8221;。 &#169; 2013, bigwhite. 版权所有.]]></description>
			<content:encoded><![CDATA[<p>今天是一个特别值得纪念的日子 &#8211; 我和老婆的<strong>结婚五周年纪念日</strong>。五年前的今天我和老婆领了证，正式步入了围城。平时总被她抱怨不浪漫的我这次特意准备了一对黄金玫瑰耳钉作为我们&ldquo;木婚&rdquo; （结婚五年）纪念日的礼物。老婆也蛮喜欢，我也甚是Happy（以前LP总是不中意我给她买的礼物）。</p>
<p>很想对这五年来的婚姻生活做一次&ldquo;精彩&rdquo;的回顾，但想了许久，也不得思路。于是我发现这几年的婚姻生活和大多数家庭一样 &#8211; 温馨而平淡，没什么&ldquo;惊天动地&rdquo;的故事。我和老婆也都是那种不善于表达的人类，尤其是情感方面，没有那么多细腻的东西，有些不那么浪漫。婚后的生活也无非 是衣食住行+柴米油盐+适当的娱乐。</p>
<p>和大多数现代年轻家庭一样，老婆在家里是名义上的&ldquo;一把手&rdquo;：老婆指东，我决不向西，但实际上一些大事还是我拿主意^_^。老婆在家里属于绝对的&ldquo;享乐型&rdquo;，除了<a href="http://tonybai.com/2010/05/11/now-i-am-a-father/">女儿</a>的一些事情外，一切大小事务基本都全权交给我处理，用句俗话说：LP不是操心的命儿啊。</p>
<p>在家里，老婆手握财政大权，这几年来总体感觉钱管得还可以，至少知道钱没有乱花，她就是传说中的能存住钱的主儿。我们的家庭也遵循着中国社会俗的不能再俗的现实版家庭成长路线 &#8211; 房子、孩子、车子、房子(for daughter)&#8230;</p>
<p>家庭生活中，两个人不可避免会有些磕磕碰碰。每次红脸，老婆总是坚持到最后的那个胜利者。</p>
<p>老婆爱逛街，我就陪她去<a href="http://tonybai.com/2013/06/18/a-hongkong-macau-trip/">香港逛</a>；老婆爱看青春都市剧，如果是我觉得还不错的，我就让陪着老婆看，并端上洗好的水果，有些时候帮她打打洗脚水^_^。</p>
<p>老婆爱减肥，给她买呼拉圈，&ldquo;怂恿&rdquo;她去晨跑，监督她晚上不吃饭。结果呼拉圈上早已落了一层灰，我也基本养成了晨跑的习惯，而她的体重似乎没有明显变化。</p>
<p>老婆工作忙，加班较多，每天下班都去接她，有时候在外面等到很晚。后来老婆心疼我：干脆让我坐班车，她自己开车。</p>
<p>老婆不是那么&ldquo;求上进&rdquo;，于是我总唠叨她去学习去提高，并给她买了一些可以帮助她在工作中提升技能的书。书在书架上沉睡了好长时间后，终于在最近得到了老婆的垂青。老婆在学到新知识、新技能后，也是很有成就感的，还主动在我面前&ldquo;炫耀&rdquo;。我暗自窃喜：我的目的达到了。</p>
<p>老婆对我要求倒甚是严格。总是拿我与他们公司的这个副总、那个总的比来比去，让我倍感亚历山大，于是我就持续奋发图强，希望在不久在将来能有更好的结果让老婆满意。</p>
<p>老婆认准的事情（虽然不多），她总是努力去办到。比如当年老婆就是坚持自己<a href="http://tonybai.com/2010/05/11/now-i-am-a-father/">生果果</a>，坚决不剖，于是每天晚饭后，我都陪着挺着大肚子的LP在小区溜弯至少一 小时，即便是数九寒冬；再比如老婆坚持母乳喂养。在奶水不足，上班不便的情况下，也楞是让果果吃了一年的母乳。这点我还是挺佩服的。</p>
<p>掐指算来：每天早上6：30起床，7：30出门，晚上18：30回家，22：30以后入睡。不算睡眠时间，实际一个工作日与lp在一起的时间也就是5-6个小时。有时候一天也说不上几句话。</p>
<p>婚姻生活就是这样的平淡入水，但是只要两个人活得真实、彼此间都有存在感就很好了，我们还能期望什么呢！</p>
<p>今天出门太早，不忍叫醒还在梦乡中的老婆，于是上飞机前给老婆发了一条简单不能再简单的暧昧短信（你能猜到的哦）以贺我们的结婚纪念日以及真切表达我那时那刻的心情。</p>
<p>此刻我在春城昆明写下此文，希望老婆能永远让我宠着，永远当我们家的&ldquo;一把手&rdquo;。</p>
<p style='text-align:left'>&copy; 2013, <a href='https://tonybai.com'>bigwhite</a>. 版权所有. </p>
]]></content:encoded>
			<wfw:commentRss>https://tonybai.com/2013/09/09/fifth-wedding-anniversary/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>港澳行记</title>
		<link>https://tonybai.com/2013/06/18/a-hongkong-macau-trip/</link>
		<comments>https://tonybai.com/2013/06/18/a-hongkong-macau-trip/#comments</comments>
		<pubDate>Mon, 17 Jun 2013 16:50:27 +0000</pubDate>
		<dc:creator>bigwhite</dc:creator>
				<category><![CDATA[驴友秀]]></category>
		<category><![CDATA[Blog]]></category>
		<category><![CDATA[Blogger]]></category>
		<category><![CDATA[Gucci]]></category>
		<category><![CDATA[HongKong]]></category>
		<category><![CDATA[iPad]]></category>
		<category><![CDATA[LV]]></category>
		<category><![CDATA[Macau]]></category>
		<category><![CDATA[Programmer]]></category>
		<category><![CDATA[TurboJet]]></category>
		<category><![CDATA[中港城]]></category>
		<category><![CDATA[九寨]]></category>
		<category><![CDATA[九龙]]></category>
		<category><![CDATA[云吞]]></category>
		<category><![CDATA[五羊雕塑]]></category>
		<category><![CDATA[十六番]]></category>
		<category><![CDATA[博物馆]]></category>
		<category><![CDATA[周大福]]></category>
		<category><![CDATA[喷射飞航]]></category>
		<category><![CDATA[圆炮台]]></category>
		<category><![CDATA[大三巴]]></category>
		<category><![CDATA[女儿]]></category>
		<category><![CDATA[尖沙嘴]]></category>
		<category><![CDATA[广九直通车]]></category>
		<category><![CDATA[广州]]></category>
		<category><![CDATA[感悟]]></category>
		<category><![CDATA[拱北]]></category>
		<category><![CDATA[旅游]]></category>
		<category><![CDATA[旺角]]></category>
		<category><![CDATA[果果]]></category>
		<category><![CDATA[海洋公园]]></category>
		<category><![CDATA[海港城]]></category>
		<category><![CDATA[淘宝]]></category>
		<category><![CDATA[港币]]></category>
		<category><![CDATA[澳门]]></category>
		<category><![CDATA[生活]]></category>
		<category><![CDATA[程序员]]></category>
		<category><![CDATA[罗湖]]></category>
		<category><![CDATA[翠华餐厅]]></category>
		<category><![CDATA[肠粉]]></category>
		<category><![CDATA[葡京]]></category>
		<category><![CDATA[许留山]]></category>
		<category><![CDATA[越秀公园]]></category>
		<category><![CDATA[迪斯尼]]></category>
		<category><![CDATA[郎豪坊]]></category>
		<category><![CDATA[郎豪酒店]]></category>
		<category><![CDATA[香港]]></category>

		<guid isPermaLink="false">http://tonybai.com/?p=1285</guid>
		<description><![CDATA[我来也匆匆，去也匆匆。 &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; &#8212; 某歌词 记忆中和LP一起出去旅行的次数少的可怜，上一次还是在结婚蜜月时，去的是九寨。二人一起出游是很美妙的，印象也是深刻的，至今当时在九寨的情形 还能历历在目。于是年初就和LP定下了今年的一个家庭目标：一起出去玩一次。 不过真正要确定何时以及去哪出游还是很困难的，毕竟工作上的事情和照顾孩子的事情要安排妥当才行。上月中旬LP接到通知：端午前要到公司总部（广 州）接受培训，机会终于来了 &#8211; 都到了广州，怎能不去港澳呢！于是我们决定趁此机会去香港澳门玩一通，还能省下来一个人的路费^_^。LP以前是去过一次香港的，像迪斯尼、海洋公园、黄 大仙等景点LP都是游览过的，因此这次LP去香港以消费为主，我尾随并保驾护航。另外我们在是否带果果去这个问题上也纠结了一段时间，最后决定这 次就不带孩子去了。一方面孩子太小，带出去总是不那么放心，那边天气也热，怕她生病；另一方面这次以逛街为主，带孩子十分不便，孩子累，大人也 累。 行程确定 出游第一步：确定行程，否则没法订机票和酒店。和LP商议后，最终确定的行程： 6.9&#160;&#160; 广州自由行 6.10 入港，购物 6.11 香港，购物 6.12 从香港入澳门，逛景点，买点纪念品，晚上通过珠海拱北口岸回大陆，连夜回到广州，入住酒店 6.13 飞回沈阳 各种准备 LP两年前和同事结伴去过一次HongKong，但以景点旅游为主，对香港购物区了解甚少，因此这次出发前我们还是要做好充分的准备。 &#160;&#160;&#160; &#8211; 订香港酒店。由于到港时恰逢端午假日，因此酒店的价格也是水涨船高，多亏我们提前近20天就预订了（LP在淘宝订的），这才勉强订到价格还算合理，且位置 和质量都属上乘的 &#8211; 郎豪酒店（Langham Place Hotel)，郎豪酒店离九龙旺角地铁站出口很近，酒店下面就是香港的一个购物中心郎豪坊，酒店是五星级的，一天700RMB，感觉超值。 &#160;&#160;&#160; &#8211; 订往返机票。由于LP只能从广州出发，因此只能订到广州的往返。6月恰逢广交会刚结束，机票折扣较大，因此往返定的都是2.5-3折左右的机票，已经是相 当的划算了。来回算上机场建设费、燃油费才不到1600。 &#160;&#160;&#160; &#8211; 预订广州酒店。我和LP在广州要住上2宿，在网上找了很长时间，发现7天连锁今年有新会员&#8220;77元&#8221;自主大床房的体验活动，这个价格太合适了。于是和LP 每人注册了一个ID，在7天的广州动物园2分店预订了两天住宿（其他分店要么太远，要么就是客满，无法预订，便宜也有便宜的不足之处）。 &#160;&#160;&#160; &#8211; 买广九直通车车票。坐大巴入港太慢，口岸等的时间也较长，因此我和LP决定坐火车进港。唯一的选择就是广九直通车，最早的一列是8点17左右的，到香港也 就10点多，很舒服方便，就是价格有些小贵，大概是坐Bus的两倍。这个票在12306.cn上是无法订到的，只能在窗口买，或在淘宝上找代理购 买。 &#160;&#160;&#160; &#8211; 买拱北回广州的车票。从拱北回广州的Bus很多，Taobao上有很多代理提供车票服务。 &#160;&#160;&#160; &#8211; 手机卡。这次没有购买香港当地的手机卡，由于客户级别已经在8级以上，开通国际漫游也无需押金，我就直接开通了国际漫游服务。 &#160;&#160;&#160; [...]]]></description>
			<content:encoded><![CDATA[<p><i>我来也匆匆，去也匆匆。</i><br />
	<i>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &#8212; 某歌词</i></p>
<p>记忆中和LP一起出去旅行的次数少的可怜，上一次还是在结婚蜜月时，去的是<a href="http://tonybai.com/2009/06/24/the-tour-of-jiuzhaigou/">九寨</a>。二人一起出游是很美妙的，印象也是深刻的，至今当时在九寨的情形 还能历历在目。于是年初就和LP定下了今年的一个家庭目标：一起出去玩一次。</p>
<p>不过真正要确定何时以及去哪出游还是很困难的，毕竟工作上的事情和照顾孩子的事情要安排妥当才行。上月中旬LP接到通知：端午前要到公司总部（广 州）接受培训，机会终于来了 &#8211; 都到了广州，怎能不去港澳呢！于是我们决定趁此机会去香港澳门玩一通，还能省下来一个人的路费^_^。LP以前是去过一次香港的，像迪斯尼、海洋公园、黄 大仙等景点LP都是游览过的，因此这次LP去香港以消费为主，我尾随并保驾护航。另外我们在是否带果果去这个问题上也纠结了一段时间，最后决定这 次就不带孩子去了。一方面孩子太小，带出去总是不那么放心，那边天气也热，怕她生病；另一方面这次以逛街为主，带孩子十分不便，孩子累，大人也 累。</p>
<p><b>行程确定</b></p>
<p>出游第一步：确定行程，否则没法订机票和酒店。和LP商议后，最终确定的行程：</p>
<p>6.9&nbsp;&nbsp; 广州自由行<br />
	6.10 入港，购物<br />
	6.11 香港，购物<br />
	6.12 从香港入澳门，逛景点，买点纪念品，晚上通过珠海拱北口岸回大陆，连夜回到广州，入住酒店<br />
	6.13 飞回沈阳</p>
<p><b>各种</b><b>准备</b></p>
<p>LP两年前和同事结伴去过一次HongKong，但以景点旅游为主，对香港购物区了解甚少，因此这次出发前我们还是要做好充分的准备。</p>
<p>&nbsp;&nbsp;&nbsp; &#8211; 订香港酒店。由于到港时恰逢端午假日，因此酒店的价格也是水涨船高，多亏我们提前近20天就预订了（LP在淘宝订的），这才勉强订到价格还算合理，且位置 和质量都属上乘的 &#8211; 郎豪酒店（Langham Place Hotel)，郎豪酒店离九龙旺角地铁站出口很近，酒店下面就是香港的一个购物中心郎豪坊，酒店是五星级的，一天700RMB，感觉超值。</p>
<p>&nbsp;&nbsp;&nbsp; &#8211; 订往返机票。由于LP只能从广州出发，因此只能订到广州的往返。6月恰逢广交会刚结束，机票折扣较大，因此往返定的都是2.5-3折左右的机票，已经是相 当的划算了。来回算上机场建设费、燃油费才不到1600。</p>
<p>&nbsp;&nbsp;&nbsp; &#8211; 预订广州酒店。我和LP在广州要住上2宿，在网上找了很长时间，发现<a href="http://www.7daysinn.cn">7天连锁</a>今年有新会员&ldquo;77元&rdquo;自主大床房的体验活动，这个价格太合适了。于是和LP 每人注册了一个ID，在7天的广州动物园2分店预订了两天住宿（其他分店要么太远，要么就是客满，无法预订，便宜也有便宜的不足之处）。</p>
<p>&nbsp;&nbsp;&nbsp; &#8211; 买广九直通车车票。坐大巴入港太慢，口岸等的时间也较长，因此我和LP决定坐火车进港。唯一的选择就是广九直通车，最早的一列是8点17左右的，到香港也 就10点多，很舒服方便，就是价格有些小贵，大概是坐Bus的两倍。这个票在12306.cn上是无法订到的，只能在窗口买，或在淘宝上找代理购 买。</p>
<p>&nbsp;&nbsp;&nbsp; &#8211; 买拱北回广州的车票。从拱北回广州的Bus很多，Taobao上有很多代理提供车票服务。</p>
<p>&nbsp;&nbsp;&nbsp; &#8211; 手机卡。这次没有购买香港当地的手机卡，由于客户级别已经在8级以上，开通国际漫游也无需押金，我就直接开通了国际漫游服务。</p>
<p>&nbsp;&nbsp;&nbsp; &#8211; 选择目标购物区。香港的购物区有很多，我们在港也就待两个整天，因此我们需要确定每天的目标购物区。由于住在郎豪坊，因此我们第一天打算就在郎豪坊周围 逛。第二天去著名的海港城周围。</p>
<p>&nbsp;&nbsp;&nbsp; &#8211; 各种打折卡和会员号。自从确定了要去香港，就一直在<a href="http://bbs.16fan.com/forum-4-1.html">十六番论坛</a>上潜水，搜罗一堆不知道是否好用的会员卡号，打印出来备用。</p>
<p><b>蒸笼上的广州</b></p>
<p>第一次去广州，也第一次感受到了广州的湿热，在大街上背个包走两步就浑身透汗。不识趣的我居然还跑到了越秀公园给五羊雕塑拍照，没想到越秀公园不 是&ldquo;平原&rdquo;，雕塑居然在小山上，这让我终于体会到什么叫汗流狭背了，一整包面巾纸都用来擦汗了。就这样走走歇歇，也算把越秀的主要景点逛了个遍。 越秀公园南门是中山纪念堂，我也顺便串了个门，给孙大总统的铜像拍了几张照片。广州的热还体现在即便是进入夜幕，热度依然不减。乘地铁回到住处， 不将空调开得凉凉的是无法入睡的。但考虑到不习惯开着空调睡觉，于是就开开关关，一宿也没咋睡好。</p>
<p>除了热之外，我对广州这座城市的印象还是蛮不错的。和大多数发展中的北方城市不同，广州人民，至少核心城区的人们已经开始享受发展后的成果了，尤 其是2010亚运会后的成果了 &#8211; 宽阔完好的道路、四通八达的交通系统、良好的绿化、鲜见灰尘的空气、发达的商业环境、先进的城市管理以及城区中数量众多的公园，这些至少比到处是工地、到 处修路、到处扬尘的沈阳要先进五年以上。没有尘土，马路上的车都是干净的，就算下雨也是没有泥的。</p>
<p>广州的吃食我还算是适应，云吞、肠粉、牛河、炒饭量足，价格也不是很贵，至少比北京是要便宜一些的。我没有特意去广州什么老字号或特色美食去体 验，我就是走到哪里吃到哪里。南方的甜品和汤我不是很感兴趣，所以也没有去体验。天河又一城下面的风行牛奶的西米露倒是买了一杯，感觉很是一般。</p>
<p>习惯了每到一地就去当地的博物馆看看，这次也不例外。广东省博物馆就在珠江北岸，离海心沙亚运公园很近，遥望南岸的广州地标 &#8211; 广州塔。博物馆是免费的，但门票最好提前一天预约。不过我去的那天人不是很多，不预约直接领票也很快。与LP一起逛博物馆只能走马观花了，那天博物馆的临 时展览包括&ldquo;晋国遗珍&mdash;&mdash;山西出土周代文物&rdquo;、&ldquo;金枝玉叶&mdash;&mdash;明代江西藩王墓出土玉器精品展&rdquo;、&ldquo;静木清缘&mdash;&mdash;金丝楠薄浮雕艺术展&rdquo;，常设的展览 有：广东省自然资源展览、漆木精华&mdash;&mdash;潮州木雕艺术展览等。个人十分喜欢&ldquo;广东省自然资源展览&rdquo;，里面展出了许多矿产、宝石等原始形态，十分开眼 界。</p>
<p><b>入港</b></p>
<p>10号早上和LP很从容的从酒店退房出来，坐地铁3站地到达广州东站，准备乘坐广九直通车入香港。直通车提前45分钟剪票，去香港的旅客（绝大多 数都是，应该没有人坐这趟车去东莞）要进行出境检查。直通车的车厢是类动车一等座席那种，但车头应该是普通的那种电力机车车头。车开的速度并不 快，尤其是通过深圳罗湖铁路口岸时车基本是龟速通过。过到香港这边后，火车与香港东铁线似乎走的是一条路线，只是沿路的车站不停罢了，直到到达香 港九龙红勘站。入境手续办理也不算慢，排一会就过去了。接下来要做的第一件事就是购买八达通卡，在香港没有八达通真是寸步难行啊。150港币一 张，离港前可退掉，但我和LP商量了，这次就不退票了，后续还会有很多机会来香港的，到时候只要重新激活一下八达通就可以使用了。</p>
<p>按照之前查找的路线，我们坐东铁线去旺角东站。坐了香港地铁才知道，香港地铁有些是地面上跑的轻铁，和普通火车没啥区别。出了旺角东站，我们就彻 底迷路了：分不清东南西北，周围是熙熙壤壤的人群，马路上穿梭着双层巴士，香港路牌还不是很适应。找人问路，问了几个居然还都是大陆游客。最后问 到一个本地人，告诉了我们去郎豪酒店的方向。我们就顺着走，感觉不对就再问，就这样误打误撞，还真的到了郎豪酒店对面。原来这里离旺角站更近，楼 下是一个H&amp;M店，对面是西武百货，旁边有家翠华餐厅，似乎到了饭点，门口排着等位的人，估计都是慕名而来的大陆游客。</p>
<p>酒店一层有个很小的服务台，站着一位老外，估计是英国人。我们和他咨询如何check in，他似乎中文不是很地道，就用手比划出&ldquo;八&rdquo;的姿势，嘴里说什么&quot;爱露&quot;，我们一直以为是到第8层办理check in手续，直到他送我们进电梯，我们才理解是到&quot;L&quot;层办理手续 &#8211; 电梯的按钮上明显标明了L &#8211; 酒店大堂。由于到的还早，酒店尚无房间，我们将行李做好寄存，就下楼开始逛香港。</p>
<p><b>消费天堂</b></p>
<p>郎豪酒店楼下就是郎豪坊，不过郎豪坊显然比较高档，很多店铺折扣都不大。我们估计不会在这里购物，于是下楼沿街逛。离郎豪坊不远处就是香港的一条 购物大道 &#8211; 弥敦道。在香港想辨别大路还是小道，就看路上双层Bus多少即可。郎豪酒店在弥敦道西侧，弥敦道东侧有通菜街（也就是著名的女人街）、奶路臣街等，这些街 道两侧林立着各类商铺，服装、化妆品、数码、珠宝、手表应有尽有，有些类似国内的步行街，但每个商铺面积都不大。这些街就是我和LP香港逛街的起 点了。</p>
<p>在香港逛街与在内地商场、专卖店逛街也没啥区别。并且在接待过多年大陆游客后，香港的各类店铺的服务员应对操持着普通话的大陆游客都是毫无问题 的。不过我还是总结了一些在香港逛街的几大特点：</p>
<p>&nbsp;&nbsp; &#8211; 店铺冷气足<br />
	&nbsp;&nbsp; 香港店铺里的冷气不是一般的足，是足让你感觉到寒冷。游客一般都是短袖裤衩，但店员们都是衬衫西装，估计他们十分了解他们所处的温度环境。</p>
<p>&nbsp;&nbsp; &#8211; 服务意识好<br />
	&nbsp;&nbsp; 多数店铺里的服务员服务的意识还是很不错的，不知道是否仅针对大陆游客^_^。据说香港本地人去买珠宝，一般都被要求&ldquo;等会儿&rdquo;。</p>
<p>&nbsp;&nbsp; &#8211; 关联推销多<br />
	&nbsp;&nbsp;&nbsp; 我买了台ipad mimi，店员并不着急结帐，而是向你推销其他产品，比如外壳、贴膜；甚至是将你带到其他柜台，推销与ipad mini毫不相干的产品，比如剃须刀，这是我在百老汇亲历到的。在Nike/Adidas打折店买双运动鞋，她们也会不遗馀力的向你推销100元5双的运 动袜。</p>
<p>&nbsp;&nbsp; &#8211; 珠宝行烂大街，以周大福为甚<br />
	&nbsp;&nbsp;&nbsp; 香港珠宝首饰店那叫一个多。以弥敦道为例，沿路两侧，五步一个周大福，十步一个周生生，再迈一步就是一个六福或谢瑞麟，丝毫不夸张。这里面还是以周大福的 店最为多，人气似乎也最旺。</p>
<p>&nbsp;&nbsp; &#8211; 化妆品店林立<br />
	&nbsp;&nbsp;&nbsp; 由于免稅等原因，香港的化妆品的确多，而且种类丰富，从小样到套装应有尽有。卓悦、莎莎是香港最著名的化妆品零售店，而且满大街都是，十分方便。</p>
<p>&nbsp;&nbsp; &#8211; 吃，一个也不能少<br />
	&nbsp;&nbsp;&nbsp; 网上谈的最多的就是翠华，也许是被大陆客炒起来的原因。我和LP在下午回酒店前去了一趟翠华餐厅，那时候人刚刚减少，排了2分钟就有了座位。点了咖喱牛腩 饭、番茄猪排饭，味道也就那么回事，没啥特殊的地方，价格&ldquo;不菲&rdquo;，一共117港币。<br />
	&nbsp;&nbsp;&nbsp; 反倒是香港的KFC和麦记相比翠华要便宜许多，我俩没少吃。像许留山这样的甜品店，就类似以前大陆&ldquo;街客&rdquo;那种地位。<br />
	&nbsp;<br />
	&nbsp;&nbsp; &#8211; 数码电器价格优势缩小<br />
	&nbsp;&nbsp;&nbsp; 除了apple系列产品，其他的数码产品在价格上比大陆优势不大，有些甚至比大陆的店还要贵，比如单反相机。佳能650D和700D在百老汇、丰泽和香港 苏宁的报价都比大陆要高出一些，遂放弃之。</p>
<p>下午三点左右，我们打算回酒店休息一下。行李已经被直接放到房间内了，这服务估计只有五星酒店才能享受到。酒店的房间比预象的要好上很多。房间设 计新颖，设备也很新，卫生间有个大浴缸，有电视声音输出，可以边泡澡边收看电视。各种商务设备我们都不是很了解，中央空调太冷，最高温度只能调到 26度，于是关之（触摸液晶屏的），总体感觉一宿700rmb还是值得的，毕竟这是HongKong。</p>
<p>休息后，继续逛街。这次沿着弥敦道一直向南逛，一路路过油麻地、九龙政府合署、佐敦、柏丽购物大道、尖沙嘴；调头逛了一下加连威老道，然后往回 走。当然这期间LP采购了好多东东，这里就不细数了。回到旺角时已经半夜11点多了，感觉好累。到KFC（24小时店）吃了一顿夜宵，回酒店休 息。</p>
<p><b>彻游海港城</b></p>
<p>11号早晨从CNN得知神十已经成功上天，甚感高兴，心情自然也不错。今天我们的目的地是海港城。之前就听说海港城巨大无比，一天都逛不完，于是乎早些起 来，整理物品，做出发准备。到海港城可以乘地铁，也可以坐双层Bus，我们选择体验后者 &#8211; 在弥敦道乘坐281/A路公交到中港城下车。香港的Bus都是比较舒适的，上下层都是软座，不像国内Bus那样拥挤（国情使然）。香港道路虽然不宽，但由 于大家基本遵守交通规则，所以路上的车开的都是飞快的。不过感觉随着大陆游客的增多，&ldquo;中国式&rdquo;过马路的现象在香港也越来越多了。</p>
<p>中港城在海港城的北侧，楼上是登船的闸口，楼下则是折扣店，虽然面积不大。由于到的比较早，就在中港城解决了早餐，并顺便到楼上打听一下第二天乘船到澳门 的事宜。多亏提前打听了一下，原来船票是有限的，我们打听的时候，第二天的船票都已经基本没了，于是赶紧用之前从taobao买到的换票券换了两张第二天 中午11点的到澳门的船票。</p>
<p>海港城是由多个商场组成的联体建筑，因此显得格外庞大，进去后都不知道该如何逛，即便拿到了导游图依旧比较懵。还好经过几轮服务人员的指点，终于&ldquo;找到了 北&rdquo;。海港城里面的商品也不甚便宜，折扣也没有想象中的大，当然这和我们的钱包有限还是有关系的^_^。海港城二层的露台是个理想的观看海景的地方，远眺 远处就是铜锣湾、上环一带的密集楼宇，还有海上穿梭往来的各种TurboJet，很是漂亮。</p>
<p>逛完海港城内部的时候已经是下午5点多了。出了海港城才发现外面有好多顶级品牌专卖店，比如LV、Gucci，店外居然真的有人在排队等待入店。我们不会在这些店里购物，也就看看热闹罢了。</p>
<p><b>坐TurboJet去澳门</b></p>
<p>12号早晨，小雨。飞航是11点钟的，我们的时间还是很充裕的，不过心里有事，起的也就早。和LP商量一下，可以早些到中港城，有时间顺便逛下下面的大奥 莱。在中港城解决掉早餐后，向服务人员打探一下在哪里登船。服务人员说10点那班船可能还有空位，可以试试。我们一想早点到澳门也不错。于是就搭上了10 点那趟飞航的&ldquo;末班车&rdquo;。喷射飞航里面的情况要比我想象中的豪华，座位也都是软包的，类似飞机上的那种，空间也相对宽敞。TurboJet启动后，颠簸也 不甚明显，没有明显的晕船迹象。外面一直下着小雨，但浪不大，船因此运行的也比较平稳。坐TurboJet喷射飞航一个小时左右就到达了澳门外港客运码 头。</p>
<p>澳门是一个以赌场、旅游为主的旅游城市，入境后从关口出来，外面到处是各家酒店和赌场的免费摆渡车。我们之前就计划好在澳门本岛逛， 氹仔岛就不去了。于是我们乘坐了新葡京的小巴，一路不到10分钟就到了新葡京。下车后第一件事就是将行李寄存在赌场的寄存处。寄存后，到楼上欣赏各类的赌 博游戏。由于LP不是很喜欢这些，转了两圈我们就离开了葡京。</p>
<p>澳门真的不大，从葡京出来沿着&ldquo;新马路&rdquo;向西北走，到民政总属大楼后，向右侧的山上走即可到达澳门著名的大三巴牌坊、玫瑰堂、圆炮台等景点。毫无疑问，大 三巴牌坊经典前聚集的游客是最多的。但我个人感觉澳门的教堂是很值得看的，比如说玫瑰圣母堂，不妨进去坐上一小会，体会一下不同宗教信仰的气氛。大三巴牌 坊周围已然成了商业步行街，街道两侧林立着各类店铺，数量最多，人气最旺的莫过于&ldquo;钜记手信&rdquo;了，到澳门的游客估计都会从那里买回小食品作为纪念带回国内 的。另外著名的澳门葡式蛋挞也的确名不虚传，味道甚好。澳门元与港币是可以1:1使用的，估计未来一段时间后，澳门元很可能会退出历史舞台。</p>
<p>连续走了多天，我和LP都十分疲劳了，澳门的其他景点实在是逛不动了，于是早早回到葡京取行李，准备回拱北关闸。葡京有免费的摆渡车，但那天等车的人巨多。担心拱北入境人多、过程缓慢，我和LP遂打了一辆Taxi前往拱北，花了50港币，真够贵的。</p>
<p>拱北口岸的人居然并不是特别多，排了一会儿就顺利通关了，而且也没人对我们的包裹进行检查，我们的心也就放下了。</p>
<p>旅行社的车是晚上19:30的，我们等了一个多点，终于登上了回广州的巴士。一路无话，晚上9：30回到广州杨箕地铁站附近，又倒了趟地铁回到动物园的7天连锁。这次的港澳之行算是结束了。</p>
<p><b>总结</b></p>
<p>短暂的旅行不足以让我充分认识和体会到当地的风土人情、风俗习惯等，因此说道起来不是那么深刻，遂仅以流水账的方式细致记之，以备忘。</p>
<p style='text-align:left'>&copy; 2013, <a href='https://tonybai.com'>bigwhite</a>. 版权所有. </p>
]]></content:encoded>
			<wfw:commentRss>https://tonybai.com/2013/06/18/a-hongkong-macau-trip/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>果果3周岁了</title>
		<link>https://tonybai.com/2013/05/18/daughter-is-3-years-old/</link>
		<comments>https://tonybai.com/2013/05/18/daughter-is-3-years-old/#comments</comments>
		<pubDate>Sat, 18 May 2013 15:54:14 +0000</pubDate>
		<dc:creator>bigwhite</dc:creator>
				<category><![CDATA[生活簿]]></category>
		<category><![CDATA[3岁]]></category>
		<category><![CDATA[Blog]]></category>
		<category><![CDATA[Blogger]]></category>
		<category><![CDATA[Programmer]]></category>
		<category><![CDATA[博客]]></category>
		<category><![CDATA[女儿]]></category>
		<category><![CDATA[家庭]]></category>
		<category><![CDATA[感悟]]></category>
		<category><![CDATA[成长]]></category>
		<category><![CDATA[摄影]]></category>
		<category><![CDATA[教育]]></category>
		<category><![CDATA[果果]]></category>
		<category><![CDATA[父母]]></category>
		<category><![CDATA[生日]]></category>
		<category><![CDATA[生活]]></category>
		<category><![CDATA[程序员]]></category>

		<guid isPermaLink="false">http://tonybai.com/?p=1272</guid>
		<description><![CDATA[果果已经3周岁了，这是一个不争的事实。这意味着我又变老了^_^。过去的东西已经无法抓住了，目前我能做的就是欣赏现实了^_^。 3岁的果果长的越来越有女孩儿的味道了^_^。 3岁的果果生长发育一切良好，个头还是比同龄的孩子高出那么一截。 3岁的果果说起话来越来越有逻辑性了，我们时常惊诧于其时而冒出的&#8220;妙语&#8221;。 3岁的果果总是说&#8220;喜欢爸爸&#8221;，因为妈妈总是加班，而无暇陪着果果玩。 3岁的果果很有自尊心，任何事情都不甘落后于其周围的小朋友。 3岁的果果更爱臭美了，喜欢让爸爸妈妈买新衣服新鞋子，买完后立马穿上向我们展示。 3岁的果果打针已经不掉一滴眼泪了，这让我们着实有些惊奇。 3岁的果果已经完全会自己穿衣脱衣了，只是费点力气罢了^_^，并且拒绝我们的帮助。 3岁的果果已经会唱好几首儿童歌曲了，只是还不在调子上。 3岁的果果发音还不准确，尤其是在说成语、背唐诗时，也就是我和她妈妈能听懂个一二吧。 3岁的果果对奶粉的依恋降低了，有时候还很不情愿的喝奶。 3岁的果果开变得更加喜欢吃肉了，啃起排骨就不放下了。 3岁的果果喜欢听爸爸给她讲故事，并且有时还可以简单复述出爸爸讲的简单故事了。 3岁的果果很有想象力，经常用积木拼出爸爸都看不出是啥的物品，而她却很肯定地说这是&#8230;。 3岁的果果尤其喜欢玩过家家游戏，更喜欢让爸爸当观众，看她是如何玩过家家的游戏的，在游戏中她既扮演老师，又扮演学生。 3岁的果果正健康茁壮的成长，这正是我这个做爸爸期望看到的。 以下是果果近期的一些生活照片： 我是小公主 呵呵，出去旅游了！ 我秀气不？ 霸气 我淑女不？ 不好意思了 再来一张 我飞，我飞，我飞！ &#169; 2013, bigwhite. 版权所有.]]></description>
			<content:encoded><![CDATA[<p>果果已经3周岁了，这是一个不争的事实。这意味着我又变老了^_^。过去的东西已经无法抓住了，目前我能做的就是欣赏现实了^_^。</p>
<p>3岁的果果长的越来越有女孩儿的味道了^_^。</p>
<p>3岁的果果生长发育一切良好，个头还是比同龄的孩子高出那么一截。</p>
<p>3岁的果果说起话来越来越有逻辑性了，我们时常惊诧于其时而冒出的&ldquo;妙语&rdquo;。</p>
<p>3岁的果果总是说&ldquo;喜欢爸爸&rdquo;，因为妈妈总是加班，而无暇陪着果果玩。</p>
<p>3岁的果果很有自尊心，任何事情都不甘落后于其周围的小朋友。</p>
<p>3岁的果果更爱臭美了，喜欢让爸爸妈妈买新衣服新鞋子，买完后立马穿上向我们展示。</p>
<p>3岁的果果打针已经不掉一滴眼泪了，这让我们着实有些惊奇。</p>
<p>3岁的果果已经完全会自己穿衣脱衣了，只是费点力气罢了^_^，并且拒绝我们的帮助。</p>
<p>3岁的果果已经会唱好几首儿童歌曲了，只是还不在调子上。</p>
<p>3岁的果果发音还不准确，尤其是在说成语、背唐诗时，也就是我和她妈妈能听懂个一二吧。</p>
<p>3岁的果果对奶粉的依恋降低了，有时候还很不情愿的喝奶。</p>
<p>3岁的果果开变得更加喜欢吃肉了，啃起排骨就不放下了。</p>
<p>3岁的果果喜欢听爸爸给她讲故事，并且有时还可以简单复述出爸爸讲的简单故事了。</p>
<p>3岁的果果很有想象力，经常用积木拼出爸爸都看不出是啥的物品，而她却很肯定地说这是&#8230;。</p>
<p>3岁的果果尤其喜欢玩过家家游戏，更喜欢让爸爸当观众，看她是如何玩过家家的游戏的，在游戏中她既扮演老师，又扮演学生。</p>
<p>3岁的果果正健康茁壮的成长，这正是我这个做爸爸期望看到的。</p>
<p>以下是果果近期的一些生活照片：</p>
<p><img alt="" src="/wp-content/uploads/guoguo-3-years-old-20130513-1.jpg" style="width: 435px; height: 580px;" /></p>
<p>我是小公主</p>
<p><img alt="" src="/wp-content/uploads/guoguo-3-years-old-20130513-2.jpg" /></p>
<p>呵呵，出去旅游了！</p>
<p><img alt="" src="/wp-content/uploads/daughter-3-years-old.jpg" /></p>
<p>我秀气不？</p>
<p><img alt="" src="/wp-content/uploads/guoguo-3-years-old-20130518-1.jpg" style="width: 435px; height: 600px;" /></p>
<p>霸气</p>
<p><img alt="" src="/wp-content/uploads/guoguo-3-years-old-20130518-2.jpg " style="width: 435px; height: 600px;" /></p>
<p>我淑女不？</p>
<p><img alt="" src="/wp-content/uploads/guoguo-3-years-old-20130518-3.jpg " style="width: 435px; height: 600px;" /></p>
<p>不好意思了</p>
<p><img alt="" src="/wp-content/uploads/guoguo-3-years-old-20130518-4.jpg " style="width: 435px; height: 600px;" /></p>
<p>再来一张</p>
<p><img alt="" src="/wp-content/uploads/guoguo-3-years-old-20130518-5.jpg " style="width: 435px; height: 600px;" /></p>
<p>我飞，我飞，我飞！</p>
<p style='text-align:left'>&copy; 2013, <a href='https://tonybai.com'>bigwhite</a>. 版权所有. </p>
]]></content:encoded>
			<wfw:commentRss>https://tonybai.com/2013/05/18/daughter-is-3-years-old/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>
