KRAFTON JUNGLE 8주차 회고

KRAFTON JUNGLE 8주차 회고

8주차를 마지면서 이제 2달이라는 시간이 지나게 되었다. PintOS를 사용해서 OS 기능을 구축해야 한다. 예전 같았으면 두려웠을 텐데, 지금은 어떻게든 해내겠지 라는 마인드 덕분에 두렵진 않다.

주가 지나가면 지나갈 수록 챙기지 못한 부분들이 점점 쌓여가고 있다. 불쾌한 기분이지만, 우선 현재에 집중해 보자라는 생각이다. 열심히 해보자

5주차

파이썬으로 알고리즘을 배우는 첫 달이 끝나고, 이제는 C언어로 컴퓨터에게 깊이 빠져드는 첫 주가 되었다. 과제로 주어진 것은 Linked List/Stack and Queue/Binary Tree/Binary Search Tree 알고리즘 기반으로 문제를 푸는 것이었다.

C언어를 잘 몰랐기에, 먼저 Youtube의 6시간짜리 C 언어 기초 동영상으로 시작을 했다. 졸려가는걸 버티면서 3~4시간쯤 보았을 때, 다른 정들러분들이 문제를 시작한걸 보고 남들보다 진도가 조금 뒤쳐진다는걸 깨달았다. 그래서 우선 기초는 여기까지 마무리하고 문제로 넘어갔다.

문제로 넘어간 뒤에 2시간 동안 코드해석 하는 데에만 쏟았는데, 이 2시간이 의미가 있었다. 언어 해석하는데에 수월해지는 시간이었고 문제를 바로 풀 수 있었다. 5주차를 마무리 하면서 쓰는 결론으로는 Binary Tree 빼고 모든 문제는 다 풀 수 있었다. 당연히 문제를 본인 스스로 다 풀지는 못하였지만, 내 스스로 50%정도는 스스로 풀 수 있었다.

팀원분들과 첫 Core-time을 가졌을때, 많은 것을 얻을 수 있었다. 두분 모두 열심히 준비를 해주셔서 한 주를 잘 시작할 수 있었다. 다만, 아쉽게도 불가피한 사정으로 인해서 두 분 모두 시간을 온전히 투자할 수 있는 상황이 아니었어서 중간에 흐지부지 했었던점이 조금 아쉬웠다. 그럼에도 불구하고 5주차 때 열심히 했어서 많이 도움이 되었다.

6주차

6주차에서는 C언어로 Red-Black Tree를 구현하는 과제가 주어졌다. 여태까지 미리 미리 보아두라고 했었지만, 그러지 않았기 때문에, 나에게는 불똥이 떨어진 셈이다. 그나마 다행이었던 것은 모두 Red-Black Tree에 대해서 많이 알지 못했던 것이다. 그래서 같이 시작하면 됐다.

불똥이 떨어졌기 때문에, 트리에 대한 이해를 빠르게 해야만 했다. 첫날에 Red-Black Tree에 대해서 개념을 먼저 다지자고 팀원들과 얘기했고, 빠르게 공부를 시작했다. 아쉽게도 첫날에는 삽입에 대해서만 개념을 다루었고 그 다음날에 삭제까지 개념을 다지면서 마무리가 되었다.

개념을 다지고 이제 C언어로 구현을 해야 하는데, 막막한 느낌이 없지 않아 있었고 알고리즘(Introduction to ALGORITHMS)책을 통해 시작할 수 있게 되었다. 해당 책을 통해 많은 도움을 받았고 직접 구현하기 보다는 이미 짜여진 코드를 이해하는게 더 중요하다고 생각이 되었다. 그 이유에 대해서는, 처음으로 트리를 구현하는 것이었기 때문에, 처음부터 RBTree를 구현하는 것은 많은 시간을 쓸거라고 생각했고, 다른 과제들 또한 있었기 때문에 타협을 본 셈이다.

C언어로 RBTree 구현을 모두 마치고 CS:APP 책 8장과 9장을 읽어야 했다. 결론적으로 다 읽지는 못하였지만, 8장에서 예외처리를 위한 시그널과 9장에서 가상 메모리를 쓰는 이유에 대해 배울 수 있게 되었다. 팀원들과 가졌던 Core-time에서 내가 알고 있던 내용과 팀원들이 알고있던 내용에 다른점이 존재했다. 내가 알고 있던 내용이 맞았고 정정을 해주었던 점이 기억에 남는다. 앞으로도 깊게 파고드는 습관을 유지하면서 공부하고자 하는 계기를 만들었다. 그럼에도 불구하고, 과제를 모두 마치지 못한 첫 주가 되었고 많이 아쉬웠다. 완수를 못한점에 대해 만회하고자 차주부터 열심히 하고자 한다.

7주차

Malloc함수를 직접 구현하는 주차가 시작 되었다. 전주에 CS:APP 읽는 과제에 대해 완수를 못했던점이 나에게는 걸리는 부분이어서, 이번 주차에 만회를 하고 싶었다. 아쉽게도 만회는 못하였다.. 대신에 이번주에 필요한 CS:APP 9.9장에 대해서는 완벽하게 이해했다. 9.9장도 쉽지 않았는데, 내 공부법에 문제가 있다고 판단 후, 동료에게서 youtube영상을 보라고 하는 조언을 듣고 내 공부법을 바꾸었다. CS:APP 저자의 영상이어서 믿고 볼 수 있었고, 핵심만 얘기해줬기 때문에, 빠르게 9.9장에 대해서 이해할 수 있었다.

아쉽게도 팀원분들이 불가피하게 초반에 참여를 못하게 되었다. 그래서 C언어로 코드 구현하는것을 조금 늦게 시작하게 되었다. 그럼에도 불구하고 명시적 list로 구현을 완수할 수 있었다. 내가 스스로 구현할려고 해보았지만, segmentation error가 떴었고 동료에 도움 요청했을 때, gdb로도 error를 찾는것이 힘들고 Google AI Studio 통해서 물어보는것이 더 좋다고 들었다. 그래서 Google AI Studio 통해서 물어보았고, 문제되는 부분들에 대해서 수정을 하였다. 명시적 list로 구현했더니 묵시적 list + next-fit 보다 1점 높아지는 결과가 나오게 되었다. 여기서 명시적 list에서는 best-fit이 제일 효율이 좋다고 들었지만, 수요일 저녁때 완성이 되어서 목요일 발표를 위해 추가 작업은 진행하지 못하였다.

발표에 관해서는 명시적 list 코드의 refactoring에 대해서 다루었고 발표는 잘 마무리 되었다. 발표시간에 다른 조 발표를 보았는데, 저번주 보다 훨씬 도움되는 내용들이 많아서 집중도 있게 보게 되었다.

1주가 끝난 후의 느낀점으로는, 컴퓨터에 대해서 깊이 있게 빠져 들었던것이 좋았지만, 많이 구현했던 다른 분들과 비교했을 때, 조금 뒤쳐진다는 느낌을 받아서 아쉬웠다.

8주차

이번주 같은 경우 네트워크에 대해 배우는 주차였다. 이동석 코치님께서 이번주가 가장 중요한 주차라고 하시면서, 책과 개념들에 대해 word by word로 꼼꼼히 보라고 하셨다. 주차를 마무리하면서 쓰는 WIL이기 때문에, 결론부터 말하자면, CS:APP 11장에 대해서 모든 부분을 보았다. 처음으로 1장을 완벽하게 다 읽어본적은 처음 이었어서 성취감이 있었다.

책 개념 뿐만 아니고 코드로 네트워크 구축하는 과제도 있어서 진행을 해야 했다. 다만, 초기에 활동할 수 있도록 책에 관련 코드가 있어서 따라 쳤다. 그 이후에, 프록시 서버 구축을 위해서는 개념을 먼저 이해하고 혼자서 짤려고 노력했지만, 쉽지 않아 GPT의 힘을 빌렸다. 그렇게 하여 순차적 처리 proxy 서버 구축을 진행했고, 이걸 통해 팀원들과 같이 쓰레딩과 캐시 기능까지 추가하게 되었다. 쓰레딩과 캐시 기능 모두 GPT의 힘을 빌렸다.

이번주 같은 경우 개념 이해는 괜찮았지만, 실제로 구현하기 위해 코드를 작성하는 것은 쉽지 않았다. GPT의 힘을 빌렸기 때문에, 이정도로 구현을 할 수 있었는데, GPT의 힘을 너무 빌린 점에 대해서 죄책감이 있었다. 그리고 이 글을 쓰고 있는 지금으로 부터 3시간 전에 “AI는 친구인가? 적인가?” 라는 주제로 커피챗을 진행하였다. 얘기를 나누면서 대다수가 동의하는 부분은 “GPT의 발전은 멈출수가 없기 때문에, GPT를 잘 활용하는것이 우리에게 득이 된다” 이었다. 오히려 이런 생각을 많이 갖고 있는 사람들 덕분에 이번주에 느꼈던 죄책감은 덜 수 있었다.

팀원분들과의 팀웍에 관련해서 얘기를 하자면, 처음에는 미적지근한 느낌이 있었는데, 날이 가면 갈수록 점점 발전된 대화를 난누면서 괜찮은 Core-time을 보낼 수 있게 되었다. 이부분에 대해서 팀원분들한테 고맙다.


© 2022 JeongHwan Yun.