表单提交数据大小的限制:Firebug 达到了 Post 请求大小限制。
Php/Js/Shell/Go jackxiang 2012-6-28 10:15
今天,遇到:... Firebug 达到了 Post 请求大小限制。 ...
今天在做post表单提交多个textarea控件中的内容时,出现一些意外情况,为了避免以后再出现这种情况,有个清晰的思路,特此写下以下琐碎细节。测试环境为windows的iis。
以下内容针对一个textarea输入内容测试遇到的问题。当提交数据量比较小时,保存正常。当提交数据量为一篇文章时(大约30k左右),点击保存出现白页现象,没有任何反应。通过firebug查看网络查看表单提交情况,post选项中出现“... Firebug 达到了 Post 请求大小限制。 ...”这样的提示。
总结:
(1)post提交表单数据量限制为100k左右,超过将无法提交。
(2)在iis6.0中表单最大传输大小为200k,因此需要通过以下方式修改配置文件,实现大数据传输
1. 关闭 IIS Admin Service 服务
2. 打开 %WinDir%\system32\inetsrv\metabase.xml
3. 修改 AspMaxRequestEntityAllowed 的值为自己需要的, 默认为 204800,AspBufferingLimit也改成相同值,
4. 启动 IIS Admin Service
(3)在iis5.1以下post 方法限制传递的数据为2M
(3)get最大提交数据量为4k左右
(4)表单控件(如textarea)最大提交的数据量为30k左右,超过将出现以上异常情况,导致表单无法提交成功.
来自:http://blog.csdn.net/zouqingfang/article/details/7220229
今天在做post表单提交多个textarea控件中的内容时,出现一些意外情况,为了避免以后再出现这种情况,有个清晰的思路,特此写下以下琐碎细节。测试环境为windows的iis。
以下内容针对一个textarea输入内容测试遇到的问题。当提交数据量比较小时,保存正常。当提交数据量为一篇文章时(大约30k左右),点击保存出现白页现象,没有任何反应。通过firebug查看网络查看表单提交情况,post选项中出现“... Firebug 达到了 Post 请求大小限制。 ...”这样的提示。
总结:
(1)post提交表单数据量限制为100k左右,超过将无法提交。
(2)在iis6.0中表单最大传输大小为200k,因此需要通过以下方式修改配置文件,实现大数据传输
1. 关闭 IIS Admin Service 服务
2. 打开 %WinDir%\system32\inetsrv\metabase.xml
3. 修改 AspMaxRequestEntityAllowed 的值为自己需要的, 默认为 204800,AspBufferingLimit也改成相同值,
4. 启动 IIS Admin Service
(3)在iis5.1以下post 方法限制传递的数据为2M
(3)get最大提交数据量为4k左右
(4)表单控件(如textarea)最大提交的数据量为30k左右,超过将出现以上异常情况,导致表单无法提交成功.
来自:http://blog.csdn.net/zouqingfang/article/details/7220229
为什么不使用nginx+php(fastcgi)作为生产环境?
Php/Js/Shell/Go jackxiang 2012-6-25 20:54
前言,近来fastCGI流行,也有人提出了相反的看法,并作出了原因解释,觉得有道理,So。。。
php群里的兄弟:
nginx这么厉害吗?答:我测试,10000次,10次并发 机器,就是不死 65%cpu了,还不死。。。nginx防盗链牛逼可以根据参数加密。
php-fpm确实,听蛋疼的 5个进程,每个占12% 我操,cpu干不了别的了,php-fpm是相当的不行 cpu占用太厉害.用apache啊.apache有些特性不行。。。
Nginx 502:
fast_cgi设置
fastcgi_connect_timeout 30;
fastcgi_send_timeout 30;
fastcgi_read_timeout 30;
fastcgi_buffer_size 64k;
fastcgi_buffers 4 64k;
fastcgi_busy_buffers_size 128k;
fastcgi_temp_file_write_size 128k;
Php-fpm设置
<value name="listen_address"> /dev/shm/php-fpm.sock </value>
<value name="max_children">128</value>
<value name="request_terminate_timeout">10s</value>
<value name="request_slowlog_timeout">5s</value>
<value name="slowlog">/path/to/slow.log</value>
<value name="rlimit_files">65535</value>
php(fastcgi)不够稳定,经常出现502错误,生成相对复杂的页面没有优势,反而会使php-cgi进程变为僵尸进程.
安全性,多用户多站点权限问题.php(fastcgi)在应对多用户多站点往往捉襟见肘,不易于实施.
整合其他开发语言,apache表现得游刃有余.资源利用恰到好处.
为什么采用nginx做前端,apache作为后端的方案?nginx在处理静态内容上较apache是几倍或几十倍的差异,因而放在前面过滤静态内容是最为恰当的.同时nginx也是一个负载均衡器,低资源消耗,高性能转发是它的特点.经过nginx在前面的过滤,后端的apache需要处理的内容相对就比较少了.只需负责处理动态内容就可以了.在性能与稳定性的权衡下,使用nginx+apache搭配会让它们在各自擅长的领域展现自身的价值.
http://www.vpser.net/build/nginx-apache-guide.html
php群里的兄弟:
nginx这么厉害吗?答:我测试,10000次,10次并发 机器,就是不死 65%cpu了,还不死。。。nginx防盗链牛逼可以根据参数加密。
php-fpm确实,听蛋疼的 5个进程,每个占12% 我操,cpu干不了别的了,php-fpm是相当的不行 cpu占用太厉害.用apache啊.apache有些特性不行。。。
Nginx 502:
fast_cgi设置
fastcgi_connect_timeout 30;
fastcgi_send_timeout 30;
fastcgi_read_timeout 30;
fastcgi_buffer_size 64k;
fastcgi_buffers 4 64k;
fastcgi_busy_buffers_size 128k;
fastcgi_temp_file_write_size 128k;
Php-fpm设置
<value name="listen_address"> /dev/shm/php-fpm.sock </value>
<value name="max_children">128</value>
<value name="request_terminate_timeout">10s</value>
<value name="request_slowlog_timeout">5s</value>
<value name="slowlog">/path/to/slow.log</value>
<value name="rlimit_files">65535</value>
php(fastcgi)不够稳定,经常出现502错误,生成相对复杂的页面没有优势,反而会使php-cgi进程变为僵尸进程.
安全性,多用户多站点权限问题.php(fastcgi)在应对多用户多站点往往捉襟见肘,不易于实施.
整合其他开发语言,apache表现得游刃有余.资源利用恰到好处.
为什么采用nginx做前端,apache作为后端的方案?nginx在处理静态内容上较apache是几倍或几十倍的差异,因而放在前面过滤静态内容是最为恰当的.同时nginx也是一个负载均衡器,低资源消耗,高性能转发是它的特点.经过nginx在前面的过滤,后端的apache需要处理的内容相对就比较少了.只需负责处理动态内容就可以了.在性能与稳定性的权衡下,使用nginx+apache搭配会让它们在各自擅长的领域展现自身的价值.
http://www.vpser.net/build/nginx-apache-guide.html
响应消息的第一行为下面的格式:
HTTP-Version SP Status-Code SP Reason-Phrase CRLF
HTTP-Version表示支持的HTTP版本,例如为HTTP/1.1。
Status-Code是一个三个数字的结果代码。
Reason-Phrase给Status-Code提供一个简单的文本描述。Status-Code主要用于机器自动识别,Reason-Phrase主要用于帮助用户理解。Status-Code的第一个数字定义响应的类别,后两个数字没有分类的作用。第一个数字可能取5个不同的值:
1xx:信息响应类,表示接收到请求并且继续处理
2xx:处理成功响应类,表示动作被成功接收、理解和接受
3xx:重定向响应类,为了完成指定的动作,必须接受进一步处理
4xx:客户端错误,客户请求包含语法错误或者是不能正确执行
5xx:服务端错误,服务器不能正确执行一个正确的请求
响 应头域允许服务器传递不能放在状态行的附加信息,这些域主要描述服务器的信息和Request-URI进一步的信息。响应头域包含Age、 Location、Proxy-Authenticate、Public、Retry-After、Server、Vary、Warning、WWW- Authenticate。对响应头域的扩展要求通讯双方都支持,如果存在不支持的响应头域,一般将会作为实体头域处理。
典型的响应消息:
HTTP/1.0200OK
Date:Mon,31Dec200104:25:57GMT
Server:Apache/1.3.14(Unix)
Content-type:text/html
Last-modified:Tue,17Apr200106:46:28GMT
Etag:”a030f020ac7c01:1e9f”
Content-length:39725426
Content-range:bytes554554-40279979/40279980
上例第一行表示HTTP服务端响应一个GET方法。棕色的部分表示响应头域的信息,绿色的部分表示通用头部分,红色的部分表示实体头域的信息。
Location响应头
Location响应头用于重定向接收者到一个新URI地址。
Server响应头
Server响应头包含处理请求的原始服务器的软件信息。此域能包含多个产品标识和注释,产品标识一般按照重要性排序。
来自:http://yhjhappy234.blog.163.com/blog/static/31632832201131483532764/
HTTP-Version SP Status-Code SP Reason-Phrase CRLF
HTTP-Version表示支持的HTTP版本,例如为HTTP/1.1。
Status-Code是一个三个数字的结果代码。
Reason-Phrase给Status-Code提供一个简单的文本描述。Status-Code主要用于机器自动识别,Reason-Phrase主要用于帮助用户理解。Status-Code的第一个数字定义响应的类别,后两个数字没有分类的作用。第一个数字可能取5个不同的值:
1xx:信息响应类,表示接收到请求并且继续处理
2xx:处理成功响应类,表示动作被成功接收、理解和接受
3xx:重定向响应类,为了完成指定的动作,必须接受进一步处理
4xx:客户端错误,客户请求包含语法错误或者是不能正确执行
5xx:服务端错误,服务器不能正确执行一个正确的请求
响 应头域允许服务器传递不能放在状态行的附加信息,这些域主要描述服务器的信息和Request-URI进一步的信息。响应头域包含Age、 Location、Proxy-Authenticate、Public、Retry-After、Server、Vary、Warning、WWW- Authenticate。对响应头域的扩展要求通讯双方都支持,如果存在不支持的响应头域,一般将会作为实体头域处理。
典型的响应消息:
HTTP/1.0200OK
Date:Mon,31Dec200104:25:57GMT
Server:Apache/1.3.14(Unix)
Content-type:text/html
Last-modified:Tue,17Apr200106:46:28GMT
Etag:”a030f020ac7c01:1e9f”
Content-length:39725426
Content-range:bytes554554-40279979/40279980
上例第一行表示HTTP服务端响应一个GET方法。棕色的部分表示响应头域的信息,绿色的部分表示通用头部分,红色的部分表示实体头域的信息。
Location响应头
Location响应头用于重定向接收者到一个新URI地址。
Server响应头
Server响应头包含处理请求的原始服务器的软件信息。此域能包含多个产品标识和注释,产品标识一般按照重要性排序。
来自:http://yhjhappy234.blog.163.com/blog/static/31632832201131483532764/
SecureCRT for MAC 无限试用方法
Unix/LinuxC技术 jackxiang 2012-6-25 13:15
Linux下开发的兄弟有福了:
SecureCRT for MAC :SecureCRT-6.7.1-188.osx_x86.dmg
1.上官网下载SecureCRT for MAC
2.因为试用期有30天,等到差不多到期时,就可以删除文件“SecureCRT_eval.lic ”
rm Users/用户名/Library/Application Support/VanDyke/SecureCRT/Config/SecureCRT_eval.lic
3.SecureCRT Version 6.7.1 (build 188) - Official Release 测试通过^0^
PS:写个crontab或开机自动运行sh程序一劳永逸,不过每次打开软件都后会显示还有多少天到期有点烦哈:)
SecureCRT for MAC :SecureCRT-6.7.1-188.osx_x86.dmg
1.上官网下载SecureCRT for MAC
2.因为试用期有30天,等到差不多到期时,就可以删除文件“SecureCRT_eval.lic ”
rm Users/用户名/Library/Application Support/VanDyke/SecureCRT/Config/SecureCRT_eval.lic
3.SecureCRT Version 6.7.1 (build 188) - Official Release 测试通过^0^
PS:写个crontab或开机自动运行sh程序一劳永逸,不过每次打开软件都后会显示还有多少天到期有点烦哈:)
Demo:
查看:
tail -f /tmp/jack.txt
一:tee
方法一、配置文件
在服务器上的/etc/my.cnf中的[client]加入
tee =/tmp/client_mysql.log即可.
方法二、命令行
1.mysql -uroot --tee=/tmp/client_mysql.log
2.这个类似于sqlplus的spool功能,可以将命令行中的结果保存到外部文件中。如果指定已经存在的文件,则结果会附加到文件中。
mysql> tee client_mysql.log
Logging to file 'client_mysql.log '
或者
mysql> \T client_mysql.log
Logging to file 'client_mysql.log '
mysql> notee
Outfile disabled.
或者
mysql> \t
Outfile disabled.
二:mysql pager、tee、prompt说明:
当表中数据行很多,一页看不完时,可以使用pager [cmd]更改mysql的查询输出,cmd为linux的标准命令,如:
mysql> pager less;
mysql> select * from test.dept;
查询输出都是通过管道传给less命令,可以实现分页浏览
mysql> nopager;即可回到标准输出stdout
还可使用如下语句将输出发送到文件中:
mysql> pager cat>/home/pw/osq.txt;
less说明:
退出:“:q”
下一页:“F”
上一页:“B”
查询
向前搜索
/ - 使用一个模式进行搜索,并定位到下一个匹配的文本
n - 向前查找下一个匹配的文本
N - 向后查找前一个匹配的文本
向后搜索
? - 使用模式进行搜索,并定位到前一个匹配的文本
n - 向后查找下一个匹配的文本
N - 向前查找前一个匹配的文本
tee说明
mysql>tee filename
可以将之后在mysql的所有输入输出操作记录到filename中。
prompt说明
用于修改mysql提示符
[mysql]
prompt=(
来自:http://blog.sina.com.cn/s/blog_45722cc00100z5wm.html
阅读全文
查看:
tail -f /tmp/jack.txt
一:tee
方法一、配置文件
在服务器上的/etc/my.cnf中的[client]加入
tee =/tmp/client_mysql.log即可.
方法二、命令行
1.mysql -uroot --tee=/tmp/client_mysql.log
2.这个类似于sqlplus的spool功能,可以将命令行中的结果保存到外部文件中。如果指定已经存在的文件,则结果会附加到文件中。
mysql> tee client_mysql.log
Logging to file 'client_mysql.log '
或者
mysql> \T client_mysql.log
Logging to file 'client_mysql.log '
mysql> notee
Outfile disabled.
或者
mysql> \t
Outfile disabled.
二:mysql pager、tee、prompt说明:
当表中数据行很多,一页看不完时,可以使用pager [cmd]更改mysql的查询输出,cmd为linux的标准命令,如:
mysql> pager less;
mysql> select * from test.dept;
查询输出都是通过管道传给less命令,可以实现分页浏览
mysql> nopager;即可回到标准输出stdout
还可使用如下语句将输出发送到文件中:
mysql> pager cat>/home/pw/osq.txt;
less说明:
退出:“:q”
下一页:“F”
上一页:“B”
查询
向前搜索
/ - 使用一个模式进行搜索,并定位到下一个匹配的文本
n - 向前查找下一个匹配的文本
N - 向后查找前一个匹配的文本
向后搜索
? - 使用模式进行搜索,并定位到前一个匹配的文本
n - 向后查找下一个匹配的文本
N - 向前查找前一个匹配的文本
tee说明
mysql>tee filename
可以将之后在mysql的所有输入输出操作记录到filename中。
prompt说明
用于修改mysql提示符
[mysql]
prompt=(
来自:http://blog.sina.com.cn/s/blog_45722cc00100z5wm.html
阅读全文
经过一上午的阅读并完成通读该书,觉得这是一本很有价值的书,做出一下勾画和记录,如下:
杂记之阅读思考的技术-作者:大前研一。阅读全文
杂记之阅读思考的技术-作者:大前研一。阅读全文
1:在终端下:mysql -V。 以下是代码片段:
[shengting@login ~]$ mysql -V
mysql Ver 14.7 Distrib 4.1.10a, for redhat-linux-gnu (i686)
2:在mysql中:mysql> status;
以下是代码片段:
mysql> status;
--------------
mysql Ver 14.7 Distrib 4.1.10a, for redhat-linux-gnu (i686)
Connection id: 416
SSL: Not in use
Current pager: stdout
Using outfile: ''
Using delimiter: ;
Server version: 3.23.56-log
Protocol version: 10
Connection: Localhost via UNIX socket
Client characterset: latin1
Server characterset: latin1
UNIX socket: /tmp/mysql_3311.sock
Uptime: 62 days 21 hours 21 min 57 sec
Threads: 1 Questions: 584402560 Slow queries: 424 Opens: 59664208 Flush tables: 1 Open tables: 64 Queries per second avg: 107.551
3:在help里面查找
以下是代码片段:
[shengting@login ~]$ mysql --help | grep Distrib
mysql Ver 14.7 Distrib 4.1.10a, for redhat-linux-gnu (i686)
4:使用mysql的函数
以下是代码片段:
mysql> select version();
+-------------+
| version() |
+-------------+
| 3.23.56-log |
+-------------+
1 row in set (0.00 sec)
来自:http://www.cnblogs.com/end/archive/2011/10/18/2216461.html
[shengting@login ~]$ mysql -V
mysql Ver 14.7 Distrib 4.1.10a, for redhat-linux-gnu (i686)
2:在mysql中:mysql> status;
以下是代码片段:
mysql> status;
--------------
mysql Ver 14.7 Distrib 4.1.10a, for redhat-linux-gnu (i686)
Connection id: 416
SSL: Not in use
Current pager: stdout
Using outfile: ''
Using delimiter: ;
Server version: 3.23.56-log
Protocol version: 10
Connection: Localhost via UNIX socket
Client characterset: latin1
Server characterset: latin1
UNIX socket: /tmp/mysql_3311.sock
Uptime: 62 days 21 hours 21 min 57 sec
Threads: 1 Questions: 584402560 Slow queries: 424 Opens: 59664208 Flush tables: 1 Open tables: 64 Queries per second avg: 107.551
3:在help里面查找
以下是代码片段:
[shengting@login ~]$ mysql --help | grep Distrib
mysql Ver 14.7 Distrib 4.1.10a, for redhat-linux-gnu (i686)
4:使用mysql的函数
以下是代码片段:
mysql> select version();
+-------------+
| version() |
+-------------+
| 3.23.56-log |
+-------------+
1 row in set (0.00 sec)
来自:http://www.cnblogs.com/end/archive/2011/10/18/2216461.html
[实践Ok]在CentOS6.2下安装DNS并快速配置实例,共八步,心路历程如下:
背景介绍:
在日常的开发中,往往会在测试机和外网的Http的Url实际接口是不一样的,在测试机一个Url地址,在外网中又是一个地址。
这样在我们在开发时,在上线时就会去修改一下接口,在线下测试时用线下的Url接口,最后的情况是,在SVN的管理中会变得
很混乱,也就是在上线上的版本和线下测试的版本在改动上来回切换,版本号不段的切换,为此,为了解决这个问题,必须引入
自己建立一套内网测试系统的DNS来实现其和外网一样的环境,进而在实际开发中就不会出现因URL的接口包含的不同域名而导致
了代码版本管理的版本号不段攀升。
实际操作:
在Linux下尤其是CentOS这样的免费系统上有Yum这样的包管理工具来安DNS服务器,但是我在实践中发现其并不理想,可能是打出的Rpm包多少有些
不太让人满意,我试过用直接运行:yum install bind bind-utils bind-libs bind-chroot caching-nameserver,但后来在配置DNS时出现这样那样的问题.
找不到配置文件?(loading from master file 225.168.192.in-add.arpa failed: file not found)我X,什么权限问题都试了,但就是搞不定,于是否,
改用源码安装,这样来得更保险此些,操控性也强很多,有人问我,你的人生由谁来操盘:我操!
我的上手安装和配置如下:
一:开始安装DNS服务器Bind:
下载 bind http://www.isc.org,解压bind-9.9.1-P1.tar.gz。
tar -zxvf bind-9.9.1-P1.tar.gz
进入 bind-9.9.1-P1.tar.gz文件夹
cd bind-9.9.1-P1
创建安装目录,我是安装在 /usr/local/named
mkdir /usr/local/named
编译,指定安装目录,指定man目录,开启多线程支持(测试环境也就没有必要搞多线程了,要整看帮助。)
./configure --prefix=/usr/local/named
Make 大约需要几分钟,只要不报错就继续下去。
make
Make install 安装
make install
没有报错,就表示安装成功了。
创建以下目录以备用
mkdir /usr/local/named/namedb
二:开始配置bind
创建 rndc.conf文件,用bind自带程序生成
cd /usr/local/named/
sbin/rndc-confgen > etc/rndc.conf //一直死在这儿了,只得强制终止。
查原因,在网上搜索:linux安装dns,rndc-confgen没反应,哈,有一篇文章说到点上了,
Url:http://www.nginxs.com/linux/43.html,他说是,摘录如下:
在官方网站上看到这么一条信息
You must use the keyboard to create entropy, since your system is lacking
/dev/random (or equivalent)
start typing:
rndc-confgen: generate key: out of entropy
大概意思就是服务器上没有random产生器,这种情况下我们就手动伪造一个文件代替/dev/random的功能
###新建一个 random 文件随即输入一串数字“记得要长~~
shell $> vim random
asdkfjalsjdflajsldfjlasjdflajsldfjalsjdflajslfjalsjflasjfl
###查看 rndc-confgen 帮助
shell $> ../sbin/rndc-confgen –help
rndc-confgen: invalid argument –
Usage:
rndc-confgen [-a] [-b bits] [-c keyfile] [-k keyname] [-p port] [-r randomfile] [-s addr] [-t chrootdir] [-u user]
-a: generate just the key clause and write it to keyfile (/usr/local/named/etc/rndc.key)
-b bits: from 1 through 512, default 128; total length of the secret
-c keyfile: specify an alternate key file (requires -a)
-k keyname: the name as it will be used in named.conf and rndc.conf
-p port: the port named will listen on and rndc will connect to
-r randomfile: a file containing random data
-s addr: the address to which rndc should connect
-t chrootdir: write a keyfile in chrootdir as well (requires -a)
-u user: set the keyfile owner to “user” (requires -a)
,上面这一句是核心,自己整个Random文件是桥梁。
tail -10 rndc.key | head -9 | sed 's/# //g' > named.conf
把这个named.conf放在etc的文件夹子下:/usr/local/named/etc/named.conf。
ok 问题解决了,接下来我们配置 我们的 域名服务器吧。
三:配置篇
编辑named.conf
# vi /usr/local/named/etc/named.conf
写入以下内容:我的Ip:192.168.225.128 ,注意:225.168.192.in-add.arpa是Ip的反解,刚好倒过来。
退出,保存。
创建并编辑 localhost.zone 文件
vi /usr/local/named/localhost.zone
写入以下内容:
创建并编辑 localhost.rev 文件
# vi /usr/local/named/localhost.rev
因前面在,51test.com这个是在其他网页上抄过来的简单示例,于是也就顺便把文件也贴上:
vi /usr/local/named/51test.com.zone
再不是51test.com的反解配置文件:
vi /usr/local/named/225.168.192.in-add.arpa
配置注意事项:
配置文件中的 "@" 符号前不能有任何空白字符
配置文件中的 "IN" 字符前必须有空格或TAB
到此,配置大功告成。
四:
下载一个named.root 到/usr/local/named/下
ftp://ftp.rs.internic.net/domain/named.root
Ftp失效,从这儿下载:
http://www.smth.edu.cn/bbsgcon.php?board=FreeBSD&num=1209
特别注意:bind的配置文档是区分大小写的,因现在那个FTP好像下载不了,于是我也贴下面。
vi /usr/local/named/named.ca
五:运行Bind程序,如下方式加载配置文件启动,加上调试信息参数:
如果运行结果最后一行显示Running
表明安装并启动成功。
最后需要注意的内容是不要忘了是否真正的开启服务器端口(以下是named.conf文件中端口的设置语句,可以看到端口号是 53:telnet x.x.x.x 53)
当然也可以用:nmap localhost ,没有yum安装,这种小工具问题不大用yum来做。
yum install nmap
Total download size: 2.3 M
Installed size: 7.5 M
Is this ok [y/N]: y
Downloading Packages:
root@192.168.225.128:/usr/local/named# nmap localhost
Starting Nmap 5.21 ( http://nmap.org ) at 2012-06-18 03:09 CST
Nmap scan report for localhost (127.0.0.1)
Host is up (0.000033s latency).
Hostname localhost resolves to 2 IPs. Only scanned 127.0.0.1
Not shown: 994 closed ports
PORT STATE SERVICE
22/tcp open ssh
53/tcp open domain
80/tcp open http
111/tcp open rpcbind
3306/tcp open mysql
9000/tcp open cslistener
端口号是 53就是DNS Bind的端口。
六:停止及启动:
root@192.168.225.128:/usr/local/named# ps aux|grep name
root 19024 0.0 1.2 10624 6216 pts/0 T 03:00 0:00 /usr/local/named/sbin/named -gc /usr/local/named/etc/named.conf
root@192.168.225.128:/usr/local/named# kill -9 19024
root@192.168.225.128:/usr/local/named# ps aux|grep name
[2]+ 已杀死 /usr/local/named/sbin/named -gc /usr/local/named/etc/named.conf
七:本机测试,外部机器测试是否dns生效:
vi /etc/resolv.conf
加上,去掉注释其他Dns的Ip值:
nameserver 192.168.225.128
启动Dns后,清楚Bind服务器上的Dns缓存:
root@192.168.225.128:/usr/local/named# ./sbin/rndc flush
root@192.168.225.128:/usr/local/named# ping www.51test.com
PING www.51test.com (192.168.225.128) 56(84) bytes of data.
64 bytes from 192.168.225.128: icmp_seq=1 ttl=64 time=0.025 ms
64 bytes from 192.168.225.128: icmp_seq=2 ttl=64 time=0.058 ms
八:将服务设置为开机自启,把named 添加到启动项,随操作系统一起启动即可:
但是,我们现在是源码的安装,So,得这样子喔。
修改来自Apache里的启动shell(参看一下自启动的标准),也可以不用修改,直接如下也成,内容如下:
1)保存为/etc/init.d/dns
脚本执行权限添加:
2)chmod -R a+x /etc/init.d/dns //env: /etc/init.d/dns: 权限不够 ,必须给加上。
3)把脚本拷贝至/etc/init.d/目录下,执行命令:
ln -s /etc/init.d/dns /etc/rc.d/rc3.d/S61dns
ln -s /etc/init.d/dns /etc/rc.d/rc4.d/S61dns
ln -s /etc/init.d/dns /etc/rc.d/rc5.d/S61dns
再执行:
chkconfig --add dns //解释:相当于Windows下的自动启动服务,特别要注意:chkconfig –add dns的时候,出现dns服务不支持chkconfig。
如果想让服务支持chkconfig,必须定义服务的启动级,启动优先级,关闭优先级,还有描述,如上,必须得加上描述等。
chkconfig --levels dns345 on //也成
开机启动设置完毕:
service dns start
-----------------------------------------------
下次一开机也就会运行这个脚本,以启动自己定义的Dns服务器。
启动后,查看是否自己就启动了呢?如下:
果然,又启动起来了,大功告成,整完收工。
Dns服务器从安装到调试配置并测试完成,Eof。Write and Opt By:jackxiang 2012/06/17 20:30:00
后来,我自己配置了一个新的域名:naimanqi.com.cn ,我的Linux机器IP是:192.168.1.105
修改配置文件:
1)共用如下:
3)反向解析文件:
4)正向解析的文件:
注意这一行: IN A 192.168.1.105
这个目的是把浏览器访问:naimanqi.com.cn这个域名也给解析到IP: 192.168.1.105上来,跟在后面的www IN A 192.168.1.105 这个是对www解析的,其实它是一个二级域名和admin 这种二级域名是一个意思:admin IN A 192.168.1.105 。。。EOF。
最后,可以这样玩这个DNS,这个CentOs6.3的Linux 不是建立在这个NAT下的嘛,后修改为Bridge(桥连),这样后,反正是在一个网段内(路由器下),把自己外网的这台Windows下的机器的DNS由192.168.1.1修改为:192.168.1.105,这样既可以调试刚才配置的内部DNS进行调试,也可 以访问外网,为什么呢?是因为:
是因,内部DNS没有找到那个地址后,它自动转给上一级DNS去了,后得到那个外部网站的IP地址了。但修改为NAT后,好像启动Centos里的DNS后,再在Windows上修改IP为桥连后的IP好像DNS解析不了,在Linux自己修改 /etc/resolve.conf后是可以的,所以,建议用桥连方式来开发,少用NAT方式,这样可以在一个路由器下的电脑都可以配置上这个Dns来访问该网站和开发网部(samba),很是方便,而DNS设置后,如果没有这个网站在内网,它便会访问外网,这种机制也是很好的。
背景介绍:
在日常的开发中,往往会在测试机和外网的Http的Url实际接口是不一样的,在测试机一个Url地址,在外网中又是一个地址。
这样在我们在开发时,在上线时就会去修改一下接口,在线下测试时用线下的Url接口,最后的情况是,在SVN的管理中会变得
很混乱,也就是在上线上的版本和线下测试的版本在改动上来回切换,版本号不段的切换,为此,为了解决这个问题,必须引入
自己建立一套内网测试系统的DNS来实现其和外网一样的环境,进而在实际开发中就不会出现因URL的接口包含的不同域名而导致
了代码版本管理的版本号不段攀升。
实际操作:
在Linux下尤其是CentOS这样的免费系统上有Yum这样的包管理工具来安DNS服务器,但是我在实践中发现其并不理想,可能是打出的Rpm包多少有些
不太让人满意,我试过用直接运行:yum install bind bind-utils bind-libs bind-chroot caching-nameserver,但后来在配置DNS时出现这样那样的问题.
找不到配置文件?(loading from master file 225.168.192.in-add.arpa failed: file not found)我X,什么权限问题都试了,但就是搞不定,于是否,
改用源码安装,这样来得更保险此些,操控性也强很多,有人问我,你的人生由谁来操盘:我操!
我的上手安装和配置如下:
一:开始安装DNS服务器Bind:
下载 bind http://www.isc.org,解压bind-9.9.1-P1.tar.gz。
tar -zxvf bind-9.9.1-P1.tar.gz
进入 bind-9.9.1-P1.tar.gz文件夹
cd bind-9.9.1-P1
创建安装目录,我是安装在 /usr/local/named
mkdir /usr/local/named
编译,指定安装目录,指定man目录,开启多线程支持(测试环境也就没有必要搞多线程了,要整看帮助。)
./configure --prefix=/usr/local/named
Make 大约需要几分钟,只要不报错就继续下去。
make
Make install 安装
make install
没有报错,就表示安装成功了。
创建以下目录以备用
mkdir /usr/local/named/namedb
二:开始配置bind
创建 rndc.conf文件,用bind自带程序生成
cd /usr/local/named/
sbin/rndc-confgen > etc/rndc.conf //一直死在这儿了,只得强制终止。
查原因,在网上搜索:linux安装dns,rndc-confgen没反应,哈,有一篇文章说到点上了,
Url:http://www.nginxs.com/linux/43.html,他说是,摘录如下:
在官方网站上看到这么一条信息
You must use the keyboard to create entropy, since your system is lacking
/dev/random (or equivalent)
start typing:
rndc-confgen: generate key: out of entropy
大概意思就是服务器上没有random产生器,这种情况下我们就手动伪造一个文件代替/dev/random的功能
###新建一个 random 文件随即输入一串数字“记得要长~~
shell $> vim random
asdkfjalsjdflajsldfjlasjdflajsldfjalsjdflajslfjalsjflasjfl
###查看 rndc-confgen 帮助
shell $> ../sbin/rndc-confgen –help
rndc-confgen: invalid argument –
Usage:
rndc-confgen [-a] [-b bits] [-c keyfile] [-k keyname] [-p port] [-r randomfile] [-s addr] [-t chrootdir] [-u user]
-a: generate just the key clause and write it to keyfile (/usr/local/named/etc/rndc.key)
-b bits: from 1 through 512, default 128; total length of the secret
-c keyfile: specify an alternate key file (requires -a)
-k keyname: the name as it will be used in named.conf and rndc.conf
-p port: the port named will listen on and rndc will connect to
-r randomfile: a file containing random data
-s addr: the address to which rndc should connect
-t chrootdir: write a keyfile in chrootdir as well (requires -a)
-u user: set the keyfile owner to “user” (requires -a)
,上面这一句是核心,自己整个Random文件是桥梁。
tail -10 rndc.key | head -9 | sed 's/# //g' > named.conf
把这个named.conf放在etc的文件夹子下:/usr/local/named/etc/named.conf。
ok 问题解决了,接下来我们配置 我们的 域名服务器吧。
三:配置篇
编辑named.conf
# vi /usr/local/named/etc/named.conf
写入以下内容:我的Ip:192.168.225.128 ,注意:225.168.192.in-add.arpa是Ip的反解,刚好倒过来。
退出,保存。
创建并编辑 localhost.zone 文件
vi /usr/local/named/localhost.zone
写入以下内容:
创建并编辑 localhost.rev 文件
# vi /usr/local/named/localhost.rev
因前面在,51test.com这个是在其他网页上抄过来的简单示例,于是也就顺便把文件也贴上:
vi /usr/local/named/51test.com.zone
再不是51test.com的反解配置文件:
vi /usr/local/named/225.168.192.in-add.arpa
配置注意事项:
配置文件中的 "@" 符号前不能有任何空白字符
配置文件中的 "IN" 字符前必须有空格或TAB
到此,配置大功告成。
四:
下载一个named.root 到/usr/local/named/下
ftp://ftp.rs.internic.net/domain/named.root
Ftp失效,从这儿下载:
http://www.smth.edu.cn/bbsgcon.php?board=FreeBSD&num=1209
特别注意:bind的配置文档是区分大小写的,因现在那个FTP好像下载不了,于是我也贴下面。
vi /usr/local/named/named.ca
五:运行Bind程序,如下方式加载配置文件启动,加上调试信息参数:
如果运行结果最后一行显示Running
表明安装并启动成功。
最后需要注意的内容是不要忘了是否真正的开启服务器端口(以下是named.conf文件中端口的设置语句,可以看到端口号是 53:telnet x.x.x.x 53)
当然也可以用:nmap localhost ,没有yum安装,这种小工具问题不大用yum来做。
yum install nmap
Total download size: 2.3 M
Installed size: 7.5 M
Is this ok [y/N]: y
Downloading Packages:
root@192.168.225.128:/usr/local/named# nmap localhost
Starting Nmap 5.21 ( http://nmap.org ) at 2012-06-18 03:09 CST
Nmap scan report for localhost (127.0.0.1)
Host is up (0.000033s latency).
Hostname localhost resolves to 2 IPs. Only scanned 127.0.0.1
Not shown: 994 closed ports
PORT STATE SERVICE
22/tcp open ssh
53/tcp open domain
80/tcp open http
111/tcp open rpcbind
3306/tcp open mysql
9000/tcp open cslistener
端口号是 53就是DNS Bind的端口。
六:停止及启动:
root@192.168.225.128:/usr/local/named# ps aux|grep name
root 19024 0.0 1.2 10624 6216 pts/0 T 03:00 0:00 /usr/local/named/sbin/named -gc /usr/local/named/etc/named.conf
root@192.168.225.128:/usr/local/named# kill -9 19024
root@192.168.225.128:/usr/local/named# ps aux|grep name
[2]+ 已杀死 /usr/local/named/sbin/named -gc /usr/local/named/etc/named.conf
七:本机测试,外部机器测试是否dns生效:
vi /etc/resolv.conf
加上,去掉注释其他Dns的Ip值:
nameserver 192.168.225.128
启动Dns后,清楚Bind服务器上的Dns缓存:
root@192.168.225.128:/usr/local/named# ./sbin/rndc flush
root@192.168.225.128:/usr/local/named# ping www.51test.com
PING www.51test.com (192.168.225.128) 56(84) bytes of data.
64 bytes from 192.168.225.128: icmp_seq=1 ttl=64 time=0.025 ms
64 bytes from 192.168.225.128: icmp_seq=2 ttl=64 time=0.058 ms
八:将服务设置为开机自启,把named 添加到启动项,随操作系统一起启动即可:
但是,我们现在是源码的安装,So,得这样子喔。
修改来自Apache里的启动shell(参看一下自启动的标准),也可以不用修改,直接如下也成,内容如下:
1)保存为/etc/init.d/dns
脚本执行权限添加:
2)chmod -R a+x /etc/init.d/dns //env: /etc/init.d/dns: 权限不够 ,必须给加上。
3)把脚本拷贝至/etc/init.d/目录下,执行命令:
ln -s /etc/init.d/dns /etc/rc.d/rc3.d/S61dns
ln -s /etc/init.d/dns /etc/rc.d/rc4.d/S61dns
ln -s /etc/init.d/dns /etc/rc.d/rc5.d/S61dns
再执行:
chkconfig --add dns //解释:相当于Windows下的自动启动服务,特别要注意:chkconfig –add dns的时候,出现dns服务不支持chkconfig。
如果想让服务支持chkconfig,必须定义服务的启动级,启动优先级,关闭优先级,还有描述,如上,必须得加上描述等。
chkconfig --levels dns345 on //也成
开机启动设置完毕:
service dns start
-----------------------------------------------
下次一开机也就会运行这个脚本,以启动自己定义的Dns服务器。
启动后,查看是否自己就启动了呢?如下:
果然,又启动起来了,大功告成,整完收工。
Dns服务器从安装到调试配置并测试完成,Eof。Write and Opt By:jackxiang 2012/06/17 20:30:00
后来,我自己配置了一个新的域名:naimanqi.com.cn ,我的Linux机器IP是:192.168.1.105
修改配置文件:
1)共用如下:
3)反向解析文件:
4)正向解析的文件:
注意这一行: IN A 192.168.1.105
这个目的是把浏览器访问:naimanqi.com.cn这个域名也给解析到IP: 192.168.1.105上来,跟在后面的www IN A 192.168.1.105 这个是对www解析的,其实它是一个二级域名和admin 这种二级域名是一个意思:admin IN A 192.168.1.105 。。。EOF。
最后,可以这样玩这个DNS,这个CentOs6.3的Linux 不是建立在这个NAT下的嘛,后修改为Bridge(桥连),这样后,反正是在一个网段内(路由器下),把自己外网的这台Windows下的机器的DNS由192.168.1.1修改为:192.168.1.105,这样既可以调试刚才配置的内部DNS进行调试,也可 以访问外网,为什么呢?是因为:
是因,内部DNS没有找到那个地址后,它自动转给上一级DNS去了,后得到那个外部网站的IP地址了。但修改为NAT后,好像启动Centos里的DNS后,再在Windows上修改IP为桥连后的IP好像DNS解析不了,在Linux自己修改 /etc/resolve.conf后是可以的,所以,建议用桥连方式来开发,少用NAT方式,这样可以在一个路由器下的电脑都可以配置上这个Dns来访问该网站和开发网部(samba),很是方便,而DNS设置后,如果没有这个网站在内网,它便会访问外网,这种机制也是很好的。
虚拟机默认启动Mysql,发现没有启动得了,于是,看了下Mysql的启动日志,如下:
解决办法:
这主要是没有权限读取,给个权限就OK了
1: 初始化数据库做了没有?
/usr/local/mysql/bin/mysqld_install_db --user=mysql
2:权限问题
chown -R root.mysql /usr/local/mysql/
chown -R mysql /usr/local.mysql/var/
调整lib库路径:
echo "/usr/local/mysql/lib/mysql" >> /etc/ld.so.conf
重新加载配置
ldconfig
启动mysql
/usr/local/mysql/bin/mysql_safe --user=mysql &
查看是否启动了
netstat -ntpl | grep 3306
解决办法:
这主要是没有权限读取,给个权限就OK了
1: 初始化数据库做了没有?
/usr/local/mysql/bin/mysqld_install_db --user=mysql
2:权限问题
chown -R root.mysql /usr/local/mysql/
chown -R mysql /usr/local.mysql/var/
调整lib库路径:
echo "/usr/local/mysql/lib/mysql" >> /etc/ld.so.conf
重新加载配置
ldconfig
启动mysql
/usr/local/mysql/bin/mysql_safe --user=mysql &
查看是否启动了
netstat -ntpl | grep 3306
诺基亚的衰落,是山寨机的小聪明战胜了诺基亚的大智慧。
诺基亚的衰落,是什么都没做错错过了和消费者隐性需求。
诺基亚的衰落,是科技以人为本这个概念没真正与时俱进。
1。论山寨:
山寨机的出生,就从来没有本着以人为本,不像诺基亚那样:科技以人为本。它以功能多,价格便宜,奇技淫巧,在某种程度上对消费者的健康也有影响,但在中国这都不是消费者的本质需求,而是一个软需求,其真正的需求是能打电话,能以低价位的钱买到一个能随时跟上所谓当今潮流的产品,而关于其它都不是最关心的,国人深谙一个特点,潮流嘛,总会过去的。So,山寨机便宜,大不了再换一个新的。
而诺基亚,它高高在上,价格高,早期仅仅是以信号好,耐摔打,可以换壳,这样的小小手段来蒙蔽我们国人,而当时在手机产品不多时,这样确实能让人们购买诺基亚,但是,这块肥肉,山寨的技术越来越好,以前的信号好这样的核心竞争力已经不再(核心它不是永远的核心,它不是一个物体的重心),而诺基亚以一个高高在上的姿态,不可能去和山寨机以出其不意的短兵相接,也不可能。
2。论需求:
需求来自时间的推移,时尚潮流的大势所趋,而销售的终端是收集需求的最前线,用户的原始需求也是来自那里,这点早期的诺基亚确实做得好,但后来,在用户需求多样化的情况下,诺基亚想靠孤立的一两个点去抓住消费者,而就在此时纷繁的需求中,看不清的需求中,有许多消费者有说不出来的隐性需求,说不清,而此时的诺基亚依旧给我们的消费者灌输它的产品,也就是以人为本,你买手机就是为了打电话,而这时,打电话慢慢不再是一个核心功能了,是标配的最基础功能。君不见山寨机就是功能多,能在一定程度上取悦到消费者,符合了一部分消费者需求进而购买成交。在收集到市场的需求后没有进行深度挖掘消费者的核心需求变化,动态,于是造成了工程师,产品人员的盲从(从自己的专业角度看待问题),最后,做出的产品不再是大众化的产品,它慢慢离消费者浩瀚的需求渐行渐远。而此,远在美国的苹果早就虎视眈眈,以全新的模式来定义手机,扮演了一个救世主:屏幕是诺基亚的一死穴:
为何它是死亡的穴道,是一个突破口,我们不妨回顾,当年的IBM,它堪称最好的笔记本,但在我看来,它的屏幕依旧是很烂的一个,甚至不如Sony的笔记本,和华硕笔记本的配置没有太大区别,后来,它也因品质和口碑,不可能打价格战,但后面卖给了联想。同样,诺基亚这样的一个手机,它在后面的发展中,手机的功能点在屏幕上反而成了束缚消费者使用的一个障碍,而价格还挺高,一个大点的屏幕手机要卖3000-5000左可,而屏幕的效果,用户的体验相当的糟糕(但那时人们不觉得,是因为没有见过更好的,没比较。),我记得当时山寨机天语只要800--1200左可的价格就可以买到比诺基亚屏幕更大的手机,尽管我使劲一按屏幕,里面的颜色会变,但,消费者不在乎,它在当时的价格满足了当时的消费者,所以,苹果也看在眼里,屏幕是它最拿手的,最后的Iphone出来时,刚开始你看不起,介绍苹果时我们的苹果选手那时去哪儿了?喔,它正在磨杀猪刀呢,我在此为何特别关心屏幕?因为它是和消费者心灵的窗口最近的,和消费者互动最近的窗口,它是兵家必争之地,做好了它,等于和消费者建立了良好的伙伴关系,不得不察啊。
3。 论以人为本和与时俱进:
诺基亚的以人为本在后期简直就是忽悠自己员工,什么叫以人为本?我觉得它和我党的与时俱进是一样一样的,喔,是科技以人为本,前面加了科技,初看觉得还真牛B的,科技这种给人以高高在上的东东,居然能做到以人为本,那还是相当牛的,但科技这种东东往往是掌握在少数人手中的独门绝技能做成大众化的产品,这是要一个相当长的的积淀才能糅合成以人为本的,不是两只手一拉,就是以人为本。这手不是手,是消费者心灵的宇宙,这里面还是人,科技是冰凉冰凉的,人是活蹦乱跳的,科技原理不变,人的心在变,于是潮流在变,说是人们在推动科技,还不如说是科技在不段想办法满足人的欲望,得以让自身得到发展,以人为本的科技,就是要与时俱进的思想和文化相结合,这才是完美。人才是一切的根本,人喜欢尝试一些新的东东,当时的诺基亚也把屏幕给做大了,但它没有真正以人为本,让人们在屏幕上得到自由和乐趣,最后,苹果后来者居上,干成了以触屏的方式,让人们在屏幕上得到了自由,在在冰冷的机器手机上得到一个近在咫尺的交互。所以,诺基亚耗耗丢掉了以人为本的本质,欺骗了自己,也欺骗了消费者,最终的结果就是,让消费者,抛弃。
一个以人为本的科技公司,到后来成了一个口号为生的,冷冰冰的品牌,人们怎么不抛弃这样的公司和形而上学的“科技以人为本“文化呢,我觉得它应该直接倒闭得了,回去继续伐木,不要再回来。
Jackxiang 2012/6/15 20:00:00
诺基亚的衰落,是什么都没做错错过了和消费者隐性需求。
诺基亚的衰落,是科技以人为本这个概念没真正与时俱进。
1。论山寨:
山寨机的出生,就从来没有本着以人为本,不像诺基亚那样:科技以人为本。它以功能多,价格便宜,奇技淫巧,在某种程度上对消费者的健康也有影响,但在中国这都不是消费者的本质需求,而是一个软需求,其真正的需求是能打电话,能以低价位的钱买到一个能随时跟上所谓当今潮流的产品,而关于其它都不是最关心的,国人深谙一个特点,潮流嘛,总会过去的。So,山寨机便宜,大不了再换一个新的。
而诺基亚,它高高在上,价格高,早期仅仅是以信号好,耐摔打,可以换壳,这样的小小手段来蒙蔽我们国人,而当时在手机产品不多时,这样确实能让人们购买诺基亚,但是,这块肥肉,山寨的技术越来越好,以前的信号好这样的核心竞争力已经不再(核心它不是永远的核心,它不是一个物体的重心),而诺基亚以一个高高在上的姿态,不可能去和山寨机以出其不意的短兵相接,也不可能。
2。论需求:
需求来自时间的推移,时尚潮流的大势所趋,而销售的终端是收集需求的最前线,用户的原始需求也是来自那里,这点早期的诺基亚确实做得好,但后来,在用户需求多样化的情况下,诺基亚想靠孤立的一两个点去抓住消费者,而就在此时纷繁的需求中,看不清的需求中,有许多消费者有说不出来的隐性需求,说不清,而此时的诺基亚依旧给我们的消费者灌输它的产品,也就是以人为本,你买手机就是为了打电话,而这时,打电话慢慢不再是一个核心功能了,是标配的最基础功能。君不见山寨机就是功能多,能在一定程度上取悦到消费者,符合了一部分消费者需求进而购买成交。在收集到市场的需求后没有进行深度挖掘消费者的核心需求变化,动态,于是造成了工程师,产品人员的盲从(从自己的专业角度看待问题),最后,做出的产品不再是大众化的产品,它慢慢离消费者浩瀚的需求渐行渐远。而此,远在美国的苹果早就虎视眈眈,以全新的模式来定义手机,扮演了一个救世主:屏幕是诺基亚的一死穴:
为何它是死亡的穴道,是一个突破口,我们不妨回顾,当年的IBM,它堪称最好的笔记本,但在我看来,它的屏幕依旧是很烂的一个,甚至不如Sony的笔记本,和华硕笔记本的配置没有太大区别,后来,它也因品质和口碑,不可能打价格战,但后面卖给了联想。同样,诺基亚这样的一个手机,它在后面的发展中,手机的功能点在屏幕上反而成了束缚消费者使用的一个障碍,而价格还挺高,一个大点的屏幕手机要卖3000-5000左可,而屏幕的效果,用户的体验相当的糟糕(但那时人们不觉得,是因为没有见过更好的,没比较。),我记得当时山寨机天语只要800--1200左可的价格就可以买到比诺基亚屏幕更大的手机,尽管我使劲一按屏幕,里面的颜色会变,但,消费者不在乎,它在当时的价格满足了当时的消费者,所以,苹果也看在眼里,屏幕是它最拿手的,最后的Iphone出来时,刚开始你看不起,介绍苹果时我们的苹果选手那时去哪儿了?喔,它正在磨杀猪刀呢,我在此为何特别关心屏幕?因为它是和消费者心灵的窗口最近的,和消费者互动最近的窗口,它是兵家必争之地,做好了它,等于和消费者建立了良好的伙伴关系,不得不察啊。
3。 论以人为本和与时俱进:
诺基亚的以人为本在后期简直就是忽悠自己员工,什么叫以人为本?我觉得它和我党的与时俱进是一样一样的,喔,是科技以人为本,前面加了科技,初看觉得还真牛B的,科技这种给人以高高在上的东东,居然能做到以人为本,那还是相当牛的,但科技这种东东往往是掌握在少数人手中的独门绝技能做成大众化的产品,这是要一个相当长的的积淀才能糅合成以人为本的,不是两只手一拉,就是以人为本。这手不是手,是消费者心灵的宇宙,这里面还是人,科技是冰凉冰凉的,人是活蹦乱跳的,科技原理不变,人的心在变,于是潮流在变,说是人们在推动科技,还不如说是科技在不段想办法满足人的欲望,得以让自身得到发展,以人为本的科技,就是要与时俱进的思想和文化相结合,这才是完美。人才是一切的根本,人喜欢尝试一些新的东东,当时的诺基亚也把屏幕给做大了,但它没有真正以人为本,让人们在屏幕上得到自由和乐趣,最后,苹果后来者居上,干成了以触屏的方式,让人们在屏幕上得到了自由,在在冰冷的机器手机上得到一个近在咫尺的交互。所以,诺基亚耗耗丢掉了以人为本的本质,欺骗了自己,也欺骗了消费者,最终的结果就是,让消费者,抛弃。
一个以人为本的科技公司,到后来成了一个口号为生的,冷冰冰的品牌,人们怎么不抛弃这样的公司和形而上学的“科技以人为本“文化呢,我觉得它应该直接倒闭得了,回去继续伐木,不要再回来。
Jackxiang 2012/6/15 20:00:00
MySQL 命令自动补齐功能
实践得知,这个只是在本服务器上,且在是自己的client连接自己的db时有这个补全,但是呢,这有个问题是补全并不很智能。
方法一、
vi /etc/my.cnf
[mysql]
#no-auto-rehash
auto-rehash #添加auto-rehash
默认是:
[mysql] [mysql]
no-auto-rehash auto-rehash
在重启一下mysql服务,补全命令按 TAB 建,效果如下
mysql> select co
code comment commentCount consumeAmount content country connect
方法二、
在mysql启动时加参数auto-rehash
mysqld_safe --user=mysql --auto-rehash &
http://blog.chinaunix.net/uid-11327712-id-165736.html
实践得知,这个只是在本服务器上,且在是自己的client连接自己的db时有这个补全,但是呢,这有个问题是补全并不很智能。
方法一、
vi /etc/my.cnf
[mysql]
#no-auto-rehash
auto-rehash #添加auto-rehash
默认是:
[mysql] [mysql]
no-auto-rehash auto-rehash
在重启一下mysql服务,补全命令按 TAB 建,效果如下
mysql> select co
code comment commentCount consumeAmount content country connect
方法二、
在mysql启动时加参数auto-rehash
mysqld_safe --user=mysql --auto-rehash &
http://blog.chinaunix.net/uid-11327712-id-165736.html
在设置 > 通知菜单,你可以知道哪些应用支持推送通知功能。
支持应用程序至少打开一次,才能从该程序获得所有通知。
当iPod touch 屏幕打开且具有 Wi-Fi 连接时,将随时会接收到推送通知。如果 iPod touch 屏幕处于睡眠状态,将会每隔 15 分钟检查是否有通知。
同样,需要关闭所有或特定应用程序的通知,可以在设置 > 通知中关闭。
将备份恢复到其他iPad iphone 或 iPod touch 时,需要再次打开应用程序才能获得通知。
如果设备通过 Wi-Fi 连接,但仍无法接收通知,则所用的 Wi-Fi 网络可能装有防火墙,阻止了端口 5223。
应用程序可提供三种类型的推送通知:
声音:播放有声警告
警告:在屏幕上显示警告
徽标:在应用程序图标上显示图像/数字
支持应用程序至少打开一次,才能从该程序获得所有通知。
当iPod touch 屏幕打开且具有 Wi-Fi 连接时,将随时会接收到推送通知。如果 iPod touch 屏幕处于睡眠状态,将会每隔 15 分钟检查是否有通知。
同样,需要关闭所有或特定应用程序的通知,可以在设置 > 通知中关闭。
将备份恢复到其他iPad iphone 或 iPod touch 时,需要再次打开应用程序才能获得通知。
如果设备通过 Wi-Fi 连接,但仍无法接收通知,则所用的 Wi-Fi 网络可能装有防火墙,阻止了端口 5223。
应用程序可提供三种类型的推送通知:
声音:播放有声警告
警告:在屏幕上显示警告
徽标:在应用程序图标上显示图像/数字
问题:
Q: Could not find install dir for editor ...?
A: 找不到 编辑器的安装路径,绿色版本的一般会出现该问题;
编辑“tools\EditPlus安装路径.reg”,将其中的EditPlus路径修改为你自己的,然后保存,然后双击导入注册表即可。
或者打开regedit,在HKEY_CURRENT_USER\Software\ES-Computing\EditPlus 3\Install,设置Path字符串属性,值为 编辑器安装路径,不存在项或者目录就建立新的。
如果是EditPlus2,记得修改为EditPlus 2。
依旧不行后,找到了解决办法:
打开注册表编辑器
运行——>regedit
找到分支:HKEY_CURRENT_USER\SoftWare\ES-Computing\EditPlus 3
把EditPlus 3 修改为 EditPlus 2 ,对!就是只改个数字,原因请看下面的问题分析。
问题分析:
在sf上下载的OpenCTags版本号是 1.0.0 ,最后更新时间是2006年,当时还没发布editplus 3.
请看下面的源码被下划线修饰的那行。
附带openctags下载地址:
http://sourceforge.net/projects/openctags/files/openctags/
来自:http://my.oschina.net/u/135304/blog/61341
Q: Could not find install dir for editor ...?
A: 找不到 编辑器的安装路径,绿色版本的一般会出现该问题;
编辑“tools\EditPlus安装路径.reg”,将其中的EditPlus路径修改为你自己的,然后保存,然后双击导入注册表即可。
或者打开regedit,在HKEY_CURRENT_USER\Software\ES-Computing\EditPlus 3\Install,设置Path字符串属性,值为 编辑器安装路径,不存在项或者目录就建立新的。
如果是EditPlus2,记得修改为EditPlus 2。
依旧不行后,找到了解决办法:
打开注册表编辑器
运行——>regedit
找到分支:HKEY_CURRENT_USER\SoftWare\ES-Computing\EditPlus 3
把EditPlus 3 修改为 EditPlus 2 ,对!就是只改个数字,原因请看下面的问题分析。
问题分析:
在sf上下载的OpenCTags版本号是 1.0.0 ,最后更新时间是2006年,当时还没发布editplus 3.
请看下面的源码被下划线修饰的那行。
附带openctags下载地址:
http://sourceforge.net/projects/openctags/files/openctags/
来自:http://my.oschina.net/u/135304/blog/61341
关于php中设置session过期时间的问题
Php/Js/Shell/Go jackxiang 2012-6-13 16:43
关于php的session文件垃圾回收机制。我已经在网上看了不少资料。大致是说session过期并不会马上清除session文件,而是每次有请求过来的时候根据session.gc_probability/session.gc_divisor的值为概率去遍历以便session目录下的session文件看是否存在过期的session文件,如果过期则清楚。阅读全文
你所浪费的今天,是昨天死去的人奢望的明天;你所厌恶的现在,是未来的你回不去的曾经。
You are wasting today, was precisely yesterday people expect tomorrow; you hate it, is the future you cannot go back once.
原版哈佛校训之一:I leave uncultivated today, was precisely yesterday perishes tomorrow which person of the body implored 官方翻译:我荒废的今日,正是昨日殒身之人祈求的明日
应该是你说的这个!
You are wasting today, was precisely yesterday people expect tomorrow; you hate it, is the future you cannot go back once.
原版哈佛校训之一:I leave uncultivated today, was precisely yesterday perishes tomorrow which person of the body implored 官方翻译:我荒废的今日,正是昨日殒身之人祈求的明日
应该是你说的这个!
Windows下如何用C语言清空特定文件夹中的所有文件
Unix/LinuxC技术 jackxiang 2012-6-13 12:33
来自:http://software.intel.com/zh-cn/blogs/2011/10/12/c-13/?cid=sw:prccsdn2030
背景:nginx 请求php的9000端口也是一个问题,nginx就是客户端,实践发现类似shell 正常返回0,错误返回1,fastcgi的php也是一样,php有一个队列,backlog =sysctl_somaxconn; //也就是说当backlog=-1时,在内核中backlog被赋值为/proc/sys/net/core/somaxconn 的值,本机上为262144,性能差是由于php-fpm backlog参数设置为-1,导致fpm没能及时取出完成连接队列的socket,出现SYN 超时,最终导致压不上去,表现出性能差。
所以安装php-fpm时backlog一定要重新设置,不能用fpm默认配置的-1 ,可以根据机器的并发量来设置,建议设置在1024以上,最好是2的幂值(因为内核会调整成2的n次幂)。而只要这个backlog满了nginx还向php发请求就会返回503,即拒绝客户端的连接。
502 Bad Gateway(处理超过php的设置时间,并不是执行错误,执行错误是500)
The server was acting as a gateway or proxy and received an invalid response from the upstream server.
503 Service Unavailable(PHP的队列backlog满了还来请求如队列被拒绝的状态码)
The server is currently unavailable (because it is overloaded or down for maintenance). Generally, this is a temporary state.
504 Gateway Time-out
The server was acting as a gateway or proxy and did not receive a timely response from the upstream server.
more:https://m.zyku.net/nginx/1753.html
ngx_http_limit_req_module 模块,这个可以限制每秒的请求,超过就返回 503 错误码。
是用共享内存实现的:http://www.cnblogs.com/fll369/archive/2012/11/26/2789572.html
2012.1.7 更新
编译的时候推荐使用nginx-1.0以上版本,不要加--with-debug参数编译,(感谢agentzh指出)。
hashdos这个事,严格意义上不是各种语言的错了(不过perl的确处理得很好),但是用nginx来擦屁股要干净些。
借鉴tomcat的作法,实现了下面这个nginx-http-hashdos-module,通过设置hashdos(默认on)的开关和body_max_count(默认值1000),对nginx后面的服务进行安全防护,相比对php或者java进行patch,这或许是最好的办法了。
nginx-http-hashdos-module项目地址
https://github.com/54chen/nginx-http-hashdos-module
如何使用
1.下载zip后保存到一个目录,如~/nginx-http-hashdos-module。
2.cd nginx-1.0.9/
3.重新编译和安装nginx
./configure --prefix=/opt/soft/nginx --with-pcre --user=www --group=www --with-http_stub_status_module --with-http_ssl_module --add-module=/path_to/nginx-http-hashdos-module/ && make && make install
4.配置打开:
hashdos on;
body_max_count 1000;
location ~ \.php$ {
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include /opt/soft/nginx/conf/fastcgi_params;
client_body_buffer_size 2m;
client_max_body_size 2m;
}
注意事项
因为计算参数都在内存中进行,所以client_body_buffer_size 与 client_max_body_size 的值一定要相等。推荐2m。
TODO
改进in-file时的post分析。
原理
介于微博上有网友对此文扫一眼之后以为是简单通过client_body_buffer_size和client_max_body_size来做的判断,特加此节。
nginx-reqeust-body在接到请求时,根据header中的声明,判断是保存在内存还是在硬盘中,当大小超过两个buf和client_body_buffer_size大小时,会写入临时文件。
防止hashdos的终极目标是filter用户的输入,所以对用户的输入参数数量进行计数。超过1000(body_max_count的默认数量)时,返回一个413给攻击者。希望不要再渔到各种高级工程师。
参考:http://www.54chen.com/_linux_/nginx-hashdos-help.html
nginx 防止小型ddos攻击
所以安装php-fpm时backlog一定要重新设置,不能用fpm默认配置的-1 ,可以根据机器的并发量来设置,建议设置在1024以上,最好是2的幂值(因为内核会调整成2的n次幂)。而只要这个backlog满了nginx还向php发请求就会返回503,即拒绝客户端的连接。
502 Bad Gateway(处理超过php的设置时间,并不是执行错误,执行错误是500)
The server was acting as a gateway or proxy and received an invalid response from the upstream server.
503 Service Unavailable(PHP的队列backlog满了还来请求如队列被拒绝的状态码)
The server is currently unavailable (because it is overloaded or down for maintenance). Generally, this is a temporary state.
504 Gateway Time-out
The server was acting as a gateway or proxy and did not receive a timely response from the upstream server.
more:https://m.zyku.net/nginx/1753.html
ngx_http_limit_req_module 模块,这个可以限制每秒的请求,超过就返回 503 错误码。
是用共享内存实现的:http://www.cnblogs.com/fll369/archive/2012/11/26/2789572.html
2012.1.7 更新
编译的时候推荐使用nginx-1.0以上版本,不要加--with-debug参数编译,(感谢agentzh指出)。
hashdos这个事,严格意义上不是各种语言的错了(不过perl的确处理得很好),但是用nginx来擦屁股要干净些。
借鉴tomcat的作法,实现了下面这个nginx-http-hashdos-module,通过设置hashdos(默认on)的开关和body_max_count(默认值1000),对nginx后面的服务进行安全防护,相比对php或者java进行patch,这或许是最好的办法了。
nginx-http-hashdos-module项目地址
https://github.com/54chen/nginx-http-hashdos-module
如何使用
1.下载zip后保存到一个目录,如~/nginx-http-hashdos-module。
2.cd nginx-1.0.9/
3.重新编译和安装nginx
./configure --prefix=/opt/soft/nginx --with-pcre --user=www --group=www --with-http_stub_status_module --with-http_ssl_module --add-module=/path_to/nginx-http-hashdos-module/ && make && make install
4.配置打开:
hashdos on;
body_max_count 1000;
location ~ \.php$ {
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include /opt/soft/nginx/conf/fastcgi_params;
client_body_buffer_size 2m;
client_max_body_size 2m;
}
注意事项
因为计算参数都在内存中进行,所以client_body_buffer_size 与 client_max_body_size 的值一定要相等。推荐2m。
TODO
改进in-file时的post分析。
原理
介于微博上有网友对此文扫一眼之后以为是简单通过client_body_buffer_size和client_max_body_size来做的判断,特加此节。
nginx-reqeust-body在接到请求时,根据header中的声明,判断是保存在内存还是在硬盘中,当大小超过两个buf和client_body_buffer_size大小时,会写入临时文件。
防止hashdos的终极目标是filter用户的输入,所以对用户的输入参数数量进行计数。超过1000(body_max_count的默认数量)时,返回一个413给攻击者。希望不要再渔到各种高级工程师。
参考:http://www.54chen.com/_linux_/nginx-hashdos-help.html
nginx 防止小型ddos攻击