Java Optional 대신 Kotlin null 처리와 확장 함수 사용하기
·
SpringBoot
Java / Spring -> Kotlin / SpringOptional은 JDK8에서 등장한 null이 될 가능성을 가진 값을 wrapping 하기 위해 생긴 타입으로,NPE를 피하기 위해서 Optional을 적극적으로 사용해왔다.반면 코틀린에서는 타입 시스템에서 ? 를 활용해 null 가능성을 판단할 수 있기 때문에 Optional을 대신할 수 있다. 그러나 CrudRepository의 findById와 같은 메서드의 경우 Optional 값을 반환하고 있으므로기존 자바 코드를 코틀린으로 변환하는 과정에서 예외 처리를 해야할 때 orElseThrow()와 같은 Optional의 메서드들에 종속되게 된다. 이처럼 Kotlin과 CrudRepository를 함께 사용할 때 이런 상황에 대비하여스프링에서..
백준 문제 풀면서 Kotlin과 친해지기 (2)
·
카테고리 없음
코틀린으로 아래 문자열 관련 문제를 풀다가계속 메모리 초과가 떠서 그대로 C++로 바꿔서 제출하니 바로 맞았다고 떠버렸다. (내 시간)최대한 최적화 해본다고 시도해봤는데, 대회 사이트에 들어가보니 테스트 케이스가 많기도하고메모리 제한이 작아서 아무래도 자바 계열이 메모리를 많이 잡아먹으니 쉽지 않은듯 하다풀어서 블로그에 기록하려했는데 아쉽게 됐다.. 나중에 시간나면 다시 해봐야될듯 백준 17479 정식당난이도: 실버3태그: 구현, 해시를 사용한 맵풀이 날짜: 2025.05.13https://www.acmicpc.net/problem/17479아래 제약들을 유의하고, 가격 변수 타입은 Long 으로 설정하기특별메뉴는 일반메뉴에서 총 20,000원 이상을 주문해야 주문할 수 있다. 서비스메뉴는 일반메뉴와 ..
[Design Pattern] Strategy Pattern(전략 패턴) 정리
·
카테고리 없음
아래 교재를 바탕으로 디자인 패턴을 정리한 글입니다 헤드 퍼스트 디자인 패턴 | 에릭 프리먼 - 교보문고헤드 퍼스트 디자인 패턴 | 유지관리가 편리한 객체지향 소프트웨어 만들기! 『헤드 퍼스트 디자인 패턴(개정판)』 한 권이면 충분합니다!이유 1. 흥미로운 이야기와 재치 넘치는 구성이 담긴 〈product.kyobobook.co.kr 전략 패턴 정의동일한 계열의 알고리즘들(알고리즘 군)을 정의하고 캡슐화해서 각각의 알고리즘 군을 수정해서 쓸 수 있게 한다.클라이언트는 독립적으로 원하는 알고리즘을 선택하여 사용할 수 있으며,클라이언트에 영향 없이 알고리즘의 변경이 가능하다.알고리즘 군 : 동일한 목적을 달성하기 위한 다양한 방식들의 집합예시 : 데이터를 암호화하는 목적을 가진 암호화 방식들(알고리즘 군: ..
백준 문제 풀면서 Kotlin과 친해지기 (1)
·
카테고리 없음
백엔드 개발자로 성장하기 위해서 코틀린을 배워두면 참 좋다. 괜히 코프링 코프링 하는게 아니다.어떻게 하면 코틀린과 친해질 수 있을까하고 고민하다가생각한 것이 코틀린으로 백준 문제를 풀어보면서 계속 감을 익히기! 원래는 C++로만 알고리즘 문제를 푸는데, 풀었던 문제들을 블로그에 계속 반강제로 기록하면서지속적으로 Kotlin을 다룰 수 있게끔 익숙해지고자 한다. 저번에 코틀린으로 코드를 제출했는데 너무 오래 걸려서,C++로 바꿔서 풀었더니 바로 맞았습니다 뜨는 거 보고 솔직히 암 걸릴 뻔했지만 이것도 수련의 한 과정그래도 간편하게 작성할 수 있는 점은 참 좋은거 같다. 백준 18870 좌표 압축난이도: 실버2태그: 정렬, 값 / 좌표 압축풀이 날짜: 2025.04.07https://www.acmicpc..
Protocol Buffer와 인코딩/디코딩 그리고 gRPC 내부 통신 동작 원리
·
gRPC
gRPC는 JSON이나 XML과 같은 텍스트 형식을 사용하는 대신 Protocol Buffer 기반 바이너리 프로토콜을 사용하므로 훨씬 프로세스 간 통신에 효율적이다. 이러한 점 외에도 여러 가지 장점들이 존재하는데, 개발자로써 그렇구나 하고 넘어가는 것보다는정의한 .proto 파일은 어떻게 직렬화되고, gRPC는 이를 내부적으로 어떻게 처리할까?라는 궁금증들을 해소하고 싶었다. 그래서 이번 글에서는 단순히 사용법이 아니라, 좀 더 들어가서 내부적으로 저수준의 동작 원리들에 대해 공부한 내용들을 기록하고자 한다. Protocol Buffer프로토콜 버퍼(Protocol Buffer = protobuf)란 구조화된 데이터를 직렬화하고자 언어에 구애 받지 않고플랫폼 중립적이며 확장 가능한 메커니즘인 데이터 ..
gRPC 통신 구현해보기 (서버 : Java / 클라이언트 : Go)
·
gRPC
환경 구성gRPC의 원리를 이해하고 실습하기 위해 아래와 같은 방식으로 진행하였습니다. gRPC 클라이언트에 해당하는 Go 언어 기반의 클라이언트의 경우,특별한 웹 프레임워크(ex. Gin)을 사용하지 않고 순수하게 Go 언어의 기본 라이브러리와 gRPC 패키지를 사용해 코드를 작성하였습니다.Go 언어를 사용한 이유는 기본적으로 다양한 프로그래밍 언어를 지원하기 때문에 Java로만 gRPC 서버와 클라이언트를 구성하기 보다는 다른 언어로도 통신 과정을 구현해보고 싶었습니다. (사실은 Go 언어와 친해지고 싶었음)  그리고 Java 기반의 gRPC 서버는 Spring Boot와 함께 환경을 구축하였습니다.예제로 보고있는 교재처럼 별도의 프레임워크 없이 순수 Gradle Project로 gRPC 서버를 구성..
RPC 통신과 gRPC
·
gRPC
gRPC 시작에서 운영까지 | 카순 인드라시리 - 교보문고gRPC 시작에서 운영까지 | 클라우드 및 마이크로서비스 아키텍처의 출현으로 오늘날 애플리케이션은 프로세스간 통신 기술을 사용해 연결되며, gRPC는 가장 널리 사용되는 효율적인 통신 기술 중product.kyobobook.co.kr위 책의 내용과 별도로 공부한 내용들을 정리하고자 작성한 글입니다.  IPC프로세스들은 기본적으로 상호독립적이다.메모리를 공유하지 않기 때문에 각자 자신의 일만 수행하며 서로 간섭을 하지 않는다.그러나 필요에 따라서 프로세스 간 정보를 교환해야 하는데,별도의 수단을 통해서 프로세스 간 통신을 하는 방법론을 통칭하여 IPC(Inter Process Communication)라고 한다.   RPC위와 같은 프로세스 간 통신..
Redis 캐싱을 사용하여, 일일 조회수와 좋아요 증감 수를 반영한 일일 HOT 상품 목록 조회 기능 개발
·
SpringBoot
해당 기능을 개발한 이유 위와 같이 몇몇 증권사들은 각 금융상품에 대해서 청약 경쟁률을 보여주나, 대부분은 제공하고 있지 않고 있었습니다. 청약 경쟁률 조회 API를 증권사에서 제공해서 사용하면 좋겠지만, 사업자 등록증이나 별도의 승인이 필요하거나 API를 제공하지 않았습니다...ㅠㅠ 투자에 참고하기 이러한 좋은 기능을 저희 서비스에 녹여내고 싶었고, 실제 투자자분들의 의견을 수집하고, 타 서비스를 조사하면서 결과적으로 저희 서비스만의 기능으로 일일 HOT 상품 목록 조회 기능을 개발하고자 하였습니다.   일일 HOT 상품 판별 요소 선정과 비율 반영 그렇다면, 일일 HOT 상품들을 사용자에게 보여주기 위해서 어떤 요소들로 어떤 기준을 가지고 보여줘야 할지 고민이 되었습니다. 저희 서비스 테두리 안에서 ..
소프트웨어 마에스트로 15기 수료식
·
SW마에스트로
드디어 수료식!!!수료식은 발대식과 동일하게 양재에 위치한 엘타워에서 진행하였습니다! 장소에 도착해서 엘베에서 내리니깐 아래 사진처럼 이쁜 부스들이 반기고 있었는데,6개월동안 팀 프로젝트를 하면서, 외부 심사 위원님들에게 기획 심의 -> 중간 발표 -> 최종 발표를 받고 우수 프로젝트로 선정된 팀들의프로젝트를 구경할 수 있는 시간을 가질 수 있었습니다. 쭉 보면서 우리 팀도 저 자리에 있었으면 좋았을텐데라는 아쉬움이 없다고 하면 거짓말이겠지만... 정말 팀원들과 주말 빼고 거의 매일 센터에 상주해서 개발하고 회의하면서목표로 했던 기술적인 성장뿐만 아니라 프로젝트 전반적으로 전에는 해보지 못했던 많은 점들을배우고 경험할 수 있어서 후회는 없다고 생각합니다. 근데.. 인증자 분들은 미국 CES 2025 탐방..
비효율적인 상품 상세 검색 코드 수정과 nGrinder를 활용한 성능 테스트
·
SpringBoot
문제소마 프로젝트를 진행하던 도중, 팀원으로부터 오류 제보를 받았습니다.저희 서비스에서 제공하고 있는 상품 상세 검색 기능에서 종목 유형에 대한 세부 검색 요청시,이에 해당하는 상품들을 받아오지 못하는 오류가 발생하는 문제였습니다.  잠시 저희 서비스에 대해서 간략하게 설명 드리자면,주요 여러 증권사에서 발행하고 있는 금융 파생 상품 중에 하나인 ELS(Equity Linked Securities, 주가연계증권) 상품을통합하고 데이터 분석 기법 및 AI를 활용한 중립적인 분석 정보를 제공하는 서비스입니다.  아래와 같이 각 상품마다 기초자산들이 존재하는데왼쪽 사진의 S&P500, KOSPI, HSCEI와 같은 주가 지수형인 경우와,오른쪽 사진과 같이 삼성전자, 현대차와 같은 단일 주식들로 이루어진 종목형..