生产环境(linux+nginx)中JS在IE6下有概率输出空白,刷新下就好,firefox正常。

测试环境(window+apache)一切正常。

查看两者环境,发现测试环境没有开始gzip,怀疑是gzip问题,特意跑去微软验证,给出吐血答复:

Do not enable HTTP compression for the script files

请不要对脚本文件开启http压缩

无奈之际,只能只能四处找资料寻找解决方案,毕竟在中国普通网民中IE6还占据着大半壁江山。终于在nginx的conf文件中找到一个解决方法,在nginx.conf文件的gzip配置处加入

gzip_disable "MSIE [1-6]\.";

意思就是在ie1-ie6环境下禁用gzip,虽然对解决方法不甚满意,但暂时没有找到更好的方法,万恶的IE6!

posted @ 2010-12-13 20:00 小马歌 阅读(401) | 评论 (0)编辑 收藏
 

这个问题实在好怪,折腾了的一个多月。
情况是这样的:

新配了一台服务器,全新 RedHat 5.4 X64 的OS ,Intel 5500系列的CPU
Apache 2.2.14?? + PHP 5.2.6 + Zend 3.3.x + eaccelerator 0.9.4

每到了一段时间,八核CPU就会有2核 始终恒定在 100% 占用进程是 httpd 即 apache
由于还有其他6核的资源,所以访问没有任何影响。
找了好久原因,一度怀疑是 mod_mpm 的问题,调整了无数次参数。
后来由于流量越来越高,出现的频率越来越频繁,差不多2天就又变成这样了。
查看 error_log 看到不断有提示:

child pid ***** exit signal Segmentation fault (11)
child pid ***** exit signal Segmentation fault (11)
child pid ***** exit signal Segmentation fault (11)

重启 Apache 的时候还更会一堆过来。
好不容易找到原因,原来是因为 PHP 加速器 eaccelerator 0.9.4 跟 As5.4 X64 内核的兼容有问题。
之前在 As5.3 X64 上是完全正常的

于是下载了最新的 eaccelerator V0.9.6
重新编译 eaccelerator 升级覆盖,问题解决!

posted @ 2010-11-26 15:11 小马歌 阅读(370) | 评论 (0)编辑 收藏
 
from : http://www.myquickphp.com/archives/147

(请求的跨域服务器不支持常规”?”查询请求时的解决方案)

昨天第一次做VIP需求时,发现一个超奇怪的问题,我有以下URL地址:

 

http://dynamic.vip.xxxxxx.com/active/<controllers>/<active>/<id>

 

放在浏览器地址栏中访问可以得到正确的输出,但我一放到 AJAX 中去异步请求后用 FireBug 调试时确怎么都不出结果,和水龙兄一起调试了很久都没有发现是什么问题,由于这个URL对方的程序是用XX框架写的,我是第一次使用这个XX框架进行开发,对它不是很熟(有时间要研究一下它的内核源码),总以为是它什么地方有设置影响了的;就在我快要吐血时,乐锋(对这块比较了解的哥们)终于上线了,我把问题向他说下后,他第一反应就是:”你是不是跨域访问了。。”
OH FUCK,我和水龙一直研究程序逻辑,竟然忽视了自己的当前域名,因为我当前执行请求的域名是:

 

http://vip.xxxxxx.com/active1/index.html

 

问了一下乐锋,现系统中已提供的几个方案(函数)都不太令人满意或太烦琐了,和乐锋讨论了几种方案后,一时没有找到最好解决方案,一看时间,22:00了,天色已晚,不打扰他晚上陪老婆了!回到家里本想通过利用 iframe 来加载跨域的 url 来得到 dom 数据,研究后发现的想法太天真了,JS的安全策略跟本不允许我这样做;想通过 proxy 代理的方案,但想了一下,那比现在系统中所使用的方案更麻烦,详细研究了一下jQuery最新版关于跨域的解决方案后,终于让我研究出了一种非常方便的解决方案:
如下是代码示例:
—————— http://a.com/index.html ——————-

<script type="text/javascript" src="jquery-1.4.2.js"></script>
<script type="text/javascript">
/*
AJAX跨域问题完美解决方案
研究:袁维
启示:乐锋
*/
function jsonCallBack(url,callback)
{
$.getScript(url,function(){
callback(json);
});
}
function fun1()
{
jsonCallBack('http://b.com/b.php',function(json){
alert(json.message);
})
}
</ script>
<button type="button" onclick="fun1()">跨域访问</button>

—————— http://b.com/b.php ——————-

<?php
$ary
= array('result'=>0,'message'=>'跨域成功');
$json = json_encode($ary);
//一定要这样定义输出最后的JSON数据,这是利用JS的闭包特性
echo "var json=$json;";
?>

 

该方案注意事项:
1:jQuery的版本必需大于 1.2版,否则不支持跨域处理
2:只支持 GET 方式的请求
2:请求的 URL 必需按如下例子中那样返回数据.
该方案注意利弊:
优点:
1:比用 iframe 加输出 parent.XXX() 的方案简单高效明了,前端处理更方便
2:相当 proxy 方式在编程上也简单多了
缺点:
1:必需使用jQuery,
2:返回的数据格式必需按示例样,当然不限于JSON,但它是处理最方便的.
(跨域服务器支持常规”?”查询请求的解决方案,利用JQuery的JSONP)
——————— http://b.com/index ———————-

<script src="jquery-1.4.2.js" type="text/javascript"></script>
<script type="text/javascript">
function fun1()
{
$.getJSON("http://a.com/c.php?no=10&msg=ok&format=json&jsoncallback=?",
function(data){
alert(data.msg);
});
}
</script>
<button type="button" onclick="fun1()">跨域处理</button>


——————– http://a.com/c.php ———————-

<?php
$no
= $_GET['no'];
$msg = $_GET['msg'];
$json = json_encode(array('no'=>$no,'msg'=>$msg));
//必需以下这样输出
echo $_GET['jsoncallback'].'('.$json.')';


 

不知大哥你是否有更好的解决方案?有请分享一下!
posted @ 2010-11-25 17:45 小马歌 阅读(41755) | 评论 (7)编辑 收藏
 

1) 目前各种服务器HTTP Server对PHP的支持一共有三种:

a.通过HTTPServer内置的模块来实现,

例如Apache的mod_php5,类似的Apache内置的mod_perl可以对perl支持;

b.通过CGI来实现,这个就好比之前perl的CGI,该种方式的缺点是性能差,因为每次服务器遇到这些脚本都需要重新启动脚本解析器来执行脚本然后将结果返回给服务器;另一方面就是不太安全;该方面几乎很少使用了。

c.最新出现一种叫做FastCGI。所谓FastCGI就是对CGI的改进。它一般采用C/S结构,一般脚本处理器会启动一个或者多个daemon进程,每次HTTPServer遇到脚本的时候,直接交付给FastCGI的进程来执行,然后将得到的结果(通常为html)返回给浏览器。


>该种方法的问题存在一个小问题是当遇到大流量的频繁请求的话,脚本处理器的daemon进程可能会超负荷从而变得很慢,甚至发生内存泄漏;

>但是比较起Apache的内置模块的方式的优点是由于Server和脚本解析器完全分开各负其责,因此服务器不再臃肿,可以专心地进行静态文件响应或者将动态脚本解析器的结果返回给用户客户端。所以比较起Apache的内置模块方式,有时候性能要提高很多。有人测试可能会达到Apache+mod_php的5~10倍。


2) 使用FastCGI方式现在常见的有两种stack:ligthttpd+spawn-fcgi; 另外一种是nginx+PHP-FPM(也可以用spawn-fcgi) 。

a.如上面所说该两种结构都采用FastCGI对PHP支持,因此HTTPServer完全解放出来,可以更好地进行响应和并发处理。因此lighttpd和nginx都有small, but powerful和efficient的美誉。

b. 该两者还可以分出一个好坏来,spawn-fcgi由于是lighttpd的一部分,因此安装了lighttpd一般就会使用spawn-fcgi对php支持,但是目前有用户说ligttpd的spwan-fcgi在高并发访问的时候,会出现上面说的内存泄漏甚至自动重启fastcgi。即:PHP脚本处理器当机,这个时候如果用户访问的话,可能就会出现白页(即PHP不能被解析或者出错)。

另一个:首先nginx不像lighttpd本身含带了fastcgi(spawn-fcgi),因此它完全是轻量级的,必须借助第三方的FastCGI处理器才可以对PHP进行解析,因此其实这样看来nginx是非常灵活的,它可以和任何第三方提供解析的处理器实现连接从而实现对PHP的解析(在nginx.conf中很容易设置)。

nginx可以使用spwan-fcgi(需要一同安装lighttpd,但是需要为nginx避开端口,一些较早的blog有这方面安装的教程),但是由于spawn-fcgi具有上面所述的用户逐渐发现的缺陷,现在慢慢减少使用nginx+spawn-fcgi组合了。

c. 由于spawn-fcgi的缺陷,现在出现了新的第三方(目前还是,听说正在努力不久将来加入到PHP core中)的PHP的FastCGI处理器,叫做PHP-FPM(具体可以google)。它和spawn-fcgi比较起来有如下优点:

由于它是作为PHP的patch补丁来开发的,安装的时候需要和php源码一起编译,也就是说编译到php core中了,因此在性能方面要优秀一些;
同时它在处理高并发方面也优于spawn-fcgi,至少不会自动重启fastcgi处理器。具体采用的算法和设计可以google了解。

因此,如上所说由于nginx的轻量和灵活性,因此目前性能优越,越来越多人逐渐使用这个组合:nginx+PHP/PHP-FPM 。

3) 因此总结:
目前在HTTPServer这块基本可以看到有三种stack比较流行:

>Apache+mod_php5
>lighttp+spawn-fcgi
>nginx+PHP-FPM

三者后两者性能可能稍优,但是Apache由于有丰富的模块和功能,目前来说仍旧是老大。有人测试nginx+PHP-FPM在高并发情况下可能会达到Apache+mod_php5的5~10倍,现在nginx+PHP-FPM使用的人越来越多。

下面着重介绍stack:
Apache+mod_php5和nginx+PHP-FPM的安装和配置。对于lighttpd+spawn-fcgi,由于我个人没有怎么用过,所以如下不准备介绍,感兴趣可以查阅资料。


1.Apache+mod_php模式:

我们很久一段时间使用经典的Apache+mod_php:

Apache对PHP的支持是通过Apache的模块来支持的。如果曾源代码编译安装php的话,如果希望Apache支持PHP的话,在./configure步骤需要指定--with-apxs2=/usr/local/apache2/bin/apxs 表示告诉编译器通过Apache的mod_php5/apxs来提供对PHP5的解析;
而且在最后一步make install的时候我们会看到将动态链接库libphp5.so(Apache模块)拷贝到apache2的安装目录的modules目录下,并且还需要在httpd.conf配置文件中添加LoadModule语句来动态将libphp5.so 模块加载进来,从而实现Apache对php的支持。

1)由于该模式实在太经典了,因此这里关于安装部分不准备详述了,相对来说比较简单。

2)这里之所以仍旧列出来Apache+mod_php5来讨论,是因为:
看过上一篇文章的话,我们知道nginx一般包括两个用途HTTPServer和Reverse Proxy Server(反向代理服务器)。

我们介绍了如何在前端部署nginx作为reverse proxy server,后端布置多个Apache来实现机群系统server cluster架构的。
因此,实际生产中,我们仍旧能够保留Apache+mod_php5的经典App Server,而仅仅使用nginx来当做前端的reverse proxy server来实现代理和负载均衡。因此,建议nginx(1个或者多个)+多个apache的架构继续使用下去。

2. nginx+PHP-FPM:

1)通过上面的分析,尽管我们可以仍旧保留Apache+mod_php来处理PHP,所有的静态文件和负载均衡由顶在前端的nginx来完成,但是由于nginx和PHP-FPM各自的优越性,使得nginx+PHP-FPM的组合的性能已经很超越Apache+mod_php。
因此很多人渐渐放弃了Apache+mod_php的组合了,而完全使用nginx+PHP-FPM来实现对PHP的处理。
因此现在出现了新的名词叫做LEMP(Linux+EngineX(nginx)+MySQL+PHP),慢慢要代替经典很多年的LAMP 。

2)甚至出现一种新的server cluster:
其中看不到Apache的影子了,全部由nginx来搞定。nginx轻量型,高性能,高灵活性使得它完全能够应付过来。
由于PHP-FPM是C/S结构,因此我们前端保留nginx来做负载均衡;对于之前后端的各个Apache服务器,我们不需要安装Apache了,对PHP重新编译安装使其以PHP-FPM方式支持FastCGI;
然后在nginx中配置将客户端的php请求分别pass到后台的多个运行的PHP-FPM,后者进行处理然后返回给nginx,然后显示给用户。整个过程可以完全不要Apache。

3) 下面我们具体来介绍如何来安装和简单配置
nginx+PHP+PHP-FPM+MySQL.

3. 安装和配置nginx+PHP+PHP-FPM+MySQL:

1) 安装MySQL:

这里之所以首先要安装MySQL,是因为之后编译安装PHP的时候,可以直接指定对MySQL的支持。
我们知道PHP对MySQL的支持是通过PHP扩展实现的。
可以源代码安装,不过我使用的Ubuntu,直接使用了其发布的二进制包安装了:

$sudo apt-get install mysql-server

安装的时候需要提示设置root密码;
之后使用
$netstat -tap |grep mysql
看看是否正常运行;

2) 安装PHP和PHP-FPM:
我们之前介绍了PHP-FPM是对PHP的补丁,因此需要和PHP一起编译安装。我这里使用的PHP 5.2.10 。
a. 下载安装包:
从php.net 下载:php-5.2.10.tar.gz
从PHP-FPM官网下载:php-5.2.10-fpm-0.5.13.diff.gz
注意两个版本尽量相同(不相同可能出错,我自己没试过)。

b. 解压缩打补丁
$tar xzvf php-5.2.10.tar.gz
$gzip -cd php-5.2.10-fpm-0.5.13.diff.gz | patch -d php-5.2.10 -p1
倘若中间需要哪个命令shell不认识,可以使用apt-get安装,或者google找答案。

c. 配置编译环境:
在安装之前可能需要安装几个依赖包:
sudo apt-get install libxml2-dev
sudo apt-get install libmysqlclient15-dev
不安装也可以,之后./configure失败的话,根据出错信息,再慢慢搜索安装依赖包也可以,重要的是记下关键步骤,因为每个人的系统装没装啥都不一定。

$cd php-5.2.10
$./configure --prefix=/usr/local/php --enable-fastcgi --enable-fpm --with-mysql --with-mysqli --with-openssl

这里我们配置php安装到/usr/local/php,如果不配置默认安装到/usr/local下,这样我觉得不太好,这样make install各个文件就会被拷贝得分散开来(分散在local的各个目录下),如果我们之后想卸载干净而且无法使用make uninstall的话,还不方便。安装到/usr/local/php下,如果我们想删除php,直接删除该目录即可。

--enable-fastcgi和--enable-fpm分别设置支持fastcgi和PHP-FPM的选项;
--with-mysql和--with-mysqli相当于编译php的MySQL扩展到php内核中,这样我们可以在php中使用mysql和mysqli库的函数访问mysql;

注意:这里需要注意的一个问题是,不要设置--with-apxs2=/usr/local/apache2/bin/apxs,我们知道它是告诉PHP编译成模块方式让Apache来支持。如果设置了该选项的话,编译安装之后,Apache会无法启动,报错信息:
/usr/lib/apache2/modules/libphp5.so: undefined symbol: -fpm-event-base-free

因此这里也就意味着,我们编译PHP以PHP-FPM的方式来支持FastCGI的话,基本上就不能和Apache一起使用了,也就是说我们决定使用nginx+PHP+PHP-FPM的话,这里的PHP就没法和Apache一起使用了。

如果非还想要使用,那可以另外编译安装一个PHP,编译的时候在./configure的时候设置--with-apxs2=/usr/local/apache2/bin/apxs,而且不要打PHP-FPM的补丁。

另外,如果该步骤出现错误,通常是缺乏依赖包,请按照错误信息安装依赖包即可。

d. 编译:
$make all
注意这里尽量使用make all,而不要仅仅是make

e. 安装:
$make install

f. 拷贝php.ini文件:
$sudo cp php.ini-dist /usr/local/php/lib/php.ini
将php.ini文件拷贝到如上位置;

如果安装都成功的话,我们的以PHP-FPM方式支持FastCGI的PHP就被安装到了/usr/local/php目录下了。


3) 配置PHP和PHP-FPM:

首先可用到/usr/local/php/bin目录下执行一下php -v,看PHP是否work。

a. 配置php.ini:
位于/usr/local/php/lib下
这里一般没有严格需要配置什么,可以按照自己要求进行配置。

b. 配置PHP-FPM这个PHP解析器:
我们上面说过PHP-FPM解析器是C/S结构,它的配置文件位于/usr/local/php/etc/php-fpm.conf。
$cd /usr/local/php/etc
$sudo vi php-fpm.conf
该文件是一个xml文件,只需要修改:
    Unix user of processes
    <value name="user">www-data</value>
    Unix group of processes
    <value name="group">www-data</value>
注意去掉两边的注释<!--和-->,否则之后php-fpm启动不了;

c. 配置完之后,就可以启动PHP-FPM:
$/usr/local/php/sbin/php-fpm start

我们上面介绍了FastCGI模式区别于CGI模式,它需要一个daemon进程一直运行在后台对php请求做出解析,这里的PHP-FPM就是这个daemon进程,在配置文件php-fpm.conf中可以设置它侦听的IP和端口,默认为127.0.0.1:9000。也就是它侦听9000端口的数据请求,然后会将其进行解析然后返回给请求端。

这个和我们之前介绍的FastCGI的思想相吻合。HTTPServer服务器和FastCGI模式的PHP解析器相分离(这里就是PHP-FPM),HTTPServer遇到PHP请求的时候,就会传递给PHP-FPM,后者解析并返回。实现HTTPServer和PHP解析器完全分离,缓解了Server的负担,Server有更多资源来处理并发请求。其实这也是nginx优于apache的一个原因。

d. 检查php-fpm是否运行正常:
$ps ax|grep fpm

4)安装和配置nginx:

之前文章我们介绍了nginx的安装和使用nginx作为reverser server的进行负载均衡配置了,感兴趣的可以参看。

a. nginx的安装很简单:
从官网下载安装包:nginx-0.7.61.tar.gz

$tar xzvf nginx-0.7.61.tar.gz
$cd nginx-0.7.61
$./configure
默认安装路径为/usr/local/nginx,如果不放心自己可以使用--prefix=/usr/local/nginx配置一下
$make
$sudo make install

b. 思想:

我们之前的文章介绍了nginx的使用非常灵活,有人比喻其为server领域的瑞士军刀,其实确实是:性能好,而且使用方法多。
各种使用方法都是通过配置文件来实现,因此掌握nginx的使用,除了掌握各种架构的思想之外,还要掌握如何对nginx.conf进行相应的配置。

我们这里着重对nginx.conf配置,实现通过php-fpm的fastcgi对php的处理。其实nginx本身并不会对PHP进行解析,这个要区别于Apache (Apache通过内置模块实现了对PHP的解析),nginx其实是将对php页面的请求交给了后台在127.0.0.1:9000 侦听的php-fpm,后者具有解析php的功能。

因此如果把php-fpm看做一个app server的话,其实nginx这里的作用还是一个反向代理服务器。和我们之前介绍的使用location配置将php请求proxypass给后台侦听的Apache服务器,在思想上几乎一样。


c. 配置位于/usr/local/nginx/conf目录下的nginx.conf和fastcgi.params

>nginx.conf配置:
$cd /usr/local/nginx/conf
$sudo vi nginx.conf
从上往下对默认的配置文件进行修改:

    1. user  www-data; 这里需要和php-fpm中定义的用户一致;

    2. worker_processes 2; 可以设置更多,这个选项和之后的worker_connections  1024;
        一起来定义每个进程并发相应的最大连接数,因此这里可以达到2*1024的并发请求;

    3. 在server {
        listen       8080;
        如果自己已经安装了Apache并且占用了80端口,这里修改为别的8080,负责启动不了;

    4. 如上面所述,我们其实设置nginx将PHP请求转发给后台的php-fpm server即可,后者有解析php功能。
    其实还是充当反向代理的作用;
        # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
        #
        location ~ \.php$ {
            root           html;
            fastcgi_pass   127.0.0.1:9000 ;
            fastcgi_index  index.php;
            fastcgi_param  SCRIPT_FILENAME  html/$fastcgi_script_name;
            include        fastcgi_params;
        }
    注意fastcgi_param  SCRIPT_FILENAME  html/$fastcgi_script_name;

    之后需要设置为放置php脚本的位置,这里我们举例在/usr/local/nginx/html目录下创建一个phpinfo.php文件
    包含代码<?php phpinfo(); ?>

$sudo vi fastcgi.params

配置fastcgi参数文件,具体可以参考http://wiki.nginx.org/NginxFcgiExample
基本上可以使用默认的该文件,不需要修改。

5) 运行nginx:

$sudo /usr/local/nginx/sbin/nginx

然后在浏览器中查看http://localhost

> 默认会显示/usr/local/nginx/html目录下的index.html页面: Welcome to Nginx!

>然后查看http://localhost/phpinfo.php ,相当于访问html目录下的phpinfo.php页面,

如果正常,会显示phpinfo的页面。其中可以看到Server API一项包含:CGI/FastCGI,表示FastCGI方式运行。

如果以上步骤出现错误,通常都是因为nginx.conf配置不正确,可以google寻找解决方法,一般都可以找得到(英文)。然后重新修改nginx.conf文件。

之后需要重启nginx,可以执行:

$sudo kill `cat /usr/local/nginx/logs/nginx.pid` 表示关闭nginx
$sudo /usr/local/nginx/sbin/nginx 再次启动nginx

6)设置开机自启动:

在Ubuntu下,如果希望添加到/etc/init.d实现开机重启的话,可以Google寻找nginx和php-fpm的init script(php-fpm本身就是init script不需要寻找了),然后拷贝到/etc/init.d目录下。

简单的方法,设置rc.local:

$sudo vi /etc/rc.local

在exit 0之前添加:
/usr/local/php/sbin/php-fpm start
/usr/local/nginx/sbin/nginx

这样开机自动启动nginx和php-fpm。

7) 使用nginx和php-fpm实现server  cluster:

和nginx对多台app server代理实现负载均衡类似,我们可以实现nginx对多台php-fpm实现负载均衡:

T o configure Nginx to load balance multiple FastCgi servers use this type of configuration:

    upstream fastcgiServers {
        server 127.0.0.1:9000 ;
        server 127.0.0.1:9001 ;
        server 198.192.0.1:9000 ;
        server 198.192.0.2:9000 ;
        server 198.192.0.3:9000 ;
    }

    location ~ \.php$ {

    fastcgi_pass fastcgiServers;
    fastcgi_index stream.app;
    fastcgi_param SCRIPT_FILENAME /var/www/htdocs$fastcgi_script_name;
    include /etc/nginx/fastcgi.conf;

    }

  
4. 总结:

三种常用模式:
Apache+mod_php5;
lightppd+spawn-fcgi;
nginx+PHP-FPM

我们可以使用到生产环境中的:

0) 如果不是server cluster的话:
可以使用以上任一种,不过有各种测试表明nginx+PHP-FPM性能优越,但是Apache+mod_php5很经典模块多,比如对.htaccess等的支持。

如果构建server cluster的话:
1) nginx作为反向代理服务器,后台多台Apache+mod_php5。
nginx处理静态文件,及对php并发请求对后台多台app server的负载均衡;

2) nginx作为反向代理器,后台多台PHP-FPM
nginx处理静态文件及将php并发请求发送到后台php-fpm来解析;


另外:关于如何更好使用nginx这个轻量级高性能的瑞士军刀,主要是如何配置nginx.conf,更多参看:
http://wiki.nginx.org/Main
另外,关于PHP支持的各种缓存等这里没有安装,感兴趣可以另行安装。


更多参考资料:
http://www.php.net/manual/en/install.unix.apache2.php
http://www.softwareprojects.com/resources/programming/t-installing-nginx-web-server-w-php-and-ssl-1474.html
http://php-fpm.org/Main_Page
http://www.softwareprojects.com/resources/programming/t-how-to-install-php-fpm-spawn-fcgi-replacement-1602.html
http://wiki.nginx.org/NginxFcgiExample
有可能以后会将PHP-FPM直接添加到PHP内核中一起进行发布
Will there be a PHP-FPM is included in the official PHP?
http://php-fpm.org/FAQ

http://bookmarks.honewatson.com/2008/04/24/multiple-fastcgi-php-servers-nginx-load-balancing/
http://www.wikivs.com/wiki/Lighttpd_vs_nginx
http://en.wikipedia.org/wiki/Reverse_proxy
http://sameerparwani.com/posts/nginx-as-a-front-end-to-apache/
http://blog.kovyrin.net/2006/04/17/typical-nginx-configurations/
http://www.yawn.it/2008/04/30/nginx-php-php-fpm-on-debian-etch-40/
http://howtoforge.org/installing-nginx-with-php5-and-mysql-support-on-ubuntu-8.10

posted @ 2010-11-25 15:31 小马歌 阅读(2174) | 评论 (0)编辑 收藏
 

10.1期间,一位朋友问我一个apache的 Rewrite规则中一个高级语法RewriteMap的用法问题。其想要实现的是这个功能,有个多用户的blog,用户访问的时候,是用三级域名访问的。比如http://cfc4n1.blog.cnxct.com,http://cfc4n2.blog.cnxct.com这种三级域名。在服务器上,是对三级域名做泛解析。每个三级域名都生成了一个静态的html主页文件。由于用户数量较多,linux ext硬盘格式上同一目录文件太多,检索文件的速度会有折扣,遂将文件打散到不同的目录下。打散方式是以用户名【三级域名中的cfc4n1,cfc4n2等】的MD5值的每隔两位作为一个目录。MD5的默认长度是32位,每隔两位分一次目录的话,那就有16级目录。每级目录的目录名是2个字符,每个字符的有16种可能【0-9a-f】,那么每级目录的目录数为256个目录,16级的话就有4096个目录。每个目录存1000个文件的话,可以存放4096000个文件,这样做,即可以把文件均匀打散到各个小目录中,同时,每个目录下的文件数又不是很多。当用户访问的时候,取目录里的用户名,计算MD5hash,做字符分割,重写到对应的目录下的文件中,如果文件不存在,则重写到生成这个文件的动态页面中。

到apache手册里找了下RewriteMap的用法

RewriteMap MapName MapType:MapSource

遂顺手在.htaccess里这么写了

查看源代码打印帮助1 RewriteMap cfc prg:/var/www/1.php 

2 RewriteRule ^([a-f0-9-]+)\.blog\.cnxct\.com ${cfc:$1} [L,PT]

然后访问一个三级域名试试。结果提示500 http 错误。到apache日志里看到如下

/var/www/.htaccess: RewriteMap not allowed here

搜了半天,不知道是什么错误,只好再次看手册,这时候,才发现rewritemap的作用域却是server config, virtual host,真汗了一下。自己没认真看手册。
改到virtual host里之后,重启apache,结果,还是http 500。再到错误日志里查个究竟。里面记录的确实(13)Permission denied: mod_rewrite: could not start RewriteMap program /var/www/1.php。呃,权限,权限。。赶紧chmod了一下。再次启动,却提示404。。。 /0a/c1/…./…html那种MD5字符串切割之后的文件找不到。但目录里确实是存在的啊。又到日志里查看,原来却是/0a/c1/…../…html\r 文件无法找到了。为什么地址后面多个\r呢?打开MapSource的脚本文件,才看到里面PHP操作流的结束字符里是“\r\n”了,去掉\r 才可以。

总结一下使用APACHE URL REwrite的RewriteMap方法要注意以下几点:

作用域-server config, virtual host,其他配置里无效。
自定义规则MapSource中流的结束符要跟操作系统符合,linux的要用“\n”,同时,切记在win平台编辑脚本传到linux上的时候,文件换行符要用linux格式的,不然,同样会出现问题。
要给apache赋予对脚本的读权限。
apache会在启动的时候,将自定义规则的脚本读取到内存中,之后,再次修改脚本时,不会立刻生效,需要重启 apache
apache 的error.log中会记录[warn] mod_rewrite: Running external rewrite maps without defining a RewriteLock is DANGEROUS!这样的错误日志,在apache2.conf【我的系统是ubuntu,其他linux在httpd.conf中】中添加RewriteLock /etc/apache2/script/cfc.lock来指定RewriteLock的文件位置。记得给apache对script目录下有读写权限。
自定义脚本的代码格式如下:

查看源代码打印帮助1 <?php 

2 while($in = trim(fgets(STDIN))) 

3         fputs(STDOUT, getfile($in)."\n"); 

4 function($str) 

5 { 

6 //函数判断文件是否存在等逻辑 

7 }

posted @ 2010-11-23 14:36 小马歌 阅读(706) | 评论 (0)编辑 收藏
 
我在迅雷的6年里,经历了许多困难。最折磨人的,是寻找人才;最惋惜的,莫过于看着优秀的人擦肩而过。今天再次创业,再次招聘,发现大家的顾虑,并没有多大变化。整理下我对这些问题的思考,我想,对大家可能有帮助。

要不要创业?

常常感到非常幸运,象我这样既不聪明,又内向的工程师,遇到了互联网。在这之前,我做梦也没想过,自己能够参与创建一家十亿美刀的公司。

互联网既然改变了我,一样也是你的机会。看看腾讯百度阿里这些百亿大佬,不难明白,互联网改变了中国。有史以来第一次,成功可以靠自己,而不是钱、资源、关系。

只有创业,你才能够真正认识互联网的伟力;只有创业,你才能够真正认识自己的潜能,你一直都有却从未展现的力量。就是是梦想和专注的力量。

创业最大的难,是未来有无限可能;最大的好,也在于此。创业最大的挑战,是在心智上;最大的敌人,是你自己。从这个意义上,创业是一个人精神上的成年礼。

要不要创业?答案其实很简单。

真正难的是:

创业,你准备好了吗?

如果你被财富传说吸引,所求的不过是一夜暴富,劝君止步。条条道路可赚钱,互联网最难。壁垒低,竞争激烈,投入周期长,死亡几率极大。

如果你被激情的生活所吸引,劝你慎重。创业不是请客吃饭,创业有乐趣和激情,更多的是汗水。我在迅雷六年,只休过两次假,一次结婚,一次爷爷去世;加班更 是 习以为常。激情来得容易,去得也快。你可以“Follow my heart”,千万不可“Follow my feeling”。

如果你享受做老板的感觉,还是去大公司做小头目的好。创业的老板地位最低,压力你要扛,员工要服侍,把机会呈献给人还会被拒。你不能害怕,善于忍耐,冲锋在前,享受在后,这哪是老板,整个一大力水手 :)

真实的创业是这样:你再没有四平八稳的生活,你的假期随时会被打断,你每天都会面临新的挑战。创业不是又一份工作,创业是100%的投入。

创业只有一个理由。你想改变自己的未来。你决定了,自己要过一种完全不同的生活。你不想一辈子打工。你想有自己的事业,你想摆脱房奴,你想财务自由。你想在年轻的时候,闯一闯。你不想在老去的时候后悔。

2004年,我在Oracle做开发,后来转做咨询;这是我曾经羡慕的生活,出门做出租,下车打飞的,半年内人胖了一圈。一天早上醒来,感觉到深深的厌 倦。这样无趣的生活,什么时候是尽头呢?10年后,不过是又一个外企经理,这不是我要的。可是我想要什么,我也不知道。我感到迷茫和无助。

我就这样去了迅雷,从北京到深圳,工资是以前的零头,生活重新开始。在创业中,我找到了答案。

怀疑是改变的开始,你的心也许早就发出了信号,你收到了吗?

创业是新事物。

成王败寇、想赢怕输、学而优则仕,几千年的传统,从小摧残我们。巨大的城市生活成本,又每每打击我们的信心。

于是,规避风险成了我们生活的重点。我们努力赚钱,买车、买房、结婚、生孩子、养老,然后,看着自己的孩子重复。不再有乐趣,不再有指望。

那么,风险在哪里呢?是赚钱少吗?是老无所养吗?

都不是。最大的风险,是你每天都在变老,你却不知道。你在世上的日子,过了一天少一天,过了一秒少一秒。比身体的老更恐怖 的,是你还在壮年的时候,心死了。你成了年轻的老头。你再也无法享受自由之乐。你的天赋消失殆尽。你看着机会流过却抓不住。你慢慢习惯抱怨、后悔、嫉妒。

创业是你的再生。创业就是把风险变成机会。

谁告诉你做螺丝钉是你的全部?

谁告诉你你无法承受风险?

谁告诉你世上没有奇迹?

创业之心,就是信心,由信心而来的决心,由决心而来的勇气,由勇气而来的破釜沉舟的行动。

趁着年轻,要及早解放它。这是第一步,也是有决定意义的一步。

那么,如何创业?是单干,和朋友一起干,还是参与初创公司?

寻人还是寻事?

今天的互联网已经发生了很大变化。

10年前的个人软件和个人站长,正在消失,以后也难再有。原因很简单,互联网普及了。大公司凶猛,小公司强悍,要在互联网丛林生存,仅靠创意和先发已经远远不够。你再没有悄无声息,闷声圈地的机会。只有足够优秀的领导者,足够优秀的团队,才是成功的根本。

如果你不怕失败,准备好再来一次,可以单干。如果你满足于偏居一隅,可以和朋友做些不大的项目。

但如果你是想财务自由,想事业突破,最好,还是参与初创公司。

该如何选择初创公司?

典型的期望是这样:创业者要强、做的事要有前途、工资嘛,最好还能比我现在高。每次听到这些,我都很感慨:天下掉下百万美刀,还正好落在你手上,就是这样吧?

创业是关于机会的事。机会,恰恰最难判断。即使是Google、腾讯、百度,起步时,谁看得到它的前途?谈到预测未来,我们得承认自己智慧有限。你算来算去,只是把自己算糊涂了。定律是:你必然算不准;准的时候,你根本没有机会。

要学会多看势,少看事。势是方向,是大市场;事是切入点,是具体需求。事不必深究,势却要多想。

比如,我看到的一个势是随着网民的急剧增长,应用将细分;工作和工作关系都将互联网化,你只要能上网,就能够工作。这就是 我理解的工作互联网。国内并没有类似美国LinkedIn、Google Docs、37Signals这样强有力的玩家。因此,这里存在创业机会。至于具体的事是什么,需要做进去才知道。

你非要说娱乐是主流,中国用户都低端,那有什么办法?这不摆明了要做网游吗?你不能靠总结别人来成功。你也不必一定要再做一家腾讯百度。提到工作互联网,你就想51Job,就不屑;其实,51Job不也价值过5亿美刀吗?如果能做起来,你难道不做?

至于工资,是个伪问题。创业好比投资。承受多大的风险,就有多大的收获。如果你总想短期套现,自然不能指望千万身家。

当然,中国生活成本高,要裸奔,99.9%的人无法承受。有鉴于此,我一般提供3套选择方案,能承受的选择高期权,有压力的选择高工资,最高工资不比大公司低。做创业公司的打工者,这也是创业的一种,只是自己要想清楚。

不过,职位越高,责任越大,待遇越低。做我的合伙人,确实要有裸奔的准备。

创业就像找LP,你不能对着神仙姐姐说:非你不娶。真正的创业者,要学会的第一件事,就是“一”根筋:你不能同时爱两个人,不能同时做两件事,不能同时有两个标准。

参与初创公司的唯一标准,就是领头人。因人成事。人在,坏事可以变好,小公司可以变大,低工资可以变高;反之亦然。

什么样的领头人呢?看人品、决心和能力,三者缺一不可。

人品:他是否诚实正直?他的团队也都是这样的人吗?他是不是一见面就忽悠你?他是不是承认,你们可能失败?放空炮、报喜不报忧,或出于伪,或出于妄。

决心:他的眼里有光彩吗?他为创业放弃了什么?他的团队投入吗?这世上最不靠谱的事,就是告诉你兼职也可以成功。

能力:他有过成功的经历吗?他了解互联网吗?他依赖的是自己还是资源和钱?1年过亿用户,2年过亿收入,3年打造一个平台,好吧,你在第几层梦境?

在创业中,人是你唯一可以依赖的。

如果你初出茅庐,尤其需要好的师傅。他会帮你认清自己,少走弯路。他自己就是你最大的表率。

你找到他了吗?如果是,恭喜你,大胆的行动吧!

最后说一下

创业的隐形价值

我们喜欢计算。其实数字最会骗人。因为你能够计算的,是显性价值,而真正的价值,是无法计算的。创业的隐性价值,远超过前者。

做一个创业者,就像鹰的重生,痛苦过后,你将长出利爪新毛。你的人将完全不同。

创业者眼里有光彩。他们不相信不可能,在他们眼里,问题就是机会。他们不怕失败,失败了又怎样?成功只需要一次机会。当你准备好,机会永远都有。

创业者是胜利者。创业者有胜利的气场。你可以不认同他说的,可以指责他做的,唯独不能藐视他。当他冲锋,你要当心。

创业者是领导者。他们敢于负责。他们直面最艰难的现实,更勇于挑战现实。他们不逃避,不拖延,不推卸。在他们心里,比权力更重要的,是责任。

创业者突破自己的瓶颈。他们永远不满足于过去的成功。他们在战斗中学习战斗。他们深刻的认识到,最大的敌人是自己,他们学会放权,学会专注,学会克制。

创业者要抗拒诱惑。创业者被大公司挖是常有的事。你以前挖空心思想进的公司,现在出你想象不到的价格挖你?这种感觉,就像演电影。

一年创业,胜过三年打工。

想明白了,就知道,创业,其实很简单。

那么,你明白了吗?你准备好了吗?

创业小测验

1、你相信自己会做成不可能的事吗?

2、你敢于面对创业失败吗?

3、你相信即使创业失败,你也会身价倍增吗?

4、你愿意为未来忍受大幅度的降薪吗?

5、你每天能工作超过13个小时吗?

6、你能够不计较虚名,从程序员开始做起吗?

posted @ 2010-11-22 14:02 小马歌 阅读(329) | 评论 (0)编辑 收藏
 
一个人不管有多聪明,多能干,背景条件有多好,如果不懂得如何去做人、做事,那么他最终的结局肯定是失败。做人做事是一门艺术,更是一门学问。很多人之所以一辈子都碌碌无为,那是因为他活了一辈子都没有弄明白该怎样去做人做事。 ­

    每一个人生活在现实社会中,都渴望着成功,而且很多有志之士为了心中的梦想,付出了很多,然而得到的却很少,这个问题不能不引起人们的深思:你不能说他们不够努力,不够勤劳,可为什么偏偏落得个一事无成的结局呢?这值得我们每一个人去认真思考。 ­

    从表面上看,做人做事似乎很简单,有谁不会呢?其实不然,比如说你当一名教师,你的主观愿望是当好教师,但事实上却不受学生欢迎;你去做生意,你的主观愿望是赚大钱,可偏偏就赔了本。抛开这些表层现象,去发掘问题的症结,你就会发现做人做事的确是一门很难掌握的学问。 ­

    可以这么说,做人做事是一门涉及现实生活中各个方面的学问,单从任何一个方面入手研究,都不可能窥其全貌。要掌握这门学问,抓住其本质,就必须对现实生活加以提炼总结,得出一些具有普遍意义的规律来,人们才能有章可循,而不至于迷然无绪。 ­

    读懂一个字诀,受用你一生! ­

    一、社会交往字诀 ­

    ——教你建功立业 ­

    (一)"谦"字诀 ­

    处世唯"谦"字了得,若一味狂妄自负、骄傲自大,只会失去处世的根本,落得个孤苦伶仃、千夫所指的骂名下场。 ­

    1、不可目中无人 ­

    2、得意不要忘形 ­

    3、有本事不必自夸 ­

    4、请教不择人 ­

    (二)"淡"字诀 ­

    为人处世,交朋待友,对势利纷华,似乎不必太过于苛求,当以"淡"字当头。看淡些,看开些,人生也就豁然开朗,有滋有味了。 ­

    正如"平平淡淡才是真"。 ­

    1、君子之交淡如水 ­

    2、淡看人生,善待生命 ­

    3、淡泊明志,莫为名利遮望眼 ­

    4、减少心欲,满足心灵 ­

    (三)"俭"字诀 ­

    不懂得"俭"字的人,不知道如何成功,任何成功的事业都在于点滴的积累;不懂得"俭"字的人,只会丧失成功,过分的骄奢多败人品质。 ­

    "俭以养德",为人做事之良训。 ­

    1、从节省生活费开始 ­

    2、"穷大方"不可取 ­

    3、谨防变态的节俭:吝啬 ­

    4、欲路勿染,俭以养德 ­

    (四)"自"字诀 ­

    做一个有个性的人,给自己一点自信!成功的道路靠自己闯,美好的前途来自于自强自立,不屈服于任何权威,用自我的努力找到属于你的自尊。 ­

    男儿立世,自己拍板! ­

    1、自强自立,与成功有约 ­

    2、独品人生百态 ­

    3、用自我来挑战权威 ­

    4、自信——任你东南西北风 ­

    (五)"礼"字诀 ­

    生在礼仪之邦,做一个彬彬有礼之人。有礼之人会做人,有人缘,多朋友。有礼之人会做事,注重形象,有教养,不树敌,成功路上事事顺。 ­

    1、以礼待人 ­

    2、彬彬有礼,礼多人不怪 ­

    3、注重礼仪着装,给人良好印象 ­

    (六)"正"字诀 ­

    做一个正直的人,做一个人格健全完善的人,受人崇敬。做一个自私的人,做欺心的事,疾贤防能,与成功无缘。 ­

    1、己所不欲,勿施于人 ­

    2、嫉妒乃方正之人之大忌 ­

    3、不做欺心事,本身是一种愉悦 ­

    二、形象塑造字诀 ­

    ——教你品格高雅 ­

    (七)"志"字诀 ­

    给自己一根足够长的杠杆,希望转动地球。 ­

    给自己的人生立个志愿,树个目标,树个偶像,脚踏实地,成功的意识需要培养,先立志,再与成功约会。 ­

    1、度德量力,以志立身 ­

    2、先立志,有志就有希望 ­

    3、培养成功意识:立志为王 ­

    4、树立偶像,改变自己 ­

    (八)"时"字诀 ­

    做人要惜时,做事要守时。塑造自己的形象,现代人离不开时间观念。合理安排自己的时间,有效利用自己的时间,守时、惜时、不拖延。 ­

    切记:时间就是金钱。 ­

    1、一秒值万金 ­

    2、别漠视业余时间 ­

    3、浪费他人时间,等于谋财害命 ­

    4、按重要性办事,更能有效利用时间 ­

    (九)"勤"字诀 ­

    多一些努力,便多一些成功的机会。无数事实证明:成功的最短途径是勤奋。不要光耍嘴皮子,不要好逸恶劳,勤字当头,苍天不负有心人,天道酬勤! ­

    1、成功的最短途径:勤奋 ­

    2、多一些努力,多一些机会 ­

    3、勤于行动,胜于勤说 ­

    (十)"实"字诀 ­

    踏踏实实做人,实实在在办事。任何一个双手插在口袋里的人,都爬不上成功的梯子。给人留下一个实在的形象,给自己的成功增添一份夯实的基础,从实际出发,对自己负责。 ­

    1、敬业,实干家的成功保障 ­

    2、把每一份工作都做好 ­

    3、双手插在口袋里的人,爬不上成功的梯子 ­

    (十一)"专"字诀 ­

    有专才有恒,有恒才有我。 ­

    你生活在一个知识大爆炸的时代,如果你是一个天才,不专心就成了你的不幸;如果你资质平凡,请不要悲观,只要你下定决心一辈子做好一件事,你就能成功。年轻人,千万别给人留下一个朝三暮四的形象。 ­

    1、把所有的鸡蛋放入一个篮子 ­

    2、多才多艺,莫如练就"独门暗器" ­

    3、专一,让劣势变成优势 ­

    (十二)"慎"字诀 ­

    人生漫长,又短暂,关键的就几步。人性丛林,职场事业,利益多多、诱惑多多。老成不怕多,凡事应多三思,不怕一万,就怕万一。一旦伸错手,入错行,做错事,于名誉,于事业,于形象皆有不救之危。 ­

    "慎"之! ­

    1、千万别入错行 ­

    2、想好了你再"跳" ­

    3、不要草率行事 ­

    三、自我提升字诀 ­

    ——教你拯救命运 ­

    (十三)"硬"字诀 ­

    做人难,做事难,面对千难万阻,要提升自我,不来点"硬"的怎么行?如果事有勉强,应该敢于说"不";如果是正当利益,则应当仁不让;甚至,有时还得来点霸王硬上弓,要有"脸皮厚"的时候,也要有"头皮硬"的时候。 ­

    1、拒绝是一门艺术 ­

    2、该我的,就不要客气 ­

    3、怒发冲冠之功 ­

    4、厚脸皮做人,硬头皮做事 ­

    (十四)"小"字诀 ­

    一家海鲜连锁餐厅的老板很可能当初是水产市场练滩儿的,而一家皮鞋连锁店的老板当初可能是擦鞋的。欲做大事,赚大钱,必先做小事,赚小钱,放下架子,舍得小利。从细微处入手,先扫一屋,再扫天下! ­

    1、一屋不扫,何以扫天下 ­

    2、先做小事,赚小钱 ­

    3、一枚钉子改变一个人的一生 ­

    (十五)"锐"字诀 ­

    小小麻雀,飞飞跳跳、争分夺秒,不停地寻觅食物。人生亦如此,面对残酷竞争,惟有锐意进取,做一个好先锋,把下一个进球当目标,敢于冒险,敢于闯荡,守株待兔的事情毕竟很渺茫。 ­

    1、不以现有成就为满足 ­

    2、锐意追求,绝不退缩 ­

    3、锐气不可抛,成功是迟早 ­

    (十六)"创"字诀 ­

    提升自我,就要有胆有识去超越自我。何谓超越?超越就是吃螃蟹,就是创新。同时创新就意味着冒险,所谓富贵险中求。想人家想不到的,做别人不敢做的,敢为天下先,在于思维的转换。 ­

    1、敢为天下先 ­

    2、打破规则的创意 ­

    3、人弃我取也能创奇迹 ­

    4、逆向思维的攻守之道 ­

    (十七)"通"字诀 ­

    穷则思变,变则通。识时务者为俊杰,通机变者为英豪。通往成功的道路不是一条,又何必在一棵树上吊死呢?抓住成功的关键,东方不亮西方亮,不管它是黑猫白猫,重要的是它能否逮"耗子"。 ­

    1、巧妙地以变应变 ­

    2、条条大道通罗马 ­
 
    3、成功在于通,有通才有赢 ­

    (十八)"言"字诀 ­

    把赞扬送给别人,就像把食物施舍给饥饿的乞丐一样。古往今来,不知有多少人,凭着三寸不烂之舌,改变了自己平凡的命运。说话幽默,找共同语言……一个"言"字,一生受用。 ­

    1、投其所好找话题 ­

    2、恭维是最好的"润滑剂" ­

    3、成功人生,幽默机智 ­

    4、"流行语"为你添姿着色 ­

    四、人际互动字诀 ­

    ——教你赢得朋友 ­

    (十九)"宽"字诀 ­

    人际互动,应着眼于未来,不念旧恶。原谅别人,是对待自己的最好方式——为你的仇敌而怒火中烧,烧伤的是你自己。做人做事,心胸不可太狭隘。海纳百川,靠一棵宽容的心! ­

    1、宽恕你的敌人 ­

    2、宽容做人,宽容成事 ­

    3、乐于忘记,不念旧恶 ­

    (二十)"和"字诀 ­

    在人海中,如果我们不想孤立,那么就学会如何与人相处吧!林子大了,什么鸟都有,不要求你喜欢所有的人,但同时世上也没有什么最牛的人。 ­

    和为贵嘛,就要互相留台阶,大家给面子。 ­

    1、为他人着想,为自己铺路 ­

    2、你给别人留面子,别人给你做好事 ­

    3、夫妻之道,亦和亦智 ­

    (二十一)"信"字诀 ­

    有多少人信任你,你就拥有多少次成功的机会,"信"是什么东西?信是一种人格的力量,是超越金钱的友情,是了解、是欣赏、是覆水,具有不可逆转性。所以,言必行,行必果,能帮的忙则帮,但不可轻易许诺! ­

    1、能帮则帮,不轻易许诺 ­

    2、言而有信,做人讲原则 ­

    3、做事先做人,做人先取信 ­

    4、信誉基石,生死友情 ­

    (二十二)"帮"字诀 ­

    "好风凭借力,送我上青天"。人际交往,互利互惠。帮助别人,就是在为自己的人情信用卡储蓄,特别是在人患难之际施于援手,救落难英雄于困顿。真心助人,其回报不言而喻。 ­

    1、助人发财,自己沾光 ­

    2、好风凭借力,借梯能登天 ­

    3、掌握时机,拉人一把 ­

    (二十三)"敬"字诀 ­

    人要面子树要皮。人存在于社会上,要扮演各种各样角色,特别是在互相的交往中,需要一定的尊严来支撑,这是人性的弱点。明白了这点,才能体会到"敬"字的必要性。 ­

    1、为尊者讳,为上司讳 ­

    2、在失意者面前不谈你的得意 ­

    3、尊敬对方的"闪光点" ­

    (二十四)"交"字诀 ­

    人情冷暖、世态炎凉,平常朋友平常过。交朋接友,不可急功近利,友情投资,宜走长线,拜拜冷庙,烧烧冷灶,平时多烧香,哪怕是只言片语的问候,亦是交友之道。 ­

    1、闲时多烧香,急时有人帮 ­

    2、友情投资,宜走长线 ­

    3、拜冷庙,烧冷灶,交落难英雄 ­

    五、解困渡厄字诀 ­

    ——教你轻松快乐 ­

    (二十五)"坚"字诀 ­

    面对挫折与困难,铭记丘吉尔的名言:"永远,永远,永远不要放弃!"其实世界上并没有什么幸运的事,就是有,也是坚持的结果。为了最后的胜利,应以坚毅不拔之志,面对种种暂时之屈辱,执着追求,不到黄河心不死! ­

    1、厚积薄发,耐得寂寞 ­

    2、谁笑到最后,谁笑得最甜 ­

    3、执着追求,永不放弃 ­

    4、不到黄河心不死 ­

    (二十六)"谋"字诀 ­

    做人有困惑,做事有困境,面对"山重水复"之关卡,光有坚强的毅志不行,硬闯也不行。解决难题靠的是脑袋,脑袋产生思考,让思考发威,在出人意料之处轻松解决问题。 ­

    1、巧妇能为无米之炊 ­

    2、从"山重水复"到"柳暗花明" ­

    3、思考的威力 ­

    (二十七)"屈"字诀 ­

    要摆脱人与事的困境,就难免要求人,求人就难免要低三下四,但着眼于未来的成功,即使像蟑螂一样的生活也应在所不惜,风水毕竟轮流转。放下架子,该屈就屈,能屈能伸,以屈为伸方为英雄! ­

    1、像蟑螂一样生活 ­

    2、放下身段,前方是大道 ­

    3、你敬我一尺,我敬你一丈 ­

    4、低人一级"屈"不死人 ­

    (二十八)"静"字诀 ­

    "不在沉默中爆发,就在沉默中灭亡!"凡遇大事需静气,平心静气是一种境界,一种气度,一种修养。冷静之中的决定往往是摆脱困境的最佳方案,同时冷静也是一种智慧,以静待变,乱中取胜! ­

    1、把冷板凳坐成经理椅 ­

    2、心宁智生,智生事成 ­

    3、沉着冷静心自怡 ­

    4、沉得住气方为人杰 ­

    (二十九)"乐"字诀 ­

    世上没有绝对幸福的人,只有不肯快乐的心。人生苦短,与其事事张弓拔弩,不如"幽它一默"。记住,成功是从微笑开始的,人生不如意事常八九,乐观点,自己营造快乐,学会轻松解决难题。 ­

    1、成功从微笑开始 ­

    2、学会营造快乐 ­

    3、学会轻松愉快地解决难题 ­

    4、世上没有绝对幸福的人,只有不肯快乐的心 ­

    (三十)"靠"字诀 ­

    人生不等不靠,没错,天上不会掉馅饼,守株待兔饿死人,但一点不靠也不行,亲戚朋友、同学、老乡,这是一种"人力资源",谁人没个三灾六难,能靠则靠,靠不上创造条件也要靠! ­

    1、让朋友成为你的靠山 ­

    2、出门落难靠老乡 ­

    3、亲戚亲戚,越走越亲 ­

    4、恰同学少年,该靠靠一把 ­

    六、不败人生字诀 ­

    ——教你人生辉煌 ­

    (三十一)"愚"字诀 ­

    学学猫头鹰,睁一只眼,闭一只眼。你说我糊涂,其实我不傻!只是世事多变幻,创业难,败家快,人说水至清则无鱼,人至察则无徒。其实是,明哲保身,大智者往往大愚,聪明者多,能过"愚"字关鲜矣! ­

    1、糊涂人聪明一世 ­

    2、不要以为自己比别人聪明 ­

    3、处事不要太认真 ­

    4、谁是英雄? ­

    (三十二)"忍"字诀 ­

    真的英雄,何必气短,善始善终,方为不败!忍能保身,忍能成事,忍是大智,大勇,更是大福!忍是厚,忍是黑,忍小人,忍豪强,忍天下难忍之事,不做性情中人,成常人难成之事。 ­

    1、忍是大智大勇大福 ­

    2、不做性情中人 ­

    3、不败人生,忍者无敌 ­

    (三十三)"退"字诀 ­

    久历江湖,练达人情之人都守一个"退"字。退是一种谋略,退是一种交换,更是一种维系生存的手段。哲人说的好,"不要把痰吐在井里,哪天你口渴的时侯,也要来井边喝水的。" ­

    1、用心计较般般错,退步思量事事顺 ­

    2、拒绝妥协,就是拒绝成功 ­

    3、惹不起,躲得起 ­

    (三十四)"圆"字诀 ­

    方圆做人,八面玲珑;圆满做事,事事顺心。人心叵测,凡事最好留一手,有闲时,可研究一下"模糊哲学",人生这套马车,如若安上方方正正的轮子,你没听说过,我也没听说过,寸步难行嘛! ­

    1、方圆做人,圆满做事 ­

    2、做老二,不要做老大 ­

    3、人情练达即文章,处世圆通慎言语 ­

    (三十五)"危"字诀 ­

    "豪华尽出成功后,逸乐安知与祸双?"历史教训如此,平头百姓亦如此。居家过日,工作职场等都逃不过一个"危"字,人无远虑,必有近忧。 ­

    1、远虑在先,近处无危 ­

    2、郭子仪屏退侍女免祸患 ­

    3、上山下乡当农民——范蠡富贵终身 ­

    (三十六)"装"字诀 ­

    人生在世一台戏,你方唱罢我上场,不管你会不会演,就看你会不会装。充英雄容易,扮弱者难。俗话说得好,枪打出头鸟,不怕贼偷就怕贼惦记着,当你还不具备实力时,请把你过剩的才华藏起来! ­

    1、故意示弱有好处 ­

    2、用"拟态"和"保护色" ­

    3、成功需要诈死与佯败
posted @ 2010-11-12 10:44 小马歌 阅读(186) | 评论 (0)编辑 收藏
 
29岁的刘刚与44岁的王旭光着膀子在出租屋里翻唱歌曲《春天里》,随后红遍网络。11月7日,九届湖南省委常委中心组第二十九次集中学习会上,省委书记周强说,“每看一次(《春天里》的视频)都感动得热泪盈眶”。(11月11日《潇湘晨报》)

  民工版《春天里》是一首值得用心聆听的歌,是一首值得反复吟唱的歌。《春天里》之所以能打动人,靠的不是歌者的技巧,而是歌者心灵深处喷发的厚重理想、涌动的茁壮力量。这种底层人群的理想,发自心灵的力量,让我们心为之颤抖,泪为之纵横。

  此刻,让我们抛开一切世俗的眼光。任何关于值不值得、快乐悲伤的讨论,都是对《春天里》的亵渎。我们只需要用心去听,去感受理想的力量,在感受中共鸣,在共鸣中放飞自己的理想。

  正是在这首歌里,我们明白了理想并不是一部分人的专利。在很多时候,我们会讥笑母鸡的理想只是一把米。其实在说这句话的时候,我们已经把自己当成了母鸡。每一个人的理想都值得尊重,即便最底层的人也有自己的理想,他们在财富在知识拥有上的弱小,并不限制他们在理想在内心上的强大。仔细聆听这首歌,你就会知道,为什么有那么多人背井离乡,在城市冷清的街角仰视陌生的月光;你就会明白,为什么有那么多人离妻别子,在城市的集装箱里泛起思念的泪光;你就会懂得,人生最可贵的是什么,最值得珍惜的是什么……

  是的,这只是底层人的理想,让人觉得有点傻、有点痴、有点沉重。为了理想,他们身体漂泊,心灵也在流浪。他们并不奢求别人的理解,并不乞求别人的同情,甚至也不渴望城市的包容,他们只是坚定地朝前走,在艰难跋涉中,他们也有迷茫,然而在短暂迷茫后,他们依然选择执着前行。这一切,只是因为他们有理想,他们是歌者,行者,更是理想者。

  不要去怀疑他们的付出值不值得,请永远对理想保持信仰。尽管对于许多人来说,漂泊与付出可能只是画圆圈,许多人奔其一生,依然老无所依。也不要去怀疑他们的快乐,世界上最大的快乐,莫过于活在理想里。因为有了理想,一切付出就有了意义;因为理想的距离,在追逐理想的路上,便有了更多的人生风景。

  打开视频,戴上耳机。此刻,我们惟一要做的,就是仔细聆听,聆听这首心灵的歌,理想者的歌。如果他们真的让我们感动了,那就给他们一把真正的吉它,让他们不至于在城市“老无所依”,不至于“没有24小时热水的家”,让他们永远留在“春天里”。

  歌为理想而唱,为一切有理想的人而唱,为一切尊重理想的人而唱。


附视频地址:http://www.tianya.cn/techforum/content/665/1/139014.shtml

posted @ 2010-11-12 09:19 小马歌 阅读(249) | 评论 (0)编辑 收藏
 
一直有这么个想法,列一下我个人认为在学习和使用Java过程中可以推荐一读的书籍,给初学者或者想深入的朋友一些建议,帮助成长。推荐的的都是我自己读过,也会推荐一些朋友读过并且口碑不错的书籍。

一、基础类
1、《Thinking in java》,入门第一位是建立正确的概念。
2、《Core Java》,我没系统读过,这本书更贴近实践,更多API的介绍,同样,更新也更频繁。

二、进阶类
1、《Effective Java》,在熟悉语法、API之后,你需要知道最佳实践和陷阱,没有比这本更好的。
2、《Java Puzzlers》,通过谜题介绍一些你可能没有注意到的边角料,作为趣味读物也不错
3、《深入Java虚拟机》,翻译一般,但不可不读,最好结合最新的JVM规范来读。

三、特定领域
1、网络编程:
(1)
O'Reilly的《Java nio》,很多人都推荐,我个人觉的一般,基本上只是个API更详细的说明文档,O'reilly的java系列很多都是这样。
(2)我更推荐这本《Fundamental networking in java》,由浅入深教你怎么做java网络编程,并且介绍很多背景知识,甚至介绍了各种最佳实践、网络编程模型以及Java socket在不同平台之间的差异等等。

2、并发编程:
(1)《Java Concurrency in Practic》,并发领域必读经典。
(2)《Java并发编程:设计原则与模式》,同样是Doug lea的作品。
(3) 《java threads》,入门读物。

3、web编程,这块我许久未接触了,就不推荐了,有兴趣的朋友可以补充下。

四、模式与设计

1、《设计模式》,GOF的经典。
2、《设计模式精解》,应该有最新版,个人认为更适合入门。
3、《Head first设计模式》,更轻松的入门读物。
4、《企业应用架构模式》
5、《分析模式——可复用对象模型》
6、《面向模式的软件体系结构》,国内貌似翻译了3卷,绝对经典,可惜翻译较差。
7、《重构——改善既有代码设计》,想写好代码必读。
8、《重构与模式》

五、方法论
1、《敏捷软件开发》
2、《测试驱动开发》,你不一定要TDD,但是你一定要学会做单元测试。
3、《Agile Java》,也可以作为java入门读物。
4、《快速软件开发》
5、《面向对象分析与设计》,OO设计必读。
6、《Unix编程艺术》,打开你的眼界。

六、Java之外

1、《unix网络编程》,学习网络编程必读书。
2、《C++网络编程》上下两卷,介绍ACE的,但是其中对各种模式运用的介绍非常值的一读。
3、《Joel说软件》,编程文化
4、《人月神话》、《人件》
5、《卓有成效的程序员》,给我很大启发的一本书。
6、《程序员修炼之道》
7、《计算机程序的构造与解释》,必读
8、《算法导论》,可以作为参考书
9、《深入理解计算机系统》
10、《编译原理》龙书,最新版用java解释,我没有读完,顺便提下。
posted @ 2010-11-11 17:13 小马歌 阅读(177) | 评论 (0)编辑 收藏
 
前段时间帮同学做了网站,最后发现流量不怎么好,可能当时写程序的时候也没有注意到一些网页的细节问题,在网上看看了下seo方面的东西,
最近发现在效果不错。分享给大家.
    SEO中文名:搜索引擎最佳化(Search Engine Optimization),又称为搜索引擎优化,为近年来较为流行的网络营销方式,主要的目的是增加特定关键字的曝光率以增加网站的能见度,进而增加销售的机会。
    SEO的主要工作是通过了解各类搜索引擎如何抓取互联网页面、如何进行索引以及如何确定其对某一特定关键词的搜索结果排名等技术,即是遵循搜索引擎全面而理论的机制,对网站结构、网页文字语言和站点间的互动外交策略等进行合理规划部署来对网页进行相关的优化,使其提高搜索引擎排名,从而提高网站访问量,最终提升网站的销售能力或宣传能力的技术。
  做好seo,先要明白几个相关的术语。
  PR值:PR值全称为PageRank(网页级别), PageRank是Google衡量网站页面的重性以及Google排名的一个重要指标(PR值只对Google起作用),测量值范围为从1至10分别表示某网站页面的重要性。个人认为个人站点做到大于4等于4就已经很不错的了。网站查询:http://pr.chinaz.com/
   SEO收录和外链
    通过site查询网站被收录情况,做好相关工作,百度通过domain命令,谷歌通过link命令。个人认为使用谷歌管理员工具查询更准。谷歌为了避免透露   网站外部链接、恶性竞争,把很多外链都屏蔽了!这样做的目的也是为了保护网站的隐私
 白帽:保证用户体验的同时,灵活的运用搜索引擎当中的一些技术规则对网站的结构、文字、权重以及外部链接做出合理部署安排,使用符合主流搜索引擎发行方针规定的seo优化方法。一般有1.结构优化。2.关键词优化。3.外部链接优化。4.内部连接优化。
   黑帽:注重的是短期内的利益,通过作弊手法获得很大的利益.1.伪装.2.关键词堆积.3.欺骗性重定向.4.伪造流量.4.连接工厂,特别是好多网站被黑链控制着,大家在百度一下黑链,可以发现好多卖这方面的。在这里我曾经看过好多政府网站都被挂过。】
   标题title,这个是非常重要的,不要太长,准确规范,主题明确,简明精练,最好在20个字内搞定.主关键词+长尾关键词_栏目名称_公司名称,公司名称可以换成什么**网,大家有看看sina网,我觉的做的很好。
   关键词:keywords,搜索引擎的搜索框中输入的任何文字,也就是您命令搜索引擎寻找的东西.这个要突出中心,特别是主页,可以把产品关键词语写在里面,用,隔开,也不要太多,10个左右,个人感觉。
   描述 description以简洁的语句概括当前页面的主要内容,一定要涵盖主要关键词最好能出现一到两次.
   网页结构优化和内链建设:
   1、减少目录层次
网站扁平化是网站结构优化的第一步。搜索引擎蜘蛛和浏览者都不希望他所需要的内容被隐藏的很深,需要经过多次往返寻找才能到达。
建议:大型网站,目录结构控制在3~4以下
           a.中型网站,目录严格控制在3以下
           b.小型网站,目录严格控制在2以下
    2 、严格控制动态网页的参数个数
在google已公布的资料中,Google明确指出动态参数小于3的动态网页,蜘蛛可以顺利抓取,达到3个参数的页面,蜘蛛将有选择的进入,而超过3~4个参数的动态页面,Google将基本不予理睬。
a、防止蜘蛛被死循环套牢。
b、参数越多,对应的动态页越多,可能超过蜘蛛的荷载。
c、参数多,则参数失效的几率越大。
d、参数多的站点存在更大的漏洞风险
    采用CSS+DIV进行网页重构
   1.表现和内容相分离
 将设计部分剥离出来放在一个独立样式文件中,HTML文件中只存放文本信息。
    2.提高搜索引擎对网页的索引效率
 用只包含结构化内容的HTML代替嵌套的标签,搜索引擎将更有效地搜索到你的网页内容,并可能给你一个较高的评价。
    3.提高页面浏览速度
对于同一个页面视觉效果,采用CSS+DIV重构的页面容量要比TABLE编码的页面文件容量小得多,前者一般只有后者的1/2大小。
    4.易于维护和改版
你只要简单的修改CSS文件就可以重新设计整个网站的页面。  
   内容
总结:
       1.与网站主题相关的内容。
       2.独特的内容,原创内容。
       3.页面内容少用flash,尽量不要用iframe或者js渲染。
       4.图片,还有链接alt , title加上。
       5.页面之间链接伪静态。尽量UrlRewriter。
       6.保证网站的更新东西,把爬虫喂饱。
       7.好的网站做友情链接。不要以被K过站的,还有违法的做链接。
       8.最好让你的网页有别的网站转载,适当可以炒作一下。
比如大家喜欢上的javaeye,大家搜索java很多东西都会被搜索到这个网站上。
做好以上几点,提高PR值,循环持进,任重道远

    SEO的将来:

   1、慢慢摸索每个网站搜索特性。
   2.想学好就不太容易。有很多人都会碰到这样的疑问,关于排名的因素我知道已经很多了,但自己操作起来往往达不到理想的要求。
   3.细节决定一切。SEO想做好,靠的不是众多理论知识的熏陶,而是日常工作当中点点滴滴的细节的积累。

posted @ 2010-11-11 17:07 小马歌 阅读(219) | 评论 (0)编辑 收藏
仅列出标题
共95页: First 上一页 57 58 59 60 61 62 63 64 65 下一页 Last