인터넷에는 수없이 많은 PHP 튜토리얼이 있다. 이들 대부분은 이미 낡고 쓸모없어진 지 오래지만 불행히도 구글 검색 결과에 살아남아 여전히 참조자료로 활용된다. 이런 낡은 정보를 무분별하게 받아들인 PHP 프로그래머는 자신도 모르는 사이에 느리고 보안에 취약한 PHP 애플리케이션을 만들게 된다.
이 책에서는 슬림(Slim) 프레임워크의 제작자이자 ‘PHP The Right Way’의 창안자인 조시 록하트가 최신 PHP 기술을 소개하는 한편, 자신의 오픈소스 프로젝트와 일상 업무에서 매일 사용하는 최신 기술을 보여준다. 독자 여러분도 이 책을 통해 PHP의 짜릿한 변화의 순간에 동참하고 진보된 PHP를 온전히 활용할 수 있게 될 것이다.
- 네임스페이스, 트레이트, 제너레이터, 클로저 등의 모던 PHP 기능
- PHP 컴포넌트를 검색, 사용, 작성하는 방법
- 보안, 데이터베이스 작업, 문자열, 스트림, 에러와 예외 등에 대한 모범 사례
- 프로비저닝, 배포, 튜닝, 테스팅, 프로파일링에 필요한 도구와 기술
- 페이스북이 선보인 HHVM과 Hack이 최신 PHP에 미친 영향
- 프로덕션 서버에 대응하는 로컬 개발 환경 구축
★ 대상 독자
- PHP에 대한 기본적인 이해가 있으며 자신의 기량을 강화하고 싶은 모든 개발자
- 수년 전부터 같은 패턴으로 개발하고 있는 PHP 개발자
- PHP의 최신 변화가 궁금하고 미래를 적극적으로 준비하고 싶은 개발자
- 호환되지 않는 여러 PHP 버전의 설명이 혼재된 인터넷 자료에 고생하고 있는 개발자
★ 추천사
나는 PHP 언어와 커뮤니티의 현 상황을 제대로 반영한 서적을 찾느라 수년을 보냈다. 이제 주저하지 않고 『Modern PHP』를 추천한다.
─ 에드 핀클러, 개발자 겸 블로거(funkatron.com)
프로그래밍에서 절대 변하지 않는 진리는 ‘프로그래밍은 변한다’는 사실뿐이다. PHP는 변하고 있고 여러분의 개발 방법 역시 변해야만 한다. 조시는 최신 PHP로 작성하기 위해 알아야 할 도구와 개념을 제시한다.
─ 캘 에번스, E.I.C.C. CEO
초고속 웹사이트 개발을 위한 Codeigniter PHP FrameworkInseok Lee
지난 10월에 연구실에서 진행했던 세미나 자료입니다.
웹개발에 대한 기본적인 개념이나 프레임웤에 대한 내용을 전혀 모르는 학부 학생들과 연세가 있으신 박사과정 학생들을 위해 제작되었습니다.
Codeigniter의 내용보다도 왜 Codeigniter를 쓰면 좋은지, 그리고 웹 개발 방법은 어떻게 바뀌어 왔는지 등을 이곳저곳의 슬라이드(Codeigniter 한국사용자 포럼의 웅파님, 다음커뮤니케이션의 윤석찬님)를 정리하였습니다.
초보자를 대상으로 하는 강의에서 참고하면 좋을 것 같아용~
관련 문의는 Codeigniter 한국사용자 포럼 codeigniter-kr.org 에서 해주세요~
PHP 개발자에게 단비 같은 책!
『이클립스 PDT』는 이클립스 PDT를 사용하기 위한 첫 단계부터 디버그, 배포, 협업 도구 등을 자세히 다루었다. 이클립스 PDT의 설치 방법과 기능, 사용법, 그리고 이클립스 PDT 활용법으로 구성되어 있는 이 책은, PHP 개발자들이 JRE 환경에 익숙하지 않다는 것을 전제로 쉽고 자세하게 기술하였다. 이클립스 PDT가 어떤 기능을 제공하고, 이 기능들을 어떻게 잘 활용할지 알려주고, 특히 개발자가 코딩 이외에 가장 많은 시간을 보내는 디버그, 배포 과정에서 이클립스 PDT를 활용하는 방법도 자세히 설명하였다.
http://book.naver.com/bookdb/book_detail.nhn?bid=6471689
초고속 웹사이트 개발을 위한 Codeigniter PHP FrameworkInseok Lee
지난 10월에 연구실에서 진행했던 세미나 자료입니다.
웹개발에 대한 기본적인 개념이나 프레임웤에 대한 내용을 전혀 모르는 학부 학생들과 연세가 있으신 박사과정 학생들을 위해 제작되었습니다.
Codeigniter의 내용보다도 왜 Codeigniter를 쓰면 좋은지, 그리고 웹 개발 방법은 어떻게 바뀌어 왔는지 등을 이곳저곳의 슬라이드(Codeigniter 한국사용자 포럼의 웅파님, 다음커뮤니케이션의 윤석찬님)를 정리하였습니다.
초보자를 대상으로 하는 강의에서 참고하면 좋을 것 같아용~
관련 문의는 Codeigniter 한국사용자 포럼 codeigniter-kr.org 에서 해주세요~
PHP 개발자에게 단비 같은 책!
『이클립스 PDT』는 이클립스 PDT를 사용하기 위한 첫 단계부터 디버그, 배포, 협업 도구 등을 자세히 다루었다. 이클립스 PDT의 설치 방법과 기능, 사용법, 그리고 이클립스 PDT 활용법으로 구성되어 있는 이 책은, PHP 개발자들이 JRE 환경에 익숙하지 않다는 것을 전제로 쉽고 자세하게 기술하였다. 이클립스 PDT가 어떤 기능을 제공하고, 이 기능들을 어떻게 잘 활용할지 알려주고, 특히 개발자가 코딩 이외에 가장 많은 시간을 보내는 디버그, 배포 과정에서 이클립스 PDT를 활용하는 방법도 자세히 설명하였다.
http://book.naver.com/bookdb/book_detail.nhn?bid=6471689
2016년 11월 모 대학에서 IT 계열 전공 재학생들을 대상으로 진행했던 진로 특강 자료입니다.
앞쪽의 제반 내용들은 다양한 자료들을 정리하면서 제 생각을 담았습니다.
이 자료의 가장 핵심적인 내용은 5가지 유형의 현직 선배들을 대상으로 설문을 실시하여 후배들에게 들려주고 싶은 현실적이고 진솔한 이야기를 정리한 부분입니다.
IT 분야 그리고 소프트웨어 개발자의 삶의 모색하는 분들에게 조금이나마 도움이 되길 바라는 마음에 자료를 공개합니다.
"파이썬 성능 잠재력을 끌어내는 실용적인 개발 전략서"
미샤 고렐릭,이안 오스발트 지음 / 김영근,오현석 옮김 | 한빛미디어 | 2016년 8월 | 30,000원
★ 파이썬 3 대응
★ 프로토타이핑에서 실무 운영까지 살아가는 파이썬 코드의 비밀
아이디어 무한경쟁이 펼쳐지는 대(大)스타트업 시대! 높은 생산성으로 유명한 파이썬은 최우선 고려사항이다. 한 가지, 컴파일 언어 대비 느린 성능 때문에 성공한 서비스나 성능이 중요한 기능은 컴파일 언어로 다시 작성하곤 한다. 하지만 실무 운영까지 파이썬 코드를 계속 이어가는 방법이 있다면?
이 책은 파이썬을 둘러싼 설계와 작동 원리를 설명하고 이에 기반한 실용적인 구현 전략을 소개한다. 멀티코어 아키텍처와 클러스터의 이점을 활용하려면 어떻게 해야 하는가? 안정성을 잃지 않고 확장하는 방법은 무엇인가? 여러분은 이에 대한 명확한 해법을 찾고 방대한 소셜 데이터까지도 눈부신 속도로 처리해내는 파이썬 코드를 얻게 될 것이다.
★ 주요 내용
● numpy, Cython, 프로파일러 활용하기
● 파이썬의 시선으로 바라보는 컴퓨터 아키텍처 이해하기
● CPU 시간과 메모리 사용량을 프로파일링하여 병목 지점 찾기
● 상황에 맞는 컬렉션으로 효율적인 프로그램 작성하기
● 행렬과 벡터 연산 가속하기
● 네이티브 코드로 컴파일하기
● 대량의 I/O와 연산 동시 수행하기
● 원격 클러스터로 병렬 처리하기
● 적은 메모리로 대규모 데이터 처리하기
스티븐 블랙히스, 앤서니 존스 지음 | 오현석 옮김 | 한빛미디어
함수형 반응형 프로그래밍에 관한 최초의 종합 안내서
프로그램은 ‘어떻게’가 아니라 ‘무엇’을 기술하는 선언적인 문서여야 한다는 주장을 받아들이는 사람이 점점 늘고 있다. 이런 흐름은 함수형 언어의 부흥으로 이어졌다. 함수형 언어로는 프로그램을 더 선언적인 방식으로 작성할 수 있고, 이를 이벤트 처리에 결합한 것이 함수형 반응형 프로그래밍(FRP)이다. 지난 수십 년 동안 이벤트 처리 인프라를 책임진 관찰자 패턴은, 한편으로는 버그의 온상이 되기도 했다. FRP는 관찰자 패턴의 잠재적 버그 원인을 근본적으로 차단하여 더 복잡한 시스템으로 쉽게 확장할 수 있도록 해준다.
이 책의 저자는 FRP 프레임워크인 소듐(Sodium)의 창시자로서, FRP의 기초부터 기존 프로젝트를 점진적으로 FRP 시스템으로 탈바꿈시키는 방법까지 친절히 안내한다.
2016년 11월 모 대학에서 IT 계열 전공 재학생들을 대상으로 진행했던 진로 특강 자료입니다.
앞쪽의 제반 내용들은 다양한 자료들을 정리하면서 제 생각을 담았습니다.
이 자료의 가장 핵심적인 내용은 5가지 유형의 현직 선배들을 대상으로 설문을 실시하여 후배들에게 들려주고 싶은 현실적이고 진솔한 이야기를 정리한 부분입니다.
IT 분야 그리고 소프트웨어 개발자의 삶의 모색하는 분들에게 조금이나마 도움이 되길 바라는 마음에 자료를 공개합니다.
"파이썬 성능 잠재력을 끌어내는 실용적인 개발 전략서"
미샤 고렐릭,이안 오스발트 지음 / 김영근,오현석 옮김 | 한빛미디어 | 2016년 8월 | 30,000원
★ 파이썬 3 대응
★ 프로토타이핑에서 실무 운영까지 살아가는 파이썬 코드의 비밀
아이디어 무한경쟁이 펼쳐지는 대(大)스타트업 시대! 높은 생산성으로 유명한 파이썬은 최우선 고려사항이다. 한 가지, 컴파일 언어 대비 느린 성능 때문에 성공한 서비스나 성능이 중요한 기능은 컴파일 언어로 다시 작성하곤 한다. 하지만 실무 운영까지 파이썬 코드를 계속 이어가는 방법이 있다면?
이 책은 파이썬을 둘러싼 설계와 작동 원리를 설명하고 이에 기반한 실용적인 구현 전략을 소개한다. 멀티코어 아키텍처와 클러스터의 이점을 활용하려면 어떻게 해야 하는가? 안정성을 잃지 않고 확장하는 방법은 무엇인가? 여러분은 이에 대한 명확한 해법을 찾고 방대한 소셜 데이터까지도 눈부신 속도로 처리해내는 파이썬 코드를 얻게 될 것이다.
★ 주요 내용
● numpy, Cython, 프로파일러 활용하기
● 파이썬의 시선으로 바라보는 컴퓨터 아키텍처 이해하기
● CPU 시간과 메모리 사용량을 프로파일링하여 병목 지점 찾기
● 상황에 맞는 컬렉션으로 효율적인 프로그램 작성하기
● 행렬과 벡터 연산 가속하기
● 네이티브 코드로 컴파일하기
● 대량의 I/O와 연산 동시 수행하기
● 원격 클러스터로 병렬 처리하기
● 적은 메모리로 대규모 데이터 처리하기
스티븐 블랙히스, 앤서니 존스 지음 | 오현석 옮김 | 한빛미디어
함수형 반응형 프로그래밍에 관한 최초의 종합 안내서
프로그램은 ‘어떻게’가 아니라 ‘무엇’을 기술하는 선언적인 문서여야 한다는 주장을 받아들이는 사람이 점점 늘고 있다. 이런 흐름은 함수형 언어의 부흥으로 이어졌다. 함수형 언어로는 프로그램을 더 선언적인 방식으로 작성할 수 있고, 이를 이벤트 처리에 결합한 것이 함수형 반응형 프로그래밍(FRP)이다. 지난 수십 년 동안 이벤트 처리 인프라를 책임진 관찰자 패턴은, 한편으로는 버그의 온상이 되기도 했다. FRP는 관찰자 패턴의 잠재적 버그 원인을 근본적으로 차단하여 더 복잡한 시스템으로 쉽게 확장할 수 있도록 해준다.
이 책의 저자는 FRP 프레임워크인 소듐(Sodium)의 창시자로서, FRP의 기초부터 기존 프로젝트를 점진적으로 FRP 시스템으로 탈바꿈시키는 방법까지 친절히 안내한다.
안드레아스 뮐러, 세라 가이도 지음 | 박해선 옮김 | 한빛미디어 | 30,000원
사이킷런 핵심 개발자에게 배우는 머신러닝 이론과 구현
현업에서 머신러닝을 연구하고 인공지능 서비스를 개발하기 위해 꼭 학위를 받을 필요는 없습니다. 사이킷런(scikit-learn)과 같은 훌륭한 머신러닝 라이브러리가 복잡하고 난해한 작업을 직관적인 인터페이스로 감싸주는 덕분이죠. 이 책에서는 사이킷런의 핵심 개발자가 복잡한 수학을 동원하지 않고 실용적으로 머신러닝을 구축하는 모든 단계를 설명합니다. 미적분, 선형대수, 확률 이론을 공부하지 않았어도 이 책을 통해 머신러닝을 활용할 수 있게 될 것입니다.
코디 범가드너 지음 | 강재준, 신원석, 오성근, 이준섭, 조영준 옮김 | 32,000원 | 한빛미디어 | 2016.10.01
★ 오픈스택 핵심 구성요소의 기능과 상호작용을 철저히 파헤친다.
오픈스택의 가장 큰 장점은 모듈성이다. 컴퓨트, 스토리지, 네트워크, 대시보드, 오케스트레이션 등 다양한 구성요소를 조합하여 각자가 제공하려는 서비스를 위한 최상의 맞춤형 인프라를 구축할 수 있다. 하지만 단순한 따라 하기식 설치 경험만으로는 실제 운영 시에 마주하는 복잡 다양한 요구에 제대로 대처할 수 없다. 이 책은 오픈스택 핵심 구성요소들을 다양한 방식으로 배포해보며 응용력을 키우고, 상용 환경에 필요한 구성과 오케스트레이션까지 살펴볼 수 있도록 구성했다. 이를 통해 독자들은 오픈스택 핵심 구성요소가 제공하는 기능과 설치 옵션의 의미와 효과, 다른 구성요소와 상호작용하는 방식을 확실히 이해하게 될 것이다.
발표 내용은 작지만 작은 오픈 소스를 시작으로 오픈소스에 관심을 갖고 작은 오픈 소스의 반복적인 활동을 통해 얻은 경험들을 정리하여 이야기합니다.
이런 반복적인 활동중에
1. 깃, 깃허브와 같은 오픈 소스 환경과 친해지고
2. 세계의 수 많은 오픈 소스들의 경험들을 간접적으로 체험하고
3. 이를 기반으로 새로운 오픈 소스를 직접 개발해보고
4. 직접 개발한 오픈 소스를 공유하면서 파생되는 사회적 리액션
5. 이를 통해 얻은 정보를 다시 프로젝트를 가치있게 만들고
6. 어떨때 힘들고 멘탈이 흔들릴 때 어떻게 했는지
7. 그리고 11줄짜리 소스지만 얼마나 큰 사회적 파장을 만들 수 있는지..
오픈 소스의 시작은 클 필요도 없고 그것들이 잘 알려진 오픈 소스일 필요도 없습니다.
다만 누군가가 시작한 오픈 소스는 격려와 긍정적인 피드백을 받아야 할 소중한 가치라는 것을 이야기하려고 했습니다.
[OSS개발자포럼 & 국민대학교] Git/GitHub 입문하기 Hands on Lab
- http://onoffmix.com/event/95827
박상은, 권한철, 서양주 옮김 | 한빛미디어 | 26,000원
다양한 현실 세계 예제로 스파크 2의 진면목을 경험한다.
이 책은 독자에게 대량의 데이터셋을 가지고 스파크 2를 활용해 복잡한 분석과 머신러닝 학습을 실제로 해보는 생생한 느낌을 전달한다. 단순히 모델을 구축하고 평가하는 데 그치지 않고, 데이터 정제부터 전처리, 데이터 조사, 실제 제품을 만들기까지의 전체 파이프라인을 보여준다. 이러한 과정을 다양한 분야에서 가져온 현실 예제에 맞게 교차 최소 제곱 추천 알고리즘, 의사 결정 나무, K-평균 군집화, 숨은 의미 분석, 세션화, 몬테카를로 시뮬레이션 등의 기법을 동원해 풀어본다.
골빈해커(김진중) 지음 | 한빛미디어 | 22,000원
텐서플로 코드로 맛보는 딥러닝 핵심 개념!
이 책은 신경망 기초부터 CNN, Autoencoder, GAN, RNN, DQN까지 딥러닝의 가장 기본이 되는 모델들을 직접 구현하며 몸으로 익히도록 구성했습니다. 이론을 깊이 파헤치기보다는 다양한 딥러닝 모델의 기초 개념과 기본적인 텐서플로 사용법을 학습하는 데 초점을 두고, 각 모델의 논문에 수록된 복잡한 코드들을 그 핵심이 잘 드러나도록 재구현했습니다. 간결해진 예제들이 여러분을 딥러닝과 텐서플로의 세계로 즐겁고 편안히 모실 것입니다.
프랭크 D. 루나 지음 | 류광 옮김 | 한빛미디어
3D 그래픽 프로그래밍의 기초부터 최신 기법까지
이 책은 DirectX 12로 게임을 개발해가며 대화식 컴퓨터 그래픽 프로그래밍을 익히는 입문서다. 1부는 기본적인 수학적 도구들을, 2부는 Direct3D의 기본 과제들을 수행하는 방법을, 그리고 3부는 여러 응용 기법과 특수 효과를 설명한다. 그 과정에서 명령 목록, 파이프라인 상태 객체, 서술자 힙과 테이블, CPU 추가부담 감소 및 다중 CPU 코어를 효율적으로 사용하기 위한 명시적 자원 관리 같은 DirectX 12의 새 기능을 활용하는 방법을 보여준다. 하드웨어 테셀레이션, 계산 셰이더, 주변광 차폐, 실시간 반사, 법선 매핑과 변위 매핑, 그림자 렌더링, 캐릭터 애니메이션 같은 현대적인 특수 효과와 기법도 이 책으로 배울 수 있다.
디오미디스 스피넬리스 지음 | 남기혁 옮김 | 한빛미디어 | 24,000원
★ 소프트웨어의 완성은 디버깅!
이 책은 경험이 풍부한 개발자를 대상으로 소프트웨어를 완성하는 마지막 기술을 가르친다. 저자는 35년 경험에서 깨우친 일반 원칙, 높은 수준의 전략, 구체적인 기술에 관한 조언, 효율 높은 도구, 창의적인 기법, 효과적인 디버깅과 관련된 행동 특성을 제시한다. 저자가 제안하는 66개의 전문 기법을 통해 디버깅 역량을 확장하고, 각 문제 상황에 맞는 최상의 접근법을 선택할 수 있을 것이다.
★ 주요 내용
다양한 소프트웨어 장애를 해결하는 높은 수준의 전략과 방법
프로그래밍, 컴파일, 실행 시 적용할 구체적인 기법
디버거를 최대한 활용하는 방법
믿고 투자해도 좋은 범용 기술과 도구
막다른 길과 복잡한 미궁에서 탈출하는 첨단 아이디어와 기법
디버깅하기 쉬운 프로그램을 만들기 위한 조언
멀티스레딩, 비동기, 임베디드 코드 디버깅에 특화된 접근법
향상된 소프트웨어 설계, 구축, 관리를 통한 버그 회피법
『이펙티브 디버깅』 - 디버깅 지옥에서 탈출하는 66가지 전략과 기법복연 이
『이펙티브 디버깅』 디버깅 지옥에서 탈출하는 66가지 전략과 기법
디오미디스 스피넬리스 지음 | 남기혁 옮김 | 한빛미디어 | 24,000원
★ 소프트웨어의 완성은 디버깅!
이 책은 경험이 풍부한 개발자를 대상으로 소프트웨어를 완성하는 마지막 기술을 가르친다. 저자는 35년 경험에서 깨우친 일반 원칙, 높은 수준의 전략, 구체적인 기술에 관한 조언, 효율 높은 도구, 창의적인 기법, 효과적인 디버깅과 관련된 행동 특성을 제시한다. 저자가 제안하는 66개의 전문 기법을 통해 디버깅 역량을 확장하고, 각 문제 상황에 맞는 최상의 접근법을 선택할 수 있을 것이다.
★ 주요 내용
다양한 소프트웨어 장애를 해결하는 높은 수준의 전략과 방법
프로그래밍, 컴파일, 실행 시 적용할 구체적인 기법
디버거를 최대한 활용하는 방법
믿고 투자해도 좋은 범용 기술과 도구
막다른 길과 복잡한 미궁에서 탈출하는 첨단 아이디어와 기법
디버깅하기 쉬운 프로그램을 만들기 위한 조언
멀티스레딩, 비동기, 임베디드 코드 디버깅에 특화된 접근법
향상된 소프트웨어 설계, 구축, 관리를 통한 버그 회피법
안드레아스 비티히, 미하엘 비티히 지음 | 모파상(백영상) 옮김 | 한빛미디어 | 2017. 05. 01
AWS 입문자를 위한 시원시원한 실습서 -
이 책은 AWS를 클라우드 인프라의 핵심인 컴퓨팅, 저장소, 네트워킹을 중심으로 소개한다. 구체적으로는 클라우드 컴퓨팅 개론과 계정 생성 같은 기초, AWS API로 AWS의 모든 기능을 프로그램적으로 제어하는 인프라 자동화, 데이터를 안전하게 보관하는 다양한 기법, 사설 네트워크로 시스템을 격리하는 방법, 고가용성과 장애허용 설계 기법 등을 설명한다.
사이토 고키 지음 | 개앞맵시(이복연) 옮김 | 24,000원 | 한빛미디어 | 2017.01.03
"직접 구현하고 움직여보며 익히는 가장 쉬운 딥러닝 입문서 "
이 책은 라이브러리나 프레임워크에 의존하지 않고, 딥러닝의 핵심을 ‘밑바닥부터’ 직접 만들어보며 즐겁게 배울 수 있는 본격 딥러닝 입문서입니다. 술술 읽힐 만큼 쉽게 설명하였고, 역전파처럼 어려운 내용은 ‘계산 그래프’ 기법으로 시각적으로 풀이했습니다. 무엇보다 작동하는 코드가 있어 직접 돌려보고 요리조리 수정해보면 어려운 이론도 명확하게 이해할 수 있습니다. 딥러닝에 새롭게 입문하려는 분과 기초를 다시금 정리하고 싶은 현업 연구자와 개발자에게 최고의 책이 될 것입니다.
임백준 지음 | 16,000원 | 한빛미디어 | 2016.11.20
세상 모든 프로그래머에게 전하는 행복 보따리 이제는 유명해진 임백준 저자는 2003년, 그의 인생 첫 책인 『행복한 프로그래밍』을 출간한다. 그로부터 십여 년이 훌쩍 지난 2016년, 마침내 개정판이 탄생했다.
(주로 4대강과 골프장 때문이지만) 확실히 강산도 변한 오늘, 저자가 말하고자 하는 ‘행복한’ 프로그래밍은 무엇이 달라졌을까? 놀랍게도 사실 많은 것이 변하진 않았다. 행복의 본질, 프로그래머의 본능인 뜨거운 도전 정신, 그 열기에 기름을 붓고 중독되게 하는 성취감은 해를 거듭해도 변하지 않기 때문이다.
프로그래밍은 재미있는 놀이요, 상상을 현실로 만드는 마법이다. 세상을 창조한 신도 분명 우리와 같은 프로그래머일 것이다. 우리도 이 책과 함께 미래를 프로그래밍하는 행복한 프로그래머가 되어보자.
★ 누구를 위한 책인가
- 젊은 시절의 끓어오르던 열정을 그리워하며 수년 뒤 미래를 걱정하는 중년 개발자
- 연이은 야근에 지쳐 어느덧 쳇바퀴 도는 신세가 된 것 같은 젊은 직장인
- 멋진 프로그래머가 되기를 꿈꾸는 파릇한 학생
- 나만의 세상을 창조하는 신이 되어보기를 꿈꾸는 자
- 『누워서 읽는 알고리즘』의 팬
『빠르게 훑어보는 구글 클라우드 플랫폼』 - 맛보기복연 이
조대협, 최명근, 최유석, 윤성재, 김영균 지음 | 한빛미디어 | 2016.09.10
구글 클라우드 플랫폼을 처음 사용하는 사람을 위한 실습형 입문서.
이 책은 구글 클라우드를 처음 사용하는 사람이 가상 머신(VM) 기반의 클라우드 서비스 기능들을 빠르게 사용할 수 있도록 도울 목적으로, 실습 위주로 속도감 있게 구성하였다.
구글 클라우드의 가상 머신 서비스인 컴퓨트 엔진을 사용하기 위해 가입부터 VM 설정, 네트워크 설정, 오토 스케일링(자동 확장)과 모니터링, 그리고 MySQL 매지니드 서비스인 Cloud SQL의 사용법을 소개한다. 마지막으로 구글 클라우드만의 장점인 빅데이터 서비스, 전 세계를 덮는 전용 네트워크망, 합리적인 가격 정책을 소개한다.
『9가지 사례로 익히는 고급 스파크 분석』 - 맛보기복연 이
샌디 라이자, 유리 레이저슨, 션 오언, 조시 윌스 지음 | 박상은, 권한철, 서양주 옮김 | 한빛미디어 | 2016년 07월 | 26,000원
예스24 링크: http://www.yes24.com/24/goods/29081416
★ 스파크 실전편! 실무와 가장 가까운 경험을 제공한다.
이 책은 기능과 API를 단조롭게 나열하지 않는다. 현실과 동떨어진, 예제를 위한 예제를 따라 하지도 않는다. 대신 우리 주변에서 찾을 수 있고 우리 삶과 밀접한 실제 데이터를 가져와 함께 분석하고 다듬어본다. 그것도 하나가 아니라 9가지다. 음악 추천부터 이상 감지, 교통, 금융, 영상 데이터 등. 관심 가는 장을 먼저 봐도 좋고, 차례대로 천천히 따라 해봐도 좋다. 그럼 가장 진보한 분석 도구인 스파크로 다 함께 데이터의 바다를 항해해보자!
★ 현실 세계 데이터셋과 스파크의 만남
1. 오디오스크로블러(AudioScrobbler) 데이터셋으로 음악 추천하기
2. 의사 결정 나무로 산림 식생 분포 예측하기
3. K 평균 군집화로 네트워크 이상 감지하기
4. 숨은 의미 분석으로 위키백과 이해하기
5. 그래프엑스(GraphX)로 동시발생 네트워크 분석하기
6. 뉴욕 택시 운행 데이터로 위치 및 시간 데이터 분석하기
7. 몬테카를로 시뮬레이션으로 금융 리스크 추정하기
8. BDG 프로젝트와 유전체학 데이터 분석하기
9. 파이스파크(PySpark)와 썬더(Thunder)로 신경 영상 데이터 분석하기
라쎄 코스켈라 지음 | 이복연 옮김 | 한빛미디어 | 2013년 11월 | 25,000원
예스24: http://www.yes24.com/24/goods/1136108
테스트 라이브러리 사용법에서 나아가 ‘좋은 테스트란 무엇인가’, ‘좋은 테스트를 작성하려면 어떻게 해야 하는가’에 관한 현장의 물음에 해답을 제시한다. 테스트가 갖춰야 할 요건에 따라 나눈 테스트 카탈로그가 수록되어, 필요할 때마다 원하는 목록을 참고하여 자신이 작성한 테스트에서 문제를 발견하고 수정해 나갈 수 있으며 더욱 응용력 높은 학습을 할 수 있다.
『데이터 분석을 통한 네트워크 보안』 - 맛보기복연 이
마이클 콜린스 지음 | 문성건 옮김 | 한빛미디어 | 2016년 04월 | 30,000원
예스24: http://www.yes24.com/24/Goods/25411084
진화하는 네트워크에 대처하는 진보된 보안 기술을 익힌다.
모바일 기기의 범람에 IoT까지, 오늘날의 복잡한 네트워크를 보호하려면 전통적인 침입 탐지와 로그 분석만으로는 충분하지 않다. 이 책에서 보안 전문가인 마이클 콜린스는 점점 더 거대해지는 네트워크에서 트래픽 데이터를 수집, 정리, 분석하는 여러 기법과 도구를 선보인다. 네트워크가 어떻게 이용되는지 이해하고 이를 보호하고 개선하기 위한 조치가 무엇인지 배울 수 있다.
- 네트워크, 호스트, 서비스 센서에서 보안 데이터 얻기
- RDB, 그래프DB, 레디스, 하둡에 트래픽 데이터 저장하기
- SiLK, R 등의 도구로 분석 및 시각화하기
- 탐구적 데이터 분석으로 이상 현상 탐지하기
- 그래프 분석으로 경보와 포렌식 개선하기
- 트래픽 양과 행위를 살펴 DDoS와 데이터베이스 급습 검진하기
- 네트워크 지도와 장비 목록의 단계별 활용 방법
『클라우드 시스템을 관리하는 기술』 - 맛보기복연 이
토머스 리몬첼리 외 공저 / 류광 옮김 | 한빛미디어 | 2016년 2월 | 36,000원
예스24: http://www.yes24.com/24/goods/24557610
“클라우드 규모 서비스를 실현하는 이론과 실전 노하우를 정리한 지침서”
이 책은 대규모 클라우드 인프라와 서비스의 구조와 설계 패턴, 그리고 이를 운영하는 방법까지, 시스템과 팀이 유기적으로 움직이는 비법을 제시한다.
저자들의 구글, 엣시(Etsy), 트위터, 페이스북, 넷플릭스, 아마존 등 거대 기업에서의 사례와 경험에서 시기를 타지 않는 근본적인 원리(principle)와 관행(practice), 특정 제품이나 시스템을 선택할 때 독자가 반드시 살펴봐야 할 품질 요소들을 이 책에 담았다. 이러한 접근법 덕분에 시간이 흘러 기술이 변해도 독자는 이 업계에서 여전히 준비된 전문가로 남게 될 것이다.
『크리스 크로퍼드의 인터랙티브 스토리텔링』 맛보기복연 이
크리스 크로퍼드 저/최향숙 역 | 한빛미디어 | 2015년 11월 | 22,000원
게임 개발자 회의(GDC) 창립자가 들려주는 인터랙티브 스토리텔링
1980년대부터 다양한 게임을 제작해온 크리스 크로퍼드는 스토리의 중요성에 매료되어 20년 넘게 인터랙티브 스토리텔링을 연구하며 대중화에 앞장서왔다. 이 책은 그의 모든 노하우와 가장 최근의 성과를 집대성한 것으로, 진정한 인터랙티브 스토리텔링에 대한 고찰부터, 이를 위한 사고의 전환, 올바로 구현하기 위한 추상화와 수학적 설계 기법, 플레이어의 자유의지와 작가가 의도한 운명 사이의 균형잡기 등에 관한 실용적 지침을 담았다.
이 책은 본격적인 알고리즘 공부보다는 알고리즘을 소재로 풀어가는 재미난 이야기를 담았다. 새로운 알고리즘 이론을 소개하는 것도, 독자에게 알고리즘을 ‘강의’하는 것도 아니다. 오히려 알고리즘은 맛있는 읽을거리의 ‘재료’로 쓰였을 뿐이다. 현실 세계와 유사한 재미있는 퀴즈로 독자의 흥미를 유도하기도 하고 때로는 딱딱한 수학 문제로 긴장감을 고조시킨다. 어떤 곳에서는 지저분한 펄 코드가 등장하기도 하며 깔끔하고 읽기 쉬운 C 코드 또한 자주 등장한다. 정렬이나 탐색 리스트 등의 정통 알고리즘도 책의 곳곳에 녹아 있다. 익살스럽고 특이한 그림을 보는 재미 또한 쏠쏠하다는 점도 이 책의 부수적인 장점이다.
“소프트웨어를 개발하는 사람에게 알고리즘은 취업이나 승진을 위해서 억지로 공부하는 대상이 아니라 퍼즐이나 수수께끼처럼 자체로 재미있고 신나는 놀이가 되어야 한다. 내 책 중에서 이 책이 가장 많은 사랑을 받은 배경에는 알고리즘을 딱딱한 공부가 아니라 말랑말랑한 놀이로 다루었다는 측면이 놓여 있을 것이다. 그런 의미에서 나는 이 책이 이미 개발자인 사람은 물론이고, 이제 막 소프트웨어 개발과 코딩을 배우려는 사람들에게 많이 읽히기를 희망한다.”
-- 지은이의 말 중에서
★ 대상 독자
- 휴식과 상식 쌓기와 공부를 동시에 원하는 바쁜 직장인
- 학문으로서가 아닌, 개발자의 삶에 녹아든 알고리즘 이야기가 궁금한 개발자
- 알고리즘이 재미있는 개발자
데이터베이스 수업도 듣고 선임자가 건네준 모델대로 구현해본 경험이 제법 있더라도, 막상 자신이 책임자가 되어 백지 위에 엔터티 박스와 관계선을 그려야 한다면 막막함이 앞을 가린다. 이전에 본 듯한 패턴을 흉내 내 그림을 그려보지만 수백, 수천의 엔터티 홍수 속에서 제대로 가고 있다는 확신이 서지 않는다.
저자는 이처럼 너무도 거대한 현업의 복잡함에 압도되어 길을 잃고 고생하는 후임들의 안타까운 모습에 직접 멘토가 되어주고자 이 책을 쓰기 시작했다. 내공이 깊어야 연공이 자유롭듯, 그 본질을 꿰고 있다면 어떤 업무가 주어지든 막힘없이 헤쳐나갈 수 있다. 짧은 호흡으로 경쾌하게 풀어낸 이야기들을 통해 따스한 온기가 묻어 있는 저자의 노하우를 내 것으로 만들자.
『풀스택 개발자를 위한 MEAN 스택 입문』 - 미리보기복연 이
MEAN 스택, 서버와 클라이언트를 넘나드는 풀스택 엔지니어의 선택
MEAN은 서버와 클라이언트 양쪽을 모두 다루는 풀스택 엔지니어를 위한 기술이며, 한번 익혀두면 여러 상황에서 돌파구를 발견할 가능성을 높여준다. 그만큼 개발자의 경쟁력을 높일 수 있음을 의미한다. 스택의 모든 구성 요소가 자바스크립트를 사용하므로 진입 장벽이 낮고 팀 내 협업, 노하우 공유, 의사소통에 큰 도움을 준다.
이 책은 오랜 개발과 번역 경험을 두루 갖춘 베테랑 역자가 원서의 예제를 완결된 형태로 재구성해서 독자의 시간을 절약해주고 아쉬운 설명을 보강해 완성도를 높였다. 책의 흐름에 발맞춰 예제를 조금씩 확장해 나가다 보면 어느 순간 자신만의 멋진 풀스택 앱을 만들 수 있을 것이다.
- 지은이 : 애덤 브레츠, 콜린 J. 이릭
- 옮긴이 : 박재호
- ISBN : 978-89-6848-218-2 93000
- 발행일 : 2015년 9월 1일
- 페이지수 : 348
- 정가 : 28,000원
- 구매(예스24) : http://goo.gl/KNlRGg
『게임 매니악스 액션 게임 알고리즘』 - 미리보기복연 이
액션 게임 기술을 총망라한 알고리즘 백과사전
게임의 백미는 역시 액션 게임! 이 책은 100개 이상의 상용 게임을 분석하여 이동, 점프, 공격, 무기, 지형 이용, 아이템 등 화끈하고 박진감 넘치는 액션을 선사하는 알고리즘 94가지를 총정리하였다.
『게임 매니악스 액션 게임 알고리즘』, 『게임 매니악스 퍼즐 게임 알고리즘』, 『게임 매니악스 슈팅 게임 알고리즘』, 『게임 매니악스 탄막 게임 알고리즘』으로 구성된 <게임> 시리즈는 게임 장르별 핵심 알고리즘을 일목요연하게 정리하여 이제 막 게임 개발에 뛰어든 이에게는 좋은 입문서가, 경력 많은 개발자에게는 옆에 두고 필요할 때 바로 찾아볼 수 있는 훌륭한 레퍼런스가 되어줄 것이다.
- 지은이 : 마츠우라 켄이치로, 츠카사 유키
- 옮긴이: Wisdom Teeth
- ISBN : 978-89-6848-206-9 93000
- 발행일 : 2015년 7월 1일
- 기타 : <게임> 시리즈
- 페이지수 : 564
- 정가 : 34,000원
2. www.hanbit.co.kr
이것이
프로그래밍이다!
이것이 안드로이드다
진정한 안드로이드 개발자로
이끌어줍니다.
SDK 5.0 롤리팝 호환!
책만 보고,
동영상 강좌로도 만족하지 못했다면 Daum
카페 '슈퍼드로이드'에서 만나요
cafe.daum.net/superdroid
박성근 저 | 1,164쪽 | 45,000원
이것이 C언어다
세상에 없던 새로운
C언어 입문서 탄생!
삼성, LG에서 펼쳐졌던
전설의 명강의를 풀타임 동영상 강좌로!
이보다 더 확실한 방법은 없다, 칠판강의
전체 동영상 강좌 유투브 전격 공개!
http://goo.gl/tJK3Tu
서현우 저 | 708쪽 | 25,000원
이것이 자바다
가장 중요한 프로그래밍 언어를 하나
배워야 한다면, 결론은 자바다!
중급 개발자로 나아가기 위한 람다식,
JavaFX, NIO 수록
자바의 모든 것을 알려주는 인터넷 강의
궁금한 것은 카페에서!
cafe.naver.com/thisisjava
신용권 저 | 1,224쪽 | 30,000원
저자직강동영상 제공!
3. 모던 웹을 위한
JavaScript +
jQuery 입문
www.hanbit.co.kr
지금은
모던 웹 시대!
HTML5 분야 부동의 1위 도서
HTML5 표준안 확정에 맞춘 완전 개정판의 귀환!
HTML5 권고안과 최신 웹 브라우저 환경 대응
윤인성 저 | 624쪽 | 30,000원
모던 웹 디자인을 위한
HTML5 +
CSS3 입문
자바스크립트에서 제이쿼리, 제이쿼리 모바일까지
한 권으로 끝낸다!
시대의 흐름에 맞춰 다시 쓴 자바스크립트 교과서
윤인성 저 | 980쪽 | 32,000원
페이스북, 월마트, 링크드인은 왜
Node.js를 선택했는가?
이 물음에 대한 답은 Node.js가 보여주는 빠른 처리 능력 때문이다.
윤인성 저 | 484쪽 | 25,000원
모던 웹을 위한
Node.js
프로그래밍
필요한 것만 배워
바로 현장에서 쓰는 HTML5
순서대로 읽으며 실습할 수 있는 HTML5 자습서
김상형 저 | 700쪽 | 32,000원
HTML5 +
CSS3 정복
10. 10
처음으로 실무에 PHP를 사용했던 때는 2002년이었다. 한 중소 규모의 웹 서비스 개발을 맡았
을 때였는데, 처음에는 서블릿으로 개발할 계획이었지만 몇 가지 이유로 최종 기획 단계에서
PHP로 결정됐다. 사이트 전체를 PHP로 개발하는 일은 처음이었던지라 우려도 있었지만 막상
작업해보니 Perl CGI나 서블릿을 사용하는 것보다 쉽고 빠르게 사이트를 구축할 수 있어 새삼
놀랐던 기억이 난다. PHP의 풍부한 내장 라이브러리와 유연한 출력 제어 능력 덕분이었다.
아닌 게 아니라 그즈음 우리나라에서는 이미 PHP가 빠른 속도로 자리를 잡아가고 있었다. 개
발 언어로서뿐만 아니라 호스팅 업체들이 주력으로 지원하는 언어로서도 각광받았다. 단기간
동안 호스팅 서비스 거의 대부분에 PHP가 탑재됐고 한쪽에서는 다양한 PHP 웹 애플리케이션
들이 제작되고 공개됐다. 자생적으로 형성된 국내 커뮤니티 웹 사이트가 대부분 이런 PHP 웹
프로그램들을 이용해 구축됐다. 이 시기에 큰 인기를 끌었던 PuryBBS, 제로보드4 등은 이후
에 나온 테터툴즈나 XE 같은 걸출한 프로젝트의 모태이기도 하다. 이런 면에서 보자면 우리나
라에서 PHP가 저변을 확대하는 과정은 국내 인터넷 문화의 폭발적 확장 과정과 어느 정도 궤
를 같이 한다고도 볼 수 있다.
PHP 같은 고참 스크립트 언어가 아직까지 각종 통계나 인기 순위에서 상위권을 차지하는 데
에는 이유가 있다. 나는 PHP가 지닌 매력의 본질이 자유로운 포용력이라고 생각한다. PHP는
끊임없이 언어 구조를 개선하고 유수의 라이브러리들을 통합하는 한편 스크립트 언어의 태생
적 한계를 극복하려는 시도도 멈추지 않았다. PHP 진영은 늘 다양한 프로젝트로 북적거리는
활기찬 분위기를 이어왔다. 여기에 수많은 개발자들의 활발한 참여가 더해져 PHP 개발 생태
계는 나날이 성숙해지고 있다. 특히 최근 몇 년간 PHP는 탄생 이후 가장 역동적인 변화의 시
기를 겪고 있다고 해도 과언이 아니다. 페이스북과 Hack으로 대변되는 외적 요인을 촉매로 언
어 자체의 근간부터 재정립되고 있으며, 그 결과 PHP 7이라는 또 한번의 큰 도약을 목전에 두
고 있다.
국내에서는 PHP가 대형 솔루션을 개발하기에 적합하지 않다거나 보안에 취약한 언어라고 생
각하는 이들도 있다. 역설적이게도 이런 부정적인 인식은 PHP가 지닌 강점에 기인한다. 입문
옮긴이의 글
11. 11
하기 쉽고 빠르게 개발할 수 있어 단기간에 많은 프로젝트에 도입됐지만 그에 반해 엔터프라이
즈급 솔루션 개발에 사용되거나 다양한 고도화 작업에 심도있게 활용된 사례가 드물기 때문이
다. 스크립트 언어의 특성상 소스코드가 공개되어 있다는 점도 기피 사유 중 하나였으며 국내
SI 프로젝트에 채택되는 플랫폼 구성이 다소 획일적이라는 실정도 한 몫 거들었다. 그러나 이
런 인식과는 달리 현재 PHP는 방대한 솔루션을 많은 개발자가 공동으로 작업할 수 있는 제반
환경을 충분히 갖추고 있다. 의존성과 패키징에 대한 표준이 정립됐으며 이들을 관리할 수 있
는 우수한 도구가 등장했고, 지속적인 통합과 자동화된 테스팅 또한 가능해졌다. 뿐만 아니라
완성도 높은 풀스택 프레임워크와 ORM, 강력한 템플릿 엔진들이 포진하고 있으며 셀 수 없이
많은 오픈소스 컴포넌트를 자유롭게 활용할 수 있다.
PHP의 기술적인 최신 동향과 그에 따른 모범 사례들에 대한 정보를 PHP 초심자나 다른 언어
개발자가 일목요연하게 열람하거나 편리하게 접할 수 있는 창구는 흔치 않다. 몇몇 선도적인
개발자들의 세미나와 블로그 기고만으로는 역부족이다. 특히나 최근 국내에는 PHP 관련 서적
들의 출간도 주춤한 편이어서 아쉬움이 더해가는 상황이었다. 『Modern PHP』는 이런 시점에
서 만난 가뭄의 단비 같은 책이다.
이 책은 ‘모던 PHP’라는 제목 그대로 PHP 언어의 최신 핵심 기능을 요점정리해줄 뿐만 아니
라 유머러스하고 친절한 설명과 이해하기 쉬운 예제를 통해 모범 사례와 발전된 개발 방법까지
제시해주는 실용서다. 저자인 조시 록하트는 유력 프레임워크의 개발자인 동시에 PHP에 대한
인식 제고를 위해 발벗고 나선 오피니언 리더로서, PHP에 대한 자신의 애정과 열정을 이 책에
고스란히 담아 놓았다. 또한 PHP 진영의 전반적인 근황에 대해 넓은 시각으로 잘 설명하고 있
어서 앞으로 공개될 PHP 7을 준비하는 데 있어서도 도움이 될만한 책이다.
PHP의 미래는 여전히 활짝 열려있고 잠재력 역시 무궁무진하다. 모쪼록 국내의 개발자들도
PHP의 짜릿한 변화의 순간에 기꺼이 동참하고 진보된 PHP를 온전히 활용할 수 있게 되기를
바라며, 그 과정에 이 책이 조금이나마 보탬이 될 수 있었으면 한다.
이 책이 나오기까지 도움을 주신 분들에게 진심으로 감사의 마음을 전하고 싶다. 먼저, 처음 번
12. 12
역 의사를 전달했을 때 선뜻 기회를 제공해 준 한빛미디어 측에 감사드린다. 강은희 님과 최현
우 팀장님이 원고의 미숙한 부분을 명확히 짚어주고 적절한 가이드 라인을 제시해 준 덕분에
무사히 작업을 마무리할 수 있었다. 막히는 부분이 있을 때는 종종 주변에 도움을 구했다. 그
때마다 매번 새로운 시각과 다양한 아이디어로 생각의 물꼬를 틔워준 김재영 님에게도 감사드
린다. 마지막으로, 언제나 나를 지지하고 응원해주시는 부모님께 감사의 말씀을 드린다.
_2015년 10월 정병열
옮긴이 정병열 cloudshadow@gmail.com
연세대학교 세라믹 공학과를 졸업하고 개발자와 번역자로 활동하고 있다. 어린 시절 BASIC 언어를 통해 프로그래밍을 처음 경험
했으며 PC통신 시절에는 프로그래밍 관련 동호회에서 활동했다. 2000년대 초반부터 프로그래밍 언어와 플랫폼에 관계없이 다양
한 웹 사이트 및 솔루션 개발 프로젝트를 수행했으며 몇 년간은 리눅스 시스템 엔지니어로 근무하기도 했다. 분야를 가리지 않는 폭
넓은 관심사를 가지고 있으며 흥미를 느끼면 어떻게든 파고들어 습득하고 마는 성격의 소유자다. 현재는 취업포털 업체에서 다양한
업무를 수행하고 있다.
13. 13
온라인에는 수없이 많은 PHP 튜토리얼이 있다. 이들 대부분은 이미 낡고 쓸모 없어진 지 오래
지만 불행히도 구글 검색 결과에 살아남아 여전히 참조자료로 활용된다. 이런 낡은 정보를 무
분별하게 받아들인 PHP 프로그래머는 자신도 모르는 사이에 느리고 보안에 취약한 PHP 애플
리케이션을 만들게 될 위험에 처한다. 나는 2013년에 이러한 문제를 인식했고, 그때 가졌던 문
제의식은 PHP The Right Way(http://www.phptherightway.com)를 시작하는 가장 큰 계기
가 됐다. PHP The Right Way는 PHP 프로그래머가 PHP 커뮤니티 권위자들이 제공하는 품
질 높은 최신 정보에 쉽게 접근할 수 있게 하려고 만든 것이다.
『Modern PHP』는 이와 같은 목표를 지향하는 나의 다음 시도다. 이 책은 참고서가 절대 아니
며 여러분과 내가 친근하고 재미있게 나눈 대화를 담은 기록과도 같다. 나는 최신 PHP 프로
그래밍 언어를 소개하는 한편, 나의 오픈소스 프로젝트와 일상 업무에서 매일 사용하는 최신
PHP 기술을 보여줄 것이다. 그리고 여러분이 최신 코딩 표준을 사용하여 자신의 컴포넌트와
라이브러리들을 PHP 커뮤니티에서 공유할 수 있도록 도울 것이다.
‘커뮤니티’라는 말이 되풀이되어 나올 것이다. 가끔 극적인 사건이 있긴 해도 PHP 커뮤니티는
대체로 프로그래머들에게 친근하고 유용하며 우호적이다. 만약 이 책에서 언급한 특정 내용에
대해 궁금해지면 자신의 지역 PHP 사용자 그룹에 가서 질문해보기 바란다. 여러분이 더 나은
PHP 프로그래머가 되도록 도와줄 개발자들은 얼마든지 가까이에 있을 것이다. 지역 PHP 사
용자 그룹은 당신이 이 책을 다 읽은 후에도 지속적으로 PHP 스킬을 향상할 수 있게 도와줄
귀중한 자원이다.
이 책에 대하여
시작하기에 앞서 몇 가지를 염두에 두었으면 한다.
첫째, 다양한 PHP 사용 방법을 이 책에서 모두 다루기에는 시간이 부족하다. 대신 나의 PHP
사용 방법을 보여줄 것이다. 독단적인 접근 방식임에 분명하지만, 나는 많은 PHP 개발자가 채
들어가며
14. 14
택한 사례와 표준을 그대로 사용한다. 이 책에서 얻은 것들을 여러분의 프로젝트에 즉시 적용
할 수 있을 것이다.
둘째, 여러분이 변수와 조건문, 반복문 등에 익숙하다고 간주한다. PHP를 알아야 하는 것은
아니지만, 최소한 프로그래밍 기초 개념에 대한 기본 이해는 필요하다. 커피를 곁들여도 된다.
그 외의 모든 것은 내가 제공해줄 것이다.
셋째, 나는 여러분이 특정 운영체제를 사용한다고 간주하지 않는다. 하지만 앞으로 나올 코드
예제는 리눅스에서 작성한다. 배시Bash 명령어는 우분투용과 CentOS용을 함께 제공하며 일부
는 OS X에서도 실행할 수 있다. 만약 윈도우 사용자가 이 책의 예제 코드를 실행하고자 한다
면 가급적 리눅스 가상머신을 사용하기 바란다.
이 책의 구성
1부에서는 네임스페이스namespace, 제너레이터generator, 트레이트trait 같은 PHP의 새로운 기능을
설명한다. 모던 PHP 언어를 소개하고 여러분이 지금까지 몰랐을 수도 있는 기능을 선보인다.
2부에서는 PHP 애플리케이션에서 구현해야 할 모범 사례들을 알아본다. PSR에 대해 들어보
았을 것이다. 하지만 그것이 무엇인지, 어떻게 사용하는 것인지 온전하게 확신할 수 있는가?
사용자 입력의 위험을 제거하고 데이터베이스 쿼리를 안전하게 사용하는 방법을 알고 싶은가?
그렇다면 2부를 보라.
3부는 1부와 2부보다 더 기술적이다. 배포, 튜닝, 테스트 그리고 PHP 애플리케이션을 프로파
일링하는 방법을 알아본다. 카피스트라노Capistrano를 이용한 배포 전략을 세우고 PHP유닛PHPUnit
과 트래비스 CITravis CI 같은 테스팅 도구를 이야기한다. 그리고 PHP 애플리케이션의 성능을 높
이기 위한 PHP 튜닝 방법도 알아본다.
부록 A는 PHP-FPM 설치와 구성에 대해 단계별 안내를 제공한다.
15. 15
부록 B는 프로덕션 서버에 유사하게 대응하는 로컬 개발 환경을 구축하는 방법을 설명한다. 또
한 신속한 구축에 도움을 줄 대안 도구로 베이그런트Vagrant, 퍼핏Puppet, 셰프Chef를 알아본다.
감사의 말
이 책은 나의 첫 책이다. 오라일리에서 『Modern PHP』 집필을 제안했을 때 나는 정말이지 흥
분과 두려움에 휩싸여버리고 말았다. 어깨춤이 절로 나올 정도였다. 오라일리가 집필을 제안하
다니, 굉장한 일이지 않은가! 기쁨도 잠시, 흥분을 가라앉히고 나는 스스로에게 정말 그렇게 많
은 양을 쓸 수 있을지 물었다. 책을 쓰는 것은 그리 만만한 작업이 아니기 때문이다.
물론, 즉시 “네”라고 말했다. 가족, 친구, 동료, 편집자, 나를 전적으로 지지해줄 독자들이 있었
기 때문에 기꺼이 『Modern PHP』를 쓰겠다고 할 수 있었다. 그들이 보내준 귀중한 조언에 감
사의 뜻을 밝히고 싶다. 이들이 아니었다면, 이 책은 절대로 나올 수 없었다.
우선, 오라일리 미디어의 담당 편집자 앨리슨 맥도날드(@allyatoreilly)에게 감사하고 싶다.
앨리는 친절하고, 비판적이고, 든든하며, 명석하다. 그녀는 내가 방향을 잃을 때마다 적절히 바
로 잡아주어야 할 정확한 때와 방법을 알고 있었다. 그녀는 내게 있어 최고의 편집자다.
또한 기술 검토를 해준 아담 페어홀름(@adamfairholm)과 에드 핀클러(@funkatron)에게
도 감사한다. 아담은 뉴프랭글드(https://www.newfangled.com)의 뛰어난 웹 개발자며, 뮤직
비디오 데이터베이스 웹 사이트 IMVDb(http://imvdb.com)의 개발자로 유명하다. 에드는 어
마어마한 PHP 실력과 개성적인 팟캐스트 /dev/hell(http://devhell.info), 오픈소싱 정신질환
캠페인Open Sourcing Mental Illness campaign (http://funkatron.com/osmi)으로 잘 알려져 있다. 아담과
에드는 내 초고의 멍청하고 비논리적이며 부정확한 부분들을 지적해주었다. 그들의 노골적이
고 정직한 피드백에 대해서는 어떠한 말로도 감사의 표현을 다 할 수 없다. 그들의 지도와 지혜
에 영원히 감사한다. 최종 원고에 실수나 오류가 있다면 그것은 전적으로 내 책임이다.
16. 16
늘 나를 격려해준 뉴미디어 캠페인New Media Campaigns (http://www.newmediacampaigns.com)의
동료들 엘, 클레이, 크리스, 알렉스, 패트릭, 애슐리, 레니, 클레어, 토드, 파스칼, 헨리, 네이
선! 그리고 처음부터 끝까지 친절하게 격려해준 모든 이에게 고개 숙여 감사한다.
가장 중요한 나의 가족 로럴, 이선, 테사, 찰리, 리사, 글렌, 리즈에게 감사한다. 그들의 격려가
없었다면 절대로 이 책을 낼 수 없었을 것이다. 사랑스러운 나의 아내 로럴, 당신의 인내에 감
사한다. 밤 늦은 집필 작업 때문에 매번 카리부 커피Caribou Coffe1
에 동행해주고 주말에도 아내에
게 소홀했던 나를 이해해줘서 감사한다. 일정을 맞추고 지속적으로 동기부여할 수 있게 해준
것에 감사한다. 지금부터 영원토록 당신을 사랑하겠다.
_저자 조시 록하트
1 역자주_ 커피숍 체인의 이름이다.
지은이 조시 록하트 Josh Lockhart
조시 록하트는 웹 애플리케이션과 API를 빠르게 개발할 수 있는 초소형 PHP 프레임워크 슬림Slim을 개발했다. 또한 전 세계 PHP
개발자들에게 모범 사례를 장려하고 양질의 정보를 제공하는 권장안으로 유명한 ‘PHP The Right Way’를 창안했으며 지금도 운
영하고 있다.
조시는 노스캐롤라이나주 칼버러에 위치한 풀-서비스 웹 디자인, 개발, 마케팅 에이전시 업체인 뉴미디어 캠페인(http://www.
newmediacampaigns.com/)에서 개발자로 일하고 있다. HTML, CSS, PHP, 자바스크립트, Bash와 다양한 콘텐츠 관리 프
레임워크를 이용한 맞춤 애플리케이션 만들기를 좋아한다. 2008년 노스캐롤라이나대학교 채플힐 캠퍼스 정보문헌학 과정을 수료
했으며 아내인 로럴과 함께 두 마리 개를 키우며 노스캐롤라이나주 채플힐에 거주하고 있다.
조시의 트위터(https://twitter.com/codeguy)를 팔로우하거나 깃허브(https://github.com/codeguy)에서 그의 오픈소스 프
로젝트들을 확인할 수 있다.
17. 17
CONTENTS
옮긴이의 글 ��������������������������������������������������������������������������������������������������������������������
6
들어가며 ������������������������������������������������������������������������������������������������������������������������
9
PART 1 언어 기능
CHAPTER 1 새로운 PHP
1.1 과거 ����������������������������������������������������������������������������������������������������������������������������
27
1.2 현재 ����������������������������������������������������������������������������������������������������������������������������
28
1.3 미래 ����������������������������������������������������������������������������������������������������������������������������
30
CHAPTER 2 기능
2.1 네임스페이스 ����������������������������������������������������������������������������������������������������������������
31
2.1.1 네임스페이스를 사용하는 이유 ��������������������������������������������������������������������������������
33
2.1.2 선언 �������������������������������������������������������������������������������������������������������������������
34
2.1.3 임포트와 별칭 ������������������������������������������������������������������������������������������������������
35
2.1.4 유용한 팁 ������������������������������������������������������������������������������������������������������������
38
2.2 인터페이스로 코딩하기 ���������������������������������������������������������������������������������������������������
40
2.3 트레이트 ����������������������������������������������������������������������������������������������������������������������
45
2.3.1 트레이트를 사용하는 이유 ��������������������������������������������������������������������������������������
46
2.3.2 트레이트 생성 ������������������������������������������������������������������������������������������������������
47
2.3.3 트레이트 사용 ������������������������������������������������������������������������������������������������������
49
2.4 제너레이터 �������������������������������������������������������������������������������������������������������������������
50
2.4.1 제너레이터 생성 ���������������������������������������������������������������������������������������������������
51
2.4.2 제너레이터 사용 ���������������������������������������������������������������������������������������������������
52
18. 18
CONTENTS
2.5 클로저 �������������������������������������������������������������������������������������������������������������������������
54
2.5.1 생성 �������������������������������������������������������������������������������������������������������������������
55
2.5.2 상태 등록 ������������������������������������������������������������������������������������������������������������
56
2.6 젠드 오피캐시 ���������������������������������������������������������������������������������������������������������������
59
2.6.1 젠드 오피캐시 활성화 ��������������������������������������������������������������������������������������������
59
2.6.2 젠드 오피캐시 설정 �����������������������������������������������������������������������������������������������
61
2.6.3 젠드 오피캐시 사용 �����������������������������������������������������������������������������������������������
62
2.7 내장 HTTP 서버 �����������������������������������������������������������������������������������������������������������
62
2.7.1 서버 실행 ������������������������������������������������������������������������������������������������������������
63
2.7.2 서버 설정 ������������������������������������������������������������������������������������������������������������
63
2.7.3 라우터 스크립트 ���������������������������������������������������������������������������������������������������
64
2.7.4 내장 서버 감지 �����������������������������������������������������������������������������������������������������
64
2.7.5 단점 �������������������������������������������������������������������������������������������������������������������
65
2.8 다음 장에서 다룰 내용 ����������������������������������������������������������������������������������������������������
65
PART 2 모범 사례
CHAPTER 3 표준
3.1 PHP-FIG 구조대 ����������������������������������������������������������������������������������������������������������
70
3.2 프레임워크 상호운용성 ���������������������������������������������������������������������������������������������������
70
3.2.1 인터페이스 ����������������������������������������������������������������������������������������������������������
71
3.2.2 오토로딩 �������������������������������������������������������������������������������������������������������������
71
3.2.3 코드 스타일 ���������������������������������������������������������������������������������������������������������
71
3.3 PSR ���������������������������������������������������������������������������������������������������������������������������
72
3.4 PSR-1: 기본 코드 스타일 �����������������������������������������������������������������������������������������������
73
3.5 PSR-2: 엄격한 코드 스타일 ��������������������������������������������������������������������������������������������
74
19. 19
3.6 PSR-3: 로거 인터페이스 ������������������������������������������������������������������������������������������������
77
3.6.1 PSR-3 로거 작성 ������������������������������������������������������������������������������������������������
78
3.6.2 PSR-3 로거 사용 ������������������������������������������������������������������������������������������������
79
3.7 PSR-4: 오토로더 ����������������������������������������������������������������������������������������������������������
80
3.7.1 왜 오토로더가 중요한가 �����������������������������������������������������������������������������������������
80
3.7.2 PSR-4 오토로더 전략 ������������������������������������������������������������������������������������������
81
3.7.3 PSR-4 오토로더 작성(을 하면 안 되는 이유) �������������������������������������������������������������
82
CHAPTER 4 컴포넌트
4.1 컴포넌트를 사용하는 이유 �����������������������������������������������������������������������������������������������
85
4.2 컴포넌트란 무엇인가 ������������������������������������������������������������������������������������������������������
86
4.3 컴포넌트 vs. 프레임워크 �������������������������������������������������������������������������������������������������
87
4.3.1 모든 프레임워크가 나쁜 것은 아니다 ������������������������������������������������������������������������
88
4.3.2 알맞은 도구를 사용하라 �����������������������������������������������������������������������������������������
89
4.4 컴포넌트 선택 ���������������������������������������������������������������������������������������������������������������
90
4.4.1 쇼핑 �������������������������������������������������������������������������������������������������������������������
90
4.4.2 선택 �������������������������������������������������������������������������������������������������������������������
91
4.4.3 피드백 남기기 ������������������������������������������������������������������������������������������������������
92
4.5 컴포넌트 사용 ���������������������������������������������������������������������������������������������������������������
92
4.5.1 컴포넌트 설치 ������������������������������������������������������������������������������������������������������
93
4.5.2 컴포넌트 사용법 ���������������������������������������������������������������������������������������������������
94
4.5.3 예제 프로젝트 ������������������������������������������������������������������������������������������������������
96
4.5.4 컴포저와 사설 저장소 ������������������������������������������������������������������������������������������
100
4.6 컴포넌트 만들기 ����������������������������������������������������������������������������������������������������������
101
4.6.1 벤더와 패키지명 �������������������������������������������������������������������������������������������������
102
4.6.2 네임스페이스 �����������������������������������������������������������������������������������������������������
103
4.6.3 파일시스템 구성 �������������������������������������������������������������������������������������������������
103
20. 20
CONTENTS
4.6.4 composer.json 파일 �����������������������������������������������������������������������������������������
104
4.6.5 README 파일 �������������������������������������������������������������������������������������������������
106
4.6.6 컴포넌트 구현 ����������������������������������������������������������������������������������������������������
107
4.6.7 버전 관리 ����������������������������������������������������������������������������������������������������������
109
4.6.8 패키지스트 등록 �������������������������������������������������������������������������������������������������
109
4.6.9 컴포넌트 사용 ����������������������������������������������������������������������������������������������������
111
CHAPTER 5 모범 사례
5.1 위험 제거, 유효성 검사, 예외 처리 �����������������������������������������������������������������������������������
114
5.1.1 입력값 위험 제거 ������������������������������������������������������������������������������������������������
114
5.1.2 유효성 검사 �������������������������������������������������������������������������������������������������������
118
5.1.3 출력 예외 처리 ���������������������������������������������������������������������������������������������������
119
5.2 비밀번호 ��������������������������������������������������������������������������������������������������������������������
120
5.2.1 사용자 비밀번호를 절대 알 수 없게 할 것 ����������������������������������������������������������������
120
5.2.2 비밀번호에 절대 제한을 두지 말 것 ������������������������������������������������������������������������
120
5.2.3 사용자 비밀번호를 절대 이메일로 보내지 말 것 ��������������������������������������������������������
121
5.2.4 사용자 비밀번호를 bcrypt로 해시하라 �������������������������������������������������������������������
121
5.2.5 비밀번호 해싱 API ����������������������������������������������������������������������������������������������
122
5.2.6 PHP 5.5.0 이전의 비밀번호 해싱 API �������������������������������������������������������������������
127
5.3 날짜, 시간, 시간대 ��������������������������������������������������������������������������������������������������������
128
5.3.1 기본 시간대 지정 ������������������������������������������������������������������������������������������������
128
5.3.2 DateTime 클래스 ����������������������������������������������������������������������������������������������
129
5.3.3 DateInterval 클래스 �������������������������������������������������������������������������������������������
130
5.3.4 DateTimeZone 클래스 ��������������������������������������������������������������������������������������
132
5.3.5 DatePeriod 클래스 ��������������������������������������������������������������������������������������������
133
5.3.6 nesbot/carbon 컴포넌트 �����������������������������������������������������������������������������������
134
5.4 데이터베이스 ��������������������������������������������������������������������������������������������������������������
134
21. 21
5.4.1 PDO 확장 ��������������������������������������������������������������������������������������������������������
135
5.4.2 데이터베이스 연결과 DSN �����������������������������������������������������������������������������������
135
5.4.3 준비된 구문 �������������������������������������������������������������������������������������������������������
138
5.4.4 쿼리 결과 ����������������������������������������������������������������������������������������������������������
140
5.4.5 트랜잭션 �����������������������������������������������������������������������������������������������������������
143
5.5 멀티바이트 문자열 �������������������������������������������������������������������������������������������������������
147
5.5.1 문자 인코딩 �������������������������������������������������������������������������������������������������������
147
5.5.2 UTF-8 데이터 ��������������������������������������������������������������������������������������������������
148
5.6 스트림 �����������������������������������������������������������������������������������������������������������������������
149
5.6.1 스트림 래퍼 �������������������������������������������������������������������������������������������������������
150
5.6.2 스트림 콘텍스트 �������������������������������������������������������������������������������������������������
153
5.6.3 스트림 필터 �������������������������������������������������������������������������������������������������������
154
5.6.4 사용자 정의 스트림 필터 ��������������������������������������������������������������������������������������
156
5.7 오류와 예외 ����������������������������������������������������������������������������������������������������������������
159
5.7.1 예외 �����������������������������������������������������������������������������������������������������������������
160
5.7.2 예외 처리기 �������������������������������������������������������������������������������������������������������
164
5.7.3 오류 �����������������������������������������������������������������������������������������������������������������
165
5.7.4 오류 처리기 �������������������������������������������������������������������������������������������������������
167
5.7.5 개발 과정에서 오류와 예외 다루기 �������������������������������������������������������������������������
169
5.7.6 프로덕션 �����������������������������������������������������������������������������������������������������������
171
PART 3 배포, 테스팅, 튜닝
CHAPTER 6 호스팅
6.1 공유 서버 �������������������������������������������������������������������������������������������������������������������
177
6.2 가상 사설 서버 ������������������������������������������������������������������������������������������������������������
178
22. 22
CONTENTS
6.3 전용 서버 �������������������������������������������������������������������������������������������������������������������
179
6.4 PaaS ������������������������������������������������������������������������������������������������������������������������
179
6.5 호스팅 선택 ����������������������������������������������������������������������������������������������������������������
180
CHAPTER 7 프로비저닝
7.1 목표 ��������������������������������������������������������������������������������������������������������������������������
182
7.2 서버 설정 �������������������������������������������������������������������������������������������������������������������
182
7.2.1 최초 로그인 �������������������������������������������������������������������������������������������������������
183
7.2.2 소프트웨어 업데이트 �������������������������������������������������������������������������������������������
183
7.2.3 비루트 사용자 ����������������������������������������������������������������������������������������������������
184
7.2.4 SSH 키 쌍 인증 �������������������������������������������������������������������������������������������������
185
7.2.5 비밀번호 인증 및 루트 로그인 비활성화 ������������������������������������������������������������������
187
7.3 PHP-FPM ����������������������������������������������������������������������������������������������������������������
188
7.3.1 설치 �����������������������������������������������������������������������������������������������������������������
188
7.3.2 전역 설정 ����������������������������������������������������������������������������������������������������������
189
7.3.3 풀 설정 �������������������������������������������������������������������������������������������������������������
190
7.4 엔진엑스 ��������������������������������������������������������������������������������������������������������������������
193
7.4.1 설치 �����������������������������������������������������������������������������������������������������������������
193
7.4.2 가상 호스트 �������������������������������������������������������������������������������������������������������
193
7.5 서버 프로비저닝 자동화 ������������������������������������������������������������������������������������������������
197
7.6 서버 프로비저닝 위임 ���������������������������������������������������������������������������������������������������
197
7.7 추가 자료 �������������������������������������������������������������������������������������������������������������������
198
7.8 다음 장에서 다룰 내용 ��������������������������������������������������������������������������������������������������
198
CHAPTER 8 튜닝
8.1 php.ini 파일 ���������������������������������������������������������������������������������������������������������������
199
23. 23
8.2 메모리 �����������������������������������������������������������������������������������������������������������������������
200
8.3 젠드 오피캐시 �������������������������������������������������������������������������������������������������������������
201
8.4 파일 업로드 ����������������������������������������������������������������������������������������������������������������
203
8.5 최대 실행 시간 ������������������������������������������������������������������������������������������������������������
204
8.6 세션 처리 �������������������������������������������������������������������������������������������������������������������
205
8.7 출력 버퍼링 ����������������������������������������������������������������������������������������������������������������
205
8.8 리얼패스 캐시 �������������������������������������������������������������������������������������������������������������
206
8.9 다음 장에서 다룰 내용 ��������������������������������������������������������������������������������������������������
206
CHAPTER 9 배포
9.1 버전 관리 �������������������������������������������������������������������������������������������������������������������
207
9.2 배포 자동화 ����������������������������������������������������������������������������������������������������������������
208
9.2.1 단순하게 �����������������������������������������������������������������������������������������������������������
208
9.2.2 예측 가능하게 ����������������������������������������������������������������������������������������������������
208
9.2.3 가역적으로 ��������������������������������������������������������������������������������������������������������
208
9.3 카피스트라노 ��������������������������������������������������������������������������������������������������������������
208
9.3.1 작동 �����������������������������������������������������������������������������������������������������������������
209
9.3.2 설치 �����������������������������������������������������������������������������������������������������������������
210
9.3.3 설정 �����������������������������������������������������������������������������������������������������������������
210
9.3.4 인증 �����������������������������������������������������������������������������������������������������������������
212
9.3.5 원격 서버 ����������������������������������������������������������������������������������������������������������
212
9.3.6 카피스트라노 훅 �������������������������������������������������������������������������������������������������
213
9.3.7 애플리케이션 배포 ����������������������������������������������������������������������������������������������
214
9.3.8 애플리케이션 되돌리기 ����������������������������������������������������������������������������������������
214
9.4 참고 자료 �������������������������������������������������������������������������������������������������������������������
214
9.5 다음 장에서 다룰 내용 ��������������������������������������������������������������������������������������������������
215
24. 24
CONTENTS
CHAPTER 10 테스팅
10.1 테스트를 하는 이유 ������������������������������������������������������������������������������������������������������
217
10.2 테스트 시점 ���������������������������������������������������������������������������������������������������������������
218
10.2.1 개발 전 �������������������������������������������������������������������������������������������������������������
218
10.2.2 개발 도중 ����������������������������������������������������������������������������������������������������������
218
10.2.3 개발 후 �������������������������������������������������������������������������������������������������������������
219
10.3 테스트 대상 ����������������������������������������������������������������������������������������������������������������
219
10.4 테스트 방법 ����������������������������������������������������������������������������������������������������������������
219
10.4.1 단위 테스트 �������������������������������������������������������������������������������������������������������
220
10.4.2 테스트 주도 개발(TDD) ���������������������������������������������������������������������������������������
220
10.4.3 행위 주도 개발(BDD) ������������������������������������������������������������������������������������������
221
10.5 PHP유닛 �������������������������������������������������������������������������������������������������������������������
222
10.5.1 디렉터리 구조 ����������������������������������������������������������������������������������������������������
222
10.5.2 PHP유닛 설치 ���������������������������������������������������������������������������������������������������
223
10.5.3 Xdebug 설치 ����������������������������������������������������������������������������������������������������
224
10.5.4 PHP유닛 설정 ���������������������������������������������������������������������������������������������������
224
10.5.5 Whovian 클래스 �����������������������������������������������������������������������������������������������
226
10.5.6 WhovianTest 테스트 케이스 �������������������������������������������������������������������������������
227
10.5.7 테스트 수행 �������������������������������������������������������������������������������������������������������
230
10.5.8 코드 커버리지 ����������������������������������������������������������������������������������������������������
231
10.6 트래비스 CI를 통한 지속적인 테스팅 �������������������������������������������������������������������������������
232
10.6.1 설정 �����������������������������������������������������������������������������������������������������������������
232
10.6.2 실행 �����������������������������������������������������������������������������������������������������������������
233
10.7 참고 자료 �������������������������������������������������������������������������������������������������������������������
234
10.8 다음 장에서 다룰 내용 ��������������������������������������������������������������������������������������������������
234
25. 25
CHAPTER 11 프로파일링
11.1 프로파일러 사용 시점 ���������������������������������������������������������������������������������������������������
235
11.2 프로파일러 종류 ����������������������������������������������������������������������������������������������������������
236
11.3 Xdebug ��������������������������������������������������������������������������������������������������������������������
236
11.3.1 설정 �����������������������������������������������������������������������������������������������������������������
237
11.3.2 발동 �����������������������������������������������������������������������������������������������������������������
237
11.3.3 분석 �����������������������������������������������������������������������������������������������������������������
238
11.4 XHProf ���������������������������������������������������������������������������������������������������������������������
238
11.4.1 설치 �����������������������������������������������������������������������������������������������������������������
238
11.4.2 XHGUI ������������������������������������������������������������������������������������������������������������
239
11.4.3 설정 �����������������������������������������������������������������������������������������������������������������
240
11.4.4 발동 �����������������������������������������������������������������������������������������������������������������
240
11.5 뉴렐릭 프로파일러 �������������������������������������������������������������������������������������������������������
241
11.6 블랙파이어 프로파일러 �������������������������������������������������������������������������������������������������
241
11.7 참고 자료 �������������������������������������������������������������������������������������������������������������������
242
11.8 다음 장에서 다룰 내용 ��������������������������������������������������������������������������������������������������
242
CHAPTER 12 HHVM과 Hack
12.1 HHVM ����������������������������������������������������������������������������������������������������������������������
244
12.1.1 페이스북과 PHP ������������������������������������������������������������������������������������������������
244
12.1.2 HHVM과 젠드 엔진의 동등성 �������������������������������������������������������������������������������
246
12.1.3 HHVM은 내게 적당한가 ��������������������������������������������������������������������������������������
246
12.1.4 설치 �����������������������������������������������������������������������������������������������������������������
247
12.1.5 설정 �����������������������������������������������������������������������������������������������������������������
248
12.1.6 확장 �����������������������������������������������������������������������������������������������������������������
249
26. 26
CONTENTS
12.1.7 슈퍼바이저를 이용한 HHVM 관제 �������������������������������������������������������������������������
249
12.1.8 HHVM, FastCGI, 엔진엑스 ���������������������������������������������������������������������������������
251
12.2 Hack 언어 �����������������������������������������������������������������������������������������������������������������
253
12.2.1 PHP를 Hack으로 변환하기 ���������������������������������������������������������������������������������
253
12.2.2 타입이란 �����������������������������������������������������������������������������������������������������������
254
12.2.3 정적 타이핑 �������������������������������������������������������������������������������������������������������
256
12.2.4 동적 타이핑 �������������������������������������������������������������������������������������������������������
256
12.2.5 Hack은 양손잡이다 ��������������������������������������������������������������������������������������������
257
12.2.6 Hack 타입 검사 �������������������������������������������������������������������������������������������������
258
12.2.7 Hack 모드 ��������������������������������������������������������������������������������������������������������
258
12.2.8 Hack 문법 ��������������������������������������������������������������������������������������������������������
259
12.2.9 Hack 데이터 구조 ����������������������������������������������������������������������������������������������
261
12.2.10 HHVM/Hack vs. PHP ��������������������������������������������������������������������������������������
262
12.3 참고 자료 �������������������������������������������������������������������������������������������������������������������
264
CHAPTER 13 커뮤니티
13.1 지역 PUG ������������������������������������������������������������������������������������������������������������������
265
13.2 컨퍼런스 ��������������������������������������������������������������������������������������������������������������������
266
13.3 멘토링 �����������������������������������������������������������������������������������������������������������������������
266
13.4 최신 정보 �������������������������������������������������������������������������������������������������������������������
266
13.4.1 웹 사이트 ����������������������������������������������������������������������������������������������������������
266
13.4.2 메일링 리스트 ����������������������������������������������������������������������������������������������������
267
13.4.3 트위터 ��������������������������������������������������������������������������������������������������������������
267
13.4.4 팟캐스트 �����������������������������������������������������������������������������������������������������������
267
13.4.5 유머 �����������������������������������������������������������������������������������������������������������������
267