Yangeok
Development Blog
-
Puppeteer로 크롤러 만들기 - 페이지네이션
작업환경 puppeteer v1.19.0 moment v2.24.0 시리즈 Puppeteer로 크롤러 만들기 - 준비 Puppeteer로 크롤러 만들기 - 페이지네이션 Puppeteer로 크롤러 만들기 - 무한스크롤 모듈 불러오기 및 글로벌 스코프 선언하기 함수분리 없이 한 파일에서 모든 코드를 작성하도록 하겠습니다. // ppomppu.js const fs = require('fs'); const path = require('path'); const moment = require('moment'); const... -
Puppeteer로 크롤러 만들기 - 준비
시리즈 Puppeteer로 크롤러 만들기 - 준비 Puppeteer로 크롤러 만들기 - 페이지네이션 Puppeteer로 크롤러 만들기 - 무한스크롤 체크리스트 커뮤니티, 포털, SNS는 게시판의 형태가 상이하기때문에 어떤 식으로 크롤할지 전략을 수립하는게 크롤러개발 시간을 단축하는데 큰 도움을 준다고 봅니다. 그래서 아래와 같이 체크리스트를 작성해봤습니다. 출처: 나의 자존감 체크리스트 통합검색이 구글검색인지 아닌지 확인한다 해당 게시판이... -
Selenium, Puppeteer 비교하기
서두 nodejs의 cheerio, python의 beautiful soup은 둘 다 스스로 웹사이트를 크롤링 할 수 없습니다. request 라이브러리를 사용해서 html 소스를 가져온 다음에야 크롤이 가능합니다. 또한 웹사이트에서 javascript가 사용된 부분에는 접근하는데 한계가 있습니다. 그래서 이벤트가 일어나야 html이 렌더되는 부분의 데이터를 얻기 위해서는 puppeteer나 selenium같은 라이브러리가 필요합니다. 브라우저를 조작할 수 있는 기능들이 있기때문에... -
Sequelize 다대다 관계 사용하기
작업환경 mysql2: 1.6.5 sequelize: 5.8.8 sequelize-cli: 5.4.0 작업순서 여기서 사용하는 용어인 모델은 테이블과 같은 의미로 사용하고 있음을 미리 알려드립니다. sql에서는 다대다 관계가 유효하지 않습니다. 그래서 다리 역할을 하는 테이블을 따로 만들어 인덱스를 주어야합니다. 따라서 쿼리는 테이블 3개로 작동하며, 연결 테이블은 쿼리에 적지 않습니다. 우선 다대다를 구현하기 위해 product, category, product_category... -
Sequelize 쿼리 미세먼지 꿀팁
콘솔에 뜨는 쿼리 로그가 보기 싫을 때 SELECT `attribute_id`, `name`, `createdAt`, `updatedAt` FROM `attributes` AS `attribute` WHERE `attribute`.`attribute_id` = '1'; 데이터 탈취나 리소스 절약을 위해서 위같은 쿼리는 개발모드일 때에만 콘솔에 찍히는게 좋을겁니다. config 파일에 logging 옵션을 작성합니다. "development": { "database": "database", "username": "root", "password": "root", "host": "127.0.0.1", "dialect": "mysql", "logging":... -
Sequelize 환경변수 관리 및 CLI명령어 관리하기
서론 sequelize-cli를 사용할 때에도 .env로 환경변수를 관리할 수 있게 하는 방법과 src/db디렉토리까지 올라가서 sequelize명령어를 입력하지 않고 루트에서 바로 명령을 실행할 수 있게 하는 방법을 설명하려고 합니다. 우선 ORM을 통해 개발하는건 SQL별로 쿼리가 약간씩 다른 부분을 해결해 주는데 큰 도움이 되었습니다. 이 ORM을 더 편하게 CLI환경에서 사용할 수 있게 해주는 sequelize-cli는... -
Jekyll 블로그 빌드속도 개선하기
마크다운으로 글을 작성하면서 VSC플러그인으로 미리보기를 할 수도 있지만 Jekyll서버를 켜놓고 브라우저에서 글을 미리보기하는게 훨씬 편하더라구요. live-reload까지 바라지도 않지만 html파일 빌드가 조금 빨라졌으면 하는 마음에 몇가지를 알아냈습니다. 효과가 적은 것부터 큰 순서로 작성했으니 참고해주세요. 작업순서 liquid-c jekyll-include-cache google analytics 파일로 분리하기 liquid 조건, 반복문 사용 줄이기 실행시 --incremental 플래그 붙이기 실행시... -
Netlify에서 api서버 정보 읽어오기
netlify는 정적페이지를 정말 편하게 배포해주는 서비스입니다. 대신에 프론트와 백에서 설정을 하나씩 해줘야 합니다. 그렇지 않으면 오류가 날거에요. 작업환경 netlify node.js 작업순서 프론트엔드 그냥 create-react-app에서는 그저 package.json에서 proxy설정만 해주면 알아서 api서버에 요청을 보낼때 설정값이 바인딩됩니다. 하지만 netlify에 배포된 환경에서는 그것만으로는 부족합니다. _redirects과 _headers이 있습니다. _redirects를 먼저 살펴보겠습니다. 아래와 같은 예제가 있습니다.... -
React에서 HashRouter를 사용해 redirection 막기
영문이 많이 들어가니 제목이 보그체같군요. 작업환경 create-react-app react react-router v4 netlify 작업순서 SPA인 리액트는 라우터에 상관없이 항상 같은 index.html만 보여줍니다. 그래서 새로고침을 하면 404 Not Found 오류가 납니다. netlify 위에서 돌아가는 페이지의 경우 코드 내부에서 proxy설정을 해놓았더라도 아래 _redirects파일을 build파일에 포함시켜주지 않으면 api서버에서 데이터를 가져오지 못합니다. _redirects에 관한 문서를 확인하시려면... -
Nginx로 프록시와 로드밸런싱 사용하기
node.js 웹서버 포트를 숨기기 위해 프록시 서버를 사용하고 프록시를 이용해 다른 인스턴스에서 작동하는 각각의 서버를 사용해 서버에 가해지는 부하를 줄이는데 로드밸런싱을 사용합니다. nginx로 로드밸런서를 설정하는 방법을 정리해보고자 합니다. 작업환경 aws lightsail linux ubuntu 16.04 nginx 1.10.3 nodejs 8.11.3 작업순서 우분투 인스턴스를 발급받아서 쉘을 실행하고 아래와 같이 패키지 설치를 합니다. #...