전체 글

·Back-end
스프링에서 JPA를 사용 시 application.yml 파일의 spring.jpa.hibernate.ddl-auto: create 설정을 통해 하이버네이트가 자동으로 테이블을 만들어주지만 실 배포 단계에서는 하이버네이트가 자동 생성한 sql을 사용하는 것은 좋지 않다. 1️⃣ schema.sql 파일 schema.sql 파일을 만들면 하이버네이트에서 기본적으로 만드는 ddl을 사용하지 않고 데이터베이스 테이블을 만들 수 있다. 해당 파일을 resources 디렉토리에 만들어준다. drop table if exists post; create table post ( id bigint not null auto_increment, title varchar(255), content text not null, p..
·Back-end
1️⃣ keypair.pem 다운로드 EC2를 처음 생성할 때 받은 keypair를 잘 보관해 둔다. (딱 한 번만 다운로드 가능) 2️⃣ 경로 이동 후 keypair의 권한 변경 keypair가 있는 곳으로 경로 이동 $ cd ~keypair경로 내 경우 > cd /Users/컴퓨터이름/Downloads keypair의 권한 변경 $ chmod 600 keypair이름.pem keypair 이름이 abcd.pem 일 경우 > chmod 600 abcd.pem 을 터미널에 입력해 준다. 3️⃣ 터미널에서 접속 터미널에서 접속 $ ssh -i key-pair-이름.pem username@EC2퍼블릭IPv4DNS > ssh -i /key-pair-이름.pem username@EC2퍼블릭IPv4DNS 여기서 ..
·Back-end
@Bean public SecurityFilterChain filterChain(HttpSecurity http) throws Exception { http.csrf().disable(); return http.build(); } Spring Security 코드를 작성하면서 CSRF 공격에 대비를 하지 않고 이를 비활성화시켜도 되는지에 대한 의문이 들었다. 이에 대해 잘 모른 채로 보안 코드를 작성하는 것은 옳지 않다고 생각되어서 CSRF 보안 코드를 왜 비활성화시키는지 찾아 정리해 보았다. 1. CSRF(Cross-Site Request Forgery) 1.1 Cookie & Session CSRF를 알아보기 앞서 쿠키와 세션에 대한 간단한 이해가 필요하다. 사용자가 특정 서버에 로그인하면 일반적으로..
·Back-end
@Controller 🆚 @RestController @Controller 기존의 Spring MVC가 view을 사용하기 때문에 view(화면)를 return 데이터는 ModelAndView객체를 이용해 Controller에서 Client로 전달 @ResponseBody 어노테이션을 사용 시 View를 return하지 않고 Controller에서 직접 데이터 return 가능 @RestController 모든 메서드는 @ResponseBody 어노테이션 기본으로 작동 컨트롤러 클래스의 각 메서드마다 @ResponseBody을 추가할 필요 X View가 필요없는 REST 방식에서 주로 사용 ResponseEntity란 스프링에서 제공하는 ResponseEntity 타입은 개발자가 직접 결과 데이터와 HT..
·Back-end
H2란?Java로 작성된 오픈소스 RDBMS스프링 부트가 지원하는 인메모리 관계형 데이터베이스인메모리로 띄울 경우 애플리케이션을 재시작할 때마다 초기화별도의 설치 필요 없음로컬 환경, 테스트 환경에서 많이 사용H2 설치https://www.h2database.com/html/main.html 에서 Download All Platforms를 클릭한다. H2 Database EngineH2 Database Engine Welcome to H2, the Java SQL database. The main features of H2 are: Very fast, open source, JDBC API Embedded and server modes; in-memory databases Bro..
·Back-end
1. .gitignore란? 민감한 정보가 들어있는 파일이나 형상관리할 필요가 없는 파일들은 git에서 더이상 추적(track)하지 않도록 .gitignore 파일에 추가한다. - .gitignore 파일은 프로젝트 디렉토리 최상단에 위치하게 한다. 2. .gitignore 사용법 1) 작성패턴 - #로 시작하는 라인은 주석, 무시한다. - 표준 glob 패턴을 따른다. - 디렉토리는 끝에 슬래시(/)를 사용해 표현한다. - 느낌표(!)로 시작하는 경우는 예외로 처리한다. # : comments # 특정 확장자를 가진 모든 파일 무시 *.txt # 예외인 경우 !lib.a # 현재 경로에 있는 fileName 무시 /fileName.txt # 특정 디렉토리의 모든 파일 무시 build/ # 특정 디렉토리..
·Back-end
1️⃣ Entity에 사용한 롬복 @Entity 테이블과의 매핑 @Entity가 붙은 클래스는 JPA가 관리하는 것으로, 엔티티라고 불린다. @DynamicInsert null 인 필드값이 insert 나 update 시 제외되게 하는 방법은 org.hibernate.annotations. 패키지의 @DynamicInsert (insert 시 null 인필드 제외) @DynamicUpdate (update 시 null 인필드 제외) 를 사용한다. @AllArgsConstructor 모든 필드 값을 파라미터로 받는 생성자를 만든다. https://yuja-kong.tistory.com/99 [Lombok] @Builder 사용 시 @NoArgsConstructor 관련 에러 해결 Spring Boot로 개..
·문제풀이/BOJ
[문제] https://www.acmicpc.net/problem/2309 2309번: 일곱 난쟁이 아홉 개의 줄에 걸쳐 난쟁이들의 키가 주어진다. 주어지는 키는 100을 넘지 않는 자연수이며, 아홉 난쟁이의 키는 모두 다르며, 가능한 정답이 여러 가지인 경우에는 아무거나 출력한다. www.acmicpc.net [풀이] "아홉 난쟁이의 키는 모두 다르지만 그중 일곱 난쟁이의 크기의 합은 100이 된다" 는 것은 sum(난쟁이 리스트) - (난쟁이1 + 난쟁이2) == 100과 같다. 두 난쟁이를 구하기 위해 전체 탐색을 해야 한다. [코드] import sys men = [int(sys.stdin.readline()) for _ in range(9)] flag = False for i in range(9..
[문제] https://school.programmers.co.kr/learn/courses/30/lessons/70129 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr [코드] def solution(s): cnt, zero_cnt = 0, 0 while s != '1': zero_cnt += s.count('0') s = bin(len(s.replace('0', '')))[2:] cnt += 1 return [cnt, zero_cnt]
서채리
chaewss