본문 바로가기

프로그램 (PHP,Python)180

AOP (Aspect Oriented Programming) AOP 등장 C 언어에서 시작된 절차적 프로그래밍을 걸쳐 유지보수성과 확장성을 가지는 객체지향(OOP)적 프로그래밍을 현재 밟고 있다. 현재 객체지향적인 프로그래밍을 지향하면서 개발자들은 좀 더 편리하고 유지보수가 편한 방법을 찾게 되었고... 그에 맞춰 등장한것이 AOP 관점 지향 프로그래밍이다... 공통적인 쓰이는 관심사들... 즉 로깅, 트랜잭션 처리, 통계 처리, 권한 처리등 모든 모듈에서 공통적으로 쓰이는 코드들.. 하나의 클래스를 완성하기 위해서 여러 군데 동일한 코드를 복사해서 갖다붙이는 코드들을 공통 관심사라고 볼수 있다. AOP 는 이 공통 관심사를 좀더 유연하게 중복되지 않게 처리하기 위한 OOP 의 보완적인 프로그래밍 구조를 지원하기 위해 탄생하게 되었다. AOP 개념 Aspect O.. 2009. 4. 15.
Apache-Ant 사용법 고수로 가는 지름길! Jakarta Project 이클립스 기반 프로젝트 필수 유틸리티: CVS, Ant, JUnit 두 책의 ant 부분을 보고 정리하였습니다. # build.xml 파일의 기본구조 ... ... ... ... ... # project 태그 1) name : 프로젝트의 이름 2) default : Ant를 실행할때 target을 지정하지 않은 경우 기본적으로 사용할 target (필수) 3) basedir : 경로 계산할때의 기준 디렉토리. 지정하지 않은 경우 현재 디렉토리가 basedir로 사용된다. basedir 프로퍼티의 값으로도 사용된다. # target 태그 1) name : 타켓의 이름 (필수) 2) depends : 이 타겟이 의존하고 있는 타겟의 목록. 각 타켓의 이름은 .. 2009. 3. 29.
PHPEclipse 환경에서 PHP 리모트 디버깅하기 Zend Studio를 사용하면 서버상에서 돌아가는 php를 리모트 디버깅할 수 있지만, 이넘은 유료인데다가 지금까지 애지중지 사용하고 있는 Eclipse를 버려야한다는 문제가 있어서 - 아무래도 Eclipse가 Zend Studio보다는 내 스타일이다 - 어떻게든 Eclipse 내에서 리모트 디버깅을 시도해보고 있다. 일단 ibm의 developerWorks[링크]에서 증거사진을 발견. 이 환경을 만들기 위해 사용했다는 세팅을 그대로 따라해보았다. 참, 개발환경은 PC(Windows XP)에서 Eclipse 3.1.1을 사용중이며, 웹서버에는 리눅스 Fedora Core 4 위에 apache 2.0.55와 PHP 5.0.5를 깔아서 쓰고 있다. 1. php 구동서버에 디버거모듈 설치 - http://d.. 2009. 3. 6.
OllyDbg/Hiew 분기 어셈코드 넣는 방법 바이너리로 되어있는 exe파일에 section을 추가하고, Import table을 추가한뒤에 새로 imported된 API를 호출해 기존프로그램에 기능을 추가하는.. 일종의 ReverseMe 프로그램을 만지작 거리다 왔다. 간단히 두개의 API를 import테이블에 추가해서 호출하면 되는데 공간이 없는 바람에 section을 새로 만들고.. 언제나 그렇듯이 뭔가가 하나가 플러스되면 항상 삽질도 반비례하게 플러스되고, import table에 함수를 넣는과정에서도 역시 삽질.. 그리고 마지막으로 기능추가 어셈코드를 추가할때도 잠깐 삽질.. 그 과정을 거쳐 몇시간만에 끝을냈다. 씨~ 이건 완전 노가다야!! 역시 소스코드가 없는 프로그램을 조작한다는건 정말 만만치 않은 작업이라는걸 새삼 깨닫게 된다. 물론 .. 2009. 3. 1.
GDB를 사용한 CORE 파일의 분석 프로세스가 비정상적으로 종료될 경우, core 파일을 통하여 원인 분석을 할 수 있으며, 프로세스가 비정상적으로 종료될 경우, core 파일을 남길지 여부는 다음과 같은 명령어를 통해서 설정이 가능합니다. [step 1] 비정상 종료 되는 샘플 프로그램 작성#include #include void Abnormal() { int n = 1024; char *p = (char *)malloc(sizeof(char) * 1); free(p); free(p); /* double free */ } void AbnormalContainer() { Abnormal(); } void Normal() { printf("normal function.\n"); } int main(int argc, char **argv) {.. 2009. 3. 1.