OAuth2 개념 이해하기
2022. 12. 18. 22:36
기타 IT
OAuth2 개념 이해하기 OAuth란? Mine 내가 운영하고 있는 서비스로 www.book.com과 같은 것 User Mine 서비스를 사용하는 일반 사용자 Their User가 사용하는 제 3의 서비스로 facebook, google, kakao등 위의 세 가지 용어를 풀어보면, Mine은 고객인 User의 구글 캘린더에 일정을 등록하는 기능을 만들어야 한다고 가정해보자. 이 경우 Mine은 User의 구글 아이디와 비밀번호를 알고 있어야 하고, 문제없이 관리해야 한다. 그리고 이 정보를 갖고 구글에 접근하여 캘린더에 등록해야 한다. 이 경우 문제가 발생하는데 크게 세 가지로 나눌 수 있다. Mine은 User의 다른 서비스 계정을 관리하는 것 자체가 부담이다. User는 누군지도 모르는 서비스에 ..
SpringBoot Request 받는 여러가지 방법
2022. 12. 4. 22:08
Spring
해당 내용은 POST 방식만을 고려한 내용이다. Multipart/form-data의 HTTP 간단한 구조 알기 이미지를 업로드를 할 때 이미지만 업로드하는 것이 아닌 부가적인 정보들도 같이 업로드 해야하는 경우가 많다. 헤더는 Content-Type: multipart/form-data; boundary=----WebKitFormBoundary7MA4YWxkTrZu0gW와 같이 요청을 하고, boundary로 각각의 정보를 구분하여 전송하게 된다. HTTP Reqeust POST /urls/url/test Host: localhost:8080 Cache-Control: no-cache Postman-Token: f15dcf2b-ffdf-6e53-3411-a7bf27226668 Content-Type: ..
@JsonFromat, @DateTimeForamt이 계속 헷갈린다!
2022. 11. 19. 19:15
Spring
@JsonFormat, @DateTimeFormat Request일 경우 @ModelAttribte, @RequestParam 두 애노테이션은 요청 query string(message body form Data 동일)에 대한 값을 매핑해준다. @DateTImeFormat을 사용한다. @JsonFormat은 사용할 수 없다. @RequestBody 이번에는 message body JSON 요청이 올 경우이다. @DateTimeFormat을 사용한다. @JsonFormat도 사용한다. 우선 순위 @JsonFormat이 우선 순위를 갖는다. @JsonFormat이 틀렸다면, @DateTimeFormat이 맞아도 실패한다. @JsonFormat이 우선 순위이기 때문에 당연한다. @JsonFormat, @Dat..
Java8 Optional 올바르게 사용하는 방법
2022. 10. 3. 19:26
Java
Optional 문법에 대해서는 설명하지 않는 글이다. 아주 간단하기 때문에 문법은 찾아보길 바란다. Optional전에 null은 어떻게 처리했을까? null을 반환할지 안할지 모른다. 하지만 Optional을 반환하면, nullable을 알 수 있다. null 체크를 깜박할 수 있다. nullable을 알 수 있기 때문에 깜빡하지 않는다. null를 반환하는 것 자체가 문제다. null을 반환하지 않으면, 예외를 던지는 방법도 있다. null 반환, 예외 반환 딱 2개 뿐이었다. null을 반환하면, NPE가 발생할 수 있고, 클라이언트가 직접 처리해야 한다. 예외 던지기 예외를 던지면 클라이언트가 null 처리를 안해도 되기 때문에 편하긴 하지만, checkedException을 던질 경우 강제로 ..
Java static과 클래스 로드 및 초기화
2022. 8. 28. 23:35
Java
서론 이번에 GOF 디자인 패턴을 공부하면서 기선님 강의를 봤는데 챕터1인 싱글톤 패턴 부터 막혔다. static을 몰랐기 떄문이다. 그래서 이번 기회에 조금 더 정리할 수 있는 기회가 되었다. 예전에도 헷갈렸던 것 같다. 이번 기회에 조금 더 알아가는 기회가 될 것 같다. 내가 이해한 static은 공유 자원 + 클래스 로드 시 같이 메모리에 올라가는 것이었다. 예전에도 공유라는 것에 현혹 되었던 적이 있는데 다시 초기화가 된 것 같다. 조금 더 알아 보자. 싱글톤 구현하기 강의에서 싱글톤 구현하는 방법을 몇 가지 배웠다. 기존에 알고 있는 방식은 잠재된 버그가 있다는 것을 알게 되었다. 코드를 살펴 보자. 멀티 쓰레드 환경에서 안전하지 않는 코드 public class Settings { privat..
인프콘 2022 나의 첫 컨퍼런스! 후기
2022. 8. 27. 20:07
기타 IT
서론 생애 첫 개발 컨퍼런스에 가게 되었다. SI에서 서비스로 이직을 성공한 후라서 뭔가 더 기분이 좋았다. 처음 입장했을 때 분위기에 놀랐다. 엄청 에너지가 넘치는? 느낌을 받았고, 사람도 굉장히 많았다. 단지 컨퍼런스의 이런 분위기를 느끼고 가는 것만으로도 가치가 있을 정도의 느낌이었다. 그리고 30개 정도의 세션이 있었는데 본인의 상황에 맞는 세션이 있다면, 더욱 좋은 기회가 될 거라고 생각했다. 나는 딱 하나의 세션을 위해서 참석했는데 바로!! 김영한님의 어느 날, 고민 많은 주니어 개발자가 찾아왔다. 성장과 취업, 이직 이야기였다. 추가로 CTO님이 추천 해주신 코드숨 한윤석님의 성공하는 스터디를 만드는 10가지 방법 - 인출 위주의 스터디 여정기 도 좋았다. 이 글은 영한님의 세션을 정리하고,..
MD5(Message-Digest Algorithm 5, Java)
2022. 8. 26. 08:22
카테고리 없음
MD5의 역사 128비트 암호화 해시 함수이다. 프로그램이나 파일이 원본 그대로인지 확인하는 무결성 검사에 사용된다. MD4를 대체하기 위해 고안 되었따. MD5의 결함 발생 1996년 설계상 결함 발생 2004년 암호화 결함 발견 현재는 보안 관련 용도로 쓰는 것은 권장되지 않고, 심각한 문제를 야기할 수 있다. 예로 2008년 12월에 MD5 결함을 이용해서 SSL 인증서를 변조하는 것이 가능하다는 발표가 있었다. 암호 학자들은 SHA-1과 같이 다른 안전한 알고리즘을 사용할 것을 권장한다. MD5를 Java에서 사용하기 문자열 변환 @Test void 문자열_MD5로_변환() throws NoSuchAlgorithmException { // given String md5Hash = "8C2221D8..
JDBC란 무엇인가?
2022. 8. 17. 21:51
Java
JDBC의 탄생 배경 과거에는 애플리케이션에서 DB로 어떻게 접근했고, 무엇이 문제였을까? 과거에는 애플리케이션 서버가 직접 DB로 접근을 했다. 그렇기 때문에 DB 마다 연결, SQL 전달, 응답 방법 등이 모두 달랐다. 문제점은 크게 두 가지가 있었다. 데이터베이스를 다른 종류의 데이터베이스로 변경하면 애플리케이션 서버에 개발된 데이터베이스 사용 코드도 변경된다. 개발자가 데이터베이스마다 연결, SQL 전달, 응답 방법 등을 모두 학습해야 한다. JDBC 표준 인터페이스 등장 위와 같은 문제로 JDBC(Java Database Connectivity)는 바아에서 데이터베이스에 접근할 수 있도록 하는 자바 API이다. 아래와 같이 인터페이스를 제공하고, 각 데이터베이스 벤더에서 JDBC 인터페이스에 맞..