Nginx: compression level 比較

nginx compress level test

在不考慮CPU使用率的條件下 4-6 是較好的選擇
在CPU吃緊的環境下開1 就有很明顯的效果
做為參考 :
aws cloudfront 設定為 6(gzip default)
akamai blog

Linux:squid 日誌格式說明和設置

常見設定方法

vim /etc/squid/squid.conf

logformat squid_custom_log %ts%03tu %>a %la %tr “%{Referer}>h” %rm “%ru” %Ss %>Hs %h”
access_log daemon:/var/logs/squid/access.log squid_custom_log

參數說明:

%ts    時間戳:請求完成時間,以Unix時間來記錄的
%tu    毫秒級(milliseconds)
%tl     本地時間Local time. Optional strftime format argument default %d/%b/%Y:%H:%M:% S %z
%>a   客戶端地址:該域包含客戶端的IP地址,或者是主機名.
%la     服務端(本機)IP Local IP address (http_port)
%tr     響應時間:對HTTP響應來說,該域表明squid花了多少時間來處理請求。時間是毫秒級的(milliseconds)
%{Referer}>h   用戶來源
%rm    請求方式:該域包含請求方式.
%ru    URI:該域包含來自客戶端請求的URI。
%>Hs(squid 2.7為%Hs)   HTTP響應狀態碼(例如200,304,404等)
%h  用戶代理,簡稱 UA,它是一個特殊字符串頭,使得服務器能夠識別客戶使用的操作系統及版本、CPU 類型、瀏覽器及版本、瀏覽器渲染引擎、瀏覽器語言、瀏覽器插件等

%Ss 說明

TCP_HIT
Squid發現請求資源的貌似新鮮的拷貝,並將其立即發送到客戶端.

TCP_MISS
Squid沒有請求資源的cache拷貝.

TCP_REFERSH_HIT
Squid發現請求資源的貌似陳舊的拷貝,並發送確認請求到原始服務器.原始服務器返回304(未修改)響應,指示squid的拷貝仍舊是新鮮的.

TCP_REF_FAIL_HIT
Squid發現請求資源的貌似陳舊的拷貝,並發送確認請求到原始服務器.然而,原始服務器響應失敗,或者返回的響應Squid不能理解.在此情形下,squid發送現有cache拷貝(很可能是陳舊的)到客戶端.

TCP_REFRESH_MISS
Squid發現請求資源的貌似陳舊的拷貝,並發送確認請求到原始服務器.原始服務器響應新的內容,指示這個cache拷貝確實是陳舊的.

TCP_CLIENT_REFRESH_MISS
Squid發現了請求資源的拷貝,但客戶端的請求包含了Cache-Control: no-cache指令.Squid轉發客戶端的請求到原始服務器,強迫cache確認.

TCP_IMS_HIT
客戶端發送確認請求,Squid發現更近來的、貌似新鮮的請求資源的拷貝.Squid發送更新的內容到客戶端,而不聯繫原始服務器.

TCP_SWAPFAIL_MISS
Squid發現請求資源的有效拷貝,但從磁盤裝載它失敗.這時squid發送請求到原始服務器,就如同這是個cache丟失一樣.

TCP_NEGATIVE_HIT
在對原始服務器的請求導致HTTP錯誤時,Squid也會cache這個響應.在短時間內對這些資源的重複請求,導致了否命中. negative_ttl指令控制這些錯誤被cache的時間數量.請注意這些錯誤只在內存cache,不會寫往磁盤.下列HTTP狀態碼可能導致否定cache(也遵循於其他約束): 204, 305, 400, 403, 404, 405, 414, 500, 501, 502, 503, 504 .

TCP_MEM_HIT
Squid在內存cache裡發現請求資源的有效拷貝,並將其立即發送到客戶端.注意這點並非精確的呈現了所有從內存服務的響應.例如,某些cache在內存裡,但要求確認的響應,會以TCP_REFRESH_HIT, TCP_REFRESH_MISS等形式記錄.

TCP_DENIED
因為http_access或http_reply_access規則,客戶端的請求被拒絕了.注意被http_access拒絕的請求在第9域的值是NONE/-,然而被http_reply_access拒絕的請求,在相應地方有一個有效值.

TCP_OFFLINE_HIT
當offline_mode激活時,Squid對任何cache響應返回cache命中,而不用考慮它的新鮮程度.

TCP_REDIRECT
重定向程序告訴Squid產生一個HTTP重定向到新的URI(見11.1節).正常的,Squid不會記錄這些重定向.假如要這樣做,必須在編譯squid前,手工定義LOG_TCP_REDIRECTS預處理指令.

NONE
無分類的結果用於特定錯誤,例如無效主機名.

相應於ICP查詢,下列標籤可能出現在access.log文件的第四域.

UDP_HIT
Squid在cache裡發現請求資源的貌似新鮮的拷貝.

UDP_MISS
Squid沒有在cache裡發現請求資源的貌似新鮮的拷貝.假如同一目標通過HTTP請求,就可能是個cache丟失.請對比UDP_MISS_NOFETCH.

UDP_MISS_NOFETCH
跟UDP_MISS類似,不同的是這裡也指示了Squid不願去處理相應的HTTP請求.假如使用了-Y命令行選項,Squid在啟動並編譯其內存索引時,會返回這個標籤而不是UDP_MISS.

UDP_DENIED
因為icp_access規則,ICP查詢被拒絕.假如超過95%的到某客戶端的ICP響應是UDP_DENIED,並且客戶端數據庫激活了(見附錄A),Squid在1小時內,停止發送任何ICP響應到該客戶端.若這點發生,你也可在cache.log裡見到一個警告.

UDP_INVALID
Squid接受到無效查詢(例如截斷的消息、無效協議版本、URI裡的空格等).Squid發送UDP_INVALID響應到客戶端.

HTTP 回應代碼詳解

如果向您的服務器發出了某項請求要求顯示您網站上的某個網頁,那麼,您的服務器會返回 HTTP 狀態代碼以響應該請求。
一些常見的狀態代碼為:
200 - 服務器成功返回網頁
404 - 請求的網頁不存在
503 - 服務器暫時不可用
以下提供了 HTTP 狀態代碼的完整列表。點擊鏈接可了解詳細信息。您也可以訪問有關 HTTP 狀態代碼的 W3C 頁來了解詳細信息。
1xx(臨時響應)
用於表示臨時響應並需要請求者執行操作才能繼續的狀態代碼。
代碼 說明
100(繼續) 請求者應當繼續提出請求。服務器返回此代碼則意味著,服務器已收到了請求的第一部分,現正在等待接收其餘部分。
101(切換協議) 請求者已要求服務器切換協議,服務器已確認並準備進行切換。
2xx(成功)
用於表示服務器已成功處理了請求的狀態代碼。
代碼 說明
200(成功) 服務器已成功處理了請求。通常,這表示服務器提供了請求的網頁。如果您的 robots.txt 文件顯示為此狀態,那麼,這表示 Googlebot 已成功檢索到該文件。
201(已創建) 請求成功且服務器已創建了新的資源。
202(已接受) 服務器已接受了請求,但尚未對其進行處理。
203(非授權信息) 服務器已成功處理了請求,但返回了可能來自另一來源的信息。
204(無內容) 服務器成功處理了請求,但未返回任何內容。
205(重置內容) 服務器成功處理了請求,但未返回任何內容。與 204 響應不同,此響應要求請求者重置文檔視圖(例如清除表單內容以輸入新內容)。
206(部分內容) 服務器成功處理了部分 GET 請求。
3xx(已重定向)
要完成請求,您需要進一步進行操作。通常,這些狀態代碼是永遠重定向的。 Google 建議您在每次請求時使用的重定向要少於 5 個。您可以使用網站管理員工具來查看 Googlebot 在抓取您已重定向的網頁時是否會遇到問題。診斷下的抓取錯誤頁中列出了 Googlebot 由於重定向錯誤而無法抓取的網址。
代碼 說明
300(多種選擇) 服務器根據請求可執行多種操作。服務器可根據請求者 (User agent) 來選擇一項操作,或提供操作列表供請求者選擇。
301(永久移動) 請求的網頁已被永久移動到新位置。服務器返回此響應(作為對 GET 或 HEAD 請求的響應)時,會自動將請求者轉到新位置。您應使用此代碼通知 Googlebot 某個網頁或網站已被永久移動到新位置。
302(臨時移動) 服務器目前正從不同位置的網頁響應請求,但請求者應繼續使用原有位置來進行以後的請求。此代碼與響應 GET​​ 和 HEAD 請求的 301 代碼類似,會自動將請求者轉到不同的位置。但由於 Googlebot 會繼續抓取原有位置並將其編入索引,因此您不應使用此代碼來通知 Googlebot 某個頁面或網站已被移動。
303(查看其他位置) 當請求者應對不同的位置進行單獨的 GET 請求以檢索響應時,服務器會返回此代碼。對於除 HEAD 請求之外的所有請求,服務器會自動轉到其他位置。
304(未修改) 自從上次請求後,請求的網頁未被修改過。服務器返回此響應時,不會返回網頁內容。
如果網頁自請求者上次請求後再也沒有更改過,您應當將服務器配置為返回此響應(稱為 If-Modified-Since HTTP 標頭)。由於服務器可以告訴 Googlebot 自從上次抓取後網頁沒有更改過,因此可節省帶寬和開銷
305(使用代理) 請求者只能使用代理訪問請求的網頁。如果服務器返回此響應,那麼,服務器還會指明請求者應當使用的代理。
307(臨時重定向) 服務器目前正從不同位置的網頁響應請求,但請求者應繼續使用原有位置來進行以後的請求。此代碼與響應 GET​​ 和 HEAD 請求的 301 代碼類似,會自動將請求者轉到不同的位置。但由於 Googlebot 會繼續抓取原有位置並將其編入索引,因此您不應使用此代碼來通知 Googlebot 某個頁面或網站已被移動。
4xx(請求錯誤)
這些狀態代碼表示,請求可能出錯,已妨礙了服務器對請求的處理。
代碼 說明
400(錯誤請求) 服務器不理解請求的語法。
401(未授權) 請求要求進行身份驗證。登錄後,服務器可能會返回對頁面的此響應。
403(已禁止) 服務器拒絕請求。如果在Googlebot 嘗試抓取您網站上的有效網頁時顯示此狀態代碼(您可在Google 網站管理員工具中診斷下的網絡抓取頁面上看到此狀態代碼),那麼,這可能是您的服務器或主機拒絕Googlebot 對其進行訪問。
404(未找到) 服務器找不到請求的網頁。例如,如果請求是針對服務器上不存在的網頁進行的,那麼,服務器通常會返回此代碼。
如果您的網站上沒有 robots.txt 文件,而您在 Google 網站管理員工具" 診斷"標籤的 robots.txt 頁上發現此狀態,那麼,這是正確的狀態。然而,如果您有 robots.txt 文件而又發現了此狀態,那麼,這說明您的 robots.txt 文件可能是命名錯誤或位於錯誤的位置。 (該文件應當位於頂級域名上,且應當名為 robots.txt)。
如果您在Googlebot 嘗試抓取的網址上發現此狀態(位於"診斷"標籤的HTTP 錯誤頁上),那麼,這表示Googlebot 所追踪的可能是另一網頁中的無效鏈接(舊鏈接或輸入有誤的鏈接)。
405(方法禁用) 禁用請求中所指定的方法。
406(不接受) 無法使用請求的內容特性來響應請求的網頁。
407(需要代理授權) 此狀態代碼與 401(未授權)類似,但卻指定了請求者應當使用代理進行授權。如果服務器返回此響應,那麼,服務器還會指明請求者應當使用的代理。
408(請求超時) 服務器等候請求時超時。
409(衝突) 服務器在完成請求時發生衝突。服務器必須包含有關響應中所發生的衝突的信息。服務器在響應與前一個請求相衝突的 PUT 請求時可能會返回此代碼,同時會提供兩個請求的差異列表。
410(已刪除) 如果請求的資源已被永久刪除,那麼,服務器會返回此響應。該代碼與 404(未找到)代碼類似,但在資源以前有但現在已經不復存在的情況下,有時會替代 404 代碼出現。如果資源已被永久刪除,那麼,您應當使用 301 代碼指定該資源的新位置。
411(需要有效長度) 服務器不會接​​受包含無效內容長度標頭字段的請求。
412(未滿足前提條件) 服務器未滿足請求者在請求中設置的其中一個前提條件。
413(請求實體過大) 服務器無法處理請求,因為請求實體過大,已超出服務器的處理能力。
414(請求的 URI 過長) 請求的 URI(通常為網址)過長,服務器無法進行處理。
415(不支持的媒體類型) 請求的格式不受請求頁面的支持。
416(請求範圍不符合要求) 如果請求是針對網頁的無效範圍進行的,那麼,服務器會返回此狀態代碼。
417(未滿足期望值) 服務器未滿足"期望"請求標頭字段的要求。
5xx(服務器錯誤)
這些狀態代碼表示,服務器在嘗試處理請求時發生內部錯誤。這些錯誤可能是服務器本身的錯誤,而不是請求出錯。
代碼 說明
500(服務器內部錯誤) 服務器遇到錯誤,無法完成請求。
501(尚未實施) 服務器不具備完成請求的功能。例如,當服務器無法識別請求方法時,服務器可能會返回此代碼。
502(錯誤網關) 服務器作為網關或代理,從上游服務器收到了無效的響應。
503(服務不可用) 目前無法使用服務器(由於超載或進行停機維護)。通常,這只是一種暫時的狀態。
504(網關超時) 服務器作為網關或代理,未及時從上游服務器接收請求。
505(HTTP 版本不受支持)

Excel IP 排序方法

方法1 .
原出處
"A1" 請自行替換位置
=LEFT(A1,FIND("%",SUBSTITUTE(A1,".","%",3))-1)&"."&TEXT(RIGHT(A1,LEN(A1)-FIND("%",SUBSTITUTE(A1,".","%",3))),"000")
excel_ip_sort_1.png
↓↓↓↓↓
excel_ip_sort_2.png
方法2
拆解IP
excel_ip_sort_2_1.png
excel_ip_sort_2_2.png
excel_ip_sort_2_3.png
重新排序
excel_ip_sort_2_4.png
excel_ip_sort_2_5.png
 
使用
=A1&"."&B1&"."&C1&"."&D1
把IP組合回去
excel_ip_sort_2_6.png

vim 下去除多余空白, 字串 "\n" 更換為換行符號

問題:
檢視Mysql 備份檔時,不同版本輸出的空白數及增易讀性

觀念:
1. vim 的換行符號 \r
2. vim 的文定提取可用正規表示式

內文:
Table   Create Table
betslips_spadegame      CREATE TABLE table_a (\n  aaa int(10) unsigned NOT NULL AUTO_INCREMENT,\n  bbb varchar(50) DEFAULT NULL,\n)

去除多余空白
:%s/\s\+/ /g  => 把一個以上的空白都換成只有一個

\n置換成換行
:%s#\\n#\r#g

VMware Workstation 異常關閉後無法啟動VM

 

就在吃個午餐回來 VM就死給我看 , poweron 出現以下以下訊息 , 大概就是你的VM被LOCK住

Failed to lock the file
Cannot open th disk xxx

failed to start the virtual machine

error_msg.png

剛決方法:

到該VM 存放的目錄下把 .lck 的資料夾或文件刪除,再去啟動VM就可以了

lckfile.png

Nginx – fastcgi_param 詳解

來源 : http://312461613.blog.51cto.com/965442/1204649

fastcgi_param SCRIPT_FILENAME $ DOCUMENT_ROOT $ fastcgi_script_name ; #腳本文件請求的路徑
fastcgi_param QUERY_STRING $ QUERY_STRING ; #請求的參數; ?如應用程序= 123
fastcgi_param REQUEST_METHOD $ REQUEST_METHOD ; #請求的動作( GET,POST )
fastcgi_param CONTENT_TYPE $ CONTENT_TYPE ; #請求頭中的內容類型字段
fastcgi_param CONTENT_LENGTH $ CONTENT_LENGTH ; #請求頭中的內容長度字段。
fastcgi_param SCRIPT_NAME $ fastcgi_script_name ; #腳本名稱
fastcgi_param REQUEST_URI $ REQUEST_URI ; #請求的地址不帶參數
fastcgi_param DOCUMENT_URI $ DOCUMENT_URI ; #與$ URI相同。
fastcgi_param DOCUMENT_ROOT $ DOCUMENT_ROOT ; 。 #網站的根目錄在服務器配置中根指令中指定的值
fastcgi_param SERVER_PROTOCOL $ SERVER_PROTOCOL ; #請求使用的協議,通常是HTTP/1.0或HTTP/1.1 。
fastcgi_param GATEWAY_INTERFACE CGI/1.1 ; # CGI版本
fastcgi_param SERVER_SOFTWARE nginx的/ $ nginx_version ; # nginx的版本號,可修改,隱藏
fastcgi_param REMOTE_ADDR $ REMOTE_ADDR ; #客戶端的IP
fastcgi_param REMOTE_PORT $ REMOTE_PORT ; #客戶端端口
fastcgi_param SERVER_ADDR $ SERVER_ADDR ; #服務器的IP地址
fastcgi_param SERVER_PORT $ SERVER_PORT ; #服務器端口
fastcgi_param SERVER_NAME $ SERVER_NAME ; #服務器名,域名在服務器配置中指定的服務器名
# fastcgi_param PATH_INFO $ PATH_INFO ; #可自定義變量
#僅PHP ,需要在PHP構建的 - 使力-cgi的重定向
# fastcgi_param REDIRECT_STATUS 200 ;
在PHP可打印出上面的服務環境變量
如:迴聲$ _SERVER [ ' REMOTE_ADDR ']

Linux echo man2CHT

NAME
       echo - display a line of text

SYNOPSIS
       echo [SHORT-OPTION]... [STRING]...
       echo LONG-OPTION

DESCRIPTION
       Echo the STRING(s) to standard output.

       -n     do not output the trailing newline /  結束不換行

       -e     enable interpretation of backslash escapes /允許使用跳脫字元(\)

       -E     disable interpretation of backslash escapes (default) / 不允許使用跳脫字元(default)

       --help display this help and exit

       --version
              output version information and exit

       If -e is in effect, the following sequences are recognized:

       \\     backslash / 反斜線

       \a     alert (BEL) / 嗶嗶聲

       \b     backspace / Backspace

       \c     produce no further output / 從此行開始不輸出

       \e     escape / 此字元以後不輸出

       \f     form feed /換頁 (我實在不知到要怎麼翻 ...)

       \n     new line / 跳行

       \r     carriage return / 刪除該行 /r 前全部

       \t     horizontal tab /水平定位點

       \v     vertical tab / 垂直定位點

       \0NNN  byte with octal value NNN (1 to 3 digits) / 以10進位印出 ascii 字元 ex /0100 會印出@

       \xHH   byte with hexadecimal value HH (1 to 2 digits) / 以16進位印出 ascii 字元 ex /40 會印出@ (可man ascii)

       NOTE:  your  shell  may have its own version of echo, which usually supersedes the version
       described here.  Please refer to your shell’s documentation for details about the  options
       it supports.

AUTHOR
       Written by Brian Fox and Chet Ramey.

REPORTING BUGS
       Report echo bugs to [email protected]
       GNU coreutils home page: <http://www.gnu.org/software/coreutils/>
       General help using GNU software: <http://www.gnu.org/gethelp/>
       Report echo translation bugs to <http://translationproject.org/team/>

COPYRIGHT
       Copyright  ©  2010  Free  Software  Foundation, Inc.  License GPLv3+: GNU GPL version 3 or
       later <http://gnu.org/licenses/gpl.html>.
       This is free software: you are free to change and redistribute it.  There is NO  WARRANTY,
       to the extent permitted by law.

SEE ALSO
       The  full  documentation for echo is maintained as a Texinfo manual.  If the info and echo
       programs are properly installed at your site, the command

              info coreutils 'echo invocation'

rfc3339 標準時間格式

格式說明 : http://www.ietf.org/rfc/rfc3339.txt

因為寫了 google calendar 的應用程式 , 只吃這個時間格

不過了解後才發現這應用起來還蠻不錯用

格式為:

年-月-日T時:分:秒+(-)時區

2013-09-12T22:50:20+08:00

我想了一下為什麼Google 要用這種格式 , 大概是因為可以反推回去標準時間

再依照你指定event 的時區去推出正確的時間

由於 這次是寫python 的應用程式 , 就留點python 語法



結果為:

系統時間:
2013-09-13 00:19:14.411000

rfc3339格式 系統時間:
2013-09-13T00:19:14+08:00

網路時間:
Fri Sep 13 00:19:19 2013

rfc3339格式 網路時間:
2013-09-13T00:19:19+08:00

rfc3339格式網路時間(不使用時區):
2013-09-12T16:19:19+00:00

 

即使不用使用時區的方式 , 也會把時間回推到 +00:00

所以只要丟出的時間 + 時區是正確的 , 這樣丟給 google , 也不會算錯時間