[LOATODO] 로스트아크 숙제 관리 웹 사이트 배포(구글 로그인 연동)
·
Project/LOATODO
게임에 접속하기 전 어느곳에서든 내가 숙제가 어떤 것이 남아있는지 확인하기 위해 만든 사이트입니다.로스트아크 오픈 API를 이용하므로 apiKey가 필수입니다. 1. 사이트 주소https://app.loatodo.com2023.12. 03. 추가 https://loatodo.com  2. 기능 설명2 - 1. 로그인구글 로그인으로 연동해서 이용하실 수 있습니다.가입하시는 경우 로스트아크 apiKey와 대표캐릭터명이 필요합니다. 정상적으로 가입이 완료되면 아래와 같은 화면이 나옵니다. (단, 아이템레벨 1415 이상 캐릭터만 출력됩니다.) 2 - 2. 메인화면 - 일일 숙제카오스던전, 가디언토벌 하단에 수익은 거래소데이터와 일일컨텐츠 통계, 휴식게이지를 바탕으로 게산된 예상 수익입니다.카오스던전의 경우 2..
[Java] 도메인 모델 패턴, 트랜잭션 스크립트 패턴
·
Language/Java
마틴 파울러가 재창한 두개의 개념으로, 비즈니스 로직을 처리하는 2가지 패턴을 말한다. 책임 소재가 Domain Level이냐 Script Level이냐의 차이에 따라 구분된다. 📕 도메인 모델 패턴 (Domain Model Pattern) 📗 도메인 모델 패턴이란? Domain 부분에서 비즈니스 로직을 가지고 있는 패턴 대부분의 비즈니스 로직이 엔티티 안에 구성되어 있어 객체지향의 특성을 적극 활용 📗 장단점 장점 객체 지향에 기반한 재사용성, 확장성, 유지 보수의 편리함 단점 하나의 도메인 모델을 구축하는 데 많은 노력필요 📗 예시 @Getter @Setter @AllArgsConstructor @NoArgsConstructor @Builder public class DayTodo { private ..
[Java /Spring] SpringBoot Test / TestRestTemplate
·
Framework & Library/Spring
Spring혹은 SpringBoot를 이용하여 RestApi를 설계할 때, 상태코드를 같이 전달하기 위해 ResponseEntity를 사용하는 경우가 많다. 이 문서에서는 이러한 ResponseEntity를 사용하는 RestApi Test환경에 유용하게 사용되는 TestRestTemplate에 대해 알아보자. 📕 TestRestTemplate REST 방식으로 개발한 API의 Test를 최적화 하기 위해 만들어진 클래스이다. HTTP 요청 후 데이터를 응답 받을 수 있는 템플릿 객체이며 ResponseEntity와 함께 자주 사용된다. Header와 Content-Type 등을 설정하여 API를 호출 할 수있다. 📗 예제 1. postForEntity JWT을 사용하는 로그인 Api의 테스트이다. [A..
[Java / Spring] 스프링부트 테스트 어노테이션 @SpringBootTest와 @WebMvcTest
·
Framework & Library/Spring
SpringBoot환경에서 테스트코드를 작성할 때 대다수 JUnit5을 사용하고, @SpringBootTest 어노테이션 혹은 @WebMvcTest를 사용한다. 둘의 차이점을 알아보자 📕 @SpringBootTest 프로젝트의 전체 컨텍스트를 로드하여 빈을 주입하기 때문에 속도가 느리고, 통합 테스트를 할 때 많이 사용한다. 컴포넌트 스캔 범위는 Bean 전체이다. 즉, 애플리케이션이 실행할 당시 스캔되는 범위와 동일하다. 애플리케이션의 모든 설정을 가져오기 때문에 애플리케이션의 범위가 넓을수록 테스트가 느려질 수 밖에 없고, 이는 단위테스트에 적절하지 않다. 📕 @WebMvcTest Web 테스트 중에서 MVC테스트를 하는데 사용하며 컴포넌트 스캔의 범위는 스프링 컨테이너에서 Presentation L..
[Java] 모던 자바 인 액션 Chapter 1 - 자바 8, 9, 10, 11 : 무슨 일이 일어나고 있는가
·
책&강의 정리
자바는 처음부터 많은 유용한 라이브러리를 포함하는 잘 설계된 객체지향 언어로 시작했다. 코드를 JVM 바이트 코드로 컴파일하는 특징 때문에 자바는 인터넷 애플리케이션의 주요 언어가 되었다. JVM의 업데이트 덕에 JVM에서 실행되는 경쟁 언어는 더욱 부드럽게 실행될 수 있으며, 자바와 상호 동작할 수 있게 되었다. 또한 자바는 다양한 임베디드 컴퓨팅 분야도 장악하고 있었다. 하지만 프로그래밍 언어 생태계에 변화의 바람이 불었다. 프로그래머는 빅데이터라는 도전에 직면하면서 멀티코어 컴퓨터나 컴퓨팅 클러스터를 이용해서 빅 데이터를 효과적으로 처리할 필요성이 커졌다. 또한 병렬 프로세싱을 활용해야 하는데 이전의 자바로는 충분히 대응할 수 없었다. 그렇기에 자바는 변화하였다. 자바 8은 다양한 프로그래밍 도구와..
[CS / RDBMS] 관계형 데이터 베이스 Oracle, PostgreSQL, MariaDB, MySQL
·
Computer Science
관계형 데이터베이스 관리 시스템 (RDBMS)이란 데이터를 구조화하고 저장하는 형식이 테이블의 형태인 시스템입니다. 📕 Oracle 상용 라이센스이며, 사용에 대한 비용이 발생한다. 풍부한 기능과 높은 확장성을 제공하여, 주로 대규모 기업에서 사용된다. 특히, 보안 및 데이터 무결성에 대한 강력한 기능을 제공한다. 비용이 매우 높아 중소규모 프로젝트에는 비추천되고, 높은 성능을 위해 고급 하드웨어 및 튜닝이 필요하다. 📕 PostgreSQL 오픈 소스 라이센스이므로 무료로 사용할 수 있다. 확장성이 뛰어나고, 여러 고급 기능을 갖추고 있어, 중소규모부터 대규모 기업까지 다양한 규모의 프로젝트에 적용할 수 있다. ACID(원자성, 일관성, 격리성, 지속성) 트랜잭션을 지원하여 데이터 무결성을 보장한다. ..
[Java] int와 Integer, boolean과 Boolean
·
Language/Java
📕 기본 자료형 (Primitive Type) 📗 기본 자료형이 무엇인가? 기본 자료형은 프로그래밍 언어에서 제공하는 가장 기본적인 데이터 타입으로, 변수에 저장되는 데이터의 값을 직접 담는다. 📗 기본 자료형의 특징 null 값을 허용하지 않는다. 정해진 메모리를 할당한다. 스택(stack) 영역에 저장된다. 📗 기본 자료형의 종류 int 정수 값을 저장하는 기본 자료형. 예를 들면, 1, -42, 100 등의 정수. boolean: 참 또는 거짓을 나타내는 논리 자료형. true 또는 false. byte: 작은 정수 값을 저장하는 기본 자료형으로, -128부터 127까지의 값을 표현. 주로 메모리 절약이 필요한 경우에 사용한다. char 유니코드(Unicode) 문자 하나를 저장하는 기본 자료형으로..
[Spring / JPA] 일대다 매핑과 빌더 패턴
·
Framework & Library/Spring
📕 JPA의 일대다 매핑 관계 📗 엔티티 설계 다음과 같이 Spiring JPA와 Lombok을 사용한 Member 와 Characters 간 1:N 관계가 있다고 가정을 하자 [Member] @Entity @Getter @Setter @NoArgsConstructor public class Member extends BaseTimeEntity { /** * 회원 목록 테이블 */ @Id @GeneratedValue(strategy = GenerationType.IDENTITY) @Column(name = "member_id") private long id; @Column(unique = true) private String username; private String password; @Enumerat..
[CS / DesignPattern] 빌더 패턴 (with Lombok)
·
Computer Science
📕 빌더 패턴 📗 빌더 패턴이란? 복잡한 객체들을 단계별로 생성할 수 있도록 하는 GoF 디자인 패턴 중 생성 패턴에 해당하는 패턴이다. 객체를 생성하는 클래스와 표현하는 클래스를 분리하여, 동일한 절차에서도 서로 다른 표현을 생성하는 방법을 제공한다. 📗 왜 나왔을 까? 객체를 생성시 생성자(Constructor)만 사용할 때 발생할 수 있는 문제를 개선하기 위해 나왔다. 예시로 다음과 같은 Member 클래스가 있다고 하자. @Entity @Getter @Setter @NoArgsConstructor public class Member extends BaseTimeEntity { /** * 회원 목록 테이블 */ @Id @GeneratedValue(strategy = GenerationType.IDE..