분류 전체보기 122

관계형 데이터베이스

구조화된 데이터는 하나의 테이블로 표현할 수 있습니다. 사전에 정의된 테이블을 relation 이라고도 부르기 때문에, 테이블을 사용하는 데이터베이스를 관계형 데이터베이스(Relational database)라고 합니다. 다음은 관계형 데이터베이스를 학습하면서, 반드시 알고 있어야 하는 키워드입니다. 데이터(data): 각 항목에 저장되는 값입니다. 테이블(table; 또는 relation) : 사전에 정의된 열의 데이터 타입대로 작성된 데이터가 행으로 축적됩니다. 칼럼(column; 또는 field) : 테이블의 한 열을 가리킵니다. 레코드(record; 또는 tuple) : 테이블의 한 행에 저장된 데이터입니다. 키(key) : 테이블의 각 레코드를 구분할 수 있는 값입니다. 각 레코드마다 고유한 값..

DB 2022.02.11

ASCII 문자, UTF-8, UTF-16

컴퓨터는 이진수만 안다. 컴퓨터와 내가 문자를 입력하고 출력할 수 있도록 해주는게 바로 문자 코드다. 그리고 문자코드와 숫자를 매칭시킨 표를 문자표라고 한다. 대표적으로 아스키 코드표가 있다. 알파벳, 숫자, 특수 문자에 고유의 숫자를 부여한 코드표로 7Bit 조합이라 128개의 문자를 표현한다. 아스키 코드표의 A가 American을 뜻한다고 한다. 즉, 영어권 국가를 위해서 만들어진 룰이란 것이다. 아스키 코드가 표현할 수 있는 문자가 제한적이다보니 한글이나 중국어 등을 표현할 수 없었다. 이에 다른 국가의 언어들도 문자표를 만들 필요가 생겼고, 여러 문자표들이 만들어지게 된다. 정신차리고 보니 표준룰이 너무 많아져 모든 언어를 표현할 수 있는 문자표가 필요하다고 판단되어 생겨난 것이 유니코드이다. ..

OS,컴퓨터공학 2022.02.10

문자열, 유니코드(인코딩)

2010년도 이후, 우리는 유니코드라고 불리는 인코딩 방식이 통일된 시대를 살아가고 있습니다. 문자열을 다루는 디테일한 방식에 대해 전부 알 필요는 없지만, 프로그래밍 언어마다 문자열을 다루는 자료형의 차이를 이해하기 위해 문자열을 다루는 기본적인 방식은 알고 있어야 합니다. 문자열 하나는 몇 바이트인가요? 영어의 경우 알파벳 하나가 1 바이트(byte)를 차지하는 시절이 있었습니다. 그러나 글로벌 시대에는 유니코드를 사용해야 텍스트를 정확하게 저장할 수 있습니다. 프로그래밍 언어마다 문자열을 저장하는 자료형이 다 다르므로, "문자열 하나가 몇 바이트인가?"에 대한 답변은 이 자료형이 차지하고 있는 바이트를 이해할 때 답변할 수 있습니다. 컴퓨터는 이진수만 안다. 컴퓨터와 내가 문자를 입력하고 출력할 수..

OS,컴퓨터공학 2022.02.10

트랜잭션 ACID

트랜잭션 트랜잭션이란 여러 개의 작업을 하나로 묶은 실행 유닛입니다. 각 트랜잭션은 하나의 특정 작업으로 시작을 해 묶여 있는 모든 작업을 다 완료해야 정상적으로 종료합니다. 만약 하나의 트랜잭션에 속해있는 여러 작업 중에서 단 하나의 작업이라도 실패하면, 이 트랜잭션에 속한 모든 작업을 실패한 것으로 판단합니다. 다시 말해 작업이 하나라도 실패를 하게 되면 트랜잭션도 실패이고, 모든 작업이 성공적이면 트랜잭션 또한 성공입니다. 성공 또는 실패 라는 두 개의 결과만 존재하는 트랜잭션은, 미완료된 작업 없이 모든 작업을 성공해야 합니다. 데이터베이스 트랜잭션은 ACID라는 특성을 가지고 있습니다. ACID ACID는 데이터베이스 내에서 일어나는 하나의 트랜잭션(transaction)의 안전성을 보장하기 위..

DB 2022.01.21

데이터 베이스 SQL 소개

데이터베이스의 필요성 앞서 데이터를 저장하는 방법으로 파일에 데이터를 저장하거나, 인메모리 형태로 데이터를 임시 저장하는 방법을 이용했습니다. 이 방법으로도 데이터를 저장할 수 있는데, 굳이 데이터베이스를 사용할 필요가 있을까요? 데이터베이스를 사용하지 않고, 엑셀 시트나 CSV 파일 등에 데이터를 저장해 사용하면 되지 않을까요? 이번 챕터에서 그 의문을 해결할 수 있습니다. 1. In-Memory 먼저 JavaScript에서 데이터를 다룰 때에는 프로그램이 실행될 때에만 존재하는 데이터가 있습니다. JavaScript에서 변수를 만들어 저장한 경우, 프로그램이 종료될 때 해당 프로그램이 사용하던 데이터도 사라집니다. 이 말은 변수 등에 저장한 데이터가 프로그램의 실행에 의존한다는 말입니다. 예기치 못한..

DB 2022.01.21

시간 복잡도

[그림] 시간 복잡도 그래프 알고리즘 문제를 풀다 보면 문제에 대한 해답을 찾는 것이 가장 중요합니다. 그러나 그에 못지않게, 효율적인 방법으로 문제를 해결했는지도 중요합니다. 혹시 문제를 풀다가, 이것보다 더 효율적인 방법은 없을까?, 또는 이게 제일 좋은 방법이 맞나?라는 생각을 해 본 적이 있나요? 효율적인 방법을 고민한다는 것은 시간 복잡도를 고민한다는 것과 같은 말입니다. 이번 챕터에서는 시간 복잡도와 Big-O(빅-오) 표기법에 대해서 배워 보도록 하겠습니다. 시간 복잡도 문제를 해결하기 위한 알고리즘의 로직을 코드로 구현할 때, 시간 복잡도를 고려한다는 것은 무슨 의미일까요? 한 문장으로 정리하자면 다음과 같습니다. 입력값의 변화에 따라 연산을 실행할 때, 연산 횟수에 비해 시간이 얼마만큼 ..

카테고리 없음 2022.01.18

환경변수

환경 변수(environment variable)란? 환경 변수란 프로세스가 컴퓨터에서 동작하는 방식에 영향을 미치는, 동적인 값들의 모임이다. OS(ex) 윈도우, 리눅스 등)의 환경변수는 시스템의 실행 파일이 놓여 있는 디렉터리의 지정 등 OS 상세서 동작하는 응용소프트웨어가 참조하기 위한 설정이 기록된다.(운영체제가 굴러 가는데 필요한 변수들의 모임) 응용소프트웨어는 시스템콜(system call)이나 OS의 표준 API 등을 통하여 간단히 값을 얻을수록 되어있다. 쉽게 이야기해서 각자 깊숙이 있는 응용프로그램을 쉽게 꺼내쓰기 위해서 미리 변수로 등록해 놓는 것을 말한다. API key와 같이 공개할 수 없는 정보가 코드에 포함될 경우, 네트워크를 통해 API key가 공개될 수 있습니다. 이런 일..

Linux 2022.01.18

async await 비동기

async: 비동기 작업을 만드는 손쉬운 방법 async 키워드는 함수를 선언할 때 붙여줄 수 있습니다. async 키워드가 붙은 함수를 async 함수로, async 가 없는 함수는 일반 함수라고 부르도록 하겠습니다. 의미를 생각해본다면 async 함수는 비동기 작업 그 자체를 뜻한다는 말일 것 같은데, 실제로 우리가 어떻게 사용해볼 수 있을까요? async 함수는 Promise 와 굉장히 밀접한 연관을 가지고 있는데, 기존에 작성하던 executor 로부터 몇 가지 규칙만 적용한다면 new Promise(…) 를 리턴하는 함수를 async 함수로 손쉽게 변환할 수 있습니다. 함수에 async 키위드를 붙입니다. new Promise... 부분을 없애고 executor 본문 내용만 남깁니다. resol..

JS 2022.01.08

Promise 비동기

Promise Promise 는 비동기 작업의 단위 입니다. 지금까지 이야기했던 것들은 자바스크립트에서 동시에 여러 가지 작업을 할 수 있다는 개념을 비동기로 은근슬쩍 설명했고, 지금부터는 Promise 를 통해 어떻게 비동기 작업들을 쉽게 관리할 수 있는지를 본격적으로 알아보겠습니다. 기본 사용법 우선 Promise 로 관리할 비동기 작업을 만들 때에는, Promise 에서 요구하는 방법대로 만들어야 합니다. 여러가지 방법이 있지만 제일 정석적인 방법은 new Promise(...) 하는 것입니다. 아래 예제 코드를 봐주세요. const promise1 = new Promise((resolve, reject) => { // 비동기 작업 }); 복사하기 문법적으로 보충 설명해보겠습니다. 변수의 이름은 p..

JS 2022.01.08

fetch

fetch를 이용한 네트워크 요청 소요시간 : 4 min 비동기 요청의 가장 대표적인 사례는 단연 네트워크 요청입니다. 네트워크를 통해 이뤄지는 요청은 그 형태가 다양합니다. 그 중에서 URL로 요청하는 경우가 가장 흔합니다. URL로 요청하는 걸 가능하게 해 주는 API가 바로 fetch API입니다. 한 가지 예를 들어보겠습니다. 다음은 흔히 볼 수 있는 포털 사이트입니다. 이 사이트는 시시각각 변하는 정보와, 늘 고정적인 정보가 따로 분리되어 있는 구성을 확인할 수 있습니다. 이 중에서 최신 뉴스나 날씨/미세먼지 정보가 바로 동적으로 데이터를 받아와야 하는 정보입니다. 이럴 때 많은 웹사이트에서는 해당 정보만 업데이트하기 위해 요청 API를 이용합니다. 이 콘텐츠에서는 그 중 대표적인 fetch A..

JS 2022.01.08