PHP: 文字過長加入 WBR tag function

在開發網頁上的程式會有很多的莫名奇妙, 有 IE cache 的 bug, 有人網址到處亂貼, 有人英數字就喜歡長長的打一整排, 然後版面會被撐開變亂.

為了這些問題, 總是得用一堆很 dirty 的方法來解決, ex: 遇到 IE cache 就加個 timestamp 之類的, 讓他不會 cache, 遇到英數字長長一排, 讓版面亂掉的, 就用以下此方法(WBR)來解決.

閱讀全文〈PHP: 文字過長加入 WBR tag function〉

MySQL Replication 出現 Duplicate Key

當 MySQL Replication 的 Slave 機器連進去, 使用 show slave status, 發現以下的訊息, 而 Replication 也隨著停下來不在運作的時後的做法~

Error 'Duplicate entry 'PRIMARY KEY' for key 1' on query. Default database: 'DB_NAME'. Query: 'INSERT INTO TABLE_NAME xxx VALUE( 'xxxx' )

這代表 Key 有重覆到, 原因不明, 也許是 MySQL 本身就有 Bug, 總之遇到這種狀況的處理方法, 可以把重覆的那筆資料砍掉(不過可能會有很多), 或者就是用以下做法:

  1. SET GLOBAL SQL_SLAVE_SKIP_COUNTER = N; (N 是要跳過幾筆 (1~ ...))
  2. start slave;
  3. show slave status; # 持續看看狀況, 若有則重覆上述步驟

這樣子就可以了, 當然建議寫一隻程式來跑(可能會有很多)

閱讀全文〈MySQL Replication 出現 Duplicate Key〉

PHP 縮圖

因為本 blog 的頻寬有限, 想要貼圖又不太敢貼, 所以我的 blog 一直都很少有在貼圖(放在 flickr 或 其它地方 又怕何時不見了就麻煩了).

今天為了要貼一張圖, 但是看 166kb 實在蠻大的, Gimp 等的縮圖縮起來又糢糊不清(應該是我不會用.. Orz), 還是自己寫個簡單的縮圖比較簡單~ 🙂

總之效果還不錯就好了~

閱讀全文〈PHP 縮圖〉

PHP Shell 執行不受 open_basedir 限制

PHP 的程式要在 Shell 下執行, 寫法很簡單, 只要在程式的最開頭加上如下:

#!/usr/bin/php
<?php
// ooxx
?>

記得要 chmod +x filename.php, 就可以執行了.

如果比較講究一點, 可以寫如下(以下都只寫程式第一行)

#!/usr/bin/php -q

遇到的比較嚴的 Server, 會去鎖 open_basedir(開檔、讀檔的目錄有限制) 時, 就要用以下的做法:

#!/usr/bin/php -q -d open_basedir=:.

加上 -d 的參數, 就可以不受開啟一般檔案, 不限制於 open_basedir, 不過只有在開發的時後才這樣子使用就好, 實際要上線時, 還是要限制好 open_basedir 的存取權限比較好.

閱讀全文〈PHP Shell 執行不受 open_basedir 限制〉

Reset CSS - 取消 Html 原有樣式

在剛開始學 CSS 的時後, Html Tag 的原有樣式要取消是最頭大的, 正好看到 Yahoo! UI library 有 Reset CSS, 正好就是取消這些功能, 連 CSS 壓縮(濾空白, 合成一行等.)都做好了.

Yahoo! UI Library: Reset CSS

在取得檔案後, yui/build/reset 裡面有兩個檔案, reset.css 和 reset-min.css, reset-min.css 就是壓縮過的 CSS file.

使用方法:

  1. 解壓縮後, 將 reset-min.css 拷到 css template path.
  2. 改個名字~ mv reset-min.css reset.css (隨興囉~)
  3. 在頁面 head 中加上 <link rel="stylesheet" type="text/css" href="reset.css" /> 這段語法即可.

閱讀全文〈Reset CSS - 取消 Html 原有樣式〉

支援 XMLHttpRequest 的瀏覽器

支援 XMLHttpRequest 的瀏覽器 列表

  • Microsoft: Internet Explorer 4.0 之後版本
  • Mozilla: Firefox 1.0 之後版本
  • Netscape: 7之後版本(Mozilla M18:2001009 之後 / 1.0:20020530 之後較穩定)
  • Opera: 7.6 之後版本
  • Safari: 1.2 之後版本
  • Konqueror: 3 之後版本

取自: AJAX與Google Map API 入門實作 (書)

閱讀全文〈支援 XMLHttpRequest 的瀏覽器〉

PHP header Location 寫成 function 的優缺點

我們很常用的一個寫法

header("Location: http://plog.longwin.com.tw/");

這個寫法基本上沒有什麼問題, 但是寫在 function 裡面就有些問題寫了, 詳見下述說明.

先簡單說結論就是:

若要寫成 function, 在 heade Location 下面要加 exit, 否則最好就不要寫成 function 來呼叫.

閱讀全文〈PHP header Location 寫成 function 的優缺點〉

cvs 合併 branch 回 trunk

cvs 將 branch 合併回 trunk 的做法,(cvs建分支的做法 可參考 "cvs 建分支 branch")

  1. cvs checkout trunk # 先把 trunk checkout 出來.
  2. cd trunk # 進入 trunk 的目錄中

先把書上的其它做法記一下, (可參考CVS Branch and Merge example)

  • # merge from branch to trunk
  • cvs update -j branchbasetag -j branchname
  • # merging a branch to the trunk
  • cvs update -j lastmergetag -j branchname
  • ex: cvs update -j beta_0-1_branck_root -j beta_0-1_branch
  • # merge from trunk to branch
  • cvs update -j beta_0-1_branch_root -j HEAD
  • # merging from branch to branch
  • cvs update -j branchbasetag -j otherbranch

閱讀全文〈cvs 合併 branch 回 trunk〉