개요SMTP(Simple Mail Transfer Protocol)는 메일 전송 프로토콜이다. Simple Mail Transfer Protocol - WikipediaFrom Wikipedia, the free encyclopedia Internet protocol used for relaying e-mails Simple Mail Transfer ProtocolAbbreviationSMTPPurposeElectronic mail transmission protocolIntroductionNovember 1981; 43 years ago (1981-11)OSI layerApplication layerPort(s)en.wikipedia.org Gmail SMTP 서버를 사용할 경우, 기본 사용자명/비밀..
전체 글
Studying archive https://github.com/ChoMinGi개요Spring MVC를 사용하면서 자연스럽게 사용하고 있는 것이 바로 @Controller, @GetMapping, @PostMapping과 같은 애너테이션 기반 컨트롤러 매핑이다. 그러나 내부적으로 이 컨트롤러들이 실제로 어떻게 등록되고 매핑되는지 이해하는 개발자는 많지 않다.이번 글에서는 Spring MVC가 내부적으로 어떻게 컨트롤러를 등록하고, 요청이 왔을 때 어떻게 적절한 컨트롤러 메서드를 찾아 실행하는지 살펴본다. DispatcherServlet 이란?Spring MVC에서 가장 중요한 클래스는 바로 DispatcherServlet이다. DispatcherServlet은 프론트 컨트롤러 역할을 하며, 모든 요청의 진입점이다. 이해를 하기 위해서는 구동 시점에 따라서 어떤 일이 발생하는지를 확..
개요Part 1 에서는 쿠폰 발급 로직을 전략 패턴을 통해 분리하고 서비스 레이어를 명확히 나누어 유지보수성과 확장성을 향상시킨 내용을 다루었다. 이번 포스팅에서는 쿠폰 발급의 빈도(IssuanceFrequency)와 제한 조건을 전략 패턴을 이용해 보다 유연하고 효율적으로 관리하는 방법을 소개하려고한다. 쿠폰 시스템의 특성을 자세히 생각해본다면 "얼마나, 누구한테, 언제, 쿠폰을 발급할 것인가?" 이다.따라서 발급 빈도와 제한 조건을 명확히 정의해야지, 이벤트 쿠폰이나 회원가입 축하 쿠폰 등 다양한 조건과 상황에 유연하게 대응이 가능해진다. 예를 들어, 최근 클라이언트가 요청한 특정 기간에만 발급되는 신규 가입 이벤트 쿠폰의 경우를 살펴보자.클라이언트 요청은 특정 기간(예: 3월 23일~3월 31..
개요사실 블로깅할 소재가 쌓여있다.. 인턴하면서 국제화 리팩터링 한 건도 그렇고 알림/메일링 서버도,,, 사업보안인증을 위해서 메인서버 취약점을 고쳤던 소재도 남아있는데,, 클라이언트께서 신학기 맞이 이벤트를 준비하시면서 첫회원가입시에 발급하는 쿠폰 옵션 변경 요청이 들어왔는데 나름 유연하게 리팩터링 해놨던 터라 무려 10분도 안되어서 대응을 완료했기 때문에 겸사겸사 작성을 해본다. 실제 운영을 하면서 개발자로서 가장 고민되는 부분은, 클라이언트의 갑작스러운 요청사항에 얼마나 빠르고 효율적으로 대응할 수 있는가이다. 최근 클라이언트로부터 '신학기 맞이 이벤트'를 위한 쿠폰 옵션 변경 요청을 받았다. 다행히도 이전에 쿠폰 발급 전략을 기간별, 이벤트별, 회원별로 유연하게 관리할 수 있도록 설계해둔 덕분..
비트마스킹 기본 연산1.1 특정 비트 확인 (Check)boolean isSet = (mask & (1 `1 `&` 연산을 통해 i번째 비트가 1인지 0인지 확인 가능.1.2 특정 비트 세팅 (Set)mask |= (1 i번째 비트를 1로 설정한다.1.3 특정 비트 해제 (Clear)mask &= ~(1 i번째 비트를 0으로 만든다.1.4 특정 비트 뒤집기 (Toggle)mask ^= (1 i번째 비트를 1이면 0, 0이면 1로 바꾼다. /2 대신 >> 1, *2 대신 `/2` 연산은 `>> 1`로 대체 가능`*2` 연산은 `컴파일러가 대부분 최적화하므로 큰 체감은 없을 수 있으나, 간단한 비트 연산을 직접 사용하면 의도를 더 명확히 드러낼 수 있음. 방문 배열(visited) 대체 개념기존에는 bo..
서론: 왜 직접 HTTP 서버를 만들어보는가?웹 개발을 할 때 우리는 대부분 Spring Boot 같은 프레임워크를 사용하여 서버를 구축한다.Spring Boot는 내부적으로 Tomcat, Jetty 같은 내장 서버를 사용하기 때문에, HTTP 요청이 어떻게 처리되는지 직접 고민할 일이 거의 없다. 그러나 만약 내장 서버가 없다면? 어떻게 동작하는지 예상이 가는가?? 라는 질문에 내가 대답하지 못했어서 시작하게 되었다. HTTP 서버의 동작 원리를 직접 구현해 본다면Socket 프로그래밍: 클라이언트와 서버 간의 데이터 전송 원리멀티스레딩 기초: 여러 클라이언트 요청을 동시에 처리하는 방법HTTP 프로토콜 구조: HTTP 요청(Request)과 응답(Response)의 동작원리 및 기본적인 웹 서버의 구..