手机浏览 RSS 2.0 订阅 膘叔的简单人生 , 腾讯云RDS购买 | 超便宜的Vultr , 注册 | 登陆
浏览模式: 标准 | 列表Tag:mysql

基于Flash的FC模拟器:AminNes今日开源

正如我上篇所说的,技术已经发展到了一个极致了。。
先是有JS网页游戏出现。后来有人做JS的超级玛丽。最近有人做JS的FC模拟器。终于,忍不住了,有人放出了flash的FC模拟器。同时还附上源码

居然还有中英文对照的注释,比较适合学习flash和AS的人参考。看看是如何模拟硬件的?

AminNes是精准Nes模拟器,以CPU时钟频率为驱动的精确模拟。在开发初期参考了近二十份nes游戏机的资料,目前已经实现绝大部分硬件模拟。
此次开源的版本为最新版本,支持的ROM数量约为总量的51.7%,至少有500+以上的ROM可以正常运行。Flash性能方面融入了多年的编写经验, 进行反复优化及改进,整体运行速度流畅。到后期对文件、程序结构上进行了多次调整及组织,达到简易明了的可阅程度(含有中英双文注解)。

自从AminNes发布之后不少网友来信索求或购买源代码,再三考虑后,决定以开源的方式满足大家的需求。
借此也向在我开发过程中提供帮助的朋友表示感谢。
(详细授权许可,请查阅google code上的说明。)

AminNes是精准Nes模拟器,以CPU时钟频率为驱动的精确模拟。
在开发初期参考了近二十份nes游戏机的资料,目前已经实现绝大部分硬件模拟。
此次开源的版本为最新版本,支持的ROM数量约为总量的51.7%,至少有500+以上的ROM可以正常运行。
Flash性能方面融入了多年的编写经验,进行反复优化及改进,整体运行速度流畅。
到后期对文件、程序结构上进行了多次调整及组织,达到简易明了的可阅程度(含有中英双文注解)。

AminNes给你带来的可能有:
一、对模拟器开发的高涨热情;
二、极度忧化Flash性能的手段;
三、100次游戏之旅(google code上有100个Rom的下载)
四、与你朋友分享的机会
五、还有更多我没想到的-.-~~

开源地址:http://code.google.com/p/aminnes/
官方地址:http://www.aminlab.cn/nes/

jQuery小技巧

如果你的WEB程序中使用了不同的类库,比如prototype和jQuery,除了可以使用jquery的noConflict方法外,还有以下技巧

比如$("#xx").click(),这样的情况下,请使用

JavaScript代码
  1. (function($){  
  2.     $("#xxx").bind('click',function(){  
  3.         //write code here  
  4.     });  
  5. })(jQuery);  

如果你写了一个函数:function test(){alert('test');},那就不能这么用了。
被包含在刚才的闭包里,是不能被认出来的,那么,如何使用呢?

JavaScript代码
  1. jQuery.extend({  
  2.     test:function(){  
  3.         alert('test');  
  4.     }  
  5. });  

OK,然后在想调用的地方,直接 jQuery.test();就行了
相当于给jQuery这个类添加了 test 这个方法

佑阳记事

几件小事记录
1、会牵着大人的一只手走了。还是摇摇晃晃。但这是个好兆头啊。应该快了吧。呵呵。会自己扶着床边、墙边往前走了

2、爸爸等音节有点会发了。只是妈妈一直不会叫。

3、拿着碗喝水,但放到嘴边时,还是有点控制不住力量

4、睡觉 前讲故事。三个小猪。讲到大灰狼的时候,和妈妈一起:呼 (这是大灰狼吹小猪的房子的声音)哈哈

Tags: 肖佑阳

使用Apache做负载均衡

看到这个标题的时候,我和此文作者是一样的心态,apache也能做这个?我一向以为是nginx之类的才行?
仔细一想,如果可行,那应该是用了apache 的 proxy吧?以前用proxy做过asp的代理,如果负载均衡,估计用这个也应该可以吧?
究竟是不是这样呢?看看原文内容就知道了
原文地址为:http://tech.idv2.com/2009/07/22/loadbalancer-with-apache/
内容如下:

第一次看到这个标题时我也很惊讶,Apache居然还能做负载均衡?真是太强大了。 经过一番调查后发现的确可以,而且功能一点都不差。 这都归功于 mod_proxy 这个模块。 不愧是强大的Apache啊。

废话少说,下面就来解释一下负载均衡的设置方法。

一般来说,负载均衡就是将客户端的请求分流给后端的各个真实服务器, 达到负载均衡的目的。还有一种方式是用两台服务器,一台作为主服务器(Master), 另一台作为热备份(Hot Standby),请求全部分给主服务器,在主服务器当机时, 立即切换到备份服务器,以提高系统的整体可靠性。

负载均衡的设置

Apache可以应对上面这两种需求。先来讨论一下如何做负载均衡。 首先需要启用Apache的几个模块:

LoadModule proxy_module modules/mod_proxy.so
LoadModule proxy_balancer_module modules/mod_proxy_balancer.so
LoadModule proxy_http_module modules/mod_proxy_http.so

mod_proxy提供代理服务器功能,mod_proxy_balancer提供负载均衡功能, mod_proxy_http让代理服务器能支持HTTP协议。如果把mod_proxy_http换成 其他协议模块(如mod_proxy_ftp),或许能支持其他协议的负载均衡, 有兴趣的朋友可以自己尝试一下。

然后要添加以下配置:

ProxyRequests Off
<Proxy balancer://mycluster>
BalancerMember http://node-a.myserver.com:8080
BalancerMember http://node-b.myserver.com:8080
</Proxy>
ProxyPass / balancer://mycluster

# 警告:以下这段配置仅用于调试,绝不要添加到生产环境中!!!
<Location /balancer-manager>
SetHandler balancer-manager
Order Deny,Allow
Deny from all
Allow from localhost
</Location>

从上面的 ProxyRequests Off 这条可以看出,实际上负载均衡器就是一个反向代理, 只不过它的代理转发地址不是某台具体的服务器,而是一个 balancer:// 协议:

ProxyPass / balancer://mycluster

协议地址可以随便定义。然后,在<Proxy>段中设置该balancer协议的内容即可。 BalancerMember指令可以添加负载均衡组中的真实服务器地址。

下面那段<Location /balancer-manager>是用来监视负载均衡的工作情况的, 调试时可以加上(生产环境中禁止使用!),然后访问 http://localhost/balancer-manager/ 即可看到 负载均衡的工作状况。

OK,改完之后重启服务器,访问你的Apache所在服务器的地址,即可看到负载均衡的效果了。 打开 balancer-manager 的界面,可以看到请求是平均分配的。

如果不想平均分配怎么办?给 BalancerMember 加上 loadfactor 参数即可,取值范围为1-100。 比如你有三台服务器,负载分配比例为 7:2:1,只需这样设置:

ProxyRequests Off
<Proxy balancer://mycluster>
BalancerMember http://node-a.myserver.com:8080 loadfactor=7
BalancerMember http://node-b.myserver.com:8080 loadfactor=2
BalancerMember http://node-c.myserver.com:8080 loadfactor=1
</Proxy>
ProxyPass / balancer://mycluster

默认情况下,负载均衡会尽量让各个服务器接受的请求次数满足预设的比例。 如果要改变算法,可以使用 lbmethod 属性。如:

ProxyRequests Off
<Proxy balancer://mycluster>
BalancerMember http://node-a.myserver.com:8080 loadfactor=7
BalancerMember http://node-b.myserver.com:8080 loadfactor=2
BalancerMember http://node-c.myserver.com:8080 loadfactor=1
</Proxy>
ProxyPass / balancer://mycluster
ProxySet lbmethod=bytraffic

lbmethod可能的取值有:

lbmethod=byrequests 按照请求次数均衡(默认)
lbmethod=bytraffic 按照流量均衡
lbmethod=bybusyness 按照繁忙程度均衡(总是分配给活跃请求数最少的服务器)

各种算法的原理请参见Apache的文档

热备份(Hot Standby)

热备份的实现很简单,只需添加 status=+H 属性,就可以把某台服务器指定为备份服务器:

ProxyRequests Off
<Proxy balancer://mycluster>
BalancerMember http://node-a.myserver.com:8080
BalancerMember http://node-b.myserver.com:8080 status=+H
</Proxy>
ProxyPass / balancer://mycluster

从 balancer-manager 界面中可以看到,请求总是流向 node-a ,一旦node-a挂掉, Apache会检测到错误并把请求分流给 node-b。Apache会每隔几分钟检测一下 node-a 的状况, 如果node-a恢复,就继续使用node-a。

Tags: apache, 负载均衡

如何避免switch-case组合

这是cssrain站长翻译的一篇文章,事实上,在PHP中,已经不太建议使用switch-case了。
特别是在面向OO的代码中,你几乎也看不到这样的代码出现

不是说这个方式不好。而是,它的可扩展性不强。所以在大多数情况下,都放弃采用这种方式。

以下是翻译内容,来源于:http://www.cssrain.cn/article.asp?id=1384

我很年轻,还没有做过很长的编程。所以我对使用switch-case 语法没有什么很深刻的印象,至少在我的记忆中是这样。或许你认为这是一件坏事情。你甚至会怀疑我为什么不使用它们。我真的不知道为什么,似乎我天生就不喜欢使用它,如下所示:

JavaScript代码
  1. switch (something) {  
  2.   case 1:  
  3.     doX();  
  4.   break;  
  5.   case 2:  
  6.     doY();  
  7.   break;  
  8.   case 3:  
  9.     doN();  
  10.   break;  
  11.   // And so on...  
  12. }  

显然,虚构此代码的作者不够了解使用其他JavaScript方法来构建此功能。其实有很多种方式更适合这种情况,而不是一个丑陋的switch. 有许多许多更轻松,更优雅的方式来实现这种功能。
switch-case组合肯定是非常有用的,当你有一个变量并且依靠它的值的不同来做不同的事情。使用多个if-else不太恰当,所以人们通常使用switch-case来代替多个if-else.我敢肯定你也是.
上面的例子依赖于 something 判断 ,然后根据条件运行doX , doY或doN 。在JavaScript中,同样的逻辑可以表示一个简单的查找表的形式————对象,如下所示:

JavaScript代码
  1. var cases = {  
  2.    1: doX,  
  3.    2: doY,  
  4.    3: doN  
  5. };  
  6. if (cases[something]) {  
  7.    cases[something]();  
  8. }  

这不仅简洁,而且也可以重复使用和修改条件。所有条件都是对象的一部分,因此,如果您需要改变某些条件那就非常简单了。

所以,我想说的是:请不要使用switch-case,除非绝对必要的。 为什么? 因为有更好的替代品,比它更简单!

关于“ switch-case”的语法,请浏览:http://en.wikipedia.org/wiki/Switch_statement

如果想阅读原文,请点击这里:http://james.padolsey.com/javascript/how-to-avoid-switch-case-syndrome/
提示:译文跟原文有出入,请看原文。

Tags: javascript