본문 바로가기
💻 프로젝트/정글 사관학교

[WEEK6] RE-START

by ddubbu 2024. 9. 24.

🤔회고

저녁 러닝 루틴 추가

D-97 (24.09.13 기준) 남은 정글 생활 일수이다. 누군가 100일이 깨졌다고 했는데, 진짜 세보니깐 얼마남지 않았다. 저번주에는 공부를 즐기면서했고, 동시에 충분히 휴식도 취했다. 갈수록 코치님의 답변에 더더욱 당차게 답하고 모름을 인지하고 있다. 따로 퀴즈를 준비하지 않았지만, 퀴즈도 dangling pointer 빼고 막힘없이 답변했다. 하지만 출퇴근 시간만 보면 근면 빵점이라고 생각한다. 운동은 차일피일하고 있고, 이틀 연속 야식으로 피부는 뒤집어지고 속은 더부룩하다. 그러던 와중에 결국 참지 못하고 여러 스터디에 조인하고 말았다. 알랜디(알고리즘 랜덤 디펜스, 매일 백준 문제 풀기), 코틀린이(코틀린+어린이, 코틀린 언어 학습) 등. 분명히 기존 루틴에 추가되어야하기 때문에 벅찰 것이 예상된다. 그래서 체력을 늘려보기로했다. 최근 정글 9기에는 저녁 러닝 크루가 생겼다. 문지캠퍼스를 뛰는건데, 첫 한바퀴는 같이 뛰고 점차 페이스별로 그룹을 나누어 진행한다. 나는 무릎 이슈로 뛰는 것을 미뤘다고 생각했는데, 와.. 진심 5분 뛰었나 숨이 턱까지 차오르고 땀은 비오듯 흘렀다. 7분 30초대로 겨우 한바퀴 뛰고 후발대로 걸으면서 숨을 골랐다. 러닝 고수 언니가 숨 쉬는 법을 알려주었지만 마음처럼 내쉴 수 없었다. 겨우 1.5바퀴를 채우고, 30분만에 이탈 후 기숙사로 향했다. 오랜만에 심폐운동을 하며 땀을 흘리니깐 너무 개운했다. 빠짝 운동한 다음 씻고 리프레쉬된 상태로 강의실로 재출근하니깐 목요일임에도 01시까지 WEEK5를 정리하고 WEEK6를 맞이할 준비를 끝마칠 수 있었다. 기대되는 루틴이라서, 러닝 크루에 조인했다. 숨쉬는 법을 잘 배워서 조금씩 바퀴수를 늘려보고 싶다. 이번주 네트워크 주제도 처음에는 재미없을 수 있다. 한페이지씩 늘려보자.

 

 

추석 버닝을 끝마치며

이번 연휴는 본가에 내려가지 않았다. 공부 흐름이 끊길 것 같기도 하고 이동시간에 차라리 휴식을 취하고 싶었기 때문이다. 그래서 🌿추석 연휴 밀린 숙제🌿라고 투두리스트를 따로 만들었었다. 첫날 보문산도 타고 알랜디(알고리즘 랜덤 디펜스) 진도도 따라잡고 여유로운 연휴를 보냈다. 가족들과 시간을 보내지 못한건 아쉽지만 본가에 다녀온 동료들이 명절 음식들을 챙겨와서 부족함 없이 보낼 수 있었다. 오히려 너무 많이 외식해서 더부룩한 나머지 저녁 소식을 시작하기도 했다. 

24.09.14 ~ 9.18까지 총 11문제 완료

 

그렇다고 공부를 덜한건 아니다. 오히려 그동안 하고 싶지만 못했던걸 할 수 있다니 거즘 3일 연속 2시 퇴근을 했다. 몰입하는 이 스탠스가 다시 돌아와서 RE-START 라고 글 제목을 지어보기도했다. (근데 proxy-lab 마지막날에 캐싱 구현에 애를 먹고 부족한 개념들이 많았어서 오히려 proxy-lab을 이때 빨리 진도 뺐어야 하나 후회스럽기도 했다 😂) 

 

하지만 더 몰입해야해

순간적인 몰입은 좋은데 그게 연속적으로 유지되지 못한건 아쉬웠다. 특히 이번에 98즈 친구끼리 조가 되어서 공간 이동을 통해 리프레시도 해주고 자전거도 타고 사소한 일탈을 해주었는데 그게 재밌으면서도 좀 널널하게 공부했나 싶었다. 왜냐하면 이미 캐싱 구현까지 끝낸 조는 세마포어 더 나아가 추가 테스트 케이스까지 작성해서 공부했기 때문이다. 그리고 6주차 퀴즈 및 리뷰 시간에 코치님의 질문에 너무 어버버했다. 네트워크라는 방대한 개념에 눌려 구현에만 집중했던게 바로 들켜버렸기 때문이다. 핀토스 주제에서는 그러한 아쉬움이 없었으면해서 더 몰입하기를 다짐해본다. 그리고 게임회사에는 실은 관심이 없었는데 (기왕이면 서비스를 사랑하면 좋은데, 게임은 선호하는 취미가 아니라서) 나만무 주제를 살짝 논하면서 많은 이들이 게임을 주제로 한다는 것을 알았다. 뿐더러 그게 많은 지식과 탐구심을 요한다는게 구미가 당겼다.

 

📅필수 목표

 

코치님 코멘트

[WEEK6] 목표 (다음주 목 티타임 / 다다음주 화 시험)

네트워크 프로토콜을 C로 직접 작성해보기 : BS 소켓 인터페이스로 HTTP 프로토콜을 구현하게될 것임

 

1. 컴시 11장 보면서 따라하기 (숙제 문제 포함)

2. (주의) mp4 파일을 처리하도록 문제 변경

3. proxy3: cache 까지 진행해봤으면

4. http 표준(1.0인지 1.1인지 등) 결정은 책보면서 따라가면됨.

 

[240912 목] 09:30 ~ 01 (순 공부시간; 2H, 나머지는 WEEK5 정리 및 WEEK6 준비)

✅ 오전 코드 리뷰 및 WEEK6 발제

-- 개발자의 주 산출물은 코드다! 코드 작성이 귀찮으면 안됨.

✅ 점심 회식

✅ 3/ 코드 리뷰

✅ WEEK5 개발일지 포스팅

✅ 20시/ 저녁 러닝 > 21:30 복귀

코틀린이 레포 준비

🔼(컴시 11장 시도 실패 후) 혼공시리즈-네트워크 읽기

-- 내용이 와닿지 않아서일까 집중이 안됨, 어서 tiny server 코드 구현부로 넘어가야할 것 같음.

 

[240913 금] 10:30 - 01 (14H 30min, 꽤 알찬 하루)

 알랜디 쉬운 문제 풀기 - 3문제 (점심 식사 후 11:50-12:50)

컴시 11장 완독 및 tiny server 따라하기 (레포 클론 사전 완료)

 20시 러닝 후 22시 복귀 > 22/ 팀활동 (1:30 책 리뷰)

 [1.4] 코틀린인액션 정리

 

[240914 토] 8:30(조아써!!) - 23:30 (이후 심야 산책)

[루틴]

✅ 9시/ 코틀리니 스터디 시작

Week5 퀴즈 QnA 정리 (특히 dangling pointer)

(13:40-17:10) 알랜디 실버 문제 풀기 #30089 어려운 로직 끝까지 해내느라 3시간 삽질

✅ 20/ 저녁 러닝 (8분 초반대로 경보)

러닝 복귀 후/ [2.5] 코틀린인액션 정리

-- checked exception 추가로 정리 필요

 

[과제]

네트워크 혼공 시리즈 이어서 읽기 (네트워크 계층 키워드 : 서브넷마스크, 공유기 공인/사설 아이피, IP동적할당 & DHCP 서버) + 팀활동 논의거리 공부 (외부아이피, 내부 아이피 등)

 

[240915 일] (보문산 등산 후 컴백) 15시 - 02시 (11H)

(3:20 - 4:14) 알랜디 2문제

✅ tiny server 클라 에러 잡기 (strcpy, strcat 오타였음..) [참고 블로그]

echo

-- 🔼rio 관련 함수 이해하기 (내일 다시해야함)

- http, socket 예제 구현해보기, 함수 이해하기 

-- http vs socket

21/ 코틀린 스터디

--✅ 코틀린 물음표 내용 백업

✅ 22:30/ 팀활동

 

 

[240916 월] 10 (무렵) - 02시 (14H)

[루틴]

 코틀린인액션 정리: (점심 전후 ~ 4시) 4.2

✅ 20/ 러닝

 

[과제]

✅ echo: rio 관련 함수 이해하기 > 함수 전체 주석 달면서 이해하기

✅ tiny 서버 이해하기 (눈여겨볼 점 : socket interface에서 http 통신으로 어떻게 바뀌는지)

✅ developed tiny 서버 : 연습 문제 분석 (HTTP 요청 처리 관련) - webproxy-jungle/tiny README에 정리함

알랜디 진도 따라가기 (rank4, 10문제 돌파)

 

 

[240917 화] 10:30 (빠른 아점) - 02:45 (14H) 

[루틴]

✅ 20/ 러닝 (늦참, 한바퀴 겨우 뜀. 저녁 간소화 필요)

🔼 코틀린 액션 정리 : 4.3 (책 읽기만)

❌ 알랜디 진도 따라가기 (추석 목표: 16문제)

 

[과제]

✅ 컴시 연습문제 풀기

-- content-type html/text 필수인 이유, client에서 자동으로 tag를 넣어주는건가

-- image, mp4 안전하게 서빙하기 위해 mmap 대신 malloc으로 구현하기

 

[과제/ 정글 가이드 읽기]

🔼 컴시 교재 12장 동시성 프로그래밍

proxy-lab 다음 과제 분석하기

  • Part 1 : sequential web proxy (요청이 들어온 순서로 처리한다)
  • Part 2 : multiple concurrent requests
  • Part 3 : caching web object

[기타]

✅ (서울) t3.small 확장 후 기존 AWS EC2 정리 : 자주 타임아웃 나서 확장했는데,, 여전히 한번씩 발생한다. c언어 이슈도 아니고 http 미응답 이슈도 아님. 그럼 뭘까?

✅ 코치님 답변에 응답하기

 

 

[240918 수] 9:30 - 01 (15H 30min, 3번 정도 좀, 잠이 안깨서 일찍 들어감)

[루틴]

✅ (~ 13시 점심 시간 포함) 코틀린 액션 정리 : 4.3, 6.2

✅ (13:10- 14:40) 알랜디 dp 2문제 

저녁 간소화 (바나나, 삶은 계란, 우유 구매)

19-22:30/ 스터디

 

[과제]

[네트워크 기초] 책 읽으면서 개념 채우기 (특히 http, socket, application layer)

22:30/ 팀활동 (tiny server 리뷰 및 연습문제 그리고 계획 세우기) => 내일 아침으로 딜레이

✅ proxy server 구현 시작하기

 

[기타]

✅ 기존 AWS EC2 정리 (버지니아 북부 - 보안그룹 제거)

✅ 지현's 네트워크 기초

 

 

[240919 목] 10 - 3:20 (17H 20min)

[루틴]

✅ 코틀린 액션 정리 : 7.5 

❌ 알랜디 문제

✅ 8시/ 러닝 (적어도 9시 20분 복귀 필요)

✅ (21:40-23) 코틀린 스터디

 

[과제]

오전 팀활동 (tiny server 리뷰 및 연습문제 그리고 계획 세우기) > 다른 팀과 조인

✅ proxy server CH1 맛보기 (궁금한점 기록)

 

[240920 금] 11:20 - 00:55 (13H) 

[루틴]

코틀린 액션 정리 : 미정

❌ 알랜디 문제

✅ (21:40) 코틀린 스터디

 

[과제]

✅ 1, 3, 4조 연합 팀활동 (Sequential, Concurrency Proxy 과제 완료하기)

-- 추가 개념 공부해야함

 

[240921 토] 10:10 - 00 (팀간의 화합을 위해 조금 어수선 했지만 즐거웠던 날)

팀활동 (Sequential, Concurrency 복습) - 직접 짜기

 

[240922 일] 11- 03 (16H, 10시에 왔지만, 상황 정리로 늦게 시작)

[루틴]

✅ 코틀린 액션 정리 : 8.3

알랜디 문제

 

[과제] Cached Proxy 과제 시작

 

[240923 월] 10-01

[과제]

  Cached Proxy 과제 완료하기

 

- [팀활동] 12.4 쓰레드 프로그램에서 공유 변수 (질문에 답하기)

- Concurrency (Process, Thread) 개념 추가 공부 - 혼공 시리즈 운영체제 편

- Cached 추가 공부

 

 

🔥추가 정리 필요

- balanced tree 말고도, segment tree, suffix tree 등 추가 공부

- 네트워크 관련된 CLI 혹은 서비스 curl, wget, 헬렛(?), wireshark

 

전산학과 과목 외 익힐 것들

https://missing-semester-kr.github.io/

 

- http 통신 vs socket 통신

(GPT) echo_client.c와 echo_server.c는 기본적인 소켓 통신의 예제입니다. HTTP 통신을 구현하려면 소켓 통신의 기본 원리를 이해하고, HTTP 프로토콜의 형식과 규약에 맞게 요청과 응답을 작성하는 추가 작업이 필요합니다.

- 클라이언트는 HTTP 요청을 HTTP 프로토콜에 맞게 포맷해야 합니다.

- 서버는 클라이언트로부터 받은 HTTP 요청을 분석하고, 요청에 맞는 응답을 생성해야 합니다.

=> 요게 tiny.server 기반일 듯 => (ok)

 

Q. 하지만, 단방향/양방향이 차이는 어디서 오는걸까?

 

Application layer - http 편

  • HTTP도 7layer중에 하나였구나? 그 헤더가 그 헤더?
  • content-type html/text 필수인 이유, client에서 자동으로 tag를 넣어주는건가

 

나만무 공부할거

  • 도커 + 쿠버네틱스
  • MSA + 카프카

http 완벽 가이드 읽기

- (책 구매 완료) 프록시, 캐시 추가적으로 공부할 거 있음

 

동기 vs 동시 vs 병렬

  • 동시성 : 논리적인 동시 실행 의미 (실제로는 빠르게 전환하면서) => 단일 코어
  • 병렬성 : 실제로 동시에 실행되는 것 => 다중 코어
  • 데드락, Dining philosophers problem : 무한 대기

 

- 코어(CPU) vs 프로세스 vs 쓰레드

- File descriptor 역할

 

- Proxy 종류 : Forward, Reverse

- 프록시 vs VPN

 

- Proxy 익명성은 무엇을 제거해야지?

 

[기타]

- network shark 프로그램 사용해보기 (유튜브, 웹서핑 비교해보기)

- 디자인패턴

https://refactoring.guru/ko

 

 

[포인터와 문자열]

- 구조체와의 연결 필요, 

 

char* str_pointer = "ABC";
char str_arr[3] = "ABC";

printf("%s (두번째 글자: %c)\n", str_pointer, str_pointer[1]);
printf("%s (두번째 글자: %c)\n", str_arr, str_arr[1]);

 

 

 

 

📝메모

크롬브라우저 [header] sec-purpose: pre-patch;pre-render

https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Sec-Purpose

 

티스토리 코드블록 커스텀

- (highlight.js 이용) [참고 블로그]

 

AWS EC2 꿀팁

- (왼쪽 하단 송전탑 같은 아이콘) VSC forwarded port 적용 가능

- time out 자주 일어나면 메모리 초과 현상 : (t2.micro 에서 t3.small로 업그레이드)

 

 

EC2 시스템 실시간 모니터링

// ssh 원격서버 접속
$ ssh -i {pem_file} {user}@{ip}

// 시스템 실시간 모니터링
$ htop

// 튀는 프로세스 강제 종료
$ kill -9 {PID}

// 특정 포트 프로세스 찾을 수도 있음
$ lsof -i TCP:{port}

 

 

- 사용 예시 : 전체(1.86G) 중에 1.56G 사용 중, 곧 서버 뻗을 예정이므로 정리 필요 인지

 

 

서버가 뻗는 상황

  • Dup2(fd, STDOUT_FILENO) 주석 후 http response가 없어져서 브라우저측에서는 무한 pending 그리고 서버도 같이 뻗음

 

I/O 파일 디스크립터로 이해하기