전체 글

흔한 컴공 출신 개발자입니다. 제가 경험하고 공부하고 아는 것을 적어둡니다.
· JAVA/spring
0. 이 글을 작성하는 이유 엔티티 테스트 하는 방법에 대해 이게 맞는지는 잘 모르겠으나 내가 하고 있는 방식을 공유하고 정리하기 위함 1. 테스트 프레임워크 및 개발 환경 IntelliJ + spring boot 3.x 버전을 사용하면서 같이 들어있는 junit5를 사용 2. 엔티티의 구조 @Entity @Getter public class Bean { @Id @Column(name = "bean_id") @GeneratedValue(strategy = GenerationType.IDENTITY) private Long id; private String name; private Long price; @ManyToOne(fetch = FetchType.LAZY, cascade = CascadeType.A..
0. 이 글의 목적 https://github.com/0113bernoyoun/easy-discord-webhook-api GitHub - 0113bernoyoun/easy-discord-webhook-api Contribute to 0113bernoyoun/easy-discord-webhook-api development by creating an account on GitHub. github.com 이 프로젝트를 배포하면서 했던 일들 정리하기 위함이 목적 1. 구조 Slack은 라이브러리를 제공해 줘서 참 좋은데 discord는 이게 없다. 그래서 만들면 재미있겠다 싶어서 무작정 만들기 시작했다. 다행히 어떤 parameter가 어떤 역할을 하는지에 대해서는 잘 나와있다. https://birdie0..
0. 이 글의 목적 기존 정수원 님의 강의는 SpringBoot 2.x, Spring-batch 4.x 버전을 사용 중이었으나 최신은 SpringBoot 3.x, Spring-batch 5.x 버전이기에 나는 최신으로 하면서 동작하지 않는 코드와 최신 방법으로 코드를 변형하기 위함 1. Spring Batch의 전략 하나의 Job이 존재하며 이 Job은 여러 Step으로 구성된다. 각 Step에서의 실제 수행은 tasklet에서 이루어진다. 2. 그러면 무엇이 바뀌었는가 우선 StepBuilderFactory와 JobBuilderFactory가 deprecated되었다. 이제 직접 JobBuilder와 StepBuilder를 구현해야 한다. //@EnableBatchProcessing @Configura..
· JAVA/spring
0. 이 글을 작성하는 이유 slack webhook연동에 대한 글을 작성하다 discord에 대한 연동도 작성하면 재미있을 것 같아서 빠르게 메시지 한정으로 작성해 봅니다. 이 글을 읽기 전 이전 글을 읽고 오는 것을 추천합니다. 대부분의 구조를 동일하게 가져갑니다. https://developer-youn.tistory.com/149 spring + slack webhook 연동하기 0. 이 글을 작성하는 이유 서비스를 운영 중 문제가 발생했을 때 slack으로 알람을 주기 위해 webhook이 가장 구현이 편해서 공유하고자 함 1. 준비 과정 실은 아래 2개의 문서를 참고하면 잘 된다. 역 developer-youn.tistory.com 1. 웹훅 추가 슬랙과는 다르게 외부로 노출되지 않으므로 웹후..
0. 이 글에서 정리하고자 하는 내용 - 영속성 컨텍스트란 무엇인지 - EntityManager가 무엇인지 1. 개발 환경 준비 1-1. H2 설치 및 연동 http://h2database.com/html/main.html H2 Database Engine H2 Database Engine Welcome to H2, the Java SQL database. The main features of H2 are: Very fast, open source, JDBC API Embedded and server modes; in-memory databases Browser based Console application Small footprint: around 2.5 MB jar file size Supp h2da..
· JAVA/spring
0. 이 글을 작성하는 이유 서비스를 운영 중 문제가 발생했을 때 slack으로 알람을 주기 위해 webhook이 가장 구현이 편해서 공유하고자 함 1. 준비 과정 실은 아래 2개의 문서를 참고하면 잘 된다. 역시 공식문서가 잘 되어있으면 개발자가 편하다. https://slack.dev/java-slack-sdk/guides/web-api-client-setup Installation | Slack SDK for Java API Client Installation The first step to using the Slack API client is installing the slack-api-client module. This guide shows you how to set up using Maven,..
· JAVA/spring
0. 이 글을 쓰는 이유 강의에서는 SpringBoot 2.x버전과 junit4를 붙여서 테스트를 진행하는데 내 환경은 SpringBoot 3.x버전이라 @RunWith가 먹히지 않았고 @SpringBootTest 어노테이션 하나로 퉁칠 수 있다고 한다. 도대체 왜 그게 가능한지 간단하게 정리를 해보기 위해 이 글을 작성한다. 1. Junit4와 Junit5 그리고 SpringBoot 우선 Spring Boot 2.2.x 버전을 기점으로 이후 버전은 Junit5를, 이전 버전은 Junit4를 기본 테스트 모듈로 제공한다. Junit4는 모노리식 아키텍처로 되어있고 Junit5는 모듈화 된 아키텍처로 되어있다. Junit5의 주요 모듈은 크게 3가지로 Junit Platform, Junit Jupiter,..
0. 이 글을 쓰는 이유 오늘 두 차례 티스토리 문제를 겪고 나서 과연 뭐가 문제인지 추측을 하는 과정이 재미있어 정리를 해보고자 한다. 1. 문제 상황 크롬 브라우저에서는 티스토리에 대한 특정 url에 대해 문제가 발생한 후 새로고침을 해도 계속해서 페이지에서 400에러를 리턴하는 상황 하지만 다른 브라우저에서는 정상적으로 동작하거나 크롬 자체를 재부팅할 시 정상 동작을 함 2. 문제 의심 400에러가 왜 발생하는가에 집중을 해보자. 모질라에서는 400에러에 대해 발생 이유를 이렇게 설명해주고 있다. 보통 요청을 보낼 때 사용자에 대한 인식을 어떻게 하는지 상상을 해보면 브라우저의 쿠키에 저장한 후 해당 쿠키를 기준으로 판별을 진행한다. 과연 이 쿠키에서 문제가 발생하면 어떻게 될까? 아마 정해진 형식..
· JAVA/FP
0. 이 글을 적는 이유 제곧내..라고 하기엔 좀 없어 보이는데 진짜로 java(jdk 17 기준)에서 List를 대상으로 stream을 사용해 간단한 연산을 진행하는 경우 코드에서는 어떤 일이 발생하는지 궁금해서 메모하기 위함 1. 최초 진입(stream open) 이런 데이터가 있다고 가정을 해보자. List tmpList = new ArrayList(); 그리고 내부에는 데이터가 1부터 100까지 데이터가 있다고 생각해 보자. 이 데이터를 조작하기 위해 아래와 같은 코드를 작성했다. tmpList.stream().filter(i -> i % 2 == 0).map(i -> i * 4).toList(); 그러면 최초에는 stream()을 통해 함수형 프로그래밍을 시작한다. 이 stream함수는 Coll..
· JAVA
0. 이 글을 쓰는 이유 remove, add 등의 연산 속도가 LinkedList와 ArrayList의 구조에 따라 차이가 있는 것은 data structure를 공부하다보면 자연스레 알게된다. 그럼 java코드로는 어떻게 구현이 되어있을지 많이 깊게는 보지 않지만 그래도 좀 보면서 정리하기 위해 작성함 1. ArrayList의 remove /** * Removes the element at the specified position in this list. * Shifts any subsequent elements to the left (subtracts one from their * indices). * * @param index the index of the element to be removed ..
Berno
흔한 컴공 출신 개발자