<?xml version="1.0" encoding="UTF-8"?>
<!-- generator="wordpress/2.3.3" -->
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	>

<channel>
	<title>Think in Something &#187; 开发志</title>
	<link>http://www.thinkinsth.net/blog</link>
	<description>HowJay &#038; Milk's thinking world</description>
	<pubDate>Wed, 19 Nov 2008 06:51:03 +0000</pubDate>
	<generator>http://wordpress.org/?v=2.3.3</generator>
	<language>en</language>
			<item>
		<title>Ctrl-S</title>
		<link>http://www.thinkinsth.net/blog/354</link>
		<comments>http://www.thinkinsth.net/blog/354#comments</comments>
		<pubDate>Wed, 20 Jun 2007 13:10:09 +0000</pubDate>
		<dc:creator>HowJay</dc:creator>
		
		<category><![CDATA[In Linux]]></category>

		<category><![CDATA[开发志]]></category>

		<guid isPermaLink="false">http://www.thinkinsth.net/blog/354</guid>
		<description><![CDATA[Ctrl-S 可能算是 Windows 下最常用的保存快捷键了，但是在类 Unix 系统下面却不是起保存的功能。
最近都是在用 Cygwin + VIM 阅读和编写代码，时不时会不注意按到 Ctrl-S，导致 VIM 跟挂住了一样，啥都无法干，最后只能重启 shell，一开始我以为是 VIM 在 Cygwin 下面有啥不适应的，所以就在 ~/.vimrc 里面把 Ctrl-S 重定义为保存文件的快捷键，不料还是不行。
]]></description>
			<content:encoded><![CDATA[<p>Ctrl-S 可能算是 <a href="http://www.microsoft.com/china/windows/default.mspx"  class="alinks_links" onclick="return alinks_click(this);" title=""  style="padding-right: 13px; background: url(/blog/wp-content/plugins/alinks/images/external.png) center right no-repeat;" rel="external">Windows</a> 下最常用的保存快捷键了，但是在类 <a href="http://www.unix.org"  class="alinks_links" onclick="return alinks_click(this);" title=""  style="padding-right: 13px; background: url(/blog/wp-content/plugins/alinks/images/external.png) center right no-repeat;" rel="external">Unix</a> 系统下面却不是起保存的功能。</p>
<p>最近都是在用 <a href="http://www.cygwin.com"  class="alinks_links" onclick="return alinks_click(this);" title=""  style="padding-right: 13px; background: url(/blog/wp-content/plugins/alinks/images/external.png) center right no-repeat;" rel="external">Cygwin</a> + <a href="http://www.vim.org"  class="alinks_links" onclick="return alinks_click(this);" title=""  style="padding-right: 13px; background: url(/blog/wp-content/plugins/alinks/images/external.png) center right no-repeat;" rel="external">VIM</a> 阅读和编写代码，时不时会不注意按到 Ctrl-S，导致 VIM 跟挂住了一样，啥都无法干，最后只能重启 shell，一开始我以为是 VIM 在 Cygwin 下面有啥不适应的，所以就在 ~/.vimrc 里面把 Ctrl-S 重定义为保存文件的快捷键，不料还是不行。</p>
<p> <a href="http://www.thinkinsth.net/blog/354#more-354" class="more-link">(more&#8230;)</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.thinkinsth.net/blog/354/feed</wfw:commentRss>
		</item>
		<item>
		<title>源自 Quake3 的快速求 InvSqrt() 函数</title>
		<link>http://www.thinkinsth.net/blog/297</link>
		<comments>http://www.thinkinsth.net/blog/297#comments</comments>
		<pubDate>Thu, 07 Dec 2006 03:24:47 +0000</pubDate>
		<dc:creator>HowJay</dc:creator>
		
		<category><![CDATA[开发志]]></category>

		<guid isPermaLink="false">http://www.thinkinsth.net/blog/297</guid>
		<description><![CDATA[ID Software 的 Quake3 代码里面有这么一段，可以快速求解 1/sqrt(x)：

float InvSqrt(float x){
    float xhalf=0.5f*x;
    long i=*(long*)&#038;x;
    i=0x5f3759df - (i>>1);
    x=*(float *)&#038;i;
    x=x*(1.5f-xhalf*x*x);
    return x;
} float InvSqrt(float x){
    float xhalf=0.5f*x;
    long i=*(long*)&#038;x;
    i=0x5f3759df [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.idsoftware.com/">ID Software</a> 的 Quake3 代码里面有这么一段，可以快速求解 1/sqrt(x)：</p>
<p><code><br />
float InvSqrt(float x){<br />
    float xhalf=0.5f*x;<br />
    long i=*(long*)&#038;x;<br />
    i=0x5f3759df - (i>>1);<br />
    x=*(float *)&#038;i;<br />
    x=x*(1.5f-xhalf*x*x);<br />
    return x;<br />
} float InvSqrt(float x){<br />
    float xhalf=0.5f*x;<br />
    long i=*(long*)&#038;x;<br />
    i=0x5f3759df - (i>>1);<br />
    x=*(float *)&#038;i;<br />
    x=x*(1.5f-xhalf*x*x);<br />
    return x;<br />
}<br />
</code></p>
<p>Beyond3D.com 的 Ryszard Sommefeldt 一直在<a href="http://www.beyond3d.com/articles/fastinvsqrt/">想</a>到底是哪个家伙写了这些神奇的代码？2003年Chris Lomont还写了一篇<a href="http://www.lomont.org/Math/Papers/2003/InvSqrt.pdf">文章</a>对这些代码进行了分析。</p>
<p>对于编译，OS 这些我还有很多要看，CSDN 上有篇<a href="http://topic.csdn.net/t/20001228/20/53156.html">帖子</a>对上面的问题进行了讨论。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.thinkinsth.net/blog/297/feed</wfw:commentRss>
		</item>
		<item>
		<title>MVC 模式真强</title>
		<link>http://www.thinkinsth.net/blog/112</link>
		<comments>http://www.thinkinsth.net/blog/112#comments</comments>
		<pubDate>Thu, 10 Mar 2005 04:58:24 +0000</pubDate>
		<dc:creator>HowJay</dc:creator>
		
		<category><![CDATA[开发志]]></category>

		<guid isPermaLink="false">http://127.0.0.1/wordpress/?p=112</guid>
		<description><![CDATA[原先的程序画图时只有一种连接线，昨晚开始尝试添加另外的线类型，不过一直尝试没有成功，后来还是去那个日本人的网站，下载了例子来研究。恍然大悟。原来我之前的程序是直接在 EditPolicy 和 Command 里面访问那单独的一种链接线，所有后来想新添加一种线的时候百思不得其解怎么再添加一个 EditPolicy 和 Command，其实正确的方法是应该把所有的连接线都作为一个抽象连接线父类的子类，然后在 EditPlocy 和 Command 只访问这个抽象的父类。这样一来，随便你添加多少种连接线，都和 EditPolicy 及 Command 无关，增加新的线将会十分方便。我也是第一次体会到了 MVC 的好处。同理应该也适用于图形，不过还没有尝试。
现在我接触到的仍是 CanvasViewer，还没有接触 TreeViewer，希望一切顺利。同时还有和底层数据连接的工作待做。
说心里话，那个日本人的网站真是学习 GEF 的绝佳站点，要是有哪个好心人翻译成英文就好了。那个作者水平很高，也坚持在写这个 GEF 学习系列，可是如果他用英文写改多好啊，不知道会帮助多少人;)
]]></description>
			<content:encoded><![CDATA[<p>原先的程序画图时只有一种连接线，昨晚开始尝试添加另外的线类型，不过一直尝试没有成功，后来还是去那个日本人的<a href="http://www13.plala.or.jp/">网站</a>，下载了例子来研究。恍然大悟。原来我之前的程序是直接在 EditPolicy 和 Command 里面访问那单独的一种链接线，所有后来想新添加一种线的时候百思不得其解怎么再添加一个 EditPolicy 和 Command，其实正确的方法是应该把所有的连接线都作为一个抽象连接线父类的子类，然后在 EditPlocy 和 Command 只访问这个抽象的父类。这样一来，随便你添加多少种连接线，都和 EditPolicy 及 Command 无关，增加新的线将会十分方便。我也是第一次体会到了 MVC 的好处。同理应该也适用于图形，不过还没有尝试。</p>
<p>现在我接触到的仍是 CanvasViewer，还没有接触 TreeViewer，希望一切顺利。同时还有和底层数据连接的工作待做。</p>
<p>说心里话，那个日本人的<a href="http://www13.plala.or.jp/">网站</a>真是学习 GEF 的绝佳站点，要是有哪个好心人翻译成英文就好了。那个作者水平很高，也坚持在写这个 GEF 学习系列，可是如果他用英文写改多好啊，不知道会帮助多少人;)</p>
]]></content:encoded>
			<wfw:commentRss>http://www.thinkinsth.net/blog/112/feed</wfw:commentRss>
		</item>
		<item>
		<title>独立的 GEF 程序是可行的</title>
		<link>http://www.thinkinsth.net/blog/113</link>
		<comments>http://www.thinkinsth.net/blog/113#comments</comments>
		<pubDate>Wed, 09 Mar 2005 05:01:17 +0000</pubDate>
		<dc:creator>HowJay</dc:creator>
		
		<category><![CDATA[开发志]]></category>

		<guid isPermaLink="false">http://127.0.0.1/wordpress/?p=113</guid>
		<description><![CDATA[昨晚参照 GEF Tool Standalone 这篇文章所说了，下载了其源码并在 Eclipse2.1 + GEF2.1.2 环境下运行成功，证明了开发独立于 Eclipse 的 GEF 程序是可行的。其实任何一个简单的 GEF 例子，在最后组合的时候不使用 Editor 而使用自己写的 JFace 或者 SWT 界面都是可以的。不过在 SWT 界面下似乎比较麻烦，而 JFace 的 Action 操作更加直观也更方便，一个 Action 同时可以对应菜单和工具栏上的按钮。凌晨时我讲之前用 SWT 开发的毕设项目界面转移到了 JFace 下。有一点比较奇怪的是，我现在还不能改 Viewer 显示时的背景颜色。对 MVC 架构还需要更深入的学习。
]]></description>
			<content:encoded><![CDATA[<p>昨晚参照 <a href="http://www13.plala.or.jp/observe/GEF/GEF_Tool_StandAlone.html">GEF Tool Standalone</a> 这篇文章所说了，下载了其源码并在 Eclipse2.1 + GEF2.1.2 环境下运行成功，证明了开发独立于 Eclipse 的 GEF 程序是可行的。其实任何一个简单的 GEF 例子，在最后组合的时候不使用 Editor 而使用自己写的 JFace 或者 SWT 界面都是可以的。不过在 SWT 界面下似乎比较麻烦，而 JFace 的 Action 操作更加直观也更方便，一个 Action 同时可以对应菜单和工具栏上的按钮。凌晨时我讲之前用 SWT 开发的毕设项目界面转移到了 JFace 下。有一点比较奇怪的是，我现在还不能改 Viewer 显示时的背景颜色。对 MVC 架构还需要更深入的学习。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.thinkinsth.net/blog/113/feed</wfw:commentRss>
		</item>
		<item>
		<title>Standalone GEF application without Eclipse impossiable?</title>
		<link>http://www.thinkinsth.net/blog/114</link>
		<comments>http://www.thinkinsth.net/blog/114#comments</comments>
		<pubDate>Mon, 07 Mar 2005 05:02:54 +0000</pubDate>
		<dc:creator>HowJay</dc:creator>
		
		<category><![CDATA[开发志]]></category>

		<guid isPermaLink="false">http://127.0.0.1/wordpress/?p=114</guid>
		<description><![CDATA[下午看到这里有人说可以实现不需要 Eclipse 的 GEF 程序，不过他使用的 Eclipse 和 GEF 都是老的 2.1.1 版本，他提供的源程序我没有在 Eclipse+GEF 3.0.1 中正常运行。
我已对 GEF 架构有了个大概的了解，使用 GEF 制作一些类似流程图绘制的程序是非常方便的，但是根据 GEF Developer FAQ 上的说法，我们无法离开 Eclipse 的支持而运行基于 GEF 的程序。这也表示我将无法在我的毕设项目中使用 GEF，不能不说是一个遗憾。所以日后关注的焦点将集中在 Draw2D 上面。
晚点搜索到一个日本人的网页(日文) GEF Standalone 和 GEF Tool Standalone，不过我不懂日文，在这里有源文件下载，有待研究。
]]></description>
			<content:encoded><![CDATA[<p>下午看到<a href="http://www.cjsdn.net/post/view?bid=7&#038;id=57961&#038;tpg=1&#038;ppg=1&#038;sty=1&#038;age=0#571">这里</a>有人说可以实现不需要 Eclipse 的 GEF 程序，不过他使用的 Eclipse 和 GEF 都是老的 2.1.1 版本，他提供的源程序我没有在 Eclipse+GEF 3.0.1 中正常运行。</p>
<p>我已对 GEF 架构有了个大概的了解，使用 GEF 制作一些类似流程图绘制的程序是非常方便的，但是根据 <a href="http://dev.eclipse.org/viewcvs/index.cgi/~checkout~/platform-swt-home/faq.html">GEF Developer FAQ</a> 上的<a href="http://www.eclipse.org/gef/developer/faq.html?cvsroot=Tools_Project#dev_external">说法</a>，我们无法离开 Eclipse 的支持而运行基于 GEF 的程序。这也表示我将无法在我的毕设项目中使用 GEF，不能不说是一个遗憾。所以日后关注的焦点将集中在 Draw2D 上面。</p>
<p>晚点搜索到一个日本人的网页(日文) <a href="http://www13.plala.or.jp/observe/GEF/GEF_StandAlone.html">GEF Standalone</a> 和 <a href="http://www13.plala.or.jp/observe/GEF/GEF_Tool_StandAlone.html">GEF Tool Standalone</a>，不过我不懂日文，在<a href="http://www13.plala.or.jp/observe/GEF/">这里</a>有源文件下载，有待研究。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.thinkinsth.net/blog/114/feed</wfw:commentRss>
		</item>
		<item>
		<title>Draw2D 是个好东东</title>
		<link>http://www.thinkinsth.net/blog/115</link>
		<comments>http://www.thinkinsth.net/blog/115#comments</comments>
		<pubDate>Sun, 06 Mar 2005 05:03:19 +0000</pubDate>
		<dc:creator>HowJay</dc:creator>
		
		<category><![CDATA[开发志]]></category>

		<guid isPermaLink="false">http://127.0.0.1/wordpress/?p=115</guid>
		<description><![CDATA[一下午都在想怎么在 SWT 里面支持图形的拖放，图形之间的链接等等。虽有 sunking 制作的 SWING 绘图程序做参考，不过他那个是以按钮作为链接点的，而我的毕设项目肯定需要支持图形之间的链接。
之前有看过 GEF 和 Draw2D 的介绍，不过觉得比较麻烦，当时也没有看出来它们具体有什么用。由于实在想不到什么好的方法，晚上继续查找有关 GEF 的资料，不过进展不大，直到刚刚在 GEF3.0.1 的 help 文档里看到有 Draw2D 的一个 demo，关于锚(Anchor)，就是链接的，试着运行了一下，就是我想要的效果！太方便了，使用 Draw2D 可以让我省掉不少时间。其实 Draw2D 只是对作图提供了更方便的支持，而如果需要对图形进行编辑则需要使用 GEF。
]]></description>
			<content:encoded><![CDATA[<p>一下午都在想怎么在 SWT 里面支持图形的拖放，图形之间的链接等等。虽有 <a href="http://sunkingxie.blogchina.com/">sunking</a> 制作的 SWING 绘图程序做参考，不过他那个是以按钮作为链接点的，而我的毕设项目肯定需要支持图形之间的链接。</p>
<p>之前有看过 <a href="http://www.eclipse.org/gef/">GEF</a> 和 Draw2D 的介绍，不过觉得比较麻烦，当时也没有看出来它们具体有什么用。由于实在想不到什么好的方法，晚上继续查找有关 GEF 的资料，不过进展不大，直到刚刚在 GEF3.0.1 的 help 文档里看到有 Draw2D 的一个 demo，关于锚(Anchor)，就是链接的，试着运行了一下，就是我想要的效果！太方便了，使用 Draw2D 可以让我省掉不少时间。其实 Draw2D 只是对作图提供了更方便的支持，而如果需要对图形进行编辑则需要使用 GEF。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.thinkinsth.net/blog/115/feed</wfw:commentRss>
		</item>
		<item>
		<title>毕设项目界面初具雏形</title>
		<link>http://www.thinkinsth.net/blog/116</link>
		<comments>http://www.thinkinsth.net/blog/116#comments</comments>
		<pubDate>Thu, 03 Mar 2005 05:04:18 +0000</pubDate>
		<dc:creator>HowJay</dc:creator>
		
		<category><![CDATA[开发志]]></category>

		<guid isPermaLink="false">http://127.0.0.1/wordpress/?p=116</guid>
		<description><![CDATA[昨天忙了一天，大部分时间都在看 SWT 的资料，其中大部分又都是英文的-__-。今天比较顺利，界面部分的技术可行性已基本没有问题，参考了 SWT-Designer 网站上的 Fake Eclipse 源代码，制作了界面。
顺便学习了如何发布 jar 文件。其中有个问题，就是存储 META 信息的文件最后需要已回车来结尾，否则其中的最后一行内容会被丢弃。困扰了我好长时间。
]]></description>
			<content:encoded><![CDATA[<p>昨天忙了一天，大部分时间都在看 SWT 的资料，其中大部分又都是英文的-__-。今天比较顺利，界面部分的技术可行性已基本没有问题，参考了 SWT-Designer 网站上的 <a href="http://www.instantiations.com/swt-designer/shots/fakeeclipse.html">Fake Eclipse</a> 源代码，制作了界面。</p>
<p>顺便学习了如何发布 jar 文件。其中有个问题，就是存储 META 信息的文件最后需要已回车来结尾，否则其中的最后一行内容会被丢弃。困扰了我好长时间。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.thinkinsth.net/blog/116/feed</wfw:commentRss>
		</item>
		<item>
		<title>SWT + SWT-Designer 太酷了</title>
		<link>http://www.thinkinsth.net/blog/117</link>
		<comments>http://www.thinkinsth.net/blog/117#comments</comments>
		<pubDate>Sat, 26 Feb 2005 05:05:16 +0000</pubDate>
		<dc:creator>HowJay</dc:creator>
		
		<category><![CDATA[开发志]]></category>

		<guid isPermaLink="false">http://127.0.0.1/wordpress/?p=117</guid>
		<description><![CDATA[因为毕业设计需要用到 JAVA 的 UI 设计，所以决定使用 SWT 而非 AWT 和 SWING。今天试用了 SWT 和 SWT-Designer ，果然 SWT 的显示效果很好，而 SWT-Designer 作为 Eclipse 的插件功能十分强大，制作界面非常方便。美中不足的是 SWT-Designe 是收费软件，不过其 free 版本功能已经足够了。

SWT 是由 IBM 开发的，作为抽象窗口工具包 AWT 和 SWING 的替代品的一种工具包。IBM 的目标是创建一种 GUI 工具包，其观感和行为都像是系统中通常的窗口小部件，并且性能上也具有相同的速度。
SWT 与 AWT 本质上都是一套依赖于操作系统具体实现的 GUI 库。与 swing 在所有操作系统上外观一致的做法不同，AWT 和 SWT 在不同的操作系统上的外观是和本地窗口一样的。

但是要成功编译 SWT 程序，有几个工作你还是得做：

添加运行 SWT 所需要的类库。具体方法是在你的“项目”-“属性”-“JAVA 构建路径”里，在“库”标签中使用“添加外部 JAR”功能，把与你操作系统对应的 swt.jar (Linux 下还需要添加 swt.-pi.jar) 添加进去，一般在 [...]]]></description>
			<content:encoded><![CDATA[<p>因为毕业设计需要用到 JAVA 的 UI 设计，所以决定使用 SWT 而非 AWT 和 SWING。今天试用了 SWT 和 SWT-Designer ，果然 SWT 的显示效果很好，而 SWT-Designer 作为 Eclipse 的插件功能十分强大，制作界面非常方便。美中不足的是 SWT-Designe 是收费软件，不过其 free 版本功能已经足够了。</p>
<blockquote><p>
SWT 是由 IBM 开发的，作为抽象窗口工具包 AWT 和 SWING 的替代品的一种工具包。IBM 的目标是创建一种 GUI 工具包，其观感和行为都像是系统中通常的窗口小部件，并且性能上也具有相同的速度。</p>
<p>SWT 与 AWT 本质上都是一套依赖于操作系统具体实现的 GUI 库。与 swing 在所有操作系统上外观一致的做法不同，AWT 和 SWT 在不同的操作系统上的外观是和本地窗口一样的。
</p></blockquote>
<p>但是要成功编译 SWT 程序，有几个工作你还是得做：</p>
<ul>
<li>添加运行 SWT 所需要的类库。具体方法是在你的“项目”-“属性”-“JAVA 构建路径”里，在“库”标签中使用“添加外部 JAR”功能，把与你操作系统对应的 swt.jar (<a href="http://www.linux.org"  class="alinks_links" onclick="return alinks_click(this);" title=""  style="padding-right: 13px; background: url(/blog/wp-content/plugins/alinks/images/external.png) center right no-repeat;" rel="external">Linux</a> 下还需要添加 swt.-pi.jar) 添加进去，一般在 $(ECLIPSE)/plugins/org.eclipse.swt.X/ws/ 下面。</li>
<li>指定运行所需 DLL 的位置：菜单“运行”-“运行”-“自变量”-“VM 自变量”中输入：-Djava.library.path=你的DLL路径 ($(ECLIPSE)/plugins/org.eclipse.swt.X/os/ 下面找)，或者在 PATH 中添加包含 DLL 的路径。</li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://www.thinkinsth.net/blog/117/feed</wfw:commentRss>
		</item>
	</channel>
</rss>
