Welcome!
A passion project is a personal project that someone undertakes out of a strong interest or curiosity in a particular topic, idea, or skill. It is usually a self-directed project that is not tied to any specific academic or professional requirement.
Portfolio.
Blogs.
오늘 발행된 글 A* 2026년 4월 8일 8분 읽기
내비게이션 앱으로 목적지까지의 경로를 검색한다고 하자.
Address Resolution Protocol 2026년 4월 8일 4분 읽기
OSI 모델의 관점에서 네트워크 통신은 다음과 같은 형태로 이루어져 있다.
Agile Software Developement 2026년 4월 8일 4분 읽기
만들고자 하는 소프트웨어의 규모가 커질수록 제일 어려운 것은 바로 고객에게 신뢰를 주는 일인데, 이를 이해하기 위해 잠시 고객의 입장에서 생각해보자.
AWS VPC 2026년 4월 8일 6분 읽기
초기 AWS에서는 모든 사용자의 인스턴스가 하나의 평면적 네트워크를 공유하는 EC2-Classic 모델을 사용했다.
B+ Tree 2026년 4월 8일 17분 읽기
데이터베이스에서 이루어지는 모든 작업은 접근Access 기반이다.
Best-First Search 2026년 4월 8일 3분 읽기
그래프 탐색 알고리즘은 어떤 노드를 먼저 확장할지 결정해야 한다.
Boyce-Codd Normal Form 2026년 4월 8일 6분 읽기
Normalization에서 살펴본 3NF의 조건을 다시 정리하면 다음과 같다.
Breadth-First Search 2026년 4월 8일 4분 읽기
BFS의 동작 원리는 단순하다.
C 프로그램을 만드는 과정 2026년 4월 8일 4분 읽기
우리는 프로그램을 통해 컴퓨터와 소통한다.
Capability Maturity Model Integration 2026년 4월 8일 16분 읽기
CMMI는 미국 카네기 멜론 대학의 부설 연구개발 센터인 소프트웨어 공학 연구소Software Engineering Institute, SEI에서 개발한 프로세스 표준 모델이다.
Completely Fair Scheduler 2026년 4월 8일 7분 읽기
스케줄러의 근본적인 과제는 한정된 CPU 시간을 여러 태스크에 배분하는 것이다.
Computational Thinking 2026년 4월 8일 1분 읽기
Computational Thinking을 한마디로 정의하자면 컴퓨터 입장에서 생각하기다.
Configuration Management 2026년 4월 8일 7분 읽기
소프트웨어 형상 관리Software Configuration Management, SCM는 소프트웨어 프로세스 전반에 걸쳐 적용되는 우산 활동umbrella activity이다.
Container 2026년 4월 8일 12분 읽기
컨테이너container란 호스트 OS의 커널을 공유하면서, 파일 시스템·네트워크·프로세스 ID 등을 격리하여 독립된 실행 환경을 제공하는 기술이다.
Context Switch 2026년 4월 8일 12분 읽기
컨텍스트context란 CPU가 특정 태스크의 실행을 재개하기 위해 필요한 모든 상태 정보의 총합이다.
Continuous Deployment 2026년 4월 8일 5분 읽기
소프트웨어 공학에서 지속적 배포가 어떤 의미를 가지는지 이해하기 위해서는 지속적 배포가 없었던 시절부터 지속적 배포의 등장, 그리고 그 이후의 변화를 알 필요가 있다.
CORS가 뭐죠...? 2026년 4월 8일 16분 읽기
사건의 발단은 약 2년 전, 동아리 디스코드 채널에서 사용하던 봇을 앱과 웹 서비스로 개발하기 위해 플러터로 서비스를 한창 개발하던 때, 계획대로라면 나타나야 할 이미지가 뜨지 않으면서 시작된다.
Critical Path Method 2026년 4월 8일 2분 읽기
CPM(Critical Path Method)는 프로젝트에 소요되는 최소 시간을 추산하기 위해 사용되는 방법이며 스케줄 모델의 논리적 네트워크에 존재하는 유연성(여유분)을 결정하는 방법이기도 하다.
Database Management System 2026년 4월 8일 8분 읽기
과거부터 기업이나 정부는 다수의 이용자들에게 정보를 제공하거나 내부에서 필요로 하는 정보를 체계적으로 보관할 필요가 있었다.
Decomposition 2026년 4월 8일 3분 읽기
관계형 데이터베이스를 설계하는 과정에서 관계형 스키마Relation Schema를 생성하는 과정에 초점을 맞춰보자.
Depth-First Search 2026년 4월 8일 4분 읽기
DFS는 미로를 탐험하는 것에 비유할 수 있다.
DevOps 2026년 4월 8일 4분 읽기
소프트웨어 기업 안에서도 소프트웨어를 만드는 것은 바로 개발팀Development Team, 즉 Dev다.
Earliest Eligible Virtual Deadline First 2026년 4월 8일 8분 읽기
CFS의 태스크 선택 원칙은 "레드-블랙 트리의 가장 왼쪽에 위치한 노드(최소 vruntime)를 고른다"로 요약된다.
Entity-Relationship Model 2026년 4월 8일 3분 읽기
데이터베이스를 설계하기 위해서는 여러 단계가 필요한데, 그중 첫 번째 단계는 실제 세계의 상호작용을 추상적인 데이터 모델로 표현하는 개념적 스키마Conceptual Schema 단계이다.
exec() 2026년 4월 8일 31분 읽기
exec()이라는 이름을 가진 함수는 사실 존재하지 않는다.
fork() 2026년 4월 8일 9분 읽기
fork()를 호출하면 현재 프로세스에서 파생된 새로운 프로세스가 생긴다.
Function Point 2026년 4월 8일 8분 읽기
기능점수function point란, 사용자 관점에서 측정된 소프트웨어 기능의 양으로서, 사용자에게 제공되는 소프트웨어 기능의 규모를 측정하는 단위다.
Functional Dependency 2026년 4월 8일 11분 읽기
데이터베이스는 현실 세계를 본떠 설계하기 때문에, 데이터베이스의 객체와 관계는 현실 세계의 여러 제약을 반영해야 한다.
Heap 2026년 4월 8일 4분 읽기
힙에는 두 가지 변형이 있다.
Hypervisor 2026년 4월 8일 14분 읽기
가상머신에서 하이퍼바이저의 유형(Type 0/1/2)과 기본 개념을 다루었으므로, 여기서는 하이퍼바이저가 내부적으로 무엇을 해야 하는지에 집중한다.
Inter-Process Communication 2026년 4월 8일 13분 읽기
프로세스는 운영체제가 부여한 독립된 주소 공간 안에서 실행된다.
IPA 2026년 4월 8일 6분 읽기
IPAInternational Phonetic Alphabet는 현존하는 모든 언어의 말소리Phone를 표현하는 표준적인 방법이며, 언어학에서 주로 사용하는 음성 기록 체계다.
MAC Address 2026년 4월 8일 3분 읽기
MACMedia Access Control 주소는 데이터 링크 계층(OSI 7계층에서 2계층)에서 통신을 위해 네트워크 인터페이스(NIC)에 할당된 물리적인 고유 식별 주소다.
Mapping Cardinality 2026년 4월 8일 3분 읽기
카디널리티Cardinality는 본래 수학에서 비롯된 개념으로, 집합의 크기를 의미한다.
Measurement and Analysis 2026년 4월 8일 14분 읽기
측정지표Metric란, 시스템 컴포넌트, 프로세스가 특정 속성을 보유한 정도를 나타내는 정량적인 측정변수다.
Minimax Algorithm 2026년 4월 8일 6분 읽기
출발지에서 목적지로 향하는 최적의 경로를 찾는 일반적인 탐색 문제에서는 에이전트 혼자 목표를 향해 나아가지만, 게임에서는 나의 이익을 최소화하려는 상대방이 존재한다.
Monitor 2026년 4월 8일 9분 읽기
세마포어는 정수 변수와 두 개의 원자적 연산(P/V, 또는 wait/signal)만으로 상호 배제와 실행 순서 제어를 모두 구현할 수 있는 범용 동기화 프리미티브다.
Monte Carlo Tree Search(MCTS) 2026년 4월 8일 10분 읽기
어떤 게임을 수행하는 컴퓨터 유저를 설계할 때, 기존의 핵심 알고리즘은 미니맥스 알고리즘이었다.
Multivalued Dependency 2026년 4월 8일 6분 읽기
다음 릴레이션을 보자.
NACL 2026년 4월 8일 4분 읽기
NACL(Network Access Control List)은 서브넷 단위에 적용되는 방화벽이다.
Normalization 2026년 4월 8일 7분 읽기
정규화를 이해하려면 먼저 "나쁜 설계"가 어떤 문제를 일으키는지 알아야 한다.
Object-Oriented Programming 2026년 4월 8일 12분 읽기
OOP에서 가장 기본적인 두 개념은 클래스class와 객체object(인스턴스instance)다.
Object-Relational Mapping 2026년 4월 8일 7분 읽기
객체지향 프로그램에서 데이터는 객체 그래프object graph의 형태로 존재한다.
OSI 모형 2026년 4월 8일 6분 읽기
OSI 모형Open Systems Interconnection Reference Model이란 국제표준화기구International Organization for Standardization, ISO[^iso-abbreviation]에서 개발한 모델로, 컴퓨터 네트워크 프로토콜 디자인과 통신을 7개의 계층layer으로 나누었기에 OSI 7계층으로 불리기도 한다.
OverlayFS 2026년 4월 8일 8분 읽기
유니언 파일 시스템union filesystem이란 여러 디렉토리 트리를 하나의 디렉토리로 합쳐서 보여주는 파일 시스템이다.
Passion Project 2026년 4월 8일 1분 읽기
- GitHub - Résumé - Portfolio - Process Control Block @2026-03-05 - Trait @2026-03-05 - Scheduler @2026-03-05 - Security Group @2026-03-05 - Stack...
Peering & Transit Gateway 2026년 4월 8일 7분 읽기
VPC 피어링(Peering)은 두 VPC 사이에 1:1 직접 연결을 생성한다.
Priority Queue 2026년 4월 8일 3분 읽기
우선순위 큐는 최소한 다음 세 가지 연산을 지원해야 한다.
Process Control Block 2026년 4월 8일 6분 읽기
오늘날 컴퓨터에서는 수많은 프로세스가 CPU를 번갈아 사용한다.
Process 2026년 4월 8일 8분 읽기
프로세스가 무엇인지를 깊이 이해하기 위해서는, 이 개념이 컴퓨터와 함께 어떻게 발전해왔는지를 살펴보는 것이 도움이 된다.
Program Evaluation and Review Technique 2026년 4월 8일 2분 읽기
PERT(Program Evaluation and Review Technique)는 프로젝트를 완료하기 위한 업무들을 분석하는 방법 중 하나다.
Project Monitoring and Control 2026년 4월 8일 4분 읽기
모니터링이란 시스템, 프로세스, 활동의 상태를 결정하는 것이다.
Project Planning 2026년 4월 8일 11분 읽기
프로젝트 계획Project Planning은 프로젝트에서 발생하는 모든 일을 정의하는 계획을 수립하고 유지하기 위한 프로세스 영역이다.
Project Progress 2026년 4월 8일 2분 읽기
프로젝트 진척율이라는 것은 말그대로 프로젝트가 어디까지 이루어졌는지를 수치로 나타낸 것인데, 이 진척율이라는 수치는 측정 방식이 다양해서 실제 진척율이 얼마인지에 대한 논쟁이 있을 수 있다.
Queue 2026년 4월 8일 2분 읽기
큐의 가장 핵심적인 특징은 먼저 들어간 자료가 먼저 나온다는First-In-First-Out, FIFO 것이다.
Requirements Development 2026년 4월 8일 13분 읽기
소프트웨어 공학에서 요구사항은 니즈와 그것에 대한 조건 및 제약사항을 표현한 문장으로, 시스템이 사용자에게 무엇을 제공해야 하는지를 정의한다.
Requirements Management 2026년 4월 8일 4분 읽기
요구사항 관리는 목적 제품과 구성요소들의 요구사항이 프로젝트의 계획과 제품에 맞게 유지되도록 관리하기 위한 CMMI의 프로세스 영역이다.
Scheduler 2026년 4월 8일 8분 읽기
프로세서보다 프로세스가 많은 상황에서는 어떤 프로세스가 CPU를 사용하고 어떤 프로세스가 기다릴지를 결정해야 한다.
Security Group 2026년 4월 8일 5분 읽기
보안 그룹Security Group은 VPC 내 리소스의 네트워크 인터페이스(ENI)[^elastic-network-interface]에 적용되는 가상 방화벽이다.
Semaphore 2026년 4월 8일 10분 읽기
세마포어Semaphore는 음이 아닌 정수 변수 $S$와, 이 변수에 대해 수행할 수 있는 두 개의 원자적 연산 $P$와 $V$로 구성되는 동기화 프리미티브다(Dijkstra, 1965).
Software Process 2026년 4월 8일 2분 읽기
카네기 멜론 대학의 소프트웨어 엔지니어링 연구소Software Engineering Institute, SEI에서 소프트웨어 엔지니어링 프로그램을 창안한 왓츠 험프리Watts Humphrey는 다음과 같은 말을 남겼다.
Software Quality Assurance 2026년 4월 8일 13분 읽기
소프트웨어의 품질이 만족할 만한 수준이라는 확실한 증거를 얻기 위해서는 무엇이 필요할까? 소프트웨어 제품의 품질과 개발 프로세스의 품질을 연결하는 것도, 소프트웨어의 품질을 평가하기 위한 여러 지표도 그 질문에 대한 답을 얻기 위한 노력의 산물이다.
SP인증 모델 2026년 4월 8일 11분 읽기
SP인증은 소프트웨어를 개발하거나 관리하는 기업 및 조직의 SW 프로세스 품질역량 수준을 심사하여 등급을 부여하는 제도다.
Stack 2026년 4월 8일 5분 읽기
모든 핵심 연산이 $O(1)$이라는 점이 스택의 강점이다.
System Call 2026년 4월 8일 10분 읽기
현대 운영체제는 CPU의 이중 모드dual mode[^dual-mode]를 활용하여 커널과 사용자 프로그램을 분리한다.
Thread 2026년 4월 8일 5분 읽기
스레드는 프로세스 내부의 흐름이다.
Trait 2026년 4월 8일 8분 읽기
트레이트는 타입이 구현해야 할 메서드 시그니처의 집합이다.
Translation Lookaside Buffer 2026년 4월 8일 15분 읽기
오늘날 모든 프로세스는 가상 주소virtual address를 사용하며, MMU(Memory Management Unit)가 페이지 테이블을 참조하여 가상 주소를 물리 주소로 변환한다.
Uniform-Cost Search 2026년 4월 8일 4분 읽기
Breadth-First Search는 얕은 깊이의 노드부터 차례대로 확장한다.
Use Case Modeling 2026년 4월 8일 8분 읽기
유스케이스에는 여러가지 정의가 존재하지만, 여기서는 크게 세가지만 살펴보자.
Version Control System 2026년 4월 8일 4분 읽기
버전 관리는 소프트웨어 프로세스 중 만들어진 서로 다른 버전의 형상 객체Configuration Object를 관리하기 위한 절차와 도구를 합친 개념이다.
Virtual Machine 2026년 4월 8일 12분 읽기
가상머신Virtual Machine, VM이란 소프트웨어로 구현된 컴퓨터다.
Virtualization 2026년 4월 8일 13분 읽기
가상화Virtualization을 이해하기 위해서는 가상 메모리Virtual Memory, 그리고 가상 메모리와 대비되는 개념인 물리 메모리Physical Memory를 이해해야 한다.
VPC & Subnet 2026년 4월 8일 8분 읽기
CIDR(Classless Inter-Domain Routing)[^cidr-definition]은 IP 주소 범위를 표기하는 방법이다.
VPC Endpoint & PrivateLink 2026년 4월 8일 6분 읽기
VPC 내 프라이빗 서브넷의 인스턴스가 S3에 데이터를 업로드하는 시나리오를 생각해 보자.
VPC Routing & Gateway 2026년 4월 8일 7분 읽기
라우팅 테이블(Route Table)은 패킷의 목적지 IP 주소를 보고 다음 홉(hop)을 결정하는 규칙의 집합이다.
Work Breakdown Structure 2026년 4월 8일 2분 읽기
수많은 인력이 필요한 프로젝트는 매우 거대하고 프로젝트가 구현하고자 하는 기능을 가진 소프트웨어를 실제로 구현하고 소비자에게 전하기까지 굉장히 많은 업무가 필요하다.
『개소리에 대하여』 맛보기 2026년 4월 8일 11분 읽기
『개소리에 대하여』[^on-bullshit-original-title]는 아주 얇은 책이다.
구조체(Rust) 2026년 4월 8일 4분 읽기
struct User { active: bool, username: String, email: String, signincount: u64, } 구조체를 정의하기 위한 키워드는 struct이며, 다음으로 구조체의 이름을 정하고 중괄호{} 안에 구조체의 구성 요소인 필드field의 이름과 타입을 정의하면 된다.
기본 구조 2026년 4월 8일 4분 읽기
Dart로 프로그램을 작성하기 위해서는 우선 개발 환경을 만들어야 한다.
낭설을 대하는 태도 2026년 4월 8일 1분 읽기
자주는 아니지만 가끔 볼 수 있는 일화 중에 일본의 소설가 나츠메 소세키夏目漱石에 대한 일화가 있다.
마인크래프트로 배우는 서버 이야기 2026년 4월 8일 7분 읽기
서버와 네트워크는 컴퓨터공학을 전공하고 있더라도 대단히 막연한 주제일 수 있지만, 사실 우리의 일상생활에 굉장히 밀착되어 있는 주제이며 이에 대한 지식은 현대인의 매우 중요한 덕목 가운데 하나다.
몬테카를로 방법 2026년 4월 8일 8분 읽기
몬테카를로 방법의 씨앗은 18세기로 거슬러 올라간다.
배열 2026년 4월 8일 5분 읽기
배열의 핵심은 연속적인 메모리 배치에 있다.
『사랑의 기술』 맛보기 2026년 4월 8일 45분 읽기
사실 『사랑의 기술』이라는 책은 ‘너 진짜 똑똑하다’라는 유튜브 채널에서 처음 접했는데, 그때는 영상을 전혀 이해하지 못했다.
사전 준비 2026년 4월 8일 2분 읽기
rustup은 러스트 버전 및 러스트 관련 도구를 관리하는 프로그램이다.
소유권 2026년 4월 8일 11분 읽기
모든 프로그램은 작동하는 동안 운영체제로부터 메모리를 빌려오는데, 이 영역을 힙heap 영역이라 부른다.
소프트웨어, 공학, 그리고 소프트웨어 공학 2026년 4월 8일 1분 읽기
일반적인 사람들은 개발자라는 단어를 들었을 때 보통 소프트웨어 개발자를 떠올린다.
소프트웨어 생명 주기 2026년 4월 8일 9분 읽기
소프트웨어의 생명 주기는 소프트웨어 제품을 개발하고, 운영하고, 유지보수하고, 최종적으로 폐기하는 전체 과정에서 수행되는 활동들의 순서를 기술한 것이다.
소프트웨어 테스팅 2026년 4월 8일 9분 읽기
테스트란, ==결함을 발견할 의도로 프로그램이나 시스템을 실행시키는 것== 혹은 ==테스트 대상의 특성을 발견하고 평가하기 위해 수행되는 일련의 활동==을 가리킨다.
소프트웨어의 표준 2026년 4월 8일 17분 읽기
소프트웨어마다 사용하는 도구가 다를 수 있고 개발 환경도 다를 텐데, 그렇다면 소프트웨어의 표준standard에는 도대체 무엇이 있는 것일까? 사실 소프트웨어의 표준은 곧 품질 모델Quality Model이라고 봐도 좋을 만큼, 소프트웨어의 품질에 초점을 맞추고 있다.
연결 리스트 2026년 4월 8일 6분 읽기
연결 리스트의 각 원소를 노드(node)라 부른다.
열거형 2026년 4월 8일 1분 읽기
열거형은 여러 타입을 하나로 묶는다는 점에서는 구조체struct와 비슷하지만, 열거형이 여러 타입을 묶는 방법은 구조체의 그것과 다릅니다.
오류를 처리하는 방법 2026년 4월 8일 6분 읽기
러스트로 만든 프로그램에서 발생할 수 있는 모든 오류를 분류하는 첫번째 기준은 복구다.
자료구조의 개념 2026년 4월 8일 4분 읽기
PDT(Primitive Data Type)는 프로그래밍 언어 수준에서 데이터를 담기 위한 가장 기본적인 형태의 자료형을 말한다.
자료형(C) 2026년 4월 8일 4분 읽기
컴퓨터가 저장하는 모든 것은 기본적으로 0과 1로 된 이진수다.
자료형(Rust) 2026년 4월 8일 4분 읽기
일반적인 컴퓨터 언어가 그렇듯, 러스트의 모든 값은 특정한 타입type을 가진다.
전처리 2026년 4월 8일 8분 읽기
[^preprocessor-general]: 전처리기preprocessor 라는 개념은 비단 C가 아니더라도 컴퓨터공학 전반에서 사용되는 개념이다.
전처리기 지시자 2026년 4월 8일 8분 읽기
C의 지시자는 모두 #으로 시작한다.
클로저(Rust) 2026년 4월 8일 7분 읽기
// unwraporelse를 사용하면 Result가 Ok일 때 Ok 안의 값을 반환하고, // Err일 때 클로저 안의 코드를 호출한다.
패키지, 크레이트, 모듈, 작업공간 2026년 4월 8일 9분 읽기
크레이트는 러스트의 프로그램이 될 수 있는 가장 단순한 단위다.
프로그램의 흐름을 통제하기 2026년 4월 8일 6분 읽기
조건에 따라 다른 코드를 실행해야 할 때 if문을 통해 조건에 따른 코드의 분기branch를 간단하게 구현할 수 있다.
프로세스 종료 2026년 4월 8일 9분 읽기
프로세스가 모든 일을 마치고 종료될 때, 부모 프로세스는 상태 값을 받을 수 있고 자식 프로세스에게 할당됐던 자원들이 운영체제에 의해 해제된다.
한중 청년의 상호 혐오를 어떻게 해결할 것인가? 2026년 4월 8일 10분 읽기
1992년 한 · 중 양국이 수교를 맺은 지 어느덧 30년 이상이 지났다.
함수(Rust) 2026년 4월 8일 3분 읽기
러스트에서는 fn 뒤에 함수 이름과 괄호를 붙여서 함수를 정의하고, 중괄호{}를 통해 함수 본문의 시작과 끝을 정한다.