본문 바로가기

전체 글

(291)
SSH nginx 관련 강의를 듣는 도중 외부 서버를 이용하는 실습을 하게 되었다. 아직 AWS 프리티어가 있기 때문에 EC2 서비스를 이용해보고자 했는데, EC2 서버를 로컬 영역에서 접근하려면 SSH 을 이용해야 한다는 것을 알게 되었다. SSH 를 어디선가 많이 들어보기는 했는데, 정확이 이게 뭐하는 놈인지를 잘 알지 못해서 조금 공부했다. https://www.youtube.com/watch?v=ORcvSkgdA58 기술의 발단 과거 컴퓨터는 데이터에 보안 관련 처리를 하지 않은 채로 패킷 단위로 나눠 통신했다. 기본적으로 모든 패킷은 라우터 및 스위치 , 랜선 등을 거쳐야만 상대방의 컴퓨터에 적절하게 도착할 수 있는데, 이 넓은 범위 중 어디서든 패킷 정보를 훔칠 수 있었기 때문에 유저의 정보는 해커들..
[데이터베이스] Relational Algebra https://en.wikipedia.org/wiki/Relational_algebra Relational Model에서 Relation은 기본적으로 집합(set) 의 특성을 가지고 있다. 따라서 Relation에는 집합에 대한 성질 및 연산이 적용된다. 이로 인해 중복을 허용하지 않으며, 결합 법칙 및 교환 법칙 등이 성립한다. algebra operation : relation 사이에 적용되는 연산. 연산의 결과로 새로운 relation을 반환한다. relation algebra expression : operation이 모여 표현식을 이루는 것. Operations Unary Relational Operation SELECT ( 𝝈 : sigma ) PROJECT ( 𝝅 : pi ) RENAME (..
[운영체제] CPU 스케줄링 자료 및 개념의 출처 : https://www.os-book.com/OS10/slide-dir/index.html 이 글은 Operating System Concepts 10th edition 을 바탕으로 작성되었습니다. 개요 컴퓨터 전반적인 성능이 증가함에 따라, 특히 CPU 성능의 비약적 발전으로 인해 I/O 작업에 걸리는 시간과의 차이가 크게 벌어졌으며, 이로 인해 과거와 동일한 작업을 수행하더라도 CPU가 대기하는 시간이 증가했다. 사람들은 CPU가 대기하는 시간도 최대한 활용하고자 했다. 따라서 현재 놀고 있는 CPU를 다른 프로세스에 할당하기 위해 메모리 안에 다양한 프로그램을 동시에 적재하는 멀티 프로그래밍 방식이 도입되기도 했다. 이처럼 CPU의 성능을 최대한 활용하기 위해서는 현재 놀고 ..
[알고리즘] 분포기반 정렬 분포 기반 정렬 규칙에 따라 입력된 배열 원소를 여러개의 중간 구조로 분산한 후 결과 배열에 배치하는 정렬 방식. 배열 내 값들 사이에서 비교가 발생하지 않는다는 특징이 있다. 보통 비교 기반 정렬의 시간 복잡도는 O(log n) 이하로 떨어질 수 없다고 알려져 있는데 비해 분포 기반의 정렬을 이용하면 해당 수치 이하로 정렬 시간을 줄일 수 있어 속도가 중요한 경우 사용을 고려할 수 있다. 다만 탐색 기반의 알고리즘에 비해 공간 복잡도가 높을 수 있으며, 입력이 일정한 범위 내에서 고르게 분포해야 좋은 성능을 보인다. 계수 정렬 배열 내 특정 원소가 등장하는 횟수를 다른 공간에 저장해두고, 이를 누적 합 형식으로 변경하여 가진 후(Idx 배열), 배열을 탐색하면서 특정 원소가 등장할 때마다 Idx 배열을..
[운영체제] 스레드 & Concurrency 스레드 프로세스 하위에서 실행되는 실행 단위로, 동일 프로세스에 대한 스레드들은 전역 변수의 형태로 정보를 공유할 수 있다. 각각의 스레드마다 PC, stack 및 레지스터와 같은 실행 환경 정보를 가지고 있으며, 프로그램 코드, 데이터 등 공유할 수 있는 정보의 경우 동일 프로세스 아래에서 공유되어 사용된다는 특징이 있다. 스레드에 대한 배경 현대의 프로그램들은 상당히 복잡하며, 다양한 기능을 동시에 제공한다. 예를 들어, 메모장이나 비디오 플레이어 같이 GUI을 이용하는 현대 프로그램들은 화면에 대한 출력 기능 이외에 데이터 처리, 입력 대기, 연산 등 다양한 기능을 추가적으로 가진다. 위와 같은 경우 각각의 기능을 프로세스 단위로 나누어 하나의 프로그램을 구성하는, 멀티 프로세스 프로그램을 고려할 ..
[nodejs] __filename & __dirname / join & resolve 때로는 파일 혹은 폴더의 절대 경로가 필요할 때가 있다. nodejs에서는 __filename 및 __dirname을 통해 현재 작업중인 폴더 및 파일의 절대 경로를 알 수 있도록 지원하고 있다. console.log(`dirname : ${__dirname}`) console.log(`filename : ${__filename}`) 앞서 언급한 것처럼 __dirname 및 __filename 은 해당 파일의 현재 위치와 관련된 정보를 반환하므로, 다른 파일에서 특정 파일의 절대 경로를 이용할 수도 있다. # index.cjs const folderDir = require('./fol2/myfile.cjs'); console.log(folderDir.basedir); # fol2/myfile.cjs co..
[데이터베이스 05] 기본 SQL 문법 SQL 현재 데이터베이스 계열에서 데이터에 접근하기 위해 가장 많이 사용하는 언어로, Chamberlin 과 Boyce 두 학자들이 저술한 "SEQUEL TO SQUARE" 이라는 논문에서 처음 등장했다고 한다. 이때 당시에 SEQUEL(Structured English Query Language) 라는 표현에 이미 상표가 붙어 있어, IBM사에서 대신 SQL이라는 용어를 사용했다고 한다. Relational Data Model을 문법으로 표현할 때 사용되지만, Index 지정 등 Physical 수준의 속성을 지정하는 기능도 포함되어 있다. 또한 DDL(Data Definition Language), DML(Data Manipulation Language) 의 기능을 모두 수행하는, 실질적으로 데이터베..
[운영체제] 프로세스 프로세스 현재 실행 중에 있는 프로그램으로, 프로그램을 실행하기 위해 필요한 많은 정보들을 포함한다. Text Section : 실행 대상이 되는 프로그램의 코드. Program Counter : 실행 중인 현재 위치를 알리는 프로세서 레지스터 Stack : 특정 시점의 실행 환경 정보를 담기 위한 자료구조이다. 재귀함수를 실행하는 경우, 재귀호출할 때마다 현재 함수 환경의 정보를 funtion frame 형태로 만들어 현재 파라미터, 리턴 값, 로컬 변수 혹은 레지스터에 저장된 값 등 다양한 정보를 저장하고, 이를 보관해야 후에 해당 함수를 다시 호출 할 수 있게 되는데, 이때 사용되는 자료구조가 Stack 이다. Data Section : 전역 변수를 저장하는 공간. Heap : 동적 메모리 할당을 ..