Nginx限速配置心得


参考:Rate Limiting with NGINX and NGINX Plus

  • 令牌桶设置技巧——不做缓冲令牌桶,超速直接返回
    nginx做限速,设置不做缓冲,burst=0不能写在配置文件里,直接不写burst参数默认为0
    增加nodelay参数,立即返回错误

    limit_req zone=xxxx nodelay;

  • 超速默认返回503(Service Unavailable),设置limit_req_status参数可指定返回的错误代码

    limit_req_status 429;

    429(Too Many Requests),参考:RFC 6585 – Additional HTTP Status Codes – IETF Tools

  • limit_req可以配置成Server,Location多个位置
Advertisements

IE 中使用:hover样式的注意点


首先想说的是:非标准浏览器真折腾人。

正文

在javascript通过innerHTML创建了一个超链接,通过class属性应用了:hover样式,在Chrome, Firefox下均正常,唯独IE,鼠标划过的时候,只是鼠标手势改变,并未增加下划线。

一开始怀疑是innerHTML的问题,于是改用document.createElement来写,结果还是不行。

然后怀疑样式污染的问题,去掉所有多余的样式之后,问题依旧。

于是乎,打开css帮助文档,看到“在CSS1中此伪类仅可用于 a 对象。对于无 href 属性(特性)的 a 对象, 此伪类不发生作用。

加上href=”javascript:void(0)”,再测试,效果终于出来了,这里不仅要谴责IE浏览器,还要提醒编程者,在写程序的时候多看帮助文档,少写变态程序,比如这里的a标记在初始化的时候没有href——没有href的a标记摆看?

离线安装Chrome浏览器


Chrome浏览器凭借良好的用户体验以及高效的浏览速度,市场份额节节攀升。但是Chrome官方网站只提供了在线安装模式,如果你处在公司内部网络,又想安装Chrome,怎么办?

没关系,其实Chrome也可以下载离线安装程序包。

http://dl.google.com/chrome/install/XXX.YY/chrome_installer.exe

上面就是离线下载的URL,把XXX.YY替换成你想下载浏览器版本的后两段即可。例如现在最新的chrome版本是9.0.597.94,下载链接便是

http://dl.google.com/chrome/install/597.94/chrome_installer.exe

下载完成后,安装时不会有任何提示,观察chrome_installer.exe进程,改进程结束即表示安装完成。

如何在Ajax项目中使用浏览器的前进后退按钮


在Ajax项目中如何管理浏览器的浏览历史呢?以前还真没想过,现在不得不想了。

一开始,我想到了用window.history.forword(1);来控制后退时回到当前页,但是浏览器不会保存Ajax修改的DOM对象,所以window.history.forword(1);之后,Ajax修改过的页面内容不见了。所以想到了Ajax Browser history了。马上放狗。

感谢万能的Google,在我使用Ajax Hisotry作为关键字的时候,搜索到了Ajax and Browser History。在结果中还发现了YUI也提供浏览历史记录管理的功能。不过我的项目没有用到YUI,所以作罢。直接看Ajax and Browser History。

首先简单看了一下网站的示例程序,发现确实能够实现前进后退。然后下载,配置。一切OK。只有简单几步:

  1. 确保每个页面都引用了bookmarks.js文件,例如像下面这样
    <script type=”text/javascript” src=”/bookmarks/bookmarks.js”></script>
    当然,文件名称是可以修改的。唯一需要注意的是,如果修改目录名称和blank.html文件的名称,需要在bookmarks.js文件中做出相应的修改。
  2. 保证页面onload的时候会执行 bookmarks.initialize();方法。例如我在JQuery中初始化:
    $(function(){
    bookmarks.initialize();
    });

通过上面两步,我们就已经把bookmarks引入进来了,然后就可以测试浏览器的前进、后退功能了。

上面只是使用bookmarks.js中提供的ajax方法做异步请求时,前进后退功能可用了。如果需要在其他的ajava库(例如:JQuery,Ext)中使用bookmarks,必须要实现bookmarks.sethash(store,url,container)方法。

目前该组件能够支持以下浏览器

执行RDS命令时出错。状态代码: 404,原因: Not found


最近在做一个flex的项目,使用到了Flash Builder 4 for eclipse 插件。

通过该IDE创建了一个Flex Project,测试的时候发现,flex能够通过amf远程调用到后台Service的对象。但是在执行连接数据/服务…功能的时候提示:

RDS服务器消息:
执行RDS命令时出错。状态代码: 404,原因: Not found

出现这种错误的原因是flash builder 4 for eclipse创建的flex 项目的serverContextRoot设置不正确,通过修改工程根目录下的.flexProperties文件中的serverContextRoot=”工程名称” serverRootURL=”http://localhost:8080″后,问题解决。

真不知道adobe是怎么搞的,Flash Builder 4 for eclipse plugins只能支持eclipse 3.5,在eclipse 3.6上创建项目都会失败。
按照官方要求使用eclipse 3.5然后安装Flash Builder 4插件吧,结果默认创建的工程还有问题。

How to install the FlashBuilder for Linux


Adobe最近宣布,放弃新版Flex4 for eclipse插件Linux平台的开发,目前仅仅支持windows, mac平台。

之前提供的flex3 for eclipse plugins也不提供下载,并且仅能用到2010年12月份。

Adobe居然建议使用open source的flex sdk进行flex开发。晕!这是提高flex在linux的开发门槛阿。

具体的信息看http://labs.adobe.com/technologies/flex/flexbuilder_linux/吧!

不甘心,上网找了好一阵子,有推荐安装emacs插件,实现代码提示功能,然后通过插件实现快速编译的。——这种方法我不熟练,还是期望能够在eclipse里开发。毕竟不仅仅是写flex代码,还需要进行Java的开发。

另外还有推荐安装FDT4 for eclipse plugins的,这个插件确实能够支持flex的开发。看了一下,操作系统应该和Flash Builder 4还是有一些差别的,而我在公司的开发机用的是Flash Builder 4 for eclipse plugins,不想再熟悉另外一套插件了。所以也没有试验了。

最后一种方法,也是我目前使用的方法,在http://code.google.com/p/fb4linux/ ,首先下载四个FB4Linux文件,然后执行cat FB4Linux* >FB4Linux.tar.bz2

图文结合的安装说明(英文):Installing FB4Linux in Eclipse

解压缩这个文件到一个目录,比如我解压缩在/opt/Adobe/flex4Build/

接下来打开eclipse,然后Help->Software Updates->Manage Configuration(如果没有这个菜单,选择Window->Preferences->General->Capabilities-> 选中Classis Update) ->右击树列表空白除->add->extension location->select the path:/opt/Adobe/flex4Build/ :/home/feiy/FlexBuilder4Linux

点击OK,然后重启eclipse,之后应该就能看到flex builder已经正确安装了。但是还需要自己选择以下flex sdk的目录。

更多信息请参考:http://code.google.com/p/fb4linux/wiki/HowToInstall

other

if can’t run/debug app,do:
mkdir -p ~/.macromedia/Flash_Player/#Security/FlashPlayerTrust

if got:
An ActionScript error has occurred:
SecurityError: Error #2148: SWF file file:///home/jupiter/projects/temp/TestProject/bin-debug/TestProject.swf cannot access local resource file:///home/jupiter/projects/temp/TestProject/bin-debug/textLayout_1.0.0.549.swf. Only local-with-filesystem and trusted local SWF files may access local resources.
at flash.net::URLStream/load()
at flash.net::URLLoader/load()
at mx.core::CrossDomainRSLItem/load()[E:\dev\trunk\frameworks\projects\framework\src\mx\core\CrossDomainRSLItem.as:235]
at mx.core::RSLListLoader/loadNext()[E:\dev\trunk\frameworks\projects\framework\src\mx\core\RSLListLoader.as:184]
at mx.core::RSLListLoader/load()[E:\dev\trunk\frameworks\projects\framework\src\mx\core\RSLListLoader.as:156]
at mx.preloaders::Preloader/initialize()[E:\dev\trunk\frameworks\projects\framework\src\mx\preloaders\Preloader.as:279]
at mx.managers::SystemManager/http://www.adobe.com/2006/flex/mx/internal::initialize()[E:\dev\trunk\frameworks\projects\framework\src\mx\managers\SystemManager.as:1927]
at mx.managers::SystemManager/initHandler()[E:\dev\trunk\frameworks\projects\framework\src\mx\managers\SystemManager.as:2421]
try to add the eclipse workspace path to ~/.macromedia/Flash_Player/#Security/FlashPlayerTrust/flexbuilder_plugin.cfg

谷歌浏览器实用插件——官方快捷工具箱


Google最近为Chrome推出了一个工具箱:Chrome Toolbox

该扩展为Chrome引入了一系列的常用工具:
– 放大镜查看网页上的任意图片,将其设为桌面背景,查看其原始大小
– 将网页上的任意视频(Flash或HTML5视频)拖出其所在网页,并在独立窗口中继续播放;关闭独立窗口,该视频将回到其所在页面继续播放
– 改变标签页行为,使你可以通过双击标签来关闭页面;关闭最后一个标签时窗口不会关闭,而是打开一个新标签;总是在新标签打开标签
– 保存和重新填写未提交的表单数据,避免由会话过期或页面无缓存设置所引起的数据丢失
– 一键打开你的书签管理器中任意文件夹中的多个网页
– 帮你了解比较Chrome和其它流行浏览器的快捷键设置
– 选出你最喜欢的Chrome功能,以你喜欢的顺序放在扩展的下拉菜单中
– 定义“老板键”
– 静音所有网页

该扩展不仅可以为你使用Chrome提供更多方便,更可以让你了解许多你以前不知道的浏览器功能。

注意:在Linux和Mac上暂不支持以下功能:
– 设置桌面背景
– 独立视频播放
– 双击关闭标签页
– 关闭最后一个标签页时不关闭浏览器窗口
– 一键打开多个网址
– 自定义快捷键
– 自定义下拉菜单

保存和重填表单数据这个功能很不错,以后测试页面的时候,不用自己反复填写恶心的表单数据了。