星期一, 三月 13, 2006
星期四, 三月 02, 2006
Perl 四捨五入
方法1: 自己寫 round()
sub round { my $val = shift; my $col = shift; my $r = 10 ** $col; my $a = ($val > 0) ? 0.5 : -0.5; return int($val * $r + $a) / $r; } # 於要取的位數後 +0.5, 再取整數即可. my $a = 10.335444; print round($a, 2);
方法2: 使用 sprintf()
my $a = 10.335444; print sprintf("%.2f", $a);
用法可參考: Perl 5.8.0 Documentation - sprintf
星期四, 二月 09, 2006
CVS 加 TAG 標籤
要 Release 一個新版本的時後, 可以順便做個 tag, 將此 release 的各個檔案版本資訊都記錄下來, 之後要取得也可以方便取的.
CVS 要加個 tag 的方法如下:
加 tag:cvs tag tag_name
EX:cvs tag public-release-2-0-20060105-stable
取出 tag 的版本:cvs co -r tag_name output_path
EX:cvs co -r public-release-2-0-20060105-stable work/plog/
星期四, 二月 09, 2006
防止表單送出兩次又能禁止留空
寫網頁的程式最怕的就是 Double Submit(同一時間重覆點擊), 只要簡單加上一段就可以解決這種問題.
加此行:onclick="this.disabled=true"Ex:
<input type="button" name="Submit" value="Submit" onclick="this.disabled=true" />
星期六, 二月 04, 2006
PHP 截字、斷字專用 function
在寫網頁的時後常會遇到 80 個字要截字, 然後超過 80 字加 "...", 未滿 80 字不加.. 等等之類的問題.
之前用 substr 的寫法如下:
$string = strip_tags($string); // 先清掉 html tag, 以免 html tag 被破壞
$string = mb_substr($string, 0, 80, 'UTF-8');
$string .= (mb_strlen($string, 'UTF-8') > 80)?'...':'';
PHP 有支援很方便的 function 可以直接達到此功能.
$string = strip_tags($string);
$string = mb_strimwidth($string, 0, 80, '...', 'UTF-8');
在 UTF-8 的環境算字數用 strlen 或 mb_strlen 都不是很準, 所以可以用另一個做法, 算字的寬度, 也是個不錯的做法
echo mb_strwidth($string, 'UTF-8'); // 算字寬度
星期四, 二月 02, 2006
Perl 文字取代
感謝 洪朝貴 老師 寫的 Regular Expression.
老師的教導, 而學生當時沒有好好學習.. 需要用到時才偷偷的溜回去看老師的網頁..
真是慚愧... 慚愧之餘.... 還是趕快把語法記下來.. :p
取代法1: perl -pe 's/<?/<?php/g' 檔名
取代法2: perl -pe 's/<?/<?php/g' action.php > action-new.php
取代法3: perl -i -pe 's/<?/<?php/g' `find . -iname '*htm*'`
取代法3 後面的 find.. 可以改用其它你想改的檔名(ex: 改成 *.php)
以上三個範例都是要將 <? 改成 <?php 的做法..
只是 取代法3 能將所有目錄中.你想取代的檔案都取代到
(靠自己多嘗試學習吧!!)
此命令是要將 InnoDB 取代成 MyISM 並將原始檔案備份成 filename.sql.bak
perl -i.bak -pe 's#InnoDB#MyISAM#g' filename.sql
星期三, 十一月 23, 2005
MySQL Update 加字串進原始欄位中
MySQL 要對某個欄位做 Update, 而主要要做的事情, 是要將新增的資料塞在那個欄位前面或後面.
以前的做法都笨笨的 Select 出來, 再結合好塞回去, 原來有個很好用的 Function 可以解決這事情.
主要用的 Function 是 CONCAT(), (MySQL 內建函數).
ex: update T1 set t = CONCAT(t,'def'); // 把 def 加在此欄後面.
CONCAT = concatenate (連接)的意思.
星期六, 九月 10, 2005
Oracle 刪除 10分鐘前資料
Oracle 要刪除掉 10 分鐘前資料的語法,
delete from TableName where ColumnName < sysdate - 10/60/24
sysdate: Oracle 內建系統時間的參數(Define)
星期日, 六月 26, 2005
PHP 日期轉換
PHP 抓昨天日期的程式碼
date("d/m/y", time()-24*3600);
其它一些日期 code 的應用.
Mysql日期和時間函數不求人
所有 Mysql 日期函數 應該全都用到了吧.. XD
星期五, 六月 10, 2005
每 n 個字加 WBR
若是連續的英文字(或網址), 在整個頁面顯示上是不會斷行的, 會把整個頁面撐開.
這時後就要使用 <wbr> 的 tag(或塞空白), 大約每 30 個字就塞一個. 是塞空白可能會影響到原始資料, 還是加 <wbr> 比較好.
(閱讀全文)星期二, 五月 17, 2005
Perl 印出 hash 和 array
Perl 要印出 hash 的全部內容, 有以下幾種方法:
- while(my ($key, $val) = each(%hash)) { print "$key $val" }
- %hash = qw / car 600k bike 70k /; print $_ , $hash{$_} , "\n" foreach (keys %hash);
- print "$_ $hash{$_}\n" foreach (keys %hash);
- print "$_ $h{$_}\n" for keys %h;
Perl 印出 Array 的內容:
- print $_."\n" for @a;
- print @a;
- push @a, split for <>; print @a;
星期三, 五月 11, 2005
PHP get Global Varable
php 在 4.x 版以後要抓全域變數都要用 $_POST, $_GET, $_COOKIE... etc.
雖然只要在 php.ini 中, 去設定
register_globals 就可以了,
不過為了安全考量, 還是別這樣子改比較好,
但是自己懶得打那麼長的字怎麼辦?
所以還是來寫個小程式來搞定它.
這是全域的處理法, 還是不太建議使用,foreach ($_REQUEST as $key => $val) {
$$key = $val;
}
因為這就跟之前一樣意思了, 還是有限制的使用比較好,
自己一定知道前一頁是如何傳送變數過來的,
所以用以下此程式碼會比較好一點.
foreach ($_POST as $key => $val) {
$$key = $val;
}
$_POST 可改為 $_COOKIE, $_SESSION, $_GET ... 等.
星期三, 五月 11, 2005
php_flag in .htaccess
看了 php_flag in .htaccess 這篇文章, 相當的實用.
htaccess 還有很多的功能, 簡單的來列一些.
ex:
DirectoryIndex index.html index.htm index.php上面四行意思為.
AddType application/x-httpd-php .html .htm
php_value auto_prepend_file /.../refer.php
php_value default_charset utf-8
- 此頁面預設的頁面要抓哪個. 依序排列.
- 將 .html, .htm 也當 .php 一樣, 輸出前要經過處理.
- 在每個檔案前面都加上 refer.php
- 設定預設語系為 UTF-8
星期三, 五月 04, 2005
CSS and Html 編碼問題
CSS file 若是 Big5 編碼, 網頁頁面是 UTF-8 編碼, 會發現 CSS 完全沒有作用.
因為 瀏覽器會判斷不出來, 而無法轉換. 因此那 CSS 會 load 不進來.
CSS 樣式表的編碼 要 跟網頁編碼 都一樣才行.
星期二, 四月 26, 2005
Html: label (radio bottom)小技巧
<input type="radio" id="abc" /><label for="abc">這是oo</label>
<input type="radio" id="def" /><label for="def">這是xx</label>
<label><input type="radio">這是oo</label>
<label> <input type="radio">這是xx</label>
用 label tag 能做到, 並非一定要點到圓圈的 Radio Button才能選取, 只要點到文字就可以選擇到 radio 的圈圈了~~
使用 label
沒用 label
這是oo 這是xx


