전체 글219 [컴파일러] 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. 계획 정리 보호되어 있는 글 입니다. 2025. 10. 21. [Ubuntu] 윈도우 powershell 에서 리눅스 설치 (wsl) 1. WSL(Windows Subsystem for Linux) 설치PowerShell을 관리자 권한으로 실행하고 아래 명령어를 입력 wsl.exe --install 2. 특정 리눅스 배포판 지정 (원할 경우) Ubuntu 외의 배포판(Debian, Kali 등)을 설치하고 싶다면 wsl --install -d 3. 설치 완료 후 초기 설정설치가 끝나면 터미널이 자동으로 열리며, 리눅스 사용자 이름과 비밀번호를 설정하라는 메시지가 뜹니다.이 과정을 마치면 wsl 명령어로 언제든 접속할 수 있습니다. wsl 2025. 10. 19. [정보보호] 코드 보안 정리 시스템 구성과 프로그램 동작 프로그램과 코드 보안보안 취약점은 하드웨어, 어셈블리어, 소스코드 중 소스코드에서 가장 쉽게 발생합니다.주된 원인은 데이터의 형태와 길이에 대한 불명확한 정의입니다.예시: 장보기 심부름에서 물품 종류와 가격을 불명확하게 알려주어 문제가 발생하는 상황. 시스템 메모리의 구조프로그램 동작 시 메모리에 가상 공간이 생성되며, 이 공간은 스택(Stack) 영역, 힙(Heap) 영역, 데이터 섹션, 코드 섹션 등으로 구성됩니다.로더가 프로그램을 메모리로 올립니다. Stack 영역과 Heap 영역 특징 Stack 영역 Heap 영역 용도프로그램 로직 인자, 프로세스 상태 저장런타임에 필요한 데이터 임시 저장사용 방식복귀 주소 저장, 서브루틴 인자 전달동적 메모리 할당 (ex: m.. 2025. 10. 18. [정보보호] 웹 보안 정리 웹 해킹웹 취약점 스캐너를 통한 정보 수집빠른 시간 내에 다양한 접속 시도를 수행할 수 있다는 장점.스캐너로 확인된 취약점이 실제 보안 문제가 아닌 경우가 많음 프록시 (Web Proxy)를 통한 취약점 분석웹의 구조 파악, 취약점 점검, 웹 해킹 시 웹 프록시 툴 사용.클라이언트에 설치되어 클라이언트의 통제를 받음.클라이언트가 웹 서버와 웹 브라우저 간에 전달되는 모든 HTTP 패킷을 웹 프록시를 통해 확인하고 수정 가능.대표적인 웹 프록시 툴: Burp Suite (http://portswigger.net/burp 에서 무료 버전 다운로드 가능). 서버에서 클라이언트로 전송되는 패킷 변조서버가 클라이언트로 전송하는 패킷의 변수 값을 조작하여 악용 가능.예시: 서버에서 전송한 $A = 20$ 값을 클.. 2025. 10. 18. [정보보호] 스푸핑 공격 스푸핑 공격 (Spoofing) 스니핑 공격이란?네트워크 상의 데이터를 도청,가로채는 공격 ⭐ 스푸핑 공격이란? 네트워크에서 신원을 위조하는 공격을 말한다. 스푸핑 공격은 여러 종류가 있다. ARP 스푸핑, IP 스푸핑, DNS 스푸핑이 있다. ARP 스푸핑 공격 MAC 주소를 속이는 공격으로, 로컬 네트워크에서 통신하는 서버와 클라이언트의 IP 주소에 대한 MAC 주소를 공격자의 MAC 주소로 속여 통신 흐름을 왜곡시킨다. ARP 스푸핑 과정:공격자가 Server의 Client에 $10.0.0.2$에 해당하는 가짜 MAC 주소 CC를 알리고, Server에는 $10.0.0.3$에 해당하는 가짜 MAC 주소 CC를 알림.공격자가 Server와 Client 컴퓨터에서 서로 통신하는 상대방을 자기.. 2025. 10. 18. [정보보호] 서비스 거부 공격: DoS와 DDoS 서비스 거부 공격 (Denial of Service, DoS) 다른 해킹에 비해 비교적 간단한 훼방 공격으로, 특정 서비스나 시스템의 정상적인 작동을 방해하여 사용자가 서비스를 이용할 수 없게 만든다. 취약점 공격형: 특정 형태의 오류가 있는 네트워크 패킷 처리 로직의 문제점을 이용하여 오작동 유발.보잉크(Boink), 봉크(Bonk), 티어드롭(Tear Drop)랜드(Land) 공격자원 고갈 공격형: 네트워크 대역폭, 시스템의 CPU, 세션 등의 자원을 소모시켜 시스템 마비.랜드(LAND) 공격죽음의 핑(Ping of Death)SYN 플러딩 공격HTTP GET 플러딩 공격, HTTP CC 공격동적 HTTP 리퀘스트 플러딩 공격슬로 HTTP 헤더 DoS (슬로로리스) 공격, 슬로 HTTP POS.. 2025. 10. 18. [기계학습] Multilayer Perceptron : MLP Multilayer Perceptron 퍼셉트론은 선형 분류기라는 점에서 한계가 있었다. XOR 문제에서 선형 분리 불가능한 상황에서는 일정한 양의 오류가 발생했다. 이러한 퍼셉트론의 단점을 보완하기 위해 MLP가 나오게 되었다. ⭐ MLP의 핵심 아이디어 1. 은닉층 추가 (Hidden Layer)입력층(Input Layer)과 출력층(Output Layer) 사이에 하나 이상의 은닉층을 둠.단층 퍼셉트론은 선형 분리 문제만 해결할 수 있지만,은닉층이 생기면 비선형 관계를 학습할 수 있음.즉, 입력 특징 공간을 더 분류하기 쉬운 고차원 공간으로 변환하는 역할을 함 2. 시그모이드 활성함수 도입 (Sigmoid Activation)출력이 0~1 사이의 연속적인 실수값을 갖게 됨.이를 확률적 해석.. 2025. 10. 17. [기계학습] Perceptron Perceptron의 구조 입력층과 출력층을 가진다 이때 입력층은 연산을 하지 않으므로 퍼셉트론은 단일층 구조라고 간주한다. 입력층의 i 번째 노드는 특징 벡터의 요소 xi를 담당한다. 이때 항상 입력값으로 1을 받는 것은 바이어스 노드이다. (바이어스 노드를 따로 계산할 때 더하는 것이 아닌 처음부터 입력으로 포함키는 것이다.) i 번째 입력층 노드와 출력층을 연결하는 선은 가중치 wi를 가진다. 이때 w0는 바이어스이다. Perceptron의 동작 해당하는 특징값과 가중치를 곱한 결과를 모두 더하여 s 를 구하고 활성함수 T를 적용한다. 이때 활성함수로 계단함수를 사용하므로 최종 출력 y 는 +1 또는 -1 이다. ⭐퍼셉트론으로 OR 논리 게이트 분류 문제 해결이 가능.. 2025. 10. 17. [기계학습] 선형대수학 - 행렬 Matrix — 선형대수학과 기계학습의 핵심 행렬(Matrix)의 개념 여러 벡터를 모은 2차원 숫자 배열을 말한다. 훈련집합의 특징들을 행 또는 열로 표현한 것도 행렬이라고 할 수 있다. 행렬은 다항식을 간결하게 표현할 수 있고 벡터화를 통한 고속 연산 구현이 가능하다. 예를 들어, Iris 데이터셋에서 150개의 샘플과 4개의 특징(feature)을 가진다면전체 데이터는 X∈R ^150×4 로 표현된다. 행렬 A의 전치행렬 행과 열을 바꾼 행렬을 전치 행렬이라고 한다. 특수한 행렬들 정사각행렬: 행과 열의 수가 같은 행렬 대각행렬: 주 대각선을 제외한 모든 항들이 0 단위행렬: 대각행렬이면서, 대각선의 항들이 모두 1 대칭행렬: n x n 행렬이 A = A^T이다. .. 2025. 10. 16. [기계학습] 선형대수학 정리 - 벡터 기계학습에서 나오는 선형대수학을 정리한 글입니다. 벡터의 개념과 표현 벡터는 크기와 방향을 가진 양으로, 수학적으로는 n차원 공간의 한 점을 나타내는 n개의 수의 집합을 말한다. 물리학에서 벡터는 크기와 방향을 가진 값을 의미하며 화살표로 표현한다. 이때 화살표의 길이는 벡터의 크기를 나타내고 화살표의 방향은 벡터의 방향을 나타낸다. 벡터는 값들의 모임(tuple)이며, 각 성분(component)에는 순서(order)가 존재한다. 일반적으로 굵은 소문자(bold lowercase)로 표기한다. 스칼라(scalar): 크기만 있는 수 (예: 온도 25℃, 질량 10kg)벡터(vector): 크기와 방향이 있는 수 (예: 속도, 힘, 변위 등) 벡터의 종류 열벡터: 원소의 배열이 .. 2025. 10. 16. [정보보호] 스니핑 공격 스니핑 공격이란? 스니핑(Sniffing) 공격은 네트워크 상을 지나다니는 데이터 패킷을 몰래 엿보며 정보를 가로채는 해킹 기법을 말한다. 공격할 때 아무것도 하지 않고 조용히 있는 것만으로도 충분하기 때문에 수동적 공격이라고도 한다. 즉, 송신자와 수신자 사이 네트워크에서 패킷 정보를 도청하는 행위. 네트워크 트래픽 분석에 사용할 수도 있고, 악의적 목적으로 해커(hacker)가 네트워크 패킷을 엿보면서 데이터를 도청하는 해킹 유형을 말하기도 한다. 스니핑 공격 예시 1. 전화선이나 UTP에 태핑을 해서 전기적 신호를 분석하여 정보를 찾아내는 것2. 전기적 신호를 템페스트 장비로 분석하는 것 태핑? 더보기네트워크나 통신 회선(케이블, 광선, 무선 신호 등)에 몰래 접속하여 데이터 신호를 엿듣는 .. 2025. 10. 10. [정보보호] WPA-EAP vs WPA-PSK WPA란? 무선 네트워크(와이파이)에서 데이터를 암호화하고 사용자 인증을 수행하는 보안 표준을 말한다. 와이파이 보호 접속(Wi-Fi Protected Access, WPA, WPA2)는 와이파이 얼라이언스의 감시 하에 수행하는 인증 프로그램으로, 와이파이 얼라이언스가 책정한 보안 프로토콜 네트워크 장비가 준수하고 있음을 나타내는 보안 프로토콜이다. 와이파이 보호 접속 - 위키백과, 우리 모두의 백과사전위키백과, 우리 모두의 백과사전. 와이파이 보호 접속(Wi-Fi Protected Access, WPA, WPA2)는 와이파이 얼라이언스의 감시 하에 수행하는 인증 프로그램으로, 와이파이 얼라이언스가 책정한 보안 프로토ko.wikipedia.org WPA-Personal (WPA 개인모드) W.. 2025. 10. 8. [소프트웨어 분석 및 설계 ] 키오스크 구현 프로젝트 키오스크 구현 프로젝트본 프로젝트는 소프트웨어 분석 및 설계 교과목에서 진행한 키오스크 시스템 구현 프로젝트입니다. 요구사항 분석부터 설계, 구현까지 해보면서 실제 서비스 환경에서 활용 가능한 키오스크 애플리케이션을 개발하는 것을 목표로 하였습니다. 1. 초기 클래스 다이어그램 초기 클래스 다이어그램에선 Kiosk 시스템의 기본 구조를 정의했습니다. 이 단계에서는 시스템의 핵심 기능과 데이터 모델을 식별하고 클래스 간의 관계를 설정했습니다. 2. 유스케이스 다이어그램 유스케이스 다이어그램에서 고객은 주로 주문 기능과 언어 설정을 이용하며, 관리자는 시스템 환경 설정 및 업데이트를 담당하고 배달원은 재고 확인과 음식 전달 기능을 수행하도록 설계했습니다. 3. 초기 시퀀스 다이어그.. 2025. 10. 2. 티스토리 스킨 편집 소제목 꾸미기에서 제목 내용 없을 때도 적용되는 오류 티스토리 소제목을 꾸미기 위해서 다음 블로그에서 참고를 해서 ccs를 수정해주었다. https://dining-developer.tistory.com/2 티스토리 스킨 편집으로 소제목 깔끔하게 꾸미기티스토리를 시작하면서 따로 유료 스킨이나 다른 개발자분들이 만든 것들을 사용하지 않은 이유는 다음과 같다. 1. 모든 것을 만족하는 것을 찾기가 쉽지 않다. 2. 무채색을 극도로 좋아하는 내dining-developer.tistory.com 근데 이때 제목 2가 내용없이 적용된 경우에도 다음과 같이 적용이 된다. 일일이 다 수정하기엔 귀찮기 때문에 html 코드에서 다음 코드를 적용해주면 된다 script> // 기존 tocbot 관련 코드... //내용이 없는 h3 스타일 제거 doc.. 2025. 10. 1. [트러블슈팅] TMAP 204 NO_CONTENT 오류 트러블 슈팅 TMAP 204 NO_CONTENT 오류 Tmap POI 검색 API 호출 시 특정 키워드(강남 등)를 검색하면 HTTP 204 No Content 가 반환되었다. ttps://apis.openapi.sk.com/tmap/pois?version=1&format=json&searchKeyword=강남.. 이렇게 접속하면 정상적으로 응답이 내려왔다. 우선 TMAP API 를 사용할 때 204에러가 뜨면 다음과 같은 문제가 발생한 것이다. 에러 코드는 티맵 사이트에서 확인 가능하다https://tmapapi.tmapmobility.com/main.html#webservice/guide/webserviceGuide.guide11 Guide | T MAP API tmapapi.tmapm.. 2025. 9. 29. [GCP] SSH로 GCP 접속하는 방법 🔽브라우저에서 접속도 가능합니다. https://cloud.google.com/compute/docs/ssh-in-browser?hl=ko 브라우저에서 SSH를 통해 연결 | Compute Engine Documentation | Google CloudimageFamilyViewscloud.google.com GCP에서 인스턴스를 생성 후 인스턴스에 접속하는 방법으론 두가지가 있습니다. 브라우저에서 직접 접속하는 방식이랑 터미널에서 SSH로 연결하는 방법이 있습니다. 본 포스트에선 SSH로 연결하는 방법을 보여드리고자 합니다. 우선 인스턴스부터 생성해야합니다. 인스턴스 생성은 다음 게시물에 정리해두었습니다. [GCP] VM 인스턴스 생성 및 초기 설정본 포스팅은 GCP(Google C.. 2025. 9. 26. 이전 1 2 3 4 ··· 11 다음