분류 전체보기

Programming/C++

[C++/03] 참조자 (reference)

Introduction 기존에 C언어를 사용하던 개발자는 다른 변수나 상수를 가리키기 위해서 무조건 포인터(pointer)를 사용했습니다. 그러나 포인터 문법은 어떠한 행위도 용납되는 강력한 성능에 부수적으로 따라오는 사고도 많았는데요. 이러한 휴먼 에러 발생 확률을 줄이기 위해서 C++은 포인터가 꼭 필요한 상황이 아니라면 그 기능을 한정시킬 새로운 문법을 제공합니다. 이를 참조자(레퍼런스, reference)라고 하며, 오늘은 참조자가 무엇인지, 그리고 포인터와의 차이점은 무엇인지 살펴보도록 하겠습니다. 참조자란? 우리의 친절한 이웃 위키피디아는 참조자를 아래와 같이 정의 내리고 있습니다. In the C++ language, a reference is a simple reference datatyp..

Programming/C++

[C++/02] 이름 공간 (namespace)

Introduction C++을 학부 수업에서 처음 접할 때 아마 모두가 같은 코드를 적을 것입니다. 차이가 있더라도 굉장히 미미할 것이라고 생각되는데요. 아니라면 세대 차이에 충격받을… 일단 코드부터 보시죠. #include using namespace std; int main() { cout

Computer Science/OS

[MacOS] MacOS에서 SSH로 Ubuntu 원격 접속 with GUI

1. Ubuntu 환경 설정 sudo apt-get install ssh sudo apt-get install openssh-server 위 두 명령어 중 하나를 선택해 SSH를 설치합니다. 설치를 한 이후에는 바로 SSH가 실행되지만 재시작 이후에는 아래 명령어로 SSH 서버를 열어주도록 합니다. sudo service ssh start 접기/펼치기 1.5. SSH 서버 IP 주소 확인 SSH 서버에 접속하기 위해서는 서버의 IP 주소가 필요합니다. 아래 명령어를 Ubuntu 터미널에 입력해 확인하도록 합시다. ifconfig | grep inet 혹은 ifconfig 입력 후 inet 부분을 확인하면 됩니다. 혹시 여기서 에러가 발생하시는 경우 아래 명령어로 네트워크 툴을 설치한 후 다시 실행하시면 ..

Programming/C++

[C++/01] C++ 스타일 프로그래밍이란

Introduction 안녕하세요, 알고리즘 엔지니어 YoungJ입니다. 근 2년간 SLAM을 비롯한 Computer Vision 스터디를 진행하며 많은 알고리즘들을 직접 구현 및 실험을 해봤는데요. 저는 개인적으로 Python을 통해 실험 및 데모 개발을 진행하고, C++로 성능 최적화 및 프로젝트에 코드를 추가하는 과정을 선호합니다. 이 과정마다 C++ 개발 단계가 저에게는 bottleneck으로 작용한다는 것을 발견했습니다. 그럴 때마다 C++를 더 잘하고 싶다는 욕망이 커져만 갔고, 이번 기회에 본격적으로 깊게 공부를 해보고자 합니다. 학부 과정 이후로 진득하게 서적과 여러 레퍼런스들을 찾아보는 과정이 처음이라 많이 낯설지만 조급해하지 않고 차근차근 나아가려 합니다. C++를 잘하는 기준은 뭘까?..

Programming/Trouble Shooting

[ROS/ROS2] fatal error: tf2_geometry_msgs/tf2_geometry_msgs.hpp: No such file or directory

Issue Starting >>> slam-tutorial Starting >>> tsl-robin-map Finished

Programming/Flutter

[Dart] Collection if and for

Flutter 공부 이전에 그 언어인 Dart를 공부하며 기록한 포스트입니다. Collection List, dictionary, set 등 다양한 데이터 타입들이 Dart 언어에서는 어떻게 정의되고 이용되는지를 살펴보던 중, 처음 보는 기능이 눈에 들어왔습니다. 데이터 타입들 정의 내부에 if와 for syntax가 있는 것을 발견할 수 있었는데요. Dart에서는 collection이라 불리는 이 기능으로 list, dictionary, set 등을 정의할 때 조건문이나 반복문을 통해 코드의 능률을 올릴 수 있습니다. Collection if 우선 조건문을 collection으로서 사용해 보겠습니다. 이 경우 조건문이 참인 경우 해당 원소를 데이터 타입에 추가하는 형식으로 되어 있습니다. void ma..

Programming/Flutter

[Dart] String interpolation; string formatter, 스트링 포매터

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} ..

Programming/Flutter

[Dart] 변수 (variable)

Flutter 공부 이전에 그 언어인 Dart를 공부하며 기록한 포스트입니다. 변수 선언 Dart에서 일반적인 변수를 선언 및 정의하는 방법은 크게 두 방법이 있습니다. Compiler가 타입을 유추해 주는 var, 그리고 C/C++와 같이 타입을 지정해주는 방식이 있습니다. 전자의 경우 Python의 방식, 혹은 C++의 auto syntax와 같다고 보면 될 것 같네요. 추가로 아래 예제에서 볼 수 있듯이 두 방법 모두 mutable variable을 선언합니다. 즉, 이후에 타입만 일치한다면 값의 변경이 가능합니다. Dart convention에서는 일반적인 local variable의 경우 var을 통한 선언을, class 멤버 변수나 property의 경우 명시적으로 선언을 해주길 권장하고 있습..

YoungJ
'분류 전체보기' 카테고리의 글 목록