Tinyfool的Blog

这就是我,Tinyfool,郝培强!身高180,体重240,标准的中年老胖子。 有妻有女,无房无车,现居上海,程序员。

最近项目开发进度很紧张,今天午饭后才开始准备的keynote,内容有点简单,不过讲的效果还可以。

今天的keynote主要是介绍一个程序的生命周期,结构等问题,另外主要是介绍了UINavigationController和UITabBarController以及UITableView的使用场景和用发。也介绍了iphone开发中最常见的四个设计模式:MVC、Delegate、Target-Action以及引用计数(内存管理,今天没有涉及)。

讲完以后是一个Demo加动手环节,我从头给大家写了一个很简单的通讯录软件(数据硬编码),主要是展现,如何用UINavigationController来表现层次数据,如何用UITableView的datasource接口给它传输数据(delegate模式),怎么使用UITableView的delegate接口获得被点击的cell的id,然后在最终通讯录的详情窗口,展示了以前讲做过使用Target-Action模式,来操作UIView上面的控件(UILabel)。

下面听讲座的同事,手头带着Mac笔记本的人不多,不然我想效果会更好。

点击下列链接浏览和下载Keynote。

iPhone/iPad开发讲座 第三讲 界面和编程基础

相关链接:
iPhone/iPad开发讲座 第一讲 IOS开发简介 Keynote放出
iPhone/iPad开发讲座 第二讲 iPhone用户界面设计 Keynote放出
iPhone/iPad开发讲座 第三讲 基础UI和基础编程 Keynote放出
iPhone/iPad开发讲座 第四讲 网络通讯和Xml处理 Keynote放出
iPhone/iPad开发讲座 第五讲 定制视图和多点触摸 Keynote放出

注:iPhone OS 3.2的大多数新特性是为iPad设计的,有些未来版本的iPhone上面也会支持,不过可以想见大多数为iPad定制的界面元素是不会出现在iPhone上的,例如popover等。

为了安全,iPhone OS的每个第三方软件都运行在自己的沙箱内,有自己独立的<Application_Home>/Documents目录。而只有iPhone内置的应用才可以通过iTunes来交换数据,这样就非常非常的不方便。

如果你做了一个电子书软件,支持用户自己添加书籍,以往你的最佳解决方案就是在代码内放置一个web服务器,给用户提供一个可以上传的web页面,非常的不方便。到了iPhone OS 3.2/iPad上,终于有了文件共享功能。只要你在程序的Applicatio-Info.plist内加入一个新的属性UIFileSharingEnabled,然后值设置为true即可。注意:(这里因为Objective-C的布尔值采用了YES和NO来代表真假。所以很容易让人误解为值应该设置为YES,但是如果这么设置,其实你是添加了一个字符串键值,正确的做法是在属性UIFileSharingEnabled上按右键,选择菜单Value Type,选择Boolean,然后,值会表现为一个选择框,选中即可。修改后直接重新编译可能不会有效,需要删除掉原有版本,用新版本替换。)

打开了这个值以后,iPad连入到iTunes 9.1以后版本,就会看到一个在应用程序选择界面下面出现了一个文件共享面板,列出了支持此功能的所有程序,这里可以浏览你的程序的<Application_Home>/Documents目录,也可以在里面添加删除文件。

有了此功能,再也不用费劲包含一个web服务器了,这是目前iPad下最方便的本地文件传输方式了,当然此功能如果在iPhone一代的时候就有,那就好了。

昨天下午,在公司做了第二讲,来了很多人,还有很多貌似是其他分公司的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放出

最早听这个故事貌似是我爸讲给我的,后来似乎在《笑林广记》中看到过,不过出处今天不细论了。

话说:

曾经有个地主四体不勤,五谷不分,从来不去看自己的土地,反正有下面人管着也不需要他自己操心。

某天不知道怎么心血来潮,他来到了自己的一块地前,佃户正在给蔬菜浇粪。

他大为惊异,质问佃户,“你们,为什么要往菜上面浇粪,这以后怎么吃?”

佃户答道,“东家,只有这样蔬菜才能长得大,才能好吃。”

他不信,要求佃户给他种的菜一点屎尿都不准浇。

几个月后,特供他的菜终于成熟了,他让下人做好,兴奋的准备吃。谁知道,他吃了一口就吐了出来。那些菜又小,又涩很难吃。

他叫来佃户,问道,“菜怎么这么难吃?真的是因为没有浇粪么?”

佃户,“东家,真的啊,没有浇粪的菜就是难吃的。”

“哦,我明白了,去给我舀勺粪,放在碗里!”

另一个关于屎尿的故事,来自小时候看的《加里森敢死队》,

话说:

加里森敢死队的兄弟们,不知道怎么就缴获了一辆坦克,这当然是个宝贝,但是那是战区,弄不到柴油。

兄弟们想到了,酒精也可以用在柴油发动机里面,可是酒精也不好找。

好在他们有会酿酒的人,决定自己寻找土豆来酿酒。这可乐坏了其中一个哥们,他是大酒鬼,很久都没有喝到酒了,于是他很积极的帮助,建设蒸馏的设备(一大堆空油桶连在一起),收集土豆等等。

然而一切都做好了,酒却没有酿出来,原来缺少了酵母。于是会酿酒的兄弟说需要一些大便(里面有很多酵母)放进去,这样才能酿出来。

爱喝酒的哥们急了,说这样怎么能酿酒了,这样酿出来的东西我一定不喝。于是,后面的酿酒工作他也不参与了。

但是,最后酒还是如期酿好了,放到坦克油箱里面,发动机运转正常。大家喝了喝也觉得很好喝,但是爱喝酒的那个哥们就是不喝。大家也没有勉强他。

出发的日子,找不到那个哥们了,后来大家发现,他在放酒的地方睡着了,头天晚上他先是很小心的试了几口,然后是欲罢不能,喝的酩酊大醉。

好了,来点土的,这两个故事告诉我们什么呢?

我想说,一切事物都有它的规律,也许听起来不那么卫生,那么心旷神怡,但是违背规律是没有办法作出事情的。

一者:

前些日子,一个朋友想做一个基于地理信息的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了,这边热,找个凉快地方待会儿吧。