Web

· Web/Spring
환경IntelliJGradle 3.3.0Java 21에러Project 설정은 모두 자바 21 버전으로 바꿨는데 인식을 못했던 문제intellij 에서 A problem occurred configuring root project 'sbb'.> Could not resolve all artifacts for configuration ':classpath'. > Could not resolve org.springframework.boot:spring-boot-gradle-plugin:3.3.0. Required by: project : > org.springframework.boot:org.springframework.boot.gradle.plugin:3.3.0 > No m..
· Web/Spring
중고책 판매 사이트 제작 프로젝트를 하던 중, 회원(User)-채팅방(Chat)의 관계를 다대다로 설정해야했다. 처음 생각했던 방법은 @ManyToMany @ManyToMany 다대다 단방향 다대다 관계에서는 기본적으로 두 테이블 사이에 연결 테이블이 들어간다. 그 연결 테이블은 @JoinTable에서 지정해줄 수 있다. 단방향 연결은 연관 관계의 주인(User)에서 joinColumn(내 쪽에서 연결할 컬럼), inverseJoinColumn(상대 쪽에서 연결할 컬럼)을 모두 JoinTable 지정 시에 같이 설정할 수 있다. @Entity @Table(name = "user") public class User { @Id @GeneratedValue(strategy = GenerationType.IDE..
· Web/Spring
Spring Security 회원가입, 로그인 기능과 같이 인증/인가 작업을 spring security, JWT로 처리해보기로 했다. 이전부터 OAuth 방식으로 인증, 인가를 구현해보고 싶었는데 spring security를 사용하면 filter나 authenticationProvider, manager 같은 객체 생성, 연결이 어렵지 않을 것 같았다. 그래서 도입해보기로 함. spring security 흐름도 의존성 추가 // build.gradle implementation 'org.springframework.boot:spring-boot-starter-security' User User Entity @NoArgsConstructor @Getter @Entity @Table(name = "us..
· Web/Spring
Exception? Error? 이전 글에서 Java에서 Exception을 checked exception, unchecked exception으로 나눌 수 있다고 했다. 이번 글은 둘 중 unchecked exception를 핸들링한 코드를 정리한다. 이전 글에서 checked exception은 컴파일 시점에 검증이 들어가기 때문에 명시적으로 예외 처리가 필요하다고 했다. 하지만 checked exception가 실사용 시점에도 나올 수 있기 때문에 RuntimeException을 상속받아 unchecked exception처럼 런타임 시에도 예외를 처리할 수 있도록 한다. ErrorCode 먼저 나올 수 있는 에러 코드를 HttpStatus와 함께 넘길 메시지를 ENUM 구조를 사용해 명시했다. ..
· Web
오류(Error) 에러(Exception) 둘 다 Object - Throwable 을 상속 받고, Throwable 객체는 오류나 예외에 대한 메시지, 정보를 담고 있다. Error 시스템 수준에서 일어나는 프로그램 자체에서 해결하기 어려운 오류 Exception 프로그램 수준에서 일어나고, 개발자나 사용자와 같이 사람에 의해 나타나는 오류 그래서 이런 Exception에 대해서는 애플리케이션 상에서 잡을 수 있다. 이것도 Checked Exception, Unchecked Exception 둘로 나뉘는데 Checked Exception Unchecked Exception 예외 처리 필수 선택 검증 컴파일 시점 런타임 시점 예시 IOException - FileNotFoundException ... R..
· Web
기본적으로 대리라는 의미로, 정보를 대신 전달해주는 주체 내부 네트워크에서 인터넷 접속을 할 때, 빠른 엑세스나 안전한 통신 등을 확보하기 위한 중계서버를 프록시 서버(proxy server)라고 한다. 클라이언트와 웹 서버의 중간에 위치하고 있어, 대신 통신을 받아주는 것이 프록시 서버 포워드 프록시; Forward Proxy 클라이언트 대신 프록시 서버가 목적 서버에 통신해주는 구성을 일컫는다. 클라이언트 → 포워드 프록시 → 인터넷 → 원격(목적) 서버 프록시를 사용하지 않은 경우 포워드 프록시의 경우 아래와 같이 프록시 서버가 클라이언트-웹 서버 중간에 위치해 외부 웹 서버와 통신을 한다. 그러므로 클라이언트는 프록시 서버만을 통해 정보를 얻게 된다. 따라서 웹 서버 쪽에서는 프록시 서버를 통한 ..
· Web
P2P (Mesh) 모든 클라이언트는 자신과 연결된 모든 클라이언트에 대한 1:1 link를 가진다. 자신의 미디어 정보를 송신할 Uplink 1개 상대의 미디어 정보를 수신을 Downlink 1개 장점 클라이언트끼리 직접 연결을 진행하고 서버는 단순 정보를 중계하기에 서버 부하가 적다.직접 연결로 데이터를 송수신하기 때문에 실시간 송수신이 보장된다. 단점 단순 1:1을 넘어 N:M 연결로 확장시 클라이언트가 유지해야하는 링크가 증가함에 따라 클라이언트의 부하가 심해진다. SFU(Selective Forwarding Unit) 미디어 서버가 따로 존재하며, 미디어 트래픽을 중계해준다. Mesh 형식의 연결과 다르게 클라이언트 - 클라이언트의 연결이 아닌 서버 - 클라이언트 간의 연결을 진행한다. 따라서 ..
· Web
카카오 소셜로그인 구현할 때 카카오 공식 문서를 보니 oauth 인증-인가 프로세스를 따른다고 해서 .. oauth 2.0 과정에서 나오는 용어들, 여러 소셜 로그인 중 카카오 계정으로 로그인하는 과정을 기반으로 정리함 등장 배경 & 이유 가장 큰 이유는 다른 서비스의 회원 정보를 안전하게 사용하기 위해서라고 할 수 있다. 예를 들면 고객이 자신의 카카오 아이디/비밀번호를 우리 서비스에 알려주지 않아도, 카카오에 있는 고객의 정보를 우리 서비스에서 안전하게 사용하기 위한 방법이라고 할 수 있다. 또한 대부분의 사용자가 여러 서비스에서 같은 아이디, 비밀번호를 가지고 있기에 굳이 매번 회원가입을 하지 않고도 간단히 소셜 로그인으로도 인증할 수 있도록 했다. 덕분에 새롭게 런칭된, 아직 많은 사용자/신뢰를 ..
기넌
'Web' 카테고리의 글 목록