본문 바로가기

Nodejs29

[node.js] 프로젝트를 마무리하면서 - 정리, 그리고 해커톤 [서비스 URL]- http://www.politics-watch.com/ [기술 스택]1) 웹 서비스 : Express(nodejs), firebase(auth) - AWS EC2 2) 크롤링 : request, cheerio, mecab-ya(nodejs) / crond - AWS EC2 3) DB: mysql server(AWS RDS) [프로젝트 관련 지식](1) 목표, 컨셉, 디자인, 기능, 사용자 기능 사용 단계, 개발 순서 등 모든 계획을 짜놓은 뒤(초기 계획) 개발(2) 버젼 계획이 있어야함 : 초기 버젼 계획을 세우고 추후 생각나거나 기획된 기능은 다음 버젼, 개발 단계에 돌입했다면 최대한 수정없이(3) 무작정 개발보다는 프로젝트 단계를 지켜나갈 것 : 필요한 정보 설계(DB) -> 기능.. 2017. 8. 20.
[node.js] 프로젝트 - 로그인 구현 : 파이어베이스 [시작하기]1) 파이어베이스 프로젝트 생성 -> 콘솔 -> Authentication -> 페이스북 활성화 -> 인증 토큰 리디렉션 URL 복사 2) 페북 개발자 페이지 -> 프로젝트 생성 -> 콘솔 -> 제품 추가 - 로그인 -> 로그인 메뉴 - 설정탭 - 인증 토큰 리디렉션 URL 붙여넣기 - 저장 => 정해진 URL로만 인증토큰이 전송됨 : 파이어베이스 API 키가 노출되더라도 큰 피해가 없지만… 3) 페이스북 프로젝트 대시보드 -> 앱 ID / 시크릿 코드 복사 -> 파이어베이스 Auth 페이스북 대시보드에 붙여넣기 4) 프로젝트에서 파이어베이스 API키로 파이어베이스를 이용하려면 Authentication 대시보드 > 승인된 도메인에 프로젝트 도메인을 추가해야함 => https://support.. 2017. 8. 5.
[node.js] 프로젝트 - pm2 : 노드 어플리케이션 프로세스 유지 [정치 핫키워드 어플리케이션 프로세스 매니저 - pm2] [pm2]- 노드 어플리케이션 프로세스 매니져 모듈 - 서버(express) 온을 일일이 시키지않더라도 계속해서 돌아가도록 설정할 수 있음 - express 코드를 수정할 경우 서버를 껐다켜지않더라도 리로드할 수 있음 : 업데이트 사항 반영 - npm 으로 설치 [pm2 사용하기](0) 도움말 : $pm2 -h (1) 시작 : $pm2 start ./bin/www (2) 리스트 조회 : $pm2 list => 자세히보기 : 리스트 조회 후 id나 App name 기록 > $pm2 show [id | name] => pm2 monit : 앱의 cpu, 메모리 점유율 보여줌 => 모니터 관련 어플리케이션 : $pm2 register (http://do.. 2017. 8. 1.
[node.js] 프로젝트 - 고정 IP, 네임서버 변경, 도메인 연결, 프록시 서버 [어플리케이션 고정 IP 발급, 네임서버 도메인 매칭]1) instance management page > Elastic IPs 발급 2) 발급받은 고정 IP 선택 > Actions > Associate address > 인스턴스와 연결 3) 네임서버 설정 : 구매한 도메인이 고정 IP(어플리케이션 컴퓨터, 서비스)를 가리키게 만들기 => AWS Route53 : AWS DNS 서비스 - https://console.aws.amazon.com/route53/home?region=us-east-1#DomainListing: => AWS에서 도메인을 구매해서 바로 Route53 사용해도되고, 외부 업체에서 도메인 구매하고 외부 업체 네임서버를 사용하면됨 => 닷홈에서 도메인을 사고, 도메인 네임 서버를 AW.. 2017. 8. 1.
[node.js] 프로젝트에서 실제 동작할 때 쓰일 크롤러 [사용하는 모듈 및 문법](1) require : 필요한 데이터가 있는 문서를 서버에 요청하고 응답받는 모듈(스크래핑 작업) (2) cheerio : 응답받은 문서에서 필요한 데이터를 쉽게 가져오기위한 모듈(파싱 작업) (3) mecab-ya : 파싱한 문장 안에서 진짜 필요한 명사만을 긁어내기위해 사용하는 모듈(+ mecab 프로그램 설치해야함) (4) Promise : 여러번 처리하는 require(비동기) 요청-응답 완료 후 mecab을 실행시키기위해 사용하는 ES6 문법 [실행코드]"use strict"; const request = require('request'); const cheerio = require('cheerio'); const mecab = require('mecab-ya'); f.. 2017. 7. 19.
[node.js] 프로젝트 개발 - 크롤링, 형태소 분석, mysql서버 insert [계획과 실행 혹은 테스트 코드]- 첫번째 모듈 : 크롤링, 코드는 아래에 있음 (1) request 헤더, 메세지 설정한 후 요청 날림 : request module (2) request에 대한 response가 날아오면 두번째 파라미터 콜백함수가 실행됨 : cheerio 파싱 => 1, 2번은 Promise를 리턴하는 함수로 만들기, 모듈화해서 두번째 모듈에서 함수 호출, then에서 형태소 분석 기능 호출 => 크롤링이 완료되면 크롤링 결과에 따라 형태소 분석 함수가 호출되거나, 에러 메세지를 띄울 수 있도록 하기위해 => 콜백 지옥을 벗어나는 길, 콜백함수에 대한 순서를 보장하기위한 방법 : 상태를 가짐 => crawl 함수는 Promise 인스턴스를 리턴 : 파라미터로 성공했을 때, 실패했을 때.. 2017. 7. 11.
[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.