2009年12月15日 星期二

顯示process動態的指令

ps 顯示瞬間行程(process)的動態

ex:
ps ax | grep gzip #查看目前程序,僅查看gzip的關鍵字
=>27552 p1 R 9:50.50 gzip test.php

2009年12月8日 星期二

刪除檔案或資料夾

rm:刪除檔案
-f:指不問題否刪除
-i:指問是否刪除
ex:刪除data01_2009-12-07檔和data02_2009-12-07檔
rm -f data01_2009-12-07 data02_2009-12-07


rm -r:刪除資料夾
-f:指不問題否刪除
ex:刪除 test 資料夾
rm -r test 

rm -rf test

讓程式在背景執行

nohup確保執行程序能在登出系統之後繼續工作 &:指背景執行
nohup /usr/local/bin/php /home/data1/www/test.php &

2009年12月7日 星期一

crontab 設定每半個小時跑一次


crontab –e 編寫crontab
crontab –l 查詢crontab
分 時 日 月 週 工作
*/30 * * * * 指令 每30分鐘執行 =>會看第一次執行的時間,之後每30分鐘執行一次,因此並不一定是整點和30分時執行。

找出某台主機的IP

在執行輸入 cmd

在DOS介面輸入要查的網址
EX:ping www.google.com

即可得到IP
Pinging www.l.google.com [64.233.183.104] with 32 bytes of data:

2009年11月25日 星期三

壓縮檔案

tar zcvf 2006.tar.gz 2006*.txt
=>把2006開頭的txt檔壓縮成2006.tar.gz

tar xvzf test.tar.gz 

=>將test.tar.gz 壓縮檔解壓縮

tar zcvf 2006.tar.gz 2006*.txt && rm -f 2006*.txt
=>把2006開頭的txt檔壓縮成2006.tar.gz,壓縮成功後,把2006開頭的txt檔刪除

gzip 2006.*
=>把2006.開頭的檔案壓縮,每個檔會壓縮成一個,壓縮完後,原本的檔會刪除

gzip -d xxx.x
=>把xxx.x檔案解壓縮,解壓完後,原本的壓縮檔會刪除


gzip -dc xxx.x > data.txt
=>把xxx.x檔案解壓縮,解壓完後,原本的壓縮檔不會刪除,解壓的檔案為data.txt

參考資料:

2009年11月15日 星期日

找出3天前的日期

var arrd_ymd = '11/15/2009';
arrd_y = new Date(arrd_ymd);
arrd_y = arrd_y.valueOf();
arrd_y = arrd_y - 3 * 24 * 60 * 60 * 1000; //今天3天前的日期
arrd_30 = new Date(arrd_y);
var bef = arrd_30.getFullYear()+'-'+(arrd_30.getMonth()+1)+ '-'+arrd_30.getDate();

==>bef = '2009/11/11'

2009年11月5日 星期四

用shell寫ftp下載

建立 ftpDownLoad.sh
vi ftpDownLoad.sh

#!/bin/sh
#找出昨天的日期
yesterday=`date -v -1d +%m%d%Y`
#要下載的檔案名稱
filename="d"$yesterday.ZIP

#ftp server
ftpserver=140.1.1.1
#ftp user
ftpuser=user
#ftp passwork
ftppass=pass

#下載
/usr/local/bin/lftp $ftpserver -u $ftpuser,$ftppass <<ftpInput
cd field1/field2 #到遠端的此目錄下
lcd Lfield1/Lfield2 #到本機的此目錄下
get $filename #下載遠端field1/field2目錄下的$filename到本機的Lfield1/Lfield2目錄下
exit #離開ftp
ftpInput

執行此shell script
./ftpDownLoad.sh

2009年11月3日 星期二

2009年10月22日 星期四

讓php錯誤訊息顯示在網頁上

因為可能會把php.ini裡的display_errors設成off,這樣網頁有錯誤訊息就不會顯示
display_errors = Off

若要在某個網頁顯示錯誤訊息,可在程式加
ini_set('display_errors', 'On');

可以順便加 error_reporting(E_ALL | ~E_WARNING| ~E_NOTICE)

2009年10月20日 星期二

jquery+ajax用json回傳值

javascript:
<script language="JavaScript" src="json.js"> </script>
$(document).ready(function(){
 $("#lookfor_s").click(function(){
  var y = $("#s_year").val(); //年
  var m = $("#s_month").val(); //月
  $.ajax({
   type:"POST",
   url:"test.php",
   dataType:'json',
   data:"year="+y+"&month="+m,
   success:function(json){
    $('#show_1').html(json[0]);
    $('#show_2').html(json[2]);
   } //success
  }) //ajax
 });
});

html:
<input type="button" name="lookfor_s" value="查詢" id="lookfor_s"/>
<span id="show_1"></span>
<span id="show_2"></span>

php:
require_once ('JSON.php');
$j = new Services_JSON();
$return_data = array();
$return_data[0] = iconv("big5","UTF-8","這是");
$return_data[1] = "test";
$jsonString = $j->encode($return_data);
echo $jsonString;
exit;

參考資料:
http://blog.xuite.net/vexed/tech/26580605
http://liaosankai.pixnet.net/blog/post/16753266

2009年10月19日 星期一

reload時出現訊息

window.onbeforeunload = function conReload(){
  return "確定重新整理?";
}


2009年10月15日 星期四

找出這個月的最後一天

//找出下個月的第一天
$nextmonth = date('Y-m-01',strtotime(date("Y-m-d").' +1 month'));

//下個月的第一天的前一天即為這個月的最後一天
$lastday = date("Y-m-d", strtotime('-1 days', strtotime($nextmonth) ));

2009年10月9日 星期五

連到別的主機

在Linux下用/usr/bin/local/php 去執行 test.php,而 test.php 要連去另一個網頁,可用curl或file_get_contents()

不可用header("Location:http://abc/another_test.php");
因為header是給瀏覽器看的,/usr/bin/local/php並不是用瀏覽器去執行。

EX:
用curl:
//初始化 curl_init
$ch = curl_init('http://abc/another_test.php');
curl_exec($ch); //執行curl
curl_close($ch); //關閉curl

參考: http://tw.php.net/manual/en/function.curl-init.php

2009年10月7日 星期三

讀取網頁,並把資料寫入檔案

$file = "http://www.books.com.tw/";
$html = "";

$fo = fopen($file, "r");
while (!feof($fo)) {
 $html .= fgets($fo);
}
fclose($fo);
echo $html;
$TxtFileName = "test.html";
$File = fopen($TxtFileName,"w");
if ($File){
  fwrite($File,$html);
 fclose($File);
}

讓程式在背景執行

讓程式在背景執行,若關掉網頁,程式還是會繼續執行 -- 主機為Unix或Linux
1.
nohup指背景執行,把putty關掉不中斷command
exec('/usr/bin/nohup /usr/local/bin/php /home/www/php/intranet/BT/bt_acceptno_to_ack.php > /dev/null &');

2.
exec ('/usr/local/bin/php /home/www/php/intranet/BT/bt_acceptno_to_ack.php > /dev/null &');

重點為:> /dev/null & =>若沒寫,算是前景執行,因此網頁關掉,程式就停掉了。

2009年9月30日 星期三

列印

只要在html的button上寫onclick="print()"
EX:
<input type="button" name="btn1" value="列印" title="列印" onclick="print()"

部分列印(只列印div包起來的網頁):
html部分:
<div id="divs">
<P>adfdsbsdfds</P>
</div>
<input type="button" value="部分列印" onclick="printS(divs)">

Javascript部分:
//列印div包起來的部分並且列印完畢後自動關閉列印網頁
function printS(divs){
 var value = divs.innerHTML;
 var printPage = window.open("","printPage","");
 printPage.document.open();
 printPage.document.write("<HTML><head></head><BODY onload='window.print();window.close()'>");
 printPage.document.write(value);
 printPage.document.close("</BODY></HTML>");
}

來源網址:http://nievor.com/2008/07/31/javascript_print_preview/


轉址

javascript:
  location.href="abc.html";

2009年9月27日 星期日

split出現REG_EMPTY錯誤

$data = 0|0|236|235;
用split分割$buffer = split("|",$tmpdata);
出現:Warning: split() [function.split]: REG_EMPTY in. .....
這是因為 | 是正規中的保留字,所以要用 \|
改成 $buffer = split("\|",$tmpdata); 即可

設定時區

//設定時區-判斷date_default_timezone_set函式是否存
if (function_exists ( 'date_default_timezone_set' )){
  date_default_timezone_set('Asia/Taipei'); //PHP5設定時區, 在PHP4無法使用
} else {
  putenv("TZ=Asia/Taipei"); //PHP4設定時區的用法
}

2009年9月24日 星期四

顯示今天日期

var RightNow = new Date();
var RightY = RightNow.getFullYear();//年
var RightM = RightNow.getMonth()+1; //月-月份就會從 0 開始, 所以正確月份需加 1
RightM += ''; //轉成字串
//若月份長度為1,則前面補0
if (RightM.length == 1){
  RightM = '0'+RightM;
}
var RightD = RightNow.getDate(); //日
RightD += ''; //轉成字串
//若日長度為1,則前面補0
if (RightD.length == 1){
  RightD = '0'+RightD;
}
alert(RightY+'-'+RightM+'-'+RightD);
=>YYYY-MM-DD

數值轉成字串

資料來源:http://kourbatov.com/faq/converti.htm

a = a+'' // This converts a to string 
b += ''  // This converts b to string

計算字串長度

var str = 'abc';
alert(str.length);
=>3

var str = '測試';
alert(str.length);
=>2

2009年9月21日 星期一

div和span的差別

div:高度為內容物,寬度為整個網頁寬。
span:高、寬為內容物高寬。
div不可被包在span內

2009年9月16日 星期三

php寫入文字檔換行

//空白
fputs($fp,"str1\n");

//換行
fputs($fp,"str1\r\n");

2009年8月12日 星期三

continue

for($i=0; $i<3; $i++){
 echo $i.">>";
  for($j=0; $j<5; $j++){
  if ($j == 1) continue; //跳 j 下一筆
   echo $j;
 }
  echo "_________";
  echo "<br>";
}
==>
0>>0234_________
1>>0234_________
2>>0234_________

for($i=0; $i<3; $i++){
 echo $i.">>";
  for($j=0; $j<5; $j++){
   if ($i == 1) continue; //跳 i 下一筆
    echo $j;
  }
  echo "_________";
 echo "<br>"
}
==>
0>>01234_________
1>>_________
2>>01234_________

break

for($i=0; $i<3; $i++){
 echo $i.">>";
 for($j=0; $j<5; $j++){
   if ($j == 1) break 1; //跳出內回圈
    echo $j;
}
 echo "_________";
 echo "<br>";
}
==>
0>>0_________
1>>0_________
2>>0_________


for($i=0; $i<3; $i++){
 echo $i.">>";
   for($j=0; $j<5; $j++){
    if ($j == 1) break 2; //跳出外回圈
    echo $j;
   }
  echo "_________";
 echo "<br>";
}
==>
0>>0

2009年7月31日 星期五

給table或sp權限

sp_u_spname => sp的名稱 或 table 名稱
test_acc => 把權限給ap_role這個帳號或群組

grant all on dbo. sp_u_spname to test_acc
or
Grant all on book.dbo. sp_u_spname to test_acc

2009年7月6日 星期一

出現Fatal error Allowed memory size ....

出現Fatal error: Allowed memory size of 134217728 bytes exhausted (tried to allocate 77 bytes) in ......

應該是記憶體不夠

解決方式:
在程式加入 ini_set('memory_limit', '20M' );
或修改 php.ini (需重新啟動apache)
memory_limit = 20M

2009年6月20日 星期六

製作網址列的icon

可用 http://www.favicongenerator.com/ 製作icon
上傳想要用的圖片,大小為100像素x 100像素

html語法:
<link rel='shortcut icon' href='myicon.ico' >

2009年6月5日 星期五

取下個月1號的日期

$sdate = '2009-01-01';
date('Y-m-01',strtotime($sdate.' +1 month'));
==> 2009-02-01
==>這樣在31號的日期會有問題,如:今天為2009/10/31加1個月的話,會變成2009/12/1

可改成
$nextmonth = date("Y-m-01", mktime(0, 0, 0, date('m')+1, 28, date('Y')));

2009年5月28日 星期四

開機時讓Num Lock預設是亮的

開始->執行->輸入regedit->找到HKEY_USERS->.DEFAULT->Control Panel->Keyboard->InitialKeyboardIndicators 改成 2











2009年5月23日 星期六

變更預設瀏覽器

開始->控制台->新增或移除程式->設定程式存取及預設值
->自訂->選擇預設網頁瀏覽器->選擇你要的預設的瀏覽器

2009年5月22日 星期五

找出上個月的最後一天日期

$today = date("Y-m-01 00:00:00"); //這個月的1號
$todays = strtotime($today );
$up_month = strtotime('-1 days', $todays ); //這個月減1天,即上個月最後一天
$up_month_day = date("Y-m-d 00:00:00", $up_month);

echo $up_month_day;

2009年4月29日 星期三

php查詢sybase text字串被截斷的解決方式

sybase_query(”SET TEXTSIZE 65536″);

參考來源:http://www.sofee.cn/blog/2004/06/26/68/

continue 的作用

參考:http://www.jollen.org/php/jollen_php_book_40_continue.html

continue 在循環用来跳過本次循環中剩下的程式碼並開始执行下一次循環
EX:
for ($i = 0; $i <= 5; $i++) {
 if ($i == 3){
  continue;
 }
 echo $i;
}

answer:
1245

2009年4月25日 星期六

NB設定雙營幕

  1. 在桌面上點選右鍵->內容(R)->設定值->勾選將我的windows桌面延伸到這個監視器
  2. 可選1、2代表不同的監視圖,來設定螢幕解析度
  3. 參考網址:http://www.hayppyfuture.net/g/g010_2.htm



2009年4月19日 星期日

設radio button checked

ex:
//設定name為status且值為E的radio button checked
$("input[@name=status][@value=E]").attr("checked",true);

2009年4月18日 星期六

將電腦Autorun功能關閉











或 開始->控制台->系統管理工具->服務->Shell Hardware Detecion->把啟動類型改成已停止






2009年4月3日 星期五

ie 條件式註解,如<!--[if lte IE 7]>

參考:http://boohover.pixnet.net/blog/post/12309095

檔案上傳

PHP:
$tmp_Name = $_FILES["UserFile"]["tmp_name"];//server上的暫存名字
$file_Name = $_FILES["UserFile"]["name"]; //檔案名稱
$file_Size = $_FILES["UserFile"]["size"] / 1024; //檔案大小-轉換成KB
$file_Type = $_FILES["UserFile"]["type"]; //檔案類型
$file_Error = $_FILES["UserFile"]["error"]; //error message

$file_extension = explode("/", $file_Type);
$extension = $file_extension[1]; //副檔名
 
if (!file_exists("upload/".$file_Name)){
if (!@move_uploaded_file($tmp_Name,"upload/".$file_Name)){
   echo "上傳檔案失敗!";
}
//更名
$imageName = date(Ymdhis).".".$extension;
if (!rename('upload/'.$file_Name, 'upload/'.$imageName)){
 echo "檔案更名失敗!";
}
}else {
 echo "檔案已存在!";
}

HTML:
<form name="Form1" method="POST" action="uploadfile.php" enctype="multipart/form-data">
 上傳圖檔:<input type="file" name="UserFile" id="UserFile">
</form>

2009年4月2日 星期四

驗證檔案類型

var re = new RegExp(".(gif|jpg)$","i");
也可寫成 
var re = /(\.jpg|\.gif)$/i;
//i=>指不分大小寫
//g=>全域比對
//gi=>全域比對並忽略大小寫

if(! re.test(field.value)) {
 alert('只能上傳gif和jpg檔。'); 
 return false; 
}

Regular Expression (RegExp) in JavaScript

資料來源:http://blog.roodo.com/rocksaying/archives/2670695.html

要產生一個 RegExp 個體有兩種方式。
  1. 直接以斜線 (/) 包住 pattern ,例如 /^A/ 。
    注意不要再用單引號或雙引號包在斜線外圍,一但用了引號圍住,就只是一個 String 而非 RegExp 個體。 
  2. 向系統要求建立一個 RegExp 個體,即 new RegExp(pattern) ,
    引數 pattern 可以是一個字串也可以是另一個 RegExp 個體。第一種方法只能使用常值的 pattern ,我們不能用斜線包住一個變數或一個字串運算結果。
    如果 pattern 保存在變數之中,則必須使用第二種方式

2009年3月22日 星期日

2009年3月19日 星期四

CSS在FireFox與IE下呈現問題

IE7
*+html selector {css 設計內容}

IE5-IE6
* html selector {css 設計內容}

EX:
.plink {cursor:pointer;}  /* FF */
* html .plink {cursor:hand;}   /* for IE 6.0以前版本 */
*+html .plink {cursor:hand;}   /* for IE 7.0版本 */

參考資料:

2009年3月9日 星期一

php 型態轉換

  • (int)、(integer) => 轉換成整數
  • (real)、(double)、(float) => 轉換成浮點數
  • (string) => 轉換成字串
  • (array) => 轉換成陣列
  • (object) => 轉換成物件
EX:$c = (int) (123 / 4);

php track_errors

  • PHP程式需要取得錯誤訊息,可以在php.ini檔案開啟track_errors功能
  • 在找到track_errors後,將預設值Off改為On,如此就可以在PHP程式使用$php_errormsg變數取得錯誤訊息
    EX:echo "錯誤訊息:".$php_errormsg;

2009年3月2日 星期一

blockUI 在ie無法unblockUI解決方式

資料來源:http://insen.blogbus.com/logs/31793938.html
EX:
$('#myForm').ajaxForm({
 beforeSubmit:function(a,f,o){
  $.blockUI({ message: 'Please wait few sec...<img src="css/flexigrid/images/load.gif">' });
 },
 dataType:'html',
 success:function(data){
  alert(data);
  $(".blockUI").fadeOut("slow");
 }
});

2009年2月2日 星期一

php here doc syntax

here doc「 <<< 」=>「定界符號」

將「一堆字串」給傳入變數裡。
在「<<<」後面必需給一個指標,然後才是字串本身,最後還要以相同的指標來將它結束。作為結束的指標必需是相同的名稱,它可以是字母與數字結合起來的字串及"_"這個符號,但不能以一個非數字的字元或"_"做為開頭。
<?php
 $str = <<<EOD
 Example of string
 test tset....
EOD;
?>
在結束的EOD前面不可留有空白,且是獨立一行。

2009年1月29日 星期四

把css 檔案 include 至網頁

有兩種方法:

  1. link
  2. @import
  • 網頁在load時,用link會同時被load,而@import會等到所有頁面被load完時,再load 。
  • @import是CSS2.1提出的,所以較舊的brower不支援。
  • javascript無法控制@import的CSS

link的語法:
<link rel="stylesheet" type="text/css" href="css.css">

2009年1月27日 星期二

清除 IE 的 cache

IE->工具->網際網路選項->Temporary Internet files->刪除檔案

-

2009年1月26日 星期一

讓DreamWeaver也能用jQuery

  1. 先下載jQuery_API.mxp
  2. DW->命令->管理擴充功能
  3. 安裝新擴充功能,選擇剛才下載的檔案,重新開啟DW
  4. 重新開啟後,就會出現提示字

 ps.下載擴充功能至:http://www.adobe.com/tw/exchange/em_download/

2009年1月21日 星期三

用Spreadsheet_Excel_Writer讓cell裡的字換行

用Spreadsheet_Excel_Writer讓欄位像上圖一樣

require_once("PEAR/Writer.php");
//Excel檔名
$filename = "ExcelTest.xls";
$sheet_1 = "SHEET1";
$analys =new Analyse;
$workbook = new Spreadsheet_Excel_Writer(); //新增Excel
//sending HTTP headers
$workbook->send($filename);
$worksheet =& $workbook->addWorksheet($sheet_1); //新增sheet
$format_title_1 =& $workbook->addFormat();
$format_title_1 ->setTextWrap(); //折行
// \n和\x0A 指ALT+Enter
$worksheet->write(0,0,"這是\ntest",$format_title_1);
$worksheet->write(0,1,"這是\x0A測試",$format_title_1);
$workbook->close();

把資料存入EXCEL,並不下載

把資料匯至excel,並存放在server上
參考:pear
require_once("PEAR/Writer.php");
//Excel檔名
$filename = "ExcelText.xls";
$sheet_1 = "SHEET";
$analys =new Analyse;
$workbook = new Spreadsheet_Excel_Writer($filename); //新增Excel
$worksheet =& $workbook->addWorksheet($sheet_1); //新增sheet
$worksheet->write(0,0,"Error"); //寫資料至Excel
$workbook->close();
因為下載,所以不用寫 send

用pear寫資料下載excel

會出現視窗詢問,開啟或儲存檔案
參考:PEAR
require_once("PEAR/Writer.php");
//Excel檔名
$filename = "ExcelTest.xls";
$sheet_1 = "SHEET1";
$analys =new Analyse;
$workbook = new Spreadsheet_Excel_Writer(); //新增Excel
//sending HTTP headers
$workbook->send($filename);
$worksheet =& $workbook->addWorksheet($sheet_1); //新增sheet
$worksheet->write(0,0,"DATA"); //寫進資料
$workbook->close();

2009年1月17日 星期六

檔案下載,詢問你是否要下載檔案

參考網站:http://tw.php.net/header
     http://blog.roodo.com/jaceju/archives/805389.html

<?PHP
$file_path = "/localhost/downlaodfile.txt";

//把資料寫進檔案
fwrite($fp, "testtesttestetest");

//開啟檔案 =>w 把檔案開啟成寫入模式,檔案裡既存內容將全部遺失;若檔案不存在,PHP會建立它
if (!$fp = fopen($file_path, "w")){
 echo "開啟檔案失敗";
 exit;
}

//檔案大小
$file_size = filesize($file_path);

// fix for IE catching or PHP bug issue
header('Pragma: public');

// set expiration time
header('Expires: 0');

header('Last-Modified: ' . gmdate('D, d M Y H:i ') . ' GMT');

// browser must download file from server instead of cache HTTP/1.1
header('Cache-Control: must-revalidate, post-check=0, pre-check=0');

header('Cache-Control: private', false);

// force download dialog
header('Content-Type: application/octet-stream');

header('Content-Length: ' . $file_size);

// use the Content-Disposition header to supply a recommended filename and
// force the browser to display the save dialog.
// It will be called download.txt
header('Content-Disposition: attachment; filename="download.txt";');
header('Content-Transfer-Encoding: binary');

readfile($file_path); //開啟檔案
fclose($fp); //關閉檔案
?>

2009年1月6日 星期二

php 的 if else 寫法

$YORN = (3 == 3) ? "Y" : "N";
上面和下面意思是相同的
IF (3 == 3){
 $YORN = "Y";
}else{
 $YORN = "N";
}

2009年1月5日 星期一

Aptana設定行數

Window->Preference..->General->Editors->Text Editors的Show line numbers 打勾

2009年1月1日 星期四

判斷日期是否合法

JAVASCRIPT:
function checkDate(d)
{
 var y = parseInt(d.substr(0,4)); //年
 var m = parseInt(d.substr(4,2)); //月
 var n = parseInt(d.substr(6,2)); //日
 //值不可為空
 if (isNaN(y) isNaN(m) isNaN(n))
 {
  alert("不合法的日期!");
  return "Error";
 }
 if ((y>2100)(y<1950)(m>12)(m<1)(n>31)(n<1))
 {
  alert("不合法的日期!");
  return "Error";
 }
 if (((m==4)(m==6)(m==9)(m==11)) && (n>30))
 {
  alert("不合法的日期!");
  return "Error";
 }
 if (m==2)
 {
  if ((y%4)==0)
  {
   if (n>29)
   {
    alert("不合法的日期!");
    return "Error";
   }
  }else{
   if (n>28)
   {
    alert("不合法的日期!");
    return "Error";
   }
  }
 }


PHP:
checkdate:驗證日期是否有效
語法 : int checkdate (int month, int day, int year)
function check_Date($d)
{
 $y = substr($d,0,4);//年
 $m = substr($d,4,2);//月
 $n = substr($d,6,2);//日
 return checkdate($m,$n,$y); //return true or false
}