星期六, 六月 09, 2007

MySQL 設定 記錄執行過的 SQL 語法

程式 Debug 有時後從前面第一行追起來很辛苦(程式碼太多或 compile 過), 另一種做法就是從後面追起來, 反正最後寫入的是 DB, 那就從 DB 開始往前推, 所以就是要抓程式是執行哪些 SQL 語法.(以下只以 MySQL 為主)

 (閱讀全文)

星期四, 五月 10, 2007

回傳 JSON 記得送 header

回傳 JSON 的時後, 特別是有中文, 記得送 header(常忘記)...XD

header('Content-Type: text/plain; charset=utf-8');
 (閱讀全文)

星期日, 四月 29, 2007

PHP XML-RPC Client(encode_xmlrpc)

XMLRPC 分成 Server 和 Client, 已有現成的 Server, 需要使用到 Client 去向 Server 要資料.

查 php.net 有 xmlrpc_encode(), 但是測試發現 xmlrpc_encode 送去的 XML 格式不符合(可能是我不會用吧!),  然後又找了下面幾個來看:

 (閱讀全文)

星期二, 九月 19, 2006

Regular Expression 忽略特殊符號的功能

Regular Expression 對 ( ) [ ] | * ..... 等的符號都有特殊意義, 但是當系統不幸的是用 Big5, 而且 更不幸的是, 要取代的字有這些特殊符號時就很麻煩了.

以下是 Perl 的解法.

$wine =~ m/(\Q八八坑道\E)/;

因為 "坑" 字在 Big5 裡面有個 "|" 符號在裡面, 會造成此判斷錯誤, 於是用 \Q \E 包住, 在這裡面的字, 就會忽略所有特殊符號, 而讓程式正確的執行.

星期日, 七月 23, 2006

HTML 標準驗證

以前在寫網頁都是從 <html>...</html>, 不知道何時開始, 習慣都會在第一行加上 <!DOCTYPE ...>, 一般都只想到就是要把他宣告成 XHTML, XML, HTML, 後來研究 DTD 後才了解, 原來這一行不是那麼簡單的隨便加一加而已.. XD

 (閱讀全文)

星期六, 七月 22, 2006

PHP: 文字過長加入 WBR tag function

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

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

 (閱讀全文)

星期四, 七月 06, 2006

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; # 持續看看狀況, 若有則重覆上述步驟

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

星期日, 七月 02, 2006

PHP 縮圖

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

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

總之效果還不錯就好了~

 (閱讀全文)

星期三, 六月 28, 2006

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 的存取權限比較好.

星期日, 六月 18, 2006

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" /> 這段語法即可.
 (閱讀全文)

星期六, 五月 06, 2006

支援 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 入門實作 (書)

星期二, 五月 02, 2006

PHP header Location 寫成 function 的優缺點

我們很常用的一個寫法

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

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

先簡單說結論就是:

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

 (閱讀全文)

星期二, 四月 11, 2006

一行指令夾檔寄信(mail)

想要一行指令就把 file 夾在 mail 附件寄出的方法.

uuencode filename.zip Attachment.zip| mail -s "Subject" abc@domain
  • filename.zip : 要寄信的檔名
  • Attachment.zip: 收件者看到附件的名字
  • Subject: 信件標題
  • abc@domain: Email

星期日, 四月 09, 2006

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
 (閱讀全文)

星期一, 三月 27, 2006

Oracle 常用命令

Oracle 常用的指令簡單以 FAQ 的方式記錄一下:

查看 有哪些 DB(show databases)
select * from v$dbfile
查看有哪些 Table(show tables)
select * from v$tablespace
建立 DB(Tablespace)
create tablespace NAME datafile 'FILENAME.dbf' size 20M; (Create DB)
建立一個新的 USER, 並授權可連線, 建 table 等
  • create user USERNAME identified by PASSWORD;
  • grant connect to USERNAME;
  • grant resource to USERNAME;
  • conn USERNAME/PASSWOD;
  • create table t1 (c1 int);
  • insert into t1 values(1);
  • commit;

其它的等遇到問題再來做記錄囉~

 (閱讀全文)