본문 바로가기

전체 글

(147)
부트캠프 62일차 일지 오늘은 아침부터 최종 프로젝트 발제를 듣고, 부랴부랴 팀원들과 인사하며, 프로젝트를 기획하였다. 이전 프로젝트 때에는 기획이 많아도 하루만에 끝났으나, 이번 팀 프로젝트는 기획이 하루만에 끝나지 못했다. 아무래도 이번 프로젝트가 마지막이고, 취업에서 가장 유용하게 사용할 프로젝트이기 때문에, 다들 신중하게 기획에 임하였기 때문에다. 이 기획 단계는 오늘을 포함한 3일에 걸쳐 진행될 예정이다. 이번에 기획하게 된 팀 프로젝트는 도서관 플랫폼 서비스이다. 책을 검색하고 그 책이 어디 도서관에 보관되어있는지, 찾는 서비스이다. 이번 기획을 준비하면서 여러 아이디어가 나왔다. 이전에 프로젝트에서 사용하였던 음악앨범 관련 기획이나, 영화관련 API도 제시되었지만, 전자는 사용할만한 API가 없었던 점으로 인해 각..
부트캠프 61일차 후기 어제는 발표자료를 만드느라 바빴다. 그래서 적을 내용도 없었고, 평소보다 늦은 시간까지 참여하였기 때문에 TIL은 없다. 오늘 아침도 어제에 이어서 발표자료를 만드느라 바빴기에 오늘의 CodeKata는 없다. 대신 어제는 CodeKata 2문제를 풀었기 때문에 이것을 살짝 언급만 하고 넘어가겠다. 어제 푼 문제는 각각 BFS, Hash 문제였다 앞의 하나는 그래프를 직접 만들어서 BFS를 돌리는 문제였기에 크게 어려운 것은 없었다. 다만 Hash 문제는 약간 까다로웠는데, 말이 Hash 문제지 속을 들여다보면, Sort 문제였기 때문이다. 이 문제를 풀면서 내가 아직도 Kotlin의 Sort를 잘 사용하지 못한다는 것을 깨닫게 되었다. Kotlin에서 SortBy는 Sort 기중을 정하는 것이고, Sor..
부트캠프 59일차 후기 오늘 CodeKata는 간만에 2문제를 풀었다. 한 문제는 Priority_Queue와 Map을 활용한 비교적 난이도가 있던 문제였는데, 두 번째 문제는 DFS 혹은 BFS만 써도 풀리는 문제였다. 그런데, 두 문제 다 똑같은 난이도인 LV7인데 이 부트캠프의 난이도 분배에 의구심이 들기 시작한다. 오늘은 하루종일 테스트코드 만지작 거렸다. 처음에는 그냥 수정만하면 되는 간단한 작업이라 생각했는데, 가면 갈수록 어려운 작업이 되어버려서 튜터님께 여쭈어보기까지 했다. 일단 내가 겪고 있는 문제는 테스트용 데이터가 지워지지 않는 문제이다. 그래서 처음엔 단순하게, afterTest로 repository를 비우는 방안을 사용했다. 그런데 이 프로젝트에서는 모든 Entity가 기본적으로 softDelete를 사..
부트캠프 58일차 후기 오늘은 오래간만에 CodeKata를 1문제를 풀었다. 이 문제는 단순 탐색 문제였는데, dfs를 사용하였을 때, 시간 초과 내지 런타임 에러가 발생하였다. https://school.programmers.co.kr/learn/courses/30/lessons/86052 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 해당 문제의 질문란을 검색해 본 결과, dfs로 하면, stackoverflow 문제가 발생해서 런타임 에러가 발생했던 것이였다. 그래서 while문으로 바꾸고 나니 런타임 에러가 발생하지 않게 되었지만, 시간 초과는 그대로 되었다. 여기서 의..
부트캠프 57일차 후기 지난 주엔 수술 일정이 잡혀서 부트캠프에 참여를 하지 못했다. 지금도 수술한 곳이 아프기 때문에 빠진 것은 나름 좋은 선택이였다고 믿고 싶다. 갈길이 바쁘기 때문에 오늘도 CodeKata는 거르고 바로 개발에 돌입했다. 수술을 하고, 주말을 보내면서. 내가 Redis를 쓰며 겪은 BeanDefinitionOverride 문제를 해결하기 위해서 구글링을 하며 열심히 해결책을 강구하였다. 일단 이 Exception의 원인은 금방 찾았다. 내가 @Entity와 @RedisHash를 같이 썻기 때문이다. 찾아본 결과 이 두 개를 같이 쓰는 블로그는 없었다. 내가 이 2개를 같이 썼기 때문에 CrudRepository를 사용할 때, Redis 용으로 하나, JPA 용으로 하나 씩 Repository가 만들어져서 ..
부트캠프 55일차 후기 오늘부터 팀 프로젝트에 돌입했다. 아침부터 CodeKata는 건너뛰고, 팀 프로젝트의 예외 처리나 명명을 어떻게 할 것인지를 팀원분들과 대화를 나눴고, 각자 맡은 Domain 개발에 집중하였다. 나는 Redis를 다루지만, 한 번도 Redis를 다룬 적이 없어서 부트캠프 측에서 준비한 Redis 특강을 들었다. 다만, Redis를 다루는 방법보단 Redis의 목적과 특징을 다루는 강의였기에, Redis를 다루는 법은 구글링을 할 수 밖에 없었다 그럼에도, 기억해 둘만한 것들을 이곳에 적어보기로 한다. Redis는 몇 가지의 자료구조를 지원하는데, 연결 리스트인 List, 집합인 Set, 순서를 보장하는 집합인 SortedSet, Key:Value 방식 내에서도 다시 Key:Value 방식을 지원하는 Ha..
부트캠프 54일차 후기 오늘은 아침부터 팀 프로젝트 오리엔테이션을 듣고, 하루종일 팀원분들과 같이 프로젝트에 관해 논의하였다. 그래서 오늘은 딱히 배운 것이 없다. CodeKata도 진행 한 것이 없어서 매우 안타깝다. 이번 프로젝트는 스레드를 다루는 프로젝트이다. 즉, 순간적으로 많은 요청이 들어올 때, 동시성 이슈를 해결하는 프로젝트를 만드는 것이다. 지금까지 경험한 그 어떤 프로젝트보다 어렵고 도전적인 프로젝트가 될 것임이 분명하다. 일단 Redis를 사용할 것이기 때문에 Redis를 공부할 예정이다. Redis는 disk가 아닌 memory에 저장하는 No-SQL로써 Key-Value 쌍의 해쉬 맵 형태의 데이터베이스이다. 메모리에 저장하는 만큼 속도가 빠르지만, 휘발성이란 단점이 있다. 앞으로는 이 Redis에 대해 ..
부트캠프 53일차 후기 오늘 CodeKata는 1문제를 풀었다. 2번째 문제를 풀 시간은 있었지만, 지금까지 연휴였기에, 풀 기력이 되지 않아서, 그냥 1문제를 푸는 것으로 만족했다. 그리고 kotest를 한 번 시험해 보았다. 이전에는 DescribeSpec을 사용했었는데, 이번엔 BehaviorSpec을 사용했다. 그리고 이전 일지에도 적은 내용이지만, DescribeSpec은 describe-context-it를 활용하는데 반해, BehaviorSpec은 Given-When-Then을 사용한다. 그리고 놀랍게도, 테스트 만들고 실행을 했었을 때, 버그를 발견했다. 내가 테스트한 것은 QueryDSL로 만든 검색 기능이다. 이 기능은 DTO로 Keyword를 받아서, 검색을 하는 것인데, keyword 중 하나 즉, 제목이..