May 3, 2012
三招解决MongoDB的磁盘IO问题
"\u003cp\u003e有点标题党的意思,不过下面三招确实比较实用,内容来自Conversocial公司的VP Colin Howe在London MongoDB用户组的一个分享。\n申请:下面几点并非放四海皆准的法则,具体是否能够使用,还需要根据自己的应用场景和数据特点来决定。\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003e1.使用组合式的大文档\u003c/strong\u003e\n我们知道MongoDB是一个文档数据库,其每一条记录都是一个JSON格式的文档。比如像下面的例子,每一天会生成一条这样的统计数据:\u003c/p\u003e\n\u003cblockquote\u003e\n\u003cp\u003e{ metric: “content_count”, client: 5, value: 51, date: ISODate(“2012-04-01 13:00”) }\n{ metric: “content_count”, client: 5, value: 49, date: ISODate(“2012-04-02 13:00”) }\u003c/p\u003e\u003c/blockquote\u003e\n\u003cp\u003e而如果采用组合式大文档的话,就可以这样将一个月的数据全部存到一条记录里:\u003c/p\u003e\n\u003cblockquote\u003e\n\u003cp\u003e{ metric: “content_count”, client: 5, month: “2012-04”, 1: 51, 2: 49, … }\u003c/p\u003e\u003c/blockquote\u003e\n\u003cp\u003e通过上面两种方式存储, …\u003c/p\u003e"
April 29, 2012
linux tcpdump命令参数及用法详解–linux下抓包网络分析
"\u003cp\u003e采用命令行方式,它的命令格式为:\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003etcpdump [ -adeflnNOpqStvx ] [ -c 数量 ] [ -F 文件名 ][ -i 网络接口 ] [ -r 文件名] [ -s snaplen ][ -T 类型 ] [ -w 文件名 ] [表达式 ]\u003c/strong\u003e\u003c/p\u003e\n\u003chr\u003e\n\u003cblockquote\u003e\n\u003cp\u003e\u003cstrong\u003e1. tcpdump的选项介绍\u003c/strong\u003e\n-a 将网络地址和广播地址转变成名字;\n-d 将匹配信息包的代码以人们能够理解的汇编格式给出;\n-dd 将匹配信息包的代码以c语言程序段的格式给出;\n-ddd 将匹配信息包的代码以十进制的形式给出;\n-e 在输出行打印出数据链路层的头部信息;\n-f 将外部的Internet地址以数字的形式打印出来;\n-l 使标准输出变为缓冲行形式;\n-n 不把网络地址转换成名字;\n-t 在输出的每一行不打印时间戳;\n-v 输出一个稍微详细的信息,例如在ip包中可以包括ttl和服务类型的信息;\n-vv 输出详细的报文信息;\n-c 在收到指定的包的数目后,tcpdump就会停止;\n-F 从指定的文件中读取表达式,忽略其它的表达式;\n-i …\u003c/p\u003e\u003c/blockquote\u003e"
April 27, 2012
[教程]mongodb常用维护命令
"\u003cp\u003e\u003cstrong\u003e1.客户端常用命令\n** #mongo\u003c/strong\u003e\n** \u0026gt;help //列出帮助**\n** \u0026gt;db.help() //db级别的帮助**\n** \u0026gt;db.mycollection.help() //collection 级别的帮助\u003c/p\u003e\n\u003cp\u003e \u003cstrong\u003e常用命令:\u003c/strong\u003e\n \u0026gt;show dbs //show database names\n \u0026gt;show collections //show collections in current database\n \u0026gt;use //set current database\n \u0026gt;db.foo.find() //list objects in collection foo\n \u0026gt;db.foo.find({a:1}) //list objects in foo where a == 1\n \u0026gt;db.createCollection(name, { size : …, capped : …, max : … } ) //创建collection …\u003c/p\u003e"
April 27, 2012
MongoDB之导入和导出
"\u003cp\u003e在上文中,我们了解了 \u003ca href=\"http://database.51cto.com/art/201105/263921.htm\"\u003e教你如何利用MySQL学习MongoDB之授权和权限\u003c/a\u003e,本文中我们继续我们的学习之旅,学习两者的\u003cstrong\u003e导入和导出\u003c/strong\u003e。\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003e1、MySQL导入和导出\u003c/strong\u003e\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003e(1)、mysqlimport\u003c/strong\u003e\u003c/p\u003e\n\u003cp\u003e此工具位于mysql/bin目录中,是MySQL的一个载入(或者说导入)数据的一个非常有效的工具。这是一个命令行工具。有两个参数以及大量的选项可供选择。这个工具把一个文本文件(text file)导入到你指定的数据库和表中。比方说我们要从文件student.txt中把数据导入到数据库class中的表 student中:\u003c/p\u003e\n\u003cblockquote\u003e\n\u003cp\u003e\u003cstrong\u003emysqlimport\u003c/strong\u003e class.student student.txt\u003c/p\u003e\u003c/blockquote\u003e\n\u003cp\u003e\u003cstrong\u003e(2)、load data infile\u003c/strong\u003e\u003c/p\u003e\n\u003cp\u003e这个命令与mysqlimport非常相似,但这个方法可以在MySQL命令行中使用。 如mysqlimport工具一样,这个命令也有一些可以选择的参数。比如您需要把自己的电脑上的数据导入到远程的数据库服务器中,您可以使用下面的命令:\u003c/p\u003e\n\u003cblockquote\u003e\n\u003cp\u003eLoad data local infile “d:\\student.txt” into table student;\u003c/p\u003e\u003c/blockquote\u003e\n\u003cp\u003e上面的local …\u003c/p\u003e"
April 27, 2012
MongoDB非正常关闭后修复记录 mongod –repair
"\u003cp\u003emongod没有后台执行,在终端连接非正常断开后,再次执行mongod报错,如下所示:\u003c/p\u003e\n\u003cp\u003e[root@localhost mongodb]# ./bin/mongod\n./bin/mongod –help for help and startup options\nThu Nov 17 22:42:49\nThu Nov 17 22:42:49 warning: 32-bit servers don’t have journaling enabled by default. Please use –journal if you want durability.\nThu Nov 17 22:42:49\nThu Nov 17 22:42:49 [initandlisten] MongoDB starting : pid=3257 port=27017 dbpath=/data/db/ 32-bit host=localhost\nThu Nov 17 22:42:49 [initandlisten]\nThu Nov 17 22:42:49 [initandlisten] ** NOTE: when …\u003c/p\u003e"
April 23, 2012
jquery.validate remote 和 自定义验证方法
"\u003cp\u003e$(function(){\u003c/p\u003e\n\u003cp\u003evar validator = $(“#enterRegForm”).validate({\ndebug:false, //调试模式取消submit的默认提交功能\n//errorClass: “error”,//默认为错误的样式类为:error\n//validClass: “check”,//验证成功后的样式,默认字符串valid\nfocusInvalid: true,//表单提交时,焦点会指向第一个没有通过验证的域\n//focusCleanup:true;//焦点指向错误域时,隐藏错误信息,不可与focusInvalid一起使用!\nonkeyup: true,\nerrorElement: “div”,\nsubmitHandler: function(form){ //表单提交句柄,为一回调函数,带一个参数:form\nform.submit(); //提交表单\n},\u003c/p\u003e\n\u003cp\u003erules: {\n“enterprise.enName”: {\nrequired: true,\nminlength: 6,\nremote:{\nurl: “/nameServlet”, // …\u003c/p\u003e"
April 21, 2012
Zend_Filters_Input来实现对密码重复验证
"\u003ch3 id=\"2254-使用-metacommands-来控制过滤器或校验器规则\"\u003e22.5.4. 使用 Metacommands 来控制过滤器或校验器规则\u003c/h3\u003e\n\u003cp\u003e除了声明从字段到过滤器或校验器的映射,你可以在数组声明中指定一些 “metacommands” ,开控制一些 Zend_Filter_Input 的可选的行为。 Metacommands 在给定的过滤器或校验器数组值里以字符串索引条目的形式出现。\u003c/p\u003e\n\u003ch4 id=\"22541the-fields-metacommand\"\u003e22.5.4.1. The \u003ccode\u003eFIELDS\u003c/code\u003e metacommand\u003c/h4\u003e\n\u003cp\u003e如果过滤器或校验器的规则名和需要应用规则的字段名不同,可以用 ‘fields’ metacommand 来指定字段名。\u003c/p\u003e\n\u003cp\u003e可以用类常量 \u003ccode\u003eZend_Filter_Input::FIELDS\u003c/code\u003e 而不是字符串来指定这个 metacommand。\u003c/p\u003e\n\u003cpre tabindex=\"0\"\u003e\u003ccode\u003e\u0026lt;?php\n$filters = array(\n \u0026#39;month\u0026#39; =\u0026gt; array(\n \u0026#39;Digits\u0026#39;, // filter name at integer index [0]\n \u0026#39;fields\u0026#39; =\u0026gt; \u0026#39;mo\u0026#39; // field name …\u003c/code\u003e\u003c/pre\u003e"
April 21, 2012
Zend_Filter_Input的基本用法
"\u003cp\u003e这里我们假设有一个登录入口,有三个表单元素,分别为用户名(username),密码(password)和验证码(captcha).\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003e要求如下:\u003c/strong\u003e\u003c/p\u003e\n\u003col\u003e\n\u003cli\u003e所有元素去掉两边的空格\u003c/li\u003e\n\u003cli\u003e用户名要为数字和字母\u003c/li\u003e\n\u003cli\u003e验证码为数字类型(这里为了验证为空的情况下,注释掉了这块功能.启用的话,如果输入的是非数字的话,会直接提示不能为空.)\u003c/li\u003e\n\u003c/ol\u003e\n\u003cp\u003ePHP 代码如下:\u003c/p\u003e\n\u003cpre tabindex=\"0\"\u003e\u003ccode\u003e \u0026#39;StringTrim\u0026#39;,\n\t\t\t\u0026#39;username\u0026#39; =\u0026gt; \u0026#39;Alnum\u0026#39;,\n\t\t\t//\u0026#39;captcha\u0026#39; =\u0026gt; \u0026#39;Digits\u0026#39;\n\t);\n\n\t$validators = array(\n\t\t\t\u0026#39;username\u0026#39; =\u0026gt; array(\n\t\t\t\t\u0026#39;allowEmpty\u0026#39; =\u0026gt; false\n\t\t\t\t),\n\t\t\t\u0026#39;password\u0026#39; =\u0026gt; array(\n\t\t\t\t\t\u0026#39;allowEmpty\u0026#39; =\u0026gt; false\n\t\t\t\t),\n\t\t\t \u0026#39;captcha\u0026#39; =\u0026gt; …\u003c/code\u003e\u003c/pre\u003e"
April 19, 2012
重装系统备份文件清单
"\u003cp\u003e包括lamp,lnmp 所涉及到的所有配置文件.\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003e重装安装系统备份\u003c/strong\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003col\u003e\n\u003cli\u003ephp.ini文件\u003c/li\u003e\n\u003cli\u003erc.local\u003c/li\u003e\n\u003cli\u003e/etc/crontab\u003c/li\u003e\n\u003cli\u003enginx.conf 及相关虚拟主机配置文件\u003c/li\u003e\n\u003cli\u003e数据库备份\u003c/li\u003e\n\u003cli\u003e网站程序备份\u003c/li\u003e\n\u003cli\u003eftp配置文件备份\u003c/li\u003e\n\u003cli\u003e系统防火墙iptables设置\u003c/li\u003e\n\u003c/ol\u003e\u003c/blockquote\u003e\n\u003cp\u003e注: 恢复配置文件时,注意相关文件权限,如网站ftp目录的权限分配问题.\u003c/p\u003e"
April 19, 2012
23.6. Zend Framework 带有的标准表单元素
"\u003ch2 id=\"236zend-framework-带有的标准表单元素\"\u003e23.6. Zend Framework 带有的标准表单元素\u003c/h2\u003e\n\u003cp\u003eZend Framework 带有的具体元素类涵盖了大部分的 HTML 表单元素。其中大部分当装饰元素时,指定了特定的视图助手来用,但有一些还提供了另外的功能。下面是这些类的列表,还有它们提供的功能的描述。\u003c/p\u003e\n\u003ch3 id=\"2361zend_form_element_button\"\u003e23.6.1. Zend_Form_Element_Button\u003c/h3\u003e\n\u003cp\u003e用来生成 HTML 按钮元素, \u003ccode\u003eZend_Form_Element_Button\u003c/code\u003e 继承 Zend_Form_Element_Submit,并派生它的定制功能。它为装饰指定 ‘formButton’ 视图助手。\u003c/p\u003e\n\u003cp\u003e像提交元素一样,它使用元素的标签作为元素的值来显示,还句话说,通过设置元素的值来设置按钮上的文字。如果有翻译适配器,标签将显示翻译后的文字。\u003c/p\u003e\n\u003cp\u003e因为标签用作元素的一部分,但按钮元素只用 ViewHelper 和 DtDdWrapper 装饰器。\u003c/p\u003e\n\u003cp\u003e在组装和校验表单之后,我们可用 \u003ccode\u003eisChecked()\u003c/code\u003e 方法来检查是否给定的按钮被点击。\u003c/p\u003e\n\u003ch3 id=\"2362zend_form_element_checkbox\"\u003e23.6.2. Zend_Form_Element_Checkbox\u003c/h3\u003e\n\u003cp\u003eHTML checkboxes 让你返回一个特定的 …\u003c/p\u003e"
April 19, 2012
Zend_Form 之定制表单
"\u003ch3 id=\"23410-定制表单\"\u003e23.4.10. 定制表单\u003c/h3\u003e\n\u003cp\u003e一个使用基于配置的表单的替代方法是继承 \u003ccode\u003eZend_Form\u003c/code\u003e 类,有若干优点:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003e可以容易进行单元测试来确保校验和解析如愿执行。\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e精细地控制每个元素。\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e重使用表单对象,最大化可移植性(不需要跟踪配置文件)。\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e实现定制功能。\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e最典型的用例是使用 \u003ccode\u003einit()\u003c/code\u003e 方法来设置指定的表单元素和配置:\u003c/p\u003e\n\u003cpre tabindex=\"0\"\u003e\u003ccode\u003e\u0026lt;?php\nclass My_Form_Login extends Zend_Form\n{\n public function init()\n {\n $username = new Zend_Form_Element_Text(\u0026#39;username\u0026#39;);\n $username-\u0026gt;class = \u0026#39;formtext\u0026#39;;\n $username-\u0026gt;setLabel(\u0026#39;Username:\u0026#39;)\n -\u0026gt;setDecorators(array( …\u003c/code\u003e\u003c/pre\u003e"
April 19, 2012
Zend_Form 的方法大全,按类分组
"\u003ch3 id=\"2348-方法\"\u003e23.4.8. 方法\u003c/h3\u003e\n\u003cp\u003e下面是 \u003ccode\u003eZend_Form\u003c/code\u003e 的方法大全,按类分组:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003e配置和选项:\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e\u003ccode\u003esetOptions(array $options)\u003c/code\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e\u003ccode\u003esetConfig(Zend_Config $config)\u003c/code\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e插件加载器和路径:\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e\u003ccode\u003esetPluginLoader(Zend_Loader_PluginLoader_Interface $loader, $type = null)\u003c/code\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e\u003ccode\u003egetPluginLoader($type = null)\u003c/code\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e\u003ccode\u003eaddPrefixPath($prefix, $path, $type = null) \u003c/code\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e\u003ccode\u003eaddPrefixPaths(array $spec)\u003c/code\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e\u003ccode\u003eaddElementPrefixPath($prefix, $path, $type = null)\u003c/code\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e\u003ccode\u003eaddElementPrefixPaths(array $spec)\u003c/code\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e\u003ccode\u003eaddDisplayGroupPrefixPath($prefix, $path)\u003c/code\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e元数据:\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e\u003ccode\u003esetAttrib($key, $value)\u003c/code\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e\u003ccode\u003eaddAttribs(array …\u003c/code\u003e\u003c/p\u003e\u003c/li\u003e\u003c/ul\u003e"
April 19, 2012
zend_form 之定制表单元素
"\u003ch3 id=\"2339-定制元素\"\u003e23.3.9. 定制元素\u003c/h3\u003e\n\u003cp\u003e通过继承 \u003ccode\u003eZend_Form_Element\u003c/code\u003e 类,你可以生成自己的定制元素,这样做的原因是:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003e共享通用的校验器和/或过滤器的元素\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e有定制装饰器功能的元素\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e有两个方法一般用来扩展元素: \u003ccode\u003einit()\u003c/code\u003e 可为元素添加定制的初始化逻辑; \u003ccode\u003eloadDefaultDecorators()\u003c/code\u003e 可用于设置一个用于元素的缺省装饰器的列表。\u003c/p\u003e\n\u003cp\u003e用例子来说明,你在一个表单里生成的所有文本元素需要用 \u003ccode\u003eStringTrim\u003c/code\u003e 来过滤、用通用的规则表达式来校验,并且你想用你生成的定制的装饰器来显示它们,’My_Decorator_TextItem’。另外,你有许多想指定的标准属性,包括 ‘size’、 ‘maxLength’ 和 ‘class’。你可以定义这样的元素如下:\u003c/p\u003e\n\u003cpre tabindex=\"0\"\u003e\u003ccode\u003e\u0026lt;?php\nclass My_Element_Text extends Zend_Form_Element\n{\n public function init()\n {\n $this-\u0026gt;addPrefixPath(\u0026#39;My_Decorator\u0026#39;, …\u003c/code\u003e\u003c/pre\u003e"
April 19, 2012
Zend_Form中的元数据和属性
"\u003cp\u003e\u003ccode\u003eZend_Form_Element\u003c/code\u003e 处理广泛的属性和元素元数据,基本属性包括:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003e\u003cem\u003ename\u003c/em\u003e: 元素名,使用 \u003ccode\u003esetName()\u003c/code\u003e 和 \u003ccode\u003egetName()\u003c/code\u003e 访问器。\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e\u003cem\u003elabel\u003c/em\u003e: 元素标签,使用 \u003ccode\u003esetLabel()\u003c/code\u003e 和 \u003ccode\u003egetLabel()\u003c/code\u003e 访问器。\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e\u003cem\u003eorder\u003c/em\u003e: 在表单中出现的元素的索引,使用 \u003ccode\u003esetOrder()\u003c/code\u003e 和 \u003ccode\u003egetOrder()\u003c/code\u003e 访问器。\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e\u003cem\u003evalue\u003c/em\u003e: 当前元素的值,使用 \u003ccode\u003esetValue()\u003c/code\u003e 和 \u003ccode\u003egetValue()\u003c/code\u003e 访问器。\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e\u003cem\u003edescription\u003c/em\u003e: 元素的描述,常用于提供工具提示或 javascript 上下文提示,描述元素的意图,使用 \u003ccode\u003esetDescription()\u003c/code\u003e 和 \u003ccode\u003egetDescription()\u003c/code\u003e 访问器。\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e\u003cem\u003erequired\u003c/em\u003e: 当执行表单校验时,指示元素是否必需的标志,使用 \u003ccode\u003esetRequired()\u003c/code\u003e 和 \u003ccode\u003egetRequired()\u003c/code\u003e 访问器,缺省为 false。\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e\u003cem\u003eallowEmpty\u003c/em\u003e: 指示可选的元素是否应该校验空值的标志,当为 true,并且要求的标志为 false,空值就不传递给校验器链,并假定为 true。 …\u003c/p\u003e\u003c/li\u003e\u003c/ul\u003e"
April 19, 2012
zend_form 基础使用方法示例
"\u003cpre tabindex=\"0\"\u003e\u003ccode\u003epublic function indexAction()\n {\n\t\t$form = new Zend_Form();\n\n\t\tif ($form-\u0026gt;isValid($_POST)) {\n\t\t\t// success!\n\t\t\t$values = $form-\u0026gt;getValues();\n\n\t\t} else {\n\t\t\t// failure\n\n\t\t\t// deubg\n\t\t\t$this-\u0026gt;view-\u0026gt;form = $form;\n\t\t\treturn $this-\u0026gt;render(\u0026#39;form\u0026#39;);\n\n\t\t}\n\n\t\t$form-\u0026gt;setAction(\u0026#39;/members/index/register\u0026#39;)\n\t\t\t-\u0026gt;setMethod(\u0026#39;post\u0026#39;);\n\n\t\t$form-\u0026gt;setAttrib(\u0026#39;id\u0026#39;, \u0026#39;login\u0026#39;);\n\n\t\t// create and confirure username element\n\t\t//$username = new …\u003c/code\u003e\u003c/pre\u003e"