搬家ed

11月 17th, 2009

请大家访问新blog,这里将不再更新

http://www.ranjiao.com/blog

尝试VPS中

11月 11th, 2009

前两周俱乐部买了一个VPS服务器,几天下来基本上明白VPS是个怎么个用法儿了。
首先VPS是一个运行在服务器上面的虚拟机,你可以通过ssh等方式来控制它。我们买的这个是centos的系统,搭配了Kloxo来进行管理。Kloxo是一个通过网页方式来控制VPS的管理程序,功能非常强大,域名、DNS、WEB服务器、配额管理、文件管理、进程管理、文件操作、文件解压,什么都可以做。通过Kloxo可以直接添加域名,设置web服务器的基本配置,启动服务,中间不用一个配置文件都不用改。

Kloxo另外一个很有用的功能是“客户”功能。你可以在Kloxo里面添加“客户”或者“代理”,他们就会拥有自己的一个Kloxo账户,还会自动生成Linux帐号、服务器配置文件、FTP帐号等等。客户和代理的区别在于后者拥有添加客户的权限。而对于每一个Kloxo帐号还可以添加一个子帐号来共同管理同一个Kloxo帐号(说的真绕,不知道说明白没有)。你可以买一个VPS然后给几个朋友分别开一个客户,分上限额,共同来用这个VPS。甚至都可以不会用命令行,只要明白了Kloxo那个网页界面就成。

通过ssh远程控制半夜凉初透服务器的感觉的确比较酷,不过也出现了没有想到的问题。首先VPS价格会比普通的虚拟空间要贵,这直接导致我们买了只有128M内存的VPS。然后就是VPS不够稳定,这一点在我们这个小内存VPS上面就非常明显。一开始web服务器默认使用的是lighttpd,在换成apache以后一天之内死机了两次,而且都是在几乎没有流量的情况下发生的。检查了一下发现是内存用完了导致的死机。apache一启动以后就会有6个线程,每个线程显示占用20-30M内存。虽说实际使用的并没有这么多,但是随便来一点点访问量内存就全部耗完了。不得以换回了lighttpd,发现传说中lighttpd省内存还真不是吹的。

使用seige对VPS进行了一个小小的压力测试(其实没有多大访问量)。使用15个并发访问,每两次访问之间间隔1秒钟,也就是说每秒访问15次。总共持续10分钟。服务器方面,放了3个域名,分别对应了mediawiki, wordpress, drupal三个php程序。seige随机的访问三个域名中的任意一个。

seige统计如下:
Date & Time, Trans, Elap Time, Data Trans, Resp Time, Trans Rate, Throughput, Concurrent, OKAY, Failed
2009-11-10 21:20:17, 5886, 598.99, 41, 1.02, 9.83, 0.07, 10.02, 5163, 0
这10分钟总共有接近6000次http访问,平均响应时间是1.02秒,最长响应时间7.7秒,最短0.49秒。

服务器端使用vmstatm每隔十秒记录一次内存使用量,内存余量一直在20-30M之间波动,在测试的后半段系统把一部分内存移到了swap分区,物理内存空余量回到了接近40M。CPU占用率一直在30%左右。

事实上我已经在这个VPS上面放上了一个blog: http://ranjiao.com/blog 只是还在犹豫要不要把yo2上的这个blog全部搬上去。

让Win7与Linux共存

10月 25th, 2009

前两天突然发现学校的bt网站上面有win7的下载。听了网上那么多的正面评论也非常好奇传说中的win7到底是什么一个样子,于是仗着教育网的速度以迅雷不及掩耳盗铃之势下下来安装上了。顺便抓了一个软件破解运行了一次,重启以后发现居然就搞定了。心里暗想这可比当年xp的破解简单多了啊。玩了一会儿玩够了,便打算重新安装grub以同时引导win7和linux。一搜索才发现我这种没有刷bios的软破解和grub冲突,不能按照以前的办法直接把grub安装到mrb中去,而是必须把grub安装到root分区,再让Win7的引导程序中加入一项启动项把引导转到这个分区里面来。

首先你需要安装EasyBCD,用它可以修改Win7的引导程序配置,在其中加上Archlinux的引导。兴冲冲的把它装上了以后发现仍然不能引导。这才想起来当初我的grub是直接安装在MBR里面的,这下被win7覆盖以后就没有东西可以引导linux了。于是乎刻了一张archlinux的盘,用chroot方式进入grub,用以下命令把grub安装到linux的根目录里面去:

root (hd0,5)
setup (hd0,5)

第一个命令指明了包含有/root的分区,如果你和我一样没有专门为/root分区的话直接指明根目录那个分区就好了。第二个命令则是把grub安装到那个分区上面去。

稍微需要注意一下的就是grub对硬盘的命名方式和linux下面有点区别。(hd0)代表mbr,(hd0,5)代表的则是linux下面的hd6。如果记不清楚自己的分区编号的话可以输入“(hd0,” 然后按tab键,grub会列出所有的分区(当然你要是看了它给出的列表还是分不清谁是谁...那你还是重启进windows看吧)。

PS: 用了一天,感觉对Win7的任务栏非常的不习惯

用GAE开发wiki

10月 8th, 2009

  我越来越发现我out了,GAE都出来这么久了我才发现在google code上面有一个google官方的项目,里面塞满了各种使用GAE来做应用的例子。于是国庆这段时间把它整个下了下来,将其中的cccwiki这个例子修改了一下成了一个可用性更强一点(但是功能仍然很弱,国庆闲暇时候做的东西不要有太高期待哈)的wiki。点这里可以看到例子,如果对源代码感兴趣的话可以在这里找到(使用Mercurial版本管理)。

wiki-screenshot

wiki-screenshot

  最初的cccwiki只是很简单的把每一个页面的html源代码保存并展示出来。我做了以下修改:

  • 增加了revision功能,把修改的历史记录都全部保存了下来
  • 使用wiki标记语法,而不是直接标记html
  • 用MarkItUp替代原先的TinyMCE作为编辑器。因为前者支持wiki语法,而且貌似也更灵活
  • 加入了CreoleParser来解析wiki标记语法。不过Creole语法和MarkItUp所支持的wiki语法不大一样,还需要对MarkItUp进行修改
  • 对界面进行了一点点修改,看起来似乎是要好一些了?

  整个修改的过程非常的顺利。我是用的Eclipse+Aptana PyDev来开发的,虽然整个过程中没有用一个完整的rails或者django之类的框架,但是效率并不低,很多功能很快就实现了。

  一方面是因为GAE特殊的数据存储机制。GAE中不能使用通常意义上的数据库,而是用的google自己开发的使用的分布式数据存储(官方管这个叫做 Google App Engine datastore)。感觉上应该很适合wiki这种数据。经过GAE包装以后感觉用起来非常像Ruby on Rails中存储数据的方式--你只需要声明一个类,然后把数据直接赋值给它的某些成员变量,然后调用一个叫做put的成员函数就保存进去了。对于查询也可以用类似Rails的类成员函数的方法来进行,同样的如果想要进行复杂的查询的话也可以使用GQL(一个google自己搞的类似于SQL的语言)来弄。总而言之,你不需要也不能和数据库打交道,也就免去了很多数据存储方面的代码量。这方面整体感觉和Rails非常像。
另一方面,虽然GAE并没有提供创建项目的一些脚本,但是这对于开发效率的影响其实也并不大。众所周知,那些脚本无非是给你创建一些文件夹和没有多少行代码的文件,在Eclipse中干这些事情也不会多花几分钟。

  django的粉丝肯定会对GAE非常不爽,因为数据库不能用直接导致django的MVC中的Model一层完全就不能用了。不过另一方面,自己重新写一个Model层也不会很费事,google已经把datastore弄得很好用了。真正让人觉得不舒服的是GAE中的诸多限制。你只能通过GAE中的接口通过http方式访问外部的资源,发邮件也是如此。如果你的程序太消耗CPU,或是带宽,或是其他什么硬件资源,那么它会被停掉。不过相对于其他的免费空间GAE已经算是很不错了。

  GAE上线到现在时间已经不短了,但是仍然没有多少出名的应用部署在GAE上面。这个结果似乎也是显而易见的:虽然GAE的软件部分已经开源了,但是其中的关键技术--分布式的计算和存储--却是其他人所很难复制的。为了开发GAE上面的应用我必须遵从它的软件接口,那也就意味着这个东西如果不想在google上面跑的时候就必须面临大量改动。而且谁也不能保证什么时候google会不会像关闭其他半途而废的项目一样关掉GAE。对GAE这个东西玩玩就好了,要是真想做东西的话还是用django吧。

Free Software Day @ Beihang

09月 22nd, 2009
Free Software Day相片

活动结束以后所有干活儿的人一块儿拍的相片,头最大的就是我啦

在上次的InstallFest之后,北航开源软件俱乐部又弄了一次活动--FSD北航站。今年的自由软件日活动貌似声势浩大,光是北京就有12个地方在弄,其中绝大部分是高校。

这次活动BLUG给联系到了6位嘉宾前来演讲,包括北航毕业的3个师兄和3个来自不同地方的老外。计算机系的师兄分别介绍了云集算,moblin等。一位老兄介绍了很新鲜的OpenSource Hardware的概念,感觉上就好像是DIY程度很高的单片机之类的东西。用着可爱的100美元电脑的Martin仍然活跃在开源圈子里面,时隔一年又来到了北航介绍如何开始使用Linux。

整个活动从两点持续到四点。原本担心会因为没有人来而变成我们这帮人的自娱自乐,结果演讲还没有开始教室里面就已经做的满满当当了。因为基本上是讲座,组织起来倒是省事儿很多。不过我的电脑在连接投影仪的时候却因为分辨率没有设置对头,导致有人讲的东西在投影仪上一直有一道黑边 :cry:

我的代理被挤爆鸟...

09月 18th, 2009

在之前的一篇文章中我公布了自己的GAppProxy服务器地址,现在它终于达到了Google App Engine免费空间的带宽上限,被挤爆鸟  8O 我另外新开了一个服务器,地址是:http://confusedfly2.appspot.com 看看它多长时间能爆掉

另外就是,GAppProxy最近有了更新,修复了在处理cookies时候的bug。以前经常遇到的使用代理的时候不能登录twitter等问题现在已经不存在了。而且从GAE的路线图中可以看到,未来将会添加对大文件处理的支持。而且貌似最新版的GAppProxy通过使用多段下载的方式来突破GAE免费版一次访问只能下载1M文件的限制。

GAppProxy的管理功能

08月 5th, 2009

之前因为工作的原因掉到了没有网的地方去了好长一段时间,现在终于回到文明社会了。。。

今天无聊翻GAppProxy的代码,才发现它的服务器一段的代码非常的简单,只有3个源文件,也就是fetch.py, admin.py和accesslog.py。其中代理功能就是使用fetch.py来实现的,而admin和accesslog则是实现了简单的日志功能。于是乎尝试访问admin.py,但是服务器只是简单的丢出来一句“Forbiden!"了事。看了看代码才发现,可能是作者考虑到性能的因素把日志功能部分的代码给注释掉了,而且官方网站上面也没有任何关于这个管理功能的文档。

要打开这个功能很简单,只需要做以下几个修改:

  1. 在fetch.py的185行 logAccess(netloc, self.request.remote_addr) 取消注释
  2. 在fetch.py的32行 from accesslog import logAccess 取消注释
  3. admin.py的第90行 if user.email() == 'xxxxx': 把xxxx改成你管理GAE用的google账号地址

好了,现在只需要更新服务期短的代码就可以使用简单的日志功能了。GAppProxy带的有两个简单的功能:记录使用代理机器的IP和请求访问的网址。只需要在登录google账号以后访问以下网址:


http://xxxx.appspot.com/admin.py?obj=accesslog&cmd=list_pop_desti
http://xxxx.appspot.com/admin.py?obj=accesslog&cmd=list_freq_fro
http://xxxx.appspot.com/admin.py?obj=accesslog&cmd=clear

就可以查看最热门访问站点、查看最常用的用户和清除记录。

但是现在GAppProxy的记录功能还很简单,这也许也是为什么作者把它注释掉的原因。但是使用这个东西还是能看到一些有意思的东西的,比如说我看了看我之前公布出来的FetchServer的记录,发现其实还是有一些人一直在用它,而且还发现了一些被东篱把酒黄昏后墙掉的有意思的网站 :D 貌似现在就属GAppProxy和Tor是最稳定的翻人比黄花瘦墙手段了,估计只要GAE一天不倒这个GAppProxy就可以一直用下去。

3ds Max中导出Cal3D骨骼动画

06月 29th, 2009

最近要做一个3d引擎的动画性能测试,所以得为各个引擎导出骨骼动画,其中就包括使用了Cal3D的Crystal Space和OSG。其中Crystal Space本身就可以直接读取Cal3D的骨骼动画,而OSG则是得是用一个名为OsgCal的插件才可以。此外在网上还看到有人在Ogre中使用Cal3D来渲染骨骼动画。

虽然Cal3D用的也算是挺多的,但是很奇怪的是这个项目已经有两三年没有更新了。同时官方文档的描述也很简单,唯一一个官方的教程居然绝大部分篇幅是将如何在3ds max中制作骨骼动画,关键部分如何使用Cal3D插件只有简单的两段话。对于第一次使用Cal3D的人来说肯定会被它搞得一头雾水,而且各个步骤中有一个地方错了都会导致最终的骨骼动画不正确。这里把我试验正确的d导出步骤贴出来:

  1. 导出骨骼
    a. 选择骨骼根节点bip01
    b. 打开Figure Mode
    c. File->Export Cal3D Skeleton
    d. 选择所有骨骼,通常默认即可
  2. 导出材质
    a. 所有纹理必须使用tga格式
    b. 选择骨骼根节点bip01
    c. 打开Figure Mode
    d. 打开材质球,将所有材质命名为material[0], material[1]这样的名称
    e. File->Export->Cal3d Materials
    f. 选择导出的材质(每一种材质分别需要导出一次)
  3. 导出模型
    a. 打开Figure Mode
    b. 选择需要被导出的模型
    c. File->Export Cal3d Mesh
  4. 导出动作
    a. 关闭Figure Mode
    b. File->Export Cal3D Animation
    c. 选择之前导出的谷歌文件
    d. 选择骨骼,默认即可
    e. 选择导出动作的起始结束帧号,帧速和displacement(不知道有什么用?)
  5. 创建xxx.cfg文件,格式如下:

scale=0.1

skeleton=skeleton.csf

animation=running.caf

material=material.crf

注意事项:

  1. Cal3D的导出插件只能支持3ds max 8。如果你是用的9或者更高版本,虽然你已经看了不少内容但是你也只能放弃了:(
  2. 导出时必须严格按照上面所说的顺序依次导出骨骼、材质、模型和动作
  3. 最后创建的.cfg文件中等号左右不要留空格,否则在某些解析程序中(比如说OsgCal中)会导致错误。这应该算是OsgCal的一个小bug。另外OsgCal要求配置文件中scale, skeleton等的顺序不能变,否则也会出错。

RockyRay第一个Demo即将完成

06月 18th, 2009

之前由于准备考研复试、毕业答辩和吃散伙饭忙活了好一阵子,现在总算是有点喘息的时间来做点其他事情了。这第一件事情就是继续RockyRay的开发。貌似我以前还没有在blog中提到过RockyRay。

所谓RockyRay是我和小强精力过剩蛋疼无聊的时候满怀着拯救世界解放他人并把爱与和平带给全人类的信念做的一个RPG游戏。恩恩,这也是小强的毕设。因为明天就是小强答辩的日子,结果他在deadline到之前终于完成了第一个场景模型、男主角的模型,以及一些设定图和其他一些CG。第一个游戏场景的Demo已经编译出来,不过还没有打包。明天我就会把整个Demo打包提供下载。整个程序使用Ogre+OgreMax+OpenAL+LuaPlus+Boost,从三月份开始弄到现在(其实中间有将近2个月没有更新)。


感兴趣的童鞋可以先在下面的网址看看小强为RockyRay做的一些2D作品:

http://code.google.com/p/rockyray/



探险

看!灰机!

主角们

排排站,吃果果

体验3G上网中

05月 17th, 2009

昨天去办了一个中国移动的3G上网卡业务,880块钱7个月外加一张大唐电信的AirdCard901。流量限制比我想象中的要松得多,一个月有15G流量可以用。看来我用移动在GPRS上的气度来衡量3G上网的资费有点失误。信号强度不是很稳定,有的地方会信号很弱,速度会很慢很慢。不过大多数时候都还是不错,下载速度能有六七十KB。

比较让人无语的是,大唐的这个卡必须得去它的客服那里升级Fireware,否则不能在XP sp3和Vista上面使用。一向保持自己电脑软件版本最新的我用的是xp sp3,一插上上网卡就假死。到大唐官方网站上面去下载了一个升级软件升级以后仍然无解。最后无奈去了大唐大楼,结果却告诉我周末客服不上班。现在是和郁闷的在别人的xp sp2的电脑上面发的这条消息。

  • About

    This is an area on your website where you can add text. This will serve as an informative location on your website, where you can talk about your site.

  • Blogroll
  • Admin
    • 登录
    • WordPress
    • XHTML