이미 소장하고 있다면 판매해 보세요.
|
[공지] 사무실 이전 공사로 인한 판매 일시 중단 안내
안녕하세요. 사무실 이전 공사로 인해 10월 19일부터 11월 중순까지 판매를 일시 중단할 예정입니다. 해당 기간에는 신규 주문을 자제해 주시면 감사하겠습니다. 이용에 불편을 드려 죄송합니다.
|
|
택배비 및 박스 포장 문제로 11권 이상 대량 주문 시 합배송이 어렵거나 주문이 취소될 수 있습니다.
택배비 및 박스 포장 문제로 11권 이상 대량 주문 시 합배송이 어렵거나 주문이 취소될 수 있습니다.
여러 권을 함께 주문하시는 경우 재고 변동으로 인해 누락 또는 분리배송이 발생할 수 있어 부득이하게 취소되는 점 양해 부탁드립니다.
|
|
☎현재 문의량이 많아 전화 연결이 지연될 수 있습니다. 신속한 처리를 위해 주문번호를 반드시 기재하여 ‘판매자 문의하기’로 남겨주시면 확인 후 최대한 빠르게 안내드리겠습니다.☎
안녕하세요. 고객님들의 많은 관심과 문의에 진심으로 감사드립니다.
최근 유선 상담 문의가 급증하여 연결이 다소 지연될 수 있습니다.
전화 연결이 어려우실 경우, 보다 원활한 상담을 위해 게시판에 문의글을 남겨주시면 빠르게 순차 대응해드리겠습니다.
항상 따뜻한 관심과 믿고 찾아주셔서 감사합니다.
더 나은 서비스로 보답드릴 수 있도록 노력하겠습니다.
양해해주셔서 감사드리며, 앞으로도 변함없는 관심과 사랑 부탁드립니다. 감사합니다
|
|
|
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 |
|
입문자뿐만 아니라 중급자에게도 자신 있게 이 책을 권한다. 이 책은 PHP 언어 또는 웹 프로그래밍을 한 번도 접해 보지 않은 독자도 읽을 수 있도록 부록에서 입문 지식을 제공하고 있다. 다른 프레임워크를 사용해 보신 독자라면 라라벨을 더욱 쉽게 배울 수 있으며, 반대로 라라벨을 익힌 사용자는 익스프레스, 레일즈, 장고 등을 학습하는 것이 수월할 것이다. API 서버를 개발하는 실전 프로젝트에서는 HTTP 스펙 등 고급 주제도 다루므로 여러 층의 독자에게 도움이 될 거라 장담한다. _xiv
라라벨은 민감한 설정 정보를 은닉하거나 애플리케이션 동작에 필요한 전역 환경 변수를 쉽게 변경할 수 있는 방법을 제공한다. config 디렉터리 아래에 연관 배열(associative array)을 반환하는 파일을 만들면 애플리케이션 어디서든 config('파일.키');로 설정값을 읽을 수 있다. _12p 라라벨은 완성품에 가까운 사용자 인증 기능을 포함하고 있다. 사람마다 기성품과 맞춤 양복 사이에서 호불호가 갈리듯이, 남이 짠 사용자 인증 로직을 이해하여 고치기란 쉽지 않기 때문에 라라벨 내장 사용자 인증도 호불호가 갈린다. 이러한 라라벨 팀의 오지랖이 입문자 또는 프로토타입을 만드려는 사람들에게는 많은 도움이 된다. _81p 소프트웨어 개발을 집 짓는 일에 비유해 보자. 집 한 채를 지으려면 벽돌, 문짝, 창틀과 창문, 지붕 등의 각종 부품이 필요하다. 의존성을 바로 이 부품들에 빗댈 수 있다. 가령 문짝이란 부품이 하나 빠졌다면, 이 집이 겉으로는 멀쩡할지 몰라도 문짝이 필요한 상황에서는 심각한 문제를 일으킨다. 잠시 소프트웨어로 돌아오면, 우리 코드에서 foo()를 호출했는데 이 함수가 없는 것과 같은 것이다. 이때 우리 코드는 foo()에 의존한다고 말할 수 있다. _154p 사용자의 비밀번호를 테이블에 저장할 때 사용하는 bcrypt() 해시는 복호화가 불가능하므로 관리자조차도 사용자의 비밀번호를 알 수 없다. 참고로 우리가 가진 사용자 정보는 이름과 이메일이 전부다. 이 조합은 다른 사람도 알 수 있는 값이라, 이 정보만 가지고 비밀번호를 변경하도록 허용할 수는 없다. 무엇인가 사용자 신분을 확인할 수 있는 방법이 필요하다. 이 경우 가입 확인에서 실시했듯이 메일을 보내 본인을 확인하는 방법을 응용할 수 있다. _229p 물론, 이것이 완벽한 방법이라 할 수는 없다. 왜냐하면 토큰을 요청할 때는 사용자 인증 정보를 폼 데이터 또는 JSON 형태의 평문으로 서버에 전달해야 하기 때문이다. 웹 페이지를 사용할 때도 로그인 폼을 통해 인증 정보를 평문으로 전달하기 때문에(인증되면 암호화된 쿠키로 로그인 유지) JWT는 웹 페이지와 같은 보안 수준이라 할 수 있다. 그럼에도 HTTP 기본 인증보다는 낫다. 보완책은 HTTPS를 사용하여 암호화된 데이터를 주고받는 것이다. HTTPS를 적용하면, 패킷 스니퍼는 물론이고 네트워크 프록시도 목적지만 제외하고 헤더와 본문을 전혀 읽을 수 없다. ---pp.392~393 |