Skip to content

평가표 번역

Ryu(Paul) edited this page Jan 13, 2023 · 1 revision

Introduction

다음 룰들을 지켜주십시오.

  • 평가 내내 예의있게, 공손하게, 존경을 담고 건설적이게 행동해주세요. 건강한 커뮤니티는 이러한 태도를 기반으로 합니다.
  • 평가 받는 사람과 함께 일어날만한 작업물에 대한 기능 장해를 확인하시오. 이에 대해 논의하고 당신이 알아차린 문제들에 대해 토론하세요.
  • 당신은 반드시 당신의 평가자가 프로젝트의 지시사항을 어떻게 이해하고 있는지 그리고 그 기능성에 대한 이해도의 차이를 고려해야 합니다. 항상 열린 마음으로 , 그 혹은 그녀를 성실하게 평가 해주십시오. 가르침을 주는 것도 유효하며, 동료 평가는 진지하게 임해져야 합니다.

Guidelines

  • 길어서 생략...

Mandatory Part

Check the code and ask questions

  • homebrew로 siege 의 설치를 진행하라
  • HTTP 서버의 기초를 설명하라
  • 입출력 다중화를 위해 사용하는 함수들을 질문하십시오.
  • select 함수 혹은 이와 동등한 것이 어떻게 작동하는 지에 대한 설명을 얻도록 요청하세요
  • 만약 그들이 select혹은 이와 동등한 것 만을 사용하는지 확인하시고, 그들의 서버가 accept하고, 클라이언트가 읽고 쓰는지에 대해 어떻게 관리하고 있는지를 물어보세요.
  • select 함수나 혹은 이와 동등한 것이 메인 루프 상에서 있는지, 그리고 fd를 동시에 읽고 쓰고 있느지를 점검 해야 한다. 그렇지 않다면 0점을 주고, 평가는 종료 됩니다.
  • select 혹은 이와 동등한 함수 당 클라이언트 당 한번에 읽기 혹은 쓰기가 있어야 합니다. select 혹은 이와 동등한 함수로부터 진행되는 코드 내용을 보여주기를 요청하십시오.
  • 모든 소켓 상의 read/recv/write/send 를 검색하고, 에러가 반환되면, 클라이언트가 제거되었는지를 검사하십시오.
  • 모든 소켓 상의 read/recv/write/send 를 검색하고, 값이 반환되는 것을 잘 검사하는지를 검사하십시오. >> 에러케이스에 대한 처리가 잘 되었는가
  • errno 의 검사가 read/recv/write/send 이후에 진행되면, 평가를 멈추고 0점 처리하시오.
  • 어떤 파일 디스크립터가 select 혹은 그와 동등한 함수를 통해 진행되는 것 없이 읽거나 쓰기가 되는 것은 엄격하게 금지 된다.
  • 이 프로젝트는 컴파일 플래그를 사용하는 것 없이 리링크 이슈 없이 컴파일 되어야 한다.
  • 어떤 지점에서 불분명하거나 혹은 플래그의 정확하지 않은 사용한다면 0점이다.

configuration

  • 당신이 다음 내용을 따라서, 결과물들을 테스트 한다면 configure file 안을 점검하라.
  • 인터넷 상에 HTTP 리스폰스 상태 코드를 점검하시오, 그리고 평가 동안, 어떤 코드라도 잘못된게 있다면, 관련된 점수를 주어서는 안된다.
  • 다른 포트로 복수의 서버를 설정하시오
  • 다른 호스트 네임으로 멀티 서버를 설치 해보아라. (이런 식으로 해봐라 : curl --resolve example.com:80:127.0.0.1 http://example.com/)
  • 기본 에러페이지를 설정한다(에러 404페이지를 바꿔볼것)
  • client 바디를 제한하라(curl -X POST -H"Content-Type: plain/text" --data"BODY IS HERE write something shorter or longer than body limit")
  • 다른 디렉토리들로 서버 상에 루트를 설정하라
  • 만약 당신이 어떤 디렉토리를 요청하면 검색할 기본 파일을 설정하라
  • 특정 루트를 수용하기 위한 일련의 메서드를 설정하라 (예를 들어, 무언가를 권한 없이 삭제를 시도해라.)

Basic checks

  • telnet, curl 을 사용하면서, 준비된 파일들 다음 기능들이 적절하게 작동하도록 준비하라.
    • GET 요청 : 반드시 작동해야 한다.
    • POST 요청 : 반드시 작동해야 한다.
    • DELETE 요청 : 반드시 작동해야 한다.
    • UNKONW 요청 : 어떤 깨짐도 생겨선 안된다.
    • 모든 테스트 동안의 상태 코드들은 괜찮아야 한다.
    • 어떤 파일을 서버로 업로드해야하며, 이를 다시 다운로드 받을 수 있어야 한다.

Check with a browser

  • 팀의 레퍼런스 브라우저를 사용해라. 그것의 네트워크 파트를 열고, 서버와 접속하는 것을 시도하세요.
  • 요청 헤더를 보고, 이에대한 대응 헤더도 확인하세요.
  • 완전한 정적 웹사이트에 호환되어야 한다.
  • 디렉토리 리스트 시도해보아라
  • 리다이렉션 된 URL 을 시도하시오.
  • 여러가지를 시도할 것

Port issues

  • 다수의 포트를 설정 파일을 통해 설정하고, 설정이 예상된 대로 작동하는 지를 점검하기 위해 다른 웹 사이트를 사용하고, 다른 브라우저를 사용해보아라.
  • 설정 상에서 일반적이진 않으나 동일한 포트를 몇번이고 설정해보아라, 이게 작동하는가? 만약 작동한다면, 왜 서버가 하나의 설정이 작동하지 않더라도 작동해야 하는지를 설명할 수 있어야 한다.

Siege & stress test

  • Siege 를 사용해 스트레스 테스트들을 실행해보아라.
  • siege -b와 함께 간단한 빈 페이지를 얻는 테스트에서 가용성이 99.5% 를 넘겨야 한다.
  • 메모리 누수가 있는지 확인해라. (막연하게 점점 프로세스가 메모리 사용량이 올라가는지를 감시하라)
  • 커넥션이 종료되는 것이 없는지 확인하라
  • 서버를 재시작하는 것 없이 막연하게 siege 를 사용할 수 있어야 한다. (siege -b 를 알아보라)

Bonus Part

Cookies and session

  • 작업 세션, 그리고 쿠키 시스템이 웹 서버 상에 존재 해야 한다

CGI

  • CGI 시스템이 한개 이상 존재 해야 한다.