TIL 43

8/26

👣 개요 어제 Lv.1 과제를 수행하고 테스트를 하던 도중, 잘못된 기술이 사용됨을 깨닫고 급하게 기술 스택을 바꿨다. Lv.1 과제에서는 JPA를 이용해 블로그 API 서버를 만들어야 했지만, 착각을 해 JDBC를 이용해 DB 통신을 했었다. 다행히도 기존에 사용하던 ArticleRepository가 JpaRepository에서 사용하는 메서드와 겹치는 부분이 많아 쉽게 JDBC에서 JPA로 바꿀 수가 있었다. 이런 경험을 통해 지금 당장 바꿀 예정에는 없지만 변경 가능성이 농후한 기술들에 대해서도 쉽게 바꿀 수 있도록 인터페이스를 구성해야 겠다는 생각을 했다. 결국, Lv.1에 대한 과제를 제출하고 다음 강의를 듣기 시작했다. 다음 강의는 주로 보안과 관련된 강의들이었다. 보안과 관련된 강의를 진행하..

TIL 2023.08.26

8/25

👣 개요 3주차가 시작되었다. 3주차는 주특기[Spring]을 익히는 주차로 강의를 듣고 각 과제를 해결해야 하는 주차였다. 우선 1주차 강의 내용은 다음과 같았다. Spring을 위한 기본적인 지식 Intellij에서의 Spring 프로젝트 시작 방법 Gradle 사용방법 HTTP 강의 테스트 코드 강의 MySQL 설치 방법 Spring MVC 패턴 Spring 라우팅 및 Path Variable, Request Param 간단한 Spring Project 수행 Spring Boot JDBC MySQL Thymeleaf DB와 SQL JDBC 강의를 듣고 1주차의 숙제를 수행했다. 그 이후, Lv.1의 과제를 수행했다. Lv.1 과제를 요약하면 다음과 같다. 간단한 게시글을 작성할 수 있는 블로그의 A..

TIL 2023.08.25

8/24

👣 개요 오늘은 2주차 알고리즘 풀이 시험을 치뤘다. 해당 알고리즘 풀이 시험을 수행한 뒤, '자바 ORM 표준 JPA 프로그래밍'라는 책을 읽고 게시물을 작성하고자 했다. 우선 JPA의 탄생 이유에 대해 설명하기 위해 JDBC로만 작성된 DB 조회 Application을 만들어보고자 하였다. 프로젝트를 생성할 때, 오로지 Spring web 관련 라이브러리와 JDBC, H2DB Driver 라이브러리만 추가했다. 해당 프로젝트에서는 Member 엔티티를 만들고 해당 엔티티를 DB에서 조회하는 상황을 연출했다. 하지만, JDBC를 많이 사용하지 못하다보니 코드 작성 속도가 많이 더뎠고 완성하지 못한 채로 하루를 마치게 되었다. 해당 코드가 정상 작동함을 확인하면 github에 올리고 해당 코드를 예시로 ..

TIL 2023.08.24

8/23

👣 개요 Effective Java를 전체적으로 다시 훑어 처음에 공부했던 부분을 다시 상기시키는 작업을 수행했다. 동시에 '자바 ORM 표준 JPA 프로그래밍'이라는 책을 구입해 조금 읽었다. 내일[8/24]에 알고리즘 문제를 푸는 시험을 보기 때문에 Java에서 자주 사용되는 문법들을 다시 정리하기도 했다. 정리한 내용은 다음과 같다. 1. 특정 범위 내에서만 증가하게 하기. newC = newC + n; newC = floor + (newC - floor) % (ceil - floor); 2. 특정 값으로 List 초기화 List copies = Collections.nCopies(3, "초기화할 값"); // copies : ["초기화할 값", "초기화할 값", "초기화할 값"] 3. Set의 교..

TIL 2023.08.23

8/22

👣 개요 Effective Java의 끝까지 공부하고 요약했다. 9장의 '일반적인 프로그래밍 원칙' ~ 12장의 '직렬화'까지 공부했으며 이 중 직렬화의 경우, 너무 난해해 2회독 때 다시 자세히 살펴보기로 하였다. 동시에 동시성에 대한 공부가 미흡함을 느끼고 java.util.concurrent 패키지를 공부해야 겠다는 생각을 했다. 원래 'Effective Java - 1회독 요약' 게시물에 모든 공부내용을 적었지만 이것을 chapter마다 소분해서 게시물을 작성했다. 그 내용을 'Effective Java - 1회독 요약'에 반영했다. 👣 공부 내용 Effective Java - 1회독 요약 👣 개요 빠르게 훑어보며 각 부분이 큰 그림 속의 어떤 위치에 있는지 파악하는 단계. Effective Ja..

TIL 2023.08.22

8/21

👣 개요 역시나 마저 남은 알고리즘 문제를 해결. 👣 Collections.nCopies Python에서의 [0] * n과 같이 특정 아이템을 n개 가진 List를 출력함 List copies = Collections.nCopies(3, "초기화할 값"); // copies : ["초기화할 값", "초기화할 값", "초기화할 값"] . 👣 Set 의 교집합, 합집합, 차집합 교집합 Set set1 = new HashSet(Arrays.asList(1, 2, 3, 4, 5)); Set set2 = new HashSet(Arrays.asList(3, 4, 5, 6, 7)); Set intersection = new HashSet(set1); intersection.retainAll(set2); // 출력: ..

TIL 2023.08.21

WIL - 8/14 ~ 8/20

👣 항해99 정규 과정 1주차 이번주는 java 기본 문법을 배우고 해당 문법의 알고리즘 문제를 풀며 익히는 한주였다. 사실 해당 교육 이전에 이미 java에 대한 공부를 수행했었기에 강의 자체로는 큰 이득을 얻지 못했다. 하지만 기술 매니저님의 조언을 받아 Effective Java라는 책을 읽으며, 사소한 차이지만 큰 성능 상의 차이를 내는 포인트들을 익힐 수 있었다. 그동안 핑계를 대며 java에 대해 깊은 이해를 하지 않으려 했었기에 이 기회에 다시 재정립을 하자는 마음으로 java에 대한 지식을 다져보니 생각보다 많은 것을 모르고 있다는 것을 깨달았다. 예를 들어, 그동안 Enum 클래스를 작성하면서 새로운 Item을 추가히기 위해 단순히 소스 코드를 수정했다. 하지만 이것은 OCP 원칙을 무너..

TIL 2023.08.20

8/19

👣 개요 marathon 알고리즘 문제를 모두 풀고 challenge 알고리즘 문제를 역순으로 풀고 있다. 앞의 문제는 페어 프로그래밍을 위해 남겨두고 있다. 👣 특정 범위 내에서만 증가하게 하기. 예를 들어서, t의 n번째 뒤의 영문자를 찾아야 한다고 가정하자. 만약 z이상의 인덱스를 요구할 때는 다시 a부터 시작하는 구조라고 할 때, 이를 수식적으로 쉽게 구현하는 방법은 다음과 같다. char c = 't'; int newC = (int) c; int floor='a', ceil='z'+1; newC = newC + n; newC = floor + (newC - floor) % (ceil - floor); ceil의 경우, +1를 빼먹지 말아야 한다.

TIL 2023.08.19

8/18

👣 개요 Java로 프로그래머스 Lv.0 ~ Lv.2 수준의 알고리즘 문제를 풀이함. Python으로 코딩 테스트를 준비했었기에 알고리즘 풀이는 익숙했으나 Java 문법에 대해 구멍이 많아 시간을 많이 소비했다. 같은 문법 실수를 범하지 않기 위해 아래에 자주 실수한 문법들을 기록하고자 한다. 👣 Stream 관련 주요 함수 Stream 초기화. 1. 배열 -> Stream int[] array = {1, 2, 3, 4, 5}; IntStream intStream = Arrays.stream(array); 2. Collections -> Stream List stringList = Arrays.asList("apple", "banana", "orange"); Stream stringStream = str..

TIL 2023.08.18

8/17

👣 개요 Effective Java 4장. 클래스와 인터페이스 Item 17 ~ Item 25 5장. 제네릭 Item 26 ~ Item 33 6장. 열거 타입과 애너테이션 Item 34 ~ Item 37 👣 공부 내용 이미 작성한 내용이 있어서 해당 게시물의 링크를 아래에 띄웠습니다. Effective Java - 1회독 요약 👣 개요 빠르게 훑어보며 각 부분이 큰 그림 속의 어떤 위치에 있는지 파악하는 단계. Effective Java는 총 480쪽으로 이뤄져 하루에 100쪽을 읽는다는 목표로 1주일 내에 읽을 예정이다. 해당 회독은 ikadnorth.tistory.com 👣 독서를 통해 알 수 있던 것 사실 해당 내용을 전부 이해한 것은 아니다. Effective Java의 내용은 다소 당연하게 생각..

TIL 2023.08.17