为四川人民祈祷! www.onefoundation.cn
logo of kjam.org

开始Objective-C编译

首先需要在OS X上安装Xcode,gcc也会被安装上

进入Terminal以后,我们可以执行的命令有gcc和g++,我们知道gcc用来编译c程序,g++用来编译c++程序

按照常规的想法,GCC会单独提供命令来编译objc程序,因为我们知道,Objective-C程序的扩展名是.m,Objective-C++程序的扩展名是.mm。但是GCC没有这么做,我们仍然使用gcc命令来编译objc程序

不过单纯使用gcc命令是不行的,还是需要一些参数

-fgnu-runtime是为objc准备的参数,由于objc在实现了很多动态的特性,使用了很多的运行时绑定,所以运行的时候需要有一个runtime,据说在新的版本中,runtime还支持GC

-ObjC 或者 -ObjC++ 这在标准的GCC中是不存在的,是Apple对GCC的扩展,用这个命令可以轻松的编译ObjC程序

我们用来编译main.m的命令就是gcc -ObjC -c main.m

上面两个选项当然只要用一个就可以了,更多的信息可以察看Xcode自带的GCC文档
http://developer.apple.com/documentation/DeveloperTools/gcc-4.0.1/gcc/index.html
file:///Developer/ADC%20Reference%20Library/documentation/DeveloperTools /gcc-4.0.1/gcc/index.html

注意:如果不加-c选项,gcc会帮我们link程序,但是link的步骤会出错

由此可以看出,objc对c的扩展没有c++那么夸张,就像The Objective-C Programming Language中说的一样: "Moreover, Objective-C is a simple language. Its syntax is small, unambiguous, and easy to learn. "

察看各种reference,我们可以看到 .h的文件,但是找不到熟悉的.lib或者.a文件,objc使用framework这样的概念,如果我们要link一个使用了Foundation的源程序,就要加上参数-framework Foundation
comments: 0 | tags: objc   
by kernel1983

bzzar brazzr bazaar 终于拼对了

bazaar是一个十分拗口的名字,直到现在我都觉得拼写很不方便

几个月之前知道这个名字,接着又因为Mozilla更换了他们的VCS系统,开始使用我们正在谈论的这个bzr

一个星期以前又见到了这个名字,发现原来它是用Python写的,看来不需要像svn那样,需要先编译再使用了(要知道在OS X下面编译svn的痛苦,到现在binary还是跟我speak乱码)

因为好奇,读一读文档,所谓的DVCS(分布式版本控制系统)使用了和传统的系统怎样不同的概念。

分布式的说法很简单的说就是不需要服务器,我并不是说不需要网络,仅仅是不需要特定的服务器而已,换一种说法,你旁边的文件夹有可能就承担了服务器的功能

一般来说,传统的VCS都需要一个服务器,而且相互不兼容。p4绝对不可能连上svn的服务器,svn也不能上cvs。但是对于bazaar来说,一切都可以成为它fetch代码的源,任何fetch行为被称作branch

我们可以从电脑上的另外一个目录上branch,也可以是一个web站点,一个sftp,一个网上邻居(对于Windows,它可以被透明的当作一个文件夹)

第二个观点是,提交并不需要和服务器打交道。提交这个动作仅仅相当于给自己的工作打一个标记,bzr的submit不等于svn的submit。我们可以在任何时间submit,不管有没有网络

这样看起来,对于没有固定IP服务器,或者没有良好上网条件的家伙来说,bazaar是一个绝好的东西。至少,当开发团队成员只有你一个人,或者提着笔记本出去没有网络的地方半个月,bazaar能帮你省去不少麻烦

但是bazaar绝对不是给个人使用的玩具,想象一下mozilla你就知道bazaar可以展开工作的规模了

不要对分布式报有幻想,如果你想要和其他人一起工作,没有网络是绝对不行的。虽然你可以暂时没有网络,但是最终你需要网络来把一切工作成果汇总。或者你可以使用U盘

传统的提交工作,在这里就变成了merge,最终我们branch出来的一切终将回归主分支,这就是开发,这就是开发
comments: 1 | tags: bzr   
by kernel1983

UI现状

一直不屑一顾那些使用ActiveState Python的人,至少他们对Python不够热爱.

一直想找一个能调试的编辑器免费编辑器,本来Komodo是很有希望的,可惜免费版本去掉了调试功能. UilPad还在发展之中...

为了学习COM之类的东西,安装pywin32,才知道了ActiveState Python中的pythonwin编辑器是源于此.

同样是调用scintilla,用了pywin32的方法,没有wx.

调试功能让我十分惊喜.

仍然对使用ActiveState Python的人不屑一顾...不过对于pywin32喜爱有佳,pythonwin也爱屋及乌.


wxCocoa is a work in progress with no timeframe for completion.
没有时间表.

想完全依靠wx来完成高质量的ui依然需要想象力, wx == 偷懒? yes, sometimes.

pywin32/pygtk/pyqt/pyobjc 在到达彼岸之前, 我们可以依靠?
comments: 8  
by kernel1983

LinuxLinux之后的Linux

这两天在研究一些小size的linux启动光盘,看看里面有些什么样的内容

slackware变成了最近我比较关注的版本,或许是因为slax的原因。曾经以为debian是geek们的完美世界,或许我还是太年轻了

slackware和gentoo,具有一些特别的气质。如果我不是有经验的系统管理员,我想我不会选择gentoo,不过我想在不久的将来,我有机会玩转这个有着BSD血统的高贵版本⋯⋯

在那之前,gentoo是我的陪练。我非常惊讶的发现,仅仅在50M的minial启动光盘中,已经装备了python binary。不过让我失望的是,gcc无法在光盘上直接运行。

假想在某一个时候,人类失去了所有的binary,只剩下source,然后一个先知降临了。开启人类智慧的就是一张能够启动电脑的光碟,之后先知进入了一个主机,里面有GNU和Linux的所有代码——最后,一件非常沮丧的事情发生了,我们没有一个能用的 gcc binary,我的天!

编译GCC让我们回到了鸡和蛋的问题,因为人们用ASM写成了C Compiler ,然后用C写成了GCC,并且用C Compiler编译出了GCC,从此开始,人们就用GCC来编译GCC

我仍然幻想着从0开始做这一切,不过我们至少还需要一些binary: 一个启动器,一个内核,一套编译器,还有文本编辑器,vi或者,nano⋯⋯

大概,我需要从stage1开始,继续我的gentoo之旅
comments: 12 | tags: gentoo   
by kernel1983

Guido van Rossum in Beijing

comments: 0  
by kernel1983
1...18192021222324