본문 바로가기

전체 글

(291)
[알고리즘] 정렬 00 : 정렬 개요 정렬(Sorting) 주어진 일련의 데이터( 보통 배열 )를 순서대로 재배치하는 것. 물건을 가격별로 세워두기 위해 조사하거나, 유통기한이 임박한 순서대로 제품을 출고해야 하는 등 정보의 순서가 의미 있는 분야라면 어디든지 사용될 수 있다. 알고리즘의 효율성은 데이터 및 데이터가 가진 특성에도 영항을 받지만, 해당 알고리즘을 구동하는 환경( 메모리, CPU 파워, 지원되는 소프트웨어 등 )과 같은 요소에도 영향을 받을 수 있다. 알고리즘 성능 측정 수단 시간 효율(Time Complexity) Big-O, Big-Ω, Big-Θ 의 표현법을 이용. best-case, worst-case, average-case 을 나타낼 수 있음. 공간 효율(Space Complexity) 제자리성(In-place al..
[알고리즘] 알고리즘 이해 알고리즘 특정 문제를 풀거나 계산을 수행하는 데 사용되는 잘 정의된 명령의 유한 절차로, 어떠한 문제에 대한 해결 절차를 체계적으로 나타낸 후, 해당 절차에 따라 어떤 입력을 어떤 출력으로 변환하는 일련의 계산과정을 의미한다. 알고리즘의 대상이 되는 문제는 입력 및 출력의 형태로 요구조건을 나타낼 수 있어야 한다. ex) 도서관의 책을 ISBN에 따라 정렬하세요. 문제 : ISBN에 따른 도서관 책 정렬 입력 : 도서관의 책 & ISBN 출력 : 정렬된 책 리스트 알고리즘이 가져야 할 특성 명확성 : 최대한 이해하기 쉽고 간명하게 서술해야 한다. 명확하게 나타낼 수만 있다면 알고리즘을 나타내는 수단은 상관없음. 효율성 : 동일 문제 해결에 있어 최대한 시·공간적으로 효율적이어야 한다. ex ) for 문..
[데이터베이스 02] 데이터베이스 시스템 Data Model 데이터 모델은 다음 3가지 요소를 기반으로 데이터를 추상적으로 정의한 모델 혹은 개념의 집합으로, 데이터베이스에 대해 정의되는 일종의 ADT(Abstract Data Type) 이라고 볼 수 있다. Structure : 데이터에 대한 추상적인 구조 를 정의한다. ex ) 스택은 선입선출 기반의 구조를 가진다. Entity ( = Record , Table ) : 데이터베이스의 각 엘리먼트 혹은 엘리먼트 그룹을 설명할 때 사용된다. ex ) STUDENT, LECTURE Entity는 개별적 개체를 설명할 때 주로 사용되며 ( 학생 홍길동 ) , 집합( 학생 ) 을 의미할 때는 Entity type 또는 Set table 등의 표현을 이용한다. Relationship : 해당 엔티티 사..
[운영체제] 개요 운영체제(Operating System) 과거 컴퓨터가 천공카드로 동작하던 시절에는 컴퓨터를 전문적으로 관리하며 들어온 일거리(job)을 우선 순위에 따라 배치(Scheduling)하고, 컴퓨터를 동작시키던 "오퍼레이터" 라는 직업이 존재했다. 당시 컴퓨터는 오퍼레이터가 스케줄링한 순서에 따라 프로그램을 "순차적으로" 진행했으며, 동시에 2개 이상의 프로그램을 올리는 것은 불가능했다. 시간이 지나 오퍼레이터가 수행하던 job-scheduling 작업은 오퍼레이팅 시스템, 즉 우리가 아는 OS에 의해 대체되었고, 현재까지 우리는 컴퓨터를 사용할 때 사람 대신 OS을 사용하고 있다. 이러한 OS는 컴퓨터 혹은 하드웨어 등을 운영하기 위한 체계 또는 시스템(프로그램) 으로, 오퍼레이터가 그랬듯이 유저 및 컴퓨..
[데이터베이스 01] 용어 정리 및 장단점 등 데이터베이스(Database) : 데이터와 관련된 컬렉션 데이터(Data) : 암묵적인 의미를 가지고, 기록될 수 있는 알려진 사실들 Mini-world : 데이터베이스를 통해 구현하고자 하는 현실세계의 대상이다. ex) 회사의 사원 정보, 도서관에 비치되어 있는 서적의 정보 DBMS(Database Management System) 전산화 된 데이터의 생성 및 유지 작업에 사용되는 소프트웨어 패키지 혹은 시스템. DBS(Database System) DBMS을 이용하여 데이터를 가공하거나, 추가적인 어플리케이션을 통해 데이터를 가공하기 위한 시스템. DBMS와 DBS의 차이 DBMS는 데이터베이스 "자체" 와 관련된 작업을 수행하는데 사용되는 시스템으로, 일종의 데이터베이스를 위한 OS 역할을 수행하여..
node redis : 노드 환경에서 사용하는 redis 데이터베이스 인터넷 강의를 들으면서 공부하다 보니 redis 데이터베이스를 사용하는 상황이 생겼다. 해당 강의에서는 레디스를 노드 환경과 연결하기 위해서 npm의 redis 패키지를 이용했고, 이 글에서도 해당 패키지에 대해 간단하게 정리할 것이다. 주소는 다음과 같다. https://www.npmjs.com/package/redis 공식문서가 약간 이미 v3 이하를 사용했음을 전제하고 설명하지 않는 부분이 좀 있는 것 같다. v3 문서는 여기. https://www.npmjs.com/package/redis/v/3.1.2 이 글을 쓰는 시점에 해당 패키지의 최신 버전 은 v4이다. 클라이언트 생성 시 설정하는 부분이나 async 코드의 사용 가능 여부, pub/sub 구조에서의 이벤트의 비중 등 몇몇 부분에서 자질..
[docker] 오늘의 삽질 : nginx : host not found in upstream ~ 에러 docker compose 이용하여 여러개의 도커 컨테이너를 조합한 서버를 만들고 있었다. 이후 docker compose up 명령을 통해 도커 컨테이너들을 실행하는 도중, nginx 와 관련된 콘솔 창에서 다음과 같은 에러의 발생을 알렸다. 대략 upstream 으로 지정한 client:3000 을 발견할 수 없다는 메시지로 보인다. 이 에러는 무엇일까? 해당 문제가 발생했을 때 사용된 코드는 다음과 같다. nginx : default.conf upstream client { server client:3000; } upstream api { server api:5000; } server { listen 80; location / { proxy_pass http://client; } location /..
[git] WSL2 환경에서의 글로벌 .gitconfig WSL2 ubuntu 20.04 환경에서 깃허브를 이용하기 위해 커밋을 진행하고 있는데, 어느 순간 다음과 같은 에러를 발생시키면서 커밋을 실패했다. error: insufficient permission for adding an object to repository database .git/objects error: .github/workflows/deploy.yml: failed to insert into database error: unable to index file '.github/workflows/deploy.yml' fatal: updating files failed 대략 권한 문제가 있다는 메세지로 보여서 sudo 명령으로 커밋을 진행하기로 했다. 그랬더니 커밋 자체는 제대로 수행되지만, ..