본문 바로가기

분류 전체보기

(62)
[Linux] Ubuntu 사용자 계정 생성 및 접속 설정 먼저 root로 접속해준다 sudo su root 권한으로 하지않으면 아래와 같은 에러문구가 출력된다 adduser: Only root may add a user or group to the system. 계정 생성 adduser 계정아이디 해당 커맨드를 입력하면 아래와같이 추가 입력 부분이 출력된다. New password: Retype new password: passwd: password updated successfully Changing the user information for rkdvnfms5 Enter the new value, or press ENTER for the default Full Name []: Room Number []: Work Phone []: Home Phone []:..
Spring JPA @Id 복합키 설정 Spring JPA를 사용하면서 기본키가 2개 이상 컬럼으로 구성된 테이블을 Entity로 지정할 때가 있다. 예시로 아래와 같은 Work 테이블과 WorkE 엔티티 클래스가 있다고 가정했을때 @Table(name = "Work") public class WorkE { @Id @Column(name = "name") private String name; @Id @Column(name = "type") private String type; .... } 이름(name)과 구분(type) 두개의 컬럼을 기본키로 사용하고 있는 경우, 위처럼 두 필드에 모두 @Id 어노테이션을 사용하면 된다고 생각할 수 있다. 하지만 추가해야할 것이 있는데, 아래처럼 엔티티에 @IdClass 어노테이션을 추가해줘야한다. @IdC..
Maven Jar 빌드 외부 dependency 추가 Spring Webflux로 오브젝트 스토리지 솔루션 프로젝트를 만들면서 빌드 도구는 maven, 배포는 내장 netty 서버 쓸거라서 처음으로 jar로 배포하게 되었다. 한심하다고 느낀건 아직도 나는 maven을 제대로 모른다는 것이다. 시간이 될때 maven에 대해서 공부하고 정리를 해볼 필요를 느꼈다. 문제 pom.xml에 외부 jar파일을 추가해서 사용하고 있었는데 로컬에서 실행하면 잘 돌아가지만 jar로 배포해서 실행하면 NoClassDefFoundError가 발생하는 특정 경우가 있었다. 원인 pom에서 추가한 외부 jar dependency는 적용이 잘 되었지만, 빌드 후 생성된 jar 파일을 풀어서 BOOT-INF/lib를 보면 해당 외부 라이브러리가 없었기 때문에 필요한 클래스가 정의되지..
iptables 80포트 설정 iptables를 오랜만에 쓰면 자꾸 잊어버린다. 방화벽 목록 확인 iptables --list 출력 이미지에 표시된 reject-with icmp-host-porhibited를 볼 수 있는데, 이 REJECT라인 밑으로 적용된 설정은 적용되지 않는다. 예를 들기 전, 80포트를 추가하자 iptables -A INPUT -p tcp --dport 80 -j ACCEPT 이 후에 다시 리스트를 출력하면 REJECT 설정 밑으로 80포트가 설정된 것을 볼 수 있다. 이렇게 되면 80포트 INPUT이 되지 않는다는 것이다. 이 경우에는 REJECT를 INPUT에서 지워줬다가 다시 추가하면 된다. iptables -D INPUT -j REJECT --reject-with icmp-host-prohibited i..
Spring Webflux Filter 적용 (Webfilter) Webflux를 사용해보면서 Interceptor를 적용해보고 싶었는데 기존 MVC 구조에서 사용하던 interceptor, 엄밀히 말하면 톰캣을 위해 사용하던 인터셉터는 사용할 수 없었다. 약간 찾아본 결과 Webfilter 사용을 많이 하는듯 보여서 적용해봤다. 적용은 매우 간단하다. Webfilter 인터페이스를 구현한 클래스를 하나 생성해서 @Component만 적용해주면 끝. 그래서 나는 Webfilter를 구현한 AclFilter라는 클래스를 생성했다. AclFilter import org.springframework.http.server.reactive.ServerHttpRequest; import org.springframework.stereotype.Component; import org..
Spring Webflux Exception 전역 처리 (Functional Endpoints) webflux로 api 서버를 하나 개발하면서 에러 상황들을 전역으로 처리하고 싶었다. 스프링 mvc나 boot에서는 @ControllerAdvice나 @RestControllerAdvice를 사용하는데, webflux도 어노테이션 방식으로 @Controller를 사용한다면 동일하게 @ControllerAdvice를 사용할 수 있을것 같았다. 하지만 나는 request를 Functional Endpoints 방식으로 RouterFunction을 활용해 요청을 라우팅하기 때문에 다른 예제를 찾아보게 되었고, 그 과정에서 메서드를 까보진 않았지만 까보기전 추측한 생각을 정리하려 한다. 참고 : https://www.baeldung.com/spring-webflux-errors Handling Errors i..
Spring Webflux (3) - Select 이전 글에서 Insert하는 과정에 대해서 작성했다. 이번엔 CRUD중 Read인 SELECT 과정에 대해서 기록해보려고 한다. 사실 SELECT기능을 구현한지 꽤 되어서 기억이 듬성듬성이다. 이전과 마찬가지로 Board와 BoardFile 1:N 관계에서 목표는 Board를 여러개 받는 Flux를 리턴하는 api( getBoardList() )와 Board 1개와 해당 Board의 BoardFile을 여러개 리턴하는 api( getBoardOne() )를 구현하는 것이다. 1. getBoardList api 에 들어가기 전에 이슈가 하나 생겼다. 나는 MariaDB를 사용하고있고, 기존에 r2dbc 설정에서 mysql 드라이버를 사용하고 있었는데 이 드라이버에서 DatabaseClient나 R2dbcE..
String은 왜 불변 객체로 만들었을까? Java에서 String은 불변 객체다. 이전글 : https://riverblue.tistory.com/42?category=929398 Java String, StringBuilder, StringBuffer 자바에서 문자열 클래스는 대표적으로 String, StringBuilder, StringBuffer가 있다. 사실 String밖에 다루지 않아봐서 잘 몰랐는데 좋은 경험을 하게 되어서 나머지 두 클래스도 다뤄야 겠다고 생각했다. St riverblue.tistory.com 근데 한번도 왜 불변으로 만들었는지, 불변이 뭐가 좋은지 생각해본적이 없다. 그래서 이유를 좀 찾아보게 되었고 나름대로 정리한 생각을 기록해본다. 참고 : https://www.baeldung.com/java-string-im..