Archive for 六月, 2009

Linux 下 gtkmm + glade 开发

4 Comments »

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 »


类继承的开销 ——《Inside the C++ Object Model》笔记二

No Comments »

一、不含多态的继承

即基类里没有虚函数。这时候派生类成员的存取时间并没有增加,但是空间上会有浪费。比如有如下两个类

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 »


在Archlinux上的安装Tor

6 Comments »

这几天网络环境急剧恶化,不得不把Tor搬出来

pacman -S tor

发现源里就有, 直接装之。装完以后默认的Socks绑定地址是127.0.0.1 9050, 当然也可以在配置文件里改掉:

sudo vim /etc/tor/torrc

大概在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 »