··조회 22,974
라이브러리에 관해..
안녕 하세요!
프로그래밍을 하면서 의문이 생겼는데, 라이브러리,유틸등 어떻게 찾아보는 것인지요?
잘 찾아볼수만 있으면 프로그래밍에 상당히 도움이 많이 될듯한데 책에서 찾아보아도 라이브러리 함수등.. 개념적인 부분밖에 안나오네요.
실제로 무엇무엇이 있고 필요할때 쓰고싶은데 어떻게 해야 할까요?
막연하기만 합니다.
프로그래밍을 하면서 의문이 생겼는데, 라이브러리,유틸등 어떻게 찾아보는 것인지요?
잘 찾아볼수만 있으면 프로그래밍에 상당히 도움이 많이 될듯한데 책에서 찾아보아도 라이브러리 함수등.. 개념적인 부분밖에 안나오네요.
실제로 무엇무엇이 있고 필요할때 쓰고싶은데 어떻게 해야 할까요?
막연하기만 합니다.
댓글 1
어떤 언어를 사용해서 프로그래밍하시는지 모르겠지만, 각 언어마다 상용 또는 사용자들이 직접 만들어 공유하는 라이브러리들이 참 많습니다.
그러나 제가 프로그래머가 아니어서 잘 모르겠지만 PHP와 관련된 공개 라이브러리는 그 수가 그리 많지 않은 것 같습니다. GD 라이브러리나 기타 그래픽 라이브러리 등이 있지만 제가 사용할 기회가 거의 없었고, 차트 작성 라이브러리, 서로 다른 종류의 DB에 연결할 수 있도록 만든 라이브러리 등도 있습니다.
그리고 프로그래밍하면서 자주 사용하는 것들을 함수처럼 모아 두고 사용하는 경우도 있습니다.
아래는 김관중님이 자주 쓰신다는 라이브러리입니다.
//
// Filename : FUNC.PHP (그냥 제가 쓰는 파일명입니다.)
// Author : Spectator(Kim Kwan Joong)
//
// require나 include시 중복선언 방지를 위한 부분
if( !$__FUNC_PHP__ )
{
$__FUNC_PHP__ = 1;
// 처음 몇개는 자바스크립트를 처리하는 함수입니다.
// 실제로 가장 자주 사용되는 함수들이죠.
// (일일이 <script>...</script> 입력하는 노가다란...-_-;)
// GoBack() : 이전페이지로 바로 갑니다.
// GoBack($msg) : $msg를 경고메시지로 출력하고 갑니다.
function GoBack($msg = "")
{
echo "<script language=javascript>n<!--n";
if( $msg )
echo "alert('" . $msg . "');n";
echo "history.back();n";
echo "// -->n</script>n";
}
// CloseWin() : 현재 윈도우창을 닫습니다.
// CloseWin($msg) : $msg를 경고메시지로 출력하고 닫습니다.
// CloseWin($msg,1) :
// $msg를 경고메시지로 출력하고 원래 자신을 연 부모윈도우를
// Reload시킵니다. (바뀐 내용을 적용시킬때 사용)
function CloseWin($msg = "", $refresh = 0)
{
echo "<script language=javascript>n<!--n";
if( $msg )
echo "alert('" . $msg . "');n";
if( $refresh )
echo "opener.location.reload();n";
echo "top.close();n";
echo "// -->n</script>n";
}
// GoTo($url) : 현재 페이지를 $url로 대치시킵니다.
// 현재 페이지는 history상에 남지 않습니다.
// (입력받은 정보를 DB등에 저장하고 난 뒤에 다른 페이지로 이동할때
// 저장하는 페이지가 히스토리에 남으면 "뒤로"를 눌렀을 때 좋지
// 않은 일이 발생하겠죠...)
// GoTo($url, $msg) : $msg를 경고메시지로 출력하고 이동합니다.
// GoTo($url, $msg, $target) : $msg를 경고메시지로 출력하고
// $target에 해당하는 프레임을 $url로 대치시킵니다.
function GoTo($url, $msg = "", $target = "")
{
echo "<script language=javascript>n<!--n";
if( $msg )
echo "alert('" . $msg . "');n";
if( $target )
echo $target . ".";
echo "location.replace('" . $url . "');n";
echo "// -->n</script>n";
}
// Alert($msg) : 단순히 $msg를 경고메시지로 출력합니다.
// (확인을 누르면 계속 그 뒤의 처리를 계속합니다)
function Alert($msg)
{
echo "<script language=javascript>n<!--n";
echo "alert('" . $msg . "');n";
echo "// -->n</script>n";
}
// FreadAll($filename) : $filename에 해당하는 파일내용 전체를 읽어서
// 문자열로 리턴해줍니다. (비슷한 readfile()이나 file()함수가 있지만
// readfile()은 무조건 표준출력으로 가고 file()은 각 행이 배열로
// 읽혀지기 때문에 전체파일을 지정한 변수로 읽어들일 때는 이 함수를
// 사용합니다.)
function FreadAll($filename)
{
if( !file_exists($filename) )
return "";
$fp = fopen($filename, "r");
$text = fread($fp, filesize($filename));
fclose($fp);
return $text;
}
// FwriteAll($filename, $text) : FreadAll()과 반대로 $text 문자열
// 전체를 $filename으로 된 파일로 저장합니다.
function FwriteAll($filename, $text)
{
$fp = fopen($filename, "w");
$ret = fwrite($fp, $text);
fclose($fp);
return $ret;
}
// html_format($text) : 본문의 일부로 나오는 내용이 전체 html에
// 영향을 미치는 것을 막거나 특정태그의 사용을 방지하기 위해
// 화면에 출력하기 전에 태그를 무효화시킬 때 사용하는 함수입니다.
// (Daum에서 특정태그를 방지하는 것을 보고 만들어봤습니다.)
// 기본적으로 nl2br()로 행구분을 <br>로 처리합니다.
// html_format($text, 0) : nl2br()처리만 하지 않습니다.
function html_format($text, $break = 1)
{
$text = stripslashes($text);
$text = ereg_replace("<?", "<?", $text);
$text = ereg_replace("?>", "?>", $text);
$text = eregi_replace("<html", "<x-html", $text);
$text = eregi_replace("</html", "</x-html", $text);
$text = eregi_replace("<body", "<x-body", $text);
$text = eregi_replace("</body", "</x-body", $text);
$text = eregi_replace("<head", "<x-head", $text);
$text = eregi_replace("</head", "</x-head", $text);
$text = eregi_replace("<title", "<x-title", $text);
$text = eregi_replace("</title", "</x-title", $text);
$text = eregi_replace("<script", "<x-script", $text);
$text = eregi_replace("</script", "</x-script", $text);
$text = eregi_replace("<form", "<x-form", $text);
$text = eregi_replace("</form", "</x-form", $text);
$text = eregi_replace("<select", "<x-select", $text);
$text = eregi_replace("</select", "</x-select", $text);
$text = eregi_replace("<textarea", "<x-textarea", $text);
$text = eregi_replace("</textarea", "</x-textarea", $text);
$text = eregi_replace("<input", "<x-input", $text);
// 공백만큼 공간을 넓혀주기 위한 부분입니다.
// ereg_replace(" "," ", $text)처럼 사용하게 되면
// 브라우저에서 자동 행구분을 못해주기 때문에 문자열의 길이만큼
// 표의 폭이 늘어나거나 하는 부작용이 생길 수 있습니다.
// 이 부분은 필요에 따라 사용하시면 됩니다.
$text = ereg_replace(" "," ",$text);
if( $break )
$text = nl2br($text);
return $text;
}
// LongCut($s, $l) : 문자열 $s를 $l만큼 잘라내고 "..."을 뒤에
// 붙여줍니다. 게시판 리스트 등에서 긴 문자열을 짧게 보여줄 때
// 사용합니다. 무조건 잘라내면 한글이 중간에 걸렸을 때 "?"로
// 처리되기 때문에 뒤에서부터 스캔해서 잘리지 않도록 처리했습니다.
function LongCut($s, $l)
{
if( strlen($s) <= ($l+3) )
return $s;
if( ord($s[$l-1]) > 127 )
{
$nc = 2;
while( ord($s[$l-$nc]) > 127 )
$nc++;
$l -= !($nc & 1);
}
return substr($s, 0, $l) . "...";
}
// ParseSession($sess) : $sess로 받은 세션값(서버상에 저장되는 파일)
// 을 name => value로 이루어진 array로 리턴합니다.
// 회원인증을 세션으로 처리한다고 해도 현재 접속해 있는 회원들이
// 누가 있는지 알아보려고 하면 서버에 저장되어 있는 세션파일들을
// 직접 읽어들여 처리하지 않으면 알 길이 없어서 세션파일을 분석한
// 끝에 만들어봤습니다. 왜 이 함수가 제공되지 않는지 궁금하군요.
// 만약 $sess가 'id|s:5:"guest";name|s:6:"방문자";' 이렇게 돼있을때
// $buf = ParseSession($sess);
// => $buf[id] = "guest"; $buf[name] = "방문자"; 이렇게 됩니다.
function ParseSession($sess)
{
$p = explode(";", $sess);
$m = count($p);
for($i=0; $i < ($m-1); $i++)
{
for($k=$i; !strstr($p[$i+1], "|") && (($i+1) < $m); $i++)
$p[$k] .= ";" . $p[$i+1];
$t[] = $p[$k];
}
$n = count($t);
for($i=0; $i < $n; $i++)
{
$t1 = explode("|", $t[$i]);
$t2 = explode(":", $t1[1]);
$buf[$t1[0]] = substr($t2[2], 1, $t2[1]);
}
return $buf;
}
// GetExtension($filename) : $filename에서 마지막 "."이후의
// 확장자만 잘라서 소문자로 리턴한다.
function GetExtension($filename)
{
$filename = trim($filename);
$right = strrchr($filename, ".");
return strtolower(substr($right,1));
}
// GetOtherName($filename) : $filename이 "name.ext" 일 경우
// "name1.ext"를 리턴해줍니다. 업로드된 파일을 저장하려고 할 때
// 동일한 파일이 있을 경우 이런 식으로 이름부분에만 1을 붙여서
// 저장함으로써 확장자가 그대로 적용되도록 할 수 있습니다.
function GetOtherName($filename)
{
$filename = trim($filename);
$l_all = strlen($filename);
$right = strrchr($filename, ".");
$l_left = $l_all - strlen($right);
return substr($filename,0,$l_left) . "1" . $right;
}
} // End of if( !$__FUNC_PHP__ )