突发奇想为什么不做个豆瓣电台的osx版本呢 于是就有了这个开源的项目 http://ixhan.com/project/douban-fm-osx/ 后发现Du Song同学的FanRadio: Free Music For Mac 已做的无懈可击,同时twitter上朋友告诉我dashboard已经支持后台的音乐播放了。 有点多此一举的感觉。= = 不过个人还是喜欢一个原生的播放器浮在桌面上的感觉拉。 原计划0.2版本中会提供解析当前歌手名,歌曲名并可以同步更新至adium的状态,以及歌词显示功能。 坏消息是今天发现从flash中获取到内容相当困难。 好消息是通过抓包发现了豆瓣电台的接口,相当简单。可以做不少好玩的东西去。
事情是这样的,4个月前我写了份实现类似下拉框选择操作的界面. 一个月前,发现了这个View 在dealloc 会crash掉. 多次调试无果,上 devForum.apple.com 询问也无人问津. 今天决定再次调试下,还是没找到哪里出问题. 最后决定求助 cocoachina 上的现场观众 最后开始一行一行的注释代码做终极调试. 离谱的事情发现了,只要我创建一个名为 mainText 的 UILabel ,在dealloc 中程序就会crash ,改成其他名字无事.难道是apple的bug? 新写了个view测试了,还是没问题. 接着接着就发现了在dealloc方法中: [mainText release] ,mainText = nil; // NSLog(@”release %@”,bgView); [bgView release]; // NSLog(@”release %@”,originView); [originView release]; // NSLog(@”release %@”,labelArray); [labelArray release]; // NSLog(@”release %@”,mainText); [mainText release]; 该死的,不知道当时那根神经错了,居然释放了两次,当然出错咯.问题也解决了. 所以在确认释放对象的情况下一定要写成: [instance release],instance = nil ; 个人经验是,对于objective-c的内存管理都是得经过磨练才出来的,前期多犯错误是好事情. 当然我认识一个朋友 …
在看一本叫 Programming Game AI By Examples 的书 (本来打算买实体书的,后来想想不能破例,还是down了本电子书 “) 看完第二章后彻底折服了 ,写的这么好的书真是不多见的 这才是真正的设计模式 ,寥寥几行代码就把整个世界给建模了 结构异常清晰,细节异常周到 堪称完美的作品 自己曾设计了不少不成型的东西,这次能见大师级别的代码确实收获颇多。 觉得一下子成长了不少。 而且最兴奋的是发现许多设计上的结构在许多地方都是雷同的 包括 Objective-c ,Box2d ,之前还一直觉得 box2d 使用起来还真是繁琐 创建一个对象还得先 ref 后才能创建 简单的说设计模式就是通过规范的设计和规范的代码(当然带来的结果是繁琐的代码会多了不少)带给清晰的结构和逻辑。在代码和功能越来越多时便显的尤其重要了。 在虚拟机里面把书上的例子全跑了一遍,决心花半年时间把所有东西消化,这些demo太吸引人了。 我的终极目标是做一个架构师,不只是用户,程序员也会使用我的产品。努力奋斗,会来的。:) 需要电子书的朋友网上自行搜索把,很多资源的,官网并提供源码和例程下载。
大四第一学期曾在学校的数字媒体实验室工作了很短时间,第一次看到现场手绘,maya做动画,zbrush绘制高模,倍感荣幸。 其中还有部分人在把弄一个游戏引擎(忘记叫什么名字了),可以让机器人在里面蹦蹦跳跳的走路。 那一刻让我想起第一次玩准3D游戏「生化危机II」的场景,震撼,鸡东的整个人在颤抖。 随着年龄的增长,对游戏的感觉也从狂热渐渐变成消磨时间,甚至忘记了小时候的梦想。 第一次游戏行业距离我这么近,却因为心有余而力不足放弃了。 回到标题上,自从 Unity 推出了免费版后,蠢蠢欲动,今天终于下载把玩了下。 一打开默认有个island的项目,场景做的很细腻,令我惊讶的是点击运行无需等待即可在场景中测试,很棒。 一遍看教程一遍开始了第一个测试项目。专业词汇挺多,没法像看程式书那样一下子就消化一堆。 最后还是不费力的做好了第一个场景,放了个对象在自己的小岛上跑了一圈,incredible! 简直想象不到眼前的居然是我做的。hohoho 暂时对Unity的感觉是,很简单,很高效,而且做出来的效果比我想象中好很多,顺便说说它使用的脚本语言 Unity JavaScript ,但是我怎么看也和我的老朋友 ActionScript3 更相似些 ,好处是可以少浪费时间看新语法书了。 附xhan’s 终极防御要塞。 这里是更多图片
更新(Nov 9,2009): 在3.0系统中,sdk 提供了 MFMailComposeViewController 来显示发件界面,并提供附件功能。 if ([MFMailComposeViewController canSendMail]) { MFMailComposeViewController *mcvc = [[[MFMailComposeViewController alloc] init] autorelease]; mcvc.mailComposeDelegate = self; [mcvc setSubject:@"Here's a great photo!"]; NSString *body = @”<h1>Check this out</h1><p>I selected this image from the <code><b>UIImagePickerController</b></code>.</p>”; [mcvc setMessageBody:body isHTML:YES]; [mcvc addAttachmentData:UIImageJPEGRepresentation(image, 1.0f) mimeType:@"image/jpeg" fileName:@"pickerimage.jpg"]; [self presentModalViewController:mcvc animated:YES]; } 在程序中如何启动系统的Email程序并在内容中添加图片附件? 以下是代码: – (NSString *) base64EncodingWithLineLength:(unsigned …
昨天纠正了长达几年的关于字节序的错误理解。 受到移位操作符的影响,一直认为在内存中数字的保存方式和显示的一样,比如一个2直接的short 9 ,保存在内存中应该是: 00 09 这种形式,因为这样移位才说的通。 否则如果按照低字节优先的方法 09 00 右移位就会出乱子了~ 结果昨天研究和服务器socket通讯的例子中 发现了个陌生函数 :htonl 。 man (越来越喜欢命令行了)后发现是 host to network long(short) 的缩写 ,这下彻底困惑了。难道 c 在内存中的数据不是想象中的那样? 最后K大侠亲自上阵,示范了使用GDB debug ,也帮我验证了我多年的错误观点: #include <stdio.h> int main() { int a = 8; char *p; p= (char*)&a; a = a>>1; char *k = &a; return 0; } gcc -g test.c # …
iPhone 默认不带播放MIDI的框架,所以播放MIDI还得寻求第3方的库帮忙。 这里使用的库就是大名鼎鼎的 FMOD ,许多火爆游戏使用的都是这个库。开发者可以免费下载使用。 首先下载安装 FMOD API FOR IPHONE: http://www.fmod.org/index.php/release/version/fmodapi42607iphone-installer.dmg 安装后可以在目录中看到不少示范代码,可惜没有MIDI。 自己写一个:) 感谢强大的api,写起来异常轻松。 新建一个基于view项目 修改项目属性,添加 Other Linker Flags 为 -lfmodexL_$PLATFORM_NAME 添加 Header Search Paths :/Developer/FMOD\ Programmers\ API\ iPhone/api/inc (默认是这个位置,修改成自己FMOD安装的目录) 添加 Library Search Paths :/Developer/FMOD\ Programmers\ API\ iPhone/api/lib (同上) 把 appDelegate 修改成 .mm 的后缀 MIDI 播放需要一个 DLS 文件, 在osx 下没找到,这里使用了xp 自带的 gm.dls 文件(3M 有点大~),拷贝到项目中。 修改ViewController …
曾经用Ruby 写了个脚本用来统计项目中文件行数,没事打发下时间顺便满足下小小的虚荣感。 发于cocoaChina论坛中(http://cocoachina.com/bbs/read.php?tid-8266.html)。 结果惨遭鄙视。 原来用 bash 一句话就可以搞定 !(用Ruby还写了那么多代码~悲剧了~) find . -name ‘*.m’ -exec cat {} \; | wc -l find . -name ‘*.h’ -exec cat {} \; | wc -l find . -name "*.m" |xargs wc -l 掌握一些常用命令还是很能提高工作效率的。学习中。