0. 이 글의 목적 JAVA의 finalize에 대해 정말 간단하게 소개하기 위해 1. 일련의 가상 사례를 들어보자. 우리는 브들리(php-5년차, 급하게 java프로젝트 투입)와 찰스(java-3년차)라는 2명의 개발자를 예시로 이야기를 진행한다. 찰스 : 브들리? 이거 finalize는 왜 오버라이딩 했어요? 브들리 : java는 gc가 메모리 수거하잖아요. 로그를 좀 찍어두면 좋지 않을까 해서요. 찰스 : 아니... 이러면 답이 없는데... 하.. finalize가 뭐 하는 메서드인지는 알아요? 브들리 : 알죠? 객체 소멸자. c++에서는 직접 호출해야 하는데 java에서는 gc가 알아서 처리해 주는 거잖아요. 찰스 : ... 2. 일단 당장은 뭐가 문제인가 finalize에 대해 소멸자인 것까지는..
0. 이 글을 쓰는 이유 대부분의 spring security 가이드에서는 csrf를 disable하는데 csrf는 뭐고 왜 disable처리하는지 궁금해서 정리하기 위함 1. CSRF란? Cross Site Request Forgery : 사이트간 위조 요청 웹사이트 취약점 공격 방법 중 하나로 사용자가 자신의 의지와는 무관하게 공격자가 의도한 행위를 특정 웹사이트에 요청하게 하는 공격 2. Spring Security에서는? CSRF에 대한 예방 기능을 제공한다. https://docs.spring.io/spring-security/reference/features/exploits/csrf.html Cross Site Request Forgery (CSRF) :: Spring Security When..
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..
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..
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,..
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에러에 대해 발생 이유를 이렇게 설명해주고 있다. 보통 요청을 보낼 때 사용자에 대한 인식을 어떻게 하는지 상상을 해보면 브라우저의 쿠키에 저장한 후 해당 쿠키를 기준으로 판별을 진행한다. 과연 이 쿠키에서 문제가 발생하면 어떻게 될까? 아마 정해진 형식..