PHP/Python/Ruby

템플릿언더바(Template Underscore)

페이지 정보

profile_image
작성자 최고관리자 작성일 13-09-10 18:23 조회 2,581 댓글 0

본문

템플릿언더바(Template Underscore)의 사용 목적은 PHP 프로그램으로부터 프레젠테이션 로직을 효과적으로 분리하는 데 있습니다. 이렇게 함으로써 프로그래머는 페이지출력의 흐름에 따라 PHP코드를 삽입하는 형식 대신에, 페이지구성요소를 모듈화하고 사용할 요소들을 인덱싱하는 형태의 메인프로세스를 작성할 수 있으며, 디자이너에게는 동적데이터 처리를 위한 간결한 인터페이스를 제공하게 됩니다. 웹개발시 MVC 패턴을 적용하는 일반적인 목적은 링크를 참고하시기 바랍니다.  템플릿언더바의 주요 특징 - 템플릿파일을 PHP 파일로 변환하여, 실제 서비스시 PHP 코어 엔진이 변환파일을 실행하여 출력하고, 변환파일과 처리로직의 최적화로 강력한 성능을 발휘합니다.
- 템플릿 파일 단위의 캐쉬지원으로 회원제 싸이트에서도 부분적인 캐쉬적용이 가능하며, 캐쉬갱신로직과 사용방법이 효율적이고 편리합니다.
- 자바스크립트 문법을 따르는 표현식 언어 (EL: Expression Language) 를 지원하고 표현식 내에서 PHP 함수를 자유롭게 사용할 수 있습니다.
- 사용자 정의한 PHP 함수 또는 클래스를 플러그인 파일로 저장만 하면 템플릿내에서 사용할 수 있으며 필요한 만큼만 정확하게 자동 인클루드됩니다.
- 제어구문의 최적화와 일관성, 극단적으로 단순한 템플릿 명령어셋, 상대경로보정필터, 꼬리말형 주석, 매크로 등 편리한 개발환경을 제공하며 디자이너와의 작업분리에도 효과적입니다.
- 템플릿 제어구문이나 기타 오류가 있을 때, 가능한 모든 메시지를 출력하여 편리한 디버깅환경을 제공합니다.

댓글목록

등록된 댓글이 없습니다.

게시물 검색
전체 32건 1 페이지
  • cURL JSON data를 GET , POST로 php파일로 전단 받기
      $url = "http://adsfasdsdafasdfsdaf/?adsfadsf";   $curl = curl_init();  $timeout = 5; // 0으로 하면 시간제한이 없다.  curl_setopt($curl, CURLOPT_URL, $url);curl_setopt($curl, CURLOPT_CUSTOMREQUEST, "GET");  curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);  curl_setopt($curl, CURLOPT_CONNECTTIMEOUT, $timeout);  $result =  curl_exec($curl);   $data = json_decode($result);print_r($data); //echo $data->total_count;  curl_close($curl);exit;   $ch = curl_init();$data_string = "storeName=반갑다&skip=0&cateCode=5&limit=10";$url = "http://adsfasdsdafasdfsdaf/";curl_setopt($ch, CURLOPT_URL,$url);curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "POST");curl_setopt($ch, CURLOPT_POSTFIELDS, $data_string);curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);  $result = curl_exec($ch);$result = json_decode($result);print_r($result);curl_close ($ch);  exit;…
    작성자최고관리자 시간 01-05 조회 13588
  • Anaconda 설치하기 - Python 활용


    파이썬 기반의 데이터 분석에 특화된 각종 OpenSource 패키지들을 모아놓은 개발 플랫폼이다. 한마디로 규정짓긴 어렵지만 아무튼 그동안 파이썬을 교육용언어, 다루기 쉬운언어, 프로토 타이핑용 스크립트 언어정도로만 봐왔다면 Anaconda라는 것은 본격적으로 파이썬의 능력을 제대로 활용하는 거대한 프로젝트 같은 개념으로 볼수 있다. Panda, Numpy, Numba, Scipy, IPython, GPGPU, 과학, 수학, 데이터 분석등과 관련된 수많은 수준높은 패키지들을 정말 간단하게 설치할 수 있도록 해놓았으니 나의 파이썬 수준을 한단계 업그레이드 해보고자 한다면 이 Anaconda를 꼭 설치해보아야 할것이다.홈페이지 : https://www.continuum.io/Anaconda 설치가 완료 되었다면 사용법을 익혀보도록 하자 ( http://conda.pydata.org/docs/get-started.html )테스트 드라이브30분간 conda 시운전을 시작하려면 빠른설치 가이드를 따라서 Anaconda 또는 Miniconda의 다운로드, 설치하기, 업데이트하기를 완료해야만 한다.알아두세요: 설치후에는 터미널을 다시 열어야 합니다. ( 윈도우제외 )Conda 시운전을 해보자:CONDA 사용하기, 가장먼저 Anaconda 또는 Miniconda가 제대로 설치되었는지 확인해보고 최신버전으로 업데이트 되었는지 체크해볼것이다. ( 3분소요 )환경성정 관리. 다음으로 우리는 몇가지 환경설정을 만들어 보는 놀이를 통해서 환경설정들을 바꾸는 법을 배울것이다. 또한 지금 어떤 환경설정을 사용중인지 확인하는것과 환경설정의 백업본을 만들어 볼 것이다. ( 10분소요 )파이썬 관리. 그 다음 우리는 어떤 버전의 파이썬이 설치가능한지 확인해보고 다른 버전의 파이썬을 설치하여 서로다른 버전의 파이썬을 전환해서 사용해 볼것이다. ( 4분 소요 )패키지 관리. 패키지를 가지고 몇가지 실습을 해보자. 1) 설치된  패키지 목록확인, 2) 사용가능한 패키지 목록확인, 3) conda install을 사용하여 패키지 설치/제거. 4) conda install로 설치되지 않는 패키지들은 Anaconda.org를 검색해 볼것이다. 5) 그래도 설치가 되지 않는 패키지들은 pip 패키지 매니저로 설치를 해볼것이다. 또한 Continuum의 상용패키지 IOPro 30일 시험판을 설치해볼 것이다. ( 10분소요 )패키지, 환경설정, CONDA 제거하기. 원한다면 테스트용 패키지, 환경설정, anaconda를 지우는 것을 끝으로 시운전을 마칠것이다. ( 3분 소요 )총 30분 소요팁: 어떠한 명령어든 설명서를 보기 원할때 언제든지  --help 명령어를 쳐보세요. 예를 들면 conda update 명령어에 관해서 알고 싶다면 아래와 같이 해보세요.:conda update --help1. conda 관리하기Conda는 패키지관리자와 환경설정 관리자 모두를 가지고 있다. 패키지 관리자는 패키지를 찾거나 설치하는데 도움을 준다. 그러나 당신은 현재 사용중인 파이썬과는 다른버전의 파이썬에 설치할 패키지를 사용하길 원한다고 가정해 봅시다. 단지 몇가지 명령만으로 다른 버전의 파이썬을 실행하는데 완벽히 분리된 환경을 설정할 수 있고 정상적인 환경에서 평소에 사용하던 파이썬을 실행할 수 있습니다. 이것이 conda가 가진 환경관리자의 힘입니다.팀: 리눅스, OS X 또는 Windows 커멘드 프롬프트 무엇을 사용하던 따로 언급이 없다면 터미널창에서 conda 명령어는 모두 같습니다.conda가 설치되었는지 확인해보기제대로 진행된것인지 확인하기 위해, Anaconda 설치가 성공하였는지 확인해 보기위해 터미널 창에 아래와 같이 입력해보자:conda --versionConda는 이와같이 설치된 버전 번호를 출력할 것입니다.: conda 3.11.0알아두세요: 만약 에러메시지가 출력되었다면, Anaconda 또는 Miniconda 설치 했던것과 같은 사용자 계정으로 로그인 했는지 확인해보고 설치후에 터미널창을 닫았다가 다시 열었는지 확인해보자.최신 버전으로 Conda 업데이트 하기다음으로 conda를 업그레이드 하기위해 conda update명령을 사용해보자conda update condaConda는 버전들을 비교하고 설치 가능한 것들을 알려줄것이다. 도한 자동적으로 업데이트 되었거나 업데이트로 수정된 패키지들에 관해서 알려줄것이다.만약 conda의 새로운 버전이 가능하다면, Y를 눌러 업데이트:Proceed ([y]/n)? yconda 업데이트가 완료되었으면 다음장으로 넘어가자.2. 환경설정 관리하기자 몇가지 환경설정을 만들어보고 환경설정을 바꾸어 보자.환경설정 생성과 활성화어떤 이름이든 conda create 명령을 사용해서 원하는 이름으로 생성해보자:conda create --name snowflakes biopython이 예제는 Biopython 프로그램과 /envs/snowflakes라는 이름의 새로운 환경설정을 생성할것이다.팁: 2개의 대쉬문자(--) 뒤에 사용되는 많은 옵션들이  한개의 대쉬문자(-)와 첫글자로 줄여쓸 수 있다. 그래서 --name 옵션과  -n 옵션은 같고 --envs 와 -e 역시 같은 의미이다. 줄여쓸수 있는 명령의 목록을 보려면 conda --help 또는 conda -h.새로운 환경설정 활성화 하기:Linux, OS X: source activate snowflakesWindows: activate snowflakes알아두세요: 환경설정들은 기본적으로 conda가 설치된 디렉토리 내부에 envs 디렉토리로 설치된다. 다른 디렉토리를 정할수 있으니 자세히 알고 싶다면  conda create --help 팁: 우리는 파이썬의 버전을 정하지 않았기 때문에 conda를 다운받고 설치할때 사용한것과 같은 버전을 설치할것입니다.두번째 환결설정 생성하기이번 시간엔 새로운 이름의 환경설정을 만들어보고 다른버전의 파이썬을 설치하고 Astroid와 Babel라는 이름의 패키지들을 설치해봅시다.conda create --name bunnies python=3 astroid babel이 예제는 /envs/bunnies에 Python 3가 설치되고 Astroid와 Babel 패키지가 포함된  새로운 두번째 환경설정을 생성할 것입니다.팁: 이 환경설정에서 사용하길 원하는 모든 프로그램은 동시에 설치하세요. 한번에 하나씩 설치하는 것은 의존성 충돌을 일으킬 수 있습니다.팁: conda create 명령으로 더많은 것을 추가 할수있습니다, 자세한 내용은 conda create --help 를 참조하세요.모든 환경설정 목록자, 지금까지 설치한 환경설정들은 확인해봅시다. 확인은 conda environment info 명령어를 사용한다:conda info --envs아래와 같이 환경설정 목록을 볼수 있을 것입니다.conda environments:     snowflakes          * /home/username/miniconda/envs/snowflakes     bunnies               /home/username/miniconda/envs/bunnies      root                  /home/username/miniconda현재 환경설정 확인하기많은 환경설정들중 현재 사용중인것은 어떤것일까, snowflakes 아니면 bunnies일까? 알아보려면 다시 같은 명령을 쳐보자:conda info --envs모든 환경설정이 표시되고 프롬프트 앞쪽 괄호안에 현재 환경의 이름이 표시된다.(snowflakes)알아두세요: 또한 환경설정 목록들 중에서 현재 활성화된 환경설정 이름 앞에는 별표(*)가 붙는다. 윗쪽에 "모든 환경설정 목록"을 보세요.다른 환경설정으로 전환하기 ( 활성화 / 비활성화 )다른 환경설정으로 바꾸려면 아래와 같이 환경설정 이름을 입력해 보세요(활성화):Linux, OS X: source activate bunniesWindows: activate bunnies현재 환경설정을 비활성화 하려면:Linux, OS X: source deactivateWindows: deactivate팁: 환경설정이 비활성화 되면, 프롬프트 앞에 더이상 (bunnies) 는 보이지 않을 것입니다.환경설정 복사본 만들기클론을 생성하여 환경설정 복사본을 만듭니다. 이 예제에서 snowflakes 복제하여 flowers라는 이름의 사본을 만들겁니다.:conda create --name flowers --clone snowflakes복사본이 제대로 만들어졌는지 확인해보자:conda info --envs현재 3개의 환경설정 목록이 출력되어야 정상이다: flowers, bunnies, 그리고 snowflakes.환경설정 지우기만약 flowers라는 이름이 마음에 들지 않았다면 아래와 같이 삭제할 수 있다:conda remove --name flowers --allflowers 환경설정이 잘 지워졌는지 확인해보려면 아래와 같이 입력해보자:conda info --envsFlowers는 더이상 환경설정 목록에 존재하지 않으므로 지워졌다는것을 알수 있습니다.환경설정에 관해 좀더 배워보기conda의 또다른 명령을 배우기 위해  --help 명령을 입력해 보자:conda remove --help3. 파이썬 관리하기Conda는 파이썬을 여타 패키지들과 동등하게 취급때문에 다중 설치, 업데이트 및 관리가 매우 쉽습니다.첫째로 어떤 버전의 파이썬이 설치 가능한지 확인해보자:conda search --full-name pythonconda search python 명령을 사용하여 "python" 이라는 단어가 포함된 모든 패키지 목록을 보거나  --full-name 옵션을 추가하면 전체이름이 "python"과 정확하게 일치할때에만 표시하도록 할수도 있습니다.다른 버전의 파이썬 설치하기자, 프로그래밍을 배우기 위해 파이썬 3가 필요하지만 파이썬 2.7 버전의 환경을 업데이트하여 덮어쓰기를 원하지 않는다고 해보자. 아래와 같이 snakes 라는 이름의 새로운 환경을 만들고 활성화 할수 있고 파이썬 3의 최신버전을 설치할수 있다:conda create --name snakes python=3Linux, OS X: source activate snakesWindows: activate snakes팁: 환경설정 이름을 정할때 python3 와 같은 이름이 재미는 없지만 직관적인 이름이 현명하다.추가된 환경설정 확인하기snakes라는 이름의 환경설정이 제대로 추가되었는지 확인해보려면 아래와 같이 명령어를 입력해보자:conda info --envsConda는 모든 환경목록을 출력한다,  with the current environment shown in (parentheses) in front of your prompt: (snakes)Verify Python version in new environmentVerify that the snakes environment uses Python version 3:python --versionUse a different version of PythonTo switch to the new environment with a different version of Python, you simply need to activate it. Let’s switch back to the default, 2.7:Linux, OS X: source activate snowflakesWindows: activate snowflakesVerify Python version in environmentVerify that the snowflakes environment uses the same Python version used when you installed conda:python --versionDeactivate this environmentAfter you are finished working in the snowflakes environment, deactivate this environment and revert your PATH to its previous state:Linux, OS X: source deactivateWindows: …
    작성자최고관리자 시간 12-30 조회 4329
  • php 내장함수 정리1
    날짜 및 시간 관련함수

    *time()
    --- 현재 시각을 timestamp값으로 구한다.
    -방법: time()
    *date()
    --- 사용자가 지정한 형태로 시간을 표시. 특정시간의 날짜와 요일등을 배열로 리턴한다.
    -방법: date("표시할 시간의 포맷형태","특정한 timestamp값")

    $in_date = date("Y-m-d H:i:s",time()); //date 형식예
    $out_time = strtotime($write_date); //timestamp 값으로 변경

    *mktime()
    --- 지정된 날짜를 timestamp값으로 변환한다.
    -방법: mktime(시,분,초,월,일,년)
    *checkdate()
    --- 날짜와 시간이 올바른 범위 안에 있는지 검사한다.
    -방법: checkdate(월,일,년)
    *getdate()
    --- 특정timestamp값으로 시간,요일,날짜정보를 배열로 반환한다.
    -방법: getdate(timestamp값) 또는 getdate()
    *gettimeofday()
    --- 현재 시스템의 현재 시간 정보를 배열로 리턴한다.
    -방법: gettimeofday()
    *gmmktime()
    --- 그리니치표준 시간으로 지정한 날짜의 timestamp값을 리턴한다.
    -방법: gmmktime(시,분,초,월,일,년)
    *strftime()
    --- 특정한 포맷으로 날짜 정보를 출력하는데 언어를 지정할수 있다.
    -방법: strftime("표시할 시간의 포맷형태","특정시간의 timestamp값")
    *microtime()
    --- 현재시간의 마이크로타임 값과 timestamp값을 표시한다.
    -방법: microtime()
    *localtime()
    --- 현재 서버의 로컬 타임을 표시
    -방법: localtime() 또는 localtime("timestamp값")



    2. 문자열 처리함수
    *addslashes()
    --- 작은따옴표 큰따옴표와 같은 특정문자 앞에 역슬래시 문자를 붙인다.
    -방법: addslashes()
    *stripslashes()
    --- allslashes로 역슬래시 처리된 문자를 원상태로 되돌린다.
    -방법: stripslashes()
    *htmlspecialchars()
    --- HTML코드를 소스 그대로 출력해준다.
    -방법: htmlspecialchars()
    *nl2br()
    --- 문자열에 포함된 개행 문자를 태그로 모두 바꿔준다.
    -방법: nl2br()
    *echo()
    --- 문자열 출력
    -방법: echo("변수명" 또는 "문자열")
    *sprintf()
    --- 포맷 문자열을 통해 지정해 준 포맷으로 문자열을 표시한다.
    -방법: sprintf("포맷","변수명")
    *printf()
    --- 지정할 수 있는 포맷에 따라 문자열을 출력한다.
    -방법: printf("포맷","변수명")
    *explode()
    --- 문자열을 지정해준 구분자로 분리하여 배열에 저장한다.
    -방법: explode("구분자","문자열인수")
    *implode()
    --- 구분자로 나누어 배열에 담은 문자열을 다시 지정해준 구분자로 연결하여 전체 문자열을 반환한다.
    -방법: implode("구분자",배열변수명)
    *join()
    --- implode()와 동일한 기능을 수행한다.
    -방법: join("/", "배열변수명")
    *split()
    --- 주어진 문자열을 정규표현식의 패턴에 따라 분리하여 배열에 저장한다.
    -방법: implode("정규표현식","문자열")
    *strcmp()
    --- 두개의 문자열을 비교하여 참이면1, 거짓이면 0을 반환한다.
    -방법: strcmp("문자열","문자열") 또는 strcmp("문자열","변수명") 또는 strcmp(변수명, 변수명)
    *substr()
    --- 문자열에서 특정시작 문자부터 길이만큼의 문자열을 추출하여 반환한다.
    -방법: substr("문자열", 시작문자번호, 문자열의 길이)
    *strchr()
    --- 문자열이 처음으로 나타나는 위치부터 끝까지 반환
    -방법: strchr("문자열","찾을 문자열")
    *strstr()
    ---strchr()함수와 동일한 수행을 한다.
    -방법: strstr("문자열","찾을 문자열")
    *strrchr()
    --- 문자열이 마지막으로 나타나는 위치부터 끝까지 반환한다.
    -방법: strrchr("문자열","찾을문자열")
    *strpos()
    --- 문자열 대신 처음으로 나타나는 위치를 숫자로 반환, 이때 숫자는 0부터 시작.
    -방법: strpos("문자열","찾을 문자열")
    *strrpos()
    --- 찾고자 하는 문자열에서 마지막으로 나타나는 위치를 반환한다.
    -방법: strrpos("문자열", "찾을 문자열")
    *strlen()
    --- 문자열의 길이를 반환한다.
    -방법: strlen($변수명) 또는 strlen("문자열")
    *strtolower()
    --- 알파벳 대문자를 모두 소문자로 바꾸어 반환한다.
    -방법: strtolower("문자열")
    *strtoupper()
    --- 알파벳 대문자를 소문자로 바꾸어 반환한다.
    -방법: strtoupper("문자열")
    *ucfirst()
    --- 알파벳 문자열의 첫 글자를 대문자로 반환한다.
    -방법: unfirst("문자열")
    *ucwords()
    --- 알파벳 문자열의 첫 글자를 대문자로 반환한다.
    -방법: ucwords("문자열")
    *strrev()
    --- 인자로 전달한 문자열의 순서를 역전시킨다.
    -방법: strrev("문자열")
    *strtr()
    --- 문자열에서 변경하고자 하는 문자열을 변경할문자열로 1:1 변경해준다.
    -방법: strtr("문자열","변경하고자하는 문자열","변경할 문자열")
    *str_replace
    --- 문자열 중에 변경하고자 하는 문자열을 찾아 변환한다.
    -방법: str_replace("찾을 문자열","변경할 문자열","문자열 원본")
    *chop()
    --- 문자열의 뒷부분의 공백 문자를 제거한 후 반환한다.
    -방법: chop("문자열")
    *trim()
    --- 문자열의 앞과 뒤에 있는 공백을 제거한 후 문자열을 반환한다.
    -방법: trim("문자열")
    *quotemeta()
    --- 메타문자 앞에 역슬래시를 붙인다.
    -방법: quotemeta()
    *ord/chr()
    --- ord()함수는 문자열에서 첫번째 문자에 아스키코드값을 반환하고 chr()함수는 아스키함수에 해당하는 문자를 반환한다.
    -방법: ord("문자열"), chr("아스키값")
    *parse_str()
    --- get방식과 같은 형태의 변수형을 변수와 값으로 받을 수 있게 해준다.
    -방법: parse_str(변수명)



    3.파일관련함수
    *fopen()
    --- 로컬경로의 파일이나 url경로의 파일을 읽기 모드나 쓰기 모드로 열어준다.
    -방법: fopen("절대경로명/파일", "모드")또는 fopen("url주소", "모드")
    *fclose()
    --- fopen으로 열린 파일을 닫는다.
    -방법: fclose($fp)
    *fread()
    --- 파일포인터가 가리키는 파일의 내용을 지정한 크기만큼 읽어 들인다.
    -방법:fread($fp,"읽어들일 바이트")
    *feof()
    --- 현재 파일 포인터가 파일의 끝인지를 알려주는 함수
    -방법: feof($fp)
    *fgets()
    --- 파일을 읽어올때 한줄씩 읽어온다.
    -방법: fgets($fp,"읽어들일 바이트")
    *fputs()
    --- 파일을 a 또는 w 모드로 열어 문자열을 파일에 기록한다.
    -방법: fputs($fp, "문자열")
    *fwirte()
    --- 파일을 기록한다.
    -방법: fwrite($fp, "문자열")
    *fpassthru()
    --- 파일포인터의 현재 위치에서 파일의 끝까지 읽어 들이도록 한다.
    -방법: fpassthru($fp)
    *readfile()
    --- fpassthru와 비슷하지만 fopen()없이 직접 바로 파일을 읽어들일 수 있다. 읽어들인 파일의 절대경로를 포함한다.
    -방법: readfile("파일의 절대경로 또는 상대경로/파일명")
    *fgetc()
    --- 파일로부터 한문자를 읽어들인다.
    -방법: fgetc($fp)
    *filesize()
    --- 파일의 크기를 바이트수로 반환한다.
    -방법: filesize("파일경로/파일명")
    *file_exists()
    --- 파일이름으로 지정한 파일이 존재하는지 검사한다.
    -방법: file_exists("파일경로/파일명")
    *is_file()
    --- 파일이름으로 지정한 이름이 파일면 true를 반환한다.
    -방법: is_file("파일경로/파일명")
    *is_dir()
    --- 파일이름으로 지정한 이름이 디렉토리일경우 true를 반환한다.
    -방법: is_dir("파일경로/파일명")
    *is_link()
    --- 파일이름으로 지정한 이름이 심볼릭 링크일경우 true를 반환한다.
    -방법: is_link("파일경로/파일명")
    *is_escutable()
    --- 파일이름으로 지정한 파일이 실행 가능한 파일이면 true를 반환한다.
    -방법: is_excutable("파일경로/파일명")
    *is_readable()
    --- 파일이름으로 지정한 파일이나 디렉토리가 읽기 가능한경우 true를 반환한다
    -방법: is_readable("파일경로/파일명 또는 디렉토리명")
    *is_writeable()
    --- 파일이름으로 지정한 파일이나 디렉토리가 쓰기 가능한 경우 true를 반환한다
    -방법: is_writeable("파일경로/파일명 또는 디렉토리명")
    *copy()
    --- 파일을 복사하고 제대로 수행이 되면 true를 반환한다.
    -방법: copy("파일경로/복사할 파일명", "파일경로/복사된 파일명")
    *rename()
    --- 파일을 이름을 바꾼다. 제대로 수행이 되면 true를 반환한다.
    -방법: rename("파일경로/변경할 파일명", "파일경로/변경후 파일명")
    *unlink()
    --- 파일을 삭제한다. 제대로 수행될 경우 true를 반환한다.
    -방법: unlink("파일경로/삭제할 파일명")
    *mkdir()
    --- 디렉토리를 생상하고 동시에 권한도 함께 지정할 수 있다.
    -방법: mkdir("경로/디렉토리명")
    *rmdir()
    --- 디렉토리 삭제
    -방법: rmdir("경로/디렉토리명")
    *basename()
    --- 경로명과 파일명을 받아 파일명만을 반환한다.
    -방법: basename("파일경로/파일명")
    *dirname()
    --- 경로명과 파일명을 받아 경로명만을 반환한다.
    -방법: dirname("파일경로/파일명")
    *file()
    --- 줄단위로 읽어서 각 줄으 문자열을 배열로 하여 반환한다.
    -방법: dirname("파일경로/파일명")



    4.디렉토리 관련함수
    *opendir()
    --- 지정한 디렉토리에 대한 핸들을 얻는다.
    -방법: opendir("디렉토리 경로")
    *closedir()
    --- opendir()함수 호출로 열어둔 디렉토리에 대한 핸들을 닫는다.
    -방법: closedir($od)
    *readdir()
    --- 디렉토리에 있는 모든 디렉토리 및 파일들의 이름을 읽어 배열의 형태로 반환
    -방법: readdir($od)
    *rewinddir()
    --- 디렉토리 핸들의 포인터 위치를 제일 처음으로 되돌린다.
    -방법: rewinddir($od)
    *chdir()
    --- 지저한 디렉토리로 바꾼다.
    -방법: chdir("경로명/디렉토리명")
    *dir()
    --- 디렉토리 관련 함수를 사용할 수 있는 클래스
    -방법: dir("경로/디렉토리명")



    5. URL관련함수
    *parse_url()
    --- url을 입력하면 해당 url에 대한 정보를 연관 배열로 저장하여 반환
    -방법: parse_url("URL주소")
    *urlencode()
    --- 데이터를 url인코딩해준다.
    -방법: urlencode("문자열")
    *urldecode()
    --- url을 통해 넘어온 값 중 인코딩된 문자열을 디코딩한다.
    -방법: urldecode("문자열")



    6.변수 및 수학 관련함수
    *gettype()
    --- 변수형을 반환한다.
    -방법: gettype("변수명")
    *settype()
    --- 변수형을 변환한다.
    -방법: settype("변수명", "변수타입")
    *intval()
    --- 변수값을 정수형 값으로 변환
    -방법: intval("변수값")
    *doubleval()
    --- 변수값을 실수형 값으로 변환한다.
    -방법: doubleval("변수값")
    *strval()
    --- 변수를 문자형 값으로 변환한다.
    -방법: strval("변수값")
    *isset()
    --- 변수가 존재하는지 확인한다.
    -방법: isset("변수명")
    *unset()
    --- 변수를 삭제한다.
    -방법: unset("변수명")
    *empty()
    --- 변수에 값이 존재하는지 확인하여 없으면 true를 있으면 false를 반환한다.
    -방법: empty("변수명")
    *is_array()
    --- 변수의 형이 배열인지 확인한다.
    -방법: is_array("변수명")
    *is_double
    --- 변수의 형이 더블형인지 확인한다.
    -방법: is_double("변수명")
    *abs()
    --- 변수의 절대값을 반환
    -방법: abs("변수명")
    *round()
    --- 변수의 반올림한 값을 구한다.
    -방법: round("변수명")
    *ceil()
    --- 변수 값의 무조건 올림 값을 구한다.
    -방법: ceil("변수명")
    *floor()
    --- 변수값의 무조건 내림 값을 구한다.
    -방법: floor("변수명")
    *pow()
    --- 인자 값만큼 제곱승 한 값을 구한다.
    -방법: pow("변수명", "제곱할 횟수")
    *max & min()
    --- 최대값과 최소값을 구한다.
    -방법: max("숫자값", "숫자값",...) min("숫자값", "숫자값",...)



    7.기타 알아두어야 할 함수
    *count()/sizeof()
    --- 배열의 크기를 구한다.
    -방법: count("변수명") sizeof("변수명")
    *each()/list()
    --- 배열의 내용을 출력할때 사용한다.
    -방법: each("배열변수명"), list("배열의 인자를 받을 변수명", "배열의 인자를 받을 변수명"...)
    *end()/next()/reset()
    --- 현재 배열의 포인터를 끝이나 다음으로 이동시킨다. reset은 배열포인터를 다시 처음으로 되돌린다.
    -방법: end("배열변수명") next("배열변수명")
    *exec()
    --- 리눅스 서버의 내부 명령어를 사용하게 한다.
    -방법: exec("리눅스명령어", "결과를 저장할 변수명" ,"에러발생시 저장할 변수명")
    *number_format()
    --- 천단위마다 ","를 붙여준다.
    -방법: number_format("변수명", "소수점자리수", "소수점 표시마크변경", "천단위 표시 마크변경")
    *show_source() / highlight_string()
    --- php파일의 소스를 보여준다.
    -방법: show_source("경로명/파일명") highlight_string("변수명")
    *uniqid()
    --- 유일한 아이디 값을 만들어준다
    -방법: uniqid()…
    작성자최고관리자 시간 03-16 조회 4175
  • PHP로 트위터에 글 등록하기
    트위터 예약 발송, 대량 발송 등을 구현하고 싶었는데, 봇 운영 툴이나 Buffer 같은 서비스로는 딱 필요한 것이 없어서, PHP로 구현해봤다. 구현이라고 하기에는 민망할 정도로 라이브러리가 너무 좋음 이미지까지 업로드가 되어 매우 유용하게 쓰고 있다. 먼저, https://github.com/jublonet/codebird-php에서 codebird 라이브러리를 다운 받는다. 그리고 https://apps.twitter.com 에서 앱을 등록한 후, 권한을 Read and Write로 설정하고 소스에 4개 데이터를 대입하면 된다.  1234567891011<?    include_once('codebird.php');    \Codebird\Codebird::setConsumerKey(“API key”, “API secret”);    $cb = \Codebird\Codebird::getInstance();    $cb->setToken(“Access token”, “Access token secret”);        $status = "테스트용 트윗입니다";    $filename = "http://www.dev-diary.com/logo.png";        $cb->statuses_updateWithMedia(array('status' => $status, 'media[]' => $filename));    ?>…
    작성자최고관리자 시간 01-10 조회 3930
  • 파이썬으로 배우는 알고리즘 트레이딩
    파이썬으로 배우는 알고리즘 트레이딩지은이 : 유부장, 조대표최종 편집일시 : 2017년 8월 7일 2:00 오후저작권 :  1,407 명이 추천파이썬 (Python)을 사용하여 대신 증권의 Cybos Plus, 이베스트투자증권의 xingAPI, 키움증권의 Open API+ 연동을 통한 시스템 트레이딩 기초를 다룬다.연습은 지식이라는 보물상자를 여는 열쇠다. - 토마스 풀러 -…
    작성자최고관리자 시간 01-02 조회 3698
  • 아파치와 PHP 버전 정보 숨기기 - 프록시도구에의한 패킷정보 누출 방지
    보안은, 공격자에게 유용한 정보를 차단하는 것부터 시작합니다. 시스템을 공격하려고 하는 공격자는, 먼저 그 시스템이 어떤 OS와 어플리케이션을 쓰고 있는지그리고 그 버전은 어떻게 되는지에 대한 정보부터 수집하게 마련입니다. 소위 '해커들의 언더그라운드'에서는 각 OS의 커널 및 어플리케이션의 버전에 따른 취약점이공유되게 마련입니다. 따라서 어플리케이션을 어떤 것을 쓰는지, 버전은 어떻게 되는지 등의정보는 크래커들에게 아주 유용한 정보가 될 수 있으므로 반드시 차단해야 합니다. 그러면, 버전 정보를 그냥 냅뒀을 경우 어떤 상황이 발생하는지를 예를 들겠습니다.아래 표처럼, 포트 스캐너를 돌리면 그 시스템에 대한 매우 자세한 정보가 노출됩니다. 80World Wide Web HTTPHTTP/1.1 200 OK Date: Fri, 29 Sep 2006 16:12:15 GMT Server: Apache/1.3.37 (Unix) PHP/4.4.4 X-Powered-By: PHP/4.4.4 Set-Cookie: PHPSESSID=f5bbd59d436d7c79a62a90e174d33f3c; path=/ Expires: Mon, 26 Jul 1997 05:00:00 GMT Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0 Pragma: no-cache cache-contril: no-cache,must-revalidate,max-age=0 Last-Modified: Wed 29 Jun 2005 07:42:36 GMT ETag: "Wed 29 Jun 2005 07:42:36" Connection: close Content-Type: text/html; charset=euc-kr  이 글에서는 아파치와 PHP의 버전 정보를 숨기는 법에 대해 다루겠습니다.  1. 아파치 버전 정보 숨기기 아파치의 경우 httpd.conf 파일에 ServerTokens 라는 옵션이 있습니다.만약 httpd.conf 에 ServerTokens 옵션이 없을 경우에는 추가해 주면 됩니다. 이 옵션의 문법은 다음과 같습니다. ServerTokens Prod[uctOnly] ([] 안은 생략 가능함) 이 문법에서 사용할 수 있는 옵션은 다음과 같습니다. ServerTokens Prod[uctOnly] : Apache 라는 것만 보여줌 ServerTokens Min[imal] : Apache 버전만 보여줌 ServerTokens OS : 아파치 버전과 운영체제를 보여줌 ServerTokens Full (또는 지시하지 않았을 때) : 모두 보여줌 ServerTokens 옵션은 아파치 버전 1.3 이후에서 사용할수 있으며, ProductOnly 키워드는 아파치 버전 1.3.12 이후에 추가되었습니다. 원하는 옵션을 입력한 후 저장합니다. 2. PHP 버전 정보 숨기기 PHP 버전 정보를 숨기려면 php.ini 파일을 열고 아래 옵션을 찾아 바꾸어 주면 됩니다.디폴트 값은 아래와 같이 설정되어 있습니다. expose_php = On 여기서 On을 Off로 바꿔 저장한 후 아파치 데몬을 재시작합니다.그러면, 결과를 확인해 보도록 하겠습니다.  3. 결과 80World Wide Web HTTPHTTP/1.1 200 OK Date: Fri, 29 Sep 2006 16:44:12 GMT Server: Apache Set-Cookie: PHPSESSID=70fe38030c4f8a4897941882b764f46e; path=/ Expires: Mon, 26 Jul 1997 05:00:00 GMT Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0 Pragma: no-cache cache-contril: no-cache,must-revalidate,max-age=0 Last-Modified: Wed 29 Jun 2005 07:42:36 GMT ETag: "Wed 29 Jun 2005 07:42:36" Connection: close Content-Type: text/html; charset=euc-kr  이처럼, 웹 서버의 종류가 아파치라는 것까지만 나올 뿐, 아파치와 PHP 버전은 표시되지 않는 것을 확인할 수 있습니다. 출처 : http://cafe.naver.com/linuxcare/10046…
    작성자최고관리자 시간 04-10 조회 3680
  • 시드 128 + CBC + PKCS5
    SEED는 한국 인터넷 진흥원의 완벽한 국내 기술로 개발 된 암호화 알고리즘입니다. PHP는 전환을 위해 mibany 님 감사드립니다. CBC 모드로 작업하고 64 비트 환경에서 작동합니다. 발견 된 소스 코드는 공개되지 않았으며, 고등 법원에서도 고등학생은 공개되지 않습니다.x86 / x64 플랫폼 지원CBC (Cipher-block chaining) 운영 모드 지원EUC-KR, UTF-8 문자 시간제 지원…
    작성자최고관리자 시간 08-03 조회 3558
  • R에서 파이썬까지…데이터과학 학습 사이트 8곳
    어디서 뭘 배울까?데이터사이언스는 아직 논의가 진행 중인 학문이다. 마땅히 대학에 ‘데이터과학’과가 있는 것도 아니다. 특히 국내에서는 오프라인으로 배울 수 있는 곳이 많지 않다. 하지만 온라인이라면 배울 수 있는 곳이 많다. 데이터과학 강좌 가운데 오픈소스 커리큘럼이 있다. 여기서 무료로 데이터과학의 이론과 기술 기초를 다져나갈 수 있다. ‘입문’에 초점을 두고 총 5개의 카테고리의 강좌를 모았다. 슬프게도 모두 영어 강좌다.데이터 과학 입문R, 파이썬 프로그래밍기계학습(머신러닝)통계학시각화R 배우는 까페http://cafe.naver.com/lovetokenshttp://cafe391.daum.net/_c21_/home?grpid=5G5…
    작성자최고관리자 시간 06-30 조회 3318
  • php 내장함수 정리2
    abs() 절대값을 리턴한다
    acos() 라디안으로 주어진 값을 아크코사인값을 리턴한다
    addcslashes() 문자열앞에 역슬레쉬를 추가한다
    addslashes() ,",\ 앞에 역슬래쉬를 추가한다
    array() 배열을 만든다
    array_count_values() 배열안의 매게변수와 동일한 값이 몇번들어있는지 리턴한다
    array_flip() 배열의 키와값을 바꾼다
    array_keys() 배열의모든키를 반환한다.
    array_merge() 두개이상의 배열을 합칩니다.
    array_pad() 새로운요소를 추가합니다.
    array_pop() 배열의 마지막요소를 삭제하고 리턴합니다.
    array_push() 배열의 마지막에 하나이상의 요소를 추가합니다.
    array_reverse() 배열을 역순으로 뒤바꿉니다.
    array_shift() 배열의 처음요소를 없애고 리턴한다.
    array_splice() 배열의 일부분을 대체한다.
    array_unshift() 배열맨앞에 하나이상의 요소를 추가합니다.
    array_values() 키값을제외하고 값을 배열로 반환한다
    array_walk() 배열의 모든요소에 함수를 적용한다.
    arsort() 키와값의 관계를 유지하고 값의역순으로 정렬한다
    asin() 라디안값을 아크사인값으로 리턴한다
    asort() 키와값의 관계를 유지하면서 값을 정렬한다.
    atan() 라디안값을 아크탄젠트값으로 리턴한다
    atan2() y/x 의 아크탄젠트값을 리턴한다
    base64_decode() MINE base64로 인코딩된 것을 디코딩한다.
    base64_encode() MINE base64로 인코딩한다
    basename() 파일경로에서 파일이름만 반환한다.
    base_convert() 진법을 변환한다.
    bin2hex() 2진수를 16진수로 반환한다
    bindec() 2진수인 인자를 10진수로 리턴한다
    ceil() 메게변수의 올림값을 리턴한다
    checkdnsrr() 인터넷 호스트 네임이나 IP 어드레스에 대응되는 DNS 레코드를 체크함
    chgrp() 파일그룹을 변경한다.
    chmod() 파일모드를 변경한다.
    chop() 뒤쪽공백을 제거한다.
    chown() 파일소유자를 변환한다.
    chr() 아스키에 해당하는 문자를 리턴한다
    chunk_split() 문자열을 작은 문자열로 분할한다
    clearstatcache() 파일 상태캐시를 삭제한다.
    compact() 변수의 이름과 값을 가지는 배열을 만든다
    convert_cyr_string() 키릴문자셋을 다른문자로 변환한다.
    copy() 파일을 복사한다.
    cos() 코사인값을 리턴한다
    count() 변수의 개수를 리턴합니다.
    crc32() 문자열로된 CRC32 다항식을 계산한다
    crypt() 문자열을 DES 암호화방법으로 암호화한다
    current() 포인터가 가르키는 값을 리턴합니다
    date() 주어진 함수의 타임스탬프를 지정한 포맷으로 변환한다
    decbin() 메게변수 10진수를 2진수로 리턴한다
    dechex() 16진수로 리턴한다
    decoct() 8진수로 리턴한다
    deg2rad() 각도를 동일한 라디안값으로 구한다
    dirname() 주어진 경로의 디렉토리 목록을 반환한다.
    diskfreespace() 디렉토리의 사용가능한 용량을 리턴한다
    doubleval() 변수의 실수(double)값을 구한다
    each() 포인터가 가르키는 키와값을 리턴한다
    echo() 문자열을 출력한다.
    empty() 변수의 설정여부를 리턴한다.
    end() 포인터를 마지막으로 옮긴다.
    exp() 자연대수 2의 arg승을 구한다
    explode() 문자열은 분리해서 배열로반 환한다
    extract() 배열에서 키와값을 변수와값으로 추출한다
    fclose() 열려진 파일을 닫는다.
    feof() 파일포인터가 끝에 있는지 검사한다
    fgetc() 파일포인터의 한문자를 반환한다.
    fgetcsv() 한줄을 읽고 CSV에 맞게 변환한다.
    fgets() 지정된 파일에서 한 줄을 읽어온다
    floor() 내림값을 리턴한다
    getimagesize() gif,jpg,png의 이미지크기를 반환한다
    getrandmax() rand()함수에의한 리턴값의 최대를 리턴한다
    gettype() 인자로 사용된 변수의 타입을 리턴한다
    get_html_translation_table() 내부적으로 사용된 변환테이블을 반환한다
    get_meta_tags() 파일에서 메타테그를 추출해배열로 반환한다
    hexdec() 16진수를 10진수로 리턴한다
    htmlentities() 해당되는 모든문자를 HTML엔티티형태로 변환한다
    htmlspecialchars() 특수문자를 HTML엔티티형태로 바꾼다
    imagearc() 타원을 그린다.
    imagechar() 수평으로 한문자를 그린다
    imagecolorallocate() 이미지에 색을 할당한다
    imagecolorat() 이미지 픽셀의 색을 리턴한다
    imagecolorclosest() 비슷한 색을 리턴한다
    imagecolorexact() 특정색과 같은색을 리턴한다
    imagecolorresolve() 같은,대체할수있는 가까운색을 리턴한다
    imagecolorset() index을 지정한 rgb로 대체한다
    imagecolorsforindex() index의 rgb값을 배열로 리턴한다
    imagecolorstotal() 색의 갯수를 리턴한다
    imagecolortransparent() 색을 투명하게 바꾼다
    imagecopyresized() 이미지의 부분을 복사하고 크기조정을 한다
    imagecreate() 새로운 이미지를 생성한다
    imagecreatefromgif() 파일로부터 이미지 id를 리턴한다
    imagedashedline() 점선을 그린다.
    imagedestroy() 이미지id를 없앤다
    imagefill() 색으로 채운다
    imagefilledpolygon() 다각형을 그린다.
    imagefilledrectangle() 직사각형을 그린다
    imagefilltoborder() col색으로채운다
    imagefontheight() 폰트의 높이를 리턴한다
    imagefontwidth() 폰트의 넓이를 리턴한다.
    imagegif() 브라우저나 파일로 gif형식으로 출력한다
    imageinterlace() 인터레스의 기능을 on,off한다
    imageline() 선을 그립니다.
    imageloadfont() 새로운 폰트를 불러온다.
    imagepolygon() 다각형을 그린다
    imagepsbbox() 포스트스크립타입1의 글꼴을 사용해 텍스트경계를지정한다
    imagepsencodefont() 글꼴의 문자 인코딩 벡터를 변경한다
    imagepsfreefont() 포스트스크립타입1폰트를 위해 사용된 메모리를해제한다
    imagepsloadfont() 파일로부터 포스트스크립타입1글꼴을 로드한다
    imagepstext() 이미지에 포스트스크립타입1글꼴로 문자열을 그린다
    imagerectangle() 사각형을 그린다
    imagesetpixel() 지정된 좌표에 픽셀 한개를 출력한다
    imagestring() 문자열을 가로로 그린다
    imagestringup() 문자열을 세로로 그린다
    imagesx() 이미지의 가로크기를 구한다
    imagesy() 이미지의 세로크기를 구한다
    ImageTTFBBox() 트루타입글꼴의 경계 영역을 계산해 반환한다
    ImageTTFText() 트루타입글꼴로 문자열을 출력한다
    implode() 지정된문자를포함해 배열을 하나의 문자열로 연결한다
    intval() 변수가 가지고 있는 정수값을 리턴한다
    in_array() 배열에서 needle을 찾아서 있으면 true, 없으면 false를 리턴한다
    isset() 변수의 설정 여부 확인
    is_array() 배열여부 확인
    is_double () 인자의 타입이 Double형배열인지 확인
    is_float() 인자의 타입이 float형인지 확인
    is_int() 인자의 타입이 int형인지 확인
    is_integer () 인자의 타입이 integer형인지 확인
    is_long() 인자의 타입이 long형인지 확인
    is_object() 인자가 객체인지 확인
    is_real() 인자의 타입이 double형인지 확인
    is_string() 인자로 사용된 변수가 문자열인지 확인
    join() impolde()함수와 동일
    key() 포인터가 가르키는 위치의 키값을 리턴한다
    krsort() 배열을 키값의 역순으로 정렬합니다.
    ksort() 배열의키값을기준으로 정렬합니다.
    list() 변수를 배열처럼 사용한다
    log() 자연로그값을 리턴한다
    log10() 상용로그값을 리턴한다
    ltrim() 문자열의 앞부분에 있는 공백 문자를 제거한다.
    max() 인자들중 가장큰 값을 리턴한다
    md5() 문자열의 MD5 해시를 계산한다
    metaphone() 문자열의 메타폰키를 계산한다
    min() 인자들중 가장작은값을 리턴한다
    mktime() 주어진 날짜를 타임스탬프로 변환한다.
    mt_getrandmax() mt_rand()에 의해 리턴될 수 있는 최대값을 리턴한다
    mt_rand() 난수를 리턴한다
    mt_srand() 난수발생기를 초기화한다
    mysql_affected_rows() 최근 궈리작업으로 처리된 행의 수를 구한다.
    mysql_change_user() 사용자를 변경한다.
    mysql_close() 연결을 닫는다.
    mysql_connect() 서버에 접속한다.
    mysql_create_db 데이터베이스를 생성한다.
    mysql_data_seek() 내부적인 결과 포인트를 이동한다.
    mysql_db_query() 질의를 전송한다.
    mysql_drop_db() 데이터베이스를 삭제한다.
    mysql_fetch_array() 쿼리 결과배열은 한줄씩 리턴한다.
    mysql_fetch_field() 결과로부터 열 정보를 얻어서 객체로 반환한다.
    mysql_fetch_lengths() 결과로부터 가 출력의 길이를 반환한다.
    mysql_fetch_object() 행의 결과를 객체로 반환한다.
    mysql_fetch_row() 쿼리결과를 한행씩 스칼라 배열로 리턴한다.
    mysql_field_flags() 특정 필드의 flag 들을 구한다
    mysql_field_len() 특정 필드의 길이를 리턴한다.
    mysql_field_name() 결과로부터 특정 필드 이름을 반환한다.
    mysql_field_seek() 특정 필드의 오프셋으로 위치를 이동한다.
    mysql_field_table() 특정 필드의 table의 이름을 리턴한다
    mysql_field_type() 특정 필드의 type을 리턴한다
    mysql_free_result() 인자값을 메모리에서 지웁니다.
    mysql_insert_id() 삽입에 의해 생성된 인덱스넘버를 리턴한다
    mysql_list_dbs() DB 리스트를 구한다.
    mysql_list_fields () 필드의 리스트를 구한다.
    mysql_list_tables() DB내의 테이블 리스트의 포인터를 리턴한다.
    mysql_num_fields() 쿼리결과내의 필두수를 리턴한다.
    mysql_num_rows() 질의결과의 행수를 리턴한다.
    mysql_pconnect() 디비서버에 지속적인 연결을한다.
    mysql_query() 질의 보낸다.
    mysql_result() 결과에서 데이터를 구한다.
    mysql_select_db() 사용할 디비를 선택한다.
    mysql_tablename() 테이블명을 리턴한다.
    next() 배열의 다음포인터로 이동하여 값을 리턴한다
    nl2br() 개행문자를 태그로 변환한다.
    number_format() 수의 주어진 일정한 형식으로 리턴한다
    octdec() 8진수를 10진수로 리턴한다
    ord() 문자열에 있는 첫번째 문자의 ASCII 코드 값을 변환한다.
    parse_str() 문자열을 변수로 해석한다
    parse_url() URL을 해석해서 각 구성요소를 반환한다.
    pi() 파이값을 구한다
    pos() 배열릐 포인터가 가르키는 값을 리턴한다
    pow() base의 exp승을 리턴한다
    prev() 포인터를 앞으로 이동한후 값을 리턴한다
    print() 문자열을 출력
    printf() 지정된 형식에 맞게 문자열을 출력한다.
    quoted_printable_decode() 문자열을 8비트 문자열로 변환한다.
    quotemeta() 문자열에 .\\+*?[^]($)등의 메타문자앞에\를추가한다
    rand() 난수를 발생한다
    range() low부터 high까지의 정수들의 배열을 리턴한다
    rawurldecode() URL로 인코딩된문자열을 디코딩한다
    rawurlencode() RFC1738에 따라서 URL을 인코딩한다.
    reset() 배열의 포인터를 맨처음으로 이동하여 값을 리턴한다
    round() 반올림값을 리턴한다
    rsort() 배열의 값을 기준으로 역순정렬합니다
    rtrim() 문자열 끝에 있는 공백 문자, 개행문자를 제거한다.
    session_decode() 암호화된 문자열을 세션데이터로 해석한다
    session_destroy() 생성된 모든 세션을 파괴한다
    session_encode() 세션 데이터를 문자열로 인코딩한다
    session_id() 세션 아이디를 구하거나 변경한다.
    session_is_registered() 인자가 세션에 등록되었는지 검사
    session_module_name() 현재 세션요소를 구하거나 변경한다
    session_name() 세션의 이름을 설정한다.
    session_register() 현재 세션에 변수들을 등록한다.
    session_save_path() 현재 세션의 저장경로를 구하거나 변경한다
    session_start() Session을 시작
    session_unregister() 등록된 변수를 제거한다.
    setlocale() 지역정보를 저장한다.
    settype() 변수 타입 설정
    shuffle() 배열을 랜덤하게 섞는다
    similar_text() 두 문자열사이의 유사성을 계산한다
    sin() 사인값을 리턴한다
    sizeof() 배열요소의 갯수를 반환한다.
    sort() 배열을 값을기준으로 순서대로 정렬합니다.
    soundex() 문자열의 soundex키를 계산한다
    sprintf() 지정된 출력형식문자열을 반환한다.
    sqrt() 제곱근을 리턴한다
    srand() 난수발생기를 초기화한다
    strcasecmp() 대소문자를 구분하지 않고 문자열을 비교한다
    strchr() 문자열에서 지정한 문자가 처음위치한부분부터반환한다.
    strcmp() 대소문자를 구분해서 두 문자열을 비교한다.
    strcspn() 마스크가 맞지 않는 초기 세크먼트의 길이를 반환한다
    stripcslashes() addcslashes()로 쿼트된 문자열을 언쿼트한다
    stripslashes() addslashes()로 쿼트된 문자열을 언쿼트한다
    strip_tags() 문자열로 부터 HTML,태그를 제거한다.
    stristr() 대소문자를구별않고 needle과 일치한부분부터리턴한다
    strlen() 문자열의 길이를 반환한다.
    strpos() 문자열에서 특정문자열이 있는 처음위치를 반환한다
    strrchr() 지정한 문자열이 있는 마지막의 위치부터 반환한다
    strrev() 문자열을 뒤집는다.
    strrpos() needle이 마지막으로 나타나는위치를 반환한다.
    strspn() 마스크에 일치하는 초기 세그먼트의 길이를 찾는다.
    strstr() 대소문자를구분하여 needle와 일치하는부분부터 반환한다.
    strtok() 문자열을 토큰화한다.
    strtolower() 문자열을 소문자로 변환한다.
    strtoupper() 영문자를 대문자로 변환한다.
    strtr() 특정문자를 번역한다.
    strval() 값을 문자열로 변환
    str_repeat() 문자열을 지정한 횟수만큼 반복한다.
    str_replace() subject에서 search를 replace로 대체한다.
    substr() 문자열의 일부분을 짤라서 반환한다.
    substr_replace() 문자열 일부만 지정된문자로 치환한다.
    tan() 탄젠트값을 리턴한다
    trim() 문자열의 앞뒤의 공백문자를 제거한다.
    uasort() 키,값을 유지하고 지정함수를 사용해 정렬합니다.
    ucfirst() 첫글자가 알파벳이면 첫문자만 대문자로 변환한다
    ucwords() 문자열의 각 단어의 첫글자를 대문자로 바꾼다.
    uksort() 키,값을 유지하고 지정함수를 이용 키값에 따라 정렬한다.
    unset() 변수의 설정을 해제
    urldecode() 인코딩된 URL문자열을 디코딩한다.
    urlencode() 문자열을 URL 인코딩한다.
    usort() 함수를 배열값에 적용하여 정렬합니다.…
    작성자최고관리자 시간 03-16 조회 3099
  • 작성자최고관리자 시간 10-25 조회 3000
  • PHP 매직함수 - Class
    __sleep, __wakeup과 같이 "__"로 시작하는 매직함수(magic function)는 PHP 클래스 내에서 특수한 목적으로 사용됩니다. 따라서 이 함수들이 가지고 있는 문서화된 매직 기능을 사용할 필요가 없다면 클래스 내에 이 함수들을 정의해서는 안됩니다.

    __sleep

    serialize 함수를 통해 객체를 직렬화할 때 해당 클래스에 매직 함수 __sleep가 정의되어 있는지 확인합니다. 만약 정의되어 있다면 객체를 직렬화하기 전에 __sleep 함수를 수행합니다. 이 함수는 직렬화하기 전에 객체 멤버에 대하여 조작해야 하는 작업, 또는 직렬화하기 전에 미리 수행해야 하는 작업(예를 들어 데이터베이스 연결 종료 등)을 수행할 수 있습니다. __sleep 함수는 직렬화할 객체의 모든 멤버변수의 이름을 변수에 담아 반환합니다.



    class Scott {
    var $error;
    var $svar = array();

    function Scott() {
    $this->svar['Hello'] = "World";
    }

    function __sleep() {
    $this->svar['Hello'] = "Yawn";
    // return list of instance-variables to be serialized
    return array('error', 'svar');
    }
    }

    $x = new Scott();
    print_r($x);
    $y = serialize($x);
    $z = unserialize($y);
    print_r($z);

    __wakeup

    unserialize 함수를 통해 문자열을 객체화할 때 해당 클래스에 매직 함수 __wakeup가 정의되어 있는지 확인합니다. 만약 정의되어 있다면 객체화하기 전에 __wakeup 함수를 수행합니다. 이 함수를 수행할 때 객체화하기 전에 객체를 상대로 수행해야하는 작업, 또는 객체화하기 전에 미리 수행해야 하는 작업(예를 들어 데이터베이스 연결 등)을 수행할 수 있습니다.



    class Scott {
    var $error;
    var $svar = array();

    function Scott() {
    $this->svar['Hello'] = "World";
    }

    function __sleep() {
    $this->svar['Hello'] = "Yawn";
    // return list of instance-variables to be serialized
    return array('error', 'svar');
    }

    function __wakeup() {
    $this->svar['test'] = "I'm here!";
    }
    }

    $x = new Scott();
    print_r($x);
    $y = serialize($x);
    $z = unserialize($y);
    print_r($z);…
    작성자최고관리자 시간 02-07 조회 2897
  • php 소스 암호화 php_screw
    출처 : http://www.linux.co.kr/home2/board/subbs/board.php?bo_table=lecture&wr_id=1727&sca=1
    수정 : 양성열
    다운 : http://downloads.sourceforge.net/project/php-screw/php-screw/1.5/php_screw-1.5.tar.gz?r=http%3A%2F%2Fsourceforge.net%2Fprojects%2Fphp-screw%2Ffiles%2Fphp-screw%2F1.5%2F&ts=1302854200&use_mirror=cdnetworks-kr-1

    서론

    php 소스 개발을 하다보면 공개하기가 꺼려지는 소스가 있기 마련입니다. 또한 디비 커넥트 설정과 계정정보 및 서버 설정에 대한 php 소스코드 들은 암호화가 해킹에 대한 최소한의 예방책일 것이다. 이러한 소스 암호화 툴로는 Zend , 이온큐브 쪽 솔루션이 잘 알려져 있습니다. 실제 여러업체에서 사용중이며 안정적입니다. 물론 유료화 버젼입니다. 하지만 무료버전의 암호화 툴도 있습니다. 오픈소스인 php_screw 입니다.
    해당 솔루션은 일본의 ThePM9.com 이라는 개발업체에서 만들어 졌으며, 현재는 1.5버전까지 개발 되어 졌습니다. php 소스코드를 암호화된 파일로 생성하는 실행 파일과 이를 Zend - Compile에 전달 되기전에 해독하는 php 모듈 형태로 이루어 집니다.

    어떠한 방법으로 암호화하는지는 공개 하지 않을 sourceforge를 통해 해당 소스를 다운 받아 php 동적 모듈을 생성 추가 하는 형태 입니다. 아래부터는 해당 모듈의 설치 법에 대해서 알아 보고겠습니다.


    본론

    1. 설치 조건
    다운 받은 소스상 README 파일을 읽어보시면 알 수 있겠지만 php_screw-1.5버젼은 PHP5.x 버젼에 zlib 이 설치 되어있어야 하며, UNIX 계열 ( 리눅스 , FreeBSD 등) 에서만 지원 합니다. 그런데 php4 버젼에서도 설치 및 운영이 잘됩니다. (당연한 말씀이겠지만 php가 동적으로 설치 되어 있어야 합니다.)

    2. sourceforge를 통해 해당 파일을 다운 받습니다. (http://sourceforge.net/projects/php-screw/)

    3. 저는 해당 소스를 /usr/local/src 디렉토리에 옮겨 놓았습니다.
    [root@localhost src]# pwd
    /usr/local/src
    [root@localhost src]# ls
    php_screw-1.5.tar.gz

    4. 소스 압축 해제
    [root@localhost src]# tar xvzf php_screw-1.5.tar.gz
    php_screw-1.5/
    php_screw-1.5/zencode.c
    php_screw-1.5/LICENSE
    php_screw-1.5/tools/
    php_screw-1.5/tools/zencode.c
    php_screw-1.5/tools/Makefile
    php_screw-1.5/tools/screw.c
    php_screw-1.5/config.h
    php_screw-1.5/README.en
    php_screw-1.5/config.m4
    php_screw-1.5/Makefile.in
    php_screw-1.5/php_screw.c
    php_screw-1.5/php_screw.h
    php_screw-1.5/my_screw.h
    php_screw-1.5/README.jp

    5. phpize 명령어를 이용하여 서버 정보에 맞는 configure 생성
    [root@localhost src]# cd php_screw-1.5
    [root@localhost php_screw-1.5]# /usr/local/php/bin/phpize
    Configuring for:
    PHP Api Version: 20020918
    Zend Module Api No: 20020429
    Zend Extension Api No: 20050606

    6. 생성된 소스 확인
    [root@localhost php_screw-1.5]# ll
    합계 800
    -rw-rw-rw- 1 root root 1388 1월 12 2004 LICENSE
    -rw-r--r-- 1 root root 3151 4월 4 00:10 Makefile.global
    -rw-rw-rw- 1 root root 245 8월 1 2002 Makefile.in
    -rw-rw-rw- 1 root root 4052 10월 14 2007 README.en
    -rw-rw-rw- 1 root root 3290 10월 14 2007 README.jp
    -rw-r--r-- 1 root root 52186 4월 4 00:10 acinclude.m4
    -rw-r--r-- 1 root root 174501 4월 4 00:10 aclocal.m4
    drwxr-xr-x 2 root root 4096 4월 4 00:10 autom4te.cache
    drwxr-xr-x 2 root root 4096 4월 4 00:10 build
    -rwxr-xr-x 1 root root 41134 4월 4 00:10 config.guess
    -rw-r--r-- 1 root root 1644 10월 13 2007 config.h
    -rw-r--r-- 1 root root 1540 4월 4 00:10 config.h.in
    -rw-rw-rw- 1 root root 593 4월 17 2002 config.m4
    -rwxr-xr-x 1 root root 29708 4월 4 00:10 config.sub
    -rwxr-xr-x 1 root root 279525 4월 4 00:10 configure
    -rw-r--r-- 1 root root 2226 4월 4 00:10 configure.in
    -rw-r--r-- 1 root root 0 4월 4 00:10 install-sh
    -rw-r--r-- 1 root root 143988 4월 4 00:10 ltmain.sh
    -rw-r--r-- 1 root root 0 4월 4 00:10 missing
    -rw-r--r-- 1 root root 0 4월 4 00:10 mkinstalldirs
    -rw-rw-rw- 1 root root 63 8월 1 2002 my_screw.h
    -rw-rw-rw- 1 root root 3142 10월 14 2007 php_screw.c
    -rw-rw-rw- 1 root root 194 8월 1 2002 php_screw.h
    drwxrwxrwx 2 root root 4096 10월 14 2007 tools
    -rw-rw-rw- 1 root root 1772 10월 14 2007 zencode.c

    7. SEED key 변경
    - README를 잘 읽어보시면 알겠지만 암호화 할때 특정 키값에 따라 암화된 값이 달라집니다.
    그러므로 각자가 원하시는 값으로 변경 하시면 됩니다. my_screw.h 의 배열의 값을 변경 하시면 됩니다.
    값의 크기에 따른 속도 차이는 없다고 합니다. (기존의 seed key값 보다는 작게 설정한다.)

    [root@localhost php_screw-1.5]# cat my_screw.h
    short pm9screw_mycryptkey[] = {
    11152, 368, 192, 1281, 62
    };

    8. 컴파일 환경 설정
    [root@localhost php_screw-1.5]# ./configure --with-php-config=/usr/local/php/bin/php-config

    9. 컴파일
    [root@localhost php_screw-1.5]# make

    ※ make시 에러
    /usr/local/src/php_screw-1.5/my_screw.h:2: warning: overflow in implicit constant conversion
    /usr/local/src/php_screw-1.5/php_screw.c: In function 'pm9screw_compile_file':
    /usr/local/src/php_screw-1.5/php_screw.c:78: error: too few arguments to function 'org_compile_file'
    /usr/local/src/php_screw-1.5/php_screw.c:84: error: too few arguments to function 'org_compile_file'
    /usr/local/src/php_screw-1.5/php_screw.c:93: error: too few arguments to function 'org_compile_file'
    make: *** [php_screw.lo] 오류 1

    php_screw.c파일에서 오류나는 라인 78,84,93 수정

    org_compile_file(file_handle, type); 이부분을 아래와 같이 수정
    org_compile_file(file_handle, type TSRMLS_CC);


    10. 모듈 확인
    [root@localhost php_screw-1.5]# ll modules/
    합계 32
    -rw-r--r-- 1 root root 721 4월 4 00:25 php_screw.la
    -rwxr-xr-x 1 root root 26781 4월 4 00:25 php_screw.so

    11. 모듈 위치 지정
    - 모듈을 확인 하고 make install 을 통해 자동으로 모듈을 특정 디렉토리를 이동 할 수 있지만 경로명이 직관적이지 않아 자체디렉토리를 만들어 줍니다.
    [root@localhost php_screw-1.5]# mkdir /usr/local/lib/php_modules
    [root@localhost php_screw-1.5]# mv modules/php_screw.so /usr/local/lib/php_modules

    12. php.ini 설정
    - php.ini 의 설정을 통해 해당 모듈을 로드할 수 있게 합니다. 아래와 같이
    [root@localhost php_screw-1.5]# vi /usr/local/lib/php.ini
    ......
    extension_dir = "./" 을 extension_dir = "/usr/local/lib/php_modules" 로 수정 및 아래 내용 추가
    extension=php_screw.so
    .....

    13. 모듈 확인
    - 아파치 재시작 후 모듈 확인
    [root@localhost php_screw-1.5]# /usr/local/apache/bin/apachectl restart
    [root@localhost php_screw-1.5]# php -i | grep php_screw
    php_screw
    php_screw support => enabled
    PWD => /usr/local/src/php_screw-1.5
    _SERVER["PWD"] => /usr/local/src/php_screw-1.5
    _ENV["PWD"] => /usr/local/src/php_screw-1.5
    [root@localhost php_screw-1.5]#

    14. 암호화 명령어 컴파일
    - 모듈 추가가 완료 되면 소스를 암호화하는 툴을 컴파일 해야 합니다.
    해당 소스트 tools 라는 디렉토리에 있습니다.
    [root@localhost php_screw-1.5]# cd tools/
    [root@localhost tools]# pwd
    /usr/local/src/php_screw-1.5/tools

    15. 컴파일 및 결과 확인
    [root@localhost tools]# make
    gcc -o screw screw.c zencode.c -lz
    [root@localhost tools]# ll
    합계 24
    -rw-r--r-- 1 root root 105 10월 14 2007 Makefile
    -rwxr-xr-x 1 root root 8644 4월 4 00:34 screw
    -rw-rw-rw- 1 root root 1541 10월 14 2007 screw.c
    -rw-rw-rw- 1 root root 1772 10월 14 2007 zencode.c

    16. screw 라는 명려어를 이용해서 암호화하기
    - 사용하기 쉽게 path가 잡혀있는 경로 이동 하기 것이 좋을듯합니다.
    - test.php 자연수를 입력 받아 구구단을 출력하는 소스입니다.
    [root@localhost tools]# mv screw /usr/local/bin
    [root@localhost tools]# cd /home/test/public_html/
    [root@localhost public_html]# ll
    합계 4
    -rw-r--r-- 1 root root 1398 4월 4 00:39 test.php
    [root@localhost public_html]# screw test.php
    Success Crypting(test.php)
    [root@localhost public_html]# ll
    합계 8
    -rw-r--r-- 1 root root 768 4월 4 00:44 test.php
    -rw-r--r-- 1 root root 1398 4월 4 00:44 test.php.screw

    17. 암호화 파일 확인 및 원소스 삭제
    - 위의 결과와 같이 소스이름뒤 .screw 가 붙은 파일이 원 소스이다. 백업 후 삭제 해준다.
    - 암호화 파일 확인
    [root@localhost public_html]# cat test.php

    결론

    설치 및 운영에는 특별히 신경 쓴 부분이 없다. 그러나 서버 이전시 문제 되는 부분이 있다. my_screw.h 에 설정된 SEED key 값을 모르게 된다면 아무리 모듈을 만들어도 해당 소스 웹출력이 되지 않습니다. 원 소스 백업이 중요하며 해당 SEED key 값도 백업 해 놓는것도 중요합니다.…
    작성자최고관리자 시간 02-23 조회 2729
  • PHP 객체 생성 - Class
    객체 생성=객체 초기화(object initialization)=인스턴스화(instantiation)

    클래스는 붕어빵을 만드는 틀(= type, =template)과 같은 것으로, 클래스 내에 정의된 메쏘드와 멤버변수를 사용하기 위해서는 틀을 가지고 붕어빵을 만드는 것같이 객체를 생성하여야 합니다. 객체(object)를 초기화하는 방법은 new 연산자를 사용하여 객체를 변수에 인스턴스 시키는 것입니다.



    class Cart {
    var $items; // Items in our shopping cart

    // Add $num articles of $artnr to the cart

    function add_item ($artnr, $num) {
    $this->items[$artnr] += $num;
    }

    // Take $num articles of $artnr out of the cart

    function remove_item ($artnr, $num) {
    if ($this->items[$artnr] > $num) {
    $this->items[$artnr] -= $num;
    return true;
    } else {
    return false;
    }
    }
    }

    $cart = new Cart;
    $cart->add_item("10", 1);

    위와 같이 하면 클래스 Cart에 대한 객체 $cart가 생성됩니다. 객체 함수 add_item()은 장바구니에 품목번호 "10"의 수량을 1개 추가하기 위해 호출됩니다.

    지정연산자 "->"의 의미

    "->"는 객체의 멤버변수 또는 메쏘드를 지정하는데 사용되는 지정연산자입니다. C++ 언어를 접해 본 분은 쉽게 이해하시겠지만, new 연산자로 생성되는 객체를 나타내는 객체명에는 실제로 객체의 멤버(변수 또는 함수)가 존재하는 것이 아니라 객체의 멤버가 존재하는 메모리상에 위치를 나타내는 주소(adress)가 담겨져 있습니다. 이와 같이 객체지향언어에서는 주소를 가지고 멤버를 참조하려면 아래와 같이 지정연산자 "->"를 이용하게 됩니다.



    멤버변수를 참조할 때 : 객체명->변수;
    메쏘드를 참조할 때 : 객체명->함수;

    C++ 언어에서는 "->"를 화살표 멤버 연산자라고 말하며, "->"의 앞쪽에 있는 식별자(여기서는 객체명)가 포인터(pointer; 주소를 의미함)일 때 그 멤버를 참조하기 위한 연산자입니다.

    지역 변수에 초기화된 객체

    객체를 지역변수에 인스턴스할 수 있기 때문에, 클래스를 정의하고 객체를 생성하는 것을 하나의 모듈로 개발할 수 있습니다.



    예제 코드 :

    a."";
    }
    }

    $obj = new test;
    $obj->echo_test();
    }

    class_in_function();
    ?>

    실행 결과 :

    함수 내에 정의된 클래스의 생성자 실행
    함수 내에 정의된 클래스의 멤버변수 $a의 값 = 10

    객체 생성할 때 생성자명을 가변함수로 지정하기



    $classname = "MiniDB";
    $obj = new $classname();

    이 코드는 PHP와 PHP4 모두에서 정상적으로 동작합니다.

    메쏘드명을 변경하기(가변함수)

    PHP의 매뉴얼을 보면 가변함수(variable function)를 지원하는데 이것은 변수명 뒤에 괄호가 왔을 때, PHP는 그 이름을 가진 함수를 찾아 실행하는 것입니다. 이것은 클래스의 메쏘드에서도 그대로 사용할 수 있습니다.



    class test {
    function A() {
    echo "나 A 함수 \n";
    }
    }

    $obj = new test;

    $method = "A";
    $obj->$method();

    이것을 응용하여 같은 실행문으로 A0, A1, A2라는 메쏘드에 번갈아 가면서 접근하려면 역시 가변함수를 사용하면 됩니다.



    class test {
    function A0() {
    echo "나 A0 함수 \n";
    }

    function A1() {
    echo "나 A1 함수 \n";
    }
    function A2() {
    echo "나 A2 함수 \n";
    }
    }

    $obj = new test;

    for ($i=0;$i$method();
    }

    위에 것은 모두 PHP3와 PHP4에서 모두 동작되는 코드입니다. 만약, PHP4에서만 동작시켜도 무방하다면 아래와 같이 중괄호를 이용하면 소스를 간결하게 코딩할 수 있습니다.



    for ($i=0;$i{"a$i"}();
    }

    객체명을 변경하기(가변변수)

    가변변수(Variable Variables)의 유용함은 모두 알고 있겠지만 PHP4에서는 별문제가 없지만 PHP에서 객체변수를 가변변수로 사용하기는 그리 쉽지 않습니다.



    class test {
    var $hello = "hello world";
    }

    $obj = new test;
    $a = "obj";
    echo $$a->hello; // or echo ${$a}->hello;

    PHP에서 위와 같이 작성하여 실행한다면,



    Object
    Parse error: parse error, ...... test.php3 on line 9

    와 같은 에러를 만나게 됩니다. 그러나 PHP4에서는 객체변수에도 가변변수를 제대로 지원하기 시작했습니다. 따라서 위의 예제가 에러없이 잘 실행되지요. 그러면 PHP에서는 객체변수의 이름을 변경할 수 없을까요? 아래와 같이 $GLOBALS 배열을 사용해 보세요. 아무 문제없이 잘 실행될 겁니다.



    class test {
    var $hello = "hello world";
    }

    $obj = new test;
    $a = "obj";
    echo $GLOBALS[$a]->world();

    따라서 PHP3와 PHP4 모두에서 동작되기를 바란다면 $GLOBALS 배열을 이용하여 작성하세요.

    배열구조의 멤버변수를 가변변수로 다루는 방법



    class test {
    var $arr = array();

    function test() {
    $this->arr[0] = 0;
    $this->arr[1] = 1;
    }
    }

    $obj = new test;

    위와 같이 클래스 test에 배열 구조의 멤버변수가 있을 때, 이러한 멤버변수의 배열 요소에 접근하려면 $obj->arr[0]; 와 같이 사용하면 됩니다. 여기서 멤버변수명 "arr"을 가변변수로 처리하려면,



    $prop = "arr";
    $obj->{"$prop"}[0];

    와 같이 가변변수 $prop를 중괄호로 묶어주세요. 여기서 겹따옴표는 생략해도 됩니다. PHP3와 PHP4에서 모두 잘 동작할 것입니다.…
    작성자최고관리자 시간 02-07 조회 2620
  • 열람중
    템플릿언더바(Template Underscore)
    템플릿언더바(Template Underscore)의 사용 목적은 PHP 프로그램으로부터 프레젠테이션 로직을 효과적으로 분리하는 데 있습니다. 이렇게 함으로써 프로그래머는 페이지출력의 흐름에 따라 PHP코드를 삽입하는 형식 대신에, 페이지구성요소를 모듈화하고 사용할 요소들을 인덱싱하는 형태의 메인프로세스를 작성할 수 있으며, 디자이너에게는 동적데이터 처리를 위한 간결한 인터페이스를 제공하게 됩니다. 웹개발시 MVC 패턴을 적용하는 일반적인 목적은 링크를 참고하시기 바랍니다. 템플릿언더바의 주요 특징 - 템플릿파일을 PHP 파일로 변환하여, 실제 서비스시 PHP 코어 엔진이 변환파일을 실행하여 출력하고, 변환파일과 처리로직의 최적화로 강력한 성능을 발휘합니다.
    - 템플릿 파일 단위의 캐쉬지원으로 회원제 싸이트에서도 부분적인 캐쉬적용이 가능하며, 캐쉬갱신로직과 사용방법이 효율적이고 편리합니다.
    - 자바스크립트 문법을 따르는 표현식 언어 (EL: Expression Language) 를 지원하고 표현식 내에서 PHP 함수를 자유롭게 사용할 수 있습니다.
    - 사용자 정의한 PHP 함수 또는 클래스를 플러그인 파일로 저장만 하면 템플릿내에서 사용할 수 있으며 필요한 만큼만 정확하게 자동 인클루드됩니다.
    - 제어구문의 최적화와 일관성, 극단적으로 단순한 템플릿 명령어셋, 상대경로보정필터, 꼬리말형 주석, 매크로 등 편리한 개발환경을 제공하며 디자이너와의 작업분리에도 효과적입니다.
    - 템플릿 제어구문이나 기타 오류가 있을 때, 가능한 모든 메시지를 출력하여 편리한 디버깅환경을 제공합니다.…
    작성자최고관리자 시간 09-10 조회 2582
  • pear란 무엇인가.
    PEAR는 PHP Extension and Application Repository의 약자다. 번역하면? PHP 확장과 응용 프로그램 저장소 정도 되겠다.

    PEAR는 재사용 가능한 PHP 컴포넌트를 위한 프레임워크이자 배포 시스템입니다.

    pear 란, java jdbc 같은 용도로 사용하는 놈인데 구지 PEAR가 뭔지 알 필요는 없습니다.
    그냥 좋으니까 쓰면 되는것이죠.
    간단히 이야기하자면 ASP처럼 쉽게 컴포넌트를 사용해 개발할수 있게 하면서 JSP처럼 강력한 효과를 낼 수 있는 획기적인 방법이라고 생각하시면 된다.…
    작성자최고관리자 시간 01-11 조회 2571

회원로그인

Copyright © 2001-2016 ITNANUM. All Rights Reserved..