Month: May 2009

  • 在游戏中使用脚本语言

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

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

    I have a dream… (more…)

  • 服务器又休息了两天

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

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

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

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

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

  • MySQL InnoDB 隔离级别探索

    概述

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

  • 【歌词】团结就是力量

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

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

    团结就是力量

    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”,那就赶紧检查一下是否有这样的安全隐患吧。

  • 广州PHP培训和我的一些想法

    首先,在 google 做一个搜索,关键词“广州 PHP 培训”。大约有 1,230,000 项符合的结果。在百度上搜索相同的关键字,大约有 38,500 项符合的结果。

    其中呢,“多迪”培训是占了大多数的,然后就是“慧的”培训。其实这两家都是老熟人了。 (more…)

  • 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 吧。