프로젝트
-
[Spring boot] Password 암호화프로젝트/Share Your Trip 2024. 1. 11. 21:55
Password 암호화 왜 궁금했을까❓- SSAFY 프로젝트를 진행하면서 법적으로 정해져 있는 비밀번호 일방향 암호화를 준수하기 위해 사용자 비밀번호를 SHA512를 통해 해시하여 DB에 저장하였다.- 해당 기능에 대해 흐름이나 작동 방식은 이해하고 있지만, 내가 구현한 부분이 아니였기에 정확하게 각 코드들이 어떤 역할을 하는 지 알지 못하여 학습해보려 한다. Password 암호화 왜 해야할까❓단순 Plain Text로 DB에 저장하는 것은 보안적인 측면에서 위험하다고 할 수 있다. 그 이유는 DB에 있는 password 정보가 SQL Injection이나 개발자의 부주의로 의해 조회가 된다면 계정 탈취에 대한 위협이 존재하게 되고 보통 다른 사이트에서도 동일한 password를 사용하기 때문에 영향을..
-
[Spring boot] Error Handling프로젝트/아카이뷰 2024. 1. 10. 21:29
Error Handling 왜 궁금했을까 ❓- SSAFY 1학기 때, 프로젝트 마감 기한을 맞추기 위해 기능 완성에만 초점을 맞춰 개발을 진행하다보니 Client에게 보내는 응답에 대해 신경쓰지 못하였고 일관성이 없는 Error 응답을 전송하였다.- 이로 인해, Client의 입장에서는 어느 부분에서 Error가 발생했는 지 정확한 응답을 받지 못하고 일관되지 못한 Error 응답으로 인해 혼란을 야기할 수 있을 것이라 생각되었다.- 이러한 부분을 해결하기 위해, Error Handling에 대해 학습하고 일관된 Error 응답을 전송하여 앞선 문제를 해결해보고자 한다. Error HandlingBasicErrorControllerSpring은 에러 처리를 기본적으로 BasicErrorController..
-
[Spring boot] Common Response프로젝트/아카이뷰 2024. 1. 9. 21:52
Common Response 왜 궁금했을까❓- SSAFY 1학기 프로젝트에서 시간에 쫒겨 개발을 하다보니 기능 완성에만 집중하여 코드를 작성했다.- 그 결과, 일관되지 못한 REST API Response를 받아오게 되고 Client 입장에서 혼란을 야기할 것이라 생각되었다.- 이러한 문제점을 Common Response를 만들어 구조화 한다면 Client는 일관된 응답을 통해 일의 생산성과 안정성 측면이 향상될 것이라 생각되어 학습하고 Refactoring을 진행해보려 한다. Common Response이번 포스팅에서는 Success Response만 다루고 Error Response는 추후 포스팅에서 다루도록 하겠다.우선, Common Response를 만들기 위해서 응답 구조를 어떻게 구성할지 고..
-
[Spring boot] WebRTC프로젝트/아카이뷰 2024. 1. 8. 22:49
WebRTC 왜 궁금했을까❓- 팀 프로젝트로 WebRTC를 이용해서 취준생들을 위한 모의 면접 컨설팅 플랫폼을 기획했다.- 아직 기획만 나온 단계이지만 WebRTC를 사용해야만 하는 상황이어서 미리 학습해보려고 한다. WebRTC(Web Real-Time Communication) WebRTCAn open framework for the web that enables Real-Time Communications (RTC) capabilities in the browser.webrtc.org공식 문서에서 보면 WebRTC는 Android, IOS Application, Web에서 Plugin, Third Party 설치 없이 동영상, 음성, 일반 데이터를 앱끼리 통신할 수 있도록 도와주는 기술이라고 설명..
-
[Java] Wrapper 클래스프로젝트/Share Your Trip 2024. 1. 7. 13:15
Wrapper 클래스 왜 궁금했을까❓- Optional 클래스에 대해서 공부하는 과정에서 Wrapper 클래스의 개념이 나왔는데 몰랐던 개념이어서 공부하고 정리 해보려고 한다. Wrapper 클래스Java의 자료형은 기본 타입(primitive type)과 참조 타입(reference type)으로 나뉘는데 기본 타입을 객체로 다루기 위해서 사용하는 클래스를 Wrapper 클래스라고 지칭한다.기본 타입만 Wapper 클래스를 적용하는 이유는 boxing, unboxing 등 과정에서 발생하는 오버헤드때문에 성능 저하가 일어날 수 있기 때문이다. Wrapper 클래스의 종류기본 타입(Primitive)Wrapper 클래스byteByteshortShortintIntegerlongLongfloatFloatd..
-
[Java] Optional 클래스프로젝트/Share Your Trip 2024. 1. 6. 20:16
Optional 클래스 왜 궁금했을까❓- SSAFY 1학기 프로젝트를 리팩토링하기 위해 다른 사람들의 블로그를 참고해가며 Error Handling에 대해 공부를 하고 있었는데 Optional 클래스가 사용되는 것을 보았다.- 대부분의 포스팅들에서도 Optional 클래스가 사용되고 있었고 중요도가 높다고 생각이 들어 정리해보려고 한다. Optional 클래스Java 8에서부터 Optional 클래스를 사용하여 NPE(NullPointerException)이 발생하지 않도록 방지할 수 있는 Wrapper 클래스이다.public final class Optional { /** * Common instance for {@code empty()}. */ private static fi..
-
[Spring boot] @Builder 어노테이션프로젝트/아카이뷰 2024. 1. 5. 10:56
Builder 어노테이션 왜 궁금했을까 ❓- Spring boot 교재에서 Builder를 사용하고 Error Handling을 하기 위해 다른 사람들이 게시글을 참고하는 과정에서 대부분 Builder Annotiation을 사용하는 것을 발견했다.- 생성자가 존재함에도 불구하고 Builder Annotation을 쓰는 이유가 궁금했고 알아보려고 한다. @Builder Annotation@Builder Annotation은 lombok 라이브러리에서 지원하며 Builder Pattern으로 객체를 생성해주는 Annotation객체를 생성하는 여러 가지 방법에 대해서 알아보고 @Builder와 비교해보겠다. 생성자를 이용한 객체 생성public class Chanhong { private final ..
-
[Spring boot] @JsonInclude 어노테이션프로젝트/아카이뷰 2024. 1. 4. 15:35
JsonInclude 어노테이션이 왜 궁금했을까 ❓- Error Handling을 공부하는 과정에서 Validation이 발생한 필드와 메시지를 JSON 형식으로 클라이언트에게 내려주는 부분이 있었다.- 해당 부분에 @JsonInclude 어노테이션이 작성이 되어있어 알아보았다. @JsonInclude가 작성되어 있었던 코드 @JsonInclude(JsonInclude.Include.NON_EMPTY) private final List errors; @Getter @Builder @RequiredArgsConstructor public static class ValidationError { private final String field; private final String message; ..