用户有路由器,网站路过交换机,但也有是境会出现 http 400 错误请求,这种现象往往很少发生,但也可能发生。
英文怎么说的:
This error (HTTP 400 Bad Request) means that Internet Explorer was able to connect to the web server, but the webpage could not be found because of a problem with the address.
中文:
此错误 (HTTP 400 坏请求) 意味着 Internet Explorer 是能够连接到 web 服务器,但由于的地址有问题找不到该网页。
在百度知道上有人回答:这是网站的问题,不必担心,变为了最佳答案,如:http://zhidao.baidu.com/question/83711863.html
可能的问题:
但在海量服务时,别人访问Ok,别的地区,海外都Ok,而你访问不行,那你可能还处于城中村的网络中,可能是交换机,也可能是路由器,更可能是防火墙,在http协议头里加入了空格,使这个协议出现不完整,进而返回了400请求,你可以建议该区寻找硬件及硬件配置的问题,为此,这种情况也只能在服务器端对该地的用户http请求头的数据进行抓包来分析其是否符合http协议。如果确定是在路途中给篡改了相关数据,是否可以修改网站的程序进行容错处理(如果你认为该地区很重要),否则,那就点到为此吧,中国是一片神奇的土地,也有神奇的网络,网路结构,要为用户提供好的服务,就看你的产品观和方法手段了,如何服务好你的用户,这是关键,用户没有错,因为有很多用户都生活在城中村里,我们能不能放弃他们,在于我们产品的定位。
英文怎么说的:
This error (HTTP 400 Bad Request) means that Internet Explorer was able to connect to the web server, but the webpage could not be found because of a problem with the address.
中文:
此错误 (HTTP 400 坏请求) 意味着 Internet Explorer 是能够连接到 web 服务器,但由于的地址有问题找不到该网页。
在百度知道上有人回答:这是网站的问题,不必担心,变为了最佳答案,如:http://zhidao.baidu.com/question/83711863.html
可能的问题:
但在海量服务时,别人访问Ok,别的地区,海外都Ok,而你访问不行,那你可能还处于城中村的网络中,可能是交换机,也可能是路由器,更可能是防火墙,在http协议头里加入了空格,使这个协议出现不完整,进而返回了400请求,你可以建议该区寻找硬件及硬件配置的问题,为此,这种情况也只能在服务器端对该地的用户http请求头的数据进行抓包来分析其是否符合http协议。如果确定是在路途中给篡改了相关数据,是否可以修改网站的程序进行容错处理(如果你认为该地区很重要),否则,那就点到为此吧,中国是一片神奇的土地,也有神奇的网络,网路结构,要为用户提供好的服务,就看你的产品观和方法手段了,如何服务好你的用户,这是关键,用户没有错,因为有很多用户都生活在城中村里,我们能不能放弃他们,在于我们产品的定位。
mysql的SQL_CALC_FOUND_ROWS 使用:
在很多分页的程序中都这样写:
SELECT COUNT(*) from `table` WHERE ......; 查出符合条件的记录总数
SELECT * FROM `table` WHERE ...... limit M,N; 查询当页要显示的数据
这样的语句可以改成:
SELECT SQL_CALC_FOUND_ROWS * FROM `table` WHERE ...... limit M, N;
SELECT FOUND_ROWS();
这样只要执行一次较耗时的复杂查询可以同时得到与不带limit同样的记录条数
第二个 SELECT返回一个数字,指示了在没有LIMIT子句的情况下,第一个SELECT返回了多少行 (若上述的 SELECT语句不包括 SQL_CALC_FOUND_ROWS 选项,则使用LIMIT 和不使用时,FOUND_ROWS() 可能会返回不同的结果)。
参考:
http://blog.chinaunix.net/u/2326/showart_425640.html
在很多分页的程序中都这样写:
SELECT COUNT(*) from `table` WHERE ......; 查出符合条件的记录总数
SELECT * FROM `table` WHERE ...... limit M,N; 查询当页要显示的数据
这样的语句可以改成:
SELECT SQL_CALC_FOUND_ROWS * FROM `table` WHERE ...... limit M, N;
SELECT FOUND_ROWS();
这样只要执行一次较耗时的复杂查询可以同时得到与不带limit同样的记录条数
第二个 SELECT返回一个数字,指示了在没有LIMIT子句的情况下,第一个SELECT返回了多少行 (若上述的 SELECT语句不包括 SQL_CALC_FOUND_ROWS 选项,则使用LIMIT 和不使用时,FOUND_ROWS() 可能会返回不同的结果)。
参考:
http://blog.chinaunix.net/u/2326/showart_425640.html
看此文写得实在,有实用价值,特转。
阅读全文
阅读全文
centos 6.0已经正式发布了,做为一个大版本的第一个版本肯定有很多问题,RHEL 6.1早发布修补了很多问题,当然还有增强(或增加)了一些功能,所以真正重要生产服务器还是期待centos 6.1的发布,估计下个月底就会发布。
http://qaweb.dev.centos.org/qa/dashboard
预计下周会正式发布下载,且centos 5.7 发布也一样
2011-08-26
centos 5.7官方最新消息称最快7-10天内发布
centos 6.1不太顺利,估计要比5.7晚点
2011-09-01
centos 5.7已经发布了,开始同步外部镜像,估计这两天就可以下载
现在已经有部份镜像点有下载了:
http://ftp.twaren.net/Linux/CentOS/5.7/isos
http://centos.mirror.nexicom.net/5.7/isos/
更多的见:
http://www.centos.org/modules/tinycontent/index.php?id=30
按照计划先推出CentOS 6,然后再进行CentOS 6.1的工作。centos。Karanbir表示CentOS 6将在未来的数个星期内发布,而之后的CentOS 6.1只需要几个星期的时间,centos ftp,因为目前CentOS 6的开发branch的自动化和测试流程已经基本完善。centos和rhel。
centos 6.1预15天左右可供下载,可能还得等,官方更新build包日志:http://qaweb.dev.centos.org/qa/blog ,感谢CentOS团队无私的奉献。
在centos 6.1发布之前,centos临时发布了CentOS 6.0 CR Repo,有需要的可以下载用于CENTOS 6.0
同时也说明centos 6.1可能会再次跳票(大家都习惯了吧!)
yum install centos-release-cr
yum update
详见:https://www.centos.org/modules/newbb/viewtopic.php?topic_id=33458&forum=53
http://www.h-online.com/open/news/item/Advance-updates-for-CentOS-6-1-1350302.html
http://qaweb.dev.centos.org/qa/dashboard
预计下周会正式发布下载,且centos 5.7 发布也一样
2011-08-26
centos 5.7官方最新消息称最快7-10天内发布
centos 6.1不太顺利,估计要比5.7晚点
2011-09-01
centos 5.7已经发布了,开始同步外部镜像,估计这两天就可以下载
现在已经有部份镜像点有下载了:
http://ftp.twaren.net/Linux/CentOS/5.7/isos
http://centos.mirror.nexicom.net/5.7/isos/
更多的见:
http://www.centos.org/modules/tinycontent/index.php?id=30
按照计划先推出CentOS 6,然后再进行CentOS 6.1的工作。centos。Karanbir表示CentOS 6将在未来的数个星期内发布,而之后的CentOS 6.1只需要几个星期的时间,centos ftp,因为目前CentOS 6的开发branch的自动化和测试流程已经基本完善。centos和rhel。
centos 6.1预15天左右可供下载,可能还得等,官方更新build包日志:http://qaweb.dev.centos.org/qa/blog ,感谢CentOS团队无私的奉献。
在centos 6.1发布之前,centos临时发布了CentOS 6.0 CR Repo,有需要的可以下载用于CENTOS 6.0
同时也说明centos 6.1可能会再次跳票(大家都习惯了吧!)
yum install centos-release-cr
yum update
详见:https://www.centos.org/modules/newbb/viewtopic.php?topic_id=33458&forum=53
http://www.h-online.com/open/news/item/Advance-updates-for-CentOS-6-1-1350302.html
[个人原创]Linux下的C++调试服务器之常用调试命令小记
Php/Js/Shell/Go jackxiang 2011-11-10 13:44
1.模拟Linux下的82端口:[Linux自带的nc (netcat) ]
Suse: netcat -l -p 82
Centos: nc -l localhost 82
参考:http://linux.vbird.org/linux_server/0140networkcommand.php
2.查看某个特定进程的CPU,内存等信息:
top只能看前几位,但是这样就可能看到任意,top -p 进程号,如:
3.tcpdump之监听某个端口:
4.gdb 之调试某个启动后的进程(注意该进程必须编译时加 -g):
通过ps 知道进程号为:16418,这样:
有某个文件的106行停止。
5.尽量在调试C++服务程序时不要用到 -O2,也就是不要用优化,这样更方便GDB调试。
6.善于用ipcs -m查看共享内存:
Eof。
Write -By:jack
实践情况:
端口收到实践:
netcat -l -p 82
gooddaygooddaygooddaygooddaygooddaygooddaygooddaygooddaygooddaygooddaygooddaygooddaygooddaygoodday
root@116.255.139.240:~# nc -l localhost 82
goodday
端口监听情况:
tcpdump -n -ilo port 82
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on lo, link-type EN10MB (Ethernet), capture size 96 bytes
14:04:10.344635 IP 127.0.0.1.38541 > 127.0.0.1.82: S 3710369840:3710369840(0) win 32767 <mss 16396,sackOK,timestamp 1126784740 0,nop,wscale 2>
14:04:10.344859 IP 127.0.0.1.82 > 127.0.0.1.38541: S 3702073690:3702073690(0) ack 3710369841 win 32767 <mss 16396,sackOK,timestamp 1126784740 1126784740,nop,wscale 2>
Suse: netcat -l -p 82
Centos: nc -l localhost 82
参考:http://linux.vbird.org/linux_server/0140networkcommand.php
2.查看某个特定进程的CPU,内存等信息:
top只能看前几位,但是这样就可能看到任意,top -p 进程号,如:
3.tcpdump之监听某个端口:
4.gdb 之调试某个启动后的进程(注意该进程必须编译时加 -g):
通过ps 知道进程号为:16418,这样:
有某个文件的106行停止。
5.尽量在调试C++服务程序时不要用到 -O2,也就是不要用优化,这样更方便GDB调试。
6.善于用ipcs -m查看共享内存:
Eof。
Write -By:jack
实践情况:
端口收到实践:
netcat -l -p 82
gooddaygooddaygooddaygooddaygooddaygooddaygooddaygooddaygooddaygooddaygooddaygooddaygooddaygoodday
root@116.255.139.240:~# nc -l localhost 82
goodday
端口监听情况:
tcpdump -n -ilo port 82
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on lo, link-type EN10MB (Ethernet), capture size 96 bytes
14:04:10.344635 IP 127.0.0.1.38541 > 127.0.0.1.82: S 3710369840:3710369840(0) win 32767 <mss 16396,sackOK,timestamp 1126784740 0,nop,wscale 2>
14:04:10.344859 IP 127.0.0.1.82 > 127.0.0.1.38541: S 3702073690:3702073690(0) ack 3710369841 win 32767 <mss 16396,sackOK,timestamp 1126784740 1126784740,nop,wscale 2>
近来发现Vps上的内存不够用,是由于Mysql启动后不断扩大内存引起的,于是查了下内存增大原因后,
为了减少内存,为了尽量使其能稳定运行Vps,Mysql内存减少是关键,这样的背景下,
关闭Mysql5.5.8的Innodb引擎,记录步骤如下:
1、stop mysql
2、编辑my.cnf文件[mysqld]下面的配置:
1)将default-storage-engine=INNODB前的注释掉(#)去掉在[mysqld]下面加入:default-storage-engine = MyISAM
2)将skip-innodb这行注释(不加上#); 如大版本的Mysql如:Mysql5.5,skip-innodb在Mysql5.5.18中已经改成loose-skip-innodb了!
3)innodb=OFF
3、在数据库目录中把ibdata1、ib_logfile0、ib_logfile1 这三个文件删掉。也可不用删除,我个人觉得删除保险点儿,呵呵:
4、start mysql:
5.启动时看日志是否真关闭了InnoDB引擎:
这行是关键:111105 10:27:39 [Note] Plugin 'InnoDB' is disabled.
启动日志如下:
6.终端进入Mysql后查看配置后的情况,没有了Innodb:
mysql> show engines;
show variables like '%storage_engine%';
+------------------------+--------+
| Variable_name | Value |
+------------------------+--------+
| default_storage_engine | MyISAM |
| storage_engine | MyISAM |
+------------------------+--------+
7.内存占用明显减少,改动前后:
果然,Innodb还是很耗费内存的,尤其是对一个小内存的Vps机器来说,而最主要是的Innodb还会在运行中消耗比启动时更大的内存,只是为了提高Innodb的性能罢了,所以,我的Vps果断关掉它,而要是自己生产服务器,还是建议打开并使用Innodb,更何况
现在的Mysql默认就是Innodb,在性能上都不是相当不错的。EOF
8.我的配置文件记录,Download Url:
为何要关闭,我是为了减少内存的消耗罢了,引用网上的文章摘录如下:
(1) Innodb表缓存: Innnodb表有自己的缓存,它保存了从一开始访问每个表的元数据。它们从未被清除过,如果有很多Innodb表的话,那么这个量就很大了。这也就意味着拥有 CREATE TABLE 权限的用户就可能把MySQL服务器的内存耗尽。
(2) MyISAM缓冲:MyISAM表可能会分配一个足以装下指定表最大记录的缓冲,而且这个缓冲直到表关闭了才释放。
MyISAM我要用,Innodb这个我可以不用,所以关闭之,主要是Vps内存太小,这样可以省下不少空间。阅读全文
为了减少内存,为了尽量使其能稳定运行Vps,Mysql内存减少是关键,这样的背景下,
关闭Mysql5.5.8的Innodb引擎,记录步骤如下:
1、stop mysql
2、编辑my.cnf文件[mysqld]下面的配置:
1)将default-storage-engine=INNODB前的注释掉(#)去掉在[mysqld]下面加入:default-storage-engine = MyISAM
2)将skip-innodb这行注释(不加上#); 如大版本的Mysql如:Mysql5.5,skip-innodb在Mysql5.5.18中已经改成loose-skip-innodb了!
3)innodb=OFF
3、在数据库目录中把ibdata1、ib_logfile0、ib_logfile1 这三个文件删掉。也可不用删除,我个人觉得删除保险点儿,呵呵:
4、start mysql:
5.启动时看日志是否真关闭了InnoDB引擎:
这行是关键:111105 10:27:39 [Note] Plugin 'InnoDB' is disabled.
启动日志如下:
6.终端进入Mysql后查看配置后的情况,没有了Innodb:
mysql> show engines;
show variables like '%storage_engine%';
+------------------------+--------+
| Variable_name | Value |
+------------------------+--------+
| default_storage_engine | MyISAM |
| storage_engine | MyISAM |
+------------------------+--------+
7.内存占用明显减少,改动前后:
果然,Innodb还是很耗费内存的,尤其是对一个小内存的Vps机器来说,而最主要是的Innodb还会在运行中消耗比启动时更大的内存,只是为了提高Innodb的性能罢了,所以,我的Vps果断关掉它,而要是自己生产服务器,还是建议打开并使用Innodb,更何况
现在的Mysql默认就是Innodb,在性能上都不是相当不错的。EOF
8.我的配置文件记录,Download Url:
下载文件
为何要关闭,我是为了减少内存的消耗罢了,引用网上的文章摘录如下:
(1) Innodb表缓存: Innnodb表有自己的缓存,它保存了从一开始访问每个表的元数据。它们从未被清除过,如果有很多Innodb表的话,那么这个量就很大了。这也就意味着拥有 CREATE TABLE 权限的用户就可能把MySQL服务器的内存耗尽。
(2) MyISAM缓冲:MyISAM表可能会分配一个足以装下指定表最大记录的缓冲,而且这个缓冲直到表关闭了才释放。
MyISAM我要用,Innodb这个我可以不用,所以关闭之,主要是Vps内存太小,这样可以省下不少空间。阅读全文
如何在windows和linux下查看进程使用的端口或通过端口查看进程
Unix/LinuxC技术 jackxiang 2011-11-4 23:31
以前我也写过类似的博文,今天也重再抄一个吧:
日常维护我们经常会遇到某个程序使用了哪些端口,某个端口被哪个程序占用,如何查看呢,下面介绍如下:
对windows系统:通过windows任务管理器找到应用程序,右击“转到进程”,查看进程pid号(如无此列,请在“查看”-“选择列”中添加该列),然后在 cmd命令行下面输入netstat -an -o 然后找到对应的PID号 就能找到端口了。同理,某个端口被哪个程序占用,反查便可。注:有时netstat -na -o查出内容太多,不易找到pid,可通过重定向到txt文件(>pid.txt)查找。
对linux系统:查看某程序使用端口,在控制台输入netstat -na -p |grep pid/program name,便可;查看某端口被程序占用,在控制台输入lsof -i tcp:port或netstat -na -p |grep port便可。
当然,以上也可以通过cport或sv等端口查看工具查看。如:
日常维护我们经常会遇到某个程序使用了哪些端口,某个端口被哪个程序占用,如何查看呢,下面介绍如下:
对windows系统:通过windows任务管理器找到应用程序,右击“转到进程”,查看进程pid号(如无此列,请在“查看”-“选择列”中添加该列),然后在 cmd命令行下面输入netstat -an -o 然后找到对应的PID号 就能找到端口了。同理,某个端口被哪个程序占用,反查便可。注:有时netstat -na -o查出内容太多,不易找到pid,可通过重定向到txt文件(>pid.txt)查找。
对linux系统:查看某程序使用端口,在控制台输入netstat -na -p |grep pid/program name,便可;查看某端口被程序占用,在控制台输入lsof -i tcp:port或netstat -na -p |grep port便可。
当然,以上也可以通过cport或sv等端口查看工具查看。如:
在桌面新建一个文本文档, 重新命名为《清理虚拟内存.bat 》。
右键点击, 编辑, 复制以下文字:
title=正在清理虚拟内存文件...
Del /a/f/q "%HomeDrive%\PageFile.sys"
cls
关闭保存文件就OK了。 想用的时候一点击它就会自动清理虚拟内存, 非常方便实用。
实践:
用wholockme强制删除,解锁删除,出现蓝屏,而不删除好像文件都近2G。
Del /a/f/q "c:\PageFile.sys" 这样好像依旧不行。。。
下面方法有时间再试试:如何删除windos xp pagefile.sys文件?
http://blog.vsharing.com/jekkon/A1021127.html
删除方法:
在"我的电脑"右键"属性"-->"高级"-->"性能"->"高级"-->"虚拟内存"中更改它的大小为0之后,重新启动就会发现该文件没有了。
文件作用:
如果计算机在较低的 RAM 下运行,并且立即需要更多 RAM,则 Windows 会用硬盘空间来模拟系统 RAM。这叫做虚拟内存,通常称为页面文件。也就由于虚拟内存的设定产生了pagefile.sys文件。通过上面的文字不难看出,虚拟内存的设定对于自己计算机的性能在一定成都上面是有好处的。所以这里我建议大家还是保留虚拟内存。甚至可以扩大虚拟内存的容量。
正确设置虚拟内存:
注意:以下所说的页面文件就是只自己设定的虚拟内存
尽量避免将页面文件和系统文件置于同一驱动器上。
避免将页面文件放入容错驱动器,例如镜像卷或 RAID-5 卷。页面文件无需容错,而且有一些容错系统的数据写操作会减慢,因为它们需将数据写到多个位置。
不要在同一物理磁盘驱动器中不同的分区上放置多个页面文件。
您可以进行选择以便优化计算机的内存使用情况。如果计算机主要用作工作站,而不是服务器,则可将更多的内存分配给程序。程序将运行得更快,系统缓存的大小将达到 Windows 提供的默认大小。如果计算机主要用作服务器,或所用的程序要求较大的缓存,那么可选择给较大的系统缓存留出更多的计算机内存。
右键点击, 编辑, 复制以下文字:
title=正在清理虚拟内存文件...
Del /a/f/q "%HomeDrive%\PageFile.sys"
cls
关闭保存文件就OK了。 想用的时候一点击它就会自动清理虚拟内存, 非常方便实用。
实践:
用wholockme强制删除,解锁删除,出现蓝屏,而不删除好像文件都近2G。
Del /a/f/q "c:\PageFile.sys" 这样好像依旧不行。。。
下面方法有时间再试试:如何删除windos xp pagefile.sys文件?
http://blog.vsharing.com/jekkon/A1021127.html
删除方法:
在"我的电脑"右键"属性"-->"高级"-->"性能"->"高级"-->"虚拟内存"中更改它的大小为0之后,重新启动就会发现该文件没有了。
文件作用:
如果计算机在较低的 RAM 下运行,并且立即需要更多 RAM,则 Windows 会用硬盘空间来模拟系统 RAM。这叫做虚拟内存,通常称为页面文件。也就由于虚拟内存的设定产生了pagefile.sys文件。通过上面的文字不难看出,虚拟内存的设定对于自己计算机的性能在一定成都上面是有好处的。所以这里我建议大家还是保留虚拟内存。甚至可以扩大虚拟内存的容量。
正确设置虚拟内存:
注意:以下所说的页面文件就是只自己设定的虚拟内存
尽量避免将页面文件和系统文件置于同一驱动器上。
避免将页面文件放入容错驱动器,例如镜像卷或 RAID-5 卷。页面文件无需容错,而且有一些容错系统的数据写操作会减慢,因为它们需将数据写到多个位置。
不要在同一物理磁盘驱动器中不同的分区上放置多个页面文件。
您可以进行选择以便优化计算机的内存使用情况。如果计算机主要用作工作站,而不是服务器,则可将更多的内存分配给程序。程序将运行得更快,系统缓存的大小将达到 Windows 提供的默认大小。如果计算机主要用作服务器,或所用的程序要求较大的缓存,那么可选择给较大的系统缓存留出更多的计算机内存。
jquery备忘录:Jquery操作集锦及时间插件和日历插件
Php/Js/Shell/Go jackxiang 2011-11-1 10:07
页面开始:
$(document).ready(function(){
...
});
class="no_update" 下所有input操作
var obj = $('.no_update input').each(function(){
$(this).attr("disabled","disabled")
});
select:
var obj = $('.no_update select').each(function(){
$(this).attr("disabled","disabled")
});
解析json:
var arr_link = <?php echo json_encode($arr_link)?>;
var arr = arr_link[id];
$.each(arr,function(key,val){
alert(key+val);
});
隐藏:
$('#product').css("display","none");
去除样式:
$('#product').removeAttr("Style");
清空:
$("#category_id").empty();
追加:
$("<option value='0'>请选择</option>").appendTo("#category_id");
下一个节点
var obj = $(change_obj).next().next();
绑定事件:
$('#text_id').change(function(){
........
});
get by name:
var name = $('input[name^="start_day"]');
$.each (name,function (key,val){
alert(val.value);
});
Select option:
var subregion_id = $('#subregion_id_'+ad_id).get(0);
subregion_id.options.length = 0;
subregion_id.options[0] = new Option('请选择',0);
subregion_id.options[i+1] = new Option(result[i].TypeName,result[i].TypeId);
var subregion_id = $('#subregion_id_'+ad_id).val();
var subregion_text=$('#subregion_id_'+ad_id).find("option:selected").text();
ajax 返回:
$.ajax({
url: '/ajax/i.php',
data: 'type=get_category&type_id='+type_id,
type: 'GET',
dataType: 'json',
success: function(result){
if(result){
for(var i=0; i< result.length; i++){
$("<option value='"+result[i].category_id+"'>"+result[i].category_name+"</option>").appendTo("#category_id");
}
}
}
});
绑定时间框:
var cal = Calendar.setup({
onSelect: function(cal) { cal.hide() },
showTime: false
});
var start_day = $('input[name^="start_day"]');
$.each (start_day,function (key,val){
cal.manageFields(val.id, val.id, "%Y-%m-%d");
});
关键字自动下拉框;
$("#keyword").autocomplete("getkeyword.php?type=get_names", {
width: 363,
autoFill: false,
mustMatch: false,
selectFirst: false,
minChars: 0
});
$("#keyword").result(function(event, data, formatted) {
if (data) {
$("#keyword_id").val(data[1]);
}
});
来源:blog.sina.com.cn/s/blog_6b7d19300100pvxf.html
$(document).ready(function(){
...
});
class="no_update" 下所有input操作
var obj = $('.no_update input').each(function(){
$(this).attr("disabled","disabled")
});
select:
var obj = $('.no_update select').each(function(){
$(this).attr("disabled","disabled")
});
解析json:
var arr_link = <?php echo json_encode($arr_link)?>;
var arr = arr_link[id];
$.each(arr,function(key,val){
alert(key+val);
});
隐藏:
$('#product').css("display","none");
去除样式:
$('#product').removeAttr("Style");
清空:
$("#category_id").empty();
追加:
$("<option value='0'>请选择</option>").appendTo("#category_id");
下一个节点
var obj = $(change_obj).next().next();
绑定事件:
$('#text_id').change(function(){
........
});
get by name:
var name = $('input[name^="start_day"]');
$.each (name,function (key,val){
alert(val.value);
});
Select option:
var subregion_id = $('#subregion_id_'+ad_id).get(0);
subregion_id.options.length = 0;
subregion_id.options[0] = new Option('请选择',0);
subregion_id.options[i+1] = new Option(result[i].TypeName,result[i].TypeId);
var subregion_id = $('#subregion_id_'+ad_id).val();
var subregion_text=$('#subregion_id_'+ad_id).find("option:selected").text();
ajax 返回:
$.ajax({
url: '/ajax/i.php',
data: 'type=get_category&type_id='+type_id,
type: 'GET',
dataType: 'json',
success: function(result){
if(result){
for(var i=0; i< result.length; i++){
$("<option value='"+result[i].category_id+"'>"+result[i].category_name+"</option>").appendTo("#category_id");
}
}
}
});
绑定时间框:
var cal = Calendar.setup({
onSelect: function(cal) { cal.hide() },
showTime: false
});
var start_day = $('input[name^="start_day"]');
$.each (start_day,function (key,val){
cal.manageFields(val.id, val.id, "%Y-%m-%d");
});
关键字自动下拉框;
$("#keyword").autocomplete("getkeyword.php?type=get_names", {
width: 363,
autoFill: false,
mustMatch: false,
selectFirst: false,
minChars: 0
});
$("#keyword").result(function(event, data, formatted) {
if (data) {
$("#keyword_id").val(data[1]);
}
});
来源:blog.sina.com.cn/s/blog_6b7d19300100pvxf.html
JQuery中$(function() {...}代表什么意思?
Php/Js/Shell/Go jackxiang 2011-10-28 12:37
它是 $(document).ready(function(){...})的简写形式,或者: $().ready(function(){...})
意思就是页面载入后执行...的代码.是jq中最重要的一句话,基本上是必须的.所有页面载入有执行的代码都要写着里面
意思就是页面载入后执行...的代码.是jq中最重要的一句话,基本上是必须的.所有页面载入有执行的代码都要写着里面
之所以要用到Json,很多时候是因为使用ajax对象时,程序与JS函数之间的数据交互。因为JS不认识PHP中的数组,PHP也不认识JS中的数组或对象。Json很好的解决了这个问题。阅读全文
[实践理解]js call 方法使用及摘录
Php/Js/Shell/Go jackxiang 2011-10-26 11:10
缘起:
发现一兄弟写的代码如下:我一查Jquery没有查到,Js没学好,哈,原来是Js的函数:
于是,探讨后他写出如下,我自己改造了下,这个call,
网上有博客说这个call,补充如下,原文URL丢失了,抱歉,粘贴如下:
阅读全文
发现一兄弟写的代码如下:我一查Jquery没有查到,Js没学好,哈,原来是Js的函数:
于是,探讨后他写出如下,我自己改造了下,这个call,
网上有博客说这个call,补充如下,原文URL丢失了,抱歉,粘贴如下:
阅读全文
今年春节时,我写了一篇《TDD并不是看上去的那么美》,在这篇文章中我列举了一些关于使用TDD的一些难点和对TDD的质疑,后来出现了一些争论(可参见那篇文章的评论),以及Todd同学的《TDD到底美不美》,还有infoQ中文上的那个几乎没有营养离线讨论。今天,有网友给我推来一个英文版infoQ的视频——“Coplien and Martin Debate TDD, CDD and Professionalism”,这是2008年2月18日的视频,视频的主角两个人争论TDD好还是不好,一个是敏捷社区的教主级的人物——Robert Martin(大家称之为“Bob大叔”),另一个是C++,OO,多范式编程的大师Jim Coplien(大家都叫他Cope)。这两个人对TDD的见解有分歧。Coplien的很多观点和我之前的不谋而合,而他自己称他是坚决强烈地站在TDD的对立面上。下面是Jim的原话:
I have adopted a very strong position against what particularly the XP community is calling test driven development.阅读全文
I have adopted a very strong position against what particularly the XP community is calling test driven development.阅读全文
[旧瓶新酒]javascript的console.log()输出在FireBug下查看及调试。同时firebug也支持debugger关键字后用来检测是否F12打开了调试器了。
Php/Js/Shell/Go jackxiang 2011-10-25 11:41
分组信息输出有点意思:
console.group("第一组信息");console.log("%s,%d",string,int); console.groupEnd();
console.time() console.endTime()结合在一起能查看脚本执行时间
------
同时firebug也支持debugger关键字了:
firebug: 有了这个firebug的新的debugger后,就会停留在那儿,可以查看里面的参数(脚本-》监控)及函数(脚本-》堆栈)情况。
microsoft script editor: IE下的,不太用,可能用下。
------
http://ticket.cpcmuseum.cn/Home/Index
http://ticket.cpcmuseum.cn/Scripts/PageProtection.js?Math.random()
相减是微秒它这儿50微秒就认为是用F12打开调试了,会提示不让调试,且间隔1000毫秒进行检测(setInterval() 方法可按照指定的周期(以毫秒计)来调用函数或计算表达式):
Date Fri Aug 13 2021 22:35:27 GMT+0800 (中国标准时间)
PageProtection.js:94:17
Date Fri Aug 13 2021 22:35:27 GMT+0800 (中国标准时间)
PageProtection.js:95:17
673
开启 debugger ,代码在执行到第三行前终止。也就是说打开F12会终止,出现间隔大于50毫秒的情况,也就提示用户不让你调试哟,怎么办?Fiddler伺候替换文件即可。其实完全可以用fiddler直接替换掉这个页面里面的部分JS语句即可绕过:
https://jackxiang.com/post/8535/
前言:Javascript自己有这样一个函数输出,其目的在于对变量的跟踪,而后端有FirePHP变量输出在Header头中,
见:http://jackxiang.com/post/1117/
而前端有Js的console.log()来实现输出到FireBug中,以提高快速开发和调试逻辑等错误的目的(如果对于多维数组一个一个去打印,没这个来得快),
也就是本文想要描述的话题,尽管陈旧,但还是值得借鉴和实用的价值。
在FireBug控制台中输出:
========
自己试了下果然有这个功能:
FireBug输出:
参考来源:
http://hi.baidu.com/%C4%AD%C4%AD%CF%C4a/blog/item/b5d197ae118209ecfaed501d.html
console.group("第一组信息");console.log("%s,%d",string,int); console.groupEnd();
console.time() console.endTime()结合在一起能查看脚本执行时间
------
同时firebug也支持debugger关键字了:
firebug: 有了这个firebug的新的debugger后,就会停留在那儿,可以查看里面的参数(脚本-》监控)及函数(脚本-》堆栈)情况。
microsoft script editor: IE下的,不太用,可能用下。
------
http://ticket.cpcmuseum.cn/Home/Index
http://ticket.cpcmuseum.cn/Scripts/PageProtection.js?Math.random()
相减是微秒它这儿50微秒就认为是用F12打开调试了,会提示不让调试,且间隔1000毫秒进行检测(setInterval() 方法可按照指定的周期(以毫秒计)来调用函数或计算表达式):
Date Fri Aug 13 2021 22:35:27 GMT+0800 (中国标准时间)
PageProtection.js:94:17
Date Fri Aug 13 2021 22:35:27 GMT+0800 (中国标准时间)
PageProtection.js:95:17
673
开启 debugger ,代码在执行到第三行前终止。也就是说打开F12会终止,出现间隔大于50毫秒的情况,也就提示用户不让你调试哟,怎么办?Fiddler伺候替换文件即可。其实完全可以用fiddler直接替换掉这个页面里面的部分JS语句即可绕过:
https://jackxiang.com/post/8535/
前言:Javascript自己有这样一个函数输出,其目的在于对变量的跟踪,而后端有FirePHP变量输出在Header头中,
见:http://jackxiang.com/post/1117/
而前端有Js的console.log()来实现输出到FireBug中,以提高快速开发和调试逻辑等错误的目的(如果对于多维数组一个一个去打印,没这个来得快),
也就是本文想要描述的话题,尽管陈旧,但还是值得借鉴和实用的价值。
在FireBug控制台中输出:
========
自己试了下果然有这个功能:
FireBug输出:
参考来源:
http://hi.baidu.com/%C4%AD%C4%AD%CF%C4a/blog/item/b5d197ae118209ecfaed501d.html
给Adobe Dreamweaver CS5安装jQuery语法提示插件
Php/Js/Shell/Go jackxiang 2011-10-25 10:18
近在做项目时经常会用到jQuery,无意中获得了Dreamweaver的jQuery语法提示插件,在项目开发时带来了很多方便。下面来介绍一下。
其实该Dreamweaver CS5绿色版的jquery代码提示插件是提取于原版之中的,所以简单实用,无需安装,只需要覆盖相应的目录里即可。
点击此处下载插件,然后进行安装:
目前最新的Jquery1.4.2:
1、把shared、Extensions、codehints三个文件夹复制到:
WinXP:C:\Documents and Settings\Administrator\Application Data\Adobe\Dreamweaver CS5\zh_CN\Configuration
win7:C:\用户\Administrator\AppData\Roaming\Adobe\Dreamweaver CS5\zh_CN\Configuration
下即可。
注意:Administrator是你实际登录的用户的文件夹;AppData是隐藏文件夹。
我的是:C:\Documents and Settings\jackxiang\Application Data\Adobe\Dreamweaver CS5\zh_CN\Configuration
2.启动Dreamweaver CS5即可,语法提示功能如下:
盗链,去掉了。
发现一个问题:先建立的站点才行,以前建立的只能$提示,而$("#XXX"). 这儿还是老的提示,呵呵,自己再重新建立一次试试,发现已经Ok的html文件还是不行,只有自己新建立的.html才提示,得新建立,也就是得从刚开始就纳入管理才能提示,这个插件这块上处理不是很好,EOF。
其实该Dreamweaver CS5绿色版的jquery代码提示插件是提取于原版之中的,所以简单实用,无需安装,只需要覆盖相应的目录里即可。
点击此处下载插件,然后进行安装:
下载文件
下载文件
1、把shared、Extensions、codehints三个文件夹复制到:
WinXP:C:\Documents and Settings\Administrator\Application Data\Adobe\Dreamweaver CS5\zh_CN\Configuration
win7:C:\用户\Administrator\AppData\Roaming\Adobe\Dreamweaver CS5\zh_CN\Configuration
下即可。
注意:Administrator是你实际登录的用户的文件夹;AppData是隐藏文件夹。
我的是:C:\Documents and Settings\jackxiang\Application Data\Adobe\Dreamweaver CS5\zh_CN\Configuration
2.启动Dreamweaver CS5即可,语法提示功能如下:
盗链,去掉了。
发现一个问题:先建立的站点才行,以前建立的只能$提示,而$("#XXX"). 这儿还是老的提示,呵呵,自己再重新建立一次试试,发现已经Ok的html文件还是不行,只有自己新建立的.html才提示,得新建立,也就是得从刚开始就纳入管理才能提示,这个插件这块上处理不是很好,EOF。