2011年8月 的存檔

ImageMagick之圖片裁剪

2011年8月31日 沒有評論

imagemagick的convert命令通過crop參數,可以把一幅大圖片分成若干塊大小一樣的圖片,同時也可以在大圖上截取一塊圖片來。命令格式為

convert 原始圖片 -crop widthxheight+x+y 目標圖片

其中widthxheight是目標圖片的尺寸,+x+y是原始圖片的坐標點,這兩組值至少要出現一組,也可以同時存在。另外該命令也可使用gravity來重新定義坐標系統。關于更多gravity的信息,請參考:ImageMagicK之gravity參數詳解。下面介紹幾種常用的命令。

  • 把原始圖片分割成多張小圖
convert src.jpg -crop 100x100 dest.jpg

假設src.jpg的大小是300x200,執行命令后將得到名為dest-0.jpg、dest-1.jpg...dest-5.jpg
的6張大小為100x100的小圖片。注意如果尺寸不是目標圖片的整數倍,那么右邊緣和下邊緣的一部分圖片就用實際尺寸
  • 在原始圖片上剪裁一張指定尺寸的小圖
convert src.jpg -crop 100x80+50+30 dest.jpg
在原始圖片的上距離上部30像素左部50為起點的位置,分別向左向下截取一塊大小為100x80的圖片。如果x相對于坐標,寬度不夠100,那就取實際值。

convert src.jpg -gravity center -crop 100x80+0+0 dest.jpg
在原始圖上截取中心部分一塊100x80的圖片

convert src.jpg -gravity southeast -crop 100x80+10+5 dest.jpg
在原始圖上截取右下角距離下邊緣10個像素,右邊緣5個像素一塊100x80的圖片

centos下搭建apache+svn服務器

2011年8月31日 沒有評論

本文將詳細介紹centos5如何搭建svn服務器。包括apache,subversion的安裝和一些簡單的配置。

  • 安裝Apache HTTP Server

apache下載地址:http://www.apache.org/dist//httpd/httpd-2.2.20.tar.gz

通過tar -zxvf httpd-2.2.20.tar.gz 解壓,進入解壓后的文件夾,執行

./configure --enable-dav --enable-so --prefix=/usr/local/apache2

其中,–enable-dav允許Apache提供DAV協議支持;–enable-so允許運行時加載DSO模塊,前兩個參數是必須要加的,–prefix 是安裝的位置。如果configure通過,接著執行

make && make install

數分鐘后就完事了,通過 /usr/local/apache2/bin/apachectl -k start 來啟動,在瀏覽器中訪問127.0.0.1,如果出現 It’s Works!,那么說明安裝成功。

  • 安裝Subversion
  • Subversion
Subversion需要需要下載兩個文件subversion-1.6.17.tar.bz2和subversion-deps-1.6.17.tar.bz2,它們的下載地址是
http://subversion.tigris.org/downloads/subversion-1.6.17.tar.bz2
http://subversion.tigris.org/downloads/subversion-deps-1.6.17.tar.bz2

分別解壓subversion-1.6.17.tar.bz2和subversion-deps-1.6.17.tar.bz2,解壓后他們都在subversion-1.6.17這個文件夾下,然后執行configure,命令如下

./configure --with-apxs=/opt/apache2/bin/apxs --with-apr=/usr/local/apache2 --with-apr-util=/usr/local/apache2 --prefix=/usr/local/subversion-1.6.7

其中,–with-apxs 用于生成apache httpd的mod_dav_svn和mod_authz_svn模塊;–with-apr 和 –with-apr-util=參數指向 Apache 的安裝根目錄,而不是使用缺省的 SVN 安裝包中自帶的 apr ,否則如果你安裝的 Apache 版本不同有可能導致 APR 庫不匹配,出現類似 Can’t set position pointer in file ‘/svn/test/db/revs/1′: Invalid argument 的錯誤,–prefix 是安裝的位置。中間可能會出現某些庫找不到的情況,根據提示用yum來搞定。configure成功后,執行編譯和安裝,即

make && make install

如果沒有報錯,svn就成功安裝好了。對于版本1.8+,可能需要通過如下命令把對應 so 文件 copy 到apache 目錄。

cp subversion/mod_authz_svn/.libs/mod_authz_svn.so /usr/local/apache/modules/
cp subversion/mod_dav_svn/.libs/mod_dav_svn.so /usr/local/apache/modules/
  • 如何創建的Subversion的版本庫

假設我們把版本庫建立在/opt/svnroot 目錄下,那么在/opt/svnroot目錄下執行mkdir repository新建版本庫文件夾,通過svnadmin create repository/test命令可創建名為test的版本庫。若創建成功,則subversion的安裝便已成功完成。使用mkdir -p import/{trunk,branches,tags} 命令在/opt/svnroot目錄下建立一個名為import的新文件夾,包含trunk、branches、tags 三個子目錄。下面這條語句將把路徑/opt/svnroot/import下的目錄和文件導入到你創建的Subversion 倉庫中去,提交后的修訂版為1。

svn import /opt/svnroot/import file:///opt/svnroot/repository/test -m "Init repository"

這里/opt/svnroot/import可以使用相對路徑,但file:///opt/svnroot/repository/test必須以絕對路徑表示。

分類: Linux 標簽: , , ,

IE下css的hack代碼

2011年8月31日 沒有評論

利用hack技術可以為不同的瀏覽器設置不同的值。例如代碼:

.test {
    margin-top:10px;	/*所有瀏覽器*/
    margin-top:5px\9;	/*所有IE瀏覽器*/
    *margin-top:0px;	/*IE6、7*/
    _margin-top:-10px;	/*IE6*/
}

css的順序很重要,后面的會覆蓋前面設置。。所以以上代碼在Firefox下margin-top的值為10px,IE8下可以識別第一條和第二條,但第二條會覆蓋第一條,故就變為5px,同理IE7下則為0px,IE6下為-10px。

綜上所述,符號[\9]所有IE瀏覽器可識別、[*]IE6、7 能識別、[_]只有IE6下能識別。

分類: web前端 標簽: ,

nginx下wordpress的偽靜態配置

2011年8月31日 沒有評論

本來起初自己在nginx來配置轉發規則,但有些連接轉發有問題,后來在網上查了一下,原來借助nginx的try_files指令,只需要一行配置就可以搞定偽靜態配置了。代碼如下:

try_files $uri $uri/ /index.php?q=$uri&$args;

更多關于try_files的知識,參看:http://wiki.nginx.org/NginxHttpCoreModule#try_files

分類: Linux 標簽: , ,

ImageMagick之圖片縮放

2011年8月30日 沒有評論

利用ImageMagicK的convert命令,能很方便的實現圖片的放大縮小,可以進行等比例縮放,也能縮放到指定的固定大小。縮放的參數resize,由它來指定縮放后圖片的寬高,比如“200×100”。

  • 等比縮放 例如把圖片a.jpg縮放到200×100的尺寸,可以用命令:
convert -resize 200×100 src.jpg dest.jpg

注意:雖然明確指定了圖片大小為200×100,但dest.jpg的不一定就是200×100,因為是等比縮放的,dest.jpg大小取決原始圖片比例。假設src.jpg的大小是500×200,那么縮放后dest.jpg的真實大小為200×80,再比如src.jpg的大小是300×200,縮放后的尺寸為150×100。原則是縮放后的尺寸最少有一個是符合寬或高,且另外一個不能大于指定的參數中對應的寬或高。另外可以通過只指定寬或高的方式來進行縮放。例如:

convert -resize 200 src.jpg dest.jpg
得到圖片寬為200,高根據原始圖片比例計算而來

convert -resize x100 src.jpg dest.jpg
得到的圖片高位100,寬根據原始圖片比例計算而來
  • 固定寬高縮放。即不考慮原是圖寬高的比例,把圖片縮放到指定大小。例如命令:
convert -resize 200x100! src.jpg dest.jpg

說明:區別是寬高后面多了一個嘆號,此時不管原圖片比例如何,縮放后的圖片大小都是200×100,這樣就可能導致圖片變形。注意:在linux環境對參數需要用單引號引起來,而windows下又不能使用單引號。

  • 有條件縮放。可以通過>或<符號來控制原始圖片是否進行縮放,例如在處理一批尺寸大小各異的圖片,只想把尺寸大于給定的值圖片才進行縮小,如果沒有指定條件,可能會把那些小的圖片進行了放大處理。
convert -resize "200x100>" src.jpg dest.jpg
注解:只有當src.jpg的寬大于200或高大于100時候,才進行縮小處理,
否則生成的dest.jpg和src.jpg具有一樣的尺寸。
注意在linux下要用單引號替換成雙引號,即'200x100>'。

convert -resize "200x100<"?src.jpg dest.jpg
注解:只有當src.jpg的寬小于200或高小于100時候,才進行放大處理,
否則生成的dest.jpg和src.jpg具有一樣的尺寸。
注意在linux下要用單引號替換成雙引號,即'200x100<'

上述兩種有條件縮放是按原始圖等比例縮放的,也就是對符合條件的圖片進行等比縮放。同時有條件縮放也可以與固定大小縮放聯合起來用。例如如下命令。

convert -resize "800x100>!" src.jpg dest.jpg
注解:假設src.jpg尺寸是300x200。很顯然src.jpg的高(200)是大于指定值高(100),
符合縮小的條件,由于執行的不是等比縮放,
所以dest.jpg的尺寸理論上是800x100,由于執行是縮小操作
顯然800是超過原始圖片寬的,故dest.jpg的寬只能是300

convert -resize "10x1000<!" src.jpg dest.jpg
注解:假設src.jpg尺寸是300x200,src.jpg的高(200)小于指定值高(1000),
因此該命令將執行放大圖片操作,dest.jpg的高將放到到1000,
由于目標圖片寬比原始圖片還小,但是執行的是放大操作,因此只能用原始圖片的寬,
所以得到的dest.jpg的尺寸是300x1000。

javascript讀寫cookie實例

2011年8月29日 沒有評論

Cookie是網站存放在客戶端的一小段數據。一般的,網站為了提升用戶體驗,在客戶的客戶端中保存用戶的歷史信息,以備用戶再次訪問時網站能提供 更方便,更有針對性的服務。比如,網站可以記住你的登錄狀態,只要登錄一次下次訪問就不用在登錄;購物網能記住你瀏覽過的產品,保留你購物車中的物品。這 些都有Cookie的功勞。

cookie的存取操作不止局限于服務器段,客戶端通過javascript也一樣可以進行cookie的存取。利用document.cookie對象就能操作了。下面分別給出讀寫cookie的方法示例代碼。

function getCookie(name){
    var arr = document.cookie.match(new RegExp("(^| )" 
                                   + name + "=([^;]*)(;|$)"));
    if(arr != null) return (arr[2]);
    return null;
}

document.cookie就是以key/value的形式返回所有對于當前頁面有權限讀取的cookie字符串,然后通過正則表達式查詢參數指定cookie名的cookie值。

function setCookie (name, value, expire) {
    var expireStr = '';

    if (expire || expire > 0) {
        var exp  = new Date();
        exp.setTime(exp.getTime() + expire * 1000);

        expireStr = ';expires=' + exp.toGMTString();
    }

    document.cookie = name + '=' + value +  
                      '; path=/;' + expireStr + 
                      'domain=.youdomain.com';
}

注意setCookie中的第三個參數,是指定cookie的過期時間,單位為秒,如果不指定或者值不大于0,那么寫入的cookie類型為會話cookie,即瀏覽器關閉后,cookie就失效,反正就是硬盤cookie,會記錄在客戶端的電腦上。

解決第三方cookie的存取問題

2011年8月29日 沒有評論

何為第三方cookie呢,簡單來說,就是用戶當前瀏覽的頁面上有通過IFRAME、IMG或script等標簽嵌入另外一個域名的鏈接地址,該鏈接設置的cookie就稱為第三方cookie,當前頁面設置的cookie為第一方cookie。由于隱私保護的問題,現在主流的瀏覽器默認是不允許寫入第三方cookie的,但是只要在相應的Header信息設置了P3P,第三方cookie還是能正常的寫入的。

例如在php中通過下面的代碼就能正確的寫入一個名為thirdcookie的cookie。

header(‘P3P: CP=”CURa ADMa DEVa PSAo PSDo OUR BUS UNI PUR INT DEM STA PRE COM NAV OTC NOI DSP COR”‘);

header(“Set-Cookie: “thirdcookie=cookievalue;domain=.youdomian.com;path=/;expires=” . gmstrftime(“%A, %d-%b-%Y %H:%M:%S GMT”, time() + (86400 * 365 * 3)));

需要注意的是即使設置了P3P,只有通過服務器端的操作才能寫入cookie,客戶端方用javascript的方法也依然無法寫入cookie,而且在IE6下javascript也無法讀取到第三方cookie。關于javascript讀寫cookie的詳細信息,請參閱 javascript讀寫cookie實例

結束PPAP.exe進程

2011年8月28日 沒有評論

最近發現電腦什么事都沒有干,但是無線網絡的指示燈有時候會不停的閃動,說明有網絡數據傳輸,通過任務管理器發現了一個比較奇怪的進程,就是PPAP.exe,google一把,原來是pplive的網絡加速器,它就是傳輸數據的元兇。只要使用過pplive,PPAP.exe會一直留在后臺,哪怕是關閉了pplive。由于PPAP.exe后臺偷偷的傳輸數據,可能會影響到正常的上網。網上搜索了一下,也沒有發現很好解決方法,決定自己動手,豐衣足食,寫了一個干掉PPAP.exe進程批處理文件,就放在桌面上,有事沒事雙擊它一下。批處理的內容很簡單,就是使用taskkill 命令來干掉指定的進程,如下:

taskkill /F /IM PPAP.exe /T

建立批處理的步驟是,先在桌面上建立一個空白的文本文件,把上面的內容復制粘貼到該文件中,保存退出,然后重命名剛才的文本文件,例如叫“kill_ppap.bat”,雙擊該文件就可以干掉那該死的流氓進程了。注意:如果雙擊是記事本打開的,原因就是剛才重命名并沒有更改掉文件的擴展名,你可能需要修改一下文件的顯示狀態,打開任意一個文件夾,然后找到菜單欄里的工具–>文件夾選項–>查看–>高級設置,找到隱藏已知文件類型的擴展名,把其前面的勾去掉,然后確定即可,這個時候你應該看到剛才的文件全名是kill_ppap.bat.txt,去掉后面的.txt即可。

下載地址:kaill-ppap

分類: 其它 標簽: , ,

apache配置中ProxyPassReverse指令的含義

2011年8月27日 沒有評論

apache中的mod_proxy模塊主要作用就是進行url的轉發,即具有代理的功能。應用此功能,可以很方便的實現同tomcat等應用服務器的整合,甚者可以很方便的實現web集群的功能。

例如使用apache作為域名www.test.com代理服務器,讓其暴露在公網上,即DNS解析到本機器上,真正提供web服務器的是另一臺位于同一內網的機器上,假設起IP是192.168.100.22,那么只需要如下配置就可以了。

ProxyPass / http://192.168.100.22/

ProxyPassReverse / http://192.168.100.22/

ProxyPass 很好理解,就是把所有來自客戶端對http://www.test.com的請求轉發給http://192.168.100.22上進行處理,ProxyPassReverse 的配置總是和ProxyPass 一致,但用途很讓人費解。似乎去掉它很能很好的工作,事實真的是這樣么,其實不然,如果響應中有302重定向,ProxyPassReverse就派上用場。舉例說明,假設用戶訪問http://www.test.com/exam.php,通過轉發交給http://192.168.100.22/exam.php處理,假定exam.php處理的結果是實現redirect到login.php(使用相對路徑,即省略了域名信息),如果沒有配置反向代理,客戶端收到的請求響應是重定向操作,并且重定向目的url為http://192.168.100.22/login.php ,而這個地址只是代理服務器能訪問到的,可想而知,客戶端肯定是打不開的,反之如果配置了反向代理,則會在轉交HTTP重定向應答到客戶端之前調整它為http://www.test.com/login.php,即是在原請求之后追加上了redirect的路徑。當客戶端再次請求http://www.test.com/login.php,代理服務器再次工作把其轉發到http://192.168.100.22/login.php。

客戶端到服務器稱之為正向代理,那服務器到客戶端就叫反向代理。

利用ImageMagicK給圖片加水印

2011年8月27日 2 條評論

現在很流行給自己網站的圖片加上水印,水印可能是文字,也可能是網站的logo等。圖片水印比較簡單,就是把自己水印圖標合成到原始圖片上;文字水印中如果字符包含中文,處理就稍微麻煩一些。

圖片水印處理

假設把名為logo.gif的水印圖標添加在原始圖片(src.jpg)右下角,且水印的下邊緣距原始圖片10像素、右邊緣距原始圖片5像素。使用如下命令即可:

convert src.jpg logo.gif -gravity southeast -geometry +5+10 -composite dest.jpg

文字水印處理

如果不含中文字符,可以直接通過convert draw text的方式將文字添加到圖片,否則就需要使用其它的辦法。命令行中不能包括中文字符,但是能通過讀取文件的方式來操作,即先把中文信息保存文本文件中。注意:文本文件的編碼最好用UTF-8,同時也需要選取一個支持中文的字體。直接把文本文本中的信息輸出到圖片上使用命令mogrify,不過也可以使用convert命令把文本文件中的信息生成一個圖片,然后再把圖片合成到原始圖片中。下面分別介紹這幾種方法。

  • 不含中文字符:例如把www.twubdg.tw作為水印加上圖片上,命令如下
convert src.jpg -gravity southeast -fill black -pointsize 16 -draw "text 5,5 'http://www.twubdg.tw'" dest-c.jpg

mogrify -pointsize 16 -fill black -weight bolder -gravity southeast -annotate +5+5 "http://www.twubdg.tw" src.jpg

說明:上述兩條命令達到同樣的結果,但是第一次命令可以保留原始圖片,第二條是直接在原始圖片上打上水印。

  • 存在中文的情況:假設存有信息的文件叫t.txt,字體文件是msyh.ttf。
方法1:
//把文件t.txt中的信息生成圖片txt.png, -transparent white讓圖片的背景透明,-size x30設置圖片的高度
convert -transparent white -font msyh.ttf -fill black -pointsize 24 label:@t.txt txt.png
//把txt.png合成到src.jpg上
convert src.jpg txt.png -gravity southeast -geometry +10+5 -composite dest.jpg

方法2:
convert src.jpg -transparent white -font msyh.ttf -fill black -pointsize 24 -size x30 label:@t.txt -gravity southeast -geometry +10+5 -composite dest.jpg

方法3:
mogrify -font msyh.ttf -pointsize 24 -fill black -weight bolder -gravity southeast -annotate +20+20 @"t.txt" src.jpg

說明:上述第一、二種方法都有瑕疵,第二種背景不能變成透明,第一種雖然生成的圖片可以透明,但是合成到原始圖上效果不是很理想,第三種是完全透明的,所以推進用第三種方式來操作。

無覓相關文章插件,快速提升流量

30选5怎么中奖