Today I Learned
-
git rebase 명령어 실험Today I Learned 2022. 9. 17. 23:40
git rebase 명령어를 실습해보다 생긴 의문점을 해결하는 과정에서 배운 내용들을 정리했다. 약간 특수한 상황의 git rebase 시도 git rebase를 공부하면서 브랜치의 분기와 merge를 반복하는 과정에서 몇 번의 충돌을 일부러 발생시킨 브랜치를 조상 브랜치가 분기하는 특정 지점으로부터(ex. upstream/main)로부터 선형으로 재구성되도록 rebase 명령을 수행해보는 실험을 했다. 기존 브랜치에서 충돌이 발생하기는 했었지만, 충돌을 해결하여 merge를 시켜주었기 때문에 어떤 중간 과정 없이 rebase가 바로 수행 완료될 것이라고 예상했다. 그러나 그 충돌이 발생한 지점에서 rebase가 중단되는 이슈가 있었다. 해당 이유가 궁금하여 트레이너님께 문의를 드렸다. 트레이너님의 설명..
-
테스트 코드로 스토리텔링을Today I Learned 2022. 9. 14. 23:59
퀘스트 과제를 구현하면서 재밌는 경험을 했다. 마카오 페이 프로그램을 구성하는 컴포넌트 중 하나인 N빵 정산을 구현하고 있었는데, 구현한 기능에 예외처리를 어떻게 구현할 것인지를 고민하고 있었다. 예를 들면 아래 그림처럼 입력창에 잘못된 금액을 입력하고 계산하기 버튼을 누르면 예외를 처리해주는 소스코드를 실행시키도록 해야 할 것이었다. 소스코드가 점점 길어지다 보니 소스코드만 봐서는 내가 이 컴포넌트의 어느 지점에 어떤 요소를 넣었는지, 어떤 state를 쓰고 있고 어떤 핸들러를 정의했는지 '이건 여기지!' 하고 손이 3초만에 가지지 않는 지경이 되었다. 또 예전처럼 소스코드 더미 안에서 '아 이거 어디에 선언해 뒀더라...' 하면서 왔다갔다했다가는 소중한 시간을 비효율적으로 날려먹을 것이 뻔했다. 강의..
-
setState가 아닌 방식으로 값을 변경했을 때에도 렌더링되도록 하기Today I Learned 2022. 9. 13. 23:19
퀘스트 과제로 주어진 마카오 페이를 작성하고 있다. 오늘 구현했던 부분 중 어떻게 구현해야 할지 가장 고민이었던 부분은 다음과 같다. 친구 목록에서 특정 친구를 클릭하면 선택되고 테두리에 선택된 표시가 뜬다. (N빵 정산에서 사용) 바로 이런 식으로. 프로그램에서는 친구 목록을 friends라는 배열로 선언하고, 주 컴포넌트 내에서 useState로 관리되도록 하고 있다. 배열을 구성하는 하나의 요소는 { id, name, selected } 값을 갖는 객체가 되도록 했는데, selected 변수가 boolean 값을 가져서 해당 객체가 클릭되었는지 클릭되지 않았는지를 나타내는 기준값으로 사용하고자 했다. 배열의 각 요소들은 친구 목록임을 나타내기 위해 태그 내부에 태그들을 배열 요소의 개수만큼 선언한 ..
-
'큰 일을 하기 위해 지금 할 수 있는 것부터 한다'Today I Learned 2022. 9. 12. 23:57
며칠 전에 아버지께서 해 주신 말이다. 요즘 이전보다 좀 더 적극적으로 적용해보려 하고 있는 테스트 주도 개발 방식에서 이야기하는 것과도 들어맞는다는 생각이 들어 의식적으로 기억에 남겨놓고 있다. 오늘은 큰 단위의 작업을 작은 단위의 부분으로 쪼개고, 쪼개진 부분을 테스트 작성해 테스트를 통과시키는 방식으로 수행하기 위해 노력했다. 가능한 이번 주 동안은 무언가를 할 때 이 방식을 이용해야 함을 계속해서 의식적으로 상기시키려고 한다. 그렇다면 오늘 이 프로세스를 나는 얼마나 잘 따랐을까? 오늘 완전히 새롭거나, 그렇게 느껴지게 접한 것으로는 크게 코딩 도장, 퀘스트 과제가 있었다. 코딩 도장 오늘 풀었던 신고 결과 받기 문제는 사실 한 달 반 전쯤에 풀었었던 문제였기 때문에 큰 흐름은 머릿속에 남아있었지..
-
친구가 내준 문제를 푸는 데 써본 TDD 프로세스Today I Learned 2022. 9. 12. 00:17
금요일 오후에 친구들을 만나는 자리에 맥북을 가지고 갔었다. 맥북을 펼치니 뜻하지 않은 코딩 자랑을 하게 되었는데, VS Code를 켜니 피보나치 수열 소스코드가 나왔다. 마침 친구 중 한 명이 중학교 수학 선생님이었는데, 내게 '특정 수가 주어질 때 해당 피보나치 수의 황금비를 구하는 소스코드를 작성할 수 있는가'를 물어보았다. 순간 당황했지만 친구가 '황금비는 특정 피보나치 수를 바로 앞의 피보나치 수로 나누면 구할 수 있다'는 이야기를 해주었고, 다행이 구하는 방식은 머릿속으로 쉽게 그려졌다. 그때 든 생각, '이걸 TDD 방식으로 구해보는 연습을 해볼 수 있겠다.' 문제에 살을 좀 더 붙여보기로 했다. 요구사항 4보다 큰 자연수가 주어질 때, 4부터 주어진 수까지에 해당하는 피보나치 수들의 황금비..
-
개발 그 이상의 영역?Today I Learned 2022. 9. 10. 02:55
어제 점심식사를 하고 고향 친구를 만나서 가볍게 커피 한 잔을 했다. 오늘 저녁에 또 만나기로 했지만 고향 친구 얼굴 한번이라도 더 보면 좋지. 알게 모르게 다음 레벨 테스트가 다가와있는 만큼 어떤 서비스를 만들어야 할지 은근 고민하고 있었다. 2기 분들이 이미 기존에 존재하는 서비스에서 아이디어를 얻어 자신만의 가치가 녹아들어간 서비스를 만들어내는 것을 보면서 기존의 서비스에서 영감을 얻는 것도 내가 선택할 수 있는 것들 중 하나일 수 있겠구나 싶었다. 큰 범위에서 생각하고 있던 서비스들 중 하나에 대해 친구와 이야기를 나누어 보았고, 그러면서 그간 생각하지 못했고, 사실 거기까지 생각해야 되나 싶었던 부분에 대해 생각해보게 되었다. 사업? 친구에게 이야기하려고 했었던 수준은 어디까지나 '이런 걸 한번..
-
익숙할 땐 몰랐던 소중함Today I Learned 2022. 9. 8. 01:46
오늘도 가벼운 주제의 TIL이다. 오랜만에 고향에 내려와서 매일같이 하고 있는 것이 있다. 아 공부도 물론 매일같이 하고 있고... 해 지기 전에 고향 집의 또 하나의 가족🐕 도토를 1시간씩 산책시켜 주고 있다. 과정을 시작하기 전에는 가족들이 돌아가면서 산책을 시켜주거나 엄마가 나한테 산책좀 시키고 오라고 얘기하실 때 산책을 시켜주고 오곤 했었다. 서울에 있어도 언제든 내려와서 볼 수 있고, 집에 와서도 그냥저냥 여유로우니 산책 갈 때도 '심심하니 산책 한번 갈까~?' 마인드였다. 그런데 지금은 내 많은 것들을 통제하던 와중 잠깐의 숨고르기를 할 수 있는 시간 동안 도토를 보니 이전보다 더 반갑고, 도토와 산책하고 뛰어다닐 수 있는 시간이 예전보다 더 소중하게 느껴졌다. 익숙할 땐 그 순간이 얼마나 소..
-
쉽지 않다 reduce...Today I Learned 2022. 9. 7. 02:46
Github 1기 과제 제출 저장소의 Pull Request 목록을 둘러보던 중 내가 제출했던 피보나치 수열 생성기 과제가 아직도 merge되지 않은 부분이 눈에 띄었다. (과제 요구사항) 피보나치 수열 생성은 재귀함수 방식으로 풀 경우 숫자가 커질수록 계산 횟수가 급격하게 불어나는 문제점이 있다. 주어진 수보다 2 작은 수, 1 작은 수를 인자로 갖는 자기 자신의 함수를 재호출해서 더하는 과정을 거치는데, 인자가 작아질수록 같은 계산을 반복하는 과정이 늘어나면서 O(2^n)이라는 좋지 않은 시간 복잡도를 갖는다고 한다. 그래서 이전에 계산해놓은 결과 값이 있을 경우 그 값을 참조하는 Memoization 방식을 이용할 경우 계산 횟수를 획기적으로 단축시킬 수 있다. 최근 JavaScript의 배열에 사..