月度归档:2014年02月

排名前 8 的 PHP 调试工具,你认可吗?

Web 开发并不是一项轻松的任务,有超级多服务端脚本语言提供给开发者,但是当前 PHP 因为具有额外的一些强大的功能而越来越流行。PHP 是最强大的服务端脚本语言之一,同时也是 web 开发者和设计者用的最多,最经常使用的语言。

PHP 有非常多的工具,其中包括测试和优化工具,文档工具,代码编辑器,安全工具,同时也支持框架和在线工具。这就是为什么在那么短的时间内吸引了那么的开发者使用它。工具总是能帮助简化和加速开发的过程。

今天我们主要是围绕最受开发者们欢迎的前 8 个 PHP 的调试工具。调试工具在开发过程中占有很重要的地位,开发者的代码有特别多的行数,同时也可能存在错误,而调试工具就能帮助开发者找出这些错误并能很好的调试程序。

1)  Pinba

Pinba 是个开源的 MySQL 存储引擎,主要任务是帮助 web 开发者监控所有 PHP 脚本的性能。使用 MySQL 作为只读接口,作为一个 PHP 的实时监控服务器。

pinba-php-debugger-tool

2)  PHP Dyn

PHP Dyn 是个令人惊奇的扩展,帮助调试 PHP 脚本。它的主要是能跟踪执行脚本,也是一款提供给 PHP 开发者的开源软件。

Best PHP debuggin Tool - php-dyn

3)  Kint

Kint 是另一个调试 PHP 脚本的最好的调试工具,非常容易使用,强大,而且 PHP 的 web 开发者可以随意定制。

Best PHP debugging Tools  - kint

4)  PHP MD

PHPMD 可以从源代码中找到错误,并且使用一系列有限的定义规则就可以轻松解决问题。

Best PHP Debugging tool - phpmd

5)  PHP Debug Bar

PHP Debug Bar 是另一个非常棒的 PHP 调试工具,可以显示 web 应用的 pst 数据。

Best PHP Debugging tool - phpdebugbar

6)  Whoops

Whoops 是个更高效的 PHP 调试库,帮助开发者构建和维护他们的项目,使其做得更好。Whoops 也是个开源软件,有着许多杰出的特性。

Best PHP Debugging Tool - whoops

7)  Xdebug

Xdebug 是提供给 PHP 用户的一个扩展,有着许多高级的特性,每一时刻都有不同类型的更新。

Best PHP Debugging Tool - xdebug

8)  Krumo

Krumo 是 PHP 调试工具的杰出代表,可以显示任意的 PHP 变量的结构信息。

Best PHP Debugging Tool - krumo

欣赏完这些超级棒的 PHP 调试工具,分享一下你的经验,大家畅所欲言吧!

20 款免费的 JavaScript 游戏引擎

使用 HTML5,CSS3 和 Javascript 可以帮助面向对象开发者开发拥有各种特性的游戏,比如:3D 动画效果,Canvas,数学,颜色,声音,WebGL 等等。最明显的优势在于使用 HTML5 开发的游戏能在任何现代化流行的设备上运行。

某些游戏引擎仅仅是一个抽象的层次,就简单处理一些或者更多的繁杂游戏开发任务;其他只是注重 asset 加载,输入,物理效果,音频,sprite 地图和动画,而且相当多样化。还有一些引擎架构极其简单,只包括一个 2D 水平的编辑器和调试工具

大部分的游戏引擎都能提高游戏开发的效率,即使是创建全功能型的游戏。但是,也有一些开发者为了能更好的理解游戏的每个组件,喜欢从头开始创作。现 在基于 Javascript-HTML5 的游戏引擎也不少,这是好事,同时,也是个坏事,因为事实上大多数开发出来的产品都没人维护,或者即将停止维护。所以,选择某一游戏引擎需要仔细考虑的就 是该引擎在未来几年是否会继续维护,更新,进行功能增强。

在这篇文章中,我们经过各种资料探寻,测试,实际应用等方法,收集了专门提供给开发者的20 款免费的 JavaScript 游戏引擎, Enjoy!

1. Crafty

crafty
craftyJS 个轻量级的,模块化 JavaScript 游戏引擎,包括了许多组件:动画,事件管理,重新划分区域,碰撞检测,sprite 等等。它支持所有类型的浏览器,比如  IE9。不需要 dom 操作和自定义绘图程序。

2. Quintus

Quintus
Quintus 引擎是个 HTML5 游戏引擎,模块化,轻量级,而且带有简洁的 Javascript 友好的语法。 Quintus 是一个易学,使用有趣的 JavaScript HTML5 游戏引擎,支持移动和桌面开发。包含一个模块化的引擎可轻松开发游戏,并在同一个页面上运行多个实例。

3. Gamequery

gameQuery
gameQuery  是 个易于使用的 jQuery 插件,可以通过添加相关游戏的类来帮助开发 Javascript 游戏,自从它使用 DOM 操作代替了 Canvas gameQuery ,现在可以兼容大量的浏览器,即使是比较旧的版本:Firefox, Chrome, Internet Explorer, Safari, Safari for iOS, mobile versions of Webkit 和 Opera。

4. GMP

gmp
GMP  是个杰出的制作基于 sprite ,2D 游戏的引擎。它可以很容易就设计出最 retro 风格的街机游戏,同时也是很好的制作游戏的工具(比如 sudoku 和 gogopop)。在线演示

5. lycheeJS

lycheeJS
lycheeJS 是个 JavaScript 游戏库,提供完整的原型解决方案和 HTML5 Canvas 部署,在 Web 浏览器或者原生环境的WebGL 或者是基于原生 OpenGL(ES) 的游戏。这个项目的开发过程优化了 Google Chrome 和它自身的开发工具。

6. Enchant.js

enchantjs
Enchant.js  是个简单的 JavaScript 框架,可以使用 HTML5 和 JavaScript 来开发简单的游戏和应用。现在还是由 UEI 的 Akihabara 研究中心来开发和维护。在线演示

7. Starlingjs

starlingjs
Starling Starling 是在 Stage3D APIs 基础上开发的一种 ActionScript 3 2D 框架(可用于 Flash Player 11 和 Adobe AIR 3的桌面)。 Starling 是为游戏开发设计的,但是你可以将它应用于很多其它的应用程序。 在不必涉及低级 Stage3D APIs 情况下,Starling 使得编写具有快速 GPU 加速功能的应用程序成为可能。

8. The Render Engine

TheRenderEngine · GitHub
The Render Engine 是个跨浏览器的,开源游戏引擎,完全使用 JavaScript 编写。它拥有一个扩展的 API 和使用当前最新的现代浏览器特性。此款引擎旨在帮助用户使用基础的工具来开发游戏,加快游戏概念到成品的过程。

9. Akihabara

Akihabara
akihabara 是一系列的库和工具,可以预置创建 pixelated indie-style 8/16-bit era games ,使用 JavaScript , HTML5 canvas 标签和一些标准 hooks 开发。

10. JsGameSoup

jsgamesoup
Js Gamesoup 是个开源免费的软件框架,使用 JavaScript 和其他开放 web 技术来开发游戏:

  • Modular -可独立工作的 JavaScript 文件组件
  • 使用开放的 web 技术: Canvas 和 HTML5.
  • 支持 Firefox (Gecko), Safari/Chrome (WebKit), Internet Explorer 6+, Android 和  iOS

11. Gamejs

gamejs
GameJs 是一个基于浏览器的2D游戏开发框架,使用JavaScript和Canvas。使用GameJS这个超酷的Canvas游戏库,能写出优秀的基于Canvas的游戏。

12. CSS Game Engine

cssgameengine
CSS game engine 使用 JavaScript 和 CSS (Cascading Style Sheets) 来装饰页面,他们在一起使用非常可靠。使用这个引擎可以创建属于用户自己的游戏,这个项目主要针对的是初学者,想学习如何编写音频游戏的开发者。用户最好 是个 web 设计师,有点 CSS 基础。

13. Clanfx

clanfx
clanfx 是个 2D ,平铺的一个 JavaScript 游戏引擎,使用 JavaScript 和 CSS 开发。当前支持的浏览器有:Firefox, Epiphany 和 Opera browsers。主要特性包括许多动态 sprites,spell 效果,建筑,瓷砖纹理和基础的游戏 AI。

14. gTile

gTile
gTile 是个基于浏览器的游戏引擎,完全由 Javascript 和 DHTML 开发。它使用 2D 视图来保证简单性和可访问性。此款游戏的成功之处是较强的交互性和游戏对象行为,而不是花俏的图像和动画。在线演示。支持的浏览器有: IE6+, Firefox 2.0+, Safari 2.0+ and Opera 9.5+,不需要下载任何组件或者插件。

15. J5g3

j5g3
j5g3 是个开源 Javascript 图像引擎,语法非常易于使用,可以进行快速开发和扩展。

16. Jaws

jaws
Jaws 是个 HTML5 驱动的 2D 游戏库,刚开发的时候只能用来制作 canvas,现在支持通过同样的 API 来制作普通基于 DOM 的 sprites。支持:Chrome 9+, Firefox 3.6+, Safari 5+ & IE9。

17. Cocos2D

Cocos2D
Cocos2D JavaScript 是 Cocos2D for iPhone 的 HTML5 端口。它是个 2D 图像引擎,允许快速开发 2D 游戏和图像应用。它可以在任何现代化浏览器中运行,不需要第三方插件,比如 Adobe Flash。

18. CopperLicht

CopperLicht
CopperLicht 是个 WebGL 库,同时也是 JavaScript 3D 引擎,可以创建 3D 游戏和网页应用。它使用 WebGL canvas ,支持现代主流浏览器,不需要任何插件就可以硬件加速渲染 3D 图片。

19. Aves

aves
Aves  是个 html 和 javascript 游戏引擎,让人想起 oldieworldie RPGs (除了, 更多的图像功能),所有的渲染效果都是由 html 和 javascript 开发的,不需要任何插件!

20. LimeJS

limejs
LimeJS 是个 HTML5 游戏框架,用来构建游戏。它在现代化触屏设备和桌面浏览器上看起来像是原生的,而且运行速度快。LimeJS 通过 Google 和相关的函数/类 来创建 Closure 库,控制时间线,时间,形状和动画效果。同时,此框架完全支持 sprite 表(用户可以从单个文件中收集所有图片)。

在评论畅所欲言吧:)

via codegeekz.com

安装完 MySQL 后必须调整的 10 项配置

当我们被人雇来监测MySQL性能时,人们希望我们能够检视一下MySQL配置然后给出一些提高建议。许多人在事后都非常惊讶,因为我们建议他们仅仅改动几个设置,即使是这里有好几百个配置项。这篇文章的目的在于给你一份非常重要的配置项清单。

我们曾在几年前在博客里给出了这样的建议,但是MySQL的世界变化实在太快了!

即使是经验老道的人也会犯错,会引起很多麻烦。所以在盲目的运用这些推荐之前,请记住下面的内容:

  • 一次只改变一个设置!这是测试改变是否有益的唯一方法。
  • 大多数配置能在运行时使用SET GLOBAL改变。这是非常便捷的方法它能使你在出问题后快速撤销变更。但是,要永久生效你需要在配置文件里做出改动。
  • 一个变更即使重启了MySQL也没起作用?请确定你使用了正确的配置文件。请确定你把配置放在了正确的区域内(所有这篇文章提到的配置都属于 [mysqld])
  • 服务器在改动一个配置后启不来了:请确定你使用了正确的单位。例如,innodb_buffer_pool_size的单位是MB而max_connection是没有单位的。
  • 不要在一个配置文件里出现重复的配置项。如果你想追踪改动,请使用版本控制。
  • 不要用天真的计算方法,例如”现在我的服务器的内存是之前的2倍,所以我得把所有数值都改成之前的2倍“。

基本配置

你需要经常察看以下3个配置项。不然,可能很快就会出问题。

innodb_buffer_pool_size:这是你安装完InnoDB后第一个应该设置的选项。缓冲池是数据和索引缓存的地方:这个值越大越好,这能保证你在大多数的读取操作时使用的是内存而不是硬盘。典型的值是5-6GB(8GB内存),20-25GB(32GB内存),100-120GB(128GB内存)。

innodb_log_file_size这是redo日志的大小。redo日志被用于确保写操作快速而可靠并且在崩溃时恢复。一直到MySQL 5.1,它都难于调整,因为一方面你想让它更大来提高性能,另一方面你想让它更小来使得崩溃后更快恢复。幸运的是从MySQL 5.5之后,崩溃恢复的性能的到了很大提升,这样你就可以同时拥有较高的写入性能和崩溃恢复性能了。一直到MySQL 5.5,redo日志的总尺寸被限定在4GB(默认可以有2个log文件)。这在MySQL 5.6里被提高。

一开始就把innodb_log_file_size设置成512M(这样有1GB的redo日志)会使你有充裕的写操作空间。如果你知道你的应用程序需要频繁的写入数据并且你使用的时MySQL 5.6,你可以一开始就把它这是成4G。

max_connections:如果你经常看到‘Too many connections’错误,是因为max_connections的值太低了。这非常常见因为应用程序没有正确的关闭数据库连接,你需要比默认的151连接数更大的值。max_connection值被设高了(例如1000或更高)之后一个主要缺陷是当服务器运行1000个或更高的活动事务时会变的没有响应。在应用程序里使用连接池或者在MySQL里使用进程池有助于解决这一问题。

InnoDB配置

从MySQL 5.5版本开始,InnoDB就是默认的存储引擎并且它比任何其他存储引擎的使用都要多得多。那也是为什么它需要小心配置的原因。

innodb_file_per_table:这项设置告知InnoDB是否需要将所有表的数据和索引存放在共享表空间里(innodb_file_per_table = OFF) 或者为每张表的数据单独放在一个.ibd文件(innodb_file_per_table = ON)。每张表一个文件允许你在drop、truncate或者rebuild表时回收磁盘空间。这对于一些高级特性也是有必要的,比如数据压缩。但是它不会带来任何性能收益。你不想让每张表一个文件的主要场景是:有非常多的表(比如10k+)。

MySQL 5.6中,这个属性默认值是ON,因此大部分情况下你什么都不需要做。对于之前的版本你必需在加载数据之前将这个属性设置为ON,因为它只对新创建的表有影响。

innodb_flush_log_at_trx_commit:默认值为1,表示InnoDB完全支持ACID特性。当你的主要关注点是数据安全的时候这个值是最合适的,比如在一个主节点上。但是对于磁盘(读写)速度较慢的系统,它会带来很巨大的开销,因为每次将改变flush到redo日志都需要额外的fsyncs。将它的值设置为2会导致不太可靠(reliable)因为提交的事务仅仅每秒才flush一次到redo日志,但对于一些场景是可以接受的,比如对于主节点的备份节点这个值是可以接受的。如果值为0速度就更快了,但在系统崩溃时可能丢失一些数据:只适用于备份节点。

innodb_flush_method: 这项配置决定了数据和日志写入硬盘的方式。一般来说,如果你有硬件RAID控制器,并且其独立缓存采用write-back机制,并有着电池断电保护,那么应该设置配置为O_DIRECT;否则,大多数情况下应将其设为fdatasync(默认值)。sysbench是一个可以帮助你决定这个选项的好工具。

innodb_log_buffer_size: 这项配置决定了为尚未执行的事务分配的缓存。其默认值(1MB)一般来说已经够用了,但是如果你的事务中包含有二进制大对象或者大文本字段的话,这点缓存很快就会被填满并触发额外的I/O操作。看看Innodb_log_waits状态变量,如果它不是0,增加innodb_log_buffer_size。

其他设置

query_cache_size: query cache(查询缓存)是一个众所周知的瓶颈,甚至在并发并不多的时候也是如此。 最佳选项是将其从一开始就停用,设置query_cache_size = 0(现在MySQL 5.6的默认值)并利用其他方法加速查询:优化索引、增加拷贝分散负载或者启用额外的缓存(比如memcache或redis)。如果你已经为你的应用启用了query cache并且还没有发现任何问题,query cache可能对你有用。这是如果你想停用它,那就得小心了。

log_bin:如果你想让数据库服务器充当主节点的备份节点,那么开启二进制日志是必须的。如果这么做了之后,还别忘了设置server_id为一个唯一的值。就算只有一个服务器,如果你想做基于时间点的数据恢复,这(开启二进制日志)也是很有用的:从你最近的备份中恢复(全量备份),并应用二进制日志中的修改(增量备份)。二进制日志一旦创建就将永久保存。所以如果你不想让磁盘空间耗尽,你可以用 PURGE BINARY LOGS 来清除旧文件,或者设置 expire_logs_days 来指定过多少天日志将被自动清除。

记录二进制日志不是没有开销的,所以如果你在一个非主节点的复制节点上不需要它的话,那么建议关闭这个选项。

skip_name_resolve:当客户端连接数据库服务器时,服务器会进行主机名解析,并且当DNS很慢时,建立连接也会很慢。因此建议在启动服务器时关闭skip_name_resolve选项而不进行DNS查找。唯一的局限是之后GRANT语句中只能使用IP地址了,因此在添加这项设置到一个已有系统中必须格外小心。

总结

当然还有其他的设置可以起作用,取决于你的负载或硬件:在慢内存和快磁盘、高并发和写密集型负载情况下,你将需要特殊的调整。然而这里的目标是使得你可以快速地获得一个稳健的MySQL配置,而不用花费太多时间在调整一些无关紧要的MySQL设置或读文档找出哪些设置对你来说很重要上。

源自:http://www.oschina.net/translate/10-mysql-settings-to-tune-after-installation