분류 전체보기19 pintos project1: threads 정글의 커리큘럼은 매 주가 놀라움의 연속이다. 매 주차 발제가 끝나면 "생각보단 할만해 보이는데?" 란 기분이 든다. 그러나 그것도 잠시, "아 고수준이 아니라 저수준이었지.." 와 같은 깨달음을 상기시키며, 본격적으로 구현에 들어가게 된다. 확실히 c언어와 포인터 개념이 들어간 저수준 프로그래밍에서는 머릿속에서 그릴 수 있는 depth를 항상 넘겨버리기 일쑤이고, 노트와 펜 없이 그런 복잡한 플로우를 따라가기는 벅찬 경우가 많다. 더욱이 그러한 코드들로 이루어진 방대한 코드베이스들을 들여다 보고 있자면 막막함이 찾아온다. 그렇게 고통스러운 나날들을 며칠 보내고 나면 이제 전체 윤곽이 어느정도 그려지기 시작하면서, 숨통이 트인다. 그리고 한 주가 끝나갈 무렵, 결국 모든 퍼즐이 맞춰지면서 비로소 큰 그림.. 2024. 10. 1. Proxy Lab 그리고 ECF 평소에 개발을 하다보면 마주치는 다양한 이슈들이 있다. 특히 내 관심사인 데브옵스와 관련해서 더욱 그렇다. 주로 네트워크, 운영체제, 시스템 최적화와 같은 초기 시스템 디자인시 고민해야하는 것들이다. 나는 초기 설계에 꽤 시간을 들여 고민하는 편이다. 이전에 겪어보지 못한 이슈를 만날 때 마다 야크셰이빙을 통해 새로운 지식을 습득하는 편인데, 설계 단계에서 발생하는 이슈들은 거의 대부분 CS 지식을 필요로 했고 이는 오히려 내 지식의 빈 자리를 채워주곤 했다. 정글 6주차 과제인 Proxy Lab 도 그러했다. 프록시는 데브옵스라면 뗄래야 뗼수없는 관계다. 현업에서 항상 봐왔지만 이를 상세히 다뤄보진 못했는데 마침 이번 기회에 정글에서 다뤄볼 수 있게 되었다. 더욱이 모든 것을 c언어로 구현해야 했기에 .. 2024. 9. 25. 야크셰이빙 중독 야크셰이빙(Yak shaving)이라는 용어를 그대로 해석하면 "야크 털 깎기" 지만, 아래와 같은 의미로 쓰인다.본래의 목적을 이루는데에 필수적이지 않은 부수적인 작업들을 하다 결국 전혀 다른 일을 하고 있는 모습 예시를 들면 다음과 같다.봄이 왔으니 세차를 해야겠네이런, 호스가 망가졌네. 홈 디포우에서 새 호스를 사야겠어하지만 홈 디포우는 Tappan Zee 다리를 건너편에 있어. 톨게이트를 지나기 위해 EzPass가 필요하네옆 집에 사는 Bob에게 EzPass를 빌려야겠어그런데 아들이 Bob한테서 보이스카웃에 가려고 베개를 빌려갔었는데...Bob에게 빌려간 베개를 돌려주기 전까지는 EzPass를 빌려주지 않을 거야베개의 야크 털이 많이 빠져서 지금 당장 돌려줄 수 없겠어베개에 넣을 야크 털을 구해서.. 2024. 9. 21. Malloc Lab 그리고 CS:APP 4주차의 Red-Black Tree 구현에서 Insert 연산에서 새로운 Node를 할당하는데 stdlib.h 헤더의 malloc 함수를 사용했었다. 5주차에서는 이 malloc를 약식으로 직접 구현해보는 것이 목표이다. 마찬가지로, 기본 코드 구조를 제공받는데, 이는 카네기 멜론 대학교(CMU)의 dynamic storage allocator를 C언어로 작성하는 실습 과제를 그대로 수행하는 것이다. 이는 아래의 CS:APP(Computer Systems: A Programmer's Perspective) 책에 포함된 Labs 중 하나이며, Malloc Lab이라 불린다. (참고로 책의 저자도 카네기 멜론 대학의 교수이다.) 좀 늦었지만, 내가 이 책을 정글에서 처음 펼쳐본건 5주차 malloc lab .. 2024. 9. 13. 레드-블랙 트리 그리고 C언어 정글 커리큘럼의 4주차 부터는 "탐험 준비" 라는 커리큘럼인데, 아마도 pintos를 향한 첫 걸음이 아닐까 생각한다. 4주자는 RB Tree 를 C언어로 구현하는 것이다. 물론, 밑바닥부터 구현하는 것은 아니고 기본적인 코드는 제공된다. 예를 들어, 코드 구현에 필요한 타입 같은 것들이 이미 선언되어 있으며, 함수 원형도 헤더파일에 이미 작성되어 있다. 이러한 empty body의 함수들에 코드를 채워넣는 것이다. 그리고, 작성한 코드를 테스트할 수 있는 테스트 코드 또한 포함되어 있다. 이것을 사용해서 테스트를 하는 방식이다. 다행히, 나는 C언어에 대한 경험이 있었기 때문에 언어의 장벽에 막히지는 않았다. 한창 C언어를 공부할 당시, 포인터에 대한 내용만 담겨 있는 책을 따로 공부를 했기도 하고, .. 2024. 9. 12. 정글 나인 헬퍼 제작 후기 "카이스트 9기 정글러들을 위한 문지캠퍼스 식단 봇"매일 3회, 특정 시간에 슬랙 채널에 아침, 점심, 저녁 식단을 자동으로 전송한다. 정신없는 red-black tree 주차에 어떻게든 시간을 내서, 간단한 슬랙 봇을 만들어 보았다.여기서 "간단한"의 의미는 손쉽게 만들었다는 의미가 아니다.흔히 오픈소스를 둘러보면 발견할 수 있는 Simple... 로 시작하는 작은 프로젝트, 여기서 쓰인 Simple 을 의미한다.정말 최소한의 필요한 기능, 최초에 필요로 했던 기능만을 남기고 불필요한 것들을 모두 제거한 미니멀한 봇이다. 그럼에도 불구하고, 제작 및 배포 까지 총 5시간은 걸린 것 같다. 기존에 비슷한 봇을 만들었던 경험이 있었기 때문에, 대략 아이디어 및 웹 스크래핑 방법을 구상하고 서버에서 어떻게 .. 2024. 9. 6. 이전 1 2 3 4 다음