티켓몬스터를 위한 php 개발 방법
DESCRIPTION
이틀에 걸쳐 티켓몬스터에서 진행했던 PHP 개발 방법 세미나 자료입니다.TRANSCRIPT
PHP 개발 방법
용영환
for 티몬 개발자
저는
Café 24, Tatter&Company, NAVER, Ahems
“이클립스 PDT” “개발자, 나를 말하다”
오늘과 내일,
우리가 함께 할 것들은
개발자를 보다 인간답게
살 수 있게 해줍니다.
어머, 이건 꼭 해야해!!
웹 개발 환경
Development Server Production Server
웹 개발 환경
Development Servers - Dev Server : Co-working - Apha Server : Co-testing - Beta Server : Verification
PHP 코딩 도구
Notepad ++ Editplus Ultraedit Vim
좀더 나은 PHP 코딩 도구
이클립스 PDT Intelli J PHP Storm NetBeans Sublime ......
우리는
PHP 개발 방법에 대해
같이 고민해 볼 겁니다.
개발 방법이란?
개발 도구와는 다른 것?
뭐지?
방법
어떤 일을 해 나가거나 목적을 이루기 위하여 취하는 수단이나 방식.
방법
어떤 일을 해 나가거나 목적을 이루기 위하여 취하는 수단이나 방식.
개발 방법
개발을 하기 위한 수단이나 방식.
함수 지향 개발 방법, 객체 지향 개발 방법,
애자일 개발 방법, 짝 프로그래밍 개발 방법,
통합 개발 환경에서의 개발 방법,
버전 관리 소프트웨어를 통한 개발 방법,
천상천하 유아독존 개발 방법 등
우리의 PHP 개발 방법은
통합 개발 환경인 Eclipse PDT 에서
객체 지향적으로 코딩을 하고
PHPUnit 으로 단위 테스트를 하고
Xdebug 로 디버깅을 하고
Profiling으로 팀장님이 짠 소스 코드 성능 테스트도 하고
CodeSniffer로 코드를 훑어 볼 겁니다.
통합 개발 환경(IDE)?
이클립스
Java 로 만들어진 범용 소프트웨어 플랫폼
모든 것이 다 Plug-ins
이클립스 재단
현재 Version 4.3 Kepler (2013년 6월 26일)
이클립스 RCP 를 이용하면 뭐든 만들 수 있다.
이클립스 PDT
이클립스 공식 프로젝트
PHP 통합 개발 환경
2007년 4월 6일 0.7 버전 공개
Zend 사에서 주로 개발
이클립스 PDT 장점
코드 자동 완성
객체지향적 개발 가능
자동 포멧 교정
코드 오류 검출
실행, 디버깅 등을 손쉽게 가능
여러가지 유용한 개발 도구 지원
PHP 이야기
PHP에 대해서 이야기를 나누어 보죠.
왜 PHP가 까이는가?
보안에 취약하다?
성능이 안좋다?
코드가 지져분하다?
단순한 스크립트 언어다?
PHP: 잘못된 디자인의 프랙탈
-예측 가능, 일관성, 간결, 신뢰성, 디버깅
PHP는 건재하다
언어는 표현 수단이다.
선입견과 편견을 버리자.
이 세상 모든건 다 장단점이 있다.
PHP 버전
PHP 5.0 : Zend 2.0 , 4X Fater than PHP 4.
PHP 5.3 : Namespace, Closures, Garbage collection 등
PHP 미래
PHP 5.5 : Coroutines, finally, Zend OPCache
Coroutines???
PHP 미래
PHP 5.5 : Coroutines, finally, Zend OPCache
Coroutines???
Aikido, AngelScript, BCPL, Pascal, BETA, C#, ChucK, D, Dynamic C, Erlang, F#,
Factor, GameMonkey, Go, Haskell, High Level Assembly, JavaScript(since 1.7), Icon,
Io, Limbo, Lua, Lucid, µC++, MiniD, Modula-2, Nemerle, Perl(Perl 5 with Coro, Perl
6 native[citation needed]), Prolog, Python(since 2.5), Ruby, Sather, Scheme, Self,
Simula-67, Squirrel, stackless Python, SuperCollider, Tcl(since 8.6), urbiscript
AND PHP 5.5
PHP 미래
PHP 5.6
Internal Operator Overloading
Uploads of over 2GB are now accepted
POST data memory usage decreased
Skipping Parameters
PHP 미래
PHP 5.6
Skipping Parameters
function foo($param, $param2=’a', $param3=0, $param4=”) {…}
foo(‘value’, default, default, ‘another value’)
Namespace
클래스 중복을 방지한다. PEAR DB 독점권이라도 갖고 있나?
Anonymous function
“익명함수” 함수명이 없다. 그래서, 단순하면서도 강력하다.
Lambda
또다른 “익명함수” 이또한 신세계이다.
코드 살펴 보기
배포
로컬 워크스테이션
공용 개발 or 알파 서버
무엇으로
배포
개발 or 알파 서버
베타 or 프로덕션 서버
무엇으로
배포
http://ant.apache.org/
객체지향 PHP
왜 객체지향으로 개발해야 하는가?
모델링을 보다 자연스럽게 할 수 있다.
모델링이 되면 개발이 쉬워진다.
재사용성이 높아진다.
확장 및 유지보수가 보다 쉬워진다.
객체지향 PHP
왜 객체지향으로 개발해야 하는가?
인간이 생각하는 방식과 비슷하다. 자연스럽다.
재사용성과 확장성 퇴근이 빨라질 수도 있다.
객체지향 PHP
Model – 데이터 모델
Data Access Object – 데이터 처리
Business Object – 비즈니스 로직
Model
3D Modeling
Class Modeling
Getter & Setter
외부에서 접근 가능한 정보에는
Getter 또는 Setter를 만든다.
캡슐화 + 정보 은닉
클래스의 내용을 모르더라도 원하는 결과를 얻게 한다.
정보에 대한 접근을 제한한다.
프로파일링 일반적 수사 기법으로는 해결되기 힘든 연쇄살인사건 수사 등에 투입되어
용의자의 성격, 행동유형 등을 분석하고,
도주경로나 은신처 등을 추정하는 역할을 한다.
프로파일링
http://xdebug.org/
Kcachegrind ( KDE )
테스트
소프트웨어 개발에서 테스트란?
우리가 해야 할 것은 “단위 테스트”
PHPUnit 은 단위 테스트를 할 수 있게 해주는 도구
테스트
소프트웨어 개발에서 테스트란?
우리가 해야 할 것은 “단위 테스트”
PHPUnit 은 단위 테스트를 할 수 있게 해주는 도구
CI
continuous integration
지속적인 통합?
CI
빌드 자동화
테스트 자동화
배포 자동화