在游戏中使用脚本语言

这只是一个有趣的探索,demo 使用 java 编写。模拟了一个龙与地下城类 RPG 游戏中,在不同的房间内移动的简单游戏场景。

阅读本文前,首先下载使用 Netbeans 6.5 建立的完整项目代码:下载。然后,我会用 UML 图的方式来说明如何在游戏中使用脚本,其中可能还会简介一下游戏中实体对象的建立和管理(不知道值得不值得另外写一篇文章来介绍了)。

I have a dream… Continue reading 在游戏中使用脚本语言

服务器又休息了两天

服务器又休息了两天,原因说出来很“囧”。xxiyy.com,就是我一直用的那个“沪ICP备05006454号”突然被查,说是没有备案。

不知道为什么,我手里有明明用了几年的备案号和那个 cert 备案证书,但是用备案号和域名都查不到备案的信息。而上星期我又将 xxiyy.com 从以前的服务器转到了这台服务器上,于是服务器就这么给封了两天。如果不转,我都不知道备案信息就这么人间蒸发了。

天朝要拿捏,我又能说什么呢?重新备过吧。想做个良民可真难!!!

不过话又说回来,想想人家窦娥。我只是蒸发了一个备案信息,服务器休息了两天而已。天朝没有把我也蒸发了是我莫大的荣幸,所以心里也特平衡了。

“向前进,向前进。备案的责任重,工信的冤仇深 ”

MySQL InnoDB 隔离级别探索

概述

本文会简单介绍 Mysql 使用的支持事务的存储引擎 InnoDB 的隔离级别,以及每个隔离级别下回产生的并发问题。同时为了更加深刻的理解 InnoDB 引擎的隔离级别,还会探讨如何通过加锁解决不同隔离级别下的并发问题。本文使用的实验环境是 mysql-5.1.33-win32,其他版本的 MySQL 可能会有不同。 Continue reading MySQL InnoDB 隔离级别探索

【歌词】团结就是力量

歌词写得很好,非常好!!!

应该广为宣传,人人都应该学习。不但要学会唱,还要一句一句的研究。应参透个中的意思,并把这些作为发展的真实目标,加以实现。

团结就是力量

loop 3:

团结就是力量
团结就是力量
这力量是铁
这力量是钢
比铁还硬比钢还强
向着法西斯蒂开火
让一切不民主的制度死亡
向着太阳向着自由
向着新中国发出万丈光芒

end loop;

mb_ereg(i)_replace() 执行任意代码的漏洞

这个漏洞说大也大,说小也小。大是因为真得可以通过注入的方式让漏洞代码执行任意代码。小是因为产生漏洞的环境还是比较苛刻的。

来源于此:http://milw0rm.com/exploits/8641

当最后一个参数设置为“e”,也就是将替换的内容作为 PHP 代码执行的时候,漏洞就产生了。
例如:

function hi80vul() {}

$str = '\', phpinfo(), \'';
mb_ereg_replace('^(.*)$', 'hi80vul(\'\1\')', $str, 'e');

又例如:

function hi80vul() {}

$str = '\', var_dump(get_loaded_extensions()), \'';
mb_ereg_replace('^(.*)$', 'hi80vul(\'\1\')', $str, 'e');

如果有在代码中使用过 mb_ereg_replace 和 mb_eregi_replace,以及参数“e”,那就赶紧检查一下是否有这样的安全隐患吧。

Django 1.0.2 mod_python 方式报 TypeError 的解决方法

尝试用 Django 写了一个简单的企业站,部署过程中出了不少问题,不过还好都一一解决了。

“激动不已”的看到了首页,长出一口气:“总不会再出什么其他问题了吧!”随手点了一个内部链接:
—————————————————

TypeError at about

'NoneType' object is not iterable

—————————————————
这回可晕倒了,怎么会有这样一个错误?
接着往下看,发现错误是由于丢失了一个反斜线引起的:

Request Method: GET
Request URL: http://www.i-fang.comabout
Exception Type: TypeError
Exception Value:
'NoneType' object is not iterable
Exception Location: /usr/lib/python2.5/site-packages/django/core/handlers/base.py in get_response, line 77
Python Executable: /usr/bin/python
Python Version: 2.5.2
Python Path: [‘/home/www/www.i-fang.com/’, ‘/usr/lib/python25.zip’, ‘/usr/lib/python2.5’, ‘/usr/lib/python2.5/plat-linux2’, ‘/usr/lib/python2.5/lib-tk’, ‘/usr/lib/python2.5/lib-dynload’, ‘/usr/local/lib/python2.5/site-packages’, ‘/usr/lib/python2.5/site-packages’, ‘/var/lib/python-support/python2.5’]
Server time: Tue, 5 May 2009 10:25:17 +0800

在 Request URL 中域名和路径中间的反斜线丢失了。
是 urls.py 配置的问题?检查、试验……不是!
是 apache 配置的问题?检查、试验……还不是!
所有的内容跟 Django 手册上的完全一致,到底是怎么回事呢?
看到这个邮件列表的内容,才明白,有时手册是不能随便抄的:
—————————————————
Take a look at the django.root PythonOption described here:

http://docs.djangoproject.com/en/dev/howto/deployment/modpython/?from…

Are you using that option? If, yes, remove that option entirely and
try again.
—————————————————

去掉了 apache 配置文件中的“PythonOption django.root /”,重启 apache 后,一切访问正常了。

Zend Framework 1.8.0 带来的变化

曾经,我很羡慕 Django 等框架那完善的自动化工具。说实话,在 MVC 框架中不停的建立Controller、Action 是一件又枯燥,又麻烦的事情。而且,维护起来也颇费功夫。所以在 ninnypro 中我引入了一个 cli 工具,用于创建 Controller、Action 以及更新 ACL 的资源表。

现在,这些都将成为历史了。

Zend Framework 引入了 Zend_Tool 和 Zend_Application 两个包,用于自动化和快速集成。并且成熟的命令行工具 zf 也可以使用了。例如这里!!

zf 将程序员的关注点聚焦到程序功能和细节的实现,更加的统一和方便。跟 ninnypro 的思路类似,以放弃灵活性为代价,换取约束性和开发速度。

如果我有精力,或许会在此基础上重新建构 ninnypro 吧。