목록node.js (12)
개발일기장
Promise.all ~~~) 이렇게 해서 exception handling해도 되는데 한번에 값을 다 받와서 사용하려고 await 붙이면 그렇게 할 수도 없고 try - catch로 해도 소용이 없음 input * 400ms만큼 쉬었다가 홀수면 resolve, 짝수면 reject나게 만든 Promise들에 대해서 실행을 시킴 function promise(value) { return new Promise((resolve, reject) => { setTimeout(() => { if (value % 2 === 1) { resolve(`${value} -> PASS`); } else { reject(`${value} -> FAIL`); } }, value * 400); }) } async function..
영화 상영 시간표 사용해서 뭔가 만들어보고 싶은게 생겼었음 영화 정보라 던가 meta정보는 open api가 있는데 상영 스케쥴에 관한거는 내가 못 찾은건지 없었던거같음 그래서 다른사람들 정보를 찾아보니깐 다들 그냥 상영관(시지븨, 메박, 롯머)에서 크롤링 하더라거 https://kobis.or.kr/kobis/business/mast/thea/findTheaterSchedule.do KOFIC 영화관 입장권 통합전산망 :: 상영스케줄 kobis.or.kr 이렇게 이쁘게 나와있는게 있었음.. 문제는 API로 안해주고 크롤링을 해야한다는 점임 그리고 url 쿼리로 값을 뽑을 수 없고 동적으로 클릭 하나씩 해야한다는점 여기서 광역 선택 기초 선택 상영관 선택 이렇게 3번 눌러야 동작을 함 클릭 하고 바로 나..
https://tlqckd0.tistory.com/49 Node.JS 웹 크롤링으로 Promise.all 성능 비교 (수정: 이거 다 틀렸음) ※ 위에내용 다 틀렸고 밑에 고친거 있음. 쭉 내리면 됨 https://tlqckd0.tistory.com/48 NodeJS로 웹 크롤링 하기. puppeteer, cheerio, 동적 크롤링 1. 왜 puppeteer를 사용하는지 https://www.npmjs.com/package/puppeteer puppet tlqckd0.tistory.com 여기서는 병렬 작업이 안되는 것으로 알았는데 https://stackoverflow.com/questions/60748768/puppeteer-parallel-scraping-via-multiple-pages Pupp..
https://tlqckd0.tistory.com/56 express.js 를 class형식으로 실행 Spring boot같은 프레임워크로 웹서버를 만드는 경우에는 이미 틀은 다 만들어져 있어서 기능을 집어넣는다? 라는 표현을 쓰는게 맞는것 같음. Node.js에서는 웹서버 개발을 위한 프레임워크가 많은 tlqckd0.tistory.com 여기 마지막 부분인 아래 코드 부분을 해결하기 위해서 inversify를 사용해봤음. routerList.push(new HelloController(new HelloService(new HelloRepository(new Map)), "/user")); https://inversify.io/ InversifyJS InversifyJS is a lightweight i..
Spring boot같은 프레임워크로 웹서버를 만드는 경우에는 이미 틀은 다 만들어져 있어서 기능을 집어넣는다? 라는 표현을 쓰는게 맞는것 같음. Node.js에서는 웹서버 개발을 위한 프레임워크가 많은데 기본적으로 다들 express.js로 시작하는것 같다. Spring boot와는 다르게 express를 사용하면 레고를 하나씩 쌓고 이어붙이는것 처럼 원하는 기능을 하나씩 더하고, 미들웨어를 추가하는 방식으로 개발을 했던것 같다. 그런데 이거는 어디를 돌아다녀봐도 정해진 틀이 없고 개개인의 스타일이 다 달라서 좀 답답했음. 물론 NestJS같은 프레임워크가 Spring boot처럼 깔끔하고 규격이 있다고 느낄수 있었고, 이거 사용하는 회사들도 점점 늘어나는것 같은 느낌?? (사실은 잘 모름, 뭔가 후원..
일반적으로 jdbc를 사용하여 트랜잭션을 구현하는 방법을 nodejs mysql2를 사용해서 구현하기. mysql2를 사용 함미다. npm i mysql2 0. 일반적으로 transaction를 처리하려면 0) 하나의 connection을 유지한 상태로 1) transaction시작을 명시 2) 비즈니스 로직 처리 3-1)성공시 commit 3-2)실패시 rollback 4) connection 종료 순서를 유지해야함. 1. 상황 회원의 닉네임에 맞는 pk값이 필요할때 1) 이미 닉네임이 저장되어 있는 경우 -> 바로 찾아오기. 2) 닉네임이 저장되어 있지 않은 경우 -> 저장하고 pk값 받아오기 ※ 2의 경우 저장한 result에서 insertID의 값이 반환되는 기능이 이미 있음. 2. 구현 회원테이..
※ 위에내용 다 틀렸고 밑에 고친거 있음. 쭉 내리면 됨 https://tlqckd0.tistory.com/48 NodeJS로 웹 크롤링 하기. puppeteer, cheerio, 동적 크롤링 1. 왜 puppeteer를 사용하는지 https://www.npmjs.com/package/puppeteer puppeteer A high-level API to control headless Chrome over the DevTools Protocol. Latest version: 14.1.0, last published: 5 days.. tlqckd0.tistory.com 이거랑 이어지는 거임. 일단 내가 원하는 것은 아래 사진과 같은 방식인데 일단 게시판 페이지를 크롤링 한 다음에 각각의 게시글마다 들어가서..
1. 왜 puppeteer를 사용하는지 https://www.npmjs.com/package/puppeteer puppeteer A high-level API to control headless Chrome over the DevTools Protocol. Latest version: 14.1.0, last published: 5 days ago. Start using puppeteer in your project by running `npm i puppeteer`. There are 4976 other projects in the npm registry using puppetee www.npmjs.com 일반적으로 axios나 fetch같은 단순히 HTTP GET method를 이용해서 해당 페이지를 ..