목록All (635)
Brise
https://www.youtube.com/watch?v=Y-4ma6oV3Kk&t=90s 보드카는 약 40도 정도의 알코올 도수를 가지고 있는 무향, 무미, 무취를 지향하는 술이다. (실제로는 알코올 향이 불편하기 때문에 알코올 향을 최대한 느껴지지 않도록 다른 첨가물을 넣어 불편하게 느껴지지 않도록 한다) 위 영상에서는 보드카를 마시는 방법에 대해서 언급하는데 그 내용을 요약하면 아래와 같다. 1. 보드카를 마시기 전에 숨을 내보낸다. 2. 보드카를 마신다. 3. 숨을 들이마쉰다. 1. Before you drink, you have to exhale. 2. Drink vodka 3. And then inhale. * 참조 : https://gall.dcinside.com/mgallery/board/v..
마크다운 예시 제목 및 글머리 This is Title ============ This is Subtitle ------------ # This is a Header Level1 ## This is a Header Level2 ### This is a Header Level3 #### This is a Header Level4 ##### This is a Header Level5 ###### This is a Header Level6 This is Title This is Subtitle This is a Header Level1 This is a Header Level2 This is a Header Level3 This is a Header Level4 This is a Header Level5 Th..
https://maily.so/today.study.note/posts/bc86f35d 유재석이 감탄한 햇님의 제철음식 먹는 이유 / 우리 삶이 제철음식을 언제까지 허락할지 모른다. "그때그때 먹어야 돼요." maily.so 유퀴즈온더블럭이란 프로그램에서 생각해볼만한 말에 대하여 들었다. 제철음식을 왜 먹어야 하는지에 대한 질문이었는데, 얼마나 제철음식을 먹을 수 있을지 모르기 때문에 제철음식을 먹어야 한다고 하였다. 생각보다 이 말이 마음에 주는 파문이 있었던 사람이 많았던 것 같다. 위의 블로그도 그러한 글 중의 하나이다. 나는 언제 죽을지 모르기 때문에라기 보다는 생각보다 인생이 짧다고 생각했기 때문이다. 미래에는 수명이 더 길어진다고 해도 아마 100년정도 살수 있을 것이다. 그렇다면 제철음식을 ..
인증서 체인 OpenSSL 설치 및 설정 https://www.openssl.org/community/binaries.html set openssl_CONF=openssl.cnf rootCA 비밀키 생성 openssl genrsa -des3 -out rootCA.key 2048 2-1. rootCA 공개키 생성 openssl req -x509 -new -nodes -key rootCA.key -days 730 -out rootCA.pem device 비밀키 생성 openssl genrsa -out device.key 2048 3-1. device 공개키 생성 openssl req -new -key device.key -out device.csr rootCA 사인 인증서 생성 openssl x509 -re..
객체지향에서 인스턴스화 시킬 수 없는 클래스를 추상클래스라 한다. C++언어에서는 추상클래스를 함수의 값을 NULL(아마도 C언어에서 함수포인터를 NULL로 하는 것과 같은 듯 하다.)로 지정하는 것으로 추상 함수를 만들고, 추상함수를 가지고 있는 객체를 추상클래스로 지정한다. C++에서는 보통 인터페이스를 구현하고자 할 때 추상클래스를 이용하여, 인터페이스를 구현한 객체가 해당 인터페이스를 필수로 구현하도록 컴파일러 단계에서 강제하는 방식을 주로 사용한다. // 2_추상클래스 168 page #include // 추상 클래스 : 순수 가상함수가 한개 이상 있는 클래스 // 특징 : 객체를 만들수 없다. // 의도 : 특정 함수의 구현부를 제공하라고 지시 하는 문법. class Shape { public..
대부분의 C++ 프로그램에서는 객체를 핸들링하기 위해서 객체 포인터를 주로 사용하며, 파생클래스와 기반클래스 객체들을 일괄로 다루기 위해 기반클래스 포인터를 사용한다. 만약, 기반클래스 포인터를 이용하여 객체를 핸들링할 때, 객체의 소멸자가 가상함수가 아니라면 파생클래스를 소멸시킬 때 기반클래스의 포인터를 이용하여 소멸시키기 때문에 기반클래스의 소멸자가 불려 비정상적으로 객체를 소멸시키게 된다. 때문에 클래스의 소멸자는 가상함수(virtual function)이어야만 한다. // 1_가상소멸자 149 page #include // 핵심 : 모든 기반 클래스의 소멸자는 반드시 가상함수 이어야 한다. class Base { public: virtual ~Base() {} // 기반 클래스의 소멸자가 가상이면..
C++ 은 C가 아니다. C++와 C는 거의 호환되는 것처럼 보이지만, 실제로는 다르게 동작하고 있다. C++에서는 C에서 지원하지 않는 다형성과 같은 특징을 지원하고 있으며, 이를 위해서 mangling이라는 구조를 도입하여 여러 함수들과의 충돌을 방지하고 있다. mangling 방법은 컴파일러별로 상이하다. // 9_mangling // C 로 컴파일 하면 : 함수이름 Add(gcc), _Add(vc) // C++로 컴파일 하면 : ?Add@XXYYH@Z(VC++), ??(g++) // name mangling : C++ 컴파일러가 함수이름을 변경하는 것 // => 함수 오버로딩 때문에 Add 함수가 여러개 일수 있으므로 int Add(int a, int b) { return a + b; } int ..
C++의 다형성과 같은 특징들은 컴파일 시간에 호출할 함수가 정해진다는 특성이 있다. 만약 여러 클래스에 대해서 같은 함수를 만들고, 기반 클래스의 함수 포인터를 이용하여 핸들링하게 되는 경우 기반 클래스에 있는 함수를 호출하게 된다.(컴파일 시간에 기반 클래스의 함수로 바인딩 되기 때문에) 기반 클래스의 함수를 호출하면서 동작은 실제 클래스별로 다르게 동작시키고 싶은 경우 함수 호출에 따라 실제 사용할 함수를 동적으로 결정하여야 하며, 이 때 가상함수(virtual function) 을 사용하여야 한다. // 7_가상함수1 144 page ~ #include class Animal { public: virtual void Cry() { std::cout Cry() 를 어떤 함수로 연결할것인가 ? // ..