이제는 누구나 쉽게 접할 수 있는 각종 생성형 AI 서비스는 컴퓨터 비전, 그중에서도 비전 생성 모델의 기술적 산물입니다. 인공지능과 관련된 전문가로 성장하기 위해서는 단순히 완성형으로 개발된 서비스를 이용해보기에 앞서 동작의 원리를 깨쳐야 합니다. 이에 『생성형 AI를 위한 컴퓨터 비전』은 미드저니, 빙 이미지 크리에이터, 스테이블 디퓨전, 스노우 앱 등의 서비스를 개발할 때 사용되는 이미지 및 영상 생성 관련 컴퓨터 비전 기술의 근간을 설명합니다.
비전 생성 모델과 관련된 각종 모델에 대해 수학 공식을 통해 수리적인 배경을 이해하고 소스코드를 한 줄씩 따라가며 동작 기술을 습득할 수 있습니다. 또한 텍스트 입력을 처리하는 트랜스포머, 이미지와 텍스트 프롬프트의 정보를 연결하는 CLIP 모델, 파이프라인 및 응용 기법 등을 지원하는 허깅페이스의 Diffuser 라이브러리와 함께 멀티 모달 비전 생성 모델의 결과 도출 방식을 알 수 있습니다. 이제는 생성형 AI 제품 및 서비스를 경험해보는 것을 넘어 책에서 제시하는 전망과 미래 잠재력에 동참해보도록 합시다.
저자(글) 최재웅
인물정보
전산통계전문가
대학교에서 전자공학을 전공하던 중 인공지능에 흥미가 생겨 대학원 진학을 결심하였습니다. 그리고 인하대학교의 컴퓨터 비전 및 이미지 프로세싱(Computer Vision and Image Processing, CVIP) 연구실에서 가장 흥미롭게 생각한 비전 분야의 생성 모델을 연구해 석사 학위를 취득하였습니다.
NHN에서는 스타일 변환 모델에 대한 서비스 개발을 진행했고 생성 모델 관련 특허를 여러 개 출원하였으며, 현재는 LG CNS에서 생성 모델 관련 연구 및 개발 업무를 수행하고 있습니다. 이 밖에, 공부한 것을 나누기를 좋아하여 멘사코리아의 개발자 모임에서 스터디를 주관하기도 하며 좋은 영향력을 펼칠 길을 찾아나가고 있습니다.
現) LG CNS - 멀티 모달 AI 팀
前) NHN - AI 선행연구팀
- 깃허브 github.com/jaewoong1
- 인스타그램 instagram.com/chlwodnd500
저술 사항
- 논문 「Style-Guided and Disentangled Representation for Robust Image-to-ImageTranslation」, (AAAI, 2022), 9.
- 논문 「EPrOD: Evolved Probabilistic Object Detector with Diverse Samples」, (ECCV, 2020), 10.
목차
1장 비전 생성 모델
_1.1 비전 생성 모델이란?
__1.1.1 영상 생성 모델
__1.1.2 영상 변환 모델
__1.1.3 스타일 변환 모델
__1.1.4 영상 품질 개선 모델
_1.2 비전 생성 모델의 활용 분야
__1.2.1 예술 및 디자인
__1.2.2 엔터테인먼트
__1.2.3 의료 및 산업 분야
__1.2.4 게임 개발
_1.3 비전 생성 모델 이해를 위한 배경지식
__1.3.1 평균과 분산
__1.3.2 정규 분포
__1.3.3 최대 가능도 추정
__1.3.4 쿨백-라이블러 발산
__1.3.5 MAE 손실 함수와 MSE 손실 함수
_1.4 구현 및 실습을 위한 도구
__1.4.1 CUDA와 CuDNN 설치
__1.4.2 아나콘다 설치
__1.4.3 파이토치란?
2장 비전 생성 모델링 방식 및 특징
_2.1 오토 인코더
__2.1.1 소개 및 이론
__2.1.2 구현 및 실습
__2.1.3 정리
_2.2 변이형 오토 인코더
__2.2.1 소개 및 이론
__2.2.2 구현 및 실습
__2.2.3 정리
_2.3 생성적 적대 신경망
__2.3.1 소개
__2.3.2 GAN
__2.3.3 WGAN
__2.3.4 cGAN
__2.3.5 DCGAN
__2.3.6 구현 및 실습
__2.3.7 정리
_2.4 확산 모델
__2.4.1 소개 및 이론
__2.4.2 구현 및 실습
__2.4.3 정리
3장 생성적 적대 신경망 기반 응용 모델
_3.1 영상 생성 모델
__3.1.1 PGGAN
__3.1.2 StyleGAN
__3.1.3 정리
_3.2 영상 변환 모델
__3.2.1 pix2pix
__3.2.2 CycleGAN
__3.2.3 정리
_3.3 스타일 변환 모델
__3.3.1 AdaIN
__3.3.2 StarGAN
__3.3.3 정리
_3.4 영상 품질 개선 모델
__3.4.1 초해상도: SRGAN
__3.4.2 디블러링: DeblurGAN
__3.4.3 정리
4장 확산 모델 기반 응용 모델
_4.1 트랜스포머
_4.2 CLIP
_4.3 Diffusers 라이브러리란?
_4.4 멀티 모달 비전 생성 모델
__4.4.1 미드저니
__4.4.2 빙 이미지 크리에이터
__4.4.3 스테이블 디퓨전
__4.4.4 정리
_4.5 응용 및 확장 기법
__4.5.1 드림부스
__4.5.2 컨트롤넷
__4.5.3 정리
5장 최신 연구 및 서비스 동향
_5.1 관련 서비스 및 응용 분야 소식
_5.2 비전 생성 모델의 전망과 미래
출판사 서평
비전 생성 모델의 수리적 배경부터
응용 모델의 사용법과 결과 도출 원리까지
1장에서는 컴퓨터 비전 영역에 속한 생성형 AI 관련 모델인 비전 생성 모델에 대해 용어를 정의하고 수리적인 배경을 학습한 후 구현 및 실습에 필요한 도구를 설치합니다.
2장에서는 대표적인 생성 모델링 방식인 오토 인코더, 변이형 오토 인코더(VAE), 생성적 적대 신경망(GAN), 그리고 확산 모델(Diffusion Model)에 대해 이론부터 실습까지 코드를 한 줄씩 따라가며 꼼꼼하게 살펴봅니다.
3장에서는 영상 생성 모델(PGGAN, StyleGAN), 영상 변환 모델(pix2pix, CycleGAN), 스타일 변환 모델(AdalN, StarGAN), 영상 품질 개선 모델(초해상도: SRGAN, 디블러링: DeblurGAN)에 대해 수학 공식을 통한 수리적인 배경부터 소스코드를 통한 설명과 결과 이미지 확인까지 세밀하게 고찰해봅니다.
4장에서는 텍스트 입력을 처리할 수 있게 하는 트랜스포머, 이미지와 텍스트 프롬프트의 정보를 연결하는 CLIP 모델, 파이프라인 및 응용 기법 등을 지원하는 허깅페이스의 Diffuser 라이브러리에 대해 알아봅니다. 그리고 미드저니, 빙 이미지 크리에이터, 스테이블 디퓨전 등의 생성 서비스에 사용된 멀티 모달 비전 생성 모델에 대해 각 서비스를 기준으로 수리적인 배경과 결과 도출 방식을 살펴봅니다.
5장에서는 모바일 애플리케이션 스노우(SNOW), 어도비의 생성형 AI 플랫폼 젠스튜디오(GenStudio), 오픈AI의 Text-to-Video 생성 모델 소라(Sora) 등을 소개하며 비전 생성 모델의 전망과 미래 잠재력을 조망해봅니다.
이 책이 필요한 독자
- 딥러닝과 영상 변환 모델 기술에 대해 궁금한 분
- 비전 생성 모델을 처음 접하는 대학생 또는 대학원생
- 이미지 및 영상 생성 관련 인공지능 기술을 직접적인 수식과 코드로 학습하고 싶은 분
- 비주얼 분야에서의 인공지능에 대해 학습하고 싶은 분
- 디자인 및 그래픽 관련 분야에서 인공지능 모델을 활용해보고 싶은 분
그럼 이상으로 생성형 AI를 위한 컴퓨터 비전 파이토치를 활용한 딥러닝과 비전 생성 모델 책소개 포스팅을 마치겠습니다.
생성형 AI를 위한 컴퓨터 비전 파이토치를 활용한 딥러닝과 비전 생성 모델 책소개 포스팅은 제휴마케팅이 포함되어있습니다.
파이썬 기반 웹 프레임워크는 자바(Java)로의 복잡한 구현에 버금가는 좋은 성능의 결과물을 도출하면서도 개발 기간을 획기적으로 단축시킬 수 있습니다. 따라서 세계적으로 인기를 누린 지는 이미 오래되었고 국내에서의 니즈도 점차 활발해지고 있습니다. 또한 파이썬 자체가 꾸준히 개선되며 생산성과 성능, 두 마리 토끼를 잡을 수 있는 기술로 대두되고 있습니다.
플라스크(Flask), FastAPI와 함께라면 이전보다 빠르고, 가볍고, 세련된 웹과 풀스택을 기대해도 좋습니다. 이 책을 통해 방대한 예시와 실전에서 바로 활용할 수 있는 프로젝트를 직접 경험해보고, 배우기 쉽고 현대적인 웹에 적합한 파이썬 기반 웹 프레임워크 기술을 자신만의 무기로 갖춰보세요.
목차
제1장 플라스크와 FastAPI 이해하기
_1.1 웹 서비스의 역사와 동향
_1.2 마이크로 프레임워크란?
_1.3 플라스크란 무엇인가?
_1.4 FastAPI란 무엇인가?
제2장 플라스크 시작하기
_2.1 개발 환경 구축
__2.1.1 아나콘다
__2.1.2 비주얼 스튜디오 코드
__2.1.3 curl 명령어
_2.2 안녕, 플라스크!
__2.2.1 Hello, World! 애플리케이션 만들기
__2.2.2 flask run 상세 사용법
__2.2.3 flask run의 추가 옵션
__2.2.4 플라스크 애플리케이션 접속 주소
_2.3 라우팅
__2.3.1 플라스크에서의 라우팅
__2.3.2 URL 변수
__2.3.3 HTTP 메서드
__2.3.4 URL 빌더
__2.3.5 타입 힌트를 활용한 라우팅
_2.4 요청과 응답
__2.4.1 플라스크에서의 요청 처리
__2.4.2 플라스크에서의 응답 처리
__2.4.3 JSON이란 무엇인가?
__2.4.4 상태 코드와 헤더 설정
_2.5 템플릿
__2.5.1 템플릿 기본 사용법
__2.5.2 변수와 제어문
__2.5.3 필터
__2.5.4 반복문
__2.5.5 매크로
__2.5.6 템플릿 상속
_2.6 정적 파일
__2.6.1 플라스크에서 정적 파일 다루기
__2.6.2 정적 파일과 웹페이지 구현
__2.6.3 기존 웹페이지 통합
_2.7 블루프린트
__2.7.1 왜 블루프린트가 필요한가?
__2.7.2 블루프린트 기본 사용법
__2.7.3 애플리케이션 구조 모듈화하기
_2.8 세션과 쿠키
__2.8.1 세션과 쿠키의 필요성
__2.8.2 플라스크에서의 세션 사용법
__2.8.3 플라스크에서의 쿠키 사용법
_2.9 로깅
__2.9.1 왜 로깅이 필요한가?
__2.9.2 로깅 기본 사용법
제3장 플라스크 확장과 성능 개선
_3.1 데이터베이스
__3.1.1 플라스크와 MySQL 연동
__3.1.2 Flask-Migrate
_3.2 인증과 세션
__3.2.1 인증과 세션이란?
__3.2.2 플라스크에서의 인증과 세션
__3.2.3 Flask-Login을 사용한 인증
__3.2.4 예제로 이해하는 인증
__3.2.5 세션을 이용한 상태 관리
__3.2.6 예제로 이해하는 세션
_3.3 RESTful API
__3.3.1 HTTP 메서드 이해하기
__3.3.2 RESTful API 구현하기
_3.4 캐싱
__3.4.1 캐싱이란 무엇인가?
__3.4.2 캐싱 구현하기
_3.5 배포
__3.5.1 웹 서버와 SGI
__3.5.2 WSGI를 지원하는 플라스크
__3.5.3 Gunicorn으로 플라스크 애플리케이션 배포하기
_3.6 테스팅
__3.6.1 플라스크에서의 테스팅
__3.6.2 테스트 실행하기
__3.6.3 unittest의 다양한 기능
_3.7 플라스크 성능 개선 팁
__3.7.1 데이터베이스 쿼리 최적화
__3.7.2 정적 파일 최적화 및 캐싱의 진화된 전략
__3.7.3 로깅을 활용한 효과적인 디버깅
__3.7.4 고도화된 코드 최적화 기법
제4장 플라스크 프로젝트
_4.1 첫 번째 코드: 플라스크 애플리케이션 생성
__4.1.1 플라스크 애플리케이션 생성 및 flask run 설정
__4.1.2 flask run을 사용한 애플리케이션 실행
_4.2 두 번째 코드: 템플릿 사용과 라우팅 확장
__4.2.1 HTML 템플릿 생성
__4.2.2 플라스크 애플리케이션에서 템플릿 렌더링
__4.2.3 추가적인 라우팅 설정
__4.2.4 애플리케이션 실행 및 테스트
_4.3 세 번째 코드: 데이터베이스 연동 및 CRUD 구현
__4.3.1 데이터베이스 연동 및 모델 정의
__4.3.2 CRUD 기능 구현
__4.3.3 CRUD 기능 테스트
_4.4 네 번째 코드: 사용자 인증
__4.4.1 Flask-Login을 활용한 사용자 인증 구현
__4.4.2 사용자 인증 테스트
_4.5 다섯 번째 코드: 사용자별 메모 관리
__4.5.1 사용자별 메모 관리 구현
__4.5.2 memos.html 작성
__4.5.3 메모 관리 기능 테스트
_4.6 여섯 번째 코드: 웹페이지 개선
__4.6.1 home.html 작성
__4.6.2 memos.html 작성
__4.6.3 테스트
_4.7 일곱 번째 코드: 사용자 편의성 향상
__4.7.1 로그인 기능 개선
__4.7.2 회원가입 기능 개선
__4.7.3 프런트엔드 페이지 수정
__4.7.4 로그아웃 기능 개선
__4.7.5 테스트
_4.8 여덟 번째 코드: MVC 패턴 적용
__4.8.1 현재 app.py 파일 구조
__4.8.2 MVC 패턴 적용
플라스크를 마치며
제5장 FastAPI 시작하기
_5.1 안녕, FastAPI!
__5.1.1 Hello, World! API 만들기
__5.1.2 자동 문서화
_5.2 라우팅
__5.2.1 기본 라우팅
__5.2.2 경로 매개변수
__5.2.3 쿼리 매개변수
__5.2.4 curl을 사용한 테스트
_5.3 타입 힌트
__5.3.1 기본 타입 힌트
__5.3.2 고급 타입 힌트
__5.3.3 타입 힌트로 사용 가능한 데이터 타입
_5.4 HTTP 메서드
__5.4.1 FastAPI 코드 작성
__5.4.2 curl을 사용한 테스트
_5.5 Pydantic
__5.5.1 Pydantic 모델 적용
__5.5.2 Pydantic 기본 문법
__5.5.3 중첩된 모델
__5.5.4 List와 Union
_5.6 FastAPI 응답 모델
__5.6.1 기본 응답 모델
__5.6.2 Generic 응답 모델
__5.6.3 Union 응답 모델
__5.6.4 List 응답 모델
_5.7 FastAPI 응답 클래스
__5.7.1 HTMLResponse 예제 코드
__5.7.2 PlainTextResponse 예제 코드
__5.7.3 RedirectResponse 예제 코드
_5.8 요청
__5.8.1 FastAPI에서 쿼리 매개변수 다루기
__5.8.2 Query 클래스의 주요 옵션
__5.8.3 요청 바디
_5.9 예외 처리
__5.9.1 기본 예외 처리
__5.9.2 HTTPException 클래스
__5.9.3 HTTP 헤더
제6장 FastAPI와 풀스택
_6.1 템플릿
__6.1.1 FastAPI 설정
__6.1.2 템플릿 렌더링
__6.1.3 username을 요청에서 받기
__6.1.4 FastAPI와 Jinja2의 기본 문법
__6.1.5 FastAPI와 Jinja2의 고급 문법
_6.2 정적 파일
__6.2.1 FastAPI에서 정적 파일 다루기
__6.2.2 정적 파일과 웹페이지 구현
__6.2.3 기존 웹페이지 통합
_6.3 APIRouter
__6.3.1 다양한 사용법
__6.3.2 미들웨어 설정
__6.3.3 APIRouter와 의존성 함수
__6.3.4 APIRouter와 라우트 설정의 상속
__6.3.5 APIRouter와 플라스크 블루프린트의 비교
_6.4 쿼리 매개변수와 경로 매개변수
__6.4.1 쿼리 매개변수
__6.4.2 경로 매개변수
__6.4.3 타입 지정과 경로 매개변수 연산자
_6.5 백그라운드 태스크
_6.6 스트리밍 응답
_6.7 웹소켓
__6.7.1 웹소켓 기본 사용법
__6.7.2 웹소켓 주요 메서드
제7장 FastAPI 확장과 성능 개선
_7.1 데이터베이스와 ORM
__7.1.1 FastAPI와 MySQL 연동
__7.1.2 SQLAlchemy와 CRUD
_7.2 인증과 세션
__7.2.1 기본 인증 메커니즘 이해하기
__7.2.2 고급 인증1: JWT
__7.2.3 고급 인증2: 세션
_7.3 비동기 처리
_7.4 파일 업로드
_7.5 캐싱과 미들웨어
__7.5.1 FastAPI 캐싱
__7.5.2 FastAPI 주요 미들웨어
_7.6 배포
__7.6.1 Uvicorn 설치 및 실행
__7.6.2 도커로 FastAPI 애플리케이션 배포하기
_7.7 FastAPI 성능 개선 팁
__7.7.1 비동기 프로그래밍 활용
__7.7.2 캐싱 활용
__7.7.3 데이터베이스 커넥션 풀링
제8장 플라스크와 FastAPI 문법 비교
_8.1 라우팅
__8.1.1 플라스크의 라우팅
__8.1.2 FastAPI의 라우팅
_8.2 타입 힌팅
__8.2.1 플라스크의 타입 힌팅
__8.2.2 FastAPI의 타입 힌팅
__8.2.3 주요 차이점
_8.3 요청과 응답
__8.3.1 플라스크의 요청과 응답
__8.3.2 FastAPI의 요청과 응답
__8.3.3 주요 차이점
_8.4 데이터베이스
__8.4.1 플라스크의 PyMySQL과 SQLAlchemy
__8.4.2 FastAPI의 PyMySQL과 SQLAlchemy
__8.4.3 주요 차이점
_8.5 세션 관리
__8.5.1 플라스크의 세션 관리
__8.5.2 FastAPI의 세션 관리
__8.5.3 주요 차이점
_8.6 비동기 처리
__8.6.1 플라스크의 비동기 처리
__8.6.2 FastAPI의 비동기 처리
제9장 FastAPI 프로젝트
_9.1 첫 번째 코드: FastAPI 애플리케이션 생성
__9.1.1 FastAPI 설치 및 프로젝트 구조 설정
__9.1.2 FastAPI 애플리케이션 생성 및 Uvicorn 설정
__9.1.3 Uvicorn을 사용한 애플리케이션 실행
_9.2 두 번째 코드: Jinja2 템플릿 사용과 라우팅 확장
__9.2.1 HTML 템플릿 생성 및 Jinja2 설치
__9.2.2 FastAPI 애플리케이션에서 템플릿 렌더링
__9.2.3 추가적인 라우팅 설정
__9.2.4 애플리케이션 실행 및 테스트
_9.3 세 번째 코드: 데이터베이스 연동 및 CRUD 구현
__9.3.1 데이터베이스 연동 및 모델 정의
__9.3.2 CRUD 기능 구현
__9.3.3 CRUD 기능 테스트
_9.4 네 번째 코드: 사용자 인증
__9.4.1 MySQL을 연동한 사용자 인증 구현
__9.4.2 사용자 인증 테스트
_9.5 다섯 번째 코드: 사용자별 메모 관리
__9.5.1 사용자별 메모 관리 구현
__9.5.2 memos.html 작성
__9.5.3 메모 관리 기능 테스트
_9.6 여섯 번째 코드: 웹페이지 개선
__9.6.1 home.html 작성
__9.6.2 memos.html 작성
__9.6.3 테스트
_9.7 일곱 번째 코드: 마무리
__9.7.1 프런트엔드 페이지 개선
__9.7.2 예외 케이스 보완
__9.7.3 테스트
_9.8 여덟 번째 코드: MVC 패턴 적용
__9.8.1 MVC 패턴에 따른 파일 구조 및 역할
__9.8.2 MVC 패턴 적용
FastAPI를 마치며
출판사 서평
잔재미코딩과 함께 하는
파이썬 웹 개발과 풀스택의 대단한 즐거움
벨저크(Werkzeug) 툴킷과 진자2(Jinja2) 템플릿 엔진 기반의 웹 프레임워크 플라스크는 파이썬 기반 웹 프레임워크 중 장고(Django)와 양대 산맥을 이룹니다. 플라스크는 장고보다도 직관적이며 단순하고 자유도가 높아 파이썬이 친숙하다면 쉽게 학습할 수 있고, 한 번 익숙해지면 빠른 속도로 좋은 퀄리티의 서비스를 개발할 수 있습니다.
스타레테(Starlette)를 기반으로 웹 요청을 처리하며 파이단틱(Pydantic) 라이브러리로 데이터 검증과 설정을 하는 FastAPI는 비동기 처리에 최적화되어 있는 파이썬 기반 웹 프레임워크입니다. 플라스크나 장고보다 빠르고 심지어 Go 언어와 유사한 속도를 자랑하는 FastAPI는 특히 I/O 바운드 작업에서 뛰어난 성능을 보이며 타입 제약 기능을 제공해 보안성도 좋습니다.
다양한 기술 실무 및 주니어 양성 경험으로 충분한 실력과 노하우를 쌓은 저자와 함께 현대적인 웹에 적합한 파이썬 기반 웹 프레임워크 기술을 차곡차곡 쌓아보세요.
이 책이 필요한 독자
- 파이썬을 활용한 백엔드에 관심 있는 분
- 웹 애플리케이션 개발을 위해 빠르게 기술을 습득해야 하는 분
- 파이썬 기반 웹 개발의 다양한 실전 프로젝트를 접해보고 싶은 주니어
- 다른 프레임워크에서 플라스크나 FastAPI로의 전환을 고려하는 개발자
그럼 이상으로 가장 빠른 풀스택을 위한 Flask & FastAPI 책소개 포스팅을 마치겠습니다.
가장 빠른 풀스택을 위한 Flask & FastAPI 책소개 포스팅은 제휴마케팅이 포함되어있습니다.
프로그래밍을 책을 펼치면 기호와 문자가 뒤섞인 복잡한 코드가 쏟아져 나옵니다. 코드 하나하나에 분명 어떤 의미가 있을 텐데, 어떻게 구분해서 봐야 할지 알기 쉽지 않습니다. 이 책은 그런 초보자의 어려움을 아름답게 해결하기 위해 만들어졌습니다. 풀 컬러 페이지로 보기에도 화려하고 재밌으며, 코드를 시각적으로 구분해 바로바로 알기 쉽게 만들었습니다. 차근차근 따라가다 보면 PHP를 읽고 쓰는 것은 물론, 나만의 웹사이트를 만들 수 있을 것입니다.
PHP는 페이스북, 위키피디아, 워드프레스 등 세계 최고의 웹사이트에서 사용하는 프로그래밍 언어로서 꾸준히 업데이트되고 있습니다. 이 책은 PHP를 처음 접하는 초보자를 위해 기본 프로그래밍 명령부터 차근차근 알려줍니다. PHP 기본 명령어를 학습한 후에는 PHP를 사용하여 동적 웹 페이지를 어떻게 만드는지 살펴봅니다. 다음은 데이터베이스 기반 웹사이트를 구축하기 위해 MySQL을 사용한 데이터베이스 생성과 관리에 대해 학습합니다. 그리고 학습한 내용을 바탕으로 웹사이트를 구축하고 이 사이트에 회원가입, 좋아요, 댓글 기능 등을 추가하는 법과 PHP 커뮤니티에 공유된 PHP 클래스를 찾아서 사용하는 방법까지 배웁니다.
저자는 ‘더 나은 공부 방법’에 대해 고민하며 프로그래밍 서적을 집필했습니다. 복잡한 프로그래밍 개념을 시각화하여 독자가 한눈에 의미를 파악하고 이해하도록 구성했습니다. 이러한 노력은 전작들에서도 호응을 받았으며 ‘세상에서 가장 아름다운 프로그래밍 서적’이라는 호평을 받기도 했습니다. 아름답지만 알찬 구성으로 가득 찬 이 책으로 여러분의 웹사이트를 완성해보세요.
주요 내용
■ PHP 코드 읽기 및 쓰기
■ MySQL 데이터베이스에 데이터 저장
■ 방문자에 맞게 웹페이지를 조정하는 사이트 만들기
■ 콘텐츠 관리 시스템(CMS) 및 소셜 네트워크 구축
■ 회원가입 및 로그인 기능 구현
■ 댓글 및 좋아요 기능 추가하기
작가정보
저자(글) 존 두켓
인물정보
프로그래머
(Jon Duckett)
20년 이상 작은 스타트업부터 글로벌 브랜드에 이르기까지 다양한 웹사이트를 디자인하고 개발했다. 본서 외 저서로 《자바스크립트 & 제이쿼리》(제이펍, 2015), 《HTML & CSS》(에이콘출판사, 2012)가 있다. 이 책들은 코드와 개념을 시각적으로 구분해서 설명하는 것이 특징으로, 40만 부 이상 판매되었으며 10개 언어로 번역되며 많은 독자에게 사랑받고 있다.
번역 황반석
인물정보
컴퓨터공학자 번역가/통역사>영어
한양대학교에서 컴퓨터 공학을 전공한 후로 지금까지 개발자의 길을 걷고 있다. 애플리케이션 개발이 천직임을 인정하면서도 혹시 다른 재능도 있는 건 아닐까 하는 희망으로 아이스하키도 해보고 기타도 만져보지만, 결국은 컴퓨터 앞에 앉아 개발에 몰두하는 자신을 발견하곤 한다. 최근에는 플러터를 비롯한 멀티 플랫폼에 관심을 두고 있다. 옮긴 책으로는 《알 스웨이가트의 파이썬 프로젝트》(2022), 《파이썬 챌린지》(2021), 《핵심만 골라 배우는 SwiUI 기반의 iOS 프로그래밍》(이상 제이펍, 2020) 등이 있으며, 독자를 위한 인터넷 카페도 운영하고 있다.
목차
옮긴이 머리말 v
베타리더 후기 vii
시작하며 1
PART I 기본 프로그래밍 명령 17
소프트웨어 설치하기 / 샘플 코드 다운로드하기 / PHP 페이지에 HTML과 PHP 코드를 혼합하는 방법 / PHP가 브라우저에 텍스트와 HTML을 보내는 방법 / 페이지에 콘텐츠 쓰기 / 주석 / 코드에 주석 추가하기
1장 변수, 표현식 그리고 연산자 29
변수 / 변수 생성하고 접근하기 / 변수명을 지정하는 방법 / 스칼라(기본) 데이터 타입 / 변숫값 업데이트하기 / 배열 / 연관 배열 / 연관 배열 생성하기 및 접근하기 / 인덱스 배열 / 인덱스 배열 생성하고 접근하기 / 배열 안에 배열 저장하기 / 다차원 배열 / echo에 대한 간단 표기법 / echo의 간단 표기법 사용하기 / 표현식 그리고 연산자 / 산술 연산자 / 산술 연산자 사용하기 / 문자열 연산자 / 문자열 결합하기 / 비교 연산자 / 논리 연산자 / 비교 연산자 사용하기 / 논리 연산자 사용하기 / 타입 저글링: 데이터 타입 변환하기 / 기본 PHP 페이지 / 데이터 처리하고 출력하기 / 요약
2장 제어 구조 67
조건문 / 중괄호는 코드 블록을 형성한다 / 조건문의 구조 / if 문 사용하기 / 삼항 연산자 / 삼항 연산자 사용하기 / if... elseif 문 사용하기 / switch 문 사용하기 / match 표현식 사용하기 / 루프 / while 루프 / while 루프 사용하기 / do… while 루프 / do… while 루프 사용하기 / for 루프 / 세 가지 표현식으로 for 루프 사용하기 / for 루프 사용하기 / foreach 루프 / 키와 값을 통한 루프 / 인클루드 파일을 사용하여 코드 반복하기 / 파일 include 그리고 require / 인클루드 파일 생성하기 / 인클루드 파일 사용하기 / 예제 / 요약
3장 함수 103함수 사용하기 / 함수 정의하고 호출하기 / 기본 함수 / 코드가 항상 순서대로 실행되는 것은 아니다 / 함수에서 데이터 가져오기 / 값을 반환하는 함수 / 정보가 필요한 함수 정의하기 / 정보가 필요한 함수 호출하기 / 매개변수를 사용하는 함수 / 함수 이름 짓기 / 범위 / 범위에 대한 데모 / 전역 변수와 정적 변수 / 함수 외부의 변수에 접근하기 / 함수와 복합 데이터 타입 / 여러 값 받기와 반환하기 / 인수와 반환 타입 선언 / 타입 선언 사용하기 / 엄격한 타입 활성화하기 / 엄격한 타입 사용하기 / 여러 개의 반
환 구문 / 함수에서 여러 개의 반환 구문 사용하기 / 옵셔널 매개변수와 디폴트값 / 매개변수에 대한 디폴트값 사용하기 / 지정 인수 / 지정 인수 사용하기 / 함수 작성에 대한 접근방법 / 함수를 왜 사용하나? / 함수 문서화하기 / 예제 / 요약
4장 객체 & 클래스 143
모델로서의 웹사이트 / 속성 & 메서드 / 객체 데이터 타입 / 클래스는 객체 생성을 위한 템플릿이다 / 객체를 생성하는 방법과 사용하는 방법 / 클래스: 객체에 대한 템플릿 / 클래스를 사용하여 객체 생성하기 / 속성에 접근하고 업데이트하기 / 객체와 속성 사용하기 / 메서드 정의하고 호출하기 / 객체의 메서드 사용하기 / 생성자 메서드 / 클래스와 생성자 사용하기 / 속성과 메서드의 가시성 / 게터 그리고 세터 사용하기 / 객체의 속성에 배열 저장하기 / 객체의 속성으로 배열 사용하기 / 객체의 속성에 객체 저장하기 / 객체의 속성으로 객체 사용하기 / 객체 사용의 이점 / 예제 / 요약
PART II 동적 웹 페이지 177
HTTP 요청과 응답 / HTTP GET과 POST를 사용하여 데이터를 보내는 방법 / 링크 또는 폼으로 데이터를 보내는 방법 / 서버와 주고받는 데이터 보안 / 인코딩 스킴 / PHP 인터프리터의 내장 툴킷 / 슈퍼글로벌 배열 / $_SERVER 슈퍼글로벌 배열의 데이터 / 변수 데이터를 보여주는 내장 함수 / 변수의 내용 표시하기 / 오류 메시지 / 오류 메시지 예제 / PHP 인터프리터에 대한 설정 및 옵션 / PHP 인터프리터에 대한 설정 보기 / 인터프리터 설정 변경하기: php.ini / 서버 설정 변경하기: .htaccess
5장 내장 함수 201
대문자 & 소문자 길이 확인하기 / 대소문자 변환하기와 문자 계수하기 / 문자열에서 문자 찾기 / 문자열에 있는 문자 확인하기 / 문자 제거하기와 교체하기 / 문자열의 문자 바꾸기 / 멀티바이트 문자열 함수 / 멀티바이트 문자열 함수 사용하기 / 정규 표현식 / 정규 표현식 함수 / 정규 표현식 사용하기 / 숫자로 작업하기 / 숫자 함수 / 배열로 작업하기 / 배열 함수 / 배열에 항목 추가하기와 제거하기 / 배열 업데이트 함수 / 배열 정렬하기(순서 변경하기) / 배열 정렬 함수 / 상수 / 상수 사용하기 / HTTP 헤더 추가하기 또는 업데이트하기 / HTTP 헤더를 사용하여 사용자 리디렉션하기 / 파일에 대한 데이터 및 파일 삭제하기 / 파일 정보 얻기 / 요약
6장 브라우저로부터 데이터 가져오기 231
데이터를 수집하고 사용하는 네 가지 단계 / HTTP GET을 통해 데이터 전송받기 / 쿼리 문자열을 사용하여 콘텐츠 선택 / 슈퍼글로벌 배열에 누락된 데이터 처리하기 / 쿼리 문자열을 사용하여 콘텐츠 선택하기 / 데이터 유효성 검증하기 / 쿼리 문자열 데이터 검증하기 / 데이터가 누락된 경우 오류 페이지 표시하기 / 방문자를 오류 페이지로 보내기 / 결과 이스케이핑 / 이스케이핑을 하지 않은 위험 / 예약된 HTML 문자 이스케이핑하기 / 사용자가 제공하는 콘텐츠 이스케이핑 / 폼 데이터가 서버로 전송되는 방법 / 폼 데이터 가져오기 / 폼 데이터를 수신하는 방법 / 폼이 제출되었는지 확인하는 방법 / 폼이 제출되었는지 확인하기 / 숫자 유효성 검사하기 / 숫자가 유효한지 확인하기 / 텍스트 길이 유효성 검사하기 / 텍스트 길이 확인하기 / 정규 표현식을 사용하여 데이터 유효성 검사하기 / 비밀번호 길이 검사하기 / 셀렉트 박스와 라디오 버튼 / 옵션 확인하기 / 체크박스가 체크되었는지 확인하는 방법 / 체크박스 확인하기 / 여러 값이 유효한지 확인하기 / 폼 검증하기 / 필터 함수를 사용하여 데이터 수집하기 / 데이터를 수집하기 위해 필터 함수 사용하기 / 유효성 검사 필터 / 단일값을 확인하기 위해 필터 사용하기 / 필터를 사용하여 값을 수집하기 / 여러 입력을 검증하기 위한 필터 / 필터로 여러 입력을 검증하기 / 변수를 가지고 동작하는 필터 함수 / 변수의 데이터 검증하기 / 필터, 플래그, 그리고 옵션 검증 / 제거 필터 / 변수에 제거 필터 적용하기 / 필터를 사용하여 폼 검증하기 / 요약
7장 이미지 & 파일 285
브라우저에서 파일 업로드하기 / 서버에서 파일 받기 / 파일이 업로드되었는지 확인하기 / 파일을 목적지로 이동하기 / 업로드된 파일 이동하기 / 파일명과 중복 파일 정리하기 / 파일 크기와 파일 타입 확인하기 / 파일 업로드 검사하기 / 이미지 크기 조절하기 / 이미지 자르기 / 확장 프로그램을 사용하여 이미지 편집하기 / GD를 사용하여 이미지 크기 조절하기 / Imagick로 크기 조절하고 자르기 / 요약
8장 날짜 & 시간 309
날짜 형식 / 시간 형식 / 문자열을 사용하여 날짜 및 시간 지정하기 / 유닉스 타임스탬프 / 날짜 내장 함수와 시간 내장 함수 / 날짜 함수 / 날짜와 시간을 나타내는 객체 / DateTime 객체 / DateTime 객체의 날짜와 시간 업데이트하기 / DateTime 객체에 날짜와 시간을 설정하는 방법 / DateInterval을 사용하여 간격 나타내기 / DateInterval 객체 / DatePeriod를 사용하는 반복 이벤트 / DatePeriod 객체 / DateTimeZone을 사용하여 타임존 관리하기 / DateTimeZone 객체 / 요약
9장 쿠키 & 세션 329
쿠키란 무엇인가? / 쿠키 생성과 접근 방법 / 쿠키 설정하고 접근하기 / 쿠키 보안 / 쿠키 설정 제어하기 / 세션이란 무엇인가? / 세션을 생성하고 접근하는 방법 / 세션에 데이터를 저장하고 접근하기 / 세션의 수명 / 기본 로그인 시스템 / 사용자가 페이지를 조회하기 위해 로그인하도록 하는 방법 / 요약
10장 오류 처리 349
PHP 오류가 표시되는 방법 제어하기 / 오류 메시지 이해하기 / 오류의 레벨과 유형 / 구문 오류 / 치명적인 오류 / 치명적이지 않은 오류(경고 또는 알림) / 디버깅: 오류 추적하기 / 사이트 활성화하기 / 오류 처리 함수 / 치명적이지 않은 에러 핸들링 함수 / 예외 / try… catch로 예외 처리 / 디폴트 예외 처리 함수 / try… catch를 사용하여 예외 처리하기 / 커스텀 예외 발생하기 / 서로 다른 예외 타입 캐치하기 / 디폴트 오류와 예외 처리하기 / 웹 서버 오류를 표시하는 방법 / 요약
PART III 데이터베이스 기반의 웹사이트 381
예제 웹사이트 소개 / 관계형 데이터베이스가 데이터를 저장하는 방법 / 데이터베이스에서의 데이터 타입 / 데이터베이스의 데이터 복제하지 않기 / MySQL 작업을 위해 phpMyAdmin 사용하기 / 데이터베이스를 관리하기 위해 phpMyAdmin 사용하기 / 샘플 데이터베이스 설정하기 / 샘플 데이터베이스 둘러보기 / 데이터베이스 사용자 계정 생성하기
11장 구조화된 쿼리 언어 397
데이터베이스에서 데이터 가져오기 / 테이블에서 특정 행 반환하기 / SQL에서 비교 연산자 사용하기 / LIKE와 와일드카드로 결과 검색하기 / 값에 대해 검색하기 / 결과 세트의 행 순서 제어하기 / 결과 정렬하기 / 결과를 카운팅하고 그룹핑하기 / 일치하는 결과의 수 카운팅하기 / 결과 제한하기 및 건너뛰기 / 일치하는 결과의 수 제한하기 / 두 테이블에서 데이터를 가져오기 위해 JOIN 사용하기 / 데이터가 누락된 경우 JOIN이 동작하는 방식 / 여러 테이블에서 데이터 가져오기 / 다중 JOIN 사용하기 / 앨리어스 / 열 이름에 대한 앨리어스 사용하기 / 열 결합하기 & NULL 대체하기 / CONCAT 그리고 COALESCE / 예제 CMS를 위한 기사 쿼리 / 데이터베이스에 데이터 추가하기 / 데이터베이스의 데이터 업데이트하기 / 데이터베이스에서 데이터 삭제하기 / 고유성 제약 / 외래 키 제약 / 요약
12장 데이터베이스에서 데이터 가져오기 & 표시하기 433
데이터베이스에 연결하기 / 데이터베이스 연결은 인클루드 파일에 둘 수 있다 / 하나의 PHP 파일이 서로 다른 데이터를 표시하는 방법 / SQL 쿼리를 사용하여 데이터 가져오기 / 데이터베이스에서 하나의 데이터 행 가져오기 / 쿼리가 데이터를 반환했는지 확인하기 / 데이터베이스에서 여러 행의 데이터 가져오기 / 한 번에 한 행의 데이터를 가져오기 위해 루프 돌기 / SQL 쿼리에 변경할 수 있는 데이터 사용하기 / 동일한 페이지에 서로 다른 데이터 표시하기 / SQL 쿼리에 값 바인딩 / SQL 쿼리에 정수 바인딩하기 / 단일 파일을 사용하여 여러 페이지 표시하기 / 쿼리 문자열을 사용하여 올바른 페이지 표시하기 / HTML 페이지에서 데이터베이스 데이터 표시하기 / HTML 페이지에서 사용되는 데이터 형식 지정하기 / SQL 문을 실행하는 함수 / 매개변수가 없는 사용자 정의 PDO 함수 / 매개변수가 있는 사용자 정의 PDO 함수 / 몇 개의 PHP 파일로 전체 사이트를 운영하는 방법 / 헤더와 푸터 파일 / 홈페이지 / 카테고리 페이지 / 기사 페이지 / 회원 페이지 / 검색 기능 만들기 / 검색 페이지 / 데이터를 객체로 가져오기 / 객체를 가져오기 위해 페치 모드 설정하기 / 클래스를 사용하여 객체에 있는 데이터 가져오기 / 존재하는 클래스를 사용하여 객체 생성하기 / 요약
13장 데이터베이스의 데이터 업데이트하기 483
테이블에 데이터 추가하기 / 테이블의 데이터 업데이트하기 / 테이블에서 데이터 삭제하기 / 새로운 데이터 행의 아이디 가져오기 / 얼마나 많은 행이 변경되었는지 알아보기 / 열에 값이 중복되는 것을 방지하기 / 데이터베이스 데이터를 편집하기 위한 웹 페이지 생성하기 / 카테고리 생성하기, 업데이트하기, 그리고 삭제하기 / 데이터 생성하고 업데이트하기 / 카테고리 데이터 가져오고 유효성 검사하기 / 카테고리 데이터 저장하기 / 카테고리 데이터를 생성 또는 편집하기 위한 폼 / 카테고리 삭제하기 / 기사 생성하고 편집하기 / 트랜잭션: 여러 개의 SQL 문 / 기사: 페이지 설정하기(파트 A) / 기사: 데이터 가져오고 유효성 검사하기(파트 B) / 기사: 변경사항 저장하기(파트 C) / 기사: 폼/메시지(파트 D) / 기사 삭제하기 / 요약
PART IV 샘플 애플리케이션 확장하기 521
절대 경로와 상대 경로 / 파일 구조와 도큐먼트 루트 / 구성 파일 / BOOTSTRAP 파일 / 변수가 데이터를 저장하는 방법
14장 리팩터링 & 종속성 주입 533
데이터베이스 작업을 위한 객체 사용하기 / Database 객체 / 컨테이너 객체 / CMS 컨테이너 객체 / Database 클래스 / Category 클래스 / 카테고리 생성하기, 업데이트하기, 삭제하기 / 기사 데이터 가져오기 / CMS 객체 사용하기 / 코드 리팩터링 방법 / 클래스 오토로딩하기 / 정적 메서드를 사용하는 유효성 검증 클래스 / 요약
15장 네임스페이스 & 라이브러리 557
네임스페이스 생성하기 / 네임스페이스에 있는 코드 사용하기 / CMS 클래스에서 네임스페이스 사용하기 / 네임스페이스로 코드 가져오기 / 클래스를 현재의 네임스페이스로 가져오기 / 라이브러리 사용하는 방법 / Composer와 패키지 사용하기 / Packagist: 패키지의 디렉터리 / Composer와 패키지 설치하기 / Composer를 사용하여 패키지를 관리하기 / HTML Purifier: HTML 콘텐츠 허용하기 / CMS에 HTML Purifier 추가하기 / TWIG: 템플릿 엔진 / 템플릿을 렌더링하기 위해 TWIG 객체 사용하기 / TWIG 옵션 / 전역 변수와 익스텐션 / TWIG 객체를 생성하기 위해 BOOTSTRAP 사용하기 / PHP 페이지 업데이트하기 / 데이터를 가져오고 렌더링하는 PHP 파일 / TWIG 템플릿의 데이터 접근하기 / TWIG 템플릿에 데이터 표시하기 / TWIG 템플릿에 조건 사용하기 / TWIG 템플릿에서 루프 사용하기 / 템플릿 파일을 구조화하는 방법 / 부모 및 자식 카테고리 템플릿 / 기사 요약 템플릿 / 기사 템플릿 / PHPMailer를 사용하여 이메일 보내기 / SMTP 서버에 연결하기 위해 설정하기 / 이메일 생성하고 전송하기 / 이메일을 생성하고 전송하는 클래스 / Email 클래스 사용하기 / 요약
16장 멤버십 603
데이터베이스 업데이트하기 / 사용자 등록하기 / 비밀번호 해시 / 해시된 비밀번호 생성하고 확인하기 / 새로운 회원 등록하기(파트 1) / 새로운 회원 등록하기(파트 2) / 로그인과 개인화 / 로그인하기(파트 1) / 로그인하기(파트 2) / 사용자 데이터를 저장하기 위해 세션 사용하기 / 내비게이션 바 개인화하기 / 회원의 프로필 페이지에 옵션 추가하기 / 어드민 페이지에 대한 접근 제한하기 / 데이터베이스와 토큰을 업데이트하는 이메일 링크 / 데이터베이스에 토큰 저장하기 / 비밀번호 재설정 요청하기 / 비밀번호 재설정하기 / 요약
17장 기능 추가하기 633
SEO 친화적인 URL / 업데이트된 파일 구조 / SEO 친화적인 URL 구현하기 / URL rewriting / URL 업데이트하기 / 요청 처리하기 / SEO 이름 생성하기 / SEO 이름 저장하기 / SEO 친화적인 이름을 가진 페이지 표시하기 / 새로운 기능 계획하기 / 댓글 저장하기 / 좋아요 저장하기 / 좋아요 & 댓글 수와 함께 요약 표시하기 / 좋아요 추가하고 제거하기 / 기사에 댓글 추가하기 / 기사 페이지 템플릿 업데이트하기 / 요약
책 속으로
PHP는 웹 서버에서 실행되도록 설계된 프로그래밍 언어로, 누군가 웹 페이지를 요청하면 해당 사용자에게 응답할 HTML 페이지를 서버에서 생성할 수 있게 된다. 이 말은 HTML 페이지를 개별 사용자에게 맞게 조정할 수 있다는 의미다. (…) PHP는 사이트가 보여주는 페이지의 내용, 사이트에서 판매하는 제품, 사용자에 대한 상세 정보 등의 데이터를 저장할 수 있는 MySQL 같은 데이터베이스와 함께 동작하도록 설계되었다. 이 책에서 여러분은 PHP를 사용하여 사용자가 데이터베이스에 저장된 데이터를 갱신하는 웹 페이지를 어떻게 만드는지 배우게 될 것이다. (2쪽)
PHP 파일은 방문자가 여러 개의 사탕 상자를 구매할 때 사용할 수 있는 할인에 대해 안내해주는 HTML 페이지를 만든다. 다음을 수행하는 것을 볼 수 있다.
ㆍ 변수와 배열에 정보를 저장한다.
ㆍ 방문자에 개인화된 인사말을 만들기 위해 연결 연산자를 사용하여 변수에 있는 텍스트를 결합한다.
ㆍ 페이지에 출력할 가격을 결정하는 계산을 수행하기 위해 산술 연산자를 사용한다.
ㆍ PHP 인터프리터가 생성한 새로운 값을 페이지의 HTML 내용에 출력한다.
또한, 변수에 저장된 값을 업데이트하면 페이지는 새로운 제품과 가격을 자동으로 반영한다. (63쪽)
웹사이트는 동일한 유형의 여러 항목을 표시해야 할 때가 많다. 뉴스 사이트는 많은 뉴스 기사를 게시하고, 상점은 많은 제품을 판매하며, 사용자가 가입할 수 있는 사이트는 많은 회원을 보유한다. 이것은 각각 객체(object)를 사용하여 코드로 나타낼 수 있다. PHP는 어떤 것의 유형을 나타내는 객체를 생성하기 위한 템플릿인 클래스(class)라는 것을 사용한다. 예를 들어, 제품에 대해 나타내는 클래스를 하나 만들고 회원을 위한 객체를 또 하나 만들 수 있다. 클래스를 사용하여 생성된 각 객체는 그 클래스에 정의된 속성과 메서드를 자동으로 부여받는다. (144쪽)
이번 장에서는 방문자가 사이트의 회원으로 등록하는 방법을 살펴본다. 그런 다음 로그인한
회원에게만 표시되는 개인화된 페이지를 표시한다. (…) 이러한 작업을 수행하는 방법을 배우기 위해 이번 장은 세 가지 부분으로 나뉜다.
ㆍ 사이트에 회원가입: 사이트의 개별 회원을 식별하기 위해 필요한 정보를 수집하고 데이터베이스에 저장하는 방법
ㆍ 로그인 및 페이지 개인화: 회원이 로그인할 수 있도록 하는 방법, 개별 회원에 맞는 페이지를 생성하는 방법, 그리고 회원 전용 페이지를 생성하는 방법
ㆍ 사용자 로그인 없이 데이터베이스 업데이트하기: 예를 들어 비밀번호를 업데이트해야 할 때 사용자가 먼저 로그인하지 않고도 데이터베이스를 업데이트하도록 하는 방법. 여기에는 새로운 일련의 보안 요구사항을 해결하는 작업이 포함된다. (604쪽)
지금까지 이 책에서는 샘플 사이트의 각 페이지에 대한 URL은 실행되어야 하는 PHP 파일의 경로를 사용했다. 만약에 페이지가 데이터베이스에서 데이터를 가져와야 한다면, 데이터의 아이디가 쿼리 문자열에 지정되어 있었다. 대다수의 웹사이트는 파일 경로보다 더 설명적이고 SEO 친화적인 URL을 사용한다. 방문자가 이러한 설명적인 URL을 요청하면, 사이트는 URL을 파일 경로로 변환하고 표시할 데이터를 해당 파일에 알려준다. 이것은 URL rewriting이라는 기술이다. (636쪽)
사용자가 로그인하면 기사 페이지의 좋아요 아이콘이 링크가 된다. 이것이 링크된 파일은 사용자가 해당 기사를 좋아했는지를 확인하며, 좋아하지 않았다면 좋아요를 추가한다. 만약에 좋아요를 했었다면, 좋아요를 취소한다. 이를 위해 Like 클래스의 메서드가 호출된다. (654쪽)
그럼 이상으로 백엔드 프로그래밍을 위한 PHP & MySQL 책소개 포스팅을 마치겠습니다.
백엔드 프로그래밍을 위한 PHP & MySQL 책소개 포스팅은 제휴마케팅이 포함되어있습니다.
아무리 디자인을 잘해도 자바스크립트를 제대로 활용하지 못한다면 표현하고자 하는 웹사이트를 만들기 어렵습니다. 사용자와 전하고자 하는 콘텐츠에 따라 그에 맞는 디자인과 기능을 더해야 하는데 이때 필요한 것이 바로 자바스크립트이기 때문입니다. 하지만 자바스크립트를 이론부터 배우기 시작하면 어렵고 막막할 수 있습니다. 프로그래밍을 하다 보면 어떤 기능을 어떻게 구현해야 하는지 잘 떠오르지 않기도 합니다. 이 책에서는 이미 완성된 웹사이트를 기반으로 자바스크립트의 중요한 개념과 기능을 차근차근 설명합니다. 따라서 어떤 기능이 어떻게 활용되는지 쉽게 익히고 오늘 당장 나만의 웹사이트를 만드는 데 활용할 수도 있습니다. 자바스크립트를 처음 배운다면, 배우다가 포기했다면 이 책으로 시작해보세요!
저자(글) Mana
인물정보
웹디자이너
일본에서 2년간 그래픽 디자이너로 일한 뒤 캐나다 밴쿠버에 있는 웹 제작 학교를 졸업했다. 캐나다, 호주, 영국 회사에서 웹 디자이너로 근무했으며 현재는 웹 사이트 제작에 대해 강의하고 있다. 블로그 ‘Webクリエイターボックス(웹 크리에이터 박스)’는 2010년 일본 알파 블로거 어워드를 수상했다. 저서인 『러닝스쿨! 한 권으로 끝내는 HTML+CSS 웹 디자인 입문』 『완성된 웹사이트로 배우는 HTML&CSS 웹 디자인』으로 각각 2019년, 2021년 CPU 대상 서적 부문 대상을 수상했다.
번역 신은화
인물정보
컴퓨터공학자 번역가/통역사>일본어
이화여자대학교에서 컴퓨터학을 전공했으며 일본 미에대학교에서 교환학생으로 정보공학을 공부했다. LG CNS에서 15년째 근무하며 프로그램 개발, 기획, 사업 개발 등 다양한 업무를 거쳐 현재는 클라우드 빌링 업무를 담당하고 있다. 옮긴 책으로는 『가장 쉬운 네트워크 가상화 입문 책』 『인프라 디자인 패턴』 『완벽한 IT 인프라 구축을 위한 Docker』 『완성된 웹사이트로 배우는 HTML&CSS 웹 디자인』이 있다.
목차
CHAPTER 1 자바스크립트로 할 수 있는 것
1.1 자바스크립트란
1.2 자바스크립트로 할 수 있는 것
1.3 자바스크립트를 사용한 여러 웹사이트
CHAPTER 2 자바스크립트 맛보기
2.1 자바스크립트는 어디에 작성할까
2.2 자바스크립트를 작성하는 환경을 준비해보자
2.3 첫 자바스크립트를 작성해보자
2.4 자바스크립트를 작성할 때의 기본 규칙
2.5 콘솔을 사용해보자
CHAPTER 3 자바스크립트 기초 배우기
3.1 작성할 컬러 피커 소개
3.2 필요한 파일 준비하기
3.3 컬러 피커의 컬러값 가져오기
3.4 텍스트 바꿔보기
3.5 DOM 이해하기
3.6 템플릿 문자열로 표시하기
3.7 상수로 깔끔하게 코드 정리하기
3.8 컬러 코드를 표시하는 ‘계기’ 만들기
3.9 함수로 선택한 색 가져오기
3.10 페이지 배경색 바꾸기
3.11 조건을 붙여서 색상명 표시하기
CHAPTER 4 이벤트로 처리하기
4.1 이벤트란
4.2 로딩 중인 이미지 만들기
4.3 로딩 중인 이미지 만들기 - CSS 클래스 추가하기
4.4 버튼을 클릭하여 다크 모드로 바꾸기
4.5 버튼을 클릭하여 다크 모드로 바꾸기 - CSS 클래스 바꾸기
4.6 버튼을 클릭하면 다크 모드로 바꾸기 - 버튼 텍스트 바꾸기
4.7 입력한 글자 수 세어보기
4.8 입력한 글자 수 세어보기 - length로 카운트하기
4.9 입력한 글자 수 세어보기 - 글자 수에 따라 다르게 표시하기
4.10 버튼 상태 변경
4.11 버튼 상태 변경 - 체크하면 버튼 활성화시키기
4.12 버튼 상태 변경 - 더욱 효율적인 구현 방법 생각하기
4.13 페이지의 스크롤 양 표시
4.14 페이지의 스크롤 양 표시 - 스크롤 양 가져오기
4.15 페이지의 스크롤 양 표시 - 페이지 사이즈 가져오기
4.16 페이지의 스크롤 양 표시 - 계산식 작성
CHAPTER 5 여러 데이터 사용해보기
5.1 이미지 목록 페이지 소개
5.2 insertAdjacentHTML로 HTML 태그 삽입하기
5.3 배열로 여러 이미지 파일명 모으기
5.4 배열 안에 있는 이미지 표시하기
5.5 for 문의 반복 처리 개념 이해하기
5.6 for 문으로 이미지 목록 표시하기
5.7 변수 let과 상수 const의 차이점
5.8 객체로 이미지, 메뉴명, 가격 정리
5.9 객체 정보 가져오기
5.10 배열과 객체를 조합하여 데이터를 하나로 정리하기
5.11 목록 표시하기
5.12 분할 대입으로 깔끔한 코드 만들기
CHAPTER 6 애니메이션 추가하기
6.1 움직임이 있는 웹사이트 예시 보기
6.2 움직임이 있을 때 효과적인 이유
6.3 안정감을 주는 움직임이란
6.4 제목이 밑에서부터 떠오르는 것처럼 나타내기
6.5 제목이 밑에서부터 떠오르는 것처럼 나타내기 - 애니메이션 기본 작성법
6.6 제목이 밑에서부터 떠오르는 것처럼 나타내기 - 여러 애니메이션 추가하기
6.7 제목이 밑에서부터 떠오르는 것처럼 나타내기 - 움직임에 상세 설정 더하기
6.8 제목에 사용할 수 있는 다양한 애니메이션
6.9 여러 이미지를 순서대로 표시하기
6.10 여러 이미지를 순서대로 표시하기 - 모든 클래스 가져오기
6.11 여러 이미지를 순서대로 표시하기 - 하나씩 늦추기
6.12 이미지에 사용할 수 있는 여러 애니메이션
6.13 스크롤과 애니메이션 조합하기
6.14 스크롤과 애니메이션 조합하기 - Intersection Observer 조합
6.15 스크롤과 애니메이션 조합하기 - 교차 상태 정보 살펴보기
6.16 스크롤과 애니메이션 조합하기 - 움직임 추가하기
CHAPTER 7 웹 페이지 만들기
7.1 작성할 웹 페이지 소개
7.2 로딩에서 화면 바뀜
7.3 로딩에서 화면 바뀜 - 화면이 바뀌는 스크린 만들기
7.4 로딩에서 화면 바뀜 - 애니메이션 타이밍 조절
7.5 이미지 갤러리
7.6 이미지 갤러리 - 커서를 갖다 댔을 때의 애니메이션
7.7 이미지 갤러리 - 커서를 갖다 댔을 때 크게 표시
7.8 이미지 갤러리 - 여러 요소를 forEach로 작성하기
7.9 슬라이드 메뉴
7.10 슬라이드 메뉴 - 클릭해서 메뉴 열기
7.11 슬라이드 메뉴 - 위에서부터 순서대로 표시하기
7.12 스크롤로 요소 표시
7.13 스크롤로 요소 표시 - fadein 클래스의 HTML 요소 가져오기
7.14 스크롤로 요소 표시 - 부드럽게 표시하는 애니메이션 설정
7.15 스크롤로 요소 표시 - 여러 번 실행되지 않도록 제어
CHAPTER 8 오류와 해결 방법
8.1 오류 확인 방법
8.2 자주 발생하는 오류 리스트
출판사 서평
누구나 재미있게 배울 수 있는 자바스크립트 입문서!
웹 디자인 인플루언서 저자 Mana가 알려주는
오늘 당장 적용 가능한 자바스크립트 기초의 모든 것
자바스크립트는 웹사이트에 생명을 불어넣는 프로그래밍 언어입니다. 단지 웹사이트를 더 편리하게, 예쁘게 만들어보고 싶을 뿐인데 복잡한 자바스크립트 문법 때문에 포기했다면 이 책으로 시작해보세요. 자바스크립트 기초 프로그래밍을 중심으로 이벤트, 데이터 활용, 애니메이션까지 누구나 재미있게 배울 수 있도록 구성했습니다.
★완성된 웹사이트로 배울 수 있는 자바스크립트 효과
● 로딩 화면
자바스크립트 이벤트, 애니메이션 타이밍 조절을 이용하여 사용자의 기대감을 높일 수 있는 화면을 만듭니다.
노션의 기본을 알고 있고 템플릿도 따라 만들 수 있는데, 뭔가 부족하다고 느낀다면 그 이유는 중간 단계를 점핑했기 때문입니다. 『노션 덕후의 놀라운 꿀팁 아카이브』에는 노션의 기본 사용법과 고급 활용법 사이를 접착해줄 노션 덕후의 구석구석 노하우를 체계적으로 모아두었습니다. 복잡해서 누구도 알려주지 않았지만, 한 번 습득하고 나면 손쉽게 활용할 수 있는 방대한 양의 팁을 촘촘하게 담았습니다.
이 책은 단순히 템플릿을 따라 만드는 것이 아니라 기능을 적절히 활용할 수 있도록, 하나의 파트를 네 개의 스텝으로 구성하여 기능과 해당 기능으로 완성할 수 있는 실습을 연계하여 소개합니다. 기본 세팅 및 페이지 정리에서의 유용하면서도 세련되어 보이는 한 끗 차이 점검부터 노션 AI는 물론, 노션에서 야심 차게 발표한 캘린더의 끝판왕 노션 캘린더까지 완벽하게 정복해봅시다.
저자(글) 전소라
인물정보
IT종사자
(쉽게 알려주는 소짱)
5년 차 노션 덕후이자 1년에 2,000명에게 노션을 알려주는 노션 강사. 일과 일상을 노션으로 쉽고 재미있게 기록할 수 있도록 돕고 있습니다.
목차
저자 소개
Intro 언제까지 노션을 메모장으로만 쓸 건가요?
PART 01 노션 시작하기
_STEP 01 노션 제대로 시작하는 법
__1 잠깐, 시작 전에 세팅부터 점검하고 갈게요
__2 님아, 노션 페이지 그냥 만들지 마오
__3 폴더 정리하듯 하나로 모으세요
__4 노션 용어 익히기
_STEP 02 꿀팁 대방출 - 기본 블록 편
__1 노션의 시작은 페이지에서부터
》 [따라 하기] 새 페이지 만들기
__2 제일 많이 쓰는 노션 단축키 알고 갑시다
》 [따라 하기] 기본 블록 만들기
__3 콜아웃 줄 바꿈 못 해본 사람 손 들어보세요
》 [따라 하기] 콜아웃 블록 만들기
__4 블록 나누기도 손쉽게
》 [따라 하기] 블록 열 나누기
__5 내 노션 페이지는 200평이야
_STEP 03 꿀팁 대방출 - 텍스트 블록 편
__1 이제 회색 바탕에 빨간 글씨가 뭐냐고 묻지 마세요
》 [따라 하기] 코드로 표시와 텍스트 편집하기
__2 배경색은 한 끗 차이
》 [따라 하기] 글자색과 배경색 설정하기
__3 텍스트 크기는 더도 말고 덜도 말고 딱 4개
》 [따라 하기] 제목 블록 활용하기
__4 글 정렬 탭 하나로 완성하세요
__5 텍스트 스타일도 느낌 있게
》 [따라 하기] 텍스트 스타일 바꾸기
_STEP 04 따라 만들기
__예시 페이지 1 - 셀프 인터뷰 페이지
__예시 페이지 2 - 주간 회고 페이지
__예시 페이지 3 - 일 경험 페이지
PART 02 노션과 친해지기
_STEP 01 꿀팁 대방출 - 미디어 블록 편
__1 미디어 블록은 이미지부터
__2 링크도 그냥 넣지 않지
》 [따라 하기] 북마크로 링크 추가하기
》 [따라 하기] 임베드로 링크 추가하기
__3 동영상 임베드하기
__4 노션에 파일 한 숟가락 얹기
》 [따라 하기] 파일 업로드 & 임베드하기
_STEP 02 꿀팁 대방출 - 고급 블록 편
__1 목차도 원샷 원킬
》 [따라 하기] 목차 만들기
__2 좌표만 찍으면 순간 이동 완성
__3 한 번에 동기화하는 매직
__4 클릭 한 번으로 완성하는 버튼
》 [따라 하기] 루틴 버튼 만들기
_STEP 03 꿀팁 대방출 - 워크스페이스 세팅 편
__1 워크스페이스도 도메인도 나답게
__2 한 계정 여러 워크스페이스
__3 꼭 한 계정만 쓰란 법은 없다
__4 무료 업그레이드 혜택 야무지게 챙기기
__5 여럿이서 쓰면 더 재미있는 노션
_STEP 04 따라 만들기
__예시 페이지 1 - 생일 파티 초대 페이지
__예시 페이지 2 - 덕질 페이지
__예시 페이지 3 - 프로젝트 페이지
__예시 페이지 4 - 회의록 페이지
PART 03 노션의 핵심, 데이터베이스
_STEP 01 꿀팁 대방출 - 데이터베이스 1편
__1 1분 안에 데이터베이스 훑고 갑시다
__2 인라인과 전체 페이지를 알고 있나요?
》 [따라 하기] 데이터베이스 표 만들기
__3 이 중에 하나쯤은 필요한 게 있겠지, 데이터베이스 속성
》 [따라 하기] 기본 속성 추가하기
》 [따라 하기] 관계형과 롤업 속성 추가하기
_STEP 02 꿀팁 대방출 - 데이터베이스 2편
__1 점 3개를 알면 노션 성공 시대가 열린다!
》 [따라 하기] 갤러리 속성 추가 및 표시하기
__2 디테일이 노션을 빛나게 한다!
》 [따라 하기] 갤러리 레이아웃 설정 바꾸기
__3 이렇게도 보고 저렇게도 보고
__4 필터로 차렷, 정렬로 열중쉬엇
》 [따라 하기] 필터와 정렬 사용하기
__5 너와 나의 연결고리, 하위 항목과 종속성
_STEP 03 꿀팁 대방출 - 데이터베이스 3편
__1 링크된 데이터베이스 보기 생성을 안다면 당신은 노션 중수 이상!
__2 이게 변신 로봇이야 노션이야?
__3 설마 매번 복붙해서 쓰나요?
》 [따라 하기] 회의록 템플릿으로 만들기
__4 데이터베이스에서도 버튼 활용하기
》 [따라 하기] 데이터베이스에 버튼 연결하기
__5 수식을 알면 열리는 노션 신세계
_STEP 04 따라 만들기
__예시 페이지 1 - 일정 및 할 일 관리 페이지
__예시 페이지 2 - 데일리 리포트 페이지
__예시 페이지 3 - 새해 목표 & 분기별 계획 페이지
__예시 페이지 4 - 소비 일지 페이지
PART 04 노션 레벨 업!
_STEP 01 노션 AI 시대의 시작
__1 챗GPT보다 유용한 노션 AI
__2 노션 AI로 부스터 달기
__3 챗GPT랑 노션 함께 쓰는 방법
_STEP 02 알아두면 쓸모 있는 노션 꿀팁들
__1 링크 공유할 때 나만 불안한가요?
__2 기록과 복원으로 페이지 안전 관리 완료!
__3 내 페이지 누가 얼마나 봤을까?
__4 노션으로 가져오기 & 노션에서 내보내기
__5 페이지 사용자 지정과 잠금 기능
_STEP 03 내 노션에 날개 달기
__1 전 세계 노션 템플릿을 구경하고 싶다면
__2 노션을 웹사이트처럼 쓰려면 우피를 활용하세요
__3 웹 클리핑 기능으로 편하게 아카이빙합시다
__4 위젯으로 노꾸 업그레이드하기
__5 노션도 퍼스널 컬러 전성시대
__6 그래프와 차트도 뚝딱!
_STEP 04 캘린더의 끝판왕, 노션 캘린더
__1 노션 캘린더 시작하기
__2 노션 캘린더 5단계 기본 설정하기
__3 구글 캘린더와의 차이점
__4 노션 데이터베이스와 연동하기
__5 협업 일정을 잡는 첫 번째 방법: 가능 여부 공유
__6 협업 일정을 잡는 두 번째 방법: 빠른 회의
__7 메뉴표시줄에서도 일정 확인하기
__8 데이터베이스 보기와 필터로 일정 골라오기
Outro 나를 돕는 스마트 도구, 노션
Index
출판사 서평
노션계의 벽돌책 등장!
왜? 구석구석 숨어있는 꿀팁까지 세세하게 알려주고 싶어서!
노션, 기본만으로는 무언가 부족하다 느끼지는 않았나요? 기본 사용법만 간단하게 습득한 채 고급 활용법으로 완성된 템플릿을 해득 없이 따라 만들고 있지는 않나요? 따라 할 수 있다고 모두 내 것이 된 건 아닙니다. 이제, 쉽게 알려주는 소짱과 함께 기본부터 탄탄하게 기술적 레이어를 쌓아가며 튼튼하게 실력을 키워봅시다. 기술과 실습의 직접적인 연계와 바로 쓸 수 있는 페이지를 직접 만들어보는 과정이 당신의 자기주도적 삶에 노션을 끈기 있게 붙여줄 것입니다.
ㆍ PART 01 노션 시작하기
세팅 및 페이지 정리부터 기본 블록과 텍스트 블록을 잘 활용하는 한 끗 차이 점검
따라 만들기 》 셀프 인터뷰 페이지, 주간 회고 페이지, 일 경험 페이지
ㆍ PART 02 노션과 친해지기
따라 만들기 》 생일 파티 초대 페이지, 덕질 페이지, 프로젝트 페이지, 회의록 페이지
ㆍ PART 03 노션의 핵심, 데이터베이스
따라 만들기 》 일정 및 할 일 관리 페이지, 데일리 리포트 페이지, 새해 목표&분기별 계획 페이지, 소비 일지 페이지
ㆍ PART 04 노션 레벨 업!
내 노션에 날개를 달 타이밍, 대단한 확장성으로 노꾸(노션 꾸미기) 업그레이드!
‘링크 공유할 때 나만 불안한가?’, ‘내 페이지를 누가 봤을까?’ 등 궁금증 타개!
노션 AI는 물론, 노션에서 야심 차게 발표한 노션 캘린더까지 완벽하게 정복한다.
그럼 이상으로 노션 덕후의 놀라운 꿀팁 아카이브기본 사용법과 고급 활용법을 넘나드는 마스터 플랜 책소개 포스팅을 마치겠습니다.
노션 덕후의 놀라운 꿀팁 아카이브기본 사용법과 고급 활용법을 넘나드는 마스터 플랜 책소 포스팅은 제휴마케팅이 포함되어있습니다.
‘유튜브 크리에이터’, ‘쇼츠 크리에이터’를 시작하기 위해 알아야 할 모든 것이 담겨 있다. 먼저 유튜브 채널을 만들고 콘텐츠를 기획하고 촬영하고 편집하는 방법, 나아가 채널 성장을 위해 알아야 할 내용과 수익을 위한 애드센스 연결 방법까지! 유튜브를 처음 시작하려는 분들, 쇼츠를 처음 시작하는 분들을 위해 유튜브랩을 운영하고 있는 강민형 저자가 나섰다.
이 책에서는 동영상을 촬영·편집하는 방법뿐만 아니라, 저자가 수많은 강의를 통해 입증된 방법으로 채널 기획 구성안, 콘텐츠 기획 구성안 등 채널을 운영하고 지속하는 데 필요한 꿀팁들을 전수한다. 스마트폰과 이 책 한 권으로 유튜브와 쇼츠를 쉽고 재미있게 시작해보자.
저자(글) 유튜브랩(강민형)
인물정보
방송인> 유튜버
약14만 명의 구독자를 보유한 유튜브 전문 교육 채널‘유튜브랩’ 공동대표이며, 유튜브 전문가. ‘누구나 자신만의 가치를 알리는 영상 채널을 가질 수 있다‘는 비전을 품고 해마다 250건 이상의 콘텐츠 교육을 진행하고 있습니다.
現 · 유튜브랩 공동대표
· 세종사이버대학교 유튜버학과 교수
· Google 유튜브 컨트리뷰터
· 피크닉콘 총괄PD
· 1인미디어 콘텐츠 크리에이터 자격시험 출제위원
저서: · 그들은 어떻게 유튜브 스타가 되었는가 (2018)
· 유튜브 크리에이터 쉽게 시작하기 (2019)
· 유튜브 기록장 (2020)
· 당신의 유튜브를 컨설팅해드립니다 (2021)
· 유튜브 교과서 (2022)
강의: 대한민국육군, 중앙 교육 연수원, 국립 중앙도서관, 한국전파진흥협회, 삼성생명, LG U+, CJ도너스캠프, KT, YBM, 농협, 신한은행, 현대백화점, 경희대학교, 부산대학교, 부산외국어대학교, 한국외국어대학교 외 다수
강연: 국립과천과학관, 방송콘텐츠진흥재단, 한국언론진흥재단, 미디어강사연합회 외 다수
컨설팅: 경기도1인크리에이터 프로그램, 판교경기문화창조허브, 부천문화재단 외 다수
방송: Google Educator Group 교원 연수프로그램 유튜브 브런치, SBS 그것이 알고 싶다 외 다수
목차
PART 01 준비하기
CHAPTER 01 유튜브를 시작해 보자
- 바로 지금, 유튜브 시작하기 가장 적합한 시기
- 전문가가 아닌데 유튜브 시작해도 괜찮을까요?
- 전업 유튜버를 꿈꾸는 당신께
- 15초의 마법, 쇼츠를 노려라
CHAPTER 02 유튜브 채널 만들기
- 유튜브 시작하기 - 유튜브 콘텐츠 주제 정하기
- 채널이란 무엇인가? - 막연한 채널에 대해 시원하게 알아보기
- 채널 이름 정하기 - 유튜브 크리에이터가 되는 첫 번째, 유튜브 이름 정하기
- 채널 기획안 작성 - 한 장으로 정리하는 채널 기획
- 채널 개설하기 - 본격 크리에이터의 시작!
CHAPTER 03 프로필과 채널 배너 만들기
- 프로필 사진 만들기 - 유튜브에서 가장 많이 보이는 채널의 얼굴
** 저작권 침해 걱정 없이 안심하고 쓸 수 있는 폰트 확인하기
- 배너 이미지 만들기 - ‘잘 갖춰진 채널’의 인상을 주자!
PART 02 기획하기
CHAPTER 01 콘텐츠 및 소재 정하기
- 저작권 개념 - 아는 만큼 보이는 저작권의 세계
- 자주 하는 저작권 질문 TOP 10
- 시청자들에게 사랑받는 콘텐츠 소재 찾기
- 신선한 아이템을 발굴하는 3가지 방법
CHAPTER 02 콘텐츠 기획하기
- 끊임없이 콘텐츠를 만들 수 있는 프로그램 짜기
- 촬영보다 중요하다는 기획, 기획에서 조심할 점
- 제작시간을 확실하게 줄이는 동영상 콘텐츠 기획안 작성
- 핵심만 담아내는 쇼츠 콘텐츠 기획안 작성
** 계속해서 콘텐츠를 만들어 내는 방법
PART 03 촬영하기
CHAPTER 01 촬영 장비의 이해
- 기본적인 장비의 이해
- 초보 유튜버를 위한 장비 소개, 어떤 장비를 사야 할까?
** 스마트폰으로 동영상 콘텐츠 촬영하는 법
CHAPTER 02 촬영 기법의 이해
- 샷의 크기에 대한 이해
- 샷의 각도에 대한 이해
- 카메라 무빙에 따른 분류
CHAPTER 03 촬영하기
- 야외에서 소음 없이 촬영하는 법
- 매력적인 영상을 위하여! 야외 촬영 잘하는 꿀팁
** 스마트폰으로 쇼츠 콘텐츠 촬영하는 법
** 구독자를 늘리는 채널 예고편 만들기
PART 04 편집하기
CHAPTER 01 편집의 중요성
- 배경 음악의 중요성
- 영상 편집 용어 간단 정리
- 컷 편집 꼭 해야 하는 이유
- 영상 재밌게 편집하는 법
- 영상에 자막을 써야 하는 이유와 상황별 자막 사용법
CHAPTER 02 편집의 실전 편
- 편집을 하는 순서가 있을까?
- 블로 VLLO 시작하기 … 123
① 사용 중인 애플리케이션 빠져나오기 / ② VLLO 다운로드 / ③ 프로젝트 생성하기
- 블로 VLLO로 컷 편집하기
① 편집 화면 이해하기 / ② 영상 순서 바꾸기 / ③ 영상 앞부분 자르기 / ④ 영상 뒷부분 자르기 / ⑤ 영상 중간
부분 자르기
- 블로 VLLO로 영상 편집하기
① 화면 크기 바꾸기 / ② 전환 효과 넣기 / ③ 영상 소리 조절하기 / ④ 영상 속도 조절하기
이 책은 오픈소스 자바스크립트 라이브러리인 리액트를 처음 배우는 개발자를 위한 책이다. 먼저 웹 서비스를 만들기 위해 알아야 할 리액트의 필수 개념을 짚어 본다. 그리고 간단한 실습으로 리액트 사용법을 익힌 뒤 실무 밀착형 프로젝트(미니 블로그 만들기)를 진행하며 직접 기획부터 개발까지 경험해 본다. 리액트 핵심 개념을 기초부터 탄탄히 익히고 실제 업무에 도움을 줄 수 있는 프로젝트 진행을 통해 체계적으로 학습할 수 있도록 구성되었다.
작가정보
저자(글) 이인제
인물정보
컴퓨터공학자
어릴 적부터 컴퓨터와 프로그래밍에 관심이 많아 멋진 개발자가 되는 게 꿈이었습니다. 숭실대학교 컴퓨터학부를 조기 졸업하고 카이스트에서 전산학 석사 학위를 취득한 뒤 다양한 회사와 스타트업에서 경험을 쌓고 프리랜서 개발자로도 활동했습니다. 분야를 가리지 않고 항상 즐겁게 개발하려고 노력하고 있으며, 소프트웨어 교육 활동에 적극적으로 참여하고 있습니다. 온오프라인에서 다양한 강의를 하고 있고 이노베이션 아카데미의 멘토로 활동하고 있습니다. 현재는 1인 스타트업을 창업하여 제품 개발과 회사 운영에 힘쓰고 있습니다.
목차
0장 준비하기
0.1 HTML 살펴보기
0.2 CSS란 무엇인가?
0.3 자바스크립트
0.4 개발 환경 설정하기
0.5 마치며
1장 리액트 소개
1.1 리액트는 무엇인가?
1.2 리액트의 장점
1.3 리액트의 단점
1.4 마치며
2장 리액트 시작하기
2.1 HTML만으로 간단한 웹사이트 만들기
2.2 CSS를 사용하여 웹사이트 스타일링하기
2.3 웹사이트에 React.js 추가하기
2.4 create-react-app
2.5 마치며
3장 JSX 소개
3.1 JSX란?
3.2 JSX의 역할
3.3 JSX의 장점
3.4 JSX 사용법
3.5 JSX 코드 작성해 보기
3.6 마치며
4장 엘리먼트 렌더링
4.1 엘리먼트에 대해 알아보기
4.2 엘리먼트 렌더링하기
4.3 렌더링된 엘리먼트 업데이트하기
4.4 시계 만들기
4.5 마치며
5장 컴포넌트와 Props
5.1 컴포넌트에 대해 알아보기
5.2 Props에 대해 알아보기
5.3 컴포넌트 만들기
5.4 컴포넌트 합성
5.5 컴포넌트 추출
5.6 댓글 컴포넌트 만들기
5.7 마치며
6장 State와 생명주기
6.1 State
6.2 생명주기에 대해 알아보기
6.3 State와 생명주기 함수 사용하기
6.4 마치며
7장 훅
7.1 훅이란 무엇인가?
7.2 useState
7.3 useEffect
7.4 useMemo
7.5 useCallback
7.6 useRef
7.7 훅의 규칙
7.8 나만의 훅 만들기
7.9 훅을 사용한 컴포넌트 개발
7.10 마치며
8장 이벤트 핸들링
8.1 이벤트 처리하기
8.2 Arguments 전달하기
8.3 클릭 이벤트 처리하기
8.4 마치며
9장 조건부 렌더링
9.1 조건부 렌더링이란?
9.2 엘리먼트 변수
9.3 인라인 조건
9.4 컴포넌트 렌더링 막기
9.5 로그인 여부를 나타내는 툴바 만들기
9.6 마치며
10장 리스트와 키
10.1 리스트와 키란 무엇인가?
10.2 여러 개의 컴포넌트 렌더링하기
10.3 기본적인 리스트 컴포넌트
10.4 리스트의 키에 대해 알아보기
10.5 출석부 출력하기
10.6 마치며
11장 폼
11.1 폼이란 무엇인가?
11.2 제어 컴포넌트
11.3 textarea 태그
11.4 select 태그
11.5 File input 태그
11.6 여러 개의 입력 다루기
11.7 Input Null Value
11.8 사용자 정보 입력받기
11.9 마치며
12장 State 끌어올리기
12.1 Shared State
12.2 하위 컴포넌트에서 State 공유하기
12.3 섭씨온도와 화씨온도 표시하기
12.4 마치며
13장 합성 vs. 상속
13.1 합성에 대해 알아보기
13.2 상속에 대해 알아보기
13.3 Card 컴포넌트 만들기
13.4 마치며
14장 컨텍스트
14.1 컨텍스트란 무엇인가?
14.2 언제 컨텍스트를 사용해야 할까?
14.3 컨텍스트를 사용하기 전에 고려할 점
14.4 컨텍스트 API
14.5 여러 개의 컨텍스트 사용하기
14.6 useContext
14.7 컨텍스트를 사용하여 테마 변경 기능 만들기
14.8 마치며
15장 스타일링
15.1 CSS
15.2 styled-components
15.3 styled-components를 사용하여 스타일링해 보기
15.4 마치며
16장 미니 프로젝트_미니 블로그 만들기
16.1 미니 블로그 기획하기
16.2 프로젝트 생성하기
16.3 필요한 패키지 설치하기
16.4 주요 컴포넌트 구성하기
16.5 폴더 구성하기
16.6 UI 컴포넌트 구현하기
16.7 List 컴포넌트 구현하기
부록 리액트 18 소개
A.1 자동 배칭
A.2 트랜지션
A.3 서스펜스
A.4 클라이언트와 서버 렌더링 API 업데이트
A.5 새로운 Strict 모드 작동 방식
A.6 새로 추가된 훅들
추천사
이민규 ((주)엠케이랩스 대표 / StarUML 개발자)
리액트가 웹 프런트엔드 분야에서 사실상 하나의 표준으로 자리 잡으면서 배우고자 하는 사람
들이 많이 늘어나고 있습니다. 이 책은 처음 리액트를 배우려는 독자에게 매우 적합합니다. 처음부터 단계별로 따라 하다 보면 어느새 리액트를 자유자재로 활용할 수 있는 단계에 도달하게 될 것입니다. 리액트 세계에 입문하는 것을 주저하고 있다면 이 책을 통해 리액트를 시작해 보기 바랍니다.
김유민 (Take App 창업자 / 전 페이스북 엔지니어링 매니저)
리액트 개발을 시작하거나 다시 도전하는 독자에게 추천합니다. 개발 환경 설정부터 현업에서 쓸 수 있는 개발 팁 그리고 최신 트렌드까지 배울 수 있습니다. 리액트의 중요한 개념을 모두 다루고 있고 장별로 요점 정리가 잘 되어 있어서 코딩 인터뷰를 보러 가기 전에 빠르게 복습하기에도 좋을 것 같습니다. 다년간 현업에서의 경험을 기반으로 한 저자의 현실적인 조언과 내공이 돋보입니다.
장래영 (비햅틱스 소프트웨어 엔지니어)
어떤 기술을 잘 가르치면서 개발에도 능숙한 저자가 쓴 책을 찾기란 생각보다 쉽지 않습니다. 상용 서비스 개발, 오픈소스 프로젝트 활동, 강의, 멘토링 등 다양한 분야에서 활발하게 활동하고 있는 저자의 책이므로 리액트를 처음 시작하는 독자에게 좋은 지침이 될 것이라 믿어 의심치 않습니다.
장영재 (비바리퍼블리카 프런트엔드 엔지니어)
리액트를 이용해 프런트엔드 개발자로서 첫발을 내딛고자 하는 독자에게 추천하고 싶은 훌륭한 안내서입니다. 빠르게 리액트 개발을 시작할 수 있도록 많이 쓰지 않는 내용은 과감히 제외하고 컴포넌트와 State, 훅, 이벤트 핸들링 등 필수적으로 알아야 할 내용을 압축해서 설명합니다. 중간중간 독자가 궁금해할 부분도 따로 친절하게 알려줍니다. 또한 장마다 다양한 실습 예제와 깔끔하게 정리된 요약을 제공하여 앞서 배운 내용을 제대로 이해하고 있는지 확인할 수 있습니다. 리액트 개발의 문턱이 높게 느껴져 망설이고 있다면 이 책으로 도전해 보세요.
강지현 ((주)맘편한세상 공동 창업자 / 백엔드 엔지니어)
HTML, CSS, 자바스크립트와 같은 필수 지식을 거쳐 리액트가 무엇이고 어떻게 동작하는지, 왜 사용하는지를 쉽게 풀어 썼습니다. 또한 입문자에게는 다소 어렵게 느껴질 수 있는 조건부 렌더링이나 리스트 렌더링, 리액트 훅에 대한 부분도 매우 쉽게 설명하고 있습니다. 각 장은 개념을 익히는 부분과 실습으로 나누어져 있는데 앞에서 배운 내용이 잘 이해되지 않는다면 실습을 먼저 해 보면 감을 잡을 수 있을 것입니다. 전반적으로 부담 없이 따라갈 수 있어 리액트 개발을 처음 시작하는 독자에게 강력히 추천합니다.
이유번 ((주)딥네츄럴 디자인 디렉터)
비 개발자가 읽어도 쉽게 이해할 수 있는 예제와 친절한 설명이 돋보입니다. 특히 비 개발자에게
익숙하지 않은 개발 환경 구축 방법도 자세히 알려 줍니다. HTML과 CSS에 대한 배경지식을
어느 정도 가지고 있는 독자라면 이 책을 통해 리액트의 매력에 흠뻑 빠질 수 있을 것입니다.
또한 지금과는 다른 제품을 구상할 수 있는 기회도 얻을 수 있다고 생각합니다. 개발자와 함께
협업하는 디자이너 또는 기획자도 이 책을 보면 많은 도움을 얻을 수 있을 것입니다.
강경완 ((주)우아한형제들 안드로이드 개발자)
이 책은 간단하지만 실용적인 예제로 리액트를 쉽게 알려 줍니다. 친절한 기본 개념 설명에 더해 다양한 실습과 알찬 프로젝트도 담고 있어 재미있게 리액트 공부를 할 수 있습니다. 웹 개발 지식이 없더라도 차근차근 실습을 따라 하다 보면 자연스럽게 리액트의 역할을 이해할 수 있을 것입니다. 리액트를 처음 시작하는 개발자에게 단연 최고의 책이라고 생각합니다.
전웅 ((주)아씨오 소프트웨어 엔지니어)
이제 리액트는 웹은 물론 데스크톱과 모바일 앱 제작에도 쓰이는 강력한 라이브러리로 자리 잡았습니다. 하지만 빠르게 발전을 거듭해 온 만큼 리액트 관련 자료는 방대하고 파편화되어 있어 처음 접할 때 큰 어려움을 겪기 마련입니다. 이 책에는 긴 시간 리액트 프로젝트를 진행한 저자의 경험이 녹아 있으며, 리액트를 소화하기 위해 반드시 알아야 하는 기본 개념부터 실습 프로젝트까지 차곡차곡 담겨 있습니다. 물 흐르듯 이어지는 설명을 따라가다 보면 어느새 리액트를 소화하고, 그 매력에 빠진 자신을 발견할 수 있을 것입니다.
테슬라 주식, 빌보드 차트 등 16개의 현실 데이터와 115개의 예제로 판다스의 기본을 확실히 익히자!
이미 1만여 명의 독자가 선택한 《Do it! 데이터 분석을 위한 판다스》가 파이썬 3.11.X 버전과 판다스 2.X 버전에 맞춰 개정하였다. 기존 판보다 100쪽 이상 증보되어 더 자세하고 친절하다. 파이썬 기초를 뗐다면 이 책으로 판다스를 공부하기 어렵지 않다. 이 책은 판다스의 주요 용어, 원리와 개념은 물론, 넘파이, 맷플롯립이나 시본, 시계열 데이터 등 파이썬 데이터 분석의 기본기를 익힐 수 있다. 이와 더불어 과학, 경제, 종교, 엔터테인먼트, 의학, 사회 등 다양한 분야의 현실 데이터셋을 활용한 판다스와 데이터 분석 실습 예제 115개로 실무 감각을 키울 수 있다는 점도 특징이다.
작가정보
저자(글) 다니엘 첸
인물정보
프로그래머
(Daniel Y. Chen)
2013년부터 소프트웨어 카펜트리(Software Carpentry)에서 지금까지 데이터 분석 강사와 멘토링 활동을 하고 있습니다. 그뿐만 아니라 2016년부터는 매년 국제 파이썬 커뮤니티인 사이파이(SciPy)에서 판다스 강의를 진행하고 있습니다.
인물정보
번역가/통역사>영어 프로그래머
자연어 처리 연구를 진행하며 챗봇을 개발하는 평범한 개발자입니다. 새로운 분야나 지식을 접하고 공부하기를 좋아하고 학습과 지식 공유를 목표로 번역 활동을 하고 있습니다. 지금까지 《행동 데이터 분석》, 《판다스 인 액션》, 《자바 코딩 인터뷰 완벽 가이드》, 《엑셀, R, 파이썬으로 시작하는 데이터 분석》 등을 번역했습니다.
목차
01 판다스 실습 환경 준비하기
__01-1 아나콘다 설치하기
__01-2 판다스 실습 준비하기
__01-3 안녕? 주피터 노트북!
__01-4 파이썬 패키지 관리자 pip 알아보기
02 판다스 시작하기
__02-1 판다스가 왜 필요할까?
______ 데이터프레임과 시리즈
__02-2 데이터셋 불러오기
______ 데이터 분석은 데이터셋 불러오기부터
__02-3 데이터 추출하기
______ 열 데이터 추출하기
______ 행 데이터 추출하기
______ loc와 iloc로 데이터 추출하기
______ 행과 열 함께 지정하여 추출하기
__02-4 기초 통계 계산하기
______ 그룹화한 데이터의 평균 구하기
______ 그룹화한 데이터 개수 세기
__02-5 데이터를 그래프로 표현하려면?
03 판다스 자료구조 살펴보기
__03-1 나만의 데이터 만들기
______ 시리즈와 데이터프레임 만들기
__03-2 시리즈 다루기
______ 시리즈의 keys() 메서드
______ 시리즈와 ndarray
______ 시리즈와 불리언
______ 시리즈와 브로드캐스팅
__03-3 데이터프레임 다루기
______ 데이터프레임의 구성
______ 데이터프레임과 불리언 추출
______ 데이터프레임과 브로드캐스팅
__03-4 시리즈와 데이터프레임 데이터 변환하기
__03-5 데이터 저장하고 불러오기
______ 피클로 저장하고 불러오기
______ CSV와 TSV 파일로 저장하고 불러오기
______ 엑셀로 저장하기
______ 다양한 형식으로 저장하기
______ 다양한 데이터 저장 유형
04 그래프 그리기
__04-1 데이터 시각화란?
__04-2 matplotlib 라이브러리란?
______ 그림 영역과 하위 그래프 이해하기
______ 그래프 구성 요소 이해하기
__04-3 matplotlib으로 그래프 그리기
______ 일변량 그래프 그리기
______ 이변량 그래프 그리기
______ 다변량 그래프 그리기
__04-4 seaborn으로 그래프 그리기
______ 다양한 그래프 그려 보기
______ seaborn 스타일 알아보기
______ seaborn 공식 문서 읽는 방법
__04-5 판다스로 그래프 그리기
05 깔끔한 데이터 만들기
__05-1 깔끔한 데이터란?
__05-2 열 이름이 값일 때
______ 하나의 열만 남기기
______ 여러 개의 열 남기기
__05-3 열 이름에 변수가 여러 개일 때
______ 열 이름이 여러 가지 뜻일 때
______ 열 이름 분할하고 새로운 열로 할당하기
______ 한 번에 분할하고 합치기
__05-4 변수가 행과 열 모두에 있을 때
06 apply() 메서드로 함수 적용하기
__06-1 간단한 함수 만들기
__06-2 apply() 메서드 사용하기
______ 시리즈에 함수 적용하기
______ 데이터프레임에 함수 적용하기
__06-3 람다 함수 사용하기
__06-4 벡터화된 함수 사용하기
______ 넘파이와 넘바로 벡터화하기
07 데이터 결합하고 분해하기
__07-1 데이터 묶어 분석하기
__07-2 데이터 연결하기
______ 데이터프레임 살펴보기
______ 행 연결하기
______ 열 연결하기
______ 인덱스나 열 이름이 다른 데이터 연결하기
__07-3 분할된 데이터 연결하기
__07-4 여러 데이터셋 병합하기
__07-5 데이터 정규화하기
08 그룹으로 묶어 연산하기
__08-1 데이터 집계하기
______ groupby() 메서드와 함께 사용하는 집계 메서드
______ agg() 메서드와 groupby() 메서드 조합하기
______ 여러 개의 집계 함수 한 번에 사용하기
__08-2 데이터 변환하기
______ 표준점수 계산하기
______ 평균값으로 결측값 채우기
__08-3 원하는 데이터 걸러 내기
__08-4 그룹 객체 활용하기
______ 그룹 객체란?
__08-5 다중 인덱스 다루기
09 결측값 알아보기
__09-1 결측값이란?
__09-2 결측값은 왜 생길까?
______ 데이터를 불러올 때 생기는 결측값
______ 데이터를 연결할 때 생기는 결측값
______ 직접 입력한 결측값
______ 인덱스를 다시 설정할 때 생기는 결측값
__09-3 결측값 다루기
______ 결측값 처리하기
______ 결측값이 있는 데이터 계산하기
__09-4 판다스 내장 NA 결측값 살펴보기
10 자료형 더 알아보기
__10-1 자료형 살펴보기
__10-2 자료형 변환하기
__10-3 범주형 데이터 알아보기
______ 범주형 데이터 다루기
11 문자열 처리하기
__11-1 문자열 다루기
______ 인덱스로 문자열 추출하기
______ 슬라이싱 구문으로 마지막 문자 추출하기
__11-2 자주 사용하는 문자열 메서드
__11-3 문자열 메서드 더 알아보기
__11-4 문자열 포매팅 알아보기
__11-5 정규식으로 문자열 처리에 날개 달기
______ 정규식이란?
______ compile() 함수
__11-6 regex 라이브러리 활용하기
12 시계열 데이터 알아보기
__12-1 datetime 객체 활용하기
__12-2 datetime으로 변환하기
__12-3 시계열 데이터 불러오기
__12-4 시간 정보 추출하기
__12-5 시간 간격 계산하기
__12-6 datetime 객체의 메서드 활용하기
__12-7 주식 데이터 다루기
__12-8 시간별 데이터 추출하기
__12-9 시간 범위 다루기
______ 시간 범위의 주기 설정하기
__12-10 열 방향으로 값 옮기기
__12-11 시간 주기 변경하기
__12-12 시간대 다루기
__12-13 시계열 데이터 다루는 방법 더 알아보기
찾아보기
출판사 서평
이 책의 주요 내용
ㆍ 판다스로 깔끔한 데이터셋을 만들어 이를 결합, 그룹화, 병합, 분할 등 데이터 분석의 기초를 설명
ㆍ 정규화, 조인, 그룹화 등 SQL 개념을 이용하여 데이터를 다루는 방법을 소개
ㆍ 맷플롯립, 시본 등을 활용하여 데이터 시각화의 기본인 그래프를 그리는 방법을 안내
ㆍ 빌보드 차트, 에볼라 및 인플루엔자 데이터셋, 날씨 데이터셋, 은행 정보 데이터셋, 주식 데이터셋 등 현실 데이터를 활용한 판다스 예제로 실습 구성
수많은 파이썬 라이브러리 가운데 ‘판다스’를 왜 알아야 할까?
데이터 분석 전문가로 가는 출발점에 판다스가 있습니다!
파이썬은 데이터 분석 분야에서 가장 많이 활용되고 있습니다. 판다스는 데이터 분석 라이브러리 가운데 활용도가 가장 높은 파이썬 라이브러리입니다. 데이터 분석과 관련한 다른 파이썬 라이브러리가 계속 생겨나지만 거의 대부분 판다스에 의존하고 있으니 판다스는 기본 상식처럼 알아 두어야 합니다. 이러한 판다스를 대체할 도구는 당분간 찾기 어려울 것입니다.
R? 파이썬? 엑셀? 대체 뭘로 데이터 분석을 시작해야 돼?
판다스에 입문해 이 고민을 해결해 보세요!
R의 장점을 파이썬으로 가지고 올 수 있었던 것은 바로 판다스 덕분입니다. R에서 파이썬으로 분석 방법을 바꾸고 싶다면 판다스를 시작하세요! 또한 공공기관, 연구기관에서 사용하는 CSV, TSV 등 대량의 데이터 파일을 판다스로 다룰 수 있어 실무에서 의사결정을 할 때 기초 자료를 만드는 데 도움이 될 것입니다. 그동안 엑셀에서 규모가 큰 데이터를 분석할 때 컴퓨터가 버벅거린 경험이 있다면 파이썬 문법을 거의 몰라도 괜찮으니 이 책으로 판다스에 입문해 보세요. 이 책으로 공부하면 데이터 분석을 정말 쉽게 시작할 수 있습니다.
독학 교재로도, 스터디 교재로도 강추!
매일 2시간씩, 10일 공부해 판다스 기초를 정복해 보세요!
이 책으로 2시간씩 10일을 공부하면 파이썬을 거의 몰라도 판다스의 기초를 마스터할 수 있습니다. 특히 이 책은 원서에 없는 아나콘다, 주피터 노트북, pip과 같은 판다스 실습 환경을 구성하는 준비 과정을 따라 하기 쉽게 친절히 설명했습니다. 또한 날씨 관측 데이터, 주식 데이터, 빌보드 차트 등 다양한 데이터를 이용해 데이터 분석 작업 단위로 나눠 실습을 진행하므로 초보자도 겁먹지 않고 예제를 따라 할 수 있도록 구성했습니다. 파이썬이나 데이터 분석을 잘 안다면 5일 만에도 이 책을 정복할 수 있으니 도전해 보세요!
한 가지 더! 저자가 꼼꼼히 남긴 공식 문서를 꼭 활용하여 학습해 보세요
이 책 전반에 걸쳐 판다스 실습과 관련된 다양한 공식 문서 링크를 꼼꼼히 남겼습니다. 학습하다 궁금한 점이 있거나 판다스 함수나 메서드 등 자세한 내용을 알고 싶을 땐 반드시 이 링크를 따라 공식 문서를 확인해 보세요. 이 책과 공식 문서를 통해 판다스의 기본기를 갖추고 나서 데이터 분석 전문서나 강의에 도전한다면 데이터 분석 전문가로 거듭날 수 있어요!
그럼 이상으로 Do it! 데이터 분석을 위한 판다스 입문 책소개 포스팅을 마치겠습니다.
Do it! 데이터 분석을 위한 판다스 입문 책소개 포스팅은 제휴마케팅이 포함되어있습니다.