Monthly Archives: November 2008

How to write an IM using Cocoa (2)

解决刷新问题和使用NSToolbar、NSPopupButton、NSMenu 上一篇文章说到使用NSOutlineView来管理跟组的用户,但是存在一个小问题,就是在用户改变整个窗口大小的时候,NSOutlineView的每个Cell不会及时刷新,我自己考虑应该是没能及时把redraw的消息传递过去,可是找了半天没能找到方法把消息传过去,只好请教jjgod了,他给出了方法来解决这个问题。 这应该是一个Cocoa的bug,消息没有传过去,我们只能自己动手了,所以我们需要在自己继承NSOutlineView的myOutlineView中重载drawRect:(NSRect)rect或者是inLiveResize,代码如下: – (void)drawRect:(NSRect)rect { [super drawRect:rect]; }   – (BOOL)inLiveResize { return NO; }   IM中要显示用户自己的信息,比如说头像或者状态、签名等信息,这些信息一般都显示在窗口的最上方,怎么显示这些信息呢?只看位置,最直观的想法就是使用Toolbar了,由于Cocoa提供了很方便的Toolbar接口,所以也就很容易实现这一功能了。 我们要让NSToolbar显示自己定义的信息,那么我们必须自己定义一个NSView作为NSToolbarItem,这个很容易做到: 首先在Interface Builder中建立一个NSView 然后加入自己需要的一些控件,比如Image,NSPopupButton等 然后实现NSToolbar的delegate函数:toolbar:itemForItemIdentifier: willBeInsertedIntoToolbar:、toolbarDefaultItemIdentifiers:和toolbarAllowedItemIdentifiers: 在函数toolbar:itemForItemIdentifier: willBeInsertedIntoToolbar:中,按照需要,如果需要返回自定义的NSToolbarItem,那么就把这我们自定义的View传给NSToolbarItem的setView:消息 这样,程序就可以显示我们自定义的用户信息了。 在我们自定义的显示用户信息视图中,我们需要用到NSPopupButton,这个控件使我们用来调整用户状态的,很有用途,这个控件实际上就是一个NSButton加一个NSMenu,我们需要做的就是自己定义NSMenu: 首先,我们定义一个NSMenu,可以使用Interface Builder,也可以使用程序控制生成 然后为每一个NSMenuItem加入Image属性,这样有比较好的视觉效果 然后为每一个NSMenuItem设置响应函数,把要响应的函数传递给setAction:消息,注意在传递这个消息之前,先要设置Target 好了,来看看最终的结果吧!

Is Google China as good as Google?

Google中国还是Google吗? 有些人肯定会认为我这个问题问的很弱智,其实想想,真的很弱吗。不可否认,Google是各大IT类外企本地化最好的公司之一(为什么加之一,我认为Microsoft本地化不必Google差),但是我认为Google本地化的成功得益于Google在全球网络用户中建立起来的良好口碑和巨大的魔力光环。Google的产品简洁、方便给用户清新的感觉,有些产品用户第一次使用就会爱不释手;Google的工作人员都是天才的工程师,Google有美食,Google有无比舒适的环境……这些都是Google给全世界人民的印象,是啊,有这么多正面的影响,给你说本地化不成功就是不可能啊。 但是Google China在用户对Google良好印象上面加分了吗?应该没有,Google China没有出品过像Gmail,Documents,Calender,Google Earth中一个那么有份量的产品,他们都在做什么呢?Google每年招了那么多优秀的人才,怎么就没有令人信服的产品出现呢?即使是本地化一个地图都那么难做吗?为什么这么说,请各位看我下面的贴图,Google China的地图(有一个特别本地化的域名:http://ditu.google.cn)居然出现了卫星图片和地图没有对齐这样的问题,感觉十分山寨啊! 我也是Google的用户,但我绝对不是Google China的用户。爱之深、责之切,我希望Google China能够做出与Google相符的产品。 附:下面是Google China地图的截图,同一个坐标,看看位置相差多远!我会关注他们什么时候能够解决这个问题

Become a legend

这是PES2009新加的模式,玩家只控制一名球员,从被球探发掘开始足球生涯,打联赛,打欧冠,参加国家队,参加世界杯….直到成为一个传奇。这个模式中文版叫做一球成名,似乎不太恰当,但是也算好听了。如果你选择player视角,还真有点在场上踢球的感觉。 一直以为实况系列比FIFA系列要好,从操控到游戏设计,实况都更加出众,不过像我这种穷学生只能在PC上面玩,要是有台PS3,想必会更爽哦。

SIG Project begins

一年一度的SIGGRAPH项目还是开始了,虽说我将来毕业了选择直接去工作,不准备搞研究,但是这个项目还是逃不掉要做的。其实看看最近的渲染文章,已经很少了,现在SIG感觉已经很杂了,做什么的都有,其中图像和视频的文章数量每年都稳步上升。传统的Rendering虽然有人做,但是越来越多借助于一些设备去采集数据处理,像我们实验室是不会有这种设备的。所以我们只能在传统算法中寻求新的突破,或者是处理一些公开的数据库,感觉要有大发展很难,更别说开创自己的学科新方向了。

Begin reading TAOCP(The Art Of Computer Programming)

书就不用介绍了,大名鼎鼎、如雷贯耳…. 搞了5年计算机科学还没看过这本书,真是汗颜啊! 受到牛人学长的一篇文章的启发,现在赶快把这部大作从书架上请下来,暂且不要当摆设,让我好好蹂躏一番。