mirror of
https://github.com/LCTT/TranslateProject.git
synced 2024-12-26 21:30:55 +08:00
Merge branch 'master' of git@github.com:LCTT/TranslateProject.git
This commit is contained in:
commit
abe7f5702d
116
published/20150227 Chess in a Few Bytes.md
Normal file
116
published/20150227 Chess in a Few Bytes.md
Normal file
@ -0,0 +1,116 @@
|
||||
只有几百个字节大小的国际象棋程序
|
||||
================================================================================
|
||||
|
||||
当我在这里提到了 ZX81 电脑时,我已经暴露了我的年龄。ZX81 是一个由英国开发者(Sincilair 研究所)生产的家庭电脑,它拥有"高达" 1KB 的内存!上面的 1KB 并不是打印错误,这个家庭电脑确实只配置有 1KB 的板载内存。但这个内存大小上的限制并没有阻止爱好者制作种类繁多的软件。事实上,这个机器引发了一代编程奇才的出现,这让他们掌握了让程序在该机上运行起来的技能。这个机器可以通过一个 16 KB 的内存卡来进行升级,这就提供了更多的编程可能。但未经扩展的 1KB 机器仍然激励着编程者们发布卓越的软件。
|
||||
|
||||
![1K ZX Chess ](http://www.linuxlinks.com/portal/content2/reviews/Games2/1KZXChess.jpg)
|
||||
|
||||
我最喜爱的 ZX81 游戏有: 模拟飞行(Flight Simulation), 3D 版怪物迷宫(3D Monster Maze), 小蜜蜂(Galaxians), 以及最重要的 1K ZX Chess。 只有最后一个程序是为未扩展版的 ZX81 电脑设计的。事实上,David Horne 开发的 1K ZX Chess 只使用了仅仅 672 字节的 RAM(LCTT 译注:如果读者有兴趣,可以看看[这里](http://users.ox.ac.uk/~uzdm0006/scans/1kchess/)对该程序的代码及解释)。尽管如此,该游戏尽力去实现大多数的国际象棋规则,并提供了一个计算机虚拟对手。虽然一些重要的规则被忽略了(如:王车易位,兵的升变,和吃过路兵)
|
||||
(LCTT 译注:参考了[这里](http://zh.wikibooks.org/zh/%E5%9B%BD%E9%99%85%E8%B1%A1%E6%A3%8B/%E8%A7%84%E5%88%99)和[这里](http://en.wikipedia.org/wiki/Rules_of_chess)),但能够和人工智能相对抗,这仍然令人惊讶。这个游戏占据了我逝去的青春里的相当一部分。
|
||||
|
||||
1K ZX Chess 保持了在所有计算机上国际象棋的最小实现的地位长达 33 年之久,直到今年由 BootChess 打破了该记录,紧接着由 Toledo AtomChess 打破。这三个程序都没有实现所有的国际象棋规则,所以为了完整性,我介绍了我最喜爱的那些实现了所有国际象棋规则的极小的国际象棋。
|
||||
|
||||
Linux 有着一系列极其强大的国际象棋引擎,如 Stockfish, Critter, Togo II, Crafty, GNU Chess 和 Komodo 。 在这篇文章精选的国际象棋程序虽敌不过这些好的国际象棋程序,但它们展示了使用微不足道的代码库究竟可以实现多少东西。
|
||||
|
||||
----------
|
||||
|
||||
### Toledo Atomchess
|
||||
|
||||
![](http://www.linuxlinks.com/portal/content/reviews/Games2/Screenshot-Toledo.png)
|
||||
|
||||
你可能已经看到了大量有关 BootChess 新闻报道,这个只用 487 字节写就的国际象棋程序,一举打破了先前最小的国际象棋程序 1K ZX Chess 的记录。所以,Óscar Toledo Gutiérrez 挽起袖子自己编写了一个更加紧凑的国际象棋游戏。Toledo Atomchess 是仅有 481 字节的 x86 汇编代码,都能放到引导扇区里。 在难以置信的代码大小下,这个引擎实现了一个可玩的国际象棋游戏。
|
||||
|
||||
特点包括:
|
||||
|
||||
- 基本的棋子移动
|
||||
- 用 ASCII 文本表现的棋盘
|
||||
- 以代数形式来输入移动(注:如 D2D4)
|
||||
- 3 层的搜索深度
|
||||
|
||||
显然,为了将这个国际象棋程序压缩到 481 字节中,作者必须做出某些牺牲,这些局限包括:
|
||||
|
||||
- 没有兵的升变
|
||||
- 没有王车易位
|
||||
- 没有吃过路兵
|
||||
- 没有移动确认
|
||||
|
||||
该作者也使用 C,JavaScript 和 Java 来写这个国际象棋程序,每种实现都非常小。
|
||||
|
||||
- 网站: [nanochess.org/chess6.html][1]
|
||||
- 开发者: Óscar Toledo Gutiérrez
|
||||
- 协议: 非商业用途可免费使用
|
||||
- 版本号: -
|
||||
|
||||
----------
|
||||
|
||||
### BootChess
|
||||
|
||||
![](http://www.linuxlinks.com/portal/content/reviews/Games2/Screenshot-BootChess.png)
|
||||
|
||||
BootChess 是一个国际象棋的极其小巧的计算机实现。这个程序被塞进到仅仅 487 字节里,并可运行在 Windows, Mac OS X 和 Linux 等操作系统。BootChess 的棋盘和棋子单独用文本表示,其中 P 代表兵, Q 用来代表王后,以及“点”代表空白格子。
|
||||
|
||||
特点包括:
|
||||
|
||||
- 象棋棋盘和用户输入的形象的文本表示
|
||||
- 引导扇区大小(512 字节)的可玩的象棋游戏
|
||||
- 只需 x86 bios 硬件引导程序(没有软件依赖)
|
||||
- 所有主要的正规移动包括双兵开局
|
||||
- 兵升变为王后(与 1k ZX Chess 相反)
|
||||
- 名为 taxiMax > minMax half-ply 的 CPU 人工智能
|
||||
- 硬编码的西班牙白子开局
|
||||
|
||||
同样,它也存在一些重要的限制。这些遗漏的功能包括:
|
||||
|
||||
- 兵的低升变(升变为非王后的棋子)
|
||||
- 吃过路兵
|
||||
- 没有王车易位
|
||||
- 3 次位置重复和局规则(注:下一步之前,同样的移动出现了两次;可以参考[这里](http://www.netplaces.com/chess-basics/ending-the-game/three-position-repetition.htm))
|
||||
- 50 步移动和局规则(注:在连续的50个回合内,双方既没有棋子被吃掉,也没有兵被移动过,则和局;可以参考[这里](http://www.chessvariants.org/d.chess/chess.html))
|
||||
- 没有开放式和封闭式布局
|
||||
- 一个或多个 minMAX/negaMax 全层人工智能
|
||||
|
||||
- 网站: [www.pouet.net/prod.php?which=64962][2]
|
||||
- 开发者: Olivier "Baudsurfer/RSi" Poudade
|
||||
- 协议: WTFPL v2
|
||||
- 版本号: .02
|
||||
|
||||
----------
|
||||
|
||||
###Micro-Max
|
||||
|
||||
![](http://www.linuxlinks.com/portal/content/reviews/Games2/Screenshot-Micro-Max.png)
|
||||
|
||||
Micro-Max 是一个用 133 行 C 语言写就的象棋源程序。
|
||||
|
||||
作者实现了一个 hash 变换表,该引擎检查输入移动的合法性,以及支持 FIDE(注: World Chess Federation 缩写,参见其[官网](https://www.fide.com/)) 的全部规则,除了低升变。
|
||||
|
||||
特点包括:
|
||||
|
||||
- 递归的 negamax 搜索
|
||||
- 反夺的静态搜索
|
||||
- 反夺规则的扩展
|
||||
- 迭代深化
|
||||
- 最佳移动优先的 `排序`
|
||||
- 存储分数和最佳移动的 Hash 表
|
||||
- 完整的 FIDE 规则(除了低位升变)和移动合法性检查
|
||||
|
||||
还有一个 1433个字符的较大版本,但允许你使用完整的 FIDE 规则的低升变。
|
||||
|
||||
- 网站: [home.hccnet.nl/h.g.muller/max-src2.html][3]
|
||||
- 开发者: Harm Geert Muller
|
||||
- 协议: The MIT License
|
||||
- 版本号: 3.2
|
||||
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
via: http://www.linuxlinks.com/article/20150222033906262/ChessBytes.html
|
||||
|
||||
作者:Frazer Kline
|
||||
译者:[FSSlc](https://github.com/FSSlc)
|
||||
校对:[wxy](https://github.com/wxy)
|
||||
|
||||
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出
|
||||
|
||||
[1]:http://nanochess.org/chess6.html
|
||||
[2]:http://www.pouet.net/prod.php?which=64962
|
||||
[3]:http://home.hccnet.nl/h.g.muller/max-src2.html
|
@ -1,16 +1,13 @@
|
||||
Mydumper - MySQL数据库备份工具
|
||||
================================================================================
|
||||
Mydumper 是MySQL数据库服务器备份工具,它比MySQL自带的mysqldump快很多。它还有在转储本身的时候检索远程服务器二进制日志文件的能力。
|
||||
Mydumper 是 MySQL 数据库服务器备份工具,它比 MySQL 自带的 mysqldump 快很多。它还有在转储的同时获取远程服务器二进制日志文件的能力。
|
||||
|
||||
### Mydumper 的优势 ###
|
||||
|
||||
o 并行性 (因此有高速度) 和 性能 (避免了昂贵的字符集转换例程, 高效的代码)
|
||||
|
||||
o 更容易管理输出 (每个表独立的文件,转储元数据等,简单的查看/解析数据)
|
||||
|
||||
o 一致性 -- 在所有线程中维护快照, 提供准确的主从结点日志位置等。
|
||||
|
||||
o 可管理性 -- 支持对包含和排除指定的数据库和表的PCRE操作(译者注:PCRE,Perl Compatible Regular Expression,Perl兼容正则表达式)
|
||||
- 并行能力 (因此有高速度) 和性能 (高效的代码避免了耗费 CPU 处理能力的字符集转换过程)
|
||||
- 更容易管理输出 (每个表都对应独立的文件,转储元数据等,便于查看/解析数据)
|
||||
- 一致性 :跨线程维护快照, 提供精确的主从日志定位等。
|
||||
- 可管理性 : 支持用 PCRE 来包含/排除指定的数据库和表(LCTT译注:PCRE,Perl Compatible Regular Expression,Perl兼容正则表达式)
|
||||
|
||||
### 在Ubuntu上安装 mydumper ###
|
||||
|
||||
@ -26,20 +23,20 @@ o 可管理性 -- 支持对包含和排除指定的数据库和表的PCRE操作(
|
||||
|
||||
应用程序选项:
|
||||
|
||||
- -B, --database 转储的数据库
|
||||
- -T, --tables-list 逗号分隔的转储表列表(不排除正则表达式)
|
||||
- -B, --database 要转储的数据库
|
||||
- -T, --tables-list 逗号分隔的转储表列表(不会被正则表达式排除)
|
||||
- -o, --outputdir 保存输出文件的目录
|
||||
- -s, --statement-size 插入语句的字节大小, 默认是1000000个字节
|
||||
- -r, --rows 把表分为每个这么多行的块
|
||||
- -r, --rows 把表按行数切块
|
||||
- -c, --compress 压缩输出文件
|
||||
- -e, --build-empty-files 尽管表中没有数据也创建输出文件
|
||||
- -x, --regex 匹配‘db.table'的正则表达式
|
||||
- -i, --ignore-engines 逗号分隔的忽略存储引擎列表
|
||||
- -m, --no-schemas 不转储有数据的表架构
|
||||
- -k, --no-locks 不执行临时共享读锁. 警告: 这会导致备份的不一致性
|
||||
- -e, --build-empty-files 空表也输出文件
|
||||
- -x, --regex 匹配‘db.table’的正则表达式
|
||||
- -i, --ignore-engines 以逗号分隔的被忽略的存储引擎列表
|
||||
- -m, --no-schemas 不转储表架构
|
||||
- -k, --no-locks 不执行临时共享读锁。警告: 这会导致备份的不一致性
|
||||
- -l, --long-query-guard 设置长查询的计时器秒数,默认是60秒
|
||||
- --kill-long-queries 杀死长查询 (而不是退出)
|
||||
- -b, --binlogs 获取二进制日志文件和转储数据的快照
|
||||
- --kill-long-queries 杀死长查询 (而不是退出程序)
|
||||
- -b, --binlogs 获取二进制日志文件快照并转储数据
|
||||
- -D, --daemon 开启守护进程模式
|
||||
- -I, --snapshot-interval 每个转储快照之间的间隔时间(分钟), 需要开启 --daemon, 默认是60分钟
|
||||
- -L, --logfile 日志文件的名字,默认是stdout
|
||||
@ -67,21 +64,21 @@ o 可管理性 -- 支持对包含和排除指定的数据库和表的PCRE操作(
|
||||
--threads=2 \
|
||||
--compress-protocol
|
||||
|
||||
Mydumper输出数据的说明
|
||||
Mydumper 输出数据的说明
|
||||
|
||||
Mydumper不直接指定输出的文件,而是输出到文件夹的文件中。--outputdir 选项指定要使用的目录名称。
|
||||
Mydumper 不直接指定输出的文件,而是输出到文件夹的文件中。--outputdir 选项指定要使用的目录名称。
|
||||
|
||||
输出分为两部分
|
||||
|
||||
架构
|
||||
**表结构**
|
||||
|
||||
对数据库中的每个表,创建包含 CREATE TABLE 语句的文件。文件命名为:
|
||||
对数据库中的每个表,创建一个包含 CREATE TABLE 语句的文件。文件命名为:
|
||||
|
||||
dbname.tablename-schema.sql.gz
|
||||
|
||||
数据
|
||||
**数据**
|
||||
|
||||
对于每个行数多余--rows参数的表, 创建文件名字为:
|
||||
每个表名跟着按 --rows 参数所切块的数量, 创建文件名字为:
|
||||
|
||||
dbname.tablename.0000n.sql.gz
|
||||
|
||||
@ -103,7 +100,7 @@ via: http://www.ubuntugeek.com/mydumper-mysql-database-backup-tool.html
|
||||
|
||||
作者:[ruchi][a]
|
||||
译者:[ictlyh](https://github.com/ictlyh)
|
||||
校对:[校对者ID](https://github.com/校对者ID)
|
||||
校对:[wxy](https://github.com/wxy)
|
||||
|
||||
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出
|
||||
|
@ -1,114 +0,0 @@
|
||||
几 KB 的国际象棋程序
|
||||
================================================================================
|
||||
当我提及到我用来介绍计算(注:这里翻译的有问题)的是一台 ZX81 电脑时,我已经暴露了我的年龄。ZX81 是一个由英国(UK,the United Kingdom) 开发者(Sincilair 研究所)生产的家庭电脑,它拥有"高达" 1KB 的随机存储器(RAM)。上面的 1kB 并不是打印错误,这个家庭电脑确实只配置有 1KB 的板载内存。但这个内存大小上的限制并没有阻止爱好者制作种类繁多的软件。事实上,这个机器引发了一代编程奇才的出现,这迫使他们掌握让程序在该机上正常运行的方法。这个机器可以通过一个 16 KB 的 RAM 包来进行升级,这就提供了更多的编程可能。但未经扩展的 1KB 机器仍然激励着编程者发布卓越的软件。
|
||||
|
||||
![1K ZX Chess ](http://www.linuxlinks.com/portal/content2/reviews/Games2/1KZXChess.jpg)
|
||||
|
||||
我最喜爱的 ZX81 游戏有: Flight Simulation, 3D Monster Maze, Galaxians, 以及最重要的 1K ZX Chess。 只有最后一个程序是为未扩展的 ZX81 电脑设计的。事实上,David Horne 开发的 1K ZX Chess 只使用了仅仅 672 字节的 RAM(注:如果读者有兴趣,可以看看 [这里](http://users.ox.ac.uk/~uzdm0006/scans/1kchess/)对该程序的代码及解释)。尽管如此,该游戏尽力去实现大多数的国际象棋规则,并提供了一个计算机虚拟对手。虽然一些重要的规则被忽略了(如:王车易位,兵的升变,和吃过路兵)
|
||||
(注:参考了[这里](http://zh.wikibooks.org/zh/%E5%9B%BD%E9%99%85%E8%B1%A1%E6%A3%8B/%E8%A7%84%E5%88%99)和[这里](http://en.wikipedia.org/wiki/Rules_of_chess)),但能够和人工智能相对抗,这仍然令人惊讶。这个游戏占据了我逝去的青春里的相当一部分。
|
||||
|
||||
1K ZX Chess 保持着在任何计算机上国际象棋的最小实现的地位长达 33 年,直到今年由 BootChess 打破了该记录,紧接着由 Toledo AtomChess 打破。这三个程序都没有实现所有的国际象棋规则,所以为了完整性,我介绍了我最喜爱的,实现了所有国际象棋规则的极小的国际象棋。
|
||||
|
||||
Linux 有着一系列极其强大的国际象棋引擎,如 Stockfish, Critter, Togo II, Crafty, GNU Chess, 和 Komodo 。 在这篇文章精选的国际象棋程序虽敌不过一个好的国际象棋程序,但它们展示了使用微不足道的代码库究竟可以实现多少东西。
|
||||
----------
|
||||
|
||||
![](http://www.linuxlinks.com/portal/content2/png/ToledoAtomchess.png)
|
||||
|
||||
![](http://www.linuxlinks.com/portal/content/reviews/Games2/Screenshot-Toledo.png)
|
||||
|
||||
你可能已经看到了大量有关 BootChess 新闻报道,一个只用 487 字节写就的国际象棋程序,一举打破了先前最小的国际象棋程序,1K ZX Chess 的记录。Óscar Toledo Gutiérrez 拿起外套并决定编写一个更加紧凑的国际象棋游戏。Toledo Atomchess 是仅有 481 字节的 x86 汇编代码,它适合在引导扇区里。 在给定的极小代码库限制下,这个引擎实现了一个适当的国际象棋游戏。
|
||||
|
||||
特点包括:
|
||||
|
||||
- 基本的象棋移动
|
||||
- 象棋盘的 ASCII 文本表现
|
||||
- 以代数形式来输入移动(注:如 D2D4)
|
||||
- 3 层的搜索深度
|
||||
|
||||
显然,为了将这个国际象棋程序压缩到 481 字节中,作者必须做出某些牺牲,这些局限包括:
|
||||
|
||||
- 没有兵的升变
|
||||
- 没有王车易位
|
||||
- 没有吃过路兵
|
||||
- 没有移动确认
|
||||
|
||||
该作者也使用 C,JavaScript 和 Java 来写这个国际象棋程序,每种实现都非常小。
|
||||
|
||||
- 网站: [nanochess.org/chess6.html][1]
|
||||
- 开发者: Óscar Toledo Gutiérrez
|
||||
- 协议: 对非商业使用免费(Free for non-commercial use)
|
||||
- 版本号: -
|
||||
|
||||
----------
|
||||
|
||||
![](http://www.linuxlinks.com/portal/content2/png/BootChess.png)
|
||||
|
||||
![](http://www.linuxlinks.com/portal/content/reviews/Games2/Screenshot-BootChess.png)
|
||||
|
||||
BootChess 是一个国际象棋的极其小巧的计算机实现。这个程序被塞进到仅仅 487 字节里,并可运行在 Windows, Mac OS X 和 Linux 等操作系统。BootChess 的棋盘和棋子单独用文本表示,其中 P 代表兵, Q 用来代表王后,以及输入的任何停顿代表空白方块。
|
||||
|
||||
特点包括:
|
||||
|
||||
- 象棋棋盘和用户输入的图形化文本表示
|
||||
- 引导扇区大小(512 字节)的可玩的象棋游戏
|
||||
- 只需 x86 bios 硬件引导程序(没有软件依赖)
|
||||
- 所有主要的正规移动包括 double square pawn start(注:这个我没有查到是什么意思)
|
||||
- 兵升变为王后(与 1k ZX Chess 相反)
|
||||
- 名为 taxiMax > minMax half-ply 的 CPU 人工智能
|
||||
- 硬编码的西班牙白子开局
|
||||
|
||||
同样,它也存在一些重要的限制。这些遗漏包括:
|
||||
|
||||
- 正在推广
|
||||
- 吃过路兵
|
||||
- 没有王车易位
|
||||
- 3 次位置重复和局规则(注:下一步之前,同样的移动出现了两次;可以参考[这里](http://www.netplaces.com/chess-basics/ending-the-game/three-position-repetition.htm))
|
||||
- 50 步移动和局规则(注:在连续的50个回合内,双方既没有棋子被吃掉,也没有兵被移动过,则和局;可以参考[这里](http://www.chessvariants.org/d.chess/chess.html))
|
||||
- 没有开放或封闭的书籍
|
||||
- 一个或多个 minMAX/negaMax 全层人工智能
|
||||
|
||||
- 网站: [www.pouet.net/prod.php?which=64962][2]
|
||||
- 开发者: Olivier "Baudsurfer/RSi" Poudade
|
||||
- 协议: WTFPL v2
|
||||
- 版本号: .02
|
||||
|
||||
----------
|
||||
|
||||
![](http://www.linuxlinks.com/portal/content2/png/Micro-Max.png)
|
||||
|
||||
![](http://www.linuxlinks.com/portal/content/reviews/Games2/Screenshot-Micro-Max.png)
|
||||
|
||||
Micro-Max 是一个用 C 写就的 133 行象棋源程序。
|
||||
|
||||
作者实现了一个 hash 变换表,该引擎检查输入移动的合法性,以及支持 FIDE(注: World Chess Federation 缩写,[这里](https://www.fide.com/)为其官网) 的全部规则,除了正在推广的规则。
|
||||
|
||||
特点包括:
|
||||
|
||||
- 递归的 negamax 搜索
|
||||
- 重新夺回的静态搜索
|
||||
- 重新夺回规则的扩展
|
||||
- 迭代深化
|
||||
- 最好的先走策略 `排序`
|
||||
- 存储分数和最佳移动的 Hash 表
|
||||
- 完整的 FIDE 规则(不包括正在推广的规则) 和移动合法性检查
|
||||
|
||||
同样存在一个简装的 1433个字符的版本,但允许你使用符合 FIDE 规则的正在推广的规则。
|
||||
|
||||
- 网站: [home.hccnet.nl/h.g.muller/max-src2.html][3]
|
||||
- 开发者: Harm Geert Muller
|
||||
- 协议: The MIT License
|
||||
- 版本号: 3.2
|
||||
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
via: http://www.linuxlinks.com/article/20150222033906262/ChessBytes.html
|
||||
|
||||
作者:Frazer Kline
|
||||
译者:[FSSlc](https://github.com/FSSlc)
|
||||
校对:[校对者ID](https://github.com/校对者ID)
|
||||
|
||||
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出
|
||||
|
||||
[1]:http://nanochess.org/chess6.html
|
||||
[2]:http://www.pouet.net/prod.php?which=64962
|
||||
[3]:http://home.hccnet.nl/h.g.muller/max-src2.html
|
Loading…
Reference in New Issue
Block a user