[Functional Programming]
✅ 쿠폰독 서비스 구현, part: 1원민관님 친구 추천 수를 확인해 보자는 것이다. 친구가 없기로 유명하기에 good 쿠폰을 받을 가능성이 높다. 객체 형식의 데이터로부터 문자열로 이루어진 쿠폰 랭크를 리턴하는 단순한 구조의 함수이다. 핵심은, 해당 로직은 '데이터'
✅ 쿠폰독 서비스 구현, part: 1

원민관님 친구 추천 수를 확인해 보자는 것이다. 친구가 없기로 유명하기에 good 쿠폰을 받을 가능성이 높다. 객체 형식의 데이터로부터 문자열로 이루어진 쿠폰 랭크를 리턴하는 단순한 구조의 함수이다. 핵심은, 해당 로직은 '데이터'와 '계산'으로만 이루어졌다는 것이다.
뻥 안치고 우리 할머니도 이해할 수 있는 파트이기에 가볍게 넘어간다.
✅ 쿠폰독 서비스 구현, part: 2

쿠폰 목록이 몇 개 있다고 가정하자. 만 원 할인(best), 오천 원 할인(good), 3회 무료(best), 1회 무료(good) 등.
한마디로, rank에 맞는 쿠폰 목록을 꺼내오자는 것이다. coupons는 배열의 데이터 구조일 것이고, 전체 쿠폰을 톺아보다가 내가 원하는 rank와 일치하는 쿠폰 요소가 있으면 빈 배열인 ret에 추가하자는 로직이다.
쉽다 쉬워, 오늘부터 나도 함수형 프로그래머?!
✅ 쿠폰독 서비스 구현, part: 3

✍️ 구독자가 받을 이메일을 계획하는 함수 - emailForSubscriber
subCouponRank 함수에 원민관을 전달하면 rank는 good 일 것이다. 왜냐면 처음에 친구가 없을 것이라고 얘기했기에 rec_count가 10미만일 것이기 때문이다. 따라서 emailForSubscriber 함수는, else 문에서 작성한 이메일 데이터를 반환하게 될 것이다.
✍️ 보낼 이메일 목록을 준비하는 함수 - emailForSubscriber's'
일단 구독자 배열을 인자로 설정한다. 배열에 원민관, 홍길동, 브라이언 이런 식으로 있다고 치자고. 동시에 subscriber라는 변수에 해당 인자의 데이터를 인덱싱한다. for 문에서 선언한 subscriber 변수에 가장 처음 원민관이 들어갈 것이다.
위에서 만든 emailForSubscriber에 구독자를 ~~한 마리씩~~ 한 분씩 대입해 본다. 참고로 selectCouponsByRank 함수를 돌리면 랭크에 맞는 쿠폰 목록이 반환된다. 다시 말하자면 ``var email = emailForSubscriber(원민관, 굿쿠폰 목록, 베스트 쿠폰 목록)`` 이런 상황이다. 길동이랑 브라이언 형님에 대한 이메일도 만들어질 테니, 모든 이메일을 이메일s라는 배열에 넣어주겠다는 것이다.
✍️ 이메일을 실제로 전송하는 함수 - sendIssue
1. DB에서 모든 쿠폰 정보를 가져온다. 2. 가져온 쿠폰에서 good 쿠폰을 선택한다. 3. 가져온 쿠폰에서 best 쿠폰을 선택한다. 4. DB에서 모든 구독자 정보를 가져온다. 5. emailsForSubscribers(구독자 목록, good 쿠폰 목록, best 쿠폰 목록) -> emailForSubscriber(원민관, good 쿠폰 목록, best 쿠폰 목록) -> emails 배열 매핑하며 이메일 보내기 반복
✅ 쿠폰독 서비스 구현, part: Advanced

깐깐징어 사수 등장!

네~ 구독자 정보 한 번에 안 가져오면 그만이죠? 0페이지, 1페이지, 2페이지... 페이지마다 구독자 정보를 20명씩 가져온다고 가정하면 호들갑 떨 일 없죠?
✅ 회고

필자가 심신미약 시절 제주도에서 직접 촬영한 날씨 알려주는 돌멩이다. 적중률 100%는 무의미하다는 것을 잘 보여주는 사진이다. 뻔한 말은 하지 않는 것이 좋고, 뻔한 길은 애써 무시해 보는 것도 괜찮다. 누군가가 젊은 날의 치기라고 비난할지라도, 당연히 뻔해질 필요는 없다. 어차피 고민하고 한 말이 아닐 가능성이 높으니까. 100%는 아무것도 고민하지 않겠다는 뜻과 동일하다.
More to read
프론트엔드와 백엔드 사이
HTTP 상태 코드는 프론트엔드에서 백엔드로 보냈던 요청의 수행 결과를 의미하는 일종의 약속이며, API를 구성하는 핵심 요소 중 하나입니다. 상태 코드와 관련하여, 백엔드는 잘 모르는 프론트엔드의 슬픈 사정이 있습니다.아래는 요청이 실패했음에도, 백엔드에서 상태 코드
JWT토큰 관리 방식 톺아보기
0. 들어가며 🎯 서비스에 접근하려는 사용자가 누구인지 확인하는 과정을 사용자 인증이라고 합니다. 인증된 사용자에게 주어진 권한을 확인하는 작업은 인가라고 부릅니다. 이번 글에서는 인가는 다루지 않습니다. 사용자 인증에는 많은 방식이 있지만, 오늘은 세션 인증 방
A2AA2A / MCP 멀티 에이전트 오케스트레이션
0. 들어가며 ✍️ Google for Developers에, 레스토랑 공급망 시나리오로 엮은 6대 프로토콜(MCP, A2A, UCP, AP2, A2UI, AG-UI)에 대한 가이드가 게시된 이후, MCP와 A2A부터 구현해 보는 것이 좋을 것 같다는 생각이 들었습니