이어서 [42Seoul] Webserv - 01 이전 글에 이어. [42Seoul] Webserv - 00 길고 길었던 웹서브 과제가 끝남에 따라, 그 동안 했던것들을 정리해보고자 한다. 웹서버와 HTTP 웹서브 서브젝트를 보면 이런 글귀가 있다. This is when you finally u woongtech.tistory.com 지난 글에 이어 이번엔 HTTP 메세지에 대해 써보려한다. HTTP Request 클라이언트(크롬, 사파리와 같은 브라우저)가 서버에 무언가 요청을 한다면, 서버는 요청에 맞도록 적절하게 응답을 해주어야 한다. 만약 우리가 구글 메인에 접근하고 싶을 때, 브라우저 검색창에 주소를 입력하는것을 브라우저에서는 구글 홈페이지 요청에 대한 적절한 HTTP 메세지를 작성해서 서버로 ..
이전 글에 이어. [42Seoul] Webserv - 00 길고 길었던 웹서브 과제가 끝남에 따라, 그 동안 했던것들을 정리해보고자 한다. 웹서버와 HTTP 웹서브 서브젝트를 보면 이런 글귀가 있다. This is when you finally understand why a URL starts with HTTP URL이 H woongtech.tistory.com HTTP에 대한 개념이나 웹서브라는 과제가 어떤것을 해야하는지 살펴보았다면, 과제를 어떻게 진행할 것인가에 대해서 한번 고민해보는것도 좋다. 나는 웹서브를 진행하면서 팀원들과의 협업을 효율적으로 수행하기 위해 깃을 통해 소스코드 관리를 했고, 깃허브에서 이슈트래킹을 통해 서로의 진행 사항을 공유했다. 이런식으로 기능 구현이나 고치는 작업들을 이슈..
길고 길었던 웹서브 과제가 끝남에 따라, 그 동안 했던것들을 정리해보고자 한다. 웹서버와 HTTP 웹서브 서브젝트를 보면 이런 글귀가 있다. This is when you finally understand why a URL starts with HTTP URL이 HTTP로 시작하는 이유를 마침내 이해할 때가 왔다는 뜻이다. 그렇다면, 웹서버를 만드는 데에는 HTTP와 URL의 이해가 필수가 되어야하겠다. 서브젝트에서는 HTTP에 대해 이렇게 설명하고 있다. HTTP(Hypertext Transfer Protocol)는 분산, 협업, 하이퍼미디어 정보 시스템을 위한 애플리케이션 프로토콜입니다. HTTP는 하이퍼텍스트 문서가 사용자가 쉽게 액세스할 수 있는 다른 리소스에 대한 하이퍼링크를 포함하는 World..
Chapter 1 Introduction C++은 Bjarne Stroustrup이 C 프로그래밍 언어의 확장 또는 "클래스를 얹은 C"로 만든 범용 프로그래밍 언어이다. (출처: Wikipedia C++ - Wikipedia From Wikipedia, the free encyclopedia General-purpose programming language C++Logo endorsed by the C++ standards committeeParadigmsMulti-paradigm: procedural, imperative, functional, object-oriented, generic, modularFamilyCDesigned byBjarne StroustrupDeve en.wikipedia.or..
Chapter 0 STL Container STL이란 Standard Template Library의 약자로 C++의 템플릿을 이용해 표준으로 정의된 라이브러리를 말한다. 여기서 컨테이너는 클래스 템플릿으로 구성되어있다. 컨테이너 변수를 선언할 때 컨테이너가 보유할 요소의 형식을 지정한다. 컨테이너는 데이터를 저장하고 잘 관리하기 위한 클래스라고 생각하면 된다. 컨테이너는 초기화리스트를 사용해 생성할 수 있으며, 요소의 추가, 제거 및 다른 작업들을 수행하기 위한 멤버 함수들을 가지고 있다. 반복기(iterator)를 사용해 컨테이너의 요소를 반복하고 개별 요소에 접근할 수 있다. 멤버 함수와 연산자 및 전역 함수를 사용해 반복기를 명시적으로 사용할 수 있다. 모든 STL 컨테이너에 대한 반복기에 공통적..
Chapter 0 Template 이번 과제의 주제는 template이다. 템플릿은 함수나 클래스를 개별적으로 다시 작성하지 않아도, 여러 자료 형으로 사용할 수 있게 만들어 놓은 "틀"이라고 할 수 있다. 템플릿은 C++이 가지고 있는 프로그래밍 언어의 특징 중 하나인 일반화 프로그래밍의 기능 중 하나이다. 일반화 프로그래밍이란 데이터를 중시하는 객체 지향 프로그래밍과 달리 프로그램의 알고리즘에 중점을 두고 있다. C++에서의 템플릿은 크게 함수 템플릿과 클래스 템플릿으로 나눌 수 있다. 먼저, 함수 템플렛은 함수의 일반화된 선언을 뜻하며, 서로 다른 타입에서 동작하는 함수를 한 번에 정의할 수 있다. 임의의 타입으로 작성된 함수에 특정 타입을 매개변수로 전달하면, C++ 컴파일러는 해당 타입에 맞는 ..
23/03/14 이후 수정된 서브젝트로 다시 풀고 수정했습니다. Chapter 0 이번 과제의 주제는 cast이다. cast는 형변환이라는 의미로, 흔히 int형에서 float형 등으로 형태를 변환한다는 의미를 가지고 있다. 형변환에는 명시적 형변환과 암시적 형변환이 있다. C와 C++ 모두 지원하며, 42에서 C언어 과제를 할 때, 주로 사용한 형 변환이 명시적 형변환이다. // 명시적 형변환 float a = 1.23; int b; b = (int)a; // 명시적으로 float형인 a를 int형으로 변환해준다. std::cout
Chapter 0 이번 과제의 주제는 반복과 예외이다. 지금까지는 예외가 발생하면 그 상태로 에러를 반환하는 형태로 프로그램을 구현했다. 즉, "예외 -> 프로그램 종료" 라는 형식으로 코드를 작성했는데, 이번 과제에서는 예외가 발생한다면 다시 입력을 받거나, 예외가 발생한 구간부터 사용자가 작성한 코드를 동작하도록 만들어야 하는 것으로 보인다. 먼저, 이번 과제에서 자주 쓰일 try - catch 문에 대해 알아보도록 하자. Try - Catch 우리가 주로 사용하던 if문을 통한 예외처리 방식은 if 조건문이 굉장히 많이 쓰이고, 다방면으로 쓰이기 때문에 예외 처리를 위해 사용하는 것인지 한눈에 알아보기 힘들다. 이런 불편한 점 때문에, 가독성과 유지보수성을 위해 try-catch문을 사용하게 된다...