본문 바로가기
[node.js] 유저 목록 조회, 유저 조회, 삭제 테스트 + API 서버 구현 [API 만들고 테스트하자]- 그 전에 꼭 알아야할 것1) 테스트 수트(describe) : 큰 카테고리 경우를 정의할 때 사용2) 테스트 케이스(it) : 카테고리 내에서 테스트할 거리를 테스트할 때 사용 - 유저목록조회 API 테스트 코드(1) 테스트 조건 - 유저목록조회 성공했을 때 유저객체를 담은 배열로 응답, 최대 limit 갯수 만큼 응답한다- 유저목록조회 실패했을 때 limit(쿼리스트링)의 값이 숫자가 아니라면 400 코드를 응답한다 (2) 테스트 수트와 케이스로 나누기 : 테스트 바탕 조건과 테스트 해보아야 할 것을 구분- 수트 : 전체 테스트, 성공, 실패- 케이스 : 성공 - 유저객체를 담은 배열로 응답 - 최대 limit 갯수만큼 응답, 실패 - 400 코드 응답 (3) 케이스 만들.. 2017. 6. 16.
[자바스크립트 자료구조] List [List]- 목록, 순서가 있는 일련의 집합체(몇번째 항목)- 리스트에 저장된 각 데이터 항목을 요소라 함, 프로그램의 가용메모리가 리스트에 저장할 수 있는 최대 요소 수- Array의 index 버림(빠른 검색X), 요소간의 순서가 중요, 빈 엘리먼트 허용X : 리스트 탐색을 통해 요소 추출- 빈틈없는 데이터 적재의 장점을 취한 자료구조 : Array는 index 자리에 value가 삭제되면 뻥 떠버림 - 메우기위한 로직 필요=> Array 단점 보완 : 크기 고정X(새로 빈 배열을 만들고 깊은 복사를 해서 만드는 방식이 아님) [List ADT]- ADT란? Abstract Data Type을 말함, 리스트 자료구조가 어떤 구현부를 가져야하는가를 인터페이스 제시하는 것- 예시 : 전기밥솥 ADT :.. 2017. 6. 13.
[node.js] TDD 라이브러리 - mocha, assert, should, supertest [TDD : Test Driven Develop]- 테스트 주도 개발 : 처음부터 모든 기능을 개발하기보다 테스트 코드를 먼저 개발하고 테스트 한 뒤 개발- 테스트 해보고 원하는 결과값이 나오는지 확인하고!- 유지 보수할 때 좋다함 : 느껴봐야지 [nodejs에서 TDD]- mocha, should, superTest 라이브러리를 사용함 1) mocha : 테스트 코드 작성 후 실행 해보는 테스트 러너, 테스트 베이스를 만들기 쉬움, 테스트 결과를 알기쉽게 보여줌- 공식페이지 : https://mochajs.org/- 테스트 수트와 테스트 케이스로 이뤄져있음- 테스트 수트 : 테스트 환경을 말함, describe() 로 구현- 테스트 케이스 : 테스트(테스트 코드 생성)를 말함, it() 로 구현 (1).. 2017. 6. 12.
[프로그래밍 기초] 자바스크립트 런타임, 코어와 쓰레드 [런타임이란]- 프로그래밍 언어가 구동되고 있는 환경- 자바스크립트 런타임1) 웹브라우저 : 웹 자원에 접근하기위한 클라이언트 사이드 계층 구조(런타임)2) node.js : 자바스크립트 런타임, V8엔진 등장(속도 향상, 크롬 브라우저의 V8 기반 nodejs를 특정 모듈을 사용해 웹서버 구축) - 이벤트 기반 비동기 I/O 처리 서버=> 클라이언트 요청을 이벤트로 처리 : 이벤트 큐 -> 이벤트 루프 -> 응답=> 이벤트 루프(싱글쓰레드)가 큐에 담긴 이벤트 처리 후 응답, 긴 I/O 경우 별도 쓰레드풀(worker)에서 처리 후 큐에 리턴, 루프 처리 - 런타임 구성 : 런타임 라이브러리 / 런타임 환경으로 구성됨1) 런타임 라이브러리 : 프로그램(js)을 관리하기위한 특정 컴파일러, 가상머신이 사.. 2017. 6. 12.
[node.js] express로 REST API 서버 개발 [REST API 서버]- 자원에 대한 처리 관점으로 요청 - 응답 API 서버 만듬- 자원에 식별번호 부여- 자원에 대한 처리 : CRUD(HTTP 메서드), HTTP 사용 극대화 [HTTP 메서드]1) GET : 자원 조회2) POST: 자원 생성3) PUT: 자원 갱신4) DELETE: 자원 삭제 - express 어플리케이션 메서드로 구현되어있음 [HTTP 상태코드]- 1xx : 처리 중- 2xx : 성공(200, get/put), 작성됨(201, post), 내용 없음(204, delete)- 4xx : 잘못된 요청(400), 권한 없음(401), 잘못된 요청(404), 충돌(409)- 5xx : 서버 에러(500) [요청 URI 디자인 - 라우팅]- 서버 컴퓨터의 파일 디렉토리를 지칭하는 것이.. 2017. 6. 9.
[node.js] npm, package.json 제대로 알고 가기 [npm]- node package manager : 모듈 관리(설치, 업데이트, 삭제 등)하기위한 매니저 - npm으로 외부 모듈 설치 : node_modules 디렉토리에 저장, 우리가 설치한 외부 모듈이 의존 모듈까지 같이 설치함- node_modules는 따로 git 버젼 관리하지않음 : index.js 만 있으면 바로 실행 x, 사용하는 모듈 설치해야함- 요즘엔 페이스북에서 만든 yarn 이라는 패키지 매니저도 있음 : https://yarnpkg.com/lang/en/ [npm, package.json으로 쉽게 모듈 설치하기]1) npm init : package.json 생성 - 프로젝트 의존 모듈 관리(사용 모듈 네임, 버젼), 프로젝트 정보2) npm install 모듈명 --save :.. 2017. 6. 8.
[node.js] http 모듈로 간단하게 유저 API 서버 만들기 [알아야하는 것]- ES6 arrow function- Node.js module system : module, load- 먼저 보면 좋은 게시글 : [node.js] 기본 - processing model, module system, async : http://jinbroing.tistory.com/139 [API 서버]- 요청, 응답하는 서버 [사용할 내장 모듈 + 유저 API 서버 만들기]- http 모듈- 사용 방법: https://nodejs.org/dist/latest-v6.x/docs/api/http.htmlconst http = require('http'); const hostname = '127.0.0.1'; const port = 3000; const server = http.creat.. 2017. 6. 5.
[node.js] 기본 - processing model, module system, async] [Node.js processing model]- 이벤트기반의 비동기 I/O(콜백) 프레임워크 1) 클라이언트가 보내는 요청을 모두 이벤트로 처리 : 이벤트 큐에 쌓기2) 이벤트 루프 : 이벤트 큐에 쌓인 이벤트를 하나하나 처리(싱글쓰레드) 후 요청 클라이언트에 응답3) 이벤트 : 가벼운 처리 / 무거운 처리(네트워크, 파일 읽고 쓰기 등)- 가벼운 처리 : 이벤트 루프 처리 - 무거운 처리 : 이벤트 루프가 Non-blocking Worker(C++)로 보내 처리 후 이벤트 형태로 큐에 다시 전달, 루프가 큐에서 뽑아 처리(응답) [모듈 시스템]- 모듈 : 일정 기능을 하는 코드 덩어리, 서비스를 구현할 때 하나의 소스코드로 만드는게 아니라 기능별로 모듈화해서 만듬- 브라우저 : window 객체(스코.. 2017. 6. 4.
[firebase] Authentication - OAuth 개념과 페이스북 OAuth #1 [firebase Authentication]- 페이스북, 구글 등 계정의 권한을 위임하는 과정, 위임받아 인증 key(Access Token)를 보관하는 서버를 쉽게 구현할 수 있음- 로그인 서버를 따로 두는 개념 [OAuth란]- 인증을 위한 오픈 스탠다드 프로토콜 + 인증과 허가의 뜻을 모두 가짐- 다른 어플리케이션에 아이디, 비밀번호를 노출하지않고, API 접근 권한 위임 요청 시 사용하는 방법- 아래의 필수 개념을 통해 어떻게 권한을 위임받고, 관리하는지 알아보자 [OAuth 필수 개념]1) Service Provider : OAuth를 사용하는 Open API를 제공하는 서비스 - fb, google, naver, kakao 등2) Consumer : OAuth 인증을 사용하여 Service .. 2017. 6. 1.
[firebase] 시작하기 전 - firebase가 뭐야 [firebase란]- 구글의 웹과 모바일 개발에 필요한 기능을 제공하는 BaaS(Backend as a Service, 백엔드 서비스)- 백엔드 기능을 클라우드 서비스 형태로 제공하는 것을 말함, 실질적으로 서버리스 어플리케이션을 만들 수 있음- 서버 아키텍쳐 설계 : 보안, 인증, DB 설계, API 설계, 애널리틱스 등 쉽게 만들고 할 수 있음- 모두 다 써야하는게 아니라 필요한 기능을 골라서 쓰면됨- 프로젝트를 만들어 어플리케이션 서버와 연결해서 사용하는 형태, 프로젝트 별로 관리 콘솔을 제공함- firebase 공식페이지 : https://firebase.google.com/?hl=ko- firebase 소개영상 : 아래 영상 하나만 봐도 firebase가 뭐하는건지, 구글이 뭘 추구하는지 알 .. 2017. 5. 31.