Archive for the ‘开发志’ Category

Ctrl-S

Ctrl-S 可能算是 Windows 下最常用的保存快捷键了,但是在类 Unix 系统下面却不是起保存的功能。

最近都是在用 Cygwin + VIM 阅读和编写代码,时不时会不注意按到 Ctrl-S,导致 VIM 跟挂住了一样,啥都无法干,最后只能重启 shell,一开始我以为是 VIM 在 Cygwin 下面有啥不适应的,所以就在 ~/.vimrc 里面把 Ctrl-S 重定义为保存文件的快捷键,不料还是不行。

(more…)

源自 Quake3 的快速求 InvSqrt() 函数

ID Software 的 Quake3 代码里面有这么一段,可以快速求解 1/sqrt(x):


float InvSqrt(float x){
float xhalf=0.5f*x;
long i=*(long*)&x;
i=0x5f3759df - (i>>1);
x=*(float *)&i;
x=x*(1.5f-xhalf*x*x);
return x;
} float InvSqrt(float x){
float xhalf=0.5f*x;
long i=*(long*)&x;
i=0x5f3759df - (i>>1);
x=*(float *)&i;
x=x*(1.5f-xhalf*x*x);
return x;
}

Beyond3D.com 的 Ryszard Sommefeldt 一直在到底是哪个家伙写了这些神奇的代码?2003年Chris Lomont还写了一篇文章对这些代码进行了分析。

对于编译,OS 这些我还有很多要看,CSDN 上有篇帖子对上面的问题进行了讨论。

MVC 模式真强

原先的程序画图时只有一种连接线,昨晚开始尝试添加另外的线类型,不过一直尝试没有成功,后来还是去那个日本人的网站,下载了例子来研究。恍然大悟。原来我之前的程序是直接在 EditPolicy 和 Command 里面访问那单独的一种链接线,所有后来想新添加一种线的时候百思不得其解怎么再添加一个 EditPolicy 和 Command,其实正确的方法是应该把所有的连接线都作为一个抽象连接线父类的子类,然后在 EditPlocy 和 Command 只访问这个抽象的父类。这样一来,随便你添加多少种连接线,都和 EditPolicy 及 Command 无关,增加新的线将会十分方便。我也是第一次体会到了 MVC 的好处。同理应该也适用于图形,不过还没有尝试。

现在我接触到的仍是 CanvasViewer,还没有接触 TreeViewer,希望一切顺利。同时还有和底层数据连接的工作待做。

说心里话,那个日本人的网站真是学习 GEF 的绝佳站点,要是有哪个好心人翻译成英文就好了。那个作者水平很高,也坚持在写这个 GEF 学习系列,可是如果他用英文写改多好啊,不知道会帮助多少人;)

独立的 GEF 程序是可行的

昨晚参照 GEF Tool Standalone 这篇文章所说了,下载了其源码并在 Eclipse2.1 + GEF2.1.2 环境下运行成功,证明了开发独立于 Eclipse 的 GEF 程序是可行的。其实任何一个简单的 GEF 例子,在最后组合的时候不使用 Editor 而使用自己写的 JFace 或者 SWT 界面都是可以的。不过在 SWT 界面下似乎比较麻烦,而 JFace 的 Action 操作更加直观也更方便,一个 Action 同时可以对应菜单和工具栏上的按钮。凌晨时我讲之前用 SWT 开发的毕设项目界面转移到了 JFace 下。有一点比较奇怪的是,我现在还不能改 Viewer 显示时的背景颜色。对 MVC 架构还需要更深入的学习。

Standalone GEF application without Eclipse impossiable?

下午看到这里有人说可以实现不需要 Eclipse 的 GEF 程序,不过他使用的 Eclipse 和 GEF 都是老的 2.1.1 版本,他提供的源程序我没有在 Eclipse+GEF 3.0.1 中正常运行。

我已对 GEF 架构有了个大概的了解,使用 GEF 制作一些类似流程图绘制的程序是非常方便的,但是根据 GEF Developer FAQ 上的说法,我们无法离开 Eclipse 的支持而运行基于 GEF 的程序。这也表示我将无法在我的毕设项目中使用 GEF,不能不说是一个遗憾。所以日后关注的焦点将集中在 Draw2D 上面。

晚点搜索到一个日本人的网页(日文) GEF StandaloneGEF Tool Standalone,不过我不懂日文,在这里有源文件下载,有待研究。

Draw2D 是个好东东

一下午都在想怎么在 SWT 里面支持图形的拖放,图形之间的链接等等。虽有 sunking 制作的 SWING 绘图程序做参考,不过他那个是以按钮作为链接点的,而我的毕设项目肯定需要支持图形之间的链接。

之前有看过 GEF 和 Draw2D 的介绍,不过觉得比较麻烦,当时也没有看出来它们具体有什么用。由于实在想不到什么好的方法,晚上继续查找有关 GEF 的资料,不过进展不大,直到刚刚在 GEF3.0.1 的 help 文档里看到有 Draw2D 的一个 demo,关于锚(Anchor),就是链接的,试着运行了一下,就是我想要的效果!太方便了,使用 Draw2D 可以让我省掉不少时间。其实 Draw2D 只是对作图提供了更方便的支持,而如果需要对图形进行编辑则需要使用 GEF。

Compare cell phone plans and deals | Thanks to New WordPress Themes, WordPress Themes Directory and Classified Ads