7주차 마지막 날이다. 일단 이전에 구현한 숙제 11.10과 11.11을 실행시켰다.

결과

이후에 자력으로 proxy를 구현하진 못했지만 그렇다고 모른채 넘어가기는 싫었기에 여러 사람의 코드들을 분석하고, 서로 동작과정을 설명하며 학습했다.
proxy서버의 목적은 크게 세 가지가 있다.
- 방화벽 역할을 함으로써 보안을 강화한다.
- client와 server 사이에 위치해 모든 식별 정보(ex. IP)를 제거한다.
- cache를 이용해 웹 객체를 재요청 시 로딩시간을 줄일 수 있다.
proxy 과제의 첫 번째 목표는 proxy server가 client의 유효한 HTTP 요청을 sever에 연결하고, server의 응답을 client로 전달하는 것이였다. 이는 tiny sever를 구현할 때 경험했던 것과 유사하여 이해하는데 크게 어렵지 않았다.
두 번째 목표는 동시성을 처리하는 것이였는데, 동시성을 처리하는 방식으로는 크게 '프로세스를 사용한 동시성 프로그래밍'과 'I/O 다중화를 이용한 동시성 프로그래밍', 그리고 'Thread를 사용한 동시성 프로그래밍'이 있는데, 이 중 Thread를 택했다.
새로운 연결 요청마다 Thread를 분리(Pthread_detach)하여 처리하는 방식인데, CS:APP 12.5에 semaphore로 Thread를 동기화하는 방식이 있어서 더 공부해볼까 한다.
세 번째 목표는 cache에 저장하는 것인데, 이는 오히려 직관적으로 이해할 수 있어서 비교적 괜찮았다.
자전거를 수리했다. 튜브만 바꾸면 될 줄 알았는데, 타이어도 많이 상했다고 교체해야한다고 하셨다. 견적이 총 35000원이였는데, 배보다 배꼽이 크다고 생각되기도 하고 앞으로 두달정도만 탈 계획이라 정말 고민하던 중 사장님이 다른 타이어를 보여주시면서 30000원으로 해주시겠다고 하셨다.
결국 큰 지출이 생겨서 마음이 아팠다. 돌아와서 코뮨 뽑기를 했는데 꽝이 떴다.
(꽝일 확률이 더 낮다...퓨ㅠㅜ)
앞으로 점심에 햇반이랑 반찬이랑 먹어야겠다. 마켓컬리로 주문한 고추참치, 김자반, 핫도그가 도착했다.
내일부터 전산학의 꽃, OS가 시작된다. 겁을 많이 주셔서 걱정이 앞서지만 그래도 열심히 해내야겠다..! (해내야지... 반드시 해내야지!!)