作者存档

查看mysql数据库中某个库的存储过程

2012年1月11日 没有评论

如果只想知道存储过程的名字,有两种方法

  • 方法一:
select `name` from mysql.proc where db = '数据库名' and `type` = 'PROCEDURE';
  • 方法二:
use 数据库名

show procedure status;

查看存储过程的代码

use 数据库名

show create procedure proc_name;
分类: MySQL 标签: ,

绑定window的onload事件不执行

2012年1月10日 没有评论

今天碰到一个奇怪的问题,在一个外部的js文件中给页面绑定了onload事件,在FF下能正确执行,IE6下却没有执行。最开始以为是绑定事件写的有问题,后来排除,经过多方调试,依然没有找到问题所在。最后还是香烟给我灵感,突然想到会不会是页面是不是已经页面load完了才执行绑定onload的事件?赶紧用测试一把,把window的onload换成document.body的click,点击页面后成功执行了。基本可以肯定是页面load完了才进行绑定操作的。由于是在页面加载的js中用动态加载的方式加载了另外一个js,在另外一个js中执行的绑定事件,也就是说这样操作在ie6下可能会造成问题。现在知道问题所在,那解决问题办法就是先用document.readyState(complete表示加载完成)查看页面是否已经load完成,如果已经完成就可以直接执行,否则就绑定onload事件。

兼容主流的浏览量的绑定事件通用方法,

function addEvent(obj, event, callback) {
	if (obj.addEventListener) {
		obj.addEventListener(event, callback, false);
	} else {
		obj.attachEvent("on" + event, callback);
	}
}
当然也可以用document.readyState来达到onload的效果,示例如下:
(function(){
	if (document.readyState && document.readyState == 'complete') {
		// doing
	} else {
		setTimeout(arguments.callee, 10);
	}
})();

			

关于nginx rewrtie的四种flag

2012年1月9日 没有评论

利用nginx的rewrite的指令,可以实现url的转向,对于rewrtie有四种不同的flag,分别是redirect、permanent、break和last。其中前两种是跳转型的flag,后两种是代理型。跳转型是指有客户端浏览器重新对新地址进行请求,代理型是在WEB服务器内部实现跳转的。

  • redirect:302跳转到rewrtie后面的地址。
  • permanent:301永久调整到rewrtie后面的地址,即当前地址已经永久迁移到新地址,一般是为了对搜索引擎友好。
  • last:将rewrite后的地址重新在server标签执行。
  • break:将rewrite后地址重新在当前的location标签执行。

使用root或proxy_pass指定源,last,break都可以,但是结果可能会有差别,后面用例子说明;使用alias指定源,必须使用last。假如有如下配置:

	location / {
	    root   /var/www/html;
	    index  index.html index.htm;
	    rewrite "/x/t.html" /y/t.html break;
	}

	location /y/ {
	    root  /var/www/html/other;
	}

当请求/x/t.html,符合rewrite规则,所以进行调整,调整的地址为/y/t.html,由于使用的flag是break,所以在“location /”中进行跳转,结果是/var/www/html/y/t.html。但如果flag为last,那么/y/t.html将在server标签中重新执行,由于存在一个“location /y/”,所以跳转被重新指定到“location /y/”标签,所以这个时候的结果为/var/www/html/other/y/t.html。

注意:使用last,如果配置不当,可能引起死循环。例如:

	location /x/ {
	    proxy_pass http://my_proxy;
	    rewrite "^/x/(.*)\.html$" /x/1.html last;
	}
分类: Linux, nginx 标签: , ,

使用jquery出现is not a function

2012年1月5日 1 条评论

最近在使用jquery时候,通过firefox的错误控制看到$(function(){//mycode}) is not a function的错误提示,但是mycode代码块都成功执行了,页面的没有出现别的异常,不过看到这个错误提示还是不爽,如是觉得找到原因,网上一搜,发现有这个问题的还不少,最多的是由于jquery和别的框架冲突,例如prototype,还有的说是由于两次导入了jquery,我在我的项目中仔细的查看,不存在刚提到的两种情况,一度以为是由于文件的编码问题造成,试着用不同的文本工具来定义js文件,问题还是依旧,经过不断的各种方法尝试,终于知道问题出在什么地方,是因为在后面加了一对括号引起的。

$(function(){
	//my code
	// ...
})();

注意最后的一对括号。可能是因为最近使用闭包情况比较多,写的时候随手写上了,害我一顿好找。

mysql的between的边界问题

2012年1月5日 没有评论

mysql的sql语句中可以使用between来限定一个数据的范围,例如:

select * from user where userId between 5 and 7;

查询userId为5、6,7的user,userId范围是包含边界值的,也等同如下查询:

select * from user where userId >= 5 and userId <= 7;

很多地方都提到between是给定的范围是大于等第一值,小于第二个值,其实这是不对的。此前我一直也是这么认为,通过实验,结论是包含两边的边界值,如果实在拿不准,可以采用>= 、<=的方式来指定条件。

另外 not  between的范围是不包含边界值。

分类: MySQL 标签: ,

配置记录mysql服务器的慢查询日志

2012年1月5日 没有评论

mysql服务可以把超过指定规定时间的sql语句已日志的方式记录下来,检查当前mysql服务有没有记录慢查询的命令为:

/usr/local/mysql/bin/mysqladmin var | grep log_slow | tr -d "|"

如果看到log_slow_queries OFF则没有启用,启用的方法很简单,把如下配置放在mysql的配置文件my.cnf中的mysqld段里即可。

log-slow-queries	= /var/lib/mysql/slow-queries.log
long_query_time		= 1
log-queries-not-using-indexes
log-slow-admin-statements

上面的配置打开了slow query日志,将会捕获了执行时间超过了1秒的查询,包括执行速度较慢的管理命令(比如OPTIMEZE TABLE),并且记录了没有使用索引的查询。这些SQL,都会被记录到log-slow-queries指定的文件/var/lib/mysql /slow-queries.log文件中。

log-slow-queries
存放slow query日志的文件。你必须保证mysql server进程mysqld_safe进程用户对该文件有w权限。

long_query_time
如果query time超过了该值,则认为是较慢查询,并被记录下来。单位是秒。

log-queries-not-using-indexes
MySQL会将没有使用索引的查询记录到slow query日志中。无论它执行有多快,查询语句没有使用索引,都会被记录。有的时候,有些没有使用引索的查询非常快(例如扫描很小的表),但也有可能导致服务器变慢,甚至还会使用大量的磁盘空间。

log-slow-admin-statements
一些管理指令,也会被记录。比如OPTIMEZE TABLE, ALTER TABLE等等。

需要说明的是long_query_time很多地方都说最小是1秒,其实该值可以是一个浮点数,起码在mysql 5版本中可以这么配置,例如 0.1,也就是100毫秒。

分类: MySQL 标签: ,

rsync 的 delete参数

2012年1月5日 没有评论

rsync带上delete的参数后,当源目录中的文件删除,同步后目标目录中的文件也会被删除,如果源目录写法不当,可能无法达到同步删除目标目录的文件。例如:

/usr/bin/rsync -vzrtopg --progress  --delete \
        /home/yangyz/tmp/src/* /home/yangyz/tmp/dest/

当删除src下的文件或文件夹时,同步后dest中还是存在,如果是删除src的子目录下的,同步后dest中会被删除,而下面命令就不一样,不管删除的是哪个文件夹下的内容,同步dest都会做相同的删除

/usr/bin/rsync -vzrtopg --progress  --delete \
       /home/yangyz/tmp/src/ /home/yangyz/tmp/dest/

上述两条命令的不同之处就是在src后面是否带*号,另外如果src目录后不带斜杠,那么是将src目录复制到dest中,包含了src目录,否则是把src目录下的文件同步到dest中,不包含src目录。

分类: Linux 标签: ,

flash覆盖div的解决办法

2012年1月1日 没有评论

当采用相对位置来定义div,如果该区域也存在flash对象,即使div的z-index的设的很大,默认情况下,flash对象会覆盖住div的,解决办法是通过设置加载flash的object的wmode参数,例如

<param  name= "wmode"  value= "transparent">
或
<param  name= "wmode"  value= "opaque">

上述第一个是flash背景透明,第二个则是背景不透明。

另外如果使用swfobject.js来加载swf,则可以使用如下方法:

swfobject.embedSWF(
	"happy_year.swf", 
	"div_container", 
	"350", 
	"350", 
	"9.0.0", 
	"install_flash_player.swf", 
	null, 
	opObjectParams
);

即在最后一个参数上添加wmode的值。

分类: web前端 标签:

关于php的时间相关函数需要注意时区问题

2012年1月1日 没有评论

time()函数能获取一个相对于1901年的时间秒数,但是需要注意,如果系统没有设置时区,那么获得的结果是UTC时间,相对中国用户来说,就是相差了8个小时,例如通过date来获取当前的日期,date(‘Y-m-d’),在早上8点前看到的日期是昨天的,所以需要显示设置时区,可以在php.ini中设置,date.timezone = PRC,或者在使用前用date_default_timezone_set来设置,例如 date_default_timezone_set(“PRC”);

分类: PHP 标签:

linux中获取昨天或明天时间的方法

2011年12月31日 没有评论

date命令可以获取当前的时间,通过man,可以看到date有很多参数可以用,很容易做到格式化,例如:

date +"%F"
输出格式:2011-12-31

date +"%F %H:%M:%S"
输出格式:2011-12-31 16:29:50

这都是打印出系统的当前时间,如果要获取相对当前时间的某个时间,需要怎么做,通过 -d 参数就能实现。例如:

date -d"tomorrow" +"%F %H:%M:%S"
输出明天这个时候的时间

date -d"yesterday" +"%F %H:%M:%S"
输出昨天这个时候的时间

如果说我想获取13天前的时间怎么办,-d参数还有更加灵活的用法,例如:

date -d"-1 day ago" +"%F %H:%M:%S"
输出明天这个时候的时间

date -d"1 day ago" +"%F %H:%M:%S"
输出昨天这个时候的时间

date -d"1 week ago" +"%F %H:%M:%S"
输出7天前这个时候的时间,等价于
date -d"7 day ago" +"%F %H:%M:%S"

可以看到ago的强大了吧,第一个数字可以是负数,负数表示将来时间,正数表示前面已经过去的时间,第二个参数minute、hour、day、month、week。

分类: Linux 标签: ,

无觅相关文章插件,快速提升流量