아침
야식을 먹고 늦게자면 다음 날 아침이 너무 피곤해진다. 어제 하우스메이트 형님께서 치킨을 사오셨는데 다 먹고 잠자리에 누으니까 11시 30분이었다. 오늘 아침 6시에 알람을 듣고 일어났는데 쉽게 잠이 깨지 않았다. 그래서 결국 6시 30분쯤 돼서야 이불 밖으로 나갔다. 다음 날을 위해서 당일 취침 전에는 야식을 먹거나 스마트폰을 보거나 하지 말아야겠다.
오늘 업무의 핵심은 "빠르게 만들어서 보여주기" 다. Elasticsearch를 이용해서 사용자의 포스팅 id를 수집한다. 특정 기간 내에 가장 조회수가 높은 순서로 포스팅 id를 불러오고 , id에 대한 부가정보는 또 다른 Elasticsearch에 api를 통해서 검색한다. id 검색을 통해 해당 id의 포스팅의 정보를 수집하고 이를 화면에 띄우는 것까지 하는 것이다. 그리고 나서는 또 다른 추가 요청사항을 반영하면 될 것 같다.
오늘도 어제와 마찬가지로 퇴근하고 운동하고 카페에 가려한다. 요즘 계속 알고리즘 풀이 연습을 빼먹고 있는데 하루 1시간을 투자하는게 왠지 아깝다는 생각이 든다. 하지만 문제 풀이를 연습하는 것은 체계적으로 문제를 해결하는 훈련이기 때문에 1시간씩은 꼭 풀어주자.
천천히 진행 중
오늘 저녁은 홈메이트 형님과 외식을 했다. 평소 내가 좋아하던 비빔밥집에 가서 밥 1.5 그릇을 먹고 돌아오는 길에 과자를 사서 집에 있던 아이스크림과 같이 먹었다. 과자를 고를 때 조금 과하지 않나하는 생각이 있었다. 그 때 멈췄어야 했다. 요즘 너무 많이 먹는다. 배가 부를 때 그만 먹는게 아니라 배가 불러서 더 이상 못 먹을 때 그만 먹는것 같다. 충분을 넘어서 불능의 상태가 되어서야 식사를 멈춘다. 식후 간식은 최대한 자제하자.
오늘 업무는 어제 기록한대로 "빠르게 만들어주기" 를 실천했다. 그랬더니 예상대로 다음 기능을 요청해주셨다. 이 요청 또한 추상적이긴 하다. "사용자 행동을 보고 싶습니다" 가 요청이었는데 사용자는 아주 많은 행동을 한다. 어떤 행동이 우리가 당장 봐야 하는지에 대해서는 또 추후에 구체화되지 않을까 한다. 그래서 우선은 "특정 콘텐츠를 읽은 사람은 어떤 다른 콘텐츠를 읽었을까" 를 보여주면 하나의 프로토타입이 되지 않을까 생각한다.
퇴근 후에는 저녁 외식을 핑계로 운동을 안했다. 사실 저녁 외식이 아니었어도 오늘 하루는 운동을 쉬려고 했다. 어깨 통증도 있고 어제부터 계속 잠을 조금씩 늦게자는 바람에 생긴 피로가 쌓이는 것이 느껴졌기 때문이다. 그래서 홈메이트 형님과 식사하고 간단히 이야기를 조금 나누고 바로 카페로 갔다.
알고리즘 풀이를 가장 먼저 했다. 가장 뒷시간에 알고리즘 풀이를 연습하려고 하다보니까 잘 안되는 것 같아서 프로젝트 기획 전에 몸풀기 용으로 진행했다. 하면서 오늘도 파이썬에 대해서 조금 배웠다. 특히 파이썬의 내장 라이브러리인 PriorityQueue 의 사용성이 내 기준에서는 정말 별로였다는 것을 발견했다. while queue 와 같은, queue가 빌때까지 while문을 돌리는 형식은 사용할 수 없다는 점이 놀랐다. (사용할 수 있다. 다만 while not queue.empty() 등으로 사용한다.) 그런데 정말 독특한 점은 queue가 빈 상태에서 while queue 이 실행되면 코드가 그냥 멈춰버린다는 것이다. 멈춘다는게 Error를 띄우는 것도 아니고 그냥 코드 진행이 멈춰버린다. (자세히 알아보지 않아서 정말 멈추는 것인지는 모른다. 다만 나름의 디버깅 과정에서 발견한 현상을 토대로 이야기하고 있다.) Error를 뱉는 코드는 좋은 코드다. Error 없이 뻗는 코드가 나쁜 코드라고 생각하는데 어떻게 표준 라이브러리에서 이런 일이 있을 수 있나 했다.
개인 프로젝트는 기획이 길어지다보니 집중력이 떨어지는 것을 느꼈다. 하지만 이제 거의 다왔다. 모든 행동 문서 (사용자가 웹 상에서 선택할 수 있는 모든 행동을 적은 문서) 를 거의 다 작성했고 이를 토대로 API 명세 문서를 작성하면 된다. API 명세 문서는 Edgecase, Error, 사용법, 사용 이유 등등 최대한 상세하고 풍부하게 적어야 한다. 문서는 친절해야한다. FastAPI가 극찬은 받은 큰 이유중에 하나가 바로 공식문서의 친절함 때문이다. API 명세 문서가 완성되고 나서는 개발 시간 계획표를 작성하고 바로 개발에 착수하면 될 것 같다.
- 초고 : 4월 26일 22:49
- 퇴고 : 4월 27일 06:54
댓글