
strict mode strict mode는 자바스크립트 언어의 문법을 좀 더 엄격히 적용하여 오류를 발생시킬 가능성이 높거나 자바스크립트 엔진의 최적화 작업에 문제를 일으킬 수 있는 코드에 대해 명시적인 에러를 발생시킨다. ESLint 같은 린트 도구를 사용해도 좋다. 적용하려면 'use strict';를 추가 전역에 strict mode를 적용하는 것은 추천하지 않는다. 대신 즉시 실행 함수의 선두에 use strict를 적용하자 // 즉시 실행 함수의 선두에 strict mode 적용 (function () { 'use strict'; // Do something... }()); strict mode가 발생시키는 에러 1. 암묵적 전역 2. 변수, 함수, 매개변수의 삭제 3. 매개변수 이름의 중복 ..

프로토타입 1. 객체지향 프로그래밍 객체지향 프로그래밍은 프로그램을 명령어 또는 함수의 목록으로 보는 전통적인 명령어 프로그래밍의 절차지향적 관점에서 벗어나 여러 개의 독립적 단위, 즉 객체의 집합으로 프로그램을 표현하려는 프로그래밍 패러다임을 말한다. 추상화 : 다양한 속성 중에서 프로그램에 필요한 속성만 간추려 내어 표현하는 것 속성을 통해 여러 개의 값을 하나의 단위로 구성한 복합적인 자료구조를 객체라 한다. 객체지향 프로그래밍은 객체의 상태(state)를 나타내는 데이터와 상태 데이터를 조작할 수 있는 동작(behavior)을 하나의 논리적인 단위로 묶어 생각한다. 따라서 객체는 상태 데이터와 동작을 하나의 논리적인 단위로 묶은 복합적인 자료구조라고 할 수 있다. 이때 객체의 상태 데이터를 프로퍼..
데이터베이스 기술의 현재와 미래 데이터 모델링 : 서비스 중에서 어떤 데이터 항목을 취급할지를 정리하고 그것을 테이블 관계에 반영하는 것 데이터베이스 제품 측에서의 구현 전략은 '클라이언트 측의 처리가 일체 정지되는 일이 없이 서비스 도중에 정의를 바꿀 수 있다' 라는 방향성과 '본래 테이블 정의조차 하지 않고도 일정 이상의 품질로 동작하도록 하는' 방향성을 지닌 제품이 등장하고 있다. 온라인 상태에서의 정의 변경을 제품에서의 기능으로서 갖추지 못한 현재의 mysql에서는 이것을 어떻게든 처리하기 위한 눈물겨운 노력을 하고 있다. 1. 트리거를 사용하여 변경 내용을 기록하고 나중에 한꺼번에 반영 이 구조를 제대로 작동시키기 위해서는 '잠금을 걸지 않고 SELECT한다' 와 '시작 시점에서 커밋된 데이터를..
스토리지 기술의 변천과 데이터베이스에 끼치는 영향 하드웨어 성능 개선의 역사 랜덤 엑세스 : 인덱스와 실제 데이터는 물리적으로 인접해 있지 않기 때문에 각각 별도로 액세스할 필요가 있다.(두 번) 액세스하려는 그 데이터가 메모리에 있는가, 아니면 디스크에 있는가에 따라 속도 차이가 크다. HDD로의 액세스를 하게되면 엄청 느려 예전에는 데이터를 수평 분할했다.(샤딩) 서버를 여러 대로 나열하여 처리 메모리의 가격 하락과 64비트 OS의 대두 => 한 대당 탑재 가능한 데이터베이스의 크기가 증가 => 많은 사용자 처리 가능 => 데이터베이스의 서버 대수를 크게 줄임 단일 스레드에서 행하는 타입의 작업에 시간이 너무 오래 걸려(마스터는 병렬화된 처리지만 MYSQL 복제는 단일 스레드라서 갱신 처리가 직렬화(..

객체 리터럴 객체는 변경 가능(mutable)한 값이다. 객체는 프로퍼티(프로퍼티 키, 프로퍼티 값)와 메서드로 구성된다. 자바스크립트는 프로토타입 기반 객체지향 언어다. 따라서 다양한 객체 생성 방법을 가진다. 1. 객체 리터럴 2. Object 생성자 함수 3. 생성자 함수 4. Object.creeate 메서드 5. 클래스 프로퍼티 키에는 네이밍 규칙을 따르거나 ''를 사용해야 한다. 프로퍼티에 접근할 때는 마침표 표기법과 대괄호 표기법이 있다. 대괄호 프로퍼티 접근 연산자 내부에 지정하는 프로퍼티 키는 반드시 따옴표로 감싼 문자열이어야 한다. 네이밍 규칙을 따르지 않았다면 반드시 대괄호 표기법으로 접근해야 한다. 추가 수정 삭제 가능(삭제는 delete person.age) ES6 객체 리터럴 확..
데이터베이스가 없으면 무엇이 곤란한가 대량의 데이터 중에서 필요한 것을 빨리 반환할 수 없다. 대량의 데이터를 메모리 내에서만으로는 취급할 수 없다. 장애가 발생했을 때 빠른 복구가 어렵다. 병렬성 제어가 어렵다. 데이터 무결성을 보장하는 것은 어렵다. 인덱스로 고속 액세스 실현하기 B+Tree 인덱스 O(log(m)N) B+Tree 인덱스는 Tree 구조로 된 인덱스다. 정상이 root 블록, 최하층이 leaf 블록이며, 그 사이에 branch 블록이 있다. 루트 블록과 브랜치 블록은 검색의 키인 사용자 ID에 대해 해당 블록이 어디에 있는지에 대한 정보를 가지고 있다. 그리고 최하층의 리프 블록은 실제 저장 위치의 정보를 가지고 있다. 루트 -> 브랜치 -> 리프 순으로 도달하여 데이터 얻음 테이블 ..

자바스크립트 특징 1. 인터프리터 언어 인터프리터 언어vs 컴파일러 언어 인터프리터 언어 : 한 줄씩 중간코드인 바이트코드로 변환한 후 실행한다. 실행 파일을 생성하지 않고, 인터프리터 단계와 실행 단계가 구분되어 있지 않고 반복 수행된다. 그래서 실행 속도가 비교적 느리다. 장점은 수정이 편하다. 컴파일러 언어 : 소스코드 전체를 한번에 머신 코드로 변환한 후 실행한다. 실행 파일을 생성하고, 컴파일 단계와 실행 단계가 분리되어 있다. 그래서 실행 속도가 빠르다. 장점은 속도. 그런데 대부분의 모던 자바스크립트 엔진은 인터프리터와 컴파일러의 장점을 결합해 속도가 빠르다. 2. 명령형, 함수형, 프로토타입 기반 객체지향 프로그래밍을 지원하는 멀티 패러다임 프로그래밍 언어 자바스크립트는 클래스 기반 객체지..

VPC 엔드포인트 VPC 엔드포인트는 AWS의 퍼블릭 서비스나 직접적으로 생성한 AWS 서비스에 대해 외부 인터넷 구간을 통한 접근이 아닌 직접적으로 접근할 수 있는 프라이빗 액세스 기능이다. 즉 AWS 내부의 프라이빗 연결이 가능하다. 종류 엔드포인트 : AWS 퍼블릭 서비스 대상에 대한 프라이빗 연결 게이트웨이 엔드포인트 : AWS 퍼블릭 서비스 중 S3, DynamoDB 인터페이스 엔드포인트 : 나머지 AWS 퍼블릭 서비스 엔드포인트 서비스 : 사용자가 지정한 서비스 대상에 대한 프라이빗 연결 이점 보안 측면 강화 비용 절감 효과 서비스 제약 VPC 종속 권한 제어 [실습3-1] 게이트웨이/인터페이스 엔드포인트 비교 1. 기본 환경 구성 CloudFormation을 통해 스택 생성 http://bi..