生產環境(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 小馬歌 閱讀(406) | 評論 (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 小馬歌 閱讀(375) | 評論 (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 小馬歌 閱讀(41788) | 評論 (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 小馬歌 閱讀(2184) | 評論 (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 小馬歌 閱讀(709) | 評論 (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 小馬歌 閱讀(345) | 評論 (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 小馬歌 閱讀(196) | 評論 (0)編輯 收藏
           
          29歲的劉剛與44歲的王旭光著膀子在出租屋里翻唱歌曲《春天里》,隨后紅遍網絡。11月7日,九屆湖南省委常委中心組第二十九次集中學習會上,省委書記周強說,“每看一次(《春天里》的視頻)都感動得熱淚盈眶”。(11月11日《瀟湘晨報》)

            民工版《春天里》是一首值得用心聆聽的歌,是一首值得反復吟唱的歌。《春天里》之所以能打動人,靠的不是歌者的技巧,而是歌者心靈深處噴發的厚重理想、涌動的茁壯力量。這種底層人群的理想,發自心靈的力量,讓我們心為之顫抖,淚為之縱橫。

            此刻,讓我們拋開一切世俗的眼光。任何關于值不值得、快樂悲傷的討論,都是對《春天里》的褻瀆。我們只需要用心去聽,去感受理想的力量,在感受中共鳴,在共鳴中放飛自己的理想。

            正是在這首歌里,我們明白了理想并不是一部分人的專利。在很多時候,我們會譏笑母雞的理想只是一把米。其實在說這句話的時候,我們已經把自己當成了母雞。每一個人的理想都值得尊重,即便最底層的人也有自己的理想,他們在財富在知識擁有上的弱小,并不限制他們在理想在內心上的強大。仔細聆聽這首歌,你就會知道,為什么有那么多人背井離鄉,在城市冷清的街角仰視陌生的月光;你就會明白,為什么有那么多人離妻別子,在城市的集裝箱里泛起思念的淚光;你就會懂得,人生最可貴的是什么,最值得珍惜的是什么……

            是的,這只是底層人的理想,讓人覺得有點傻、有點癡、有點沉重。為了理想,他們身體漂泊,心靈也在流浪。他們并不奢求別人的理解,并不乞求別人的同情,甚至也不渴望城市的包容,他們只是堅定地朝前走,在艱難跋涉中,他們也有迷茫,然而在短暫迷茫后,他們依然選擇執著前行。這一切,只是因為他們有理想,他們是歌者,行者,更是理想者。

            不要去懷疑他們的付出值不值得,請永遠對理想保持信仰。盡管對于許多人來說,漂泊與付出可能只是畫圓圈,許多人奔其一生,依然老無所依。也不要去懷疑他們的快樂,世界上最大的快樂,莫過于活在理想里。因為有了理想,一切付出就有了意義;因為理想的距離,在追逐理想的路上,便有了更多的人生風景。

            打開視頻,戴上耳機。此刻,我們惟一要做的,就是仔細聆聽,聆聽這首心靈的歌,理想者的歌。如果他們真的讓我們感動了,那就給他們一把真正的吉它,讓他們不至于在城市“老無所依”,不至于“沒有24小時熱水的家”,讓他們永遠留在“春天里”。

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


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

          posted @ 2010-11-12 09:19 小馬歌 閱讀(262) | 評論 (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 小馬歌 閱讀(179) | 評論 (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 小馬歌 閱讀(227) | 評論 (0)編輯 收藏
          僅列出標題
          共95頁: First 上一頁 57 58 59 60 61 62 63 64 65 下一頁 Last 
           
          主站蜘蛛池模板: 光山县| 广平县| 呼图壁县| 泾源县| 井陉县| 华坪县| 昌图县| 内乡县| 嘉义县| 迁西县| 宁陵县| 武穴市| 黄冈市| 湖南省| 吉隆县| 兴安县| 屏南县| 沭阳县| 孝义市| 汽车| 红河县| 贺州市| 繁峙县| 德令哈市| 犍为县| 阳泉市| 武定县| 诸暨市| 隆德县| 阿尔山市| 台中县| 富阳市| 张家界市| 玛纳斯县| 旌德县| 柳河县| 五大连池市| 吉木萨尔县| 遂平县| 宾阳县| 电白县|