본문 바로가기

nodejs37

[node.js] mysql 모듈 - aws rds mysql 인스턴스 연동하기 [mysql 인스턴스 테스트 - 레코드 추출하기]- 단어, 날짜, 카운트(날짜 AND 단어별 카운트) - 고민했던 것 : 카운트를 컬럼으로 둘 것인가 OR 하나씩 저장시켜서 쿼리문으로 조합할 것인가 - 카운트는 컬럼으로 두지말고 단어와 날짜를 가지고 그룹핑하고 카운트 시키면 되겠음 - 일단 테스트해보고 바꿔가는 형태로 해봐야겠음 : 크롤링부터 데이터 저장까지 [mysql 세팅 및 테스트]- 환경 : AWS RDS mysql-community-server 5.7, 3306 port - 접속 환경 : AWS RHEL 7.2 instance - 특징 (1) inbound 규칙에서 해당 인스턴스만 접근하도록 해당 인스턴스 시큐리티 그룹만 접근가능하도록 설정해둠 (2) 원래는 aws instance에 mysql .. 2017. 7. 5.
[node.js] node + 외부 db - mysql 세팅, db, table 생성, 다루기 [세팅 환경]- OS : RHEL 7.2(Amazon instance) - mysql version : 5.7.18 MySQL Community Server => 환경 확인 : mysql 접속 후 SELECT VERSION(); [설치 확인](1) root 사용자 로그인 : su - (2) mysql 서버 패키지 설치 확인하기 : yum info mysql-community-server - mysql-community-server 설치하면 의존성있는 패키지 설치됨 [초기 설정하기](1) 설치 후 mysql 명령어를 입력하면 Access denied 가 뜸 : 패스워드 설정을 해줘야함 - /var/log/mysqld.log 를 열고 temorary password가 있음 - 임시 비밀번호 찾기 : grep.. 2017. 7. 4.
[node.js] node.js에서 데이터 수집하기 [node.js]- 자바스크립트 런타임 - 자바스크립트를 해석할 인터프리터 + 라이브러리(모듈) [데이터수집]- 크롤링 : 데이터 수집 과정을 크롤링(crawling)이라 함 - 두 단계로 나뉘어짐 1) 스크래핑(scraping) : 데이터를 가져오는 방법 - 데이터가 존재하는 곳의 형태에 따라 스크래핑 방법을 정해야함 : 인증이 필요하거나 어떤 버튼 누르는 절차가 필요하거나 등 2) 파싱(parsing) : 가져온 데이터에서 필요한 데이터를 추출하는 방법 - 각각의 역할에 맞는 모듈을 사용하기 1) 스크래핑 : http, https, request 2) 파싱 : cheerio, JSDOM - 두 단계를 합친 모듈이 있을 것 [node 모듈을 사용해서 데이터 수집해보기]- request, cheerio .. 2017. 7. 2.
[node.js] 외부DB 연동 전 준비하기 #1 - RHEL + mysql [mysql]- 관계형 db [설치하기]- 환경 : 리눅스 RHEL 7.2(Amazon instance)- 설치되어있는지 확인하기 : 설치되어있지않다면 아무것도 안나옴rpm -qa | grep ^mysql-server - 설치하기1) CentOS7부터 데이터베이스가 MariaDB로 변경됨 : 이런저런 이야기가 있지만 생략하고 mysql과 호환됨- 기본 데이터베이스로 MariaDB가 설정- yum으로 바로 설치불가함 : yum 저장소(/etc/yum.repos.d/CentOS-Base.repo) 에 정의되어져있음)에서 패키지를 다운로드 받아야하는데, 존재하지않음 2) root 계정으로 로그인하기 : su - 3) 패키지 저장소에 없는 MYSQL 패키지(.rpm) 저장소에 다운로드 - RPM이란? (1) R.. 2017. 6. 26.
[node.js] express - 라우터, 컨트롤러 나누기 [수정된 코드]- TDD user API server settings : https://github.com/imjinbro/tddUserAPI(필요하다면 fork 후 remote로 가져오기) [라우트, 컨트롤러 코드 각각 분할하기]- 라우트 : 라우팅을 위한 전용 Router 클래스 사용해서 app.js에서 라우팅 코드 간결하게 만들기- 컨트롤러 : api 동작(콜백함수) 부분만 모듈화시키기 1) 디렉토리 분할하기- 총괄디렉토리(api) > 유저 api 디렉토리(user) 만들기 : mkdir 사용해서 api, user 생성 2) user 디렉토리에 소스 파일 분할하기 - index.js : 라우팅const express = require('express'); const router = express.R.. 2017. 6. 20.
[node.js] express - session : 로그인 [HTTP]- 무상태성! [쿠키 그대로 사용한다면]- 쿠키에 모든 사용자 정보를 담아서 클라이언트에 전달- 보안에 취약 : 중간 탈취, 쿠키 스토리지 탈취 [세션이란]- 클라이언트 요청 시 사용자를 식별할 수 있는 id값이 담긴 쿠키 응답- 헤더에 쿠키 그리고 요청 : 서버에서 쿠키를 받아 사용자 id값을 가지고 서버 측 db에 저장된 사용자 정보를 가지고 응답 할 때 사용=> 동일한 session-id값을 가지고 요청하면 동일 클라이언트 - node 모듈 중 express 서버에서 session을 쉽게 구현할 수 있는 미들웨어를 제공하는 express-session이 있음- 설치하기 : npm i express-session [express-session 사용하기 : 로그인 정보 유지]- 1.5.0 v.. 2017. 6. 19.
[node.js] express - HTTP 쿠키 사용하기 [HTTP 쿠키란]- HTTP 무상태성(stateless) : 이전 통신 정보를 현재 통신에서는 모름- 서버가 클라이언트(브라우저)에 전송하는 데이터 조각- 브라우저는 데이터 조각을 저장하고 동일한 서버로 요청 시 전달함- 사용 예시 : 사용자의 정보(로그인 정보 말고)가 저장된 쿠키를 브라우저에 전달하고, 요청 시 쿠키를 받아 동일한 웹브라우저인지 확인 후 처리=> 로그인 정보는 세션을 사용함, 쿠키에 저장하고 아무리 보안 처리를해도…. 위험 [node cookie module : cookie-parser + express res.cookie]- cookie-parser : 쿠키 헤더를 파싱해서 req.cookies 객체 리턴- res.cookie(name, value) : 응답 헤더에 쿠키를 설정하는.. 2017. 6. 18.
[node.js] AJAX API 서버 만들기 [먼저 읽어봐야할 게시글]- API 서버, JSON에 대한 개념 필요1) [자바스크립트] JSON 객체 : http://jinbroing.tistory.com/1562) [node.js] express로 REST API 서버 개발 : http://jinbroing.tistory.com/1453) [자바스크립트] Ajax 통신: http://jinbroing.tistory.com/99 [AJAX란]- 자바스크립트 XMLHttpRequest 객체를 사용해서 서버와 비동기적으로 통신하는 것을 말함- 비동기 통신의 결과로 XML을 받았으나 데이터가 많아지면 그만큼 태그가 많아져 용량이 무거워져 경량 데이터 포멧 JSON을 사용함 [XMLHttpRequest 객체]- 자바스크립트 코드에서 HTTP 통신을 쉽게하고.. 2017. 6. 17.
[node.js] 유저 목록 조회, 유저 조회, 삭제 테스트 + API 서버 구현 [API 만들고 테스트하자]- 그 전에 꼭 알아야할 것1) 테스트 수트(describe) : 큰 카테고리 경우를 정의할 때 사용2) 테스트 케이스(it) : 카테고리 내에서 테스트할 거리를 테스트할 때 사용 - 유저목록조회 API 테스트 코드(1) 테스트 조건 - 유저목록조회 성공했을 때 유저객체를 담은 배열로 응답, 최대 limit 갯수 만큼 응답한다- 유저목록조회 실패했을 때 limit(쿼리스트링)의 값이 숫자가 아니라면 400 코드를 응답한다 (2) 테스트 수트와 케이스로 나누기 : 테스트 바탕 조건과 테스트 해보아야 할 것을 구분- 수트 : 전체 테스트, 성공, 실패- 케이스 : 성공 - 유저객체를 담은 배열로 응답 - 최대 limit 갯수만큼 응답, 실패 - 400 코드 응답 (3) 케이스 만들.. 2017. 6. 16.
[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.