2022년 노마드코더의 클린코드 북틸 챌린지에 참여했었다.당시 남긴 TIL을 모아볼 수 있도록 정리.https://nomadcoders.co/users/xing 김시은 – 노마드 코더 Nomad CodersSee 김시은's Profile in Nomad Codersnomadcoders.co TIL-1. 깨끗한 코드 (2022.02.20[일])책 에서 기억하고 싶은 내용을 써보세요.코드를 하나하나 짚어가며 저자가 코드를 고쳐간 방식을 이해하고 납득해야 가치를 발휘하는 책이다. (번역판 옮긴이 서문)작은 것에도 충실한 사람이 큰 것에도 충실하다. (추천사)아키텍처도, 깨끗한 코드도, 완벽을 주장하지는 않는다. 단지 최선을 다해 정직하라 요구할 뿐이다. (추천사)기계가 실행할 정도로 상세하게 요구사항을 명시..
문제 링크: https://www.acmicpc.net/problem/1003피보나치 수열에서 원하는 수 n을 호출했을 때, 0과 1이 총 몇 번 호출되는지 묻는 문제 접근 1. 재귀문제에 나온 그대로 피보나치 함수를 구현했다.def fibo(n): if n == 0: return 0 elif n == 1: return 1 else: return fibo(n-1) + fibo(n-2)0이 카운트되는 횟수, 1이 카운트되는 횟수를 따로 변수에 저장해서 풀었지만결과는 시간초과! 접근 2. 메모이제이션피보나치 수열은 fibo(n) = fibo(n-1) + fibo(n-2).fibo(5)를 예시로 들어보자, fibo(5)= fibo(4) + fibo(3)= fibo(3) + f..
1. validation 의존성 추가build.gradle의 dependencies에 아래 코드를 추가해주자.implementation 'org.springframework.boot:spring-boot-starter-validation' 2. 유효성 검사 코드 예시@Getter@Setter@AllArgsConstructorpublic class Member { @NotBlank(message = "아이디는 필수 입력 값입니다.") private String userId; @NotBlank(message = "비밀번호는 필수 입력 값입니다.") private String pw; @Pattern(regexp = "^[ㄱ-ㅎ가-힣a-z0-9-_]{2,10}$", message =..
1. Jackson 라이브러리란REST API 방식으로 서버와 클라이언트가 통신할 때, JSON 형식을 주로 사용함.그런데 서버단에서는 Camel Case 방식을, 클라이언트단에서는 Snake Case 방식을 사용함.따라서 서버단과 클라이언트단의 표현 방식이 다르기 때문에, 데이터의 key가 달라지는 경우 존재.이러한 문제를 해결하기 위해 해당 라이브러리의 어노테이션 사용.-> @JsonProperty, @JsonNaming 2. @JsonProperty, @JsonNamingJava 객체의 필드와 JSON 객체 속성 간의 매핑 정의. → Java 필드명과 JSON 속성명이 다를 경우에도 서로 연결 가능. json으로 넘어오는 값이 아래와 같다고 가정하자.{ “name” : “상품명”, “p..
1. dependencies 블록은?받아올 라이브러리를 정의해두는 공간.dependencies { implementation 'org.springframework.boot:spring-boot-starter-web' compileOnly 'org.projectlombok:lombok' testImplementation 'org.springframework.boot:spring-boot-starter-test'}위와 같은 dependencies가 있다고 가정하자.implementation, compileOnly 등 생소한 키워드들이 많은데.. 얘네들은 뒤에 오는 라이브러리들이 적용될 범위(scope)를 정해준다. 2. Keyword 정리 implementation- 전 범위에 걸쳐 적용된다. testIm..
지난 첫 페어 프로그래밍에 이어, 두 번째로 페어 프로그래밍을 해봤다.>> 지난 글 보기: https://lvolz.tistory.com/70 주제는 선택 정렬 구현하기.구현한 코드는 다음과 같다.# 선택 정렬_오름차순arr = [2, 4, 7, 6, 9, 3, 1, 5, 8, 10]for i in range(len(arr)): min_idx = i for j in range(i+1, len(arr)): if arr[min_idx] > arr[j]: min_idx = j arr[i], arr[min_idx] = arr[min_idx], arr[i]print(arr) 이런 방식으로도 풀 수 있을 것이다. (for j로 돌리지 말고 그냥 min 함수 사용)fo..
Request: 클라이언트의 요청. (Client -> Server) Request 구조Request Line - Method 종류, 경로Request Headers(택)Request Message Body - 파라미터 형식 (서버에 전송할 데이터를 body에 담음) Request 주요 요소Request Methods가 중요하다고 생각한다. 서버가 수행해야 할 동작을 지정해서 요청을 보내기에 주요한 것 같다. Response: 요청에 대한 서버의 답변. (Server -> Client) Response 구조Status Line - 요청의 성공 여부를 나타내는 상태 코드 (ex. 200, 404, 302 ..)HeaderBody - 전송할 데이터를 담음 Response 주요 요소Status Code클라이언..
프로젝트 구상 자바 프로그래밍을 배운 후, 곧바로 이어서 미니 프로젝트를 진행했다. 2024년 4월 11일부터 17일까지, 평일 5일간 아이디어 구상부터 기획, 설계, 개발, 발표까지 마쳤다. Swing을 활용해서 간단하고 재밌는 게임을 구현하고자 했다. 정한 주제는 개복치 키우기 게임 제작하기! 학교에서 자바를 배운지도 오래되어 기억이 잘 안 났고, 자바로만 프로젝트를 진행해본 적이 없었기 때문에 잘 구현할 수 있을지 걱정되었다. 프로젝트 일정 1일차 (4.11목) : 프로젝트 주제 선정, 아키텍처 구조 설계 및 틀 구현 2일차 (4.12금) : Figma 각 화면 디자인, DAO 및 기능 명세서 작성, 역할 분담 3일차 (4.15월) : HomeScreen와 내부 요소 UI 작업, 백엔드 구현 (DA..