본문 바로가기

전체 글

[인프런 강의] 초보자를 위한 git & github 기본기 설치1. https://git-scm.com/install/windows → 설치후 git bash 실행2. bash창은 터미널과 동일, bash창에서 git 입력했을 때, git관련 용어들이 출력되면 설치가 문제없이 된 것.1. ls: 현재 폴더가 갖는 폴더와 파일들이 출력된다.2. pwd: 현재 위치 경로를 출력한다.3. cd: 이동, ../: 상위 폴더로 이동4. mkdir: 폴더를 만드는 명령어5. rm: 파일/폴더를 지우는 명령어, rm -r '폴더명' → 폴더가 갖는 하위 파일들까지 모두 삭제6. touch: 파일 생성하는 명령어7. ctrl+L 또는 clear: 화면 정리하는 명령어 3. github로 로그인한 후, new → repository 생성한 후,4. google에 `ssh key.. 더보기
Validation(클라이언트로부터 전달된 데이터 검증), @AuthenticationPrincipal spring에서 Validation이 필요한 이유웹 상에서 클라이언트로부터 전달되는 데이터를 신뢰할 수 없다.물론 프론트엔드에서 검증을 하겠지만 만일의 사태를 방지하기 위해null, 공백, 범위를 벗어난 숫자 등은 반드시 검증이 필요하다.검증하지 않으면 데이터가 null인 경우, NullPointerException 발생 가능성 및db 제약 조건 위반 등으로 이어질 수 있음.spring은 jakarta.validation 기반의 Bean Validation을 지원한다.DTO 클래스에 애너테이션만 붙여도 자동으로 유효성 검사를 수행할 수 있다.ex. @NotNull(null 불가), @NotEmpty(null과 ""불가), @NotBlank(null, "", " "불가),@Size(문자길이 측정), @Em.. 더보기
순환 의존성 문제(circular dependency) 도메인 계층에 User 엔티티 관련 수행해야하는 행위들을 모아놓은 interfac userRepository,그리고 infrastructure 계층에서 UserRepository를 구현한 UserJpaRepositoryImpl 클래스에서추상 메서드를 모두 구현한다. UserJpaRepositoryImpl 클래스는 JpaRepository를 상속한UserJpaRepository 인터페이스를 필드로 갖는데, UserJpaRepository 인터페이스를 구현한구현체가 UserJpaRepositoryImpl 빈으로 spring이 오인하면서 발생한 순환 의존성 문제가 발생했다.그래서 UserJpaRepositoryImpl 클래스명을 UserJpaRepositoryAdapter로 변경했더니순환 의존성 문제가 해결되.. 더보기
Http Method에서 GET, POST에 대한 고찰(생각 정리하기) 1. GET Method클라이언트가 서버에 특정 자원의 상태에 대한 조회 또는 검색을 요청을 할 때,어떤 자원을 대상으로할지(uri) 해당 자원을 어떻게 처리할지(http method)그리고 처리한 자원을 어떤 형식으로(representational)클라이언트에 응답할지에 대한 정보를 서버에 전달한다. http method에서 GET은 서버의 상태를 조회할 때 또는 검색할 때 사용한다.클라이언트의 GET 요청에 대해 서버는클라이언트가 여러 번 요청하여도 서버의 상태가 변하지 않으면서(멱등성을 보장,같은 요청을 여러 번 보내도 서버 상태가 같게 유지되어야 하며, 한 번은 변해도 되나,이후는 동일해야 함을 의미) 안전성을(요청이 서버의 상태를 절대 바꾸어선 안된다) 갖추도록설계해야 RESTful한 api의.. 더보기
DTO, VO(ex. record class), DAO(ex. JpaRepository 구현체) 개념 정리 dto(data transfer object, 데이터 전송 객체)는 클라이언트와 서버간 데이터를 전송할 때(계층간 데이터를 전송할 때 )사용되는 객체다. dto와 vo(Value Object)의 차이는vo는 값을 담은 객체로 불변성을 특징으로 하며, 값 자체를 표현하는데 중점을 둔다.vo는 불변적이며, 값과 관련된 로직 포함이 가능하다. vo는 값의 동일성, 불변성을 보장하는디자인 패턴이며, vo패턴을 간결하게 구현한 문법이 record class다.dao(data access object)는 데이터베이스 또는 기타 영구 저장소(파일 시스템, 외부 서비스 등)에접근하는 로직을 캡슐화하는 디자인 패턴이다(데이터베이스 접근 로직의 캡슐화).dao의 핵심 역할은 CRUD(create, read, update,.. 더보기
Terraform 기초 개념 IaC(Infrastructure as Code)란 인프라를 코드로 나타낸 것을 의미,즉 코드를 통해 인프라(서버, 네트워크)를 구축하는 방법을 뜻한다.과거 인프라는(클라우드라는 개념이 생기기전) 기업이 서버 컴퓨터를 직접 구매해자체 데이터센터에 설치하여 관리하는 방식인 온프레미스(On-Premiss)를 따랐다.엔지니어가 모든 하드웨어(서버, db, 네트워크 장비 등)와소프트웨어(운영체제, 어플리케이션 코드)를 설치 및 관리하였다는 것.물리적 인프라를 직접 관리하기에 유지보수 부담이 컸고,서비스 이용 급증에 따라 서버의 확장이 필요한 경우 빠르게 확장이 어려운 단점이 존재.클라우드 탄생클라우드는 서버 컴퓨터를 직접 구매하고,데이터센터에 따로 서버를 설치할 필요가 없어초기 투자비용이 적고, 서버를 쉽게 확.. 더보기
RESTful RESTful은 Representational State Transfer의 약어로, "표현 상태 전송"을 의미한다. 상태(State)는 클라이언트가 요청하는 자원의 현재 정보를 의미한다. 서버에 저장되어 있는 자원의 모든 속성 값이 바로 그 상태를 의미한다. 클라이언트가 요청을 보내면, 서버는 이 자원의 현재 상태를 클라이언트에게 전송한다(State Transfer) 표현(Representation)은 서버가 자원의 상태를 클라이언트에게 전달하는 방식 또는 형식을 의미한다. ex. 자원의 상태를 http응답 본문(Body)에 담을 때 사용하는 형식(JSON 또는 XML, HTML 등)이다. 표현에는 자원의 속성 값뿐만 아니라 콘텐츠 타입(Content-Type)과 같은 메타데이터도 포함된다. 표현의 의미.. 더보기
버블정렬(bubble sort) 구현하기 버블정렬은 큰 값이 하나씩 뒤로 위치하게 하는 정렬을 의미한다→ 두 값을 비교해서 기준에 따른 값 배치를 몇 번 반복할지를 정하는 로직을 구현해야하는 버블정렬String[] strings = {"sun", "bed", "car", "book"};int position = 1;...for(int n = 0; n 0 c1 = "sun".charAt(1); // c1 = 'u'; // 2) n: 0, j: 1, j 1 c2 = 'e'; char c2 = strings[j+1].charAt(n); if(c1>c2) // 'u'>'e' { String temp = strings[j]; .. 더보기

반응형