전체 글 160

Docker에 대해

Docker에 중요한 기능 중 하나: 서버에 사용자들이 몰려서 터지는 것을 방지해줌.(Scalable함) 작동 방식: 서비스 코드를 Docker로 이미지를 하나 만듦. 설치하는 순간 스냅샷같은걸 뜨고, 사용자가 몰리면 복제(컨테이너)를 하여 동시에 돌아가게 만들어서 서버가 터지지 않게 함. 도커 이미지 모아놓은 주소: https://hub.docker.com/설치 주소(Ubuntu): https://docs.docker.com/engine/install/ubuntu/ 도커 옵션-ddetached mode (background mode): 백그라운드 모드run docker as background. you have to stop it if not using-p호스트와 컨테이너의 포트를 연결 (포워딩)H..

CS 2025.09.15

CPP에서의 쓰레드, 뮤텍스, 레이스 컨디션 등(Thread, Mutex, race-condition) 기본 개념 잡기

1. 스레드 (Thread)정의: 운영체제가 하나의 프로세스 안에서 동시에 실행할 수 있는 실행 단위.C++에서: std::thread 클래스로 스레드 생성.문제점: 스레드끼리 메모리를 공유하기 때문에 “경쟁 상태(Race Condition)”가 발생할 수 있음.#include #include void worker(int id) { std::cout 2. 경쟁 상태 (Race Condition)여러 스레드가 동시에 공유 데이터를 읽고/쓰는 과정에서 순서에 따라 결과가 달라지는 문제.예시: counter++ 는 사실상 read → add → write 세 단계 → 동시에 두 스레드가 실행하면 하나의 연산이 덮어써짐.해결책 = 동기화(Synchronization) 필요.#include #include ..

CS 2025.09.15

C++ enum에 대해 정의되지 않은 값을 저장하려 할 때

enum Color{ RED = 0, GREEN = 1, BLUE = 2};이때 static_cast(3)처럼 열거형에 정의되지 않은 값을 캐스팅하면 컴파일 에러는 발생하지 않는다고 합니다.C나 C++에서는 enum은 내부적으로 정수형으로 처리되기 때문에, static_cast를 통해 어떤 정수든 enum타입으로 변환할 수 있다고합니다.Color c = static_cast(3);이러면 c에는 3이라는 값이 들어감즉enum Permission { READ = 1 (READ | WRITE); //0011}이렇게 사용하는게 가능함.

CS 2025.08.20

RAG란 무엇인가?

0. TMI회사에서 자사 제품 개발 중 거진 모든 회사들이 자사만의 RAG구축을 하는 것이 유행이라고, 우리도 구축한번 해보자! 해서 제가 담당하게 됐습니다. 관련된 프로젝트 일부분을 간략하게 말씀드리면, CWE나 CERT, MISRA 혹은 과거 구축되어 있던 자사만의 판례를 RAG로 구축하여 코드 결함을 정확하게, 구축된 데이터를 통하여 좀 더 명확하고 최신화된 결함 수정 예시를 llm을 통해 제시하는 기능 구현이었습니다. 개발과정에서 RAG에 명확한 한계점과, 현재(2025/06/30) 기준 RAG는 어떤 녀석인지 면밀히 알게 되었습니다.... 이 글을 보시는 여러분은 그러한 문제를 겪지 않기를 바라면서 이 글을 시작합니다.1. RAG란 RAG (Retrieval-Augmented Generation..

인공지능/RAG 2025.06.30

기본 LLM 체인

프롬프트(Prompt): 사용자 또는 시스템에서 제공하는 입력으로, LLM에게 특정 작업을 수행하도록 요청하는 지시문. 프롬프트는 질문, 명령, 문장 시작 부분 등 적합한 형태로 줄 수 있고, 이것을 바탕으로 LLM의 응답을 유도.- 프롬프트 생성: 사용자의 요구 사항이나 특정 작업을 정의하는 프롬프트를 생성. 이 프롬프트는 LLM에게 전달되기 전에, 작업의 목적과 맥락을 명확히해야함.- LLM 처리: LLM은 제공된 프롬프트로 학습된 지식을 통해 적절한 응답을 생성. LLM은 이때 내부적으로 다양한 언어 패턴과 내외부 지식을 활용하여, 요청 작업 수행 혹은 정보 제공실습 예제- OpenAI의 ChatOpenAI 함수를 사용하면 GPT-3.5, GPT-4 모델을 API로 접속가능. GPT 모델이 자연어 ..

LangChain 정의 및 현황

1. LangChain: 대규모 언어 모델을 활용한 프레임워크 다양한 언어 모델(LLM), 도구, API, 데이터 소스를 연결하고복잡한 LLM 기반 워크플로우(RAG, 에이전트, 체이닝)를 쉽게 구현할 수 있도록 만든 Python/JS 라이브러리 2. 2025년 기준 LangChain 주요 현황항목내용핵심 기능LLM 체인, 메모리, 도구 호출, 에이전트, RAG 구성, LLM + DB 연동 등지원 모델OpenAI, Anthropic, HuggingFace, Ollama, Together, Gemini, Cohere 등 대부분지원 DB/벡터 저장소Chroma, Weaviate, Pinecone, FAISS, Qdrant 등RAG 전용 모듈langchain.chains.RetrievalQA, langchai..

CWE, CVE 의미 및 CWE top 25 2024 설명

CWE(Common Weakness Enumeration)→ 전 세계적인 소프트웨어 공통 취약점 목록. MITRE(미국 비영리 단체. 사이버 보안 분야에서는 다양한 표준 제공)에서 관리소프트웨어의 보안 결함을 일관되게 설명하고 공유하기 위한 표준개발자, 보안 전문가, 도구(정적 분석기 등)가 같은 기준으로 취약점을 인식하게 함관리 기관MITRE Corporation형식CWE-번호 (예: CWE-79, CWE-89)용도정적 분석 도구, 보안 감사, 교육 자료, 규정 준수 등에 활용관련 표준CVE, OWASP Top 10, NIST 등과 연계 가능용어설명예시CWE보안 취약점 유형에 대한 표준 분류CWE-89: SQL InjectionCVE실제 발생한 보안 사건 결과에 대한 고유 식별자CVE-2023-XXXX..

CS 2025.05.27

정적 분석 도구 비교 분석(SonarQube, Coverity, PVS-Studio)

정적 분석(Static Analysis)프로그램을 실행하지 않고 코드 자체를 분석하는 방법. 소스코드(혹은 바이너리 코드)를 대상으로 함코드 검사: 코드의 문법, 스타일, 잠재적 버그, 보안 취약점 등을 찾기 위해 사용자동화: 지속적 통합(CI) 시스템에 통합되어 자동으로 코드 품질을 검사초기 발견과 예: 코드 작성 초기에 버그와 보안 취약점을 발견 -> 개발 비용 절감과 코드 품질 향상. 잠재적 문제를 미리 예방할 수 있어, 실제 소프트웨어 릴리스 전에 심각한 문제를 줄임정적 분석 도구(2025-05-02 기준. 특이점 및 오류 발견 시 댓글요망) SonarQubeCoverityPVS-Studio지원 언어Java, C#, JavaScript, Python 등 30여 개 https://www.sonar..

CS 2025.05.02