我的博客已经从Godaddy迁移到了Linode上,这是由于从国内访问Godaddy空间越来越不稳定,不仅DNS解析不到,连我申请的独立IP也经常抽风无法访问,好吧,我知道错误不在Godaddy上,又是大佬在发威,不过胳膊拧不过大腿,惹不起总可以躲得起,换一家VPS从可以吧,反正我是宁愿多花点美刀,也不愿搞什么备案之类。况且Linode相比较其他VPS,还有个最大的好处在于它直接提供ssh权限,这样以后我就可以在上面搞点小应用了…
Linode的申请非常简单,网上也有很多相关的介绍,Google一下就可以,要提一下的是IDC的选择,本来我选在Fremont,但后来得到的那个IP地址非常不稳定,从国内经常访问不到(大佬的阴影真是无处不在啊…),后来通过Support Ticket联系了一下客服,迁移到了Newark,还好这次这个地址就OK了,这里不得不赞一下Linode的客服,反映非常快速,再赞一下北邮的技术,恩,也很牛…
操作系统的安装直接通过Linode提供的Dashboard就可以进行,很快速,两分钟就可以重装一下系统,我选的是Ubuntu,装完系统就可以用ssh登上去了,很爽!然后就是安装标准的LAMP软件,从这里可以参考一下Linode提供的标准安装方法,几分钟就可以搞定,然后把WordPress迁移过来,一切ok!
有ssh权限怎么能不利用一下呢,第一个想装上的当然是vpn,我装的是来l2tpd协议,这样我的iPhone也可以用,从这里可以找到一份一键式的安装脚本,使用非常方便,强烈推荐。
DNS解析我推荐使用dnspod,虽然是国内的服务,但感觉还是靠谱的。
搬家小记
2011年09月17日 |本网站遵守CC版权协议 转载请注明出自www.thecodeway.com学钢琴
2011年09月4日 |本网站遵守CC版权协议 转载请注明出自www.thecodeway.com 好吧,我知道这里已经长草了,最近中这几个月大概是我人生中最忙的几个月了,以后大概也很难像以前一样,可以有很多时间去学习一些有意思的东西,然后慢悠悠写出来了,那真是一种奢侈啊。
由于环境的改变,很多新的概念和知识已经代替我原来的生活,比如微博,团队管理,BrowserGame,RIA,Unity3D,iOS,Erlang,Golang…如果我的生活不再这么紧张,我依然很乐意分享我学到的一点一滴,“事忙人不忙”,最近我一直用这句话告诫自己,再忙也不要让自己疯掉。
最近最有意思的,莫过于学钢琴了,是从ICANMUSIC网站上学的,能够有片刻的时间沉浸在音乐的世界里,不能不说是一种难得的享受。这个网站用一种比较“傻瓜”的方法教钢琴,就是把CDEFGAB七个音以及五个半音用12个数字代替,乐谱上也用这些数字表上,所以很容易上手,但是我相信朗朗绝对不是这么练出来的钢琴,不过对于我这样的人来说,足够了。
作为会写程序的人,在学钢琴这件事上怎么能不发挥自己的优势呢?比如我一直想找一种软件,能够直接将MIDI格式的音乐变成icanmusic格式的乐谱,后来找到一个开源的软件MidiSheetMusic,能够将MIDI乐曲变成普通的五线谱,好在有源码,简单改了一下,就可以做到这点了 ![]()

依照开源协议,公开修改后的源码和可执行程序:
可执行程序下载:MidiSheetMusic.zip(72KB)
源码下载:MidiSheetMusicSource.zip(576KB)
友情附赠卡农的midi曲谱: Canon.zip(7.32KB)
旧文转发:IT命名学
2011年05月23日 |本网站遵守CC版权协议 转载请注明出自www.thecodeway.com偶然发现蔡学镛几年前写的一篇博文,今天读起来仍然很有趣味,蔡学镛一直是我敬重的一位IT大牛,他在技术上的专注和行文的风趣让人佩服,这篇文章的关注的是少有人研究但非常重要的一个区域,如何为一个IT项目(程序、公司、计划等)起一个好名字

许多人告诉我,我的名字听起来很有「书卷气」。如果他们知道我更名前的旧名,他们一定会觉得很有「乡土味」。同样的人,只因为不同的名字,竟然有了「书卷气」和「乡土味」的不同感觉。在别人花许多时间好好了解一个人(或公司、产品)之前,名称是第一印象,所以取个很「正」的名字很重要。
就以这个「言程序」专栏的名称来说,可是花了我好一番的构思,一方面我和F4的「言承旭」英文名字一样都是Jerry,向他借个光;二方面在中国大陆「程序」就是「程序」(program)的意思,所以「言程序」这个名称可以和IT沾上边。
除了「言程序」,我以前的专栏也都很重视命名,包括了Sleepless in Java(改编自Meg Ryan的电影Sleepless in Seattle)、大内高手(.NET高手的谐音)、欲望程序(改编自影集欲望城市)、Addicted to Code(改编自Meg Ryan的电影Addicted to Love)、爪哇霹雳火(改编自电视剧台湾霹雳火)。
命名很有趣,命名很重要,但命名也很不容易。在IT领域,只要你仔细观察,也可以发现许多不同的命名作风,值得我们参考。从许多IT产品名称上,可以看到匠心独具的创意。我归纳出一套简单的「IT命名学」,透过这系列文章,与大家分享。
阅读这个条目剩下部分 »
WTL+DXUT
2011年05月3日 |本网站遵守CC版权协议 转载请注明出自www.thecodeway.com WTL和DXUT都是我喜欢的框架,我知道很多人鄙视微软提供的代码框架,不过实话实说,就功能完备性和简洁性来说,WTL和DXUT做得非常不错。WTL在一些场合完全可以代替复杂的MFC,而DXUT如果应用得当的话,足可以当做一个渲染引擎来使用了,起码可以让你把精力集中在真正的渲染代码上,而不是那些烦人的设备细节,不过DXUT提供的代码范例都是创建单独的渲染窗口,而在实际应用中,比如写一些工具时,需要用到比较复杂的界面,要先创建一套窗口框架,然后其中某个窗口用来渲染,这时候要以特殊方式引用DXUT了。
下面是我写的一个将WTL和DXUT结合起来的框架范例,其实也很简单,创建出一个DXUT渲染窗口后,增加一个WS_CHILD属性,然后把这个窗口放入WTL框架中,在设置好各种DXUT需要的回调函数就行了。
按照WTL的代码规范,所有代码都在一个h文件中,Demo程序是拿SDK中的一个例子改造的,使用的SDK版本是Aug09版,WTL是8.0版。
源码下载:atldxut.h(5.5KB)
Demo程序源码下载:WTL_DXUT.zip(1.27MB)
SPH算法简介(五):表面张力的计算
2011年04月22日 |本网站遵守CC版权协议 转载请注明出自www.thecodeway.com 所谓表面张力,正如前面所讲,就是由于流体“试图减小表面积”而产生的力,这种力产生的效果非常有趣,它会使肥皂膜紧绷,使水滴变成球形,但在大部分SPH应用场合中,和其他力相比,表面张力产生的效果其实是微乎其微的,所以常常忽律表面张力的计算。
如果要想计算表面张力,就要考虑它的特殊性质,首先只有位于流体表面的粒子才会受到表面张力的影响,所以第一个问题就是如何找到那些处于“表面”的粒子。
首先构造这么一个标量场,在有流体粒子的位置都染上一个“颜色值”1,其他位置的”颜色值”都是0,针对二维情况说明,这就好像构造了类似于一个“高度图”的标量场。

根据光滑核原理,流体内任意一点r所在位置的“颜色”值为
|
|
(5.1) |
|---|
对这个标量场做哈密顿运算,回想一下我们以前提到的梯度的概念,所得到的梯度场∇cs可以给我们两个信息,第一,由于梯度反应的是标量场中“变化的程度”,所以只有在流体的边界部分才会有比较大的梯度值,而内部的梯度值几乎为0,根据这个特性可以用来判断粒子是否处于表面,第二,梯度场的方向指向大值部分,也就是流体的内部,而这正是表面张力的方向。
而表面张力的大小,则跟流体表面的“曲率”有关,这个值可以根据颜色值的拉普拉辛算子计算
|
|
(5.2) |
|---|
最终的表面张力还需要乘上一个系数和方向矢量:
|
|
(5.3) |
|---|
其中σ被称为表面张力系数,跟流体的材质有关,所使用的光滑核函数和计算密度时的一样,都是Poly6,在3D情形下,它的哈密顿形式和拉普拉辛形式分别是:
|
|
(5.4) |
|---|
|
|
(5.5) |
|---|
最后可以求出受表面张力影响,粒子产生的加速度部分
|
|
(5.6) |
|---|

