분류 전체보기223 [오픈소스] 젠킨스 기반 PR 파이프라인 구축 보호되어 있는 글 입니다. 2025. 11. 26. [AWS] 인스턴스 용량 줄이는 법 이번에 인스턴스 ssh 접속 오류가 나서 계속해서 헤매다가 오류가 났던 원인을 알게되었습니다. 인스턴스 용량이 다 차서 발생했던 것이었습니다.. 즉, 키페어 문제가 아니라, 디스크 용량 100% 사용으로 인해 sshd 프로세스가 로그를 못 쓰는 것이었습니다. apt 캐시 및 불필요 패키지 제거 sudo apt-get clean sudo apt-get autoremove -y sudo rm -rf /var/lib/apt/lists/ Docker 쓰고 있다면sudo docker system prune -a --volumes snap 완전히 제거(원치 않으면 생략)sudo apt purge snapd -y 로그 파일 정리 sudo journalctl --vacuum-time=2dsudo rm -rf .. 2025. 11. 6. [Docker] 도커 명령어 정리 Docker 명령어 활용Docker 이미지 명령어 구성Docker는 Dockerfile을 이용해 이미지를 build하고, 로컬 서버에 save하거나 load할 수 있습니다. Docker Hub Registry에 docker login 후 이미지를 push하거나 pull하여 공유할 수 있으며, search를 통해 이미지를 찾을 수 있습니다. 이미지는 container로 실행될 수 있습니다. 이미지 검색하기docker search 명령어를 사용하여 Docker Hub에서 이미지를 검색할 수 있습니다.명령어: docker search 이미지명[:TAG]예시: docker search ubuntu공식 이미지: ubuntu, centos, redis 등 OS나 프로그램 이름과 같은 이미지는 공식 이미지로 간주.. 2025. 11. 4. [GCP] Google Kubernetes Engine 사용 Google Kubernetes Engine(GKE) 은 GCP에서 제공하는 완전관리형 Kubernetes 클러스터 서비스이다.오늘은 이 구글 쿠버네티스 엔진을 사용하는 법을 기록해보고자 한다. 1. 클러스터 생성 마켓 플레이스에서 쿠버네티스 엔진 API 사용을 클릭해준다. GCP 콘솔 → Kubernetes Engine → 클러스터를 클릭한 다음 만들기를 선택해준다. 클러스터 유형 선택:Standard: 직접 노드 풀 구성 가능Autopilot: 노드 관리 완전 자동화 (개발/테스트용에 적합) Standard로 일단 설정해주었다. Region, Node Pool 크기, 머신 타입 설정네트워크 / 보안 / IAM 설정Create 클릭 → 몇 분 내 클러스터 생성 .. 2025. 11. 4. [컴파일러] BNF 정리 BNF (Backus–Naur Form)란 BNF는 프로그래밍 언어의 문법(Grammar) 을 형식적으로 표현하기 위한 표기법(Notation)을 말한다. 컴파일러의 구문 분석(Parsing) 의 근간이 된다. 프로그래밍 언어의 문법 구조를 분명하고 간결하게 표현할 때 주로 사용된다. 1950년대 후반에 존 배커스(John Backus)와 피터 나우어(Peter Naur)가 개발한 방법이라 'Backus-Naur Form'이라 부르게 되었다. BNF 표현 방법 ::= 표현식 BNF 예시 ::= + | - | ::= * | / | ::= ( ) | ::= 0 | 1 | 2 | 3.. 2025. 10. 23. [컴파일러] 촘스키 언어 계층 정리 - 문법 정리 Chomsky Grammar Hierarchy 문법을 표현 능력(Grammar Power)과 제약(Restrictions)에 따라 네 가지 계층으로 나눈 구조로, 안쪽에서 바깥쪽으로 갈수록 제약이 줄고, 표현 능력이 강해진다. 1. Type-3 Grammar (Regular Grammar, 정규 문법)가장 단순한 문법정규 표현식(Regular Expression)으로 표현 가능유한 오토마타(FA, Finite Automaton)로 인식 가능예: 이메일 형식, 전화번호 패턴 2. Type-2 Grammar (Context-Free Grammar, 문맥 자유 문법)정규 문법보다 강력푸시다운 오토마타(PDA)로 인식 가능프로그래밍 언어 문법 대부분이 여기에 속함 (if-else, 중첩 구조 등)예:.. 2025. 10. 23. [컴파일러] 컴파일러의 구조 (Front-End와 Back-End 구성과 역할) 컴파일러의 구조 컴파일러는 Front-end (전단부) 와 Back-end (후단부) 로 나뉜다.Front-end → 소스코드의 의미를 분석하고, 중간 표현(IR)을 생성하는 부분Back-end → IR을 최적화하고, 실제 기계어 코드로 변환하는 부분 컴파일러의 컴포넌트 컴파일러의 컴포넌트는 다음과 같이 나눠진다 1. Lexical Analyzer (어휘 분석기)문자 스트림(character stream)을 읽고, 토큰(token)으로 나눔 → a = b + c; → , , , , Token stream2. Syntax Analyzer (구문 분석기)토큰을 문법에 맞게 트리 구조로 분석 → 구문 트리(syntax tree) 생성. 즉, 프로그램의 구조(문법적 계층)를 파악함.Syntax.. 2025. 10. 23. [컴파일러] NFA -> DFA 변환 Deterministic Finite Automata (DFA)어떤 상황에서도 이동(transition)을 선택할 여지가 없다.→ 즉, 현재 상태와 입력 기호가 주어지면 다음 상태가 단 하나로 결정된다.→ “결정적(Deterministic)”이라는 말은 바로 이 뜻이다. Non-deterministic Finite Automata (NFA)적어도 한 경우에서 다음 상태로 가는 선택지가 여러 개일 수 있다.→ 즉, 같은 상태에서 같은 입력 기호로 여러 개의 전이(transition) 가 가능하거나,→ ε(엡실론) 전이처럼 입력 없이 이동하는 경우가 있을 수 있다.입력 문자열을 받아들인다는 것(accept) 은→ 여러 가능한 경로 중 하나라도 최종 상태(final state)에 도달할 수 있다면 Accept.. 2025. 10. 23. [컴파일러] 컴파일러란? 컴파일러란? 컴파일러란 무엇일까? 컴파일러는 개발자라면 무조건 들어봤을 용어이다. 컴파일러를 단순히 실행 코드를 만들어주는 프로그램이라고 이때까지 생각했었다. 하지만 컴파일러를 더욱 정확하게 말한다면 다음과 같이 설명할 수 있다. 컴파일러(Compiler)란 개발자가 작성한 고급 언어(C, Java, Python 등) 로 된 프로그램을 컴퓨터가 이해할 수 있는 저급 언어(기계어 또는 어셈블리어) 로 번역(translate) 해주는 프로그램이다. 개발자가 작성한 코드는 그대로는 컴퓨터가 이해하지 못한다. 그래서 컴파일러가 이 코드를 읽고, 구문 분석(syntax analysis) 과 의미 분석(semantic analysis) 등을 거쳐 기계어 코드로 변환한다. 이때 컴파일러는 단순히 코드를 변환.. 2025. 10. 22. 이전 1 2 3 4 ··· 25 다음