[후기] Optimized C++
·
Miscellaneous/Book
이 책은 크게 '깊게' 들어가는 경향은 없지만 막 초급자를 탈피하여 중급자로 진입한 C++ 프로그래머 에게는 유용한 책이 될 것이다. 이 책을 읽고 나면 C++ 의 '미묘함' 을 다시한번 확인할 수 있는데, '숙련되기 위해 수백가지 함정' 들이 무더기로 있다는것을 명확하게 깨달을 수 있다. 개인적으로 나는 이제 막 중급자 프로그래머로 진입하였다고 생각하는데. 내가 아는 많은 기교들이 정리되어 있었고, 특별히 못 알아먹을 내용이 없었기에 나는 이 책이 '초~중급자 프로그래머' (1년~5년차) 가 읽기에 적합한 책이라 생각된다. 해당 책에서 설명하는 최적화의 간단한 예시. 1. 우측값 복사가 유의미한 시간차이를 나타냄을 보여주는 예제. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 1..
항공기 축 3가지 용어 (Heading, Pitch, Roll, Bank, Yaw)
·
Miscellaneous
공중에 위치한 항공기의 경우에는 3가지 축을 기반으로 기체를 '회전' 할 수 있다. Heading, Pitch, Roll, Bank, Yaw 로 5가지가 존재하는데 이 중 4가지는 서로 겹치는 말로 같은 말이다 Heading == Yaw Pitch Roll == Bank 간단하지만 안 쓰다보면 잊어버려서 다시 찾아보게 되는 용어들이다. Heading, Yaw PITCH ROLL == BANK
[C++] TCP 통신
·
Programming/C++
#include #include #include #pragma comment(lib, "ws2_32") #define PORT 28888 #define PACKET_SIZE 36 #define SERVER_IP "127.0.0.1" using std::cout; using std::endl; void server() { WSADATA wsaData; WSAStartup(MAKEWORD(2, 2), &wsaData); SOCKET hListen; hListen = socket(PF_INET, SOCK_STREAM, IPPROTO_TCP); SOCKADDR_IN tListenAddr; tListenAddr.sin_family = AF_INET; tListenAddr.sin_port = htons(PORT);..
[C#] 인터페이스 사용 이유.
·
Programming/C#
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 using System; namespace WindowsFormsApp1 { interface ISource { int GetResult(); } class Source : ISource { public int GetResult() { return 10; } public void Test() { Target target = new Target(); } } class Target : ISource { public int GetResult() { return 20; } public void Do(ISource obj)..
[C++] 람다식 mutable 의 쓰임세.
·
Programming/C++
C++ 에서 함수를 인자로 전달하는 방법 | C++ 에서 함수를 인자로 전달하기 C++11 이전에는 다른 함수의 인자로 함수를 전달하는 방법은 함수 포인터가 유일했습니다. C언어에서 이어져온 방식이기 때문에 C개발자들에게는 크게 불편하 mynameisdabin.tistory.com 해당 포스팅을 살펴보다 람다식 에서 햇갈릴만한 내용이 있기에 짧게 정리한다.​ 우선 람다식은 다음과 같이 작성된다.​ [캡처절] (매개변수) mutable -> 반환형식 { 함수내용 } ​ 1. 캡쳐절은 외부 변수를 가져다 쓸 수 있는 공간이고,​ 2. 매개변수는 말 그대로 함수 선언시 필요한 매개 변수이다.​ 3. mutable 은 함수 내에서 외부 변수를 수정할 수 있게 해 주는 옵션이고.​ 4. 반환형식과 함수 내용은 아..
[C++] push_back vs emplace_back 차이점
·
Programming/C++
자료를 찾아보면 emplace_back 이 더 우수한 녀석이라거나 생성자 호출 차이라거나 그런 말들이 많이 있으나. 일단 최신 컴파일러 관점에서는 둘 다 아닌것 같다. emplace_back 과 push_back 의 차이 item 타입의 생성자가 타입을 인자로 받는다면? push_back 함수는 '객체' 를 집어 넣는 형식으로, 객체가 없이 삽입을 하려면 "임시객체 (rvalue) " 가 있어야 합니다. 또는 암시적 형변환이 가능하다면, openmynotepad.tistory.com 엄준식사생팬 님의 블로그에서 해당 코드를 참조해서 G++ 9 , Visual Studio 2019 (ISO C++14 표준) 에서 테스트 해 보았지만 결과는 같았다. 즉, 이유는 모르겠지만 STD 코드가 수정되었음을 추론해 ..
[C++] C4819 Warning 해결 방법, 한글 깨짐 문제
·
Programming/C++
C4819 Warning 의 경우는 파일의 저장 포맷 형식이 UTF-8 With BOM 으로 설정되지 않아서 발생하는 문제이다. 여기서 UTF-8 은 그냥 같은 UTF-8 이 아니라, UTF-8 Without BOM 과 UTF-8 With BOM 으로 나뉘어 진다.  .cpp, .hpp 파일을 저장 할 때, 한글, 중국어 등 multi-byte characters 가 하나라도 들어간다면 반드시 UTF - 8 With BOM(Signature) 으로 설정해야만, 해당 경고가 없어진다.   참고로, 해당 오류는 오지랖 넓은 '경고' 메세지가 아니다. 해당 문제로 인해 컴파일 단계에서는 문제가 없을 지 몰라도 Runtime 단계에서 디버그 해볼 시에 한글 글자가 깨지는 모습을 살펴 볼 수 있다.   UTF-8..
[C#] Thread, Task 의 간단한 사용법
·
Programming/C#
C# 에서 비동기를 위한 분기를 만드는 기법중에선 Thread 와 Task 가 있다. 결론적으로 말하면 굳이 Thread 를 사용할 필요는 없다. 우선 Task 부터 설명 하겠다. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 using System; using System.Threading; using System.Threading.Tasks; class Example { static void aaa() { Thread.Sleep(5000); Console.WriteLine("aaa"); } static void bbb() { Console.WriteLine("bbb"); } static void Main() { T..
[C++] constexpr 사용하기.
·
Programming/C++
C++ 에는 constexpr 이라는 예약어가 있다. 보통 학생들은 잘 모르는 예약어인데, 왜냐면 딱히 이것까지 가르칠 필요는 없기 때문이랄까... constexpr 에 대한 간단한 예시를 들면 다음과 같은 것이 있다. 1 2 3 int cc = 10; const int a = cc; // OK constexpr int b = cc; // Fail cs 보면 알겠지만 const 키워드는 runtime 에 결정되도 상관이 없는 반면 constexpr 의 경우는 반드시 compile 시간에 결정되어야 한다는 차이점이 있다. 때문에 나는 모두의 코드 블로그 에서 예제로 constexpr 을 사용하는것을 참조해 왔는데 다음과 같은 코드이다. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 ..
Visual Studio Code 확장기능을 오프라인에서 이용하기.
·
Tools/Etc
Visual Studio Code, 단언컨데 현존하는 가장 강력하고 편리한 Text Editor 이다. Visual Studio Code 가 근래에 들어 찬양받는 이유로 나는 '강력한 확장기능' 이 절반 이상의 점유율을 차지하고 있다고 생각한다. (나중에 메모장을 넘어 기본 앱이 될 가능성은... 없을려나) 실제 필자는 여러 확장기능을 사용하고 있는데, 최근 사내에서 일을 처리하다가 인터넷이 되지 않는 환경에서 Visual Studio Code 확장기능의 설치파일을 가져가야 되는 일이 발생했다. 찾아보니 다행히 Visual Studio Code 는 OFFLINE 상황에서도 확장기능을 설치하는데 전혀 무리가 없게 구성 해 두었다. Visual Studio Marketplace Extensions for V..