본문 바로가기

전체 글

(291)
[docker] 도커파일 예시 오랜만에 도커를 사용하려고 하니 사용법이 잘 기억이 나지 않았다. 일종의 snipset으로 사용했던 코드를 올려둔다. docker.compose.yml : aws을 사용할거라면 postgresql은 따로 포함하지 않아도 알아서 처리해준다. version: "3" services: client: image: "blaxsior/multi-client" mem_limit: 128m hostname: client server: image: "blaxsior/multi-server" mem_limit: 128m hostname: api environment: - REDIS_HOST=$REDIS_HOST - REDIS_PORT=$REDIS_PORT - PGUSER=$PGUSER - PGHOST=$PGHOST - P..
서버가 static 파일을 보내는 방법 서버를 이용하여 파일을 전달하다 보니, 갑자기 static 파일이 어떻게 동작하는지에 대해 궁금해졌다. 사용자는 html 파일만 요청하는데, 그렇다면 css, js 파일 등 초기 페이지 이외의 정보는 대체 어떻게 서버로부터 가져가는 것일까? https://www.youtube.com/watch?v=SmE4OwHztCc 정보를 찾아보니, 내가 생각한 부분에는 아주 큰 오개념이 존재했다. 사실 사용자 측에서는 하나의 html 파일만 요청하지 않는다. 정확히 말하자면, 브라우저는 하나의 html 파일만 요청하지 않는다. 맨 처음 사용자가 html 파일을 받게 되면, 브라우저는 해당 내용을 분석하고 DOM 이라는 문서 구조로 파싱한다. 해당 작업을 통해 각각의 노드들은 객체로 간주되며, 사용자는 자바스크립트를 ..
[error] Failed to load module script: Expected a JavaScript module script but the server responded with a MIME type of "text/html" 발생한 에러 생활 코딩 webpack 편을 듣는 도중, html 상에서 모듈을 이용할 때 다음과 같은 에러가 발생했다. 해당 에러가 발생한 환경은 이렇다. html 파일 : Hello, Webpack! express 서버 파일 : import express from 'express'; import {dirname, resolve} from 'path'; import { fileURLToPath } from 'url'; const url = new URL(import.meta.url).href; const __dirname = dirname(fileURLToPath(url)); const app = express(); app.use(express.urlencoded({extended:true})); app..
[알고리즘] 비교 기반 알고리즘 비교 기반(Comparison-based) 알고리즘 selection sort ( 선택 정렬 ) bubble sort ( 버블 정렬 ) insertion sort ( 삽입 정렬 ) shell sort ( 쉘 정렬 ) quick sort ( 퀵 정렬 ) merge sort ( 합병 정렬 ) heap sort ( 힙 정렬 ) Selection Sort 주어진 리스트 내에서 최솟값을 찾은 후, 가장 앞에 있는 값과 교체하면서 정렬하는 알고리즘으로, 각 정렬 단계가 마치 현재 단계에 들어가야 할 값을 리스트 내에서 찾아가는 과정처럼 보인다. 각 단계마다 배열의 좌측에서 배열의 정렬이 일어난다. 코드 def selection_sort(array: list[any]): for i in range(len(array)..
[데이터베이스 04] Relational Data Model Informal Formal Table Relation Column Header Attribute All possible Column values Domain Row Tuple Table Definition Schema ( of Relation ) Populated Table State ( of Relation ) Relation Informal 값들을 모아둔 테이블에 대응되며, row의 집합으로, Set(집합) 이라는 수학적 개념에 기반을 두고 있다. Row 에 포함된 데이터 원소들은 Real-World(혹은 Mini-World) 의 Entity 또는 Relationship에 대응된다. Column 은 해당 컬럼에 속한 데이터들의 속성을 의미한다. Key of Relation : 각각의 row는 아이템..
[데이터베이스 03] Entity Relationship Model 하나의 프로그램을 설계할 때는 어플리케이션 디자인 및 데이터베이스 디자인이 필요하다. 이때 수행되는 데이터베이스 디자인은 엄밀하게 따지면 분석(analysis) 및 디자인(design) 작업을 포함하지만, 보통 뭉뚱그려 같이 표현한다. 데이터의 출처 Mini World 데이터의 분석 요구사항 수집 및 분석 요구사항 기능적 요구사항(Functional, Application) 데이터 요구사항(Data, Database) 기능 분석(Functional Analysis) 개념적 설계(Conceptual Design) 요구사항 구현 모델 High-Level Transaction Specification Conceptual Schema DBMS independent 논리적 설계(Logical Design) + M..
[운영체제] 운영체제 링커 & 로더 링커 : 여러 오브젝트 파일들을 하나의 실행 가능한 바이너리 파일로 합쳐주는 프로그램으로, 단순 코드뿐만 아니라 해당 코드에 사용된 라이브러리 등도 바이너리 파일에 포함될 수 있다. 로더 : 스토리지에 저장되어 있는 프로그램을 메모리 영역으로 가져오는 프로그램. 로더에 의해 로딩된 프로그램만이 운영체제에 의해 실행될 수 있다. 최근에는 라이브러리들을 링커를 통해 직접 바이너리 파일에 넣기보다는 DLL(Dynamically Linked Libraries)의 형태로 저장한 후, 필요할 때 메모리 상으로 로드 · 공유하는 방식을 이용한다고 한다. 운영체제의 설계(Design) 및 구현(Implementation) 운영체제가 달성하고자 하는 목표는 해당 운영체제가 요구되는 환경, 해당 운영체제를 ..
[운영체제] OS 서비스/프로그램 운영체제 프로그램 또는 사용자가 특정 프로그램이나 서비스를 실행할 수 있도록 환경을 제공하거나 도와주는 시스템으로, 다음과 같은 서비스들을 유저에게 제공하게 된다. Operating System Services User Interface : 유저가 시스템을 사용하는데 도움을 주는 시각적인 인터페이스. CLI(Command Line Interface) : 커맨드 라인 형태의 인터페이스. 커널의 일부로 구현되거나, 시스템 프로그램 형태로 구현된다. 사용자의 커맨드를 읽어 들이고(fetch) 실행한다. 커맨드는 처음부터 지정되어 있을 수도 있지만 ( ls, pwd 등 ), 사용자에 의해 구성된 프로그램일 수도 있다. 사용자 프로그램의 추가는 쉘을 변경하지 않는다. GUI(Graphic User Interfac..