전체 글

소프트웨어 개발 블로그
· Modern C++
원글: https://mystes.tistory.com/121 주요 특징 std::deque는 std::queue와 유사한 특징을 가집니다. (이하, "데크" 또는 "디큐", "덱") queue는 FIFO (first in, first out) 구조를 가집니다. 따라서 일반적인 큐는 한쪽에서 자료를 입력하면, 다른 한쪽에서 데이터가 빠져 나오는 구조입니다. 반면 deque는 양쪽에서 데이터의 삽입, 삭제가 가능하기 때문에 FIFO와 더불어 LIFO (last in, first out) 의 특징 역시 가집니다. 일련의 컨테이너와 같이 deque 역시 sequencial(연속적인) 데이터 형태를 가지며 vector의 특징과 동일하게 인덱스를 통한 접근 (랜덤 엑세스), 순회 등과 같은 기능을 제공합니다. 기..
· 일상
++ 2024-01-15 기준 동작되는 것 확인 (크롬, Brave 브라우저 기준) 유튜브를 사용하다보면 내가 검색한 영상과 전혀 무관한, 혐오스러운 영상들이 추가되는데, 특히 "SPA" 붙은 채널들이나 피부외과 시술 영상들(일부 어그로성 썸네일)이 대다수였습니다.. 제거하기 위해서 크롬 확장 프로그램을 사용합니다. 크롬 뿐만 아니라, 크로미움 기반 대부분 브라우저에서 사용 가능 (크롬 웹스토어 호환 시) 프로그램 설치 https://chromewebstore.google.com/detail/channel-blocker/nfkmalbckemmklibjddenhnofgnfcdfp Channel Blocker Allows you to block YouTube™ videos and comments by bla..
원글: https://mystes.tistory.com/121 주요 특징 std::vector는 STL에서 가장 인기있는 템플릿 라이브러리 중 하나입니다. 컨테이너의 앞 또는 뒤에 자유롭게 추가 및 삭제가 가능하며 인덱스를 통한 접근(랜덤 액세스) 역시 지원합니다. 각 요소는 연속적으로 저장되므로 반복자를 통해 요소에 액세스 할 수 있을 뿐만 아니라 요소에 대한 일반 포인터에 오프셋을 사용하여 요소에 액세스할 수도 있습니다. 즉, 벡터의 요소에 대한 포인터는 배열의 요소에 대한 포인터를 기대하는 함수에 저장될 수 있습니다. 벡터의 저장 공간은 자동으로 처리되며 필요에 따라 확장됩니다. 벡터는 향후 증가를 처리하기 위해 더 많은 메모리가 할당되기 때문에 일반적으로 정적 배열보다 더 많은 공간을 차지합니다...
· Undefined
모든 프로그래머는 자신의 코드가 효율성을 갖추기 위하여 프로그래밍을 하여야 할 의무가 있습니다. 알고리즘이란? 설명에 앞서 1부터 100까지 더하는 프로그램을 구현해 봅시다. 아래와 같이 간단하게 구현할 수 있습니다. int result = 0; for (int i = 1; i
C++를 주로 사용하는 개발자라면 빼놓을 수 없는 것이 바로 STL의 Container입니다. 자료구조를 배워본 사람이라면 각 컨테이너마다 어떤 특징이 있고, 무엇을 기반으로 해당 컨테이너가 개발되었는지 대략적으로 파악할 수 있을 것입니다. 본문에서는 컨테이너에 대한 기본적인 개요와 종류를 알아보고, 향후 각 컨테이너에 대한 자세한 설명과 특징, 장단점 등을 정리해 보겠습니다. 컨테이너? 컨테이너는 STL 알고리즘과 결합하여 다양한 데이터 구조를 표현할 수 있도록 설계된 자료형입니다. 각 컨테이너는 자신만의 특징을 가지고, 개발자는 자신이 구현하고자 하는 목적에 맞는 컨테이너를 채택하여 프로그램의 효율성을 높일 수 있습니다. 닭잡는데 소잡는 칼을 사용할 필요는 없습니다 효율성? 효율성을 수치화할 수 있는..
· Language/C++
다중 클라이언트가 접속하는 서버를 구현하는 베이스 코드입니다. 기존 1:1 방식이 아닌, N 명의 클라이언트에 대하여 select를 활용하여 각 클라이언트의 요청을 처리합니다. 현재 진행 중인 웹 브라우저와 리눅스 기반 응용 프로그램 사이, 중계 서버를 만들기 위하여 테스트 한 코드입니다. 개요 먼저, 일반적으로 알고 있는 socket의 개념과 별개로 select에 대하여 간략히 설명하자면, select는 네트워크 프로그래밍에서 사용되는 함수 중 하나로, 여러 개의 소켓을 모니터링하고 입출력 가능한 상태를 감지하는 기능을 제공합니다. 이를 통해 동시에 여러 소켓을 관리하고 비동기 네트워크 통신을 구현할 수 있습니다. 일반적으로 select는 유닉스 기반의 운영체제(Linux, mac, FreeBSD 등)..
· Language/C++
GS 인증을 받는 과정 중 암호가 저장된 일부 설정 파일(ini, json 등)에 대한 암호화 과정이 필요했습니다. 본문은 Linux (ARMv8) 환경에서 Crypto++를 설치(빌드)하고 예제 코드를 테스트하는 과정을 기록한 글입니다. 테스트 환경 Nvidia Jetson Xavier NX (Jetpack 4.6) Ubuntu 18.04 (Linux for Tegra) GCC 7.5.0 (C++17), CMake 3.24 설치 과정 먼저 Github를 통해 프로젝트를 다운 받았습니다. git clone https://github.com/weidai11/cryptopp.git cd cryptopp Crypto++는 GNUmakefile을 통해 리눅스 빌드를 지원하고 있었습니다. 저는 현재 개발 중인 프..
· A.I
Xavier 환경에서 직접 개발을 하여도 무관하지만, 편의성을 위하여 개발은 SSH 기반 윈도우 환경에서 Visual Studio Code를 활용하고, 실 테스트는 VNC 또는 실제 보드에서 동작을 진행하였습니다. 1. VS Code 설치하기 https://code.visualstudio.com/ Visual Studio Code - Code Editing. Redefined Visual Studio Code is a code editor redefined and optimized for building and debugging modern web and cloud applications. Visual Studio Code is free and available on your favorite platfo..
· A.I
해당 글에서는 YOLOv5 사용을 위한 PyTorch 및 기타 관련 패키지를 설치합니다. 모든 커맨드는 가상환경이 활성화된 상태에서 진행됩니다. (본문 : darknet) # 명령 conda activate [환경이름] # (예시) conda activate darknet 1. PyTorch 설치 일반적인 환경이라면 아나콘다를 통해 간단하게 PyTorch 및 관련 패키지 설치가 가능합니다. 그러나 aarch64 환경에서 이에 맞는 저장소를 찾을 수 없기 때문에 pip를 통해 설치합니다. 주의사항은 원하는 가상환경이 activate 된 상태에서 진행하여야 합니다. # 설치 (가상환경 베이스) pip install torch 2. YOLOv5 설치 먼저 Git을 통해 YOLOv5를 다운로드합니다. # (Op..
· A.I
[개발환경] - Hardware : Nvidia Jetson Xavier NX (aarch64) - OS : Jetpack 4.6 rev. 3 (based on Ubuntu 18.04) YOLO 테스트를 위하여 Xavier NX 보드에서 Anaconda(아나콘다)를 사용하기 위한 방법을 정리한 글입니다. 아나콘다는 일반 AMD64 계열은 linux 버전도 지원하지만 라즈베리파이와 같은 aarch64 계열에 대한 지원이 보이지 않아 별도로 다운받아 설치하였습니다. 1. 아나콘다 설치 Jetson Anaconda로 검색해보면 Anaconda를 aarch64 버전으로 빌드한 것들이 많았는데, Mini-forge가 최근 업데이트가 활발한 것으로 보였고, 이를 선택했습니다. https://github.com/co..
· Application
크롬에서 간혹 exe를 다운로드할 때 보안 문제로 삭제되는 경우가 있습니다. 아래 GitHub에 프로그램 소스 코드가 배포되어 있습니다. 다운로드가 불안하신 분들은 해당 소스 코드로 빌드 후 사용하여도 무관합니다. 제가 올리고 제가 다운 받아도 차단됩니다.. 삭제 또는 차단 주변 조그만 화살표를 눌러 계속을 선택하시면 다운로드가 가능합니다. 다운로드(exe) : FilterKeySetting.exe 다운로드(zip) : FilterKeySetting.zip 사용 방법 : README.md 소스 코드 : https://github.com/lasiyan/Filter-Key-Setting GitHub - lasiyan/Filter-Key-Setting: 윈도우 환경에서 필터키 설정 윈도우 환경에서 필터키 설정..
· Language/C++
MFC 기본 함수 중 DeleteDirectory(..) 함수는 폴더 내 파일 또는 하위 디렉토리가 존재할 경우, 해당 폴더까지 전부 삭제 후 동작된다. 따라서 야매로 만든 간단한 방법. cmd 명령어를 사용하는 코드이다. void CClientControl::DeleteDirectory_Shell() { CString strCmd; CString strTarget; // strTarget.Format(삭제할 폴더 경로 + 이름); // strTarget.Format(_T("E:\\Working\\test_folder")); 예시 strCmd.Format(_T("/c echo Y | cmd /c rd /s %s"), strTarget); ::ShellExecute(NULL, "open", "cmd", (..
· 일상
++ 22.04.08 동작 확인 ++ 22.10.18 동작 확인 ++ 23.06.12 동작 확인 참고한 글 - https://www.clien.net/service/board/lecture/16576594 (클리앙 - 하늘목장님) 폴드3/플립3 톰브라운 펌웨어 올리기 & 자급제(KOO)변경하기 : 클리앙 *톰브라운 펌웨어 올리기 = 준비 → 톰브라운펌웨어 올리기 *자급제(KOO)변경하기 = 준비 → 톰브라운펌웨어 올리기 → (설정-일반 들어가서)""초기화"" → 자급제 최신펌 올리기 (→ 초기화) 입니 www.clien.net 2021년, 11월 12일.. 우연히 노트10 플러스 5G 모델을 중고로 얻을 수 있었다.... 예전부터 알뜰 요금제만 사용하고, 해외 출장 간 휴대폰을 직구해서 사용했던 사람이라..
· System
Nvidia Xavier NX 보드에서 C++ 소스의 컴파일 및 실행을 위한 일련의 과정이다. - 설치 환경 [윈도우] Visual Studio Code [리눅스] Nvidia Xavier NX Board (Ubuntu 18.04 version) - 사용 언어 C, C++ with nvcc compiler 1. 리눅스에 접속 1. 먼저 윈도우 환경에서 개발을 위하여 VS Code를 설치하고, SSH Remote Control을 통해 원격으로 리눅스에 접속한다. 2. VS Code의 좌측 아이콘 중 "원격 탐색기"를 선택 후 SSH로 리눅스에 접속한다. 만약 원격 탐색기 아이콘이 보이지 않을 경우, VS Code를 재시작 한다. 추가로 SSH 접속 시 기본적으로 config 파일이 자동 생성 되는데, 해당..
· System
Visual Studio 2017 버전부터 Linux 디버깅을 지원했다고 한다. 이를 기반으로, 2019에서 Hello World를 코딩하고, NVIDIA Jetson Xavier NX 보드에서 실행해본다. 1. 먼저 프로젝트를 생성한다. 아래와 같이 C++, Linux 선택 후 콘솔 애플리케이션으로 생성 시 빌드 간 필요한 프로젝트 설정이 기본적으로 지원된다. 2. Ubuntu 환경에서 Jetson 보드 IP를 확인한다. 3. Visual Studio 2019에서 원하는 코드를 작성한다 (예시) #include int main() { printf("%s에 오신 것을 환영합니다!\n", "SampleLinux"); return 0; } 4. 코드를 실행하면 아래와 같은 창이 뜨고, 원격 정보를 입력한다...
lasiyan
LA Dev.