<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"><channel><title>Manx</title><description>코드에서 인프라, 자동화까지. 안정적인 서비스를 굴리는 일에 대하여 기록하는 Manx의 개발 블로그</description><link>https://manxlog.pages.dev/</link><language>ko</language><item><title>Terraform 도입기 (1): 콘솔로 만든 인프라를 코드로 옮기기로 했다</title><link>https://manxlog.pages.dev/posts/terraform-iac-1-why-and-principles/</link><guid isPermaLink="true">https://manxlog.pages.dev/posts/terraform-iac-1-why-and-principles/</guid><description>콘솔에서 손으로 만들어 온 AWS 인프라를 Terraform으로 옮기기 시작한 이유와, 15개월 동안 붙들고 있던 생각들.</description><pubDate>Sat, 03 Oct 2026 00:00:00 GMT</pubDate><category>terraform</category><category>aws</category><category>iac</category></item><item><title>Terraform 도입기 (2): 구조를 어떻게 잡았나</title><link>https://manxlog.pages.dev/posts/terraform-iac-2-directory-and-state/</link><guid isPermaLink="true">https://manxlog.pages.dev/posts/terraform-iac-2-directory-and-state/</guid><description>State를 리소스 종류와 환경 단위로 쪼갠 이유, 모듈을 얇게 둔 이유, 그리고 시작 2주 만에 처음 설계를 갈아엎은 이야기.</description><pubDate>Sat, 03 Oct 2026 00:00:00 GMT</pubDate><category>terraform</category><category>aws</category><category>iac</category></item><item><title>Terraform 도입기 (3): 기존 인프라 옮기기</title><link>https://manxlog.pages.dev/posts/terraform-iac-3-migrating-existing-infra/</link><guid isPermaLink="true">https://manxlog.pages.dev/posts/terraform-iac-3-migrating-existing-infra/</guid><description>콘솔로 만든 인프라를 3주에 걸쳐 Terraform으로 가져오면서 정한 규칙들. 고치지 않고 먼저 옮긴다는 것, 그리고 옮기고 나서야 보인 것들.</description><pubDate>Sat, 03 Oct 2026 00:00:00 GMT</pubDate><category>terraform</category><category>aws</category><category>iac</category><category>migration</category></item><item><title>Terraform 도입기 (4): PR과 Plan으로 일하기</title><link>https://manxlog.pages.dev/posts/terraform-iac-4-pr-workflow-and-ci/</link><guid isPermaLink="true">https://manxlog.pages.dev/posts/terraform-iac-4-pr-workflow-and-ci/</guid><description>리뷰어가 코드가 아니라 Plan을 보고 승인하게 만든 과정과, Apply를 끝내 자동화하지 않은 이유.</description><pubDate>Sat, 03 Oct 2026 00:00:00 GMT</pubDate><category>terraform</category><category>jenkins</category><category>ci-cd</category><category>iac</category></item><item><title>취약점 관리 툴 제작기 (4): 처리한 티켓이 사라졌다는 신고</title><link>https://manxlog.pages.dev/posts/vuln-tool-4-list-query-and-scope/</link><guid isPermaLink="true">https://manxlog.pages.dev/posts/vuln-tool-4-list-query-and-scope/</guid><description>목록 기본 필터 하나 때문에 담당자가 방금 처리한 티켓이 증발했다. 두 개의 축으로 고쳤다가 결국 한 축으로 접은 과정과, 조회 범위를 서버가 강제하도록 못박은 이유.</description><pubDate>Thu, 01 Oct 2026 00:00:00 GMT</pubDate><category>sql</category><category>postgresql</category><category>ux</category><category>authorization</category><category>project</category></item><item><title>취약점 관리 툴 제작기 (3): 상태를 바꾸는 길은 하나여야 한다</title><link>https://manxlog.pages.dev/posts/vuln-tool-3-status-and-history/</link><guid isPermaLink="true">https://manxlog.pages.dev/posts/vuln-tool-3-status-and-history/</guid><description>감사에서 근거로 쓸 이력을 남기려면 상태 전이가 한 곳을 지나야 한다. 상태를 다섯 개로 줄인 기준, 예외 처리에 승인 단계를 둔 이유, 그리고 완료일이 거짓말을 하지 않게 만든 규칙.</description><pubDate>Wed, 30 Sep 2026 00:00:00 GMT</pubDate><category>architecture</category><category>design</category><category>audit</category><category>project</category></item><item><title>취약점 관리 툴 제작기 (2): 재업로드는 덮어쓰기가 아니라 병합이다</title><link>https://manxlog.pages.dev/posts/vuln-tool-2-csv-upsert/</link><guid isPermaLink="true">https://manxlog.pages.dev/posts/vuln-tool-2-csv-upsert/</guid><description>재스캔마다 바뀌는 식별자를 버리고 중복 판정 키를 직접 만든 이유, 사람이 적은 값을 지키는 덮어쓰기 금지 구역, 그리고 &quot;파일에 없으면 해결된 것&quot;이라는 가정을 범위로 한정한 이야기.</description><pubDate>Tue, 29 Sep 2026 00:00:00 GMT</pubDate><category>architecture</category><category>data-modeling</category><category>etl</category><category>project</category></item><item><title>취약점 관리 툴 제작기 (1): 스프레드시트를 대체하려면</title><link>https://manxlog.pages.dev/posts/vuln-tool-1-why-and-goals/</link><guid isPermaLink="true">https://manxlog.pages.dev/posts/vuln-tool-1-why-and-goals/</guid><description>스캐너가 뱉은 CSV를 스프레드시트로 돌려 보던 취약점 조치 업무를 사내 웹 도구로 옮겼다. 기능 목록보다 먼저 정한 네 가지 원칙과, 그 원칙이 결정한 구조를 정리한다.</description><pubDate>Mon, 28 Sep 2026 00:00:00 GMT</pubDate><category>architecture</category><category>design</category><category>security</category><category>project</category></item><item><title>시스템 성능 엔지니어링 Ch.4 — 관측 가능성 도구와 모니터링 S/W의 본질</title><link>https://manxlog.pages.dev/posts/systems-performance-ch4-observability-tools/</link><guid isPermaLink="true">https://manxlog.pages.dev/posts/systems-performance-ch4-observability-tools/</guid><description>커널 카운터, /proc, /sys를 따라가며 vmstat부터 Prometheus Exporter까지 모니터링 도구가 같은 데이터를 읽는다는 점을 정리한다.</description><pubDate>Wed, 25 Mar 2026 00:00:00 GMT</pubDate><category>performance</category><category>observability</category><category>linux</category><category>book</category></item><item><title>Docker vs Podman: Production에서 Podman을 선택한 이유</title><link>https://manxlog.pages.dev/posts/docker-vs-podman/</link><guid isPermaLink="true">https://manxlog.pages.dev/posts/docker-vs-podman/</guid><description>dockerd의 상시 메모리 점유와 root 권한 문제를 겪고, daemonless·rootless 구조의 Podman으로 전환한 경험을 정리한다.</description><pubDate>Fri, 20 Mar 2026 00:00:00 GMT</pubDate><category>docker</category><category>podman</category><category>container</category></item><item><title>시스템 성능 엔지니어링 Ch.1~2 — 소개와 방법론</title><link>https://manxlog.pages.dev/posts/systems-performance-ch1-2/</link><guid isPermaLink="true">https://manxlog.pages.dev/posts/systems-performance-ch1-2/</guid><description>성능 분석의 목적, 지연 시간과 캐시 히트율, 튜닝의 트레이드오프, 분석을 멈출 시점, 반방법론까지 1~2장을 정리한다.</description><pubDate>Fri, 20 Mar 2026 00:00:00 GMT</pubDate><category>performance</category><category>linux</category><category>book</category></item><item><title>접속 불가 상태의 LightSail 인스턴스에서 데이터 복구하기</title><link>https://manxlog.pages.dev/posts/lightsail-recovery/</link><guid isPermaLink="true">https://manxlog.pages.dev/posts/lightsail-recovery/</guid><description>SSH 접속이 안 되는 LightSail 인스턴스의 스냅샷을 EC2로 내보내고, 볼륨을 다른 인스턴스에 붙여 데이터를 살려낸 과정.</description><pubDate>Wed, 13 Aug 2025 00:00:00 GMT</pubDate><category>aws</category><category>linux</category></item><item><title>Terraform CI/CD 구축 (2): Jenkinsfile로 Plan 결과를 PR에 남기기</title><link>https://manxlog.pages.dev/posts/terraform-cicd-2-jenkinsfile-plan/</link><guid isPermaLink="true">https://manxlog.pages.dev/posts/terraform-cicd-2-jenkinsfile-plan/</guid><description>변경된 Terraform 디렉토리만 찾아 Plan을 실행하고, 결과를 PR 댓글과 체크 상태로 돌려주는 Jenkinsfile을 단계별로 정리한다.</description><pubDate>Wed, 13 Aug 2025 00:00:00 GMT</pubDate><category>terraform</category><category>jenkins</category><category>ci-cd</category><category>aws</category></item><item><title>Terraform CI/CD 구축 (1): GitHub PR과 Jenkins 연동</title><link>https://manxlog.pages.dev/posts/terraform-cicd-1-jenkins-pr-trigger/</link><guid isPermaLink="true">https://manxlog.pages.dev/posts/terraform-cicd-1-jenkins-pr-trigger/</guid><description>PR이 열리면 Jenkins가 머지 결과 기준으로 Terraform Plan을 실행하도록 Webhook과 Pipeline 트리거를 설정한 과정.</description><pubDate>Tue, 05 Aug 2025 00:00:00 GMT</pubDate><category>terraform</category><category>jenkins</category><category>ci-cd</category><category>aws</category></item><item><title>CKA 2025 개정 시험 합격 후기</title><link>https://manxlog.pages.dev/posts/cka-2025-review/</link><guid isPermaLink="true">https://manxlog.pages.dev/posts/cka-2025-review/</guid><description>개정된 CKA 시험을 준비한 방법과 시험 당일 겪은 환경 문제, 그때의 대처 방법을 정리한 합격 후기.</description><pubDate>Wed, 23 Apr 2025 00:00:00 GMT</pubDate><category>kubernetes</category><category>certification</category></item><item><title>kubeadm으로 쿠버네티스 클러스터 업그레이드하기</title><link>https://manxlog.pages.dev/posts/kubernetes-cluster-upgrade/</link><guid isPermaLink="true">https://manxlog.pages.dev/posts/kubernetes-cluster-upgrade/</guid><description>Drain과 Cordon 개념부터 kubeadm, kubelet, kubectl을 Master Node와 Worker Node 순서로 업그레이드하는 절차를 정리한다.</description><pubDate>Tue, 04 Mar 2025 00:00:00 GMT</pubDate><category>kubernetes</category><category>certification</category></item><item><title>Docker Layered Architecture와 Storage Driver</title><link>https://manxlog.pages.dev/posts/docker-layered-architecture/</link><guid isPermaLink="true">https://manxlog.pages.dev/posts/docker-layered-architecture/</guid><description>Dockerfile 명령이 이미지 레이어로 쌓이는 방식과 컨테이너 레이어의 Copy-on-Write 동작을 정리한다.</description><pubDate>Sat, 22 Feb 2025 00:00:00 GMT</pubDate><category>docker</category><category>container</category></item><item><title>쿠버네티스 Volume: PV, PVC, StorageClass</title><link>https://manxlog.pages.dev/posts/kubernetes-volume/</link><guid isPermaLink="true">https://manxlog.pages.dev/posts/kubernetes-volume/</guid><description>hostPath 볼륨에서 출발해 PersistentVolume, PersistentVolumeClaim, StorageClass가 각각 어떤 문제를 해결하는지 정리한다.</description><pubDate>Sat, 22 Feb 2025 00:00:00 GMT</pubDate><category>kubernetes</category><category>container</category></item><item><title>쿠버네티스 기본 오브젝트: Pod, ReplicaSet, Deployment, Service</title><link>https://manxlog.pages.dev/posts/kubernetes-objects/</link><guid isPermaLink="true">https://manxlog.pages.dev/posts/kubernetes-objects/</guid><description>CKA를 준비하며 Pod, ReplicaSet, Deployment, Service의 역할과 서로의 관계를 매니페스트와 함께 정리한다.</description><pubDate>Wed, 15 Jan 2025 00:00:00 GMT</pubDate><category>kubernetes</category><category>certification</category></item><item><title>서버/인프라를 지탱하는 기술 Ch.4 — 부하 그리고 Load Average</title><link>https://manxlog.pages.dev/posts/load-average/</link><guid isPermaLink="true">https://manxlog.pages.dev/posts/load-average/</guid><description>서버/인프라를 지탱하는 기술 4장을 바탕으로 Load Average의 의미와 한계, CPU·I/O 부하를 구분해 병목을 찾는 방법을 정리한다.</description><pubDate>Sun, 05 Jan 2025 00:00:00 GMT</pubDate><category>linux</category><category>performance</category><category>monitoring</category><category>book</category></item><item><title>서버/인프라를 지탱하는 기술 Ch.2 — 리버스 프록시를 도입하는 이유</title><link>https://manxlog.pages.dev/posts/reverse-proxy/</link><guid isPermaLink="true">https://manxlog.pages.dev/posts/reverse-proxy/</guid><description>서버/인프라를 지탱하는 기술 2장을 읽고 리버스 프록시의 요청 제어, 메모리 효율, 버퍼링 역할을 정리한다.</description><pubDate>Fri, 13 Dec 2024 00:00:00 GMT</pubDate><category>proxy</category><category>load-balancing</category><category>book</category></item><item><title>서버/인프라를 지탱하는 기술 Ch.1 — 다중화와 부하분산의 기본</title><link>https://manxlog.pages.dev/posts/redundancy-and-load-balancing/</link><guid isPermaLink="true">https://manxlog.pages.dev/posts/redundancy-and-load-balancing/</guid><description>서버/인프라를 지탱하는 기술 1장을 읽고 Standby, 헬스 체크, DNS 라운드로빈, L4/L7 로드밸런서, VRRP를 정리한다.</description><pubDate>Mon, 02 Dec 2024 00:00:00 GMT</pubDate><category>load-balancing</category><category>linux</category><category>book</category></item><item><title>Real MySQL 8.0 Ch.6~7 — 데이터 압축과 암호화</title><link>https://manxlog.pages.dev/posts/real-mysql-ch06-07-compression-and-encryption/</link><guid isPermaLink="true">https://manxlog.pages.dev/posts/real-mysql-ch06-07-compression-and-encryption/</guid><description>InnoDB의 페이지 압축과 테이블 압축의 동작 방식과 한계, I/O 레이어에서 처리되는 데이터 암호화와 성능 영향을 정리한다.</description><pubDate>Tue, 02 Jan 2024 00:00:00 GMT</pubDate><category>mysql</category><category>innodb</category><category>book</category></item><item><title>Real MySQL 8.0 Ch.8 — R-Tree, 전문 검색, 함수 기반, 멀티 밸류 인덱스</title><link>https://manxlog.pages.dev/posts/real-mysql-ch08-other-index-types/</link><guid isPermaLink="true">https://manxlog.pages.dev/posts/real-mysql-ch08-other-index-types/</guid><description>B-Tree 외에 MySQL이 제공하는 공간 인덱스, 전문 검색 인덱스, 함수 기반 인덱스, 멀티 밸류 인덱스의 용도와 사용 조건을 정리한다.</description><pubDate>Tue, 02 Jan 2024 00:00:00 GMT</pubDate><category>mysql</category><category>index</category><category>book</category></item><item><title>Real MySQL 8.0 Ch.9 — 옵티마이저와 기본 데이터 처리</title><link>https://manxlog.pages.dev/posts/real-mysql-ch09-optimizer/</link><guid isPermaLink="true">https://manxlog.pages.dev/posts/real-mysql-ch09-optimizer/</guid><description>옵티마이저와 쿼리 실행 절차, 풀 스캔과 병렬 처리, ORDER BY·GROUP BY·DISTINCT의 내부 처리 방식을 정리한다.</description><pubDate>Tue, 05 Dec 2023 00:00:00 GMT</pubDate><category>mysql</category><category>query-optimization</category><category>book</category></item><item><title>Real MySQL 8.0 Ch.8 — 클러스터링 인덱스, 유니크 인덱스, 외래키</title><link>https://manxlog.pages.dev/posts/real-mysql-ch08-clustering-unique-foreign-key/</link><guid isPermaLink="true">https://manxlog.pages.dev/posts/real-mysql-ch08-clustering-unique-foreign-key/</guid><description>InnoDB의 클러스터링 인덱스가 세컨더리 인덱스에 미치는 영향과 장단점, 유니크 인덱스의 쓰기 비용, 외래키의 잠금 특징을 정리한다.</description><pubDate>Tue, 14 Nov 2023 00:00:00 GMT</pubDate><category>mysql</category><category>innodb</category><category>index</category><category>book</category></item><item><title>Real MySQL 8.0 Ch.8 — B-Tree 인덱스</title><link>https://manxlog.pages.dev/posts/real-mysql-ch08-btree-index/</link><guid isPermaLink="true">https://manxlog.pages.dev/posts/real-mysql-ch08-btree-index/</guid><description>디스크 읽기 방식부터 B-Tree 인덱스의 구조, 성능에 영향을 주는 요소, 스캔 방식과 스캔 방향, 가용성과 효율성까지 정리한다.</description><pubDate>Tue, 07 Nov 2023 00:00:00 GMT</pubDate><category>mysql</category><category>innodb</category><category>index</category><category>book</category></item><item><title>Real MySQL 8.0 Ch.5 — 트랜잭션과 잠금</title><link>https://manxlog.pages.dev/posts/real-mysql-ch05-transaction-and-lock/</link><guid isPermaLink="true">https://manxlog.pages.dev/posts/real-mysql-ch05-transaction-and-lock/</guid><description>MySQL 엔진과 InnoDB의 잠금, 격리 수준, REPEATABLE READ에서 Phantom Read가 막히는 이유를 정리한다.</description><pubDate>Mon, 25 Sep 2023 00:00:00 GMT</pubDate><category>mysql</category><category>transaction</category><category>lock</category><category>book</category></item><item><title>Real MySQL 8.0 Ch.4 — InnoDB 스토리지 엔진 아키텍처</title><link>https://manxlog.pages.dev/posts/real-mysql-ch04-innodb-architecture/</link><guid isPermaLink="true">https://manxlog.pages.dev/posts/real-mysql-ch04-innodb-architecture/</guid><description>InnoDB의 MVCC와 데드락 감지, 버퍼 풀, 언두·리두 로그, 체인지 버퍼, 어댑티브 해시 인덱스를 정리한다.</description><pubDate>Sun, 17 Sep 2023 00:00:00 GMT</pubDate><category>mysql</category><category>innodb</category><category>book</category></item><item><title>Real MySQL 8.0 Ch.4 — MySQL 엔진과 스레드 구조</title><link>https://manxlog.pages.dev/posts/real-mysql-ch04-mysql-engine-and-threads/</link><guid isPermaLink="true">https://manxlog.pages.dev/posts/real-mysql-ch04-mysql-engine-and-threads/</guid><description>MySQL 엔진과 스토리지 엔진의 역할, 스레드와 메모리 구조, 스레드 풀과 ProxySQL, 쿼리 실행 구조와 로그 파일을 정리한다.</description><pubDate>Sun, 17 Sep 2023 00:00:00 GMT</pubDate><category>mysql</category><category>book</category></item><item><title>싱글톤 빈의 동시성 문제와 ThreadLocal</title><link>https://manxlog.pages.dev/posts/spring-concurrency-and-threadlocal/</link><guid isPermaLink="true">https://manxlog.pages.dev/posts/spring-concurrency-and-threadlocal/</guid><description>싱글톤 객체의 필드를 여러 쓰레드가 공유할 때 생기는 동시성 문제를 재현하고 ThreadLocal로 해결하는 방법과 주의점을 정리한다.</description><pubDate>Tue, 29 Aug 2023 00:00:00 GMT</pubDate><category>spring</category><category>java</category><category>concurrency</category></item><item><title>JOIN의 종류와 구현 방식</title><link>https://manxlog.pages.dev/posts/database-join-algorithms/</link><guid isPermaLink="true">https://manxlog.pages.dev/posts/database-join-algorithms/</guid><description>INNER·OUTER JOIN의 차이와 Nested Loop, Sort-Merge, Hash Join의 동작 방식, 인덱스의 영향을 정리한다.</description><pubDate>Mon, 31 Jul 2023 00:00:00 GMT</pubDate><category>database</category><category>join</category></item><item><title>데이터베이스 Lock: 공유 락·배타 락, 낙관적 락·비관적 락</title><link>https://manxlog.pages.dev/posts/database-lock/</link><guid isPermaLink="true">https://manxlog.pages.dev/posts/database-lock/</guid><description>Shared Lock과 Exclusive Lock의 차이, 그리고 충돌을 다루는 두 전략인 낙관적 락과 비관적 락을 정리한다.</description><pubDate>Mon, 31 Jul 2023 00:00:00 GMT</pubDate><category>database</category><category>lock</category><category>transaction</category></item><item><title>생성 패턴: Abstract Factory와 Builder</title><link>https://manxlog.pages.dev/posts/abstract-factory-and-builder/</link><guid isPermaLink="true">https://manxlog.pages.dev/posts/abstract-factory-and-builder/</guid><description>추상 팩토리 패턴의 고전적 구현과 파이썬다운 구현을 비교하고, 빌더 패턴으로 복잡한 객체를 단계별로 생성하는 방법을 정리한다.</description><pubDate>Thu, 27 Jul 2023 00:00:00 GMT</pubDate><category>design-pattern</category><category>oop</category><category>python</category></item><item><title>서블릿 컨테이너 초기화와 스프링 컨테이너 등록 과정</title><link>https://manxlog.pages.dev/posts/servlet-container-initialization/</link><guid isPermaLink="true">https://manxlog.pages.dev/posts/servlet-container-initialization/</guid><description>WAR 배포 구조부터 ServletContainerInitializer, 스프링 컨테이너와 DispatcherServlet 등록 과정을 코드로 따라간다.</description><pubDate>Thu, 29 Jun 2023 00:00:00 GMT</pubDate><category>spring</category><category>servlet</category><category>spring-mvc</category></item><item><title>인덱스와 B-Tree, 그리고 스캔 방식</title><link>https://manxlog.pages.dev/posts/database-index-btree-scan/</link><guid isPermaLink="true">https://manxlog.pages.dev/posts/database-index-btree-scan/</guid><description>인덱스의 개념과 B-Tree·B+Tree 구조, 해시 대신 B-Tree를 쓰는 이유, 테이블 풀 스캔과 인덱스 스캔의 선택 기준을 정리한다.</description><pubDate>Thu, 22 Jun 2023 00:00:00 GMT</pubDate><category>database</category><category>index</category></item><item><title>DB 클러스터링, 레플리케이션, 샤딩과 분산 트랜잭션</title><link>https://manxlog.pages.dev/posts/database-replication-clustering-sharding/</link><guid isPermaLink="true">https://manxlog.pages.dev/posts/database-replication-clustering-sharding/</guid><description>클러스터링과 레플리케이션의 차이, 2PC와 Saga, 복제 지연 대응(Semi-Sync, MHA), 샤딩 방식을 한 번에 정리한다.</description><pubDate>Thu, 22 Jun 2023 00:00:00 GMT</pubDate><category>database</category><category>replication</category></item><item><title>데이터베이스 키의 종류와 UNIQUE 제약</title><link>https://manxlog.pages.dev/posts/database-keys/</link><guid isPermaLink="true">https://manxlog.pages.dev/posts/database-keys/</guid><description>슈퍼키부터 후보키, 기본키, 대체키, 외래키까지 키의 종류와 암시적 기본키, UNIQUE 제약의 비용을 정리한다.</description><pubDate>Mon, 22 May 2023 00:00:00 GMT</pubDate><category>database</category><category>modeling</category></item><item><title>DNS 정리: 구조, 질의 방식, 레코드, 이중화와 위임</title><link>https://manxlog.pages.dev/posts/dns-basics/</link><guid isPermaLink="true">https://manxlog.pages.dev/posts/dns-basics/</guid><description>도메인 계층 구조와 질의 과정부터 주요 레코드, TTL, 마스터-슬레이브 이중화, 도메인 위임과 GSLB까지 정리한다.</description><pubDate>Tue, 18 Apr 2023 00:00:00 GMT</pubDate><category>network</category><category>dns</category></item><item><title>로드 밸런서: 구성 방식, 헬스 체크, L4와 L7</title><link>https://manxlog.pages.dev/posts/load-balancer/</link><guid isPermaLink="true">https://manxlog.pages.dev/posts/load-balancer/</guid><description>로드 밸런서의 원암·인라인 구성, 헬스 체크 방식, L4와 L7 로드 밸런싱의 차이, 분산 알고리즘을 정리한다.</description><pubDate>Tue, 18 Apr 2023 00:00:00 GMT</pubDate><category>network</category><category>load-balancing</category></item><item><title>라우터: 경로 지정, 브로드캐스트 컨트롤, 라우팅과 스위칭</title><link>https://manxlog.pages.dev/posts/router/</link><guid isPermaLink="true">https://manxlog.pages.dev/posts/router/</guid><description>3계층 장비인 라우터의 세 가지 역할과 경로 정보를 얻는 방법, Hop-by-Hop 라우팅, Longest Prefix Match를 정리한다.</description><pubDate>Tue, 18 Apr 2023 00:00:00 GMT</pubDate><category>network</category><category>tcp-ip</category></item><item><title>TCP 4-Way Handshake와 TIME_WAIT</title><link>https://manxlog.pages.dev/posts/tcp-4-way-handshake/</link><guid isPermaLink="true">https://manxlog.pages.dev/posts/tcp-4-way-handshake/</guid><description>TCP 연결을 종료하는 4-way handshake의 단계별 상태와 TIME_WAIT로 대기하는 이유, 빠르게 연결을 끊는 방법을 정리한다.</description><pubDate>Tue, 18 Apr 2023 00:00:00 GMT</pubDate><category>network</category><category>tcp-ip</category></item><item><title>DHCP 동작 방식과 UDP를 사용하는 이유</title><link>https://manxlog.pages.dev/posts/dhcp/</link><guid isPermaLink="true">https://manxlog.pages.dev/posts/dhcp/</guid><description>IP 주소를 자동으로 할당하는 DHCP의 4단계 동작과 UDP를 쓰는 이유, 임대 기간의 Renewal과 Rebinding을 정리한다.</description><pubDate>Mon, 17 Apr 2023 00:00:00 GMT</pubDate><category>network</category><category>tcp-ip</category></item><item><title>HTTP/1.1, HTTP/2, HTTP/3 비교</title><link>https://manxlog.pages.dev/posts/http-version-comparison/</link><guid isPermaLink="true">https://manxlog.pages.dev/posts/http-version-comparison/</guid><description>HTTP/1.1의 HOL 블로킹을 HTTP/2의 멀티플렉싱이 어떻게 개선했는지, QUIC 기반 HTTP/3는 무엇이 다른지 정리한다.</description><pubDate>Mon, 17 Apr 2023 00:00:00 GMT</pubDate><category>network</category><category>http</category></item><item><title>IP 주소: IPv4와 IPv6, NAT, 체크섬</title><link>https://manxlog.pages.dev/posts/ip-address/</link><guid isPermaLink="true">https://manxlog.pages.dev/posts/ip-address/</guid><description>공인·사설 IP와 NAT, IPv4 주소 고갈과 IPv6 전환 기술, IP와 TCP 체크섬의 차이, MAC 주소와의 차이를 정리한다.</description><pubDate>Mon, 17 Apr 2023 00:00:00 GMT</pubDate><category>network</category><category>tcp-ip</category></item><item><title>최소 신장 트리(MST): Kruskal, Prim, Union-Find</title><link>https://manxlog.pages.dev/posts/minimum-spanning-tree/</link><guid isPermaLink="true">https://manxlog.pages.dev/posts/minimum-spanning-tree/</guid><description>신장 트리와 최소 신장 트리의 개념, Kruskal과 Prim 알고리즘, Union-Find로 사이클을 판별하는 방법을 정리한다.</description><pubDate>Mon, 17 Apr 2023 00:00:00 GMT</pubDate><category>algorithm</category><category>graph</category><category>tree</category></item><item><title>Context Switching</title><link>https://manxlog.pages.dev/posts/os-context-switching/</link><guid isPermaLink="true">https://manxlog.pages.dev/posts/os-context-switching/</guid><description>문맥 교환의 과정과 발생 시점, 프로세스와 스레드의 전환 비용 차이, 준비 큐가 길어질 때의 문제와 해결 방안을 정리한다.</description><pubDate>Mon, 17 Apr 2023 00:00:00 GMT</pubDate><category>os</category><category>process</category><category>thread</category></item><item><title>File Descriptor와 File System, I-Node</title><link>https://manxlog.pages.dev/posts/os-file-descriptor-file-system/</link><guid isPermaLink="true">https://manxlog.pages.dev/posts/os-file-descriptor-file-system/</guid><description>프로세스가 파일을 가리키는 File Descriptor, 파일 시스템의 역할, 파일의 속성과 블록 주소를 담는 I-Node를 정리한다.</description><pubDate>Mon, 17 Apr 2023 00:00:00 GMT</pubDate><category>os</category><category>file-system</category></item><item><title>메모리 계층 구조와 캐시 메모리</title><link>https://manxlog.pages.dev/posts/os-memory-hierarchy-cache/</link><guid isPermaLink="true">https://manxlog.pages.dev/posts/os-memory-hierarchy-cache/</guid><description>메모리 계층 구조와 L1·L2 캐시, 캐시 매핑 방식, 지역성과 배열 탐색 성능, 애플리케이션 캐시의 일관성 문제를 정리한다.</description><pubDate>Mon, 17 Apr 2023 00:00:00 GMT</pubDate><category>os</category><category>memory</category></item><item><title>요구 페이징과 페이지 교체 알고리즘, Thrashing</title><link>https://manxlog.pages.dev/posts/os-page-replacement-thrashing/</link><guid isPermaLink="true">https://manxlog.pages.dev/posts/os-page-replacement-thrashing/</guid><description>요구 페이징과 Page Fault 처리, FIFO·LRU·LFU·MFU 교체 알고리즘, Thrashing의 발생 과정과 완화 방법을 정리한다.</description><pubDate>Mon, 17 Apr 2023 00:00:00 GMT</pubDate><category>os</category><category>memory</category><category>virtual-memory</category></item><item><title>동기/비동기와 블로킹/논블로킹, I/O Multiplexing</title><link>https://manxlog.pages.dev/posts/os-sync-async-blocking/</link><guid isPermaLink="true">https://manxlog.pages.dev/posts/os-sync-async-blocking/</guid><description>동기·비동기와 블로킹·논블로킹이 서로 다른 관점임을 짚고, 네 가지 조합과 select·poll 기반 I/O Multiplexing을 정리한다.</description><pubDate>Mon, 17 Apr 2023 00:00:00 GMT</pubDate><category>os</category><category>io</category></item><item><title>OSI 7 Layer와 계층별 역할, ARP</title><link>https://manxlog.pages.dev/posts/osi-7-layer/</link><guid isPermaLink="true">https://manxlog.pages.dev/posts/osi-7-layer/</guid><description>네트워크를 계층으로 나누는 이유와 각 계층의 역할, 계층별 데이터 단위, IP 주소를 MAC 주소로 바꾸는 ARP를 정리한다.</description><pubDate>Mon, 17 Apr 2023 00:00:00 GMT</pubDate><category>network</category><category>tcp-ip</category></item><item><title>재귀 함수와 꼬리 재귀 최적화</title><link>https://manxlog.pages.dev/posts/recursion/</link><guid isPermaLink="true">https://manxlog.pages.dev/posts/recursion/</guid><description>재귀 함수가 콜 스택에서 동작하는 과정과 스택 오버플로, 꼬리 재귀 최적화의 원리와 언어별 지원을 정리한다.</description><pubDate>Mon, 17 Apr 2023 00:00:00 GMT</pubDate><category>algorithm</category><category>python</category><category>java</category></item><item><title>소켓과 포트, 그리고 웹소켓</title><link>https://manxlog.pages.dev/posts/socket-and-websocket/</link><guid isPermaLink="true">https://manxlog.pages.dev/posts/socket-and-websocket/</guid><description>포트와 소켓의 차이, 여러 소켓이 같은 포트를 쓸 수 있는 이유, HTTP로 시작해 양방향 통신을 하는 웹소켓을 정리한다.</description><pubDate>Mon, 17 Apr 2023 00:00:00 GMT</pubDate><category>network</category><category>tcp-ip</category><category>web</category></item><item><title>Thread-Safe 자료구조: Python GIL과 Java ConcurrentHashMap</title><link>https://manxlog.pages.dev/posts/thread-safe-data-structures/</link><guid isPermaLink="true">https://manxlog.pages.dev/posts/thread-safe-data-structures/</guid><description>Python GIL이 thread-safe를 보장하지 못하는 이유와 Java ConcurrentHashMap, volatile을 정리한다.</description><pubDate>Mon, 17 Apr 2023 00:00:00 GMT</pubDate><category>data-structure</category><category>concurrency</category><category>python</category><category>java</category></item><item><title>균형 이진 탐색 트리: AVL, Red-Black, B-Tree</title><link>https://manxlog.pages.dev/posts/balanced-bst/</link><guid isPermaLink="true">https://manxlog.pages.dev/posts/balanced-bst/</guid><description>편향 문제를 해결하는 균형 탐색 트리인 AVL 트리, 레드-블랙 트리, B-Tree의 균형 유지 방식과 쓰임새를 비교한다.</description><pubDate>Sun, 16 Apr 2023 00:00:00 GMT</pubDate><category>data-structure</category><category>tree</category></item><item><title>그래프: 인접 행렬과 인접 리스트</title><link>https://manxlog.pages.dev/posts/graph/</link><guid isPermaLink="true">https://manxlog.pages.dev/posts/graph/</guid><description>그래프의 개념과 인접 행렬·인접 리스트 구현의 장단점, 연산별 시간 복잡도 차이, 트리와의 관계를 정리한다.</description><pubDate>Sun, 16 Apr 2023 00:00:00 GMT</pubDate><category>data-structure</category><category>graph</category></item><item><title>HTTP의 Stateless·Connectionless와 쿠키, 세션</title><link>https://manxlog.pages.dev/posts/http-stateless-cookie-session/</link><guid isPermaLink="true">https://manxlog.pages.dev/posts/http-stateless-cookie-session/</guid><description>HTTP가 상태와 연결을 유지하지 않는 이유와 지속 연결, 쿠키와 세션으로 상태를 다루는 방법, 다중 서버의 세션 관리를 정리한다.</description><pubDate>Sun, 16 Apr 2023 00:00:00 GMT</pubDate><category>network</category><category>http</category><category>web</category></item><item><title>인터럽트와 폴링</title><link>https://manxlog.pages.dev/posts/os-interrupt/</link><guid isPermaLink="true">https://manxlog.pages.dev/posts/os-interrupt/</guid><description>인터럽트의 처리 절차와 저장되는 문맥, 중첩 인터럽트, 폴링과의 차이, 하드웨어·소프트웨어 인터럽트를 정리한다.</description><pubDate>Sun, 16 Apr 2023 00:00:00 GMT</pubDate><category>os</category></item><item><title>System Call과 Dual Mode</title><link>https://manxlog.pages.dev/posts/os-system-call/</link><guid isPermaLink="true">https://manxlog.pages.dev/posts/os-system-call/</guid><description>CPU의 사용자 모드와 커널 모드가 나뉜 이유, 시스템 콜의 동작 과정과 유형을 정리한다.</description><pubDate>Sun, 16 Apr 2023 00:00:00 GMT</pubDate><category>os</category></item><item><title>최단 경로 알고리즘: BFS, 다익스트라, 벨만-포드, 플로이드-워셜, A*</title><link>https://manxlog.pages.dev/posts/shortest-path-algorithms/</link><guid isPermaLink="true">https://manxlog.pages.dev/posts/shortest-path-algorithms/</guid><description>그래프 최단 경로 알고리즘 다섯 가지의 동작 원리와 시간 복잡도, 음수 간선과 음수 사이클에 따른 선택 기준을 정리한다.</description><pubDate>Sun, 16 Apr 2023 00:00:00 GMT</pubDate><category>algorithm</category><category>graph</category></item><item><title>정렬 알고리즘: 퀵·병합·기수 정렬부터 Timsort까지</title><link>https://manxlog.pages.dev/posts/sorting-algorithms/</link><guid isPermaLink="true">https://manxlog.pages.dev/posts/sorting-algorithms/</guid><description>기본 정렬 알고리즘의 동작과 복잡도, 퀵 정렬과 병합 정렬의 비교, 안정 정렬, 외부 정렬, Timsort를 정리한다.</description><pubDate>Sun, 16 Apr 2023 00:00:00 GMT</pubDate><category>algorithm</category><category>sorting</category></item><item><title>시간 복잡도와 공간 복잡도</title><link>https://manxlog.pages.dev/posts/time-and-space-complexity/</link><guid isPermaLink="true">https://manxlog.pages.dev/posts/time-and-space-complexity/</guid><description>시간·공간 복잡도의 의미와 Big-O, Big-Ω, Big-θ 표기법의 차이, Big-O를 주로 쓰는 이유를 정리한다.</description><pubDate>Sun, 16 Apr 2023 00:00:00 GMT</pubDate><category>data-structure</category><category>algorithm</category></item><item><title>트리와 이진 탐색 트리</title><link>https://manxlog.pages.dev/posts/tree-and-binary-search-tree/</link><guid isPermaLink="true">https://manxlog.pages.dev/posts/tree-and-binary-search-tree/</guid><description>트리와 이진 트리의 개념, 이진 탐색 트리의 탐색·삽입·중위 순회 구현과 편향 문제, 그래프와의 차이를 정리한다.</description><pubDate>Sun, 16 Apr 2023 00:00:00 GMT</pubDate><category>data-structure</category><category>tree</category><category>python</category></item><item><title>PostgreSQL Vacuum 이해와 AutoVacuum 튜닝</title><link>https://manxlog.pages.dev/posts/postgresql-vacuum-autovacuum/</link><guid isPermaLink="true">https://manxlog.pages.dev/posts/postgresql-vacuum-autovacuum/</guid><description>PostgreSQL의 MVCC에서 Dead Tuple이 쌓이는 이유와 Vacuum 동작, AutoVacuum 실행 조건과 튜닝을 정리한다.</description><pubDate>Tue, 28 Feb 2023 00:00:00 GMT</pubDate><category>database</category><category>postgresql</category></item><item><title>Thread Scheduling: 경합 범위 PCS와 SCS</title><link>https://manxlog.pages.dev/posts/os-thread-scheduling/</link><guid isPermaLink="true">https://manxlog.pages.dev/posts/os-thread-scheduling/</guid><description>스레드 스케줄링의 대상과 LWP의 역할, 경합 범위인 PCS와 SCS의 차이와 장단점을 정리한다.</description><pubDate>Wed, 15 Feb 2023 00:00:00 GMT</pubDate><category>os</category><category>thread</category><category>scheduling</category></item><item><title>프로세스 주소 공간과 Stack이 높은 주소부터 할당되는 이유</title><link>https://manxlog.pages.dev/posts/os-process-address-space/</link><guid isPermaLink="true">https://manxlog.pages.dev/posts/os-process-address-space/</guid><description>Stack·Heap·Data·Text 영역의 역할과 Stack이 Heap보다 빠른 이유, Stack이 높은 주소에서 자라는 이유를 정리한다.</description><pubDate>Mon, 13 Feb 2023 00:00:00 GMT</pubDate><category>os</category><category>process</category><category>memory</category></item><item><title>Django TestCase 커스터마이징: 멀티 테넌트 환경에서 기존 DB로 테스트하기</title><link>https://manxlog.pages.dev/posts/django-custom-test-case/</link><guid isPermaLink="true">https://manxlog.pages.dev/posts/django-custom-test-case/</guid><description>스키마를 분리한 멀티 테넌트 Django 프로젝트에서 TestRunner와 TestCase를 커스터마이징해 기존 DB 데이터로 테스트하는 환경을 만든 과정.</description><pubDate>Wed, 23 Nov 2022 00:00:00 GMT</pubDate><category>django</category><category>testing</category><category>python</category></item><item><title>Facade 패턴</title><link>https://manxlog.pages.dev/posts/facade-pattern/</link><guid isPermaLink="true">https://manxlog.pages.dev/posts/facade-pattern/</guid><description>여러 저수준 인터페이스를 하나의 고수준 인터페이스로 묶는 Facade 패턴을 컴퓨터 부팅 예제로 정리한다.</description><pubDate>Tue, 15 Nov 2022 00:00:00 GMT</pubDate><category>design-pattern</category><category>oop</category><category>java</category></item><item><title>SQL 레벨업 Ch.9 — 갱신과 데이터 모델</title><link>https://manxlog.pages.dev/posts/sql-levelup-ch09-update-and-data-model/</link><guid isPermaLink="true">https://manxlog.pages.dev/posts/sql-levelup-ch09-update-and-data-model/</guid><description>상관 서브쿼리, 다중 필드 할당, 윈도우 함수로 UPDATE와 INSERT SELECT를 효율적으로 작성하는 방법을 정리했다.</description><pubDate>Tue, 30 Aug 2022 00:00:00 GMT</pubDate><category>sql</category><category>subquery</category><category>query-optimization</category><category>book</category></item><item><title>SQL 레벨업 Ch.10 — 인덱스 사용</title><link>https://manxlog.pages.dev/posts/sql-levelup-ch10-index/</link><guid isPermaLink="true">https://manxlog.pages.dev/posts/sql-levelup-ch10-index/</guid><description>B-Tree 인덱스의 특징, 카디널리티와 선택률 기준, 인덱스가 듣지 않는 조건과 커버링 인덱스로 대처하는 방법을 정리했다.</description><pubDate>Tue, 30 Aug 2022 00:00:00 GMT</pubDate><category>sql</category><category>index</category><category>query-optimization</category><category>book</category></item><item><title>SQL 레벨업 Ch.8 — SQL의 순서</title><link>https://manxlog.pages.dev/posts/sql-levelup-ch08-order-and-procedural/</link><guid isPermaLink="true">https://manxlog.pages.dev/posts/sql-levelup-ch08-order-and-procedural/</guid><description>윈도우 함수의 순번으로 중앙값과 단절 구간을 구하는 쿼리, 시퀀스 객체와 IDENTITY 필드의 성능 문제를 정리했다.</description><pubDate>Fri, 19 Aug 2022 00:00:00 GMT</pubDate><category>sql</category><category>query-optimization</category><category>book</category></item><item><title>SQL 레벨업 Ch.7 — 서브쿼리</title><link>https://manxlog.pages.dev/posts/sql-levelup-ch07-subquery/</link><guid isPermaLink="true">https://manxlog.pages.dev/posts/sql-levelup-ch07-subquery/</guid><description>서브쿼리가 성능을 떨어뜨리는 이유와, 윈도우 함수로 결합과 테이블 접근 횟수를 줄이는 방법을 정리했다.</description><pubDate>Thu, 18 Aug 2022 00:00:00 GMT</pubDate><category>sql</category><category>subquery</category><category>query-optimization</category><category>book</category></item><item><title>SQL 레벨업 Ch.6 — 결합</title><link>https://manxlog.pages.dev/posts/sql-levelup-ch06-join/</link><guid isPermaLink="true">https://manxlog.pages.dev/posts/sql-levelup-ch06-join/</guid><description>Nested Loops, Hash, Sort Merge 세 가지 결합 알고리즘의 동작 방식과 각각이 유리한 상황을 정리했다.</description><pubDate>Thu, 11 Aug 2022 00:00:00 GMT</pubDate><category>sql</category><category>join</category><category>query-optimization</category><category>book</category></item><item><title>SQL 레벨업 Ch.4~5 — 집약과 자르기, 반복문</title><link>https://manxlog.pages.dev/posts/sql-levelup-ch04-05-aggregation-and-loops/</link><guid isPermaLink="true">https://manxlog.pages.dev/posts/sql-levelup-ch04-05-aggregation-and-loops/</guid><description>GROUP BY와 PARTITION BY의 차이, 반복계와 포장계의 장단점, 윈도우 함수와 재귀 CTE로 반복을 대신하는 방법을 정리했다.</description><pubDate>Mon, 08 Aug 2022 00:00:00 GMT</pubDate><category>sql</category><category>query-optimization</category><category>book</category></item><item><title>SQL 레벨업 Ch.3 — SQL의 조건 분기</title><link>https://manxlog.pages.dev/posts/sql-levelup-ch03-conditional-branching/</link><guid isPermaLink="true">https://manxlog.pages.dev/posts/sql-levelup-ch03-conditional-branching/</guid><description>UNION으로 나누던 조건 분기를 CASE 식으로 바꿔 테이블 접근을 줄이는 방법과 UNION이 유리한 경우를 정리했다.</description><pubDate>Wed, 03 Aug 2022 00:00:00 GMT</pubDate><category>sql</category><category>query-optimization</category><category>book</category></item><item><title>SQL 레벨업 Ch.1 — DBMS 아키텍처</title><link>https://manxlog.pages.dev/posts/sql-levelup-ch01-dbms-architecture/</link><guid isPermaLink="true">https://manxlog.pages.dev/posts/sql-levelup-ch01-dbms-architecture/</guid><description>버퍼와 로그, 워킹 메모리, 옵티마이저가 실행 계획을 고르는 과정까지 DBMS 내부 구조를 정리했다.</description><pubDate>Mon, 01 Aug 2022 00:00:00 GMT</pubDate><category>sql</category><category>database</category><category>book</category></item><item><title>JDBC 트랜잭션에서 스프링 트랜잭션 동기화와 트랜잭션 AOP까지</title><link>https://manxlog.pages.dev/posts/spring-transaction-sync-and-aop/</link><guid isPermaLink="true">https://manxlog.pages.dev/posts/spring-transaction-sync-and-aop/</guid><description>커넥션을 파라미터로 넘기던 JDBC 트랜잭션을 트랜잭션 매니저와 @Transactional로 개선하는 과정을 정리한다.</description><pubDate>Thu, 07 Jul 2022 00:00:00 GMT</pubDate><category>spring</category><category>jdbc</category><category>transaction</category></item><item><title>JDBC로 CRUD 구현하기와 커넥션 풀, DataSource</title><link>https://manxlog.pages.dev/posts/jdbc-crud-connection-pool-datasource/</link><guid isPermaLink="true">https://manxlog.pages.dev/posts/jdbc-crud-connection-pool-datasource/</guid><description>순수 JDBC로 CRUD를 구현하며 커넥션과 리소스 정리를 이해하고, 커넥션 풀과 DataSource로 개선한다.</description><pubDate>Mon, 04 Jul 2022 00:00:00 GMT</pubDate><category>spring</category><category>jdbc</category><category>java</category></item><item><title>서블릿 Part와 MultipartFile로 파일 업로드 처리하기</title><link>https://manxlog.pages.dev/posts/spring-multipart-file-upload/</link><guid isPermaLink="true">https://manxlog.pages.dev/posts/spring-multipart-file-upload/</guid><description>서블릿 Part로 multipart 요청을 직접 처리해 보고, 스프링 MultipartFile이 이를 얼마나 단순하게 만드는지 비교한다.</description><pubDate>Sun, 03 Jul 2022 00:00:00 GMT</pubDate><category>spring</category><category>spring-mvc</category><category>servlet</category></item><item><title>스프링 인터셉터와 예외 발생 시 오류 페이지 흐름</title><link>https://manxlog.pages.dev/posts/spring-interceptor-and-error-page/</link><guid isPermaLink="true">https://manxlog.pages.dev/posts/spring-interceptor-and-error-page/</guid><description>인터셉터의 호출 시점과 로그인 체크 구현, 예외가 WAS까지 전달된 뒤 오류 페이지가 다시 요청되는 흐름을 정리한다.</description><pubDate>Tue, 14 Jun 2022 00:00:00 GMT</pubDate><category>spring</category><category>spring-mvc</category><category>servlet</category></item><item><title>가상 메모리: Paging과 Segmentation, TLB</title><link>https://manxlog.pages.dev/posts/os-virtual-memory-paging-segmentation/</link><guid isPermaLink="true">https://manxlog.pages.dev/posts/os-virtual-memory-paging-segmentation/</guid><description>가상 주소 매핑의 원리부터 Paging, TLB, Segmentation, 둘을 결합한 Hybrid 방식까지 주소 변환 과정을 비교한다.</description><pubDate>Wed, 08 Jun 2022 00:00:00 GMT</pubDate><category>os</category><category>memory</category><category>virtual-memory</category></item><item><title>메모리 관리: 주소 바인딩과 연속 메모리 할당</title><link>https://manxlog.pages.dev/posts/os-memory-management/</link><guid isPermaLink="true">https://manxlog.pages.dev/posts/os-memory-management/</guid><description>주소 바인딩 시점, 고정·가변 분할 방식과 단편화, 최초·최적·최악 적합 배치 전략과 통합·압축을 정리한다.</description><pubDate>Tue, 07 Jun 2022 00:00:00 GMT</pubDate><category>os</category><category>memory</category></item><item><title>세션 직접 만들어 보기와 HttpSession</title><link>https://manxlog.pages.dev/posts/spring-session-login/</link><guid isPermaLink="true">https://manxlog.pages.dev/posts/spring-session-login/</guid><description>세션 저장소를 직접 구현해 동작 원리를 이해하고, HttpSession과 @SessionAttribute 사용법을 정리한다.</description><pubDate>Sat, 04 Jun 2022 00:00:00 GMT</pubDate><category>spring</category><category>spring-mvc</category><category>servlet</category></item><item><title>오브젝트 Ch.13 — 서브클래싱과 서브타이핑</title><link>https://manxlog.pages.dev/posts/object-ch13-subclassing-and-subtyping/</link><guid isPermaLink="true">https://manxlog.pages.dev/posts/object-ch13-subclassing-and-subtyping/</guid><description>is-a 관계의 한계와 행동 호환성, 인터페이스 분리 원칙, 리스코프 치환 원칙으로 올바른 타입 계층의 기준을 정리한다.</description><pubDate>Thu, 02 Jun 2022 00:00:00 GMT</pubDate><category>oop</category><category>design</category><category>java</category><category>book</category></item><item><title>교착 상태: 발생 조건과 해결 방법</title><link>https://manxlog.pages.dev/posts/os-deadlock/</link><guid isPermaLink="true">https://manxlog.pages.dev/posts/os-deadlock/</guid><description>교착 상태의 네 가지 발생 조건과 자원 할당 그래프, 예방·회피(은행가 알고리즘)·탐지와 회복의 장단점을 정리한다.</description><pubDate>Wed, 01 Jun 2022 00:00:00 GMT</pubDate><category>os</category><category>deadlock</category><category>concurrency</category></item><item><title>오브젝트 Ch.10, 12 — 상속과 코드 재사용, 다형성</title><link>https://manxlog.pages.dev/posts/object-ch10-12-inheritance-and-polymorphism/</link><guid isPermaLink="true">https://manxlog.pages.dev/posts/object-ch10-12-inheritance-and-polymorphism/</guid><description>코드 재사용을 위한 상속이 위험한 이유와, 동적 메서드 탐색과 self 참조로 다형성이 동작하는 방식을 정리한다.</description><pubDate>Fri, 20 May 2022 00:00:00 GMT</pubDate><category>oop</category><category>design</category><category>java</category><category>book</category></item><item><title>오브젝트 Ch.6 — 메시지와 인터페이스</title><link>https://manxlog.pages.dev/posts/object-ch06-messages-and-interfaces/</link><guid isPermaLink="true">https://manxlog.pages.dev/posts/object-ch06-messages-and-interfaces/</guid><description>메시지·오퍼레이션·메서드의 구분, 디미터 법칙과 그 한계, 명령-쿼리 분리 원칙을 예제 코드와 함께 정리한다.</description><pubDate>Wed, 18 May 2022 00:00:00 GMT</pubDate><category>oop</category><category>design</category><category>java</category><category>book</category></item><item><title>오브젝트 Ch.8 — 의존성 관리하기</title><link>https://manxlog.pages.dev/posts/object-ch08-managing-dependencies/</link><guid isPermaLink="true">https://manxlog.pages.dev/posts/object-ch08-managing-dependencies/</guid><description>런타임·컴파일타임 의존성의 차이와 의존성 해결 방법, 추상화에 의존해야 하는 이유와 new의 해로움을 정리한다.</description><pubDate>Wed, 18 May 2022 00:00:00 GMT</pubDate><category>oop</category><category>design</category><category>java</category><category>book</category></item><item><title>오브젝트 Ch.9 — 유연한 설계</title><link>https://manxlog.pages.dev/posts/object-ch09-flexible-design/</link><guid isPermaLink="true">https://manxlog.pages.dev/posts/object-ch09-flexible-design/</guid><description>개방-폐쇄 원칙, FACTORY와 PURE FABRICATION, 의존성 주입과 SERVICE LOCATOR, 의존성 역전 원칙을 정리한다.</description><pubDate>Wed, 18 May 2022 00:00:00 GMT</pubDate><category>oop</category><category>design</category><category>java</category><category>book</category></item><item><title>오브젝트 Ch.5 — 책임 할당하기</title><link>https://manxlog.pages.dev/posts/object-ch05-assigning-responsibilities/</link><guid isPermaLink="true">https://manxlog.pages.dev/posts/object-ch05-assigning-responsibilities/</guid><description>책임 중심 설계와 GRASP의 CREATOR 패턴, 그리고 코드에서 변경의 이유를 찾아 클래스를 분리하는 방법을 정리한다.</description><pubDate>Tue, 17 May 2022 00:00:00 GMT</pubDate><category>oop</category><category>design</category><category>java</category><category>book</category></item><item><title>오브젝트 Ch.3~4 — 역할, 책임, 협력 / 설계 품질과 트레이드오프</title><link>https://manxlog.pages.dev/posts/object-ch03-04-responsibility-and-tradeoffs/</link><guid isPermaLink="true">https://manxlog.pages.dev/posts/object-ch03-04-responsibility-and-tradeoffs/</guid><description>협력이 책임을, 메시지가 객체를 결정한다는 책임 주도 설계의 관점과 데이터 중심 설계의 문제점을 정리한다.</description><pubDate>Tue, 10 May 2022 00:00:00 GMT</pubDate><category>oop</category><category>design</category><category>book</category></item><item><title>오브젝트 Ch.2 — 객체지향 프로그래밍</title><link>https://manxlog.pages.dev/posts/object-ch02-object-oriented-programming/</link><guid isPermaLink="true">https://manxlog.pages.dev/posts/object-ch02-object-oriented-programming/</guid><description>메시지와 메서드, 컴파일·실행 시점 의존성의 차이, 상속과 합성, 추상화를 영화 예매 예제로 정리한다.</description><pubDate>Mon, 09 May 2022 00:00:00 GMT</pubDate><category>oop</category><category>design</category><category>java</category><category>book</category></item><item><title>오브젝트 Ch.1 — 객체, 설계</title><link>https://manxlog.pages.dev/posts/object-ch01-objects-and-design/</link><guid isPermaLink="true">https://manxlog.pages.dev/posts/object-ch01-objects-and-design/</guid><description>캡슐화와 의존성 관점에서 객체지향 설계를 정리하고, TicketOffice 예제를 인터페이스 분리로 직접 개선해 본다.</description><pubDate>Sun, 08 May 2022 00:00:00 GMT</pubDate><category>oop</category><category>design</category><category>java</category><category>book</category></item><item><title>뮤텍스와 세마포, 모니터</title><link>https://manxlog.pages.dev/posts/os-mutex-semaphore-monitor/</link><guid isPermaLink="true">https://manxlog.pages.dev/posts/os-mutex-semaphore-monitor/</guid><description>뮤텍스와 세마포의 동작과 차이, 대기 큐로 Busy waiting을 없애는 방법, 모니터의 구조와 Java의 모니터를 정리한다.</description><pubDate>Tue, 03 May 2022 00:00:00 GMT</pubDate><category>os</category><category>concurrency</category><category>thread</category></item><item><title>경쟁 상태와 상호 배제: Thread Safe, 데커·피터슨 알고리즘</title><link>https://manxlog.pages.dev/posts/os-mutual-exclusion/</link><guid isPermaLink="true">https://manxlog.pages.dev/posts/os-mutual-exclusion/</guid><description>경쟁 상태가 생기는 이유를 생산자-소비자 문제로 살펴보고, Thread Safe 조건과 데커·피터슨 알고리즘, 원자적 연산을 정리한다.</description><pubDate>Tue, 03 May 2022 00:00:00 GMT</pubDate><category>os</category><category>concurrency</category><category>process</category><category>thread</category></item><item><title>E/R 모델 설계 원칙 정리</title><link>https://manxlog.pages.dev/posts/database-design-principles/</link><guid isPermaLink="true">https://manxlog.pages.dev/posts/database-design-principles/</guid><description>충실성, 중복 회피, 단순성, 관계 선택, Weak Entity Set까지 E/R 설계에서 지켜야 할 원칙을 예시와 함께 정리한다.</description><pubDate>Fri, 29 Apr 2022 00:00:00 GMT</pubDate><category>database</category><category>modeling</category></item><item><title>의존성 주입(DI)과 스프링 컨테이너</title><link>https://manxlog.pages.dev/posts/spring-di-and-container/</link><guid isPermaLink="true">https://manxlog.pages.dev/posts/spring-di-and-container/</guid><description>생성자 주입으로 DI를 이해하고, 스프링 빈 등록·조회 방법과 컨테이너가 빈을 싱글톤으로 관리하는 이유를 정리한다.</description><pubDate>Fri, 29 Apr 2022 00:00:00 GMT</pubDate><category>spring</category><category>java</category><category>oop</category></item><item><title>System.out 대신 SLF4J로 로그 남기기</title><link>https://manxlog.pages.dev/posts/spring-logging-with-slf4j/</link><guid isPermaLink="true">https://manxlog.pages.dev/posts/spring-logging-with-slf4j/</guid><description>System.out.println 대신 SLF4J 로거를 써야 하는 이유와 로그 레벨 설정, Lombok @Slf4j 사용법을 정리한다.</description><pubDate>Fri, 29 Apr 2022 00:00:00 GMT</pubDate><category>spring</category><category>logging</category></item><item><title>FrontController 패턴과 핸들러 어댑터로 스프링 MVC 구조 이해하기</title><link>https://manxlog.pages.dev/posts/spring-mvc-front-controller-and-handler-adapter/</link><guid isPermaLink="true">https://manxlog.pages.dev/posts/spring-mvc-front-controller-and-handler-adapter/</guid><description>FrontController와 핸들러 어댑터를 직접 구현해 보며 DispatcherServlet이 요청을 처리하는 구조를 이해한다.</description><pubDate>Fri, 29 Apr 2022 00:00:00 GMT</pubDate><category>spring</category><category>spring-mvc</category><category>servlet</category></item><item><title>@ModelAttribute와 PRG 패턴으로 폼 요청 처리하기</title><link>https://manxlog.pages.dev/posts/spring-mvc-model-attribute-and-prg/</link><guid isPermaLink="true">https://manxlog.pages.dev/posts/spring-mvc-model-attribute-and-prg/</guid><description>@RequestParam에서 @ModelAttribute로 폼 처리 코드를 줄이고, PRG와 RedirectAttributes로 중복 등록을 막는다.</description><pubDate>Fri, 29 Apr 2022 00:00:00 GMT</pubDate><category>spring</category><category>spring-mvc</category></item><item><title>SOLID 원칙과 OCP·DIP를 지키는 방법</title><link>https://manxlog.pages.dev/posts/spring-solid-ocp-dip/</link><guid isPermaLink="true">https://manxlog.pages.dev/posts/spring-solid-ocp-dip/</guid><description>객체지향 5원칙을 정리하고, 역할과 구현을 나눠도 깨지는 OCP·DIP를 AppConfig로 해결하는 과정을 살펴본다.</description><pubDate>Fri, 29 Apr 2022 00:00:00 GMT</pubDate><category>spring</category><category>oop</category><category>java</category></item><item><title>쓰레드 풀과 싱글톤 서블릿의 동시성 문제</title><link>https://manxlog.pages.dev/posts/thread-pool-and-singleton-concurrency/</link><guid isPermaLink="true">https://manxlog.pages.dev/posts/thread-pool-and-singleton-concurrency/</guid><description>WAS의 쓰레드 풀이 필요한 이유를 정리하고, 서블릿 멤버 변수에 model을 두면 왜 안 되는지 직접 부딪혀 본 기록.</description><pubDate>Fri, 29 Apr 2022 00:00:00 GMT</pubDate><category>spring</category><category>concurrency</category><category>servlet</category></item><item><title>트랜잭션의 ACID와 DBMS의 복구 전략: UNDO, REDO, WAL</title><link>https://manxlog.pages.dev/posts/transaction-acid-undo-redo-logging/</link><guid isPermaLink="true">https://manxlog.pages.dev/posts/transaction-acid-undo-redo-logging/</guid><description>ACID 속성을 짚고, DBMS가 버퍼 관리 정책과 로그로 원자성과 지속성을 보장하는 방식을 정리한다.</description><pubDate>Fri, 29 Apr 2022 00:00:00 GMT</pubDate><category>database</category><category>transaction</category></item><item><title>HTTP 메서드와 상태 코드: 멱등성, POST와 PUT의 차이</title><link>https://manxlog.pages.dev/posts/http-method-and-status-code/</link><guid isPermaLink="true">https://manxlog.pages.dev/posts/http-method-and-status-code/</guid><description>HTTP 메서드의 역할과 멱등성, POST·PUT·PATCH를 구분하는 기준, 헷갈리기 쉬운 상태 코드의 차이를 정리한다.</description><pubDate>Thu, 28 Apr 2022 00:00:00 GMT</pubDate><category>network</category><category>http</category><category>web</category></item><item><title>IP의 한계와 TCP·UDP, 3-Way Handshake</title><link>https://manxlog.pages.dev/posts/ip-tcp-udp/</link><guid isPermaLink="true">https://manxlog.pages.dev/posts/ip-tcp-udp/</guid><description>IP 프로토콜의 한계를 TCP가 어떻게 보완하는지와 TCP 플래그, 3-way handshake, SYN Flooding 대응 방법을 정리한다.</description><pubDate>Thu, 28 Apr 2022 00:00:00 GMT</pubDate><category>network</category><category>tcp-ip</category><category>security</category></item><item><title>JPA 변경 감지(dirty checking)와 병합(merge)</title><link>https://manxlog.pages.dev/posts/jpa-dirty-checking-and-merge/</link><guid isPermaLink="true">https://manxlog.pages.dev/posts/jpa-dirty-checking-and-merge/</guid><description>준영속 엔티티를 수정하는 두 가지 방법인 병합과 변경 감지의 차이, 그리고 변경 감지를 써야 하는 이유를 정리한다.</description><pubDate>Thu, 28 Apr 2022 00:00:00 GMT</pubDate><category>spring</category><category>jpa</category><category>java</category></item><item><title>프로세스와 PCB, 프로세스의 상태 변화</title><link>https://manxlog.pages.dev/posts/os-process-state/</link><guid isPermaLink="true">https://manxlog.pages.dev/posts/os-process-state/</guid><description>프로세스와 PCB의 역할, 생성부터 종료까지의 상태 전이와 스와핑, 리눅스의 프로세스 생성과 좀비·고아·데몬 프로세스를 정리한다.</description><pubDate>Thu, 28 Apr 2022 00:00:00 GMT</pubDate><category>os</category><category>process</category></item><item><title>프로세스 스케줄링: 단계와 알고리즘</title><link>https://manxlog.pages.dev/posts/os-scheduling/</link><guid isPermaLink="true">https://manxlog.pages.dev/posts/os-scheduling/</guid><description>장기·중기·단기 스케줄러와 선점 여부, FCFS·SJF·SRT·우선순위·RR·HRN·다단계 큐 알고리즘의 특징을 정리한다.</description><pubDate>Thu, 28 Apr 2022 00:00:00 GMT</pubDate><category>os</category><category>scheduling</category><category>process</category></item><item><title>스레드: 사용자·커널 수준 스레드와 Thread Pool, Fork-Join</title><link>https://manxlog.pages.dev/posts/os-thread/</link><guid isPermaLink="true">https://manxlog.pages.dev/posts/os-thread/</guid><description>스레드의 개념과 TCB, 사용자 수준과 커널 수준 스레드의 차이와 매핑 모델, Thread Pool과 Fork-Join을 정리한다.</description><pubDate>Thu, 28 Apr 2022 00:00:00 GMT</pubDate><category>os</category><category>thread</category></item><item><title>운영체제의 유형</title><link>https://manxlog.pages.dev/posts/os-types/</link><guid isPermaLink="true">https://manxlog.pages.dev/posts/os-types/</guid><description>일괄 처리부터 다중 프로그래밍, 시분할, 다중 처리, 실시간, 분산 처리까지 운영체제 유형별 목표와 특징을 정리한다.</description><pubDate>Thu, 28 Apr 2022 00:00:00 GMT</pubDate><category>os</category></item><item><title>해시 테이블: 해시 함수와 충돌 처리</title><link>https://manxlog.pages.dev/posts/hash-table/</link><guid isPermaLink="true">https://manxlog.pages.dev/posts/hash-table/</guid><description>해시 함수 설계 방법과 로드 팩터, 체이닝·오픈 어드레싱·이중 해싱 등 해시 충돌 처리 방식을 정리한다.</description><pubDate>Wed, 27 Apr 2022 00:00:00 GMT</pubDate><category>data-structure</category><category>hash</category></item><item><title>힙(Heap)과 우선순위 큐</title><link>https://manxlog.pages.dev/posts/heap/</link><guid isPermaLink="true">https://manxlog.pages.dev/posts/heap/</guid><description>완전 이진 트리 기반 힙의 성질과 배열 구현, 삽입·삭제 과정, 힙 정렬, 파이썬 heapq 사용법을 정리한다.</description><pubDate>Wed, 27 Apr 2022 00:00:00 GMT</pubDate><category>data-structure</category><category>tree</category><category>python</category></item><item><title>연결 리스트(Linked List)</title><link>https://manxlog.pages.dev/posts/linked-list/</link><guid isPermaLink="true">https://manxlog.pages.dev/posts/linked-list/</guid><description>연결 리스트의 구조와 배열과의 차이, 원형·이중 연결 리스트를 정리하고 파이썬으로 단순 연결 리스트를 구현한다.</description><pubDate>Wed, 27 Apr 2022 00:00:00 GMT</pubDate><category>data-structure</category><category>python</category></item><item><title>스택과 큐: 원형 큐 구현과 덱</title><link>https://manxlog.pages.dev/posts/stack-and-queue/</link><guid isPermaLink="true">https://manxlog.pages.dev/posts/stack-and-queue/</guid><description>스택·큐·덱의 특징을 정리하고, 선형 큐의 빈 공간 문제를 해결하는 원형 큐를 파이썬 배열로 구현한다.</description><pubDate>Wed, 27 Apr 2022 00:00:00 GMT</pubDate><category>data-structure</category><category>python</category></item></channel></rss>