목록전체 글 (134)
PracticeEveryday

Relation : 관계 table 중 데이터 베이스에 사용되기 위한 조건을 갖춘 것이 Relation이다! Relation의 제약조건 1. table 의 cell은 단일 값을 갖는다 : 한 셀에는 하나의 값만 들어간다. 2. 어떤 두 개의 row도 동일하지 않다! 테이블이지만 Relation이 아닌 친구들!! Super: 감독자 Key Key는 row를 유일하게 식별할 수 있는 하나 또는 그 이상의 Column들의 집합 유일성만 만족하면 Super Key가 될 수 있다 ※ 유일성 : 하나의 key 값으로 특정 row만 유일하게 찾아 낼 수 있는 것! Candidate: 후보자 Key Super Key중 더 이상 나뉠 수 없는 Super Key => 각 row를 유일하게 식별 할 수 있는 최소한의 속성 ..

Joi 사용자가 입력한 데이터가 유효한지 검사하는 유효성 검사 라이브러리! const loginValidation = async (req, res, next) => { const body = req.body; // validate할 schema 정의 const userSchema = joi.object({ email: joi .string()// 들어오는 값은 문자열 .email(),// 이메일 패턴 password: joi .string() // 들어오는 값은 문자열 .min(4)// 최소 4자리 이상 .required(),// 빈값이 올수 없음! }); try { await userSchema.validateAsync(body); } catch (error) { res.status(400).json(..

this : 이것 this란 자신이 속한 객체 또는 자신이 생성할 인스턴스를 가리키는 자기 참조 변수 (self-refernece-variable)이다. 대부분의 경우 this의 값은 함수를 호출한 방법에 의해 결정된다. - ES5는 함수를 어떻게 호출 했는지 상관하지 않고 this 값을 설정할 수 있는 bind 메서드를 도입 - ES2015는 스스로의 this 바인딩을 제공하지 않는 화살표 함수 추가(이는 렉시컬 컨텍스트안의 this값을 유지합니다) 전역 문맥 전역 실행 맥락에서는 this는 엄격 여부에 관계 없이 전역 객체를 참조합니다. a = 37; console.log(globalThis); console.log(globalThis.a); // 37 console.log(a); // 37 cons..

함수 선언식 vs 함수 표현식 함수 선언식 : Function Declarations: 선언 - 일반적인 프로그래밍 언어에서의 함수 선언과 비슷한 형식 일반적인 프로그래밍 언어에서의 함수 선언과 비슷한 형식이다. 변수 선언이 let이나 const로 시작해야하는 것처럼 함수 선언을 function으로 시작한다. 선언된 함수는 나중 사용을 위해 저장되며, 함수를 실행하려면 함수 이름을 호출(call)하면 된다. function funcDeclarations() { return "A function declaration"; } funcDeclarations(); 함수 표현식 : Function Expressions : 표현 - 유연한 자바스크립트 언어의 특징을 환용한 선언 방식 => 함수는 일 급 객 체!! ..

Symbol Data Type ECMAScript로 표준화된 이후로 자바스크립트에는 string, number, boolean, null, undefined, object 6개의 데이터 타입 있었다. + es6에서 새로운 데이터 타입 Symbol이 추가 되었다. Symbol심볼은 변경 불가능한 원시 타입의 값이며, 다른 값과 중복되지 않는 고유한 값이다. 심볼 값은 충돌 위험이 없는 오브젝트의 유일한 프로퍼티 키를 만들기 위해 사용할 수 있다.하위 호환성을 유지하면서 표준을 확장한다든지, 고유한 상수값을 만드는 데 사용할 수 있다. const symbolA = Symbol("symbol"); const symbolB = Symbol("symbol"); console.log(symbolA, symbolB)..

Lexical: 어휘의 Scope : 범위 scope란 변수의 유효범위를 나타내는 것이다. Lexical Scope은 함수를 어디서 선언하였는지에 따라 상위 스코프를 결정한다는 것이다. => 함수의 호출이 아니라 함수의 선언에 따라 결정된다는 것! 즉, 함수를 어디서 선언하였는지에 따라 상위 스코프를 결정한다는 뜻이며, 가장 중요한 점은 함수의 호출이 아니라 함수의 선언에 따라 결정된다는 점이다. 다른 말로, 정적 스코프(Static scope)라 부르기도 하다. let num = 1; function a() { let num = 10; b(); } function b() { let num = 10; function d() { console.log(num); } c(); d(); // 10 } funct..

Transaction : 거래 Transaction: 데이터베이스 내에서 수행되는 작업의 최소 단위 // 트랜잭션(Transaction) 이란, 데이터베이스의 상태를 변경시키기 위해 수행하는 작업 단위이다. => 이런 트랜잭션은 상황에 따라 여러 개가 만들어질 수 있다. => 데이터베이스의 무결성을 유지하며 DB의 상테를 변화하는 기능을 수행한다. => Transaction은 하나 이상의 Query문을 포함해야하며, ACID( 원자성, 일관성, 고립성, 지속성 ) 4가지 규칙을 만족해야 한다. 트랜잭션의 예시 A => B에게 100만원 송금 A에서 100만원이 빠져 나갔지만 전산 오류로 인해 B에게 100만원이 입금 되지 않음 엄청난 오류 이런 예기치 않은 오류를 방지하게 위해 모든 입출금의 과정은 하나..

왜 브라우저는 스크립트 언어를 사용했는가?! 스크립트 언어는 연극 용어에서 따온 말이다. 연극에서의 '스크립트'는 배우의 대사를 중점으로 배우의 표정, 등장과 퇴장, 무대장치을 중심으로 지시해놓은 내용을 말한다. 프로그래밍에서 '스크립트 언어'의 역할을 생각해보면 왜 스크립트라고 했는지 이해가 될 것이다. 프로그래밍의 스크립트 언어는 기존에 이미 존재하는 소프트웨어를 제어하기 위한 용도를 쓰이는 언어이다. 연극에서 스크립트가 극 안의 상황에서 배우가 어떻게 행동할 것인지 지시해놓은 것처럼, 스크립트 언어도 소프트웨어를 어떻게 실행할 지 제어한다. 컴파일러를 사용해 실행하면, 기계어로 번역이 된 채로 바로 실행할 수 있다. 하지만, 규모가 큰 프로그램이라면 컴파일에 몇 시간이 걸릴 수 있다. 그렇게 오랜 ..

Arrow Function 화살표 함수는 ES6에서 새로 추가된 기능으로 기존 함수 표현식보다 비교적 간단하게 사용 가능하다는 장점이 있다. 화살표 함수는 익명 匿 숨길 닉 名 이름 명 신분을 드러내지 않기위해 이름을 밝히지 않는 상태 함수이다. function add(a, b) { return a + b; } const add = (a, b) => { return a + b; } 일반 함수와 화살표 함수의 차이 바인딩 bind : 묶다. => 바인딩이란 함수 호출과 실제 함수를 연결하는 방법이다. => 함수를 호출하는 부분에서 실제 함수가 위치한 메모리를 연결하는 것도 바인딩이다. - 정적 바인딩 (Static Binding) 실행 시간 전에 일어남. 실행 시간에는 변하지 않는 상태로 유지 - 동적 바..

컴퓨터가 기본적으로 하는 일 - 데이터 저장 - 데이터 연산 자료구는 데이터를 '저장'할 때 알고리즘은 데이터를 '연산'할 때 어떻게 하면 컴퓨터가 처리하기 쉽게 만드는 지 다루는 것을 이야기 한다. 자료구조 (Data Structure)는 자료를 저장하는 방법을 알고 알고리즘 (Algorithm)은 문제를 효율적으로 해결하기 위한 방법을 안다. 알고리즘을 대충 짜고 항상 배열 자료구조만을 사용해도 동작은 하겠지만 메모리를 효율적으로 사용하고 알고리즘의 성능을 높이기 위해 어느 정도 규모가 넘어간다면 그에 가장 적합한 자료구조와 알고리즘을 선택해야 한다. ADT( Abstract: 추상 Data Type ) 추상적 자료형 추상적 자료형이란 자료들과 그 자료에 대한 연산들을 명기(明 밝을 명 記 기록할 기..