1장 AI는 코드를 어떻게 만들까
대화가 길어지면 왜 AI가 이상해질까?
대화가 길어지면 왜 AI가 이상해질까? — 토큰과 컨텍스트 윈도
AI가 기억하는 단위 — 토큰 소비 원리
후임 AI에게 하던 일을 물려 주는 법 — 대화창 분리 & 기록 전략
AI가 자신 있게 틀리는 이유
AI가 자신 있게 틀리는 이유 — 환각
없는 라이브러리, 없는 함수를 써서 생기는 에러 — 환각 패턴
환각을 줄이는 프롬프트 습관 — 검증 프롬프트
AI가 만들어 준 코드는 어떻게 검증할까 — 코드 검증
같은 프롬프트를 입력해도 왜 결과가 다를까?
같은 프롬프트를 입력해도 왜 결과가 다를까? — 프롬프트 민감성
잘 시키는 것도 기술이다 — 프롬프트 3가지 원칙
챗GPT, 클로드, 제미나이… AI마다 성격이 다른 이유 — 시스템 프롬프트
역할을 주면 결과가 달라지는 이유 — 역할 프롬핑
하나를 시키면 열을 하는 비법
공포의 까만 화면 — 터미널 그리고 운영체제
자꾸 엔터를 누르라는 이유 — 에이전트의 동작 원리
AI에게 새로운 도구를 주는 방식 — MCP
AI가 알아서 하게 두면 안 되는 3가지 — 결정, 민감 정보, 최종 확인
2장 일단 돌아가긴 하는데 이게 왜 되지?
내 컴퓨터에선 되는데 왜 다른 컴퓨터에선 안 될까?
내 컴퓨터에선 되는데 왜 다른 컴퓨터에선 안 될까? — 로컬과 배포
부탁하는 쪽과 들어주는 쪽 — 클라이언트와 서버
localhost:3000을 해부하면 알게 되는 놀라운 사실 — 포트
24시간 꺼지지 않는 남의 컴퓨터 — 서버의 실체
프런트엔드? 백엔드? 시키는 대로 했을 뿐인데 풀스택 개발한 건에 대하여
화면에 보이는 것 vs 뒤에서 돌아가는 것 — 프런트엔드와 백엔드
뭔가 안 되는데 왜 안 되는지 모를 때 — 에러 진단과 버그
프런트엔드 + 백엔드 = 풀스택
API가 뭔지는 모르지만 100번은 썼다
'카카오톡으로 회원 가입'을 누르면 벌어지는 일 — API
데이터를 쓰려면 돈을 내라고? — 무료 API와 유료 API
GET은 달라는 것, POST는 보내는 것 — HTTP 메서드
컴퓨터가 데이터를 주고받는 언어 — JSON
API에도 주소가 있다 — 엔드포인트
"404 Not Found"의 숨은 의미
404는 없음, 200은 성공 — HTTP 상태 코드
어제는 됐는데 오늘은 안 되는 이유 — CORS 에러
3장 배포했더니 되던 게 안 된다
내 컴퓨터 밖으로 보내는 순간
코드가 서버에 올라가기까지 — 빌드와 배포
서버에서는 무슨 일이 벌어질까? — 배포 그 이후
내 컴퓨터에선 되던 게 배포만 하면 안 되는 이유 — 환경 분리와 환경 변수
중간 저장이 중요한 이유
저장 말고 시간 여행 — 버전 관리
의미 있는 기록 — 커밋
안전하게 실험하는 법 — 브랜치
공개 저장소이자 협업 공간 — 깃허브
이 파일은 절대 깃허브에 올리면 안 됩니다
API 키를 코드에 붙여 넣으면 생기는 일 — 보안 사고
우리 프로젝트의 비밀 금고와 안전벨트 — .env/.gitignore 파일
코드가 공개되면 어떤 일이 생길까 — 보안 리스크
youtube.com을 입력하고 1초 동안 벌어지는 일들
youtube.com을 입력하고 1초 동안 벌어지는 일들 — DNS와 DNS 룩업
인터넷 세계의 집 주소 — IP 주소
자물쇠 아이콘이 의미하는 것 — HTTPS
버전 하나 바뀌었을 뿐인데
버전 하나 바뀌었을 뿐인데 — 패키지와 의존성 그리고 버전 불일치
패키지 배달부 — npm, pip
숫자 하나 바뀌었을 뿐인데 — 시맨틱 버저닝
프로젝트마다 다른 작업실 — 가상 환경
어제까지 됐는데 오늘은 왜 안 되지?
어제는 맞고 오늘은 틀린 이유 — 캐시와 패키지 업데이트
브라우저가 내 발자취를 기억하는 방법 — 캐시
나도 모르는 새 업데이트된 코드 — 패키지 업데이트
API가 하룻밤 사이 사라진다면? — API 지원 종료
4장 데이터는 어디에 있는 걸까?
데이터베이스랑 엑셀은 뭐가 다를까?
데이터는 어디에 있는 걸까? — 변수, 파일, 데이터베이스
데이터베이스는 어떻게 생겨먹은 걸까? — 데이터베이스
데이터베이스랑 엑셀은 뭐가 다를까? — 데이터베이스의 효능
모든 서비스의 근본 — CRUD
데이터베이스를 진두지휘하는 언어 — SQL
데이터베이스, 언제 무엇을 써야 할까?
데이터베이스, 언제 무엇을 써야 할까? — SQL vs NoSQL
백엔드를 통째로 빌려 쓰는 방법 — BaaS
SQL 번역가 — ORM
데이터베이스에서 무슨 일이 벌어지고 있을까?
데이터베이스에서 무슨 일이 벌어지고 있을까? — 외래 키와 기본 키
데이터가 어떻게 연결되어 있는지 한눈에 보는 법 — ERD
결제는 됐는데 주문이 안 된 이유 — 트랜잭션
데이터베이스 구조를 바꿔야 한다면? — 마이그레이션
5장 로그인은 어떻게 작동할까?
사이트는 내 비밀번호를 어떻게 지켜 주고 있을까?
사이트가 해킹당해도 비밀번호는 안전한 이유 — 해시 저장 원리
한 번 로그인했을 뿐인데 나를 기억하는 방법 — 세션과 토큰 그리고 쿠키
알게 모르게 구면인 사이 — JWT
3초만에 가입되는 '소셜 로그인'의 정체
3초만에 가입되는 '소셜 로그인'의 정체 — 소셜 로그인 3단계
구글이 망하면 안 되는 이유 — OAuth
구글은 뭘 믿고 우리에게 사용자 정보를 줄까? — 클라이언트 ID와 클라이언트 시크릿
출입증은 암행어사 마패가 아닙니다 — Redirect URI와 Scope
6장 더 잘 만들고 싶다면 여기까지
같은 기능인데 왜 속도가 다를까?
같은 기능인데 왜 속도가 다를까? — 성능 병목 원인
자주 쓰는 건 가까이 두기 — 캐시
본사가 멀면 데이터도 늦게 올까? — CDN
기다리는 동안 다른 일하기 — 동기와 비동기
'갑자기 사용자가 몰리면 어떡하지?'라는 행복한 상상과 현실
사용자가 급격히 몰려 들어올 때 벌어지는 일 — 트래픽과 서버 과부하
서비스가 아플 때 진단하는 법 — 로그
24시 연중무휴 서비스 상태를 감시하는 법 — 모니터링
되긴 되는데 왜 되는지 모르겠다
이게 왜 되지 — 테스트
코드가 점점 꼬여갈 때 — 기술 부채와 리팩터링