분류 전체보기
-
N-Queen, 어디까지 했나?Today I Learned 2022. 9. 20. 20:46
어제와 오늘 코딩 도장 문제로 N-Queen 문제가 주어졌다. 결론부터 말하자면 어제 Java, 오늘 JavaScript 둘 다 못 풀었는데, 끊기 전에 아쉬움이라도 털어보는 마음으로 1시간 동안 문제를 어떻게 해결하려 했었는지 기록해본다. 문제를 일단 적어보았다. 예를 들어서 n이 4가 주어졌다고 하면 체스판의 크기는 4*4, 놓아야 하는 퀸의 수는 4개일 것이었다. 어디서부터 퀸을 놓아야 할지 모르겠으니 우선 0행 0열의 자리에 놓아보았다. 퀸 X X X X X X X X X 적어보고 나니 퀸을 놓을 수 없는 자리와 놓을 수 있는 자리가 구분되어 보였고, 그 다음 자리에도 한번 놓아보았다. 퀸 X X X X X 퀸 X X X X X X X X 이렇게 하니 자리가 하나밖에 남지 않는 것이 눈에 들어왔다..
-
끊는 연습 하기Today I Learned 2022. 9. 19. 22:27
평소에 계획을 세울 때, 정말 많은 계획을 늘어놓고, 대부분 리스트에 추가한다. 그 밑바탕에는 '나 이거 다 하면 진짜 잘하게 될 수 있어, 이 정도는 해내야지' 같은 생각이 깔려 있다. 그래서 계획을 보면 양도 많고, 꽤 세분화되어 있기도 하다. 양도 매 사이클마다 적당하게 분배된 것 같아 보이기도 하고. 그런데 그렇게 세워놓은 하루 계획은 어느 순간 중간중간 그 시점의 예상 진척도보다 하나 둘 밀리기 시작하고, 하루를 마무리할 시점에는 60% 정도에 그치는 경우가 대부분이다. 그러면 나머지 40% 가량의 못 한 task는? 뒷날, 그 뒷날, 또 그 뒷날로 계속 꼬리를 문다. 개중에는 정말로 다 해낸 것들도 있지만, 흐지부지하게 한 것들이나, 아예 못 한 것들도 꽤 있다. 무슨 자존심인지는 모르겠으나 ..
-
테스트가 실패하는 것을 보는 것이 과연 테스트 주도 개발의 주요한 진전 과정인가?카테고리 없음 2022. 9. 18. 23:14
테스트 주도 개발 스터디에 참여하면서 인상깊게 느꼈던 부분을 정리했다. 테스트가 실패하는 것을 보는 것이 과연 테스트 주도 개발의 주요한 진전 과정인가? 켄트 백의 저서 '테스트 주도 개발' 에 나오는 다중 통화(currency) 지원 객체 구현 예제의 시작은 이렇다. 예제에서는 어떠한 보고서에 명시되어 있는 금액을 단일한 통화에서 다중 통화를 명기할 수 있도록 프로그램을 개선하는 것을 목표로 삼고, 목표를 달성하기 위해 구체적으로 이행되어야 하는 케이스를 작성한다. - 다른 두 통화를 더했을 때 환율에 맞게 주어진 금액을 결과로 얻는다. - 어떤 금액을 특정 수(ex. 주식 수)에 곱한 금액을 결과로 얻는다. 두 케이스 중 좀 더 단순해 보이는 두 번째 케이스를 선택하고, 해당 케이스가 구현되기 위해 ..
-
메가테라 웹 개발자 과정 12주차 주간 회고주간 회고 2022. 9. 18. 22:21
한동안 부쩍 시야가 좁아져 있던 느낌이었다. 매 순간순간 결과를 만들기 위해 노력했지만 좋지만은 않았다. 돌이켜보면 맘에 들지 않았던 결과가 나왔던 때가 좀 더 많긴 했지만, 그렇다고 좋았던 적도 적지는 않았다. 그런 건 때에 따라, 컨디션에 따라, 어떨 때는 좀 더 좋을 수도 있고, 어떨 때는 좋지 않을 수도 있는 부분이다. 그보다도 아쉬웠던 점은, 지금까지는 그 다음에 진짜로 생각하고 신경써야 할 부분을 많이 놓쳤었던 것 같다. '지금 내가 이만한 결과를 냈으면, 내일, 그리고 다음에는 지금보다 한 발짝 더 개선하기 위해 무엇을 할 수 있겠는가?' '안 좋았던 점이 있었으면 어떤 점을 바꿔보거나 좋았던 점이 보였으면 더 좋게 하기 위해 무엇을 하겠는가?' '생각이 잘 안 들면 마음가짐이라도 어떻게 먹..
-
git rebase 명령어 실험Today I Learned 2022. 9. 17. 23:40
git rebase 명령어를 실습해보다 생긴 의문점을 해결하는 과정에서 배운 내용들을 정리했다. 약간 특수한 상황의 git rebase 시도 git rebase를 공부하면서 브랜치의 분기와 merge를 반복하는 과정에서 몇 번의 충돌을 일부러 발생시킨 브랜치를 조상 브랜치가 분기하는 특정 지점으로부터(ex. upstream/main)로부터 선형으로 재구성되도록 rebase 명령을 수행해보는 실험을 했다. 기존 브랜치에서 충돌이 발생하기는 했었지만, 충돌을 해결하여 merge를 시켜주었기 때문에 어떤 중간 과정 없이 rebase가 바로 수행 완료될 것이라고 예상했다. 그러나 그 충돌이 발생한 지점에서 rebase가 중단되는 이슈가 있었다. 해당 이유가 궁금하여 트레이너님께 문의를 드렸다. 트레이너님의 설명..
-
2년 전에 해보고 싶었던 도전에 발을 내딛다카테고리 없음 2022. 9. 16. 21:05
이번 주 퀘스트 과제 중 주요 컨텐츠 중 하나에는 '나만의 메뉴 만들기'가 있었다. 말 그대로 내가 직접 추가해보고 싶은 콘텐츠를 직접 구상해 React 퀘스트 과제의 컴포넌트 중 하나로 작성하는 것이다. 예전에 카카오 개발자 홈페이지에 들어가서 계정을 생성해본 적이 있었다. 지도는 좋아하고, API라는 걸 직접 써보는 경험이 중요하다고 말로만 듣던 시절에 카카오맵 홈페이지를 둘러보던 중 웹 지도 API를 제공한다는 것을 보았다. '일단 들어가면 이렇게든 저렇게든 쓸 수 있는 방법이 어떻게든 있지 않을까? 싶어 일단 들어가 계정을 생성했었다. 물론 그 시절에는 JavaScript의 J자나 HTTP의 H자도 모르던 시절이었기 때문에 설명서의 내용을 읽어도 도저히 이해를 할 수가 없었다. 동료분이 이번에 외..
-
나, 못 한다.카테고리 없음 2022. 9. 15. 23:59
오전에 동료분께서 해주신 조언이 몇 가지 있었다. 못 하고, 내게 맞지 않는다고 생각하던 것들을 잘 하고 맞는 것으로 바꿔나가는 방법을 배우기 위해 여기 온 것이니까, 못 하는 게 드러나는 게 당연한 거라고. 그런 건 당연히 그런 것이라고 받아들이면 마음이 한결 편해질 것이라고. 여기서 잘나고 못난 게 '진짜 나' 자신이 잘나지고 못나지는 게 아니라고. 경쟁의 대상을 우리 안에 두지 않아도 없다고. 주차가 흐를수록, 요일이 흐를수록 내 모습을 동료들에게 보이기 너무 부끄럽고 자존감이 떨어졌다. 평소 같았으면 그냥 주고받았을 말들도 한 마디 한 마디가 굉장히 시리게 느껴졌다. 내가 '못 함'을 적나라하게 드러나보이는 것이 너무 너무 부끄러웠다. 못 하는 게 드러나보일 때 스스로가 되게 무기력하다는 생각이 ..
-
테스트 코드로 스토리텔링을Today I Learned 2022. 9. 14. 23:59
퀘스트 과제를 구현하면서 재밌는 경험을 했다. 마카오 페이 프로그램을 구성하는 컴포넌트 중 하나인 N빵 정산을 구현하고 있었는데, 구현한 기능에 예외처리를 어떻게 구현할 것인지를 고민하고 있었다. 예를 들면 아래 그림처럼 입력창에 잘못된 금액을 입력하고 계산하기 버튼을 누르면 예외를 처리해주는 소스코드를 실행시키도록 해야 할 것이었다. 소스코드가 점점 길어지다 보니 소스코드만 봐서는 내가 이 컴포넌트의 어느 지점에 어떤 요소를 넣었는지, 어떤 state를 쓰고 있고 어떤 핸들러를 정의했는지 '이건 여기지!' 하고 손이 3초만에 가지지 않는 지경이 되었다. 또 예전처럼 소스코드 더미 안에서 '아 이거 어디에 선언해 뒀더라...' 하면서 왔다갔다했다가는 소중한 시간을 비효율적으로 날려먹을 것이 뻔했다. 강의..