개발/개발일지
-
[Portpolent] 회원가입개발/개발일지 2023. 12. 24. 12:41
유저 기능을 위한 회원가입을 구현한다. 스펙과 파일 구조는 아래와 같다. 데이터베이스는 MariaDB를 사용하고 세션은 나중에 바뀔 수도 있지만 메모리에 저장한다. 가입에 필요한 이메일, 핸들, 닉네임(유저네임), 비밀번호를 POST 요청으로 받아서 validation후 DB에 저장한다. 물론 비밀번호도 암호화 해야 한다. DTO public record SignUpDto( @NotBlank(message = "Email Required") @Email(message = "Email pattern mismatch") @Size(max = 100) String email, @Size(min = 4, max = 20) @Pattern(regexp = "[a-z0-9]{4,20}", message = "Han..
-
[Spring Boot] 에러 메세지 커스터마이징 하기개발/개발일지 2023. 12. 14. 23:53
스프링 부트 3이전의 구버전에서는 ResponseEntityExceptionHandler을 상속해서 아래의 메소드를 오버라이딩하는 방식으로 접근할 수 있었다.@Overrideprotected ResponseEntity handleMethodArgumentNotValid( MethodArgumentNotValidException ex, HttpHeaders headers, WebRequest request) { ...} 스프링 부트 3부터는 상속대신 어노테이션을 통해 접근하는 것으로 바뀌었지만 내부 구현 자체는 똑같다. 필자는 HTTP 응답을 일관적으로 data, message, status필드로 구성하고 있으므로 이 형식에 맞춰 구현했다. @ControllerA..
-
[Spring Boot] 값 검증하기 - Spring Validation개발/개발일지 2023. 12. 4. 15:46
프로젝트에서 회원가입을 구현하기 위해서 필요한 정보를 dto로 전송받고 있었다.signUp(@RequestBody SignUpDto dto) {public record SignUpDto( String email, String handle, String username, String password) {}코틀린에서는 String타입에 null이 들어갈 수 없기 때문에 모든 필드를 작성해야 하지만, 자바에서는 몇 필드가 없거나 null이어도 그대로 null값으로 전송된다. portpolent에서는 Entity의 설정에 nullable을 false로 해놨기 때문에 SQL Exception이 나고 결과적으로 500 Internal Error가 반환된다. 그렇다고..
-
Spring boot 초기 세팅 및 DB 연결개발/개발일지 2023. 12. 3. 20:43
portpolent의 백엔드를 위해 Spring Boot와 DB를 설정하고 연결해 HTTP 요청을 잘 처리하는지 확인한다. IntelliJ Ultimate와 MariaDB를 사용한다. Spring Boot 프로젝트 시작하기인텔리제이에 spring boot프로젝트를 바로 만들 수 있는 기능이 있어서 그걸 사용했지만 https://start.spring.io/ 에서 생성해도 동일하다. 자바는 17 버전, Gradle은 Kotlin, 프로젝트 언어는 자바, 스프링 부트 3.2 버전을 사용한다. 개발에 필요한 여러 의존성도 같이 추가한다.WebMariaDB DriverJPAValidationSecurityLombok DB 연결하기JPA를 추가하고 스프링 프로젝트를 실행하면 오류와 함께 바로 종료된다. DB와 ..
-
[테트리스] 기본 HTML 레이아웃, Canvas 구현개발/개발일지 2023. 11. 13. 21:30
이전글 2023.11.13 - [개발/개발일지] - [테트리스] 프로젝트 구상 [테트리스] 프로젝트 구상 1. 프로젝트 구상 웹으로 간단하게 할 수 있는 테트리스이다. 백엔드까지 확장해 점수를 저장하거나 멀티플레이 기능을 지원한다. 주요 기능 HTML5 Canvas 기반 테트리스 유저 기능 플레이 결과 저 yeahx4.tistory.com 개요 테트리스는 10x20의 맵을 채워가는 게임이다. 복잡한 그래픽이 들어가진 않기 때문에 단순히 table이나 다른 방법으로도 구현이 가능하지만, 연습 겸 HTML5의 Canvas를 이용해서 진행해 보기로 한다. Canvas HTML의 Canvas HTML에서 canvas태그를 이용하면 바로 사용이 가능하다. 참고로 canvas를 지원하는 브라우저의 버전은 아래와 같..
-
[테트리스] 프로젝트 구상개발/개발일지 2023. 11. 13. 20:51
1. 프로젝트 구상 웹으로 간단하게 할 수 있는 테트리스이다. 백엔드까지 확장해 점수를 저장하거나 멀티플레이 기능을 지원한다. 주요 기능 HTML5 Canvas 기반 테트리스 유저 기능 플레이 결과 저장 및 통계 멀티플레이 2. 개발 환경 OS - MacOS 14.0 Sonoma (M1) Browser - Chrome 119 IDE - WebStorm, IntelliJ Professional DB - MariaDB VCS - Github Deploy - AWS