棋类对弈程序的资源

今天下载了一个 PSP 的中国象棋程序在玩,选择 “初级” 不到四十个回合就败下阵来,自己棋力差是一方面,不过游戏的AI确实也是没的说的,看了游戏的制作人,除了程序,UI界面效果外,还特别提到程序的AI是使用了 黄晨 的”象眼”引擎,于是在网上搜索了一下,发现一个介绍象眼引擎并和其他引擎程序做对比的页面(http://xingyuex.51.net/soft2.html)引擎”象眼”在”浪潮杯”中国首届象棋计算机博弈锦标赛中第七名,是公开源代码的象棋程序中水平最高的。

找到 黄晨 的象眼主页,www.elephantbase.net, 发现很多 棋类对弈 方面的资料,特别 在http://www.elephantbase.net/computer/outline.htm 这个页面上 黄晨 做了一个 棋类对弈程序的专题,翻译整理了很多资料,以清晰的目录结构列出了在 棋类对弈程序设计中所需要使用的数据结构,搜索方法,局面评估等专题文章,对设计棋牌类对弈程序很有帮助。
好资源不能浪费,将引擎程序下载下来,等有空闲时间将源码对照着这些文章好好研究一下。

Popularity: 23% [?]

Related

用VC编译libMPG123库

首先从http://mpg123.org/ 下载最新的源码包,解压后得到如下目录结构
libMPG123目录结构
将src/libmpg123目录下的全部文件拷贝到ports/MSVC++/libMPG123目录下。

打开VS装入libMPG123.vcproj工程文件,按 “生成” 按钮,编译提示 mpg123.h, config.h 文件找不到。查找原始的src文件目录下确实没有这两个文件,但是有mpg123.h.in, config.h.in 两个文件,用记事本打开查看就是c的代码文件,于是将他们拷贝过来后然后去掉后面的 .in 扩展名,编辑 mpg123.h 将前面的

@INCLUDE_STDLIB_H@
@INCLUDE_SYS_TYPE_H@

两行替换为

#include <stdlib.h>
#include <sys/types.h>

再进行编译,提示

libmpg123\mpg123.h(732) : error C2081: “ssize_t”: 形参表中的名称非法

网上搜了一把原来是 VC 中没有ssize_t这个类型定义,于是按照config.h最后面的提示在mpg123.h 中添加如下一个类型定义

#ifdef _MSC_VER
typedef long ssize_t;
#endif

再次编译,还是提示出错,主要是在 mpg123lib_intern.h中提示有一些引入的 .h 文件找不到,找到相对应的错误行可以看到是由一个 #ifdef 定义的开关来做引入库定义的,通过查找发现这些名称是在 config.h 中定义的,记下名称,到config.h 中将对应该名称的 #define 语句注释掉。
再次重新编译,还是失败,分析发现是由于一个ALIGNED(16) 的宏造成的。通过在工程中查找ALIGNED,发现
他是在 config.h 文件中通过

#define CCALIGN 1

来控制使用ALIGNED的,可以将其注释掉,或者在optimize.h中将ALIGNED(a)的宏定义由

#ifdef CCALIGN
#define ALIGNED(a) __attribute__((aligned(a)))
#else
#define ALIGNED(a)
#endif

修改为


#ifdef CCALIGN
#ifdef _MSC_VER
#define ALIGNED(a) __declspec(align(a))
#else
#define ALIGNED(a) __attribute__((aligned(a)))
#endif
#else
#define ALIGNED(a)
#endif

再重新编译,没有新的error 出来,编译通过。
编译工作到此结束,以后就可以通过VC来试验用libMPG123来进行mp3解码了。

附:网上一篇文章,gcc和VC编译器的一些差异
http://www.mathmagic.cn/bbs/read.php?tid=7145

Popularity: 32% [?]

Related

通过网站日志做网络爬虫和恶意访问分析

今天公司网站系统发生短暂的访问中断,虽然临时性的通过重启网站服务达到正常运作的目的,但是后续的分析工作还是要做的。

首先使用命令

  1. cat www.access.log |grep spider -c

  1. cat www.access.log |wc

分别查看有爬虫标志的访问次数和合计的总页面访问次数,发现还有爬虫标志的访问次数超过总访问次数的 10%, 访问显得有些不正常。

使用

  1. cat www.access.log |grep spider|awk '{print $1}'|sort -n|uniq -c|sort -nr

命令查看爬虫来ip地址来源,发现主要来至于 124.115.4.*和124.115.0.* 这两个地址段。

在防火墙上对其地址做限制。

/etc/sysconfig/iptables 中添加规则

-A RH-Firewall-1-INPUT -m state –state NEW -m tcp -p tcp –dport 80 -s 124.115.0.1/24 -j REJECT
-A RH-Firewall-1-INPUT -m state –state NEW -m tcp -p tcp –dport 80 -s 124.115.4.1/24 -j REJECT

service iptables restart 使限制生效

一些已知的爬虫可以在 http://www.wangzhongyuan.com/archives/367.html 看到。可以针对自己的情况做一下分析处理,有选择性的让一些爬虫来访问。当然这个地址列出的都是一些比较有名的爬虫,如Googlebot, Baiduspider,Sogo,Yahoo等都是比较上规矩的,对他们可以通过robots.txt进行爬虫访问规则的设置,而那些较稀奇的比如这里列出的 Sosospider等就没有被列出,所以更多的小爬虫和恶意的访问还是要自己来具体分析处理的。

从网站日志文件中找出爬虫和恶意访问

一般可以对网站访问日志做分析,通过分析单位时间里面某个ip访问服务器的次数等信息来找出爬虫的来源地址和恶意访问的来源地址,比如通过

  1. cat www.access.log |awk '{print $1 " " substr($4,14,5)}'|sort -n|uniq -c|sort -nr|head -20

这么一个命令就可以列出在一分钟内访问网站次数最多的前20位ip地址。

而通过

  1. cat www.access.log |grep 60.190.128.6 |awk '{print $1 " " substr($4,14,5)}'|sort -n|uniq -c|sort -nr|head -20

这个命令则可以查看一天中某个ip地址对网站服务器的访问时间分段情况。

对这些命令中表现出的数量比较突出的一些ip地址,一般来说就是有问题的ip了,在配合

  1. cat www.access.log |grep ip地址

可以看看这些高强度的地址访问都在干些什么。是不是正常访问,如果不是就要考虑是否要做限制了。

Popularity: 34% [?]

Related

我的博客开张了

看着周边的朋友都在开始写博,自己却还什么都没有做,显得有些落伍了。

于是乎花了点小钱在HostMonster上和别人合住了一个主机,放了一个现在还算流行的WordPress博客程序。

终于我也可以开博客了。自己发帖庆祝一下先。

Popularity: 16% [?]

Random Posts