본문 바로가기

전체 글766

Python과 Go: 미래의 프로그래밍 언어는 어떤 것이 더 유망할까? 프로그래밍 언어를 선택하는 것은 개발자에게 중요한 결정입니다. 어느정도 개발 경험이 있는 경우에 어떤 언어를 더 깊이 공부해 볼지에 대한 고민이 많아지는데요, 오늘날 가장 인기 있는 두 언어인 Python과 Go에 대해 알아보겠습니다. Python과 Go의 개요 Python은 1991년에 출시된 범용 프로그래밍 언어로, 데이터 과학, 기계 학습, 일반적인 프로토타이핑 등에 널리 사용됩니다. Python은 간단하고 읽기 쉬운 구문으로 알려져 있으며, 동적 타이핑을 지원하므로 명시적인 타입 선언이 필요하지 않습니다. 또한, Python은 클래스, 상속, 다형성을 지원하는 객체 지향 기능을 가지고 있습니다. 반면에 Go는 2009년에 Google에서 출시한 상대적으로 새로운 언어로, 클라우드 기반 웹 애플리케.. 2024. 4. 21.
[C++/STL] How to find the size, length of a vector In C++, there are several ways to calculate the size of a vector, which indicates how many items it contains. Although there isn’t a single definitive method, you can choose from the following summarized approaches. Keep in mind that there isn’t necessarily a right or wrong answer; consider these as reference points. 1. std::vector::size: This directly returns the size of the vector. For example.. 2024. 4. 21.
C++ extern 개념, 사용방법 정리 C++ 개발을 하다보면 클래스별로, 기능별로 여러 파일을 만들어야 하는 경우가 있습니다. 다른 파일의 전역변수를 사용하는게 잘 되지 않아서 전역변수를 포기하고 별도의 객체를 만들어야 할지 고민하기도 하는데요. 이럴 때 도움이 되는 키워드 extern 에 대해 알아보겠습니다. 개요 개발을 하면서 두개의 소스코드 : a.cpp, main.cpp 를 만들었다고 가정해 봅시다. a.cpp은 전역변수를 선언하고 있고, main.cpp는 이를 사용하는 코드입니다. a.cpp int test=123 main.cpp #include using namespace std; int main () { cout 2024. 4. 21.
리눅스 프로세스 사용량 분석, htop 응용하기 이전 글에 이어서 작성하는 리눅스 프로세스 사용량 분석 응용 하기 방법입니다. 아래 글도 한번 읽어주시면 감사하겠습니다. 리눅스 프로세스 좀 더 잘 들여다보기 - htop 사용법 리눅스 프로세스 좀 더 잘 들여다보기 - htop 사용법 최근 운영 중인 서비스가 프로세스를 많이 사용하게 되면서, ps 나 top 보다 조금 더 나은 도구가 필요하다는 생각이 들었습니다. 그래서 찾아보니 htop 이라는 툴이 있어서 일단 VM에서 어느정도 armin.tistory.com htop 기능의 활용 htop 을 실행하기 전 옵션을 활용하여 원하는 동작을 수행할 수도 있지만, htop 실행 후에도 옵션에서 제공했던 기능들을 활용 가능합니다. 위에 보이는 htop 실행화면을 보면 F1 ~ F10 까지의 메뉴가 있으며, 아.. 2024. 4. 19.
리눅스 프로세스 좀 더 잘 들여다보기 - htop 사용법 최근 운영 중인 서비스가 프로세스를 많이 사용하게 되면서, ps 나 top 보다 조금 더 나은 도구가 필요하다는 생각이 들었습니다. 그래서 찾아보니 htop 이라는 툴이 있어서 일단 VM에서 어느정도 기능을 제공하는지 확인해 보았습니다. 설치 htop 설치는 apt, snap 또는 소스코드 빌드 등 여러 방법으로 가능하다. 각자 OS에 맞는 패키지 관리 도구를 이용하도록 하자. 저는 apt 로 설치를 진행했습니다. 명령어, 옵션 새로운 명령어를 설치하면 help 또는 man page를 확인해 보곤 합니다. 몇 가지 옵션들이 뜨는데요, 하나씩 천천히 확인해 보겠습니다. 1. htop 그냥 htop명령을 입력했을 때 입니다. 각종 프로세스 정보들과 개별 코어가 얼만큼의 리소스를 사용하고 있는지를 보여줍니다... 2024. 4. 13.
AWS Amplify 로 AWS 웹앱 구현하는 방법 AWS Amplify AWS Amplify는 프런트엔드 웹 및 모바일 개발자들이 클라우드 기반 애플리케이션을 쉽게 구축, 연결 및 호스팅 할 수 있도록 도와주는 JavaScript 라이브러리입니다. AWS 는 Amplify 를 통해 클라우드 내에서 앱을 빌드하는데 필요한 모든 기능들을 제공합니다. AWS Amplify를 사용하면 다음과 같은 기능을 수행할 수 있습니다. 프런트엔드 및 백엔드 연결: Amplify를 사용하여 프런트엔드 애플리케이션과 백엔드 서비스를 연결할 수 있습니다. 데이터베이스, 인증, 스토리지 등과 같은 백엔드 기능을 쉽게 추가할 수 있습니다. 호스팅 및 배포: Amplify를 사용하여 프런트엔드 웹 앱을 빠르고 안전하게 배포하고 호스팅 할 수 있습니다. CI/CD 워크플로를 통해 프.. 2024. 3. 23.
[C++] nullptr과 NULL차이 - nullptr 조건문 사용시 주의사항 NULL NULL은 C에서 주로 많이 사용하게 되는 값 입니다. 보통 0으로 정의되어 있습니다. 초기화 또는 문자열 끝을 표현하기 위해, 할당 된 값이 없음을 의미하고 싶을 때 보통 사용하게 됩니다. In C, the macro NULL may have the type void*, but that is not allowed in C++ because null pointer constants cannot have that type. C 에서는 NULL은 void* 타입을 갖게된다. 하지만 C++에서는 다르며, 이는 null pointer 상수가 void* 타입을 가질 수 없기 떄문이다. C에서의 NULL type은 void* 입니다. 하지만 C++은 조금 다른데요, C++ 11 이전에는 NULL 매크로를 .. 2024. 3. 19.
C와 C++이 백악관에서 더 이상 사용하지 않게 된 이유 C와 C++을 그만 사용해야 하는 이유 최근 ciokorea.com 에서 발행한 뉴스기사 중 재밌는 글을 보았다. 제목은 백악관, 'C'와 'C++' 사용 중단 촉구··· 전문가들 "시의적절한 권고" 였는데, 사실 예전부터 계속 나오던 얘기이기는 하다. 기사가 궁금한 분들은 아래 링크를 확인해 보자 백악관, 'C'와 'C++' 사용 중단 촉구··· 전문가들 "시의적절한 권고" 바이든 행정부가 버퍼 오버플로 및 기타 메모리 액세스 취약성을 유발하는 프로그래밍 언어에서 벗어날 것을 촉구했다. Image Cr www.ciokorea.com C, C++ 이 보안적으로 문제가 있고 이러쿵저러쿵.. 우리는 메모리를 관리하는 언어를 사용해야 하며 go 나 rust가 그런 것이다! 이런 주장이 대부분이었다. 사실 틀린.. 2024. 3. 17.
MSA에서 서비스 간 효과적인 통신을 책임지는 Service mesh 개념 읽어보기 Service mesh 최근 신규 서비스 설계를 하면서 Service mesh와 Istio에 대한 내용들을 보게 되었습니다. 직접 사용해 보거나 공부를 해본 적은 없고 간접적으로 이런 게 있다 정도로만 알고 있었는데요, 말 나온 김에 가볍게라도 리서치를 해봐야겠다 싶어서 포스팅을 작성합니다. In software architecture, a service mesh is a dedicated infrastructure layer for facilitating service-to-service communications between services or microservices using a proxy. - 출처 : 위키피디아 위키피디아에서는 Service mesh는 proxy를 사용하여 마이크로 서비스,.. 2024. 3. 16.
Standard stream의 유형 stdout, stderr 차이점과 활용 사진: Unsplash의Ilya Pavlov 표준 스트림 유형 표준스트림 유형은 3가지 I/O 연결 유형이 있습니다. 1. standard input ( stdin ) Standard input은 프로그램이 데이터를 입력 받는 스트림입니다. 파일을 읽거나, CLI에서 입력을 받는 경우에 standard input을 사용하게 됩니다. 2. standard output ( stdout ) Standard output 은 프로그램이 출력 데이터를 쓰기 위한 스트림 입니다. 모든 프로그램이 stdout 스트림을 사용하지는 않습니다만, 터미널에 출력을 쓰는 경우 stdout 스트림을 사용한다고 볼 수 있겠습니다. stdout 의 파일 디스크립터는 1 을 사용하고 있습니다. 파일디스크립터 1에 내용을 쓰는 경우 s.. 2024. 3. 5.
리눅스 개발하면서 C++ 디버깅 방법 - gdb breakpoint(중단점) 활용 윈도에서 visual studio를 이용하거나 이클립스로 개발을 했을 때 디버깅에 대한 고민은 크게 하지 않았던 것 같습니다. IDE가 강력한 기능을 제공하고 있고, 편의성이 상당했기 때문입니다. 하지만 리눅스에서 개발을 하는 경우라면 어떨까요? DISPLAY를 잡고 IDE를 통해 개발한다면 윈도우와 큰 차이는 없을지도 모르겠습니다. 아니면 IDE에 ssh 설정을 해서 개발을 하는것도 방법이겠죠. GDB 저는 리눅스에서 vim을 이용하여 개발을 하고 있습니다. 디버깅은 gdb를 주로 사용하고요. 너무 old fashion 인가 싶지만.. 다양한 업계가 있고 제한적인 개발환경이 있으니 너무 뭐라 하지 않으셨으면 좋겠습니다. 여하튼 다른 개발 도구를 쓰더라도 디버깅 만큼은 gdb를 사용하게 될 것 같습니다... 2024. 3. 4.
개발자용 노트북 추천 - 개발자가 맥북을 선호하는 이유 개발자들은 노트북을 정말 많이들 사용합니다. 일부 개발자들은 집에서만 개발을 하는데도 불구하고 노트북만 사용하는 경우도 많이 있는데요, 왜 개발자들은 노트북을 더 선호할까요? 개발자들이 노트북을 선호하는 이유는 여러 가지가 있습니다. 제가 알려드리는 내용은 그중 일부이고 정말 다양한 이유가 있으니 참고만 해주세요. 개발자가 노트북을 선호하는 이유 휴대성과 이동성: 노트북은 휴대성이 뛰어나며 어디서나 쉽게 이동할 수 있습니다. 이는 개발자가 자신의 작업을 어디서든 수행할 수 있게 해 주며, 필요한 경우 현장에서 작업하는 데 유용합니다. 언제 어디서나 운영대응이 필요한 개발자들에게는 휴대성이 큰 장점으로 작용합니다. 휴가 중에도 연락이 오는 경우가 종종 있어서 노트북이 정말.. 필요합니다 ^^; 다양한 운영.. 2024. 3. 3.
[C++] gdb이용하여 thread 분석하기 C++ 프로그래밍을 하면서 디버깅은 어떻게 해야 할까요? 윈도우에서는 Visual Studio 라는 IDE를 통해 수월하게 디버깅이 가능하지만, 리눅스에서는 그렇지 않습니다. 리눅스 터미널에서는 디버깅 시 GDB를 주로 이용하며, 오늘은 GDB 를 이용한 Thread 를 분석방법에 대해 알아보려고 합니다. 기초적인 사용방법에 대해서는 본문 끝에 링크를 달아두었으니 이전 포스팅을 참고 부탁드리겠습니다. GDB GDB 는 GNU 프로젝트 디버거 입니다. GDB는 프로그램이 어떻게 동작하는지 분석할 수 있도록 도와줍니다. GDB 사용 전 이 점은 반드시 숙지하고 있어야 하는 부분이 있는데요, 바로 빌드 시 별도 옵션을 추가해야 하는 점 입니다. C, C++ 코드를 빌드하면서 추후 gdb로 디버깅이 필요하다면 .. 2024. 3. 2.
읽으면서 배우는 소프트웨어 - MSA(Micro Service Architecture) Micro Service Architecture Micro service architecture(이하 MSA)는 소프트웨어 설계 유형 중 하나입니다. 독립된 서비스의 조합으로 하나의 어플리케이션을 개발하는 설계로서 클라우드와 컨테이너의 발전과 함께 애플리케이션 개발에 널리 사용되고 있습니다. 장점 Micro Service Architecture는 배포와 확장성이 용이하다는 점이 가장 큰 장점입니다. 서비스가 독립적으로 수행되기 때문에 지속적인 변경에 의한 어플리케이션 영향이 적으며, 변경용이성 확보는 요구사항 변경에 대응을 빠르게 합니다. 급변하는 사용자 요구에 쉽게 대응할 수 있다는 점은 설계적인 관점에서 상당한 장점이 될 수 있습니다. 또한, 확장성을 통해 Availability와 Performanc.. 2024. 3. 1.
[makefile 활용] makefile로 코드빌드 하기 사진: Unsplash의Ilya Pavlov 리눅스 환경에서 프로젝트를 진행하는 경우 makefile 을 작성하는 경험을 하게됩니다. 직접 작성하지 않더라도 한번 쯤 사용하게 되지요. 오늘은 makefile에 대한 개념을 설명하고 어떻게 활용할 수 있는지 알려드리겠습니다. makefile 소프트웨어 프로젝트를 빌드하고 컴파일하는 데 사용되는 스크립트 파일 Makefile은 주로 C, C++, 그리고 다른 컴파일 가능한 프로그래밍 언어의 프로젝트에서 자주 사용됩니다. Makefile은 프로젝트의 의존성과 빌드 규칙을 정의하여 빌드 프로세스를 자동화합니다. gcc 또는 g++ 을 이용한 빌드를 구성할 때 각종 옵션들을 makefile에 정의함으로써 개발자의 실수를 방지하고 기능을 자동화 가능합니다. Make.. 2024. 2. 26.