推荐一款UBBEditor,兼容IE6,7,8,9 Safari, Firefox, Chrome 等浏览器
[ 2013-09-11 08:48:31 | 作者: admin ]
产品特性与优点
1.迷你
UBBEditor 经压缩存储后小于20KB,载入的时间可以忽略不计。
2.兼容
UBBEditor 可以良好的运行在 IE6,7,8,9 Safari, Firefox, Chrome 等浏览器中。
3.安全
UBBEditor 在编辑文本内容的格式后,所产生的是UBB代码,如果在网页中输出显示时,需要通过服务器脚本来解析这些代码,因此它具备的良好的安全可控性。
4.开源
UBBEditor 是一款开放源代码的程序,你可以在任何项目中任意使用而不需要支付任何费用,并且你也可以很方便的修改源代码来达到更符合自己的要求。
javascript下兼容firefox选取textarea文本的代码
[ 2013-09-10 22:03:12 | 作者: admin ]
function getSelectedText(){
var selectedText;
var textField=document.getElementById('inputTextarea');
if(window.getSelection) selectedText=getTextFieldSelection(textField);//getTextFieldSelection(document.getElementById("inputTextArea"));
else selectedText=document.selection.createRange().text;
alert(selectedText);
}
function getTextFieldSelection(e){
阅读全文…
Javascript获取光标位置以及设置光标位置
[ 2013-09-10 21:20:50 | 作者: admin ]
获取光标位置函数
设置光标位置函数
阅读全文…
function getCursortPosition (ctrl) {
var CaretPos = 0; // IE Support
if (document.selection) {
ctrl.focus ();
var Sel = document.selection.createRange ();
Sel.moveStart ('character', -ctrl.value.length);
CaretPos = Sel.text.length;
}
// Firefox support
else if (ctrl.selectionStart || ctrl.selectionStart == '0')
CaretPos = ctrl.selectionStart;
return (CaretPos);
}
var CaretPos = 0; // IE Support
if (document.selection) {
ctrl.focus ();
var Sel = document.selection.createRange ();
Sel.moveStart ('character', -ctrl.value.length);
CaretPos = Sel.text.length;
}
// Firefox support
else if (ctrl.selectionStart || ctrl.selectionStart == '0')
CaretPos = ctrl.selectionStart;
return (CaretPos);
}
设置光标位置函数
function setCaretPosition(ctrl, pos){
...阅读全文…
Nginx 限速和限制请求配置,使用limit模块仿cc
[ 2013-09-10 09:55:56 | 作者: admin ]
p.s.压力测试是很好的检验方法,用webbech或者ab等一些工具模拟并发服务器,若服务器没有限制连接数或带宽,服务器很容易被压跨。
http {
…
limit_conn_zone $binary_remote_addr zone=one:10m;
limit_req_zone $binary_remote_addr zone=perip:5m rate=20r/s;
#如果在1.1.8之后版本还用语法:limit_zone name $variable size,会报警告nginx: [warn] the “limit_zone” directive is deprecated, use the “limit_conn_zone” directive
#这里,设置客户端的IP地址作为键。注意,这里使用的是$binary_remote_a...
阅读全文…
http {
…
limit_conn_zone $binary_remote_addr zone=one:10m;
limit_req_zone $binary_remote_addr zone=perip:5m rate=20r/s;
#如果在1.1.8之后版本还用语法:limit_zone name $variable size,会报警告nginx: [warn] the “limit_zone” directive is deprecated, use the “limit_conn_zone” directive
#这里,设置客户端的IP地址作为键。注意,这里使用的是$binary_remote_a...
阅读全文…
proftpd基本配置+虚拟用户
[ 2013-09-09 17:17:25 | 作者: admin ]
感觉比vsftpd要方便一点,配置起来比较灵活。
先简单的配置一下。
安装什么的比较简单,如下。
安装好以后,从源码包里复制启动脚本。
# cp proftpd-1.3.4a/contrib/dist/rpm/proftpd.init.d /etc/init.d/proftpd
# chmod 755 /etc/init.d/proftpd
然后,需要在proftpd里面修改一下参数。由于我安装的时候不是默认的目录,所以很多涉及到程序路径的地方要改成安装的位置。具体如下。
# chkconfig: 345 85 15
...
阅读全文…
先简单的配置一下。
安装什么的比较简单,如下。
# tar -zxvf proftpd-1.3.4a
# cd proftpd-1.3.4a
# ./configure –prefix=/usr/local/proftpd
# make
# make install
# cd proftpd-1.3.4a
# ./configure –prefix=/usr/local/proftpd
# make
# make install
安装好以后,从源码包里复制启动脚本。
# cp proftpd-1.3.4a/contrib/dist/rpm/proftpd.init.d /etc/init.d/proftpd
# chmod 755 /etc/init.d/proftpd
然后,需要在proftpd里面修改一下参数。由于我安装的时候不是默认的目录,所以很多涉及到程序路径的地方要改成安装的位置。具体如下。
# chkconfig: 345 85 15
...
阅读全文…
expect spawn、linux expect 用法小记
[ 2013-09-09 17:13:35 | 作者: admin ]
使用expect实现自动登录的脚本,网上有很多,可是都没有一个明白的说明,初学者一般都是照抄、收藏。可是为什么要这么写却不知其然。本文用一个最短的例子说明脚本的原理。
脚本代码如下:
1. [#!/usr/bin/expect]
这一行告诉操作系统...
阅读全文…
脚本代码如下:
##############################################
#!/usr/bin/expect
set timeout 30
spawn ssh -l username 192.168.1.1
expect "password:"
send "ispass\r"
interact
##############################################
#!/usr/bin/expect
set timeout 30
spawn ssh -l username 192.168.1.1
expect "password:"
send "ispass\r"
interact
##############################################
1. [#!/usr/bin/expect]
这一行告诉操作系统...
阅读全文…
Linux简单处理CC攻击shell脚本
[ 2013-09-09 17:07:10 | 作者: admin ]
第一个脚本是通过查找日志中访问次数过多的ip,并用iptables屏蔽,600秒解封。
阅读全文…
#!/bin/bash
btime=600
becur=`date -d "1 minute ago" +%H%M%S`
badip=`tac /home/www.centos.bz/log/access.log | awk -v a="$becur" -F [' ':] '{t=$5$6$7;if (t>=a){ print} else {exit;}' | egrep -v "\.(gif|jpg|jpeg|png|css|js)" | awk '{print $1}' | sort | uniq -c | awk '{if ($1>=20) print $2}}'`
if [ ! -z "$badip" ];then
...btime=600
becur=`date -d "1 minute ago" +%H%M%S`
badip=`tac /home/www.centos.bz/log/access.log | awk -v a="$becur" -F [' ':] '{t=$5$6$7;if (t>=a){ print} else {exit;}' | egrep -v "\.(gif|jpg|jpeg|png|css|js)" | awk '{print $1}' | sort | uniq -c | awk '{if ($1>=20) print $2}}'`
if [ ! -z "$badip" ];then
阅读全文…
“不 能通过已删除的行访问该行的信息。”错误原因
[ 2013-09-09 10:56:14 | 作者: admin ]
用 DataTable.Rows[i].Delete(); 删除后,然后循环读取datatable,结果还能遍历到原来的行,错误提示“不能通过已删除的行访问该行的信息。”
查阅资料才知道 Delete() 删除后 仅标记行状态为Deleted,并没有真正删除。确认改变需要再次调用RejectChanges()方法。
如果要彻底删除datarow,需要Delete()和AccepteChanges()方法同时使用,或者采用 datatable.Rows.RemoveAt(i)方法直接删除,其中i表示行索引,还有一个就是 datatable.Rows.Remove(DataRow dr)删除指定行。使用datatable.Rows.RemoveAt(i)要注意,如果连续使用 datatable.Rows.RemoveAt(0);datatable.Rows.RemoveAt(1);这时并不...
阅读全文…
查阅资料才知道 Delete() 删除后 仅标记行状态为Deleted,并没有真正删除。确认改变需要再次调用RejectChanges()方法。
如果要彻底删除datarow,需要Delete()和AccepteChanges()方法同时使用,或者采用 datatable.Rows.RemoveAt(i)方法直接删除,其中i表示行索引,还有一个就是 datatable.Rows.Remove(DataRow dr)删除指定行。使用datatable.Rows.RemoveAt(i)要注意,如果连续使用 datatable.Rows.RemoveAt(0);datatable.Rows.RemoveAt(1);这时并不...
阅读全文…