Python 기초부터 마스터까지 — 10화
계층과 테스트로 신뢰할 수 있는 Python 앱 완성하기
C++, 컴퓨터 과학, 운영체제, 알고리즘, DirectX, Unreal Engine을 공부하며 작성한 146개의 기록입니다.
계층과 테스트로 신뢰할 수 있는 Python 앱 완성하기
Row Pitch, SRV, Sampler와 sRGB를 하나의 흐름으로 연결하기
코드 포인트, 인코딩, 글자 수와 정규화 이해하기
크래시 주소에서 함수·스택·ABI·메모리 계약을 복원하는 순서
uop, 의존성, 캐시, 분기 예측을 벤치마크와 프로파일로 검증하기
XMM 스칼라 연산부터 packed SSE·AVX, 정렬과 기능 감지까지
포인터와 길이 계약, stride, sentinel, 경계 검사를 실제 루프로 추적하기
System V와 Windows x64의 인자, 보존 레지스터, 스택 정렬과 언와인드
cmp와 test, signed·unsigned 조건, branchless 코드의 의미와 함정
유효 주소 계산, 정렬, 스택의 성장 방향과 함수 프레임 추적하기
부분 레지스터, 데이터 크기, mov와 lea부터 기계어 인코딩까지
빌드, 테스트, Sanitizer와 프로파일링으로 마스터 캡스톤 완성하기
데이터 배치, 캐시와 pmr로 메모리 비용 설계하기
Coroutine의 중단, 재개, 수명과 취소 이해하기
부호 있는 정수의 비트 표현과 오버플로 이해하기
스레드, atomic과 메모리 모델로 동시성 다루기
값 범주와 perfect forwarding으로 전달 의미 보존하기
안전한 경계와 테스트로 Rust 설계 정리하기
계층과 테스트로 유지보수 가능한 앱 만들기
스레드, 프로세스, asyncio와 프로파일링 이해하기
테스트 가능한 게임 구조로 C# 정리하기
가상 주소, 물리 주소, TLB와 페이지 폴트의 흐름
Ranges와 Views로 지연 데이터 파이프라인 만들기
스레드, 채널, Mutex로 동시성 구성하기
World·View·Projection과 Depth Test로 3D 장면 만들기
constexpr와 consteval로 컴파일 시간 계산하기
JVM 메모리, GC, JIT의 역할 이해하기
GC, 값 형식, 할당 비용으로 성능 이해하기
명령어를 겹쳐 실행하고 다음 분기를 예상하는 이유
Concepts와 requires로 템플릿의 요구사항 표현하기
호출 프레임, 동적 할당, 객체 수명과 소유권 이해하기
예외가 발생해도 자원을 안전하게 관리하기
Box, Rc, Arc로 소유 구조 선택하기
스레드와 비동기 작업을 안전하게 실행하기
unittest와 디버깅으로 프로그램 동작 검증하기
push와 pop부터 컨테이너 선택 기준까지 한 번에 정리하기
binary32와 binary64, 반올림, NaN, 누적 오차까지 이해하기
async와 await로 비동기 작업 구성하기
CPU와 GPU가 겹쳐 일하도록 프레임별 자원 수명 관리하기
Result와 모듈, Cargo로 오류와 프로젝트 관리하기
예외와 try-with-resources로 실패 처리하기
이터레이터, 생성기, 컨텍스트 관리자로 데이터 흐름 다루기
예외와 IDisposable로 자원 수명 관리하기
컬렉션, 반복자, 클로저로 데이터 처리하기
람다, Stream, Optional로 데이터 흐름 만들기
Upload Heap에서 Default Heap으로 Mesh Data를 안전하게 복사하기
모듈, 가상 환경, 파일과 JSON으로 프로젝트 구성하기
컬렉션과 LINQ로 데이터 다루기
전처리부터 링크까지, x86-64 호출 규약과 stdio.h 전체 흐름
제네릭, trait, 수명으로 재사용 가능한 API 만들기
제네릭과 컬렉션을 목적에 맞게 선택하기
정점 형식, Shader와 고정 Pipeline State를 하나의 계약으로 묶기
복사와 이동은 무엇이 다를까?
클래스, dataclass, Protocol로 객체 설계하기
델리게이트, 이벤트, 람다로 동작 전달하기
구조체와 enum으로 유효한 상태 표현하기
상속과 인터페이스로 다형성 사용하기
Resource가 HLSL Register에 연결되는 경로 이해하기
함수, 타입 힌트, 예외로 코드의 계약 표현하기
상속, 인터페이스, 제네릭으로 역할 나누기
탭 볼륨부터 킬스위치까지 9개 기능과 한계 살펴보기
소유권, 빌림, 슬라이스를 코드로 연결하기
객체, 캡슐화, 불변 값 설계하기
Back Buffer 수명과 PRESENT·RENDER_TARGET 상태 전환 추적하기
템플릿으로 타입이 다른 중복 코드 줄이기
리스트, 튜플, 집합, 딕셔너리와 변경 가능성 이해하기
class, struct, record와 null 안전성 이해하기
변수, 타입, 함수, 패턴 매칭 익히기
변수, 조건문, 반복문, 메서드 연결하기
검은 화면 전에 검증 계층을 켜고 실행 장치 확인하기
조건문, 반복문, 컴프리헨션으로 흐름 만들기
조건문, 반복문, 메서드로 흐름 만들기
집합의 연결 여부를 빠르게 확인하고 합치기
로직은 C++, Widget 디자인은 WBP로 유지하기
빠른 CPU는 왜 메모리를 기다릴까?
공유 데이터는 왜 실행할 때마다 결과가 달라질까?
행 벡터, 열 벡터, Row-Major와 좌표계
명령어와 데이터의 메모리를 왜 분리할까?
소유권과 빌림으로 메모리를 안전하게 다루기
프로세스 안에서 실제로 코드를 실행하는 흐름
Prepared Statement와 최소 권한으로 방어하기
사용자 입력이 어떻게 SQL 명령어가 될까?
UI 입력과 UObject 수명을 명확하게 표현하기
JVM, 클래스, 컬렉션으로 시작하는 Java
실행 중인 프로그램은 어떤 자원을 가질까?
결과를 저장할까 현재 최선만 선택할까?
제곱거리, 정렬, 다수결로 예측하기
유저 프로그램은 어떻게 커널에 작업을 요청할까?
ProceduralMesh가 항상 필요한 것은 아니다
게임 구조로 정리하는 C++
간결한 문법과 리스트, 딕셔너리, 함수부터 시작하기
CPU는 왜 프로그램마다 권한을 다르게 줄까?
이동 비용과 예상 거리를 이용한 경로 탐색
CPU와 GPU를 정확한 시점에 동기화하기
운영체제는 하드웨어와 프로그램을 어떻게 연결할까?
C++ 정점 구조체가 Shader 입력으로 들어가는 과정
수치 데이터와 복잡한 기믹을 분리하는 방법
클래스, 프로퍼티, 컬렉션으로 시작하는 C#
3D 정점이 화면의 픽셀이 되는 과정
그래프를 넓게 탐색할까 깊게 탐색할까?
ProjectTB의 좌표, 지형, 이동 범위 분리
클라이언트와 서버가 데이터를 주고받는 방법
가까운 이웃을 제대로 정의하는 방법
Actor 대신 데이터와 FGuid를 저장하는 이유
람다와 표준 알고리즘 사용하기
정렬된 범위를 절반씩 줄여 값 찾기
현재 블로그가 글을 불러오고 보여주는 방식
게임 오브젝트의 Transform을 행렬로 표현하기
선택 정렬, 병합 정렬, 퀵 정렬의 차이
GameObject, Component, 생명주기부터 이해하기
ProjectDT의 UI 흐름을 중앙화한 방법
Command List와 Resource Barrier로 삼각형 그리기
NativeConstruct가 다시 호출될 때 생기는 문제
행과 열, 덧셈, 곱셈, 단위 행렬부터 이해하기
Device부터 Draw까지 삼각형 하나 그리기
입력, 상태 갱신, 렌더링으로 게임 루프 이해하기
가장 가까운 K개의 데이터로 결과 예측하기
BindWidget으로 동작과 디자인을 분리하기
입력 크기에 따라 연산량이 증가하는 방식
ProjectTB의 메뉴와 전투 구조로 보는 Unreal Framework
STL 컨테이너와 optional 선택하기
스마트 포인터로 소유권 표현하기
상속과 다형성, 객체 수명과 RAII
const, 참조, 포인터의 차이
구조체와 클래스는 언제 사용할까?
논리 게이트부터 운영체제까지 12개 장을 한 번에 연결하기
Jack 운영체제
Jack 컴파일러
Jack 구문 분석기
Jack 고급 언어
VM 번역기 II: 프로그램 흐름과 함수 호출
VM 번역기 I: 스택 연산과 메모리 세그먼트
Hack 어셈블러
Hack 컴퓨터 구조
Hack 기계어
순차 논리와 메모리
불 산술과 ALU
불 논리와 기본 게이트
왜 바이트 저장 순서를 반대로 둘까?
왜 같은 구조체인데 메모리 크기가 다를까?
어떠한 조건에서 컴파일러는 For문을 최적화 하는가?
변수는 어떤 자료형들이 있는가?
함수란 무엇인가? 2화
함수란 무엇인가? 1화
변수란 무엇인가?
왜 우리는 C++을 배워야 하는가?