JS Custom Elements, 사용자 정의 태그
Custom Elements class Test extends HTMLElement { constructor() { // super()를 호출함으로써 시작하여 올바른 프로토타입 체인이 확립되도록 한다. super(); } static get observedAttributes() { // 모니터링 할 속성 이름 // 이 메서드는 관찰하기를 원하는 특성들의 이름을 포함하는 배열을 return 해야 한다. return ['c', 'l']; } connectedCallback() { // 사용자 정의 요소가 문서에 연결된 요소에 추가될 때마다 호출된다. // 이것은 노드가 이동될 때마다 발생할 것이며, 요소의 내용이 완전히 해석되기 전에 발생할 지도 모른다. // DOM에 추가되었다. 렌더링 등의 처리를 하자...
2023.08.09
no image
회비관리 메신저 서비스 - ERD, API
2023.07.31 - [프로젝트/회비관리 메신저 서비스 (07.28~)] - 회비 관리 메신저 서비스 - 와이어프레임, ERD, API, 브런치 회비 관리 메신저 서비스 - 와이어프레임, ERD, API, 브런치 대용량 트래픽을 처리하는 MSA기반 회비관리 메신저 서비스 2023.07.31 - [프로젝트/회비관리 메신저 서비스] - 메신저 서비스 프로젝트 ERD, API 설계 라이브 음성/화상은 성능향상을 위한 포인트를 cornpip.tistory.com ERD, 와이어 프레임, API 링크는 기존 포스팅에서 볼 수 있다. 현재 ERD는 위와 같고 Wallet은 @Inheritance(strategy = InheritanceType.JOINED) 을 사용한 슈퍼타입이고 GroupWallet, Perso..
2023.08.08
java object equals
Object.equals public static void main(String[] args) { Test t = new Test("hi"); Test t2 = new Test("hi"); t.equals(t2); } static class Test { String test; Test(String test) { this.test = test; } } 모든 객체의 조상은 Object고 Object는 equals method를 가지고 있다. 객체를 생성하고 equals에 별도의 @Override 가 없다면 public boolean equals(Object obj) { return (this == obj); } 위와 같이 동작한다. 참조 주소가 같아야 true를 반환하는 equals 이다. String t3..
2023.08.08
no image
lombok @Builder
클래스 레벨 @Builder @Builder public class Test { private String one; private Long two; public Test(Long two){ this.two = two; } } lombok builder는 기본적으로 allArgsConstructor 로 동작한다. 그래서 위 코드에서 @Builder는 one, two를 인자로 받는 생성자를 사용하지만 정의되지 않은 생성자이므로 컴파일 에러가 발생한다. 정의된 건 two를 받는 생성자 뿐이다. public Test build() { return new Test(this.one, this.two); } ( 위 처럼 코드를 만들고 정의되지 않은 생성자로 에러가 발생할 것이다. ) 생성자 레벨 @Builder pu..
2023.08.06
데이터베이스 정규화
정규화 이상 현상(삽입, 삭제, 갱신) 을 제거하기 위해 테이블을 분해하는 과정이다. 정규화된 데이터베이스 구조에서는 새로운 데이터 형의 추가로 인한 확장 시, 그 구조를 변경하지 않아도 되거나 일부만 변경해도 된다. 테이블을 분해하므로 JOIN이 늘어나고 성능이 느려질 수도 있다. 그래서 반정규화도 존재한다. 제1 정규화 - 속성의 원자성을 확보하고 원자값이 아닌 도메인을 분해해라. 제2 정규화 - 완전 함수 종속을 만족해라 = 부분 함수 종속을 제거해라 - 완전 함수 종속 : 기본키가 2개 이상으로 이루어진 경우, 기본키의 부분집합이 결정자가 되어선 안된다 제3 정규화 - 이행 함수 종속을 제거해라 ex) A->B (B는 A를 의존한다.) A(PK) B C 컬럼을 가진 테이블에서 A->B, B->C,..
2023.08.05
Json 직렬/역직렬, @RequestBody, @ModelAttribute
Json 변환에서 직렬화 - json으로 변환 역직렬화 - 자바 객체로 변환 +) response dto말고 entity로 return할 때, entity에 @getter 없으면 직렬화 안된다. @RequestBody @Setter나 생성자가 없어도 동작한다.( 기본 생성자는 필요함 ) 데이터 바인딩을 위한 필드명을 알아내기 위해 getter나 setter 중 1가지는 정의되어 있어야 한다. 어노테이션을 생략할 순 없다. @ModelAttribute @Setter나 생성자가 있어야 동작한다. Query String 또는 Form형식이 아닌 데이터는 처리할 수 없다. ( application/json은 안됨 ) 어노테이션을 생략할 수 있다. 참고 자료 https://tecoble.techcourse.co...
2023.08.04
no image
회비 관리 메신저 서비스 - 와이어프레임, ERD, API, 브런치
대용량 트래픽을 처리하는 MSA기반 회비관리 메신저 서비스 2023.07.31 - [프로젝트/회비관리 메신저 서비스] - 메신저 서비스 프로젝트 ERD, API 설계 라이브 음성/화상은 성능향상을 위한 포인트를 찾고 개선하기가 쉽지않다는 피드백을 받고 기획을 변경했다. 메신저와 나머지는 목표는 그대로고 라이브 음성/화상을 빼고 카카오 뱅크같은 모임/개인 통장 관련 기능을 추가한다. 와이어프레임 피그마 링크 Figma Created with Figma www.figma.com ERD drawio 링크 회비 관리 메신저 서비스ERD.drawio drive.google.com ERD가 수정하다 보니 관계가 한 눈에 안들어온다. 나중에 정리해야 한다. API https://editor.swagger.io/ Sw..
2023.07.31
no image
메신저 서비스 프로젝트 ERD, API 설계
ERD drawio 링크 API spring cloud를 사용해 MSA로 설계해보고자 한다. MVP 목표는 다음과 같다. ERD 설계가 동작하는 API Message(text), 음성 서비스 파일 전송, 기본 Message(text)검색
2023.07.31
no image
spring data JPA - slice, page (무한 스크롤, 페이지네이션)
Spring Data JPA 페이징페이지를 구현한다면 두 가지 경우를 생각해 볼 수 있다. 스크롤이 끝에 다다르면 추가 요청으로 정보를 불러오는 무한 스크롤과 페이지 전환으로 다음 정보를 보여주는 페이지네이션이다. 둘 다 sql의 limit, offset을 잘 활용하면 구현할 수 있어 보인다. 하지만 spring data jpa에서 편리한 인터페이스를 제공한다. query method에 Pageable을 인자로 주면 return으로 Slice, Page, List 등의 타입을 받을 수 있다.public interface S3ImageRepository extends JpaRepository { // 단순 페이징 (repository에 작성 안해도 됨) Slice findAll(Pageable ..
2023.07.27