전체 글
-
🧰 C++11 std::atomic 표준 라이브러리프로그래밍/C/C++ 2023. 6. 1. 09:13
std::atomic은 멀티스레딩 환경에서 안전하게 변수를 접근할 수 있도록 하는 C++의 표준 라이브러리 클래스입니다. 이 클래스는 다양한 변수 타입(int, float, bool 등)에 대한 원자적인 조작(atomic operation)을 제공합니다. 💡 std::atomic의 특징 std::atomic은 다음과 같은 특징을 가지고 있습니다. 멀티스레딩 환경에서 안전하게 변수를 접근할 수 있습니다. 이 클래스를 사용하면 변수에 대한 동기화를 수동으로 처리할 필요가 없으므로, 코드를 간단하게 유지할 수 있습니다. std::atomic은 원자적인 조작(atomic operation)을 제공합니다. 원자적인 조작은 하나의 스레드에서 실행 중인 코드가 중단되지 않고, 전체적으로 원자적으로 실행되는 코드 블록..
-
DLL 라이브러리에서 (DLL Export Function) 함수 이름 숨기기프로그래밍/해킹/보안 2023. 4. 5. 21:37
C/C++ 기반으로 DLL을 만들어서 공유 라이브러리로 사용하면 어쩔 수 없이 C 함수를 노출시키는 경우가 흔하다. 하지만 이거는 보안상 아주 위험한 짓이다. 왜냐? 일반적인 DLL 같은 경우는 `Export Table` 정보가 그대로 저장이 되기 때문이다. 솔루션 회사에서 만약 본인들의 DLL 모듈의 Export 함수가 존재할 때, 이 함수의 정보를 외부로 노출 시킨다고 생각해보자. 악의적인 목적으로 누군가가 DLL Export Table 정보를 쭉 확인하고 함수 이름으로 이 DLL의 기능을 추측할 수 있다는거다. 이때 그러면 DLL Export Function 이름을 대충 만들면되는거 아니야? 라고 한다면 할 말이 없다. SecretFunction_1, SecretFunction_2, SecretFu..
-
러스트에서 단순 입출력 구현해보기프로그래밍/Rust 2023. 4. 3. 23:57
use std::io; fn main() { println!("Guess the number !"); println!("Please input your guess."); let mut guess = String::new(); io::stdin().read_line(&mut guess); println!("You guessed : {}", guess); } 코드는 일단 위와 같습니다. 코드를 한줄한줄 해석해보자면, use std::io ; use 를 사용하여 명시적으로 해당 타입을 가져옵니다. std::io 는 사용자 입출력과 관련된 기능들을 제공합니다. let mut guess = String::new(); let foo = bar foo 라는 변수를 선언합니다. foo 라는 변수를 bar 라는 변수와 ..
-
러스트(Rust) 프로젝트 만들기프로그래밍/Rust 2023. 4. 3. 23:39
러스트 프로그래밍 시작을 위한 디렉토리를 생성합니다. 아래 명령어를 순서대로 적어 러스트 프로젝트 경로를 만들고, 해당 경로로 이동합니다. 저 같은 경우 위에 Cmd 를 통해 경로를 만들고, VSCode를 통해 작업했습니다. 1. 소스코드 작성 main.rs (Rust Source Code)를 만들고 아래 코드를 입력합니다. fn main() { println!("Hello, world!"); } 2. 빌드(컴파일) 및 실행 rustc main.rs ./main 3. 실행 결과 확인 자 이제 위에 작성된 전체적인 코드를 분석해보겠습니다. (딱히 분석해볼만한 것도 없지만) println!("Hello, world!"); 위 짧은 코드 한줄이 이 프로그램의 모든 일을 합니다. " " 사이에 존재하는 내용을 ..
-
Windows Rust 프로그래밍 언어 설치하기프로그래밍/Rust 2023. 4. 3. 23:11
러스트 설치는 간단합니다. https://www.rust-lang.org/learn/get-started Getting started A language empowering everyone to build reliable and efficient software. www.rust-lang.org 위 페이지에 접속을 해서 본인 OS에 맞는 러스트(Rust)를 설치합니다. 저 같은 경우는 Windows 64Bit 러스트를 설치했습니다. 이렇게 설치 과정이 진행됩니다. 설치는 일반적으로 어려움이 없어요. 그대로 엔터만 눌러주시면 됩니다 ㅎㅎ ! 이후 cmd 창을 열어 아래 명령어를 작성해서 Rust 설치가 정상적으로 되었는지 확인합니다. cargo --version 이렇게 나오면 정상적으로 설치가 완료된겁니다.
-
CORS / Preflight 란 무엇인가?개발 TIP/기타 2023. 3. 12. 22:02
CORS에 대한 이해 🌐 CORS (Cross-Origin Resource Sharing)란 웹 브라우저가 사용하는 보안 방식 중 하나로, 다른 도메인에서 자원을 공유할 수 있도록 허용하는 규약입니다. 이전에는 동일 출처 정책(Same Origin Policy)이 적용되어 한 도메인에서 로드한 문서나 스크립트에서 다른 도메인의 자원을 요청할 경우, 보안상의 이유로 브라우저에서 차단되었습니다. 하지만, CORS는 서로 다른 도메인 간의 자원 공유를 허용하여 이러한 문제를 해결할 수 있게 됐습니다. CORS의 구체적인 동작 방식은 HTTP 헤더를 통해 이루어집니다. 웹 애플리케이션에서 다른 도메인의 자원을 요청할 때, 브라우저는 먼저 해당 도메인의 서버에 preflight 요청을 보냅니다. 서버는 이 요청에..
-
GitHub Action을 이용한 Vue.js CI/CD 구축개발 TIP/GIT 2023. 3. 2. 21:56
GitHub Action을 이용한 Vue.js CI/CD 구축 Vue.js 개발을 하다보면, 지속적인 통합 및 배포(CI/CD)가 필요합니다. 이를 구축하기 위해서는 다양한 도구들이 있지만, 이번에는 GitHub Action을 이용하여 Vue.js CI/CD를 구축하는 방법을 알아보겠습니다. 1. GitHub Action이란? GitHub Action은 GitHub에서 제공하는 지속적인 통합, 배포를 위한 자동화 도구입니다. CI/CD를 위한 다양한 기능들을 제공하며, 또한 다양한 언어와 프레임워크를 지원합니다. 2. Vue.js CI/CD 구축하기 2.1. workflow 파일 생성하기 Vue.js 프로젝트 루트 디렉토리에 .github/workflows 폴더를 생성하고, 그 안에 ci-cd.yml 파..
-
GitHub Action Workflow 전략개발 TIP/GIT 2023. 3. 2. 21:51
😎 GitHub Action Workflow 전략 GitHub Action은 GitHub에서 제공하는 CI/CD 도구입니다. 이를 활용하여 빌드, 테스트, 배포 등의 자동화된 작업을 수행할 수 있습니다. Workflow 정의 Workflow는 GitHub Action에서 수행하는 작업의 모음입니다. 이 작업들은 하나의 YAML 파일로 정의됩니다. 각 작업은 job으로 정의되며, 여러 개의 job을 하나의 workflow로 연결할 수 있습니다. Workflow는 특정 이벤트(예: push, pull request 등)가 발생할 때 실행됩니다. Workflow 구성 Workflow를 구성하는 주요 구성 요소는 다음과 같습니다. Name Workflow의 이름을 정의합니다. 이름은 유일해야 합니다. On Wo..