-
Effective Modern C++ (3)
저번시간에 이어서 오늘은 예전에 Effective Modern C++ 을 공부하며 정리했던 내용들을 포스팅해볼까 합니다~ C++11/14 에서의 best practice 에 관한 내용으로서 최근 C++20 이 나오는 시점에서 이 또한 최신 내용은 아니긴 하지만 여전히 많은 부분들이 유효합니다. Chapter 6. 람다 표현식 항목 31. 기본 갈무리 모드를 피하라. 참고로, 갈무리는 ‘capture’를 의미한다. (첨엔 어색했으나 나도 이제 완전히 이 번역에 익숙해져버렸다.) 기본 갈무리 모드 (default capture mode)는 ‘참조 갈무리 모드’와 ‘값 갈무리 모드’가 있다. 기본 갈무리 모드를 피해야 하는...
-
Flash와 FTL
안녕하세요? 오늘은 flash와, flash에서 사용되는 기법인 FTL에 대한 간단한 글을 써보았습니다. Flash의 특성 Flash(플래시 메모리)는 전기적으로 데이터를 저장하는 저장장치들을 일컫는 말입니다. 요즘 사용되는 대부분의 기계에는 flash가 들어갑니다. 대부분의 컴퓨터나 노트북에는 SSD가 들어가고, 데이터를 간편하게 휴대하기 위해 사용하는 USB나 스마트폰에 내장되어있는 저장장치도 대부분 flash입니다. Flash는 Random read 속도가 빠르고, 전력 소모도 적고, 충격에도 강한 등의 많은 장점을 가지고 있어 널리 사용됩니다. 이런 flash에 데이터를 저장할 때, 공통적으로 몇 가지 특별한 속성을 가집니다. 이 때문에 flash에 데이터를...
-
Grad-CAM
Introduction Image Classification은 Convolutional Deep Neural Network를 활용하는 대표적인 문제들 중 하나입니다. 이와 관련된 유명한 대회로 ILSVRC (ImageNet Large Scale Visual Recognition Challenge) 가 있습니다. ImageNet 데이터베이스의 데이터를 이용하여 대회가 이루어지는데, 약 백만 장의, 천 개의 카테고리로 분류된 training image들을 이용하여 각 test image에 대해서 어떤 카테고리에 속할 지 잘 예측하는 것을 목표로 합니다. 이 대회에서 널리 알려진 네트워크 구조인 AlexNet, GoogLeNet, VGGNet, ResNet 모델 등이 제안되기도 하였습니다. 고양이가 있는 사진이 ‘고양이’ 카테고리로 분류되어 있다고...
-
C/C++의 undefined behavior
C나 C++에 있어서 가장 곤혹스러운 요소 중 하나인 undefined behavior는 입문자부터 숙련자에 이르기까지 까다로운 디버깅을 요합니다. 흔히 나오는 코딩 실수인 배열 인덱스 오류도 undefined behavior이며, 온라인 저지 등에서는 최적화 옵션이 켜지면서 전혀 다른 효과가 일어날 수 있습니다. 꼭 C++에만 국한된 이야기는 아니지만, C++ undefined behavior의 주된 요인 중 하나인 signed integer overflow는 2019년에만 1247개의 CVE 취약점을 낳았습니다. 그렇다고 모든 사람이 C/C++ 스펙을 머릿속에 넣어야 하는 것도 아닐 뿐더러 그럴 수도 없습니다. 이 포스트에서는 undefined behavior의...
-
GCC 확장 기능
서론 프로그래밍을 하면서 C나 C++의 레퍼런스를 찾다 보면 표준의 디테일에 놀라게 되는 경우가 많습니다. 평소에는 무심하게 사용해왔던 문법에 들어있는 다양한 제약 조건이나, 키워드들의 알지 못했던 쓰임새들을 종종 보게 됩니다. 그런데 그렇게 방대한 스펙을 가지고도 사람들은 더 많은 것을 바라기 마련입니다. 표준상으로는 지원되지 않는 문법을 통해 더욱 편리한 코드를 만들거나, 어셈블리 명령을 직접 적어넣지 않아도 프로세서의 좋은 기능을 컴파일러가 최대한 살릴 수 있게 보장해 주었으면 하는 등 끝없이 더 많은 기능을 원하고 있습니다. 이를 충족시키기 위해...