CloudApp

推荐一个Mac下的不错的同步软件,可以方便地在公司和家里把文件放到服务器端,这样无论在哪一边都可以很容易地得到需要地文件。 CloudApp 从这个网址进入 GetCloudApp 注册一个帐号,下载安装客户端之后,运行之。会看到在右上角总多的图标中多了一个“云”的图标。 点击,打开Preferences->Account 输入你的帐号 然后 ….. 把需要上传的文件直接拖上去就搞定了! 另外一个更酷的功能是保存书签。有时候在公司看到一个不错的blog地址,想要回家之后再看看,使用cloudApp就很方便了。 在Safari里使用热键(默认是Ctrl+Alt+Command+U)就把当前页面的地址保存到云端了。当然也可以使用拖放完成这个需求。 刚刚用上CloudApp没多久,说不定还有些未被发现的好东西。 限于Mac平台的话,用户群应该不会太大吧。祝CloudApp能够存活在墙内吧。

DEPAPEPE 的 Night&Day

非常好听的一支吉他曲,清新明快的节奏,相当的给力。 下面的介绍来自Google:Depapepe DEPAPEPE来自优雅浪漫的港都神户,是创造当地街头传奇的双吉它男子组合。他们的音乐是配乐也是流行乐,能够舒缓听众的心灵却又非常时尚 。2002年11月,由德冈庆也及三浦拓也二人合组而成的DEPAPEPE,仅以二把空心吉它就能表现出变化多端的心象风景以及喜怒哀乐。他们以洋溢着青春气息的轻快曲风旋律弹奏出舒缓人心的音乐空间,并从神户到大阪、京都以及东京,随着街头表演的经验累积,DEPAPEPE瞬间开启了知名度及人气!德冈庆也流行且感性的作曲功力,以及三蒲拓也情感纤细且大胆吉它弹奏,DEPAPEPE的组合成为日本乐坛一股跨界的新兴势力!用手指及琴弦歌唱的DEPAPEPE邀请你一起进入这变幻多彩的吉它的世界 刚知道这支组合,也就是这首Night & Day,就在这推荐一下吧Google试听

loadView的用法

UIViewController的loadView 用UIViewController有一段时间了,才发现以前对loadView的理解完全不到位。 假如我们用Xcode新建一个View-based Application,在ViewController.m中加上 – (void) loadView { NSLog(@”loadView Called”); } 再增加viewDidLoad,按照一般的情况,我们会有这样的Code – (void) viewDidLoad { [super viewDidLoad]; UIButton *customButton = [UIButton buttonWith….. …… [self.view addSubView:customButton]; } 现在打开MainWindow.xib,删掉其中的ViewController,并在AppDelegate.m的 – (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions; 里增加ViewController的初始化 viewController = [[XXXViewController alloc] init]; 编译运行就有问题了。Console中不断的输出loadView Called! 仔细的阅读loadView的文档,才知道loadView不是这么用的。 loadView在每一次使用self.view这个property,并且self.view为nil的时候被调用,用以产生一个有效的self.view。这个接口原本是为了让我们自定义view用的。在不被subclass实现的情况下,也就是[super loadView]的效果,应该就是产生了一个有效的view,也就是一个空白的view。 在上面这种情况下,loadView被实现为空(只有一条打印语句),而且我们没有通过XIB初始化ViewController,所以在viewDidLoad被执行时,self.view是为nil的。所以在执行[self.view addSubView:customButton]时,loadView被调用,用来产生一个有效的view,使得self.view不再为nil。罢特,我们错了(-_-!)。我们的loadView什么也没有做,于是就出现了上面的情形,不断的调用一个什么都不做的loadView…. 当然,我们只要在loadView中增加一句[super loadView]就没有问题了。但这并不是Cocoa的设计者所期望的。 loadView仅仅应该在开发者希望自行通过编码而不是Interface Builder定制view的时候被实现,而且不应该在其中调用[super loadView],你的loadView中应该有self.view = …这样的行为。 如果仅仅是想要在当前view上增加一些UIButton或是UILabel,应该在viewDidLoad里去做,此时不要实现自己的loadView。

Invalid Context

按照《IPhone Game Development》开始学习Game Development。 当在一个Game Loop中进行Update和Render时,都需要得到CGContextRef画图形。如果直接调用Update和Render, 在其中调UIGraphicsGetCurrentContext()就会报Invalid Context。 按照文档中的说法,系统会维护一个CGContextRef的栈,而UIGraphicsGetCurrentContext()会取栈顶的CGContextRef 正确的做法是只在drawRect里调用UIGraphicsGetCurrentContext() 因为在drawRect之前,系统会往栈里面压入一个valid的CGContextRef,除非自己去维护一个CGContextRef,否则不应该在其他地方取CGContextRef 对于Game Loop这种设计,应该由drawRect调用Render进行View的重绘,Update只负责修改一些变量,在Render中进行判断和绘制。

坚强的理由

标题的歌名,博客的名字就来自这首歌。很有感觉的歌词,最初听到是来自这个视频 流浪可能是很多人不能去实现的梦。80后们在这个价值观、信仰缺失的社会下成长,多少会有些莫名的孤独感吧。 附上歌词,真的能让人有感觉的还是这样的歌啊。 我想知道 我们是不是醉了 我想知道 我们是不是老了 我想知道 天空为何是蓝色的 我想知道 理想是什么 我想知道 他们是不是笑我 我想知道 你脸上的哀愁 我想知道 明天是不是最后 我想知道 我是恐惧的小丑 那些孤单的夜 路上简单的人们 告诉我,我被抛弃的理由 那些平凡的欲望 甚至沉默悲伤 告诉我 让我坚强的理由 我想知道 我们是不是醉了 我想知道 我们是不是老了 我想知道 天空为何是兰色的 我想知道 理想是什么 那些孤单的夜 路上简单的人们 告诉我 我被抛弃的理由 那些平凡的欲望 甚至沉默悲伤 告诉我 让我坚强的理由 那些孤单的夜 路上简单的人们 告诉我,我被抛弃的理由 那些平凡的欲望 甚至沉默悲伤 告诉我 让我坚强的理由