목록42 (71)
치춘짱베리굿나이스
Internet Relay Chat 드디어마참내 내가 5서클과제를 본격적으로하다니 주의사항 주의사항 설계를 잘 해두면 나중에 쉽다 블랙홀 2주밖에 안남음 살려줘~~ 사전에 공부해야 할 내용 Mandatory irssi 만들어야 하는 명령어 사용가능 함수 사용가능 함수
Docker-compose 도커 컴포즈란 도커파일을 컴포즈해주는 툴이다 (…) 설명이 너무 대충인 것 같지만 진짜다 도커파일 하나로는 딱 하나의 이미지 (= 컨테이너) 를 만들 수 있었다 근데 서비스 구축이라는 것이 그렇게 호락호락한 녀석이 아니라서 하나의 이미지로는 아무것도 할 수 없다 당장 서버 배포할 때도 데이터베이스 서버도 켜고, nginx도 켜고… 프론트엔드 코드도 올리고… 그러지 않는가 서비스는 여러 컨테이너 (여러 툴) 들의 조합이고, 이 컨테이너들을 한 데 모아 서비스로 엮어주는 것이 도커 컴포즈이다 compose가 구성하다, 짓다, … 등등의 뜻을 가지고 있는 것을 생각하면 적절한 네이밍이다 바이올린, 비올라, 플룻, 클라리넷, 오보에… 등의 악기들을 조합하여 음색을 자아내는 느낌이라고 ..
Dockerfile 설명 이미지를 빌드하는 데에 사용되는 DSL (도메인 특화 언어) 로, 도커에서의 Makefile 이라고 생각하면 쉽다 도커에서 모든 명령을 docker run [명령] 한 줄 한줄 입력하는 방식으로 이미지를 빌드하는 것은 매우 번거로운 일이다 만약 다른 시스템에서 이미지를 빌드할 일이 생긴다면 명령어를 하나하나 복사-붙여넣기 하는 것은 완전한 노가다에 다름없기 때문에… 쉘 스크립트와 같은 파일에 모든 명령을 모아놓는다면, 스크립트 하나만 들고 다녀도 여러 명령어를 스크립트 실행 한 번에 뚝딱 할 수 있기 떄문에 매우 편리한 것과 같은 이치이다 gcc 명령을 하나하나 따로 입력해서 링크하는 것이 번거롭기 떄문에 Makefile을 이용하여 의존성과 빌드 순서를 정의하는 것과 같은 이치이..
CPP 08 Templated containers, iterators, algorithms 템플릿 컨테이너, 반복자, 알고리즘 stl Standard Template Library 표준 템플릿 라이브러리라는 이름에서 알 수 있듯 세 개의 구성 요소로 이루어진 템플릿들을 제공한다 그것은 반복자 (iterator), 컨테이너 (container), 알고리즘 (algorithm) 스택, 큐, 덱, 맵, 벡터, 리스트 등 한번쯤 들어봤을 법한 자료구조들과 적합한 알고리즘들이 내장되어 있으며, 필요한 자료구조를 꺼내서 사용하면 된다 container http://www.tcpschool.com/cpp/cpp_container_adapter http://www.tcpschool.com/cpp/cpp_containe..
CPP 07 C++ templates C++ 템플릿 템플릿 template T add(T x, T y) { return x + y; } 같은 이름의 함수를 인자 자료형이나 반환값만 다르게 하여 새로 생성하는 것을 오버로딩이라고 했었다 다만 오버로딩은 int, float, double, … 등 모든 자료형에 대해 함수를 따로따로 생성해주어야 한다는 단점이 있다 (귀찮다) 템플릿을 이용하면 자료형에 구애받지 않고 함수를 작성할 수 있으며, 어떤 자료형이든 내부에서 사용하는 연산자나 함수에 대한 오버로딩이 존재한다면 결과값을 얻어낼 수 있다 템플릿은 template라는 키워드 (예약어) 로 정의하고, typename T에서 T는 아무 단어나 넣어도 되지만 보편적으로 T가 많이 사용된다 template temp..
CPP06 C++ casts C++ 캐스팅 strtod std::string tmp = "33 44 55"; char* endptr; double value = strtod(tmp.c_str(), &endptr); // value = 33 // endptr = " 44 55" char* 형식의 문자열을 받아 double 자료형으로 변환한다 이때 두 번째 인자에는 char* 형식의 변수 주소가 들어가게 되는데, strtod는 첫 번째 문자열에서 숫자 (double) 로 추정되는 부분을 변환하고, 문자열 안에서 숫자로 변환된 부분문자열 다음 포인터를 두 번째 인자 주소에 넣어준다 예시에서 “33 44 55”를 인자로 넣으면, 33까지가 숫자이고 공백 문자열은 숫자가 아니므로 strtod는 공백 전까지를 숫자..
CPP05 Repetition and Exceptions 반복과 예외 예외 클래스 (std::exception) 상속받아 예외 만들기 [Effective Modern C++] 항목 14. 예외를 방출하지 않을 함수는 noexcept로 선언하라 class ExceptionFoo: public std::exception { public: const char* what() const throw(); // C++98까지, 현재는 deprecated const char* what() noexcept override; // C++11부터 추가된 키워드 }; std::exception 클래스 구현체를 보면 C++ 98에서는 throw() 를 사용하고, C++11부터는 noexcept 키워드를 사용한다 throw() ..
CPP 04 Subtype polymorphism, abstract classes, interfaces 서브타입 다형성, 추상 클래스, 인터페이스 서브타입 다형성 포함 다형성이라고도 한다 상위 클래스의 메서드를 하위 클래스가 상속받은 뒤 다른 동작을 하게끔 재정의하여 사용하는 방법이며, 오버라이딩 (Overriding) 이라고도 한다 과제에서는 Animal 클래스를 상속받은 Dog, Cat 클래스가 각기 다른 소리를 내도록 오버라이딩하는 과정이 들어있다 가상 함수 (virtual function) [C++] 가상함수(virtual) 사용법 총정리 코딩교육 티씨피스쿨 부모 클래스의 멤버 함수 중, 파생 클래스에서 재정의할 것을 기대하는 함수이다 기대 라는 단어가 뭔가 요상하기도 한데, 부모 클래스에서 이 ..