2025
-   AI - LangChain과 4-bit LLM으로 RAG 구축  
-   AI - Colab(T4)에서 Llama 3 8B 모델 4비트 양자화(NF4)로 구동  
-   AI - Colab 에서 LLM 실행  
-   TroubleShooting - Colab: The secret `HF_TOKEN` does not exist in your Colab secrets.  
-   AI - 생성형 인공지능 원리  
-   AI - 숫자 생성 인공지능  
-   AI - 전염병 예측 인공지능  
-   AI - 숫자 인식 인공지능 만들기  
-   AI - 딥러닝 개발 환경: Tensorflow, Keras, GPU  
-   Docker - 우분투 가상 머신에 도커 설치  
-   AI - 파이썬(2): 반복문, 조건문, 딕셔너리, 리스트 컴프리헨션, 람다, map(), filter(), 클래스/객체  
-   AI - 파이썬(1): 변수, 배열, NumPy  
-   AI - 파이썬과 코랩(Colab)  
-   AI - 다양한 딥러닝 기술: CNN, RNN, 디퓨전 모델  
-   AI - 텐서플로 플레이그라운드로 딥러닝 시작  
-   AI - 인공 신경망의 학습 원리: 오차, 경사 하강법, 오차 역전파법  
-   AI - 인공 신경망 신호 전달 원리: 가중치, 편향, 활성화 함수  
-   AI - 수학 없이 이해하는 딥러닝, 인공 신경망의 기본 원리  
-   Coroutine - 코루틴 단위 테스트(2): `backgroundScope`  
-   AI - 인공지능 개념 이해  
-   Coroutine - 코루틴 단위 테스트(1): 코루틴 테스트 라이브러리 runTest()  
-   Coroutine - 실행 제어와 공유 상태의 동시성 문제(2): Unconfined 디스패처, `Continuation`  
-   구글 엔지니어는 이렇게 일한다: 지속 가능한 코드를 위한 규칙과 지침  
-   구글 엔지니어는 이렇게 일한다: 엔지니어링 생산성 측정 및 개선  
-   구글 엔지니어는 이렇게 일한다: 시니어 엔지니어링 리더십  
-   구글 엔지니어는 이렇게 일한다: 성공적인 엔지니어링 리더십 로드맵  
-   구글 엔지니어는 이렇게 일한다: 공정 사회를 위한 엔지니어링  
-   구글 엔지니어는 이렇게 일한다: 지식 공유  
-   구글 엔지니어는 이렇게 일한다: 팀워크  
-   구글 엔지니어는 이렇게 일한다: 소프트웨어 엔지니어링  
-   Coroutine - 실행 제어와 공유 상태의 동시성 제어(1): Mutex, Atomic, CoroutineStart  
-   리버스 엔지니어링(Reverse-Engineering)  
-   Architecture - 모놀리스에서 MSA 로 가는 2가지 방법  
-   Architecture - 전략적 모놀리스: 잘못된 시스템의 리팩토링  
-   Coroutine - 스레드 양보: 서브루틴과 실행 스레드 전환  
-   Coroutine - 일시 중단 함수  
-   Coroutine - 예외 처리(2): 예외 처리 방법  
-   Architecture - 분산 시스템을 위한 이벤트 중심 아키텍처 설계  
-   Coroutine - 예외 처리(1): 예외 전파 제한 방법  
-   팬아웃(fan-out)  
-   Architecture - 아키텍처의 유연성을 높이는 핵심 설계 원칙과 품질 속성  
-   Architecture - 도메인 모델링의 핵심 구성 요소와 전술적 접근의 중요성  
-   Coroutine - 구조화된 동시성과 부모-자식 관계(3): `runBlocking()` 과 `launch() 차이`  
-   Docker - 도커를 이해하기 위한 사전 지식과 핵심 개념  
2024
-   Facade(퍼사드)  
-   Architecture - 컨텍스트 통합을 위한 매핑 전략  
-   Docker, Kubernetes - 우분투 환경 구성  
-   Coroutine - 구조화된 동시성과 부모-자식 관계(2): CoroutineScope 와 Job 의 계층  
-   Coroutine - 구조화된 동시성과 부모-자식 관계(1): 실행 환경 상속, 코루틴의 구조화  
-   Architecture - 비즈니스 컨텍스트의 경계: 전략적 분할과 유비쿼터스 언어  
-   Architecture - 도메인: 비즈니스 지식의 전략적 구조화  
-   DDD(1) - 데이터 메시(Data Mesh)  
-   DDD(1) - 이벤트 주도 아키텍처(EDA, Event-Driven Architecture)  
-   Architecture - 전략적 학습을 위한 도구  
-   Coroutine - CoroutineContext 구조, 접근, 제거  
-   Architecture - 디지털 트랜스포메이션  
-   DDD(1) - 마이크로서비스  
-   DDD(1) - 실무에서의 DDD  
-   Coroutine - async(), Deferred  
-   Coroutine - 코루틴 빌더, Job  
-   DDD(1) - 이벤트 스토밍  
-   Coroutine - CoroutineDispatcher  
-   Coroutine - 코루틴 개발환경 셋팅  
-   체이닝 함수: CompletableFuture  
-   뮤텍스와 세마포어  
-   Coroutine - 기존 스레드의 한계와 코루틴  
-   Kafka - 스트림 처리(3): 토폴로지, 스트림 처리 프레임워크  
-   Kafka - 스트림 처리(2): 카프카 스트림즈 예시  
-   DDD(1) - 진화하는 설계 의사 결정  
-   DDD(1) - 휴리스틱 설계  
-   DDD(1) - 커뮤니케이션 패턴(모델 변환, 아웃박스 패턴, 사가 패턴)  
-   Kafka - 스트림 처리(1): 스트림 처리 개념, 스트림 처리 디자인 패턴  
-   DDD(1) - 아키텍처 패턴(계층형 / 포트와 어댑터 / CQRS)  
-   Kafka - 모니터링: 지표, SLO, 브로커 지표, 클라이언트 모니터링, lag 모니터링  
-   Kafka - 운영(2): 파티션 관리  
-   Kafka - 운영(1): 토픽 작업, 컨슈머 그룹 작업, 동적 설정 변경  
-   Kafka - 보안(2): 암호화, 인가, 감사  
-   Kafka - 보안(1): 보안 프로토콜(TLS, SASL), 인증(SSL, SASL)  
-   DDD(1) - 이벤트 소싱 도메인 모델 패턴  
-   Kafka - 데이터 미러링(2): 미러메이커  
-   Tips - 화장실 유리 청소  
-   Kafka - 데이터 미러링(1): 다중 클러스터 아키텍처  
-   DDD(1) - 도메인 모델 패턴  
-   Kafka - 데이터 파이프라인(2): 카프카 커넥트  
-   DDD(1) - 트랜잭션 스크립트 패턴, 액티브 레코드 패턴  
-   Kafka - 데이터 파이프라인(1): 데이터 파이프라인 구축 시 고려사항, 카프카 커넥트와 카프카 클라이언트  
-   DDD(1) - 바운디드 컨텍스트 연동  
-   Kafka - 멱등적 프로듀서, 트랜잭션  
-   Kafka - 신뢰성 있는 데이터 전달, 복제  
-   Kafka - 내부 메커니즘(2): 파티션 할당, 인덱스, 보존 정책, 로그 압착  
-   Kotlin - 코틀린 빌드  
-   Kotlin - DSL(2): `invoke()` 관례, 실전 DSL  
-   Kotlin - DSL(1): 수신 객체 지정 람다  
-   DDD(1) - 도메인 복잡성 관리: 바운디드 컨텍스트  
-   Kotlin - 애너테이션과 리플렉션(3): 애너테이션으로 직렬화 제어, 리플렉션으로 역직렬화 구현  
-   Kotlin - 애너테이션과 리플렉션(2): 리플렉션 API, 리플렉션으로 직렬화 구현  
-   DDD(1) - 비즈니스 지식 찾기: 유비쿼터스 언어  
-   Kotlin - 애너테이션과 리플렉션(1): 애너테이션  
-   Kafka - 내부 메커니즘(1): 컨트롤러, `KRaft`, 복제, 요청 처리  
-   DDD(1) - 비즈니스 도메인 분석  
-   Kafka - 코드로 관리(2): 컨슈머 그룹 관리, 클러스터 메타데이터, 고급 어드민 작업, 테스트  
-   Kafka - 코드로 관리(1): `AdminClient` 생성/수정/닫기, 토픽 관리, 설정 관리  
-   Kafka - 컨슈머(3): 폴링 루프 벗어나기, 디시리얼라이저, 컨슈머 그룹없이 컨슈머 사용  
-   Kafka - 컨슈머(2): 오프셋, 커밋, 리밸런스 리스너, 특정 오프셋의 레코드 조회  
-   Kafka - 컨슈머(1): 컨슈머 그룹, 리밸런스, 컨슈머 생성, 토픽 구독, 폴링 루프, 컨슈머 설정, 파티션 할당 전략  
-   Kafka - 프로듀서(2): 시리얼라이저, 파티션, 파티셔너, 헤더, 인터셉터, 쿼터, 스로틀링  
-   Kafka - 프로듀서(1): 프로듀서 생성, 프로듀서 설정  
-   Kafka - 카프카 브로커 설치, 브로커 설정  
-   Kafka - 카프카 용어, 장점, 이용 사례  
-   Clean Architecture - 의식적으로 지름길 사용  
-   Clean Architecture - 아키텍처 경계 강제 (ArchUnit, 빌드 아티팩트)  
-   Clean Architecture - 설정 컴포넌트  
-   Clean Architecture - 경계 간 매핑 전략  
-   Clean Architecture - 테스트  
-   Clean Architecture - 영속성 어댑터 구현, 트랜잭션, 포트 인터페이스  
-   Clean Architecture - 웹 어댑터 구현  
-   Clean Architecture - 유스케이스, 입력 유효성 검증, 비즈니스 유효성 검증, 입출력 모델  
-   Clean Architecture - 패키징 구성  
-   Clean Architecture - 단일 책임 원칙(SRP)과 의존성 역전 (DIP)  
-   Clean Architecture - 계층형 아키텍처 문제점  
-   DDD - CQRS  
-   DDD - 이벤트(2): 비동기 이벤트 처리  
-   DDD - 이벤트(1): 이벤트, 핸들러, 디스패처  
-   DDD - 바운디드 컨텍스트  
-   Git commit message convention  
-   DDD - 애그리거트의 트랜잭션, 선점 잠금, 비선점 잠금, 오프라인 선점 잠금  
-   DDD - 도메인 서비스  
-   DDD - 표현 영역, 응용 영역, 값 검증, 권한 검사  
-   DDD - 스펙(2): 스펙 조합, Sort, 페이징(Pageable), 스펙 빌더 클래스, 동적 인스턴스 생성, @Subselect, @Immutable, @Synchronize  
-   DDD - 스펙(1): 스펙 구현, 스펙 사용  
-   DDD - 리포지터리(2): 애그리거트 로딩 전략, 애그리거트 영속성 전파  
-   DDD - ERD  
-   DDD - 리포지터리(1): 엔티티와 JPA 매핑 구현, 엔티티와 밸류 매핑(@Embeddable, @AttributeOverrides, AttributeConverter), 기본 생성자, 필드 접근 방식(@Access), 밸류 컬렉션 매핑  
-   DDD - 애그리거트, 애그리거트 루트, 도메인 이벤트, 애그리거트 참조, 애그리거트 간 집합 연관, 애그리거트를 팩토리로 사용  
-   DDD - 표현/응용/도메인/인프라스트럭처 영역, DIP, 도메인 영역의 주요 구성 요소, 애그리거트, 모듈 구성  
-   DDD - 도메인 모델, 도메인 모델 패턴, 도메인 모델 도출 과정, 엔티티와 밸류  
-   Kotlin - 지연 계산 초기화('lazy()'), 늦은 초기화('lateinit', '.isInitialized'), backing field, backing property  
-   Kotlin - 프로퍼티 위임, 'ReadOnlyProperty', 'ReadWriteProperty', 프로퍼티 위임 도구 (Delegates.observable(), Delegates.vetoable(), Delegates.notNull()), 위임 프로퍼티 컴파일  
-   Kotlin - 연산자 오버로딩, 'infix', 가변 컬렉션에 '+=', '+' 적용, Comparable, 구조 분해 연산자  
-   Kotlin - 제네릭스(2): 'reified', 타입 변성 'in'/'out', 공변과 무공변, 타입 프로젝션, 스타 프로젝션  
-   Kotlin - 제네릭스(1): Any, 타입 정보 보존, 제네릭 확장 함수, 타입 파라미터 제약, 타입 소거  
-   Kotlin - 'inline'  
-   Kotlin - 확장 람다, StringBuilder, buildString(), 영역 함수  
-   Kotlin - 에러 방지(2): 자원 해제('use()'), Logging, 단위 테스트  
-   Kotlin - 에러 방지(1): 커스텀 에러 타입 정의, 'require()', 'check()', Nothing 타입, 'TODO()'  
-   Kotlin - 객체 지향 프로그래밍(5): object, inner class, 'this@클래스명', companion object  
-   Kotlin - 객체 지향 프로그래밍(4): 타입 검사, 타입 검사 코딩, 내포된 클래스(nested class)  
-   Kotlin - 객체 지향 프로그래밍(3): 클래스 위임, 상속/합성/클래스 위임, 다운 캐스트('is', 'as'), 봉인된 클래스('sealed')  
-   Kotlin - 객체 지향 프로그래밍(2): 추상 클래스, 업캐스트, 다형성, 합성, 합성과 상속, 상속과 확장, 어댑터 패턴, 멤버 함수와 확장 함수  
-   Kotlin - 객체 지향 프로그래밍(1): 인터페이스, SAM(fun interface), init, 부생성자, 상속, 기반클래스 초기화  
-   Kotlin - 함수형 프로그래밍(3): Sequence, Local 함수, 확장 함수, 익명 함수, fold(), 재귀  
-   Kotlin - 함수형 프로그래밍(2): 고차 함수, 리스트 조작, Map  
-   Kotlin - 함수형 프로그래밍(1): 람다, 컬렉션 연산, 멤버 참조, 최상위 함수와 프로퍼티  
-   Kotlin - 함수(2): null 이 될 수 있는 타입, 안전한 호출, 널 아님 단언, 엘비스 연산자, 널 아님 단언, 확장 함수, 제네릭스, 확장 프로퍼티  
-   Kotlin - 함수(1): 확장 함수, 오버로딩, when, enum, data 클래스, 구조 분해 선언  
-   Kotlin - 객체: 생성자, 패키지, 리스트, 배열, 스프레드 연산자('*'), Set, Map, 클래스, 프로퍼티 접근자, 가시성 변경자  
-   Kotlin - 코틀린 기본 - 데이터 타입, 문자열, 반복문, `in` 키워드, 자바-코틀린 변환  
-   Spring Security - 전역 메서드 보안: 사전/사후 권한 필터  
-   Spring Security - 전역 메서드 보안: 사전/사후 권한 부여  
-   Spring Security - OAuth 2(3): JWT 와 암호화 서명  
-   Spring Security - OAuth 2(2): 권한 부여 서버 구현  
-   Spring Security - OAuth 2: 승인 코드 그랜트 유형을 이용한 간단한 SSO App 구현  
-   Spring Security - OAuth 2(1): Grant 유형  
-   Spring Security - BE, FE 분리된 설계의 애플리케이션 구현  
-   Spring Security - CORS (Cross-Site Resource Sharing, 교차 출처 리소스 공유)  
2023
-   Spring Security - CSRF (Cross-Site Request Forgery, 사이트 간 요청 위조)  
-   Spring Security - 필터  
-   Spring Security - 권한 부여(2): 경로, HTTP Method 에 따른 엑세스 제한  
-   Spring Security - 권한 부여(1): 권한과 역할에 따른 액세스 제한  
-   Spring Security - 간단한 애플리케이션 구현  
-   Spring Security - 인증 구현(3): HTTP Basic 인증  
-   Spring Security - 인증 구현(2): SecurityContext  
-   Spring Security - 인증 구현(1): AuthenticationProvider  
-   Spring Security - 암호 처리  
-   Spring Security - 사용자 관리  
-   Spring Security - 스프링 시큐리티 기본 구성 요소  
-   Spring Security - 웹 애플리케이션의 보안  
-   TroubleShooting - Kafka: could not be established. Broker may not be available.  
-   Spring Boot - 스프링 이벤트  
-   Spring Boot - 스케쥴링 태스크  
-   Spring Boot - Redis 와 스프링 캐시(5): Sorting  
-   Spring Boot - Redis 와 스프링 캐시(4): 스프링 프레임워크 Cache  
-   Spring Boot - Redis 와 스프링 캐시(3): 분산락, CyclicBarrier  
-   Spring Boot - Redis 와 스프링 캐시(2): RedisTemplate 설정  
-   Spring Boot - Redis 와 스프링 캐시(1): Spring Data Redis, Lettuce  
-   Spring Boot - REST-API 호출  
-   Spring Boot - 데이터 영속성(6): 엔티티 상태 이벤트 처리, 트랜잭션 생명주기 동기화 작업  
-   Spring Boot - 데이터 영속성(5): EntityManager  
-   Spring Boot - 데이터 영속성(4): 트랜잭션과 @Transactional  
-   Spring Boot - 데이터 영속성(3): JpaRepository, 쿼리 메서드  
-   Spring Boot - 데이터 영속성(2): 엔티티 클래스 설계  
-   Spring Boot - 데이터 영속성(1): JPA, Spring Data JPA  
-   Spring Boot - 스프링 부트 테스트  
-   Spring Boot - AOP  
-   Docker 관련 명령어들  
-   Spring Boot - 웹 애플리케이션 구축 (5): 국제화 메시지 처리, 로그 설정, 애플리케이션 패키징과 실행  
-   Spring Boot - 웹 애플리케이션 구축 (4): application.properties, Profile 설정  
-   Spring Boot - 웹 애플리케이션 구축 (3): Interceptor, ServletFilter  
-   Spring Boot - 웹 애플리케이션 구축 (2): HttpMessageConverter, ObjectMapper  
-   Spring Boot - 웹 애플리케이션 구축 (1): WebMvcConfigurer 를 이용한 설정, DispatcherServlet 설정