Skip to content

Webserv 회의록

yeonseong edited this page Jan 26, 2023 · 21 revisions

전체 회의록을 정리하는 공간입니다.

2023년 1월 1주차 회의

2023년 1월 1주차 회의

참여자

  • seojin
  • silee
  • jinhokim
  • dongchoi
  • haryu
  • seongyle

회의 내용

  1. 목표 정하기

    • 보너스 구현 여부는 추후 학습을 하면서 결정하자.
  2. 과제 기간정하기

    • 설 연휴를 고려하여 2월 17일 전후까지 마무리 지어보자.
  3. 과제 세부 진행방식 정하기

    • 장소 :
      • 2층 회의실 선점하기(7~8시 ㅎㅎ)
      • 3층 구석 공간
      • 지하공간에서 모여서 스터디
    • 학습 시간 : 평일 진행하는 것을 기준으로 한다.
      • 코어 시간 : 필수로 와서 학습을 하고, 나누는 시간 (및 회의) (19시 ~ 22시)
      • 자율 시간 : 개인 일정 여부로 학습 장소로 오는 것이 자유로운 시간(오전 ~ 정오)
    • 지각비
      • 주중 분당 지각시 1000원, 분당 요금은 최대 5분까지 매김. 이후 30분 초과가 발생하면 10,000원 벌금
      • 관리 : 페이지로 정리하고 마지막 회식에서 쓰기
    • 내일 코어 목표 :
      • 서브젝트 분석 후 학습 방향 정하기 위한 준비 할 것
      • 깃헙 레포 관리 및 컨벤션 읽고 머릿속에 넣어 오기
  4. 일정 정리

    • 설 연휴 : 1월 19일 ~ 1월 24일
    • haryu : 1월 10일 법원 방문
    • silee : 1월 17일 개인 약속
  5. 깃헙 사용 관련 내용 정리

    • Organization 깃헙 프로젝트 관리 진행
    • 깃헙에서 프로젝트 관련 자료들 seonglye 님이 제공
2023년 1월 3일 회의 # 2023 / 01 /03

학습 목표설정

- Echo server를 허용함수로 만드는 것. (허용함수로 파악)
- HTTP 완벽가이드 웹서버 150p 읽기
- 본 학습목표는 다음주 화요일까지 진행하며, 매일 코어 학습 시간에는 학습한 내용을 짝에게 설명하고, 남은 시간 중에는 질문이나 어려운 내용등을 논의한다. 
2023년 1월 17일 회의

2023 / 01 / 17

내용 정리

  • (성글)소켓 핸들링을 해주는 클래스 제작 제안
    • 현재 구조가 완벽하진 않으나 구조 적으로 각 처리 클래스들이 멤버변수를 갖지 않아도 되는 구조다.
    • 이런 점에서 일단 구현을 하다가 여러 방법으로 묶어서 처리 하는 것으로 만들어보면 좋으리라 판단됨.'
    • 대안 : Functor(함수객체),네임스페이스로 묶어서 함수로 처리 ..etc (확정이 아닌 이유는 각 기능이 가지는 장단점이 있으니 이를 고려해보자)
  • (하류)
    • Structure UML, Class UML 리뷰함. 해당 내용은 위키의 문서를 확인할 것(본 회의 이후 내용도 적용 예정)
    • Makefile -D 옵션을 활용하여 디버깅 할 부분별로 컴파일시 전달할 인자를 통해 디버그 출력하는 컨벤션 관련 내용제시
    • 하는 과정에서 성글님을 통해 VSC pretask 세팅을 통한 디버깅 자동화와 VSC 디버깅 방법을 배움
    • 추가로 제안하고 싶은 코드 내용이나, 컴파일 과정에서 도움되는 팁들은 /testcode/{intra id}를 활용할것을 제안함
  • (동초이) Metadata 관련 전반 내용 정리
    • HTTP 헤더의 response case, request case 필수로 구현해야 한다는 부분을 지정함. 따라서 해당 헤더에 대해서는 파싱 및 대응을 하도록 결정함(GPT를 통해 알아냄, 링크는 여기
    • 헤더 관련해서 디테일하게 처리 방식과, 각 헤더가 의미하는 바를 처리하는 방법은 RFC를 때때로 확인해야할 것으로 보인다.
    • ClientMetaDatas 클래스의 경우 기존 map<int, class MetaData> 데이터 구조를 활용하려고 했다. 하지만 node 형으로 구현해서 내부에 구현하는 형태가 오히려 좋다는 판단이 서서 현재는 다음과 같은 구조를 하기로 지정함.
      struct node {
        struct kevent *  event_data;
        ???????          HTTP_data;
        enum             status_code;
      }
    
      class ClientMetaDatas {
        std::map<int fd, struct node> clinet_meta_data;
      }
    • ClientMetaDatas 의 info 안에 들어갈 멤버 변수는 다음과 같이 지정한다.
      • kevent * 구조체 : udata 안에 해당 client 가 접근하려는 Server location config pointer를 넣어줌
      • HTTP 관련 : 요청 메소드, URL, 헤더, 버전(x) : 버전 정보는 이미 유효성 검사에서 걸러졌기 때문에 필요 없다고 판단했다.
      • 상태코드 : error checking
  • (성글) 기타 코드 클래스 작성에서의 컨벤션 추가
    • public 메소드 사용 시 find*byFD의 형식을 취하자. 다음 컨벤션의 형식은 이 링크를 참고할것.
    • FindPortbyFD(fd)
    • {class_var}.insert(kevent * newCurr)
    • {class_var}.setHeader(int fd, struct HTTPmsg)

지각 / 결석비

이름 일자 지각/결석 금액
seongyle 1.10(화) 결석 10,000
seojin 1.16(월) 지각 5,000
haryu 1.16(월) 지각 5,000
silee 1.18(수) 결석 10,000
seongyle 1.25(수) 지각 1,000