DEV
웹개발에 관한 글들.
2024
- Kotlin - 객체 지향 프로그래밍(1): 인터페이스, init, 부생성자, 상속, 기반클래스 초기화
- Kotlin - 함수형 프로그래밍(3): Sequence, Local 함수, fold(), 재귀
- Kotlin - 함수형 프로그래밍(2): 고차 함수, 리스트 조작, Map 생성
- Kotlin - 함수형 프로그래밍(1): 람다, 컬렉션 연산, 멤버 참조
- Kotlin - 함수(2): null 이 될 수 있는 타입, 안전한 호출, 엘비스 연산자, 널 아님 단언, 확장 함수, 제네릭스 확장 프로퍼티
- Kotlin - 함수(1): 확장 함수, 오버로딩, when, enum, data 클래스, 구조분해
- Kotlin - 객체
- Kotlin - 코틀린 기본
- 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 - 웹 애플리케이션의 보안
- Kafka - 카프카 프로듀서
- Kafka - 카프카 프로듀서(2): 시리얼라이저, 파티션, 헤더, 인터셉터, 쿼터/스로틀링
- Kafka - 카프카 프로듀서(1): 프로듀서, 메시지 전달, 프로듀서 설정
- TroubleShooting - Kafka: could not be established. Broker may not be available.
- Kafka - 카프카 설치
- Kafka - 카프카 기본
- 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 설정
- Java - Java 8 ~ Java 17
- Java8 - 날짜와 시간
- Java8 - CompletableFuture (2): 비동기 연산의 파이프라인화
- Java8 - CompletableFuture (1): Future, 병렬화 방법
- Java8 - Optional 클래스
- Java8 - 디폴트 메서드
- Java8 - 람다 테스팅, 디버깅
- Java8 - 리팩토링, 디자인 패턴
- Java8 - Stream 으로 병렬 데이터 처리 (2): Spliterator 인터페이스
- Java8 - Stream 으로 병렬 데이터 처리 (1): 병렬 스트림, 포크/조인 프레임워크
- Java8 - Stream 으로 데이터 수집 (2): Quiz
- Java8 - Stream 으로 데이터 수집 (2): Partitioning, Collector 인터페이스, Custom Collector
- Java8 - Stream 으로 데이터 수집 (1): Collectors 클래스, Reducing 과 Summary, Grouping
- Java8 - Stream 활용 (2): Quiz (2)
- Java8 - Stream 활용 (2): Quiz (1)
- Java8 - Stream 활용 (2): 리듀싱, 숫자형 스트림, 스트림 생성
- Java8 - Stream 활용 (1): 필터링, 슬라이싱, 매핑, 검색, 매칭
- Java8 - Stream
- Java8 - 람다 표현식 (2): 메서드 레퍼런스, 람다 표현식과 메서드의 조합
- Java8 - 람다 표현식 (1): 함수형 인터페이스, 형식 검사
- Java8 - 동작 파라메터화
- Java8 - Java8 이란?
- Spring Boot - REST-API with Spring MVC (2): POST/PUT 메서드 매핑, Pageable/Sort, 검증, 예외처리, 미디어 콘텐츠 다운로드
- Spring Boot - REST-API with Spring MVC (1): GET/DELETE 메서드 매핑, 응답 메시지 처리(마셜링)
- Spring Boot - HTTP, Spring Web MVC 프레임워크, REST-API
- REST-API
- Spring Boot - Spring bean, Spring bean Container, 의존성
- Spring Boot - MSA 와 Spring Boot
- NestJS - 테스트 자동화
- NestJS - 클린 아키텍처
- NestJS - Metadata(Reflection Class)
- NestJS - Custom Parameter Decorator
- NestJS - CQRS
- NestJS - Health Check
- NestJS - Task Scheduling
- NestJS - Middleware, Guard, Interceptor, Pipe, ExceptionFilter 그리고 Life Cycle
- NestJS - Interceptor
- NestJS - Exception Filter
- NestJS - Logging
- NestJS - Custom Provider
- NestJS - Guard, JWT
- 인증, JWT, Sliding Session, Refresh Token
- NestJS - Middleware
- Typescript - TypeORM vs Sequelize
- NestJS - Database, TypeORM
- NestJS - Pipe, Validation
- IoC(제어 반전), DI(의존성 주입)
- NestJS - 동적 모듈로 환경변수 구성
- NestJS - Module 설계
- NestJS - Provider, Scope
- NestJS - Interface
- 관점 지향 프로그래밍 (AOP, Aspect-Oriented Programming)
- Decorator
- Event Loop
- TroubleShooting - Nestjs: Failed to execute command: npm install --silent
- Nestjs - 기본
- AWS - Security (2): VPC Traffic Mirroring, WAF
- AWS - Security (1): Security Group, ACL, VPC Flow Log
- IP check 의 여러 가지 방법
- AWS - Network 연결 옵션 (5): AWS Direct Connect
- AWS - Network 연결 옵션 (4): Route 53 DNS Resolver (DNS 해석기)
2022
- AWS - Network 연결 옵션 (3): Transit Gateway (전송 게이트웨이)
- ping 옵션
- AWS - Network 연결 옵션 (2): VPN
- AWS - Network 연결 옵션 (1): VPC Peering
- AWS - Load Balancing (4): Global Accelerator
- AWS - Load Balancing (3): CloudFront
- AWS - Load Balancing (2): Route 53
- AWS - Load Balancing (1): ELB
- AWS - Internet
- AWS - VPC (2): Endpoint
- AWS - VPC (1): 기초
- AWS - Infra
- Redis - Redis 튜닝
- Redis - Redis Cluster & Monitoring (3)
- Redis - Redis Cluster & Monitoring (2)
- Redis - Redis Cluster & Monitoring (1)
- Redis - 아키텍쳐
- Redis - 데이터 모델링
- Redis - Transaction, Index, User Authentication
- Redis - RedisJSON
- Redis - HyperLogLog
- Redis - Geo
- Redis - Bit
- Redis - Sorted Set
- Redis - Set
- Redis - List
- Redis - Hash
- Redis 기본, 데이터 처리 명령어, String
- NoSQL 개념
- Rancher Desktop (Docker Desktop 유료화 대응)
- Node.js - Express 로 SNS 서비스 구현 (Passport, multer)
2021
- Node.js - mongoDB, mongoose
- Node.js - MySQL, 시퀄라이즈
- Node.js - Express (2): 라우터, 템플릿 엔진
- Node.js - Express (1): 미들웨어
- Node.js - 패키지 매니저 (package.json)
- Node.js - 기본 개념 (4): 이벤트, 예외처리
- Node.js - http 모듈로 서버 생성
- Node.js - 기본 개념 (3): 파일시스템
- Node.js - 기본 개념 (2): 멀티스레드
- eslint/prettier 셋팅 + Node.js - 기본 개념 (1): 내장 객체, 내장 모듈, util
- Typescript - 빅데이터 배치 프로그램
- Typescript - Generic 프로그래밍
- Typescript - ramda 라이브러리 (2)
- Typescript - ramda 라이브러리 (1)
- Typescript - 함수 조합
- Typescript - Promise, async/await
- Typescript - 반복기, 생성기
- Typescript - 배열, 튜플
- Typescript - 함수, 메서드
- Typescript - 객체, 타입
- Typescript - 기본
- ES2015+ (ES6+) 기본
- Node.js - 기본 개념
- Docker 개요
- 시스템과 인프라 기초 지식
- Spring Cloud - Sleuth, Open Zipkin 을 이용한 분산 추적 (4/4) - 로그 시각화를 위한 Open Zipkin 사용
- 이 블로그의 MSA 에 사용된 인스턴스 포트 정보 및 서비스 시작법
- Spring Cloud - Sleuth, Open Zipkin 을 이용한 분산 추적 (3/4) - 로그 추적을 위한 Sleuth 사용
- Spring Cloud - Sleuth, Open Zipkin 을 이용한 분산 추적 (2/4) - ELK 스택
- 소프트웨어 구분
2020
- 클라우드 컴퓨팅, IaaS, PaaS, Serverless, SaaS
- Spring Cloud - Sleuth, Open Zipkin 을 이용한 분산 추적 (1/4) - 이론
- 클라우드에서의 운영 - 12요소 애플리케이션
- Spring Cloud - Netflix Zuul(Ribbon) Retry
- Spring Cloud - Spring Cloud Eureka (상세 설정편)
- Spring Cloud - Hystrix (회복성 패턴)
- .gitlab-ci.yml 에 대하여
- GitLab CI/CD Pipeline 구성
- GitLab-Runner 설치 & 등록(Windows)
- Spring Cloud - Stream, 분산 캐싱 (2/2)
- Spring Cloud - Stream, 분산 캐싱 (1/2)
- Spring Cloud - OAuth2, Security(2/2)
- Spring Cloud - OAuth2, Security(1/2)
- Spring 어노테이션 정리
- Spring Cloud - Netflix Zuul(2/2)
- Spring Cloud - Netflix Zuul(1/2)
- Spring Cloud - Spring Cloud Eureka
- Spring Cloud - Spring Cloud Config Server
- Spring Cloud - Spring Cloud Feign
- Spring Cloud - Springboot Actuator
- Java Code Convention