엘리스 AI트랙 4기 44

KakaoMap API로 "현위치 주변" 장소 검색 목록 보여주기_1탄

01. KakaoMap API 사용 배경 포스팅 순서가 좀 바꼈지만 2차 프로젝트에 이용한 마지막 외부 API인 카카오맵 적용 과정을 기록하려 한다. 프로젝트를 진행하며 마이 페이지에 내 위치 주변 PC방 목록을 보여주고 싶었다. 따라서 "PC방"라는 키워드로 검색한 장소 목록을 출력하려고 하는데, 우리나라 지도가 필요하기 때문에 정확도를 위해 네이버 맵과 카카오 맵 중 API 설명이 보기 편한 카카오 맵 API를 선택했다. 결론적으로 말하면 원하던 기능 구현에는 성공했지만, 생각보다 시간이 오래걸렸고(중간에 다른거 하며 이틀동안 시도) 시행착오를 많이 겪었다. 그리고 결정적으로 배포 이후에는 제대로 동작하지 않았다. 이유는 보안 환경이 아니었기 때문인데 뒤에서 자세히 설명하겠다. 02. KakaoMap..

AWS EC2에 프로젝트 배포하기_2탄

1탄에서 이어지는 내용입니다. (4) pm2 설정하기 pm2는 Node.js 프로세스 관리자이다. BackEnd 서버를 무중단 배포하기 위해 이 pm2 모듈을 사용할 것이다. 먼저 pm2를 Global로 설치한다. pm2를 사용하기 전에 npm start 를 통해 문제없이 서버가 시작되는지 확인한다. 나는 또 여기서 자꾸 아래와 같은 오류가 떴는데 nodejs의 버전 문제였다. (참고) 그래서 다음과 같이 버전을 업그레이드 해줬다. nodejs -v / node -v - 현재 버전 확인 sudo npm cache clean --force sudo npm install -g n sudo n stable - n 플러그인을 이용해 버전 업그레이드 nodejs -v / node -v - 업그레이드 된 버전 확인..

AWS EC2에 프로젝트 배포하기_1탄

[01 AWS EC2란? ] EC2는 간단하게 AWS에서 제공하는 클라우드 컴퓨팅 서비스다. 쉽게 말해, 아마존으로 부터 한 대의 컴퓨터를 임대하는 것이다. 프로젝트가 끝나고 나서는 엘리스가 제공하는 VM을 더이상 사용하지 못하기 때문에 배포 서버를 옮겨야 하는데, AWS와 Heroku를 고민했었다. 구글링으로 서치해 비교해본 결과 Heroku는 배포가 쉬운 대신 느리고, AWS에 비해 인스턴스 제어(로드 밸런싱, 방화벽 설정 등)가 제한적인 것 같았다. 그리고 어쨌든 AWS를 훨씬 더 많이 쓰니까, 이번 기회에 공부해서 배포해 보기로 했다. 결론적으로는 6시간만에 배포에 성공했고, 나중에 다른 프로젝트를 배포하게 될 때를 대비해서 시행착오를 겪은 과정과 해결 과정을 남기려고 한다. [02 EC2 사용 ..

Youtube search API 사용해서 검색 목록 이용하기

[01 Youtube API ] (1) 사용하게 된 배경 프로젝트를 진행하며 메인 페이지에 게임 관련 유튜브 동영상을 보여주고 싶었다. 따라서 "게임 리뷰"라는 키워드로 검색한 동영상 목록을 출력하려고 하는데, 당연히 블로그 검색부터 했다. 대부분의 블로그는 Channels, Playlists, Videos 메소드를 사용했는데 나는 검색 기능만 필요하기 때문에 Search 메소드를 사용할 것이다. 그런데 Search 메소드 사용한 블로그대로 다 해봤는데도 안돼고 감이 안잡혀서... 공식 문서를 확인했다. 사실 그래도 모르겠어서 보류하고 뉴스 크롤링 기능부터 구현했는데 여기서 request 라이브러리를 사용한 걸로 감이 와서 해결할 수 있었다! (2) Youtube API 요청시 주의할 점 Youtube ..

express 웹서비스 프로젝트에 뉴스 크롤링 추가하기_2탄

1탄에서 이어지는 내용입니다. (2) 개발자도구에서 추출할 elements 확인하기 크롬(이나 혹은 다른 브라우저 대부분)에서 F12를 누르면 개발자모드가 활성화되고 그 중 Elements 탭에서 페이지를 구성하는 요소들을 확인할 수 있다는 사실은 이 글을 보고 있는 대부분이 알 것이다. 많은 요소들 중 필요한 데이터만을 추출하기 위해 Elements 탭 왼쪽의 선택 도구를 클릭하고 원하는 영역을 확인한다. 나는 각 뉴스(사진에서 li 태그)들의 기사 제목, 썸네일, 링크가 필요했다. 영역을 확인했으면 구분 가능한 id에서부터 시작해서 내가 필요한 태그까지 안쪽으로 타고타고 들어간다. 무슨 말이냐면 사진의 저 영역은 content라는 id 아래의 news-list라는 div 아래의 div 태그 아래의 u..

express 웹서비스 프로젝트에 뉴스 크롤링 추가하기_1탄

[01 크롤링이란? ] 크롤링(crawling) 혹은 스크레이핑(scraping)은 웹 페이지를 그대로 가져와서 거기서 데이터를 추출해 내는 행위이다. 크롤링하는 소프트웨어는 크롤러(crawler)라고 부른다. 검색 엔진에서도 유사한 것을 필수적으로 사용하는데, 웹 상의 다양한 정보를 자동으로 검색하고 색인하기 위해 사용한다. 네이버, 구글 등도 이런 봇을 이용해 운영된다. Python이 이 분야의 선두주자로서, 대표적인 파이썬 라이브러리의 예로 beautifulsoup가 있고 그 외에도 selenium이라는 라이브러리가 인기를 끌고있다. 하지만 나는 nodejs를 사용한 프로젝트를 진행중이기 때문에 Javascript의 라이브러리를 이용해서 기능을 구현했다. 출처: https://namu.wiki/w/..

Redis 윈도우 설치 / nodejs 코드에 적용하는 법 / redis-cli 명령어 / 캐시 서버 사용전후 응답속도 차이

[01 Redis란? ] NoSQL의 종류 중 하나로 메모리 기반 Key-Value Storage 형 구조의 데이터 관리 시스템이다. 시스템 메모리를 사용하는 특징이 있으며, 문서형 NoSQL인 MongoDB 보다 빠르고 가볍게 동작하며 I/O가 수시로 발생하는 (캐시, 인증 토큰, 세션 관리 등등) 데이터 구조에서 주로 사용한다. 싱글 스레드 기반이므로 하나의 명령이 오래 걸린다면 이는 적합하지 않다. [02 Redis 설치 ] Redis는 윈도우 설치를 공식적으로 지원하지 않으므로 대신 윈도우에서 설치할 수 있도록 release 해주는 팀이 있다. 해당페이지에 가서 다운로드를 받고 설치하면 된다. 설치 옵션은 나의 경우 중간에 환경 변수 설정에만 체크해주었다. 설치가 잘 되었는지 확인하는 법은 cmd..

Mongo DB 기초

[insert, insertOne, insertMany] insert(삽입) insertMany는 배열 형태로 다수의 데이터를 삽입한다. 몽고3.2버전 이후에는 insertOne(), insertMany() 명령을 사용을 권장하므로, insert() 명령 사용은 자제하는 것이 좋다. [update, updateOne, updateMany] update(수정) MongoDB에서 update명령을 사용하여 특정 필드의 값을 변경할 때는 $set 연산자를 사용하여야 한다. 만약 사용하지 않는다면 입력한 데이터 자체를 통째로 덮어버리게 되기 때문에 주의해야 한다. update 명령은 단일 도큐먼트도 수정 가능하지만 다수의 도큐먼트도 수정 가능하다. 다수의 도큐먼트 수정시에는 multi 옵션을 사용하여 수정할 수..

SQL로 데이터 다루기 I

01 SQL 시작하기 데이터베이스 데이터베이스는 다양한 종류가 있지만 가장 많이 사용되는 종류는 관계형 데이터베이스와 비관계형 데이터베이스 그중에서도 SQL은 관계형 데이터베이스에 사용(SQL을 통해 제어 가능) 관계형 데이터베이스란 하나 이상의 테이블로 이루어지며 서로 연결된 데이터를 가지고 있음 비관계형 데이터베이스는 데이터들이 연결되지 않음 데이터베이스란 테이블들이 모여있는 집합 테이블의 전체 구조를 확인하려면 DESC 명령어 사용 대개 컬럼은 주제, 제목을 의미하고 레코드는 내용과 값을 포함함 뒤에 나오는 컬럼의 중복을 제거하기 위해 DISTINCT 명령어 사용 distinct 뒤에 2개 이상의 컬럼을 적을 때 한 쪽 컬럼에 중복이 있어도 다른 쪽 컬럼의 값이 다르면 다르게 취급하여 출력함 데이터..

엘리스 플랫폼 단축키 정리

엘리스 플랫폼 환경의 에디터 단축키가 sublime으로 되어 있는 것을 확인하고 Sublime Text의 단축키를 찾아보았다.(원한다면 emacs나 vim 등으로 변경 가능하기도 했다) 모든 단축키가 그대로 적용되진 않아서 엘리스 플랫폼에 맞게 수정하고 자주 쓸 것들만 추려보았다. 단축키를 숙지하여 마우스 사용을 줄여보자! 한 단어 선택 : Ctrl + D 한 줄 복사 : Ctrl + Shift + D 한 줄 삭제 : Shift + Delete 마우스 다중 선택 : Ctrl + 마우스선택 단어 단위 이동 : Ctrl + left / right 단어 단위 드래그 : Ctrl + Shift + left / right 줄 단위 이동 : Ctrl + Shift + Up / Down 검색(search) : Ctr..