목록분류 전체보기 (198)
포도가게의 개발일지
toBe vs toEqual vs toStrictEqual toBe - 비교 대상이 기본형(primitive type)이라면 두 원시 값이 같은지 비교하고, 오브젝트(object type)라면 같은 오브젝트에 대한 참조(동일한 메모리)인지를 비교(Shallow compare)한다. toEqual - 기본형인 경우 toBe와 같이 두 값이 같은지 비교하지만, 대상이 오브젝트인 경우 재귀적으로 프로퍼티를 비교하며 깊은 비교(Deep compare, 내용물 확인)를 수행한다. toStrictEqual - 깊은 비교를 하는 것은 toEqual과 동일하지만, undefined인 프로퍼티까지 비교한다. Jest CLI detectOpenHandles - 열려있는 리소스를 모두 닫아줍니다 forceExit - 테스트..
Docker? - 도커는 컨테이너 기반의 오픈소스 가상화 플랫폼입니다. 컨테이너? 배에 실는 네모난 화물 수송용 박스, 각각의 컨테이너 안에는 다양한 내용물을 넣을 수 있고 규격화되어 컨테이너선이나 트레일러등 다양한 운송수단으로 쉽게 옮길 수 있습니다. 서버에 입장에서 프로그램, 런타임 환경을 컨테이너로 추상화하여 어디서든 실행 가능하게 만들어준다. why? - 이미지는 컨테이너 실행에 필요한 파일과 설정값등을 포함하고 있는 것으로 immutable 하다. 컨테이너는 즉 이미지를 실행한 상태이며 추가되거나 변하는 값은 컨테이너에 저장됩니다. 같은 이미지에서 여러개의 컨테이너를 생성(실행)할 수 있고 컨테이너의 상태가 바뀌거나 컨테이너가 삭제되더라도 이미지는 변하지 않고 그대로 남아있습니다. 즉 우리가 다..
Node.js - Node.js는 C++로 작성된 런타임이고 그 내부에 V8 Engine를 가지고 있다. 그 덕분에 크롬과 같은 브라우저에서 실행하던 자바스크립트를 로컬에서 실행할 수 있다. 그런데 그 내부에는 V8 Engine 말고도 libuv 라는 라이브러리가 존재한다. - Node.js를 싱글 스레드 논 블로킹(제어권을 넘기지 않고 가지고 있는다.)이라고 한다. 또한 싱글 스레드로 작동하므로 I/O같은 작업은 비동기적(작업이 완료되었는지 여부를 확인하지 않고 callback처리한다.)으로 처리해야 한다. event loop에 멈춤이 없어야 한다(Node.js 최대한 모든 작업을 비동기하게 처리해야 한다.) libuv - libuv란 C++로 작성된, Node.js가 사용하는 비동기 I/O 라이브러리..
생성자 함수 // 함수가 new를 만나면 // 생성자 함수 동작원리 function User(name,age){ // this라는 객체 생성 this = {}; this.name = name; this.age = age; // return 추가 return this; } Closure 코드가 실행될 때 전역 렉시컬 환경이 생성됨 또한, 함수가 실행될때 내부 렉시컬 환경이 생성된다. 함수가 생성될 당시 외부 함수에 변수를 기억하기 때문에 외부함수가 소멸 되었다 하더라도 내부함수는 외부함수에 변수에 접근 할 수 있다. 변수를 참조 할 때는 내부에서 점점 외부를 참조하게되고 마지막으로 전역 렉시컬을 참조한다. function Adder(x){ return function(y){ return x+y; } } /..
Why? - 서비스를 발표 후 질의 중에 서버에 부하를 줄이기 위해 비즈니스로직 리팩토링이나 로드밸런싱을 한다하였는데 로드 밸런싱을 하게 되면 채팅방에 있는 유저가 서로 다른 서버에 존재할 수 있게된다. 이것을 어떻게 연결시켜줄 것인가? How? 첫번째 Node에서 지원해주는 클러스터기능을 이용하는 것입니다. 이 기능은 서버의 CPU코어의 수 만큼 Worker를 만들어 여러개의 서버를 띄우는 것과 비슷한 성능을 하도록 만들어 줍니다. 이유는 node는 기본적으로 싱글쓰레드 방식으로 프로세서를 하나만 쓰게 된다. 때문에 서버 cpu가 2개이상일 경우 나머지 프로세서들이 놀기 때문에 모든 cpu가 노드서버를 하나씩 맡음으로써 요청을 분산 시킬 수 있다.(포트를 공유하는 노드 프로세스를 여러 개 둘 수 있으..
Index란? - 지시자를 찾아보기 쉽도록 일정한 순서로 나열한 목록(어떤 대상을 가리키는 무언가) DB Index? - full scan을 막음으로써 데이터베이스 테이블에 대한 검색 성능의 속도를 높여주는 자료 구조입니다.
SQL(RDBMS 관계형 데이터 베이스)? - 서로 관련된 데이터 포인트에 대한 액세스를 저장 및 제공하는 데이터베이스 유형입니다. 특징 데이터는 정해진 데이터 스키마에 따라 테이블에 저장된다.(각 테이블마다 명확하게 정의된 구조가 있다. ) *스키마? 개체의 특성을 나타내는 속성(attribute), 속성들의 집합인 개체(entity), 개체의 관계에 대한 정의와 제약조건/ * 데이터베이스의 구조와 제약조건에 관해 전반적인 명세를 기술한 것 데이터는 관계를 통해 여러 테이블에 분산된다. 데이터의 중복을 피하기 위해 '관계'를 이용한다.(중복된 데이터가 없기때문에 데이터 수정에 용이하다) 테이블끼리 관계를 가지여하기 때문에 수평적 확장(즉 증설)이 어렵다 보통 수직적 확장을 하는 편 table안에 레코드..
레디스(Redis)는 Remote Dictionary Server의 약자로 Key/Value 형식의 in-memory 데이터베이스로 비관계형 데이터베이스인 NoSQL에 속한다. 디스크가 아닌 메모리에 데이터를 저장하므로 빠른 Read와 Write 속도를 보장해준다. 레디스의 다른 장점으로는 다른 in-memory 데이터베이스인 Memcached와는 다르게 String, List, Set, Sorted Set, Hash 등 다양한 자료구조를 지원한다. Why? 디스크가 아닌 메모리에 데이터를 저장하므로 빠른 Read와 Write 속도를 보장해준다. 자주접근하고 덜 자주 바뀌는 데이터를 메모리에 저장하여 더 빠르게 데이터를 얻기 위해(서버가 여러 대인경우 서로 다른 데이터를 가지게 될 수 도있기에 이용한다...