SCRIPTS BY
close
프로필 배경
프로필 로고

SCRIPTS BY

  • 분류 전체보기 (76)
    • C++ (19)
    • Flutter, Dart (13)
      • Flutter (11)
      • Dart (2)
    • Database (8)
    • Web (5)
    • 회고록 (6)
    • 개발일지 (6)
    • Review (7)
      • Books (2)
      • Conference & Seminar (4)
      • IT Products (1)
    • Notion (2)
    • Algorithms (3)
    • Computer Science (6)
  • 홈
  • 방명록
개발 시간을 줄여주는 코드 포매터(Code Formatter)와 그 종류(Clang-Format, Black 등)

개발 시간을 줄여주는 코드 포매터(Code Formatter)와 그 종류(Clang-Format, Black 등)

코드 포매터란? 코드 포매터(Code Formatter)란 정해진 규칙(코딩 컨벤션)에 맞추어서 코드를 정렬하는 도구를 말합니다. 많은 기업들에서는 정해진 코딩 스타일과 컨벤션이 있는데, 이에 맞추어서 자동으로 코드를 정렬하거나, 혹은 보기 좋게 꾸밀 수 있습니다. 코딩 스타일을 따르는 것은 매우 중요합니다. 코드는 쓰는 횟수보다 읽는 횟수가 훨씬 더 많으므로, 코드는 가독성을 위해서 최대한 보기 좋게 작성되어야 합니다. 코딩 스타일은 코드의 가독성을 높이는데 아주 중요한 ‘약속’입니다. 예를 들어 어떤 팀 내에서 띄어쓰기 간격을 4칸으로 하는 것에 대해 정했으면, 모든 팀원이 이에 따라야 합니다. 만약에 어느 한 팀원이 띄어쓰기 간격을 두 칸으로 해놓는다면, 보는 이로 하여금 통일되지 않은 코딩 스타일..

  • format_list_bulleted C++
  • · 2023. 8. 12.
  • textsms
모던 C++의 핵심, RAII idiom이란 무엇인가

모던 C++의 핵심, RAII idiom이란 무엇인가

이 글은 모던 C++ (Modern C++) - GDSC Devtalk 발표 셀프 리뷰에 이어진 글입니다. RAII 원칙 RAII는 다음과 같이 정의할 수 있다. Resource Acquisition Is Initialization 그러나 더 정확한 표현은 다음과 같다. 객체와 자원의 라이프 사이클을 일치시킨다 RAII란 무엇인가? RAII의 약자 Resource Acquisition Is Initialization를 직역하면 자원의 획득은 초기화라는 뜻이다. 그러나 RAII의 원칙은 더 엄밀히 따지면 자원의 initialization, 초기화보다는 destruction, 파괴에 초점을 맞추고 있다. RAII의 다른 말은 객체와 자원의 라이프 사이클을 일치시키는 것이다. 말로만 들어서는 추상적이고 어렵다..

  • format_list_bulleted C++
  • · 2023. 6. 3.
  • textsms
모던 C++ (Modern C++) - GDSC Devtalk 발표 셀프 리뷰

모던 C++ (Modern C++) - GDSC Devtalk 발표 셀프 리뷰

GDSC Devtalk 발표 - Modern C++ 배경 우선 이 글은 GDSC Hongik 6th DevTalk 세션에서 제가 직접 발표한 모던 C++에 관한 영상의 셀프 리뷰 겸 다시 정리한 글입니다. [GDSC Hongik] 코린이가 경험한 모던 C++ 체험기 - 이준선 저걸 발표한 게 23년 1월이었는데, 5개월이 지난 지금 기억이 워낙 오래 되기도 했고, 저때 배운 지식과 지금의 지식과 관점이 또 다르기에, 그리고 결정적으로 발표 당시 엄청나게 긴장한 탓에, 워낙 횡설수설하는 바람에 내용이 제대로 전달이 안 된 것 같습니다. 한 번 글로 업데이트하고자 작성합니다. 지금 생각해보면 참 용감했네요. 초보 개발자가 무슨 깡으로 고수님들이 즐비한 GDSC Hongik에서 모던 C++에 대해서 발표를 하..

  • format_list_bulleted C++
  • · 2023. 6. 3.
  • textsms
C++ 정적 코드 분석하기 - clang-tidy, cppcheck, 컴파일 옵션

C++ 정적 코드 분석하기 - clang-tidy, cppcheck, 컴파일 옵션

정적 코드 분석 이전 Software Engineering at Google 리뷰 글에서, 구글에서는 소프트웨어의 취약점을 최대한 빠르게 발견하기 위해서 다층 방어 전략을 구사한다고 했었고, 그중 하나가 정적 코드 분석이라고 했었다. 그렇다면 이 정적 코드 분석이란 무엇일까? 소프트웨어의 취약점, 버그는 테스트와 실행 과정에서 발견될 수도 있지만, 사실 대부분의 버그들은 코드 단계에서 발견될 수도 있다. nullptr 관련 문제들, 잘못된 코딩 습관으로 인한 버그들, 메모리 누수 관련 문제들은 대부분 사실 실행 단계가 아닌, 코드를 유심히 점검하는 과정에서 해결할 수 있다. 그리고 이러한 코드 분석을 정적 코드 분석(Static Code Analysis)라 한다. 그러나 사람은 기본적으로 자신이 만들고 ..

  • format_list_bulleted C++
  • · 2023. 6. 1.
  • textsms
CMake를 사용해보자!

CMake를 사용해보자!

CMake를 사용해보자 CMake를 들어보았는가? CMake란 C/C++에서 사용되는 빌드 시스템이다. CMake를 사용하면 C++ 프로젝트를 더 쉽게 관리할 수 있게 된다. 그런데 우선, CMake를 알아보기 전에 make에 대해서 먼저 알아보자. make란? C++ 파일을 실행시키기 위해서는 어떻게 해야 하는가? 만약 C++를 처음 배운다면, Visual Studio를 실행시키고, 새로운 프로젝트를 생성해서, ctrl + shift + b 로 빌드하여 실행을 했을 것이다. 그러나 그 과정이 어떻게 이루어지는 지 알고 있는지 궁금해본 적 있는가? 간단히만 설명하자면, C++ 파일을 실행하기 위해서는 컴파일, 빌드, 링크 등의 과정이 필요하다. 컴파일은 CPP 파일을 읽고 기계어로 변환하는 과정이다. 이..

  • format_list_bulleted C++
  • · 2023. 5. 28.
  • textsms
C++에서 오류 코드를 반환해보자 - optional, variant, pair, tuple, absl::Status, expected

C++에서 오류 코드를 반환해보자 - optional, variant, pair, tuple, absl::Status, expected

C++에서 오류 코드를 리턴하는 다양한 방법들 C++ 예외 처리(Error Handling) 가이드 이전 글에서, C++에서 에러(std::exception)를 던지는 방법에 대해서 알아보았고, 구글은 에러를 사용하지 않는다고 하였다. 그렇다면 에러를 던지지 않고, 오류 코드를 반환하는 방법은 무엇이 있을까? 당연하지만 고전적인 C언어 식의 방법, 즉 매크로로 오류 코드를 정의해놓고, 이를 반환하는 방법은 굳이 설명하진 않겠다. 이 방법은 C++에서도 사용할 수 있지만, C++에서는 더 좋은 방법들이 존재한다. 결론부터 말하면 이 글에서는 std::optional, std::variant, std::pair, std::tuple, absl::Status, std::expected에 대해서 살펴볼 것이다...

  • format_list_bulleted C++
  • · 2023. 5. 27.
  • textsms
C++ 예외 처리(Error Handling) 가이드 + exception safety rules

C++ 예외 처리(Error Handling) 가이드 + exception safety rules

개요 C++에서는 항상 논쟁거리가 되는 주제가 하나 있다. 바로 에러 핸들링에 관한 이야기이다. 워낙에 많은 이야기들이 오가고, 나 역시도 수많은 C++ 포럼과 개발자들, 그리고 외부 기업들의 C++ 스타일 가이드라인들을 찾아봤지만, 이 에러 핸들링에 관한 부분만큼은 모두의 생각이 첨예하게 다른 것을 알 수 있었다. 좋게 말하면 정답이 없는 문제이고, 나쁘게 말하면 그만큼 생각할 것이 많은 복잡한 문제이긴 하다. 그러나 인터넷을 통해 이 논쟁에 대해서 찾아보면, 그만큼 잘못된 정보도 많거나 쉽게 이해하기 어려운 정보들도 많이 산재해있고, 이를 합리적이고 비판적으로 정보를 필터링하기는 쉽지 않다. 그래서 편향된 시각을 갖게 될 수가 있다. 그래서 이번 기회에 내가 알아본 C++의 예외 처리(에러 핸들링, ..

  • format_list_bulleted C++
  • · 2023. 5. 21.
  • textsms
Heap VS Stack 무엇을 써야 하나 고민될 때

Heap VS Stack 무엇을 써야 하나 고민될 때

C++은 프로그래머가 직접 메모리를 관리할 수 있어, 매우 저수준의 영역까지 다룰 수 있는 언어이다. 그런만큼 C++ 프로그래머들은 컴퓨터 메모리의 구조를 잘 알고 있어야 한다. 특히 Heap memory, Stack Memory, Static Memory는 잘 알아야 한다. 또한 메모리 관리를 실패한다면, 병렬 처리를 할 때 False Sharing (두 개 이상의 스레드가 같은 블록 영역의 메모리에 접근하면서, 캐시 성능 저하가 발생하는 현상) 이 일어나 성능이 더 떨어지거나, 혹은 Data Racing (두 개 이상의 스레드가 동시에 같은 메모리에 대해 쓰기 접근하면서, 잘못된 연산을 하거나 서로 데이터에 대한 소유권을 주장하면서 성능이 저하되는 현상) 이 발생하기도 쉽다. 무엇이 됐든 C++을 할..

  • format_list_bulleted C++
  • · 2023. 5. 14.
  • textsms
[모던 C++] 컴파일 상수 constexpr

[모던 C++] 컴파일 상수 constexpr

constexpr이란 constexpr은 C++11부터 지원되기 시작한 컴파일 상수이다. 11부터 시작해서 23에 이르기까지 constexpr은 그 지원 범위를 점차 늘려왔고, 많은 C++ 프로그래머로부터 각광을 받았다고 한다. 이 constexpr은 무엇이고, const와 무엇이 다른 것일까. constexpr, 혹은 컴파일 상수는, '컴파일 시간에 값을 결정하는 상수'라는 의미를 갖고 있다. 2, 3.0과 같은 상수를 생각해보자. 이 상수들은 런타임 도중 그 값이 변경되지 않는다. C 시절 #define NUMBER 5와 같이 작성하면, 이는 매크로라 하여서, 컴파일러가 자동적으로 NUMBER를 5로 바꾸어준다. 이때 NUMBER는 컴파일 도중에 그 값이 결정되지, 런타임 도중에 값이 5로 결정되는 ..

  • format_list_bulleted C++
  • · 2023. 3. 25.
  • textsms
vector VS list 뭘 써야 하지?

vector VS list 뭘 써야 하지?

vector와 list 중 무엇을 써야 할까? 결론부터 말하면 거의 대부분의 상황에서 그냥 std::vector를 쓰면 된다. 그 이유를 알면 더 좋다. std::vector와 std::list의 차이 C++에서는 배열로 사용할 수 있는 컨테이너를 여러 개 지원하는데, 그 중 가장 많이 쓰이는 것은 std::vector와 std::list가 있다. 두 개 다 역할은 비슷한 거 같은데, 그 내부 구현은 완전히 다르다. 먼저 std::vector는, 그 내부 구조가 연속적인(Sequential 타입) 배열 형태로 이루어져 있다. 실제 물리적인 메모리 구조 상으로 연속적인 구조이다. 위 그림 모델이 정확히 std::vector의 모습을 표현하고 있다. 반면에 std::list는, 내부가 불연속적인(Non-se..

  • format_list_bulleted C++
  • · 2023. 3. 13.
  • textsms
  • navigate_before
  • 1
  • 2
  • navigate_next
공지사항
전체 카테고리
  • 분류 전체보기 (76)
    • C++ (19)
    • Flutter, Dart (13)
      • Flutter (11)
      • Dart (2)
    • Database (8)
    • Web (5)
    • 회고록 (6)
    • 개발일지 (6)
    • Review (7)
      • Books (2)
      • Conference & Seminar (4)
      • IT Products (1)
    • Notion (2)
    • Algorithms (3)
    • Computer Science (6)
최근 글
인기 글
최근 댓글
태그
  • #Flutter
  • #Cursor-based Pagination
  • #MySQL
  • #관계형 데이터 베이스 모델링
  • #C++
  • #Flutter 페이지네이션 구현
  • #모던 C++
  • #모던C++
  • #GDSC
  • #DevTalk 후기
전체 방문자
오늘
어제
전체
Copyright © 쭈미로운 생활 All rights reserved.
Designed by JJuum

티스토리툴바