이미 소장하고 있다면 판매해 보세요.
|
PART 1 라라벨 입문 _1
CHAPTER 01 라라벨 설치 _ 2 1.1 새로운 라라벨 프로젝트 만들기 _ 2 1.2 라라벨 프로젝트 구조 _ 4 1.3 라라벨 작동 원리 _ 7 1.4 버전 관리 _ 8 CHAPTER 02 전역 환경 설정 _ 9 2.1 dotenv 파일이 하는 일 _ 9 2.2 APP 환경 설정 _ 11 2.3 마치며 _ 12 CHAPTER 03 라우팅 _ 13 3.1 URL _ 13 3.2 라우팅 만들기 _ 16 3.3 URL 파라미터 _ 18 3.4 라우트 이름 _ 19 3.5 마치며 _ 20 CHAPTER 04 뷰와 데이터 바인딩 _ 21 4.1 뷰 반환 _ 21 4.2 데이터 바인딩 _ 22 4.3 마치며 _ 23 CHAPTER 05 블레이드 _ 24 5.1 변수를 이용한 문자열 보간 _ 25 5.2 주석 _ 25 5.3 제어 구조 _ 26 5.4 템플릿 상속 _ 28 5.5 조각 뷰 삽입 _ 31 5.6 마치며 _ 33 CHAPTER 06 데이터베이스와 모델 _ 34 6.1 데이터베이스 준비 _ 35 6.2 REPL _ 36 6.3 데이터베이스 쿼리 _ 37 6.4 쿼리 빌더 _ 40 6.5 엘로퀀트 ORM _ 43 6.6 마치며 _ 49 CHAPTER 07 데이터베이스 마이그레이션 _ 50 7.1 마이그레이션 만들기 _ 51 7.2 마이그레이션 실행 _ 55 7.3 롤백 _ 56 7.4 열 추가 _ 57 7.5 초기화 및 새로고침 _ 58 7.6 마치며 _ 59 CHAPTER 08 컨트롤러 _ 60 8.1 컨트롤러 만들기 _ 60 8.2 RESTful 라우트와 컨트롤러 _ 61 8.3 마치며 _ 70 CHAPTER 09 사용자 인증 _ 71 9.1 HTTP의 무상태 특성 _ 71 9.2 기본기 다지기 _ 73 9.3 라라벨 내장 사용자 인증 _ 79 9.4 마치며 _ 81 CHAPTER 10 엘로퀀트 ORM _ 82 10.1 일대다 관계 _ 82 10.2 다대다 관계 연결 _ 86 10.3 마치며 _ 91 CHAPTER 11 데이터베이스 시딩 _ 92 11.1 시더 만들기 _ 92 11.2 모델 팩토리 _ 93 11.3 마스터 시더 _ 97 11.4 마이그레이션과 시딩 _ 99 11.5 마치며 _ 99 CHAPTER 12 즉시 로드와 페이징 _ 100 12.1 즉시 로드 _ 100 12.2 페이징 _ 104 12.3 마치며 _ 106 CHAPTER 13 입력값 유효성 검사 _ 107 13.1 유효성 검사 기본기 _ 108 13.2 트레이트의 메서드 이용 _ 114 13.3 폼 리퀘스트 클래스 이용 _ 115 13.4 마치며 _ 117 CHAPTER 14 이벤트 시스템 _ 118 14.1 기본기 다지기 _ 119 14.2 이벤트 레지스트리 _ 120 14.3 이벤트 리스너 클래스 _ 121 14.4 이벤트 클래스 _ 122 14.5 실용적인 이벤트 시스템 _ 124 14.6 라라벨 내장 이벤트 채널 _ 126 14.7 마치며 _ 129 CHAPTER 15 예외 처리와 디버깅 _ 130 15.1 전역 예외 처리기 _ 130 15.2 실용적인 예외 처리 _ 132 15.3 디버깅 _ 136 15.4 디버깅 방법 _ 140 15.5 마치며 _ 143 CHAPTER 16 이메일 보내기 _ 144 16.1 지메일로 메일 보내기 _ 145 16.2 메일건으로 메일 보내기 _ 147 16.3 심화 학습 _ 150 16.4 테스트 환경 _ 153 16.5 마치며 _ 153 CHAPTER 17 컴포저 _ 154 17.1 컴포저란? _ 155 17.2 로컬 컴포넌트 레지스트리 둘러보기 _ 156 17.3 컴포넌트 가져오기 실습 I _ 158 17.4 컴포넌트 가져오기 실습 II _ 160 17.5 install? update? _ 164 17.6 문제 해결 _ 164 17.7 오토로드 _ 165 17.8 좋은 컴포넌트 찾기 _ 166 17.9 마치며 _ 167 PART 2 실전 프로젝트 I - 마크다운 뷰어 _169 CHAPTER 18 모델 _ 170 18.1 파일시스템 _ 170 18.2 모델 만들기 _ 171 18.3 테스트 _ 173 18.4 예외 처리 _ 174 18.5 마치며 _ 175 CHAPTER 19 컨트롤러와 도우미 함수 _ 176 19.1 사용자 정의 도우미 함수 _ 176 19.2 컨트롤러 _ 177 19.3 뷰 _ 178 19.4 마치며 _ 180 CHAPTER 20 다듬질 _ 181 20.1 서버 측 캐싱 _ 181 20.2 이미지 응답 _ 183 20.3 클라이언트 측 이미지 캐싱 _ 187 20.4 마치며 _ 191 CHAPTER 21 엘릭서와 프런트엔드 _ 192 21.1 필요 프런트엔드 리소스 _ 192 21.2 필요 도구 설치 _ 193 21.3 엘릭서 _ 194 21.4 빌드 스크립트 작성 _ 196 21.5 활용 사례 _ 201 21.6 마치며 _ 204 PART 3 실전 프로젝트 II - 포럼 _205 CHAPTER 22 계획과 준비 _ 206 22.1 기능 요구 사항 목록 _ 206 22.2 데이터베이스 모델링 _ 207 22.3 프로젝트 준비 _ 209 22.4 마스터 레이아웃 _ 210 22.5 마치며 _ 213 CHAPTER 23 사용자 인증 재구성 _ 214 23.1 라우팅 정의 _ 214 23.2 컨트롤러 _ 216 23.3 사용자 등록 구현 _ 216 23.4 사용자 로그인 구현 _ 225 23.5 비밀번호 바꾸기 구현 _ 229 23.6 마스터 레이아웃 _ 234 23.7 마치며 _ 234 CHAPTER 24 소셜 로그인 _ 236 24.1 소셜라이트 컴포넌트 _ 236 24.2 작동 원리 _ 237 24.3 깃허브 설정 _ 239 24.4 라우트 정의 _ 241 24.5 마이그레이션 _ 241 24.6 로그인 처리 로직 _ 242 24.7 네이티브 로그인 처리 수정 _ 245 24.8 소셜 로그인 링크 _ 247 24.9 다듬질 _ 248 24.10 마치며 _ 249 CHAPTER 25 아티클 기능 구현 _ 250 25.1 라우트 모델 바인딩 _ 250 25.2 글 목록 _ 251 25.3 글 상세 보기 _ 256 25.4 글 수정 _ 257 25.5 글 삭제 _ 260 25.6 인증과 인가 _ 261 25.7 다듬질 _ 264 25.8 마치며 _ 266 CHAPTER 26 태그 기능 구현 _ 267 26.1 태그 데이터 _ 267 26.2 태그 선택 _ 270 26.3 태그 출력 _ 272 26.4 다듬질 _ 276 26.5 마치며 _ 277 CHAPTER 27 파일 첨부 기능 구현 _ 278 27.1 파일 업로드 _ 278 27.2 UI 개선 _ 285 27.3 다듬질 _ 291 27.4 마치며 _ 293 CHAPTER 28 댓글 기능 구현 _ 294 28.1 다형적 다대다 관계 _ 294 28.2 댓글 UI _ 300 28.3 서버 측 구현 _ 305 28.4 투표 기능 _ 309 28.5 마치며 _ 317 CHAPTER 29 다듬질 I _ 319 29.1 아티클 검색, 정렬, 조회 수, 댓글 수 _ 320 29.2 이메일 알림 _ 326 29.3 고아 첨부 파일 청소 _ 330 29.4 댓글 소프트 삭제 _ 334 29.5 모델 쿼리 캐싱 _ 338 29.6 캐시 저장소 변경 _ 343 29.7 마치며 _ 349 CHAPTER 30 다듬질 II _ 350 30.1 다국어 지원 _ 350 30.2 오류 알림 _ 363 30.3 마치며 _ 367 PART 4 실전 프로젝트 III - RESTful API _369 CHAPTER 31 기본기 익히기 _ 370 31.1 RESTful이란? _ 370 31.2 RESTful API 모범 사례 _ 371 31.3 개발 항목 _ 376 CHAPTER 32 구조 설계 _ 377 32.1 HTTP 요청 분기 _ 377 32.2 HTTP 응답 분기 _ 380 32.3 마치며 _ 386 CHAPTER 33 클라이언트 인증 _ 387 33.1 HTTP 기본 인증 _ 388 33.2 JWT 인증 _ 392 33.3 마치며 _ 402 CHAPTER 34 데이터 트랜스폼 _ 404 34.1 트랜스포머 작동 원리 _ 405 34.2 트랜스포머 컴포넌트 _ 408 34.3 컨트롤러 다듬질 _ 413 34.4 다국어 지원 _ 415 34.5 마치며 _ 417 CHAPTER 35 다듬질 I _ 418 35.1 클라이언트 측 캐싱 _ 418 35.2 응답 필드 선택 _ 424 35.3 마치며 _ 425 CHAPTER 36 다듬질 II _ 426 36.1 CORS _ 426 36.2 사용량 제한 _ 429 36.3 리소스 아이디 난독화 _ 434 36.4 마치며 _ 438 PART 5 코드 배포 _439 CHAPTER 37 서버 준비 _ 440 37.1 계정 발급 _ 440 37.2 서버 만들기 _ 441 37.3 서버 접속하기 _ 445 37.4 웹 서버 만들기 _ 447 37.5 마치며 _ 459 CHAPTER 38 코드 배포 _ 461 38.1 엔보이 _ 461 38.2 깃허브 _ 463 38.3 코드 배포 _ 467 38.4 배포 전략과 엔보이 배포 스크립트 _ 470 38.5 마치며 _ 474 APPENDIX 부록 _475 APPENDIX A 운영체제별 개발 환경 준비 _ 476 A.1 코드 에디터 준비 _ 477 A.2 Mac _ 477 A.3 우분투 데스크톱 _ 480 A.4 Windows _ 482 APPENDIX B 속성 PHP 프로그래밍 입문 _ 489 B.1 PHP 스크립트의 작동 원리 _ 489 B.2 PHP 언어 기본 _ 491 B.3 변수와 상수 _ 491 B.4 연산자 _ 493 B.5 데이터 타입 _ 494 B.6 조건문 _ 496 B.7 반복문 _ 498 B.8 함수 _ 499 B.9 클로저 _ 500 B.10 PHP 설명서 _ 502 APPENDIX C 속성 객체 지향 프로그래밍 입문 _ 503 C.1 클래스 _ 503 C.2 생성자 _ 504 C.3 메서드 _ 505 C.4 게터와 세터 _ 506 C.5 캡슐화 _ 507 C.6 상속 _ 508 C.7 추상 클래스 _ 509 C.8 의존성 주입 _ 511 C.9 인터페이스 _ 513 C.10 마치며 _ 515 |
|
안녕하세요 이 책의 저자입니다.
2016-11-28
원본 글은 여기에 있습니다. 글자 수 제한에 맞게 축약한 버전을 좀 전에 드렸습니다. http://blog.appkr.kr/work-n-play/laravel-paper-book-published/
|
|
안녕하세요 이 책의 저자입니다.
2016-11-28
이 책은 웹 프로그래밍을 다룹니다. 웹 프로그래밍을 위한 도구로는 PHP 언어로 작성된 라라벨 프레임워크를 사용합니다.
생활 코딩 오프라인 수업에 조교로 수 차례 참여하고, 여덟 번의 8~14시간 짜리 라라벨 입문 강의를 통해 입문자와 예비 독자들을 만나며, 여러분들이 어려워하거나 실수하기 쉬운 내용을 캐치하고 책의 내용과 구성에 반영했습니다. 라라벨은 모범 웹 개발 방법론의 결정체입니다. 라라벨에서 배운 라우팅, 템플릿, 마이그레이션, ORM, 의존성 관리, 객체 지향 설계등의 지식은 다른 프레임워크를 시작할 때도 그대로 이식할 수 있습니다. 반대로 다른 웹 프레임워크를 해 보신 분이 라라벨을 시작하신다면 이미 절반은 알고 계신거나 마찬가지입니다. 스스로를 범용 언어라고 포지셔닝하려하지만, 사실은 태생부터가 웹을 위한 언어였습니다(시작은 C로 짠 템플릿 엔진 수준). 책 머리글에 PHP의 간략한 역사를 포함하고 있으니 참고해주세요. 그래서 웹만 이야기하면 PHP의 인기도와 채택율은 완전 달라집니다. 통계에 따르면 전세계 웹 트래픽의 80% 이상을 PHP 언어가 서브하는 것으로 알려져있습니다(https://w3techs.com/technologies/overview/programming_language/all). 페이스북과 워드프레스의 영향이 크긴하지만 엄청난 수치입니다. 그 동안 여러가지 이유로 PHP를 쳐다보지도 않았다면, 지금은 다시 한 번 쳐다보세요. 웹 서비스에서는 다른 언어 대비 엄청난 성능을 보이고(http://benchmarksgame.alioth.debian.org/), 비일관성이나 코딩 습관은 PSR(PHP Standard Recommendation, JSR처럼) 및 라라벨과 같은 프레임워크가 가이드해줍니다. |
|
입문자뿐만 아니라 중급자에게도 자신 있게 이 책을 권한다. 이 책은 PHP 언어 또는 웹 프로그래밍을 한 번도 접해 보지 않은 독자도 읽을 수 있도록 부록에서 입문 지식을 제공하고 있다. 다른 프레임워크를 사용해 보신 독자라면 라라벨을 더욱 쉽게 배울 수 있으며, 반대로 라라벨을 익힌 사용자는 익스프레스, 레일즈, 장고 등을 학습하는 것이 수월할 것이다. API 서버를 개발하는 실전 프로젝트에서는 HTTP 스펙 등 고급 주제도 다루므로 여러 층의 독자에게 도움이 될 거라 장담한다. _xiv
라라벨은 민감한 설정 정보를 은닉하거나 애플리케이션 동작에 필요한 전역 환경 변수를 쉽게 변경할 수 있는 방법을 제공한다. config 디렉터리 아래에 연관 배열(associative array)을 반환하는 파일을 만들면 애플리케이션 어디서든 config('파일.키');로 설정값을 읽을 수 있다. _12p 라라벨은 완성품에 가까운 사용자 인증 기능을 포함하고 있다. 사람마다 기성품과 맞춤 양복 사이에서 호불호가 갈리듯이, 남이 짠 사용자 인증 로직을 이해하여 고치기란 쉽지 않기 때문에 라라벨 내장 사용자 인증도 호불호가 갈린다. 이러한 라라벨 팀의 오지랖이 입문자 또는 프로토타입을 만드려는 사람들에게는 많은 도움이 된다. _81p 소프트웨어 개발을 집 짓는 일에 비유해 보자. 집 한 채를 지으려면 벽돌, 문짝, 창틀과 창문, 지붕 등의 각종 부품이 필요하다. 의존성을 바로 이 부품들에 빗댈 수 있다. 가령 문짝이란 부품이 하나 빠졌다면, 이 집이 겉으로는 멀쩡할지 몰라도 문짝이 필요한 상황에서는 심각한 문제를 일으킨다. 잠시 소프트웨어로 돌아오면, 우리 코드에서 foo()를 호출했는데 이 함수가 없는 것과 같은 것이다. 이때 우리 코드는 foo()에 의존한다고 말할 수 있다. _154p 사용자의 비밀번호를 테이블에 저장할 때 사용하는 bcrypt() 해시는 복호화가 불가능하므로 관리자조차도 사용자의 비밀번호를 알 수 없다. 참고로 우리가 가진 사용자 정보는 이름과 이메일이 전부다. 이 조합은 다른 사람도 알 수 있는 값이라, 이 정보만 가지고 비밀번호를 변경하도록 허용할 수는 없다. 무엇인가 사용자 신분을 확인할 수 있는 방법이 필요하다. 이 경우 가입 확인에서 실시했듯이 메일을 보내 본인을 확인하는 방법을 응용할 수 있다. _229p 물론, 이것이 완벽한 방법이라 할 수는 없다. 왜냐하면 토큰을 요청할 때는 사용자 인증 정보를 폼 데이터 또는 JSON 형태의 평문으로 서버에 전달해야 하기 때문이다. 웹 페이지를 사용할 때도 로그인 폼을 통해 인증 정보를 평문으로 전달하기 때문에(인증되면 암호화된 쿠키로 로그인 유지) JWT는 웹 페이지와 같은 보안 수준이라 할 수 있다. 그럼에도 HTTP 기본 인증보다는 낫다. 보완책은 HTTPS를 사용하여 암호화된 데이터를 주고받는 것이다. HTTPS를 적용하면, 패킷 스니퍼는 물론이고 네트워크 프록시도 목적지만 제외하고 헤더와 본문을 전혀 읽을 수 없다. ---pp.392~393 |