본문 바로가기

전체 글

(147)
뉴스피드 프로젝트 회고 짧은 1주일 간의 프로젝트가 오늘 끝났다. 이번엔 프로젝트를 회고하고자 글을 써본다. 일단 좋았던 점을 이야기하자. 내가 프로젝트에서 처음으로 팀장을 맡아 이전에 비해 적극적으로 프로젝트에 관여를 했다는 것은 좋은 점이다. 다른 팀원 분들을 내 나름대로 프로젝트에 참여하게끔 유도하려고 노력을 했고, 각 팀원에게 도메인을 담당해서, 각자 Branch를 만들고 개발을 해 다른 팀원과의 개발 범위과 겹치는 일을 최대한 피해서 GIT에서 conflict가 일어나는 경우를 최소화 했다, 거기에 아이디어를 내고 추가하하려고 했던 부분은 좋았으며, 시간 내 하나의 프로젝트를 완성했다는 것에 좋은 점수를 주고 싶다. 하지만, 안 좋았던 점이 많다. 일단 첫째, 나에 대한 의존도가 높았다. 내가 다른 팀원들에 비해 개인..
부트캠프 33일차 후기 오늘 CodeKata는 2문제를 풀었다. 한 문제가 구현 문제이기도 했고, 변수도 다른 문제보다 많이 써서 헷갈려서 오래걸렸다. 오늘은 드디어 팀 프로젝트를 대강 마쳤다. 이전 주차에 했던 프로젝트에서 Member 클래스를 가져왔는데, 가져온 김에 Spring Security를 같이 가져와서 팀 프로젝트에 맞게 변형시켜 끼워넣었다. 다행히 오류 없이 정상적으로 작동한다. 그 다음 Member와 다른 Entity들을 연결하는 작업을 했고, 각 Entity의 Controller에서 EndPoint를 수정했다. 예를 들어 Album을 만들면 Song도 같이 만들 수 있도록 했다. 여기서 Controller Song의 목록을 어떻게 전달하느냐가 문제였는데, 처음엔 Song DTO List를 직접 Controll..
부트캠프 32일차 후기 오늘 CodeKata는 3문제를 풀었다. 가장 기억에 남는 문제는 두 번째로 풀었던 "두 큐 합 같게 만들기"이다. https://school.programmers.co.kr/learn/courses/30/lessons/118667 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 이 문제는 얼핏 보면 Queue를 사용해서 Bruteforce하게 푸는 문제처럼 보여진다. 하지만, 두 큐의 길이가 십만 단위라서 Bruteforce하게 풀 순 없다. 그렇다면 어떻게 풀어야할까? 여기서 한 가지를 깨달았는데, 당연하지만, queue1에서 뺀 원소를 queue2로 ..
부트캠프 31일차 후기 오늘 CodeKata는 1문제를 풀었다. 처음으로 막히는 문제를 만나서 해결하는데 시간을 소비해버렸다. 이 문제를 해결하는 과정에서 가장 기억에 남는 오류는 마지막에 만난 시간초과 오류이다. 해당 문제는 반복문을 활용한 구현문제였기에, 처음엔 재귀를 활용해 문제를 풀었는데, 시간초과가 났다. 분명 로직은 그렇게까지 시간을 소비할 것 같지 않아서 이번엔 반복문으로 바꿔서 문제를 풀었지만, 이번에도 시간초과를 맞이한다. 다른 사람들의 답안을 보아도 나랑 비슷한 흐름대로 풀어서, 혹시 Kotlin으로 이 문제를 풀 수 없나는 생각이 내 뇌를 어지럽혔었다. 혹시 메인 로직이 아닌 다른 곳에서 시간초과가 난 것이 아닌가란 생각이 막 들었을 때, 다른 곳으로 눈길을 돌려보았다. 그러자, 의심스러운 곳을 발견하였다...
부트캠프 30일차 후기 오늘 CodeKata는 2문제를 풀었다. 두 번째 문제는 이전에 풀었던 문제였는데, 혹여나 지금의 나라면, 다른 방식으로 풀 수 있지 않을까라는 기대와 함께 여러 시도를 해봤지만, 보기 좋게 실패해서 결국 이전 코드를 Kotlin으로 옮기는 수준으로 그쳐버렸다. 이후 GIT에 대해 알아봤지만, 어느정도 아는 내용들이고, 그냥 글만 읽자니 갑자기 귀찮아지고, 내가 맡고 있는 파트를 기다리는 팀원이 계셔서 그냥 dev 브랜치에 Merge를 하였다. 다행히 Confilct가 없었고, 내 코드를 쓰시는 팀원께서 별 다른 말이 없는 걸 보면, 별다른 문제가 없는 모양이다. 이후로 팀원이 코드를 Push하셔서 간단하게 리뷰를 했는데, Service층에서 엔티티를 그냥 사용하셔서 DTO로 바꾸라고 조언을 하였다. 그..
부트캠프 29일차 후기 오늘부터 새로운 팀 프로젝트가 시작되었다. 아침부터 발제가 시작되어서, 오늘 CodeKata는 푼 문제가 없다. 대신 새로운 팀원분들과 함께, 앞으로의 프로젝트에 관해 논의하였다. 일단 팀장은 나로 정해졌다. 사다리타기를 해서 결정되었는데, 이전 팀에서도 비슷한 경험이 있어서, 내가 운이 안 좋나 진지하게 생각을 해봐야겠다. 그래도 바지팀장은 아니라서, 주제와 API 명세, ERD를 내 쪽에서 주도해서 구상했다. 주제는 노래 뉴스피드이다. 한 작성자가 앨범과 곡 목록을 작성하면, 그 앨범과 곡들에 대해 댓글을 달며 이야기 할 수 있는 주제를 선정하였다. 이 주제는 사실 개인 프로젝트를 구상하면서 떠올랐던 아이디어였는데, 다른 좋은 아이디어가 없는 것 같아서, 결국 꺼내게 되었다. 그리고, API 명세와 ..
부트캠프 28일차 후기 오늘로 주특기 강의 주차가 마무리 되고, 다음 주부터 팀 프로젝트 주차에 들어선다. 어제로 기본 과제에 추가 과제까지 다한 오늘은 비교적 쉬엄쉬엄 공부를 해서 적을 것이 많진 않다. 일단 CodeKata는 오늘도 2문제를 풀었다. 역시나 첫 풀이가 중요하는 것을 증명하듯, 첫 문제의 풀이를 잘못해서 다시 푸는 데에 시간을 소모하였다. 또 덤으로 SQL 문제를 25문제 정도 풀었다. SQL 문제는 오랜만이라서, 몇몇 개념이 갑자기 안 떠올랐기에 구글링을 거쳤고, 이 중 가장 기억에 남는 것은 String 관련 SQL문이다. SQL문에서 문자열 컬럼에 특정 문자열이 포함되어 있는지를 확인하는 SQL은 WHERE 컬럼 LIKE CONCAT('%', "문자열", '%')이다. 여기서 %는 와일드카드로, 앞뒤에 ..
부트캠프 27일차 후기 오늘 CodeKata는 2문제를 풀었다. 첫 번째 문제가 큐를 활용한 구현 문제라서 시간을 들여서 푸는 수 밖에 없어서 결국 이렇게 되어버렸다. 그래도 두번째 문제에서 Kotlin에서의 Sort에서 대해 좀 더 자세히 알 게 되었다. Kotlin에서는 정렬 함수로 sort를 사용하는데, immutable에서는 정렬된 컬렉션을 반환하는 sorted를 사용하고, mutable에서 서는 자기 자신을 정렬하는 sort를 사용한다. 이와 관련된 함수도 마찬가지로, 역순으로 정렬하는 reverse, reversed, 정렬 기준 객체를 정하는 sortBy, sortedBy, 정렬 기준 함수를 결정하는 sortWith, sortedWith이 있다. 여기서 sortWith는 Comparator라는 정렬 규칙을 정할 수 ..