<?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>Tinyfool的Blog &#187; 开发</title>
	<atom:link href="http://tiny4.org/blog/category/dev/feed/" rel="self" type="application/rss+xml" />
	<link>http://tiny4.org/blog</link>
	<description>这就是我，Tinyfool，郝培强！身高180，体重240，标准的中年老胖子。 有妻有女，无房无车，现居上海，程序员。</description>
	<lastBuildDate>Wed, 04 Aug 2010 17:30:03 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0.1</generator>
		<item>
		<title>iPhone/iPad开发讲座 第二讲 iPhone用户界面设计 Keynote放出</title>
		<link>http://tiny4.org/blog/2010/07/iphone-ipad-design/</link>
		<comments>http://tiny4.org/blog/2010/07/iphone-ipad-design/#comments</comments>
		<pubDate>Thu, 01 Jul 2010 02:35:41 +0000</pubDate>
		<dc:creator>tinyfool</dc:creator>
				<category><![CDATA[Apple]]></category>
		<category><![CDATA[开发]]></category>
		<category><![CDATA[iPad]]></category>
		<category><![CDATA[iPhone]]></category>
		<category><![CDATA[讲座]]></category>
		<category><![CDATA[设计]]></category>

		<guid isPermaLink="false">http://tiny4.org/blog/?p=374</guid>
		<description><![CDATA[昨天下午，在公司做了第二讲，来了很多人，还有很多貌似是其他分公司的MM（漂亮的很多，都不认识……）。总共讲了2个多小时，很High，互动也还可以，感谢公司买的实物投影仪，虽然还玩的不熟练，但是用它做这类演示还是很酷的。 这次的keynote主要内容是汉化自苹果开发视频“iPhone User Interface Design”，略有修改。这个keynote其实不仅仅是讲界面具体该怎么设计，而是在讲苹果内部在用的设计方法论，按照什么样的逻辑开展设计流程。我第一次看到这个视频的时候很震撼，看过多次，苹果的设计方法论也许不是全世界最好的，但是在整个行业设计水平都相对低下的当下，这样的方法论，值得所有做苹果平台，和不做苹果平台的设计开发的人员，去了解，去学习，去体会。 点击浏览：iPhone/iPad开发讲座 第二讲 iPhone用户界面设计 公司每次分享活动都有很全面的录像资料保存，但是考虑到很多在内部分享提到的细节都不适于对公众公开，所以，我不准备放出在内部分享会的视频。 我考虑过单独给每个keynote录音，但是试了一下，确实是没有场景就很难high，很难流畅的发挥，且，这涉及到太大的工作量，最近工作非常繁忙，就不进行这方面的尝试了。 但是我准备给每个keynote配一个文本讲义，这一讲和上一讲的讲义的我会考虑在这周末做出来。 相关链接： iPhone/iPad开发讲座 第一讲 IOS开发简介 Keynote放出 iPhone/iPad开发讲座 第二讲 iPhone用户界面设计 Keynote放出 iPhone/iPad开发讲座 第三讲 基础UI和基础编程 Keynote放出 iPhone/iPad开发讲座 第四讲 网络通讯和Xml处理 Keynote放出 iPhone/iPad开发讲座 第五讲 定制视图和多点触摸 Keynote放出]]></description>
			<content:encoded><![CDATA[<p>昨天下午，在公司做了第二讲，来了很多人，还有很多貌似是其他分公司的MM（漂亮的很多，都不认识……）。总共讲了2个多小时，很High，互动也还可以，感谢公司买的实物投影仪，虽然还玩的不熟练，但是用它做这类演示还是很酷的。</p>
<p>这次的keynote主要内容是汉化自苹果开发视频“iPhone User Interface Design”，略有修改。这个keynote其实不仅仅是讲界面具体该怎么设计，而是在讲苹果内部在用的设计方法论，按照什么样的逻辑开展设计流程。我第一次看到这个视频的时候很震撼，看过多次，苹果的设计方法论也许不是全世界最好的，但是在整个行业设计水平都相对低下的当下，这样的方法论，值得所有做苹果平台，和不做苹果平台的设计开发的人员，去了解，去学习，去体会。</p>
<p>点击浏览：<a href="http://www.slideshare.net/tinyfool/iphone-4655243">iPhone/iPad开发讲座 第二讲 iPhone用户界面设计</a></p>
<p>公司每次分享活动都有很全面的录像资料保存，但是考虑到很多在内部分享提到的细节都不适于对公众公开，所以，我不准备放出在内部分享会的视频。</p>
<p>我考虑过单独给每个keynote录音，但是试了一下，确实是没有场景就很难high，很难流畅的发挥，且，这涉及到太大的工作量，最近工作非常繁忙，就不进行这方面的尝试了。</p>
<p>但是我准备给每个keynote配一个文本讲义，这一讲和上一讲的讲义的我会考虑在这周末做出来。</p>
<p>相关链接：<br />
<a href="http://tiny4.org/blog/2010/06/iphone-ipad-ios-development-01/">iPhone/iPad开发讲座 第一讲 IOS开发简介 Keynote放出</a><br />
<a href="http://tiny4.org/blog/2010/07/iphone-ipad-design/">iPhone/iPad开发讲座 第二讲 iPhone用户界面设计 Keynote放出</a><br />
<a href="http://tiny4.org/blog/2010/07/iphone-ipad-ui-keynote-base/">iPhone/iPad开发讲座 第三讲 基础UI和基础编程 Keynote放出</a><br />
<a href="http://tiny4.org/blog/2010/07/iphone-ipad-network-xml-http/">iPhone/iPad开发讲座 第四讲 网络通讯和Xml处理 Keynote放出</a><br />
<a href="http://tiny4.org/blog/2010/08/iphone-ipad-dev-custom-uiview-drawrect-mutil-touch/">iPhone/iPad开发讲座 第五讲 定制视图和多点触摸 Keynote放出</a></p>
]]></content:encoded>
			<wfw:commentRss>http://tiny4.org/blog/2010/07/iphone-ipad-design/feed/</wfw:commentRss>
		<slash:comments>14</slash:comments>
		</item>
		<item>
		<title>碗中的屎尿</title>
		<link>http://tiny4.org/blog/2010/06/shit-in-bow/</link>
		<comments>http://tiny4.org/blog/2010/06/shit-in-bow/#comments</comments>
		<pubDate>Sat, 26 Jun 2010 05:49:55 +0000</pubDate>
		<dc:creator>tinyfool</dc:creator>
				<category><![CDATA[开发]]></category>
		<category><![CDATA[文化]]></category>
		<category><![CDATA[空]]></category>
		<category><![CDATA[Apple]]></category>
		<category><![CDATA[google]]></category>

		<guid isPermaLink="false">http://tiny4.org/blog/?p=353</guid>
		<description><![CDATA[最早听这个故事貌似是我爸讲给我的，后来似乎在《笑林广记》中看到过，不过出处今天不细论了。 话说： 曾经有个地主四体不勤，五谷不分，从来不去看自己的土地，反正有下面人管着也不需要他自己操心。 某天不知道怎么心血来潮，他来到了自己的一块地前，佃户正在给蔬菜浇粪。 他大为惊异，质问佃户，“你们，为什么要往菜上面浇粪，这以后怎么吃？” 佃户答道，“东家，只有这样蔬菜才能长得大，才能好吃。” 他不信，要求佃户给他种的菜一点屎尿都不准浇。 几个月后，特供他的菜终于成熟了，他让下人做好，兴奋的准备吃。谁知道，他吃了一口就吐了出来。那些菜又小，又涩很难吃。 他叫来佃户，问道，“菜怎么这么难吃？真的是因为没有浇粪么？” 佃户，“东家，真的啊，没有浇粪的菜就是难吃的。” “哦，我明白了，去给我舀勺粪，放在碗里！” 另一个关于屎尿的故事，来自小时候看的《加里森敢死队》， 话说： 加里森敢死队的兄弟们，不知道怎么就缴获了一辆坦克，这当然是个宝贝，但是那是战区，弄不到柴油。 兄弟们想到了，酒精也可以用在柴油发动机里面，可是酒精也不好找。 好在他们有会酿酒的人，决定自己寻找土豆来酿酒。这可乐坏了其中一个哥们，他是大酒鬼，很久都没有喝到酒了，于是他很积极的帮助，建设蒸馏的设备（一大堆空油桶连在一起），收集土豆等等。 然而一切都做好了，酒却没有酿出来，原来缺少了酵母。于是会酿酒的兄弟说需要一些大便（里面有很多酵母）放进去，这样才能酿出来。 爱喝酒的哥们急了，说这样怎么能酿酒了，这样酿出来的东西我一定不喝。于是，后面的酿酒工作他也不参与了。 但是，最后酒还是如期酿好了，放到坦克油箱里面，发动机运转正常。大家喝了喝也觉得很好喝，但是爱喝酒的那个哥们就是不喝。大家也没有勉强他。 出发的日子，找不到那个哥们了，后来大家发现，他在放酒的地方睡着了，头天晚上他先是很小心的试了几口，然后是欲罢不能，喝的酩酊大醉。 好了，来点土的，这两个故事告诉我们什么呢？ 我想说，一切事物都有它的规律，也许听起来不那么卫生，那么心旷神怡，但是违背规律是没有办法作出事情的。 一者： 前些日子，一个朋友想做一个基于地理信息的SNS，跟我们一班人谈了几次，大家都只是泼凉水。其实他讲的一切都说的圆，比如有了地理信息，我们拼车的时候就不用在一堆上海的信息里面狂找跟自己住的近的人，而是一开始就会看到本小区的想拼车的人的信息。比如有了地理信息，同一个小区的人可以一起去团购，一起去学车，一起去郊游等等。 这些愿景都很美妙，道理也讲得通。但是这些讲得通的道理都无法说明一个问题，一开始，当交流的氛围没有形成之时，人们为什么会来到这个SNS；来到了这里如果发现一片荒凉，大家会不会留住，会不会继续来等等。其实，不管是什么样的SNS，什么样的社区，什么样的论坛都有一个运营的核心问题，如何开始第一推。 这个问题，从某些网站的成功经验来看也许是很肮脏的，比如淘宝，现在淘宝成为了很多人喜欢的东西，但是在当年，为了让淘宝有足够多的知名度，马云投放广告的方式是非常肮脏的，什么媒体都投，什么样的投放方式都做。人家是强制弹出一个广告条，引诱你点，淘宝是直接弹出一个网站首页来。不仅肮脏而且超级费钱，据我当年得到的数字，淘宝一年的推广费用就可以占到中国互联网当时一年广告总投放量的相当比例。再如，现在很火的人人网，在还叫校内的时候，陈一舟老师是用鸡腿换注册得到了大量学生用户的当年，陈一舟老师还没买到校内时，5Q跟校内竞争时，曾经用鸡腿去吸引学生注册，不过据说有人去5Q注册了50个帐号，得到了50个鸡腿以后，跑到校内去炫耀。，等等等等。（注释：这里引了肮脏的例子，是用来说，第一推之难，成本之高，而不是鼓励这种行为，倡导这种行为。如果你看到了这段，说，“哦，做网站就是要流氓啊”，那你还是别回复告诉我，我会伤心的。且，我觉得你就很像第一个故事里面的地主了，首先，网站不流氓也有可能成功，其次，大多数顿悟了去做流氓的，做的都太拙劣，连流氓都做不好，费钱，费力，害人，最后还是什么都没成。） 当年我见某投资人最大的收获就是他给我们讲，携程发展到现在，就仅拿在地铁发传单来看，发展一个新会员需要的成本是多少钱。当时很惊诧，然而一点一点数字算下去，你才知道真的需要那么多钱。 所以，很多事情，在我们空想的时候，他可能是自然就可以圆的，道理都对，但是实际的推动力，那些肮脏的，也许不肮脏的，昂贵的，也许不昂贵的推广的成本，很容易就被想当然的忽略掉了。 再者： 我看到过很多项目的兴衰，有经验的项目管理者，也许大词概念未必懂，但是项目的每个要点：进度，质量，人力安排都把握的很紧。然后，可能会慢慢的在项目中引入各种新鲜的技术思想，实践检验，好的留住。没有经验的项目管理者，总是自以为是，按照自己的逻辑先胡乱安排一通，然而，遇到了危机，开始抓耳挠腮，最后决定找到几个银弹，要么也单元测试一把，要么也来个敏捷。幻想有一把剑，叫做尚方，抽出来以后，神鬼妖狐，魑魅魍魉，老板员工，Bug进度，一切都安分守己，听其调遣。 做技术的人也往往是这样，玩数据库的，索引优化不懂，负载缓存不精。天天看着世界一流领先的网站是怎么发展的，人家NOSQL了，我也要NOSQL。可是你知道人家是日均几千万流量以后才开始玩NOSQL的么？你这日均10万不到瞎掺活什么？我从来不反对Buzzword，我喜欢云计算，我喜欢NOSQL，但是大喊着喜欢这些概念的家伙们，你们了解你们所说需要的东西的边界了么？什么样级别的负载，什么样的逻辑适合云计算？什么样的负载什么样的逻辑适合NOSQL？你们想过没有？ Google牛屄么？牛屄。但是Google玩的东西，别人玩不了么？不见得。有了Google file system，map reduce的论文后，业界都明白了，哦，原来就是这么东西啊。Hadoop不是有了么？开源都有实现了，不难吧。实话说，要是不论真实负载能力，计算机专业刚毕业的学生，也应该有能力按照论文的思路实现出类似Hadoop这样的东西。 那么我是在说Google一点不牛屄么？那当然不是，人家先走到那个流量，那个负载，那个存储压力，所以先想到这个方案，这就叫牛屄。人家公开了Google file system，map reduce的思路，Ok，我们可以超越Google了么？不能，你搭出个环境放了200T的数据，沾沾自喜，看我也是T级车了，先别美。人家已经在构建 P级存储了，人家在玩咖啡因了。人家甚至不是为了牛屄，人家搞这么大存储就是为了解决现实存在的问题。就算你再有深度，再有领悟能力，你没有站在那块土地上，你怎么知道那块土地的重力加速度是多少啊！想在思想上超越Google，好，你现在流量和存储上超过去，我觉得你就有戏了。 再说苹果，到了今时今日，如果你还以为这家公司最近股票升到全美第二的市值，只是他们的工业设计水平高，找了个设计过高档马桶的设计师，那你洗洗睡吧，别玩互联网了，别玩IT了，这边热，找个凉快地方待会儿吧。]]></description>
			<content:encoded><![CDATA[<p>最早听这个故事貌似是我爸讲给我的，后来似乎在《笑林广记》中看到过，不过出处今天不细论了。</p>
<p>话说：<br />
<blockquote>曾经有个地主四体不勤，五谷不分，从来不去看自己的土地，反正有下面人管着也不需要他自己操心。</p>
<p>某天不知道怎么心血来潮，他来到了自己的一块地前，佃户正在给蔬菜浇粪。</p>
<p>他大为惊异，质问佃户，“你们，为什么要往菜上面浇粪，这以后怎么吃？”</p>
<p>佃户答道，“东家，只有这样蔬菜才能长得大，才能好吃。”</p>
<p>他不信，要求佃户给他种的菜一点屎尿都不准浇。</p>
<p>几个月后，特供他的菜终于成熟了，他让下人做好，兴奋的准备吃。谁知道，他吃了一口就吐了出来。那些菜又小，又涩很难吃。</p>
<p>他叫来佃户，问道，“菜怎么这么难吃？真的是因为没有浇粪么？”</p>
<p>佃户，“东家，真的啊，没有浇粪的菜就是难吃的。”</p>
<p style="font-size:24px;color:red;">“哦，我明白了，去给我舀勺粪，放在碗里！”
</p>
</blockquote>
<p>另一个关于屎尿的故事，来自小时候看的《加里森敢死队》，</p>
<p>话说：</p>
<blockquote><p>加里森敢死队的兄弟们，不知道怎么就缴获了一辆坦克，这当然是个宝贝，但是那是战区，弄不到柴油。</p>
<p>兄弟们想到了，酒精也可以用在柴油发动机里面，可是酒精也不好找。</p>
<p>好在他们有会酿酒的人，决定自己寻找土豆来酿酒。这可乐坏了其中一个哥们，他是大酒鬼，很久都没有喝到酒了，于是他很积极的帮助，建设蒸馏的设备（一大堆空油桶连在一起），收集土豆等等。</p>
<p>然而一切都做好了，酒却没有酿出来，原来缺少了酵母。于是会酿酒的兄弟说需要一些大便（里面有很多酵母）放进去，这样才能酿出来。</p>
<p>爱喝酒的哥们急了，说这样怎么能酿酒了，这样酿出来的东西我一定不喝。于是，后面的酿酒工作他也不参与了。</p>
<p>但是，最后酒还是如期酿好了，放到坦克油箱里面，发动机运转正常。大家喝了喝也觉得很好喝，但是爱喝酒的那个哥们就是不喝。大家也没有勉强他。</p>
<p>出发的日子，找不到那个哥们了，后来大家发现，他在放酒的地方睡着了，头天晚上他先是很小心的试了几口，然后是欲罢不能，喝的酩酊大醉。
</p></blockquote>
<p>好了，来点土的，这两个故事告诉我们什么呢？</p>
<p>我想说，一切事物都有它的规律，也许听起来不那么卫生，那么心旷神怡，但是违背规律是没有办法作出事情的。</p>
<p>一者：</p>
<blockquote><p>前些日子，一个朋友想做一个基于地理信息的SNS，跟我们一班人谈了几次，大家都只是泼凉水。其实他讲的一切都说的圆，比如有了地理信息，我们拼车的时候就不用在一堆上海的信息里面狂找跟自己住的近的人，而是一开始就会看到本小区的想拼车的人的信息。比如有了地理信息，同一个小区的人可以一起去团购，一起去学车，一起去郊游等等。</p>
<p>这些愿景都很美妙，道理也讲得通。但是这些讲得通的道理都无法说明一个问题，一开始，当交流的氛围没有形成之时，人们为什么会来到这个SNS；来到了这里如果发现一片荒凉，大家会不会留住，会不会继续来等等。其实，不管是什么样的SNS，什么样的社区，什么样的论坛都有一个运营的核心问题，如何开始第一推。</p>
<p>这个问题，从某些网站的成功经验来看也许是很肮脏的，比如淘宝，现在淘宝成为了很多人喜欢的东西，但是在当年，为了让淘宝有足够多的知名度，马云投放广告的方式是非常肮脏的，什么媒体都投，什么样的投放方式都做。人家是强制弹出一个广告条，引诱你点，淘宝是直接弹出一个网站首页来。不仅肮脏而且超级费钱，据我当年得到的数字，淘宝一年的推广费用就可以占到中国互联网当时一年广告总投放量的相当比例。<del datetime="2010-06-30T14:02:44+00:00">再如，现在很火的人人网，在还叫校内的时候，陈一舟老师是用鸡腿换注册得到了大量学生用户的</del><ins datetime="2010-06-30T14:02:44+00:00">当年，陈一舟老师还没买到校内时，5Q跟校内竞争时，曾经用鸡腿去吸引学生注册，不过据说有人去5Q注册了50个帐号，得到了50个鸡腿以后，跑到校内去炫耀。</ins>，等等等等。<span style="color:red;">（注释：这里引了肮脏的例子，是用来说，第一推之难，成本之高，而不是鼓励这种行为，倡导这种行为。如果你看到了这段，说，“哦，做网站就是要流氓啊”，那你还是别回复告诉我，我会伤心的。且，我觉得你就很像第一个故事里面的地主了，首先，网站不流氓也有可能成功，其次，大多数顿悟了去做流氓的，做的都太拙劣，连流氓都做不好，费钱，费力，害人，最后还是什么都没成。）</span></p>
<p>当年我见某投资人最大的收获就是他给我们讲，携程发展到现在，就仅拿在地铁发传单来看，发展一个新会员需要的成本是多少钱。当时很惊诧，然而一点一点数字算下去，你才知道真的需要那么多钱。</p>
<p>所以，很多事情，在我们空想的时候，他可能是自然就可以圆的，道理都对，但是实际的推动力，那些肮脏的，也许不肮脏的，昂贵的，也许不昂贵的推广的成本，很容易就被想当然的忽略掉了。</p></blockquote>
<p>再者：</p>
<blockquote><p>我看到过很多项目的兴衰，有经验的项目管理者，也许大词概念未必懂，但是项目的每个要点：进度，质量，人力安排都把握的很紧。然后，可能会慢慢的在项目中引入各种新鲜的技术思想，实践检验，好的留住。没有经验的项目管理者，总是自以为是，按照自己的逻辑先胡乱安排一通，然而，遇到了危机，开始抓耳挠腮，最后决定找到几个银弹，要么也单元测试一把，要么也来个敏捷。幻想有一把剑，叫做尚方，抽出来以后，神鬼妖狐，魑魅魍魉，老板员工，Bug进度，一切都安分守己，听其调遣。</p>
<p>做技术的人也往往是这样，玩数据库的，索引优化不懂，负载缓存不精。天天看着世界一流领先的网站是怎么发展的，人家NOSQL了，我也要NOSQL。可是你知道人家是日均几千万流量以后才开始玩NOSQL的么？你这日均10万不到瞎掺活什么？我从来不反对Buzzword，我喜欢云计算，我喜欢NOSQL，但是大喊着喜欢这些概念的家伙们，你们了解你们所说需要的东西的边界了么？什么样级别的负载，什么样的逻辑适合云计算？什么样的负载什么样的逻辑适合NOSQL？你们想过没有？</p>
<p>Google牛屄么？牛屄。但是Google玩的东西，别人玩不了么？不见得。有了Google file system，map reduce的论文后，业界都明白了，哦，原来就是这么东西啊。Hadoop不是有了么？开源都有实现了，不难吧。实话说，要是不论真实负载能力，计算机专业刚毕业的学生，也应该有能力按照论文的思路实现出类似Hadoop这样的东西。</p>
<p>那么我是在说Google一点不牛屄么？那当然不是，人家先走到那个流量，那个负载，那个存储压力，所以先想到这个方案，这就叫牛屄。人家公开了Google file system，map reduce的思路，Ok，我们可以超越Google了么？不能，你搭出个环境放了200T的数据，沾沾自喜，看我也是T级车了，先别美。人家已经在构建 P级存储了，人家在玩咖啡因了。人家甚至不是为了牛屄，人家搞这么大存储就是为了解决现实存在的问题。就算你再有深度，再有领悟能力，你没有站在那块土地上，你怎么知道那块土地的重力加速度是多少啊！想在思想上超越Google，好，你现在流量和存储上超过去，我觉得你就有戏了。</p>
<p>再说苹果，到了今时今日，如果你还以为这家公司最近股票升到全美第二的市值，只是他们的工业设计水平高，找了个设计过高档马桶的设计师，那你洗洗睡吧，别玩互联网了，别玩IT了，这边热，找个凉快地方待会儿吧。
</p></blockquote>
]]></content:encoded>
			<wfw:commentRss>http://tiny4.org/blog/2010/06/shit-in-bow/feed/</wfw:commentRss>
		<slash:comments>29</slash:comments>
		</item>
		<item>
		<title>iPhone/iPad开发讲座 第一讲 IOS开发简介 Keynote放出</title>
		<link>http://tiny4.org/blog/2010/06/iphone-ipad-ios-development-01/</link>
		<comments>http://tiny4.org/blog/2010/06/iphone-ipad-ios-development-01/#comments</comments>
		<pubDate>Fri, 25 Jun 2010 15:58:34 +0000</pubDate>
		<dc:creator>tinyfool</dc:creator>
				<category><![CDATA[开发]]></category>
		<category><![CDATA[ios]]></category>
		<category><![CDATA[iPad]]></category>
		<category><![CDATA[iPhone]]></category>

		<guid isPermaLink="false">http://tiny4.org/blog/?p=343</guid>
		<description><![CDATA[盛大创新院有很多同事都有iPhone或者iPad，我刚到公司也有别的项目组的软件需要iPhone或者iPad客户端，找我咨询。所以我就有了在公司搞个iPhone/iPad开发讲座的念头。前些日子太忙，公司内场次也没安排开，今天终于可以搞了。 不过也算是一波三折，前两天我眼睛得了麦粒肿，第一天疼痛难忍几乎什么都干不了，下午去医院开了药。第二天在家里静养敷药等等，睡了一天。项目耽误了很多进度，讲座的Keynote也没时间做。所以第一讲的Keynote实际上是今天白天几个小时里面做出来的，刚刚全都做好就去讲，未免有点仓卒，内容有点凌乱。 讲的效果还好，大家也很热情，结果本来一小时的讲座多讲了快40分钟才结束，虽然耽误了一个很重要饭局，但是跟另一班同事吃了顿烤肉，喝冰凉的啤酒，也非常的快乐，而且讲座整个过程我都很High，讲完大汗淋漓，估计也有减肥效果，快哉快哉。 点击浏览：iPhone/iPad开发讲座 第一讲 Ios开发简介 内容大量参考了苹果的开发文档，以及斯坦福的iPhone开发开放课程CS193P，建议英语好且有志于iPhone开发的同学下载学习之。 下期准备介绍苹果推荐的iPhone应用设计方法。 相关链接： iPhone/iPad开发讲座 第一讲 IOS开发简介 Keynote放出 iPhone/iPad开发讲座 第二讲 iPhone用户界面设计 Keynote放出 iPhone/iPad开发讲座 第三讲 基础UI和基础编程 Keynote放出 iPhone/iPad开发讲座 第四讲 网络通讯和Xml处理 Keynote放出 iPhone/iPad开发讲座 第五讲 定制视图和多点触摸 Keynote放出]]></description>
			<content:encoded><![CDATA[<p>盛大创新院有很多同事都有iPhone或者iPad，我刚到公司也有别的项目组的软件需要iPhone或者iPad客户端，找我咨询。所以我就有了在公司搞个iPhone/iPad开发讲座的念头。前些日子太忙，公司内场次也没安排开，今天终于可以搞了。</p>
<p>不过也算是一波三折，前两天我眼睛得了麦粒肿，第一天疼痛难忍几乎什么都干不了，下午去医院开了药。第二天在家里静养敷药等等，睡了一天。项目耽误了很多进度，讲座的Keynote也没时间做。所以第一讲的Keynote实际上是今天白天几个小时里面做出来的，刚刚全都做好就去讲，未免有点仓卒，内容有点凌乱。</p>
<p>讲的效果还好，大家也很热情，结果本来一小时的讲座多讲了快40分钟才结束，虽然耽误了一个很重要饭局，但是跟另一班同事吃了顿烤肉，喝冰凉的啤酒，也非常的快乐，而且讲座整个过程我都很High，讲完大汗淋漓，估计也有减肥效果，快哉快哉。</p>
<p>点击浏览：<a href="http://www.slideshare.net/tinyfool/iphoneipad-ios" title="iPhone/iPad开发讲座  第一讲 Ios开发简介">iPhone/iPad开发讲座  第一讲 Ios开发简介</a></p>
<p>内容大量参考了苹果的开发文档，以及斯坦福的iPhone开发开放课程CS193P，建议英语好且有志于iPhone开发的同学下载学习之。</p>
<p>下期准备介绍苹果推荐的iPhone应用设计方法。</p>
<p>相关链接：<br />
<a href="http://tiny4.org/blog/2010/06/iphone-ipad-ios-development-01/">iPhone/iPad开发讲座 第一讲 IOS开发简介 Keynote放出</a><br />
<a href="http://tiny4.org/blog/2010/07/iphone-ipad-design/">iPhone/iPad开发讲座 第二讲 iPhone用户界面设计 Keynote放出</a><br />
<a href="http://tiny4.org/blog/2010/07/iphone-ipad-ui-keynote-base/">iPhone/iPad开发讲座 第三讲 基础UI和基础编程 Keynote放出</a><br />
<a href="http://tiny4.org/blog/2010/07/iphone-ipad-network-xml-http/">iPhone/iPad开发讲座 第四讲 网络通讯和Xml处理 Keynote放出</a><br />
<a href="http://tiny4.org/blog/2010/08/iphone-ipad-dev-custom-uiview-drawrect-mutil-touch/">iPhone/iPad开发讲座 第五讲 定制视图和多点触摸 Keynote放出</a></p>
]]></content:encoded>
			<wfw:commentRss>http://tiny4.org/blog/2010/06/iphone-ipad-ios-development-01/feed/</wfw:commentRss>
		<slash:comments>11</slash:comments>
		</item>
		<item>
		<title>如何使用Objective-C获取iPhone/iPad内全部字体的Fontfamily和FontName？</title>
		<link>http://tiny4.org/blog/2010/06/fontfamily-name-fontname-ipad-iphone/</link>
		<comments>http://tiny4.org/blog/2010/06/fontfamily-name-fontname-ipad-iphone/#comments</comments>
		<pubDate>Thu, 24 Jun 2010 14:03:28 +0000</pubDate>
		<dc:creator>tinyfool</dc:creator>
				<category><![CDATA[代码样例]]></category>
		<category><![CDATA[开发]]></category>
		<category><![CDATA[code]]></category>
		<category><![CDATA[font]]></category>
		<category><![CDATA[代码]]></category>
		<category><![CDATA[字体]]></category>

		<guid isPermaLink="false">http://tiny4.org/blog/?p=336</guid>
		<description><![CDATA[How to use Objective-C get all fontfamily name and fontname in an iPad or iPhone? 代码很简单，效果就是把全部字体家族和字体名都输出到调试窗口。 NSArray* familys = [UIFont familyNames]; for (int i = 0; i&#60;[familys count]; i++) { NSString* family = [familys objectAtIndex:i]; NSLog(@&#34;rnrnFontfamily:%@rn=====&#34;,family); NSArray* fonts = [UIFont fontNamesForFamilyName:family]; for (int j = 0; j&#60;[fonts count]; j++) { NSLog(@&#34;%@&#34;,[fonts objectAtIndex:j]); } }]]></description>
			<content:encoded><![CDATA[            <script type="text/javascript" src="http://tiny4.org/blog/wp-content/plugins/wordpress-code-snippet/scripts/shBrushCpp.js"></script>
<p>How to use Objective-C get all fontfamily name  and fontname in an iPad or iPhone?</p>
<p>代码很简单，效果就是把全部字体家族和字体名都输出到调试窗口。<pre class="brush: cpp">	NSArray* familys = [UIFont familyNames];
	
	for (int i = 0; i&lt;[familys count]; i++) {
		
		NSString* family = [familys objectAtIndex:i];
		NSLog(@&quot;rnrnFontfamily:%@rn=====&quot;,family);
	
		NSArray* fonts = [UIFont fontNamesForFamilyName:family];
	
		for (int j = 0; j&lt;[fonts count]; j++) {
		
			NSLog(@&quot;%@&quot;,[fonts objectAtIndex:j]);
		}
	}
</pre></p>
]]></content:encoded>
			<wfw:commentRss>http://tiny4.org/blog/2010/06/fontfamily-name-fontname-ipad-iphone/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>WWDC 2010的一些数字、细节以及我的感受</title>
		<link>http://tiny4.org/blog/2010/06/wwdc-2010-ipad-iphone-pdf/</link>
		<comments>http://tiny4.org/blog/2010/06/wwdc-2010-ipad-iphone-pdf/#comments</comments>
		<pubDate>Thu, 17 Jun 2010 16:13:29 +0000</pubDate>
		<dc:creator>tinyfool</dc:creator>
				<category><![CDATA[Apple]]></category>
		<category><![CDATA[开发]]></category>
		<category><![CDATA[空]]></category>
		<category><![CDATA[iPad]]></category>
		<category><![CDATA[iPhone]]></category>

		<guid isPermaLink="false">http://tiny4.org/blog/?p=311</guid>
		<description><![CDATA[WWDC 2010开幕那晚，我一夜无眠，但没有时间看任何直播，我正在赶一个项目的进度。一天后，我从podcast下了那夜的Keynote，然后隔了几天，项目不那么紧张了，我才有时间看。有很多数字让我很有感受，这些日子跟一些朋友、跟一些同事零星的聊了一下，现在也分享给大家，更重要的是给自己记录一下，免得忘了。 一、当然是在59天内卖出了200万台iPad，平均3秒钟卖出一台。这个数字非常惊人，要知道很多号称流行一时的手机总的出货量也就是百万左右。一个月前，当苹果公布28天卖出了100万台iPad的时候，有人称赞，有人怀疑，有人认为这一旺盛的势头会很快降低。现在数字再次证明了一切。说起来，我的《iPad革命：开发者的机遇和挑战》几乎是最早的正面表扬iPad的文章，可惜因为投稿的原因发布到我自己的Blog的时间比较晚。iPad发布以后最好玩的一个现象是，一开始没见到这个东西的真身时，各种猜测，各种批评满天飞，等到各大媒体的记者们、Blogger们拿到手了以后，每个人都是在表扬，呵呵。 二、短短的两个月的时间，App store里面已经有了8500个iPad程序，这些程序被下载了3500万次，按照200万iPad计算，平均一个iPad上安装了17个程序。说到这个数字的时候，Jobs老师连说了两遍“That is a great number.” 这组数字非常值得玩味，我手中没有iPhone的平均程序数。但我怀疑，这个数字可能并不高，甚至可能低于17或者仅仅是相当。因为我们知道很多人买了iPhone仅仅是为了打电话，也就是说，iPhone有一个杀手应用，打电话。而iPad不同，它没有任何的杀手应用，每个买了iPad的人都应该买点（也许花钱，也许免费）什么app，要不然这个iPad看起来就太傻了。 几个月前，huoju同学的那个号称是中国前10个iPad之一的iPad到达上海的时候，我们公司一群同事正在钱柜K歌，iPad到了，开封以后，大家先是很兴奋的围观，然后是讨论，最后是把它弃置一旁，原因很简单，没有任何应用和数据的iPad看起来好傻，毫无用处。 另外一个值得玩味的点在于，35,000,000/8500约等于4118，也就是说平均每个应用有4118次下载。这个平台简直就是狼少肉多的状态，不赶快杀过来太傻了。以上的分析我跟几个朋友讲过后，他们第一反应就是本来要先做iPhone版的决定先做iPad版；本来不想马上杀入苹果平台的，也准备先做个自己软件的iPad版本。 还有一点，就是从我得到的反馈来看，虽然iPad可以完美支持iPhone程序（如果你觉得不完美，我没话说），但是大家很少会喜欢在iPad上面安装iPhone程序。我不知道Jobs老师之前是否想到了这点。那天聊到这个问题的时候，我有朋友说，那未来苹果会不会直接关闭这个支持呢？我认为不会，虽然大家喜欢在iPad上面用iPad应用，但是遇到一些特殊场合，以及相应iPad版本确实还没有推出的时候，大家也会用iPhone版本的。例如，也许即使没有iPad版本的植物大战僵尸，你也不会在iPad上面去玩iPhone版本。但是网银程序呢？支付程序呢？这些东西也许你更在意的是方便，而不是体验。 这里多说一点，Jobs不是神，苹果也不是神。在苹果一个最牛的设计方法的Keynote里面，大大夸奖了某公司的生化危机类游戏，称里面的软操纵杆的设计很好，溢美之词铺天盖地，但是，从我得到的反馈来看，大家喜欢的游戏，往往都是有鲜明iPad/iPhone操作风格的游戏。简言之就是，看到什么点什么的游戏。我的女儿才1岁半，但是看到我们玩iPad版植物大战僵尸的时候，她会主动去点那些飘动的小太阳，原因就是那东西太直观了，完全不用教育，太好用了，完全不费脑子。这样的东西，在iPad/iPhone上最有生命力。 另外值得讨论的例子是FieldRunner游戏，此游戏很早就有iPhone版本，我玩过多次完全不感冒。但是现在有了iPad版本，什么都没有改变，操作方式没变，界面没变，甚至地图都没有变，分辨率提高以后，我爱不释手。而且在公司掀起了我们整个一个小组的游戏沉迷高潮，甚至有我们公司某大牛，业界著名的技术高手，每天中午吃饭的时候，都捧着iPad玩FieldRunner游戏，好吃的都被我们抢走了都不知道。 三、65天内，电子书下载了500万次，平均一个iPad上2.5本书，按照在iPad上面有书的美国前五大出版社的统计，iBookStore的市场份额已经达到了整个电子书市场份额的22%。 虽然统计方法也许不是最公允的，但是仅仅两个多月22%的市场份额显然是好的不得了的成绩。 我更关注的是这次iBooks里加入了PDF的支持。这家公司以前是不懂得怎么解析PDF么？显然不是。 其实iPad出现之前，我就考察过很多可以读PDF的iPhone电子书阅读器（很严肃的考察，很多都是我真金白银买的，有些是免费的），效果都完全不可接受。原因很简单，流行的PDF文件多半都是用打印方式生成，是基于排版格式的，不是流式文本。所以，内容很难重排，如果保持排版样式，显示全部则很难看清，显示局部则很难阅读全貌。基本上可以说，这类软件从技术上是可行的，从实践上是毫无意义的（当然那东西确实可以读，只是实在是一种折磨）。 而iPad的分辨率下，想得到完美的PDF显示效果那实在是太容易了。而熟悉Mac开发的同学们，应该知道Mac平台的PDF支持是相当的好，有现成的API可以解析生成等等，iPad的SDK（也就是IOS 3.2 SDK）里面也包含了支持PDF的各种API。那么苹果为什么不在iPad发布伊始就在iBooks里面支持PDF呢？ 基于我对Jobs老师和这家公司的认识，我认为这是因为，他们在认为一个东西可以完美实现之前，是绝对不会拿出来的，比如复制粘贴，比如多任务（这个我未来会有专门的技术文讨论），比如这次的PDF。 他们在等的应该就是iPhone 4，在等iPhone 4的Retina屏幕，在这个分辨率下，屏幕虽小，但是PDF是可以完美显示的。 我认为，iBooks支持PDF，iBooks支持iPhone，iPhone推出Retina屏幕，这三件事情的时间点太过巧合，绝对是有紧密关联的。 Retina屏幕绝不是某些人想象的，刚好有了，就刚好被放到了iPhone里面，耍耍酷这么简单。这就跟iPhone的Cpu一样，iPhone 3G是无法支持新的多任务功能的，那个功能必须有Samsung S5PC100 ARM Cortex-A8（iPhone 3GS）或者苹果A4才能支持。所以，你可以想见，在3GS切换到A8的时候，也许刚刚被在IOS 4中发布的多任务功能就已经在策划或者实现中了。 四、每周有15000个程序被提交到AppStore，包含30种语言，95%的程序可以在7天内审核过。剩下的5%，有三种最大的可能性： 程序的功能和开发者描述的不一致，会被拒绝。 使用了私有的API，苹果不允许开发者使用私有API，因为升级系统的时候，私有API可能会失效，程序崩溃，用户会很不满意。（当然有时候开发者也是不得已为之，比如某功能苹果的程序可以实现，为什么我们就不能实现。有些问题上，最后苹果和开发者达成了妥协，私有API可以调用，未来可能会变成公开API，例如UIGetScreenImage();） 程序会崩溃，这当然会被拒绝。 这一段显然是Jobs老师在自吹自擂，当然从我个人的经历以及我收到的一些反馈来看，AppStore审核效率确实是有大幅的提高。但是遇到了一些事件的时候，还是会大幅下降，比如iPad发布那段时间，所有iPhone程序的审核貌似都放慢了。 这场keynote显然还有更耀眼的明星iPhone 4，就是这两天的消息，预售第一天就突破了60万订货量，看来一个新的销售神话要诞生了，：）。]]></description>
			<content:encoded><![CDATA[            <script type="text/javascript" src="http://tiny4.org/blog/wp-content/plugins/wordpress-code-snippet/scripts/shBrushCpp.js"></script>
<p>WWDC 2010开幕那晚，我一夜无眠，但没有时间看任何直播，我正在赶一个项目的进度。一天后，我从podcast下了那夜的Keynote，然后隔了几天，项目不那么紧张了，我才有时间看。有很多数字让我很有感受，这些日子跟一些朋友、跟一些同事零星的聊了一下，现在也分享给大家，更重要的是给自己记录一下，免得忘了。</p>
<p><strong>一、</strong>当然是在59天内卖出了200万台iPad，平均3秒钟卖出一台。这个数字非常惊人，要知道很多号称流行一时的手机总的出货量也就是百万左右。一个月前，当苹果公布28天卖出了100万台iPad的时候，有人称赞，有人怀疑，有人认为这一旺盛的势头会很快降低。现在数字再次证明了一切。说起来，我的《<a href="http://tiny4.org/blog/2010/05/ipad-revolution-developer/">iPad革命：开发者的机遇和挑战</a>》几乎是最早的正面表扬iPad的文章，可惜因为投稿的原因发布到我自己的Blog的时间比较晚。iPad发布以后最好玩的一个现象是，一开始没见到这个东西的真身时，各种猜测，各种批评满天飞，等到各大媒体的记者们、Blogger们拿到手了以后，每个人都是在表扬，呵呵。</p>
<p><strong>二、</strong>短短的两个月的时间，App store里面已经有了8500个iPad程序，这些程序被下载了3500万次，按照200万iPad计算，平均一个iPad上安装了17个程序。说到这个数字的时候，Jobs老师连说了两遍“That is a great number.” </p>
<p>这组数字非常值得玩味，我手中没有iPhone的平均程序数。但我怀疑，这个数字可能并不高，甚至可能低于17或者仅仅是相当。因为我们知道很多人买了iPhone仅仅是为了打电话，也就是说，iPhone有一个杀手应用，打电话。而iPad不同，它没有任何的杀手应用，每个买了iPad的人都应该买点（也许花钱，也许免费）什么app，要不然这个iPad看起来就太傻了。</p>
<p>几个月前，<a href="http://en.virushuo.com/">huoju</a>同学的那个号称是中国前10个iPad之一的iPad到达上海的时候，我们公司一群同事正在钱柜K歌，iPad到了，开封以后，大家先是很兴奋的围观，然后是讨论，最后是把它弃置一旁，原因很简单，没有任何应用和数据的iPad看起来好傻，毫无用处。</p>
<p>另外一个值得玩味的点在于，35,000,000/8500约等于4118，也就是说平均每个应用有4118次下载。这个平台简直就是狼少肉多的状态，不赶快杀过来太傻了。以上的分析我跟几个朋友讲过后，他们第一反应就是本来要先做iPhone版的决定先做iPad版；本来不想马上杀入苹果平台的，也准备先做个自己软件的iPad版本。</p>
<p>还有一点，就是从我得到的反馈来看，虽然iPad可以完美支持iPhone程序（如果你觉得不完美，我没话说），但是大家很少会喜欢在iPad上面安装iPhone程序。我不知道Jobs老师之前是否想到了这点。那天聊到这个问题的时候，我有朋友说，那未来苹果会不会直接关闭这个支持呢？我认为不会，虽然大家喜欢在iPad上面用iPad应用，但是遇到一些特殊场合，以及相应iPad版本确实还没有推出的时候，大家也会用iPhone版本的。例如，也许即使没有iPad版本的植物大战僵尸，你也不会在iPad上面去玩iPhone版本。但是网银程序呢？支付程序呢？这些东西也许你更在意的是方便，而不是体验。</p>
<p>这里多说一点，Jobs不是神，苹果也不是神。在苹果一个最牛的设计方法的Keynote里面，大大夸奖了某公司的生化危机类游戏，称里面的软操纵杆的设计很好，溢美之词铺天盖地，但是，从我得到的反馈来看，大家喜欢的游戏，往往都是有鲜明iPad/iPhone操作风格的游戏。简言之就是，看到什么点什么的游戏。我的女儿才1岁半，但是看到我们玩iPad版植物大战僵尸的时候，她会主动去点那些飘动的小太阳，原因就是那东西太直观了，完全不用教育，太好用了，完全不费脑子。这样的东西，在iPad/iPhone上最有生命力。</p>
<p>另外值得讨论的例子是FieldRunner游戏，此游戏很早就有iPhone版本，我玩过多次完全不感冒。但是现在有了iPad版本，什么都没有改变，操作方式没变，界面没变，甚至地图都没有变，分辨率提高以后，我爱不释手。而且在公司掀起了我们整个一个小组的游戏沉迷高潮，甚至有我们公司某大牛，业界著名的技术高手，每天中午吃饭的时候，都捧着iPad玩FieldRunner游戏，好吃的都被我们抢走了都不知道。</p>
<p><strong>三、</strong>65天内，电子书下载了500万次，平均一个iPad上2.5本书，按照在iPad上面有书的美国前五大出版社的统计，iBookStore的市场份额已经达到了整个电子书市场份额的22%。</p>
<p>虽然统计方法也许不是最公允的，但是仅仅两个多月22%的市场份额显然是好的不得了的成绩。</p>
<p>我更关注的是这次iBooks里加入了PDF的支持。这家公司以前是不懂得怎么解析PDF么？显然不是。</p>
<p>其实iPad出现之前，我就考察过很多可以读PDF的iPhone电子书阅读器（很严肃的考察，很多都是我真金白银买的，有些是免费的），效果都完全不可接受。原因很简单，流行的PDF文件多半都是用打印方式生成，是基于排版格式的，不是流式文本。所以，内容很难重排，如果保持排版样式，显示全部则很难看清，显示局部则很难阅读全貌。基本上可以说，这类软件从技术上是可行的，从实践上是毫无意义的（当然那东西确实可以读，只是实在是一种折磨）。</p>
<p>而iPad的分辨率下，想得到完美的PDF显示效果那实在是太容易了。而熟悉Mac开发的同学们，应该知道Mac平台的PDF支持是相当的好，有现成的API可以解析生成等等，iPad的SDK（也就是IOS 3.2 SDK）里面也包含了支持PDF的各种API。那么苹果为什么不在iPad发布伊始就在iBooks里面支持PDF呢？</p>
<p>基于我对Jobs老师和这家公司的认识，我认为这是因为，他们在认为一个东西可以完美实现之前，是绝对不会拿出来的，比如复制粘贴，比如多任务（这个我未来会有专门的技术文讨论），比如这次的PDF。</p>
<p>他们在等的应该就是iPhone 4，在等iPhone 4的Retina屏幕，在这个分辨率下，屏幕虽小，但是PDF是可以完美显示的。</p>
<p>我认为，iBooks支持PDF，iBooks支持iPhone，iPhone推出Retina屏幕，这三件事情的时间点太过巧合，绝对是有紧密关联的。</p>
<p>Retina屏幕绝不是某些人想象的，刚好有了，就刚好被放到了iPhone里面，耍耍酷这么简单。这就跟iPhone的Cpu一样，iPhone 3G是无法支持新的多任务功能的，那个功能必须有Samsung S5PC100 ARM Cortex-A8（iPhone 3GS）或者苹果A4才能支持。所以，你可以想见，在3GS切换到A8的时候，也许刚刚被在IOS 4中发布的多任务功能就已经在策划或者实现中了。</p>
<p>四、每周有15000个程序被提交到AppStore，包含30种语言，95%的程序可以在7天内审核过。剩下的5%，有三种最大的可能性：</p>
<ol>
<li>程序的功能和开发者描述的不一致，会被拒绝。</li>
<li>
使用了私有的API，苹果不允许开发者使用私有API，因为升级系统的时候，私有API可能会失效，程序崩溃，用户会很不满意。（当然有时候开发者也是不得已为之，比如某功能苹果的程序可以实现，为什么我们就不能实现。有些问题上，最后苹果和开发者达成了妥协，私有API可以调用，未来可能会变成公开API，例如UIGetScreenImage();）</li>
<li>程序会崩溃，这当然会被拒绝。</li>
</ol>
<p>这一段显然是Jobs老师在自吹自擂，当然从我个人的经历以及我收到的一些反馈来看，AppStore审核效率确实是有大幅的提高。但是遇到了一些事件的时候，还是会大幅下降，比如iPad发布那段时间，所有iPhone程序的审核貌似都放慢了。</p>
<p>这场keynote显然还有更耀眼的明星iPhone 4，就是这两天的消息，预售第一天就突破了60万订货量，看来一个新的销售神话要诞生了，：）。</p>
]]></content:encoded>
			<wfw:commentRss>http://tiny4.org/blog/2010/06/wwdc-2010-ipad-iphone-pdf/feed/</wfw:commentRss>
		<slash:comments>31</slash:comments>
		</item>
		<item>
		<title>关于腾讯推出QQ for android软件事件的短评</title>
		<link>http://tiny4.org/blog/2010/03/qq-android-iphone/</link>
		<comments>http://tiny4.org/blog/2010/03/qq-android-iphone/#comments</comments>
		<pubDate>Wed, 31 Mar 2010 02:54:43 +0000</pubDate>
		<dc:creator>tinyfool</dc:creator>
				<category><![CDATA[开发]]></category>
		<category><![CDATA[android]]></category>
		<category><![CDATA[iPhone]]></category>
		<category><![CDATA[qq]]></category>

		<guid isPermaLink="false">http://tiny4.org/blog/?p=158</guid>
		<description><![CDATA[这两天，腾讯推出了QQ for android。和QQ for iPhone的好评如潮不同，这款软件受到了很多批评，仅仅在Twitter上面我就看到了很多： @LifeNT：怎么看都觉得腾讯的android qq很山寨！ @tonyq0802：原来官方那个的android的qq是固定在480*360分辨率的 据说milestone登录的时候那个qq企鹅就被拉成长企鹅了 @Beichen：QQ for Android 体验好差，登录界面不能横屏。 @siyet：当我用milestone进入qq 看到那张被生生拉长的小企鹅的时候 我的脸也长了~~~ 小公司不针对两个分辨率做优化也罢了 可是腾讯。。。丫的 我就不一一罗列了，大多数都是批评在milestone上面的分辨率问题。 我在twitter上面做了一些短评： 对Android QQ的抱怨颇多，证明了我说过的话，Android兼容性是个大问题。QQ不是游戏，但也有分辨率不匹配带来的用户批评了，而出问题的机器，开发者可能听说都没听说过。所以开发其实也更费钱，光买各种测试机就不少钱。 上次去豆瓣，他们经历也类似，iphone买了一个就够了，但给android开发者买的手机已经显得不够了，不仅不如新的好玩，而且不多买几个测试机的话，谁知道以后会遇到什么兼容性问题。 给qq做多分辨率适配多半不难，但是有两个问题，需要多少精力才能了解市面上所有的android，多少钱把测试机都买全，多少精力去测试。开发成本就这么上来了。 兼容性的另外一个问题是向前兼容，就算QQ现在做个完美的兼容所有市面上android手机的app，这时候横空出世一个完全不同的型号，QQ的开发者还是会被骂一顿。当然问题总能解决，一切最后都变成了开发成本。 QQ是家上市公司，这点开发成本不算什么。其实我也不太care腾讯的事情，但是，作为第三方开发者，这个案例是可以参照的。第三方开发者如果想以android为基础平台，难度，复杂度，兼容性，开发成本，要综合考虑。 如我前面一个文章的观点，我没有说android就纯粹是个垃圾。但是你需要了解里面的陷阱和困难。我自己的程序也会出android版本，但是至少在现在绝对不是我的重心所在，未来这个平台在兼容性和渠道上进步了，才会是，这个时候更多观望是更安全的。 其中，@quakelee和@virushuo同学提出有4sq这样做的很好的客户端。 @lordhong同学说： android 自己有套处理多种屏幕的机制，虽然繁琐了点。但如果用相对布局来出来，大部分情况下界面还是过得去的。腾讯的android程序员要么不懂，要么就是太懒。 @hanlei同学说，分辨率不那么重要。 我觉得： 有处理多种屏幕的机制，也是开发成本。iphone和ipad也是有机制的，而且很平滑，而且是可以挣到不同的钱的，那个我不批评，因为人家是两款产品。]]></description>
			<content:encoded><![CDATA[            <script type="text/javascript" src="http://tiny4.org/blog/wp-content/plugins/wordpress-code-snippet/scripts/shBrushCpp.js"></script>
<p>这两天，腾讯推出了<a href="http://im.qq.com/qq/android/index.shtml">QQ for android</a>。和QQ for iPhone的好评如潮不同，这款软件受到了很多批评，仅仅在Twitter上面我就看到了很多：</p>
<blockquote><p>@<a href="http://twitter.com/LifeNT/">LifeNT</a>：怎么看都觉得腾讯的android qq很山寨！</p>
<p>@<a href="http://twitter.com/tonyq0802/">tonyq0802</a>：原来官方那个的android的qq是固定在480*360分辨率的 据说milestone登录的时候那个qq企鹅就被拉成长企鹅了</p>
<p>@<a href="http://twitter.com/Beichen/">Beichen</a>：QQ for Android 体验好差，登录界面不能横屏。</p>
<p>@<a href="http://twitter.com/siyet/">siyet</a>：当我用milestone进入qq 看到那张被生生拉长的小企鹅的时候 我的脸也长了~~~ 小公司不针对两个分辨率做优化也罢了 可是腾讯。。。丫的
</p></blockquote>
<p>我就不一一罗列了，大多数都是批评在milestone上面的分辨率问题。</p>
<p>我在twitter上面做了一些短评：</p>
<blockquote><p>对Android QQ的抱怨颇多，证明了<a href="http://tiny4.org/blog/2010/03/iphone-developer/">我说过的话</a>，Android兼容性是个大问题。QQ不是游戏，但也有分辨率不匹配带来的用户批评了，而出问题的机器，开发者可能听说都没听说过。所以开发其实也更费钱，光买各种测试机就不少钱。 </p>
<p>上次去豆瓣，他们经历也类似，iphone买了一个就够了，但给android开发者买的手机已经显得不够了，不仅不如新的好玩，而且不多买几个测试机的话，谁知道以后会遇到什么兼容性问题。 </p>
<p>给qq做多分辨率适配多半不难，但是有两个问题，需要多少精力才能了解市面上所有的android，多少钱把测试机都买全，多少精力去测试。开发成本就这么上来了。</p>
<p>兼容性的另外一个问题是向前兼容，就算QQ现在做个完美的兼容所有市面上android手机的app，这时候横空出世一个完全不同的型号，QQ的开发者还是会被骂一顿。当然问题总能解决，一切最后都变成了开发成本。</p>
<p>QQ是家上市公司，这点开发成本不算什么。其实我也不太care腾讯的事情，但是，作为第三方开发者，这个案例是可以参照的。第三方开发者如果想以android为基础平台，难度，复杂度，兼容性，开发成本，要综合考虑。</p>
<p>如我前面一个文章的观点，我没有说android就纯粹是个垃圾。但是你需要了解里面的陷阱和困难。我自己的程序也会出android版本，但是至少在现在绝对不是我的重心所在，未来这个平台在兼容性和渠道上进步了，才会是，这个时候更多观望是更安全的。
</p></blockquote>
<p>其中，@<a href="http://twitter.com/quakelee">quakelee</a>和@<a href="http://twitter.com/virushuo">virushuo</a>同学提出有4sq这样做的很好的客户端。</p>
<p>@<a href="https://twitter.com/lordhong">lordhong</a>同学说：</p>
<blockquote><p>android 自己有套处理多种屏幕的机制，虽然繁琐了点。但如果用相对布局来出来，大部分情况下界面还是过得去的。腾讯的android程序员要么不懂，要么就是太懒。
</p></blockquote>
<p>@<a href="http://twitter.com/hanlei">hanlei</a>同学说，分辨率不那么重要。</p>
<p>我觉得：</p>
<blockquote><p>有处理多种屏幕的机制，也是开发成本。iphone和ipad也是有机制的，而且很平滑，而且是可以挣到不同的钱的，那个我不批评，因为人家是两款产品。</p></blockquote>
]]></content:encoded>
			<wfw:commentRss>http://tiny4.org/blog/2010/03/qq-android-iphone/feed/</wfw:commentRss>
		<slash:comments>9</slash:comments>
		</item>
		<item>
		<title>[教程]如何使用iPhone日历控件</title>
		<link>http://tiny4.org/blog/2010/03/tutorial-how-to-use-iphone-calendar-control/</link>
		<comments>http://tiny4.org/blog/2010/03/tutorial-how-to-use-iphone-calendar-control/#comments</comments>
		<pubDate>Fri, 12 Mar 2010 15:09:44 +0000</pubDate>
		<dc:creator>tinyfool</dc:creator>
				<category><![CDATA[开发]]></category>
		<category><![CDATA[iPhone]]></category>
		<category><![CDATA[开源]]></category>

		<guid isPermaLink="false">http://tiny4.org/blog/?p=125</guid>
		<description><![CDATA[iPhone日历控件是由我贡献的，一个开源的类库，使用它你可以在你的iPhone软件里面插入一个日历视图。使用起来非常简单。 下载代码 如果你知道如何安装SVN，或者你的电脑已经安装了SVN，那么你可以简单的使用SVN来下载代码，在终端键入下列命令： svn checkout http://iphonecal.googlecode.com/svn/trunk/ iphonecal-read-only 如果，你可以从以下两个链接下载代码： http://iphonecal.googlecode.com/svn/trunk/TdCalendarView.h http://iphonecal.googlecode.com/svn/trunk/TdCalendarView.m 创建一个iPhone应用程序项目 下载代码后，你需要创建一个iPhone应用程序项目。打开XCode，点击菜单&#8221;File&#8221;->&#8221;New Project&#8230;&#8221;，在打开的对话框中，选择View-based Application。 把项目命名为TestiPhoneCal（或者其他什么名字，无所谓）： 创建项目以后，点击菜单&#8221;Project&#8221;->&#8221;Add to project&#8230;&#8221;，选择你下载的文件，注意选中&#8221;Copy items into destination group&#8217;s folder&#8221;选项。 设置view类 打开你的nib文件。 选择你要作为日历的view，把它的类设置为TdCalendarView。 好，现在运行你的程序，你就可以看到你的日历了。 如果你按照这个教程操作，遇到了困难，也可以使用我提供的Demo Code，作为自己代码的模版。下载地址：http://iphonecal.googlecode.com/files/TestiPhoneCal.zip English Version]]></description>
			<content:encoded><![CDATA[            <script type="text/javascript" src="http://tiny4.org/blog/wp-content/plugins/wordpress-code-snippet/scripts/shBrushCpp.js"></script>
<p><a href="http://code.google.com/p/iphonecal">iPhone日历控件</a>是由我贡献的，一个开源的类库，使用它你可以在你的iPhone软件里面插入一个日历视图。使用起来非常简单。</p>
<h3>下载代码</h3>
<p>如果你知道如何安装SVN，或者你的电脑已经安装了SVN，那么你可以简单的使用SVN来下载代码，在终端键入下列命令：</p>
<p>svn checkout http://iphonecal.googlecode.com/svn/trunk/ iphonecal-read-only</p>
<p>如果，你可以从以下两个链接下载代码：</p>
<p><a href="http://iphonecal.googlecode.com/svn/trunk/TdCalendarView.h">http://iphonecal.googlecode.com/svn/trunk/TdCalendarView.h</a><br />
<a href="http://iphonecal.googlecode.com/svn/trunk/TdCalendarView.m">http://iphonecal.googlecode.com/svn/trunk/TdCalendarView.m</a></p>
<h3>创建一个iPhone应用程序项目</h3>
<p>下载代码后，你需要创建一个iPhone应用程序项目。打开XCode，点击菜单&#8221;File&#8221;->&#8221;New Project&#8230;&#8221;，在打开的对话框中，选择View-based Application。</p>
<p><a href="http://tiny4.org/blog/wp-content/uploads/2010/03/iphonecal001.png"><img src="http://tiny4.org/blog/wp-content/uploads/2010/03/iphonecal001.png" alt="" title="iphonecal001" width="400"  class="aligncenter size-full wp-image-126" /></a></p>
<p>把项目命名为TestiPhoneCal（或者其他什么名字，无所谓）：</p>
<p><a href="http://tiny4.org/blog/wp-content/uploads/2010/03/iphonecal002.png"><img src="http://tiny4.org/blog/wp-content/uploads/2010/03/iphonecal002.png" alt="" title="iphonecal002" width="400" class="aligncenter size-full wp-image-129" /></a></p>
<p>创建项目以后，点击菜单&#8221;Project&#8221;->&#8221;Add to project&#8230;&#8221;，选择你下载的文件，注意选中&#8221;Copy items into destination group&#8217;s folder&#8221;选项。</p>
<p><a href="http://tiny4.org/blog/wp-content/uploads/2010/03/iphonecal003.png"><img src="http://tiny4.org/blog/wp-content/uploads/2010/03/iphonecal003.png" alt="" title="iphonecal003" width="387" class="aligncenter size-full wp-image-130" /></a></p>
<p><a href="http://tiny4.org/blog/wp-content/uploads/2010/03/iphonecal004.png"><img src="http://tiny4.org/blog/wp-content/uploads/2010/03/iphonecal004.png" alt="" title="iphonecal004" width="500" class="aligncenter size-full wp-image-131" /></a></p>
<p><a href="http://tiny4.org/blog/wp-content/uploads/2010/03/iphonecal005.png"><img src="http://tiny4.org/blog/wp-content/uploads/2010/03/iphonecal005.png" alt="" title="iphonecal005" width="414" class="aligncenter size-full wp-image-132" /></a></p>
<h3>设置view类</h3>
<p>打开你的nib文件。</p>
<p><a href="http://tiny4.org/blog/wp-content/uploads/2010/03/iphonecal006.png"><img src="http://tiny4.org/blog/wp-content/uploads/2010/03/iphonecal006.png" alt="" title="iphonecal006" width="500" class="aligncenter size-full wp-image-135" /></a></p>
<p>选择你要作为日历的view，把它的类设置为TdCalendarView。</p>
<p><a href="http://tiny4.org/blog/wp-content/uploads/2010/03/iphonecal007.png"><img src="http://tiny4.org/blog/wp-content/uploads/2010/03/iphonecal007.png" alt="" title="iphonecal007" width="500" class="aligncenter size-full wp-image-136" /></a></p>
<p>好，现在运行你的程序，你就可以看到你的日历了。</p>
<p><a href="http://tiny4.org/blog/wp-content/uploads/2010/03/iphonecal008.png"><img src="http://tiny4.org/blog/wp-content/uploads/2010/03/iphonecal008.png" alt="" title="iphonecal008" width="414" class="aligncenter size-full wp-image-137" /></a></p>
<p>如果你按照这个教程操作，遇到了困难，也可以使用我提供的Demo Code，作为自己代码的模版。下载地址：<a href="http://iphonecal.googlecode.com/files/TestiPhoneCal.zip">http://iphonecal.googlecode.com/files/TestiPhoneCal.zip</a></p>
<p><a href="http://tinyfool.blogspot.com/2010/01/tutorialhow-to-use-iphone-calendar.html">English Version</a></p>
]]></content:encoded>
			<wfw:commentRss>http://tiny4.org/blog/2010/03/tutorial-how-to-use-iphone-calendar-control/feed/</wfw:commentRss>
		<slash:comments>9</slash:comments>
		</item>
		<item>
		<title>关于iPhone平台开发生态我的看法（谈iPhone到底是封闭还是开放）</title>
		<link>http://tiny4.org/blog/2010/03/iphone-developer/</link>
		<comments>http://tiny4.org/blog/2010/03/iphone-developer/#comments</comments>
		<pubDate>Wed, 10 Mar 2010 12:24:10 +0000</pubDate>
		<dc:creator>tinyfool</dc:creator>
				<category><![CDATA[开发]]></category>
		<category><![CDATA[iPhone]]></category>
		<category><![CDATA[兼容性]]></category>
		<category><![CDATA[开放]]></category>
		<category><![CDATA[标准]]></category>
		<category><![CDATA[第三方开发]]></category>

		<guid isPermaLink="false">http://tiny4.org/blog/?p=96</guid>
		<description><![CDATA[话说最近豆瓣很关注iPhone平台，他们刚刚推出了豆瓣电台iPhone版本（地址：http://douban.fm/app。我现在就正在使用，感觉不错，速度也很快，跟本地没区别，不过貌似歌对我这样的老年人来说有点太新，跳过一堆歌也没有找到我爱听的，或者我听过的。）。所以，豆瓣邀请了很多人去豆瓣聊聊关于iPhone和iPad开发的问题。 这次去见到了之前没见过的flycondor，在twitter上面已经认识的@hongqn，在ignite北京活动上认识的阿稳，很久以前认识的阿北@ahbei（其实说起来好久没见过阿北同学了，居然还记得我的ID，感动）。 在豆瓣我大侃了一通对iPhone开发开发的看法，所以的很high，可惜昨天晚上回来就给老婆做饭，然后晚上还有一堆事情，当天没时间整理思路写下来，可惜了。 以下是我刚刚整理出来的我的一些想法： 1、iPhone和Android哪个个平台更有前途 我更看好iPhone平台（包括iPhone，iPod Touch，广义也包括iPad），原因是我认为在移动平台未来取得成功最重要的是开放和标准。iPhone在硬件上面完全封闭，发行渠道上也很封闭，那么我为什么还看好它呢？ iPhone在硬件层面的封闭保证了产品的系列化，标准化，这是第三方开发者最应该珍视的。回想历史，摩托罗拉手机在中国的总销量可能是iPhone的百倍，但是虽然有这么多的用户，但是没有产生任何真正广泛流行的应用。那么是摩托罗拉没有智能手机平台么？不是，摩托罗拉是市面上几乎所有流行智能手机平台的大玩家。J2ME刚刚出现的时候，我下载的开发包，里面的模拟器就是基于各种款式的摩托罗拉手机的，当时摩托罗拉几十款流行手机同时都支持了J2ME。Nokia做Symbian的时候，摩托罗拉也是第一批合作厂商。Linux/Android/WinCE等平台也从来没有少过摩托罗拉的身影（最近好几款大火的Android平台手机就是摩托罗拉出品的）。 在iPhone横空出世之前，只有Nokia在Symbian上坚守S60、S40等的多产品系列的，标准化系列化的产品设计。回报就是在移动百宝箱的Java区，游戏、应用几乎都是for Nokia的。这就是市场和统一市场的区别，iPhone的用户数量，短期内决无可能超过摩托罗拉的用户数量，但是iPhone用户数量早已超过摩托罗拉任何一款手机（或者一个相关系列手机）的用户数量了，这是产生流行应用的必要土壤。 所以，因为产品的系列化，标准化，Nokia曾经有过自己在智能手机领域的辉煌。但是整个手机行业太固步自封了，Nokia太固步自封了。自从7650以来，我已经用了很多款Nokia的S60手机了，虽然性能越来越好，外观越来越酷，但是近10年了，真正的大改进并不多，开发仍旧困难，操作仍然笨拙。话说那天，我在地铁上看到一个美女用手写笔去拉动手机右边的滚动栏，恨不得大喊一声，“你改悔吧，别浪费生命了，买个iPhone吧！”。这其实就是iPhone出现前，手机行业固步自封的最明显表现。 我尤其珍视的是软件层面的开放，对第三方开发者的开发。这点可能也有人不同意，他们认为iPhone平台软件层面也很不开放，比如不能后台运行第三方程序，不能自行发行，不能开发第三方输入法等等。但是，这些种种的局限，有些我相信可能是阶段性的，有些是为了让发行渠道的利润更高。总体来说，我认为如果你要开发的应用在iPhone平台的种种限制下，能够做出来，那么iPhone平台就是对你来说，就是目前最好的移动平台，也是最开放的移动平台。开放是一个多层面的问题，不是说开源就一定最开放，iPhone平台目前丰富的应用，丰富的文档，方便的开发环境，这也是平台开放性的重要组成部分。 同时，iPhone平台的渠道优势也是完全不能忽视的。最近最火的一个相关新闻是，植物大战僵尸iPhone版本9天赚了100万美元，这款游戏的PC版本，在中国都早已经是白领中很流行的东西了。这家公司在这款游戏应该也早就挣到了很多钱，但是短短9天的销售获得100万美元，我想他们在很多平台都很难达到。这就是苹果公司精心打造的一键付费，方便的软件发行系统的功劳（甚至是他们很多令人不爽的苛刻规则的功劳）。 之前，我对中国到底有多少台iPhone一直犯嘀咕，这两天，我问了一个在国内很火的应用的公司里的朋友，他告诉我的数字是他们公司的app目前有100万左右的免费用户，有5%左右的付费用户。这样我就得到了一个很好的参考值，那么我可以斩钉截铁的说，中国的iPhone数量应该是100万以上。 据说豆瓣刚刚上线的电台iPhone应用的流量，已经占到了豆瓣电台总流量的一个相当比例了，而相应的Android版本目前还比较沉寂。我有个朋友做了一个很火的信息网站，年前他们做了一个web的iPhone优化版。于是我就毛遂自荐想帮他们做个官方的app，结果拿了api我还没动手。朋友告诉我已经出现了一个非官方的app，而且现在iPhone优化的web版和这个第三方app，目前已经达到他们总访问量的1/4了。 2、那么我是完全不看好Android平台么？当然也不是。 有人把现在Google领导的Android平台和Apple领导的iPhone平台的竞争比作当年PC机和Mac机的大战，不得不说，我也很喜欢这个比喻，确实有太多太多相似的地方了。在硬件方面，iPhone和当年的Mac机一样，是封闭的，没有兼容机，没有第三方硬件厂商。从软件上来看，iPhone平台是不开源的，Android平台是开源的。 那么如果以唯开放论的观点去看未来，Apple应该毫无机会，Google必胜。但，我不这么看。首先我们回顾一下历史，PC平台硬件确实是开放的，但是软件从来不是完全开放的，Cpu也从来不是完全开放的。这个开放系统的伟大胜利，我曾经有篇文章仔细分析过，有兴趣的可以看看《标准，要挣钱除了标准还是标准》。文中的道理简而言之就是，这个伟大的开发系统的胜利的缔造者IBM根本不是受益者，掌握了两个标准在手的微软和Intel才是胜利者。而今天我们仔细想来，这个开放平台开放的恰到好处，正式因为这两个关键标准的不完全开放，才保证了这个平台虽然很开放，但是一直都是一个标准化的产品。你在Dell的PC写的程序，可以运行在HP、IBM、甚至联想的PC，是这个高度标准化保证的。 所以，太多成功学的教材，只顾大谈开放，而不去提标准；或者只提标准而不提开放。我认为都是不对的，事实上在现在，一个系统要获得成功，我认为关键是要把握开放和标准之间的平衡，不能因为开放，而忽视了标准，反之亦然。 如今Android的战略中的每一点，我都很喜欢，但是它在标准化和发行渠道上，跟iPhone确实有巨大的差距。标准化和兼容性方面，最近有个很明显的例子，一款叫做Leech Killer的Android软件的作者@an0最近被Android手机间的不兼容性折磨得最终决定放弃这款软件的开发。他的写到： 我很伤心的宣布：Leech Killer 已死，有事烧纸。 是太多互不兼容的 Android 手机杀死了它。在如此混乱的世界中，涉及电话功能的工具软件已经无法由一个人维护。Leech Killer 在许多新款手机上无法正常工作，用户很生气，后果很严重。有人甚至说，它就是一坨:( 我很抱歉，朋友们，我真的已经努力了，但是我连你们的手机长啥样都不清楚 ─ 我不可能所有款式的手机都买一个。 安息吧，我的孩子，我会想念你的，你的那些老机器人朋友们也会的。 我一向认为这么多国际大牌厂商参与的，已经有10年左右的智能手机革命，十年不成的原因正是因为缺乏足够好的标准，所以客户端兼容性差。而现在Android这个单一平台，其本身的不兼容性问题已经开始成为了一个严峻的问题。开发一般应用，也许还好，凡是涉及到硬件的，酷的程序，以及游戏，一般来说都对兼容性有比较高的要求。 比如一个应用他需要一个快捷键，而某款手机缺少了一个键造成这个快键无法按下，等等。比如一个应用需要GPS+重力加速度传感器，但是有些手机只有GPS，而没有重力加速度传感器。更可能的就是一款游戏，你在某个分辨率下把有些做到精益求精以后，突然发现Android平台的新宠分辨率居然跟你的游戏不匹配，又要做无数的调整。相信这10年来，混迹于移动平台的第三方开发者都深有体会。 跟兼容性问题一样严重的就是，Android的市场并没有app store这么强的渠道能力，这也是目前不可忽视的问题。 从长远来看，我对这个世界的看法是越来越多元，同时因为多元也越来越美好。我认为iPhone平台和Android平台未来很有可能在很大的程度上分庭抗礼，有各自的核心价值，有各自不同的第三方开发者生态链。这不是PC机和Mac大战的结果，因为那个时代，整个世界也不足够多元（当然还有很多细节，今天就不分析这个老深坑了）。 但是Android如果想达到这样的局面，要在兼容性/标准化方面做出巨大的努力。还需要对发行渠道也就是他们的app市场上做出巨大的努力。 就目前为止，我想提出的建议是立足iPhone平台为主做开发，可以适当的付出一定的精力在Android平台，或者只是先观望Android而已。我乐见未来的世界，既是开放的，又是多元的。只有一种选择的用户是最可怜的用户。PC机这个号称最开放的平台，后来不也变成了让用户只能选择Windows的，OS层面不足够开放的平台么？索性我们有 Linux和Mac，大家才有了更多的选择，也才带动了Windows做出很多改进。 附，本文引发的一些相关的讨论： iPhone和Android的开放问题 招聘广告 腾讯即时通信部门大力招聘 Mac/iPhone 平台开发人员，欢迎联系和推荐。 工作地点:深圳腾讯大厦 可以Mail简历给我，我帮你转发给腾讯有关人员。 我的邮箱：Tinyfool@gmail.com]]></description>
			<content:encoded><![CDATA[            <script type="text/javascript" src="http://tiny4.org/blog/wp-content/plugins/wordpress-code-snippet/scripts/shBrushCpp.js"></script>
<p>话说最近<a href="http://www.douban.com/">豆瓣</a>很关注iPhone平台，他们刚刚推出了豆瓣电台iPhone版本（地址：<a href="http://douban.fm/app">http://douban.fm/app</a>。我现在就正在使用，感觉不错，速度也很快，跟本地没区别，不过貌似歌对我这样的老年人来说有点太新，跳过一堆歌也没有找到我爱听的，或者我听过的。）。所以，豆瓣邀请了很多人去豆瓣聊聊关于iPhone和iPad开发的问题。</p>
<p>这次去见到了之前没见过的flycondor，在twitter上面已经认识的@<a href="http://twitter.com/hongqn">hongqn</a>，在<a href="http://ignite.oreilly.com.cn/ignitebeijing/news">ignite北京活动</a>上认识的阿稳，很久以前认识的阿北@<a href="http://twitter.com/ahbei">ahbei</a>（其实说起来好久没见过阿北同学了，居然还记得我的ID，感动）。</p>
<p>在豆瓣我大侃了一通对iPhone开发开发的看法，所以的很high，可惜昨天晚上回来就给老婆做饭，然后晚上还有一堆事情，当天没时间整理思路写下来，可惜了。</p>
<p>以下是我刚刚整理出来的我的一些想法：</p>
<h3>1、iPhone和Android哪个个平台更有前途</h3>
<p>我更看好iPhone平台（包括iPhone，iPod Touch，广义也包括iPad），原因是我认为在移动平台未来取得成功最重要的是<strong>开放和标准</strong>。iPhone在硬件上面完全封闭，发行渠道上也很封闭，那么我为什么还看好它呢？</p>
<p>iPhone在硬件层面的封闭保证了产品的系列化，标准化，这是第三方开发者最应该珍视的。回想历史，摩托罗拉手机在中国的总销量可能是iPhone的百倍，但是虽然有这么多的用户，但是没有产生任何真正广泛流行的应用。那么是摩托罗拉没有智能手机平台么？不是，摩托罗拉是市面上几乎所有流行智能手机平台的大玩家。J2ME刚刚出现的时候，我下载的开发包，里面的模拟器就是基于各种款式的摩托罗拉手机的，当时摩托罗拉几十款流行手机同时都支持了J2ME。Nokia做Symbian的时候，摩托罗拉也是第一批合作厂商。Linux/Android/WinCE等平台也从来没有少过摩托罗拉的身影（最近好几款大火的Android平台手机就是摩托罗拉出品的）。</p>
<p>在iPhone横空出世之前，只有Nokia在Symbian上坚守S60、S40等的多产品系列的，标准化系列化的产品设计。回报就是在移动百宝箱的Java区，游戏、应用几乎都是for Nokia的。这就是市场和统一市场的区别，iPhone的用户数量，短期内决无可能超过摩托罗拉的用户数量，但是iPhone用户数量早已超过摩托罗拉任何一款手机（或者一个相关系列手机）的用户数量了，这是产生流行应用的必要土壤。</p>
<p>所以，因为产品的系列化，标准化，Nokia曾经有过自己在智能手机领域的辉煌。但是整个手机行业太固步自封了，Nokia太固步自封了。自从7650以来，我已经用了很多款Nokia的S60手机了，虽然性能越来越好，外观越来越酷，但是近10年了，真正的大改进并不多，开发仍旧困难，操作仍然笨拙。话说那天，我在地铁上看到一个美女用手写笔去拉动手机右边的滚动栏，恨不得大喊一声，“你改悔吧，别浪费生命了，买个iPhone吧！”。这其实就是iPhone出现前，手机行业固步自封的最明显表现。</p>
<p>我尤其珍视的是软件层面的开放，对第三方开发者的开发。这点可能也有人不同意，他们认为iPhone平台软件层面也很不开放，比如不能后台运行第三方程序，不能自行发行，不能开发第三方输入法等等。但是，这些种种的局限，有些我相信可能是阶段性的，有些是为了让发行渠道的利润更高。总体来说，我认为如果你要开发的应用在iPhone平台的种种限制下，能够做出来，那么iPhone平台就是对你来说，就是目前最好的移动平台，也是最开放的移动平台。开放是一个多层面的问题，不是说开源就一定最开放，iPhone平台目前丰富的应用，丰富的文档，方便的开发环境，这也是平台开放性的重要组成部分。</p>
<p>同时，iPhone平台的渠道优势也是完全不能忽视的。最近最火的一个相关新闻是，<a href="http://tech.sina.com.cn/it/2010-02-26/09013882856.shtml">植物大战僵尸iPhone版本9天赚了100万美元</a>，这款游戏的PC版本，在中国都早已经是白领中很流行的东西了。这家公司在这款游戏应该也早就挣到了很多钱，但是短短9天的销售获得100万美元，我想他们在很多平台都很难达到。这就是苹果公司精心打造的一键付费，方便的软件发行系统的功劳（甚至是他们很多令人不爽的苛刻规则的功劳）。</p>
<p>之前，我对中国到底有多少台iPhone一直犯嘀咕，这两天，我问了一个在国内很火的应用的公司里的朋友，他告诉我的数字是他们公司的app目前有100万左右的免费用户，有5%左右的付费用户。这样我就得到了一个很好的参考值，那么我可以斩钉截铁的说，中国的iPhone数量应该是100万以上。</p>
<p>据说豆瓣刚刚上线的电台iPhone应用的流量，已经占到了豆瓣电台总流量的一个相当比例了，而相应的Android版本目前还比较沉寂。我有个朋友做了一个很火的信息网站，年前他们做了一个web的iPhone优化版。于是我就毛遂自荐想帮他们做个官方的app，结果拿了api我还没动手。朋友告诉我已经出现了一个非官方的app，而且现在iPhone优化的web版和这个第三方app，目前已经达到他们总访问量的1/4了。</p>
<h3>2、那么我是完全不看好Android平台么？当然也不是。</h3>
<p>有人把现在Google领导的Android平台和Apple领导的iPhone平台的竞争比作当年PC机和Mac机的大战，不得不说，我也很喜欢这个比喻，确实有太多太多相似的地方了。在硬件方面，iPhone和当年的Mac机一样，是封闭的，没有兼容机，没有第三方硬件厂商。从软件上来看，iPhone平台是不开源的，Android平台是开源的。</p>
<p>那么如果以唯开放论的观点去看未来，Apple应该毫无机会，Google必胜。但，我不这么看。首先我们回顾一下历史，PC平台硬件确实是开放的，但是软件从来不是完全开放的，Cpu也从来不是完全开放的。这个开放系统的伟大胜利，我曾经有篇文章仔细分析过，有兴趣的可以看看《<a href="http://tiny4.org/blog/2005/03/standard-and-money/">标准，要挣钱除了标准还是标准</a>》。文中的道理简而言之就是，这个伟大的开发系统的胜利的缔造者IBM根本不是受益者，掌握了两个标准在手的微软和Intel才是胜利者。而今天我们仔细想来，这个开放平台开放的恰到好处，正式因为这两个关键标准的不完全开放，才保证了这个平台虽然很开放，但是一直都是一个标准化的产品。你在Dell的PC写的程序，可以运行在HP、IBM、甚至联想的PC，是这个高度标准化保证的。</p>
<p>所以，太多成功学的教材，只顾大谈开放，而不去提标准；或者只提标准而不提开放。我认为都是不对的，事实上在现在，一个系统要获得成功，我认为关键是要把握开放和标准之间的平衡，不能因为开放，而忽视了标准，反之亦然。</p>
<p>如今Android的战略中的每一点，我都很喜欢，但是它在标准化和发行渠道上，跟iPhone确实有巨大的差距。标准化和兼容性方面，最近有个很明显的例子，一款叫做Leech Killer的Android软件的作者@<a href="http://twitter.com/an0">an0</a>最近<a href="http://blog.iwonderphone.com/2010/03/07/killer-was-killed/">被Android手机间的不兼容性折磨得最终决定放弃这款软件的开发</a>。他的写到：</p>
<blockquote><p>我很伤心的宣布：Leech Killer 已死，有事烧纸。</p>
<p>是太多互不兼容的 Android 手机杀死了它。在如此混乱的世界中，涉及电话功能的工具软件已经无法由一个人维护。Leech Killer 在许多新款手机上无法正常工作，用户很生气，后果很严重。有人甚至说，它就是一坨:( 我很抱歉，朋友们，我真的已经努力了，但是我连你们的手机长啥样都不清楚 ─ 我不可能所有款式的手机都买一个。</p>
<p>安息吧，我的孩子，我会想念你的，你的那些老机器人朋友们也会的。</p></blockquote>
<p>我一向认为这么多国际大牌厂商参与的，已经有10年左右的智能手机革命，十年不成的原因正是因为缺乏足够好的标准，所以客户端兼容性差。而现在Android这个单一平台，其本身的不兼容性问题已经开始成为了一个严峻的问题。开发一般应用，也许还好，凡是涉及到硬件的，酷的程序，以及游戏，一般来说都对兼容性有比较高的要求。</p>
<p>比如一个应用他需要一个快捷键，而某款手机缺少了一个键造成这个快键无法按下，等等。比如一个应用需要GPS+重力加速度传感器，但是有些手机只有GPS，而没有重力加速度传感器。更可能的就是一款游戏，你在某个分辨率下把有些做到精益求精以后，突然发现Android平台的新宠分辨率居然跟你的游戏不匹配，又要做无数的调整。相信这10年来，混迹于移动平台的第三方开发者都深有体会。</p>
<p>跟兼容性问题一样严重的就是，Android的市场并没有app store这么强的渠道能力，这也是目前不可忽视的问题。</p>
<p>从长远来看，我对这个世界的看法是越来越多元，同时因为多元也越来越美好。我认为iPhone平台和Android平台未来很有可能在很大的程度上分庭抗礼，有各自的核心价值，有各自不同的第三方开发者生态链。这不是PC机和Mac大战的结果，因为那个时代，整个世界也不足够多元（当然还有很多细节，今天就不分析这个老深坑了）。</p>
<p>但是Android如果想达到这样的局面，要在兼容性/标准化方面做出巨大的努力。还需要对发行渠道也就是他们的app市场上做出巨大的努力。</p>
<p>就目前为止，我想提出的建议是立足iPhone平台为主做开发，可以适当的付出一定的精力在Android平台，或者只是先观望Android而已。我乐见未来的世界，既是开放的，又是多元的。只有一种选择的用户是最可怜的用户。PC机这个号称最开放的平台，后来不也变成了让用户只能选择Windows的，OS层面不足够开放的平台么？索性我们有 Linux和Mac，大家才有了更多的选择，也才带动了Windows做出很多改进。</p>
<p>附，本文引发的一些相关的讨论：</p>
<ul>
<li><a href="http://blog.csdn.net/Raptor/archive/2010/03/12/5373733.aspx">iPhone和Android的开放问题</a></li>
<h3>招聘广告</h3>
<p>腾讯即时通信部门大力招聘 Mac/iPhone 平台开发人员，欢迎联系和推荐。<br />
工作地点:深圳腾讯大厦</p>
<p>可以Mail简历给我，我帮你转发给腾讯有关人员。<br />
我的邮箱：Tinyfool@gmail.com</p>
]]></content:encoded>
			<wfw:commentRss>http://tiny4.org/blog/2010/03/iphone-developer/feed/</wfw:commentRss>
		<slash:comments>58</slash:comments>
		</item>
		<item>
		<title>为什么我认为每个程序员都应该用Mac OS X？</title>
		<link>http://tiny4.org/blog/2010/02/why-programmers-should-use-mac-os-x/</link>
		<comments>http://tiny4.org/blog/2010/02/why-programmers-should-use-mac-os-x/#comments</comments>
		<pubDate>Thu, 18 Feb 2010 21:05:31 +0000</pubDate>
		<dc:creator>tinyfool</dc:creator>
				<category><![CDATA[开发]]></category>
		<category><![CDATA[Apple]]></category>
		<category><![CDATA[Mac OS X]]></category>

		<guid isPermaLink="false">http://tiny4.org/blog/?p=33</guid>
		<description><![CDATA[查尔斯·狄更斯老师的《双城记》里有句非常著名的话，我每次看到都心潮澎湃，所以看了无数次《双城记》总是在那两句话前后打转。心说，开头就这么好，正文无论如何也无法让你觉得精彩了吧？ 原文是，“It was the best of times, it was the worst of times, it was the age of wisdom, it was the age of foolishness, it was the epoch of belief, it was the epoch of incredulity, it was the season of Light, it was the season of Darkness, it was the spring of hope, [...]]]></description>
			<content:encoded><![CDATA[            <script type="text/javascript" src="http://tiny4.org/blog/wp-content/plugins/wordpress-code-snippet/scripts/shBrushCpp.js"></script>
<p>查尔斯·狄更斯老师的《双城记》里有句非常著名的话，我每次看到都心潮澎湃，所以看了无数次《双城记》总是在那两句话前后打转。心说，开头就这么好，正文无论如何也无法让你觉得精彩了吧？</p>
<p>原文是，“It was the best of times, it was the worst of times, it was the age of wisdom, it was the age of foolishness, it was the epoch of belief, it was the epoch of incredulity, it was the season of Light, it was the season of Darkness, it was the spring of hope, it was the winter of despair, we had everything before us, we had nothing before us, we were all going direct to Heaven, we were all going direct the other way&#8211;in short, the period was so far like the present period, that some of its noisiest authorities insisted on its being received, for good or for evil, in the superlative degree of comparison only. ”</p>
<p>译做：“那是最美好的时代，那是最糟糕的时代；那是智慧的年头，那是愚昧的年头；那是信仰的时期，那是怀疑的时期；那是光明的季节，那是黑暗的季节；那是希望的春天，那是失望的冬天；我们拥有一切，我们一无所有;我们全都在直奔天堂，我们全都在直奔相反的方向&#8211;简而言之，那时跟现在非常相象，某些最喧嚣的权威坚持要用形容词的最高级来形容它。说它好，是最高级的；说它不好，也是最高级的。”</p>
<p>我认为对于程序员来说，我们正在经历最美好的时代，当然也是最糟糕的时代。</p>
<p>美好的原因在于，这是一个充满机会的年代，近十年每次我们以为世界一切尘埃落定的时候，就会出现新的惊喜。如youtube、facebook、twitter等等，甚至包括了iPhone以及即将上市的iPad。世界上无数聪明和勤奋的人们正在努力，告诉我们一切还早，我们还活在一个迅速发展着的世界。只要世界还在迅速发展，谁知道你会不会就是下一个twitter、下一个iPhone的发明者？甚至是下一个马化腾，虽然现在腾讯如日中天，但是如果时间倒流到99年，甚至01年，大多数心中可能还是会觉得那只是个玩物吧？</p>
<p>然而，糟糕其实也正在于此，前面的机会多，陷阱就多。人们天生就是风险躲避者（某个名人或者是名著里面说的，可惜记不清了，无法拿来掉书袋了），这也许就是独裁百试百灵的原因。人们总害怕错误的选择，所以变得犹豫起来。现在这样的时代，你就有无数可以犹豫的事情，因为很多事情还在发展中，不知道谁会笑到最后。最近仍在胶着的战斗很多，如，Wifi和3G（我认为赌局还没开场），微软和Google，微软和苹果，苹果和Google，苹果和Nokia等等等等。</p>
<p>这些战斗的结果，对普通用户来说，只是买什么产品，用什么产品的问题。对开发者来说则是抱谁的的大腿，跟谁混的大事儿。</p>
<p>所以我们这些久经沙场而没有发达的家伙，总是对面前的选择感到胆战心惊，甚至养成了父母问你吃什么都会大发雷霆，大喊“不知道”的选择恐惧症（我的症状非常严重，出去吃，绝不点菜，在家里一律随便。但也有可能是看Monk看多了闹的）。</p>
<p>之前我和<a href="http://twitter.com/jeffz_cn">赵姐夫(@Jeffz_cn)</a>、<a href="https://twitter.com/virushuo">霍炬(@virushuo)</a>、<a href="https://twitter.com/krzycube">方块（@KrzyCube）</a>还有很多人在twitter上面大侃过一次这个问题，有兴趣的可以看看<a href="http://chinese.catchen.biz/2010/02/apple-vs-microsoft.html" target="_blank">Cat Chen的评论</a>、以及<a href="http://www.cnblogs.com/JeffreyZhao/archive/2010/02/03/twitter-talk-about-ms-dev-at-20100201.html">赵姐夫的整理</a>、和<a href="http://blog.krzycube.net/a-wonderful-talk/">方块的整理</a>（我们的讨论很长，但还算有趣吧）。</p>
<p>现在，我已经远离了Windows阵营，做Web开发用Php，做客户端只做Mac客户端软件，还做一些iPhone开发。我认为每个程序员都应该至少用一用Mac OS X。</p>
<p>原因如下：</p>
<h4>1、操作系统的竞争到了一个新的阶段</h4>
<p>Windows虽然仍旧是实质上的老大，但是操作系统的战争早已不是10年前的样子。随着Web应用的大行其道，很多人的电脑，都已经成了名符其实的上网本或者上网机。</p>
<p>Window/Mac OS X/Linux/Unix几大主流平台上都有了流行的Web浏览器，只要你不是一个执着的IE粉丝，那么如果你的主要任务是Web浏览，现在几大操作系统的体验已经非常接近了。其他的基于互联网的流行软件，一般也都有比较好的跨平台支持。例如，聊天工具，Gtalk全平台覆盖，Msn全平台覆盖，现在甚至连一向被人看作很封闭的QQ，实际上也有Linux版本（虽然口碑很大，但是还有lumaQQ这样的替代产品），Mac版本（口碑不错），iPhone版本了（最近刚更新过，很不错）。</p>
<p>我们甚至看到了上网本这一硬件类别的产生。互联网成了计算机的中心，这很大程度上降低了微软的垄断优势。</p>
<p>3-4年前，我切换到Mac OS X的时候，除了招商银行等少数应用以外，我没有觉得任何的痛苦。那时候，我主要开发服务器端程序，程序的运行环境是Linux，在Mac OS X这个Unix上面开发，其实很方便。</p>
<p>程序员可以在不同平台切换并不重要，重要的是，我们这些程序员的衣食父母已经可以自由的在各种平台上切换了。这就给了我们去尝试Windows以外平台的可能性。</p>
<p>很多人在比较Windows和Mac OS X的时候，有一个误区。因为他们自己是长期的Windows用户，对很多Mac OS X的细节很不喜欢（右键、按钮位置等等）。但是作为一个开发者，你要注意的是用户。我希望你们设想一个场景，一个从来没有用过电脑的人，他们学习Windows和Mac OS X，他们会更喜欢什么。我想更多人会喜欢Mac OS X，如果我的设想是对的，那么未来是属于Mac OS X的。</p>
<h4>2、iPhone以及未来的iPad</h4>
<p>iPhone是近10年来，我看到的最革命性的硬件产品。虽然他的功能，除了多点触摸、加速度传感器以外，大多数我们都在Nokia和其他竞争者的产品中见到过。我用过Nokia2002年的产品7650，iPhone的所有功能它几乎都有（没有wifi，但是有gprs），但是用起来跟iPhone就是不一样。</p>
<p>那么区别在哪里呢？05年我买iPod Nano的时候，看到盒子的时候，我吃了一惊，因为盒子最显眼的地方写的不是“容量：4G”，而是“可以容纳1000首歌，xxx张照片”。这家卖水果的公司突然让我明白，用户其实关心的是那个叫mp3的东西可以容纳多少歌，而不是从比特的角度，从存储的角度他的容量是多少G。多少G多少M的容量，是实现“容纳多少多少歌”这个目的的一种手段。我们总是太过care手段，忘了我们的目的是什么。</p>
<p>做产品的时候，很多人也是这样。如果你是第一次看电视购物卖手机，也许你就会想把手里面的iPhone扔掉，去买那些垃圾。因为你听介绍的时候，你会觉得全世界最好的手机就在那电视里，叫做“XX全能王”。从功能列表来看，它们简直是世界上最好的产品，但是如果你真的拿到手，你也许会发现那东西3分钟死机，也许什么操作都很慢，也许摔了一下就坏了。那个时候，我估计你会领悟到，功能多当然好。但是功能列表不会包括“不会3分钟死机”，“操作不会很慢”，“摔一下不会坏”。手机，或者任何产品对你最重要的不是功能多，而是好用。</p>
<p>iPhone让我发现原来手机上也可以有这么好用的浏览器。这是个纯技术问题么？不是，要知道Nokia很多手机用的浏览器内核和iPhone毫无二致，都是Webkit。但是操作起来看看，大家知道iPhone出来没有多久，所有网站手机流量最大的就是iPhone了，这不是靠运气啊。我有个Nokia E61i欧版手机，可以用wifi，但是用它的浏览器，实在是不方便，每次都要重新选择wifi，打开网站也很慢，打开了以后，放大缩小也很不方便。</p>
<p>好的体验仅是其一。更重要的是水果公司在iPhone这个产品上开发了AppStore，这是近10年来，我认为在软件行业最重要的一个东西。<a href="http://blog.hanlei.name/2006/03/08/614">1976年2月3日比尔盖茨发表了著名的《An Open Letter to hobbyists》（给爱好者们的一封信）</a>，事实上开启了商业软件的道路。然而，商业软件从诞生起，就受到盗版的诅咒。从全球看，表面上微软是盗版的最大受害者。没错，从金额上看，是这样的。但是实际上所有的第三方开发者，才是盗版的最大受害者，他们中的很多人因为盗版而丧失了成长为微软这样企业的机会。</p>
<p>AppStore不能完全杜绝盗版，但是它从发行和支付渠道出发（跟iTune Store如出一辙），很大程度降低了盗版对第三方开发者成长带来的风险。很多单枪匹马的第三方开发者，凭借做iPhone软件发家（当然一个市场是有容量的，你不能指望它超越自己的机极限）。很多开发Mac软件多年的人，没因为开发Mac软件发家，但是因为移植了一个简单版本到iPhone发了家。据说，因为开发iPhone只能用Mac OS X，这成了近两年对Mac电脑销售最大的拉动。很多人为了开发iPhone程序而购买Mac电脑。</p>
<p>就在这时iPad来了。价格在2000-3000之间的上网本，应该是最近和未来，电脑市场一个很重要的增长点。这个价位可以吸引很多买不起电脑（可能更多是不舍得买电脑）的人。另外，关注上网这个概念简化操作，也可以让很多觉得电脑太难用的人们，来购买电脑。可惜，基于Windows的上网本在用户体验上实在是乏善可陈，往往仅仅是一个屏幕更小的Windows而已。</p>
<p>Windows在PC上面的优势本来有机会拓展到其他平台。在WinCE和Palm，微软实际上获胜了。但是之后就固步自封了，现在iPhone出来了，WinCE实际上已经没有什么大机会了。上网本和触摸设备，本来也是Windows有巨大优势的，但是微软实在缺乏在用户体验方面的努力（你去看看各种基于Windows的触摸查询设备吧，居然需要点一下然后鼠标光标蹦过来，然后才能点！！！！！！！）。</p>
<p>iPad的发布会，并不让人多么惊喜。这是因为iPad和iPhone战略在水果公司是紧密结合的，iPad包含了iPhone的所有革命性，然后把尺寸放大。发布会开到结尾，说到电池时间和价格的时候，我才开始兴奋。</p>
<p>iPad意味着什么？意味着一台便宜的上网本；有电脑的用户也不介意购买一个，买不起或者不舍得买电脑的人可能会买；因为便宜，所以医院和餐馆等可能会购买作为内部管理系统（医院信息系统，点餐系统）；学校可以买做教育用途（电子书包）。意味着，我们可以在电脑上面写文档累了的时候，躺在床上抱着它听歌，看看书，玩个游戏。</p>
<p>这个产品如果操作的好的话，可以造就一个比iPhone更大更好的软件市场。</p>
<h4>3、Mac OS X是Unix</h4>
<p>对于大多数做服务器端开发的开发者，服务器端开发也许就意味着Linux下的C/C++和Java。Mac OS X是真正的Unix（符合标准，有授权，合法的可以用Unix商标）。大多数这类开发，你可以在Mac OS X下做，在Linux下执行。少数涉及到Linux和BSD内核不同的应用，稍微麻烦一点。但是如果你做到这个级别的话，我想你也不在乎了。</p>
<p>大多数基于Linux的开源软件，大多数为Unix架构设计的程序，都可以在Mac OS X下正常工作。虽然有很多软件编译起来，会遇到很多稀奇古怪的问题，但是放心，你在不同的Linux版本间编译的时候遇到的会更多。虽然Mac OS X下面的自动软件安装工具也会有各种各样的问题，但是放心，Linux下的也是。</p>
<p>Unix文化最经典的管道和脚本，Mac OS X也支持的很好。</p>
<p>Mac OS X是一个非常好的平衡，Unix式的命令行、脚本能力它全部具备，而且带有一个非常好用高效的GUI。所以不管你是CLI（命令行界面）控，还是GUI控，你都应该可以玩的很好。</p>
<p>有人问我Mac OS X是不是一个很好的学习Linux的途径。我不得不说，你要是真的玩转了Mac OS X（CLI+GUI）的话，你真的无需去学习Linux，用就是了。尤其是，学习Linux是为了学习服务器管理的人们，真玩转了Mac OS X，Linux有什么区别？</p>
<h4>4、开拓你的视野</h4>
<p>一段时间以来，<a href="http://tiny4.org/prog/diary/2007/10/blog-post.html">我研究自己发展的过程中的瓶颈的时候，发现一切瓶颈都不来自能力，都来自视野，来自于给自己设置的愚蠢的极限</a>。这么说，是因为我发现，我想做一辈子的程序员，而我也乐意学习新的知识，我也确实擅长不停的学习新的知识。</p>
<p>只是每经一个阶段，一旦我发现自己长期没有什么进步的时候，就会发现原因就是我已经不知道前面的路在哪里了。在.net出现之前，我已经是一个微软几乎所有产品的专家（<a href="http://tiny4.org/prog/diary/2004/04/mvp.html">但我不是MVP</a>），我可以不借助ATL自己写Com组件，我写过IE和Outlook插件，等等。但是到了.net时代，我的心疲惫了，我决心不再跟随微软的脚步。</p>
<p>这两年，尤其是09年，做了一些iPhone开发，<a href="http://tiny4.org/prog/diary/2009/12/tiny4readermac.html">Cocoa开发（Tiny4Reader）</a>，做了些服务器端开发（GinkgoTek.com），我又开始像刚开始接触电脑那样的激情澎湃了。</p>
<p>对大多数纯Windows程序员，Mac OS X的GUI和基于Unix的CLI都是新的天地，哪怕你不真的从事这两方面的开发。在这些领域看到的东西对你的开发都是有利的。</p>
<p>腾讯是一个大家印象中很不注重用户体验的公司（老程序员视角）吧？但是现在QQ已经有了Mac版，iPhone版，而且iPhone版本已经多次打磨，已经是一个相当好用的iPhone应用了。年前我去了趟深圳，见了他们的iPhone开发team，他们很重视用户体验，也做了很多的尝试。而腾讯更多其他平台开发的工程师，也开始更加关注用户体验了。</p>
<p>对绝大多数Windows程序员，关注用户体验的经验和意识都不足，使用Mac OS X有利于提高这些方面的素养。</p>
<p>最近我在参与翻译《Cocoa® Programming Developer’s Handbook》，从中知道，我最崇拜的<a href="http://en.wikipedia.org/wiki/Tim_Berners-Lee">Tim Berners-Lee爵士</a>，就是在Mac OS X的前身，NeXTSTEP操作系统（NeXT公司产品，乔布斯创建的公司，后来被买回水果公司，这个操作系统和原有MacOS一起，成了Mac OS X的前身）下开发的人类第一个浏览器WorldWideWeb的，打开了人类的Web时代的。</p>
<p>附，本文引发的一些相关的讨论：</p>
<ul>
<li><a href="http://blog.iusr.me/2010/02/to-mac-or-not-to-mac/">To Mac, or not to Mac</a></li>
<li><a href="http://blog.dayuer.com/archives/2010/02/20/846.html">新年新计划</a></li>
<li><a href="http://robertmao.com/2010/02/20/mac-osx-windows-linux-nix/">Mac OSX, Windows, Linux, *nix闲谈</a></li>
<li><a href="http://anxonli.javaeye.com/blog/599379">看看什么公司在用Mac开发</a></li>
<li><a href="http://blog.youxu.info/2010/02/28/why-mac-os-x-for-programmers/">开发人员为何应该使用 Mac OS X 兼 OS X 小史</a></li>
<li><a href="http://martinoei.wordpress.com/2010/02/28/作為一個電腦人，你該學用os-x的原因（就算hackintosh都殺/">作為一個電腦人，你該學用OS X的原因（就算Hackintosh都殺）</a></li>
<li><a href="http://blog.krzycube.net/mac-attraction/">Mac诱惑</a></li>
</ul>
<h3>招聘广告</h3>
<p>腾讯即时通信部门大力招聘 Mac/iPhone 平台开发人员，欢迎联系和推荐。<br />
工作地点:深圳腾讯大厦</p>
<p>可以Mail简历给我，我帮你转发给腾讯有关人员。<br />
我的邮箱：Tinyfool@gmail.com</p>
]]></content:encoded>
			<wfw:commentRss>http://tiny4.org/blog/2010/02/why-programmers-should-use-mac-os-x/feed/</wfw:commentRss>
		<slash:comments>254</slash:comments>
		</item>
		<item>
		<title>[老文回收]标准，要挣钱除了标准还是标准</title>
		<link>http://tiny4.org/blog/2005/03/standard-and-money/</link>
		<comments>http://tiny4.org/blog/2005/03/standard-and-money/#comments</comments>
		<pubDate>Thu, 31 Mar 2005 10:40:00 +0000</pubDate>
		<dc:creator>tinyfool</dc:creator>
				<category><![CDATA[开发]]></category>
		<category><![CDATA[IBM]]></category>
		<category><![CDATA[微软]]></category>
		<category><![CDATA[标准]]></category>

		<guid isPermaLink="false">http://tiny4.org/blog/?p=104</guid>
		<description><![CDATA[此文在2005年3月31日曾发表于我在Donews的Blog。 我感觉值得悲哀的一件事情在于，虽然微软是世界上最好的一个成功案例之一，每个人都在研究微软的成功，但是更多的人把微软的成功看作是机遇和一些非常的商业手腕的结果。我一直避免自己变成一个唯技术论者，但是我不得不说，我觉得目前的不好的倾向在于整个行业太不唯技术论了。跟我们的政府立足的模仿西方先进技术不模仿西方的经济体制类似，我们的软件行业好像醉心于趴在微软和众多国外系统软件开发商的系统之上，专心致志地进行企业信息化建设。整个软件行业最流行的词汇是.Net和J2ee这样的企业级解决方案，就是这种现状的一种写照。 曾几何时，中国人的Ucdos和Wps给我们带来了无上的民族自豪感，虽然他们也建构在微软的平台上面，但是毕竟让我们感觉我们离世界软件大国的脚步并不遥远，甚至当时有人会认为中华民族的伟大复兴就将会依靠软件业。但是，一朝微软进行平台更替，整个中国软件行业才发现这种并不遥远，其实只是一种错觉。应该说Ucdos的荣光来自于微软对Dos中文化的投入甚微，或者说心不在焉，在当时我们不能准确地了解到，微软这种心不在焉也许并不是不重视中国市场，而是打算在Win95一劳永逸的解决问题（注一）。而Wps就是一种悲剧了，我有时候在想，就算金山现在做得再差劲，政府采购也应该对他们有所偏向。要知道Wps对中国的信息化贡献极大，而某种程度上说，政府的追赶时髦和没有民族软件危机意识也是Wps失败的主要原因之一（注二）。抛去这场悲剧中的民族感情色彩，我们发现在那个历史时刻，我们全行业溃败（注三）的主要原因很简单，不掌握标准，而且跟不上掌握标准者的脚步。 微软是怎么样从一个卖Basic解释器的小作坊发展成全球最大的软件航母的，找本微软发家的书来看，字里行间就是两个字“标准”。当年IBM出于对 Apple的眼热（注四），开始研制自己的个人电脑，也许是为了更快的进入市场，IBM在这个项目里面居然没有采取惯用的什么都自己做的战略（注五）。 Cpu选择了Intel，操作系统选择了微软买来的Qdos(注六)。在这场三位一体的历史事件中，Intel和微软成了胜利者，因为他们各自掌握了一个核心标准。而PC的缔造者，IBM因为不掌握核心标准在PC行业中一直扮演者尴尬的角色，起初他还算是行业领导者，但是因为核心标准不在手中，一旦他打算利用附加标准来重夺控制权的时候，他立刻被行业抛弃（注七）。今年年初，IBM通过把自己的PC产品事业部卖给联想，实际上已经正式逃离了这个行业。从 1980年IBM开始研制PC机到2005年IBM离开PC行业，25年弹指一挥间。 微软成长很大程度依赖于他在操作系统上面建立的标准，他的Office能够打遍天下无敌手，仰仗了两次重要的技术标准升级。第一次就是Dos到 Windows，大部分竞争对手不可能有微软那么了解Windows也不可能得到那么详尽的开发资料，所以这次升级，微软让很多对手元气大伤，甚至一蹶不振（注八）。第二次就是OLE技术（注九），OLE技术的推出让很多对手措手不及，而且有证据表明微软在OLE技术前期，刻意得对竞争对手进行了技术封锁。 如果你看过李维的《C++圣战》，你会发现Borland被微软边缘化，也主要是因为这两次技术标准升级。这里展开说句题外化，我发现了一条真理，玩微软平台开发的只有两个下场，第一，被微软弄得没饭吃，第二，去微软混饭吃。Borland一直用行动在证明我这条理论，首先是Borland在微软的打压下吃饭越来越艰难，其次是Borland的N多牛人最终去了微软。 本文不想继续描述其他微软利用技术标准来战胜对手的例子了，实际上这样的案例实在太多了。我认为微软的持续成功，就在于微软把自身的标准建设贯穿在整个产品体系之中，没有一款产品不是服务于标准的建设，也没有一款产品的成功不是得益于标准的建设。 但是在国内，我们看到很多企业并不是这么做的。这里要举的例子是某电子产品生产厂商。他们从93年开始占领市场，处于垄断地位至少５年之久，到现在市场却越做越小，产品和竞争对手的相比没有任何竞争力，唯一可以依靠的就是长久垄断带来的品牌效应。然而这种品牌效应也慢慢地在消失之中。 他们的现状是怎么造成的，有方方面面的原因，这里我只想谈谈没有自己的标准带来的后果。该公司早期采取了以产品项目组为中心的开发模式，在经营之初，这种模式没有表现出来任何的问题。然而，由于没有长远的规划，没有自己的标准，每款产品之间的资料往往不能共享，由于没有固定的硬件平台解决方案，也没有上层的软件平台标准，每款产品上的同类软件都需要重新开发，大大的降低了项目开发的效率。在没有竞争的年代尚好，在竞争者如云的今天，该公司甚至难以保证每个销售季节有足够的新产品和竞争对手对抗。2003年的时候有一丝的标准化的曙光，公司的某个员工为了解决频繁地在不同硬件平台上面移植某一游戏的任务，设计了一个比较高效的虚拟机系统。但是这个公司并没有完全采用这个系统，系统的开发者最后也离开了这个公司。该公司目前有一个项目组采用这个虚拟机系统开发产品上面的软件，效率很高，而且有非常多的资源可以使用。另一个项目组虽然使用了更好的硬件，但是很多精力花在了底层平台的构建，产品开发周期很长，而且运行效果相当不理想。这是很有趣的一幕，采用虚拟机的标准化的16位系统，可以高速地在16级灰度下放视频剪辑，而32位平台为了支持其实没有必要的多任务，再加上系统开发时间紧，对Cpu不熟悉等等，甚至在4级灰度下都不能达到正常的软件使用速度，最后不得不做成黑白显示模式。这个案例我亲身体验，所以感受颇深。这个公司的失败很大程度是在管理，但是有很大程度也在技术，一个技术公司没有好的技术方向，空有良好的管理，也是无法想象的。技术公司里面技术就是公司的生命，但是我听到了太多强调管理的声音，我并不反对重视管理，但是很反感最近一段时间接触到的某些人对技术的轻视，这种轻视来自于对技术层面的客观规律的不了解。我对这种思维倾向的蔓延感到恐惧，如果中国处处都没有自己的技术，那么就说明我们的管理到家了么？只怕事情不是那么简单的吧？ —————————- 注一：微软确实已经做到了。 注二：这个问题要讨论起来就是一篇很长的文章了，基于我的朴素的善恶观，我认为Wps的失败政府有很大的责任，虽然更大的责任在于裘伯君自己，但是在那个历史时刻，中国整个软件行业都沉浸在Dos的虚假繁荣之下，有几个人能认识到Windows的势不可挡。 注三：即使是在Win下面的中文平台，RichWin、中文之星实际上也是败军之将，他们的丰厚利润取得于微软无暇推重中文版Windows的空档，后来这种黄金岁月再也没有出现过。 注四：其实IBM这样的史前巨龙，完全没有必要眼热Apple那一亩三分地，要知道那个时候Pc产业远没有这么庞大，IBM随便的一个子公司都不知道是Apple的几倍。但是IBM对那种对全行业的控制欲促使它还是搅了这个浑水，而且搅得一塌糊涂。 注五：抑或者是某个天才的脑子的故意所为，这虽然导致了IBM创造PC无法控制PC，但是也催生了一个产业，但是具体的思路显然已经湮没在历史之中了。 注六：这是整个微软神话中最神话的部分，这是机遇论者的最核心论点。甚至有人说这笔买卖是因为盖茨母亲的一点小小的特权，据说她可以影响某个机构的电脑采购。我对这种传言丝毫不以为然，要知道IBM是史前巨龙，很难想象一个机构的采购订单就能影响IBM的决断，尤其是PC是IBM涉足微机市场的第一款作品，他们不会太掉以轻心的。 注七：这里指得是IBM打算利用“微通道结构”（MCA）总线技术这个自己占有的标准来避免兼容机仿冒，然而最后结果却是，其他所有的兼容机厂商联合在一起支持EISA，IBM成了事实出局者，以至于后来不得不去兼容EISA。IBM还搞过很多类似的附加标准显示接口XGA，OS/2这样的软件标准等等，除了PS/2键盘鼠标口被广泛接受以外，无一成功。 注八：Wps应该说就是这次以后，基本上就奠定了非主流软件的地位。 注九：OLE技术本身在我看来就是失败技术，虽然副产品COM技术非常成功，后来成了Windows的新基础。]]></description>
			<content:encoded><![CDATA[            <script type="text/javascript" src="http://tiny4.org/blog/wp-content/plugins/wordpress-code-snippet/scripts/shBrushCpp.js"></script>
<p><em>此文在2005年3月31日曾发表于我在Donews的Blog。</em></p>
<p>我感觉值得悲哀的一件事情在于，虽然微软是世界上最好的一个成功案例之一，每个人都在研究微软的成功，但是更多的人把微软的成功看作是机遇和一些非常的商业手腕的结果。我一直避免自己变成一个唯技术论者，但是我不得不说，我觉得目前的不好的倾向在于整个行业太不唯技术论了。跟我们的政府立足的模仿西方先进技术不模仿西方的经济体制类似，我们的软件行业好像醉心于趴在微软和众多国外系统软件开发商的系统之上，专心致志地进行企业信息化建设。整个软件行业最流行的词汇是.Net和J2ee这样的企业级解决方案，就是这种现状的一种写照。</p>
<p>曾几何时，中国人的Ucdos和Wps给我们带来了无上的民族自豪感，虽然他们也建构在微软的平台上面，但是毕竟让我们感觉我们离世界软件大国的脚步并不遥远，甚至当时有人会认为中华民族的伟大复兴就将会依靠软件业。但是，一朝微软进行平台更替，整个中国软件行业才发现这种并不遥远，其实只是一种错觉。应该说Ucdos的荣光来自于微软对Dos中文化的投入甚微，或者说心不在焉，在当时我们不能准确地了解到，微软这种心不在焉也许并不是不重视中国市场，而是打算在Win95一劳永逸的解决问题（注一）。而Wps就是一种悲剧了，我有时候在想，就算金山现在做得再差劲，政府采购也应该对他们有所偏向。要知道Wps对中国的信息化贡献极大，而某种程度上说，政府的追赶时髦和没有民族软件危机意识也是Wps失败的主要原因之一（注二）。抛去这场悲剧中的民族感情色彩，我们发现在那个历史时刻，我们全行业溃败（注三）的主要原因很简单，不掌握标准，而且跟不上掌握标准者的脚步。</p>
<p>微软是怎么样从一个卖Basic解释器的小作坊发展成全球最大的软件航母的，找本微软发家的书来看，字里行间就是两个字“标准”。当年IBM出于对 Apple的眼热（注四），开始研制自己的个人电脑，也许是为了更快的进入市场，IBM在这个项目里面居然没有采取惯用的什么都自己做的战略（注五）。 Cpu选择了Intel，操作系统选择了微软买来的Qdos(注六)。在这场三位一体的历史事件中，Intel和微软成了胜利者，因为他们各自掌握了一个核心标准。而PC的缔造者，IBM因为不掌握核心标准在PC行业中一直扮演者尴尬的角色，起初他还算是行业领导者，但是因为核心标准不在手中，一旦他打算利用附加标准来重夺控制权的时候，他立刻被行业抛弃（注七）。今年年初，IBM通过把自己的PC产品事业部卖给联想，实际上已经正式逃离了这个行业。从 1980年IBM开始研制PC机到2005年IBM离开PC行业，25年弹指一挥间。</p>
<p>微软成长很大程度依赖于他在操作系统上面建立的标准，他的Office能够打遍天下无敌手，仰仗了两次重要的技术标准升级。第一次就是Dos到 Windows，大部分竞争对手不可能有微软那么了解Windows也不可能得到那么详尽的开发资料，所以这次升级，微软让很多对手元气大伤，甚至一蹶不振（注八）。第二次就是OLE技术（注九），OLE技术的推出让很多对手措手不及，而且有证据表明微软在OLE技术前期，刻意得对竞争对手进行了技术封锁。</p>
<p>如果你看过李维的《C++圣战》，你会发现Borland被微软边缘化，也主要是因为这两次技术标准升级。这里展开说句题外化，我发现了一条真理，玩微软平台开发的只有两个下场，第一，被微软弄得没饭吃，第二，去微软混饭吃。Borland一直用行动在证明我这条理论，首先是Borland在微软的打压下吃饭越来越艰难，其次是Borland的N多牛人最终去了微软。</p>
<p>本文不想继续描述其他微软利用技术标准来战胜对手的例子了，实际上这样的案例实在太多了。我认为微软的持续成功，就在于微软把自身的标准建设贯穿在整个产品体系之中，没有一款产品不是服务于标准的建设，也没有一款产品的成功不是得益于标准的建设。</p>
<p>但是在国内，我们看到很多企业并不是这么做的。这里要举的例子是某电子产品生产厂商。他们从93年开始占领市场，处于垄断地位至少５年之久，到现在市场却越做越小，产品和竞争对手的相比没有任何竞争力，唯一可以依靠的就是长久垄断带来的品牌效应。然而这种品牌效应也慢慢地在消失之中。</p>
<p>他们的现状是怎么造成的，有方方面面的原因，这里我只想谈谈没有自己的标准带来的后果。该公司早期采取了以产品项目组为中心的开发模式，在经营之初，这种模式没有表现出来任何的问题。然而，由于没有长远的规划，没有自己的标准，每款产品之间的资料往往不能共享，由于没有固定的硬件平台解决方案，也没有上层的软件平台标准，每款产品上的同类软件都需要重新开发，大大的降低了项目开发的效率。在没有竞争的年代尚好，在竞争者如云的今天，该公司甚至难以保证每个销售季节有足够的新产品和竞争对手对抗。2003年的时候有一丝的标准化的曙光，公司的某个员工为了解决频繁地在不同硬件平台上面移植某一游戏的任务，设计了一个比较高效的虚拟机系统。但是这个公司并没有完全采用这个系统，系统的开发者最后也离开了这个公司。该公司目前有一个项目组采用这个虚拟机系统开发产品上面的软件，效率很高，而且有非常多的资源可以使用。另一个项目组虽然使用了更好的硬件，但是很多精力花在了底层平台的构建，产品开发周期很长，而且运行效果相当不理想。这是很有趣的一幕，采用虚拟机的标准化的16位系统，可以高速地在16级灰度下放视频剪辑，而32位平台为了支持其实没有必要的多任务，再加上系统开发时间紧，对Cpu不熟悉等等，甚至在4级灰度下都不能达到正常的软件使用速度，最后不得不做成黑白显示模式。这个案例我亲身体验，所以感受颇深。这个公司的失败很大程度是在管理，但是有很大程度也在技术，一个技术公司没有好的技术方向，空有良好的管理，也是无法想象的。技术公司里面技术就是公司的生命，但是我听到了太多强调管理的声音，我并不反对重视管理，但是很反感最近一段时间接触到的某些人对技术的轻视，这种轻视来自于对技术层面的客观规律的不了解。我对这种思维倾向的蔓延感到恐惧，如果中国处处都没有自己的技术，那么就说明我们的管理到家了么？只怕事情不是那么简单的吧？</p>
<p>—————————-</p>
<p>注一：微软确实已经做到了。<br />
注二：这个问题要讨论起来就是一篇很长的文章了，基于我的朴素的善恶观，我认为Wps的失败政府有很大的责任，虽然更大的责任在于裘伯君自己，但是在那个历史时刻，中国整个软件行业都沉浸在Dos的虚假繁荣之下，有几个人能认识到Windows的势不可挡。<br />
注三：即使是在Win下面的中文平台，RichWin、中文之星实际上也是败军之将，他们的丰厚利润取得于微软无暇推重中文版Windows的空档，后来这种黄金岁月再也没有出现过。<br />
注四：其实IBM这样的史前巨龙，完全没有必要眼热Apple那一亩三分地，要知道那个时候Pc产业远没有这么庞大，IBM随便的一个子公司都不知道是Apple的几倍。但是IBM对那种对全行业的控制欲促使它还是搅了这个浑水，而且搅得一塌糊涂。<br />
注五：抑或者是某个天才的脑子的故意所为，这虽然导致了IBM创造PC无法控制PC，但是也催生了一个产业，但是具体的思路显然已经湮没在历史之中了。<br />
注六：这是整个微软神话中最神话的部分，这是机遇论者的最核心论点。甚至有人说这笔买卖是因为盖茨母亲的一点小小的特权，据说她可以影响某个机构的电脑采购。我对这种传言丝毫不以为然，要知道IBM是史前巨龙，很难想象一个机构的采购订单就能影响IBM的决断，尤其是PC是IBM涉足微机市场的第一款作品，他们不会太掉以轻心的。<br />
注七：这里指得是IBM打算利用“微通道结构”（MCA）总线技术这个自己占有的标准来避免兼容机仿冒，然而最后结果却是，其他所有的兼容机厂商联合在一起支持EISA，IBM成了事实出局者，以至于后来不得不去兼容EISA。IBM还搞过很多类似的附加标准显示接口XGA，OS/2这样的软件标准等等，除了PS/2键盘鼠标口被广泛接受以外，无一成功。<br />
注八：Wps应该说就是这次以后，基本上就奠定了非主流软件的地位。<br />
注九：OLE技术本身在我看来就是失败技术，虽然副产品COM技术非常成功，后来成了Windows的新基础。</p>
]]></content:encoded>
			<wfw:commentRss>http://tiny4.org/blog/2005/03/standard-and-money/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
	</channel>
</rss>
