웹 브라우저! 쌓고, 뜯고, 이해하라
하나씩 이해하는 웹의 작동 원리
크롬, 파이어폭스, 브레이브, 웨일 같은 웹 브라우저는 겉으로는 단순해 보이지만, 그 밑에는 무려 1천만 줄에 달하는 코드가 숨어 있습니다. 이 책은 웹 브라우저가 실제로 어떻게 동작하는지 그리고 그 구조와 원리가 웹 개발자와 소프트웨어 엔지니어들에게 어떤 영향을 미치는지 쉽고 명확하게 설명합니다.
유타 대학교 교수이자 웹 브라우저 연구자인 파벨 판체카, 구글 크롬의 렌더링 엔진 리더 크리스 해럴슨이 실제 브라우저를 설계한 풍부한 경험과 통찰을 이 책에 담았습니다. DNS와 HTTP 요청, HTML 파싱, 화면 렌더링, 인터랙션 그리고 최신 브라우저의 고급 기능까지! 각 장을 따라가며 파이썬으로 ‘나만의 브라우저’를 직접 만들어 보세요. 프로그래밍 경험이 많지 않아도 이 책을 따라 핵심 원리부터 이해한다면, 인터넷에서 웹페이지가 열리는 모든 과정을 직접 확인할 수 있습니다.
대상 독자
PROLOGUE 브라우저와 나
PART 1 페이지 로딩
CHAPTER 1 웹페이지 다운로드
_1.1 서버에 연결하기
_1.2 정보 요청하기
_1.3 서버의 응답
_1.4 파이썬을 통한 텔넷
_1.5 요청과 응답
_1.6 HTML 표시하기
_1.7 암호화된 연결
_1.8 요약
_1.9 연습 문제
CHAPTER 2 화면에 그리기
_2.1 창 만들기
_2.2 창에 그리기
_2.3 텍스트 배치하기
_2.4 텍스트 스크롤하기
_2.5 더 빠른 렌더링
_2.6 요약
_2.7 연습 문제
CHAPTER 3 텍스트 포맷팅하기
_3.1 폰트(서체)란?
_3.2 텍스트 측정하기
_3.3 한 단어씩 처리하기
_3.4 텍스트에 스타일 주기
_3.5 레이아웃 객체
_3.6 다양한 크기의 텍스트
_3.7 폰트 캐싱
_3.8 요약
_3.9 연습 문제
PART 2 문서 표시
CHAPTER 4 문서 트리 구축하기
_4.1 노드 트리
_4.2 트리 구축하기
_4.3 파서 디버깅하기
_4.4 셀프 클로징 태그
_4.5 노드 트리 사용하기
_4.6 페이지 오류 다루기
_4.7 요약
_4.8 연습 문제
CHAPTER 5 페이지 레이아웃
_5.1 레이아웃 트리
_5.2 블록 레이아웃
_5.3 크기와 위치
_5.4 재귀 페인팅
_5.5 배경 그리기
_5.6 요약
_5.7 연습 문제
CHAPTER 6 개발자 스타일 적용하기
_6.1 함수를 사용한 파싱
_6.2 style 어트리뷰트
_6.3 셀렉터
_6.4 스타일시트 적용하기
_6.5 캐스케이딩
_6.6 상속된 스타일
_6.7 폰트 프로퍼티
_6.8 요약
_6.9 연습 문제
CHAPTER 7 버튼과 링크 처리하기
_7.1 링크는 어디에 있는가?
_7.2 라인 레이아웃
_7.3 클릭 처리
_7.4 탭 브라우징
_7.5 브라우저 크롬
_7.6 히스토리 탐색
_7.7 URL 입력하기
_7.8 요약
_7.9 연습 문제
PART 3 애플리케이션 실행
CHAPTER 8 서버로 정보 보내기
_8.1 폼의 동작 방식
_8.2 위젯을 렌더링하기
_8.3 위젯과 상호작용하기
_8.4 폼을 제출하기
_8.5 웹 앱의 동작
_8.6 POST 요청 수신하기
_8.7 웹페이지 생성하기
_8.8 요약
_8.9 연습 문제
CHAPTER 9 대화형 스크립트 실행하기
_9.1 DukPy 설치하기
_9.2 자바스크립트 코드 실행하기
_9.3 함수 익스포트하기
_9.4 크래시 처리하기
_9.5 핸들 반환하기
_9.6 핸들 래핑
_9.7 이벤트 처리
_9.8 DOM 수정하기
_9.9 이벤트 기본값
_9.10 요약
_9.11 연습 문제
CHAPTER 10 사용자 데이터 보호하기
_10.1 쿠키
_10.2 로그인 시스템
_10.3 쿠키 구현하기
_10.4 교차 사이트 요청
_10.5 동일 출처 정책
_10.6 교차 사이트 요청 위조
_10.7 SameSite 쿠키
_10.8 교차 사이트 스크립팅
_10.9 콘텐츠 보안 정책
_10.10 요약
_10.11 연습 문제
PART 4 모던 브라우저 기능
CHAPTER 11 시각적 효과
_11.1 Skia와 SDL 설치하기
_11.2 SDL을 이용하여 윈도우 만들기
_11.3 서피스와 픽셀
_11.4 Skia를 이용한 래스터화
_11.5 브라우저 컴포지팅
_11.6 투명도
_11.7 블렌딩과 스태킹
_11.8 픽셀 합성
_11.9 클리핑과 마스킹
_11.10 서피스 사용 최적화하기
_11.11 요약
_11.12 연습 문제
CHAPTER 12 태스크와 스레드 스케줄링
_12.1 태스크와 태스크 큐
_12.2 타이머와 setTimeout
_12.3 수명이 긴 스레드
_12.4 렌더링 주기
_12.5 더티 비트를 통한 최적화
_12.6 프레임 애니메이션
_12.7 렌더링 프로파일링
_12.8 두 개의 스레드
_12.9 디스플레이 리스트 커밋하기
_12.10 스레드 프로파일링
_12.11 스레드 기반 스크롤
_12.12 스레드기반 스타일과 레이아웃
_12.13 요약
_12.14 연습 문제
CHAPTER 13 애니메이션과 컴포지팅
_13.1 자바스크립트 애니메이션
_13.2 GPU 가속
_13.3 컴포지팅
_13.4 컴포지팅 리프 노드
_13.5 CSS 트랜지션
_13.6 컴포지트 애니메이션
_13.7 컴포지팅 최적화
_13.8 오버랩과 트랜스폼
_13.9 요약
_13.10 연습 문제
CHAPTER 14 콘텐츠 접근성 향상
_14.1 접근성이란?
_14.2 확대/축소
_14.3 다크 모드
_14.4 다크 모드 커스터마이징
_14.5 키보드 내비게이션
_14.6 포커스 표시
_14.7 접근성 트리
_14.8 스크린 리더
_14.9 접근성 알림
_14.10 음성과 시각을 통한 상호작용
_14.11 요약
_14.12 연습 문제
CHAPTER 15 삽입된 콘텐츠 지원
_15.1 이미지
_15.2 임베디드 레이아웃
_15.3 이미지 크기 수정
_15.4 인터랙티브 위젯
_15.5 iframe 렌더링
_15.6 iframe 인풋 이벤트
_15.7 iframe 스크립트
_15.8 프레임간 통신
_15.9 격리와 타이밍
_15.10 요약
_15.11 연습 문제
CHAPTER 16 이전 결과 재사용
_16.1 콘텐츠 수정하기
_16.2 왜 무효화일까요?
_16.3 멱등성
_16.4 종속성
_16.5 보호된 필드
_16.6 재귀적 무효화
_16.7 width 보호하기
_16.8 인라인 엘리먼트를 위한 width
_16.9 레이아웃 필드 무효화
_16.10 인라인 레이아웃을 보호하기
_16.11 변화가 없는 업데이트 건너뛰기
_16.12 탐색 건너뛰기
_16.13 세분화한 스타일 무효화
_16.14 종속성 분석하기
_16.15 요약
_16.16 연습 문제
CHAPTER 17 이 책에서 다루지 않은 내용
_17.1 자바스크립트 실행
_17.2 텍스트 & 그래픽 렌더링
_17.3 커넥션 보안과 프라이버시
_17.4 네트워크 캐싱과 미디어
_17.5 더 멋진 레이아웃 모드
_17.6 브라우저 UI와 개발자 도구
_17.7 테스트
EPILOGUE 변화하는 환경
한 조각씩 파헤치는 웹 브라우저의 숨겨진 메커니즘
구글 크롬, 파이어폭스, 엣지... 지금 우리가 사용하는 웹 브라우저의 코드는 최소 1,000만 줄! 이 복잡하고 거대한 웹 브라우저의 '숨겨진 내부'를 직접 탐구할 기회가 찾아왔습니다. 이 책은 수많은 웹 개발자와 학생에게 여전히 미지의 영역으로 남아 있는 브라우저의 동작 원리를 명쾌하게 설명하는 독보적인 안내서입니다.
단순한 이론 학습에 그치지 않고, 파이썬 코드로 나만의 웹 브라우저를 직접 작성하며 밑바닥부터 살펴봅니다. 간단한 기능부터 시작해 한 조각씩 만들어 방대한 실제 웹 브라우저의 작동 원리를 꿰뚫어 볼 수 있습니다.
실제 웹 브라우저 개발에 참여한 저자와 역자의 안내를 따라, 여러분만의 브라우저를 만들어 보세요.
이 책의 내용
출고 예상일 : 2025-09-15 (출고 후 1~2일 이내 수령)
내부 사정으로 출시가 지연될 수 있습니다.
구매한 도서 중 예약도서가 포함되어 있을 경우, 예약도서 출고일에 함께 배송됩니다.