以前在寫網頁都是從 <html>...</html>, 不知道何時開始, 習慣都會在第一行加上 <!DOCTYPE ...>, 一般都只想到就是要把他宣告成 XHTML, XML, HTML, 後來研究 DTD 後才了解, 原來這一行不是那麼簡單的隨便加一加而已.. XD
分類: My_Note-Programming
PHP: 文字過長加入 WBR tag function
在開發網頁上的程式會有很多的莫名奇妙, 有 IE cache 的 bug, 有人網址到處亂貼, 有人英數字就喜歡長長的打一整排, 然後版面會被撐開變亂.
為了這些問題, 總是得用一堆很 dirty 的方法來解決, ex: 遇到 IE cache 就加個 timestamp 之類的, 讓他不會 cache, 遇到英數字長長一排, 讓版面亂掉的, 就用以下此方法(WBR)來解決.
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, 總之遇到這種狀況的處理方法, 可以把重覆的那筆資料砍掉(不過可能會有很多), 或者就是用以下做法:
- SET GLOBAL SQL_SLAVE_SKIP_COUNTER = N; (N 是要跳過幾筆 (1~ ...))
- start slave;
- show slave status; # 持續看看狀況, 若有則重覆上述步驟
這樣子就可以了, 當然建議寫一隻程式來跑(可能會有很多)
PHP 縮圖
因為本 blog 的頻寬有限, 想要貼圖又不太敢貼, 所以我的 blog 一直都很少有在貼圖(放在 flickr 或 其它地方 又怕何時不見了就麻煩了).
今天為了要貼一張圖, 但是看 166kb 實在蠻大的, Gimp 等的縮圖縮起來又糢糊不清(應該是我不會用.. Orz), 還是自己寫個簡單的縮圖比較簡單~ 🙂
總之效果還不錯就好了~
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 的存取權限比較好.
Reset CSS - 取消 Html 原有樣式
在剛開始學 CSS 的時後, Html Tag 的原有樣式要取消是最頭大的, 正好看到 Yahoo! UI library 有 Reset CSS, 正好就是取消這些功能, 連 CSS 壓縮(濾空白, 合成一行等.)都做好了.
在取得檔案後, yui/build/reset 裡面有兩個檔案, reset.css 和 reset-min.css, reset-min.css 就是壓縮過的 CSS file.
使用方法:
- 解壓縮後, 將 reset-min.css 拷到 css template path.
- 改個名字~ mv reset-min.css reset.css (隨興囉~)
- 在頁面 head 中加上 <link rel="stylesheet" type="text/css" href="reset.css" /> 這段語法即可.
支援 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 入門實作 (書)
PHP header Location 寫成 function 的優缺點
我們很常用的一個寫法
header("Location: http://plog.longwin.com.tw/");
這個寫法基本上沒有什麼問題, 但是寫在 function 裡面就有些問題寫了, 詳見下述說明.
先簡單說結論就是:
若要寫成 function, 在 heade Location 下面要加 exit, 否則最好就不要寫成 function 來呼叫.
一行指令 夾檔寄信(mail)
想要一行指令就把 file 夾在 mail 附件寄出的方法.
uuencode filename.zip Attachment.zip| mail -s "Subject" abc@domain
- filename.zip : 要寄信的檔名
- Attachment.zip: 收件者看到附件的名字
- Subject: 信件標題
- abc@domain: Email
若找不到 uuencode, 可: apt-get install sharutils
cvs 合併 branch 回 trunk
cvs 將 branch 合併回 trunk 的做法,(cvs建分支的做法 可參考 "cvs 建分支 branch")
- cvs checkout trunk # 先把 trunk checkout 出來.
- 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