<?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>Xhacker’s Base</title>
	<atom:link href="http://xhacker.shiyiquan.cn/feed/" rel="self" type="application/rss+xml" />
	<link>http://xhacker.shiyiquan.cn</link>
	<description>Since June, 2009.</description>
	<lastBuildDate>Fri, 17 Jan 2014 00:43:49 +0000</lastBuildDate>
	<language>en-US</language>
		<sy:updatePeriod>hourly</sy:updatePeriod>
		<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.8.1</generator>
	<item>
		<title>[ANN] 我的新 Blog</title>
		<link>http://xhacker.shiyiquan.cn/ann-new-blog/</link>
		<comments>http://xhacker.shiyiquan.cn/ann-new-blog/#comments</comments>
		<pubDate>Sun, 05 Jan 2014 01:07:01 +0000</pubDate>
		<dc:creator><![CDATA[Xhacker]]></dc:creator>
				<category><![CDATA[你在做什么]]></category>
		<category><![CDATA[Blog]]></category>

		<guid isPermaLink="false">http://xhacker.shiyiquan.cn/?p=1053</guid>
		<description><![CDATA[有时候，也没有什么动机，总是想折腾折腾。于是我用 Jekyll + GitHub Pages 建立了我的新 blog，并自己写了个很简单的主题（也就比纯文本好看一点点吧）。目前这个 blog 将不再更新。再见，WordPress…… http://blog.xhacker.im 欢迎大家光临订阅。:)]]></description>
				<content:encoded><![CDATA[<p>有时候，也没有什么动机，总是想折腾折腾。于是我用 Jekyll + GitHub Pages 建立了我的新 blog，并自己写了个很简单的主题（也就比纯文本好看一点点吧）。目前这个 blog 将不再更新。再见，WordPress……</p>
<p><a href="http://blog.xhacker.im">http://blog.xhacker.im</a></p>
<p>欢迎大家光临订阅。:)</p>
]]></content:encoded>
			<wfw:commentRss>http://xhacker.shiyiquan.cn/ann-new-blog/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>微电影《丘比特请睁眼》</title>
		<link>http://xhacker.shiyiquan.cn/microcinema-qiubite/</link>
		<comments>http://xhacker.shiyiquan.cn/microcinema-qiubite/#comments</comments>
		<pubDate>Sun, 27 Oct 2013 13:10:46 +0000</pubDate>
		<dc:creator><![CDATA[Xhacker]]></dc:creator>
				<category><![CDATA[你在做什么]]></category>
		<category><![CDATA[Final Cut Pro X]]></category>
		<category><![CDATA[微电影]]></category>

		<guid isPermaLink="false">http://xhacker.shiyiquan.cn/?p=1045</guid>
		<description><![CDATA[其实已经是一年前的事儿了，但是一直没在这里发。我在其中担任主要的摄影、剪辑、配乐。现在除了对剧本和配乐比较满意，感觉其他部分无比粗糙。当时时间紧，一部分交给了另一个同学，不仅效果上没沟通好，最后输出时还搞错了码率，导致明显的马赛克。 拍摄主要是用两台 Nikon D7000，用一个飞利浦低端麦克风和 iPhone 录音。单反的视频效果不错，但对焦是硬伤。一些备选的镜头没有录音，导致音画不同步。后期剪辑是用大神器 Final Cut Pro X 完成的（外包的部分是会声会影 + Adobe After Effects），强大又不复杂。也只是做视频时才能意识到「电脑性能真的还不够用」吧。 但总的来说，我对这个作品很满意。一是时间实在有限，二是无论拍摄还是剪辑，之前都没有经验。不过之后有没有机会再参与类似的事情，也很难说了。 不多说，视频来咯—— （这是标清版本，如果网速足够快，建议直接看 1080P：http://hcc.im/x/document/video/丘比特请睁眼.m4v） 谢谢。]]></description>
				<content:encoded><![CDATA[<p>其实已经是一年前的事儿了，但是一直没在这里发。我在其中担任主要的摄影、剪辑、配乐。现在除了对剧本和配乐比较满意，感觉其他部分无比粗糙。当时时间紧，一部分交给了另一个同学，不仅效果上没沟通好，最后输出时还搞错了码率，导致明显的马赛克。</p>
<p>拍摄主要是用两台 Nikon D7000，用一个飞利浦低端麦克风和 iPhone 录音。单反的视频效果不错，但对焦是硬伤。一些备选的镜头没有录音，导致音画不同步。后期剪辑是用大神器 Final Cut Pro X 完成的（外包的部分是会声会影 + Adobe After Effects），强大又不复杂。也只是做视频时才能意识到「电脑性能真的还不够用」吧。</p>
<p>但总的来说，我对这个作品很满意。一是时间实在有限，二是无论拍摄还是剪辑，之前都没有经验。不过之后有没有机会再参与类似的事情，也很难说了。</p>
<p>不多说，视频来咯——</p>
<p>（这是标清版本，如果网速足够快，建议直接看 1080P：<a href="http://hcc.im/x/document/video/丘比特请睁眼.m4v">http://hcc.im/x/document/video/丘比特请睁眼.m4v</a>）</p>
<p><video width="100%" controls="controls" src="http://hcc.im/x/document/video/丘比特请睁眼-SD.mp4" video=""></video></p>
<p>谢谢。</p>
]]></content:encoded>
			<wfw:commentRss>http://xhacker.shiyiquan.cn/microcinema-qiubite/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Cryptomeria Goes Universal</title>
		<link>http://xhacker.shiyiquan.cn/cryptomeria-universal/</link>
		<comments>http://xhacker.shiyiquan.cn/cryptomeria-universal/#comments</comments>
		<pubDate>Tue, 10 Sep 2013 01:49:17 +0000</pubDate>
		<dc:creator><![CDATA[Xhacker]]></dc:creator>
				<category><![CDATA[你在做什么]]></category>
		<category><![CDATA[Cryptomeria]]></category>

		<guid isPermaLink="false">http://xhacker.shiyiquan.cn/?p=1035</guid>
		<description><![CDATA[8 月 31 号上传，今天审核通过了。这个版本除了支持 iPad，还针对 iOS 7 作了更新。 本来想把版本定为 1.1，后来想想人生苦短，还是快刷版本号吧。所以就 2.0 了。:)]]></description>
				<content:encoded><![CDATA[<p>8 月 31 号上传，今天审核通过了。这个版本除了支持 iPad，还针对 iOS 7 作了更新。</p>
<p>本来想把版本定为 1.1，后来想想人生苦短，还是快刷版本号吧。所以就 2.0 了。:)</p>
]]></content:encoded>
			<wfw:commentRss>http://xhacker.shiyiquan.cn/cryptomeria-universal/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>如何写简单的同步</title>
		<link>http://xhacker.shiyiquan.cn/how-to-write-simple-sync/</link>
		<comments>http://xhacker.shiyiquan.cn/how-to-write-simple-sync/#comments</comments>
		<pubDate>Sun, 08 Sep 2013 18:04:27 +0000</pubDate>
		<dc:creator><![CDATA[Xhacker]]></dc:creator>
				<category><![CDATA[你在做什么]]></category>
		<category><![CDATA[Dropbox]]></category>
		<category><![CDATA[Pomotodo]]></category>
		<category><![CDATA[同步]]></category>

		<guid isPermaLink="false">http://xhacker.shiyiquan.cn/?p=1030</guid>
		<description><![CDATA[同步这件事很烦。之前在写「南北阁」的时候，大家因为种种困难没有自己实现同步，采用了 CouchDB + TouchDB 的方式。糟糕的是，TouchDB 的 Android 实现严重缺乏维护。 最近又面临同步的问题，是 iOS app 和 web app 间的同步，没法用 iCloud，又有 TouchDB 的前车之鉴（太依赖一个看不清楚的框架很危险），只好硬着头皮自己写。之后发现也没有多困难。 实现 需要为本地对象增加以下属性： UUID：作为对象的唯一标识。因为多个 client 都有可能离线创建对象，所以不能用自增的 ID。 syncStatus：可取 Done 或 Modified，用于标记对象在上次同步后是否修改过。 updateTime：对象最后修改的时间。 isDeleted：删除对象时不真正删除，将该属性设为 1。 另，本地储存一个 lastSync 值记录上次同步的时间。 为服务器对象增加以下属性： UUID：同上。 updateTime：同上。 serverUpdateTime：每次对象在服务器上被修改时，更新此值。不能被客户端修改。 isDeleted：同上。 同步过程如下： 客户端将所有 syncStatus = Modified 的对象，连同 lastSync 发至服务器。 服务器根据发来的对象的 UUID： 若未找到对象，新建。 若找到对象：若发来对象的 updateTime 大于服务器对象的 updateTime，按发来的对象更新数据。否则忽略。 服务器将 serverUpdateTime [&#8230;]]]></description>
				<content:encoded><![CDATA[<p>同步这件事很烦。之前在写「南北阁」的时候，大家因为种种困难没有自己实现同步，采用了 CouchDB + TouchDB 的方式。糟糕的是，TouchDB 的 Android 实现严重缺乏维护。</p>
<p>最近又面临同步的问题，是 iOS app 和 web app 间的同步，没法用 iCloud，又有 TouchDB 的前车之鉴（太依赖一个看不清楚的框架很危险），只好硬着头皮自己写。之后发现也没有多困难。</p>
<h2>实现</h2>
<p>需要为本地对象增加以下属性：</p>
<ul>
<li><a href="http://en.wikipedia.org/wiki/Universally_unique_identifier">UUID</a>：作为对象的唯一标识。因为多个 client 都有可能离线创建对象，所以不能用自增的 ID。</li>
<li>syncStatus：可取 Done 或 Modified，用于标记对象在上次同步后是否修改过。</li>
<li>updateTime：对象最后修改的时间。</li>
<li>isDeleted：删除对象时不真正删除，将该属性设为 1。</li>
</ul>
<p>另，本地储存一个 lastSync 值记录上次同步的时间。</p>
<p>为服务器对象增加以下属性：</p>
<ul>
<li>UUID：同上。</li>
<li>updateTime：同上。</li>
<li>serverUpdateTime：每次对象在服务器上被修改时，更新此值。不能被客户端修改。</li>
<li>isDeleted：同上。</li>
</ul>
<p>同步过程如下：</p>
<ol>
<li>客户端将所有 syncStatus = Modified 的对象，连同 lastSync 发至服务器。</li>
<li>服务器根据发来的对象的 UUID：
<ul>
<li>若未找到对象，新建。</li>
<li>若找到对象：若发来对象的 updateTime 大于服务器对象的 updateTime，按发来的对象更新数据。否则忽略。</li>
</ul>
</li>
<li>服务器将 serverUpdateTime &gt; lastSync 的对象发回客户端（不含 2 中刚刚更新的）。</li>
<li>客户端将所有 syncStatus 设为 Done，根据服务器发来的对象更新本地数据。</li>
<li>完成。</li>
</ol>
<h2>进阶</h2>
<p>试想一个 Todo 应用，Client A（离线）在 10:00 将「搬寝室」修改为「搬寝室到 411」，Client B （在线）在 11:00 将「搬寝室」的优先级设为「高」。Client A 在 12:00 同步后，Todo 的内容就会回到「搬寝室」。</p>
<p>把 Todo 对象的粒度变细可以解决问题。把对象细化到原来 Todo 的每一个属性（如 content、priority、finished 等），每个属性都包含前述的 syncStatus、updateTime、serverUpdateTime。这样，两个客户端分别修改不同属性后，就可以成功 merge。</p>
<p>如果两个客户端修改了相同的属性，采用 updateTime 晚的作为 merge 结果，也是很自然的。</p>
<h2>调试</h2>
<p>Sync 功能很难调试。出了问题，首先要确定来自 client 还是 server。单单确定问题就需要两方合作，之后解决问题还需要两方合作。所以，最理想的情况是把客户端和服务器端的同步部分交给一个人写。次理想的情况，也一定要能看懂对方的代码。</p>
<h2>参考</h2>
<p>Dropbox 介绍了他们如何处理 Datastore API 的冲突（<a href="https://www.dropbox.com/developers/blog/48/how-the-datastore-api-handles-conflicts-part-1-basics-of-offline-conflict-handling">Part 1</a>, <a href="https://www.dropbox.com/developers/blog/56/how-the-dropbox-datastore-api-handles-conflicts-part-two-resolving-collisions">Part 2</a>），值得一看。</p>
]]></content:encoded>
			<wfw:commentRss>http://xhacker.shiyiquan.cn/how-to-write-simple-sync/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>如果程序员也是设计师</title>
		<link>http://xhacker.shiyiquan.cn/if-programmer-is-also-designer/</link>
		<comments>http://xhacker.shiyiquan.cn/if-programmer-is-also-designer/#comments</comments>
		<pubDate>Sat, 07 Sep 2013 15:46:04 +0000</pubDate>
		<dc:creator><![CDATA[Xhacker]]></dc:creator>
				<category><![CDATA[你在做什么]]></category>
		<category><![CDATA[脑内活动]]></category>
		<category><![CDATA[程序员]]></category>
		<category><![CDATA[设计师]]></category>
		<category><![CDATA[随想]]></category>

		<guid isPermaLink="false">http://xhacker.shiyiquan.cn/?p=1027</guid>
		<description><![CDATA[优势很明显：避免沟通成本。不需要相互理解。 最近意识到缺陷。 程序员会下意识避免实现上复杂或者需要 hack 的交互——也许是认为代码层面的肮脏也不可接受，也许只是为了减少工作量。结果就是，容易产生利用系统自带控件或少量修改的控件作出的足够美观、易用的应用，却难以产生 Clear 般大胆的设计。 而若是设计师提供完整的方案，程序员认同后，就会开动脑筋实现。 所以，作为一个程序员，要尽可能跳出去考虑问题。]]></description>
				<content:encoded><![CDATA[<p>优势很明显：避免沟通成本。不需要相互理解。</p>
<p>最近意识到缺陷。</p>
<p>程序员会下意识避免实现上复杂或者需要 hack 的交互——也许是认为代码层面的肮脏也不可接受，也许只是为了减少工作量。结果就是，容易产生利用系统自带控件或少量修改的控件作出的足够美观、易用的应用，却难以产生 Clear 般大胆的设计。</p>
<p>而若是设计师提供完整的方案，程序员认同后，就会开动脑筋实现。</p>
<p>所以，作为一个程序员，要尽可能跳出去考虑问题。</p>
]]></content:encoded>
			<wfw:commentRss>http://xhacker.shiyiquan.cn/if-programmer-is-also-designer/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>回杭</title>
		<link>http://xhacker.shiyiquan.cn/back-to-hangzhou/</link>
		<comments>http://xhacker.shiyiquan.cn/back-to-hangzhou/#comments</comments>
		<pubDate>Thu, 05 Sep 2013 15:16:02 +0000</pubDate>
		<dc:creator><![CDATA[Xhacker]]></dc:creator>
				<category><![CDATA[乱七八糟]]></category>

		<guid isPermaLink="false">http://xhacker.shiyiquan.cn/?p=1025</guid>
		<description><![CDATA[此番回杭，可以说是计划外的。 不过事情总是复杂的，变化也不是坏事。]]></description>
				<content:encoded><![CDATA[<p>此番回杭，可以说是计划外的。</p>
<p>不过事情总是复杂的，变化也不是坏事。</p>
]]></content:encoded>
			<wfw:commentRss>http://xhacker.shiyiquan.cn/back-to-hangzhou/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>复活日志</title>
		<link>http://xhacker.shiyiquan.cn/server-back-log/</link>
		<comments>http://xhacker.shiyiquan.cn/server-back-log/#comments</comments>
		<pubDate>Fri, 16 Aug 2013 15:13:59 +0000</pubDate>
		<dc:creator><![CDATA[Xhacker]]></dc:creator>
				<category><![CDATA[你在做什么]]></category>
		<category><![CDATA[HCC]]></category>
		<category><![CDATA[HCCSERVER]]></category>

		<guid isPermaLink="false">http://xhacker.shiyiquan.cn/?p=1013</guid>
		<description><![CDATA[/* 如你所见，这个 blog 又能访问了。 */ /* 长流水账，慎入。 */ 最近 Veer 的屏幕开始间歇性抽抽（我的 Pixi 就是抽抽到不能控制坏了的），我有点担心坚持不到买新手机，就去找马儒潇把 Pre 3 借来，实在 Veer 坏了救救急。另外，HCC 服务器也好久没法访问了，悲伤的是竟然没人抱怨这事。然后我想不如顺便人肉一下服务器。 马儒潇联系了晓亮，晓亮在新疆，让我们联系「尹老师」，并且贴心地补了一句「多穿点，机房很冷」……我走之前想起来了，不然差点穿着短袖短裤就过去。我想重走一下三年前的老路，所以就骑车去了。还是那条青塔西路，只是没有惊现烧碱，也没有李嘉琦。 在毛纱线家逗留了一段时间，去小厨吃饭、去街客买奶茶，然后就去图书馆了。（服务器们又搬回图书馆了！） 到三层看到整整齐齐的两个机柜，感动得哗哗的……机架式服务器终于不放在桌子上了……以及，多穿衣服确实不是 overkill，室内温度 22 度左右，冻死了…… 我们盯着服务器看了半天，跟老师说要键盘和显示器。结果他直接在机架上掀开了一个显示器，还带键盘和触摸板……长见识了。接线也很高级，每台服务器的 VGA 和 USB 通过一个转换器转成网线，接在一个集线器上，前面板可以选择操作的服务器。 屏幕亮了之后就发现麻烦了。（本来预期中的问题是网线没插之类的……XD）服务器上第二块硬盘亮红灯，HP 的 RAID Controller 提示 Bay 2 的硬盘 failed。突然有点庆幸 Bay 2 和 Bay 3 的两块盘组了 RAID 1……可是我们都不知道怎么拆 RAID，又没有 Wi-Fi，只好去蹭 HCC Workshop 的网。Time Capsule 竟然还在任劳任怨地工作。 说直接把坏盘插着，F2 [&#8230;]]]></description>
				<content:encoded><![CDATA[<p>/* 如你所见，这个 blog 又能访问了。 */</p>
<p>/* 长流水账，慎入。 */</p>
<p>最近 Veer 的屏幕开始间歇性抽抽（我的 Pixi 就是抽抽到不能控制坏了的），我有点担心坚持不到买新手机，就去找马儒潇把 Pre 3 借来，实在 Veer 坏了救救急。另外，HCC 服务器也好久没法访问了，悲伤的是竟然没人抱怨这事。然后我想不如顺便人肉一下服务器。</p>
<p>马儒潇联系了晓亮，晓亮在新疆，让我们联系「尹老师」，并且贴心地补了一句「多穿点，机房很冷」……我走之前想起来了，不然差点穿着短袖短裤就过去。我想重走一下三年前的老路，所以就骑车去了。还是那条青塔西路，只是没有惊现烧碱，也没有李嘉琦。</p>
<p>在毛纱线家逗留了一段时间，去小厨吃饭、去街客买奶茶，然后就去图书馆了。（服务器们又搬回图书馆了！）</p>
<p>到三层看到整整齐齐的两个机柜，感动得哗哗的……机架式服务器终于不放在桌子上了……以及，多穿衣服确实不是 overkill，室内温度 22 度左右，冻死了……</p>
<p><a href="http://xhacker.shiyiquan.cn/wp-content/uploads/2013/08/Server.jpg"><img class="alignnone size-full wp-image-1021" alt="机架式服务器终于在机架上了" src="http://xhacker.shiyiquan.cn/wp-content/uploads/2013/08/Server.jpg" width="2672" height="4000" /></a></p>
<p><a href="http://xhacker.shiyiquan.cn/wp-content/uploads/2013/08/Server-MrX.jpg"><img class="alignnone size-full wp-image-1020" alt="Server MrX" src="http://xhacker.shiyiquan.cn/wp-content/uploads/2013/08/Server-MrX.jpg" width="2672" height="4000" /></a></p>
<p>我们盯着服务器看了半天，跟老师说要键盘和显示器。结果他直接在机架上掀开了一个显示器，还带键盘和触摸板……长见识了。接线也很高级，每台服务器的 VGA 和 USB 通过一个转换器转成网线，接在一个集线器上，前面板可以选择操作的服务器。</p>
<p>屏幕亮了之后就发现麻烦了。（本来预期中的问题是网线没插之类的……XD）服务器上第二块硬盘亮红灯，HP 的 RAID Controller 提示 Bay 2 的硬盘 failed。突然有点庆幸 Bay 2 和 Bay 3 的两块盘组了 RAID 1……可是我们都不知道怎么拆 RAID，又没有 Wi-Fi，只好去蹭 HCC Workshop 的网。Time Capsule 竟然还在任劳任怨地工作。</p>
<p><a href="http://xhacker.shiyiquan.cn/wp-content/uploads/2013/08/Server-Hard-Disk.jpg"><img class="alignnone size-full wp-image-1019" alt="Server Hard Disk" src="http://xhacker.shiyiquan.cn/wp-content/uploads/2013/08/Server-Hard-Disk.jpg" width="2672" height="4000" /></a></p>
<p><a href="http://xhacker.shiyiquan.cn/wp-content/uploads/2013/08/HCC-MrX.jpg"><img class="alignnone size-full wp-image-1018" alt="HCC MrX" src="http://xhacker.shiyiquan.cn/wp-content/uploads/2013/08/HCC-MrX.jpg" width="1280" height="855" /></a></p>
<p>说直接把坏盘插着，F2 强制启动，就会自动忽略坏盘。终于回到熟悉的 Ubuntu 了，但是发现更糟糕的事，两块盘一块 failed 一块 predictive failure。开玩笑呢？！（不太顺利地）把几个备份脚本都跑了一遍，然后……就想 do-release-upgrade 啦。那就 do-release-upgrade。（我这时候已然冻僵了……）</p>
<p>只好到对面阅览室取暖，开了台一体机，路遇「金盘电子阅览室管理系统」。后来不懈努力，马儒潇盲操作 cmd 打入 taskkill /f /im cli* 就给干掉了。之后用 Tunnelier attach 上 session，免得跑对面吹空调。以及我们还干了点小坏事（此处省略 1800 字）。</p>
<p>Upgrade 完后，输入 shiyihcc.com，一切……等等？怎么是 CUC？（杨聪明！）……不过这些都是小事了，回家慢慢再修。至此，抢救结束。</p>
<p>但其实硬盘的事完全没解决，RAID 只有一块还在干活，而且是 predictive failure……回头再说吧。突然回想，这两块 300 GB 的盘还是为班级空间而买的，现在却没人在好好用服务器了。有点伤心。</p>
<p>然后就又骑车惊现青塔桥了。</p>
]]></content:encoded>
			<wfw:commentRss>http://xhacker.shiyiquan.cn/server-back-log/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Cryptomeria for iOS</title>
		<link>http://xhacker.shiyiquan.cn/cryptomeria-for-ios/</link>
		<comments>http://xhacker.shiyiquan.cn/cryptomeria-for-ios/#comments</comments>
		<pubDate>Tue, 11 Jun 2013 15:28:44 +0000</pubDate>
		<dc:creator><![CDATA[Xhacker]]></dc:creator>
				<category><![CDATA[你在做什么]]></category>
		<category><![CDATA[Cryptomeria]]></category>
		<category><![CDATA[iOS app]]></category>

		<guid isPermaLink="false">http://xhacker.shiyiquan.cn/?p=1000</guid>
		<description><![CDATA[之前说过的「我和闫铮的作品」无限期跳票了。（也许暑假会抽空完成。） 不过我发布了自己的第一个 iOS 作品：Cryptomeria。由于之前已经有了 Chrome app，逻辑上的实现相对轻松，基本上就是在熟悉 iOS 开发。从设计到编码独立完成一个 app 是很幸福的事，销量什么的就顺其自然吧。 3.21 第一个 commit。 5.24 83 个 commits 后，提交 App Store。 5.30 审核通过。 6.5 上线 1.0.1。 感谢吴昊天在我刚开始接触 iOS 的时候解答了几个很基础的问题。感谢吴涛在知乎上帮我解决了日文基线偏高的问题。也感谢珊珊、楼洵、马儒潇、闫铮对我的支持。感谢 Sketch.app，真的很好用。 单独起一个段落感谢 GitHub。我心目中最酷的互联网公司。 最后，我和楼洵的另一个 app 已经在审核了。:)]]></description>
				<content:encoded><![CDATA[<p><a href="http://xhacker.shiyiquan.cn/wp-content/uploads/2013/06/480-2.png"><img class="alignnone size-full wp-image-1001" alt="480-2" src="http://xhacker.shiyiquan.cn/wp-content/uploads/2013/06/480-2.png" width="640" height="960" /></a></p>
<p>之前说过的「我和闫铮的作品」无限期跳票了。（也许暑假会抽空完成。）</p>
<p>不过我发布了自己的第一个 iOS 作品：<a href="http://xhacker.im/cryptomeria">Cryptomeria</a>。由于之前已经有了 Chrome app，逻辑上的实现相对轻松，基本上就是在熟悉 iOS 开发。从设计到编码独立完成一个 app 是很幸福的事，销量什么的就顺其自然吧。</p>
<ul>
<li><span style="line-height: 15px;"><strong>3.21</strong> 第一个 commit。</span></li>
<li><strong>5.24</strong> 83 个 commits 后，提交 App Store。</li>
<li><strong>5.30</strong> 审核通过。</li>
<li><strong>6.5</strong> 上线 1.0.1。</li>
</ul>
<p>感谢吴昊天在我刚开始接触 iOS 的时候解答了几个很基础的问题。感谢吴涛在知乎上帮我解决了<a href="http://www.zhihu.com/question/21080554">日文基线偏高的问题</a>。也感谢珊珊、楼洵、马儒潇、闫铮对我的支持。感谢 Sketch.app，真的很好用。</p>
<p>单独起一个段落感谢 GitHub。我心目中最酷的互联网公司。</p>
<p>最后，<a href="http://teawhen.com/shoka">我和楼洵的另一个 app</a> 已经在审核了。:)</p>
]]></content:encoded>
			<wfw:commentRss>http://xhacker.shiyiquan.cn/cryptomeria-for-ios/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>GarageBand Piano Lessons</title>
		<link>http://xhacker.shiyiquan.cn/garageband-piano-lessons/</link>
		<comments>http://xhacker.shiyiquan.cn/garageband-piano-lessons/#comments</comments>
		<pubDate>Fri, 31 May 2013 16:44:00 +0000</pubDate>
		<dc:creator><![CDATA[Xhacker]]></dc:creator>
				<category><![CDATA[你在做什么]]></category>
		<category><![CDATA[GarageBand]]></category>
		<category><![CDATA[Piano]]></category>

		<guid isPermaLink="false">http://xhacker.shiyiquan.cn/?p=996</guid>
		<description><![CDATA[GarageBand 附带的乐器课程质量非常之高。高三后的暑假跟过一阵吉他课程，由于通过 GarageBand 下载实在太慢，就找到了这篇文章：http://yanghao.org/blog/archives/87。 寒假看了一阵钢琴课程，抓出的地址如下（下完直接安装就行）： 自带了。 http://downloads.apple.com/pub/lessons/basic/2Z695-0042_Piano%20Lesson%202_Right%20Hand.pkg http://downloads.apple.com/pub/lessons/basic/2Z695-0043_Piano%20Lesson%203_Left%20Hand.pkg http://downloads.apple.com/pub/lessons/basic/2Z695-0044_Piano%20Lesson%204_Rhythm.pkg http://downloads.apple.com/pub/lessons/basic/2Z695-0045_Piano%20Lesson%205_Sharps%20and%20Flats.pkg http://downloads.apple.com/pub/lessons/basic/2Z695-0046_Piano%20Lesson%206_Rhythmic%20Accents.pkg http://downloads.apple.com/pub/lessons/basic/2Z695-0047_Piano%20Lesson%207_Major%20and%20Minor%20Chords.pkg http://downloads.apple.com/pub/lessons/basic/2Z695-0048_Piano%20Lesson%208_Scales.pkg http://downloads.apple.com/pub/lessons/basic/2Z695-0049_Piano%20Lesson%209_Playing%20the%20Blues.pkg 推荐每个人有时间都学学。很有意思。]]></description>
				<content:encoded><![CDATA[<p>GarageBand 附带的乐器课程质量非常之高。高三后的暑假跟过一阵吉他课程，由于通过 GarageBand 下载实在太慢，就找到了这篇文章：<a href="http://yanghao.org/blog/archives/87" target="_blank">http://yanghao.org/blog/archives/87</a>。</p>
<p>寒假看了一阵钢琴课程，抓出的地址如下（下完直接安装就行）：</p>
<ol>
<li>自带了。</li>
<li><a href="http://downloads.apple.com/pub/lessons/basic/2Z695-0042_Piano%20Lesson%202_Right%20Hand.pkg">http://downloads.apple.com/pub/lessons/basic/2Z695-0042_Piano%20Lesson%202_Right%20Hand.pkg</a></li>
<li><a href="http://downloads.apple.com/pub/lessons/basic/2Z695-0043_Piano%20Lesson%203_Left%20Hand.pkg">http://downloads.apple.com/pub/lessons/basic/2Z695-0043_Piano%20Lesson%203_Left%20Hand.pkg</a></li>
<li><a href="http://downloads.apple.com/pub/lessons/basic/2Z695-0044_Piano%20Lesson%204_Rhythm.pkg">http://downloads.apple.com/pub/lessons/basic/2Z695-0044_Piano%20Lesson%204_Rhythm.pkg</a></li>
<li><a href="http://downloads.apple.com/pub/lessons/basic/2Z695-0045_Piano%20Lesson%205_Sharps%20and%20Flats.pkg">http://downloads.apple.com/pub/lessons/basic/2Z695-0045_Piano%20Lesson%205_Sharps%20and%20Flats.pkg</a></li>
<li><a href="http://downloads.apple.com/pub/lessons/basic/2Z695-0046_Piano%20Lesson%206_Rhythmic%20Accents.pkg">http://downloads.apple.com/pub/lessons/basic/2Z695-0046_Piano%20Lesson%206_Rhythmic%20Accents.pkg</a></li>
<li><a href="http://downloads.apple.com/pub/lessons/basic/2Z695-0047_Piano%20Lesson%207_Major%20and%20Minor%20Chords.pkg">http://downloads.apple.com/pub/lessons/basic/2Z695-0047_Piano%20Lesson%207_Major%20and%20Minor%20Chords.pkg</a></li>
<li><a href="http://downloads.apple.com/pub/lessons/basic/2Z695-0048_Piano%20Lesson%208_Scales.pkg">http://downloads.apple.com/pub/lessons/basic/2Z695-0048_Piano%20Lesson%208_Scales.pkg</a></li>
<li><a href="http://downloads.apple.com/pub/lessons/basic/2Z695-0049_Piano%20Lesson%209_Playing%20the%20Blues.pkg">http://downloads.apple.com/pub/lessons/basic/2Z695-0049_Piano%20Lesson%209_Playing%20the%20Blues.pkg</a></li>
</ol>
<p>推荐每个人有时间都学学。很有意思。</p>
]]></content:encoded>
			<wfw:commentRss>http://xhacker.shiyiquan.cn/garageband-piano-lessons/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>First iOS App</title>
		<link>http://xhacker.shiyiquan.cn/first-ios-app/</link>
		<comments>http://xhacker.shiyiquan.cn/first-ios-app/#comments</comments>
		<pubDate>Thu, 21 Mar 2013 12:57:20 +0000</pubDate>
		<dc:creator><![CDATA[Xhacker]]></dc:creator>
				<category><![CDATA[你在做什么]]></category>
		<category><![CDATA[iOS]]></category>

		<guid isPermaLink="false">http://xhacker.shiyiquan.cn/?p=991</guid>
		<description><![CDATA[我和闫铮的作品。 敬请期待。]]></description>
				<content:encoded><![CDATA[<p>我和闫铮的作品。</p>
<p>敬请期待。</p>
]]></content:encoded>
			<wfw:commentRss>http://xhacker.shiyiquan.cn/first-ios-app/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>
