[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..
[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 #include #include #include using exe_ = void(*)(); //typedef void(*exe_)(); void execute() { printf("개굴"); } void timer(int time, exe_) { exe_ exe = execute; while (time) { Sleep(3000); exe(); } } int main() { timer(30, execute); } cs 함수 포인터는, 생각만큼 자주 사용하는 기법이 아니라서 깜빡 잊어버리기 쉽다. 위 코드를 잘 살펴보면 C++ 의 기본에 대해서 다시 한번 짚어 볼 수 있다. using 으로 exe_ 라..
프로그래밍에서 Pi(파이) 는 어떻게 써야 하나?
·
Miscellaneous
프로그래머는 수학자가 아니지만, 프로그래밍을 하다 보면 각종 공식들을 코드 내에 많이 내입해서 사용하게 된다. 대부분은 계산을 통해 값을 도출해서 사용하지만, Pi 는 상수로 많이 사용된다. 그런데 공교롭게도 Pi 는 '무한 소수' 이다. 3.141592653589793... 자릿수가 많을수록 정확한 값에 근접해 가는 것인데, 일반적으로 프로그래머들은 '부정확한' 것을 싫어하기에 이 파이 값 역시 가장 정확한 값을 참조하고 싶을 것이다. 따라서 각종 라이브러리나, 여러 방법들을 뒤져볼텐데. 미안하지만 정확한 파이 값 같은건 없다. 어떤 라이브러리를 쓰든 Pi 는 실제로 위와 같이 무식하게 선언해 주는것이 맞다. 물론, 라이브러리에서도 Pi 값을 따로 지원해 주는것도 있으나, 까 봤을땐 전부 이런식으로 선..
Bittwist & Bittwiste 매뉴얼
·
Tools/Etc
본래 회사 내에서 업체 납품용 메뉴얼로 작성 하였으나, 보안성이 없다 판단하여 블로그에 기재합니다. 1. 소개 Bittwist 는 Pcap 으로 저장된 패킷 파일을 이용해, 다시금 패킷화 하여 넷상에 뿌려주는 역할을 하는 프로그램입니다. Bittwiste 는 Pcap으로 저장된 패킷의 내용을 수정하는 것이 가능합니다. 기본적으로 Bittwist & Bittwiste 의 모든 동작은 [.pcap] 파일에 기반하여 이루어 지므로, Wireshark로 패킷을 저장한 뒤, Pcap 파일을 만들어, 함께 사용하는 것을 권장 드립니다. 2. 패킷을 어떻게 저장 하는가? 기본적으로 Bittwist & Bittwiste를 사용하는데 있어서는 .pcap 파일이 필수적 입니다. 때문에 .pcap 파일을 만들어 줄 수 있는..
[C++] C++ 이 끔찍한 언어라 욕을 먹는 이유.
·
Programming/C++
개인적으로 존경하는 '리누스 토르발즈' 는 C++ 을 '끔찍한 언어' 라고 지칭했다. 나도 개발 시작한지 6개월도 안 되었을 때는 이를 이해하기 힘들었으나, 각종 기교에 대해서 많이 익히면 익힐수록.. '와... 진짜 더럽다' 라고 욕하고 있더라.. ㅠㅠ 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 #include using namespace std; void hi(int temp_) { cout
Linux 해상도 조절
·
Operating System
1 2 3 4 5 6 7 xrandr --newmode "1920x1080" 173.00 1920 2048 2248 2576 1080 1083 1088 1120 -hsync +vsync xrandr --addmode Virtual1 1920x1080 xrandr --output Virtual1 --mode 1920x1080 xrandr --newmode "2560x1440" 241.50 2560 2600 2632 2720 1440 1443 1448 1481 -hsync +vsync xrandr --addmode Virtual1 2560x1440 xrandr --output Virtual1 --mode 2560x1440 Colored by Color Scripter cs xrandr 를 통해 해상도를 수동..