Archive for 六月, 2009
六月 27th, 2009
Linux下大多数软件都是将core和UI完全分离,很多程序原作者只提供了CLI接口,而图形化接口则由另一些人完成。这种做法不仅减小了开发难度,缩短了开发周期,松散的耦合使程序更容易移植。这和很多windows程序形成了鲜明对比,尤其是MFC的程序,core代码和UI代码杂糅到doc/view的框架里,完全没有可移植性。
这学期写大作业想做个GUI,就顺便看了下MFC,觉得MFC现在的现在的地位十分尴尬,大型项目几乎清一色SDK,小型应用则是.net的天下,MFC被用的最多的莫过于CString了。一个Application Framwork已经退化成一个单纯的Class Library了。
暑假前的小学期,又有一个不大不小的作业,决定完全在Linux编写,并且Core和UI完全分离,有时间的话想用GTK做GUI。直接用C代码设计一个稍微复杂点GTK界面简直就是自找苦吃,于是上glade。
Read the rest of this entry »
六月 20th, 2009
一、不含多态的继承
即基类里没有虚函数。这时候派生类成员的存取时间并没有增加,但是空间上会有浪费。比如有如下两个类
class X {
int a;
char b;
};
class Y : public X {
char c;
};
一个X对象占用4+1+3(padding, 假设4字节对齐) = 8字节。而一个Y对象并不是占用 4+1+1+2(padding)=8个字节,而是占用4+1+3(padding)+1+3(padding)=12个字节。编译器之所以如此设计,是为了使派生类对象中基类对象的内存结构和原始的基类对象一致,这种一致性保证了通过指针复制对象时不出错。如果按照前一种内存布局,会产生错误,比如:
Read the rest of this entry »
六月 8th, 2009
这几天网络环境急剧恶化,不得不把Tor搬出来
发现源里就有, 直接装之。装完以后默认的Socks绑定地址是127.0.0.1 9050, 当然也可以在配置文件里改掉:
大概在20行的位置,还有就是默认情况下tor是作为服务启动的,如果想改成手动启动,把配置文件里的RunAsDaemon的值从1改成0就行了。
Tor装好后就要给浏览器设置代理了,firefox这种支持socks代理的浏览器直接把socks代理设置为 127.0.0.1 9050就行了,配合switch proxy tools这种切换代理的插件会很方便。像opera、konqueror等不支持socks代理的浏览器就需要privoxy来帮忙了:
Read the rest of this entry »