분류 전체보기 93

커널

커널 개요 커널은 운영체제의 핵심 구성 요소(Core Component)로, 하드웨어 자원을 직접 관리하고 사용자 프로그램이 이 자원에 안전하게 접근할 수 있도록 중재하는 역할을 합니다. 커널은 하드웨어와 소프트웨어 사이의 추상화 계층(Abstraction Layer)을 제공하여 하드웨어의 복잡한 동작을 숨기고, 프로그램이 표준화된 인터페이스를 통해 하드웨어 기능을 사용할 수 있게 합니다. 또한 커널의 주요 목적은 자원 공유(Resource Sharing)와 자원 보호(Resource Protection)로, 여러 프로그램이 동시에 시스템 자원을 효율적이고 안전하게 사용할 수 있도록 보장하는 것입니다.커널의 주요 구성 요소프로세스 관리자 (Process Manager)프로세스 생성, 종료, 스케줄링, 상..

일기 00:22:02

운영체제

운영체제란?운영체제(OS, Operating System)는 하드웨어와 소프트웨어 사이에서 중재자 역할을 하는 시스템 소프트웨어입니다. 사용자가 하드웨어를 직접 제어하지 않고도 프로그램을 실행하거나 자원을 관리할 수 있도록 지원합니다.주요 역할하드웨어 자원 관리 (CPU, 메모리, 디스크, 네트워크 등)프로세스 관리 (프로그램 실행, 스케줄링, 동기화 등)파일 시스템 관리 (데이터 저장 및 접근)사용자 인터페이스 제공 (CLI, GUI)보안 및 접근 제어 (인증, 권한 관리)운영체제 종류Windows: GUI 기반, 마이크로소프트Linux: 오픈소스, 유닉스 계열, 서버 및 개발 환경macOS: 애플, 유닉스 기반 GUIUnix: 멀티태스킹, 멀티유저 시스템모바일 OS: Android, iOS운영체제 구..

일기 2025.04.22

HTTP 정리

HTTP 개요1. HTTP란 무엇인가?HTTP(HyperText Transfer Protocol)는 웹 브라우저와 서버 간에 문서(리소스)를 주고받기 위한 비연결성(stateless) 기반의 애플리케이션 계층 프로토콜이다. 클라이언트가 요청(Request)을 보내고, 서버가 응답(Response)을 반환하는 요청-응답 구조로 동작한다.기본 포트: 80 (HTTPS는 443)프로토콜 버전: HTTP/1.0, HTTP/1.1, HTTP/2, HTTP/3 등이 존재2. HTTP의 요청과 응답 구조HTTP 통신은 크게 **요청(Request)**과 **응답(Response)**으로 구성된다. 요청과 응답 메시지는 각각 요청라인/상태라인, 헤더, 본문으로 구성된다.요청 메시지 구조(빈 줄)요청라인: 메서드(GET..

일기 2025.04.22

WebSocket 정리

WebSocket 개요1. 웹 환경에서의 실시간 통신 프로토콜WebSocket은 웹 브라우저와 서버 간의 실시간 양방향 통신을 가능하게 하는 프로토콜이다. 일반적인 HTTP 요청-응답 구조와 달리, WebSocket은 연결을 유지하면서 클라이언트와 서버가 자유롭게 데이터를 주고받을 수 있다.2. HTTP 핸드셰이크로 연결 시작WebSocket 연결은 처음에는 HTTP 프로토콜로 시작된다. 클라이언트는 서버에 Upgrade 헤더가 포함된 HTTP 요청을 보내며 WebSocket으로의 전환을 요청한다. 서버가 이를 수락하면 "101 Switching Protocols" 응답을 보내고, 이후부터는 WebSocket 프로토콜로 전환된다.예시 요청 헤더:GET /socket HTTP/1.1Host: example..

일기 2025.04.22

(javascript) 불량 사용자

코딩테스트 연습 - 불량 사용자 | 프로그래머스 스쿨 프로그래머스SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr 문제는 두 단계로 나눠서 풀었다. 1단계) banned_id의 조건을 만족하는 user_id 찾기 2단계) 찾은 user_id들의 조합 만들기 1단계에서는 javascript의 정규식 표현을 사용했다. 정규식 표현을 이용하면 문자열을 쉽게 다룰 수 있다. banned_id에서 모든 *을 .로 바꾸고 앞뒤로 ^와 $를 붙여 정규식 표현을 생성한다. user_id에서 정규식 표현에 맞는 요소만을 필터링해서 저장한다. 2단계에서는 저장한 user_id들의 조합을 찾는다. 조합은 재귀함수를 사용했다. 재귀..

코딩연습 2025.04.22

(javascript) 자동완성

코딩테스트 연습 - [3차] 자동완성 | 프로그래머스 스쿨 프로그래머스SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr 트라이를 사용하는 문제. 트라이가 뭔지는 설명하기 어렵다. 내가 이해한 개념을 설명하자면, 문자열을 fsm으로 나타낸 것이라고 할 수 있다. 주로 접두사 문제에 쓰인다.트라이 (컴퓨팅) - 위키백과, 우리 모두의 백과사전 트라이 (컴퓨팅) - 위키백과, 우리 모두의 백과사전위키백과, 우리 모두의 백과사전. "A", "to", "tea", "ted", "ten", "i", "in", "inn"를 키로 둔 트라이. 이 예제에는 모든 자식 노드가 알파벳 순으로 왼쪽에서 오른쪽으로 정렬되어 있지는 않다. ..

코딩연습 2025.04.16

탐색 알고리즘

탐색 알고리즘은 말 그대로 어떤 데이터 구조에서 원하는 값이 있는지 찾아내는 알고리즘이다. 선형 탐색 알고리즘가장 간단한 탐색 방법은 선형 탐색이 있다.선형 탐색은 데이터 구조를 처음부터 끝까지 하나씩 살펴보는 것을 말한다.배열이나 리스트같은 선형 데이터 구조에서 사용할 수 있다. 예를 들어 다음과 같은 배열이 있다고 하자.arr = [2, 12, 15, 11, 7, 19, 45] 이 배열에서 7이라는 값을 찾으려고 한다.선형 탐색 알고리즘을 사용하면 배열의 0번 인덱스부터 시작해서 배열의 요소를 하나씩 살펴본다.위 배열을 0번 인덱스부터 살펴보면 2, 12, 15, 11, 7. 다섯번째 요소에서 원하는 값 7을 찾을 수 있다. 이번에는 배열에서 9라는 값을 찾으려고 해보자.9라는 값은 배열에 없기 때문..

일기 2025.04.14

(javascript) 네트워크

https://school.programmers.co.kr/learn/courses/30/lessons/43162 프로그래머스SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr 주어진 입력으로 그래프를 만들고, bfs나 dfs를 사용해 네트워크의 갯수를 찾는 문제. bfs를 이용해 풀었다. 코드function solution(n, computers) { var answer = 0; var nodes = []; for(var i = 0; i 결과 후기bfs를 통해 간단하게 풀 수 있는 문제였다.visited.includes(i)에서 오타가 있었다. 오타 대괄호[]와 소괄호()에 주의하자.

코딩연습 2025.04.14

자동 전투 게임 - 로비 UI 만들기

전부터 만들어보고 싶었던 자동 전투 게임을 만들려고 한다. 기왕 만드는거 클라이언트부터 서버까지 만들어볼까 한다.  사실 이미 서버-클라이언트간 tcp 통신을 하는 기능과 간단한 로그인/회원가입 기능까지 만들었다.  오늘 할 일은 클라이언트 - 로비 UI 제작이다.  기본적인 플로우는 이렇다.회원가입 및 로그인로그인을 하면 로비 UI로 진입한다.로비 UI에서는 빠른 매칭, 커스텀 게임을 이용할 수 있다.그 외에 게임 정보, 플레이어 정보, 순위표, 설정, 상점 등의 주요 기능들에 접근할 수 있다. 내가 해본 게임중에는 프리코네R, 이터널 리턴, 도타, 슈퍼셀과 같은 게임들의 UI가 깔끔하고 좋다고 생각했다.  특히 프리코네R의 UI에 대해 찾아보던 중, 이런 게시글을 발견했다.[CEDEC 2018] "공..

일기 2025.03.17

Stack, Queue

스택 스택은 LIFO(Last In First Out) 원칙을 따르는 선형 데이터 구조이다. 스택이라는 이름 그대로 어떤 데이터가 쌓인 구조를 생각하면 좋다.LIFO(후입선출) LIFO는 Last In First Out의 줄임말로, 데이터의 삽입과 삭제 작업의 순서에 대한 원칙이다. 이는 즉 데이터를 스택에서 제거할 때, 스택에 삽입한 순서의 반대 순서를 따른다는 뜻이다. 스택의 기본 동작 스택을 다룰 때에는 몇가지 기본 동작을 숙지해야한다.push: 스택에 데이터를 삽입하는 동작이다. 스택의 맨 위에 데이터를 삽입한다.pop: 스택에서 데이터를 제거하는 동작이다. 스택의 맨 위의 데이터를 제거한다.peek: 스택에서 데이터를 조회하는 동작이다. 스택의 맨 위의 데이터를 조회한다. 그 외에 isEmpty..

일기 2025.02.26