Ctrl + f 와 같은 텍스트 검색

출처 : 자바월드

필요에 의해서 찾아봤는데 아무리 찾아도 없길래 올립니다…
——————————————————————————–

자기이름
찾기


/form>

위에껀 한번 찾고 말더군요. 위 소스 포함하면 계속 검색됩니다.

function click() {
if(event.keyCode==13) {
return findInPage(document.search.string.value);
return false;
}
}

클라이언트 브라우져에서 자동링크 만들기

거친마루

http://maniacamp.com/examples/client_autolink.html

보통 많은 종류의 게시판에서 url형태나 email 형태에 자동 링크를 걸어주는 정규식을 사용하고 있습니다.. 좀전에 친구가 jsp로 게시판을 만드는 과정에서 자동링크를 할 수 있는 방법을 물어오길래 클라이언트에서 할 수 있는 방법을 생각해봤습니다. 자바는 1.4부터 RegExp 패키지를 사용할 수 있거든요…

생각해보니.. 서버측 부하는 적게 걸리면서 같은 효과를 낼 수 있을꺼 같아 팁으로 올립니다.



폼체크 스크립트 lib.validate.js의 사용법은 http://maniacamp.com/examples/validate_howto.html 을 참조하세요

거친마루의 이메일은 comfuture@studyfriend.net 입니다.

php스쿨의 주소는 http://www.phpschool.com 입니다



게시판등에 적용할때는 내용을 출력할 td에 id를 부여해주고 autolink(‘id’); 형태로 사용하면 되겠지요 : )

시간(기간) 연장 – 유료사이트

유료사이트를 운영하다보면 날짜,시간으로 컨트롤할때가 많습니다. 그럴때 날짜를 더할때
사용하기 쉽게 만든건데요. 초보분들만 보시구요. 고수분들은 더 좋은 팁있으면
사정없이 딴지 달아주세요. ^_^

Function TimeLimit($plus){ //연장기간

$plus_date = mktime(0,0,0,date(“m”), date(“d”)+ $pluse , date(“y”)); //日에 연장기간 더하기

$get_date = getdate($plus_date); //위의 숫자를 날짜로 변환

$result_date = $get_date[year].”-“.$get_date[mon].”-“.$get_date[mday]; //0000-00-00

return $result_date

}

위처럼 작성후 페이지 코딩할때

$authdate = TimeLimit(‘183’);

이렇게 하시면 현재 날짜에서 183일을 더한 날짜를 구해줍니다.

현재날짜 : 2002-12-10
만료날짜 : 2003-6-11

팁이 될라나? ^^;

CrazyDilma ” ) 님아 지성 마무리 안한게 있어서염 ㅡㅡ^
전 개인적으로 유닉스타임을 즐겨 쓰는편인데 시간연장같은 경우 아래처럼 하면 어떨까 싶어서 답글 올려 봅니다.
그리구 자주 쓰이지 않을꺼 같은 부분 처리를 함수등을 이용해서 처리 한다는게 저로서는 처리속도및 시스템자원을 잡아먹는 부분이라 사뢰됩니다. ^^
위와 같이 시간연장 처리 부분이라면 그냥 단순히
$result_date = date(“Y-m-d”,mktime(0,0,0,date(“m”), date(“d”)+ $pluse , date(“y”)));
이와 같이 처리 하는것이 어떨까 하네여
CrazyDilma *^^* 즐거운밤 즐거운 프로그램 12/10 12:25:36

.. date(“Y-m-d”, time() + (86400*183));
요것도 같은것 12/10 13:35:51

knight™ 음…다른것도 올려봐여징…ㅎ,.ㅎ 12/10 18:30:30

석봉운 정리하자면,
Function TimeLimit($plus, $format=”Y-m-d”){ //연장기간
return date($format, time() + 86400 * $plus));
}

에러 디버깅

아래 부분을 복사해서 저장한 후 include해서 사용하시면 됩니다. 파일 3갠데요. 중요한 것은 common.php뿐입니다. 나머지 두개는 앞글에서 보여드렸던 에러를 만들어 내기 위한 파일들입니다.

testerror.php
include(‘./common.php’);
include(‘./garbage.php’);
$h = ‘test’;
foreach($h as $key=>$val) {
echo $val;
}
?>

garbage.php
$a = ‘hihi’;
$b = join(”, $a);
?>

common.php
//by hwang@yesnic.com
//error report file version 1.0
//사용후 문제점이나, 수정되었으면하는 사항이 있을 때는 메일 주시기 바랍니다.
//이 파일을 include하면, 좀더 구체적인 에러가 메일로 리포팅됩니다.

//이 파일을 무조건 include만 하면 됩니다. 고칠값은 딱 두가지인데,
//첫째는 $__err_report값이고, 둘째는 $__admin_email 값입니다.
//자세한 설명은 각 해당 부분의 주석을 참고 하시기 바랍니다.

//$__err_report
//1. ‘all’로 설정하면, 화면에도 보여주고 메일로도 에러 보고를 합니다.
//2. ‘mail’ 로 설정하면, 메일만 보냅니다.
//3. ‘show’ 로 설정하면, 화면에만 보여줍니다.
//4. ‘hide’ 에러를 무시합니다.
//이 파일을 include하기 전에 파일에 따라 설정을 바꿀 수 있게 하기 위해서 아래와 같이
//했습니다. 미리 설정을 한 후 include를 하면, 미리 설정한 값이 우선권을 가집니다.
if(empty($__err_report)) {
$__err_report = ‘show’;
}

//에러가 발생했을 때, 에러를 보고할 이메일 주소. 역시 미리 설정한 값이 우선권을 가집니다.
if(empty($__admin_email)) {
$__admin_email = “”;
}

//추가정보들.
//필요한 것들이 있으면, arr형태로 아래와 같이 추가하십시오.
$__err_array[“time”] = date(‘Y-m-d H:i:s’, time());
$__err_array[“SERVER_NAME”] = $_SERVER[“SERVER_NAME”];
$__err_array[“PHP_SELF”] = $_SERVER[“PHP_SELF”];
$__err_array[“REMOTE_ADDR”] = $_SERVER[“REMOTE_ADDR”];
$__err_array[“SESSION”] = $_SESSION;
$__err_array[“POST”] = $_POST;
$__err_array[“GET”] = $_GET;

//필요에 따라 넣으셔도 되지만, 이거 넣으면, 페이지 로딩시간이 꽤나 길어집니다.
//$__err_array[“REMOTE_HOST”] = gethostbyaddr($_SERVER[“REMOTE_ADDR”]);

//error handler와 shutdown function을 등록합니다.
set_error_handler(“_errorHandler”);
register_shutdown_function(“_funClose”);

function _funClose() {
global $__err_content;
//에러가 있을 경우에는 에러메시지를 만들어 주고 그렇지 않을 때는 프로그램이 종료됩니다.
if(isset($__err_content)) {
global $__admin_email, $__err_report, $__err_array;
$buf_arr = “

“;
//$__err_array에서 설정한 값들을 테이블로 만듭니다.
foreach($__err_array as $key=>$val) {
$buf_arr .= “

“;
}
$buf_arr .= “

“;
if(is_array($val)) {
ob_start();
echo “

";
var_dump($val);
$val = ob_get_contents();
echo "

“;
ob_end_clean();
$buf_arr .= $key . “

” . $val;
}elseif(empty($val)) {
$buf_arr .= $key . “
null“;

}else{
$buf_arr .= $key . “

” . $val;
}
$buf_arr .= “

“;
$__err_content = “

” . $__err_content. $buf_arr . “

“;

//__err_report의 값에 따라 메일을 보내거나 화면에 뿌려줍니다.
if($__err_report === ‘all’ || $__err_report === ‘mail’) {
if(!empty($__err_content)) {
mail($__admin_email, “ErrorReport”, $__err_content, “from:errorRepoter
Content-Type: text/html;charset=EUC-KRn”);
}
}
if($__err_report === ‘all’ || $__err_report === ‘show’) {
echo $__err_content;
}
}
}

function _errorHandler ($errno, $errstr, $errfile, $errline) {
global $__err_report, $__admin_email, $__err_content, $__err_array;
$__err_array[‘filename’][] = $errfile;
//$__err_report이 ‘hide’가 아닐경우, 에러 메시지를 만듭니다.
if (!($__err_report === ‘hide’)) {
$str = “

“;
switch ($errno) {
case E_NOTICE :
case E_USER_NOTICE :
$str .= “Notice: “;
break;
case E_USER_WARNING :
case E_WARNING :
$str .= “Warning: “;
break;
case E_USER_ERROR :
case E_ERROR :
$str .= “ERROR: “;
break;
default :
$str .= “Unknown Error($errno): “;
break;
}
$str .= “$errstr in $errfile on line $errline
“;
$str .= highlightFile($errfile, $errline, 5);
$str .= “

“;
$str .= “
“;
//생성된 메시지를 global변수에 저장합니다. 여러개의 에러가 있을 때를 대비하는 것입니다.
$__err_content .= $str;
}
}

function highlightFile($file, $err_line, $count)
{
$ret = ”;
$file = trim($file);
if (isset($file) && file_exists($file)){
// highlight_file로 지정된 파일을 $data값에 저장합니다.
ob_start();
highlight_file($file);
$data = ob_get_contents();
ob_end_clean();
// new line으로 각각을 구분하여 배열에 저장합니다.
$data_lines = explode(‘
‘,$data);

// 보여줄 파일의 시작 라인과 끝 라인을 지정합니다.
$from = $err_line – round($count/2);
$to = $from + $count;
if ($from < 0) {
$from = 0;
}
if ($to > count($data_lines)) {
$to = count($data_lines);
}
//지정된 라인만큼을 $ret에 저장합니다.
for ($i = $from; $i < $to; $i++) {
$k = $i + 1;
if($k==$err_line) {
$data_lines[$i] = ““.$data_lines[$i].”“;
}
$ret .= ‘

'.$k.'‘. $data_lines[$i] .”

“;
// 행의 글자수가 너무 많으면, 적당히 짤라냅니다.
if (strlen($data_lines[$i]) > 1000) {
$ret .= ‘
‘;
}
}
}
return $ret;
}

?>

PHP와 메이저도모를 이용한 대량메일 발송

리눅서

안녕하세요 리눅서 입니다.

QnA 게시판을 보다가 많은분이 대량메일 발송에 대한 문제를 가지고 있어 간단하게 제가 사용하는 팁을 올릴까 합니다.

먼저 PHP에서 MAIL함수나 소켓을 이용해서 대량의 메일을 발송할때 클라이언트 브라우저가 지속적으로 연결되어 있어야 하는 문제가 있습니다. 이러한 경우 브라우저의 타임아웃이나 기타의 이유로 메일을 발송하지 못하는 경우가 발생합니다.

먼저 필요한 프로그램은 아래와 같습니다.

1. majordomo
2. builk_mailer

컴파일 설치및 RPM 설치 어떠한 종류를 하셔도 됩니다.

메이저도모는 그룹 메일발송을 하는 기능을 가지고 있으며 관리자만 메일을 보낼수 있도록 하는 기능도 가지고 있습니다. 여러개의 그룹을 만들어 남자회원, 여자회원등로 구분하여 보낼수 있으며 상당한 빠른 처리능력을 가지고 있습니다.

벌크메일은 그룹회원에게 메일발송할때 도메인별로 소트를 하여 같은 도메인에 있는 회원에게는 한번의 접속으로 여러명에게 메일을 발송하는 기능을 가지고 있습니다.

두가지를 사용하면 하루 150,000통의 대량 메일이 가능할것 같습니다. 요즈음 처럼 성능이 좋은 환경이라면 300,000통 이상도 가능할것으로 보여 집니다.

예를들어 info 라는 그룹을 만들고 회원을 모두 파일에 위치하도록 합니다. 그리고 관리자만 메일을 보낼수 있도록 설정을 하시면 됩니다.

PHP 프로그램에서 메일을 보낼때는 info@xxx.com 으로 그룹에게 메일을 한통만 발송하면 메이저도모가 자동으로 메일을 발송해 줍니다. 메일이 정상적으로 발송되었는지 관리자에게 확인메일도 발송해 주고 메일을 발송하지 못한 회원의 리스트나 메일을 별도로 관리하는 기능도 있어 편리하다고 볼수 있습니다.

그리고 간단하게 대량 메일을 발송하고자 하는분은 개인계정을 이용하시면 될것 같습니다.

서버에 개인 계정을 두시고 .forward 파일을 만들어 회원의 전자우편주소를 기록합니다. 그리고 PHP에서 개인 계정으로 한통의 메일을 발송하고는 메일 발송이 끝나면 .forward 내용을 삭제하시기 바랍니다. 타인이 .forward 설정이된 계정으로 메일을 발송하면 똑같이 대량으로 메일이 발송되므로 심각한 트래픽을 유발할 수 있습니다.

또한 큐메일을 사용하는것도 좋은 방법중에 하나니다. 큐메일은 자동으로 도메인 소트 기능이 있어 현재 많은 사용자가 있는것으로 알고있습니다.

위의 내용은 98년도 부터 사용하든 방식이라 현재는 어떻게 사용하는지 모르겠지만 저는 개인적으로 대량 메일발송시 위의 방법을 사용하고 있습니다.

추운 겨울날씨 모두 따뜻하게 보내시와요