Introduction 기존에 C언어를 사용하던 개발자는 다른 변수나 상수를 가리키기 위해서 무조건 포인터(pointer)를 사용했습니다. 그러나 포인터 문법은 어떠한 행위도 용납되는 강력한 성능에 부수적으로 따라오는 사고도 많았는데요. 이러한 휴먼 에러 발생 확률을 줄이기 위해서 C++은 포인터가 꼭 필요한 상황이 아니라면 그 기능을 한정시킬 새로운 문법을 제공합니다. 이를 참조자(레퍼런스, reference)라고 하며, 오늘은 참조자가 무엇인지, 그리고 포인터와의 차이점은 무엇인지 살펴보도록 하겠습니다. 참조자란? 우리의 친절한 이웃 위키피디아는 참조자를 아래와 같이 정의 내리고 있습니다. In the C++ language, a reference is a simple reference datatyp..
Introduction C++을 학부 수업에서 처음 접할 때 아마 모두가 같은 코드를 적을 것입니다. 차이가 있더라도 굉장히 미미할 것이라고 생각되는데요. 아니라면 세대 차이에 충격받을… 일단 코드부터 보시죠. #include using namespace std; int main() { cout
Introduction 안녕하세요, 알고리즘 엔지니어 YoungJ입니다. 근 2년간 SLAM을 비롯한 Computer Vision 스터디를 진행하며 많은 알고리즘들을 직접 구현 및 실험을 해봤는데요. 저는 개인적으로 Python을 통해 실험 및 데모 개발을 진행하고, C++로 성능 최적화 및 프로젝트에 코드를 추가하는 과정을 선호합니다. 이 과정마다 C++ 개발 단계가 저에게는 bottleneck으로 작용한다는 것을 발견했습니다. 그럴 때마다 C++를 더 잘하고 싶다는 욕망이 커져만 갔고, 이번 기회에 본격적으로 깊게 공부를 해보고자 합니다. 학부 과정 이후로 진득하게 서적과 여러 레퍼런스들을 찾아보는 과정이 처음이라 많이 낯설지만 조급해하지 않고 차근차근 나아가려 합니다. C++를 잘하는 기준은 뭘까?..
Flutter 공부 이전에 그 언어인 Dart를 공부하며 기록한 포스트입니다. Collection List, dictionary, set 등 다양한 데이터 타입들이 Dart 언어에서는 어떻게 정의되고 이용되는지를 살펴보던 중, 처음 보는 기능이 눈에 들어왔습니다. 데이터 타입들 정의 내부에 if와 for syntax가 있는 것을 발견할 수 있었는데요. Dart에서는 collection이라 불리는 이 기능으로 list, dictionary, set 등을 정의할 때 조건문이나 반복문을 통해 코드의 능률을 올릴 수 있습니다. Collection if 우선 조건문을 collection으로서 사용해 보겠습니다. 이 경우 조건문이 참인 경우 해당 원소를 데이터 타입에 추가하는 형식으로 되어 있습니다. void ma..
Flutter 공부 이전에 그 언어인 Dart를 공부하며 기록한 포스트입니다. String formatter 제가 C++ 외길 인생을 청산하게된 계기는 Python의 문자열 처리를 처음 접했을 때입니다. 그만큼 Python이 문자열 처리에서 가지는 이점은 큰데요. 그 중에서도 3.6 이상의 버전에서 지원되는 f-string은 제게 신세계였습니다. 문자열 내부에서 %d, %s 같은 서식 문자를 더이상 보지 않아도 괜찮다니..! str.format 기능도 있지만 별로 마음에 들지는 않았습니다. 아무튼 제가 사랑하는 f-string을 이용해 문자열을 처리하는 방법은 아래와 같습니다. name = 'YoungJ' age = 26 print(f'My name is {name}, and I am {age + 2} ..
Flutter 공부 이전에 그 언어인 Dart를 공부하며 기록한 포스트입니다. 변수 선언 Dart에서 일반적인 변수를 선언 및 정의하는 방법은 크게 두 방법이 있습니다. Compiler가 타입을 유추해 주는 var, 그리고 C/C++와 같이 타입을 지정해주는 방식이 있습니다. 전자의 경우 Python의 방식, 혹은 C++의 auto syntax와 같다고 보면 될 것 같네요. 추가로 아래 예제에서 볼 수 있듯이 두 방법 모두 mutable variable을 선언합니다. 즉, 이후에 타입만 일치한다면 값의 변경이 가능합니다. Dart convention에서는 일반적인 local variable의 경우 var을 통한 선언을, class 멤버 변수나 property의 경우 명시적으로 선언을 해주길 권장하고 있습..
Introduction Ubuntu 서버를 이용하거나 SSH 접속을 통해 외부에서 작업을 할 경우 익숙한 GUI 환경이 아닌 CLI 환경에서 작업을 해야 합니다. 보통의 경우 문제가 없지만 dataset을 다운받거나 필요한 파일을 웹 서버에서 다운로드할 때 난감한 경우가 있습니다. 이 경우 Apache 웹 서버를 지원하는 사이트인 경우 아래와 같이 CLI에서도 파일을 다운받을 수 있습니다. Download via wget 위 이미지는 제가 다운 받으려는 dataset이 위치한 사이트입니다. 하단에 Apache/2.4.29 (Ubuntu) Server 로 시작하는 부분을 주목해야 합니다. 해당 사이트는 Apache Web server에 파일이 업로드된 상태입니다. 이런 사이트들의 데이터들은 wget을 사용..