본문 바로가기

개발 관련 공부139

[스프링 입문]섹션 1. 프로젝트 환경설정 view 환경설정 스프링 부트 스타터 사이트에서 스프링 프로젝트를 생성하고 IntelliJ에서 연다. staic 폴더 아래에 기본적인 웰컴페이지 html 파일을 작성하고 실행하면 위 화면을 볼 수 있다. 관련 설명을 공식 페이지에서 볼 수 있다. 링크는 여기 tymeleaf 템플릿 엔진 Thymeleaf 는 웹을 위한 server-side Java template engine이다. Thymeleaf 공식 페이지 얘에 대한 설명도 스프링 공식 페이지에서 볼 수 있다. controller라는 패키지를 만들고 HelloController 라는 파일을 작성해보자. package hello.hellospring.controller; import org.springframework.stereotype.Control.. 2022. 9. 17.
defaultdict이란? 오늘은 고수가 23줄만에 푼 문제를 1시간 반 넘게 붙잡고 뻘짓한 슬픈 날이다. 나는 dfs 문제에 좀 약한 것 같다.... 아무튼 고수들의 코드를 보니 하나같이 defaultdict를 쓴 것을 볼 수 있었다. 나는 그냥 dict을 썼다가 key error를 213539번 마주한 상태였다. dict이면 dict이지 defaultdict는 대체 무엇이란 말인가? 그래서 defaultdict이란? 객체의 기본값을 미리 지정해 놓을 수 있는 딕셔너리이다. 그러니까 이걸 쓰면 그런 키 값 없어! 하고 뱉는 keyerror로부터 자유로워질 수 있다는 말이다. from collections import defaultdict data = defaultdict(int) 예를 들어 이렇게 사용하면 값이 지정되지 않은 키.. 2022. 9. 16.
클린코드 16장 16장 SerialDate 리팩터링 SerialDate는 날짜를 표현하는 자바 클래스다. 이 장에서는 SerialDate 클래스를 리팩터링한다. 첫째, 돌려보자. SerialDateTest라는 클래스는 단위 테스트 케이스 몇 개를 포함한다. 돌려보면 실패하는 테스트 케이스는 없지만 살펴보면 모든 케이스를 점검하지 않는다. 그래서 저자는 독자적으로 단위 테스트 케이스를 구현한다. 그러자 경계 조건 오류가 존재하며, 논리적 오류로 인하여 결코 실행되지 않는 코드도 존재한다는 사실이 밝혀진다...해당 오류들을 모두 고쳐 테케를 모두 통과하게 만든 후 리팩터링에 들어가자. 둘째, 고쳐보자. 변경 이력 없애기 이제는 소스 코드 제어 도구를 사용하므로 변경 이력은 없애도 좋다. import문 줄이기 import 문.. 2022. 9. 16.
클린코드 15장 15장 JUnit 들여다보기 이 장에서는 JUnit 프레임워크에서 가져온 코드를 평가한다. JUnit 프레임워크 우리가 살펴볼 모듈은 문자열 비교 오류를 파악할 때 유용한 ComparisionCompactor라는 모듈로, 두 문자열을 받아 차이를 반환한다. 예를 들어, ABCDE와 ABXDE를 받아 를 반환한다. package junit.framework; public class ComparisonCompactor { private static final String ELLIPSIS = "..."; private static final String DELTA_END = "]"; private static final String DELTA_START = "["; private int fContextLeng.. 2022. 9. 16.
[cs 정리] 데이터베이스 이 포스트는 2021.12~2022.09 기간동안 벨로그에 작성한 글을 티스토리에 옮겨 적은 것입니다. 1. 정규화 과정에 대해 설명해주세요 관계형 데이터베이스의 설계에서 중복을 최소화하게 데이터를 구조화하는 프로세스를 정규화라고 합니다. 보통 제 3정규형 과정까지 완료되었으면 정규화 되었다고 말합니다. 제 1 정규형은 도메인이 원자값만을 포함하게 만듭니다. 제 2 정규형은 부분적 함수 종속을 제거합니다. 제 3 정규형은 기본키에 대해 이행적 종속을 제거합니다. 제 1 정규형(1NF; First Normal Form) 1NF를 만족하려면 도메인이 원자값이어야 한다. 위 테이블은 수강자 속성이 원자값이 아니어서 1NF가 아니다. 제 2 정규형(2NF; Second Normal Form) 2NF를 만족하려면.. 2022. 9. 16.
클린코드 14장 14장 점진적인 개선 책 초반에, 좋은 코드를 짜기 위해서는 일단 막 짜고 나서 다듬어야 한다고 했다.. 초안 코드를 단계적으로 개선해 좋은 코드를 만들어야 한다. public static void main(String[] args) { try { Args arg = new Args("l,p#,d*", args); boolean logging = arg.getBoolean('l'); int port = arg.getInt('p'); String directory = arg.getString('d'); executeAppliocation(logging, port, directory); } catch (ArgsException e) { System.out.printf("Argument error: %s\n".. 2022. 9. 16.
반응형