<?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>Chong Freeman&#039;s Neverland</title>
	<atom:link href="http://www.ychong.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.ychong.com</link>
	<description>Just another web developer&#039;s blog.</description>
	<lastBuildDate>Mon, 20 May 2013 09:48:29 +0000</lastBuildDate>
	<language>en-US</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.5.1</generator>
		<item>
		<title>Log on May 18th: 晚餐时间</title>
		<link>http://www.ychong.com/log-on-may-18th-2013/</link>
		<comments>http://www.ychong.com/log-on-may-18th-2013/#comments</comments>
		<pubDate>Sun, 19 May 2013 08:17:52 +0000</pubDate>
		<dc:creator>Chong Freeman</dc:creator>
				<category><![CDATA[Diary]]></category>

		<guid isPermaLink="false">http://www.ychong.com/?p=189</guid>
		<description><![CDATA[窗外城市街道，夜景斑斓，行人、单车、摩托车匆匆忙忙。不晓得是公交车刚从有雨的街区里开出来，还是雨已经停下，窗玻璃上残留的雨滴在路灯交织映照下好似珠帘。 就这样在一个大城市的周末交通高峰期里，抛开地铁，抛开安静和带来压力的累赘，坐上缓慢穿梭于城市街道的公交车，一站又一站的开回我的学校。戴上耳机，窗外各式形色匆忙。一年实习岗位未卜，在最后的一个多月里，凑上交心的同伴，到去这个成熟的城市里没有到过的角落，融入到热闹和嘈杂中，感受这个地方的人文和空气，找回那点归属感。 一个多月没到过岗顶，今天为了贴个手机膜，心血来潮跑到百脑汇去。在那儿我又当了一回“帅哥”、“靓仔”、“老板”，所有人似乎一如既往。顺着午餐时间，跑去六楼，熟悉的家乐缘逛了一圈，人太多，遂离开，肚子也没抗议。 第一次参加开源中国源创会，讲座的内容平平，讲座之外的收获却让我这个初出茅庐的小伙子感到意外。 “青春无悔”，老调重谈，但现实中又有多少人能(已)真正做到。正如让一个拥有很多的人真正感到幸福一样。“随心”，很艰难。理想和现实的距离，就是时间和永恒的距离，远在天涯，也近在咫尺。 于是，我坚信，永恒的爱情是可以和面包兼得兼存的。 而目前，我只是需要时间而已。 黄埔古村 (photo by 华杰) 红专厂·广州 (photo by 华杰)]]></description>
				<content:encoded><![CDATA[<p>窗外城市街道，夜景斑斓，行人、单车、摩托车匆匆忙忙。不晓得是公交车刚从有雨的街区里开出来，还是雨已经停下，窗玻璃上残留的雨滴在路灯交织映照下好似珠帘。</p>
<p>就这样在一个大城市的周末交通高峰期里，抛开地铁，抛开安静和带来压力的累赘，坐上缓慢穿梭于城市街道的公交车，一站又一站的开回我的学校。戴上耳机，窗外各式形色匆忙。一年实习岗位未卜，在最后的一个多月里，凑上交心的同伴，到去这个成熟的城市里没有到过的角落，融入到热闹和嘈杂中，感受这个地方的人文和空气，找回那点归属感。</p>
<p><span id="more-189"></span></p>
<p>一个多月没到过岗顶，今天为了贴个手机膜，心血来潮跑到百脑汇去。在那儿我又当了一回“帅哥”、“靓仔”、“老板”，所有人似乎一如既往。顺着午餐时间，跑去六楼，熟悉的家乐缘逛了一圈，人太多，遂离开，肚子也没抗议。</p>
<p>第一次参加开源中国源创会，讲座的内容平平，讲座之外的收获却让我这个初出茅庐的小伙子感到意外。</p>
<p>“青春无悔”，老调重谈，但现实中又有多少人能(已)真正做到。正如让一个拥有很多的人真正感到幸福一样。“随心”，很艰难。理想和现实的距离，就是时间和永恒的距离，远在天涯，也近在咫尺。</p>
<p>于是，我坚信，永恒的爱情是可以和面包兼得兼存的。</p>
<p>而目前，我只是需要时间而已。</p>
<p><center><a href="http://www.ychong.com/wp-content/uploads/2013/05/20130519-log-on-may-18th-2013-dsc1603a.jpg" class="lightbox"><img src="http://www.ychong.com/wp-content/uploads/2013/05/20130519-log-on-may-18th-2013-dsc1603a-thumb.jpg" alt="huangpugucun-by-huajie" /></a><br />
黄埔古村 (photo by 华杰)</center></p>
<p><center><a href="http://www.ychong.com/wp-content/uploads/2013/05/20130519-log-on-may-18th-2013-dsc2084b.jpg" class="lightbox"><img src="http://www.ychong.com/wp-content/uploads/2013/05/20130519-log-on-may-18th-2013-dsc2084b-thumb.jpg" alt="hongzhuanchang-by-huajie" /></a><br />
红专厂·广州 (photo by 华杰)</center></p>
]]></content:encoded>
			<wfw:commentRss>http://www.ychong.com/log-on-may-18th-2013/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Transfer Projects to GitHub</title>
		<link>http://www.ychong.com/transfer-projects-to-github/</link>
		<comments>http://www.ychong.com/transfer-projects-to-github/#comments</comments>
		<pubDate>Thu, 09 May 2013 14:03:43 +0000</pubDate>
		<dc:creator>Chong Freeman</dc:creator>
				<category><![CDATA[Growing]]></category>
		<category><![CDATA[Github]]></category>

		<guid isPermaLink="false">http://www.ychong.com/?p=186</guid>
		<description><![CDATA[WordPress Theme Development standard had got stricter and stricter, since I began developing my own WordPress theme projects. With no choices, much code written for feature functionality was prematurely dead because of these hard standards. Moved projects to GitHub was not a decision going with the times. After stopping submitting updates to WordPress Theme Directory, [...]]]></description>
				<content:encoded><![CDATA[<p><img src="http://www.ychong.com/wp-content/uploads/2013/05/20130509-transfer-projects-to-github-thumb.jpg" alt="Transfer Projects to GitHub" class="alignright" />WordPress Theme Development standard had got stricter and stricter, since I began developing my own WordPress theme projects. With no choices, much code written for feature functionality was prematurely dead because of these hard standards.</p>
<p>Moved projects to GitHub was not a decision going with the times. After stopping submitting updates to WordPress Theme Directory, I packed each version of my project codes and upload them to my website server for my users to download (via HTTP). But limited by files management inconvenience and website speed, I transfered everything to GitHub at last, and publish the new version of my WP themes today: <a href="https://github.com/ychongsaytc/wptheme-nest/" target="_blank" rel="nofollow">Nest</a> 1.1.8 and <a href="https://github.com/ychongsaytc/wptheme-concerto/" target="_blank" rel="nofollow">Concerto</a> 1.0.5.</p>
<p><span id="more-186"></span></p>
<p>I&#8217;ve resisted the Revision Control System/Software for a long time. On the one hand, I&#8217;m afraid of the complexity of it, on the other hand, managing my project codes just needs the most basic storage and arrangement.</p>
<p>After transfered all projects to GitHub, I broke away the captivity of WP theme development, but also WordPress official community moderators will not check my projects codes anymore. Not at all, I believe that whom really like my projects would be glad to give the valuable advice to me and help the projects improvement.</p>
<p>At last, long live Open-Source!</p>

]]></content:encoded>
			<wfw:commentRss>http://www.ychong.com/transfer-projects-to-github/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Log on March 21th: 悲剧</title>
		<link>http://www.ychong.com/log-on-march-21th-2013/</link>
		<comments>http://www.ychong.com/log-on-march-21th-2013/#comments</comments>
		<pubDate>Thu, 21 Mar 2013 06:34:23 +0000</pubDate>
		<dc:creator>Chong Freeman</dc:creator>
				<category><![CDATA[Diary]]></category>

		<guid isPermaLink="false">http://www.ychong.com/?p=171</guid>
		<description><![CDATA[　　没有物欲的生活是该有多痛苦。 　　对于买房的观念，我所接受的是一个比较新颖的想法，一部分原因可能是因为愤青后遗症。都说花上百万买一套一百个方的商品房，光按揭的利息就占了最终房款近一半，还贷十年二十年，人已步入中年，青春不再，激情亦不再，而且在天朝底下这套房子仅真正属于你 70 年。 　　租房吧，长租比买房更划得来，人能享受精神层面的敏感，只不过是 20 岁到 60 岁的样子，四十年而已。别跟我说房租会涨，房租涨了难道收入也不会涨吗？房租会涨，我还觉得房价会下跌呢，你信吗？ 　　发现，忘不掉的停不了的还是那些。 　　一个一个阶段走来，每个阶段都是之前只能属于想象世界的景象。然而对生活的不满足，以及对自由的追求，是从小就养成了的。这样确实有点不健康，对于妈妈的担忧，我告诉她，也告诉自己，这只不过是磨平棱角的时期，总会过去的，总会让所有关心我的人得到答复的，况且我还年轻。对吗？ 　　对吧哈？ 　　社会上的人，确实是要分三六九等的。“人与人都是一样的”，这恐怕只存在于童话和 PM2.5 的世界里——也只有那儿才有真正的人人平等。面对身边的人遇到这个问题，我确实无计可施，那需要自己去感悟和洗脱。 　　如同我劝自己一样，去劝那些处于困境的朋友，随心吧，只需要做自己想做的，只要不背离现实常理。时间长河，我们可以感悟的思想仅仅存在五十年不到，能做到随心，还有什么不能满足的呢？ 　　然而，莫大的人生悲剧，却已在我身上发生。倒不如，颓废当下，自我满足，享受不真实的幸福。]]></description>
				<content:encoded><![CDATA[<p>　　没有物欲的生活是该有多痛苦。</p>
<p>　　对于买房的观念，我所接受的是一个比较新颖的想法，一部分原因可能是因为愤青后遗症。都说花上百万买一套一百个方的商品房，光按揭的利息就占了最终房款近一半，还贷十年二十年，人已步入中年，青春不再，激情亦不再，而且在天朝底下这套房子仅真正属于你 70 年。</p>
<p>　　租房吧，长租比买房更划得来，人能享受精神层面的敏感，只不过是 20 岁到 60 岁的样子，四十年而已。别跟我说房租会涨，房租涨了难道收入也不会涨吗？房租会涨，我还觉得房价会下跌呢，你信吗？</p>
<p><span id="more-171"></span></p>
<p>　　发现，忘不掉的停不了的还是那些。</p>
<p>　　一个一个阶段走来，每个阶段都是之前只能属于想象世界的景象。然而对生活的不满足，以及对自由的追求，是从小就养成了的。这样确实有点不健康，对于妈妈的担忧，我告诉她，也告诉自己，这只不过是磨平棱角的时期，总会过去的，总会让所有关心我的人得到答复的，况且我还年轻。对吗？</p>
<p>　　对吧哈？</p>
<p>　　社会上的人，确实是要分三六九等的。“人与人都是一样的”，这恐怕只存在于童话和 PM2.5 的世界里——也只有那儿才有真正的人人平等。面对身边的人遇到这个问题，我确实无计可施，那需要自己去感悟和洗脱。</p>
<p>　　如同我劝自己一样，去劝那些处于困境的朋友，随心吧，只需要做自己想做的，只要不背离现实常理。时间长河，我们可以感悟的思想仅仅存在五十年不到，能做到随心，还有什么不能满足的呢？</p>
<p>　　然而，莫大的人生悲剧，却已在我身上发生。倒不如，颓废当下，自我满足，享受不真实的幸福。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.ychong.com/log-on-march-21th-2013/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Log on February 4th: 展翅</title>
		<link>http://www.ychong.com/log-on-february-4th-2013/</link>
		<comments>http://www.ychong.com/log-on-february-4th-2013/#comments</comments>
		<pubDate>Sun, 03 Feb 2013 16:57:18 +0000</pubDate>
		<dc:creator>Chong Freeman</dc:creator>
				<category><![CDATA[Diary]]></category>

		<guid isPermaLink="false">http://www.ychong.com/?p=170</guid>
		<description><![CDATA[　　2013 春节前夕，叹一下恍惚的又一年过去。年终小结。 多赚些钱！只为上手更好的耳机！ 　　有时会自诩音乐发烧友，甚至是器材发烧，但拖开床头柜，才发现能算得上“能听”级别的耳机耳塞只有三四副，而且都是不入流的。同样的，除了输出，音源也只停留在依赖电脑高清声卡的水平，移动设备也只有一台 4S ——音质一般般。 　　当然，大部分原因是因为经济窘迫。如同现状，买一套 EarPods 都要再三考虑好几天，这对于大部分音乐发烧友来说，不过是家常便饭，可以信手拈来的低端设备。确实，经济物质基础决定上层思想建筑。 　　音乐无疆界——这不仅仅是自历史以来世界各地音乐交流的特色，也是音乐爱好者独特的思想风格。引用家驹的名言，叫“只要有音乐，就不会有世界末日”。新时代的我们，尤其是 90 后新生代，早已不拘泥于所谓的经济物质和循规蹈矩的生活，这更与金钱观有着紧密联系——一直激励着自己逃脱这种束缚，过得更洒脱一些，但久而久之，仍能隐约感受到来自生活各方的压力，阻碍着一些青春应有的奋不顾身。人，不是应该活得与别人不一样吗？不应该是做自己想做的吗？ 又长大一岁了？又老了一岁？ 　　这是一个少有的上街穿单件还会冒汗的深冬，似乎感觉不到两年交替的存在。 　　又是一次完整地重走母校，田中和河中。一程下来，并没有太明显的神经冲击，平淡无奇。尽管内部变化很大，但毕竟物是人非，这一小撮地方，只能承载那些年的回忆——或许连回忆也承载不了多少，它们不过是短暂的过场，为青春时期的成长提供了一方应有的环境。 　　而这平淡无奇之外，我只有一句话想说/感慨：能让我再在这儿念多两年书吗？——这一句包含的种种，相信大家都懂。 工作奋斗，还是享受当下？ 　　准确来说应该是“兼职＋兴趣”，收益作为目的、兴趣作为动力。享受这个过程，享受还能将兴趣融入工作的过程。这也是为何一直以来我留出两条以上工作路径供选择的原因。 　　兴趣爱好对自己来说，很稀罕，就像心爱的玩具，它跟年轻时的棱角所不同的是，或许直到老，喜欢做的事情，或一种东西，它依然随时可以让自己由衷地嘴角上扬。害怕它的失去，少时的我同样也害怕它会被学业和工作的压力所驱逐，于是在一次又一次的选择当中，怀着对生活负责和可持续发展的态度，没有走寻常路。尽管失去了一些，但总的来说收获得更多，每个选择都有不一样的风景。要想活得与别人不一样，就应该随心、随性。 　　逐渐地，生活的目标越来越明确，可随之而来的压力也越来越大——或许大家都一样，因为迷茫，因为各种可遇而不可求。这就是传统的“磨平棱角”的过渡时期吧？ 　　活在当下，命运怪不得，一切过去的已经发生的，都是注定的。生活中的刺激与奢华，于我已经过了年龄？——这是我的第一反应。呃？老了？ 步入迟暮之年？ 　　是的，对比身边的许多朋友，我已赫然迈入中年，成了大叔。传说中的爱情，少时对浪漫的眷恋，早已消散，踪影不见。每提及此，想法仅有：找一个合适的伴，共渡余生。可是找不到，即便找到了，也一再被自己的不主动而错过。 　　不是生活中缺少色彩，不是不愿付出，也不是不寂寞，更不是性取向有问题，而是诸多定性条件所限吧。注定单身到永久。或许等以后有条件了，直接去相亲会更痛快些。只要认清了自己屌丝级别矮穷挫的角色，或许就没什么好可悲的了——这是上天赋予的。 到处走走？ 　　“你只差一个决心！”这是一些朋友对我说过最简而有力的鼓励话语。确实，只差决心，别的无论什么条件都已成熟。那看起来对我来说将非常简单。 　　“你只差一个决心！”这其中也有些责备的语气。为何责备？为了我对我的青春不负责的责备。她是你生命里的重要的一部分，她正在不远处等待着你，她也亟待着你的奋不顾身。 Music Updates 　　最近不听五月天了，太浮，听多了让人觉得世人皆醉你独醒。重回电音，L.M.T.S (Lanx&#8217;s Miniature Trance Set) 的电音合辑或许是个不错的选择，同时还有 Sealounger 的《Wonderful Time》合辑，非常大众的口味。Linkin Park 最新的《Living Things》没感觉了，不像过去的作品那样有冲击力。 　　个人最近多徘徊在老歌当中，像 Karunesh 过去二十多年以来的诸多经典专辑、以及一些 OST（原声带）。还有卓依婷，如果我们是同一代人的话，我正在大量收集这些资源，各种音乐歌曲/MV/动漫动画和电子游戏等。]]></description>
				<content:encoded><![CDATA[<p>　　2013 春节前夕，叹一下恍惚的又一年过去。年终小结。</p>
<p><span id="more-170"></span></p>
<h3>多赚些钱！只为上手更好的耳机！</h3>
<p>　　有时会自诩音乐发烧友，甚至是器材发烧，但拖开床头柜，才发现能算得上“能听”级别的耳机耳塞只有三四副，而且都是不入流的。同样的，除了输出，音源也只停留在依赖电脑高清声卡的水平，移动设备也只有一台 4S ——音质一般般。</p>
<p>　　当然，大部分原因是因为经济窘迫。如同现状，买一套 EarPods 都要再三考虑好几天，这对于大部分音乐发烧友来说，不过是家常便饭，可以信手拈来的低端设备。确实，经济物质基础决定上层思想建筑。</p>
<p>　　音乐无疆界——这不仅仅是自历史以来世界各地音乐交流的特色，也是音乐爱好者独特的思想风格。引用家驹的名言，叫“只要有音乐，就不会有世界末日”。新时代的我们，尤其是 90 后新生代，早已不拘泥于所谓的经济物质和循规蹈矩的生活，这更与金钱观有着紧密联系——一直激励着自己逃脱这种束缚，过得更洒脱一些，但久而久之，仍能隐约感受到来自生活各方的压力，阻碍着一些青春应有的奋不顾身。人，不是应该活得与别人不一样吗？不应该是做自己想做的吗？</p>
<h3>又长大一岁了？又老了一岁？</h3>
<p><img src="http://www.ychong.com/wp-content/uploads/2013/02/20130204-log-02.jpg" alt="" class="alignright" />　　这是一个少有的上街穿单件还会冒汗的深冬，似乎感觉不到两年交替的存在。</p>
<p>　　又是一次完整地重走母校，田中和河中。一程下来，并没有太明显的神经冲击，平淡无奇。尽管内部变化很大，但毕竟物是人非，这一小撮地方，只能承载那些年的回忆——或许连回忆也承载不了多少，它们不过是短暂的过场，为青春时期的成长提供了一方应有的环境。</p>
<p>　　而这平淡无奇之外，我只有一句话想说/感慨：能让我再在这儿念多两年书吗？——这一句包含的种种，相信大家都懂。</p>
<h3>工作奋斗，还是享受当下？</h3>
<p>　　准确来说应该是“兼职＋兴趣”，收益作为目的、兴趣作为动力。享受这个过程，享受还能将兴趣融入工作的过程。这也是为何一直以来我留出两条以上工作路径供选择的原因。</p>
<p>　　兴趣爱好对自己来说，很稀罕，就像心爱的玩具，它跟年轻时的棱角所不同的是，或许直到老，喜欢做的事情，或一种东西，它依然随时可以让自己由衷地嘴角上扬。害怕它的失去，少时的我同样也害怕它会被学业和工作的压力所驱逐，于是在一次又一次的选择当中，怀着对生活负责和可持续发展的态度，没有走寻常路。尽管失去了一些，但总的来说收获得更多，每个选择都有不一样的风景。要想活得与别人不一样，就应该随心、随性。</p>
<p>　　逐渐地，生活的目标越来越明确，可随之而来的压力也越来越大——或许大家都一样，因为迷茫，因为各种可遇而不可求。这就是传统的“磨平棱角”的过渡时期吧？</p>
<p>　　活在当下，命运怪不得，一切过去的已经发生的，都是注定的。生活中的刺激与奢华，于我已经过了年龄？——这是我的第一反应。呃？老了？</p>
<h3>步入迟暮之年？</h3>
<p>　　是的，对比身边的许多朋友，我已赫然迈入中年，成了大叔。传说中的爱情，少时对浪漫的眷恋，早已消散，踪影不见。每提及此，想法仅有：找一个合适的伴，共渡余生。可是找不到，即便找到了，也一再被自己的不主动而错过。</p>
<p>　　不是生活中缺少色彩，不是不愿付出，也不是不寂寞，更不是性取向有问题，而是诸多定性条件所限吧。注定单身到永久。或许等以后有条件了，直接去相亲会更痛快些。只要认清了自己屌丝级别矮穷挫的角色，或许就没什么好可悲的了——这是上天赋予的。</p>
<h3>到处走走？</h3>
<p><img src="http://www.ychong.com/wp-content/uploads/2013/02/20130204-log-01.jpg" alt="" class="alignright" />　　“你只差一个决心！”这是一些朋友对我说过最简而有力的鼓励话语。确实，只差决心，别的无论什么条件都已成熟。那看起来对我来说将非常简单。</p>
<p>　　“你只差一个决心！”这其中也有些责备的语气。为何责备？为了我对我的青春不负责的责备。她是你生命里的重要的一部分，她正在不远处等待着你，她也亟待着你的奋不顾身。</p>
<p class="modmark modmark-align-center"><span class="modmark-text">分隔线，到文章末尾了</span></p>
<h3>Music Updates</h3>
<p>　　最近不听五月天了，太浮，听多了让人觉得世人皆醉你独醒。重回电音，L.M.T.S (Lanx&#8217;s Miniature Trance Set) 的电音合辑或许是个不错的选择，同时还有 Sealounger 的《Wonderful Time》合辑，非常大众的口味。Linkin Park 最新的《Living Things》没感觉了，不像过去的作品那样有冲击力。</p>
<p>　　个人最近多徘徊在老歌当中，像 Karunesh 过去二十多年以来的诸多经典专辑、以及一些 OST（原声带）。还有卓依婷，如果我们是同一代人的话，我正在大量收集这些资源，各种音乐歌曲/MV/动漫动画和电子游戏等。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.ychong.com/log-on-february-4th-2013/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Safari 前端开发调试 iOS 完美解决方案（iPhone/iTouch 等）</title>
		<link>http://www.ychong.com/safari-ios-iphone-itouch-web-dev-inspector/</link>
		<comments>http://www.ychong.com/safari-ios-iphone-itouch-web-dev-inspector/#comments</comments>
		<pubDate>Tue, 08 Jan 2013 14:09:04 +0000</pubDate>
		<dc:creator>Chong Freeman</dc:creator>
				<category><![CDATA[Macintosh]]></category>
		<category><![CDATA[Web Front-end]]></category>
		<category><![CDATA[iOS]]></category>
		<category><![CDATA[iPhone]]></category>
		<category><![CDATA[iTouch]]></category>
		<category><![CDATA[Safari]]></category>

		<guid isPermaLink="false">http://www.ychong.com/?p=166</guid>
		<description><![CDATA[　　在日趋现代化的 Web 网络中，各种现代浏览器和移动终端设备的用户百分比越来越高。对于我们 Web 前端开发者来说，运行 iOS Safari 浏览器的苹果移动设备对我们来说更是不容忽视的。然而当我们需要对前端页面进行测试调试时，桌面版 Safari 的表现并不是与移动版 Safari 一模一样的（主要缘起 CSS 中 device-width 的判断），因此我们只能直接在 iOS 设备上对 Safari 进行测试与调试。 　　本文主要介绍由苹果官方提供的 iOS 设备上 Safari 浏览器的前端调试解决方案的详细操作方法。笔者采用的是：运行在 iOS 6.0.1 上的移动版 Safari 和运行在 OS X Mountain Lion 上的桌面版 Safari（Windows 版本的 Safari 暂无此功能）。理论上对 iPhone、iTouch、iPad 等苹果移动设备上的移动版 Safari 浏览器均可行。 在设置中开启功能 　　【iOS 终端】：设置 → Safari → 高级 → Web 检查器 → 开。（如图） [...]]]></description>
				<content:encoded><![CDATA[<p><img src="http://www.ychong.com/wp-content/uploads/2013/01/20130108-ios-safari-inspector-00.png" alt="Safari 前端开发测试调试 iOS 完美解决方案（iPhone、iTouch、iPad 等）" class="alignright" />　　在日趋现代化的 Web 网络中，各种现代浏览器和移动终端设备的用户百分比越来越高。对于我们 Web 前端开发者来说，运行 iOS Safari 浏览器的苹果移动设备对我们来说更是不容忽视的。然而当我们需要对前端页面进行测试调试时，桌面版 Safari 的表现并不是与移动版 Safari 一模一样的（主要缘起 CSS 中 <code>device-width</code> 的判断），因此我们只能直接在 iOS 设备上对 Safari 进行测试与调试。</p>
<p>　　本文主要介绍<strong>由苹果官方提供的 iOS 设备上 Safari 浏览器的前端调试解决方案</strong>的详细操作方法。笔者采用的是：运行在 iOS 6.0.1 上的移动版 Safari 和运行在 OS X Mountain Lion 上的桌面版 Safari（Windows 版本的 Safari 暂无此功能）。理论上对 <strong>iPhone、iTouch、iPad 等苹果移动设备上的移动版 Safari 浏览器</strong>均可行。</p>
<p><span id="more-166"></span></p>
<h3>在设置中开启功能</h3>
<p>　　【iOS 终端】：设置 → Safari → 高级 → Web 检查器 → 开。（如图）</p>
<p>　　【OS X】：Safari → 偏好设置 → 高级 → 在菜单栏中显示“开发”菜单。（如图）</p>
<p><center><img src="http://www.ychong.com/wp-content/uploads/2013/01/20130108-ios-safari-inspector-01.jpg" alt="Safari 前端开发测试调试 iOS 完美解决方案（iPhone、iTouch、iPad 等）" /></center></p>
<p><center><img src="http://www.ychong.com/wp-content/uploads/2013/01/20130108-ios-safari-inspector-02.jpg" alt="Safari 前端开发测试调试 iOS 完美解决方案（iPhone、iTouch、iPad 等）" /></center></p>
<h3>连接移动设备与计算机并启用调试器</h3>
<p>　　在 OS X 中启动 Safari 之后，以 USB 电缆正常接入 iOS 设备，并在此移动设备上启动 Safari。此时点击计算机上的 Safari 菜单中的“开发”，可以看到有 iOS 设备的名称显示，其子菜单项即为移动设备上 Safari 的所有标签页，点击任意一个开始调试。（如图）</p>
<p><center><img src="http://www.ychong.com/wp-content/uploads/2013/01/20130108-ios-safari-inspector-03.jpg" alt="Safari 前端开发测试调试 iOS 完美解决方案（iPhone、iTouch、iPad 等）" /></center></p>
<p>　　在这个调试器里，我们可以像使用桌面操作系统的 Safari 的调试器一样，做各种调试工作，譬如 HTML 元素、CSS 及盒模型等的查看和即时编辑、JavaScript 调试器、网页元素时间轴、DOM 元素查看器等各种功能。（如图）</p>
<p><center><img src="http://www.ychong.com/wp-content/uploads/2013/01/20130108-ios-safari-inspector-04.jpg" alt="Safari 前端开发测试调试 iOS 完美解决方案（iPhone、iTouch、iPad 等）" /><br />
HTML 结构及对应 CSS</center></p>
<p><center><img src="http://www.ychong.com/wp-content/uploads/2013/01/20130108-ios-safari-inspector-05.jpg" alt="Safari 前端开发测试调试 iOS 完美解决方案（iPhone、iTouch、iPad 等）" /><br />
同期 iPhone 屏幕截图</center></p>
<p><center><img src="http://www.ychong.com/wp-content/uploads/2013/01/20130108-ios-safari-inspector-06.jpg" alt="Safari 前端开发测试调试 iOS 完美解决方案（iPhone、iTouch、iPad 等）" /><br />
HTML 结构及对应 CSS 即时编辑</center></p>
<p><center><img src="http://www.ychong.com/wp-content/uploads/2013/01/20130108-ios-safari-inspector-07.jpg" alt="Safari 前端开发测试调试 iOS 完美解决方案（iPhone、iTouch、iPad 等）" /><br />
同期 iPhone 屏幕截图</center></p>
<p><center><img src="http://www.ychong.com/wp-content/uploads/2013/01/20130108-ios-safari-inspector-08.jpg" alt="Safari 前端开发测试调试 iOS 完美解决方案（iPhone、iTouch、iPad 等）" /><br />
JavaScript 即时调试</center></p>
<p><center><img src="http://www.ychong.com/wp-content/uploads/2013/01/20130108-ios-safari-inspector-09.jpg" alt="Safari 前端开发测试调试 iOS 完美解决方案（iPhone、iTouch、iPad 等）" /><br />
同期 iPhone 屏幕截图</center></p>
<p><center><img src="http://www.ychong.com/wp-content/uploads/2013/01/20130108-ios-safari-inspector-10.jpg" alt="Safari 前端开发测试调试 iOS 完美解决方案（iPhone、iTouch、iPad 等）" /><br />
网络请求时间线</center></p>
]]></content:encoded>
			<wfw:commentRss>http://www.ychong.com/safari-ios-iphone-itouch-web-dev-inspector/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Log on December 31st: Happy New Year</title>
		<link>http://www.ychong.com/log-on-december-17th-2012/</link>
		<comments>http://www.ychong.com/log-on-december-17th-2012/#comments</comments>
		<pubDate>Mon, 31 Dec 2012 15:57:07 +0000</pubDate>
		<dc:creator>Chong Freeman</dc:creator>
				<category><![CDATA[Diary]]></category>

		<guid isPermaLink="false">http://www.ychong.com/?p=159</guid>
		<description><![CDATA[　　又是一张找不到无损版本的专辑——《1453 Fatih Askina (2012)》by Can Atilla。在此之前还有万众瞩目的《Sad In Joy (2012)》by Twins In Mind，让我们的月升在两个道友群里喊了几封群邮件也没有求到的无损版本。不是强迫性地寻找无损版，而是耳朵真有这么挑剔。从过去能听出 128kbps 的 MP3 与 320kbps 的差别，到现在能听出 320kbps MP3 和 650kbps+ 的无损音频的细微差别，随捻一副中低端耳机就能满足。 　　ed2k 网络的资源非常喜人。在最近关于网络音乐收费下载的消息传出时，我恐怕是那最有底气的一群人中的一个。不管怎样，我们还有覆盖全球的 ed2k 网络和无敌的 Kad 网络，资源传播不成大问题。迅雷会员付费支持下的众多资源服务器，也是我们的福音之一。迅雷会员成功的一点莫过于此——迅雷很清楚我们这些可以为其产生巨大效益的用户的真正需求在哪里，于是用着各种手段，绕开版权相关的法律和规定，最大程度地满足着我们的需求。离线下载，快传，高速通道，这些都是非常优秀且具有革命性的产品。 　　一个劲地扔歌词/歌名，想以此来表达/描述你在听这首曲子是的所获所感——这几乎是不可能的，除非它具有普遍性。但恰恰是因为那种感觉非常莫名而难得，才引起了你想要记录和分享它的主意。嗯，独食吧，一个人默默地享受，就像旅行一样，你无法做到潜心享受和记录与他人分享这二者兼顾。 　　广州从夏天到冬天的过渡是在一个晚上完成的，一步到位。坑爹，如此可贵的秋季我竟然无法体验。不过，冬天来了，夏天还远吗？看完《The Day after Tomorrow》，也深刻体验到所谓的全球变暖，就跟改革开放以来国内的通货膨胀保持一个速度。除了夏天有点难熬，冬天还是挺热的——室外温度总是不低于 6 ℃。 　　说到圣诞的小长假，我真没感觉到什么轻松的地方，相反还有些许失落感。可见那些工作并没有给我带来什么压力。有时这也能让自己的心情状态得以调整——各种“追求”导致的生活之复杂。 　　嗯，突发奇想，想到这么一句：初中，除了学业成绩，我什么也没得到；高中，我什么都得到了，除了学业成绩；而大学，大家都已不再讨论学业成绩，而学业以外的东西，我早已得到了大部分。 　　2012 去了，2013 来了。简单地作个小结吧。 　　大学时光匆匆过去了四分之三，也即离开了高中同学的圈子、进入大学同学的圈子已有一年半的时间。纵观这一年半，收获颇多。同样的，我也已做好了明年六月完全踏入社会的准备。回首一年以前，我还感到一点点迷茫——或许直到现在依然有许多我的同龄人仍处于非常迷茫的状态。一年前的我，不清楚 2013 年 6 月踏入社会会做些什么，会是什么状况，更不晓得 2014 年 6 月领到大学毕业证后，又是个什么样的状况。 　　过去的一年半时间里，经历了许多人和事，读了很多书，做了很多事，付出了很多，收获的也很多，时间过得充实、过得值。虽然其中有些迷茫、有些失落，但已经值了。具体的事情起因经过结果就不再纂述了。 　　再过一个多月就要迎接我的第三个十八周岁了。时不我待，加油吧。 　　青春无悔。]]></description>
				<content:encoded><![CDATA[<p>　　又是一张找不到无损版本的专辑——《1453 Fatih Askina (2012)》by Can Atilla。在此之前还有万众瞩目的《Sad In Joy (2012)》by Twins In Mind，让我们的月升在两个道友群里喊了几封群邮件也没有求到的无损版本。不是强迫性地寻找无损版，而是耳朵真有这么挑剔。从过去能听出 128kbps 的 MP3 与 320kbps 的差别，到现在能听出 320kbps MP3 和 650kbps+ 的无损音频的细微差别，随捻一副中低端耳机就能满足。</p>
<p><span id="more-159"></span></p>
<p>　　ed2k 网络的资源非常喜人。在最近关于网络音乐收费下载的消息传出时，我恐怕是那最有底气的一群人中的一个。不管怎样，我们还有覆盖全球的 ed2k 网络和无敌的 Kad 网络，资源传播不成大问题。迅雷会员付费支持下的众多资源服务器，也是我们的福音之一。迅雷会员成功的一点莫过于此——迅雷很清楚我们这些可以为其产生巨大效益的用户的真正需求在哪里，于是用着各种手段，绕开版权相关的法律和规定，最大程度地满足着我们的需求。离线下载，快传，高速通道，这些都是非常优秀且具有革命性的产品。</p>
<p>　　一个劲地扔歌词/歌名，想以此来表达/描述你在听这首曲子是的所获所感——这几乎是不可能的，除非它具有普遍性。但恰恰是因为那种感觉非常莫名而难得，才引起了你想要记录和分享它的主意。嗯，独食吧，一个人默默地享受，就像旅行一样，你无法做到潜心享受和记录与他人分享这二者兼顾。</p>
<p>　　广州从夏天到冬天的过渡是在一个晚上完成的，一步到位。坑爹，如此可贵的秋季我竟然无法体验。不过，冬天来了，夏天还远吗？看完《The Day after Tomorrow》，也深刻体验到所谓的全球变暖，就跟改革开放以来国内的通货膨胀保持一个速度。除了夏天有点难熬，冬天还是挺热的——室外温度总是不低于 6 ℃。</p>
<p>　　说到圣诞的小长假，我真没感觉到什么轻松的地方，相反还有些许失落感。可见那些工作并没有给我带来什么压力。有时这也能让自己的心情状态得以调整——各种“追求”导致的生活之复杂。</p>
<p>　　嗯，突发奇想，想到这么一句：初中，除了学业成绩，我什么也没得到；高中，我什么都得到了，除了学业成绩；而大学，大家都已不再讨论学业成绩，而学业以外的东西，我早已得到了大部分。</p>
<p><img src="http://www.ychong.com/wp-content/uploads/2012/12/20121231-img4592.jpg" alt="" class="alignright" /></p>
<p>　　2012 去了，2013 来了。简单地作个小结吧。</p>
<p>　　大学时光匆匆过去了四分之三，也即离开了高中同学的圈子、进入大学同学的圈子已有一年半的时间。纵观这一年半，收获颇多。同样的，我也已做好了明年六月完全踏入社会的准备。回首一年以前，我还感到一点点迷茫——或许直到现在依然有许多我的同龄人仍处于非常迷茫的状态。一年前的我，不清楚 2013 年 6 月踏入社会会做些什么，会是什么状况，更不晓得 2014 年 6 月领到大学毕业证后，又是个什么样的状况。</p>
<p>　　过去的一年半时间里，经历了许多人和事，读了很多书，做了很多事，付出了很多，收获的也很多，时间过得充实、过得值。虽然其中有些迷茫、有些失落，但已经值了。具体的事情起因经过结果就不再纂述了。</p>
<p>　　再过一个多月就要迎接我的第三个十八周岁了。时不我待，加油吧。</p>
<p>　　青春无悔。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.ychong.com/log-on-december-17th-2012/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>VMware 虚拟机安装 Mac OS X Mountain Lion 苹果系统</title>
		<link>http://www.ychong.com/mac-os-x-mountain-lion-vmware-workstation/</link>
		<comments>http://www.ychong.com/mac-os-x-mountain-lion-vmware-workstation/#comments</comments>
		<pubDate>Sun, 07 Oct 2012 03:15:12 +0000</pubDate>
		<dc:creator>Chong Freeman</dc:creator>
				<category><![CDATA[Macintosh]]></category>
		<category><![CDATA[Mac OS X]]></category>
		<category><![CDATA[Mountain Lion]]></category>
		<category><![CDATA[VMware]]></category>

		<guid isPermaLink="false">http://www.ychong.com/mac-os-x-mountain-lion-vmware-workstation/</guid>
		<description><![CDATA[　　苹果桌面操作系统 Mac OS X Mountain Lion（版本号为 Mac OS X v10.8）已于今年 7 月 21 日通过 Mac App Store 发布。未能上手 MacBook / iMac 的用户亦可通过一定的方法在普通电脑上安装 Mac OS X 并获得极佳的体验。 　　本文将详细介绍如何在 VMware Workstation 8/9 下安装并使用 Mac OS X。VMware Workstation 是非常优秀的一款桌面虚拟化软件，不仅硬件兼容性高，功能也非常丰富，并能在普通家用电脑上实现很好的虚拟机操作使用体验，可以说并不亚于真实 Mac 机。（笔者在 2011 年 6 月份曾发表过一篇《普通 PC 电脑上安装苹果雪豹 Mac OS X Snow Leopard 教程》，但为避免及其繁琐的前期工作和应对驱动程序疑难，特撰写本文。） 　　如果读者的机器配置在主流上下，那么完全可以抛弃传统的真实机分区安装法，而采用本文介绍的虚拟机法，不仅碰到的问题疑难大大减少，而且在使用 Mac OS X 得到的体验也是极佳的。（本教程对配置的需求：支持硬件虚拟化技术（Virtualization）的 [...]]]></description>
				<content:encoded><![CDATA[<p><img src="http://www.ychong.com/wp-content/uploads/2012/10/20121007-maclion-vmware-thumb.png" alt="VMware 虚拟机安装 Mac OS X Mountain Lion 苹果系统" class="alignright" />　　苹果桌面操作系统 Mac OS X Mountain Lion（版本号为 Mac OS X v10.8）已于今年 7 月 21 日通过 Mac App Store 发布。未能上手 MacBook / iMac 的用户亦可通过一定的方法在普通电脑上安装 Mac OS X 并获得极佳的体验。</p>
<p>　　本文将详细介绍如何在 VMware Workstation 8/9 下安装并使用 Mac OS X。VMware Workstation 是非常优秀的一款桌面虚拟化软件，不仅硬件兼容性高，功能也非常丰富，并能在普通家用电脑上实现很好的虚拟机操作使用体验，可以说并不亚于真实 Mac 机。（笔者在 2011 年 6 月份曾发表过一篇《<a href="http://www.ychong.com/mac-os-x-snow-leopard-on-regular-pc/" target="_blank">普通 PC 电脑上安装苹果雪豹 Mac OS X Snow Leopard 教程</a>》，但为避免及其繁琐的前期工作和应对驱动程序疑难，特撰写本文。）</p>
<p>　　如果读者的机器配置在主流上下，那么完全可以抛弃传统的真实机分区安装法，而采用本文介绍的虚拟机法，不仅碰到的问题疑难大大减少，而且在使用 Mac OS X 得到的体验也是极佳的。（本教程对配置的需求：支持硬件虚拟化技术（Virtualization）的 CPU。目前主流的 Intel Core 系列和 AMD Athlon 系列的 CPU 均支持虚拟化技术，名称分别为 Intel VT-x 和 AMD-V。）</p>
<p><span id="more-73"></span></p>
<p>　　本文中所涉及的工具和附件，请见本文末尾。</p>
<p>　　全过程简述：</p>
<ol>
<li>前期准备工作
<li><strong>安装 VMware</strong>
<li><strong>破解 VMware 支持 Mac OS X</strong>
<li><strong>在 VMware 中安装 Mac OS X</strong>
<li>后期收尾工作
</ol>
<h3>前期准备</h3>
<p>　　本教程所用的虚拟机法，前提是机器的 CPU 必须支持硬件虚拟化技术。读者可用 CPU-V 或 CPU-Z 等工具测试得出结果。开启 CPU 硬件虚拟化技术，可通过主板 BIOS 设置进行开启，读者可自行 Google 详细方法。</p>
<p>　　下载 VMware 可前往 <a href="http://www.vmware.com/products/workstation/" target="_blank" rel="nofollow">VMware Workstation 官网</a> 或在 ed2k 网络中搜索下载（推荐）。此处不再纂述。</p>
<p>　　关于 Mac OS X 苹果系统安装光盘镜像，请使用 dmg 格式的原始镜像。笔者推荐前往 ed2k 网络中搜索下载（推荐），关键字为“Mac OS X Mountain Lion dmg”或“Mac OS X Lion dmg”。此处不再纂述。</p>
<h3>安装 VMware Workstation 8/9</h3>
<p>　　在本文中笔者采用 VMware Workstation 9 作为虚拟机软件，同时实践表明本文方法亦适用于 VMware Workstation 8。</p>
<h3>破解 VMware Workstation 支持 Mac OS X</h3>
<p>　　此处我们需要用到工具“<strong>Workstation 8 and Fusion 4 Mac OS X Unlocker</strong>”（作者为 Zenith432），此工具用于破解 VMware Workstation 软件程序，使其支持 Mac OS X 的特性得到启用。该工具的最新版本 1.1.0 已支持 VMware Workstation 8、9 等各个版本。</p>
<p>　　在安装 VMware Workstation 并完成重启后，完全解压 Unlocker 压缩包，以管理员模式运行 windows/install.cmd。（如图）</p>
<p><center><img src="http://www.ychong.com/wp-content/uploads/2012/10/20121007-maclion-vmware-01.png" alt="VMware 虚拟机安装 Mac OS X Mountain Lion 苹果系统" /></center></p>
<p>　　Unlocker 将自动完成停止 VMware 服务、备份 VMware 程序文件、破解 VMware 程序文件、重新启动 VMware 服务等一系列操作，并将自动结束命令行窗口。（如图）</p>
<p><center><img src="http://www.ychong.com/wp-content/uploads/2012/10/20121007-maclion-vmware-02.png" alt="VMware 虚拟机安装 Mac OS X Mountain Lion 苹果系统" /></center></p>
<p>　　未经破解的 VMware 新建虚拟机系统选择对话框：</p>
<p><center><img src="http://www.ychong.com/wp-content/uploads/2012/10/20121007-maclion-vmware-03.png" alt="VMware 虚拟机安装 Mac OS X Mountain Lion 苹果系统" /></center></p>
<p>　　已破解后的 VMware 新建虚拟机系统选择对话框：</p>
<p><center><img src="http://www.ychong.com/wp-content/uploads/2012/10/20121007-maclion-vmware-04.png" alt="VMware 虚拟机安装 Mac OS X Mountain Lion 苹果系统" /></center></p>
<h3>创建 用于 Mac OS X 的 VMware 虚拟机</h3>
<p>　　经过 Unlocker 破解后，启动 VMware Workstation 正常创建虚拟机，选择“Apple Mac OS X”（根据不同的 Mac OS 安装盘在系统版本中选择对应的正确版本，此处笔者使用的是 Mac OS X Mountain Lion，版本为 10.8 64-bit）。创建过程有以下几点非缺省配置：</p>
<p>　　1. 在处理器选项中，选择“Number of cores per processor（每个处理器核心数量）”为 2 个，这样可诱导 VMware 虚拟机自动启用高级硬件虚拟化技术。（如图）</p>
<p><center><img src="http://www.ychong.com/wp-content/uploads/2012/10/20121007-maclion-vmware-05.png" alt="VMware 虚拟机安装 Mac OS X Mountain Lion 苹果系统" /></center></p>
<p>　　2. 创建完成后，先点击“Edit virtual machine settings”编辑虚拟机配置，将硬件中的“Floppy（软驱）”删除，在显示选项中启用“Accelerate 3D graphics（3D 图形加速）”。（如图）</p>
<p><center><img src="http://www.ychong.com/wp-content/uploads/2012/10/20121007-maclion-vmware-06.png" alt="VMware 虚拟机安装 Mac OS X Mountain Lion 苹果系统" /></center></p>
<p><center><img src="http://www.ychong.com/wp-content/uploads/2012/10/20121007-maclion-vmware-07.png" alt="VMware 虚拟机安装 Mac OS X Mountain Lion 苹果系统" /></center></p>
<p>　　3. 接上步的虚拟机配置中，在通用设置的增强虚拟键盘选项中选择“Use if available（如可用则启用）”。此举也是为了增强使用体验。（如图）</p>
<p><center><img src="http://www.ychong.com/wp-content/uploads/2012/10/20121007-maclion-vmware-08.png" alt="VMware 虚拟机安装 Mac OS X Mountain Lion 苹果系统" /></center></p>
<p>　　4. 接上步的虚拟机配置中，在高级设置中，设置输入捕捉的优先级为“高”，并勾选“Disable memory page trimming（禁用内存页面微调）”。（如图）</p>
<p><center><img src="http://www.ychong.com/wp-content/uploads/2012/10/20121007-maclion-vmware-09.png" alt="VMware 虚拟机安装 Mac OS X Mountain Lion 苹果系统" /></center></p>
<p>　　5. 用文本编辑工具（如记事本）编辑虚拟机文件（此处笔者的是 H:\Virtual Machines\Mac OS X\Mac OS X.vmx），在文件末尾新增一行：<code>mainMem.useNamedFile = "FALSE"</code>。此操作用于禁止 VMware 虚拟机在硬盘中放置内存镜像，可防止虚拟机运行过程中出现硬盘读写繁忙的惨状。（如图）</p>
<p><center><img src="http://www.ychong.com/wp-content/uploads/2012/10/20121007-maclion-vmware-10.png" alt="VMware 虚拟机安装 Mac OS X Mountain Lion 苹果系统" /></center></p>
<h3>启动 VMware 虚拟机并安装 Mac OS X</h3>
<p>　　编辑虚拟机配置中的“CD/DVD（光驱）”选项，在“Use ISO image file（使用 ISO 镜像文件）”处选择我们的 Mac OS X 安装光盘镜像。（选择时请先在浏览文件对话框的文件类型中选择“所有文件 (*.*)”，即可看到文件名后缀为 dmg 的镜像文件。）确认完成后，启动 VMware 虚拟机。</p>
<p>　　启动虚拟机后，虚拟机默认从光盘引导，在苹果 Logo 约两分钟后，正式来到 Mac OS X 安装界面。（如图）</p>
<p><center><img src="http://www.ychong.com/wp-content/uploads/2012/10/20121007-maclion-vmware-11.png" alt="VMware 虚拟机安装 Mac OS X Mountain Lion 苹果系统" /></center></p>
<p>　　在“Mac OS X 实用工具”中选择“磁盘工具”，在左侧选中第一个硬盘，并在右侧选择“抹掉”（“格式”选择“Mac OS X 扩展（日志式）”），点击“抹掉”按钮以格式化当前硬盘。（如图）</p>
<p><center><img src="http://www.ychong.com/wp-content/uploads/2012/10/20121007-maclion-vmware-13.jpg" alt="VMware 虚拟机安装 Mac OS X Mountain Lion 苹果系统" /></center></p>
<p><center><img src="http://www.ychong.com/wp-content/uploads/2012/10/20121007-maclion-vmware-14.jpg" alt="VMware 虚拟机安装 Mac OS X Mountain Lion 苹果系统" /></center></p>
<p>　　硬盘格式化分区完成后，回到“Mac OS X 实用工具”中点选“重新安装 Mac OS X”，进入安装过程。（如图）</p>
<p><center><img src="http://www.ychong.com/wp-content/uploads/2012/10/20121007-maclion-vmware-15.jpg" alt="VMware 虚拟机安装 Mac OS X Mountain Lion 苹果系统" /></center></p>
<p><center><img src="http://www.ychong.com/wp-content/uploads/2012/10/20121007-maclion-vmware-16.jpg" alt="VMware 虚拟机安装 Mac OS X Mountain Lion 苹果系统" /></center></p>
<p><center><img src="http://www.ychong.com/wp-content/uploads/2012/10/20121007-maclion-vmware-17.jpg" alt="VMware 虚拟机安装 Mac OS X Mountain Lion 苹果系统" /></center></p>
<p><center><img src="http://www.ychong.com/wp-content/uploads/2012/10/20121007-maclion-vmware-19.jpg" alt="VMware 虚拟机安装 Mac OS X Mountain Lion 苹果系统" /></center></p>
<h3>“黑苹果”的后期工作</h3>
<p>　　在 VMware 虚拟机中完成安装 Mac OS X 后，第一件事当然是安装 VMware Tools。VMware Tools 包括了 VMware 虚拟机的“硬件”驱动、虚拟机与宿主机间沟通的功能支持等。<s>点选 VMware 菜单中的“VM”→“Install VMware Tools（安装 VMware Tools）”，</s>载入 VMware Workstation 安装目录下的 darwin.iso 光盘镜像，确定后虚拟机中将自动弹出安装对话框。（如图）</p>
<p><center><img src="http://www.ychong.com/wp-content/uploads/2012/10/20121007-maclion-vmware-12.jpg" alt="VMware 虚拟机安装 Mac OS X Mountain Lion 苹果系统" /></center></p>
<p><center><img src="http://www.ychong.com/wp-content/uploads/2012/10/20121007-maclion-vmware-18.jpg" alt="VMware 虚拟机安装 Mac OS X Mountain Lion 苹果系统" /></center></p>
<h3>本文所用到的工具附件</h3>
<p>　　以下压缩包的解压缩密码均为：www.ychong.com；工具均来源于网络。</p>
<ul>
<li><a href="http://www.ychong.com/wp-content/uploads/2012/10/20121007-maclion-vmware-unlock-all-v110.zip" target="_blank" rel="nofollow">Workstation 8 and Fusion 4 Mac OS X Unlocker v1.1.0</a>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://www.ychong.com/mac-os-x-mountain-lion-vmware-workstation/feed/</wfw:commentRss>
		<slash:comments>117</slash:comments>
		</item>
		<item>
		<title>ReadyFor4GB 突破 32 位 Windows 7/Vista 内存 4G 限制</title>
		<link>http://www.ychong.com/readyfor4gb-windows-7-vista-32bit/</link>
		<comments>http://www.ychong.com/readyfor4gb-windows-7-vista-32bit/#comments</comments>
		<pubDate>Sat, 06 Oct 2012 11:13:37 +0000</pubDate>
		<dc:creator>Chong Freeman</dc:creator>
				<category><![CDATA[Windows]]></category>
		<category><![CDATA[RAM]]></category>
		<category><![CDATA[ReadyFor4GB]]></category>
		<category><![CDATA[Windows 7]]></category>
		<category><![CDATA[Windows Vista]]></category>

		<guid isPermaLink="false">http://www.ychong.com/readyfor4gb-windows-7-vista-32bit/</guid>
		<description><![CDATA[　　ReadyFor4GB 工具协助你修改 32 位的 Windows 7/Vista 系统内存限制信息，在使用此工具破解后，32 位的 Windows 也可以像 64 位的一样，支持 2G 以上的大内存，最大可支持 128GB。 ReadyFor4GB 工具使用 　　此工具协助您检查当前系统所认可的最大内存容量，并通过修改 Windows PAE 内核文件 ntkrnlpa.exe，绕过 ZwQueryLicenseValue API 函数的许可限制，使得工作站版本 32 位的 Windows 7/Vista 系统支持超过 2GB 以上的物理内存，最高支持 128GB。 　　本文中所涉及的工具和附件，请见本文末尾。 破解教程 　　本教程的实现原理：通过 ReadyFor4GB 工具破解 Windows PAE 内核文件对最大内存的限制，生成替代内核文件 ntkr128g.exe，并新增一个以新内核文件 ntkr128g.exe 启动系统的开机启动项，从而达到目的。 1. 破解并生成新启动内核文件 　　启动 ReadyFor4GB 工具，点击“检查”内存许可，“实际允许”即为系统最大支持内存大小。在未破解过的情况下，点击“应用”按钮，确认后工具将会生成新的内核文件 ntkr128g.exe 并储存在 windows/system32 目录下。 2. 新增开机启动项 [...]]]></description>
				<content:encoded><![CDATA[<p>　　ReadyFor4GB 工具协助你修改 32 位的 Windows 7/Vista 系统内存限制信息，在使用此工具破解后，32 位的 Windows 也可以像 64 位的一样，支持 2G 以上的大内存，最大可支持 128GB。</p>
<h3>ReadyFor4GB 工具使用</h3>
<p>　　此工具协助您检查当前系统所认可的最大内存容量，并通过修改 Windows PAE 内核文件 ntkrnlpa.exe，绕过 <code>ZwQueryLicenseValue</code> API 函数的许可限制，使得工作站版本 32 位的 Windows 7/Vista 系统支持超过 2GB 以上的物理内存，最高支持 128GB。</p>
<p><span id="more-75"></span></p>
<p>　　本文中所涉及的工具和附件，请见本文末尾。</p>
<h3>破解教程</h3>
<p>　　本教程的实现原理：通过 ReadyFor4GB 工具破解 Windows PAE 内核文件对最大内存的限制，生成替代内核文件 ntkr128g.exe，并新增一个以新内核文件 ntkr128g.exe 启动系统的开机启动项，从而达到目的。</p>
<h4>1. 破解并生成新启动内核文件</h4>
<p>　　启动 ReadyFor4GB 工具，点击“检查”内存许可，“实际允许”即为系统最大支持内存大小。在未破解过的情况下，点击“应用”按钮，确认后工具将会生成新的内核文件 ntkr128g.exe 并储存在 windows/system32 目录下。</p>
<h4>2. 新增开机启动项</h4>
<p>　　按下组合键 Windows + R（或“开始”菜单→“运行”），输入 <code>cmd</code> 并确定，打开管理员模式下的命令提示符窗口。</p>
<p>　　将以下内容复制入命令行并回车：</p>
<pre class="brush:text">bcdedit -copy {current} /d "Windows 7 x86 [ 128GB with ntkr128g.exe ]"</pre>
<p>　　结果如下所示：</p>
<pre class="brush:text">The entry was successfully copied to {9f310606-050c-11e1-bfca-c982ef60cb3d}.</pre>
<p><center><img src="http://www.ychong.com/wp-content/uploads/2012/10/20121006-readyfor4gb-01.png" alt="ReadyFor4GB 突破 32 位 Windows 7/Vista 内存 4G 限制" /></center></p>
<p>　　其中的“<code>{9f310606-050c-11e1-bfca-c982ef60cb3d}</code>”是笔者机器的运行结果，此代号因不同的操作环境而完全不同。将命令行运行结果中的这一段启动项代号复制并替换掉下列命令的代号“<code>{XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX}</code>”：</p>
<pre class="brush:text">bcdedit /set {XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX} testsigning on
bcdedit /set {XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX} pae forceenable
bcdedit /set {XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX} kernel ntkr128g.exe</pre>
<p>　　以上命令含义：第一行用于启用 Windows 测试模式；第二行用于强制启动 PAE 自定义内核；第三行用于手动指定启动内核文件 ntkr128g.exe。经过这些步骤，在开机时选择“Windows 7 x86 [ 128GB with ntkr128g.exe ]”即可以破解后的内核文件进入系统，从而实现支持大物理内存。</p>
<p><center><img src="http://www.ychong.com/wp-content/uploads/2012/10/20121006-readyfor4gb-02.png" alt="ReadyFor4GB 突破 32 位 Windows 7/Vista 内存 4G 限制" /></center></p>
<p>　　以下命令可选（同时如上文一样替换掉命令中的启动项代号）：</p>
<p>　　将开机启动项列表等待时间设为 5 秒：</p>
<pre class="brush:text">bcdedit -timeout 5</pre>
<p>　　将指定的启动项的位置调至列表之首：</p>
<pre class="brush:text">bcdedit -displayorder {XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX} -addfirst</pre>
<p>　　将指定的启动项设为默认选中的开机启动项：</p>
<pre class="brush:text">bcdedit -default {XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX}</pre>
<h4>3. 移除测试模式水印标记</h4>
<p>　　当自定义 Windows 启动核心（Kernel）文件 ntkr128g.exe 的情况下，进入 Windows 后，桌面右下角将自动出现“7600 测试版本”的水印，这里我们使用工具 <strong>Windows 7 Watermark Remover 32bit</strong> 来移除显示在 Windows 桌面右下角的任何文字水印标记。</p>
<h3>本文所用到的工具附件</h3>
<p>　　以下压缩包的解压缩密码均为：www.ychong.com；工具均来源于网络。</p>
<ul>
<li><a href="http://www.ychong.com/wp-content/uploads/2012/10/20121006-readyfor4gb-readyfor4gb.zip" target="_blank" rel="nofollow">ReadyFor4GB</a>
<li><a href="http://www.ychong.com/wp-content/uploads/2012/10/20121006-readyfor4gb-win7watermarkremover.zip" target="_blank" rel="nofollow">Windows 7 Watermark Remover 32bit</a>
</ul>
<p>　　（本文部分内容参考：<a href="http://www.geoffchappell.com/notes/windows/license/memory.htm" target="_blank" rel="nofollow">http://www.geoffchappell.com/notes/windows/license/memory.htm</a>）</p>
]]></content:encoded>
			<wfw:commentRss>http://www.ychong.com/readyfor4gb-windows-7-vista-32bit/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Log on June 17th: Deluxe Life</title>
		<link>http://www.ychong.com/log-on-june-17th-2012/</link>
		<comments>http://www.ychong.com/log-on-june-17th-2012/#comments</comments>
		<pubDate>Sun, 17 Jun 2012 02:20:15 +0000</pubDate>
		<dc:creator>Chong Freeman</dc:creator>
				<category><![CDATA[Diary]]></category>

		<guid isPermaLink="false">http://www.ychong.com/log-on-june-17th-2012/</guid>
		<description><![CDATA[　　重听雅尼 97 年的《Tribute》音乐会，发觉依旧对雅尼的音乐情有独钟，虽然早已爱上了新兴的电音。但即便如此，真心喜欢的不过是过去的雅尼的音乐。自从 09 年《Yanni Voices》开始，风格已大有不同（其实早在 06 年的拉斯维加斯音乐会就初现趋势）。Linkin Park 仍然是大爱，新专辑的曲风依旧，只是更牛 X 了一些。 　　就在昨天下午，心血来潮，重装了 Yanni.org.cn 的 WordPress v4.0.0 和社区的 Discuz! X 2.5 版本，还花了两个钟清理了四百多个马甲帐号。Yanni.org.cn 存在的意义是未知的。早前建立的雅尼乐迷Q群，早在半年前就被我强制解散了。本人也再也没加入任何雅尼乐迷Q群，即便是王乐童鞋的一再邀请。关闭网站也早就在计划之内，只是因为域名的原因，网站才一直存活到现在。 　　时过境迁，音乐变了，人也变了。这一年来，过得丰富而又充实，每天都有不一样的节目。有时候也会迷茫，也会无聊，但这也是生活的一部分。纵观这过去的一年，貌似做成了很多事情，其实也没什么可值得骄傲的。纵使生活丰富多彩，却未能寻知生活的真实意义所在，这不也是个杯具吗。与寝室阿霖的观点一致，我们存在的目的，不过是，让自己在乎的人，过得更好。我想，这是个难以高攀的目标，难就难在“更”字上面。真的需要一辈子去坚持，或许到头来也没个什么结果。其实结果就在眼前，只不过是人不懂得珍惜，不懂得知足罢了。除此之外，或许真的能让人彻底失去生活的动力，沦为一个自私的低等物种。 　　记得开复 &#038; 柯腾的观点：“世界因我而不同”（大概都是这个意思），这不适合我们，这比上文的理想更加理想，或许当做一个梦想来笃行是个好主意（挺抽象）。 　　钱？不，这不会是我的生活动力的起因。虽然概念日益清晰，但我不会让这种心态早那怕一天到来。 　　时常会回忆起孙睿的那句话——“不知是在过日子，还是被子日过”——我也重复过了 n 遍。这只有在忙碌得时间都不属于自己的时候才会有的感叹。 　　有些东西，是我真正高人一等且值得高兴的，那就是我有思想前卫的父母，我与他们几乎没有代沟。为了这，我一直在努力，未来也将一直努力下去，幸福一直就在我们身边。 　　再说说我的学校建院。好的有，坏的也有，即便是好的印象更多些，但这会儿我还是想说说不如意的地方，归结起来有仨：吃、住、行。吃：在河中时，如大人们所说，只要有钱，是可以吃好的，但在建院，是真的再有钱都吃不到好的，校内如此，校外也一样，这番坑爹。住：跟高中大体一样，只是晚上会断电断网，这点跟河中比差远了，同时因为日常事务的需求，真心需要一个上面是床、下面是桌的生活 &#038; 工作的环境。行：好吧，这个用具体数字来说明，从学校到最近的地铁站的平均时间：45 分钟；从学校到天河区中心的最短时间：1.5 小时，交通高峰期则更长；从天河区中心返回学校允许的一天中最晚时间是：21:30；…… 　　建院学子的日常生活同其他本科专科高校基本一致，除了 B 类学校的人看起来包装更精美一些，本科学校的人在表面上更趾高气昂一些，其余别无二致。每天除了上课吃饭睡觉的时间，都是三样东西：打机（包括看片）、睡觉、拍拖（部分有条件的人），真正有追求的人很少。或许这一点可以让自己心理稍稍得到一些安慰。 　　2012 年的高考刚刚结束，除了那前后的一两天有些感慨以外，状态似乎并没有受到影响。毕竟我的高三过得是如此的充实丰富而收获不菲，这已很让我感到满足，那一年过得很值得。听周遭朋友的想法，貌似感伤的多些，甚至有些还不是一两天的事。不晓得是不是太在乎什么曾经没能得到的东西？还是大学生活太过空乏，使得高中的回忆显得如此沉重？为此，重拾我四年前的语录吧：“回首过去，把握现在，展望未来”，试图在每天不一样的生活中，发现生活的真实意义，有天终将豁然开朗。 　　今天是 6 月 17 日，本人正处在繁忙的专业实训周与考试周的恼人困境中——即便是困境，但对成功者来说并不会是恼人的。今天是 2012 年的父亲节，Sorry Dad，没能在这个时候在家陪你们，但真心的祝福稍候一定送到 一年前的今天，鄙人刚刚开始前端 JS 的学习，直至今天，沦为一个 Web 前端开发的码农。2012 [...]]]></description>
				<content:encoded><![CDATA[<p>　　重听雅尼 97 年的《Tribute》音乐会，发觉依旧对雅尼的音乐情有独钟，虽然早已爱上了新兴的电音。但即便如此，真心喜欢的不过是过去的雅尼的音乐。自从 09 年《Yanni Voices》开始，风格已大有不同（其实早在 06 年的拉斯维加斯音乐会就初现趋势）。Linkin Park 仍然是大爱，新专辑的曲风依旧，只是更牛 X 了一些。</p>
<p><span id="more-74"></span></p>
<p>　　就在昨天下午，心血来潮，重装了 Yanni.org.cn 的 WordPress v4.0.0 和社区的 Discuz! X 2.5 版本，还花了两个钟清理了四百多个马甲帐号。Yanni.org.cn 存在的意义是未知的。早前建立的雅尼乐迷Q群，早在半年前就被我强制解散了。本人也再也没加入任何雅尼乐迷Q群，即便是王乐童鞋的一再邀请。关闭网站也早就在计划之内，只是因为域名的原因，网站才一直存活到现在。</p>
<p>　　时过境迁，音乐变了，人也变了。这一年来，过得丰富而又充实，每天都有不一样的节目。有时候也会迷茫，也会无聊，但这也是生活的一部分。纵观这过去的一年，貌似做成了很多事情，其实也没什么可值得骄傲的。纵使生活丰富多彩，却未能寻知生活的真实意义所在，这不也是个杯具吗。与寝室阿霖的观点一致，我们存在的目的，不过是，让自己在乎的人，过得更好。我想，这是个难以高攀的目标，难就难在“更”字上面。真的需要一辈子去坚持，或许到头来也没个什么结果。其实结果就在眼前，只不过是人不懂得珍惜，不懂得知足罢了。除此之外，或许真的能让人彻底失去生活的动力，沦为一个自私的低等物种。</p>
<p>　　记得开复 &#038; 柯腾的观点：“世界因我而不同”（大概都是这个意思），这不适合我们，这比上文的理想更加理想，或许当做一个梦想来笃行是个好主意（挺抽象）。</p>
<p>　　钱？不，这不会是我的生活动力的起因。虽然概念日益清晰，但我不会让这种心态早那怕一天到来。</p>
<p>　　时常会回忆起孙睿的那句话——“不知是在过日子，还是被子日过”——我也重复过了 n 遍。这只有在忙碌得时间都不属于自己的时候才会有的感叹。</p>
<p>　　有些东西，是我真正高人一等且值得高兴的，那就是我有思想前卫的父母，我与他们几乎没有代沟。为了这，我一直在努力，未来也将一直努力下去，幸福一直就在我们身边。</p>
<p>　　再说说我的学校建院。好的有，坏的也有，即便是好的印象更多些，但这会儿我还是想说说不如意的地方，归结起来有仨：吃、住、行。吃：在河中时，如大人们所说，只要有钱，是可以吃好的，但在建院，是真的再有钱都吃不到好的，校内如此，校外也一样，这番坑爹。住：跟高中大体一样，只是晚上会断电断网，这点跟河中比差远了，同时因为日常事务的需求，真心需要一个上面是床、下面是桌的生活 &#038; 工作的环境。行：好吧，这个用具体数字来说明，从学校到最近的地铁站的平均时间：45 分钟；从学校到天河区中心的最短时间：1.5 小时，交通高峰期则更长；从天河区中心返回学校允许的一天中最晚时间是：21:30；……</p>
<p>　　建院学子的日常生活同其他本科专科高校基本一致，除了 B 类学校的人看起来包装更精美一些，本科学校的人在表面上更趾高气昂一些，其余别无二致。每天除了上课吃饭睡觉的时间，都是三样东西：打机（包括看片）、睡觉、拍拖（部分有条件的人），真正有追求的人很少。或许这一点可以让自己心理稍稍得到一些安慰。</p>
<p>　　2012 年的高考刚刚结束，除了那前后的一两天有些感慨以外，状态似乎并没有受到影响。毕竟我的高三过得是如此的充实丰富而收获不菲，这已很让我感到满足，那一年过得很值得。听周遭朋友的想法，貌似感伤的多些，甚至有些还不是一两天的事。不晓得是不是太在乎什么曾经没能得到的东西？还是大学生活太过空乏，使得高中的回忆显得如此沉重？为此，重拾我四年前的语录吧：“回首过去，把握现在，展望未来”，试图在每天不一样的生活中，发现生活的真实意义，有天终将豁然开朗。</p>
<p>　　今天是 6 月 17 日，本人正处在繁忙的专业实训周与考试周的恼人困境中——即便是困境，但对成功者来说并不会是恼人的。今天是 2012 年的父亲节，Sorry Dad，没能在这个时候在家陪你们，但真心的祝福稍候一定送到 <img src='http://www.ychong.com/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' />  一年前的今天，鄙人刚刚开始前端 JS 的学习，直至今天，沦为一个 Web 前端开发的码农。2012 年 6 月 17 日，是龙川 2012 年中考的第一天，海娟，山的那一头有我的牵挂，望你一切安好。。。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.ychong.com/log-on-june-17th-2012/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>WordPress 插件 qTranslate 开发经验总结与核心功能详解</title>
		<link>http://www.ychong.com/wordpress-qtranslate-development-basic/</link>
		<comments>http://www.ychong.com/wordpress-qtranslate-development-basic/#comments</comments>
		<pubDate>Fri, 18 May 2012 07:22:00 +0000</pubDate>
		<dc:creator>Chong Freeman</dc:creator>
				<category><![CDATA[Web Back-end]]></category>
		<category><![CDATA[qTranslate]]></category>
		<category><![CDATA[WordPress]]></category>

		<guid isPermaLink="false">http://www.ychong.com/wordpress-qtranslate-development-basic/</guid>
		<description><![CDATA[　　qTranslate 是由华人秦谦开发的一款 WordPress 多语言插件。其主要功能是通过处理 WordPress 前台/后台的过程，实现多语言数据分开编辑、共同存储于数据库中，达到真正的多语言 WordPress，并可随意切换。在各种 WordPress 多语言插件中，qTranslate 是非常棒的一款，尤其适合大家做深层次的二次开发。 　　本文总结笔者在此前折腾 qTranslate 插件的经验，并详解 qTranslate 部分底层功能，方便读者对 WordPress 结合 qTranslate 插件进行二次开发，以免去在开发过程中不必要的麻烦。 qTranslate 安装与注意事项 　　WordPress 插件下载页面：WordPress Plugins: qTranslate； 　　作者的插件官方首页：QianQin.de: qTranslate。 　　因为功能上的高度融合，出于兼容性方面考虑，当 WordPress 被升级之后，qTranslate 将被自动禁用，与此同时插件作者也将迅速发布与当前最新版本 WordPress 相兼容的 qTranslate 版本。 　　因为 qTranslate 是将多种语言的数据通过一定的格式经合并后作为一条字符串写入数据库的，所以当 qTranslate 插件被禁用或删除后，读者将可能看到非常不满意的现象：前台中，各语言的内容同时被显示出来；后台文章编辑、文章列表、分类列表中，诸如“&#60;!--:zh--&#62;”此类代码被裸露了出来。因此，在不确定未来是否会弃用 qTranslate 插件的情况下，笔者也建议谨慎选择。 qTranslate 的工作原理 　　qTranslate 通过 JS 和 WordPress 的 Hooks 机制，即时实现多语言功能，对数据库以及 WordPress 源码没有任何修改。 　　后台中，qTranslate [...]]]></description>
				<content:encoded><![CDATA[<p>　　qTranslate 是由华人秦谦开发的一款 WordPress 多语言插件。其主要功能是通过处理 WordPress 前台/后台的过程，实现多语言数据分开编辑、共同存储于数据库中，达到真正的多语言 WordPress，并可随意切换。在各种 WordPress 多语言插件中，qTranslate 是非常棒的一款，尤其适合大家做深层次的二次开发。</p>
<p>　　本文总结笔者在此前折腾 qTranslate 插件的经验，并详解 qTranslate 部分底层功能，方便读者对 WordPress 结合 qTranslate 插件进行二次开发，以免去在开发过程中不必要的麻烦。</p>
<p><span id="more-67"></span></p>
<h3>qTranslate 安装与注意事项</h3>
<p>　　WordPress 插件下载页面：<a href="http://wordpress.org/extend/plugins/qtranslate/" target="_blank" rel="nofollow">WordPress Plugins: qTranslate</a>；<br />
　　作者的插件官方首页：<a href="http://www.qianqin.de/qtranslate/" target="_blank" rel="nofollow">QianQin.de: qTranslate</a>。</p>
<p>　　因为功能上的高度融合，出于兼容性方面考虑，当 WordPress 被升级之后，qTranslate 将被自动禁用，与此同时插件作者也将迅速发布与当前最新版本 WordPress 相兼容的 qTranslate 版本。</p>
<p>　　因为 qTranslate 是将多种语言的数据通过一定的格式经合并后作为一条字符串写入数据库的，所以当 qTranslate 插件被禁用或删除后，读者将可能看到非常不满意的现象：前台中，各语言的内容同时被显示出来；后台文章编辑、文章列表、分类列表中，诸如“<code>&lt;!--:zh--&gt;</code>”此类代码被裸露了出来。因此，在不确定未来是否会弃用 qTranslate 插件的情况下，笔者也建议谨慎选择。</p>
<h3>qTranslate 的工作原理</h3>
<p>　　qTranslate 通过 JS 和 WordPress 的 Hooks 机制，即时实现多语言功能，对数据库以及 WordPress 源码没有任何修改。</p>
<p>　　后台中，qTranslate 通过 JS 实时处理文章编辑、页面编辑、分类添加/编辑等页面的表单（标题、正文等），将各个输入框按不同语言分离，并在提交表单时实时合并各个语言所填写的内容，进而提交到服务器并写入数据库。各个数据项合并存储格式如下：</p>
<pre class="brush:html">&lt;!--:zh--&gt;这是中文内容&lt;!--:--&gt;&lt;!--:en--&gt;This is English content&lt;!--:--&gt;</pre>
<p>　　前台中，qTranslate 通过 WordPress 的 Hooks 机制（action 和 filter），在模板将数据输出（通常指通过 <code>the_title()</code>、<code>the_content()</code> 等 WordPress 模板函数）之前，对数据进行处理。</p>
<h3>qTranslate 全局变量 <code>$q_config</code></h3>
<p>　　通过实时输出数组 <code>$q_config</code> 可以很清晰地看到这个数组的各个分支的数据，及其大概作用。</p>
<p>　　其中在常规开发中可能用到的变量有：</p>
<pre class="brush:php">// （数组）后台设置的可用的语言
$q_config['enabled_languages'];

// 当前后台设置的默认语言
$q_config['default_language'];

// 当前被显示的语言（当前被选择的语言）
$q_config['language'];

// 侦测到浏览器的语言
$q_config['detect_browser_language'];

// qTranslate 各 JS 函数对应的 JS 代码
$q_config['js']['qtrans_is_array'];
$q_config['js']['qtrans_xsplit'];
$q_config['js']['qtrans_split'];
$q_config['js']['qtrans_integrate'];
$q_config['js']['qtrans_switch_postbox'];
$q_config['js']['qtrans_use'];
</pre>
<h3>qTranslate 函数</h3>
<p>　　qTranslate 自带了众多函数（PHP 和 JS，有些是 PHP 与 JS 通用的），因其需要充分考虑在前端体验上的优化，大多数函数的定制性很高，在我们的开发中不一定用得上。因此在此笔者仅列举必须用到的几个基础函数，有兴趣的朋友可进一步研究 qTranslate 的源代码。</p>
<h3>函数 <code>qtrans_use</code></h3>
<p>　　<small>PHP 版：</small></p>
<pre class="brush:php">&lt;?php qtrans_use( $lang, $text ); ?&gt;</pre>
<p>　　<small>JS 版：</small></p>
<pre class="brush:js">qtrans_use( lang, text );</pre>
<p>　　功能：从原始合并后的数据中提取指定语言的数据。<br />
　　例子：</p>
<p>　　<small>PHP 版：</small></p>
<pre class="brush:php">&lt;?php echo qtrans_use( 'zh', 
    '&lt;!--:zh--&gt;这是中文内容&lt;!--:--&gt;&lt;!--:en--&gt;This is English content&lt;!--:--&gt;' ); ?&gt;</pre>
<p>　　<small>JS 版：</small></p>
<pre class="brush:js">console.log( qtrans_use( 'zh', 
    '&lt;!--:zh--&gt;这是中文内容&lt;!--:--&gt;&lt;!--:en--&gt;This is English content&lt;!--:--&gt;' ) );</pre>
<p>　　此处的输出结果：</p>
<pre class="brush:text">这是中文内容</pre>
<h3>函数 <code>qtrans_integrate</code></h3>
<p>　　<small>仅 JS 版：</small></p>
<pre class="brush:js">qtrans_integrate( lang, lang_text, text );</pre>
<p>　　功能：将指定语言的新内容更新到已合并的字符串中。<br />
　　例子：</p>
<pre class="brush:js">console.log( qtrans_integrate( 'zh', '新的中文内容', 
    '&lt;!--:zh--&gt;这是中文内容&lt;!--:--&gt;&lt;!--:en--&gt;This is English content&lt;!--:--&gt;' ) );</pre>
<p>　　此处的输出结果：</p>
<pre class="brush:text">&lt;!--:zh--&gt;新的中文内容&lt;!--:--&gt;&lt;!--:en--&gt;This is English content&lt;!--:--&gt;</pre>
<h3>函数 <code>qtrans_getSortedLanguages</code></h3>
<p>　　<small>仅 PHP 版：</small></p>
<pre class="brush:php">&lt;?php qtrans_getSortedLanguages(); ?&gt;</pre>
<p>　　功能：获取所有可用语言的字符串数组（经排序后的）。<br />
　　例子：</p>
<pre class="brush:php">&lt;?php print_r( qtrans_getSortedLanguages() ); ?&gt;</pre>
<p>　　此处的输出结果：</p>
<pre class="brush:text">Array
(
    [0] =&gt; zh
    [1] =&gt; en
)</pre>
<h3>函数 <code>qtrans_generateLanguageSelectCode</code></h3>
<p>　　<small>仅 PHP 版：</small></p>
<pre class="brush:php">&lt;?php qtrans_generateLanguageSelectCode( $style, $id ); ?&gt;</pre>
<p>　　功能：输出前端语言选择器 HTML 代码。<br />
　　参数：<code>$style</code> 为输出样式，<code>$id</code> 为输出的无序列表 <code>ul</code> 的 <code>ID</code> 属性值。其中 <code>$style</code> 可取值为：<code>text</code>（仅文字链接）、<code>image</code>（仅图片链接）、<code>dropdown</code>（下拉列表）、<code>both</code>（图文链接）。</p>
<h3>函数 <code>qtrans_switch_postbox</code></h3>
<p>　　<small>仅 JS 版：</small></p>
<pre class="brush:js">qtrans_switch_postbox( parent, target, lang );</pre>
<p>　　功能：切换指定 Meta Box 的语言选择，并附加同步数据到合并提交的输入框表单域中。<br />
　　参数：<code>parent</code> 为目标 Meta Box 的 <code>ID</code> 属性值，<code>target</code> 为附加同步数据的输入框表单域的 <code>ID</code> 属性值，<code>lang</code> 为需要切换的语言标识符。<br />
　　例子：将文章编辑页面摘要框切换为中文（摘要框容器 <code>ID</code> 为 <code>postexcerpt</code>，摘要输入框 <code>ID</code> 为 <code>excerpt</code>）</p>
<pre class="brush:js">qtrans_switch_postbox( 'postexcerpt', 'excerpt', 'zh' );</pre>
<h3>函数 <code>qtrans_createTitlebarButton</code></h3>
<p>　　<small>仅 PHP 版：</small></p>
<pre class="brush:php">&lt;?php qtrans_createTitlebarButton( $parent, $language, $target, $id ); ?&gt;</pre>
<p>　　功能：获取后台文章编辑页面的 Meta Box 语言切换按钮的 JS 处理代码。<br />
　　参数：<code>$parent</code> 为目标 Meta Box 的 <code>ID</code> 属性值，<code>$language</code> 为需要添加按钮的语言标识符，<code>$target</code> 为附加同步数据的输入框表单域的 <code>ID</code> 属性值，<code>$id</code> 为待添加的语言切换按钮的 <code>ID</code> 属性值。<br />
　　例子：对文章编辑页面摘要框的多语言切换按钮（摘要框容器 <code>ID</code> 为 <code>postexcerpt</code>，摘要输入框 <code>ID</code> 为 <code>excerpt</code>）</p>
<pre class="brush:php">
&lt;?php
    $el = qtrans_getSortedLanguages();
    foreach( $el as $language ) {
        echo qtrans_createTitlebarButton( 'postexcerpt', $language, 'excerpt', 'qtrans_switcher_postexcerpt_' . $language );
        echo qtrans_createTextArea      ( 'postexcerpt', $language, 'excerpt', 'qtrans_switcher_postexcerpt_' . $language );
    }
?&gt;
</pre>
<p>　　此处的输出结果：</p>
<pre class="brush:js">
    // 循环：$el == 'zh'

    // 函数 qtrans_createTitlebarButton 输出：
    jQuery('#postexcerpt .handlediv').after('&lt;div class="qtranslate_lang_div" id="qtrans_switcher_postexcerpt_zh"&gt;&lt;img alt="zh" title="中文" src="http://localhost/test/wordpress/wp-content/plugins/qtranslate/flags/cn.png" /&gt;&lt;/div&gt;');
    jQuery('#qtrans_switcher_postexcerpt_zh').click(function() {qtrans_switch_postbox('postexcerpt','excerpt','zh');});

    // 函数 qtrans_createTextArea 输出：
    jQuery('#excerpt').after('&lt;textarea name="qtrans_textarea_excerpt_zh" id="qtrans_textarea_excerpt_zh"&gt;&lt;/textarea&gt;');
    jQuery('#qtrans_textarea_excerpt_zh').attr('cols', jQuery('#excerpt').attr('cols'));
    jQuery('#qtrans_textarea_excerpt_zh').attr('rows', jQuery('#excerpt').attr('rows'));
    jQuery('#qtrans_textarea_excerpt_zh').attr('tabindex', jQuery('#excerpt').attr('tabindex'));
    jQuery('#qtrans_textarea_excerpt_zh').blur(function() {qtrans_switch_postbox('postexcerpt','excerpt',false);});
    jQuery('#qtrans_textarea_excerpt_zh').val(qtrans_use('zh',jQuery('#excerpt').val()));

    // 循环：$el == 'en'

    // 函数 qtrans_createTitlebarButton 输出：
    jQuery('#postexcerpt .handlediv').after('&lt;div class="qtranslate_lang_div" id="qtrans_switcher_postexcerpt_en"&gt;&lt;img alt="en" title="English" src="http://localhost/test/wordpress/wp-content/plugins/qtranslate/flags/gb.png" /&gt;&lt;/div&gt;');
    jQuery('#qtrans_switcher_postexcerpt_en').click(function() {qtrans_switch_postbox('postexcerpt','excerpt','en');});

    // 函数 qtrans_createTextArea 输出：
    jQuery('#excerpt').after('&lt;textarea name="qtrans_textarea_excerpt_en" id="qtrans_textarea_excerpt_en"&gt;&lt;/textarea&gt;');
    jQuery('#qtrans_textarea_excerpt_en').attr('cols', jQuery('#excerpt').attr('cols'));
    jQuery('#qtrans_textarea_excerpt_en').attr('rows', jQuery('#excerpt').attr('rows'));
    jQuery('#qtrans_textarea_excerpt_en').attr('tabindex', jQuery('#excerpt').attr('tabindex'));
    jQuery('#qtrans_textarea_excerpt_en').blur(function() {qtrans_switch_postbox('postexcerpt','excerpt',false);});
    jQuery('#qtrans_textarea_excerpt_en').val(qtrans_use('en',jQuery('#excerpt').val()));
</pre>
<p>　　以上内容，若有不足，欢迎大家批评指正。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.ychong.com/wordpress-qtranslate-development-basic/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>
