#computer-science
노트 51개
Frontend › JavaScript
숫자와 MathJavaScript의 숫자 타입 하나(double)로 생기는 일: 지수·진법 리터럴과 toString(base), 산술·나머지·거듭제곱 연산자, Math의 반올림·무작위 수, 문자열을 숫자로 바꾸는 방법의 차이, NaN이 생기는 경우와 Infinity 판별, 0과 -0을 가르는 Object.is, 0.1 + 0.2 오차와 돈은 정수 최소 단위로 다루는 원칙, 안전한 정수 범위를 넘는 BigInt, Intl.NumberFormat으로 표시하기.
Computer Science
컴퓨터 구조, 운영체제(프로세스·메모리·파일), 네트워크(TCP·HTTP), 데이터베이스, C와 기초 자료구조, 정보처리기사 개념까지 개발의 바탕이 되는 CS 지식 모음.
Computer Science › C Programming
포인터와 메모리C에서 주소와 포인터로 메모리를 다루는 법과 자주 걸리는 함정. 주소·역참조, 문자열의 실체, 동적 할당과 저장 기간, 스택과 힙, 배열과 포인터가 다른 경우, 읽기 전용 리터럴, const의 위치, 이중 포인터, 댕글링 포인터, memcpy와 memmove, malloc/free와 new/delete의 짝.
Computer Science › C Programming
C로 하는 2D 그래픽 기초SDL과 MiniLibX 같은 C 그래픽 라이브러리의 공통 구조(창, 이벤트 루프, 이미지 버퍼, 렌더러)와 픽셀을 직접 다루는 기법(ARGB 색 패킹, 브레젠험 직선, 선형 보간 그라데이션, 회전 변환, 등각 투영)을 정리한다. SDL2와 SDL3의 차이도 짚는다.
Computer Science › C Programming
C의 스코프와 링키지C에서 같은 이름이 무엇을 가리키는지는 스코프, 이름 공간, 링키지가 정한다. 블록·파일 스코프와 이름 가림, 태그·멤버·라벨·일반 식별자의 네 가지 이름 공간, 저장 기간, static으로 파일 밖 노출을 막는 내부 링키지, 기호 상수를 #define·enum·const로 정의하는 법을 정리한다.
Computer Science › C Programming
C의 역사와 표준C는 유닉스를 이식하기 위해 태어났고, K&R C에서 C89/C90, C99, C11, C17, C23으로 표준화되었다. 원형 없는 함수 호출과 암묵적 int 같은 옛 규칙이 memset(int c) 같은 흔적으로 남은 이유, 유닉스·BSD·리눅스와 POSIX의 관계를 정리한다.
Computer Science › C Programming
C의 정수 자료형과 형 변환C 표준은 자료형의 최소 크기만 정한다. 고정 폭 정수(stdint.h)와 size_t, 정수 승격과 일반 산술 변환, 부호 확장, 부호 있는 정수 오버플로가 미정의 동작인 이유, 부동소수점 비교와 고정소수점까지 C에서 숫자가 예상과 다르게 계산되는 지점을 정리한다.
Computer Science › Network
가입자망과 광역망: DSL·케이블·FTTH에서 SONET·ATM·MPLS까지집과 사무실을 통신사에 잇는 가입자망(전화 모뎀, ADSL·VDSL, 케이블 HFC, FTTx와 PON, 위성)과 통신사 사이를 잇는 광역망 기술(T1·E1, SONET/SDH, PPP, X.25 → 프레임 릴레이 → ATM), 그리고 지금 사업자 백본의 MPLS(레이블 push·swap·pop, LDP·RSVP-TE, 트래픽 엔지니어링, MPLS VPN)를 정리했다.
Computer Science › Network
무선 네트워크: Wi-Fi, 블루투스, 셀룰러 이동통신도달 거리로 나눈 무선망(WPAN·WLAN·WWAN)과 블루투스·지그비 같은 근거리 무선, IEEE 802.11 무선 LAN의 구조와 규격 변천, 충돌을 감지할 수 없는 무선의 CSMA/CA(숨은 터미널, IFS, 백오프, RTS/CTS와 NAV), 셀을 나눠 주파수를 재사용하는 셀룰러 구조와 핸드오프, 다중 접속(FDMA·TDMA·CDMA·OFDMA), 1G에서 5G까지 세대별 변화를 정리했다.
Computer Science › Network
IP QoS: 패킷을 차별해서 보내는 법최선형 IP 망에서 트래픽별로 대역폭·지연·지터·손실을 다르게 대우하는 QoS의 처리 단계(분류, 미터링·마킹, 폐기·큐잉, 스케줄링, 셰이핑)와 DSCP 코드, RED·WRED, 큐 스케줄링 방식, 플로우마다 예약하는 IntServ(RSVP)와 클래스로 묶는 DiffServ를 비교했다.
Computer Science › Network
VoIP 전화망: SIP, SDP, RTP인터넷 전화(VoIP)가 목소리를 전달하는 구조를 정리했다. PSTN과 VoIP·PBX·게이트웨이의 관계, 음성을 디지털로 바꾸는 표본화·양자화·부호화와 8kHz·64kbps의 근거, 통화를 여닫는 SIP와 미디어 조건을 협상하는 SDP, 음성을 실어 나르는 RTP 헤더, G.711(PCMU·PCMA) 코덱, 지터와 지터 버퍼, 전화망 서버를 구현할 때의 동시성 구조를 다룬다.
Computer Science › Operating System
구조적 동시성동시 작업의 수명을 코드 블록에 묶어, 블록을 빠져나갈 때 그 안에서 띄운 작업이 모두 끝나 있게 하는 원칙. go 문·스레드 생성·콜백처럼 흐름을 갈라놓고 돌아오지 않는 기본 요소는 goto처럼 지역적 추론을 깨뜨린다. nursery·TaskGroup·coroutineScope가 이를 대체해 예외 전파, 자원 정리, 취소를 자동으로 보장한다.
Computer Science › Operating System
동시성·병렬·비동기·논블로킹과 동시성 모델동시성(논리적으로 함께 진행)과 병렬(물리적으로 동시에 실행), 동기·비동기(완료를 누가 확인하나)와 블로킹·논블로킹(제어권을 바로 돌려받나)을 구분하고, 스레드보다 가벼운 실행 단위(파이버·코루틴·그린 스레드·가상 스레드), async/await와 CPS, Reactor·Proactor, 공유 메모리 대신 메시지를 쓰는 CSP·액터, Go·Tokio·BEAM 런타임의 스케줄링, GIL과 그 대안을 한 지도로 정리한다.
Computer Science › Operating System
운영체제 개요운영체제가 무엇이고 왜 필요한지, 커널 영역과 이중 모드·시스템 호출, 단일형·마이크로·하이브리드 커널의 구조 차이, 어떤 기준으로 분류되는지 정리한 입문 노트.
Computer Science
프로그래밍 언어와 객체 지향 설계언어 일반(계보·패러다임·실행 방식·의미론·타입 시스템), C++의 문법·템플릿·STL·예외·가상 함수·스마트 포인터·메모리 풀, Java·Kotlin·Python·Go의 언어 동작과 관용구, 추상 클래스·인터페이스·위임·DTO/VO·클린 코드·GoF 패턴·책임 주도 설계와 객체 지향 설계 사례 모음.
Computer Science › Programming Languages
객체 지향 설계 면접: 풀이 순서와 반복되는 설계 부품주차장·도서관 같은 시스템을 클래스와 관계로 설계하는 객체 지향 설계(OOD) 면접의 풀이 순서(요구 사항 → 유스케이스 → 클래스 → 활동·시퀀스 → 코드 골격 → 동시성), 17개 사례에 되풀이해 나오는 설계 부품(계정과 사람 분리, 정의와 인스턴스 분리, 상태 enum, Search 인터페이스와 색인, 알림·결제·로그·청구서), 사례별 디자인 패턴 지도와 SOLID, 피해야 할 설계, 자주 받는 질문과 공부 순서를 정리한다.
Computer Science › Programming Languages
객체 지향 설계 사례: 예약·대여 시스템객체 지향 설계 면접의 예약·대여 계열 여섯 사례(도서관, 영화 예매, 항공, 호텔, 식당, 렌터카)를 요구 사항, 액터, 핵심 클래스와 enum, 핵심 흐름으로 정리한다. 검색 → 예약 → 결제 → 알림 → 취소·환불의 공통 골격, 대출 한도 5권·10일과 연체료, 회차별 좌석(ShowSeat·FlightSeat)과 SERIALIZABLE 트랜잭션, 24시간 전 취소 전액 환불, 좌석별 식사 주문, 반납 지점이 다른 렌터카와 부가 서비스 같은 사례별 차이를 다룬다.
Computer Science › Programming Languages
객체 지향 설계 사례: 주차장·ATM과 카드·보드 게임객체 지향 설계 면접의 시설·장치와 게임 계열 네 사례(다층 주차장, ATM, 블랙잭과 카드 덱, 체스)를 요구 사항, 액터, 핵심 클래스와 enum, 핵심 흐름으로 정리한다. 차종별 주차 자리 배정 규칙과 싱글턴·락으로 지키는 티켓 발급, 시간대별 요금, ATM의 하드웨어 부품 클래스와 거래 커맨드 계층·잔액 조회 시퀀스, 블랙잭의 소프트·하드 합계와 보험·스플릿·더블 규칙, 체스 말별 이동 규칙과 자기 킹을 노출하는 수를 막는 검증을 다룬다.
Computer Science › Programming Languages
객체 지향 설계 사례: 커머스·커뮤니티·플랫폼객체 지향 설계 면접의 플랫폼 계열 일곱 사례(아마존 쇼핑몰, Stack Overflow, 온라인 증권, LinkedIn, Facebook, Cricinfo, Uber)를 요구 사항, 액터, 핵심 클래스와 enum, 흐름으로 정리한다. 장바구니·주문·배송 로그와 결제 시퀀스, 평판·현상금·태그와 질문 종료 사유, 시장가·지정가·스톱 주문과 부분 체결·주식 묶음·주문 유효 기간, 프로필·연결 요청·검색 색인과 2단계 BFS 친구 추천, 경기 → 이닝 → 오버 → 공 계층, 기사 매칭과 거리·시간 요금 계산을 다룬다.
Computer Science › Programming Languages
객체 지향의 본질: 메시징객체 지향이라는 말을 만든 앨런 케이의 관점에서 OOP의 본질을 메시징·캡슐화·늦은 바인딩 세 가지로 정리한다. 클래스와 상속은 C++·Java가 대중화한 구현 방식일 뿐 필수 조건이 아니며, 핵심은 상태를 숨긴 독립 개체들이 메시지로 협력하는 구조다.
Computer Science › Programming Languages
추상 클래스와 인터페이스인스턴스를 만들 수 없는 추상 클래스와, 구현할 행동의 계약만 정하는 인터페이스를 Java 기준으로 비교한다. 추상 클래스는 상태와 공통 구현을 물려주는 'is-a' 관계, 인터페이스는 여러 개를 붙일 수 있는 'can-do' 역할이며, Java 8 이후 디폴트 메서드로 경계가 흐려졌어도 상태를 가질 수 있느냐가 결정적 차이다.
Computer Science › Programming Languages
타입 시스템: 검사, 추론, 다형성, 변성, 건전성타입 시스템이 프로그램의 어떤 오류를 언제 막는지 정리한다. 정적·동적 검사와 그 한계, 타입 판단과 추론 규칙, 곱·합·함수·재귀 타입과 Option·Result, 제약 생성과 단일화로 하는 타입 추론, 매개변수·부분형·임시 다형성(정적·동적 다형성), 명목적·구조적 타입과 덕 타이핑, 공변·반공변·무공변, 패턴 매칭의 완전성 검사, 진행과 보존으로 보는 타입 건전성, 의존 타입과 선형·아핀 타입.
Computer Science › Programming Languages
프로그래밍 언어 의미론: 구문, 바인딩, 람다 계산, 평가 전략프로그래밍 언어 이론의 기초 개념을 정리한다. 구문과 의미론, 구체 구문과 AST, 작은·큰 단계 연산 의미론과 표시·공리적 의미론, 자유·바인딩 변수와 렉시컬·동적 스코프, 클로저의 환경, 람다 계산의 알파 변환·베타 축약과 변수 포획, 값·이름·필요에 의한 호출과 참조·공유에 의한 호출, 환경과 저장소와 별칭, 연속과 CPS, 프로그램 동치와 Hoare 논리, 위생적 매크로, 컴파일·해석이 구현의 성질인 이유, 의미를 보존하는 최적화.
Computer Science › Programming Languages
프로그래밍 언어의 계보와 선택기계어·어셈블리에서 고급 언어까지 세대 구분, 1950년대 Fortran·LISP부터 2010년대 Rust·Go·Kotlin·Swift·TypeScript까지 언어가 어떤 문제를 풀려고 이어져 왔는지, C++가 여전히 쓰이는 분야, 언어별 에너지 효율 연구의 결론을 정리한다.
Computer Science › Programming Languages
프로그래밍 패러다임명령형·선언형·객체 지향·함수형·반응형·관점 지향·제네릭·동시성 프로그래밍이 각각 무엇을 중심에 두고 코드를 짜는지 비교한다. 패러다임을 레코드·클로저·동시성·이름 붙은 상태 같은 개념의 묶음으로 보는 관점, 관찰 가능한 비결정성과 상태 표현력이라는 두 축, 새 개념이 필요하다는 신호인 창조적 확장 원칙, goto를 없앤 구조적 프로그래밍, 명령형·함수형·객체 지향의 차이와 객체 지향의 네 기둥(추상화, 캡슐화, 상속, 다형성)과 추상화·캡슐화·정보 은닉의 구분, is-a·has-a 관계를 정리한다. 함수형의 순수 함수·부수 효과·참조 투명성과 순수 함수가 스레드 안전한 이유, 클래스와 객체 지향이 같은 말이 아닌 이유도 다룬다.
Computer Science › Programming Languages
프로그램이 실행되기까지: 컴파일, 바이트코드, 인터프리터, GC소스 코드가 CPU에서 돌기까지의 세 갈래(네이티브 컴파일, 바이트코드 + VM·JIT, 인터프리터)와, 운영체제가 실행 파일을 띄워 종료하기까지의 단계, 가비지 컬렉션이 관리하는 영역과 추적·참조 카운팅의 비교, 순환 참조와 retain cycle, GC의 장단점과 Java·Python·Go의 방식, 브라우저에서 네이티브 코드를 돌리는 WebAssembly를 정리한다.
Computer Science › Programming Languages
C++ 기초: 문법, 참조자, 클래스, 복사와 이동, 오버로딩C++ 프로그램의 구조, 초기화 문법과 L·R-value, 입출력 스트림, 헤더와 네임스페이스, 저장 지정자(static·extern·mutable), switch의 fallthrough, 포인터와 참조자의 차이, 그리고 클래스의 접근 지정·friend·this·생성자 종류·초기화 리스트·static 멤버·소멸자와 RAII·private 생성자와 소멸자, 복사 생성자와 복사 대입·얕은 복사와 깊은 복사·이동·3·5·0의 규칙, 함수 오버로딩과 연산자 오버로딩, explicit 형 변환을 정리한다. 참조자는 null이 없는 별명이고, 자원은 소멸자에 묶으며, 인자 하나짜리 생성자에는 기본으로 explicit을 붙인다.
Computer Science › Programming Languages
C++ 상속과 가상 함수: 접근 지정, 생성·소멸 순서, vtable, 슬라이싱, 다중 상속C++ 상속의 다섯 가지 형태(단일·다중·다단계·계층·혼합), protected와 상속 방식(public·protected·private)이 접근 수준을 어떻게 바꾸는지, 기반에서 파생으로 생성되고 역순으로 소멸되는 순서, 가상 함수가 vtable과 vptr로 호출 대상을 고르는 원리와 비가상 함수의 이름 가림, 가상 생성자와 static 가상 함수가 없는 이유, 생성자·소멸자 안의 가상 호출과 pure virtual call, 가상 소멸자, 순수 가상 함수와 추상 클래스, 객체 슬라이싱, 다중 상속의 생성 순서와 다이아몬드 문제·가상 상속을 정리한다.
Computer Science › Programming Languages
C++ 스마트 포인터: unique_ptr, shared_ptr, weak_ptr힙 객체의 소유권을 RAII 객체로 표현하는 C++ 스마트 포인터를 정리한다. 단독 소유인 unique_ptr(이동만 가능, 원시 포인터와 같은 크기), 참조 카운트로 공유하는 shared_ptr(제어 블록, make_shared, 원자적 카운트), 순환 참조를 끊는 비소유 weak_ptr(lock), C++17에서 제거된 auto_ptr의 문제, 함수 인자로 넘기는 규칙을 다룬다. 기본은 unique_ptr이고 소유가 정말 여럿일 때만 shared_ptr을 쓴다.
Computer Science › Programming Languages
C++ 예외 처리의 내부 동작C++의 throw가 실제로 하는 일을 정리한다. 예외 객체는 힙에 할당되어 참조 카운트로 해제되고, 스택 되감기는 컴파일러가 만든 테이블(.eh_frame, LSDA)을 보고 함수와 call site를 찾아 소멸자를 부른다. 현대 컴파일러의 zero-cost 방식은 try 자체에는 비용이 없지만 throw가 매우 비싸므로, 예외는 진짜 예외 상황에만 쓰고 일상적인 실패는 오류 코드나 std::expected로 돌려준다.
Computer Science › Programming Languages
C++ 템플릿타입을 매개변수로 받아 함수와 클래스를 찍어 내는 C++ 템플릿을 정리한다. 함수·클래스 템플릿, 기본 템플릿 인자와 비타입 인자, 특수화, 템플릿 재귀와 가변 인자 템플릿까지 다루며, 템플릿은 컴파일 시점에 타입별 코드를 생성하는 정적 다형성이라는 점이 핵심이다.
Computer Science › Programming Languages
GoF 디자인 패턴객체 지향 설계에서 반복되는 문제의 검증된 해법인 GoF 디자인 패턴을 생성·구조·행위 세 갈래로 나눠, 패턴마다 푸는 문제와 한 줄 비유로 정리한다. 패턴은 어휘이자 도구이며, 필요 없는 곳에 쓰면 오히려 복잡도를 늘린다.
Computer Science › Programming Languages
JVM 내부 구조: 실행 엔진, 클래스 로딩, 메모리 영역, GCJVM의 구성 요소(클래스로더·런타임 데이터 영역·실행 엔진)와 계층형 JIT, javac가 만든 바이트코드가 클래스 로딩(로딩·링크·초기화, 부모 위임)을 거쳐 실행되는 과정, 스택과 힙의 역할, 세대별 GC와 Serial·Parallel·G1·ZGC·Shenandoah 비교, GC 로그·힙 덤프로 메모리 문제를 진단하는 방법, GraalVM Native Image와 AOT 캐시를 정리한다.
Computer Science
개발자가 빠지는 함정 모음CSS·유니코드·부동소수점·시간·SQL·동시성·React·Git·네트워크 등에서 직관과 다르게 동작해 버그를 만드는 지점을 분야별로 묶고, 이름·주소·전화번호·이메일 같은 현실 데이터에 대한 착각(Falsehoods)을 덧붙였다. 공통 교훈은 '기본값과 경계를 믿지 말고, 표현과 비교의 기준을 명시하라'다.
Computer Science
그래픽 사용자 인터페이스: WIMP, 메타포, 이벤트 기반 프로그래밍, GUI 툴킷명령을 기억해 입력하는 CLI와 가능한 동작을 화면에 보여 주는 GUI의 차이, 데스크톱 GUI의 공통 구조인 WIMP(창·아이콘·메뉴·포인터)와 데스크톱 메타포, 재사용 부품인 위젯, GUI 프로그램의 실행 모델인 이벤트 기반 프로그래밍, WYSIWYG를 정리하고, Java Swing을 예로 GUI 툴킷의 컴포넌트 트리·레이아웃 관리자·리스너(옵저버)·UI 스레드 하나만 화면을 바꾸는 EDT 규칙을 다룬다.
Computer Science
달력과 시간에 대한 개발자의 착각하루는 24시간, 1년은 12개월, 시간대는 정시 단위, 날짜는 빠짐없이 이어진다는 가정이 모두 틀리는 사례를 날·주, 달력 체계, 윤년·연도, 시간대, 서머타임으로 묶고, 윤초와 여러 시간 표현(UTC·TAI·GPS 시간·Unix 시간·TrueTime), 리프 스미어를 덧붙였다. 결론은 직접 계산하지 말고 검증된 날짜 라이브러리와 IANA tz 데이터에 맡기라는 것이다.
Computer Science
데이터 압축: 무손실과 손실데이터를 더 적은 비트로 표현하는 압축의 두 갈래를 정리한다. 무손실 압축은 반복을 줄이는 런 렝스 부호화, 반복 구간을 참조로 바꾸는 사전 방식(LZ 계열), 자주 나오는 기호에 짧은 부호를 주는 허프만 부호화로 만들고, 손실 압축은 사람의 지각이 둔한 정보를 버리는 지각 부호화다. 동영상은 프레임 사이의 중복까지 없앤다.
Computer Science
디지털 오디오 기초: 표본화부터 입체 음향까지소리를 주파수·진폭·음색으로 나누고, 아날로그 소리가 표본화·양자화·부호화를 거쳐 디지털이 되는 과정, 나이퀴스트 정리와 파일 크기 계산, PCM·ADPCM·MP3 같은 부호화와 파일 포맷, MIDI, 서라운드와 HRTF 기반 입체 음향을 정리한다.
Computer Science
베지어 곡선베지어 곡선은 제어점 몇 개로 매끄러운 곡선을 정의하는 방법이다. 두 점 사이 선형 보간을 겹겹이 반복하는 드 카스텔조 알고리즘으로 1차(직선)·2차·3차 곡선 식과 행렬 표현을 유도하고, 펜 툴·SVG·CSS·폰트에서 어떻게 쓰이는지 정리한다.
Computer Science
변환 행렬: 이동·크기·회전과 동차 좌표그래픽스에서 물체를 옮기고 키우고 돌리는 일은 모두 행렬 곱이다. 좌표 끝에 1을 붙이는 동차 좌표로 이동까지 행렬 하나에 담고, 임의의 점·축을 기준으로 한 변환은 '원점으로 옮기고 → 변환하고 → 되돌리는' 합성으로 만든다. 2D·3D 변환 행렬과 곱하는 순서의 의미를 정리한다.
Computer Science
소프트웨어 복잡성: 본질적 복잡성과 우발적 복잡성큰 소프트웨어를 만들기 어려운 근본 원인은 이해하기 어렵다는 것, 곧 복잡성이다. 문제 자체에 있는 본질적 복잡성과 도구·설계가 덧붙인 우발적 복잡성을 나누고, 복잡성의 주원인인 상태·제어 흐름·코드 양, 「단순함(simple)」과 「쉬움(easy)」의 차이와 얽힘(complect), 피하고(avoid) 분리하라(separate)는 처방을 정리한다.
Computer Science
소프트웨어 비대화하드웨어가 빨라진 만큼 소프트웨어가 느려지고 커져서 사용자가 체감하는 속도는 그대로인 현상. 「개발자 시간이 더 비싸다」는 논리로 쌓인 의존성·계층·임시방편이 원인이다. 효율을 기본값으로 두고, 의존성을 아끼고, 증상이 아니라 원인을 고치고, 재현 가능하게 만든다.
Computer Science
양자 컴퓨터의 원리: 큐비트, 양자 알고리즘, 양자 게이트양자 컴퓨터는 중첩된 큐비트를 쓰지만 모든 답을 한꺼번에 확인하지는 못한다. 핵심은 확률 진폭의 간섭으로 정답이 관측될 확률을 키우는 양자 알고리즘이다. 큐비트, 블로흐 구면과 X·H·CNOT 게이트, 그로버·쇼어 알고리즘, 암호에 미치는 영향과 흔한 오해를 정리했다.
Computer Science
양자역학 기초: 이중 슬릿, 중첩, 얽힘양자 컴퓨터를 이해하는 데 필요한 최소한의 양자역학. 이중 슬릿 실험이 보여 준 파동-입자 이중성, 관측하면 하나로 정해지는 양자 중첩, 거리와 무관하게 상관된 양자 얽힘, 그리고 양자역학에 대한 흔한 오해를 정리했다.
Computer Science
컴퓨터 그래픽스 렌더링 기초: 프레임버퍼에서 3D 래스터화까지화면이 메모리의 어떤 내용을 비추는지(래스터 스캔과 벡터 스캔, 텍스트 모드, 프레임버퍼)에서 시작해, 3D 장면을 2D 픽셀로 바꾸는 래스터화 렌더링의 단계(투영, 삼각형 메시, 스캔라인 채우기, 안티앨리어싱, 화가 알고리즘과 Z 버퍼, 후면 컬링, 플랫·고러드·퐁 셰이딩, 텍스처 매핑)와 GPU가 이 일을 병렬로 하는 이유를 정리한다.
Computer Science
컴퓨터의 역사: 무엇이 무엇을 대체했나주판·기계식 계산기에서 범용 기계의 구상, 릴레이→진공관→트랜지스터→집적회로로 이어진 스위치의 세대교체, 무어의 법칙과 2026년의 미세화 한계, 프로그램을 넣는 수단의 변천, 튜링 머신과 정지 문제, 개인용 컴퓨터가 보급된 조건을 「앞 단계의 어떤 병목을 풀었나」로 정리한다.
Computer Science
피드백 제어와 PID 제어기: 로봇이 목표값에 닿는 법로봇은 컴퓨터 제어로 물리 세계에서 일련의 동작을 자동으로 하는 기계다. 센서 → 오차 → 제어기 → 구동기로 도는 음의 피드백 루프, 무거운 물체가 목표를 지나쳐 진동하는 오버슈트, 현재·과거·미래의 오차를 비례·적분·미분 항으로 더하는 PID 제어기, 제어 루프 위에서 목표값을 정하는 상위 계획, 사람에게 쉬운 일이 로봇에게 어려운 모라벡의 역설을 정리한다.
Algorithm › Math
푸리에 변환신호를 여러 주파수의 사인·코사인 성분의 합으로 분해해 시간·공간 영역을 주파수 영역으로 바꾸는 변환. 디지털 신호에는 이산 푸리에 변환(DFT)을 쓰고 FFT로 O(n log n)에 계산한다. 크기(스펙트럼)는 성분의 세기, 위상은 위치 정보를 담으며, 주파수 영역에서 필터링한 뒤 역변환한다.
Tools › Git
Git의 내부 구조: 객체와 인덱스.git 폴더 안의 objects(blob·tree·commit)와 index가 add·commit 때 어떻게 만들어지는지, 내용 기반 해시(체크섬)로 데이터를 관리하고 변경분이 아닌 스냅숏을 저장하는 원리.
Career
개발 분야별 추천 도서CS 기초, 알고리즘, 설계·코드 품질, DevOps·SRE, 프론트엔드·UX, 언어·도구, 일하는 방식·커리어까지 분야별 개발 서적과 각 분야의 입문 경로, 그리고 분산 시스템을 바꾼 고전 논문.
Life & Learning › Study Abroad
비전공자의 미국 CS 석사 준비컴퓨터공학을 전공하지 않은 사람이 미국 CS 석사에 지원하는 방법을 정리했다. 입학처가 보는 선수 과목(자료구조·알고리즘·이산수학이 최소선), 한국에서 학점을 만드는 경로(방송대 편입, 대학 비학위 과정, MOOC), ML 전공을 위한 수학 독학 자료, 비전공자 전용 과정인 Northeastern Align MS in CS를 비교한다.