01 2011 档案
摘要:作为坚定的vim用户,其他编辑器都是浮云,折腾了一天终于搞定了mac上vim环境。下面记录下安装配置过程,备忘之。1. 安装MacVim,应该是mac上使用vim最好的选择了:http://code.google.com/p/macvim/没啥好说,下了装上就是了。2. 配置基本环境MacVim做的还是不错的,还支持背景半透明(不知道啥用哦~~)。MacVim默认是不会生成配置文件的,所以你需要自己在~目录下,新建.gvimrc 和.vim目录,注意一点,.vimrc文件也是可以用的,但它是所谓的startup setting, 是会被默认的设置给覆盖掉的,你设置colorscheme试试就知
阅读全文
摘要:作为vim用户,xcode真是让我抓耳挠腮,难受的要死,~~咬牙切齿还是把MacVim给装上,可是光有个vim不顶用啊。我一直使用exvim这个套装(神器,没用过的赶紧上),要一堆unix上的开源玩意,一个一个弄,我还不给它搞死。liunx上apt-get那玩意没道理mac上没有替代品,一阵google,果然有,还不知一个。作为软件试用深度上瘾症患者,赶紧的一个一个试。Brew(homebrew主页):好,就一个字评价,如果要安装wget,只要这样:brew会自动安装需要的依赖,然后symlinked into /usr/local。卸载也简单: brew uninstall wgetok,
阅读全文
摘要:关于初期化:http://classroomm.com/objective-c/index.php?topic=3974.0;wap关于super 关键字http://www.tjfcn.com/post/self%E5%92%8Csuper%E7%9A%84%E7%9C%9F%E6%AD%A3%E5%8C%BA%E5%88%AB.aspx关于内存管理:http://www.duckrowing.com/2010/03/08/the-cocoa-memory-management-rules-of-the-road/关于类初始化方法:http://www.cocoachina.com/b/?p
阅读全文
摘要:为了释放对象拥有的实例变量,常用的方法是在dealloc中调用release,比如下面的代码:[代码]如果这里的name是属性变量呢?在IPhone开发基础教程这本书里,你会经常在看到这样的代码:[代码]这里并没有直接访问变量本身,而是使用了编译器自动生成的setter。那问题就来了,咋的一赋值成nil,就能release了?想想看一般的setter的是怎么写的,看下面:[代码]ok,很方便的写法。但是不是说就没有问题呢?请参考下面的讨论,在KVC机制中是会有问题的。http://stackoverflow.com/questions/192721/why-shouldnt-i-use-obj
阅读全文
摘要:首先推荐非常棒的文章:http://www.duckrowing.com/2010/05/21/using-the-singleton-pattern-in-objective-c/下面是实现代码:[代码]简单解释下,详细的请看上面的那篇文章。
阅读全文
摘要:UIKit通过封装Core Animation实现了一些常用的动画效果,用起来非常方便。使用的方法是通过UIView来声明一个动画块,在这个块中做的任何属性变化,都会呈现动画效果。 具体的语法上有两种写法,这里讲的是老式的写法,IOS4.0后的新写法请参考文档,基本的思路是一样的。具体可以看这个:http://developer.apple.com/library/ios/#documentation/WindowsViews/Conceptual/ViewPG_iPhoneOS/AnimatingViews/AnimatingViews.html 先说明几个基本的概念,方便理解后面的函数。
阅读全文
摘要:mac:command + option + esc - 任务管理器command +f3 - 显示桌面command + shift + 3 - 桌面截图command + shift + 4 - 截取矩形delete - backupshift + delete - forwardcommand + m - 隐藏窗口command + h - 缩小窗口command + option + 电源键(推出键) - 强制重启,没有提示command + shift + q - logoutf4 - dashboard 设置城市,只要按一下右下角的i杀死进程:top - 获
阅读全文
摘要:天杀的GUI,所有程序要都是命令行的多好~~ :)根据官方的一个hello world例子,折腾了好几个小时,才弄明白。例子是不错的,写的非常阳春,没有多余的废话,初学者看看把:http://www.apple.com.cn/developer/iphone/library/documentation/iPhone/Conceptual/iPhone101/Articles/00_Introduction.html#//apple_ref/doc/uid/TP40007514-CH1-SW1几个操作的小技巧,给像我这样的菜鸟,在IB里按住control 点控件可以打开事件列表,commad +
阅读全文
摘要:痛恨MFC很多年了,有碰上这种点两下鼠标程序就能跑的东西,心里那个烦啊~~~:-(没辙谁让对于移动开发,咱还是新兵呢,这拖拖控件,点点鼠标的事,只好再上了。这里以windows-base的程序为例子来说明一个IOS程序的初期化过程:程序入口:首先,程序的入口函数还是main,看other resource里的main.m。这里它默认调用UIApplicationMain这个系统函数。解析plist文件和mainWindow.nib:这是程序的配置文件,包括程序在IPhone里显示的名称,和main nib文件的名称。通过UIApplicationMain这个入口,框架会解析这个plist文件,
阅读全文
摘要:如何使用?这里只是记录下如何使用的语法规则,至于类别的优缺点,使用场景,等等细节,sorry。。不知道 yet :)基本上你只需要声明另外一个类,并且指定你需要扩展的类,简单的,看例子:代码需要注意的是,当你在定义一个category时,不能指定新的实例变量,即使时空的括号,也会导致编译不过,道理也很简单,category只是改变类中函数列表,是不会去改变实例变量的,也就无法增加新的变量。
阅读全文
摘要:什么是property?是一种代码生成机制,能够生成不同类型的getter/setter函数,特别是如果你想要用点(.)操作符号来存取变量的话,你就能必须使用property。如何使用?用法是固定的,注意下property后面小括号了跟的参数列表,nonatomic代表非原子性,既不支持多线程的同步,mac上可以根据具体情况考虑,IPhone上就加上把,retain代表对setter的对象加上一个retain操作,同时也会release原有的object,copy顾名思义就是copy setter中参数的对象。看下面的例子:代码额外的内容默认的propety变量,总是可读写的,如果需要只读控制
阅读全文
摘要:init的标准写法:[代码]object-c里这个初期化方法确实是很奇怪,self居然会在alloc 已经分配了内存之后发生变化,感觉有点无厘头:( 。object-c基础这本书里的解释是,父亲函数可以根据不同的情况,重新产生一个对象。至于子类的变量能否正确反应呢?原本生成的实例如何消灭?则还是一头雾水。基本的事实是:[super init] 有可能返回不同的对象,也有可能返回nil。只能先记住了。同上面的问题,如果使用这样的代码,是否正确呢?Car* car = [Car alloc];[car init];如果按照正常的思维,因该是正确的,alloc负责分配内存,init只是初期化值而已,
阅读全文
摘要:粗略的记录下object-c的内存管理机制,有迷糊的地方也mark下,希望之后的学习能解决把。手动释放和引用计数: 熟悉windows开发的童鞋,对于引用计数应该是不会陌生的。任何“对象”(可以是类的实例,也可以是个资源)在内部会维护一个变量,称为计数器,对象初期化时,计数器初期化为1,任何对该对象的引用会使得计数器加一,同样的解引用会使得计数器减一,当计数器的值为0时,该对象销毁。引用计数使得一个资源(对象)可以在多处被使用,使用的场景类只需要关心自己什么时候需要该资源,什么时候不需要。 在object-c中使用管理对象的生存期,可以使用下面的这些函数: retain - 计数器加一 re
阅读全文
摘要:在object-c基础教程这本书里老是可以看见类似下面这种代码,我这小菜鸟就纳闷了,啥区别啊,看上去都一样么。网上找了找,找到一些说法,这里先摘出来。 someClass* object = [someClass new];or someClass* object = [[someClass alloc] init];其实是一样的,某位老兄是这样说的,new在内部调用的alloc和init,Actually "new" is not a keyword in Objective-C, but NSObject implements a class method "new" which simp
阅读全文
摘要:初学咋练难免惹笑话,有错误处拍砖哈 :-)object-c中并没有提供类静态变量,只能以文件作用域的static变量代替,然后由类的成员函数来操作,这样设计的目的,还没想明白,先mark下以后再说把。下面提供个例子:代码
阅读全文
摘要:新的工作,新的方向,现在开始朝移动平台方向发展了,今年的目标的是在IPhone开发上成为熟练的“码农” :) 。还没上班呢,传说中的mac book也没领到手(咽下口水先~~),只好先在windows下弄个object-c的编译环境下,因为xcode用的也是gcc的编译器,所以理论上任何平台都是可以编译object-c的,具体步骤如下:1. 搭建GNUStep http://www.gnustep.org/experience/Windows.html 在这里下载前面三个,GNUstep MSYS System,GNUstep Core,GNUstep Devel,不多说了,全部装好就是了。2
阅读全文
摘要:strcp strlcp memcp的实现,又写了一遍,也不知道是第几遍了。目标串的容量,字符串重叠,宽字符,四字节优化这些东西不考虑了。
阅读全文
摘要:一些老掉牙的知识点,就怕阴沟里翻船,全部翻出来看看。内存对齐,sizeof,strlen类问题: 这类问题都是考基本的内存方面的问题,基本类型的数据么,主要是字符串和指针的问题,字符串主要尾部的\0,指针注意32位机器上都是4字节的。复合类型就有对齐的问题,简单来说是由成员的对大对齐单位来指定的。具体看例子:
阅读全文
摘要:TCP本身的可靠性是利用确认机制,超时重发来保证的,这些不说了,网上资料很多。不过以前一直没有仔细学习过TCP的网络拥塞控制,现在记录下一些总结吧。 什么是拥塞? 一图胜千言,看上面的图,上面是负载-吞吐量,下面是负载-延迟,问题很明显了,受限于网络节点的物理承受能力,负载显然不可能和吞吐量成线性关系,当负载在Knee点的时候,吞吐量在一个较高的水平,同时数据包的延迟也较小,网络处于一个...
阅读全文
摘要:什么是滑动窗口协议? 一图胜千言,看下面的图。简单解释下,发送和接受方都会维护一个数据帧的序列,这个序列被称作窗口。发送方的窗口大小由接受方确定,目的在于控制发送速度,以免接受方的缓存不够大,而导致溢出,同时控制流量也可以避免网络拥塞。下面图中的4,5,6号数据帧已经被发送出去,但是未收到关联的ACK,7,8,9帧则是等待发送。可以看出发送端的窗口大小为6,这是由接受端告知的(事实上必须考...
阅读全文
摘要:哎~ 情况继续恶化,电视台都来了~~~,原本一个运作正常的公司,突然就不行了。。。真是神马都是浮云。 继续来个面试题,倒是也不怎么无聊,就是不知道有啥用,不过做做题,心里还平静点。 话说题目是,用随机算法求PI,就是圆周那个PI。随机算法神马的从来都是用过,没写过,这里随便贴个线性同余法 其中b = 0,c = 0,d = m。d称为该随机序列的种子。如何选取该方法中的常数...
阅读全文
摘要:公司糟了灾,年底了还要去找工作,真是流年不利啊。面试题啥的,向来是很反感的,有啥意义呢?哎~~,世道如此,只好把面经啥的又捧起来看了,烦啊。 题目很简单了,就是打印下面这种样式的字符,主要的逻辑很简单,可是面经上的解答实在不给力啊,直接就main里一个for就打印出来,这不是骗小孩么,也不知道那时候买这个干嘛,不过那会刚毕业,也差不多是个小屁孩了。往简单了想,变化点有三个,一个是打印的行数,一个是打印到什么位置,一个是打印的花纹,OO啥的不折腾了,就用C风格写下算了。 打印的风格函数用回调函数来隔离变化,比如上面的图里第一行是有星号,没点号的。需求变化的话,可以变成从第一行开始就有点号,第二行
阅读全文
摘要:为什么要用WSAAsynSelect? 服务端的IO模型,常见的是select、poll、epoll这种select模型,或是IOCP,AIO这种异步IO模型,这在服务器端无疑是合理的选择,那么客户端呢?用select或是AIO是否合理,或者是否有必要呢?考虑到客户端总是需要一个UI线程,如果需要用上面的解决方案,必然需要引入另外的线程来做这部分工作,线程之间的通信,同步资源,都是麻烦的东西。多线程的设计无疑使得程序变得复杂和难于调试,难道不能用单线程来实现整个客户端么?实际上是可以的,windows中提供的WSAAsynSelect就可以很方便的在一个线程中实现UI和异步IO的处理。WSAA
阅读全文
摘要:什么是signal/slot机制? 这是一种注册/回调机制,QT,libjingle中都很常用。它同时也是一种观察者模式的实现。为什么需要signal/slot机制? 表扬好同学之前,先批评下坏同学,就是MFC这个让很多IT童鞋头痛不已的框架。想象一个最常见的场景,拉一个对话框,上面放两个按钮,一个文本框,按钮按一下,文本框上数字增加或是减少一个。如果你来实现要怎么做呢?很简单么,SendMessage or PostMessage不就好了,那消息发给谁呢?爱谁谁么,直接发给文本框,要不统一发给对话框,让它转发不就行了么。无论是哪种方法都是糟糕的设计,难于扩展,难于维护,难于修改。为什么呢?先
阅读全文

浙公网安备 33010602011771号